]> git.xonotic.org Git - xonotic/xonotic.git/commitdiff
Fix macOS SDL2 framework permissions master
authorbones_was_here <bones_was_here@xonotic.au>
Fri, 22 Mar 2024 03:26:31 +0000 (13:26 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Fri, 22 Mar 2024 03:26:31 +0000 (13:26 +1000)
550 files changed:
CONTRIBUTING.md [new file with mode: 0644]
Docs/faq.md
Makefile
README.md
data/font-xolonium.pk3dir/fonts/README [deleted file]
data/font-xolonium.pk3dir/fonts/README.txt [new file with mode: 0755]
data/font-xolonium.pk3dir/fonts/xolonium-bold.otf
data/font-xolonium.pk3dir/fonts/xolonium-regular.otf
misc/builddeps/linux32/d0_blind_id/bin/blind_id [deleted file]
misc/builddeps/linux32/d0_blind_id/include/d0_blind_id/d0.h [deleted file]
misc/builddeps/linux32/d0_blind_id/include/d0_blind_id/d0_blind_id.h [deleted file]
misc/builddeps/linux32/d0_blind_id/include/d0_blind_id/d0_rijndael.h [deleted file]
misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.a [deleted file]
misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.la [deleted file]
misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so [deleted symlink]
misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so.0 [deleted symlink]
misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so.0.0.0 [deleted file]
misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.a [deleted file]
misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.la [deleted file]
misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so [deleted symlink]
misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so.0 [deleted symlink]
misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so.0.0.0 [deleted file]
misc/builddeps/linux32/d0_blind_id/lib/pkgconfig/d0_blind_id.pc [deleted file]
misc/builddeps/linux32/d0_blind_id/lib/pkgconfig/d0_rijndael.pc [deleted file]
misc/builddeps/linux32/gmp/include/gmp.h [deleted file]
misc/builddeps/linux32/gmp/lib/libgmp.a [deleted file]
misc/builddeps/linux32/gmp/lib/libgmp.la [deleted file]
misc/builddeps/linux32/gmp/share/info/gmp.info [deleted file]
misc/builddeps/linux32/gmp/share/info/gmp.info-1 [deleted file]
misc/builddeps/linux32/gmp/share/info/gmp.info-2 [deleted file]
misc/builddeps/linux32/jpeg/bin/cjpeg [deleted file]
misc/builddeps/linux32/jpeg/bin/djpeg [deleted file]
misc/builddeps/linux32/jpeg/bin/jpegtran [deleted file]
misc/builddeps/linux32/jpeg/bin/rdjpgcom [deleted file]
misc/builddeps/linux32/jpeg/bin/wrjpgcom [deleted file]
misc/builddeps/linux32/jpeg/include/jconfig.h [deleted file]
misc/builddeps/linux32/jpeg/include/jerror.h [deleted file]
misc/builddeps/linux32/jpeg/include/jmorecfg.h [deleted file]
misc/builddeps/linux32/jpeg/include/jpeglib.h [deleted file]
misc/builddeps/linux32/jpeg/lib/libjpeg.a [deleted file]
misc/builddeps/linux32/jpeg/lib/libjpeg.la [deleted file]
misc/builddeps/linux32/jpeg/share/man/man1/cjpeg.1 [deleted file]
misc/builddeps/linux32/jpeg/share/man/man1/djpeg.1 [deleted file]
misc/builddeps/linux32/jpeg/share/man/man1/jpegtran.1 [deleted file]
misc/builddeps/linux32/jpeg/share/man/man1/rdjpgcom.1 [deleted file]
misc/builddeps/linux32/jpeg/share/man/man1/wrjpgcom.1 [deleted file]
misc/builddeps/linux32/ode/bin/ode-config [deleted file]
misc/builddeps/linux32/ode/include/ode/collision.h [deleted file]
misc/builddeps/linux32/ode/include/ode/collision_space.h [deleted file]
misc/builddeps/linux32/ode/include/ode/collision_trimesh.h [deleted file]
misc/builddeps/linux32/ode/include/ode/common.h [deleted file]
misc/builddeps/linux32/ode/include/ode/compatibility.h [deleted file]
misc/builddeps/linux32/ode/include/ode/contact.h [deleted file]
misc/builddeps/linux32/ode/include/ode/error.h [deleted file]
misc/builddeps/linux32/ode/include/ode/export-dif.h [deleted file]
misc/builddeps/linux32/ode/include/ode/mass.h [deleted file]
misc/builddeps/linux32/ode/include/ode/matrix.h [deleted file]
misc/builddeps/linux32/ode/include/ode/memory.h [deleted file]
misc/builddeps/linux32/ode/include/ode/misc.h [deleted file]
misc/builddeps/linux32/ode/include/ode/objects.h [deleted file]
misc/builddeps/linux32/ode/include/ode/ode.h [deleted file]
misc/builddeps/linux32/ode/include/ode/odeconfig.h [deleted file]
misc/builddeps/linux32/ode/include/ode/odecpp.h [deleted file]
misc/builddeps/linux32/ode/include/ode/odecpp_collision.h [deleted file]
misc/builddeps/linux32/ode/include/ode/odeinit.h [deleted file]
misc/builddeps/linux32/ode/include/ode/odemath.h [deleted file]
misc/builddeps/linux32/ode/include/ode/odemath_legacy.h [deleted file]
misc/builddeps/linux32/ode/include/ode/rotation.h [deleted file]
misc/builddeps/linux32/ode/include/ode/timer.h [deleted file]
misc/builddeps/linux32/ode/lib/libode.a [deleted file]
misc/builddeps/linux32/ode/lib/libode.la [deleted file]
misc/builddeps/linux32/ode/lib/pkgconfig/ode.pc [deleted file]
misc/builddeps/linux64/d0_blind_id/bin/blind_id [deleted file]
misc/builddeps/linux64/d0_blind_id/include/d0_blind_id/d0.h [deleted file]
misc/builddeps/linux64/d0_blind_id/include/d0_blind_id/d0_blind_id.h [deleted file]
misc/builddeps/linux64/d0_blind_id/include/d0_blind_id/d0_rijndael.h [deleted file]
misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.a [deleted file]
misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.la [deleted file]
misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so [deleted symlink]
misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so.0 [deleted symlink]
misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so.0.0.0 [deleted file]
misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.a [deleted file]
misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.la [deleted file]
misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so [deleted symlink]
misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so.0 [deleted symlink]
misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so.0.0.0 [deleted file]
misc/builddeps/linux64/d0_blind_id/lib/pkgconfig/d0_blind_id.pc [deleted file]
misc/builddeps/linux64/d0_blind_id/lib/pkgconfig/d0_rijndael.pc [deleted file]
misc/builddeps/linux64/gmp/include/gmp.h [deleted file]
misc/builddeps/linux64/gmp/lib/libgmp.a [deleted file]
misc/builddeps/linux64/gmp/lib/libgmp.la [deleted file]
misc/builddeps/linux64/gmp/share/info/gmp.info [deleted file]
misc/builddeps/linux64/gmp/share/info/gmp.info-1 [deleted file]
misc/builddeps/linux64/gmp/share/info/gmp.info-2 [deleted file]
misc/builddeps/linux64/jpeg/bin/cjpeg [deleted file]
misc/builddeps/linux64/jpeg/bin/djpeg [deleted file]
misc/builddeps/linux64/jpeg/bin/jpegtran [deleted file]
misc/builddeps/linux64/jpeg/bin/rdjpgcom [deleted file]
misc/builddeps/linux64/jpeg/bin/wrjpgcom [deleted file]
misc/builddeps/linux64/jpeg/include/jconfig.h [deleted file]
misc/builddeps/linux64/jpeg/include/jerror.h [deleted file]
misc/builddeps/linux64/jpeg/include/jmorecfg.h [deleted file]
misc/builddeps/linux64/jpeg/include/jpeglib.h [deleted file]
misc/builddeps/linux64/jpeg/lib/libjpeg.a [deleted file]
misc/builddeps/linux64/jpeg/lib/libjpeg.la [deleted file]
misc/builddeps/linux64/jpeg/share/man/man1/cjpeg.1 [deleted file]
misc/builddeps/linux64/jpeg/share/man/man1/djpeg.1 [deleted file]
misc/builddeps/linux64/jpeg/share/man/man1/jpegtran.1 [deleted file]
misc/builddeps/linux64/jpeg/share/man/man1/rdjpgcom.1 [deleted file]
misc/builddeps/linux64/jpeg/share/man/man1/wrjpgcom.1 [deleted file]
misc/builddeps/linux64/ode/bin/ode-config [deleted file]
misc/builddeps/linux64/ode/include/ode/collision.h [deleted file]
misc/builddeps/linux64/ode/include/ode/collision_space.h [deleted file]
misc/builddeps/linux64/ode/include/ode/collision_trimesh.h [deleted file]
misc/builddeps/linux64/ode/include/ode/common.h [deleted file]
misc/builddeps/linux64/ode/include/ode/compatibility.h [deleted file]
misc/builddeps/linux64/ode/include/ode/contact.h [deleted file]
misc/builddeps/linux64/ode/include/ode/error.h [deleted file]
misc/builddeps/linux64/ode/include/ode/export-dif.h [deleted file]
misc/builddeps/linux64/ode/include/ode/mass.h [deleted file]
misc/builddeps/linux64/ode/include/ode/matrix.h [deleted file]
misc/builddeps/linux64/ode/include/ode/memory.h [deleted file]
misc/builddeps/linux64/ode/include/ode/misc.h [deleted file]
misc/builddeps/linux64/ode/include/ode/objects.h [deleted file]
misc/builddeps/linux64/ode/include/ode/ode.h [deleted file]
misc/builddeps/linux64/ode/include/ode/odeconfig.h [deleted file]
misc/builddeps/linux64/ode/include/ode/odecpp.h [deleted file]
misc/builddeps/linux64/ode/include/ode/odecpp_collision.h [deleted file]
misc/builddeps/linux64/ode/include/ode/odeinit.h [deleted file]
misc/builddeps/linux64/ode/include/ode/odemath.h [deleted file]
misc/builddeps/linux64/ode/include/ode/odemath_legacy.h [deleted file]
misc/builddeps/linux64/ode/include/ode/rotation.h [deleted file]
misc/builddeps/linux64/ode/include/ode/timer.h [deleted file]
misc/builddeps/linux64/ode/lib/libode.a [deleted file]
misc/builddeps/linux64/ode/lib/libode.la [deleted file]
misc/builddeps/linux64/ode/lib/pkgconfig/ode.pc [deleted file]
misc/builddeps/osx/empty [deleted file]
misc/builddeps/win32/dx/include/_mingw_dxhelper.h [deleted file]
misc/builddeps/win32/dx/include/d3d.h [deleted file]
misc/builddeps/win32/dx/include/d3d10.h [deleted file]
misc/builddeps/win32/dx/include/d3d10.idl [deleted file]
misc/builddeps/win32/dx/include/d3d10effect.h [deleted file]
misc/builddeps/win32/dx/include/d3d10misc.h [deleted file]
misc/builddeps/win32/dx/include/d3d10shader.h [deleted file]
misc/builddeps/win32/dx/include/d3d8.h [deleted file]
misc/builddeps/win32/dx/include/d3d8caps.h [deleted file]
misc/builddeps/win32/dx/include/d3d8types.h [deleted file]
misc/builddeps/win32/dx/include/d3d9.h [deleted file]
misc/builddeps/win32/dx/include/d3d9caps.h [deleted file]
misc/builddeps/win32/dx/include/d3d9types.h [deleted file]
misc/builddeps/win32/dx/include/d3dcaps.h [deleted file]
misc/builddeps/win32/dx/include/d3dhal.h [deleted file]
misc/builddeps/win32/dx/include/d3drm.h [deleted file]
misc/builddeps/win32/dx/include/d3drmdef.h [deleted file]
misc/builddeps/win32/dx/include/d3drmobj.h [deleted file]
misc/builddeps/win32/dx/include/d3dtypes.h [deleted file]
misc/builddeps/win32/dx/include/d3dvec.inl [deleted file]
misc/builddeps/win32/dx/include/d3dx9.h [deleted file]
misc/builddeps/win32/dx/include/d3dx9core.h [deleted file]
misc/builddeps/win32/dx/include/d3dx9effect.h [deleted file]
misc/builddeps/win32/dx/include/d3dx9math.h [deleted file]
misc/builddeps/win32/dx/include/d3dx9math.inl [deleted file]
misc/builddeps/win32/dx/include/d3dx9mesh.h [deleted file]
misc/builddeps/win32/dx/include/d3dx9shader.h [deleted file]
misc/builddeps/win32/dx/include/d3dx9shape.h [deleted file]
misc/builddeps/win32/dx/include/d3dx9tex.h [deleted file]
misc/builddeps/win32/dx/include/ddraw.h [deleted file]
misc/builddeps/win32/dx/include/dinput.h [deleted file]
misc/builddeps/win32/dx/include/dsound.h [deleted file]
misc/builddeps/win32/dx/include/wspiapi.h [deleted file]
misc/builddeps/win32/dx/include/zconf.h [deleted file]
misc/builddeps/win32/gmp/bin/libgmp-10.dll [deleted file]
misc/builddeps/win32/gmp/include/gmp.h [deleted file]
misc/builddeps/win32/gmp/lib/libgmp.a [deleted file]
misc/builddeps/win32/gmp/lib/libgmp.dll.a [deleted file]
misc/builddeps/win32/gmp/lib/libgmp.la [deleted file]
misc/builddeps/win32/gmp/share/info/gmp.info [deleted file]
misc/builddeps/win32/gmp/share/info/gmp.info-1 [deleted file]
misc/builddeps/win32/gmp/share/info/gmp.info-2 [deleted file]
misc/builddeps/win32/sdl/bin/sdl2-config [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_assert.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_atomic.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_audio.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_bits.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_blendmode.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_clipboard.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_config.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_cpuinfo.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_egl.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_endian.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_error.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_events.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_filesystem.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_gamecontroller.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_gesture.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_haptic.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_hints.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_joystick.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_keyboard.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_keycode.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_loadso.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_log.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_main.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_messagebox.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_mouse.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_mutex.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_name.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_opengl.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_opengl_glext.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_opengles.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_gl2.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_gl2ext.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_gl2platform.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_khrplatform.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_pixels.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_platform.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_power.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_quit.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_rect.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_render.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_revision.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_rwops.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_scancode.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_sensor.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_shape.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_stdinc.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_surface.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_system.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_syswm.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_assert.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_common.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_compare.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_crc32.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_font.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_fuzzer.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_harness.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_images.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_log.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_md5.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_memory.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_test_random.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_thread.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_timer.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_touch.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_types.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_version.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_video.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/SDL_vulkan.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/begin_code.h [deleted file]
misc/builddeps/win32/sdl/include/SDL2/close_code.h [deleted file]
misc/builddeps/win32/sdl/lib/cmake/SDL2/sdl2-config.cmake [deleted file]
misc/builddeps/win32/sdl/lib/libSDL2.a [deleted file]
misc/builddeps/win32/sdl/lib/libSDL2.la [deleted file]
misc/builddeps/win32/sdl/lib/libSDL2_test.a [deleted file]
misc/builddeps/win32/sdl/lib/libSDL2main.a [deleted file]
misc/builddeps/win32/sdl/lib/pkgconfig/sdl2.pc [deleted file]
misc/builddeps/win32/sdl/share/aclocal/sdl2.m4 [deleted file]
misc/builddeps/win32/zlib/bin/zlib1.dll [deleted file]
misc/builddeps/win32/zlib/include/zlib.h [deleted file]
misc/builddeps/win32/zlib/lib/libz.a [deleted file]
misc/builddeps/win32/zlib/lib/libz.dll.a [deleted symlink]
misc/builddeps/win32/zlib/lib/libzdll.a [deleted file]
misc/builddeps/win32/zlib/lib/pkgconfig/zlib.pc [deleted file]
misc/builddeps/win64/dx/include/_mingw_dxhelper.h [deleted file]
misc/builddeps/win64/dx/include/d3d.h [deleted file]
misc/builddeps/win64/dx/include/d3d10.h [deleted file]
misc/builddeps/win64/dx/include/d3d10.idl [deleted file]
misc/builddeps/win64/dx/include/d3d10effect.h [deleted file]
misc/builddeps/win64/dx/include/d3d10misc.h [deleted file]
misc/builddeps/win64/dx/include/d3d10shader.h [deleted file]
misc/builddeps/win64/dx/include/d3d8.h [deleted file]
misc/builddeps/win64/dx/include/d3d8caps.h [deleted file]
misc/builddeps/win64/dx/include/d3d8types.h [deleted file]
misc/builddeps/win64/dx/include/d3d9.h [deleted file]
misc/builddeps/win64/dx/include/d3d9caps.h [deleted file]
misc/builddeps/win64/dx/include/d3d9types.h [deleted file]
misc/builddeps/win64/dx/include/d3dcaps.h [deleted file]
misc/builddeps/win64/dx/include/d3dhal.h [deleted file]
misc/builddeps/win64/dx/include/d3drm.h [deleted file]
misc/builddeps/win64/dx/include/d3drmdef.h [deleted file]
misc/builddeps/win64/dx/include/d3drmobj.h [deleted file]
misc/builddeps/win64/dx/include/d3dtypes.h [deleted file]
misc/builddeps/win64/dx/include/d3dvec.inl [deleted file]
misc/builddeps/win64/dx/include/d3dx9.h [deleted file]
misc/builddeps/win64/dx/include/d3dx9core.h [deleted file]
misc/builddeps/win64/dx/include/d3dx9effect.h [deleted file]
misc/builddeps/win64/dx/include/d3dx9math.h [deleted file]
misc/builddeps/win64/dx/include/d3dx9math.inl [deleted file]
misc/builddeps/win64/dx/include/d3dx9mesh.h [deleted file]
misc/builddeps/win64/dx/include/d3dx9shader.h [deleted file]
misc/builddeps/win64/dx/include/d3dx9shape.h [deleted file]
misc/builddeps/win64/dx/include/d3dx9tex.h [deleted file]
misc/builddeps/win64/dx/include/ddraw.h [deleted file]
misc/builddeps/win64/dx/include/dinput.h [deleted file]
misc/builddeps/win64/dx/include/dsound.h [deleted file]
misc/builddeps/win64/dx/include/zconf.h [deleted file]
misc/builddeps/win64/gmp/bin/libgmp-10.dll [deleted file]
misc/builddeps/win64/gmp/include/gmp.h [deleted file]
misc/builddeps/win64/gmp/lib/libgmp.dll.a [deleted file]
misc/builddeps/win64/gmp/lib/libgmp.la [deleted file]
misc/builddeps/win64/gmp/share/info/gmp.info [deleted file]
misc/builddeps/win64/gmp/share/info/gmp.info-1 [deleted file]
misc/builddeps/win64/gmp/share/info/gmp.info-2 [deleted file]
misc/builddeps/win64/sdl/bin/sdl2-config [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_assert.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_atomic.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_audio.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_bits.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_blendmode.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_clipboard.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_config.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_cpuinfo.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_egl.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_endian.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_error.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_events.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_filesystem.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_gamecontroller.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_gesture.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_haptic.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_hints.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_joystick.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_keyboard.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_keycode.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_loadso.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_log.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_main.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_messagebox.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_mouse.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_mutex.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_name.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_opengl.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_opengl_glext.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_opengles.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_gl2.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_gl2ext.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_gl2platform.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_khrplatform.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_pixels.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_platform.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_power.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_quit.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_rect.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_render.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_revision.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_rwops.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_scancode.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_sensor.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_shape.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_stdinc.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_surface.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_system.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_syswm.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_assert.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_common.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_compare.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_crc32.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_font.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_fuzzer.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_harness.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_images.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_log.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_md5.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_memory.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_test_random.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_thread.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_timer.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_touch.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_types.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_version.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_video.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/SDL_vulkan.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/begin_code.h [deleted file]
misc/builddeps/win64/sdl/include/SDL2/close_code.h [deleted file]
misc/builddeps/win64/sdl/lib/cmake/SDL2/sdl2-config.cmake [deleted file]
misc/builddeps/win64/sdl/lib/libSDL2.a [deleted file]
misc/builddeps/win64/sdl/lib/libSDL2.la [deleted file]
misc/builddeps/win64/sdl/lib/libSDL2_test.a [deleted file]
misc/builddeps/win64/sdl/lib/libSDL2main.a [deleted file]
misc/builddeps/win64/sdl/lib/pkgconfig/sdl2.pc [deleted file]
misc/builddeps/win64/sdl/share/aclocal/sdl2.m4 [deleted file]
misc/builddeps/win64/zlib/bin/zlib1.dll [deleted file]
misc/builddeps/win64/zlib/include/zlib.h [deleted file]
misc/builddeps/win64/zlib/lib/libz.a [deleted file]
misc/builddeps/win64/zlib/lib/libz.dll.a [deleted symlink]
misc/builddeps/win64/zlib/lib/libzdll.a [deleted file]
misc/builddeps/win64/zlib/lib/pkgconfig/zlib.pc [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Headers [deleted symlink]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Resources [deleted symlink]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/SDL2 [deleted symlink]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_assert.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_atomic.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_audio.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_bits.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_blendmode.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_clipboard.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_copying.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_endian.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_error.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_events.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_filesystem.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gesture.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_haptic.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hints.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_joystick.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keyboard.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keycode.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_loadso.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_log.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_main.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_messagebox.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mouse.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mutex.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_name.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_pixels.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_platform.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_power.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_quit.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rect.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_render.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_revision.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rwops.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_scancode.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_sensor.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_shape.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_stdinc.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_surface.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_system.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_syswm.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_thread.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_timer.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_touch.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_types.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_version.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_video.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_vulkan.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/begin_code.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/close_code.h [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/Info.plist [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/SDL2 [deleted file]
misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/Current [deleted symlink]
misc/buildfiles/osx/Xonotic.app/Contents/Info.plist
misc/buildfiles/win32/libcurl-4.dll [deleted file]
misc/buildfiles/win32/libd0_blind_id-0.dll [deleted file]
misc/buildfiles/win32/libd0_rijndael-0.dll [deleted file]
misc/buildfiles/win32/libfreetype-6.dll [deleted file]
misc/buildfiles/win32/libgmp-10.dll [deleted file]
misc/buildfiles/win32/libjpeg.dll [deleted file]
misc/buildfiles/win32/libode-3.dll [deleted file]
misc/buildfiles/win32/libpng15-15.dll [deleted file]
misc/buildfiles/win32/libtheora.dll [deleted file]
misc/buildfiles/win32/ogg.dll [deleted file]
misc/buildfiles/win32/vorbis.dll [deleted file]
misc/buildfiles/win32/vorbisenc.dll [deleted file]
misc/buildfiles/win32/vorbisfile.dll [deleted file]
misc/buildfiles/win32/zlib1.dll [deleted file]
misc/buildfiles/win64/libcurl-4.dll [deleted file]
misc/buildfiles/win64/libd0_blind_id-0.dll [deleted file]
misc/buildfiles/win64/libd0_rijndael-0.dll [deleted file]
misc/buildfiles/win64/libfreetype-6.dll [deleted file]
misc/buildfiles/win64/libgcc_s_sjlj-1.dll [deleted file]
misc/buildfiles/win64/libgmp-10.dll [deleted file]
misc/buildfiles/win64/libjpeg.dll [deleted file]
misc/buildfiles/win64/libode-3.dll [deleted file]
misc/buildfiles/win64/libogg.dll [deleted file]
misc/buildfiles/win64/libpng15-15.dll [deleted file]
misc/buildfiles/win64/libstdc++-6.dll [deleted file]
misc/buildfiles/win64/libtheora.dll [deleted file]
misc/buildfiles/win64/libvorbis.dll [deleted file]
misc/buildfiles/win64/libvorbisfile.dll [deleted file]
misc/buildfiles/win64/vorbisenc.dll [deleted file]
misc/buildfiles/win64/zlib1.dll [deleted file]
misc/buildsrc/dlls.sh [new file with mode: 0755]
misc/buildsrc/toolchain-i686-w64-mingw32.cmake [new file with mode: 0644]
misc/buildsrc/toolchain-x86_64-w64-mingw32.cmake [new file with mode: 0644]
misc/buildsrc/zlib1.rc [new file with mode: 0644]
misc/infrastructure/checkupdate.txt
misc/infrastructure/keygen/config.pl
misc/infrastructure/keygen/crypto-keygen-standalone
misc/infrastructure/keygen/response.d0ir
misc/infrastructure/powerbot/.gitignore [new file with mode: 0644]
misc/infrastructure/powerbot/bot.go [new file with mode: 0644]
misc/infrastructure/powerbot/db.go [new file with mode: 0644]
misc/infrastructure/powerbot/go.mod [new file with mode: 0644]
misc/infrastructure/powerbot/go.sum [new file with mode: 0644]
misc/infrastructure/powerbot/powerlevels.go [new file with mode: 0644]
misc/infrastructure/refresh-checkupdate.sh [new file with mode: 0755]
misc/infrastructure/refresh-tos.sh [new file with mode: 0755]
misc/infrastructure/tos.txt [new file with mode: 0644]
misc/infrastructure/transifex.cron
misc/infrastructure/update-rsync.sh
misc/infrastructure/xonotic-map-compiler.cron
misc/infrastructure/xonotic-map-screenshot.cron
misc/infrastructure/xonotic-release-build.cron
misc/logos/xonotic-glx.desktop [deleted file]
misc/logos/xonotic.appdata.xml
misc/tools/all/config.subr
misc/tools/all/git.subr
misc/tools/all/release.subr
misc/tools/all/xonotic.subr
misc/tools/all/zsh_autocompletion/all/_all
misc/tools/autoshader.sh
misc/tools/brightspot.sh
misc/tools/cached-converter.sh
misc/tools/compress-texture
misc/tools/fiximage.pl
misc/tools/fov-calc.py [new file with mode: 0755]
misc/tools/midi2cfg/tuba-play.cfg
misc/tools/midi2cfg/tuba-record.cfg
misc/tools/nokia2tuba.sh [new file with mode: 0755]
misc/tools/rebrand-darkplaces-engine.sh
misc/tools/rsync-updater/README.txt
misc/tools/rsync-updater/chmod.exe
misc/tools/rsync-updater/cyggcc_s-1.dll
misc/tools/rsync-updater/cygiconv-2.dll
misc/tools/rsync-updater/cygintl-8.dll
misc/tools/rsync-updater/cygpopt-0.dll [new file with mode: 0644]
misc/tools/rsync-updater/cygwin1.dll
misc/tools/rsync-updater/rsync.exe
misc/tools/rsync-updater/update-to-autobuild.bat
misc/tools/rsync-updater/update-to-autobuild.sh
misc/tools/rsync-updater/update-to-release.bat
misc/tools/rsync-updater/update-to-release.sh [changed from file to symlink]
misc/tools/xonotic-map-compiler
misc/tools/xonotic-map-compiler-autobuild
misc/tools/xonotic-map-compiler-optionsfile
misc/tools/xonotic-map-screenshot
server/readme.txt
server/server.cfg
xonotic-linux-glx.sh [deleted symlink]
xonotic-linux-sdl.sh

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..a2aa561
--- /dev/null
@@ -0,0 +1,149 @@
+# Requesting Access
+
+It's recommended to [request access](https://docs.gitlab.com/ee/user/group/index.html#request-access-to-a-group) to the [Xonotic project group](https://gitlab.com/xonotic).  Forking our repositories and submitting merge requests from there will work but you won't be able to use our CI setup for the [xonotic-data.pk3dir](https://gitlab.com/xonotic/xonotic-data.pk3dir) repo.
+
+Please let us know your GitLab username [on Matrix](https://xonotic.org/chat) so we know you're legit.
+
+
+# Licensing
+
+A condition for write (push) access and submission of merge requests is that **you agree that any code or data you push will be licensed under the [GNU General Public License, version 2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html), or any later version.**
+
+If the directory or repository your changes apply to contains a LICENSE or COPYING file indicating another license or a dual license, then **you agree that your pushed code will be licensed as specified in that file.**  Examples of subdirectories and repositories with a dual license or a different license:
+* [xonotic-data.pk3dir/qcsrc/lib/warpzone](https://gitlab.com/xonotic/xonotic-data.pk3dir/-/tree/master/qcsrc/lib/warpzone) - dual licensed with GNU GPLv2 (or any later version), or MIT license.
+* [xonstat-go](https://gitlab.com/xonotic/xonstat-go/) - licensed with [GNU AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html)
+
+In case the code you pushed was not written by you, it is your responsibility to ensure proper licensing.
+
+
+# Technical
+
+The Xonotic repo structure and git HOWTO are on the [Xonotic Git wiki page](https://gitlab.com/xonotic/xonotic/-/wikis/Git).  
+Build tools are documented on the [Repository_Access wiki page](https://gitlab.com/xonotic/xonotic/wikis/Repository_Access).
+
+
+# Policies
+
+### for all Developers
+
+- Branches should be named `myname/mychange`. For instance, if your name is Alex and the change you are committing is a menu fix, use something like `alex/menufix`.
+- Ask the branch owner before pushing to someone else's branch.
+
+### for Maintainers
+
+- During a release freeze only user-visible fixes/polishing and documentation may be merged/pushed to master, other changes (eg new features, redesigns, refactors) must be discussed with the team first.
+- Pushing to someone else's branch is allowed if changes are required for merging the branch AND the owner has left the project or indicated they won't develop the branch further.
+- Any change pushed directly to `master` must be top quality: no regressions, no controversy, thoughtful design, great perf, clean and readable, successful pipeline, compliant with the Code Style below, no compiler warnings.
+- When merging, if the commit history is "messy" (contains commits that just fix the previous commit(s), and/or commits that don't compile and run, and/or poorly described commits) the MR should be squash merged.  Clean concise commit history is useful and is to be merged intact.
+- Force pushes must not be made to the default branch (typically `master` or `main`).
+
+
+# Code Style
+
+This should be approximately consistent with the [DarkPlaces style](https://gitlab.com/xonotic/darkplaces/-/blob/master/CONTRIBUTING.md).
+
+### All code submitted should follow the Allman style for the most part.
+
+- In statements, the curly brace should be placed on the next line at the
+  same indentation level as the statement. If the statement only involves
+  a single line, preferably don't use braces.
+
+       ```c
+       // Example:
+       if (foo == 1)
+       {
+               Do_Something();
+               Do_Something_Else();
+       }
+       else
+               Do_Something_Else_Else();
+
+       if (bar == 1)
+               Do_Something_Else_Else_Else();
+       ```
+
+- Use tabs for indentation.  
+  Use spaces subsequently when aligning text such as the
+  parameters of multi-line function calls, declarations, or statements.
+
+       ```c
+       switch (foo)
+       {
+               case 1337:   I_Want();  break;
+               case 0xffff: These();   break;
+               default:     Aligned();
+       }
+
+       AFuncWith(way,
+                 too,
+                 many,
+                 args & STUFF);
+       ```
+
+- If possible, try to keep individual lines of code less than 100 characters.
+
+- As in the example above, it would be preferable to attempt to limit
+  line length when it comes to very long lists of function arguments
+  by manually wrapping the lines, but not prematurely.
+
+- Pointer operators should be placed on the right-hand side and type casts should have a space between the type and the pointer.
+
+       ```c
+       int foo = 1;
+       int *bar = &foo;
+       int *baz = (int *)malloc(5);
+       ```
+
+- Place a space after each comma when listing parameters or defining array/struct members,
+  and after each semicolon of a `for` loop.  
+  Don't place a space between the function name and the `(` and don't place a space between the `(` or `)` and the parameter.
+
+- Significant documentation comments should be formatted like so:
+
+       ```c
+       /*
+        * This is a multi-line comment.
+        * Sometimes, I dream about cheese.
+        */
+       ```
+
+  But this is okay too:
+
+       ```c
+       /* This is another multi-line comment.
+        * Hiya! How are you?
+        */
+       ```
+
+  Place a space between the `//` or `#` and the comment text (_not_ recommended for commented lines of code):
+
+       ```c
+       // Do you know who ate all the doughnuts?
+       //ItWasThisAwfulFunc(om, nom, nom);
+       ```
+
+- Use parentheses to separate bitwise and logical versions of an operator when they're used in the same statement.
+
+       ```c
+       foo = (bar & FLAG) && baz;
+       ```
+
+- Variables names should preferably be in either lowerCamelCase or snake_case
+  but a cautious use of lowercase for shorter names is fine.  
+  Functions in CamelCase, macros in UPPERCASE.  
+  Underscores should be included if they improve readability.
+
+- If following these guidelines in any manner would make any code less
+  readable or harder to follow, ***ignore them***. This section is only
+  guidelines, not rules. We're not going to beat you over the head in
+  merge requests because you misplaced a dereference operator.
+
+  For example, in some situations, placing the block on the same line as
+  the condition would be okay because it looks cleaner:
+
+       ```c
+       if (foo)  DoSomething();
+       if (bar)  Do_Something_Else();
+       if (far)  Near();
+       if (boo)  AHH("!!!\n");
+       ```
index 567f3c5d57ee94b5b7518afd7cd0bb4dbbbc7b62..1b55203a133c39a508bbe5f8b824ce6cfac51d07 100644 (file)
@@ -1,13 +1,24 @@
+---
+author: Antibody
+date: 2010-05-30 14:50:21+00:00
+type: faq
+title: FAQ
+aliases:
+- /the-game/faq
+---
+
 # Xonotic FAQs
+
+<a name="install"></a>
 ## How do I install Xonotic?
 
 **There is no need to install Xonotic!** The zip file you downloaded from the homepage has everything. All binaries to run the game on Linux, Windows and macOS are inside of it. Just unzip the archive and run the appropriate executable for your OS.
 
-For example, on Windows or macOS you can start the game by double-clicking the Xonotic logo. On Linux you can run xonotic-linux-glx.sh or xonotic-linux-sdl.sh - whichever one works better on your hardware.
+For example, on Windows or macOS you can start the game by double-clicking the Xonotic logo. On Linux you can run xonotic-linux-sdl.sh.
 
 ## Is there a Debian package available?
 
-There is an unofficial package available on [playdeb.net](http://www.playdeb.net/updates/ubuntu/17.04/?q=xonotic). Unfortunately, Xonotic is not in the Debian repositories yet. You can check the status of the bug report [here](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=646377). If you can help us expedite this process, please contact us!
+Unfortunately, Xonotic is not in the Debian repositories yet. You can check the status of the bug report [here](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=646377). If you can help us expedite this process, please contact us!
 
 ## How do you pronounce the name Xonotic?
 
@@ -19,21 +30,21 @@ European people are more likely to pronounce it : _kso + notic_
 
 ## How and why did you choose the logo?
 
-The logo design process took about a week, with a handful of people  contributing designs, and constantly adjusting those designs based on  feedback.
+The logo design process took about a week, with a handful of people contributing designs, and constantly adjusting those designs based on feedback.
 
-The phoenix image of the logo obviously refers to the concept of  "rising from the ashes".
+The phoenix image of the logo obviously refers to the concept of "rising from the ashes".
 
-Another aspect of the logo is the center ring, which has some  similarities to the Quake logo; it has a fatter bottom edge and thinner  top edge, though quake didn't use a complete ring shape. This is intended as a pay of respect to the Quake origins of the game, as the Darkplaces engine was originally based on the Quake 1 engine.
+Another aspect of the logo is the center ring, which has some similarities to the Quake logo; it has a fatter bottom edge and thinner top edge, though quake didn't use a complete ring shape. This is intended as a pay of respect to the Quake origins of the game, as the Darkplaces engine was originally based on the Quake 1 engine.
 
 # Troubleshooting
 
-## When I join a server or after a map change I see nothing but a black screen, but I can still move and shoot
+## I can't launch Xonotic on Linux
 
-This is probably because you don't have the map that's running on the server or it didn't download correctly. Try clearing your _dlcache_ in your config folder and restarting Xonotic.
+The most likely reason Xonotic won't start is that you've accidentally launched the dedicated server (e.g. `xonotic-linux64-dedicated`) which runs silently in the background. It shares a lockfile (`~/.xonotic/lock`) with the normal executable and prevents it from launching. Kill any processes which have xonotic in the name (you might also need to remove the lockfile manually) and try again.
 
-For Linux users: you need to have libcurl installed, otherwise you won't be able to download any maps. libcurl should be available in any Linux distribution, just search for "libcurl" and install it in your distribution's package manager.
+Use the executable or script with "sdl" in the name to launch Xonotic.
 
-## Can't launch Xonotic on macOS Sierra or later
+## I can't launch Xonotic on macOS Sierra or later
 
 (Full error message: "You have reached this menu due to missing or unlocatable content/data. You may consider adding -basedir /path/to/game to your launch commandline.")
 
@@ -41,9 +52,17 @@ In the Finder, control-click the app icon, then choose Open from the shortcut me
 
 This happens because Xonotic is not signed using an Apple developer key.
 
+## When I join a server or after a map change I see nothing but a black screen, but I can still move and shoot
+
+This is probably because you don't have the map that's running on the server or it didn't download correctly. Try clearing your _dlcache_ (in [\<your config folder\>](#config)/data/dlcache) and restarting Xonotic.
+
+For Linux users: you need to have libcurl installed, otherwise you won't be able to download any maps. libcurl should be available in any Linux distribution, just search for "libcurl" and install it in your distribution's package manager.
+
 ## When I start Xonotic all I see is a black screen or a black screen with some checkered squares
 
 This happens when the engine can't load the data*.pk3 file or has trouble to initialize OpenGL. The reasons could be:
+
+  * You unpacked the zip file without folder names, see [How do I install Xonotic?]({{< relref "#how-do-i-install-xonotic" >}})
   * On Linux: the current directory is not your Xonotic/ folder.
   * On Mac: you tried to extract and move the files from a Xonotic update and it deleted the old files. When using the mac GUI please be sure to move only the files not the folders as that will delete the old files or use the mv console command which will not delete the old files.
   * The engine could not initialize OpenGL. Please install the latest drivers for your graphic card. You will probably find one for your card there: [intel](http://intel.com), [AMD](http://amd.com), [nvidia](http://nvidia.com).
@@ -54,7 +73,7 @@ This happens when the engine can't load the data*.pk3 file or has trouble to ini
 This happens when the engine has trouble initializing OpenGL. The reasons could be:
 
   * The engine could not initialize OpenGL. Please install the latest drivers for your graphic card. You will probably find one for your card there: [intel](http://intel.com), [AMD](http://amd.com), [nvidia](http://nvidia.com).
-  * You do not have permissions needed for 3d acceleration. Usually you need to add yourself to the group video, you can do that via console as root like this: _usermod -a -G video YOURUSERNAME_. You need to logoff/in afterwards.
+  * You do not have permissions needed for 3d acceleration. Usually you need to add yourself to the group video, you can do that via console as root like this: `usermod -a -G video YOURUSERNAME`. You need to logoff/in afterwards.
 
 ## When I start Xonotic my screen is flickering
 
@@ -62,39 +81,39 @@ This is known to happen on Windows with Intel graphic chips and is a bug in the
 
 ## How can I speed up my frame rate?
 
-You can choose predefined performance settings in the Settings / Video menu or you can enable/disable single features. The greatest performance boost can be achieved by turning off dynamic lights and shadows in the Settings / Effects menu. Bloom is also quite resource intensive. Other fps boots include disabling Deluxemapping and Coronas. On older graphics cards or on-board/notebook chips with little video ram you can try to lower the texture quality in the Settings / Video menu. Some graphic cards (mostly ATI or quite old cards) run A LOT faster if you disable the Vertex Buffer Objects in the Settings / Video menu. An other thing that can greatly help on such cards is to disable the OpenGL 2.0 Shaders. Having that option enabled is faster on most cards however, that is why both are active by default.
+You can choose predefined performance settings in the Settings->Video menu or you can enable/disable single features. The greatest performance boost can be achieved by turning off dynamic lights and shadows in the Settings->Effects menu. Bloom is also quite resource intensive. Other fps boots include disabling Deluxemapping and Coronas. On older graphics cards or on-board/notebook chips with little video ram you can try to lower the texture quality in the Settings->Video menu. Some graphic cards (mostly ATI or quite old cards) run A LOT faster if you disable the Vertex Buffer Objects in the Settings->Video menu. An other thing that can greatly help on such cards is to disable the OpenGL 2.0 Shaders. Having that option enabled is faster on most cards however, that is why both are active by default.
 
 If none of that helps, you can try compiling Xonotic from [source](http://gitlab.com/xonotic/xonotic/wikis/Repository_Access).
 
 ## The sound is broken, it crackles and stutters
 
-Try run xonotic-sdl.exe instead of xonotic.exe (on Windows). Adding the command line options -sndspeed 48000 and/or -sndstereo can also help on some systems (on Linux, Mac, Windows).
+Adding the command line options -sndspeed 48000 and/or -sndstereo may help on some systems (on Linux, Mac, Windows).
 
-## Mouse is too slow and sensitivity is at top (on Mac / Linux)
+## Mouse is too slow and sensitivity is at top on Mac
 
-Mac: The default mouse acceleration on Mac is very high and strange. The Xonotic defaults work fine with it but some mouse drivers seem to 'correct' the mouse acceleration and conflict with the Xonotic defaults. Try to **disable the option Turn off OS mouse acceleration** in the Settings / Input menu. Or the same via console: _apple_mouse_noaccel 0; vid_restart_
-Linux: A similar problem can arise on Linux. It's also Turn off OS mouse acceleration in the Settings / Input menu but the console command is different: _vid_dga 0; vid_restart;
+Mac: The default mouse acceleration on Mac is very high and strange. The Xonotic defaults work fine with it but some mouse drivers seem to 'correct' the mouse acceleration and conflict with the Xonotic defaults. Try to **disable the option Disable system mouse acceleration** in the Settings->Input menu. Or the same via console: `apple_mouse_noaccel 0; vid_restart` ([How do I open the console?]({{< relref "#how-do-i-open-the-console" >}}))
 
 ## I can't switch to 32 bit color depth (on Windows)
 
 Check if your desktop color depth is set to 32 bits per pixel. If it's just set to 16, Xonotic can't switch to 32 bit mode.
 
-## How to report crashes and bugs
+## How to report crashes and bugs?
 
 Use our [issue tracker](http://gitlab.com/xonotic/xonotic-data.pk3dir/issues) on Gitlab.
 
-If you want to investigate further:
+If you want to investigate crashes further:
 
-On Linux: In a xterm, cd into your Xonotic installation directory, start catchsegv ./xonotic-linux64-sdl -condebug -developer > crash.txt 2>&1 and give the file crash.txt to the developers. On a 32bit system you should instead use ./xonotic-linux32-sdl. Note that you can also use ./xonotic-linux64-glx or if you have a 32bit system ./xonotic-linux32-glx
+On Linux: In a terminal, `cd` into your Xonotic installation directory, execute `catchsegv ./xonotic-linux64-sdl -condebug -developer > crash.txt 2>&1` and give the file crash.txt to the developers.
 
 On Windows: Click Start->Run, and enter drwtsn32, click Ok in the next window, run Xonotic and wait for the crash. Then go to C:\Documents and Settings\All Users\Application Data\Microsoft\Dr Watson there should be a file called "drwtsn32.log", give that file along with the engine's build date to the developers. You'll see that date when you open the ingame console (How do I open the console?). Note that some folders of that path may be hidden or have a translated name if you're using a non-english windows.
 
 ## Where can I get more help?
 
-Visit the official Xonotic [forum](http://forums.xonotic.org/), there is a support and bug report area. Or get on [IRC](/chat) to chat with others or ask for help. There is the normal users channel (irc://irc.quakenet.org/xonotic) and the developers channel (irc://irc.freenode.net/xonotic)
+Visit the official Xonotic [forum](http://forums.xonotic.org/), there is a support and bug report area, or [ask in chat](http://xonotic.org/chat).
 
 # General questions
 
+<a name="config"></a>
 ## Where are the configuration files located?
 
   * Linux: ~/.xonotic
@@ -110,13 +129,15 @@ The config directory (sometimes called user directory) has a specific [location]
 
 ## How do I install new maps?
 
-Maps usually ship as .pk3 file. All you have to do is to copy this file to the config folder <your config folder>/data/ directory. Map packages that were downloaded from a server during playing end up in <your config folder>/data/dlcache and are only used till you exit Xonotic. If you want to play them locally or use them to setup a server of your own you can "accept" the packages by moving it one level up - right next to your config.cfg.
+Maps usually ship as a .pk3 file. All you have to do is to copy this file to the [\<config folder\>](#config)/data/ directory. To detect the new map, either restart Xonotic or run `fs_rescan` in console.
+
+Map packages that were downloaded from a server when playing on it end up in [\<your config folder\>](#config)/data/dlcache/ and are only used till you exit Xonotic. If you want to play them locally or use them to setup a server of your own you can "accept" the packages by moving them one level up (right next to your config.cfg).
 
-An extensive list of maps is at [xonotic.co](http://xonotic.co)
+There are multiple [unofficial map repositories](https://gitlab.com/xonotic/xonotic/wikis/Home#unofficial-map-repositories).
 
 ## How can I place a shortcut to Xonotic on my Linux desktop?
 
-Use the script xonotic-linux-sdl.sh or xonotic-linux-glx.sh instead of the binaries. The scripts will use the correct working directory, choose the right version (32 or 64 bit) and also allow you to start a extra X server.
+Use the script xonotic-linux-sdl.sh instead of the binaries. The script will use the correct working directory, and if applicable, select the correct engine binary for your platform.
 
 ## How do I open the console?
 
@@ -124,73 +145,73 @@ Press [shift]+[escape]. To close it press [escape]. While playing \` or ^ will a
 
 ## What console commands/variables are there?
 
-An searchable list is available [here](http://www.xonotic.org/tools/cacs/), or you can search in-game using _apropos_ in console.
+An searchable list is available [here](http://www.xonotic.org/tools/cacs/), or you can search in-game using `apropos` in console ([How do I open the console?]({{< relref "#how-do-i-open-the-console" >}})).
 
 ## How can I use colors in my nickname and messages?
 
 Colors can be used in nicknames and chat messages via two ways: Either the simple way by typing ^ followed by a number between 0 and 9 or by typing ^x followed by three hexadecimal numbers (0-F) representing red, green and blue components of the color before the text. The second way allows for much more colors. For example if you type ^xF00message the text "message" will be displayed in red color. Simple examples:
 
-code   | rgb code  | color
--------|-----------|--------
-^0     | ^x000     | black
-^1     | ^xF00     | red
-^2     | ^x0F0     | green
-^3     | ^xFF0     | yellow
-^4     | ^x00F     | blue
-^5     | ^x0FF     | cyan
-^6     | ^xF0F     | magenta
-^7     | ^xFFF     | white
-^8     |           | half-transparent black
-^9     | ^x888     | grey
-       | ^x800     | dark red
-       | ^x080     | dark green
-       | ^x880     | dark yellow
-       | ^x008     | dark blue
-       | ^x088     | dark cyan
-       | ^x808     | dark magenta
+code   | rgb code  | color
+|--------|-----------|--------
+^0     | ^x000     | black
+^1     | ^xF00     | red
+^2     | ^x0F0     | green
+^3     | ^xFF0     | yellow
+^4     | ^x00F     | blue
+^5     | ^x0FF     | cyan
+^6     | ^xF0F     | magenta
+^7     | ^xFFF     | white
+^8     |           | half-transparent black
+^9     | ^x888     | grey
+       | ^x800     | dark red
+       | ^x080     | dark green
+       | ^x880     | dark yellow
+       | ^x008     | dark blue
+       | ^x088     | dark cyan
+       | ^x808     | dark magenta
 
 ## How do I watch/record demos?
 
-Demos are recordings of matches that you have played. To automatically record a demo each time you play enable the option Record demos while playing in the Multiplayer / Demos menu. Or if you just want to record some matches open the console and type rec <demos/name> before playing. That is before starting a game or connecting to a server. The demo file will then be stored in [your config folder](#config)/data/demos/<name>.dem. If you downloaded a demo, copy it to [\<your config folder\>](#config)/data/demos/<name>.dem. You might have to create this directory if you have never recorded a demo before. To watch demos you can choose a demo file in the Multiplayer / Demos and click the play button. Also you can watch demos typing _ply <demos/name>_ in the console ([How do I open the console?]({{< relref "#how-do-i-open-the-console" >}})). You can list all your demo files by typing _dem_ on the console.
+Demos are recordings of matches that you have played. To automatically record a demo each time you play enable the option Auto record demos in Multiplayer->Media->Demos. Or if you just want to record some matches open the console and type `rec demos/<name>` before playing. That is before starting a game or connecting to a server. The demo file will then be stored in [your config folder](#config)/data/demos/\<name\>.dem. If you downloaded a demo, copy it to [\<your config folder\>](#config)/data/demos/. You might have to create this directory if you have never recorded a demo before. To watch demos you can choose a demo file in Multiplayer->Media->Demos and click the Play button. Also you can watch demos typing `ply demos/<name>` in the console ([How do I open the console?]({{< relref "#how-do-i-open-the-console" >}})).
 
 # Server setup
 
 ## How do I start a server?
 
-Use the Multiplayer / Create menu to start a listen server. You will always have to play yourself in a listen server. If you want to create a server without being forced to play yourself please take a look at the file readme.txt in the Xonotic/server/ directory where the dedicated server is explained.
+Use the Multiplayer->Create menu to start a listen server. You will always have to play yourself in a listen server. If you want to create a server without being forced to play yourself please take a look at the file readme.txt in the Xonotic/server/ directory where the dedicated server is explained.
 
 ## Which ports do I have to open in firewall/forward from my router to run a server?
 
-The default port is 26000 UDP. You can change that in the Multiplayer / Create menu or by starting Xonotic with the parameter -port <port> or having a line port <port> in the server config file. If you follow the tutorial mentioned above you do not need this command line argument as it will be done in the config file created for the server. To add the command line argument on Windows, create a new shortcut to xonotic.exe or xonotic-dedicated.exe and right click on it. Select properties and -port <port> in the "Target:" line. Be sure that the "Start in:" line contains the full path to your Xonotic folder and click "OK". The parameter will be used if you start Xonotic via that new shortcut.
+The default port is 26000 UDP. You can change that in the Multiplayer->Create menu or by starting Xonotic with the parameter `-port <port>` or having a line `port <port>` in the server config file. If you follow the tutorial mentioned above you do not need this command line argument as it will be done in the config file created for the server. To add the command line argument on Windows, create a new shortcut to xonotic.exe or xonotic-dedicated.exe and right click on it. Select properties and `-port <port>` in the "Target:" line. Be sure that the "Start in:" line contains the full path to your Xonotic folder and click "OK". The parameter will be used if you start Xonotic via that new shortcut.
 
 ## Is there some kind of rcon?
 
-Yes there is a QuakeWorld compatible rcon. To use it you must enter rcon_password <password> in the server console or server config file. The Xonotic client has to set the same password in the same fashion. You can then issue commands with rcon <command> if you are connected to the server or will have to set rcon_address <ip/hostname> or rcon_address <ip/hostname>:<port> to point to the server. There are also external rcon tools but make sure you use a QW compatible rcon tool.
+Yes there is a QuakeWorld compatible rcon. To use it you must enter `rcon_password <password>` in the server console or server config file. The Xonotic client has to set the same password in the same fashion. You can then issue commands with `rcon <command>` if you are connected to the server or will have to set `rcon_address <ip/hostname>` or `rcon_address <ip/hostname>:<port>` to point to the server. There are also external rcon tools but make sure you use a QW compatible rcon tool.
 
 ## How can I kick people who are using special characters in their names?
 
-Enter status at the server console. You will see a list of all players. In front of their names you will see a number (the player id). You can kick the player you don't like with kick # <player id> <reason> (notice the space after #).
+Enter status at the server console. You will see a list of all players. In front of their names you will see a number (the player id). You can kick the player you don't like with `kick # <player id> <reason>` (notice the space after #).
 
 # Nexuiz Related FAQs
 
 ## What prompted the split from Nexuiz?
 
-**Lee Vermeulen**, the [Nexuiz project](http://alientrap.org/nexuiz) founder, decided to license the Nexuiz code (with **LordHavoc** licensing the [Darkplaces  engine](http://icculus.org/twilight/darkplaces/)) to a new game development company named [Illfonic](http://illfonic.com) so that they could develop a closed-source  version for the PS3. As part of this deal, IllFonic acquired the rights  to use the name Nexuiz along with the domain nexuiz.com, and are under  no obligation to contribute code back to the open-source Nexuiz project  (and have stated that they have no intention of doing so).
+**Lee Vermeulen**, the [Nexuiz project](http://alientrap.org/nexuiz) founder, decided to license the Nexuiz code (with **LordHavoc** licensing the [Darkplaces engine](http://icculus.org/twilight/darkplaces/)) to a new game development company named [Illfonic](http://illfonic.com) so that they could develop a closed-source version for the PS3. As part of this deal, IllFonic acquired the rights to use the name Nexuiz along with the domain nexuiz.com, and are under no obligation to contribute code back to the open-source Nexuiz project (and have stated that they have no intention of doing so).
 
-When this was announced, the response from the Nexuiz community was  overwhelming negative, even among the development team and main  contributors. Vermeulen had not actively participated in the project for  several years and all development had been done by the community. Most  members have expressed a sense of betrayal and cited the project as an  example of [mushroom management](http://en.wikipedia.org/wiki/Mushroom_management). Vermeulen essentially cashed in  on the hard work of others and sold the code, name and reputation that  they had built up over years without him.
+When this was announced, the response from the Nexuiz community was overwhelming negative, even among the development team and main contributors. Vermeulen had not actively participated in the project for several years and all development had been done by the community. Most members have expressed a sense of betrayal and cited the project as an example of [mushroom management](http://en.wikipedia.org/wiki/Mushroom_management). Vermeulen essentially cashed in on the hard work of others and sold the code, name and reputation that they had built up over years without him.
 
-Despite attempts to [reason with IllFonic](https://web.archive.org/web/20101212165111/http://alientrap.org/forum/viewtopic.php?f=4&t=6079), they have refused to change  the name of their project to a derivative name even though they have  directly stated that their "version" of Nexuiz is a completely different  game. The hijacking of the Nexuiz project by its absentee founder and  IllFonic made it clear that it had no future as it stood and thus the  community left to found **Xonotic**.
+Despite attempts to [reason with IllFonic](https://web.archive.org/web/20101212165111/http://alientrap.org/forum/viewtopic.php?f=4&t=6079), they have refused to change the name of their project to a derivative name even though they have directly stated that their "version" of Nexuiz is a completely different game. The hijacking of the Nexuiz project by its absentee founder and IllFonic made it clear that it had no future as it stood and thus the community left to found **Xonotic**.
 
-It should also be noted that IllFonic's code may be in violation of  the GPL as most contributors to the Nexuiz codebase have not relicensed  their work for inclusion in a closed-source project. This has been  another source of outrage for many.
+It should also be noted that IllFonic's code may be in violation of the GPL as most contributors to the Nexuiz codebase have not relicensed their work for inclusion in a closed-source project. This has been another source of outrage for many.
 
 **Update:** The GPL concerns have been cleared up by a recent [interview with LordHavoc](http://games.slashdot.org/story/10/03/24/070234/DarkPlaces-Dev-Forest-Hale-Corrects-Nexuiz-GPL-Stance).
 
 ## Was a compromise attempted?
 
-Yes, many in the Nexuiz community tried to [reach a compromise](http://alientrap.org/forum/viewtopic.php?f=4&t=6079), such as having Illfonic  contribute some artwork and/or gamecode back to Nexuiz GPL and for them  to use a derivative name for their project, e.g. "Nexuiz Reloaded". ~~ IllFonic flatly refused such suggestions. ~~ This, along  with the clear stance that Alientrap has taken on this issue, made it  clear that no compromise could be reached.
+Yes, many in the Nexuiz community tried to [reach a compromise](http://alientrap.org/forum/viewtopic.php?f=4&t=6079), such as having Illfonic contribute some artwork and/or gamecode back to Nexuiz GPL and for them to use a derivative name for their project, e.g. "Nexuiz Reloaded". <del>Illfonic [flatly refused](https://web.archive.org/web/20101212220555/http://alientrap.org/forum/viewtopic.php?p=76108&f=7) all such suggestions.</del> This, along with the clear stance that Alientrap has taken on this issue, made it clear that no compromise could be reached.
 
-**Update!** It has been clarified that, despite some of misleading wording in previous communication, Illfonic will be contributing _some_ of the game code back to Nexuiz GPL, mainly having to do with bandwidth improvements and animation blending.
+**Update** It has been clarified that, despite some of misleading wording in previous communication, Illfonic will be contributing _some_ of the game code back to Nexuiz GPL, mainly having to do with bandwidth improvements and animation blending.
 
 ## Do you despise Vermeulen, LordHavoc or Illfonic?
 
-**No!** Without the past work of Vermeulen and LordHavoc, we  would not have the game that we enjoy today. We wish them the best of  luck in their endeavors. We hope Illfonic's Nexuiz on PS3 is successful.  We simply have a difference of opinion on project management and the  result is going to be very positive; We're forming a game project that  matches what we wanted out of Nexuiz all along.
+**No!** Without the past work of Vermeulen and LordHavoc, we would not have the game that we enjoy today. We wish them the best of luck in their endeavors. We hope Illfonic's Nexuiz on PS3 is successful. We simply have a difference of opinion on project management and the result is going to be very positive; We're forming a game project that matches what we wanted out of Nexuiz all along.
index 85fbe91883680894b6d8c2e0e81e51d2287a92e1..d7d329d2f47fda02d153f7de68933b9448024e84 100644 (file)
--- a/Makefile
+++ b/Makefile
-DESTDIR ?=
-PREFIX ?= /usr/local
-BINDIR ?= $(PREFIX)/bin
-LIBDIR ?= $(PREFIX)/lib/xonotic
-DOCDIR ?= $(PREFIX)/share/doc/xonotic
-ZIP ?= zip -9
-INSTALL ?= install
-ARCH ?= $(shell if [ x"`uname -m`" = x"x86_64" ]; then echo linux64; else echo linux32; fi)
-LN ?= ln
-CP ?= cp
-BINARY ?= yes
-SUFFIX ?= $(shell if [ -d .git ]; then echo git; elif [ x"$(BINARY)" = x"yes" ]; then echo zip-binary; else echo zip-source; fi)
-RIJNDAELDETECT_CONFIGURE ?= $(shell if ! [ -f source/d0_blind_id/d0_rijndael.c ]; then echo --disable-rijndael; fi)
-RIJNDAELDETECT_MAKE_DP ?= $(shell if [ -f source/d0_blind_id/d0_rijndael.c ]; then echo DP_CRYPTO_RIJNDAEL_STATIC_LIBDIR=$(CURDIR)/source/d0_blind_id/.libs; fi)
-
-
-.PHONY: all
-all: all-$(SUFFIX)
-
-.PHONY: all-git
-all-git:
-       ./all compile
-
-.PHONY: all-zip-binary
-all-zip-binary:
-       @echo Nothing to do
-
-.PHONY: all-zip-source
-all-zip-source:
-       ( cd source/d0_blind_id && ./configure --enable-static --disable-shared $(RIJNDAELDETECT_CONFIGURE) )
-       $(MAKE) -C source/d0_blind_id
-       $(MAKE) -C source/gmqcc
-       $(MAKE) -C source/qcsrc QCC=$(CURDIR)/source/gmqcc/gmqcc
-       $(MAKE) -C source/darkplaces sv-release DP_CRYPTO_STATIC_LIBDIR=$(CURDIR)/source/d0_blind_id/.libs
-       $(MAKE) -C source/darkplaces cl-release DP_CRYPTO_STATIC_LIBDIR=$(CURDIR)/source/d0_blind_id/.libs
-       $(MAKE) -C source/darkplaces sdl-release DP_CRYPTO_STATIC_LIBDIR=$(CURDIR)/source/d0_blind_id/.libs
-
+DPSRC = source/darkplaces
+D0SRC = source/d0_blind_id
+CLIENT = xonotic-local-sdl
+SERVER = xonotic-local-dedicated
+
+# CC and MAKEFLAGS are always set so ?= has no effect, therefore
+# we use CFLAGS to set default optimisations which users may override
+CFLAGS ?= -pipe -march=native -mtune=native -flto=auto
+# user can override this with make -j
+MAKEFLAGS := -j$(shell nproc)
+# DP makefile overrides CFLAGS (exporting CFLAGS does work for d0_blind_id but so does this)
+export CC += $(CFLAGS)
+
+# d0_blind_id header location
+export CC += -I$(PWD)/source/
+# d0_blind_id static libs location
+export CC += -L$(PWD)/$(D0SRC)/.libs/
+# Player IDs
+export DP_LINK_CRYPTO=static
+# AES
+export DP_LINK_CRYPTO_RIJNDAEL=static
+
+
+.PHONY: help
+help:
+       @echo
+       @printf "     \e[1;33m===== Xonotic Makefile for stable and beta releases =====\e[m\n"
+       @echo
+       @printf "The DarkPlaces Engine builds will be named \e[1m$(CLIENT) \e[mand \e[1m$(SERVER)\e[m\n"
+       @printf "and will be preferred by \e[1mxonotic-linux-sdl.sh \e[mand \e[1mxonotic-linux-dedicated.sh \e[mscripts.\n"
+       @echo
+       @printf "More info is available at \e[1;36mhttps://gitlab.com/xonotic/xonotic/-/wikis/Compiling\e[m\n"
+       @echo
+       @echo   "-O3 is already enabled for DarkPlaces Engine. Do not add any math flags!"
+       @echo
+       @echo   "MAKEFLAGS=$(MAKEFLAGS)"
+       @echo   "CFLAGS= $(CFLAGS)"
+       @echo
+       @echo   "  make clean-sources         Delete build objects"
+       @echo   "  make clean                 Delete engine builds and build objects"
+       @echo
+       @echo   "  make update-stable         Update to the latest stable release via rsync"
+       @echo   "  make update-beta           Update to the latest beta autobuild via rsync"
+       @echo
+       @printf "  make server                Compile \e[1m$(SERVER)\e[m\n"
+       @printf "  make client                Compile \e[1m$(CLIENT)\e[m\n"
+       @echo   "  make both"
+       @echo
+
+GIT := $(shell [ -d .git ] && printf "\e[1;31mThis Makefile only supports stable releases and autobuilds, whereas you are using a git repository.  To compile from git, please read https://gitlab.com/xonotic/xonotic/-/wikis/Repository_Access\e[m")
+ifdef GIT
+  $(error $(GIT))
+endif
+
+
+# If requested, these targets must always run first:
+.EXTRA_PREREQS := $(filter clean update-stable update-beta, $(MAKECMDGOALS))
+
+.PHONY: clean-sources
+clean-sources:
+       $(MAKE) -C $(DPSRC) clean
+       ( $(MAKE) -C $(D0SRC) clean || true ) # autotools may not have created the Makefile yet
+clean-sources: .EXTRA_PREREQS =  # prevents circular dependency
 
 .PHONY: clean
-clean: clean-$(SUFFIX)
-
-.PHONY: clean-git
-clean-git:
-       ./all clean
-
-.PHONY: clean-zip
-clean-zip-binary:
-       @echo Nothing to do
-
-.PHONY: clean-zip
-clean-zip-source:
-       $(MAKE) -C source/d0_blind_id distclean
-       $(MAKE) -C source/gmqcc clean
-       $(MAKE) -C source/qcsrc clean
-       $(MAKE) -C source/darkplaces clean
-
-
-.PHONY: install-data
-install-data: install-data-$(SUFFIX)
-
-.PHONY: install-data-git
-install-data-git: all-git
-       $(RM) -rf $(DESTDIR)$(LIBDIR)/data
-       $(INSTALL) -d $(DESTDIR)$(LIBDIR)/data
-       for p in data/*.pk3; do $(INSTALL) $$p $(DESTDIR)$(LIBDIR)/$$p || exit 1; done
-       for p in data/*.pk3dir; do ( cd $$p && $(ZIP) -r $(DESTDIR)$(LIBDIR)/$${p%dir} * ) || exit 1; done
-
-.PHONY: install-data-zip-binary
-install-data-zip-binary: all-zip-binary
-       $(RM) -rf $(DESTDIR)$(LIBDIR)/data
-       $(INSTALL) -d $(DESTDIR)$(LIBDIR)/data
-       for p in data/*.pk3; do $(INSTALL) $$p $(DESTDIR)$(LIBDIR)/$$p || exit 1; done
-
-.PHONY: install-data-zip-source
-install-data-zip-source: all-zip-source
-       $(RM) -rf $(DESTDIR)$(LIBDIR)/data
-       $(INSTALL) -d $(DESTDIR)$(LIBDIR)/data
-       for p in data/*.pk3; do $(INSTALL) $$p $(DESTDIR)$(LIBDIR)/$$p || exit 1; done
-       for p in data/xonotic-*-data*.pk3; do cd source && $(ZIP) $(DESTDIR)$(LIBDIR)/$$p progs.dat menu.dat csprogs.dat; done
-
-
-.PHONY: install-engine
-install-engine: install-engine-$(SUFFIX)
-
-.PHONY: install-engine-git
-install-engine-git: all-git
-       $(INSTALL) -d $(DESTDIR)$(LIBDIR)
-       $(INSTALL) xonotic-linux-glx.sh $(DESTDIR)$(LIBDIR)/xonotic-linux-glx.sh
-       $(INSTALL) xonotic-linux-sdl.sh $(DESTDIR)$(LIBDIR)/xonotic-linux-sdl.sh
-       $(INSTALL) xonotic-linux-dedicated.sh $(DESTDIR)$(LIBDIR)/xonotic-linux-dedicated.sh
-       $(INSTALL) darkplaces/darkplaces-sdl $(DESTDIR)$(LIBDIR)/xonotic-$(ARCH)-sdl
-       $(INSTALL) darkplaces/darkplaces-glx $(DESTDIR)$(LIBDIR)/xonotic-$(ARCH)-glx
-       $(INSTALL) darkplaces/darkplaces-dedicated $(DESTDIR)$(LIBDIR)/xonotic-$(ARCH)-dedicated
-
-.PHONY: install-engine-zip-binary
-install-engine-zip-binary: all-zip-binary
-       $(INSTALL) -d $(DESTDIR)$(LIBDIR)
-       $(INSTALL) xonotic-linux-glx.sh $(DESTDIR)$(LIBDIR)/xonotic-linux-glx.sh
-       $(INSTALL) xonotic-linux-sdl.sh $(DESTDIR)$(LIBDIR)/xonotic-linux-sdl.sh
-       $(INSTALL) xonotic-linux-dedicated.sh $(DESTDIR)$(LIBDIR)/xonotic-linux-dedicated.sh
-       $(INSTALL) xonotic-$(ARCH)-sdl $(DESTDIR)$(LIBDIR)/xonotic-$(ARCH)-sdl
-       $(INSTALL) xonotic-$(ARCH)-glx $(DESTDIR)$(LIBDIR)/xonotic-$(ARCH)-glx
-       $(INSTALL) xonotic-$(ARCH)-dedicated $(DESTDIR)$(LIBDIR)/xonotic-$(ARCH)-dedicated
-
-.PHONY: install-engine-zip-source
-install-engine-zip-source: all-zip-source
-       $(INSTALL) -d $(DESTDIR)$(LIBDIR)
-       $(INSTALL) xonotic-linux-glx.sh $(DESTDIR)$(LIBDIR)/xonotic-linux-glx.sh
-       $(INSTALL) xonotic-linux-sdl.sh $(DESTDIR)$(LIBDIR)/xonotic-linux-sdl.sh
-       $(INSTALL) xonotic-linux-dedicated.sh $(DESTDIR)$(LIBDIR)/xonotic-linux-dedicated.sh
-       $(INSTALL) source/darkplaces/darkplaces-sdl $(DESTDIR)$(LIBDIR)/xonotic-$(ARCH)-sdl
-       $(INSTALL) source/darkplaces/darkplaces-glx $(DESTDIR)$(LIBDIR)/xonotic-$(ARCH)-glx
-       $(INSTALL) source/darkplaces/darkplaces-dedicated $(DESTDIR)$(LIBDIR)/xonotic-$(ARCH)-dedicated
-
-
-.PHONY: install-links
-install-links:
-       $(INSTALL) -d $(BINDIR)
-       $(LN) -snf $(LIBDIR)/xonotic-linux-sdl.sh $(DESTDIR)$(BINDIR)/xonotic-sdl
-       $(LN) -snf $(LIBDIR)/xonotic-linux-glx.sh $(DESTDIR)$(BINDIR)/xonotic-glx
-       $(LN) -snf $(LIBDIR)/xonotic-linux-dedicated.sh $(DESTDIR)$(BINDIR)/xonotic-dedicated
-
-
-.PHONY: install-doc
-install-doc:
-       $(INSTALL) -d $(DESTDIR)$(DOCDIR)/server
-       $(CP) -R Docs/* $(DESTDIR)$(DOCDIR)/
-       $(CP) -R server/* $(DESTDIR)$(DOCDIR)/server
-
-
-.PHONY: install
-install: install-data install-engine install-links install-doc
+clean: clean-sources
+       $(RM) $(CLIENT) $(SERVER)
+
+.PHONY: update-stable
+update-stable:
+       misc/tools/rsync-updater/update-to-release.sh
+
+.PHONY: update-beta
+update-beta:
+       misc/tools/rsync-updater/update-to-autobuild.sh
+
+
+$(D0SRC)/.libs/libd0_blind_id.a $(D0SRC)/.libs/libd0_rijndael.a:
+       ( cd $(D0SRC) && ./autogen.sh && ./configure --enable-static --disable-shared )
+       $(MAKE) -C $(D0SRC) clean  # ensures missing .a files are created FIXME WORKAROUND
+       $(MAKE) -C $(D0SRC)
+
+$(DPSRC)/darkplaces-dedicated: $(D0SRC)/.libs/libd0_blind_id.a
+       $(MAKE) -C $(DPSRC) sv-release
+$(SERVER): $(DPSRC)/darkplaces-dedicated
+       cp $(DPSRC)/darkplaces-dedicated $(SERVER)
+
+$(DPSRC)/darkplaces-sdl: $(D0SRC)/.libs/libd0_blind_id.a
+       $(MAKE) -C $(DPSRC) sdl-release
+$(CLIENT): $(DPSRC)/darkplaces-sdl
+       cp $(DPSRC)/darkplaces-sdl $(CLIENT)
+
+
+.PHONY: server
+server: $(SERVER)
+
+.PHONY: client
+client: $(CLIENT)
+
+.PHONY: both
+both: client server
+
index e48c6f5ef1956a02068512258e82f11c6d25c210..fa6dd7430861ac6065f78a85701f2dce328882a7 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,28 +1,44 @@
 # Xonotic
 
-![Xonotic Logo](http://xonotic.org/static/img/xonotic-logo.png)
+![Xonotic Logo](https://xonotic.org/static/img/xonotic_logo_web.svg)
 
-Xonotic is an addictive, arena-style first person shooter with crisp movement and a wide array of weapons. It combines intuitive mechanics with in-your-face action to elevate your heart rate. Xonotic is and will always be free-to-play. It is available under the [copyleft](https://www.gnu.org/copyleft/)-style [GPLv2](http://www.gnu.org/licenses/gpl-2.0.html) license.
+Xonotic is an addictive, arena-style first person shooter with crisp movement and a wide array of weapons. It combines intuitive mechanics with in-your-face action to elevate your heart rate.
 
-*Please note, [Gitlab](http://gitlab.com/xonotic/) is our home for repositories, issue tracking, wikis, etc. The repositories on GitHub are mirrors of GitLab's unless specified otherwise.*
+## License
+
+Xonotic is and will always be free and open source. It is available under the [copyleft](https://www.gnu.org/copyleft/)-style [GPLv3+](https://www.gnu.org/licenses/gpl-3.0.html) license (see the [COPYING](COPYING) file for details).
 
 ## Download
 
-### LATEST RELEASE: Xonotic 0.8.2 for Linux, Windows, and macOS
+Stable releases and related info are available at https://xonotic.org/download
+
+[Beta builds](https://gitlab.com/xonotic/xonotic/-/wikis/Autobuilds) are available at https://beta.xonotic.org/autobuild
+
+The source code included in stable releases and autobuilds can be [compiled as described on the wiki](https://gitlab.com/xonotic/xonotic/-/wikis/Compiling).  This is much "lighter" than a full git clone.
+
+*Please note, [Gitlab](https://gitlab.com/xonotic/) is our home for repositories, issue tracking, wikis, etc. The repositories on GitHub are mirrors of GitLab's unless specified otherwise.*
 
-If you're just here to play, you can download Xonotic as a zip package, torrent, or by using one of [these alternative methods](http://xonotic.org/download/).
+## Community
+
+The community is primarily active in the [forums](https://forums.xonotic.org/) and [chat rooms](https://gitlab.com/xonotic/xonotic/-/wikis/Chat-Rooms).
+
+## Documentation
 
-- [Download as torrent](http://dl.xonotic.org/xonotic-0.8.2.zip.torrent)
-- [Download as zip](http://dl.xonotic.org/xonotic-0.8.2.zip)
+[Halogene's Newbie Guide](https://xonotic.org/guide) gives gameplay and client configuration advice.  
+[Frequently Asked Questions](https://xonotic.org/faq) cover common tech support topics.  
+[The GitLab wiki](https://gitlab.com/xonotic/xonotic/-/wikis/home) has detailed articles and links for many relevant topics.  
+[Command Alias & Cvar Search](https://xonotic.org/tools/cacs) is a web interface to browse Xonotic console features.  
+[Doxygen](https://xonotic.org/doxygen) makes it easier to discover details and dependencies in the code.  
+
+## Developing
 
-No installation required, just unpack and run. Got questions? See the [FAQ](http://xonotic.org/faq) or [live chat](http://xonotic.org/chat/) with us.
+To compile the latest revision from git, [follow this guide](https://gitlab.com/xonotic/xonotic/wikis/Repository_Access). Learn more about the [directory structure here](https://gitlab.com/xonotic/xonotic/wikis/Git). Check out [our project page on GitLab](https://gitlab.com/groups/xonotic) to see [development activity](https://gitlab.com/groups/xonotic/-/activity) and code ([xonotic-data.pk3dir](https://gitlab.com/xonotic/xonotic-data.pk3dir) is where most development takes place).
 
-**sha256sum**: a22f7230f486c5825b55cfdadd73399c9b0fae98c9e081dd8ac76eca08359ad5  
-**Package size**: 946M  
+Please ensure you've read and understood [CONTRIBUTING.md](CONTRIBUTING.md) before pushing commits or opening merge requests.
 
 ## Contributing
 
-We're mainly looking for help in the following areas:
+We're looking for help in the following areas:
 
 - [Translations](https://www.transifex.com/team-xonotic/xonotic/)
   - More info [on the wiki](https://gitlab.com/xonotic/xonotic/-/wikis/home#translating)
@@ -38,18 +54,3 @@ We're mainly looking for help in the following areas:
   - Please don't create anything that looks official (social media accounts, entries on pages like steam, etc.) without contacting us, we like to manage things ourselves to keep the information up to date
   - All other kinds of PR are very welcome - make videos or articles, share links, spread the word
 
-## Developing
-
-To compile the latest revision from git, [follow this guide](https://gitlab.com/xonotic/xonotic/wikis/Repository_Access). Learn more about the [directory structure here](https://gitlab.com/xonotic/xonotic/wikis/Git), or check out [our project page on GitLab](https://gitlab.com/groups/xonotic) to see development activity and code ([xonotic-data](https://gitlab.com/xonotic/xonotic-data.pk3dir) is where most development takes place).
-
-## Community
-
-The community is primarily active in the [forums](http://forums.xonotic.org/) and IRC, `#xonotic` on either `irc.freenode.net` (developer chat) or `irc.quakenet.org` (player chat).
-
-## Wiki
-
-[Our Gitlab wiki](https://gitlab.com/xonotic/xonotic/wikis/home) has a lot of information related to developing, playing or otherwise contributing to the game.
-
-## License
-
-Distributed under the GPLv2 license. See the [COPYING](COPYING) file for more details.
diff --git a/data/font-xolonium.pk3dir/fonts/README b/data/font-xolonium.pk3dir/fonts/README
deleted file mode 100755 (executable)
index 2fff41d..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-Copyright 2011-2016 Severin Meyer <sev.ch@web.de>
-
-
-This is a special GPL version of the Xolonium font,
-intended for Xonotic. Find the public release at
-<http://fontlibrary.org/font/xolonium>
-
-
-This font is free software. You can redistribute and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation,
-either version 2 of the license, or any later version.
-
-This font is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty
-of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this font. If not, see <http://www.gnu.org/licenses/>.
-
-
-As a special exception, if you create a document which uses this
-font, and embed this font or unaltered portions of this font into
-the document, this font does not by itself cause the resulting
-document to be covered by the GNU General Public License.
-
-This exception does not however invalidate any other reasons why
-the document might be covered by the GNU General Public License.
-If you modify this font, you may extend this exception to your
-version of the font, but you are not obligated to do so. If you do
-not wish to do so, delete this exception statement from your version.
diff --git a/data/font-xolonium.pk3dir/fonts/README.txt b/data/font-xolonium.pk3dir/fonts/README.txt
new file mode 100755 (executable)
index 0000000..dc49684
--- /dev/null
@@ -0,0 +1,32 @@
+Copyright 2011-2020 Severin Meyer <sev.ch@web.de>
+
+
+This is a special GPL version of the Xolonium font,
+intended for Xonotic. Find the public release at
+<https://gitlab.com/sev/xolonium>
+
+
+This font is free software. You can redistribute and/or
+modify it under the terms of the GNU General Public
+License as published by the Free Software Foundation,
+either version 2 of the license, or any later version.
+
+This font is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty
+of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this font. If not, see <http://www.gnu.org/licenses/>.
+
+
+As a special exception, if you create a document which uses this
+font, and embed this font or unaltered portions of this font into
+the document, this font does not by itself cause the resulting
+document to be covered by the GNU General Public License.
+
+This exception does not however invalidate any other reasons why
+the document might be covered by the GNU General Public License.
+If you modify this font, you may extend this exception to your
+version of the font, but you are not obligated to do so. If you do
+not wish to do so, delete this exception statement from your version.
index cdcbb2870a1860999553482ef5b7e871fc419f8e..f1055f88d3ecdd313ea042047c436f1e946258d7 100644 (file)
Binary files a/data/font-xolonium.pk3dir/fonts/xolonium-bold.otf and b/data/font-xolonium.pk3dir/fonts/xolonium-bold.otf differ
index 0d22516e19fd2f6d1106636e6505f8e68befe03e..d450fc078e31adb1217bf2c9d174cfc8ddbaa91a 100644 (file)
Binary files a/data/font-xolonium.pk3dir/fonts/xolonium-regular.otf and b/data/font-xolonium.pk3dir/fonts/xolonium-regular.otf differ
diff --git a/misc/builddeps/linux32/d0_blind_id/bin/blind_id b/misc/builddeps/linux32/d0_blind_id/bin/blind_id
deleted file mode 100755 (executable)
index 35bb683..0000000
Binary files a/misc/builddeps/linux32/d0_blind_id/bin/blind_id and /dev/null differ
diff --git a/misc/builddeps/linux32/d0_blind_id/include/d0_blind_id/d0.h b/misc/builddeps/linux32/d0_blind_id/include/d0_blind_id/d0.h
deleted file mode 100644 (file)
index 4c8708e..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * FILE:       d0.h
- * AUTHOR:     Rudolf Polzer - divVerent@xonotic.org
- * 
- * Copyright (c) 2010, Rudolf Polzer
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the names of contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Format:commit %H$
- * $Id: 6c55afeb50f24bd316079ae46582e65f8020b19b $
- */
-
-#ifndef __D0_H__
-#define __D0_H__
-
-#include <unistd.h> // size_t
-
-#define D0_EXPORT __attribute__((__visibility__("default")))
-#define D0_USED __attribute__((used))
-#define D0_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
-#define D0_BOOL int
-
-typedef void *(d0_malloc_t)(size_t len);
-typedef void (d0_free_t)(void *p);
-typedef void *(d0_createmutex_t)(void);
-typedef void (d0_destroymutex_t)(void *);
-typedef int (d0_lockmutex_t)(void *); // zero on success
-typedef int (d0_unlockmutex_t)(void *); // zero on success
-
-extern d0_malloc_t *d0_malloc;
-extern d0_free_t *d0_free;
-extern d0_createmutex_t *d0_createmutex;
-extern d0_destroymutex_t *d0_destroymutex;
-extern d0_lockmutex_t *d0_lockmutex;
-extern d0_unlockmutex_t *d0_unlockmutex;
-
-void d0_setmallocfuncs(d0_malloc_t *m, d0_free_t *f);
-void d0_setmutexfuncs(d0_createmutex_t *c, d0_destroymutex_t *d, d0_lockmutex_t *l, d0_unlockmutex_t *u);
-void d0_initfuncs(void); // initializes them, this needs to be only called internally once
-
-extern const char *d0_bsd_license_notice;
-
-#endif
diff --git a/misc/builddeps/linux32/d0_blind_id/include/d0_blind_id/d0_blind_id.h b/misc/builddeps/linux32/d0_blind_id/include/d0_blind_id/d0_blind_id.h
deleted file mode 100644 (file)
index f546b67..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * FILE:       d0_blind_id.h
- * AUTHOR:     Rudolf Polzer - divVerent@xonotic.org
- * 
- * Copyright (c) 2010, Rudolf Polzer
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the names of contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Format:commit %H$
- * $Id: bf838f43093aceadcd2d20071684f1e7148a4332 $
- */
-
-#ifndef __D0_BLIND_ID_H__
-#define __D0_BLIND_ID_H__
-
-#include "d0.h"
-
-typedef struct d0_blind_id_s d0_blind_id_t;
-typedef D0_BOOL (*d0_fastreject_function) (const d0_blind_id_t *ctx, void *pass);
-
-D0_EXPORT D0_WARN_UNUSED_RESULT d0_blind_id_t *d0_blind_id_new(void);
-D0_EXPORT void d0_blind_id_free(d0_blind_id_t *a);
-D0_EXPORT void d0_blind_id_clear(d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_copy(d0_blind_id_t *ctx, const d0_blind_id_t *src);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_key(d0_blind_id_t *ctx, int k);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_key_fastreject(d0_blind_id_t *ctx, int k, d0_fastreject_function reject, void *pass);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_private_key(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_public_key(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_private_key(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_public_key(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_fingerprint64_public_key(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_id_modulus(d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_private_id_modulus(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_private_id_modulus(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_id_start(d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_id_request(d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_answer_private_id_request(const d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_finish_private_id_request(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_private_id_request_camouflage(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_private_id_request_camouflage(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_private_id(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_public_id(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_private_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_public_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_start(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL send_modulus, const char *message, size_t msglen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_challenge(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL recv_modulus, const char *inbuf, size_t inbuflen, char *outbuf, size_t *outbuflen, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_response(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_verify(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen, char *msg, size_t *msglen, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_generate_missing_signature(d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sign_with_private_id_sign(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL send_modulus, const char *message, size_t msglen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sign_with_private_id_sign_detached(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL send_modulus, const char *message, size_t msglen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sign_with_private_id_verify(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL recv_modulus, const char *inbuf, size_t inbuflen, char *msg, size_t *msglen, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sign_with_private_id_verify_detached(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL recv_modulus, const char *inbuf, size_t inbuflen, const char *msg, size_t msglen, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_fingerprint64_public_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_verify_public_id(const d0_blind_id_t *ctx, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_verify_private_id(const d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sessionkey_public_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen); // can only be done after successful key exchange, this performs a modpow; key length is limited by SHA_DIGESTSIZE for now; also ONLY valid after successful d0_blind_id_authenticate_with_private_id_verify/d0_blind_id_fingerprint64_public_id
-
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_INITIALIZE(void);
-D0_EXPORT void d0_blind_id_SHUTDOWN(void);
-
-D0_EXPORT void d0_blind_id_util_sha256(char *out, const char *in, size_t n);
-
-// for exporting
-D0_EXPORT void d0_blind_id_setmallocfuncs(d0_malloc_t *m, d0_free_t *f);
-D0_EXPORT void d0_blind_id_setmutexfuncs(d0_createmutex_t *c, d0_destroymutex_t *d, d0_lockmutex_t *l, d0_unlockmutex_t *u);
-
-#endif
diff --git a/misc/builddeps/linux32/d0_blind_id/include/d0_blind_id/d0_rijndael.h b/misc/builddeps/linux32/d0_blind_id/include/d0_blind_id/d0_rijndael.h
deleted file mode 100644 (file)
index e1c8f71..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// from http://www.efgh.com/software/rijndael.htm (public domain)
-
-#ifndef H__RIJNDAEL
-#define H__RIJNDAEL
-
-#include "d0.h"
-
-D0_EXPORT int d0_rijndael_setup_encrypt(unsigned long *rk, const unsigned char *key,
-  int keybits);
-D0_EXPORT int d0_rijndael_setup_decrypt(unsigned long *rk, const unsigned char *key,
-  int keybits);
-D0_EXPORT void d0_rijndael_encrypt(const unsigned long *rk, int nrounds,
-  const unsigned char plaintext[16], unsigned char ciphertext[16]);
-D0_EXPORT void d0_rijndael_decrypt(const unsigned long *rk, int nrounds,
-  const unsigned char ciphertext[16], unsigned char plaintext[16]);
-
-#define D0_RIJNDAEL_KEYLENGTH(keybits) ((keybits)/8)
-#define D0_RIJNDAEL_RKLENGTH(keybits)  ((keybits)/8+28)
-#define D0_RIJNDAEL_NROUNDS(keybits)   ((keybits)/32+6)
-
-#endif
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.a b/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.a
deleted file mode 100644 (file)
index 8945205..0000000
Binary files a/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.a and /dev/null differ
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.la b/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.la
deleted file mode 100755 (executable)
index b631320..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libd0_blind_id.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libd0_blind_id.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -L/tmp/d0_blind_id.deps/lib/ /tmp/gg/lib/libgmp.la'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libd0_blind_id.
-current=0
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so b/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so
deleted file mode 120000 (symlink)
index 6adf4aa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libd0_blind_id.so.0.0.0
\ No newline at end of file
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so.0 b/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so.0
deleted file mode 120000 (symlink)
index 6adf4aa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libd0_blind_id.so.0.0.0
\ No newline at end of file
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so.0.0.0 b/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so.0.0.0
deleted file mode 100755 (executable)
index d17b4e5..0000000
Binary files a/misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.so.0.0.0 and /dev/null differ
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.a b/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.a
deleted file mode 100644 (file)
index 5889769..0000000
Binary files a/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.a and /dev/null differ
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.la b/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.la
deleted file mode 100755 (executable)
index 49c9909..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libd0_rijndael.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libd0_rijndael.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -L/tmp/d0_blind_id.deps/lib/ /tmp/gg/lib/libgmp.la'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libd0_rijndael.
-current=0
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so b/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so
deleted file mode 120000 (symlink)
index 01dce01..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libd0_rijndael.so.0.0.0
\ No newline at end of file
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so.0 b/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so.0
deleted file mode 120000 (symlink)
index 01dce01..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libd0_rijndael.so.0.0.0
\ No newline at end of file
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so.0.0.0 b/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so.0.0.0
deleted file mode 100755 (executable)
index b98c986..0000000
Binary files a/misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.so.0.0.0 and /dev/null differ
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/pkgconfig/d0_blind_id.pc b/misc/builddeps/linux32/d0_blind_id/lib/pkgconfig/d0_blind_id.pc
deleted file mode 100644 (file)
index 8c9bb32..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=/usr/local
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: Blind-ID
-Description: Library for user identification using RSA blind signatures
-Requires: 
-Version: 0.5
-Libs: -L${libdir} -ld0_blind_id
-Cflags: -I${includedir}/d0_blind_id
diff --git a/misc/builddeps/linux32/d0_blind_id/lib/pkgconfig/d0_rijndael.pc b/misc/builddeps/linux32/d0_blind_id/lib/pkgconfig/d0_rijndael.pc
deleted file mode 100644 (file)
index 1040d65..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=/usr/local
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: Rijndael
-Description: Library for Rijndael encryption
-Requires: 
-Version: 0.5
-Libs: -L${libdir} -ld0_rijndael
-Cflags: -I${includedir}/d0_blind_id
diff --git a/misc/builddeps/linux32/gmp/include/gmp.h b/misc/builddeps/linux32/gmp/include/gmp.h
deleted file mode 100644 (file)
index 7b531f5..0000000
+++ /dev/null
@@ -1,2280 +0,0 @@
-/* Definitions for GNU multiple precision functions.   -*- mode: c -*-
-
-Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-The GNU MP Library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
-
-#ifndef __GMP_H__
-
-#if defined (__cplusplus)
-#include <iosfwd>   /* for std::istream, std::ostream, std::string */
-#include <cstdio>
-#endif
-
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-#define __GMP_HAVE_HOST_CPU_FAMILY_power   0
-#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0
-#define GMP_LIMB_BITS                      32
-#define GMP_NAIL_BITS                      0
-#endif
-#define GMP_NUMB_BITS     (GMP_LIMB_BITS - GMP_NAIL_BITS)
-#define GMP_NUMB_MASK     ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)
-#define GMP_NUMB_MAX      GMP_NUMB_MASK
-#define GMP_NAIL_MASK     (~ GMP_NUMB_MASK)
-
-
-/* The following (everything under ifndef __GNU_MP__) must be identical in
-   gmp.h and mp.h to allow both to be included in an application or during
-   the library build.  */
-#ifndef __GNU_MP__
-#define __GNU_MP__ 5
-
-#define __need_size_t  /* tell gcc stddef.h we only want size_t */
-#if defined (__cplusplus)
-#include <cstddef>     /* for size_t */
-#else
-#include <stddef.h>    /* for size_t */
-#endif
-#undef __need_size_t
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-/* #undef _LONG_LONG_LIMB */
-#define __GMP_LIBGMP_DLL  0
-#endif
-
-
-/* __STDC__ - some ANSI compilers define this only to 0, hence the use of
-       "defined" and not "__STDC__-0".  In particular Sun workshop C 5.0
-       sets __STDC__ to 0, but requires "##" for token pasting.
-
-   _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but
-       don't always define __STDC__.
-
-   __DECC - current versions of DEC C (5.9 for instance) for alpha are ANSI,
-       but don't define __STDC__ in their default mode.  Don't know if old
-       versions might have been K&R, but let's not worry about that unless
-       someone is still using one.
-
-   _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4
-       mode, but doesn't define __STDC__.
-
-   _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za
-       option is given (in which case it's 1).
-
-   _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that
-      all w32 compilers are ansi.
-
-   Note: This same set of tests is used by gen-psqr.c and
-   demos/expr/expr-impl.h, so if anything needs adding, then be sure to
-   update those too.  */
-
-#if  defined (__STDC__)                                 \
-  || defined (__cplusplus)                              \
-  || defined (_AIX)                                     \
-  || defined (__DECC)                                   \
-  || (defined (__mips) && defined (_SYSTYPE_SVR4))      \
-  || defined (_MSC_VER)                                 \
-  || defined (_WIN32)
-#define __GMP_HAVE_CONST        1
-#define __GMP_HAVE_PROTOTYPES   1
-#define __GMP_HAVE_TOKEN_PASTE  1
-#else
-#define __GMP_HAVE_CONST        0
-#define __GMP_HAVE_PROTOTYPES   0
-#define __GMP_HAVE_TOKEN_PASTE  0
-#endif
-
-
-#if __GMP_HAVE_CONST
-#define __gmp_const   const
-#define __gmp_signed  signed
-#else
-#define __gmp_const
-#define __gmp_signed
-#endif
-
-
-/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in
-   all other circumstances.
-
-   When compiling objects for libgmp, __GMP_DECLSPEC is an export directive,
-   or when compiling for an application it's an import directive.  The two
-   cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles
-   (and not defined from an application).
-
-   __GMP_DECLSPEC_XX is similarly used for libgmpxx.  __GMP_WITHIN_GMPXX
-   indicates when building libgmpxx, and in that case libgmpxx functions are
-   exports, but libgmp functions which might get called are imports.
-
-   libmp.la uses __GMP_DECLSPEC, just as if it were libgmp.la.  libgmp and
-   libmp don't call each other, so there's no conflict or confusion.
-
-   Libtool DLL_EXPORT define is not used.
-
-   There's no attempt to support GMP built both static and DLL.  Doing so
-   would mean applications would have to tell us which of the two is going
-   to be used when linking, and that seems very tedious and error prone if
-   using GMP by hand, and equally tedious from a package since autoconf and
-   automake don't give much help.
-
-   __GMP_DECLSPEC is required on all documented global functions and
-   variables, the various internals in gmp-impl.h etc can be left unadorned.
-   But internals used by the test programs or speed measuring programs
-   should have __GMP_DECLSPEC, and certainly constants or variables must
-   have it or the wrong address will be resolved.
-
-   In gcc __declspec can go at either the start or end of a prototype.
-
-   In Microsoft C __declspec must go at the start, or after the type like
-   void __declspec(...) *foo()".  There's no __dllexport or anything to
-   guard against someone foolish #defining dllexport.  _export used to be
-   available, but no longer.
-
-   In Borland C _export still exists, but needs to go after the type, like
-   "void _export foo();".  Would have to change the __GMP_DECLSPEC syntax to
-   make use of that.  Probably more trouble than it's worth.  */
-
-#if defined (__GNUC__)
-#define __GMP_DECLSPEC_EXPORT  __declspec(__dllexport__)
-#define __GMP_DECLSPEC_IMPORT  __declspec(__dllimport__)
-#endif
-#if defined (_MSC_VER) || defined (__BORLANDC__)
-#define __GMP_DECLSPEC_EXPORT  __declspec(dllexport)
-#define __GMP_DECLSPEC_IMPORT  __declspec(dllimport)
-#endif
-#ifdef __WATCOMC__
-#define __GMP_DECLSPEC_EXPORT  __export
-#define __GMP_DECLSPEC_IMPORT  __import
-#endif
-#ifdef __IBMC__
-#define __GMP_DECLSPEC_EXPORT  _Export
-#define __GMP_DECLSPEC_IMPORT  _Import
-#endif
-
-#if __GMP_LIBGMP_DLL
-#if __GMP_WITHIN_GMP
-/* compiling to go into a DLL libgmp */
-#define __GMP_DECLSPEC  __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into an application which will link to a DLL libgmp */
-#define __GMP_DECLSPEC  __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC
-#endif
-
-
-#ifdef __GMP_SHORT_LIMB
-typedef unsigned int           mp_limb_t;
-typedef int                    mp_limb_signed_t;
-#else
-#ifdef _LONG_LONG_LIMB
-typedef unsigned long long int mp_limb_t;
-typedef long long int          mp_limb_signed_t;
-#else
-typedef unsigned long int      mp_limb_t;
-typedef long int               mp_limb_signed_t;
-#endif
-#endif
-typedef unsigned long int      mp_bitcnt_t;
-
-/* For reference, note that the name __mpz_struct gets into C++ mangled
-   function names, which means although the "__" suggests an internal, we
-   must leave this name for binary compatibility.  */
-typedef struct
-{
-  int _mp_alloc;               /* Number of *limbs* allocated and pointed
-                                  to by the _mp_d field.  */
-  int _mp_size;                        /* abs(_mp_size) is the number of limbs the
-                                  last field points to.  If _mp_size is
-                                  negative this is a negative number.  */
-  mp_limb_t *_mp_d;            /* Pointer to the limbs.  */
-} __mpz_struct;
-
-#endif /* __GNU_MP__ */
-
-
-typedef __mpz_struct MP_INT;    /* gmp 1 source compatibility */
-typedef __mpz_struct mpz_t[1];
-
-typedef mp_limb_t *            mp_ptr;
-typedef __gmp_const mp_limb_t *        mp_srcptr;
-#if defined (_CRAY) && ! defined (_CRAYMPP)
-/* plain `int' is much faster (48 bits) */
-#define __GMP_MP_SIZE_T_INT     1
-typedef int                    mp_size_t;
-typedef int                    mp_exp_t;
-#else
-#define __GMP_MP_SIZE_T_INT     0
-typedef long int               mp_size_t;
-typedef long int               mp_exp_t;
-#endif
-
-typedef struct
-{
-  __mpz_struct _mp_num;
-  __mpz_struct _mp_den;
-} __mpq_struct;
-
-typedef __mpq_struct MP_RAT;    /* gmp 1 source compatibility */
-typedef __mpq_struct mpq_t[1];
-
-typedef struct
-{
-  int _mp_prec;                        /* Max precision, in number of `mp_limb_t's.
-                                  Set by mpf_init and modified by
-                                  mpf_set_prec.  The area pointed to by the
-                                  _mp_d field contains `prec' + 1 limbs.  */
-  int _mp_size;                        /* abs(_mp_size) is the number of limbs the
-                                  last field points to.  If _mp_size is
-                                  negative this is a negative number.  */
-  mp_exp_t _mp_exp;            /* Exponent, in the base of `mp_limb_t'.  */
-  mp_limb_t *_mp_d;            /* Pointer to the limbs.  */
-} __mpf_struct;
-
-/* typedef __mpf_struct MP_FLOAT; */
-typedef __mpf_struct mpf_t[1];
-
-/* Available random number generation algorithms.  */
-typedef enum
-{
-  GMP_RAND_ALG_DEFAULT = 0,
-  GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential.  */
-} gmp_randalg_t;
-
-/* Random state struct.  */
-typedef struct
-{
-  mpz_t _mp_seed;        /* _mp_d member points to state of the generator. */
-  gmp_randalg_t _mp_alg;  /* Currently unused. */
-  union {
-    void *_mp_lc;         /* Pointer to function pointers structure.  */
-  } _mp_algdata;
-} __gmp_randstate_struct;
-typedef __gmp_randstate_struct gmp_randstate_t[1];
-
-/* Types for function declarations in gmp files.  */
-/* ??? Should not pollute user name space with these ??? */
-typedef __gmp_const __mpz_struct *mpz_srcptr;
-typedef __mpz_struct *mpz_ptr;
-typedef __gmp_const __mpf_struct *mpf_srcptr;
-typedef __mpf_struct *mpf_ptr;
-typedef __gmp_const __mpq_struct *mpq_srcptr;
-typedef __mpq_struct *mpq_ptr;
-
-
-/* This is not wanted in mp.h, so put it outside the __GNU_MP__ common
-   section. */
-#if __GMP_LIBGMP_DLL
-#if __GMP_WITHIN_GMPXX
-/* compiling to go into a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into a application which will link to a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC_XX
-#endif
-
-
-#if __GMP_HAVE_PROTOTYPES
-#define __GMP_PROTO(x) x
-#else
-#define __GMP_PROTO(x) ()
-#endif
-
-#ifndef __MPN
-#if __GMP_HAVE_TOKEN_PASTE
-#define __MPN(x) __gmpn_##x
-#else
-#define __MPN(x) __gmpn_/**/x
-#endif
-#endif
-
-/* For reference, "defined(EOF)" cannot be used here.  In g++ 2.95.4,
-   <iostream> defines EOF but not FILE.  */
-#if defined (FILE)                                              \
-  || defined (H_STDIO)                                          \
-  || defined (_H_STDIO)               /* AIX */                 \
-  || defined (_STDIO_H)               /* glibc, Sun, SCO */     \
-  || defined (_STDIO_H_)              /* BSD, OSF */            \
-  || defined (__STDIO_H)              /* Borland */             \
-  || defined (__STDIO_H__)            /* IRIX */                \
-  || defined (_STDIO_INCLUDED)        /* HPUX */                \
-  || defined (__dj_include_stdio_h_)  /* DJGPP */               \
-  || defined (_FILE_DEFINED)          /* Microsoft */           \
-  || defined (__STDIO__)              /* Apple MPW MrC */       \
-  || defined (_MSL_STDIO_H)           /* Metrowerks */          \
-  || defined (_STDIO_H_INCLUDED)      /* QNX4 */               \
-  || defined (_ISO_STDIO_ISO_H)       /* Sun C++ */
-#define _GMP_H_HAVE_FILE 1
-#endif
-
-/* In ISO C, if a prototype involving "struct obstack *" is given without
-   that structure defined, then the struct is scoped down to just the
-   prototype, causing a conflict if it's subsequently defined for real.  So
-   only give prototypes if we've got obstack.h.  */
-#if defined (_OBSTACK_H)   /* glibc <obstack.h> */
-#define _GMP_H_HAVE_OBSTACK 1
-#endif
-
-/* The prototypes for gmp_vprintf etc are provided only if va_list is
-   available, via an application having included <stdarg.h> or <varargs.h>.
-   Usually va_list is a typedef so can't be tested directly, but C99
-   specifies that va_start is a macro (and it was normally a macro on past
-   systems too), so look for that.
-
-   <stdio.h> will define some sort of va_list for vprintf and vfprintf, but
-   let's not bother trying to use that since it's not standard and since
-   application uses for gmp_vprintf etc will almost certainly require the
-   whole <stdarg.h> or <varargs.h> anyway.  */
-
-#ifdef va_start
-#define _GMP_H_HAVE_VA_LIST 1
-#endif
-
-/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
-#if defined (__GNUC__) && defined (__GNUC_MINOR__)
-#define __GMP_GNUC_PREREQ(maj, min) \
-  ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-#else
-#define __GMP_GNUC_PREREQ(maj, min)  0
-#endif
-
-/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes".  Basically
-   it means a function does nothing but examine its arguments and memory
-   (global or via arguments) to generate a return value, but changes nothing
-   and has no side-effects.  __GMP_NO_ATTRIBUTE_CONST_PURE lets
-   tune/common.c etc turn this off when trying to write timing loops.  */
-#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE)
-#define __GMP_ATTRIBUTE_PURE   __attribute__ ((__pure__))
-#else
-#define __GMP_ATTRIBUTE_PURE
-#endif
-
-
-/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean
-   to "g++ -Wold-style-cast".
-
-   Casts in "extern inline" code within an extern "C" block don't induce
-   these warnings, so __GMP_CAST only needs to be used on documented
-   macros.  */
-
-#ifdef __cplusplus
-#define __GMP_CAST(type, expr)  (static_cast<type> (expr))
-#else
-#define __GMP_CAST(type, expr)  ((type) (expr))
-#endif
-
-
-/* An empty "throw ()" means the function doesn't throw any C++ exceptions,
-   this can save some stack frame info in applications.
-
-   Currently it's given only on functions which never divide-by-zero etc,
-   don't allocate memory, and are expected to never need to allocate memory.
-   This leaves open the possibility of a C++ throw from a future GMP
-   exceptions scheme.
-
-   mpz_set_ui etc are omitted to leave open the lazy allocation scheme
-   described in doc/tasks.html.  mpz_get_d etc are omitted to leave open
-   exceptions for float overflows.
-
-   Note that __GMP_NOTHROW must be given on any inlines the same as on their
-   prototypes (for g++ at least, where they're used together).  Note also
-   that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like
-   __GMP_ATTRIBUTE_PURE.  */
-
-#if defined (__cplusplus)
-#define __GMP_NOTHROW  throw ()
-#else
-#define __GMP_NOTHROW
-#endif
-
-
-/* PORTME: What other compilers have a useful "extern inline"?  "static
-   inline" would be an acceptable substitute if the compiler (or linker)
-   discards unused statics.  */
-
- /* gcc has __inline__ in all modes, including strict ansi.  Give a prototype
-    for an inline too, so as to correctly specify "dllimport" on windows, in
-    case the function is called rather than inlined.
-    GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
-    inline semantics, unless -fgnu89-inline is used.  */
-#ifdef __GNUC__
-#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2)
-#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
-#else
-#define __GMP_EXTERN_INLINE      extern __inline__
-#endif
-#define __GMP_INLINE_PROTOTYPES  1
-#endif
-
-/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1
-   strict ANSI mode.  Inlining is done even when not optimizing (ie. -O0
-   mode, which is the default), but an unnecessary local copy of foo is
-   emitted unless -O is used.  "extern __inline" is accepted, but the
-   "extern" appears to be ignored, ie. it becomes a plain global function
-   but which is inlined within its file.  Don't know if all old versions of
-   DEC C supported __inline, but as a start let's do the right thing for
-   current versions.  */
-#ifdef __DECC
-#define __GMP_EXTERN_INLINE  static __inline
-#endif
-
-/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict
-   ANSI mode (__STDC__ is 1 in that mode).  Inlining only actually takes
-   place under -O.  Without -O "foo" seems to be emitted whether it's used
-   or not, which is wasteful.  "extern inline foo()" isn't useful, the
-   "extern" is apparently ignored, so foo is inlined if possible but also
-   emitted as a global, which causes multiple definition errors when
-   building a shared libgmp.  */
-#ifdef __SCO_VERSION__
-#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  static inline
-#endif
-#endif
-
-/* Microsoft's C compiler accepts __inline */
-#ifdef _MSC_VER
-#define __GMP_EXTERN_INLINE  __inline
-#endif
-
-/* Recent enough Sun C compilers want "inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  inline
-#endif
-
-/* Somewhat older Sun C compilers want "static inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  static inline
-#endif
-
-
-/* C++ always has "inline" and since it's a normal feature the linker should
-   discard duplicate non-inlined copies, or if it doesn't then that's a
-   problem for everyone, not just GMP.  */
-#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  inline
-#endif
-
-/* Don't do any inlining within a configure run, since if the compiler ends
-   up emitting copies of the code into the object file it can end up
-   demanding the various support routines (like mpn_popcount) for linking,
-   making the "alloca" test and perhaps others fail.  And on hppa ia64 a
-   pre-release gcc 3.2 was seen not respecting the "extern" in "extern
-   __inline__", triggering this problem too.  */
-#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE
-#undef __GMP_EXTERN_INLINE
-#endif
-
-/* By default, don't give a prototype when there's going to be an inline
-   version.  Note in particular that Cray C++ objects to the combination of
-   prototype and inline.  */
-#ifdef __GMP_EXTERN_INLINE
-#ifndef __GMP_INLINE_PROTOTYPES
-#define __GMP_INLINE_PROTOTYPES  0
-#endif
-#else
-#define __GMP_INLINE_PROTOTYPES  1
-#endif
-
-
-#define __GMP_ABS(x)   ((x) >= 0 ? (x) : -(x))
-#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i))
-
-/* __GMP_USHRT_MAX is not "~ (unsigned short) 0" because short is promoted
-   to int by "~".  */
-#define __GMP_UINT_MAX   (~ (unsigned) 0)
-#define __GMP_ULONG_MAX  (~ (unsigned long) 0)
-#define __GMP_USHRT_MAX  ((unsigned short) ~0)
-
-
-/* __builtin_expect is in gcc 3.0, and not in 2.95. */
-#if __GMP_GNUC_PREREQ (3,0)
-#define __GMP_LIKELY(cond)    __builtin_expect ((cond) != 0, 1)
-#define __GMP_UNLIKELY(cond)  __builtin_expect ((cond) != 0, 0)
-#else
-#define __GMP_LIKELY(cond)    (cond)
-#define __GMP_UNLIKELY(cond)  (cond)
-#endif
-
-#ifdef _CRAY
-#define __GMP_CRAY_Pragma(str)  _Pragma (str)
-#else
-#define __GMP_CRAY_Pragma(str)
-#endif
-
-
-/* Allow direct user access to numerator and denominator of a mpq_t object.  */
-#define mpq_numref(Q) (&((Q)->_mp_num))
-#define mpq_denref(Q) (&((Q)->_mp_den))
-
-
-#if defined (__cplusplus)
-extern "C" {
-using std::FILE;
-#endif
-
-#define mp_set_memory_functions __gmp_set_memory_functions
-__GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t),
-                                     void *(*) (void *, size_t, size_t),
-                                     void (*) (void *, size_t))) __GMP_NOTHROW;
-
-#define mp_get_memory_functions __gmp_get_memory_functions
-__GMP_DECLSPEC void mp_get_memory_functions __GMP_PROTO ((void *(**) (size_t),
-                                      void *(**) (void *, size_t, size_t),
-                                      void (**) (void *, size_t))) __GMP_NOTHROW;
-
-#define mp_bits_per_limb __gmp_bits_per_limb
-__GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb;
-
-#define gmp_errno __gmp_errno
-__GMP_DECLSPEC extern int gmp_errno;
-
-#define gmp_version __gmp_version
-__GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version;
-
-
-/**************** Random number routines.  ****************/
-
-/* obsolete */
-#define gmp_randinit __gmp_randinit
-__GMP_DECLSPEC void gmp_randinit __GMP_PROTO ((gmp_randstate_t, gmp_randalg_t, ...));
-
-#define gmp_randinit_default __gmp_randinit_default
-__GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp
-__GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t,
-                                                      mpz_srcptr, unsigned long int,
-                                                      mp_bitcnt_t));
-
-#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size
-__GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, mp_bitcnt_t));
-
-#define gmp_randinit_mt __gmp_randinit_mt
-__GMP_DECLSPEC void gmp_randinit_mt __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_randinit_set __gmp_randinit_set
-__GMP_DECLSPEC void gmp_randinit_set __GMP_PROTO ((gmp_randstate_t, __gmp_const __gmp_randstate_struct *));
-
-#define gmp_randseed __gmp_randseed
-__GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr));
-
-#define gmp_randseed_ui __gmp_randseed_ui
-__GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, unsigned long int));
-
-#define gmp_randclear __gmp_randclear
-__GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_urandomb_ui __gmp_urandomb_ui
-__GMP_DECLSPEC unsigned long gmp_urandomb_ui __GMP_PROTO ((gmp_randstate_t, unsigned long));
-
-#define gmp_urandomm_ui __gmp_urandomm_ui
-__GMP_DECLSPEC unsigned long gmp_urandomm_ui __GMP_PROTO ((gmp_randstate_t, unsigned long));
-
-
-/**************** Formatted output routines.  ****************/
-
-#define gmp_asprintf __gmp_asprintf
-__GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, __gmp_const char *, ...));
-
-#define gmp_fprintf __gmp_fprintf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, __gmp_const char *, ...));
-#endif
-
-#define gmp_obstack_printf __gmp_obstack_printf
-#if defined (_GMP_H_HAVE_OBSTACK)
-__GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, __gmp_const char *, ...));
-#endif
-
-#define gmp_obstack_vprintf __gmp_obstack_vprintf
-#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_printf __gmp_printf
-__GMP_DECLSPEC int gmp_printf __GMP_PROTO ((__gmp_const char *, ...));
-
-#define gmp_snprintf __gmp_snprintf
-__GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, ...));
-
-#define gmp_sprintf __gmp_sprintf
-__GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, __gmp_const char *, ...));
-
-#define gmp_vasprintf __gmp_vasprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vfprintf __gmp_vfprintf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vprintf __gmp_vprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((__gmp_const char *, va_list));
-#endif
-
-#define gmp_vsnprintf __gmp_vsnprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vsprintf __gmp_vsprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, __gmp_const char *, va_list));
-#endif
-
-
-/**************** Formatted input routines.  ****************/
-
-#define gmp_fscanf __gmp_fscanf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, __gmp_const char *, ...));
-#endif
-
-#define gmp_scanf __gmp_scanf
-__GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((__gmp_const char *, ...));
-
-#define gmp_sscanf __gmp_sscanf
-__GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, ...));
-
-#define gmp_vfscanf __gmp_vfscanf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vscanf __gmp_vscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((__gmp_const char *, va_list));
-#endif
-
-#define gmp_vsscanf __gmp_vsscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, va_list));
-#endif
-
-
-/**************** Integer (i.e. Z) routines.  ****************/
-
-#define _mpz_realloc __gmpz_realloc
-#define mpz_realloc __gmpz_realloc
-__GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_abs __gmpz_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)
-__GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-#endif
-
-#define mpz_add __gmpz_add
-__GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_add_ui __gmpz_add_ui
-__GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_addmul __gmpz_addmul
-__GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_addmul_ui __gmpz_addmul_ui
-__GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_and __gmpz_and
-__GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_array_init __gmpz_array_init
-__GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t));
-
-#define mpz_bin_ui __gmpz_bin_ui
-__GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_bin_uiui __gmpz_bin_uiui
-__GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int));
-
-#define mpz_cdiv_q __gmpz_cdiv_q
-__GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp
-__GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_qr __gmpz_cdiv_qr
-__GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_r __gmpz_cdiv_r
-__GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp
-__GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_ui __gmpz_cdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_clear __gmpz_clear
-__GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr));
-
-#define mpz_clears __gmpz_clears
-__GMP_DECLSPEC void mpz_clears __GMP_PROTO ((mpz_ptr, ...));
-
-#define mpz_clrbit __gmpz_clrbit
-__GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_cmp __gmpz_cmp
-__GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmp_d __gmpz_cmp_d
-__GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_si __gmpz_cmp_si
-__GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_ui __gmpz_cmp_ui
-__GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs __gmpz_cmpabs
-__GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_d __gmpz_cmpabs_d
-__GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_ui __gmpz_cmpabs_ui
-__GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_com __gmpz_com
-__GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_combit __gmpz_combit
-__GMP_DECLSPEC void mpz_combit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_congruent_p __gmpz_congruent_p
-__GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p
-__GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_ui_p __gmpz_congruent_ui_p
-__GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divexact __gmpz_divexact
-__GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_divexact_ui __gmpz_divexact_ui
-__GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_divisible_p __gmpz_divisible_p
-__GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_ui_p __gmpz_divisible_ui_p
-__GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p
-__GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_dump __gmpz_dump
-__GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr));
-
-#define mpz_export __gmpz_export
-__GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr));
-
-#define mpz_fac_ui __gmpz_fac_ui
-__GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_fdiv_q __gmpz_fdiv_q
-__GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
-__GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_qr __gmpz_fdiv_qr
-__GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_r __gmpz_fdiv_r
-__GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
-__GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_ui __gmpz_fdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fib_ui __gmpz_fib_ui
-__GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_fib2_ui __gmpz_fib2_ui
-__GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int));
-
-#define mpz_fits_sint_p __gmpz_fits_sint_p
-__GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_slong_p __gmpz_fits_slong_p
-__GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_sshort_p __gmpz_fits_sshort_p
-__GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_uint_p __gmpz_fits_uint_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ulong_p __gmpz_fits_ulong_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ushort_p __gmpz_fits_ushort_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_gcd __gmpz_gcd
-__GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_gcd_ui __gmpz_gcd_ui
-__GMP_DECLSPEC unsigned long int mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_gcdext __gmpz_gcdext
-__GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_get_d __gmpz_get_d
-__GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_d_2exp __gmpz_get_d_2exp
-__GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((signed long int *, mpz_srcptr));
-
-#define mpz_get_si __gmpz_get_si
-__GMP_DECLSPEC /* signed */ long int mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_str __gmpz_get_str
-__GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr));
-
-#define mpz_get_ui __gmpz_get_ui
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)
-__GMP_DECLSPEC unsigned long int mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_getlimbn __gmpz_getlimbn
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_hamdist __gmpz_hamdist
-__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_import __gmpz_import
-__GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, __gmp_const void *));
-
-#define mpz_init __gmpz_init
-__GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr));
-
-#define mpz_init2 __gmpz_init2
-__GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_inits __gmpz_inits
-__GMP_DECLSPEC void mpz_inits __GMP_PROTO ((mpz_ptr, ...));
-
-#define mpz_init_set __gmpz_init_set
-__GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_init_set_d __gmpz_init_set_d
-__GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double));
-
-#define mpz_init_set_si __gmpz_init_set_si
-__GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, signed long int));
-
-#define mpz_init_set_str __gmpz_init_set_str
-__GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int));
-
-#define mpz_init_set_ui __gmpz_init_set_ui
-__GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_inp_raw __gmpz_inp_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *));
-#endif
-
-#define mpz_inp_str __gmpz_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int));
-#endif
-
-#define mpz_invert __gmpz_invert
-__GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_ior __gmpz_ior
-__GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_jacobi __gmpz_jacobi
-__GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker mpz_jacobi  /* alias */
-
-#define mpz_kronecker_si __gmpz_kronecker_si
-__GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker_ui __gmpz_kronecker_ui
-__GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_si_kronecker __gmpz_si_kronecker
-__GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_kronecker __gmpz_ui_kronecker
-__GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((unsigned long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_lcm __gmpz_lcm
-__GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_lcm_ui __gmpz_lcm_ui
-__GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_legendre mpz_jacobi  /* alias */
-
-#define mpz_lucnum_ui __gmpz_lucnum_ui
-__GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_lucnum2_ui __gmpz_lucnum2_ui
-__GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int));
-
-#define mpz_millerrabin __gmpz_millerrabin
-__GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_mod __gmpz_mod
-__GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */
-
-#define mpz_mul __gmpz_mul
-__GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_mul_2exp __gmpz_mul_2exp
-__GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_mul_si __gmpz_mul_si
-__GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, long int));
-
-#define mpz_mul_ui __gmpz_mul_ui
-__GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_neg __gmpz_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)
-__GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-#endif
-
-#define mpz_nextprime __gmpz_nextprime
-__GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_out_raw __gmpz_out_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr));
-#endif
-
-#define mpz_out_str __gmpz_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr));
-#endif
-
-#define mpz_perfect_power_p __gmpz_perfect_power_p
-__GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_perfect_square_p __gmpz_perfect_square_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_popcount __gmpz_popcount
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_pow_ui __gmpz_pow_ui
-__GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_powm __gmpz_powm
-__GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_powm_sec __gmpz_powm_sec
-__GMP_DECLSPEC void mpz_powm_sec __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_powm_ui __gmpz_powm_ui
-__GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr));
-
-#define mpz_probab_prime_p __gmpz_probab_prime_p
-__GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_random __gmpz_random
-__GMP_DECLSPEC void mpz_random __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_random2 __gmpz_random2
-__GMP_DECLSPEC void mpz_random2 __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_realloc2 __gmpz_realloc2
-__GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_remove __gmpz_remove
-__GMP_DECLSPEC unsigned long int mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_root __gmpz_root
-__GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_rootrem __gmpz_rootrem
-__GMP_DECLSPEC void mpz_rootrem __GMP_PROTO ((mpz_ptr,mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_rrandomb __gmpz_rrandomb
-__GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
-
-#define mpz_scan0 __gmpz_scan0
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_scan1 __gmpz_scan1
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_set __gmpz_set
-__GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_set_d __gmpz_set_d
-__GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double));
-
-#define mpz_set_f __gmpz_set_f
-__GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr));
-
-#define mpz_set_q __gmpz_set_q
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)
-__GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-#endif
-
-#define mpz_set_si __gmpz_set_si
-__GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, signed long int));
-
-#define mpz_set_str __gmpz_set_str
-__GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int));
-
-#define mpz_set_ui __gmpz_set_ui
-__GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_setbit __gmpz_setbit
-__GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_size __gmpz_size
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)
-__GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_sizeinbase __gmpz_sizeinbase
-__GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_sqrt __gmpz_sqrt
-__GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_sqrtrem __gmpz_sqrtrem
-__GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr));
-
-#define mpz_sub __gmpz_sub
-__GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_sub_ui __gmpz_sub_ui
-__GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_ui_sub __gmpz_ui_sub
-__GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, unsigned long int, mpz_srcptr));
-
-#define mpz_submul __gmpz_submul
-__GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_submul_ui __gmpz_submul_ui
-__GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_swap __gmpz_swap
-__GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW;
-
-#define mpz_tdiv_ui __gmpz_tdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_tdiv_q __gmpz_tdiv_q
-__GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
-__GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tdiv_qr __gmpz_tdiv_qr
-__GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tdiv_r __gmpz_tdiv_r
-__GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
-__GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tstbit __gmpz_tstbit
-__GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_pow_ui __gmpz_ui_pow_ui
-__GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int));
-
-#define mpz_urandomb __gmpz_urandomb
-__GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
-
-#define mpz_urandomm __gmpz_urandomm
-__GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr));
-
-#define mpz_xor __gmpz_xor
-#define mpz_eor __gmpz_xor
-__GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-
-/**************** Rational (i.e. Q) routines.  ****************/
-
-#define mpq_abs __gmpq_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)
-__GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-#endif
-
-#define mpq_add __gmpq_add
-__GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_canonicalize __gmpq_canonicalize
-__GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr));
-
-#define mpq_clear __gmpq_clear
-__GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr));
-
-#define mpq_clears __gmpq_clears
-__GMP_DECLSPEC void mpq_clears __GMP_PROTO ((mpq_ptr, ...));
-
-#define mpq_cmp __gmpq_cmp
-__GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_si __gmpq_cmp_si
-__GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, long, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_ui __gmpq_cmp_ui
-__GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, unsigned long int, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_div __gmpq_div
-__GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_div_2exp __gmpq_div_2exp
-__GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t));
-
-#define mpq_equal __gmpq_equal
-__GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_num __gmpq_get_num
-__GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-
-#define mpq_get_den __gmpq_get_den
-__GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-
-#define mpq_get_d __gmpq_get_d
-__GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_str __gmpq_get_str
-__GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr));
-
-#define mpq_init __gmpq_init
-__GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr));
-
-#define mpq_inits __gmpq_inits
-__GMP_DECLSPEC void mpq_inits __GMP_PROTO ((mpq_ptr, ...));
-
-#define mpq_inp_str __gmpq_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int));
-#endif
-
-#define mpq_inv __gmpq_inv
-__GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-
-#define mpq_mul __gmpq_mul
-__GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_mul_2exp __gmpq_mul_2exp
-__GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t));
-
-#define mpq_neg __gmpq_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)
-__GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-#endif
-
-#define mpq_out_str __gmpq_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr));
-#endif
-
-#define mpq_set __gmpq_set
-__GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-
-#define mpq_set_d __gmpq_set_d
-__GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double));
-
-#define mpq_set_den __gmpq_set_den
-__GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_set_f __gmpq_set_f
-__GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr));
-
-#define mpq_set_num __gmpq_set_num
-__GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_set_si __gmpq_set_si
-__GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, signed long int, unsigned long int));
-
-#define mpq_set_str __gmpq_set_str
-__GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, __gmp_const char *, int));
-
-#define mpq_set_ui __gmpq_set_ui
-__GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, unsigned long int, unsigned long int));
-
-#define mpq_set_z __gmpq_set_z
-__GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_sub __gmpq_sub
-__GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_swap __gmpq_swap
-__GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW;
-
-
-/**************** Float (i.e. F) routines.  ****************/
-
-#define mpf_abs __gmpf_abs
-__GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_add __gmpf_add
-__GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_add_ui __gmpf_add_ui
-__GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-#define mpf_ceil __gmpf_ceil
-__GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_clear __gmpf_clear
-__GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr));
-
-#define mpf_clears __gmpf_clears
-__GMP_DECLSPEC void mpf_clears __GMP_PROTO ((mpf_ptr, ...));
-
-#define mpf_cmp __gmpf_cmp
-__GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_d __gmpf_cmp_d
-__GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_si __gmpf_cmp_si
-__GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_ui __gmpf_cmp_ui
-__GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_div __gmpf_div
-__GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_div_2exp __gmpf_div_2exp
-__GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t));
-
-#define mpf_div_ui __gmpf_div_ui
-__GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_dump __gmpf_dump
-__GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr));
-
-#define mpf_eq __gmpf_eq
-__GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sint_p __gmpf_fits_sint_p
-__GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_slong_p __gmpf_fits_slong_p
-__GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sshort_p __gmpf_fits_sshort_p
-__GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_uint_p __gmpf_fits_uint_p
-__GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ulong_p __gmpf_fits_ulong_p
-__GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ushort_p __gmpf_fits_ushort_p
-__GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_floor __gmpf_floor
-__GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_get_d __gmpf_get_d
-__GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_d_2exp __gmpf_get_d_2exp
-__GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((signed long int *, mpf_srcptr));
-
-#define mpf_get_default_prec __gmpf_get_default_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_prec __gmpf_get_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_si __gmpf_get_si
-__GMP_DECLSPEC long mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_str __gmpf_get_str
-__GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr));
-
-#define mpf_get_ui __gmpf_get_ui
-__GMP_DECLSPEC unsigned long mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_init __gmpf_init
-__GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr));
-
-#define mpf_init2 __gmpf_init2
-__GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, mp_bitcnt_t));
-
-#define mpf_inits __gmpf_inits
-__GMP_DECLSPEC void mpf_inits __GMP_PROTO ((mpf_ptr, ...));
-
-#define mpf_init_set __gmpf_init_set
-__GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_init_set_d __gmpf_init_set_d
-__GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double));
-
-#define mpf_init_set_si __gmpf_init_set_si
-__GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, signed long int));
-
-#define mpf_init_set_str __gmpf_init_set_str
-__GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int));
-
-#define mpf_init_set_ui __gmpf_init_set_ui
-__GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_inp_str __gmpf_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int));
-#endif
-
-#define mpf_integer_p __gmpf_integer_p
-__GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_mul __gmpf_mul
-__GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_mul_2exp __gmpf_mul_2exp
-__GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t));
-
-#define mpf_mul_ui __gmpf_mul_ui
-__GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_neg __gmpf_neg
-__GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_out_str __gmpf_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr));
-#endif
-
-#define mpf_pow_ui __gmpf_pow_ui
-__GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_random2 __gmpf_random2
-__GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t));
-
-#define mpf_reldiff __gmpf_reldiff
-__GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_set __gmpf_set
-__GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_set_d __gmpf_set_d
-__GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double));
-
-#define mpf_set_default_prec __gmpf_set_default_prec
-__GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((mp_bitcnt_t)) __GMP_NOTHROW;
-
-#define mpf_set_prec __gmpf_set_prec
-__GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, mp_bitcnt_t));
-
-#define mpf_set_prec_raw __gmpf_set_prec_raw
-__GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)) __GMP_NOTHROW;
-
-#define mpf_set_q __gmpf_set_q
-__GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr));
-
-#define mpf_set_si __gmpf_set_si
-__GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, signed long int));
-
-#define mpf_set_str __gmpf_set_str
-__GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int));
-
-#define mpf_set_ui __gmpf_set_ui
-__GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_set_z __gmpf_set_z
-__GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr));
-
-#define mpf_size __gmpf_size
-__GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_sqrt __gmpf_sqrt
-__GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_sqrt_ui __gmpf_sqrt_ui
-__GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_sub __gmpf_sub
-__GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_sub_ui __gmpf_sub_ui
-__GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_swap __gmpf_swap
-__GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW;
-
-#define mpf_trunc __gmpf_trunc
-__GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_ui_div __gmpf_ui_div
-__GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-
-#define mpf_ui_sub __gmpf_ui_sub
-__GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-
-#define mpf_urandomb __gmpf_urandomb
-__GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, mp_bitcnt_t));
-
-
-/************ Low level positive-integer (i.e. N) routines.  ************/
-
-/* This is ugly, but we need to make user calls reach the prefixed function. */
-
-#define mpn_add __MPN(add)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)
-__GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-#endif
-
-#define mpn_add_1 __MPN(add_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)
-__GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW;
-#endif
-
-#define mpn_add_n __MPN(add_n)
-__GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_addmul_1 __MPN(addmul_1)
-__GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_cmp __MPN(cmp)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)
-__GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpn_divexact_by3(dst,src,size) \
-  mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))
-
-#define mpn_divexact_by3c __MPN(divexact_by3c)
-__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_divmod_1(qp,np,nsize,dlimb) \
-  mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)
-
-#define mpn_divrem __MPN(divrem)
-__GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_divrem_1 __MPN(divrem_1)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_divrem_2 __MPN(divrem_2)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr));
-
-#define mpn_gcd __MPN(gcd)
-__GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-
-#define mpn_gcd_1 __MPN(gcd_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_gcdext_1 __MPN(gcdext_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 __GMP_PROTO ((mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t));
-
-#define mpn_gcdext __MPN(gcdext)
-__GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-
-#define mpn_get_str __MPN(get_str)
-__GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t));
-
-#define mpn_hamdist __MPN(hamdist)
-__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_lshift __MPN(lshift)
-__GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-
-#define mpn_mod_1 __MPN(mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_mul __MPN(mul)
-__GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_mul_1 __MPN(mul_1)
-__GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_mul_n __MPN(mul_n)
-__GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_sqr __MPN(sqr)
-__GMP_DECLSPEC void mpn_sqr __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-
-#define mpn_neg __MPN(neg)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)
-__GMP_DECLSPEC mp_limb_t mpn_neg __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#endif
-
-#define mpn_com __MPN(com)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_com)
-__GMP_DECLSPEC void mpn_com __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#endif
-
-#define mpn_perfect_square_p __MPN(perfect_square_p)
-__GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_perfect_power_p __MPN(perfect_power_p)
-__GMP_DECLSPEC int mpn_perfect_power_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_popcount __MPN(popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_pow_1 __MPN(pow_1)
-__GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr));
-
-/* undocumented now, but retained here for upward compatibility */
-#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_random __MPN(random)
-__GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t));
-
-#define mpn_random2 __MPN(random2)
-__GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t));
-
-#define mpn_rshift __MPN(rshift)
-__GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-
-#define mpn_scan0 __MPN(scan0)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_scan1 __MPN(scan1)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_set_str __MPN(set_str)
-__GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int));
-
-#define mpn_sqrtrem __MPN(sqrtrem)
-__GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t));
-
-#define mpn_sub __MPN(sub)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)
-__GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-#endif
-
-#define mpn_sub_1 __MPN(sub_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)
-__GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW;
-#endif
-
-#define mpn_sub_n __MPN(sub_n)
-__GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_submul_1 __MPN(submul_1)
-__GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_tdiv_qr __MPN(tdiv_qr)
-__GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_and_n __MPN(and_n)
-__GMP_DECLSPEC void mpn_and_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_andn_n __MPN(andn_n)
-__GMP_DECLSPEC void mpn_andn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nand_n __MPN(nand_n)
-__GMP_DECLSPEC void mpn_nand_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_ior_n __MPN(ior_n)
-__GMP_DECLSPEC void mpn_ior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_iorn_n __MPN(iorn_n)
-__GMP_DECLSPEC void mpn_iorn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nior_n __MPN(nior_n)
-__GMP_DECLSPEC void mpn_nior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xor_n __MPN(xor_n)
-__GMP_DECLSPEC void mpn_xor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xnor_n __MPN(xnor_n)
-__GMP_DECLSPEC void mpn_xnor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_copyi __MPN(copyi)
-__GMP_DECLSPEC void mpn_copyi __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_copyd __MPN(copyd)
-__GMP_DECLSPEC void mpn_copyd __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_zero __MPN(zero)
-__GMP_DECLSPEC void mpn_zero __GMP_PROTO ((mp_ptr, mp_size_t));
-
-/**************** mpz inlines ****************/
-
-/* The following are provided as inlines where possible, but always exist as
-   library functions too, for binary compatibility.
-
-   Within gmp itself this inlining generally isn't relied on, since it
-   doesn't get done for all compilers, whereas if something is worth
-   inlining then it's worth arranging always.
-
-   There are two styles of inlining here.  When the same bit of code is
-   wanted for the inline as for the library version, then __GMP_FORCE_foo
-   arranges for that code to be emitted and the __GMP_EXTERN_INLINE
-   directive suppressed, eg. mpz_fits_uint_p.  When a different bit of code
-   is wanted for the inline than for the library version, then
-   __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs.  */
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs)
-__GMP_EXTERN_INLINE void
-mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpz_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size);
-}
-#endif
-
-#if GMP_NAIL_BITS == 0
-#define __GMPZ_FITS_UTYPE_P(z,maxval)                                  \
-  mp_size_t  __gmp_n = z->_mp_size;                                    \
-  mp_ptr  __gmp_p = z->_mp_d;                                          \
-  return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval));
-#else
-#define __GMPZ_FITS_UTYPE_P(z,maxval)                                  \
-  mp_size_t  __gmp_n = z->_mp_size;                                    \
-  mp_ptr  __gmp_p = z->_mp_d;                                          \
-  return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)       \
-         || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS)));
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p)
-#if ! defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui)
-#if ! defined (__GMP_FORCE_mpz_get_ui)
-__GMP_EXTERN_INLINE
-#endif
-unsigned long
-mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  mp_ptr __gmp_p = __gmp_z->_mp_d;
-  mp_size_t __gmp_n = __gmp_z->_mp_size;
-  mp_limb_t __gmp_l = __gmp_p[0];
-  /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings
-     about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland
-     C++ 6.0 warnings about condition always true for something like
-     "__GMP_ULONG_MAX < GMP_NUMB_MASK".  */
-#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB)
-  /* limb==long and no nails, or limb==longlong, one limb is enough */
-  return (__gmp_n != 0 ? __gmp_l : 0);
-#else
-  /* limb==long and nails, need two limbs when available */
-  __gmp_n = __GMP_ABS (__gmp_n);
-  if (__gmp_n <= 1)
-    return (__gmp_n != 0 ? __gmp_l : 0);
-  else
-    return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS);
-#endif
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn)
-#if ! defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_result = 0;
-  if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size)))
-    __gmp_result = __gmp_z->_mp_d[__gmp_n];
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg)
-__GMP_EXTERN_INLINE void
-mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpz_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_size = - __gmp_w->_mp_size;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p)
-#if ! defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_perfect_square_p (mpz_srcptr __gmp_a)
-{
-  mp_size_t __gmp_asize;
-  int       __gmp_result;
-
-  __gmp_asize = __gmp_a->_mp_size;
-  __gmp_result = (__gmp_asize >= 0);  /* zero is a square, negatives are not */
-  if (__GMP_LIKELY (__gmp_asize > 0))
-    __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount)
-#if ! defined (__GMP_FORCE_mpz_popcount)
-__GMP_EXTERN_INLINE
-#endif
-mp_bitcnt_t
-mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW
-{
-  mp_size_t      __gmp_usize;
-  mp_bitcnt_t    __gmp_result;
-
-  __gmp_usize = __gmp_u->_mp_size;
-  __gmp_result = (__gmp_usize < 0 ? __GMP_ULONG_MAX : 0);
-  if (__GMP_LIKELY (__gmp_usize > 0))
-    __gmp_result =  mpn_popcount (__gmp_u->_mp_d, __gmp_usize);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q)
-#if ! defined (__GMP_FORCE_mpz_set_q)
-__GMP_EXTERN_INLINE
-#endif
-void
-mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u));
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size)
-#if ! defined (__GMP_FORCE_mpz_size)
-__GMP_EXTERN_INLINE
-#endif
-size_t
-mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  return __GMP_ABS (__gmp_z->_mp_size);
-}
-#endif
-
-
-/**************** mpq inlines ****************/
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs)
-__GMP_EXTERN_INLINE void
-mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpq_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg)
-__GMP_EXTERN_INLINE void
-mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpq_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
-}
-#endif
-
-
-/**************** mpn inlines ****************/
-
-/* The comments with __GMPN_ADD_1 below apply here too.
-
-   The test for FUNCTION returning 0 should predict well.  If it's assumed
-   {yp,ysize} will usually have a random number of bits then the high limb
-   won't be full and a carry out will occur a good deal less than 50% of the
-   time.
-
-   ysize==0 isn't a documented feature, but is used internally in a few
-   places.
-
-   Producing cout last stops it using up a register during the main part of
-   the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))"
-   doesn't seem able to move the true and false legs of the conditional up
-   to the two places cout is generated.  */
-
-#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST)     \
-  do {                                                                  \
-    mp_size_t  __gmp_i;                                                 \
-    mp_limb_t  __gmp_x;                                                 \
-                                                                        \
-    /* ASSERT ((ysize) >= 0); */                                        \
-    /* ASSERT ((xsize) >= (ysize)); */                                  \
-    /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */      \
-    /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */      \
-                                                                        \
-    __gmp_i = (ysize);                                                  \
-    if (__gmp_i != 0)                                                   \
-      {                                                                 \
-        if (FUNCTION (wp, xp, yp, __gmp_i))                             \
-          {                                                             \
-            do                                                          \
-              {                                                         \
-                if (__gmp_i >= (xsize))                                 \
-                  {                                                     \
-                    (cout) = 1;                                         \
-                    goto __gmp_done;                                    \
-                  }                                                     \
-                __gmp_x = (xp)[__gmp_i];                                \
-              }                                                         \
-            while (TEST);                                               \
-          }                                                             \
-      }                                                                 \
-    if ((wp) != (xp))                                                   \
-      __GMPN_COPY_REST (wp, xp, xsize, __gmp_i);                        \
-    (cout) = 0;                                                         \
-  __gmp_done:                                                           \
-    ;                                                                   \
-  } while (0)
-
-#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize)              \
-  __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n,       \
-               (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0))
-#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize)              \
-  __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n,       \
-               (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0))
-
-
-/* The use of __gmp_i indexing is designed to ensure a compile time src==dst
-   remains nice and clear to the compiler, so that __GMPN_COPY_REST can
-   disappear, and the load/add/store gets a chance to become a
-   read-modify-write on CISC CPUs.
-
-   Alternatives:
-
-   Using a pair of pointers instead of indexing would be possible, but gcc
-   isn't able to recognise compile-time src==dst in that case, even when the
-   pointers are incremented more or less together.  Other compilers would
-   very likely have similar difficulty.
-
-   gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or
-   similar to detect a compile-time src==dst.  This works nicely on gcc
-   2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems
-   to be always false, for a pointer p.  But the current code form seems
-   good enough for src==dst anyway.
-
-   gcc on x86 as usual doesn't give particularly good flags handling for the
-   carry/borrow detection.  It's tempting to want some multi instruction asm
-   blocks to help it, and this was tried, but in truth there's only a few
-   instructions to save and any gain is all too easily lost by register
-   juggling setting up for the asm.  */
-
-#if GMP_NAIL_BITS == 0
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)            \
-  do {                                                         \
-    mp_size_t  __gmp_i;                                                \
-    mp_limb_t  __gmp_x, __gmp_r;                                \
-                                                               \
-    /* ASSERT ((n) >= 1); */                                   \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */       \
-                                                               \
-    __gmp_x = (src)[0];                                                \
-    __gmp_r = __gmp_x OP (v);                                   \
-    (dst)[0] = __gmp_r;                                                \
-    if (CB (__gmp_r, __gmp_x, (v)))                             \
-      {                                                                \
-       (cout) = 1;                                             \
-       for (__gmp_i = 1; __gmp_i < (n);)                       \
-         {                                                     \
-           __gmp_x = (src)[__gmp_i];                           \
-           __gmp_r = __gmp_x OP 1;                             \
-           (dst)[__gmp_i] = __gmp_r;                           \
-           ++__gmp_i;                                          \
-           if (!CB (__gmp_r, __gmp_x, 1))                      \
-             {                                                 \
-               if ((src) != (dst))                             \
-                 __GMPN_COPY_REST (dst, src, n, __gmp_i);      \
-               (cout) = 0;                                     \
-               break;                                          \
-             }                                                 \
-         }                                                     \
-      }                                                                \
-    else                                                       \
-      {                                                                \
-       if ((src) != (dst))                                     \
-         __GMPN_COPY_REST (dst, src, n, 1);                    \
-       (cout) = 0;                                             \
-      }                                                                \
-  } while (0)
-#endif
-
-#if GMP_NAIL_BITS >= 1
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)            \
-  do {                                                         \
-    mp_size_t  __gmp_i;                                                \
-    mp_limb_t  __gmp_x, __gmp_r;                               \
-                                                               \
-    /* ASSERT ((n) >= 1); */                                   \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */       \
-                                                               \
-    __gmp_x = (src)[0];                                                \
-    __gmp_r = __gmp_x OP (v);                                  \
-    (dst)[0] = __gmp_r & GMP_NUMB_MASK;                                \
-    if (__gmp_r >> GMP_NUMB_BITS != 0)                         \
-      {                                                                \
-       (cout) = 1;                                             \
-       for (__gmp_i = 1; __gmp_i < (n);)                       \
-         {                                                     \
-           __gmp_x = (src)[__gmp_i];                           \
-           __gmp_r = __gmp_x OP 1;                             \
-           (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK;           \
-           ++__gmp_i;                                          \
-           if (__gmp_r >> GMP_NUMB_BITS == 0)                  \
-             {                                                 \
-               if ((src) != (dst))                             \
-                 __GMPN_COPY_REST (dst, src, n, __gmp_i);      \
-               (cout) = 0;                                     \
-               break;                                          \
-             }                                                 \
-         }                                                     \
-      }                                                                \
-    else                                                       \
-      {                                                                \
-       if ((src) != (dst))                                     \
-         __GMPN_COPY_REST (dst, src, n, 1);                    \
-       (cout) = 0;                                             \
-      }                                                                \
-  } while (0)
-#endif
-
-#define __GMPN_ADDCB(r,x,y) ((r) < (y))
-#define __GMPN_SUBCB(r,x,y) ((x) < (y))
-
-#define __GMPN_ADD_1(cout, dst, src, n, v)          \
-  __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB)
-#define __GMPN_SUB_1(cout, dst, src, n, v)          \
-  __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB)
-
-
-/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or
-   negative.  size==0 is allowed.  On random data usually only one limb will
-   need to be examined to get a result, so it's worth having it inline.  */
-#define __GMPN_CMP(result, xp, yp, size)                                \
-  do {                                                                  \
-    mp_size_t  __gmp_i;                                                 \
-    mp_limb_t  __gmp_x, __gmp_y;                                        \
-                                                                        \
-    /* ASSERT ((size) >= 0); */                                         \
-                                                                        \
-    (result) = 0;                                                       \
-    __gmp_i = (size);                                                   \
-    while (--__gmp_i >= 0)                                              \
-      {                                                                 \
-        __gmp_x = (xp)[__gmp_i];                                        \
-        __gmp_y = (yp)[__gmp_i];                                        \
-        if (__gmp_x != __gmp_y)                                         \
-          {                                                             \
-            /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */   \
-            (result) = (__gmp_x > __gmp_y ? 1 : -1);                    \
-            break;                                                      \
-          }                                                             \
-      }                                                                 \
-  } while (0)
-
-
-#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start)                 \
-  do {                                                          \
-    /* ASSERT ((start) >= 0); */                                \
-    /* ASSERT ((start) <= (size)); */                           \
-    __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \
-  } while (0)
-#endif
-
-/* Copy {src,size} to {dst,size}, starting at "start".  This is designed to
-   keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1,
-   __GMPN_ADD, etc.  */
-#if ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start)                 \
-  do {                                                          \
-    mp_size_t __gmp_j;                                          \
-    /* ASSERT ((size) >= 0); */                                 \
-    /* ASSERT ((start) >= 0); */                                \
-    /* ASSERT ((start) <= (size)); */                           \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */     \
-    __GMP_CRAY_Pragma ("_CRI ivdep");                           \
-    for (__gmp_j = (start); __gmp_j < (size); __gmp_j++)        \
-      (dst)[__gmp_j] = (src)[__gmp_j];                          \
-  } while (0)
-#endif
-
-/* Enhancement: Use some of the smarter code from gmp-impl.h.  Maybe use
-   mpn_copyi if there's a native version, and if we don't mind demanding
-   binary compatibility for it (on targets which use it).  */
-
-#if ! defined (__GMPN_COPY)
-#define __GMPN_COPY(dst, src, size)   __GMPN_COPY_REST (dst, src, size, 0)
-#endif
-
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add)
-#if ! defined (__GMP_FORCE_mpn_add)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1)
-#if ! defined (__GMP_FORCE_mpn_add_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp)
-#if ! defined (__GMP_FORCE_mpn_cmp)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW
-{
-  int __gmp_result;
-  __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub)
-#if ! defined (__GMP_FORCE_mpn_sub)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1)
-#if ! defined (__GMP_FORCE_mpn_sub_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg)
-#if ! defined (__GMP_FORCE_mpn_neg)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
-{
-  mp_limb_t __gmp_ul, __gmp_cy;
-  __gmp_cy = 0;
-  do {
-      __gmp_ul = *__gmp_up++;
-      *__gmp_rp++ = -__gmp_ul - __gmp_cy;
-      __gmp_cy |= __gmp_ul != 0;
-  } while (--__gmp_n != 0);
-  return __gmp_cy;
-}
-#endif
-
-#if defined (__cplusplus)
-}
-#endif
-
-
-/* Allow faster testing for negative, zero, and positive.  */
-#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)
-#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)
-#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)
-
-/* When using GCC, optimize certain common comparisons.  */
-#if defined (__GNUC__) && __GNUC__ >= 2
-#define mpz_cmp_ui(Z,UI) \
-  (__builtin_constant_p (UI) && (UI) == 0                              \
-   ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))
-#define mpz_cmp_si(Z,SI) \
-  (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z)                        \
-   : __builtin_constant_p (SI) && (SI) > 0                             \
-    ? _mpz_cmp_ui (Z, __GMP_CAST (unsigned long int, SI))              \
-   : _mpz_cmp_si (Z,SI))
-#define mpq_cmp_ui(Q,NUI,DUI) \
-  (__builtin_constant_p (NUI) && (NUI) == 0                            \
-   ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI))
-#define mpq_cmp_si(q,n,d)                       \
-  (__builtin_constant_p ((n) >= 0) && (n) >= 0  \
-   ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \
-   : _mpq_cmp_si (q, n, d))
-#else
-#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI)
-#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI)
-#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI)
-#define mpq_cmp_si(q,n,d)  _mpq_cmp_si(q,n,d)
-#endif
-
-
-/* Using "&" rather than "&&" means these can come out branch-free.  Every
-   mpz_t has at least one limb allocated, so fetching the low limb is always
-   allowed.  */
-#define mpz_odd_p(z)   (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0]))
-#define mpz_even_p(z)  (! mpz_odd_p (z))
-
-
-/**************** C++ routines ****************/
-
-#ifdef __cplusplus
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);
-#endif
-
-
-/* Source-level compatibility with GMP 2 and earlier. */
-#define mpn_divmod(qp,np,nsize,dp,dsize) \
-  mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize)
-
-/* Source-level compatibility with GMP 1.  */
-#define mpz_mdiv       mpz_fdiv_q
-#define mpz_mdivmod    mpz_fdiv_qr
-#define mpz_mmod       mpz_fdiv_r
-#define mpz_mdiv_ui    mpz_fdiv_q_ui
-#define mpz_mdivmod_ui(q,r,n,d) \
-  (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))
-#define mpz_mmod_ui(r,n,d) \
-  (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))
-
-/* Useful synonyms, but not quite compatible with GMP 1.  */
-#define mpz_div                mpz_fdiv_q
-#define mpz_divmod     mpz_fdiv_qr
-#define mpz_div_ui     mpz_fdiv_q_ui
-#define mpz_divmod_ui  mpz_fdiv_qr_ui
-#define mpz_div_2exp   mpz_fdiv_q_2exp
-#define mpz_mod_2exp   mpz_fdiv_r_2exp
-
-enum
-{
-  GMP_ERROR_NONE = 0,
-  GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
-  GMP_ERROR_DIVISION_BY_ZERO = 2,
-  GMP_ERROR_SQRT_OF_NEGATIVE = 4,
-  GMP_ERROR_INVALID_ARGUMENT = 8
-};
-
-/* Define CC and CFLAGS which were used to build this version of GMP */
-#define __GMP_CC "gcc -std=gnu99"
-#define __GMP_CFLAGS "-m32 -O2 -pedantic -fomit-frame-pointer -mtune=pentiumpro -march=pentiumpro"
-
-/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */
-#define __GNU_MP_VERSION 5
-#define __GNU_MP_VERSION_MINOR 0
-#define __GNU_MP_VERSION_PATCHLEVEL 1
-#define __GMP_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)
-
-#define __GMP_H__
-#endif /* __GMP_H__ */
diff --git a/misc/builddeps/linux32/gmp/lib/libgmp.a b/misc/builddeps/linux32/gmp/lib/libgmp.a
deleted file mode 100644 (file)
index e61da30..0000000
Binary files a/misc/builddeps/linux32/gmp/lib/libgmp.a and /dev/null differ
diff --git a/misc/builddeps/linux32/gmp/lib/libgmp.la b/misc/builddeps/linux32/gmp/lib/libgmp.la
deleted file mode 100755 (executable)
index b612477..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libgmp.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libgmp.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libgmp.
-current=10
-age=0
-revision=1
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/tmp/gg/lib'
diff --git a/misc/builddeps/linux32/gmp/share/info/gmp.info b/misc/builddeps/linux32/gmp/share/info/gmp.info
deleted file mode 100644 (file)
index d65ab79..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-Indirect:
-gmp.info-1: 981
-gmp.info-2: 300864
-\1f
-Tag Table:
-(Indirect)
-Node: Top\7f981
-Node: Copying\7f3211
-Node: Introduction to GMP\7f5062
-Node: Installing GMP\7f7773
-Node: Build Options\7f8505
-Node: ABI and ISA\7f24573
-Node: Notes for Package Builds\7f34251
-Node: Notes for Particular Systems\7f37338
-Node: Known Build Problems\7f43895
-Node: Performance optimization\7f47429
-Node: GMP Basics\7f48563
-Node: Headers and Libraries\7f49211
-Node: Nomenclature and Types\7f50635
-Node: Function Classes\7f52632
-Node: Variable Conventions\7f54325
-Node: Parameter Conventions\7f55934
-Node: Memory Management\7f57990
-Node: Reentrancy\7f59118
-Node: Useful Macros and Constants\7f60991
-Node: Compatibility with older versions\7f61989
-Node: Demonstration Programs\7f62950
-Node: Efficiency\7f64815
-Node: Debugging\7f72439
-Node: Profiling\7f78997
-Node: Autoconf\7f82988
-Node: Emacs\7f84767
-Node: Reporting Bugs\7f85373
-Node: Integer Functions\7f87916
-Node: Initializing Integers\7f88692
-Node: Assigning Integers\7f90839
-Node: Simultaneous Integer Init & Assign\7f92426
-Node: Converting Integers\7f94051
-Node: Integer Arithmetic\7f96973
-Node: Integer Division\7f98559
-Node: Integer Exponentiation\7f104869
-Node: Integer Roots\7f106309
-Node: Number Theoretic Functions\7f107983
-Node: Integer Comparisons\7f114126
-Node: Integer Logic and Bit Fiddling\7f115504
-Node: I/O of Integers\7f118051
-Node: Integer Random Numbers\7f120935
-Node: Integer Import and Export\7f123546
-Node: Miscellaneous Integer Functions\7f127556
-Node: Integer Special Functions\7f129416
-Node: Rational Number Functions\7f132503
-Node: Initializing Rationals\7f133696
-Node: Rational Conversions\7f136157
-Node: Rational Arithmetic\7f137888
-Node: Comparing Rationals\7f139192
-Node: Applying Integer Functions\7f140559
-Node: I/O of Rationals\7f142042
-Node: Floating-point Functions\7f143902
-Node: Initializing Floats\7f146787
-Node: Assigning Floats\7f150874
-Node: Simultaneous Float Init & Assign\7f153441
-Node: Converting Floats\7f154969
-Node: Float Arithmetic\7f158217
-Node: Float Comparison\7f160230
-Node: I/O of Floats\7f161811
-Node: Miscellaneous Float Functions\7f164409
-Node: Low-level Functions\7f166303
-Node: Random Number Functions\7f190437
-Node: Random State Initialization\7f191505
-Node: Random State Seeding\7f194363
-Node: Random State Miscellaneous\7f195752
-Node: Formatted Output\7f196393
-Node: Formatted Output Strings\7f196638
-Node: Formatted Output Functions\7f201852
-Node: C++ Formatted Output\7f205927
-Node: Formatted Input\7f208609
-Node: Formatted Input Strings\7f208845
-Node: Formatted Input Functions\7f213497
-Node: C++ Formatted Input\7f216466
-Node: C++ Class Interface\7f218369
-Node: C++ Interface General\7f219370
-Node: C++ Interface Integers\7f222440
-Node: C++ Interface Rationals\7f225871
-Node: C++ Interface Floats\7f229548
-Node: C++ Interface Random Numbers\7f234830
-Node: C++ Interface Limitations\7f237236
-Node: BSD Compatible Functions\7f240056
-Node: Custom Allocation\7f244767
-Node: Language Bindings\7f249085
-Node: Algorithms\7f253038
-Node: Multiplication Algorithms\7f253738
-Node: Basecase Multiplication\7f254710
-Node: Karatsuba Multiplication\7f256618
-Node: Toom 3-Way Multiplication\7f260243
-Node: Toom 4-Way Multiplication\7f266657
-Node: FFT Multiplication\7f268029
-Node: Other Multiplication\7f273365
-Node: Unbalanced Multiplication\7f275839
-Node: Division Algorithms\7f276627
-Node: Single Limb Division\7f277006
-Node: Basecase Division\7f279897
-Node: Divide and Conquer Division\7f281100
-Node: Block-Wise Barrett Division\7f283169
-Node: Exact Division\7f283821
-Node: Exact Remainder\7f286986
-Node: Small Quotient Division\7f289213
-Node: Greatest Common Divisor Algorithms\7f290811
-Node: Binary GCD\7f291108
-Node: Lehmer's Algorithm\7f293957
-Node: Subquadratic GCD\7f296177
-Node: Extended GCD\7f298636
-Node: Jacobi Symbol\7f299948
-Node: Powering Algorithms\7f300864
-Node: Normal Powering Algorithm\7f301127
-Node: Modular Powering Algorithm\7f301655
-Node: Root Extraction Algorithms\7f302435
-Node: Square Root Algorithm\7f302750
-Node: Nth Root Algorithm\7f304891
-Node: Perfect Square Algorithm\7f305676
-Node: Perfect Power Algorithm\7f307762
-Node: Radix Conversion Algorithms\7f308383
-Node: Binary to Radix\7f308759
-Node: Radix to Binary\7f312688
-Node: Other Algorithms\7f314776
-Node: Prime Testing Algorithm\7f315128
-Node: Factorial Algorithm\7f316312
-Node: Binomial Coefficients Algorithm\7f317715
-Node: Fibonacci Numbers Algorithm\7f318609
-Node: Lucas Numbers Algorithm\7f321083
-Node: Random Number Algorithms\7f321804
-Node: Assembly Coding\7f323925
-Node: Assembly Code Organisation\7f324885
-Node: Assembly Basics\7f325852
-Node: Assembly Carry Propagation\7f327002
-Node: Assembly Cache Handling\7f328833
-Node: Assembly Functional Units\7f330994
-Node: Assembly Floating Point\7f332607
-Node: Assembly SIMD Instructions\7f336385
-Node: Assembly Software Pipelining\7f337367
-Node: Assembly Loop Unrolling\7f338429
-Node: Assembly Writing Guide\7f340644
-Node: Internals\7f343409
-Node: Integer Internals\7f343921
-Node: Rational Internals\7f346177
-Node: Float Internals\7f347415
-Node: Raw Output Internals\7f354829
-Node: C++ Interface Internals\7f356023
-Node: Contributors\7f359309
-Node: References\7f364267
-Node: GNU Free Documentation License\7f369925
-Node: Concept Index\7f395094
-Node: Function Index\7f441276
-\1f
-End Tag Table
diff --git a/misc/builddeps/linux32/gmp/share/info/gmp.info-1 b/misc/builddeps/linux32/gmp/share/info/gmp.info-1
deleted file mode 100644 (file)
index d136059..0000000
+++ /dev/null
@@ -1,7084 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-File: gmp.info,  Node: Top,  Next: Copying,  Prev: (dir),  Up: (dir)
-
-GNU MP
-******
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-
-* Menu:
-
-* Copying::                    GMP Copying Conditions (LGPL).
-* Introduction to GMP::        Brief introduction to GNU MP.
-* Installing GMP::             How to configure and compile the GMP library.
-* GMP Basics::                 What every GMP user should know.
-* Reporting Bugs::             How to usefully report bugs.
-* Integer Functions::          Functions for arithmetic on signed integers.
-* Rational Number Functions::  Functions for arithmetic on rational numbers.
-* Floating-point Functions::   Functions for arithmetic on floats.
-* Low-level Functions::        Fast functions for natural numbers.
-* Random Number Functions::    Functions for generating random numbers.
-* Formatted Output::           `printf' style output.
-* Formatted Input::            `scanf' style input.
-* C++ Class Interface::        Class wrappers around GMP types.
-* BSD Compatible Functions::   All functions found in BSD MP.
-* Custom Allocation::          How to customize the internal allocation.
-* Language Bindings::          Using GMP from other languages.
-* Algorithms::                 What happens behind the scenes.
-* Internals::                  How values are represented behind the scenes.
-
-* Contributors::               Who brings you this library?
-* References::                 Some useful papers and books to read.
-* GNU Free Documentation License::
-* Concept Index::
-* Function Index::
-
-\1f
-File: gmp.info,  Node: Copying,  Next: Introduction to GMP,  Prev: Top,  Up: Top
-
-GNU MP Copying Conditions
-*************************
-
-This library is "free"; this means that everyone is free to use it and
-free to redistribute it on a free basis.  The library is not in the
-public domain; it is copyrighted and there are restrictions on its
-distribution, but these restrictions are designed to permit everything
-that a good cooperating citizen would want to do.  What is not allowed
-is to try to prevent others from further sharing any version of this
-library that they might get from you.
-
-   Specifically, we want to make sure that you have the right to give
-away copies of the library, that you receive source code or else can
-get it if you want it, that you can change this library or use pieces
-of it in new free programs, and that you know you can do these things.
-
-   To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights.  For example, if you distribute
-copies of the GNU MP library, you must give the recipients all the
-rights that you have.  You must make sure that they, too, receive or
-can get the source code.  And you must tell them their rights.
-
-   Also, for our own protection, we must make certain that everyone
-finds out that there is no warranty for the GNU MP library.  If it is
-modified by someone else and passed on, we want their recipients to
-know that what they have is not what we distributed, so that any
-problems introduced by others will not reflect on our reputation.
-
-   The precise conditions of the license for the GNU MP library are
-found in the Lesser General Public License version 3 that accompanies
-the source code, see `COPYING.LIB'.  Certain demonstration programs are
-provided under the terms of the plain General Public License version 3,
-see `COPYING'.
-
-\1f
-File: gmp.info,  Node: Introduction to GMP,  Next: Installing GMP,  Prev: Copying,  Up: Top
-
-1 Introduction to GNU MP
-************************
-
-GNU MP is a portable library written in C for arbitrary precision
-arithmetic on integers, rational numbers, and floating-point numbers.
-It aims to provide the fastest possible arithmetic for all applications
-that need higher precision than is directly supported by the basic C
-types.
-
-   Many applications use just a few hundred bits of precision; but some
-applications may need thousands or even millions of bits.  GMP is
-designed to give good performance for both, by choosing algorithms
-based on the sizes of the operands, and by carefully keeping the
-overhead at a minimum.
-
-   The speed of GMP is achieved by using fullwords as the basic
-arithmetic type, by using sophisticated algorithms, by including
-carefully optimized assembly code for the most common inner loops for
-many different CPUs, and by a general emphasis on speed (as opposed to
-simplicity or elegance).
-
-   There is assembly code for these CPUs: ARM, DEC Alpha 21064, 21164,
-and 21264, AMD 29000, AMD K6, K6-2, Athlon, and Athlon64, Hitachi
-SuperH and SH-2, HPPA 1.0, 1.1 and 2.0, Intel Pentium, Pentium
-Pro/II/III, Pentium 4, generic x86, Intel IA-64, i960, Motorola
-MC68000, MC68020, MC88100, and MC88110, Motorola/IBM PowerPC 32 and 64,
-National NS32000, IBM POWER, MIPS R3000, R4000, SPARCv7, SuperSPARC,
-generic SPARCv8, UltraSPARC, DEC VAX, and Zilog Z8000.  Some
-optimizations also for Cray vector systems, Clipper, IBM ROMP (RT), and
-Pyramid AP/XP.
-
-For up-to-date information on GMP, please see the GMP web pages at
-
-     `http://gmplib.org/'
-
-The latest version of the library is available at
-
-     `ftp://ftp.gnu.org/gnu/gmp/'
-
-   Many sites around the world mirror `ftp.gnu.org', please use a mirror
-near you, see `http://www.gnu.org/order/ftp.html' for a full list.
-
-   There are three public mailing lists of interest.  One for release
-announcements, one for general questions and discussions about usage of
-the GMP library and one for bug reports.  For more information, see
-
-     `http://gmplib.org/mailman/listinfo/'.
-
-   The proper place for bug reports is <gmp-bugs@gmplib.org>.  See
-*Note Reporting Bugs:: for information about reporting bugs.
-
-
-1.1 How to use this Manual
-==========================
-
-Everyone should read *Note GMP Basics::.  If you need to install the
-library yourself, then read *Note Installing GMP::.  If you have a
-system with multiple ABIs, then read *Note ABI and ISA::, for the
-compiler options that must be used on applications.
-
-   The rest of the manual can be used for later reference, although it
-is probably a good idea to glance through it.
-
-\1f
-File: gmp.info,  Node: Installing GMP,  Next: GMP Basics,  Prev: Introduction to GMP,  Up: Top
-
-2 Installing GMP
-****************
-
-GMP has an autoconf/automake/libtool based configuration system.  On a
-Unix-like system a basic build can be done with
-
-     ./configure
-     make
-
-Some self-tests can be run with
-
-     make check
-
-And you can install (under `/usr/local' by default) with
-
-     make install
-
-   If you experience problems, please report them to
-<gmp-bugs@gmplib.org>.  See *Note Reporting Bugs::, for information on
-what to include in useful bug reports.
-
-* Menu:
-
-* Build Options::
-* ABI and ISA::
-* Notes for Package Builds::
-* Notes for Particular Systems::
-* Known Build Problems::
-* Performance optimization::
-
-\1f
-File: gmp.info,  Node: Build Options,  Next: ABI and ISA,  Prev: Installing GMP,  Up: Installing GMP
-
-2.1 Build Options
-=================
-
-All the usual autoconf configure options are available, run `./configure
---help' for a summary.  The file `INSTALL.autoconf' has some generic
-installation information too.
-
-Tools
-     `configure' requires various Unix-like tools.  See *Note Notes for
-     Particular Systems::, for some options on non-Unix systems.
-
-     It might be possible to build without the help of `configure',
-     certainly all the code is there, but unfortunately you'll be on
-     your own.
-
-Build Directory
-     To compile in a separate build directory, `cd' to that directory,
-     and prefix the configure command with the path to the GMP source
-     directory.  For example
-
-          cd /my/build/dir
-          /my/sources/gmp-5.0.1/configure
-
-     Not all `make' programs have the necessary features (`VPATH') to
-     support this.  In particular, SunOS and Slowaris `make' have bugs
-     that make them unable to build in a separate directory.  Use GNU
-     `make' instead.
-
-`--prefix' and `--exec-prefix'
-     The `--prefix' option can be used in the normal way to direct GMP
-     to install under a particular tree.  The default is `/usr/local'.
-
-     `--exec-prefix' can be used to direct architecture-dependent files
-     like `libgmp.a' to a different location.  This can be used to share
-     architecture-independent parts like the documentation, but
-     separate the dependent parts.  Note however that `gmp.h' and
-     `mp.h' are architecture-dependent since they encode certain
-     aspects of `libgmp', so it will be necessary to ensure both
-     `$prefix/include' and `$exec_prefix/include' are available to the
-     compiler.
-
-`--disable-shared', `--disable-static'
-     By default both shared and static libraries are built (where
-     possible), but one or other can be disabled.  Shared libraries
-     result in smaller executables and permit code sharing between
-     separate running processes, but on some CPUs are slightly slower,
-     having a small cost on each function call.
-
-Native Compilation, `--build=CPU-VENDOR-OS'
-     For normal native compilation, the system can be specified with
-     `--build'.  By default `./configure' uses the output from running
-     `./config.guess'.  On some systems `./config.guess' can determine
-     the exact CPU type, on others it will be necessary to give it
-     explicitly.  For example,
-
-          ./configure --build=ultrasparc-sun-solaris2.7
-
-     In all cases the `OS' part is important, since it controls how
-     libtool generates shared libraries.  Running `./config.guess' is
-     the simplest way to see what it should be, if you don't know
-     already.
-
-Cross Compilation, `--host=CPU-VENDOR-OS'
-     When cross-compiling, the system used for compiling is given by
-     `--build' and the system where the library will run is given by
-     `--host'.  For example when using a FreeBSD Athlon system to build
-     GNU/Linux m68k binaries,
-
-          ./configure --build=athlon-pc-freebsd3.5 --host=m68k-mac-linux-gnu
-
-     Compiler tools are sought first with the host system type as a
-     prefix.  For example `m68k-mac-linux-gnu-ranlib' is tried, then
-     plain `ranlib'.  This makes it possible for a set of
-     cross-compiling tools to co-exist with native tools.  The prefix
-     is the argument to `--host', and this can be an alias, such as
-     `m68k-linux'.  But note that tools don't have to be setup this
-     way, it's enough to just have a `PATH' with a suitable
-     cross-compiling `cc' etc.
-
-     Compiling for a different CPU in the same family as the build
-     system is a form of cross-compilation, though very possibly this
-     would merely be special options on a native compiler.  In any case
-     `./configure' avoids depending on being able to run code on the
-     build system, which is important when creating binaries for a
-     newer CPU since they very possibly won't run on the build system.
-
-     In all cases the compiler must be able to produce an executable
-     (of whatever format) from a standard C `main'.  Although only
-     object files will go to make up `libgmp', `./configure' uses
-     linking tests for various purposes, such as determining what
-     functions are available on the host system.
-
-     Currently a warning is given unless an explicit `--build' is used
-     when cross-compiling, because it may not be possible to correctly
-     guess the build system type if the `PATH' has only a
-     cross-compiling `cc'.
-
-     Note that the `--target' option is not appropriate for GMP.  It's
-     for use when building compiler tools, with `--host' being where
-     they will run, and `--target' what they'll produce code for.
-     Ordinary programs or libraries like GMP are only interested in the
-     `--host' part, being where they'll run.  (Some past versions of
-     GMP used `--target' incorrectly.)
-
-CPU types
-     In general, if you want a library that runs as fast as possible,
-     you should configure GMP for the exact CPU type your system uses.
-     However, this may mean the binaries won't run on older members of
-     the family, and might run slower on other members, older or newer.
-     The best idea is always to build GMP for the exact machine type
-     you intend to run it on.
-
-     The following CPUs have specific support.  See `configure.in' for
-     details of what code and compiler options they select.
-
-        * Alpha: alpha, alphaev5, alphaev56, alphapca56, alphapca57,
-          alphaev6, alphaev67, alphaev68 alphaev7
-
-        * Cray: c90, j90, t90, sv1
-
-        * HPPA: hppa1.0, hppa1.1, hppa2.0, hppa2.0n, hppa2.0w, hppa64
-
-        * IA-64: ia64, itanium, itanium2
-
-        * MIPS: mips, mips3, mips64
-
-        * Motorola: m68k, m68000, m68010, m68020, m68030, m68040,
-          m68060, m68302, m68360, m88k, m88110
-
-        * POWER: power, power1, power2, power2sc
-
-        * PowerPC: powerpc, powerpc64, powerpc401, powerpc403,
-          powerpc405, powerpc505, powerpc601, powerpc602, powerpc603,
-          powerpc603e, powerpc604, powerpc604e, powerpc620, powerpc630,
-          powerpc740, powerpc7400, powerpc7450, powerpc750, powerpc801,
-          powerpc821, powerpc823, powerpc860, powerpc970
-
-        * SPARC: sparc, sparcv8, microsparc, supersparc, sparcv9,
-          ultrasparc, ultrasparc2, ultrasparc2i, ultrasparc3, sparc64
-
-        * x86 family: i386, i486, i586, pentium, pentiummmx, pentiumpro,
-          pentium2, pentium3, pentium4, k6, k62, k63, athlon, amd64,
-          viac3, viac32
-
-        * Other: a29k, arm, clipper, i960, ns32k, pyramid, sh, sh2, vax,
-          z8k
-
-     CPUs not listed will use generic C code.
-
-Generic C Build
-     If some of the assembly code causes problems, or if otherwise
-     desired, the generic C code can be selected with CPU `none'.  For
-     example,
-
-          ./configure --host=none-unknown-freebsd3.5
-
-     Note that this will run quite slowly, but it should be portable
-     and should at least make it possible to get something running if
-     all else fails.
-
-Fat binary, `--enable-fat'
-     Using `--enable-fat' selects a "fat binary" build on x86, where
-     optimized low level subroutines are chosen at runtime according to
-     the CPU detected.  This means more code, but gives good
-     performance on all x86 chips.  (This option might become available
-     for more architectures in the future.)
-
-`ABI'
-     On some systems GMP supports multiple ABIs (application binary
-     interfaces), meaning data type sizes and calling conventions.  By
-     default GMP chooses the best ABI available, but a particular ABI
-     can be selected.  For example
-
-          ./configure --host=mips64-sgi-irix6 ABI=n32
-
-     See *Note ABI and ISA::, for the available choices on relevant
-     CPUs, and what applications need to do.
-
-`CC', `CFLAGS'
-     By default the C compiler used is chosen from among some likely
-     candidates, with `gcc' normally preferred if it's present.  The
-     usual `CC=whatever' can be passed to `./configure' to choose
-     something different.
-
-     For various systems, default compiler flags are set based on the
-     CPU and compiler.  The usual `CFLAGS="-whatever"' can be passed to
-     `./configure' to use something different or to set good flags for
-     systems GMP doesn't otherwise know.
-
-     The `CC' and `CFLAGS' used are printed during `./configure', and
-     can be found in each generated `Makefile'.  This is the easiest way
-     to check the defaults when considering changing or adding
-     something.
-
-     Note that when `CC' and `CFLAGS' are specified on a system
-     supporting multiple ABIs it's important to give an explicit
-     `ABI=whatever', since GMP can't determine the ABI just from the
-     flags and won't be able to select the correct assembly code.
-
-     If just `CC' is selected then normal default `CFLAGS' for that
-     compiler will be used (if GMP recognises it).  For example
-     `CC=gcc' can be used to force the use of GCC, with default flags
-     (and default ABI).
-
-`CPPFLAGS'
-     Any flags like `-D' defines or `-I' includes required by the
-     preprocessor should be set in `CPPFLAGS' rather than `CFLAGS'.
-     Compiling is done with both `CPPFLAGS' and `CFLAGS', but
-     preprocessing uses just `CPPFLAGS'.  This distinction is because
-     most preprocessors won't accept all the flags the compiler does.
-     Preprocessing is done separately in some configure tests, and in
-     the `ansi2knr' support for K&R compilers.
-
-`CC_FOR_BUILD'
-     Some build-time programs are compiled and run to generate
-     host-specific data tables.  `CC_FOR_BUILD' is the compiler used
-     for this.  It doesn't need to be in any particular ABI or mode, it
-     merely needs to generate executables that can run.  The default is
-     to try the selected `CC' and some likely candidates such as `cc'
-     and `gcc', looking for something that works.
-
-     No flags are used with `CC_FOR_BUILD' because a simple invocation
-     like `cc foo.c' should be enough.  If some particular options are
-     required they can be included as for instance `CC_FOR_BUILD="cc
-     -whatever"'.
-
-C++ Support, `--enable-cxx'
-     C++ support in GMP can be enabled with `--enable-cxx', in which
-     case a C++ compiler will be required.  As a convenience
-     `--enable-cxx=detect' can be used to enable C++ support only if a
-     compiler can be found.  The C++ support consists of a library
-     `libgmpxx.la' and header file `gmpxx.h' (*note Headers and
-     Libraries::).
-
-     A separate `libgmpxx.la' has been adopted rather than having C++
-     objects within `libgmp.la' in order to ensure dynamic linked C
-     programs aren't bloated by a dependency on the C++ standard
-     library, and to avoid any chance that the C++ compiler could be
-     required when linking plain C programs.
-
-     `libgmpxx.la' will use certain internals from `libgmp.la' and can
-     only be expected to work with `libgmp.la' from the same GMP
-     version.  Future changes to the relevant internals will be
-     accompanied by renaming, so a mismatch will cause unresolved
-     symbols rather than perhaps mysterious misbehaviour.
-
-     In general `libgmpxx.la' will be usable only with the C++ compiler
-     that built it, since name mangling and runtime support are usually
-     incompatible between different compilers.
-
-`CXX', `CXXFLAGS'
-     When C++ support is enabled, the C++ compiler and its flags can be
-     set with variables `CXX' and `CXXFLAGS' in the usual way.  The
-     default for `CXX' is the first compiler that works from a list of
-     likely candidates, with `g++' normally preferred when available.
-     The default for `CXXFLAGS' is to try `CFLAGS', `CFLAGS' without
-     `-g', then for `g++' either `-g -O2' or `-O2', or for other
-     compilers `-g' or nothing.  Trying `CFLAGS' this way is convenient
-     when using `gcc' and `g++' together, since the flags for `gcc' will
-     usually suit `g++'.
-
-     It's important that the C and C++ compilers match, meaning their
-     startup and runtime support routines are compatible and that they
-     generate code in the same ABI (if there's a choice of ABIs on the
-     system).  `./configure' isn't currently able to check these things
-     very well itself, so for that reason `--disable-cxx' is the
-     default, to avoid a build failure due to a compiler mismatch.
-     Perhaps this will change in the future.
-
-     Incidentally, it's normally not good enough to set `CXX' to the
-     same as `CC'.  Although `gcc' for instance recognises `foo.cc' as
-     C++ code, only `g++' will invoke the linker the right way when
-     building an executable or shared library from C++ object files.
-
-Temporary Memory, `--enable-alloca=<choice>'
-     GMP allocates temporary workspace using one of the following three
-     methods, which can be selected with for instance
-     `--enable-alloca=malloc-reentrant'.
-
-        * `alloca' - C library or compiler builtin.
-
-        * `malloc-reentrant' - the heap, in a re-entrant fashion.
-
-        * `malloc-notreentrant' - the heap, with global variables.
-
-     For convenience, the following choices are also available.
-     `--disable-alloca' is the same as `no'.
-
-        * `yes' - a synonym for `alloca'.
-
-        * `no' - a synonym for `malloc-reentrant'.
-
-        * `reentrant' - `alloca' if available, otherwise
-          `malloc-reentrant'.  This is the default.
-
-        * `notreentrant' - `alloca' if available, otherwise
-          `malloc-notreentrant'.
-
-     `alloca' is reentrant and fast, and is recommended.  It actually
-     allocates just small blocks on the stack; larger ones use
-     malloc-reentrant.
-
-     `malloc-reentrant' is, as the name suggests, reentrant and thread
-     safe, but `malloc-notreentrant' is faster and should be used if
-     reentrancy is not required.
-
-     The two malloc methods in fact use the memory allocation functions
-     selected by `mp_set_memory_functions', these being `malloc' and
-     friends by default.  *Note Custom Allocation::.
-
-     An additional choice `--enable-alloca=debug' is available, to help
-     when debugging memory related problems (*note Debugging::).
-
-FFT Multiplication, `--disable-fft'
-     By default multiplications are done using Karatsuba, 3-way Toom,
-     and Fermat FFT.  The FFT is only used on large to very large
-     operands and can be disabled to save code size if desired.
-
-Berkeley MP, `--enable-mpbsd'
-     The Berkeley MP compatibility library (`libmp') and header file
-     (`mp.h') are built and installed only if `--enable-mpbsd' is used.
-     *Note BSD Compatible Functions::.
-
-Assertion Checking, `--enable-assert'
-     This option enables some consistency checking within the library.
-     This can be of use while debugging, *note Debugging::.
-
-Execution Profiling, `--enable-profiling=prof/gprof/instrument'
-     Enable profiling support, in one of various styles, *note
-     Profiling::.
-
-`MPN_PATH'
-     Various assembly versions of each mpn subroutines are provided.
-     For a given CPU, a search is made though a path to choose a
-     version of each.  For example `sparcv8' has
-
-          MPN_PATH="sparc32/v8 sparc32 generic"
-
-     which means look first for v8 code, then plain sparc32 (which is
-     v7), and finally fall back on generic C.  Knowledgeable users with
-     special requirements can specify a different path.  Normally this
-     is completely unnecessary.
-
-Documentation
-     The source for the document you're now reading is `doc/gmp.texi',
-     in Texinfo format, see *Note Texinfo: (texinfo)Top.
-
-     Info format `doc/gmp.info' is included in the distribution.  The
-     usual automake targets are available to make PostScript, DVI, PDF
-     and HTML (these will require various TeX and Texinfo tools).
-
-     DocBook and XML can be generated by the Texinfo `makeinfo' program
-     too, see *Note Options for `makeinfo': (texinfo)makeinfo options.
-
-     Some supplementary notes can also be found in the `doc'
-     subdirectory.
-
-
-\1f
-File: gmp.info,  Node: ABI and ISA,  Next: Notes for Package Builds,  Prev: Build Options,  Up: Installing GMP
-
-2.2 ABI and ISA
-===============
-
-ABI (Application Binary Interface) refers to the calling conventions
-between functions, meaning what registers are used and what sizes the
-various C data types are.  ISA (Instruction Set Architecture) refers to
-the instructions and registers a CPU has available.
-
-   Some 64-bit ISA CPUs have both a 64-bit ABI and a 32-bit ABI
-defined, the latter for compatibility with older CPUs in the family.
-GMP supports some CPUs like this in both ABIs.  In fact within GMP
-`ABI' means a combination of chip ABI, plus how GMP chooses to use it.
-For example in some 32-bit ABIs, GMP may support a limb as either a
-32-bit `long' or a 64-bit `long long'.
-
-   By default GMP chooses the best ABI available for a given system,
-and this generally gives significantly greater speed.  But an ABI can
-be chosen explicitly to make GMP compatible with other libraries, or
-particular application requirements.  For example,
-
-     ./configure ABI=32
-
-   In all cases it's vital that all object code used in a given program
-is compiled for the same ABI.
-
-   Usually a limb is implemented as a `long'.  When a `long long' limb
-is used this is encoded in the generated `gmp.h'.  This is convenient
-for applications, but it does mean that `gmp.h' will vary, and can't be
-just copied around.  `gmp.h' remains compiler independent though, since
-all compilers for a particular ABI will be expected to use the same
-limb type.
-
-   Currently no attempt is made to follow whatever conventions a system
-has for installing library or header files built for a particular ABI.
-This will probably only matter when installing multiple builds of GMP,
-and it might be as simple as configuring with a special `libdir', or it
-might require more than that.  Note that builds for different ABIs need
-to done separately, with a fresh `./configure' and `make' each.
-
-
-AMD64 (`x86_64')
-     On AMD64 systems supporting both 32-bit and 64-bit modes for
-     applications, the following ABI choices are available.
-
-    `ABI=64'
-          The 64-bit ABI uses 64-bit limbs and pointers and makes full
-          use of the chip architecture.  This is the default.
-          Applications will usually not need special compiler flags,
-          but for reference the option is
-
-               gcc  -m64
-
-    `ABI=32'
-          The 32-bit ABI is the usual i386 conventions.  This will be
-          slower, and is not recommended except for inter-operating
-          with other code not yet 64-bit capable.  Applications must be
-          compiled with
-
-               gcc  -m32
-
-          (In GCC 2.95 and earlier there's no `-m32' option, it's the
-          only mode.)
-
-
-HPPA 2.0 (`hppa2.0*', `hppa64')
-
-    `ABI=2.0w'
-          The 2.0w ABI uses 64-bit limbs and pointers and is available
-          on HP-UX 11 or up.  Applications must be compiled with
-
-               gcc [built for 2.0w]
-               cc  +DD64
-
-    `ABI=2.0n'
-          The 2.0n ABI means the 32-bit HPPA 1.0 ABI and all its normal
-          calling conventions, but with 64-bit instructions permitted
-          within functions.  GMP uses a 64-bit `long long' for a limb.
-          This ABI is available on hppa64 GNU/Linux and on HP-UX 10 or
-          higher.  Applications must be compiled with
-
-               gcc [built for 2.0n]
-               cc  +DA2.0 +e
-
-          Note that current versions of GCC (eg. 3.2) don't generate
-          64-bit instructions for `long long' operations and so may be
-          slower than for 2.0w.  (The GMP assembly code is the same
-          though.)
-
-    `ABI=1.0'
-          HPPA 2.0 CPUs can run all HPPA 1.0 and 1.1 code in the 32-bit
-          HPPA 1.0 ABI.  No special compiler options are needed for
-          applications.
-
-     All three ABIs are available for CPU types `hppa2.0w', `hppa2.0'
-     and `hppa64', but for CPU type `hppa2.0n' only 2.0n or 1.0 are
-     considered.
-
-     Note that GCC on HP-UX has no options to choose between 2.0n and
-     2.0w modes, unlike HP `cc'.  Instead it must be built for one or
-     the other ABI.  GMP will detect how it was built, and skip to the
-     corresponding `ABI'.
-
-
-IA-64 under HP-UX (`ia64*-*-hpux*', `itanium*-*-hpux*')
-     HP-UX supports two ABIs for IA-64.  GMP performance is the same in
-     both.
-
-    `ABI=32'
-          In the 32-bit ABI, pointers, `int's and `long's are 32 bits
-          and GMP uses a 64 bit `long long' for a limb.  Applications
-          can be compiled without any special flags since this ABI is
-          the default in both HP C and GCC, but for reference the flags
-          are
-
-               gcc  -milp32
-               cc   +DD32
-
-    `ABI=64'
-          In the 64-bit ABI, `long's and pointers are 64 bits and GMP
-          uses a `long' for a limb.  Applications must be compiled with
-
-               gcc  -mlp64
-               cc   +DD64
-
-     On other IA-64 systems, GNU/Linux for instance, `ABI=64' is the
-     only choice.
-
-
-MIPS under IRIX 6 (`mips*-*-irix[6789]')
-     IRIX 6 always has a 64-bit MIPS 3 or better CPU, and supports ABIs
-     o32, n32, and 64.  n32 or 64 are recommended, and GMP performance
-     will be the same in each.  The default is n32.
-
-    `ABI=o32'
-          The o32 ABI is 32-bit pointers and integers, and no 64-bit
-          operations.  GMP will be slower than in n32 or 64, this
-          option only exists to support old compilers, eg. GCC 2.7.2.
-          Applications can be compiled with no special flags on an old
-          compiler, or on a newer compiler with
-
-               gcc  -mabi=32
-               cc   -32
-
-    `ABI=n32'
-          The n32 ABI is 32-bit pointers and integers, but with a
-          64-bit limb using a `long long'.  Applications must be
-          compiled with
-
-               gcc  -mabi=n32
-               cc   -n32
-
-    `ABI=64'
-          The 64-bit ABI is 64-bit pointers and integers.  Applications
-          must be compiled with
-
-               gcc  -mabi=64
-               cc   -64
-
-     Note that MIPS GNU/Linux, as of kernel version 2.2, doesn't have
-     the necessary support for n32 or 64 and so only gets a 32-bit limb
-     and the MIPS 2 code.
-
-
-PowerPC 64 (`powerpc64', `powerpc620', `powerpc630', `powerpc970', `power4', `power5')
-
-    `ABI=aix64'
-          The AIX 64 ABI uses 64-bit limbs and pointers and is the
-          default on PowerPC 64 `*-*-aix*' systems.  Applications must
-          be compiled with
-
-               gcc  -maix64
-               xlc  -q64
-
-    `ABI=mode64'
-          The `mode64' ABI uses 64-bit limbs and pointers, and is the
-          default on 64-bit GNU/Linux, BSD, and Mac OS X/Darwin
-          systems.  Applications must be compiled with
-
-               gcc  -m64
-
-    `ABI=mode32'
-          The `mode32' ABI uses a 64-bit `long long' limb but with the
-          chip still in 32-bit mode and using 32-bit calling
-          conventions.  This is the default on for systems where the
-          true 64-bit ABIs are unavailable.  No special compiler
-          options are needed for applications.
-
-    `ABI=32'
-          This is the basic 32-bit PowerPC ABI, with a 32-bit limb.  No
-          special compiler options are needed for applications.
-
-     GMP speed is greatest in `aix64' and `mode32'.  In `ABI=32' only
-     the 32-bit ISA is used and this doesn't make full use of a 64-bit
-     chip.  On a suitable system we could perhaps use more of the ISA,
-     but there are no plans to do so.
-
-
-Sparc V9 (`sparc64', `sparcv9', `ultrasparc*')
-
-    `ABI=64'
-          The 64-bit V9 ABI is available on the various BSD sparc64
-          ports, recent versions of Sparc64 GNU/Linux, and Solaris 2.7
-          and up (when the kernel is in 64-bit mode).  GCC 3.2 or
-          higher, or Sun `cc' is required.  On GNU/Linux, depending on
-          the default `gcc' mode, applications must be compiled with
-
-               gcc  -m64
-
-          On Solaris applications must be compiled with
-
-               gcc  -m64 -mptr64 -Wa,-xarch=v9 -mcpu=v9
-               cc   -xarch=v9
-
-          On the BSD sparc64 systems no special options are required,
-          since 64-bits is the only ABI available.
-
-    `ABI=32'
-          For the basic 32-bit ABI, GMP still uses as much of the V9
-          ISA as it can.  In the Sun documentation this combination is
-          known as "v8plus".  On GNU/Linux, depending on the default
-          `gcc' mode, applications may need to be compiled with
-
-               gcc  -m32
-
-          On Solaris, no special compiler options are required for
-          applications, though using something like the following is
-          recommended.  (`gcc' 2.8 and earlier only support `-mv8'
-          though.)
-
-               gcc  -mv8plus
-               cc   -xarch=v8plus
-
-     GMP speed is greatest in `ABI=64', so it's the default where
-     available.  The speed is partly because there are extra registers
-     available and partly because 64-bits is considered the more
-     important case and has therefore had better code written for it.
-
-     Don't be confused by the names of the `-m' and `-x' compiler
-     options, they're called `arch' but effectively control both ABI
-     and ISA.
-
-     On Solaris 2.6 and earlier, only `ABI=32' is available since the
-     kernel doesn't save all registers.
-
-     On Solaris 2.7 with the kernel in 32-bit mode, a normal native
-     build will reject `ABI=64' because the resulting executables won't
-     run.  `ABI=64' can still be built if desired by making it look
-     like a cross-compile, for example
-
-          ./configure --build=none --host=sparcv9-sun-solaris2.7 ABI=64
-
-\1f
-File: gmp.info,  Node: Notes for Package Builds,  Next: Notes for Particular Systems,  Prev: ABI and ISA,  Up: Installing GMP
-
-2.3 Notes for Package Builds
-============================
-
-GMP should present no great difficulties for packaging in a binary
-distribution.
-
-   Libtool is used to build the library and `-version-info' is set
-appropriately, having started from `3:0:0' in GMP 3.0 (*note Library
-interface versions: (libtool)Versioning.).
-
-   The GMP 4 series will be upwardly binary compatible in each release
-and will be upwardly binary compatible with all of the GMP 3 series.
-Additional function interfaces may be added in each release, so on
-systems where libtool versioning is not fully checked by the loader an
-auxiliary mechanism may be needed to express that a dynamic linked
-application depends on a new enough GMP.
-
-   An auxiliary mechanism may also be needed to express that
-`libgmpxx.la' (from `--enable-cxx', *note Build Options::) requires
-`libgmp.la' from the same GMP version, since this is not done by the
-libtool versioning, nor otherwise.  A mismatch will result in
-unresolved symbols from the linker, or perhaps the loader.
-
-   When building a package for a CPU family, care should be taken to use
-`--host' (or `--build') to choose the least common denominator among
-the CPUs which might use the package.  For example this might mean plain
-`sparc' (meaning V7) for SPARCs.
-
-   For x86s, `--enable-fat' sets things up for a fat binary build,
-making a runtime selection of optimized low level routines.  This is a
-good choice for packaging to run on a range of x86 chips.
-
-   Users who care about speed will want GMP built for their exact CPU
-type, to make best use of the available optimizations.  Providing a way
-to suitably rebuild a package may be useful.  This could be as simple
-as making it possible for a user to omit `--build' (and `--host') so
-`./config.guess' will detect the CPU.  But a way to manually specify a
-`--build' will be wanted for systems where `./config.guess' is inexact.
-
-   On systems with multiple ABIs, a packaged build will need to decide
-which among the choices is to be provided, see *Note ABI and ISA::.  A
-given run of `./configure' etc will only build one ABI.  If a second
-ABI is also required then a second run of `./configure' etc must be
-made, starting from a clean directory tree (`make distclean').
-
-   As noted under "ABI and ISA", currently no attempt is made to follow
-system conventions for install locations that vary with ABI, such as
-`/usr/lib/sparcv9' for `ABI=64' as opposed to `/usr/lib' for `ABI=32'.
-A package build can override `libdir' and other standard variables as
-necessary.
-
-   Note that `gmp.h' is a generated file, and will be architecture and
-ABI dependent.  When attempting to install two ABIs simultaneously it
-will be important that an application compile gets the correct `gmp.h'
-for its desired ABI.  If compiler include paths don't vary with ABI
-options then it might be necessary to create a `/usr/include/gmp.h'
-which tests preprocessor symbols and chooses the correct actual `gmp.h'.
-
-\1f
-File: gmp.info,  Node: Notes for Particular Systems,  Next: Known Build Problems,  Prev: Notes for Package Builds,  Up: Installing GMP
-
-2.4 Notes for Particular Systems
-================================
-
-AIX 3 and 4
-     On systems `*-*-aix[34]*' shared libraries are disabled by
-     default, since some versions of the native `ar' fail on the
-     convenience libraries used.  A shared build can be attempted with
-
-          ./configure --enable-shared --disable-static
-
-     Note that the `--disable-static' is necessary because in a shared
-     build libtool makes `libgmp.a' a symlink to `libgmp.so',
-     apparently for the benefit of old versions of `ld' which only
-     recognise `.a', but unfortunately this is done even if a fully
-     functional `ld' is available.
-
-ARM
-     On systems `arm*-*-*', versions of GCC up to and including 2.95.3
-     have a bug in unsigned division, giving wrong results for some
-     operands.  GMP `./configure' will demand GCC 2.95.4 or later.
-
-Compaq C++
-     Compaq C++ on OSF 5.1 has two flavours of `iostream', a standard
-     one and an old pre-standard one (see `man iostream_intro').  GMP
-     can only use the standard one, which unfortunately is not the
-     default but must be selected by defining `__USE_STD_IOSTREAM'.
-     Configure with for instance
-
-          ./configure --enable-cxx CPPFLAGS=-D__USE_STD_IOSTREAM
-
-Floating Point Mode
-     On some systems, the hardware floating point has a control mode
-     which can set all operations to be done in a particular precision,
-     for instance single, double or extended on x86 systems (x87
-     floating point).  The GMP functions involving a `double' cannot be
-     expected to operate to their full precision when the hardware is
-     in single precision mode.  Of course this affects all code,
-     including application code, not just GMP.
-
-MS-DOS and MS Windows
-     On an MS-DOS system DJGPP can be used to build GMP, and on an MS
-     Windows system Cygwin, DJGPP and MINGW can be used.  All three are
-     excellent ports of GCC and the various GNU tools.
-
-          `http://www.cygwin.com/'
-          `http://www.delorie.com/djgpp/'
-          `http://www.mingw.org/'
-
-     Microsoft also publishes an Interix "Services for Unix" which can
-     be used to build GMP on Windows (with a normal `./configure'), but
-     it's not free software.
-
-MS Windows DLLs
-     On systems `*-*-cygwin*', `*-*-mingw*' and `*-*-pw32*' by default
-     GMP builds only a static library, but a DLL can be built instead
-     using
-
-          ./configure --disable-static --enable-shared
-
-     Static and DLL libraries can't both be built, since certain export
-     directives in `gmp.h' must be different.
-
-     A MINGW DLL build of GMP can be used with Microsoft C.  Libtool
-     doesn't install a `.lib' format import library, but it can be
-     created with MS `lib' as follows, and copied to the install
-     directory.  Similarly for `libmp' and `libgmpxx'.
-
-          cd .libs
-          lib /def:libgmp-3.dll.def /out:libgmp-3.lib
-
-     MINGW uses the C runtime library `msvcrt.dll' for I/O, so
-     applications wanting to use the GMP I/O routines must be compiled
-     with `cl /MD' to do the same.  If one of the other C runtime
-     library choices provided by MS C is desired then the suggestion is
-     to use the GMP string functions and confine I/O to the application.
-
-Motorola 68k CPU Types
-     `m68k' is taken to mean 68000.  `m68020' or higher will give a
-     performance boost on applicable CPUs.  `m68360' can be used for
-     CPU32 series chips.  `m68302' can be used for "Dragonball" series
-     chips, though this is merely a synonym for `m68000'.
-
-OpenBSD 2.6
-     `m4' in this release of OpenBSD has a bug in `eval' that makes it
-     unsuitable for `.asm' file processing.  `./configure' will detect
-     the problem and either abort or choose another m4 in the `PATH'.
-     The bug is fixed in OpenBSD 2.7, so either upgrade or use GNU m4.
-
-Power CPU Types
-     In GMP, CPU types `power*' and `powerpc*' will each use
-     instructions not available on the other, so it's important to
-     choose the right one for the CPU that will be used.  Currently GMP
-     has no assembly code support for using just the common instruction
-     subset.  To get executables that run on both, the current
-     suggestion is to use the generic C code (CPU `none'), possibly
-     with appropriate compiler options (like `-mcpu=common' for `gcc').
-     CPU `rs6000' (which is not a CPU but a family of workstations) is
-     accepted by `config.sub', but is currently equivalent to `none'.
-
-Sparc CPU Types
-     `sparcv8' or `supersparc' on relevant systems will give a
-     significant performance increase over the V7 code selected by plain
-     `sparc'.
-
-Sparc App Regs
-     The GMP assembly code for both 32-bit and 64-bit Sparc clobbers the
-     "application registers" `g2', `g3' and `g4', the same way that the
-     GCC default `-mapp-regs' does (*note SPARC Options: (gcc)SPARC
-     Options.).
-
-     This makes that code unsuitable for use with the special V9
-     `-mcmodel=embmedany' (which uses `g4' as a data segment pointer),
-     and for applications wanting to use those registers for special
-     purposes.  In these cases the only suggestion currently is to
-     build GMP with CPU `none' to avoid the assembly code.
-
-SunOS 4
-     `/usr/bin/m4' lacks various features needed to process `.asm'
-     files, and instead `./configure' will automatically use
-     `/usr/5bin/m4', which we believe is always available (if not then
-     use GNU m4).
-
-x86 CPU Types
-     `i586', `pentium' or `pentiummmx' code is good for its intended P5
-     Pentium chips, but quite slow when run on Intel P6 class chips
-     (PPro, P-II, P-III).  `i386' is a better choice when making
-     binaries that must run on both.
-
-x86 MMX and SSE2 Code
-     If the CPU selected has MMX code but the assembler doesn't support
-     it, a warning is given and non-MMX code is used instead.  This
-     will be an inferior build, since the MMX code that's present is
-     there because it's faster than the corresponding plain integer
-     code.  The same applies to SSE2.
-
-     Old versions of `gas' don't support MMX instructions, in particular
-     version 1.92.3 that comes with FreeBSD 2.2.8 or the more recent
-     OpenBSD 3.1 doesn't.
-
-     Solaris 2.6 and 2.7 `as' generate incorrect object code for
-     register to register `movq' instructions, and so can't be used for
-     MMX code.  Install a recent `gas' if MMX code is wanted on these
-     systems.
-
-\1f
-File: gmp.info,  Node: Known Build Problems,  Next: Performance optimization,  Prev: Notes for Particular Systems,  Up: Installing GMP
-
-2.5 Known Build Problems
-========================
-
-You might find more up-to-date information at `http://gmplib.org/'.
-
-Compiler link options
-     The version of libtool currently in use rather aggressively strips
-     compiler options when linking a shared library.  This will
-     hopefully be relaxed in the future, but for now if this is a
-     problem the suggestion is to create a little script to hide them,
-     and for instance configure with
-
-          ./configure CC=gcc-with-my-options
-
-DJGPP (`*-*-msdosdjgpp*')
-     The DJGPP port of `bash' 2.03 is unable to run the `configure'
-     script, it exits silently, having died writing a preamble to
-     `config.log'.  Use `bash' 2.04 or higher.
-
-     `make all' was found to run out of memory during the final
-     `libgmp.la' link on one system tested, despite having 64Mb
-     available.  Running `make libgmp.la' directly helped, perhaps
-     recursing into the various subdirectories uses up memory.
-
-GNU binutils `strip' prior to 2.12
-     `strip' from GNU binutils 2.11 and earlier should not be used on
-     the static libraries `libgmp.a' and `libmp.a' since it will
-     discard all but the last of multiple archive members with the same
-     name, like the three versions of `init.o' in `libgmp.a'.  Binutils
-     2.12 or higher can be used successfully.
-
-     The shared libraries `libgmp.so' and `libmp.so' are not affected by
-     this and any version of `strip' can be used on them.
-
-`make' syntax error
-     On certain versions of SCO OpenServer 5 and IRIX 6.5 the native
-     `make' is unable to handle the long dependencies list for
-     `libgmp.la'.  The symptom is a "syntax error" on the following
-     line of the top-level `Makefile'.
-
-          libgmp.la: $(libgmp_la_OBJECTS) $(libgmp_la_DEPENDENCIES)
-
-     Either use GNU Make, or as a workaround remove
-     `$(libgmp_la_DEPENDENCIES)' from that line (which will make the
-     initial build work, but if any recompiling is done `libgmp.la'
-     might not be rebuilt).
-
-MacOS X (`*-*-darwin*')
-     Libtool currently only knows how to create shared libraries on
-     MacOS X using the native `cc' (which is a modified GCC), not a
-     plain GCC.  A static-only build should work though
-     (`--disable-shared').
-
-NeXT prior to 3.3
-     The system compiler on old versions of NeXT was a massacred and
-     old GCC, even if it called itself `cc'.  This compiler cannot be
-     used to build GMP, you need to get a real GCC, and install that.
-     (NeXT may have fixed this in release 3.3 of their system.)
-
-POWER and PowerPC
-     Bugs in GCC 2.7.2 (and 2.6.3) mean it can't be used to compile GMP
-     on POWER or PowerPC.  If you want to use GCC for these machines,
-     get GCC 2.7.2.1 (or later).
-
-Sequent Symmetry
-     Use the GNU assembler instead of the system assembler, since the
-     latter has serious bugs.
-
-Solaris 2.6
-     The system `sed' prints an error "Output line too long" when
-     libtool builds `libgmp.la'.  This doesn't seem to cause any
-     obvious ill effects, but GNU `sed' is recommended, to avoid any
-     doubt.
-
-Sparc Solaris 2.7 with gcc 2.95.2 in `ABI=32'
-     A shared library build of GMP seems to fail in this combination,
-     it builds but then fails the tests, apparently due to some
-     incorrect data relocations within `gmp_randinit_lc_2exp_size'.
-     The exact cause is unknown, `--disable-shared' is recommended.
-
-\1f
-File: gmp.info,  Node: Performance optimization,  Prev: Known Build Problems,  Up: Installing GMP
-
-2.6 Performance optimization
-============================
-
-For optimal performance, build GMP for the exact CPU type of the target
-computer, see *Note Build Options::.
-
-   Unlike what is the case for most other programs, the compiler
-typically doesn't matter much, since GMP uses assembly language for the
-most critical operation.
-
-   In particular for long-running GMP applications, and applications
-demanding extremely large numbers, building and running the `tuneup'
-program in the `tune' subdirectory, can be important.  For example,
-
-     cd tune
-     make tuneup
-     ./tuneup
-
-   will generate better contents for the `gmp-mparam.h' parameter file.
-
-   To use the results, put the output in the file file indicated in the
-`Parameters for ...' header.  Then recompile from scratch.
-
-   The `tuneup' program takes one useful parameter, `-f NNN', which
-instructs the program how long to check FFT multiply parameters.  If
-you're going to use GMP for extremely large numbers, you may want to
-run `tuneup' with a large NNN value.
-
-\1f
-File: gmp.info,  Node: GMP Basics,  Next: Reporting Bugs,  Prev: Installing GMP,  Up: Top
-
-3 GMP Basics
-************
-
-*Using functions, macros, data types, etc. not documented in this
-manual is strongly discouraged.  If you do so your application is
-guaranteed to be incompatible with future versions of GMP.*
-
-* Menu:
-
-* Headers and Libraries::
-* Nomenclature and Types::
-* Function Classes::
-* Variable Conventions::
-* Parameter Conventions::
-* Memory Management::
-* Reentrancy::
-* Useful Macros and Constants::
-* Compatibility with older versions::
-* Demonstration Programs::
-* Efficiency::
-* Debugging::
-* Profiling::
-* Autoconf::
-* Emacs::
-
-\1f
-File: gmp.info,  Node: Headers and Libraries,  Next: Nomenclature and Types,  Prev: GMP Basics,  Up: GMP Basics
-
-3.1 Headers and Libraries
-=========================
-
-All declarations needed to use GMP are collected in the include file
-`gmp.h'.  It is designed to work with both C and C++ compilers.
-
-     #include <gmp.h>
-
-   Note however that prototypes for GMP functions with `FILE *'
-parameters are only provided if `<stdio.h>' is included too.
-
-     #include <stdio.h>
-     #include <gmp.h>
-
-   Likewise `<stdarg.h>' (or `<varargs.h>') is required for prototypes
-with `va_list' parameters, such as `gmp_vprintf'.  And `<obstack.h>'
-for prototypes with `struct obstack' parameters, such as
-`gmp_obstack_printf', when available.
-
-   All programs using GMP must link against the `libgmp' library.  On a
-typical Unix-like system this can be done with `-lgmp', for example
-
-     gcc myprogram.c -lgmp
-
-   GMP C++ functions are in a separate `libgmpxx' library.  This is
-built and installed if C++ support has been enabled (*note Build
-Options::).  For example,
-
-     g++ mycxxprog.cc -lgmpxx -lgmp
-
-   GMP is built using Libtool and an application can use that to link
-if desired, *note GNU Libtool: (libtool)Top.
-
-   If GMP has been installed to a non-standard location then it may be
-necessary to use `-I' and `-L' compiler options to point to the right
-directories, and some sort of run-time path for a shared library.
-
-\1f
-File: gmp.info,  Node: Nomenclature and Types,  Next: Function Classes,  Prev: Headers and Libraries,  Up: GMP Basics
-
-3.2 Nomenclature and Types
-==========================
-
-In this manual, "integer" usually means a multiple precision integer, as
-defined by the GMP library.  The C data type for such integers is
-`mpz_t'.  Here are some examples of how to declare such integers:
-
-     mpz_t sum;
-
-     struct foo { mpz_t x, y; };
-
-     mpz_t vec[20];
-
-   "Rational number" means a multiple precision fraction.  The C data
-type for these fractions is `mpq_t'.  For example:
-
-     mpq_t quotient;
-
-   "Floating point number" or "Float" for short, is an arbitrary
-precision mantissa with a limited precision exponent.  The C data type
-for such objects is `mpf_t'.  For example:
-
-     mpf_t fp;
-
-   The floating point functions accept and return exponents in the C
-type `mp_exp_t'.  Currently this is usually a `long', but on some
-systems it's an `int' for efficiency.
-
-   A "limb" means the part of a multi-precision number that fits in a
-single machine word.  (We chose this word because a limb of the human
-body is analogous to a digit, only larger, and containing several
-digits.)  Normally a limb is 32 or 64 bits.  The C data type for a limb
-is `mp_limb_t'.
-
-   Counts of limbs of a multi-precision number represented in the C type
-`mp_size_t'.  Currently this is normally a `long', but on some systems
-it's an `int' for efficiency, and on some systems it will be `long
-long' in the future.
-
-   Counts of bits of a multi-precision number are represented in the C
-type `mp_bitcnt_t'.  Currently this is always an `unsigned long', but on
-some systems it will be an `unsigned long long' in the future .
-
-   "Random state" means an algorithm selection and current state data.
-The C data type for such objects is `gmp_randstate_t'.  For example:
-
-     gmp_randstate_t rstate;
-
-   Also, in general `mp_bitcnt_t' is used for bit counts and ranges, and
-`size_t' is used for byte or character counts.
-
-\1f
-File: gmp.info,  Node: Function Classes,  Next: Variable Conventions,  Prev: Nomenclature and Types,  Up: GMP Basics
-
-3.3 Function Classes
-====================
-
-There are six classes of functions in the GMP library:
-
-  1. Functions for signed integer arithmetic, with names beginning with
-     `mpz_'.  The associated type is `mpz_t'.  There are about 150
-     functions in this class.  (*note Integer Functions::)
-
-  2. Functions for rational number arithmetic, with names beginning with
-     `mpq_'.  The associated type is `mpq_t'.  There are about 40
-     functions in this class, but the integer functions can be used for
-     arithmetic on the numerator and denominator separately.  (*note
-     Rational Number Functions::)
-
-  3. Functions for floating-point arithmetic, with names beginning with
-     `mpf_'.  The associated type is `mpf_t'.  There are about 60
-     functions is this class.  (*note Floating-point Functions::)
-
-  4. Functions compatible with Berkeley MP, such as `itom', `madd', and
-     `mult'.  The associated type is `MINT'.  (*note BSD Compatible
-     Functions::)
-
-  5. Fast low-level functions that operate on natural numbers.  These
-     are used by the functions in the preceding groups, and you can
-     also call them directly from very time-critical user programs.
-     These functions' names begin with `mpn_'.  The associated type is
-     array of `mp_limb_t'.  There are about 30 (hard-to-use) functions
-     in this class.  (*note Low-level Functions::)
-
-  6. Miscellaneous functions.  Functions for setting up custom
-     allocation and functions for generating random numbers.  (*note
-     Custom Allocation::, and *note Random Number Functions::)
-
-\1f
-File: gmp.info,  Node: Variable Conventions,  Next: Parameter Conventions,  Prev: Function Classes,  Up: GMP Basics
-
-3.4 Variable Conventions
-========================
-
-GMP functions generally have output arguments before input arguments.
-This notation is by analogy with the assignment operator.  The BSD MP
-compatibility functions are exceptions, having the output arguments
-last.
-
-   GMP lets you use the same variable for both input and output in one
-call.  For example, the main function for integer multiplication,
-`mpz_mul', can be used to square `x' and put the result back in `x' with
-
-     mpz_mul (x, x, x);
-
-   Before you can assign to a GMP variable, you need to initialize it
-by calling one of the special initialization functions.  When you're
-done with a variable, you need to clear it out, using one of the
-functions for that purpose.  Which function to use depends on the type
-of variable.  See the chapters on integer functions, rational number
-functions, and floating-point functions for details.
-
-   A variable should only be initialized once, or at least cleared
-between each initialization.  After a variable has been initialized, it
-may be assigned to any number of times.
-
-   For efficiency reasons, avoid excessive initializing and clearing.
-In general, initialize near the start of a function and clear near the
-end.  For example,
-
-     void
-     foo (void)
-     {
-       mpz_t  n;
-       int    i;
-       mpz_init (n);
-       for (i = 1; i < 100; i++)
-         {
-           mpz_mul (n, ...);
-           mpz_fdiv_q (n, ...);
-           ...
-         }
-       mpz_clear (n);
-     }
-
-\1f
-File: gmp.info,  Node: Parameter Conventions,  Next: Memory Management,  Prev: Variable Conventions,  Up: GMP Basics
-
-3.5 Parameter Conventions
-=========================
-
-When a GMP variable is used as a function parameter, it's effectively a
-call-by-reference, meaning if the function stores a value there it will
-change the original in the caller.  Parameters which are input-only can
-be designated `const' to provoke a compiler error or warning on
-attempting to modify them.
-
-   When a function is going to return a GMP result, it should designate
-a parameter that it sets, like the library functions do.  More than one
-value can be returned by having more than one output parameter, again
-like the library functions.  A `return' of an `mpz_t' etc doesn't
-return the object, only a pointer, and this is almost certainly not
-what's wanted.
-
-   Here's an example accepting an `mpz_t' parameter, doing a
-calculation, and storing the result to the indicated parameter.
-
-     void
-     foo (mpz_t result, const mpz_t param, unsigned long n)
-     {
-       unsigned long  i;
-       mpz_mul_ui (result, param, n);
-       for (i = 1; i < n; i++)
-         mpz_add_ui (result, result, i*7);
-     }
-
-     int
-     main (void)
-     {
-       mpz_t  r, n;
-       mpz_init (r);
-       mpz_init_set_str (n, "123456", 0);
-       foo (r, n, 20L);
-       gmp_printf ("%Zd\n", r);
-       return 0;
-     }
-
-   `foo' works even if the mainline passes the same variable for
-`param' and `result', just like the library functions.  But sometimes
-it's tricky to make that work, and an application might not want to
-bother supporting that sort of thing.
-
-   For interest, the GMP types `mpz_t' etc are implemented as
-one-element arrays of certain structures.  This is why declaring a
-variable creates an object with the fields GMP needs, but then using it
-as a parameter passes a pointer to the object.  Note that the actual
-fields in each `mpz_t' etc are for internal use only and should not be
-accessed directly by code that expects to be compatible with future GMP
-releases.
-
-\1f
-File: gmp.info,  Node: Memory Management,  Next: Reentrancy,  Prev: Parameter Conventions,  Up: GMP Basics
-
-3.6 Memory Management
-=====================
-
-The GMP types like `mpz_t' are small, containing only a couple of sizes,
-and pointers to allocated data.  Once a variable is initialized, GMP
-takes care of all space allocation.  Additional space is allocated
-whenever a variable doesn't have enough.
-
-   `mpz_t' and `mpq_t' variables never reduce their allocated space.
-Normally this is the best policy, since it avoids frequent reallocation.
-Applications that need to return memory to the heap at some particular
-point can use `mpz_realloc2', or clear variables no longer needed.
-
-   `mpf_t' variables, in the current implementation, use a fixed amount
-of space, determined by the chosen precision and allocated at
-initialization, so their size doesn't change.
-
-   All memory is allocated using `malloc' and friends by default, but
-this can be changed, see *Note Custom Allocation::.  Temporary memory
-on the stack is also used (via `alloca'), but this can be changed at
-build-time if desired, see *Note Build Options::.
-
-\1f
-File: gmp.info,  Node: Reentrancy,  Next: Useful Macros and Constants,  Prev: Memory Management,  Up: GMP Basics
-
-3.7 Reentrancy
-==============
-
-GMP is reentrant and thread-safe, with some exceptions:
-
-   * If configured with `--enable-alloca=malloc-notreentrant' (or with
-     `--enable-alloca=notreentrant' when `alloca' is not available),
-     then naturally GMP is not reentrant.
-
-   * `mpf_set_default_prec' and `mpf_init' use a global variable for the
-     selected precision.  `mpf_init2' can be used instead, and in the
-     C++ interface an explicit precision to the `mpf_class' constructor.
-
-   * `mpz_random' and the other old random number functions use a global
-     random state and are hence not reentrant.  The newer random number
-     functions that accept a `gmp_randstate_t' parameter can be used
-     instead.
-
-   * `gmp_randinit' (obsolete) returns an error indication through a
-     global variable, which is not thread safe.  Applications are
-     advised to use `gmp_randinit_default' or `gmp_randinit_lc_2exp'
-     instead.
-
-   * `mp_set_memory_functions' uses global variables to store the
-     selected memory allocation functions.
-
-   * If the memory allocation functions set by a call to
-     `mp_set_memory_functions' (or `malloc' and friends by default) are
-     not reentrant, then GMP will not be reentrant either.
-
-   * If the standard I/O functions such as `fwrite' are not reentrant
-     then the GMP I/O functions using them will not be reentrant either.
-
-   * It's safe for two threads to read from the same GMP variable
-     simultaneously, but it's not safe for one to read while the
-     another might be writing, nor for two threads to write
-     simultaneously.  It's not safe for two threads to generate a
-     random number from the same `gmp_randstate_t' simultaneously,
-     since this involves an update of that variable.
-
-\1f
-File: gmp.info,  Node: Useful Macros and Constants,  Next: Compatibility with older versions,  Prev: Reentrancy,  Up: GMP Basics
-
-3.8 Useful Macros and Constants
-===============================
-
- -- Global Constant: const int mp_bits_per_limb
-     The number of bits per limb.
-
- -- Macro: __GNU_MP_VERSION
- -- Macro: __GNU_MP_VERSION_MINOR
- -- Macro: __GNU_MP_VERSION_PATCHLEVEL
-     The major and minor GMP version, and patch level, respectively, as
-     integers.  For GMP i.j, these numbers will be i, j, and 0,
-     respectively.  For GMP i.j.k, these numbers will be i, j, and k,
-     respectively.
-
- -- Global Constant: const char * const gmp_version
-     The GMP version number, as a null-terminated string, in the form
-     "i.j.k".  This release is "5.0.1".  Note that the format "i.j" was
-     used when k was zero was used before version 4.3.0.
-
- -- Macro: __GMP_CC
- -- Macro: __GMP_CFLAGS
-     The compiler and compiler flags, respectively, used when compiling
-     GMP, as strings.
-
-\1f
-File: gmp.info,  Node: Compatibility with older versions,  Next: Demonstration Programs,  Prev: Useful Macros and Constants,  Up: GMP Basics
-
-3.9 Compatibility with older versions
-=====================================
-
-This version of GMP is upwardly binary compatible with all 4.x and 3.x
-versions, and upwardly compatible at the source level with all 2.x
-versions, with the following exceptions.
-
-   * `mpn_gcd' had its source arguments swapped as of GMP 3.0, for
-     consistency with other `mpn' functions.
-
-   * `mpf_get_prec' counted precision slightly differently in GMP 3.0
-     and 3.0.1, but in 3.1 reverted to the 2.x style.
-
-   There are a number of compatibility issues between GMP 1 and GMP 2
-that of course also apply when porting applications from GMP 1 to GMP
-4.  Please see the GMP 2 manual for details.
-
-   The Berkeley MP compatibility library (*note BSD Compatible
-Functions::) is source and binary compatible with the standard `libmp'.
-
-\1f
-File: gmp.info,  Node: Demonstration Programs,  Next: Efficiency,  Prev: Compatibility with older versions,  Up: GMP Basics
-
-3.10 Demonstration programs
-===========================
-
-The `demos' subdirectory has some sample programs using GMP.  These
-aren't built or installed, but there's a `Makefile' with rules for them.
-For instance,
-
-     make pexpr
-     ./pexpr 68^975+10
-
-The following programs are provided
-
-   * `pexpr' is an expression evaluator, the program used on the GMP
-     web page.
-
-   * The `calc' subdirectory has a similar but simpler evaluator using
-     `lex' and `yacc'.
-
-   * The `expr' subdirectory is yet another expression evaluator, a
-     library designed for ease of use within a C program.  See
-     `demos/expr/README' for more information.
-
-   * `factorize' is a Pollard-Rho factorization program.
-
-   * `isprime' is a command-line interface to the `mpz_probab_prime_p'
-     function.
-
-   * `primes' counts or lists primes in an interval, using a sieve.
-
-   * `qcn' is an example use of `mpz_kronecker_ui' to estimate quadratic
-     class numbers.
-
-   * The `perl' subdirectory is a comprehensive perl interface to GMP.
-     See `demos/perl/INSTALL' for more information.  Documentation is
-     in POD format in `demos/perl/GMP.pm'.
-
-   As an aside, consideration has been given at various times to some
-sort of expression evaluation within the main GMP library.  Going
-beyond something minimal quickly leads to matters like user-defined
-functions, looping, fixnums for control variables, etc, which are
-considered outside the scope of GMP (much closer to language
-interpreters or compilers, *Note Language Bindings::.)  Something
-simple for program input convenience may yet be a possibility, a
-combination of the `expr' demo and the `pexpr' tree back-end perhaps.
-But for now the above evaluators are offered as illustrations.
-
-\1f
-File: gmp.info,  Node: Efficiency,  Next: Debugging,  Prev: Demonstration Programs,  Up: GMP Basics
-
-3.11 Efficiency
-===============
-
-Small Operands
-     On small operands, the time for function call overheads and memory
-     allocation can be significant in comparison to actual calculation.
-     This is unavoidable in a general purpose variable precision
-     library, although GMP attempts to be as efficient as it can on
-     both large and small operands.
-
-Static Linking
-     On some CPUs, in particular the x86s, the static `libgmp.a' should
-     be used for maximum speed, since the PIC code in the shared
-     `libgmp.so' will have a small overhead on each function call and
-     global data address.  For many programs this will be
-     insignificant, but for long calculations there's a gain to be had.
-
-Initializing and Clearing
-     Avoid excessive initializing and clearing of variables, since this
-     can be quite time consuming, especially in comparison to otherwise
-     fast operations like addition.
-
-     A language interpreter might want to keep a free list or stack of
-     initialized variables ready for use.  It should be possible to
-     integrate something like that with a garbage collector too.
-
-Reallocations
-     An `mpz_t' or `mpq_t' variable used to hold successively increasing
-     values will have its memory repeatedly `realloc'ed, which could be
-     quite slow or could fragment memory, depending on the C library.
-     If an application can estimate the final size then `mpz_init2' or
-     `mpz_realloc2' can be called to allocate the necessary space from
-     the beginning (*note Initializing Integers::).
-
-     It doesn't matter if a size set with `mpz_init2' or `mpz_realloc2'
-     is too small, since all functions will do a further reallocation
-     if necessary.  Badly overestimating memory required will waste
-     space though.
-
-`2exp' Functions
-     It's up to an application to call functions like `mpz_mul_2exp'
-     when appropriate.  General purpose functions like `mpz_mul' make
-     no attempt to identify powers of two or other special forms,
-     because such inputs will usually be very rare and testing every
-     time would be wasteful.
-
-`ui' and `si' Functions
-     The `ui' functions and the small number of `si' functions exist for
-     convenience and should be used where applicable.  But if for
-     example an `mpz_t' contains a value that fits in an `unsigned
-     long' there's no need extract it and call a `ui' function, just
-     use the regular `mpz' function.
-
-In-Place Operations
-     `mpz_abs', `mpq_abs', `mpf_abs', `mpz_neg', `mpq_neg' and
-     `mpf_neg' are fast when used for in-place operations like
-     `mpz_abs(x,x)', since in the current implementation only a single
-     field of `x' needs changing.  On suitable compilers (GCC for
-     instance) this is inlined too.
-
-     `mpz_add_ui', `mpz_sub_ui', `mpf_add_ui' and `mpf_sub_ui' benefit
-     from an in-place operation like `mpz_add_ui(x,x,y)', since usually
-     only one or two limbs of `x' will need to be changed.  The same
-     applies to the full precision `mpz_add' etc if `y' is small.  If
-     `y' is big then cache locality may be helped, but that's all.
-
-     `mpz_mul' is currently the opposite, a separate destination is
-     slightly better.  A call like `mpz_mul(x,x,y)' will, unless `y' is
-     only one limb, make a temporary copy of `x' before forming the
-     result.  Normally that copying will only be a tiny fraction of the
-     time for the multiply, so this is not a particularly important
-     consideration.
-
-     `mpz_set', `mpq_set', `mpq_set_num', `mpf_set', etc, make no
-     attempt to recognise a copy of something to itself, so a call like
-     `mpz_set(x,x)' will be wasteful.  Naturally that would never be
-     written deliberately, but if it might arise from two pointers to
-     the same object then a test to avoid it might be desirable.
-
-          if (x != y)
-            mpz_set (x, y);
-
-     Note that it's never worth introducing extra `mpz_set' calls just
-     to get in-place operations.  If a result should go to a particular
-     variable then just direct it there and let GMP take care of data
-     movement.
-
-Divisibility Testing (Small Integers)
-     `mpz_divisible_ui_p' and `mpz_congruent_ui_p' are the best
-     functions for testing whether an `mpz_t' is divisible by an
-     individual small integer.  They use an algorithm which is faster
-     than `mpz_tdiv_ui', but which gives no useful information about
-     the actual remainder, only whether it's zero (or a particular
-     value).
-
-     However when testing divisibility by several small integers, it's
-     best to take a remainder modulo their product, to save
-     multi-precision operations.  For instance to test whether a number
-     is divisible by any of 23, 29 or 31 take a remainder modulo
-     23*29*31 = 20677 and then test that.
-
-     The division functions like `mpz_tdiv_q_ui' which give a quotient
-     as well as a remainder are generally a little slower than the
-     remainder-only functions like `mpz_tdiv_ui'.  If the quotient is
-     only rarely wanted then it's probably best to just take a
-     remainder and then go back and calculate the quotient if and when
-     it's wanted (`mpz_divexact_ui' can be used if the remainder is
-     zero).
-
-Rational Arithmetic
-     The `mpq' functions operate on `mpq_t' values with no common
-     factors in the numerator and denominator.  Common factors are
-     checked-for and cast out as necessary.  In general, cancelling
-     factors every time is the best approach since it minimizes the
-     sizes for subsequent operations.
-
-     However, applications that know something about the factorization
-     of the values they're working with might be able to avoid some of
-     the GCDs used for canonicalization, or swap them for divisions.
-     For example when multiplying by a prime it's enough to check for
-     factors of it in the denominator instead of doing a full GCD.  Or
-     when forming a big product it might be known that very little
-     cancellation will be possible, and so canonicalization can be left
-     to the end.
-
-     The `mpq_numref' and `mpq_denref' macros give access to the
-     numerator and denominator to do things outside the scope of the
-     supplied `mpq' functions.  *Note Applying Integer Functions::.
-
-     The canonical form for rationals allows mixed-type `mpq_t' and
-     integer additions or subtractions to be done directly with
-     multiples of the denominator.  This will be somewhat faster than
-     `mpq_add'.  For example,
-
-          /* mpq increment */
-          mpz_add (mpq_numref(q), mpq_numref(q), mpq_denref(q));
-
-          /* mpq += unsigned long */
-          mpz_addmul_ui (mpq_numref(q), mpq_denref(q), 123UL);
-
-          /* mpq -= mpz */
-          mpz_submul (mpq_numref(q), mpq_denref(q), z);
-
-Number Sequences
-     Functions like `mpz_fac_ui', `mpz_fib_ui' and `mpz_bin_uiui' are
-     designed for calculating isolated values.  If a range of values is
-     wanted it's probably best to call to get a starting point and
-     iterate from there.
-
-Text Input/Output
-     Hexadecimal or octal are suggested for input or output in text
-     form.  Power-of-2 bases like these can be converted much more
-     efficiently than other bases, like decimal.  For big numbers
-     there's usually nothing of particular interest to be seen in the
-     digits, so the base doesn't matter much.
-
-     Maybe we can hope octal will one day become the normal base for
-     everyday use, as proposed by King Charles XII of Sweden and later
-     reformers.
-
-\1f
-File: gmp.info,  Node: Debugging,  Next: Profiling,  Prev: Efficiency,  Up: GMP Basics
-
-3.12 Debugging
-==============
-
-Stack Overflow
-     Depending on the system, a segmentation violation or bus error
-     might be the only indication of stack overflow.  See
-     `--enable-alloca' choices in *Note Build Options::, for how to
-     address this.
-
-     In new enough versions of GCC, `-fstack-check' may be able to
-     ensure an overflow is recognised by the system before too much
-     damage is done, or `-fstack-limit-symbol' or
-     `-fstack-limit-register' may be able to add checking if the system
-     itself doesn't do any (*note Options for Code Generation:
-     (gcc)Code Gen Options.).  These options must be added to the
-     `CFLAGS' used in the GMP build (*note Build Options::), adding
-     them just to an application will have no effect.  Note also
-     they're a slowdown, adding overhead to each function call and each
-     stack allocation.
-
-Heap Problems
-     The most likely cause of application problems with GMP is heap
-     corruption.  Failing to `init' GMP variables will have
-     unpredictable effects, and corruption arising elsewhere in a
-     program may well affect GMP.  Initializing GMP variables more than
-     once or failing to clear them will cause memory leaks.
-
-     In all such cases a `malloc' debugger is recommended.  On a GNU or
-     BSD system the standard C library `malloc' has some diagnostic
-     facilities, see *Note Allocation Debugging: (libc)Allocation
-     Debugging, or `man 3 malloc'.  Other possibilities, in no
-     particular order, include
-
-          `http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/'
-          `http://dmalloc.com/'
-          `http://www.perens.com/FreeSoftware/'  (electric fence)
-          `http://packages.debian.org/stable/devel/fda'
-          `http://www.gnupdate.org/components/leakbug/'
-          `http://people.redhat.com/~otaylor/memprof/'
-          `http://www.cbmamiga.demon.co.uk/mpatrol/'
-
-     The GMP default allocation routines in `memory.c' also have a
-     simple sentinel scheme which can be enabled with `#define DEBUG'
-     in that file.  This is mainly designed for detecting buffer
-     overruns during GMP development, but might find other uses.
-
-Stack Backtraces
-     On some systems the compiler options GMP uses by default can
-     interfere with debugging.  In particular on x86 and 68k systems
-     `-fomit-frame-pointer' is used and this generally inhibits stack
-     backtracing.  Recompiling without such options may help while
-     debugging, though the usual caveats about it potentially moving a
-     memory problem or hiding a compiler bug will apply.
-
-GDB, the GNU Debugger
-     A sample `.gdbinit' is included in the distribution, showing how
-     to call some undocumented dump functions to print GMP variables
-     from within GDB.  Note that these functions shouldn't be used in
-     final application code since they're undocumented and may be
-     subject to incompatible changes in future versions of GMP.
-
-Source File Paths
-     GMP has multiple source files with the same name, in different
-     directories.  For example `mpz', `mpq' and `mpf' each have an
-     `init.c'.  If the debugger can't already determine the right one
-     it may help to build with absolute paths on each C file.  One way
-     to do that is to use a separate object directory with an absolute
-     path to the source directory.
-
-          cd /my/build/dir
-          /my/source/dir/gmp-5.0.1/configure
-
-     This works via `VPATH', and might require GNU `make'.  Alternately
-     it might be possible to change the `.c.lo' rules appropriately.
-
-Assertion Checking
-     The build option `--enable-assert' is available to add some
-     consistency checks to the library (see *Note Build Options::).
-     These are likely to be of limited value to most applications.
-     Assertion failures are just as likely to indicate memory
-     corruption as a library or compiler bug.
-
-     Applications using the low-level `mpn' functions, however, will
-     benefit from `--enable-assert' since it adds checks on the
-     parameters of most such functions, many of which have subtle
-     restrictions on their usage.  Note however that only the generic C
-     code has checks, not the assembly code, so CPU `none' should be
-     used for maximum checking.
-
-Temporary Memory Checking
-     The build option `--enable-alloca=debug' arranges that each block
-     of temporary memory in GMP is allocated with a separate call to
-     `malloc' (or the allocation function set with
-     `mp_set_memory_functions').
-
-     This can help a malloc debugger detect accesses outside the
-     intended bounds, or detect memory not released.  In a normal
-     build, on the other hand, temporary memory is allocated in blocks
-     which GMP divides up for its own use, or may be allocated with a
-     compiler builtin `alloca' which will go nowhere near any malloc
-     debugger hooks.
-
-Maximum Debuggability
-     To summarize the above, a GMP build for maximum debuggability
-     would be
-
-          ./configure --disable-shared --enable-assert \
-            --enable-alloca=debug --host=none CFLAGS=-g
-
-     For C++, add `--enable-cxx CXXFLAGS=-g'.
-
-Checker
-     The GCC checker (`http://savannah.nongnu.org/projects/checker/')
-     can be used with GMP.  It contains a stub library which means GMP
-     applications compiled with checker can use a normal GMP build.
-
-     A build of GMP with checking within GMP itself can be made.  This
-     will run very very slowly.  On GNU/Linux for example,
-
-          ./configure --host=none-pc-linux-gnu CC=checkergcc
-
-     `--host=none' must be used, since the GMP assembly code doesn't
-     support the checking scheme.  The GMP C++ features cannot be used,
-     since current versions of checker (0.9.9.1) don't yet support the
-     standard C++ library.
-
-Valgrind
-     The valgrind program (`http://valgrind.org/') is a memory checker
-     for x86s.  It translates and emulates machine instructions to do
-     strong checks for uninitialized data (at the level of individual
-     bits), memory accesses through bad pointers, and memory leaks.
-
-     Recent versions of Valgrind are getting support for MMX and
-     SSE/SSE2 instructions, for past versions GMP will need to be
-     configured not to use those, ie. for an x86 without them (for
-     instance plain `i486').
-
-Other Problems
-     Any suspected bug in GMP itself should be isolated to make sure
-     it's not an application problem, see *Note Reporting Bugs::.
-
-\1f
-File: gmp.info,  Node: Profiling,  Next: Autoconf,  Prev: Debugging,  Up: GMP Basics
-
-3.13 Profiling
-==============
-
-Running a program under a profiler is a good way to find where it's
-spending most time and where improvements can be best sought.  The
-profiling choices for a GMP build are as follows.
-
-`--disable-profiling'
-     The default is to add nothing special for profiling.
-
-     It should be possible to just compile the mainline of a program
-     with `-p' and use `prof' to get a profile consisting of
-     timer-based sampling of the program counter.  Most of the GMP
-     assembly code has the necessary symbol information.
-
-     This approach has the advantage of minimizing interference with
-     normal program operation, but on most systems the resolution of
-     the sampling is quite low (10 milliseconds for instance),
-     requiring long runs to get accurate information.
-
-`--enable-profiling=prof'
-     Build with support for the system `prof', which means `-p' added
-     to the `CFLAGS'.
-
-     This provides call counting in addition to program counter
-     sampling, which allows the most frequently called routines to be
-     identified, and an average time spent in each routine to be
-     determined.
-
-     The x86 assembly code has support for this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-p' and therefore won't appear in the call counts.
-
-     On some systems, such as GNU/Linux, `-p' in fact means `-pg' and in
-     this case `--enable-profiling=gprof' described below should be used
-     instead.
-
-`--enable-profiling=gprof'
-     Build with support for `gprof', which means `-pg' added to the
-     `CFLAGS'.
-
-     This provides call graph construction in addition to call counting
-     and program counter sampling, which makes it possible to count
-     calls coming from different locations.  For example the number of
-     calls to `mpn_mul' from `mpz_mul' versus the number from
-     `mpf_mul'.  The program counter sampling is still flat though, so
-     only a total time in `mpn_mul' would be accumulated, not a
-     separate amount for each call site.
-
-     The x86 assembly code has support for this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-pg' and therefore not be included in the call counts.
-
-     On x86 and m68k systems `-pg' and `-fomit-frame-pointer' are
-     incompatible, so the latter is omitted from the default flags in
-     that case, which might result in poorer code generation.
-
-     Incidentally, it should be possible to use the `gprof' program
-     with a plain `--enable-profiling=prof' build.  But in that case
-     only the `gprof -p' flat profile and call counts can be expected
-     to be valid, not the `gprof -q' call graph.
-
-`--enable-profiling=instrument'
-     Build with the GCC option `-finstrument-functions' added to the
-     `CFLAGS' (*note Options for Code Generation: (gcc)Code Gen
-     Options.).
-
-     This inserts special instrumenting calls at the start and end of
-     each function, allowing exact timing and full call graph
-     construction.
-
-     This instrumenting is not normally a standard system feature and
-     will require support from an external library, such as
-
-          `http://sourceforge.net/projects/fnccheck/'
-
-     This should be included in `LIBS' during the GMP configure so that
-     test programs will link.  For example,
-
-          ./configure --enable-profiling=instrument LIBS=-lfc
-
-     On a GNU system the C library provides dummy instrumenting
-     functions, so programs compiled with this option will link.  In
-     this case it's only necessary to ensure the correct library is
-     added when linking an application.
-
-     The x86 assembly code supports this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-finstrument-functions' meaning time spent in them will
-     effectively be attributed to their caller.
-
-\1f
-File: gmp.info,  Node: Autoconf,  Next: Emacs,  Prev: Profiling,  Up: GMP Basics
-
-3.14 Autoconf
-=============
-
-Autoconf based applications can easily check whether GMP is installed.
-The only thing to be noted is that GMP library symbols from version 3
-onwards have prefixes like `__gmpz'.  The following therefore would be
-a simple test,
-
-     AC_CHECK_LIB(gmp, __gmpz_init)
-
-   This just uses the default `AC_CHECK_LIB' actions for found or not
-found, but an application that must have GMP would want to generate an
-error if not found.  For example,
-
-     AC_CHECK_LIB(gmp, __gmpz_init, ,
-       [AC_MSG_ERROR([GNU MP not found, see http://gmplib.org/])])
-
-   If functions added in some particular version of GMP are required,
-then one of those can be used when checking.  For example `mpz_mul_si'
-was added in GMP 3.1,
-
-     AC_CHECK_LIB(gmp, __gmpz_mul_si, ,
-       [AC_MSG_ERROR(
-       [GNU MP not found, or not 3.1 or up, see http://gmplib.org/])])
-
-   An alternative would be to test the version number in `gmp.h' using
-say `AC_EGREP_CPP'.  That would make it possible to test the exact
-version, if some particular sub-minor release is known to be necessary.
-
-   In general it's recommended that applications should simply demand a
-new enough GMP rather than trying to provide supplements for features
-not available in past versions.
-
-   Occasionally an application will need or want to know the size of a
-type at configuration or preprocessing time, not just with `sizeof' in
-the code.  This can be done in the normal way with `mp_limb_t' etc, but
-GMP 4.0 or up is best for this, since prior versions needed certain
-`-D' defines on systems using a `long long' limb.  The following would
-suit Autoconf 2.50 or up,
-
-     AC_CHECK_SIZEOF(mp_limb_t, , [#include <gmp.h>])
-
-\1f
-File: gmp.info,  Node: Emacs,  Prev: Autoconf,  Up: GMP Basics
-
-3.15 Emacs
-==========
-
-<C-h C-i> (`info-lookup-symbol') is a good way to find documentation on
-C functions while editing (*note Info Documentation Lookup: (emacs)Info
-Lookup.).
-
-   The GMP manual can be included in such lookups by putting the
-following in your `.emacs',
-
-     (eval-after-load "info-look"
-       '(let ((mode-value (assoc 'c-mode (assoc 'symbol info-lookup-alist))))
-          (setcar (nthcdr 3 mode-value)
-                  (cons '("(gmp)Function Index" nil "^ -.* " "\\>")
-                        (nth 3 mode-value)))))
-
-\1f
-File: gmp.info,  Node: Reporting Bugs,  Next: Integer Functions,  Prev: GMP Basics,  Up: Top
-
-4 Reporting Bugs
-****************
-
-If you think you have found a bug in the GMP library, please
-investigate it and report it.  We have made this library available to
-you, and it is not too much to ask you to report the bugs you find.
-
-   Before you report a bug, check it's not already addressed in *Note
-Known Build Problems::, or perhaps *Note Notes for Particular
-Systems::.  You may also want to check `http://gmplib.org/' for patches
-for this release.
-
-   Please include the following in any report,
-
-   * The GMP version number, and if pre-packaged or patched then say so.
-
-   * A test program that makes it possible for us to reproduce the bug.
-     Include instructions on how to run the program.
-
-   * A description of what is wrong.  If the results are incorrect, in
-     what way.  If you get a crash, say so.
-
-   * If you get a crash, include a stack backtrace from the debugger if
-     it's informative (`where' in `gdb', or `$C' in `adb').
-
-   * Please do not send core dumps, executables or `strace's.
-
-   * The configuration options you used when building GMP, if any.
-
-   * The name of the compiler and its version.  For `gcc', get the
-     version with `gcc -v', otherwise perhaps `what `which cc`', or
-     similar.
-
-   * The output from running `uname -a'.
-
-   * The output from running `./config.guess', and from running
-     `./configfsf.guess' (might be the same).
-
-   * If the bug is related to `configure', then the compressed contents
-     of `config.log'.
-
-   * If the bug is related to an `asm' file not assembling, then the
-     contents of `config.m4' and the offending line or lines from the
-     temporary `mpn/tmp-<file>.s'.
-
-   Please make an effort to produce a self-contained report, with
-something definite that can be tested or debugged.  Vague queries or
-piecemeal messages are difficult to act on and don't help the
-development effort.
-
-   It is not uncommon that an observed problem is actually due to a bug
-in the compiler; the GMP code tends to explore interesting corners in
-compilers.
-
-   If your bug report is good, we will do our best to help you get a
-corrected version of the library; if the bug report is poor, we won't
-do anything about it (except maybe ask you to send a better report).
-
-   Send your report to: <gmp-bugs@gmplib.org>.
-
-   If you think something in this manual is unclear, or downright
-incorrect, or if the language needs to be improved, please send a note
-to the same address.
-
-\1f
-File: gmp.info,  Node: Integer Functions,  Next: Rational Number Functions,  Prev: Reporting Bugs,  Up: Top
-
-5 Integer Functions
-*******************
-
-This chapter describes the GMP functions for performing integer
-arithmetic.  These functions start with the prefix `mpz_'.
-
-   GMP integers are stored in objects of type `mpz_t'.
-
-* Menu:
-
-* Initializing Integers::
-* Assigning Integers::
-* Simultaneous Integer Init & Assign::
-* Converting Integers::
-* Integer Arithmetic::
-* Integer Division::
-* Integer Exponentiation::
-* Integer Roots::
-* Number Theoretic Functions::
-* Integer Comparisons::
-* Integer Logic and Bit Fiddling::
-* I/O of Integers::
-* Integer Random Numbers::
-* Integer Import and Export::
-* Miscellaneous Integer Functions::
-* Integer Special Functions::
-
-\1f
-File: gmp.info,  Node: Initializing Integers,  Next: Assigning Integers,  Prev: Integer Functions,  Up: Integer Functions
-
-5.1 Initialization Functions
-============================
-
-The functions for integer arithmetic assume that all integer objects are
-initialized.  You do that by calling the function `mpz_init'.  For
-example,
-
-     {
-       mpz_t integ;
-       mpz_init (integ);
-       ...
-       mpz_add (integ, ...);
-       ...
-       mpz_sub (integ, ...);
-
-       /* Unless the program is about to exit, do ... */
-       mpz_clear (integ);
-     }
-
-   As you can see, you can store new values any number of times, once an
-object is initialized.
-
- -- Function: void mpz_init (mpz_t X)
-     Initialize X, and set its value to 0.
-
- -- Function: void mpz_inits (mpz_t X, ...)
-     Initialize a NULL-terminated list of `mpz_t' variables, and set
-     their values to 0.
-
- -- Function: void mpz_init2 (mpz_t X, mp_bitcnt_t N)
-     Initialize X, with space for N-bit numbers, and set its value to 0.
-     Calling this function instead of `mpz_init' or `mpz_inits' is never
-     necessary; reallocation is handled automatically by GMP when
-     needed.
-
-     N is only the initial space, X will grow automatically in the
-     normal way, if necessary, for subsequent values stored.
-     `mpz_init2' makes it possible to avoid such reallocations if a
-     maximum size is known in advance.
-
- -- Function: void mpz_clear (mpz_t X)
-     Free the space occupied by X.  Call this function for all `mpz_t'
-     variables when you are done with them.
-
- -- Function: void mpz_clears (mpz_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpz_t'
-     variables.
-
- -- Function: void mpz_realloc2 (mpz_t X, mp_bitcnt_t N)
-     Change the space allocated for X to N bits.  The value in X is
-     preserved if it fits, or is set to 0 if not.
-
-     Calling this function is never necessary; reallocation is handled
-     automatically by GMP when needed.  But this function can be used
-     to increase the space for a variable in order to avoid repeated
-     automatic reallocations, or to decrease it to give memory back to
-     the heap.
-
-\1f
-File: gmp.info,  Node: Assigning Integers,  Next: Simultaneous Integer Init & Assign,  Prev: Initializing Integers,  Up: Integer Functions
-
-5.2 Assignment Functions
-========================
-
-These functions assign new values to already initialized integers
-(*note Initializing Integers::).
-
- -- Function: void mpz_set (mpz_t ROP, mpz_t OP)
- -- Function: void mpz_set_ui (mpz_t ROP, unsigned long int OP)
- -- Function: void mpz_set_si (mpz_t ROP, signed long int OP)
- -- Function: void mpz_set_d (mpz_t ROP, double OP)
- -- Function: void mpz_set_q (mpz_t ROP, mpq_t OP)
- -- Function: void mpz_set_f (mpz_t ROP, mpf_t OP)
-     Set the value of ROP from OP.
-
-     `mpz_set_d', `mpz_set_q' and `mpz_set_f' truncate OP to make it an
-     integer.
-
- -- Function: int mpz_set_str (mpz_t ROP, char *STR, int BASE)
-     Set the value of ROP from STR, a null-terminated C string in base
-     BASE.  White space is allowed in the string, and is simply ignored.
-
-     The BASE may vary from 2 to 62, or if BASE is 0, then the leading
-     characters are used: `0x' and `0X' for hexadecimal, `0b' and `0B'
-     for binary, `0' for octal, or decimal otherwise.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value.  For bases 37 to 62, upper-case
-     letter represent the usual 10..35 while lower-case letter
-     represent 36..61.
-
-     This function returns 0 if the entire string is a valid number in
-     base BASE.  Otherwise it returns -1.
-
- -- Function: void mpz_swap (mpz_t ROP1, mpz_t ROP2)
-     Swap the values ROP1 and ROP2 efficiently.
-
-\1f
-File: gmp.info,  Node: Simultaneous Integer Init & Assign,  Next: Converting Integers,  Prev: Assigning Integers,  Up: Integer Functions
-
-5.3 Combined Initialization and Assignment Functions
-====================================================
-
-For convenience, GMP provides a parallel series of initialize-and-set
-functions which initialize the output and then store the value there.
-These functions' names have the form `mpz_init_set...'
-
-   Here is an example of using one:
-
-     {
-       mpz_t pie;
-       mpz_init_set_str (pie, "3141592653589793238462643383279502884", 10);
-       ...
-       mpz_sub (pie, ...);
-       ...
-       mpz_clear (pie);
-     }
-
-Once the integer has been initialized by any of the `mpz_init_set...'
-functions, it can be used as the source or destination operand for the
-ordinary integer functions.  Don't use an initialize-and-set function
-on a variable already initialized!
-
- -- Function: void mpz_init_set (mpz_t ROP, mpz_t OP)
- -- Function: void mpz_init_set_ui (mpz_t ROP, unsigned long int OP)
- -- Function: void mpz_init_set_si (mpz_t ROP, signed long int OP)
- -- Function: void mpz_init_set_d (mpz_t ROP, double OP)
-     Initialize ROP with limb space and set the initial numeric value
-     from OP.
-
- -- Function: int mpz_init_set_str (mpz_t ROP, char *STR, int BASE)
-     Initialize ROP and set its value like `mpz_set_str' (see its
-     documentation above for details).
-
-     If the string is a correct base BASE number, the function returns
-     0; if an error occurs it returns -1.  ROP is initialized even if
-     an error occurs.  (I.e., you have to call `mpz_clear' for it.)
-
-\1f
-File: gmp.info,  Node: Converting Integers,  Next: Integer Arithmetic,  Prev: Simultaneous Integer Init & Assign,  Up: Integer Functions
-
-5.4 Conversion Functions
-========================
-
-This section describes functions for converting GMP integers to
-standard C types.  Functions for converting _to_ GMP integers are
-described in *Note Assigning Integers:: and *Note I/O of Integers::.
-
- -- Function: unsigned long int mpz_get_ui (mpz_t OP)
-     Return the value of OP as an `unsigned long'.
-
-     If OP is too big to fit an `unsigned long' then just the least
-     significant bits that do fit are returned.  The sign of OP is
-     ignored, only the absolute value is used.
-
- -- Function: signed long int mpz_get_si (mpz_t OP)
-     If OP fits into a `signed long int' return the value of OP.
-     Otherwise return the least significant part of OP, with the same
-     sign as OP.
-
-     If OP is too big to fit in a `signed long int', the returned
-     result is probably not very useful.  To find out if the value will
-     fit, use the function `mpz_fits_slong_p'.
-
- -- Function: double mpz_get_d (mpz_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent from the conversion is too big, the result is
-     system dependent.  An infinity is returned where available.  A
-     hardware overflow trap may or may not occur.
-
- -- Function: double mpz_get_d_2exp (signed long int *EXP, mpz_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero), and returning the exponent separately.
-
-     The return value is in the range 0.5<=abs(D)<1 and the exponent is
-     stored to `*EXP'.  D * 2^EXP is the (truncated) OP value.  If OP
-     is zero, the return is 0.0 and 0 is stored to `*EXP'.
-
-     This is similar to the standard C `frexp' function (*note
-     Normalization Functions: (libc)Normalization Functions.).
-
- -- Function: char * mpz_get_str (char *STR, int BASE, mpz_t OP)
-     Convert OP to a string of digits in base BASE.  The base argument
-     may vary from 2 to 62 or from -2 to -36.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of storage large
-     enough for the result, that being `mpz_sizeinbase (OP, BASE) + 2'.
-     The two extra bytes are for a possible minus sign, and the
-     null-terminator.
-
-     A pointer to the result string is returned, being either the
-     allocated block, or the given STR.
-
-\1f
-File: gmp.info,  Node: Integer Arithmetic,  Next: Integer Division,  Prev: Converting Integers,  Up: Integer Functions
-
-5.5 Arithmetic Functions
-========================
-
- -- Function: void mpz_add (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_add_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 + OP2.
-
- -- Function: void mpz_sub (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_sub_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
- -- Function: void mpz_ui_sub (mpz_t ROP, unsigned long int OP1, mpz_t
-          OP2)
-     Set ROP to OP1 - OP2.
-
- -- Function: void mpz_mul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_mul_si (mpz_t ROP, mpz_t OP1, long int OP2)
- -- Function: void mpz_mul_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 times OP2.
-
- -- Function: void mpz_addmul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_addmul_ui (mpz_t ROP, mpz_t OP1, unsigned long
-          int OP2)
-     Set ROP to ROP + OP1 times OP2.
-
- -- Function: void mpz_submul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_submul_ui (mpz_t ROP, mpz_t OP1, unsigned long
-          int OP2)
-     Set ROP to ROP - OP1 times OP2.
-
- -- Function: void mpz_mul_2exp (mpz_t ROP, mpz_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.  This operation can also be
-     defined as a left shift by OP2 bits.
-
- -- Function: void mpz_neg (mpz_t ROP, mpz_t OP)
-     Set ROP to -OP.
-
- -- Function: void mpz_abs (mpz_t ROP, mpz_t OP)
-     Set ROP to the absolute value of OP.
-
-\1f
-File: gmp.info,  Node: Integer Division,  Next: Integer Exponentiation,  Prev: Integer Arithmetic,  Up: Integer Functions
-
-5.6 Division Functions
-======================
-
-Division is undefined if the divisor is zero.  Passing a zero divisor
-to the division or modulo functions (including the modular powering
-functions `mpz_powm' and `mpz_powm_ui'), will cause an intentional
-division by zero.  This lets a program handle arithmetic exceptions in
-these functions the same way as for normal C `int' arithmetic.
-
- -- Function: void mpz_cdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_cdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_cdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_cdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_cdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_cdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
- -- Function: void mpz_fdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_fdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_fdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_fdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_fdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_fdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
- -- Function: void mpz_tdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_tdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_tdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_tdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_tdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_tdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
-     Divide N by D, forming a quotient Q and/or remainder R.  For the
-     `2exp' functions, D=2^B.  The rounding is in three styles, each
-     suiting different applications.
-
-        * `cdiv' rounds Q up towards +infinity, and R will have the
-          opposite sign to D.  The `c' stands for "ceil".
-
-        * `fdiv' rounds Q down towards -infinity, and R will have the
-          same sign as D.  The `f' stands for "floor".
-
-        * `tdiv' rounds Q towards zero, and R will have the same sign
-          as N.  The `t' stands for "truncate".
-
-     In all cases Q and R will satisfy N=Q*D+R, and R will satisfy
-     0<=abs(R)<abs(D).
-
-     The `q' functions calculate only the quotient, the `r' functions
-     only the remainder, and the `qr' functions calculate both.  Note
-     that for `qr' the same variable cannot be passed for both Q and R,
-     or results will be unpredictable.
-
-     For the `ui' variants the return value is the remainder, and in
-     fact returning the remainder is all the `div_ui' functions do.  For
-     `tdiv' and `cdiv' the remainder can be negative, so for those the
-     return value is the absolute value of the remainder.
-
-     For the `2exp' variants the divisor is 2^B.  These functions are
-     implemented as right shifts and bit masks, but of course they
-     round the same as the other functions.
-
-     For positive N both `mpz_fdiv_q_2exp' and `mpz_tdiv_q_2exp' are
-     simple bitwise right shifts.  For negative N, `mpz_fdiv_q_2exp' is
-     effectively an arithmetic right shift treating N as twos complement
-     the same as the bitwise logical functions do, whereas
-     `mpz_tdiv_q_2exp' effectively treats N as sign and magnitude.
-
- -- Function: void mpz_mod (mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_mod_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
-     Set R to N `mod' D.  The sign of the divisor is ignored; the
-     result is always non-negative.
-
-     `mpz_mod_ui' is identical to `mpz_fdiv_r_ui' above, returning the
-     remainder as well as setting R.  See `mpz_fdiv_ui' above if only
-     the return value is wanted.
-
- -- Function: void mpz_divexact (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_divexact_ui (mpz_t Q, mpz_t N, unsigned long D)
-     Set Q to N/D.  These functions produce correct results only when
-     it is known in advance that D divides N.
-
-     These routines are much faster than the other division functions,
-     and are the best choice when exact division is known to occur, for
-     example reducing a rational to lowest terms.
-
- -- Function: int mpz_divisible_p (mpz_t N, mpz_t D)
- -- Function: int mpz_divisible_ui_p (mpz_t N, unsigned long int D)
- -- Function: int mpz_divisible_2exp_p (mpz_t N, mp_bitcnt_t B)
-     Return non-zero if N is exactly divisible by D, or in the case of
-     `mpz_divisible_2exp_p' by 2^B.
-
-     N is divisible by D if there exists an integer Q satisfying N =
-     Q*D.  Unlike the other division functions, D=0 is accepted and
-     following the rule it can be seen that only 0 is considered
-     divisible by 0.
-
- -- Function: int mpz_congruent_p (mpz_t N, mpz_t C, mpz_t D)
- -- Function: int mpz_congruent_ui_p (mpz_t N, unsigned long int C,
-          unsigned long int D)
- -- Function: int mpz_congruent_2exp_p (mpz_t N, mpz_t C, mp_bitcnt_t B)
-     Return non-zero if N is congruent to C modulo D, or in the case of
-     `mpz_congruent_2exp_p' modulo 2^B.
-
-     N is congruent to C mod D if there exists an integer Q satisfying
-     N = C + Q*D.  Unlike the other division functions, D=0 is accepted
-     and following the rule it can be seen that N and C are considered
-     congruent mod 0 only when exactly equal.
-
-\1f
-File: gmp.info,  Node: Integer Exponentiation,  Next: Integer Roots,  Prev: Integer Division,  Up: Integer Functions
-
-5.7 Exponentiation Functions
-============================
-
- -- Function: void mpz_powm (mpz_t ROP, mpz_t BASE, mpz_t EXP, mpz_t
-          MOD)
- -- Function: void mpz_powm_ui (mpz_t ROP, mpz_t BASE, unsigned long
-          int EXP, mpz_t MOD)
-     Set ROP to (BASE raised to EXP) modulo MOD.
-
-     Negative EXP is supported if an inverse BASE^-1 mod MOD exists
-     (see `mpz_invert' in *Note Number Theoretic Functions::).  If an
-     inverse doesn't exist then a divide by zero is raised.
-
- -- Function: void mpz_powm_sec (mpz_t ROP, mpz_t BASE, mpz_t EXP,
-          mpz_t MOD)
-     Set ROP to (BASE raised to EXP) modulo MOD.
-
-     It is required that EXP > 0 and that MOD is odd.
-
-     This function is designed to take the same time and have the same
-     cache access patterns for any two same-size arguments, assuming
-     that function arguments are placed at the same position and that
-     the machine state is identical upon function entry.  This function
-     is intended for cryptographic purposes, where resilience to
-     side-channel attacks is desired.
-
- -- Function: void mpz_pow_ui (mpz_t ROP, mpz_t BASE, unsigned long int
-          EXP)
- -- Function: void mpz_ui_pow_ui (mpz_t ROP, unsigned long int BASE,
-          unsigned long int EXP)
-     Set ROP to BASE raised to EXP.  The case 0^0 yields 1.
-
-\1f
-File: gmp.info,  Node: Integer Roots,  Next: Number Theoretic Functions,  Prev: Integer Exponentiation,  Up: Integer Functions
-
-5.8 Root Extraction Functions
-=============================
-
- -- Function: int mpz_root (mpz_t ROP, mpz_t OP, unsigned long int N)
-     Set ROP to  the truncated integer part of the Nth root of OP.
-     Return non-zero if the computation was exact, i.e., if OP is ROP
-     to the Nth power.
-
- -- Function: void mpz_rootrem (mpz_t ROOT, mpz_t REM, mpz_t U,
-          unsigned long int N)
-     Set ROOT to  the truncated integer part of the Nth root of U.  Set
-     REM to the remainder, U-ROOT**N.
-
- -- Function: void mpz_sqrt (mpz_t ROP, mpz_t OP)
-     Set ROP to  the truncated integer part of the square root of OP.
-
- -- Function: void mpz_sqrtrem (mpz_t ROP1, mpz_t ROP2, mpz_t OP)
-     Set ROP1 to the truncated integer part of the square root of OP,
-     like `mpz_sqrt'.  Set ROP2 to the remainder OP-ROP1*ROP1, which
-     will be zero if OP is a perfect square.
-
-     If ROP1 and ROP2 are the same variable, the results are undefined.
-
- -- Function: int mpz_perfect_power_p (mpz_t OP)
-     Return non-zero if OP is a perfect power, i.e., if there exist
-     integers A and B, with B>1, such that OP equals A raised to the
-     power B.
-
-     Under this definition both 0 and 1 are considered to be perfect
-     powers.  Negative values of OP are accepted, but of course can
-     only be odd perfect powers.
-
- -- Function: int mpz_perfect_square_p (mpz_t OP)
-     Return non-zero if OP is a perfect square, i.e., if the square
-     root of OP is an integer.  Under this definition both 0 and 1 are
-     considered to be perfect squares.
-
-\1f
-File: gmp.info,  Node: Number Theoretic Functions,  Next: Integer Comparisons,  Prev: Integer Roots,  Up: Integer Functions
-
-5.9 Number Theoretic Functions
-==============================
-
- -- Function: int mpz_probab_prime_p (mpz_t N, int REPS)
-     Determine whether N is prime.  Return 2 if N is definitely prime,
-     return 1 if N is probably prime (without being certain), or return
-     0 if N is definitely composite.
-
-     This function does some trial divisions, then some Miller-Rabin
-     probabilistic primality tests.  REPS controls how many such tests
-     are done, 5 to 10 is a reasonable number, more will reduce the
-     chances of a composite being returned as "probably prime".
-
-     Miller-Rabin and similar tests can be more properly called
-     compositeness tests.  Numbers which fail are known to be composite
-     but those which pass might be prime or might be composite.  Only a
-     few composites pass, hence those which pass are considered
-     probably prime.
-
- -- Function: void mpz_nextprime (mpz_t ROP, mpz_t OP)
-     Set ROP to the next prime greater than OP.
-
-     This function uses a probabilistic algorithm to identify primes.
-     For practical purposes it's adequate, the chance of a composite
-     passing will be extremely small.
-
- -- Function: void mpz_gcd (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to the greatest common divisor of OP1 and OP2.  The result
-     is always positive even if one or both input operands are negative.
-
- -- Function: unsigned long int mpz_gcd_ui (mpz_t ROP, mpz_t OP1,
-          unsigned long int OP2)
-     Compute the greatest common divisor of OP1 and OP2.  If ROP is not
-     `NULL', store the result there.
-
-     If the result is small enough to fit in an `unsigned long int', it
-     is returned.  If the result does not fit, 0 is returned, and the
-     result is equal to the argument OP1.  Note that the result will
-     always fit if OP2 is non-zero.
-
- -- Function: void mpz_gcdext (mpz_t G, mpz_t S, mpz_t T, mpz_t A,
-          mpz_t B)
-     Set G to the greatest common divisor of A and B, and in addition
-     set S and T to coefficients satisfying A*S + B*T = G.  The value
-     in G is always positive, even if one or both of A and B are
-     negative.  The values in S and T are chosen such that abs(S) <=
-     abs(B) and abs(T) <= abs(A).
-
-     If T is `NULL' then that value is not computed.
-
- -- Function: void mpz_lcm (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_lcm_ui (mpz_t ROP, mpz_t OP1, unsigned long OP2)
-     Set ROP to the least common multiple of OP1 and OP2.  ROP is
-     always positive, irrespective of the signs of OP1 and OP2.  ROP
-     will be zero if either OP1 or OP2 is zero.
-
- -- Function: int mpz_invert (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Compute the inverse of OP1 modulo OP2 and put the result in ROP.
-     If the inverse exists, the return value is non-zero and ROP will
-     satisfy 0 <= ROP < OP2.  If an inverse doesn't exist the return
-     value is zero and ROP is undefined.
-
- -- Function: int mpz_jacobi (mpz_t A, mpz_t B)
-     Calculate the Jacobi symbol (A/B).  This is defined only for B odd.
-
- -- Function: int mpz_legendre (mpz_t A, mpz_t P)
-     Calculate the Legendre symbol (A/P).  This is defined only for P
-     an odd positive prime, and for such P it's identical to the Jacobi
-     symbol.
-
- -- Function: int mpz_kronecker (mpz_t A, mpz_t B)
- -- Function: int mpz_kronecker_si (mpz_t A, long B)
- -- Function: int mpz_kronecker_ui (mpz_t A, unsigned long B)
- -- Function: int mpz_si_kronecker (long A, mpz_t B)
- -- Function: int mpz_ui_kronecker (unsigned long A, mpz_t B)
-     Calculate the Jacobi symbol (A/B) with the Kronecker extension
-     (a/2)=(2/a) when a odd, or (a/2)=0 when a even.
-
-     When B is odd the Jacobi symbol and Kronecker symbol are
-     identical, so `mpz_kronecker_ui' etc can be used for mixed
-     precision Jacobi symbols too.
-
-     For more information see Henri Cohen section 1.4.2 (*note
-     References::), or any number theory textbook.  See also the
-     example program `demos/qcn.c' which uses `mpz_kronecker_ui'.
-
- -- Function: mp_bitcnt_t mpz_remove (mpz_t ROP, mpz_t OP, mpz_t F)
-     Remove all occurrences of the factor F from OP and store the
-     result in ROP.  The return value is how many such occurrences were
-     removed.
-
- -- Function: void mpz_fac_ui (mpz_t ROP, unsigned long int OP)
-     Set ROP to OP!, the factorial of OP.
-
- -- Function: void mpz_bin_ui (mpz_t ROP, mpz_t N, unsigned long int K)
- -- Function: void mpz_bin_uiui (mpz_t ROP, unsigned long int N,
-          unsigned long int K)
-     Compute the binomial coefficient N over K and store the result in
-     ROP.  Negative values of N are supported by `mpz_bin_ui', using
-     the identity bin(-n,k) = (-1)^k * bin(n+k-1,k), see Knuth volume 1
-     section 1.2.6 part G.
-
- -- Function: void mpz_fib_ui (mpz_t FN, unsigned long int N)
- -- Function: void mpz_fib2_ui (mpz_t FN, mpz_t FNSUB1, unsigned long
-          int N)
-     `mpz_fib_ui' sets FN to to F[n], the N'th Fibonacci number.
-     `mpz_fib2_ui' sets FN to F[n], and FNSUB1 to F[n-1].
-
-     These functions are designed for calculating isolated Fibonacci
-     numbers.  When a sequence of values is wanted it's best to start
-     with `mpz_fib2_ui' and iterate the defining F[n+1]=F[n]+F[n-1] or
-     similar.
-
- -- Function: void mpz_lucnum_ui (mpz_t LN, unsigned long int N)
- -- Function: void mpz_lucnum2_ui (mpz_t LN, mpz_t LNSUB1, unsigned
-          long int N)
-     `mpz_lucnum_ui' sets LN to to L[n], the N'th Lucas number.
-     `mpz_lucnum2_ui' sets LN to L[n], and LNSUB1 to L[n-1].
-
-     These functions are designed for calculating isolated Lucas
-     numbers.  When a sequence of values is wanted it's best to start
-     with `mpz_lucnum2_ui' and iterate the defining L[n+1]=L[n]+L[n-1]
-     or similar.
-
-     The Fibonacci numbers and Lucas numbers are related sequences, so
-     it's never necessary to call both `mpz_fib2_ui' and
-     `mpz_lucnum2_ui'.  The formulas for going from Fibonacci to Lucas
-     can be found in *Note Lucas Numbers Algorithm::, the reverse is
-     straightforward too.
-
-\1f
-File: gmp.info,  Node: Integer Comparisons,  Next: Integer Logic and Bit Fiddling,  Prev: Number Theoretic Functions,  Up: Integer Functions
-
-5.10 Comparison Functions
-=========================
-
- -- Function: int mpz_cmp (mpz_t OP1, mpz_t OP2)
- -- Function: int mpz_cmp_d (mpz_t OP1, double OP2)
- -- Macro: int mpz_cmp_si (mpz_t OP1, signed long int OP2)
- -- Macro: int mpz_cmp_ui (mpz_t OP1, unsigned long int OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, or a negative value if OP1 < OP2.
-
-     `mpz_cmp_ui' and `mpz_cmp_si' are macros and will evaluate their
-     arguments more than once.  `mpz_cmp_d' can be called with an
-     infinity, but results are undefined for a NaN.
-
- -- Function: int mpz_cmpabs (mpz_t OP1, mpz_t OP2)
- -- Function: int mpz_cmpabs_d (mpz_t OP1, double OP2)
- -- Function: int mpz_cmpabs_ui (mpz_t OP1, unsigned long int OP2)
-     Compare the absolute values of OP1 and OP2.  Return a positive
-     value if abs(OP1) > abs(OP2), zero if abs(OP1) = abs(OP2), or a
-     negative value if abs(OP1) < abs(OP2).
-
-     `mpz_cmpabs_d' can be called with an infinity, but results are
-     undefined for a NaN.
-
- -- Macro: int mpz_sgn (mpz_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates
-     its argument multiple times.
-
-\1f
-File: gmp.info,  Node: Integer Logic and Bit Fiddling,  Next: I/O of Integers,  Prev: Integer Comparisons,  Up: Integer Functions
-
-5.11 Logical and Bit Manipulation Functions
-===========================================
-
-These functions behave as if twos complement arithmetic were used
-(although sign-magnitude is the actual implementation).  The least
-significant bit is number 0.
-
- -- Function: void mpz_and (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise-and OP2.
-
- -- Function: void mpz_ior (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise inclusive-or OP2.
-
- -- Function: void mpz_xor (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise exclusive-or OP2.
-
- -- Function: void mpz_com (mpz_t ROP, mpz_t OP)
-     Set ROP to the one's complement of OP.
-
- -- Function: mp_bitcnt_t mpz_popcount (mpz_t OP)
-     If OP>=0, return the population count of OP, which is the number
-     of 1 bits in the binary representation.  If OP<0, the number of 1s
-     is infinite, and the return value is the largest possible
-     `mp_bitcnt_t'.
-
- -- Function: mp_bitcnt_t mpz_hamdist (mpz_t OP1, mpz_t OP2)
-     If OP1 and OP2 are both >=0 or both <0, return the hamming
-     distance between the two operands, which is the number of bit
-     positions where OP1 and OP2 have different bit values.  If one
-     operand is >=0 and the other <0 then the number of bits different
-     is infinite, and the return value is the largest possible
-     `mp_bitcnt_t'.
-
- -- Function: mp_bitcnt_t mpz_scan0 (mpz_t OP, mp_bitcnt_t STARTING_BIT)
- -- Function: mp_bitcnt_t mpz_scan1 (mpz_t OP, mp_bitcnt_t STARTING_BIT)
-     Scan OP, starting from bit STARTING_BIT, towards more significant
-     bits, until the first 0 or 1 bit (respectively) is found.  Return
-     the index of the found bit.
-
-     If the bit at STARTING_BIT is already what's sought, then
-     STARTING_BIT is returned.
-
-     If there's no bit found, then the largest possible `mp_bitcnt_t' is
-     returned.  This will happen in `mpz_scan0' past the end of a
-     negative number, or `mpz_scan1' past the end of a nonnegative
-     number.
-
- -- Function: void mpz_setbit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Set bit BIT_INDEX in ROP.
-
- -- Function: void mpz_clrbit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Clear bit BIT_INDEX in ROP.
-
- -- Function: void mpz_combit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Complement bit BIT_INDEX in ROP.
-
- -- Function: int mpz_tstbit (mpz_t OP, mp_bitcnt_t BIT_INDEX)
-     Test bit BIT_INDEX in OP and return 0 or 1 accordingly.
-
-\1f
-File: gmp.info,  Node: I/O of Integers,  Next: Integer Random Numbers,  Prev: Integer Logic and Bit Fiddling,  Up: Integer Functions
-
-5.12 Input and Output Functions
-===============================
-
-Functions that perform input from a stdio stream, and functions that
-output to a stdio stream.  Passing a `NULL' pointer for a STREAM
-argument to any of these functions will make them read from `stdin' and
-write to `stdout', respectively.
-
-   When using any of these functions, it is a good idea to include
-`stdio.h' before `gmp.h', since that will allow `gmp.h' to define
-prototypes for these functions.
-
- -- Function: size_t mpz_out_str (FILE *STREAM, int BASE, mpz_t OP)
-     Output OP on stdio stream STREAM, as a string of digits in base
-     BASE.  The base argument may vary from 2 to 62 or from -2 to -36.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
- -- Function: size_t mpz_inp_str (mpz_t ROP, FILE *STREAM, int BASE)
-     Input a possibly white-space preceded string in base BASE from
-     stdio stream STREAM, and put the read integer in ROP.
-
-     The BASE may vary from 2 to 62, or if BASE is 0, then the leading
-     characters are used: `0x' and `0X' for hexadecimal, `0b' and `0B'
-     for binary, `0' for octal, or decimal otherwise.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value.  For bases 37 to 62, upper-case
-     letter represent the usual 10..35 while lower-case letter
-     represent 36..61.
-
-     Return the number of bytes read, or if an error occurred, return 0.
-
- -- Function: size_t mpz_out_raw (FILE *STREAM, mpz_t OP)
-     Output OP on stdio stream STREAM, in raw binary format.  The
-     integer is written in a portable format, with 4 bytes of size
-     information, and that many bytes of limbs.  Both the size and the
-     limbs are written in decreasing significance order (i.e., in
-     big-endian).
-
-     The output can be read with `mpz_inp_raw'.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
-     The output of this can not be read by `mpz_inp_raw' from GMP 1,
-     because of changes necessary for compatibility between 32-bit and
-     64-bit machines.
-
- -- Function: size_t mpz_inp_raw (mpz_t ROP, FILE *STREAM)
-     Input from stdio stream STREAM in the format written by
-     `mpz_out_raw', and put the result in ROP.  Return the number of
-     bytes read, or if an error occurred, return 0.
-
-     This routine can read the output from `mpz_out_raw' also from GMP
-     1, in spite of changes necessary for compatibility between 32-bit
-     and 64-bit machines.
-
-\1f
-File: gmp.info,  Node: Integer Random Numbers,  Next: Integer Import and Export,  Prev: I/O of Integers,  Up: Integer Functions
-
-5.13 Random Number Functions
-============================
-
-The random number functions of GMP come in two groups; older function
-that rely on a global state, and newer functions that accept a state
-parameter that is read and modified.  Please see the *Note Random
-Number Functions:: for more information on how to use and not to use
-random number functions.
-
- -- Function: void mpz_urandomb (mpz_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t N)
-     Generate a uniformly distributed random integer in the range 0 to
-     2^N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_urandomm (mpz_t ROP, gmp_randstate_t STATE,
-          mpz_t N)
-     Generate a uniform random integer in the range 0 to N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_rrandomb (mpz_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t N)
-     Generate a random integer with long strings of zeros and ones in
-     the binary representation.  Useful for testing functions and
-     algorithms, since this kind of random numbers have proven to be
-     more likely to trigger corner-case bugs.  The random number will
-     be in the range 0 to 2^N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_random (mpz_t ROP, mp_size_t MAX_SIZE)
-     Generate a random integer of at most MAX_SIZE limbs.  The generated
-     random number doesn't satisfy any particular requirements of
-     randomness.  Negative random numbers are generated when MAX_SIZE
-     is negative.
-
-     This function is obsolete.  Use `mpz_urandomb' or `mpz_urandomm'
-     instead.
-
- -- Function: void mpz_random2 (mpz_t ROP, mp_size_t MAX_SIZE)
-     Generate a random integer of at most MAX_SIZE limbs, with long
-     strings of zeros and ones in the binary representation.  Useful
-     for testing functions and algorithms, since this kind of random
-     numbers have proven to be more likely to trigger corner-case bugs.
-     Negative random numbers are generated when MAX_SIZE is negative.
-
-     This function is obsolete.  Use `mpz_rrandomb' instead.
-
-\1f
-File: gmp.info,  Node: Integer Import and Export,  Next: Miscellaneous Integer Functions,  Prev: Integer Random Numbers,  Up: Integer Functions
-
-5.14 Integer Import and Export
-==============================
-
-`mpz_t' variables can be converted to and from arbitrary words of binary
-data with the following functions.
-
- -- Function: void mpz_import (mpz_t ROP, size_t COUNT, int ORDER,
-          size_t SIZE, int ENDIAN, size_t NAILS, const void *OP)
-     Set ROP from an array of word data at OP.
-
-     The parameters specify the format of the data.  COUNT many words
-     are read, each SIZE bytes.  ORDER can be 1 for most significant
-     word first or -1 for least significant first.  Within each word
-     ENDIAN can be 1 for most significant byte first, -1 for least
-     significant first, or 0 for the native endianness of the host CPU.
-     The most significant NAILS bits of each word are skipped, this
-     can be 0 to use the full words.
-
-     There is no sign taken from the data, ROP will simply be a positive
-     integer.  An application can handle any sign itself, and apply it
-     for instance with `mpz_neg'.
-
-     There are no data alignment restrictions on OP, any address is
-     allowed.
-
-     Here's an example converting an array of `unsigned long' data, most
-     significant element first, and host byte order within each value.
-
-          unsigned long  a[20];
-          /* Initialize Z and A */
-          mpz_import (z, 20, 1, sizeof(a[0]), 0, 0, a);
-
-     This example assumes the full `sizeof' bytes are used for data in
-     the given type, which is usually true, and certainly true for
-     `unsigned long' everywhere we know of.  However on Cray vector
-     systems it may be noted that `short' and `int' are always stored
-     in 8 bytes (and with `sizeof' indicating that) but use only 32 or
-     46 bits.  The NAILS feature can account for this, by passing for
-     instance `8*sizeof(int)-INT_BIT'.
-
- -- Function: void * mpz_export (void *ROP, size_t *COUNTP, int ORDER,
-          size_t SIZE, int ENDIAN, size_t NAILS, mpz_t OP)
-     Fill ROP with word data from OP.
-
-     The parameters specify the format of the data produced.  Each word
-     will be SIZE bytes and ORDER can be 1 for most significant word
-     first or -1 for least significant first.  Within each word ENDIAN
-     can be 1 for most significant byte first, -1 for least significant
-     first, or 0 for the native endianness of the host CPU.  The most
-     significant NAILS bits of each word are unused and set to zero,
-     this can be 0 to produce full words.
-
-     The number of words produced is written to `*COUNTP', or COUNTP
-     can be `NULL' to discard the count.  ROP must have enough space
-     for the data, or if ROP is `NULL' then a result array of the
-     necessary size is allocated using the current GMP allocation
-     function (*note Custom Allocation::).  In either case the return
-     value is the destination used, either ROP or the allocated block.
-
-     If OP is non-zero then the most significant word produced will be
-     non-zero.  If OP is zero then the count returned will be zero and
-     nothing written to ROP.  If ROP is `NULL' in this case, no block
-     is allocated, just `NULL' is returned.
-
-     The sign of OP is ignored, just the absolute value is exported.  An
-     application can use `mpz_sgn' to get the sign and handle it as
-     desired.  (*note Integer Comparisons::)
-
-     There are no data alignment restrictions on ROP, any address is
-     allowed.
-
-     When an application is allocating space itself the required size
-     can be determined with a calculation like the following.  Since
-     `mpz_sizeinbase' always returns at least 1, `count' here will be
-     at least one, which avoids any portability problems with
-     `malloc(0)', though if `z' is zero no space at all is actually
-     needed (or written).
-
-          numb = 8*size - nail;
-          count = (mpz_sizeinbase (z, 2) + numb-1) / numb;
-          p = malloc (count * size);
-
-\1f
-File: gmp.info,  Node: Miscellaneous Integer Functions,  Next: Integer Special Functions,  Prev: Integer Import and Export,  Up: Integer Functions
-
-5.15 Miscellaneous Functions
-============================
-
- -- Function: int mpz_fits_ulong_p (mpz_t OP)
- -- Function: int mpz_fits_slong_p (mpz_t OP)
- -- Function: int mpz_fits_uint_p (mpz_t OP)
- -- Function: int mpz_fits_sint_p (mpz_t OP)
- -- Function: int mpz_fits_ushort_p (mpz_t OP)
- -- Function: int mpz_fits_sshort_p (mpz_t OP)
-     Return non-zero iff the value of OP fits in an `unsigned long int',
-     `signed long int', `unsigned int', `signed int', `unsigned short
-     int', or `signed short int', respectively.  Otherwise, return zero.
-
- -- Macro: int mpz_odd_p (mpz_t OP)
- -- Macro: int mpz_even_p (mpz_t OP)
-     Determine whether OP is odd or even, respectively.  Return
-     non-zero if yes, zero if no.  These macros evaluate their argument
-     more than once.
-
- -- Function: size_t mpz_sizeinbase (mpz_t OP, int BASE)
-     Return the size of OP measured in number of digits in the given
-     BASE.  BASE can vary from 2 to 62.  The sign of OP is ignored,
-     just the absolute value is used.  The result will be either exact
-     or 1 too big.  If BASE is a power of 2, the result is always
-     exact.  If OP is zero the return value is always 1.
-
-     This function can be used to determine the space required when
-     converting OP to a string.  The right amount of allocation is
-     normally two more than the value returned by `mpz_sizeinbase', one
-     extra for a minus sign and one for the null-terminator.
-
-     It will be noted that `mpz_sizeinbase(OP,2)' can be used to locate
-     the most significant 1 bit in OP, counting from 1.  (Unlike the
-     bitwise functions which start from 0, *Note Logical and Bit
-     Manipulation Functions: Integer Logic and Bit Fiddling.)
-
-\1f
-File: gmp.info,  Node: Integer Special Functions,  Prev: Miscellaneous Integer Functions,  Up: Integer Functions
-
-5.16 Special Functions
-======================
-
-The functions in this section are for various special purposes.  Most
-applications will not need them.
-
- -- Function: void mpz_array_init (mpz_t INTEGER_ARRAY, mp_size_t
-          ARRAY_SIZE, mp_size_t FIXED_NUM_BITS)
-     This is a special type of initialization.  *Fixed* space of
-     FIXED_NUM_BITS is allocated to each of the ARRAY_SIZE integers in
-     INTEGER_ARRAY.  There is no way to free the storage allocated by
-     this function.  Don't call `mpz_clear'!
-
-     The INTEGER_ARRAY parameter is the first `mpz_t' in the array.  For
-     example,
-
-          mpz_t  arr[20000];
-          mpz_array_init (arr[0], 20000, 512);
-
-     This function is only intended for programs that create a large
-     number of integers and need to reduce memory usage by avoiding the
-     overheads of allocating and reallocating lots of small blocks.  In
-     normal programs this function is not recommended.
-
-     The space allocated to each integer by this function will not be
-     automatically increased, unlike the normal `mpz_init', so an
-     application must ensure it is sufficient for any value stored.
-     The following space requirements apply to various routines,
-
-        * `mpz_abs', `mpz_neg', `mpz_set', `mpz_set_si' and
-          `mpz_set_ui' need room for the value they store.
-
-        * `mpz_add', `mpz_add_ui', `mpz_sub' and `mpz_sub_ui' need room
-          for the larger of the two operands, plus an extra
-          `mp_bits_per_limb'.
-
-        * `mpz_mul', `mpz_mul_ui' and `mpz_mul_ui' need room for the sum
-          of the number of bits in their operands, but each rounded up
-          to a multiple of `mp_bits_per_limb'.
-
-        * `mpz_swap' can be used between two array variables, but not
-          between an array and a normal variable.
-
-     For other functions, or if in doubt, the suggestion is to
-     calculate in a regular `mpz_init' variable and copy the result to
-     an array variable with `mpz_set'.
-
- -- Function: void * _mpz_realloc (mpz_t INTEGER, mp_size_t NEW_ALLOC)
-     Change the space for INTEGER to NEW_ALLOC limbs.  The value in
-     INTEGER is preserved if it fits, or is set to 0 if not.  The return
-     value is not useful to applications and should be ignored.
-
-     `mpz_realloc2' is the preferred way to accomplish allocation
-     changes like this.  `mpz_realloc2' and `_mpz_realloc' are the same
-     except that `_mpz_realloc' takes its size in limbs.
-
- -- Function: mp_limb_t mpz_getlimbn (mpz_t OP, mp_size_t N)
-     Return limb number N from OP.  The sign of OP is ignored, just the
-     absolute value is used.  The least significant limb is number 0.
-
-     `mpz_size' can be used to find how many limbs make up OP.
-     `mpz_getlimbn' returns zero if N is outside the range 0 to
-     `mpz_size(OP)-1'.
-
- -- Function: size_t mpz_size (mpz_t OP)
-     Return the size of OP measured in number of limbs.  If OP is zero,
-     the returned value will be zero.
-
-\1f
-File: gmp.info,  Node: Rational Number Functions,  Next: Floating-point Functions,  Prev: Integer Functions,  Up: Top
-
-6 Rational Number Functions
-***************************
-
-This chapter describes the GMP functions for performing arithmetic on
-rational numbers.  These functions start with the prefix `mpq_'.
-
-   Rational numbers are stored in objects of type `mpq_t'.
-
-   All rational arithmetic functions assume operands have a canonical
-form, and canonicalize their result.  The canonical from means that the
-denominator and the numerator have no common factors, and that the
-denominator is positive.  Zero has the unique representation 0/1.
-
-   Pure assignment functions do not canonicalize the assigned variable.
-It is the responsibility of the user to canonicalize the assigned
-variable before any arithmetic operations are performed on that
-variable.
-
- -- Function: void mpq_canonicalize (mpq_t OP)
-     Remove any factors that are common to the numerator and
-     denominator of OP, and make the denominator positive.
-
-* Menu:
-
-* Initializing Rationals::
-* Rational Conversions::
-* Rational Arithmetic::
-* Comparing Rationals::
-* Applying Integer Functions::
-* I/O of Rationals::
-
-\1f
-File: gmp.info,  Node: Initializing Rationals,  Next: Rational Conversions,  Prev: Rational Number Functions,  Up: Rational Number Functions
-
-6.1 Initialization and Assignment Functions
-===========================================
-
- -- Function: void mpq_init (mpq_t X)
-     Initialize X and set it to 0/1.  Each variable should normally
-     only be initialized once, or at least cleared out (using the
-     function `mpq_clear') between each initialization.
-
- -- Function: void mpq_inits (mpq_t X, ...)
-     Initialize a NULL-terminated list of `mpq_t' variables, and set
-     their values to 0/1.
-
- -- Function: void mpq_clear (mpq_t X)
-     Free the space occupied by X.  Make sure to call this function for
-     all `mpq_t' variables when you are done with them.
-
- -- Function: void mpq_clears (mpq_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpq_t'
-     variables.
-
- -- Function: void mpq_set (mpq_t ROP, mpq_t OP)
- -- Function: void mpq_set_z (mpq_t ROP, mpz_t OP)
-     Assign ROP from OP.
-
- -- Function: void mpq_set_ui (mpq_t ROP, unsigned long int OP1,
-          unsigned long int OP2)
- -- Function: void mpq_set_si (mpq_t ROP, signed long int OP1, unsigned
-          long int OP2)
-     Set the value of ROP to OP1/OP2.  Note that if OP1 and OP2 have
-     common factors, ROP has to be passed to `mpq_canonicalize' before
-     any operations are performed on ROP.
-
- -- Function: int mpq_set_str (mpq_t ROP, char *STR, int BASE)
-     Set ROP from a null-terminated string STR in the given BASE.
-
-     The string can be an integer like "41" or a fraction like
-     "41/152".  The fraction must be in canonical form (*note Rational
-     Number Functions::), or if not then `mpq_canonicalize' must be
-     called.
-
-     The numerator and optional denominator are parsed the same as in
-     `mpz_set_str' (*note Assigning Integers::).  White space is
-     allowed in the string, and is simply ignored.  The BASE can vary
-     from 2 to 62, or if BASE is 0 then the leading characters are
-     used: `0x' or `0X' for hex, `0b' or `0B' for binary, `0' for
-     octal, or decimal otherwise.  Note that this is done separately
-     for the numerator and denominator, so for instance `0xEF/100' is
-     239/100, whereas `0xEF/0x100' is 239/256.
-
-     The return value is 0 if the entire string is a valid number, or
-     -1 if not.
-
- -- Function: void mpq_swap (mpq_t ROP1, mpq_t ROP2)
-     Swap the values ROP1 and ROP2 efficiently.
-
-\1f
-File: gmp.info,  Node: Rational Conversions,  Next: Rational Arithmetic,  Prev: Initializing Rationals,  Up: Rational Number Functions
-
-6.2 Conversion Functions
-========================
-
- -- Function: double mpq_get_d (mpq_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent from the conversion is too big or too small to fit
-     a `double' then the result is system dependent.  For too big an
-     infinity is returned when available.  For too small 0.0 is
-     normally returned.  Hardware overflow, underflow and denorm traps
-     may or may not occur.
-
- -- Function: void mpq_set_d (mpq_t ROP, double OP)
- -- Function: void mpq_set_f (mpq_t ROP, mpf_t OP)
-     Set ROP to the value of OP.  There is no rounding, this conversion
-     is exact.
-
- -- Function: char * mpq_get_str (char *STR, int BASE, mpq_t OP)
-     Convert OP to a string of digits in base BASE.  The base may vary
-     from 2 to 36.  The string will be of the form `num/den', or if the
-     denominator is 1 then just `num'.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of storage large
-     enough for the result, that being
-
-          mpz_sizeinbase (mpq_numref(OP), BASE)
-          + mpz_sizeinbase (mpq_denref(OP), BASE) + 3
-
-     The three extra bytes are for a possible minus sign, possible
-     slash, and the null-terminator.
-
-     A pointer to the result string is returned, being either the
-     allocated block, or the given STR.
-
-\1f
-File: gmp.info,  Node: Rational Arithmetic,  Next: Comparing Rationals,  Prev: Rational Conversions,  Up: Rational Number Functions
-
-6.3 Arithmetic Functions
-========================
-
- -- Function: void mpq_add (mpq_t SUM, mpq_t ADDEND1, mpq_t ADDEND2)
-     Set SUM to ADDEND1 + ADDEND2.
-
- -- Function: void mpq_sub (mpq_t DIFFERENCE, mpq_t MINUEND, mpq_t
-          SUBTRAHEND)
-     Set DIFFERENCE to MINUEND - SUBTRAHEND.
-
- -- Function: void mpq_mul (mpq_t PRODUCT, mpq_t MULTIPLIER, mpq_t
-          MULTIPLICAND)
-     Set PRODUCT to MULTIPLIER times MULTIPLICAND.
-
- -- Function: void mpq_mul_2exp (mpq_t ROP, mpq_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.
-
- -- Function: void mpq_div (mpq_t QUOTIENT, mpq_t DIVIDEND, mpq_t
-          DIVISOR)
-     Set QUOTIENT to DIVIDEND/DIVISOR.
-
- -- Function: void mpq_div_2exp (mpq_t ROP, mpq_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 divided by 2 raised to OP2.
-
- -- Function: void mpq_neg (mpq_t NEGATED_OPERAND, mpq_t OPERAND)
-     Set NEGATED_OPERAND to -OPERAND.
-
- -- Function: void mpq_abs (mpq_t ROP, mpq_t OP)
-     Set ROP to the absolute value of OP.
-
- -- Function: void mpq_inv (mpq_t INVERTED_NUMBER, mpq_t NUMBER)
-     Set INVERTED_NUMBER to 1/NUMBER.  If the new denominator is zero,
-     this routine will divide by zero.
-
-\1f
-File: gmp.info,  Node: Comparing Rationals,  Next: Applying Integer Functions,  Prev: Rational Arithmetic,  Up: Rational Number Functions
-
-6.4 Comparison Functions
-========================
-
- -- Function: int mpq_cmp (mpq_t OP1, mpq_t OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
-     To determine if two rationals are equal, `mpq_equal' is faster than
-     `mpq_cmp'.
-
- -- Macro: int mpq_cmp_ui (mpq_t OP1, unsigned long int NUM2, unsigned
-          long int DEN2)
- -- Macro: int mpq_cmp_si (mpq_t OP1, long int NUM2, unsigned long int
-          DEN2)
-     Compare OP1 and NUM2/DEN2.  Return a positive value if OP1 >
-     NUM2/DEN2, zero if OP1 = NUM2/DEN2, and a negative value if OP1 <
-     NUM2/DEN2.
-
-     NUM2 and DEN2 are allowed to have common factors.
-
-     These functions are implemented as a macros and evaluate their
-     arguments multiple times.
-
- -- Macro: int mpq_sgn (mpq_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates its
-     arguments multiple times.
-
- -- Function: int mpq_equal (mpq_t OP1, mpq_t OP2)
-     Return non-zero if OP1 and OP2 are equal, zero if they are
-     non-equal.  Although `mpq_cmp' can be used for the same purpose,
-     this function is much faster.
-
-\1f
-File: gmp.info,  Node: Applying Integer Functions,  Next: I/O of Rationals,  Prev: Comparing Rationals,  Up: Rational Number Functions
-
-6.5 Applying Integer Functions to Rationals
-===========================================
-
-The set of `mpq' functions is quite small.  In particular, there are few
-functions for either input or output.  The following functions give
-direct access to the numerator and denominator of an `mpq_t'.
-
-   Note that if an assignment to the numerator and/or denominator could
-take an `mpq_t' out of the canonical form described at the start of
-this chapter (*note Rational Number Functions::) then
-`mpq_canonicalize' must be called before any other `mpq' functions are
-applied to that `mpq_t'.
-
- -- Macro: mpz_t mpq_numref (mpq_t OP)
- -- Macro: mpz_t mpq_denref (mpq_t OP)
-     Return a reference to the numerator and denominator of OP,
-     respectively.  The `mpz' functions can be used on the result of
-     these macros.
-
- -- Function: void mpq_get_num (mpz_t NUMERATOR, mpq_t RATIONAL)
- -- Function: void mpq_get_den (mpz_t DENOMINATOR, mpq_t RATIONAL)
- -- Function: void mpq_set_num (mpq_t RATIONAL, mpz_t NUMERATOR)
- -- Function: void mpq_set_den (mpq_t RATIONAL, mpz_t DENOMINATOR)
-     Get or set the numerator or denominator of a rational.  These
-     functions are equivalent to calling `mpz_set' with an appropriate
-     `mpq_numref' or `mpq_denref'.  Direct use of `mpq_numref' or
-     `mpq_denref' is recommended instead of these functions.
-
-\1f
-File: gmp.info,  Node: I/O of Rationals,  Prev: Applying Integer Functions,  Up: Rational Number Functions
-
-6.6 Input and Output Functions
-==============================
-
-When using any of these functions, it's a good idea to include `stdio.h'
-before `gmp.h', since that will allow `gmp.h' to define prototypes for
-these functions.
-
-   Passing a `NULL' pointer for a STREAM argument to any of these
-functions will make them read from `stdin' and write to `stdout',
-respectively.
-
- -- Function: size_t mpq_out_str (FILE *STREAM, int BASE, mpq_t OP)
-     Output OP on stdio stream STREAM, as a string of digits in base
-     BASE.  The base may vary from 2 to 36.  Output is in the form
-     `num/den' or if the denominator is 1 then just `num'.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
- -- Function: size_t mpq_inp_str (mpq_t ROP, FILE *STREAM, int BASE)
-     Read a string of digits from STREAM and convert them to a rational
-     in ROP.  Any initial white-space characters are read and
-     discarded.  Return the number of characters read (including white
-     space), or 0 if a rational could not be read.
-
-     The input can be a fraction like `17/63' or just an integer like
-     `123'.  Reading stops at the first character not in this form, and
-     white space is not permitted within the string.  If the input
-     might not be in canonical form, then `mpq_canonicalize' must be
-     called (*note Rational Number Functions::).
-
-     The BASE can be between 2 and 36, or can be 0 in which case the
-     leading characters of the string determine the base, `0x' or `0X'
-     for hexadecimal, `0' for octal, or decimal otherwise.  The leading
-     characters are examined separately for the numerator and
-     denominator of a fraction, so for instance `0x10/11' is 16/11,
-     whereas `0x10/0x11' is 16/17.
-
-\1f
-File: gmp.info,  Node: Floating-point Functions,  Next: Low-level Functions,  Prev: Rational Number Functions,  Up: Top
-
-7 Floating-point Functions
-**************************
-
-GMP floating point numbers are stored in objects of type `mpf_t' and
-functions operating on them have an `mpf_' prefix.
-
-   The mantissa of each float has a user-selectable precision, limited
-only by available memory.  Each variable has its own precision, and
-that can be increased or decreased at any time.
-
-   The exponent of each float is a fixed precision, one machine word on
-most systems.  In the current implementation the exponent is a count of
-limbs, so for example on a 32-bit system this means a range of roughly
-2^-68719476768 to 2^68719476736, or on a 64-bit system this will be
-greater.  Note however `mpf_get_str' can only return an exponent which
-fits an `mp_exp_t' and currently `mpf_set_str' doesn't accept exponents
-bigger than a `long'.
-
-   Each variable keeps a size for the mantissa data actually in use.
-This means that if a float is exactly represented in only a few bits
-then only those bits will be used in a calculation, even if the
-selected precision is high.
-
-   All calculations are performed to the precision of the destination
-variable.  Each function is defined to calculate with "infinite
-precision" followed by a truncation to the destination precision, but
-of course the work done is only what's needed to determine a result
-under that definition.
-
-   The precision selected for a variable is a minimum value, GMP may
-increase it a little to facilitate efficient calculation.  Currently
-this means rounding up to a whole limb, and then sometimes having a
-further partial limb, depending on the high limb of the mantissa.  But
-applications shouldn't be concerned by such details.
-
-   The mantissa in stored in binary, as might be imagined from the fact
-precisions are expressed in bits.  One consequence of this is that
-decimal fractions like 0.1 cannot be represented exactly.  The same is
-true of plain IEEE `double' floats.  This makes both highly unsuitable
-for calculations involving money or other values that should be exact
-decimal fractions.  (Suitably scaled integers, or perhaps rationals,
-are better choices.)
-
-   `mpf' functions and variables have no special notion of infinity or
-not-a-number, and applications must take care not to overflow the
-exponent or results will be unpredictable.  This might change in a
-future release.
-
-   Note that the `mpf' functions are _not_ intended as a smooth
-extension to IEEE P754 arithmetic.  In particular results obtained on
-one computer often differ from the results on a computer with a
-different word size.
-
-* Menu:
-
-* Initializing Floats::
-* Assigning Floats::
-* Simultaneous Float Init & Assign::
-* Converting Floats::
-* Float Arithmetic::
-* Float Comparison::
-* I/O of Floats::
-* Miscellaneous Float Functions::
-
-\1f
-File: gmp.info,  Node: Initializing Floats,  Next: Assigning Floats,  Prev: Floating-point Functions,  Up: Floating-point Functions
-
-7.1 Initialization Functions
-============================
-
- -- Function: void mpf_set_default_prec (mp_bitcnt_t PREC)
-     Set the default precision to be *at least* PREC bits.  All
-     subsequent calls to `mpf_init' will use this precision, but
-     previously initialized variables are unaffected.
-
- -- Function: mp_bitcnt_t mpf_get_default_prec (void)
-     Return the default precision actually used.
-
-   An `mpf_t' object must be initialized before storing the first value
-in it.  The functions `mpf_init' and `mpf_init2' are used for that
-purpose.
-
- -- Function: void mpf_init (mpf_t X)
-     Initialize X to 0.  Normally, a variable should be initialized
-     once only or at least be cleared, using `mpf_clear', between
-     initializations.  The precision of X is undefined unless a default
-     precision has already been established by a call to
-     `mpf_set_default_prec'.
-
- -- Function: void mpf_init2 (mpf_t X, mp_bitcnt_t PREC)
-     Initialize X to 0 and set its precision to be *at least* PREC
-     bits.  Normally, a variable should be initialized once only or at
-     least be cleared, using `mpf_clear', between initializations.
-
- -- Function: void mpf_inits (mpf_t X, ...)
-     Initialize a NULL-terminated list of `mpf_t' variables, and set
-     their values to 0.  The precision of the initialized variables is
-     undefined unless a default precision has already been established
-     by a call to `mpf_set_default_prec'.
-
- -- Function: void mpf_clear (mpf_t X)
-     Free the space occupied by X.  Make sure to call this function for
-     all `mpf_t' variables when you are done with them.
-
- -- Function: void mpf_clears (mpf_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpf_t'
-     variables.
-
-   Here is an example on how to initialize floating-point variables:
-     {
-       mpf_t x, y;
-       mpf_init (x);           /* use default precision */
-       mpf_init2 (y, 256);     /* precision _at least_ 256 bits */
-       ...
-       /* Unless the program is about to exit, do ... */
-       mpf_clear (x);
-       mpf_clear (y);
-     }
-
-   The following three functions are useful for changing the precision
-during a calculation.  A typical use would be for adjusting the
-precision gradually in iterative algorithms like Newton-Raphson, making
-the computation precision closely match the actual accurate part of the
-numbers.
-
- -- Function: mp_bitcnt_t mpf_get_prec (mpf_t OP)
-     Return the current precision of OP, in bits.
-
- -- Function: void mpf_set_prec (mpf_t ROP, mp_bitcnt_t PREC)
-     Set the precision of ROP to be *at least* PREC bits.  The value in
-     ROP will be truncated to the new precision.
-
-     This function requires a call to `realloc', and so should not be
-     used in a tight loop.
-
- -- Function: void mpf_set_prec_raw (mpf_t ROP, mp_bitcnt_t PREC)
-     Set the precision of ROP to be *at least* PREC bits, without
-     changing the memory allocated.
-
-     PREC must be no more than the allocated precision for ROP, that
-     being the precision when ROP was initialized, or in the most recent
-     `mpf_set_prec'.
-
-     The value in ROP is unchanged, and in particular if it had a higher
-     precision than PREC it will retain that higher precision.  New
-     values written to ROP will use the new PREC.
-
-     Before calling `mpf_clear' or the full `mpf_set_prec', another
-     `mpf_set_prec_raw' call must be made to restore ROP to its original
-     allocated precision.  Failing to do so will have unpredictable
-     results.
-
-     `mpf_get_prec' can be used before `mpf_set_prec_raw' to get the
-     original allocated precision.  After `mpf_set_prec_raw' it
-     reflects the PREC value set.
-
-     `mpf_set_prec_raw' is an efficient way to use an `mpf_t' variable
-     at different precisions during a calculation, perhaps to gradually
-     increase precision in an iteration, or just to use various
-     different precisions for different purposes during a calculation.
-
-\1f
-File: gmp.info,  Node: Assigning Floats,  Next: Simultaneous Float Init & Assign,  Prev: Initializing Floats,  Up: Floating-point Functions
-
-7.2 Assignment Functions
-========================
-
-These functions assign new values to already initialized floats (*note
-Initializing Floats::).
-
- -- Function: void mpf_set (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_set_ui (mpf_t ROP, unsigned long int OP)
- -- Function: void mpf_set_si (mpf_t ROP, signed long int OP)
- -- Function: void mpf_set_d (mpf_t ROP, double OP)
- -- Function: void mpf_set_z (mpf_t ROP, mpz_t OP)
- -- Function: void mpf_set_q (mpf_t ROP, mpq_t OP)
-     Set the value of ROP from OP.
-
- -- Function: int mpf_set_str (mpf_t ROP, char *STR, int BASE)
-     Set the value of ROP from the string in STR.  The string is of the
-     form `M@N' or, if the base is 10 or less, alternatively `MeN'.
-     `M' is the mantissa and `N' is the exponent.  The mantissa is
-     always in the specified base.  The exponent is either in the
-     specified base or, if BASE is negative, in decimal.  The decimal
-     point expected is taken from the current locale, on systems
-     providing `localeconv'.
-
-     The argument BASE may be in the ranges 2 to 62, or -62 to -2.
-     Negative values are used to specify that the exponent is in
-     decimal.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value; for bases 37 to 62, upper-case letter
-     represent the usual 10..35 while lower-case letter represent
-     36..61.
-
-     Unlike the corresponding `mpz' function, the base will not be
-     determined from the leading characters of the string if BASE is 0.
-     This is so that numbers like `0.23' are not interpreted as octal.
-
-     White space is allowed in the string, and is simply ignored.
-     [This is not really true; white-space is ignored in the beginning
-     of the string and within the mantissa, but not in other places,
-     such as after a minus sign or in the exponent.  We are considering
-     changing the definition of this function, making it fail when
-     there is any white-space in the input, since that makes a lot of
-     sense.  Please tell us your opinion about this change.  Do you
-     really want it to accept "3 14" as meaning 314 as it does now?]
-
-     This function returns 0 if the entire string is a valid number in
-     base BASE.  Otherwise it returns -1.
-
- -- Function: void mpf_swap (mpf_t ROP1, mpf_t ROP2)
-     Swap ROP1 and ROP2 efficiently.  Both the values and the
-     precisions of the two variables are swapped.
-
-\1f
-File: gmp.info,  Node: Simultaneous Float Init & Assign,  Next: Converting Floats,  Prev: Assigning Floats,  Up: Floating-point Functions
-
-7.3 Combined Initialization and Assignment Functions
-====================================================
-
-For convenience, GMP provides a parallel series of initialize-and-set
-functions which initialize the output and then store the value there.
-These functions' names have the form `mpf_init_set...'
-
-   Once the float has been initialized by any of the `mpf_init_set...'
-functions, it can be used as the source or destination operand for the
-ordinary float functions.  Don't use an initialize-and-set function on
-a variable already initialized!
-
- -- Function: void mpf_init_set (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_init_set_ui (mpf_t ROP, unsigned long int OP)
- -- Function: void mpf_init_set_si (mpf_t ROP, signed long int OP)
- -- Function: void mpf_init_set_d (mpf_t ROP, double OP)
-     Initialize ROP and set its value from OP.
-
-     The precision of ROP will be taken from the active default
-     precision, as set by `mpf_set_default_prec'.
-
- -- Function: int mpf_init_set_str (mpf_t ROP, char *STR, int BASE)
-     Initialize ROP and set its value from the string in STR.  See
-     `mpf_set_str' above for details on the assignment operation.
-
-     Note that ROP is initialized even if an error occurs.  (I.e., you
-     have to call `mpf_clear' for it.)
-
-     The precision of ROP will be taken from the active default
-     precision, as set by `mpf_set_default_prec'.
-
-\1f
-File: gmp.info,  Node: Converting Floats,  Next: Float Arithmetic,  Prev: Simultaneous Float Init & Assign,  Up: Floating-point Functions
-
-7.4 Conversion Functions
-========================
-
- -- Function: double mpf_get_d (mpf_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent in OP is too big or too small to fit a `double'
-     then the result is system dependent.  For too big an infinity is
-     returned when available.  For too small 0.0 is normally returned.
-     Hardware overflow, underflow and denorm traps may or may not occur.
-
- -- Function: double mpf_get_d_2exp (signed long int *EXP, mpf_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero), and with an exponent returned separately.
-
-     The return value is in the range 0.5<=abs(D)<1 and the exponent is
-     stored to `*EXP'.  D * 2^EXP is the (truncated) OP value.  If OP
-     is zero, the return is 0.0 and 0 is stored to `*EXP'.
-
-     This is similar to the standard C `frexp' function (*note
-     Normalization Functions: (libc)Normalization Functions.).
-
- -- Function: long mpf_get_si (mpf_t OP)
- -- Function: unsigned long mpf_get_ui (mpf_t OP)
-     Convert OP to a `long' or `unsigned long', truncating any fraction
-     part.  If OP is too big for the return type, the result is
-     undefined.
-
-     See also `mpf_fits_slong_p' and `mpf_fits_ulong_p' (*note
-     Miscellaneous Float Functions::).
-
- -- Function: char * mpf_get_str (char *STR, mp_exp_t *EXPPTR, int
-          BASE, size_t N_DIGITS, mpf_t OP)
-     Convert OP to a string of digits in base BASE.  The base argument
-     may vary from 2 to 62 or from -2 to -36.  Up to N_DIGITS digits
-     will be generated.  Trailing zeros are not returned.  No more
-     digits than can be accurately represented by OP are ever
-     generated.  If N_DIGITS is 0 then that accurate maximum number of
-     digits are generated.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of N_DIGITS + 2
-     bytes, that being enough for the mantissa, a possible minus sign,
-     and a null-terminator.  When N_DIGITS is 0 to get all significant
-     digits, an application won't be able to know the space required,
-     and STR should be `NULL' in that case.
-
-     The generated string is a fraction, with an implicit radix point
-     immediately to the left of the first digit.  The applicable
-     exponent is written through the EXPPTR pointer.  For example, the
-     number 3.1416 would be returned as string "31416" and exponent 1.
-
-     When OP is zero, an empty string is produced and the exponent
-     returned is 0.
-
-     A pointer to the result string is returned, being either the
-     allocated block or the given STR.
-
-\1f
-File: gmp.info,  Node: Float Arithmetic,  Next: Float Comparison,  Prev: Converting Floats,  Up: Floating-point Functions
-
-7.5 Arithmetic Functions
-========================
-
- -- Function: void mpf_add (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_add_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 + OP2.
-
- -- Function: void mpf_sub (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_ui_sub (mpf_t ROP, unsigned long int OP1, mpf_t
-          OP2)
- -- Function: void mpf_sub_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 - OP2.
-
- -- Function: void mpf_mul (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_mul_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 times OP2.
-
-   Division is undefined if the divisor is zero, and passing a zero
-divisor to the divide functions will make these functions intentionally
-divide by zero.  This lets the user handle arithmetic exceptions in
-these functions in the same manner as other arithmetic exceptions.
-
- -- Function: void mpf_div (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_ui_div (mpf_t ROP, unsigned long int OP1, mpf_t
-          OP2)
- -- Function: void mpf_div_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1/OP2.
-
- -- Function: void mpf_sqrt (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_sqrt_ui (mpf_t ROP, unsigned long int OP)
-     Set ROP to the square root of OP.
-
- -- Function: void mpf_pow_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 raised to the power OP2.
-
- -- Function: void mpf_neg (mpf_t ROP, mpf_t OP)
-     Set ROP to -OP.
-
- -- Function: void mpf_abs (mpf_t ROP, mpf_t OP)
-     Set ROP to the absolute value of OP.
-
- -- Function: void mpf_mul_2exp (mpf_t ROP, mpf_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.
-
- -- Function: void mpf_div_2exp (mpf_t ROP, mpf_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 divided by 2 raised to OP2.
-
-\1f
-File: gmp.info,  Node: Float Comparison,  Next: I/O of Floats,  Prev: Float Arithmetic,  Up: Floating-point Functions
-
-7.6 Comparison Functions
-========================
-
- -- Function: int mpf_cmp (mpf_t OP1, mpf_t OP2)
- -- Function: int mpf_cmp_d (mpf_t OP1, double OP2)
- -- Function: int mpf_cmp_ui (mpf_t OP1, unsigned long int OP2)
- -- Function: int mpf_cmp_si (mpf_t OP1, signed long int OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
-     `mpf_cmp_d' can be called with an infinity, but results are
-     undefined for a NaN.
-
- -- Function: int mpf_eq (mpf_t OP1, mpf_t OP2, mp_bitcnt_t op3)
-     Return non-zero if the first OP3 bits of OP1 and OP2 are equal,
-     zero otherwise.  I.e., test if OP1 and OP2 are approximately equal.
-
-     Caution 1: All version of GMP up to version 4.2.4 compared just
-     whole limbs, meaning sometimes more than OP3 bits, sometimes fewer.
-
-     Caution 2: This function will consider XXX11...111 and XX100...000
-     different, even if ... is replaced by a semi-infinite number of
-     bits.  Such numbers are really just one ulp off, and should be
-     considered equal.
-
- -- Function: void mpf_reldiff (mpf_t ROP, mpf_t OP1, mpf_t OP2)
-     Compute the relative difference between OP1 and OP2 and store the
-     result in ROP.  This is abs(OP1-OP2)/OP1.
-
- -- Macro: int mpf_sgn (mpf_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates
-     its arguments multiple times.
-
-\1f
-File: gmp.info,  Node: I/O of Floats,  Next: Miscellaneous Float Functions,  Prev: Float Comparison,  Up: Floating-point Functions
-
-7.7 Input and Output Functions
-==============================
-
-Functions that perform input from a stdio stream, and functions that
-output to a stdio stream.  Passing a `NULL' pointer for a STREAM
-argument to any of these functions will make them read from `stdin' and
-write to `stdout', respectively.
-
-   When using any of these functions, it is a good idea to include
-`stdio.h' before `gmp.h', since that will allow `gmp.h' to define
-prototypes for these functions.
-
- -- Function: size_t mpf_out_str (FILE *STREAM, int BASE, size_t
-          N_DIGITS, mpf_t OP)
-     Print OP to STREAM, as a string of digits.  Return the number of
-     bytes written, or if an error occurred, return 0.
-
-     The mantissa is prefixed with an `0.' and is in the given BASE,
-     which may vary from 2 to 62 or from -2 to -36.  An exponent is
-     then printed, separated by an `e', or if the base is greater than
-     10 then by an `@'.  The exponent is always in decimal.  The
-     decimal point follows the current locale, on systems providing
-     `localeconv'.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     Up to N_DIGITS will be printed from the mantissa, except that no
-     more digits than are accurately representable by OP will be
-     printed.  N_DIGITS can be 0 to select that accurate maximum.
-
- -- Function: size_t mpf_inp_str (mpf_t ROP, FILE *STREAM, int BASE)
-     Read a string in base BASE from STREAM, and put the read float in
-     ROP.  The string is of the form `M@N' or, if the base is 10 or
-     less, alternatively `MeN'.  `M' is the mantissa and `N' is the
-     exponent.  The mantissa is always in the specified base.  The
-     exponent is either in the specified base or, if BASE is negative,
-     in decimal.  The decimal point expected is taken from the current
-     locale, on systems providing `localeconv'.
-
-     The argument BASE may be in the ranges 2 to 36, or -36 to -2.
-     Negative values are used to specify that the exponent is in
-     decimal.
-
-     Unlike the corresponding `mpz' function, the base will not be
-     determined from the leading characters of the string if BASE is 0.
-     This is so that numbers like `0.23' are not interpreted as octal.
-
-     Return the number of bytes read, or if an error occurred, return 0.
-
-\1f
-File: gmp.info,  Node: Miscellaneous Float Functions,  Prev: I/O of Floats,  Up: Floating-point Functions
-
-7.8 Miscellaneous Functions
-===========================
-
- -- Function: void mpf_ceil (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_floor (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_trunc (mpf_t ROP, mpf_t OP)
-     Set ROP to OP rounded to an integer.  `mpf_ceil' rounds to the
-     next higher integer, `mpf_floor' to the next lower, and `mpf_trunc'
-     to the integer towards zero.
-
- -- Function: int mpf_integer_p (mpf_t OP)
-     Return non-zero if OP is an integer.
-
- -- Function: int mpf_fits_ulong_p (mpf_t OP)
- -- Function: int mpf_fits_slong_p (mpf_t OP)
- -- Function: int mpf_fits_uint_p (mpf_t OP)
- -- Function: int mpf_fits_sint_p (mpf_t OP)
- -- Function: int mpf_fits_ushort_p (mpf_t OP)
- -- Function: int mpf_fits_sshort_p (mpf_t OP)
-     Return non-zero if OP would fit in the respective C data type, when
-     truncated to an integer.
-
- -- Function: void mpf_urandomb (mpf_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t NBITS)
-     Generate a uniformly distributed random float in ROP, such that 0
-     <= ROP < 1, with NBITS significant bits in the mantissa.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpf_random2 (mpf_t ROP, mp_size_t MAX_SIZE, mp_exp_t
-          EXP)
-     Generate a random float of at most MAX_SIZE limbs, with long
-     strings of zeros and ones in the binary representation.  The
-     exponent of the number is in the interval -EXP to EXP (in limbs).
-     This function is useful for testing functions and algorithms,
-     since these kind of random numbers have proven to be more likely
-     to trigger corner-case bugs.  Negative random numbers are
-     generated when MAX_SIZE is negative.
-
-\1f
-File: gmp.info,  Node: Low-level Functions,  Next: Random Number Functions,  Prev: Floating-point Functions,  Up: Top
-
-8 Low-level Functions
-*********************
-
-This chapter describes low-level GMP functions, used to implement the
-high-level GMP functions, but also intended for time-critical user code.
-
-   These functions start with the prefix `mpn_'.
-
-   The `mpn' functions are designed to be as fast as possible, *not* to
-provide a coherent calling interface.  The different functions have
-somewhat similar interfaces, but there are variations that make them
-hard to use.  These functions do as little as possible apart from the
-real multiple precision computation, so that no time is spent on things
-that not all callers need.
-
-   A source operand is specified by a pointer to the least significant
-limb and a limb count.  A destination operand is specified by just a
-pointer.  It is the responsibility of the caller to ensure that the
-destination has enough space for storing the result.
-
-   With this way of specifying operands, it is possible to perform
-computations on subranges of an argument, and store the result into a
-subrange of a destination.
-
-   A common requirement for all functions is that each source area
-needs at least one limb.  No size argument may be zero.  Unless
-otherwise stated, in-place operations are allowed where source and
-destination are the same, but not where they only partly overlap.
-
-   The `mpn' functions are the base for the implementation of the
-`mpz_', `mpf_', and `mpq_' functions.
-
-   This example adds the number beginning at S1P and the number
-beginning at S2P and writes the sum at DESTP.  All areas have N limbs.
-
-     cy = mpn_add_n (destp, s1p, s2p, n)
-
-   It should be noted that the `mpn' functions make no attempt to
-identify high or low zero limbs on their operands, or other special
-forms.  On random data such cases will be unlikely and it'd be wasteful
-for every function to check every time.  An application knowing
-something about its data can take steps to trim or perhaps split its
-calculations.
-
-
-In the notation used below, a source operand is identified by the
-pointer to the least significant limb, and the limb count in braces.
-For example, {S1P, S1N}.
-
- -- Function: mp_limb_t mpn_add_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Add {S1P, N} and {S2P, N}, and write the N least significant limbs
-     of the result to RP.  Return carry, either 0 or 1.
-
-     This is the lowest-level function for addition.  It is the
-     preferred function for addition, since it is written in assembly
-     for most CPUs.  For addition of a variable to itself (i.e., S1P
-     equals S2P) use `mpn_lshift' with a count of 1 for optimal speed.
-
- -- Function: mp_limb_t mpn_add_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Add {S1P, N} and S2LIMB, and write the N least significant limbs
-     of the result to RP.  Return carry, either 0 or 1.
-
- -- Function: mp_limb_t mpn_add (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Add {S1P, S1N} and {S2P, S2N}, and write the S1N least significant
-     limbs of the result to RP.  Return carry, either 0 or 1.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: mp_limb_t mpn_sub_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Subtract {S2P, N} from {S1P, N}, and write the N least significant
-     limbs of the result to RP.  Return borrow, either 0 or 1.
-
-     This is the lowest-level function for subtraction.  It is the
-     preferred function for subtraction, since it is written in
-     assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_sub_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Subtract S2LIMB from {S1P, N}, and write the N least significant
-     limbs of the result to RP.  Return borrow, either 0 or 1.
-
- -- Function: mp_limb_t mpn_sub (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Subtract {S2P, S2N} from {S1P, S1N}, and write the S1N least
-     significant limbs of the result to RP.  Return borrow, either 0 or
-     1.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: void mpn_neg (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N)
-     Perform the negation of {SP, N}, and write the result to {RP, N}.
-     Return carry-out.
-
- -- Function: void mpn_mul_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Multiply {S1P, N} and {S2P, N}, and write the 2*N-limb result to
-     RP.
-
-     The destination has to have space for 2*N limbs, even if the
-     product's most significant limb is zero.  No overlap is permitted
-     between the destination and either source.
-
-     If the two input operands are the same, use `mpn_sqr'.
-
- -- Function: mp_limb_t mpn_mul (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Multiply {S1P, S1N} and {S2P, S2N}, and write the (S1N+S2N)-limb
-     result to RP.  Return the most significant limb of the result.
-
-     The destination has to have space for S1N + S2N limbs, even if the
-     product's most significant limb is zero.  No overlap is permitted
-     between the destination and either source.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: void mpn_sqr (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Compute the square of {S1P, N} and write the 2*N-limb result to RP.
-
-     The destination has to have space for 2*N limbs, even if the
-     result's most significant limb is zero.  No overlap is permitted
-     between the destination and the source.
-
- -- Function: mp_limb_t mpn_mul_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} by S2LIMB, and write the N least significant
-     limbs of the product to RP.  Return the most significant limb of
-     the product.  {S1P, N} and {RP, N} are allowed to overlap provided
-     RP <= S1P.
-
-     This is a low-level function that is a building block for general
-     multiplication as well as other operations in GMP.  It is written
-     in assembly for most CPUs.
-
-     Don't call this function if S2LIMB is a power of 2; use
-     `mpn_lshift' with a count equal to the logarithm of S2LIMB
-     instead, for optimal speed.
-
- -- Function: mp_limb_t mpn_addmul_1 (mp_limb_t *RP, const mp_limb_t
-          *S1P, mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} and S2LIMB, and add the N least significant
-     limbs of the product to {RP, N} and write the result to RP.
-     Return the most significant limb of the product, plus carry-out
-     from the addition.
-
-     This is a low-level function that is a building block for general
-     multiplication as well as other operations in GMP.  It is written
-     in assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_submul_1 (mp_limb_t *RP, const mp_limb_t
-          *S1P, mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} and S2LIMB, and subtract the N least significant
-     limbs of the product from {RP, N} and write the result to RP.
-     Return the most significant limb of the product, plus borrow-out
-     from the subtraction.
-
-     This is a low-level function that is a building block for general
-     multiplication and division as well as other operations in GMP.
-     It is written in assembly for most CPUs.
-
- -- Function: void mpn_tdiv_qr (mp_limb_t *QP, mp_limb_t *RP, mp_size_t
-          QXN, const mp_limb_t *NP, mp_size_t NN, const mp_limb_t *DP,
-          mp_size_t DN)
-     Divide {NP, NN} by {DP, DN} and put the quotient at {QP, NN-DN+1}
-     and the remainder at {RP, DN}.  The quotient is rounded towards 0.
-
-     No overlap is permitted between arguments, except that NP might
-     equal RP.  The dividend size NN must be greater than or equal to
-     divisor size DN.  The most significant limb of the divisor must be
-     non-zero.  The QXN operand must be zero.
-
- -- Function: mp_limb_t mpn_divrem (mp_limb_t *R1P, mp_size_t QXN,
-          mp_limb_t *RS2P, mp_size_t RS2N, const mp_limb_t *S3P,
-          mp_size_t S3N)
-     [This function is obsolete.  Please call `mpn_tdiv_qr' instead for
-     best performance.]
-
-     Divide {RS2P, RS2N} by {S3P, S3N}, and write the quotient at R1P,
-     with the exception of the most significant limb, which is
-     returned.  The remainder replaces the dividend at RS2P; it will be
-     S3N limbs long (i.e., as many limbs as the divisor).
-
-     In addition to an integer quotient, QXN fraction limbs are
-     developed, and stored after the integral limbs.  For most usages,
-     QXN will be zero.
-
-     It is required that RS2N is greater than or equal to S3N.  It is
-     required that the most significant bit of the divisor is set.
-
-     If the quotient is not needed, pass RS2P + S3N as R1P.  Aside from
-     that special case, no overlap between arguments is permitted.
-
-     Return the most significant limb of the quotient, either 0 or 1.
-
-     The area at R1P needs to be RS2N - S3N + QXN limbs large.
-
- -- Function: mp_limb_t mpn_divrem_1 (mp_limb_t *R1P, mp_size_t QXN,
-          mp_limb_t *S2P, mp_size_t S2N, mp_limb_t S3LIMB)
- -- Macro: mp_limb_t mpn_divmod_1 (mp_limb_t *R1P, mp_limb_t *S2P,
-          mp_size_t S2N, mp_limb_t S3LIMB)
-     Divide {S2P, S2N} by S3LIMB, and write the quotient at R1P.
-     Return the remainder.
-
-     The integer quotient is written to {R1P+QXN, S2N} and in addition
-     QXN fraction limbs are developed and written to {R1P, QXN}.
-     Either or both S2N and QXN can be zero.  For most usages, QXN will
-     be zero.
-
-     `mpn_divmod_1' exists for upward source compatibility and is
-     simply a macro calling `mpn_divrem_1' with a QXN of 0.
-
-     The areas at R1P and S2P have to be identical or completely
-     separate, not partially overlapping.
-
- -- Function: mp_limb_t mpn_divmod (mp_limb_t *R1P, mp_limb_t *RS2P,
-          mp_size_t RS2N, const mp_limb_t *S3P, mp_size_t S3N)
-     [This function is obsolete.  Please call `mpn_tdiv_qr' instead for
-     best performance.]
-
- -- Macro: mp_limb_t mpn_divexact_by3 (mp_limb_t *RP, mp_limb_t *SP,
-          mp_size_t N)
- -- Function: mp_limb_t mpn_divexact_by3c (mp_limb_t *RP, mp_limb_t
-          *SP, mp_size_t N, mp_limb_t CARRY)
-     Divide {SP, N} by 3, expecting it to divide exactly, and writing
-     the result to {RP, N}.  If 3 divides exactly, the return value is
-     zero and the result is the quotient.  If not, the return value is
-     non-zero and the result won't be anything useful.
-
-     `mpn_divexact_by3c' takes an initial carry parameter, which can be
-     the return value from a previous call, so a large calculation can
-     be done piece by piece from low to high.  `mpn_divexact_by3' is
-     simply a macro calling `mpn_divexact_by3c' with a 0 carry
-     parameter.
-
-     These routines use a multiply-by-inverse and will be faster than
-     `mpn_divrem_1' on CPUs with fast multiplication but slow division.
-
-     The source a, result q, size n, initial carry i, and return value
-     c satisfy c*b^n + a-i = 3*q, where b=2^GMP_NUMB_BITS.  The return
-     c is always 0, 1 or 2, and the initial carry i must also be 0, 1
-     or 2 (these are both borrows really).  When c=0 clearly q=(a-i)/3.
-     When c!=0, the remainder (a-i) mod 3 is given by 3-c, because b
-     == 1 mod 3 (when `mp_bits_per_limb' is even, which is always so
-     currently).
-
- -- Function: mp_limb_t mpn_mod_1 (mp_limb_t *S1P, mp_size_t S1N,
-          mp_limb_t S2LIMB)
-     Divide {S1P, S1N} by S2LIMB, and return the remainder.  S1N can be
-     zero.
-
- -- Function: mp_limb_t mpn_lshift (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N, unsigned int COUNT)
-     Shift {SP, N} left by COUNT bits, and write the result to {RP, N}.
-     The bits shifted out at the left are returned in the least
-     significant COUNT bits of the return value (the rest of the return
-     value is zero).
-
-     COUNT must be in the range 1 to mp_bits_per_limb-1.  The regions
-     {SP, N} and {RP, N} may overlap, provided RP >= SP.
-
-     This function is written in assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_rshift (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N, unsigned int COUNT)
-     Shift {SP, N} right by COUNT bits, and write the result to {RP,
-     N}.  The bits shifted out at the right are returned in the most
-     significant COUNT bits of the return value (the rest of the return
-     value is zero).
-
-     COUNT must be in the range 1 to mp_bits_per_limb-1.  The regions
-     {SP, N} and {RP, N} may overlap, provided RP <= SP.
-
-     This function is written in assembly for most CPUs.
-
- -- Function: int mpn_cmp (const mp_limb_t *S1P, const mp_limb_t *S2P,
-          mp_size_t N)
-     Compare {S1P, N} and {S2P, N} and return a positive value if S1 >
-     S2, 0 if they are equal, or a negative value if S1 < S2.
-
- -- Function: mp_size_t mpn_gcd (mp_limb_t *RP, mp_limb_t *XP,
-          mp_size_t XN, mp_limb_t *YP, mp_size_t YN)
-     Set {RP, RETVAL} to the greatest common divisor of {XP, XN} and
-     {YP, YN}.  The result can be up to YN limbs, the return value is
-     the actual number produced.  Both source operands are destroyed.
-
-     {XP, XN} must have at least as many bits as {YP, YN}.  {YP, YN}
-     must be odd.  Both operands must have non-zero most significant
-     limbs.  No overlap is permitted between {XP, XN} and {YP, YN}.
-
- -- Function: mp_limb_t mpn_gcd_1 (const mp_limb_t *XP, mp_size_t XN,
-          mp_limb_t YLIMB)
-     Return the greatest common divisor of {XP, XN} and YLIMB.  Both
-     operands must be non-zero.
-
- -- Function: mp_size_t mpn_gcdext (mp_limb_t *GP, mp_limb_t *SP,
-          mp_size_t *SN, mp_limb_t *XP, mp_size_t XN, mp_limb_t *YP,
-          mp_size_t YN)
-     Let U be defined by {XP, XN} and let V be defined by {YP, YN}.
-
-     Compute the greatest common divisor G of U and V.  Compute a
-     cofactor S such that G = US + VT.  The second cofactor T is not
-     computed but can easily be obtained from (G - U*S) / V (the
-     division will be exact).  It is required that U >= V > 0.
-
-     S satisfies S = 1 or abs(S) < V / (2 G). S = 0 if and only if V
-     divides U (i.e., G = V).
-
-     Store G at GP and let the return value define its limb count.
-     Store S at SP and let |*SN| define its limb count.  S can be
-     negative; when this happens *SN will be negative.  The areas at GP
-     and SP should each have room for XN+1 limbs.
-
-     The areas {XP, XN+1} and {YP, YN+1} are destroyed (i.e. the input
-     operands plus an extra limb past the end of each).
-
-     Compatibility note: GMP 4.3.0 and 4.3.1 defined S less strictly.
-     Earlier as well as later GMP releases define S as described here.
-
- -- Function: mp_size_t mpn_sqrtrem (mp_limb_t *R1P, mp_limb_t *R2P,
-          const mp_limb_t *SP, mp_size_t N)
-     Compute the square root of {SP, N} and put the result at {R1P,
-     ceil(N/2)} and the remainder at {R2P, RETVAL}.  R2P needs space
-     for N limbs, but the return value indicates how many are produced.
-
-     The most significant limb of {SP, N} must be non-zero.  The areas
-     {R1P, ceil(N/2)} and {SP, N} must be completely separate.  The
-     areas {R2P, N} and {SP, N} must be either identical or completely
-     separate.
-
-     If the remainder is not wanted then R2P can be `NULL', and in this
-     case the return value is zero or non-zero according to whether the
-     remainder would have been zero or non-zero.
-
-     A return value of zero indicates a perfect square.  See also
-     `mpz_perfect_square_p'.
-
- -- Function: mp_size_t mpn_get_str (unsigned char *STR, int BASE,
-          mp_limb_t *S1P, mp_size_t S1N)
-     Convert {S1P, S1N} to a raw unsigned char array at STR in base
-     BASE, and return the number of characters produced.  There may be
-     leading zeros in the string.  The string is not in ASCII; to
-     convert it to printable format, add the ASCII codes for `0' or
-     `A', depending on the base and range.  BASE can vary from 2 to 256.
-
-     The most significant limb of the input {S1P, S1N} must be
-     non-zero.  The input {S1P, S1N} is clobbered, except when BASE is
-     a power of 2, in which case it's unchanged.
-
-     The area at STR has to have space for the largest possible number
-     represented by a S1N long limb array, plus one extra character.
-
- -- Function: mp_size_t mpn_set_str (mp_limb_t *RP, const unsigned char
-          *STR, size_t STRSIZE, int BASE)
-     Convert bytes {STR,STRSIZE} in the given BASE to limbs at RP.
-
-     STR[0] is the most significant byte and STR[STRSIZE-1] is the
-     least significant.  Each byte should be a value in the range 0 to
-     BASE-1, not an ASCII character.  BASE can vary from 2 to 256.
-
-     The return value is the number of limbs written to RP.  If the most
-     significant input byte is non-zero then the high limb at RP will be
-     non-zero, and only that exact number of limbs will be required
-     there.
-
-     If the most significant input byte is zero then there may be high
-     zero limbs written to RP and included in the return value.
-
-     STRSIZE must be at least 1, and no overlap is permitted between
-     {STR,STRSIZE} and the result at RP.
-
- -- Function: mp_bitcnt_t mpn_scan0 (const mp_limb_t *S1P, mp_bitcnt_t
-          BIT)
-     Scan S1P from bit position BIT for the next clear bit.
-
-     It is required that there be a clear bit within the area at S1P at
-     or beyond bit position BIT, so that the function has something to
-     return.
-
- -- Function: mp_bitcnt_t mpn_scan1 (const mp_limb_t *S1P, mp_bitcnt_t
-          BIT)
-     Scan S1P from bit position BIT for the next set bit.
-
-     It is required that there be a set bit within the area at S1P at or
-     beyond bit position BIT, so that the function has something to
-     return.
-
- -- Function: void mpn_random (mp_limb_t *R1P, mp_size_t R1N)
- -- Function: void mpn_random2 (mp_limb_t *R1P, mp_size_t R1N)
-     Generate a random number of length R1N and store it at R1P.  The
-     most significant limb is always non-zero.  `mpn_random' generates
-     uniformly distributed limb data, `mpn_random2' generates long
-     strings of zeros and ones in the binary representation.
-
-     `mpn_random2' is intended for testing the correctness of the `mpn'
-     routines.
-
- -- Function: mp_bitcnt_t mpn_popcount (const mp_limb_t *S1P, mp_size_t
-          N)
-     Count the number of set bits in {S1P, N}.
-
- -- Function: mp_bitcnt_t mpn_hamdist (const mp_limb_t *S1P, const
-          mp_limb_t *S2P, mp_size_t N)
-     Compute the hamming distance between {S1P, N} and {S2P, N}, which
-     is the number of bit positions where the two operands have
-     different bit values.
-
- -- Function: int mpn_perfect_square_p (const mp_limb_t *S1P, mp_size_t
-          N)
-     Return non-zero iff {S1P, N} is a perfect square.
-
- -- Function: void mpn_and_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and {S2P, N}, and
-     write the result to {RP, N}.
-
- -- Function: void mpn_ior_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and {S2P, N},
-     and write the result to {RP, N}.
-
- -- Function: void mpn_xor_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical exclusive or of {S1P, N} and {S2P, N},
-     and write the result to {RP, N}.
-
- -- Function: void mpn_andn_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and the bitwise
-     complement of {S2P, N}, and write the result to {RP, N}.
-
- -- Function: void mpn_iorn_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and the
-     bitwise complement of {S2P, N}, and write the result to {RP, N}.
-
- -- Function: void mpn_nand_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and {S2P, N}, and
-     write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_nior_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and {S2P, N},
-     and write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_xnor_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical exclusive or of {S1P, N} and {S2P, N},
-     and write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_com (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N)
-     Perform the bitwise complement of {SP, N}, and write the result to
-     {RP, N}.
-
- -- Function: void mpn_copyi (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Copy from {S1P, N} to {RP, N}, increasingly.
-
- -- Function: void mpn_copyd (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Copy from {S1P, N} to {RP, N}, decreasingly.
-
- -- Function: void mpn_zero (mp_limb_t *RP, mp_size_t N)
-     Zero {RP, N}.
-
-
-8.1 Nails
-=========
-
-*Everything in this section is highly experimental and may disappear or
-be subject to incompatible changes in a future version of GMP.*
-
-   Nails are an experimental feature whereby a few bits are left unused
-at the top of each `mp_limb_t'.  This can significantly improve carry
-handling on some processors.
-
-   All the `mpn' functions accepting limb data will expect the nail
-bits to be zero on entry, and will return data with the nails similarly
-all zero.  This applies both to limb vectors and to single limb
-arguments.
-
-   Nails can be enabled by configuring with `--enable-nails'.  By
-default the number of bits will be chosen according to what suits the
-host processor, but a particular number can be selected with
-`--enable-nails=N'.
-
-   At the mpn level, a nail build is neither source nor binary
-compatible with a non-nail build, strictly speaking.  But programs
-acting on limbs only through the mpn functions are likely to work
-equally well with either build, and judicious use of the definitions
-below should make any program compatible with either build, at the
-source level.
-
-   For the higher level routines, meaning `mpz' etc, a nail build
-should be fully source and binary compatible with a non-nail build.
-
- -- Macro: GMP_NAIL_BITS
- -- Macro: GMP_NUMB_BITS
- -- Macro: GMP_LIMB_BITS
-     `GMP_NAIL_BITS' is the number of nail bits, or 0 when nails are
-     not in use.  `GMP_NUMB_BITS' is the number of data bits in a limb.
-     `GMP_LIMB_BITS' is the total number of bits in an `mp_limb_t'.  In
-     all cases
-
-          GMP_LIMB_BITS == GMP_NAIL_BITS + GMP_NUMB_BITS
-
- -- Macro: GMP_NAIL_MASK
- -- Macro: GMP_NUMB_MASK
-     Bit masks for the nail and number parts of a limb.
-     `GMP_NAIL_MASK' is 0 when nails are not in use.
-
-     `GMP_NAIL_MASK' is not often needed, since the nail part can be
-     obtained with `x >> GMP_NUMB_BITS', and that means one less large
-     constant, which can help various RISC chips.
-
- -- Macro: GMP_NUMB_MAX
-     The maximum value that can be stored in the number part of a limb.
-     This is the same as `GMP_NUMB_MASK', but can be used for clarity
-     when doing comparisons rather than bit-wise operations.
-
-   The term "nails" comes from finger or toe nails, which are at the
-ends of a limb (arm or leg).  "numb" is short for number, but is also
-how the developers felt after trying for a long time to come up with
-sensible names for these things.
-
-   In the future (the distant future most likely) a non-zero nail might
-be permitted, giving non-unique representations for numbers in a limb
-vector.  This would help vector processors since carries would only
-ever need to propagate one or two limbs.
-
-\1f
-File: gmp.info,  Node: Random Number Functions,  Next: Formatted Output,  Prev: Low-level Functions,  Up: Top
-
-9 Random Number Functions
-*************************
-
-Sequences of pseudo-random numbers in GMP are generated using a
-variable of type `gmp_randstate_t', which holds an algorithm selection
-and a current state.  Such a variable must be initialized by a call to
-one of the `gmp_randinit' functions, and can be seeded with one of the
-`gmp_randseed' functions.
-
-   The functions actually generating random numbers are described in
-*Note Integer Random Numbers::, and *Note Miscellaneous Float
-Functions::.
-
-   The older style random number functions don't accept a
-`gmp_randstate_t' parameter but instead share a global variable of that
-type.  They use a default algorithm and are currently not seeded
-(though perhaps that will change in the future).  The new functions
-accepting a `gmp_randstate_t' are recommended for applications that
-care about randomness.
-
-* Menu:
-
-* Random State Initialization::
-* Random State Seeding::
-* Random State Miscellaneous::
-
-\1f
-File: gmp.info,  Node: Random State Initialization,  Next: Random State Seeding,  Prev: Random Number Functions,  Up: Random Number Functions
-
-9.1 Random State Initialization
-===============================
-
- -- Function: void gmp_randinit_default (gmp_randstate_t STATE)
-     Initialize STATE with a default algorithm.  This will be a
-     compromise between speed and randomness, and is recommended for
-     applications with no special requirements.  Currently this is
-     `gmp_randinit_mt'.
-
- -- Function: void gmp_randinit_mt (gmp_randstate_t STATE)
-     Initialize STATE for a Mersenne Twister algorithm.  This algorithm
-     is fast and has good randomness properties.
-
- -- Function: void gmp_randinit_lc_2exp (gmp_randstate_t STATE, mpz_t
-          A, unsigned long C, mp_bitcnt_t M2EXP)
-     Initialize STATE with a linear congruential algorithm X = (A*X +
-     C) mod 2^M2EXP.
-
-     The low bits of X in this algorithm are not very random.  The least
-     significant bit will have a period no more than 2, and the second
-     bit no more than 4, etc.  For this reason only the high half of
-     each X is actually used.
-
-     When a random number of more than M2EXP/2 bits is to be generated,
-     multiple iterations of the recurrence are used and the results
-     concatenated.
-
- -- Function: int gmp_randinit_lc_2exp_size (gmp_randstate_t STATE,
-          mp_bitcnt_t SIZE)
-     Initialize STATE for a linear congruential algorithm as per
-     `gmp_randinit_lc_2exp'.  A, C and M2EXP are selected from a table,
-     chosen so that SIZE bits (or more) of each X will be used, ie.
-     M2EXP/2 >= SIZE.
-
-     If successful the return value is non-zero.  If SIZE is bigger
-     than the table data provides then the return value is zero.  The
-     maximum SIZE currently supported is 128.
-
- -- Function: void gmp_randinit_set (gmp_randstate_t ROP,
-          gmp_randstate_t OP)
-     Initialize ROP with a copy of the algorithm and state from OP.
-
- -- Function: void gmp_randinit (gmp_randstate_t STATE,
-          gmp_randalg_t ALG, ...)
-     *This function is obsolete.*
-
-     Initialize STATE with an algorithm selected by ALG.  The only
-     choice is `GMP_RAND_ALG_LC', which is `gmp_randinit_lc_2exp_size'
-     described above.  A third parameter of type `unsigned long' is
-     required, this is the SIZE for that function.
-     `GMP_RAND_ALG_DEFAULT' or 0 are the same as `GMP_RAND_ALG_LC'.
-
-     `gmp_randinit' sets bits in the global variable `gmp_errno' to
-     indicate an error.  `GMP_ERROR_UNSUPPORTED_ARGUMENT' if ALG is
-     unsupported, or `GMP_ERROR_INVALID_ARGUMENT' if the SIZE parameter
-     is too big.  It may be noted this error reporting is not thread
-     safe (a good reason to use `gmp_randinit_lc_2exp_size' instead).
-
- -- Function: void gmp_randclear (gmp_randstate_t STATE)
-     Free all memory occupied by STATE.
-
-\1f
-File: gmp.info,  Node: Random State Seeding,  Next: Random State Miscellaneous,  Prev: Random State Initialization,  Up: Random Number Functions
-
-9.2 Random State Seeding
-========================
-
- -- Function: void gmp_randseed (gmp_randstate_t STATE, mpz_t SEED)
- -- Function: void gmp_randseed_ui (gmp_randstate_t STATE,
-          unsigned long int SEED)
-     Set an initial seed value into STATE.
-
-     The size of a seed determines how many different sequences of
-     random numbers that it's possible to generate.  The "quality" of
-     the seed is the randomness of a given seed compared to the
-     previous seed used, and this affects the randomness of separate
-     number sequences.  The method for choosing a seed is critical if
-     the generated numbers are to be used for important applications,
-     such as generating cryptographic keys.
-
-     Traditionally the system time has been used to seed, but care
-     needs to be taken with this.  If an application seeds often and
-     the resolution of the system clock is low, then the same sequence
-     of numbers might be repeated.  Also, the system time is quite easy
-     to guess, so if unpredictability is required then it should
-     definitely not be the only source for the seed value.  On some
-     systems there's a special device `/dev/random' which provides
-     random data better suited for use as a seed.
-
-\1f
-File: gmp.info,  Node: Random State Miscellaneous,  Prev: Random State Seeding,  Up: Random Number Functions
-
-9.3 Random State Miscellaneous
-==============================
-
- -- Function: unsigned long gmp_urandomb_ui (gmp_randstate_t STATE,
-          unsigned long N)
-     Return a uniformly distributed random number of N bits, ie. in the
-     range 0 to 2^N-1 inclusive.  N must be less than or equal to the
-     number of bits in an `unsigned long'.
-
- -- Function: unsigned long gmp_urandomm_ui (gmp_randstate_t STATE,
-          unsigned long N)
-     Return a uniformly distributed random number in the range 0 to
-     N-1, inclusive.
-
-\1f
-File: gmp.info,  Node: Formatted Output,  Next: Formatted Input,  Prev: Random Number Functions,  Up: Top
-
-10 Formatted Output
-*******************
-
-* Menu:
-
-* Formatted Output Strings::
-* Formatted Output Functions::
-* C++ Formatted Output::
-
-\1f
-File: gmp.info,  Node: Formatted Output Strings,  Next: Formatted Output Functions,  Prev: Formatted Output,  Up: Formatted Output
-
-10.1 Format Strings
-===================
-
-`gmp_printf' and friends accept format strings similar to the standard C
-`printf' (*note Formatted Output: (libc)Formatted Output.).  A format
-specification is of the form
-
-     % [flags] [width] [.[precision]] [type] conv
-
-   GMP adds types `Z', `Q' and `F' for `mpz_t', `mpq_t' and `mpf_t'
-respectively, `M' for `mp_limb_t', and `N' for an `mp_limb_t' array.
-`Z', `Q', `M' and `N' behave like integers.  `Q' will print a `/' and a
-denominator, if needed.  `F' behaves like a float.  For example,
-
-     mpz_t z;
-     gmp_printf ("%s is an mpz %Zd\n", "here", z);
-
-     mpq_t q;
-     gmp_printf ("a hex rational: %#40Qx\n", q);
-
-     mpf_t f;
-     int   n;
-     gmp_printf ("fixed point mpf %.*Ff with %d digits\n", n, f, n);
-
-     mp_limb_t l;
-     gmp_printf ("limb %Mu\n", l);
-
-     const mp_limb_t *ptr;
-     mp_size_t       size;
-     gmp_printf ("limb array %Nx\n", ptr, size);
-
-   For `N' the limbs are expected least significant first, as per the
-`mpn' functions (*note Low-level Functions::).  A negative size can be
-given to print the value as a negative.
-
-   All the standard C `printf' types behave the same as the C library
-`printf', and can be freely intermixed with the GMP extensions.  In the
-current implementation the standard parts of the format string are
-simply handed to `printf' and only the GMP extensions handled directly.
-
-   The flags accepted are as follows.  GLIBC style ' is only for the
-standard C types (not the GMP types), and only if the C library
-supports it.
-
-     0         pad with zeros (rather than spaces)
-     #         show the base with `0x', `0X' or `0'
-     +         always show a sign
-     (space)   show a space or a `-' sign
-     '         group digits, GLIBC style (not GMP types)
-
-   The optional width and precision can be given as a number within the
-format string, or as a `*' to take an extra parameter of type `int', the
-same as the standard `printf'.
-
-   The standard types accepted are as follows.  `h' and `l' are
-portable, the rest will depend on the compiler (or include files) for
-the type and the C library for the output.
-
-     h         short
-     hh        char
-     j         intmax_t or uintmax_t
-     l         long or wchar_t
-     ll        long long
-     L         long double
-     q         quad_t or u_quad_t
-     t         ptrdiff_t
-     z         size_t
-
-The GMP types are
-
-     F         mpf_t, float conversions
-     Q         mpq_t, integer conversions
-     M         mp_limb_t, integer conversions
-     N         mp_limb_t array, integer conversions
-     Z         mpz_t, integer conversions
-
-   The conversions accepted are as follows.  `a' and `A' are always
-supported for `mpf_t' but depend on the C library for standard C float
-types.  `m' and `p' depend on the C library.
-
-     a A       hex floats, C99 style
-     c         character
-     d         decimal integer
-     e E       scientific format float
-     f         fixed point float
-     i         same as d
-     g G       fixed or scientific float
-     m         `strerror' string, GLIBC style
-     n         store characters written so far
-     o         octal integer
-     p         pointer
-     s         string
-     u         unsigned integer
-     x X       hex integer
-
-   `o', `x' and `X' are unsigned for the standard C types, but for
-types `Z', `Q' and `N' they are signed.  `u' is not meaningful for `Z',
-`Q' and `N'.
-
-   `M' is a proxy for the C library `l' or `L', according to the size
-of `mp_limb_t'.  Unsigned conversions will be usual, but a signed
-conversion can be used and will interpret the value as a twos complement
-negative.
-
-   `n' can be used with any type, even the GMP types.
-
-   Other types or conversions that might be accepted by the C library
-`printf' cannot be used through `gmp_printf', this includes for
-instance extensions registered with GLIBC `register_printf_function'.
-Also currently there's no support for POSIX `$' style numbered arguments
-(perhaps this will be added in the future).
-
-   The precision field has it's usual meaning for integer `Z' and float
-`F' types, but is currently undefined for `Q' and should not be used
-with that.
-
-   `mpf_t' conversions only ever generate as many digits as can be
-accurately represented by the operand, the same as `mpf_get_str' does.
-Zeros will be used if necessary to pad to the requested precision.  This
-happens even for an `f' conversion of an `mpf_t' which is an integer,
-for instance 2^1024 in an `mpf_t' of 128 bits precision will only
-produce about 40 digits, then pad with zeros to the decimal point.  An
-empty precision field like `%.Fe' or `%.Ff' can be used to specifically
-request just the significant digits.
-
-   The decimal point character (or string) is taken from the current
-locale settings on systems which provide `localeconv' (*note Locales
-and Internationalization: (libc)Locales.).  The C library will normally
-do the same for standard float output.
-
-   The format string is only interpreted as plain `char's, multibyte
-characters are not recognised.  Perhaps this will change in the future.
-
-\1f
-File: gmp.info,  Node: Formatted Output Functions,  Next: C++ Formatted Output,  Prev: Formatted Output Strings,  Up: Formatted Output
-
-10.2 Functions
-==============
-
-Each of the following functions is similar to the corresponding C
-library function.  The basic `printf' forms take a variable argument
-list.  The `vprintf' forms take an argument pointer, see *Note Variadic
-Functions: (libc)Variadic Functions, or `man 3 va_start'.
-
-   It should be emphasised that if a format string is invalid, or the
-arguments don't match what the format specifies, then the behaviour of
-any of these functions will be unpredictable.  GCC format string
-checking is not available, since it doesn't recognise the GMP
-extensions.
-
-   The file based functions `gmp_printf' and `gmp_fprintf' will return
--1 to indicate a write error.  Output is not "atomic", so partial
-output may be produced if a write error occurs.  All the functions can
-return -1 if the C library `printf' variant in use returns -1, but this
-shouldn't normally occur.
-
- -- Function: int gmp_printf (const char *FMT, ...)
- -- Function: int gmp_vprintf (const char *FMT, va_list AP)
-     Print to the standard output `stdout'.  Return the number of
-     characters written, or -1 if an error occurred.
-
- -- Function: int gmp_fprintf (FILE *FP, const char *FMT, ...)
- -- Function: int gmp_vfprintf (FILE *FP, const char *FMT, va_list AP)
-     Print to the stream FP.  Return the number of characters written,
-     or -1 if an error occurred.
-
- -- Function: int gmp_sprintf (char *BUF, const char *FMT, ...)
- -- Function: int gmp_vsprintf (char *BUF, const char *FMT, va_list AP)
-     Form a null-terminated string in BUF.  Return the number of
-     characters written, excluding the terminating null.
-
-     No overlap is permitted between the space at BUF and the string
-     FMT.
-
-     These functions are not recommended, since there's no protection
-     against exceeding the space available at BUF.
-
- -- Function: int gmp_snprintf (char *BUF, size_t SIZE, const char
-          *FMT, ...)
- -- Function: int gmp_vsnprintf (char *BUF, size_t SIZE, const char
-          *FMT, va_list AP)
-     Form a null-terminated string in BUF.  No more than SIZE bytes
-     will be written.  To get the full output, SIZE must be enough for
-     the string and null-terminator.
-
-     The return value is the total number of characters which ought to
-     have been produced, excluding the terminating null.  If RETVAL >=
-     SIZE then the actual output has been truncated to the first SIZE-1
-     characters, and a null appended.
-
-     No overlap is permitted between the region {BUF,SIZE} and the FMT
-     string.
-
-     Notice the return value is in ISO C99 `snprintf' style.  This is
-     so even if the C library `vsnprintf' is the older GLIBC 2.0.x
-     style.
-
- -- Function: int gmp_asprintf (char **PP, const char *FMT, ...)
- -- Function: int gmp_vasprintf (char **PP, const char *FMT, va_list AP)
-     Form a null-terminated string in a block of memory obtained from
-     the current memory allocation function (*note Custom
-     Allocation::).  The block will be the size of the string and
-     null-terminator.  The address of the block in stored to *PP.  The
-     return value is the number of characters produced, excluding the
-     null-terminator.
-
-     Unlike the C library `asprintf', `gmp_asprintf' doesn't return -1
-     if there's no more memory available, it lets the current allocation
-     function handle that.
-
- -- Function: int gmp_obstack_printf (struct obstack *OB, const char
-          *FMT, ...)
- -- Function: int gmp_obstack_vprintf (struct obstack *OB, const char
-          *FMT, va_list AP)
-     Append to the current object in OB.  The return value is the
-     number of characters written.  A null-terminator is not written.
-
-     FMT cannot be within the current object in OB, since that object
-     might move as it grows.
-
-     These functions are available only when the C library provides the
-     obstack feature, which probably means only on GNU systems, see
-     *Note Obstacks: (libc)Obstacks.
-
-\1f
-File: gmp.info,  Node: C++ Formatted Output,  Prev: Formatted Output Functions,  Up: Formatted Output
-
-10.3 C++ Formatted Output
-=========================
-
-The following functions are provided in `libgmpxx' (*note Headers and
-Libraries::), which is built if C++ support is enabled (*note Build
-Options::).  Prototypes are available from `<gmp.h>'.
-
- -- Function: ostream& operator<< (ostream& STREAM, mpz_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     In hex or octal, OP is printed as a signed number, the same as for
-     decimal.  This is unlike the standard `operator<<' routines on
-     `int' etc, which instead give twos complement.
-
- -- Function: ostream& operator<< (ostream& STREAM, mpq_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     Output will be a fraction like `5/9', or if the denominator is 1
-     then just a plain integer like `123'.
-
-     In hex or octal, OP is printed as a signed value, the same as for
-     decimal.  If `ios::showbase' is set then a base indicator is shown
-     on both the numerator and denominator (if the denominator is
-     required).
-
- -- Function: ostream& operator<< (ostream& STREAM, mpf_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     The decimal point follows the standard library float `operator<<',
-     which on recent systems means the `std::locale' imbued on STREAM.
-
-     Hex and octal are supported, unlike the standard `operator<<' on
-     `double'.  The mantissa will be in hex or octal, the exponent will
-     be in decimal.  For hex the exponent delimiter is an `@'.  This is
-     as per `mpf_out_str'.
-
-     `ios::showbase' is supported, and will put a base on the mantissa,
-     for example hex `0x1.8' or `0x0.8', or octal `01.4' or `00.4'.
-     This last form is slightly strange, but at least differentiates
-     itself from decimal.
-
-   These operators mean that GMP types can be printed in the usual C++
-way, for example,
-
-     mpz_t  z;
-     int    n;
-     ...
-     cout << "iteration " << n << " value " << z << "\n";
-
-   But note that `ostream' output (and `istream' input, *note C++
-Formatted Input::) is the only overloading available for the GMP types
-and that for instance using `+' with an `mpz_t' will have unpredictable
-results.  For classes with overloading, see *Note C++ Class Interface::.
-
-\1f
-File: gmp.info,  Node: Formatted Input,  Next: C++ Class Interface,  Prev: Formatted Output,  Up: Top
-
-11 Formatted Input
-******************
-
-* Menu:
-
-* Formatted Input Strings::
-* Formatted Input Functions::
-* C++ Formatted Input::
-
-\1f
-File: gmp.info,  Node: Formatted Input Strings,  Next: Formatted Input Functions,  Prev: Formatted Input,  Up: Formatted Input
-
-11.1 Formatted Input Strings
-============================
-
-`gmp_scanf' and friends accept format strings similar to the standard C
-`scanf' (*note Formatted Input: (libc)Formatted Input.).  A format
-specification is of the form
-
-     % [flags] [width] [type] conv
-
-   GMP adds types `Z', `Q' and `F' for `mpz_t', `mpq_t' and `mpf_t'
-respectively.  `Z' and `Q' behave like integers.  `Q' will read a `/'
-and a denominator, if present.  `F' behaves like a float.
-
-   GMP variables don't require an `&' when passed to `gmp_scanf', since
-they're already "call-by-reference".  For example,
-
-     /* to read say "a(5) = 1234" */
-     int   n;
-     mpz_t z;
-     gmp_scanf ("a(%d) = %Zd\n", &n, z);
-
-     mpq_t q1, q2;
-     gmp_sscanf ("0377 + 0x10/0x11", "%Qi + %Qi", q1, q2);
-
-     /* to read say "topleft (1.55,-2.66)" */
-     mpf_t x, y;
-     char  buf[32];
-     gmp_scanf ("%31s (%Ff,%Ff)", buf, x, y);
-
-   All the standard C `scanf' types behave the same as in the C library
-`scanf', and can be freely intermixed with the GMP extensions.  In the
-current implementation the standard parts of the format string are
-simply handed to `scanf' and only the GMP extensions handled directly.
-
-   The flags accepted are as follows.  `a' and `'' will depend on
-support from the C library, and `'' cannot be used with GMP types.
-
-     *         read but don't store
-     a         allocate a buffer (string conversions)
-     '         grouped digits, GLIBC style (not GMP
-               types)
-
-   The standard types accepted are as follows.  `h' and `l' are
-portable, the rest will depend on the compiler (or include files) for
-the type and the C library for the input.
-
-     h         short
-     hh        char
-     j         intmax_t or uintmax_t
-     l         long int, double or wchar_t
-     ll        long long
-     L         long double
-     q         quad_t or u_quad_t
-     t         ptrdiff_t
-     z         size_t
-
-The GMP types are
-
-     F         mpf_t, float conversions
-     Q         mpq_t, integer conversions
-     Z         mpz_t, integer conversions
-
-   The conversions accepted are as follows.  `p' and `[' will depend on
-support from the C library, the rest are standard.
-
-     c         character or characters
-     d         decimal integer
-     e E f g G float
-     i         integer with base indicator
-     n         characters read so far
-     o         octal integer
-     p         pointer
-     s         string of non-whitespace characters
-     u         decimal integer
-     x X       hex integer
-     [         string of characters in a set
-
-   `e', `E', `f', `g' and `G' are identical, they all read either fixed
-point or scientific format, and either upper or lower case `e' for the
-exponent in scientific format.
-
-   C99 style hex float format (`printf %a', *note Formatted Output
-Strings::) is always accepted for `mpf_t', but for the standard float
-types it will depend on the C library.
-
-   `x' and `X' are identical, both accept both upper and lower case
-hexadecimal.
-
-   `o', `u', `x' and `X' all read positive or negative values.  For the
-standard C types these are described as "unsigned" conversions, but
-that merely affects certain overflow handling, negatives are still
-allowed (per `strtoul', *note Parsing of Integers: (libc)Parsing of
-Integers.).  For GMP types there are no overflows, so `d' and `u' are
-identical.
-
-   `Q' type reads the numerator and (optional) denominator as given.
-If the value might not be in canonical form then `mpq_canonicalize'
-must be called before using it in any calculations (*note Rational
-Number Functions::).
-
-   `Qi' will read a base specification separately for the numerator and
-denominator.  For example `0x10/11' would be 16/11, whereas `0x10/0x11'
-would be 16/17.
-
-   `n' can be used with any of the types above, even the GMP types.
-`*' to suppress assignment is allowed, though in that case it would do
-nothing at all.
-
-   Other conversions or types that might be accepted by the C library
-`scanf' cannot be used through `gmp_scanf'.
-
-   Whitespace is read and discarded before a field, except for `c' and
-`[' conversions.
-
-   For float conversions, the decimal point character (or string)
-expected is taken from the current locale settings on systems which
-provide `localeconv' (*note Locales and Internationalization:
-(libc)Locales.).  The C library will normally do the same for standard
-float input.
-
-   The format string is only interpreted as plain `char's, multibyte
-characters are not recognised.  Perhaps this will change in the future.
-
-\1f
-File: gmp.info,  Node: Formatted Input Functions,  Next: C++ Formatted Input,  Prev: Formatted Input Strings,  Up: Formatted Input
-
-11.2 Formatted Input Functions
-==============================
-
-Each of the following functions is similar to the corresponding C
-library function.  The plain `scanf' forms take a variable argument
-list.  The `vscanf' forms take an argument pointer, see *Note Variadic
-Functions: (libc)Variadic Functions, or `man 3 va_start'.
-
-   It should be emphasised that if a format string is invalid, or the
-arguments don't match what the format specifies, then the behaviour of
-any of these functions will be unpredictable.  GCC format string
-checking is not available, since it doesn't recognise the GMP
-extensions.
-
-   No overlap is permitted between the FMT string and any of the results
-produced.
-
- -- Function: int gmp_scanf (const char *FMT, ...)
- -- Function: int gmp_vscanf (const char *FMT, va_list AP)
-     Read from the standard input `stdin'.
-
- -- Function: int gmp_fscanf (FILE *FP, const char *FMT, ...)
- -- Function: int gmp_vfscanf (FILE *FP, const char *FMT, va_list AP)
-     Read from the stream FP.
-
- -- Function: int gmp_sscanf (const char *S, const char *FMT, ...)
- -- Function: int gmp_vsscanf (const char *S, const char *FMT, va_list
-          AP)
-     Read from a null-terminated string S.
-
-   The return value from each of these functions is the same as the
-standard C99 `scanf', namely the number of fields successfully parsed
-and stored.  `%n' fields and fields read but suppressed by `*' don't
-count towards the return value.
-
-   If end of input (or a file error) is reached before a character for
-a field or a literal, and if no previous non-suppressed fields have
-matched, then the return value is `EOF' instead of 0.  A whitespace
-character in the format string is only an optional match and doesn't
-induce an `EOF' in this fashion.  Leading whitespace read and discarded
-for a field don't count as characters for that field.
-
-   For the GMP types, input parsing follows C99 rules, namely one
-character of lookahead is used and characters are read while they
-continue to meet the format requirements.  If this doesn't provide a
-complete number then the function terminates, with that field not
-stored nor counted towards the return value.  For instance with `mpf_t'
-an input `1.23e-XYZ' would be read up to the `X' and that character
-pushed back since it's not a digit.  The string `1.23e-' would then be
-considered invalid since an `e' must be followed by at least one digit.
-
-   For the standard C types, in the current implementation GMP calls
-the C library `scanf' functions, which might have looser rules about
-what constitutes a valid input.
-
-   Note that `gmp_sscanf' is the same as `gmp_fscanf' and only does one
-character of lookahead when parsing.  Although clearly it could look at
-its entire input, it is deliberately made identical to `gmp_fscanf',
-the same way C99 `sscanf' is the same as `fscanf'.
-
-\1f
-File: gmp.info,  Node: C++ Formatted Input,  Prev: Formatted Input Functions,  Up: Formatted Input
-
-11.3 C++ Formatted Input
-========================
-
-The following functions are provided in `libgmpxx' (*note Headers and
-Libraries::), which is built only if C++ support is enabled (*note
-Build Options::).  Prototypes are available from `<gmp.h>'.
-
- -- Function: istream& operator>> (istream& STREAM, mpz_t ROP)
-     Read ROP from STREAM, using its `ios' formatting settings.
-
- -- Function: istream& operator>> (istream& STREAM, mpq_t ROP)
-     An integer like `123' will be read, or a fraction like `5/9'.  No
-     whitespace is allowed around the `/'.  If the fraction is not in
-     canonical form then `mpq_canonicalize' must be called (*note
-     Rational Number Functions::) before operating on it.
-
-     As per integer input, an `0' or `0x' base indicator is read when
-     none of `ios::dec', `ios::oct' or `ios::hex' are set.  This is
-     done separately for numerator and denominator, so that for instance
-     `0x10/11' is 16/11 and `0x10/0x11' is 16/17.
-
- -- Function: istream& operator>> (istream& STREAM, mpf_t ROP)
-     Read ROP from STREAM, using its `ios' formatting settings.
-
-     Hex or octal floats are not supported, but might be in the future,
-     or perhaps it's best to accept only what the standard float
-     `operator>>' does.
-
-   Note that digit grouping specified by the `istream' locale is
-currently not accepted.  Perhaps this will change in the future.
-
-
-   These operators mean that GMP types can be read in the usual C++
-way, for example,
-
-     mpz_t  z;
-     ...
-     cin >> z;
-
-   But note that `istream' input (and `ostream' output, *note C++
-Formatted Output::) is the only overloading available for the GMP types
-and that for instance using `+' with an `mpz_t' will have unpredictable
-results.  For classes with overloading, see *Note C++ Class Interface::.
-
-\1f
-File: gmp.info,  Node: C++ Class Interface,  Next: BSD Compatible Functions,  Prev: Formatted Input,  Up: Top
-
-12 C++ Class Interface
-**********************
-
-This chapter describes the C++ class based interface to GMP.
-
-   All GMP C language types and functions can be used in C++ programs,
-since `gmp.h' has `extern "C"' qualifiers, but the class interface
-offers overloaded functions and operators which may be more convenient.
-
-   Due to the implementation of this interface, a reasonably recent C++
-compiler is required, one supporting namespaces, partial specialization
-of templates and member templates.  For GCC this means version 2.91 or
-later.
-
-   *Everything described in this chapter is to be considered preliminary
-and might be subject to incompatible changes if some unforeseen
-difficulty reveals itself.*
-
-* Menu:
-
-* C++ Interface General::
-* C++ Interface Integers::
-* C++ Interface Rationals::
-* C++ Interface Floats::
-* C++ Interface Random Numbers::
-* C++ Interface Limitations::
-
-\1f
-File: gmp.info,  Node: C++ Interface General,  Next: C++ Interface Integers,  Prev: C++ Class Interface,  Up: C++ Class Interface
-
-12.1 C++ Interface General
-==========================
-
-All the C++ classes and functions are available with
-
-     #include <gmpxx.h>
-
-   Programs should be linked with the `libgmpxx' and `libgmp'
-libraries.  For example,
-
-     g++ mycxxprog.cc -lgmpxx -lgmp
-
-The classes defined are
-
- -- Class: mpz_class
- -- Class: mpq_class
- -- Class: mpf_class
-
-   The standard operators and various standard functions are overloaded
-to allow arithmetic with these classes.  For example,
-
-     int
-     main (void)
-     {
-       mpz_class a, b, c;
-
-       a = 1234;
-       b = "-5678";
-       c = a+b;
-       cout << "sum is " << c << "\n";
-       cout << "absolute value is " << abs(c) << "\n";
-
-       return 0;
-     }
-
-   An important feature of the implementation is that an expression like
-`a=b+c' results in a single call to the corresponding `mpz_add',
-without using a temporary for the `b+c' part.  Expressions which by
-their nature imply intermediate values, like `a=b*c+d*e', still use
-temporaries though.
-
-   The classes can be freely intermixed in expressions, as can the
-classes and the standard types `long', `unsigned long' and `double'.
-Smaller types like `int' or `float' can also be intermixed, since C++
-will promote them.
-
-   Note that `bool' is not accepted directly, but must be explicitly
-cast to an `int' first.  This is because C++ will automatically convert
-any pointer to a `bool', so if GMP accepted `bool' it would make all
-sorts of invalid class and pointer combinations compile but almost
-certainly not do anything sensible.
-
-   Conversions back from the classes to standard C++ types aren't done
-automatically, instead member functions like `get_si' are provided (see
-the following sections for details).
-
-   Also there are no automatic conversions from the classes to the
-corresponding GMP C types, instead a reference to the underlying C
-object can be obtained with the following functions,
-
- -- Function: mpz_t mpz_class::get_mpz_t ()
- -- Function: mpq_t mpq_class::get_mpq_t ()
- -- Function: mpf_t mpf_class::get_mpf_t ()
-
-   These can be used to call a C function which doesn't have a C++ class
-interface.  For example to set `a' to the GCD of `b' and `c',
-
-     mpz_class a, b, c;
-     ...
-     mpz_gcd (a.get_mpz_t(), b.get_mpz_t(), c.get_mpz_t());
-
-   In the other direction, a class can be initialized from the
-corresponding GMP C type, or assigned to if an explicit constructor is
-used.  In both cases this makes a copy of the value, it doesn't create
-any sort of association.  For example,
-
-     mpz_t z;
-     // ... init and calculate z ...
-     mpz_class x(z);
-     mpz_class y;
-     y = mpz_class (z);
-
-   There are no namespace setups in `gmpxx.h', all types and functions
-are simply put into the global namespace.  This is what `gmp.h' has
-done in the past, and continues to do for compatibility.  The extras
-provided by `gmpxx.h' follow GMP naming conventions and are unlikely to
-clash with anything.
-
-\1f
-File: gmp.info,  Node: C++ Interface Integers,  Next: C++ Interface Rationals,  Prev: C++ Interface General,  Up: C++ Class Interface
-
-12.2 C++ Interface Integers
-===========================
-
- -- Function: void mpz_class::mpz_class (type N)
-     Construct an `mpz_class'.  All the standard C++ types may be used,
-     except `long long' and `long double', and all the GMP C++ classes
-     can be used.  Any necessary conversion follows the corresponding C
-     function, for example `double' follows `mpz_set_d' (*note
-     Assigning Integers::).
-
- -- Function: void mpz_class::mpz_class (mpz_t Z)
-     Construct an `mpz_class' from an `mpz_t'.  The value in Z is
-     copied into the new `mpz_class', there won't be any permanent
-     association between it and Z.
-
- -- Function: void mpz_class::mpz_class (const char *S)
- -- Function: void mpz_class::mpz_class (const char *S, int BASE = 0)
- -- Function: void mpz_class::mpz_class (const string& S)
- -- Function: void mpz_class::mpz_class (const string& S, int BASE = 0)
-     Construct an `mpz_class' converted from a string using
-     `mpz_set_str' (*note Assigning Integers::).
-
-     If the string is not a valid integer, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: mpz_class operator/ (mpz_class A, mpz_class D)
- -- Function: mpz_class operator% (mpz_class A, mpz_class D)
-     Divisions involving `mpz_class' round towards zero, as per the
-     `mpz_tdiv_q' and `mpz_tdiv_r' functions (*note Integer Division::).
-     This is the same as the C99 `/' and `%' operators.
-
-     The `mpz_fdiv...' or `mpz_cdiv...' functions can always be called
-     directly if desired.  For example,
-
-          mpz_class q, a, d;
-          ...
-          mpz_fdiv_q (q.get_mpz_t(), a.get_mpz_t(), d.get_mpz_t());
-
- -- Function: mpz_class abs (mpz_class OP1)
- -- Function: int cmp (mpz_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpz_class OP2)
- -- Function: bool mpz_class::fits_sint_p (void)
- -- Function: bool mpz_class::fits_slong_p (void)
- -- Function: bool mpz_class::fits_sshort_p (void)
- -- Function: bool mpz_class::fits_uint_p (void)
- -- Function: bool mpz_class::fits_ulong_p (void)
- -- Function: bool mpz_class::fits_ushort_p (void)
- -- Function: double mpz_class::get_d (void)
- -- Function: long mpz_class::get_si (void)
- -- Function: string mpz_class::get_str (int BASE = 10)
- -- Function: unsigned long mpz_class::get_ui (void)
- -- Function: int mpz_class::set_str (const char *STR, int BASE)
- -- Function: int mpz_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpz_class OP)
- -- Function: mpz_class sqrt (mpz_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
-
-   Overloaded operators for combinations of `mpz_class' and `double'
-are provided for completeness, but it should be noted that if the given
-`double' is not an integer then the way any rounding is done is
-currently unspecified.  The rounding might take place at the start, in
-the middle, or at the end of the operation, and it might change in the
-future.
-
-   Conversions between `mpz_class' and `double', however, are defined
-to follow the corresponding C functions `mpz_get_d' and `mpz_set_d'.
-And comparisons are always made exactly, as per `mpz_cmp_d'.
-
-\1f
-File: gmp.info,  Node: C++ Interface Rationals,  Next: C++ Interface Floats,  Prev: C++ Interface Integers,  Up: C++ Class Interface
-
-12.3 C++ Interface Rationals
-============================
-
-In all the following constructors, if a fraction is given then it
-should be in canonical form, or if not then `mpq_class::canonicalize'
-called.
-
- -- Function: void mpq_class::mpq_class (type OP)
- -- Function: void mpq_class::mpq_class (integer NUM, integer DEN)
-     Construct an `mpq_class'.  The initial value can be a single value
-     of any type, or a pair of integers (`mpz_class' or standard C++
-     integer types) representing a fraction, except that `long long'
-     and `long double' are not supported.  For example,
-
-          mpq_class q (99);
-          mpq_class q (1.75);
-          mpq_class q (1, 3);
-
- -- Function: void mpq_class::mpq_class (mpq_t Q)
-     Construct an `mpq_class' from an `mpq_t'.  The value in Q is
-     copied into the new `mpq_class', there won't be any permanent
-     association between it and Q.
-
- -- Function: void mpq_class::mpq_class (const char *S)
- -- Function: void mpq_class::mpq_class (const char *S, int BASE = 0)
- -- Function: void mpq_class::mpq_class (const string& S)
- -- Function: void mpq_class::mpq_class (const string& S, int BASE = 0)
-     Construct an `mpq_class' converted from a string using
-     `mpq_set_str' (*note Initializing Rationals::).
-
-     If the string is not a valid rational, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: void mpq_class::canonicalize ()
-     Put an `mpq_class' into canonical form, as per *Note Rational
-     Number Functions::.  All arithmetic operators require their
-     operands in canonical form, and will return results in canonical
-     form.
-
- -- Function: mpq_class abs (mpq_class OP)
- -- Function: int cmp (mpq_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpq_class OP2)
- -- Function: double mpq_class::get_d (void)
- -- Function: string mpq_class::get_str (int BASE = 10)
- -- Function: int mpq_class::set_str (const char *STR, int BASE)
- -- Function: int mpq_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpq_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
- -- Function: mpz_class& mpq_class::get_num ()
- -- Function: mpz_class& mpq_class::get_den ()
-     Get a reference to an `mpz_class' which is the numerator or
-     denominator of an `mpq_class'.  This can be used both for read and
-     write access.  If the object returned is modified, it modifies the
-     original `mpq_class'.
-
-     If direct manipulation might produce a non-canonical value, then
-     `mpq_class::canonicalize' must be called before further operations.
-
- -- Function: mpz_t mpq_class::get_num_mpz_t ()
- -- Function: mpz_t mpq_class::get_den_mpz_t ()
-     Get a reference to the underlying `mpz_t' numerator or denominator
-     of an `mpq_class'.  This can be passed to C functions expecting an
-     `mpz_t'.  Any modifications made to the `mpz_t' will modify the
-     original `mpq_class'.
-
-     If direct manipulation might produce a non-canonical value, then
-     `mpq_class::canonicalize' must be called before further operations.
-
- -- Function: istream& operator>> (istream& STREAM, mpq_class& ROP);
-     Read ROP from STREAM, using its `ios' formatting settings, the
-     same as `mpq_t operator>>' (*note C++ Formatted Input::).
-
-     If the ROP read might not be in canonical form then
-     `mpq_class::canonicalize' must be called.
-
-\1f
-File: gmp.info,  Node: C++ Interface Floats,  Next: C++ Interface Random Numbers,  Prev: C++ Interface Rationals,  Up: C++ Class Interface
-
-12.4 C++ Interface Floats
-=========================
-
-When an expression requires the use of temporary intermediate
-`mpf_class' values, like `f=g*h+x*y', those temporaries will have the
-same precision as the destination `f'.  Explicit constructors can be
-used if this doesn't suit.
-
- -- Function:  mpf_class::mpf_class (type OP)
- -- Function:  mpf_class::mpf_class (type OP, unsigned long PREC)
-     Construct an `mpf_class'.  Any standard C++ type can be used,
-     except `long long' and `long double', and any of the GMP C++
-     classes can be used.
-
-     If PREC is given, the initial precision is that value, in bits.  If
-     PREC is not given, then the initial precision is determined by the
-     type of OP given.  An `mpz_class', `mpq_class', or C++ builtin
-     type will give the default `mpf' precision (*note Initializing
-     Floats::).  An `mpf_class' or expression will give the precision
-     of that value.  The precision of a binary expression is the higher
-     of the two operands.
-
-          mpf_class f(1.5);        // default precision
-          mpf_class f(1.5, 500);   // 500 bits (at least)
-          mpf_class f(x);          // precision of x
-          mpf_class f(abs(x));     // precision of x
-          mpf_class f(-g, 1000);   // 1000 bits (at least)
-          mpf_class f(x+y);        // greater of precisions of x and y
-
- -- Function: void mpf_class::mpf_class (const char *S)
- -- Function: void mpf_class::mpf_class (const char *S, unsigned long
-          PREC, int BASE = 0)
- -- Function: void mpf_class::mpf_class (const string& S)
- -- Function: void mpf_class::mpf_class (const string& S, unsigned long
-          PREC, int BASE = 0)
-     Construct an `mpf_class' converted from a string using
-     `mpf_set_str' (*note Assigning Floats::).  If PREC is given, the
-     initial precision is that value, in bits.  If not, the default
-     `mpf' precision (*note Initializing Floats::) is used.
-
-     If the string is not a valid float, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: mpf_class& mpf_class::operator= (type OP)
-     Convert and store the given OP value to an `mpf_class' object.  The
-     same types are accepted as for the constructors above.
-
-     Note that `operator=' only stores a new value, it doesn't copy or
-     change the precision of the destination, instead the value is
-     truncated if necessary.  This is the same as `mpf_set' etc.  Note
-     in particular this means for `mpf_class' a copy constructor is not
-     the same as a default constructor plus assignment.
-
-          mpf_class x (y);   // x created with precision of y
-
-          mpf_class x;       // x created with default precision
-          x = y;             // value truncated to that precision
-
-     Applications using templated code may need to be careful about the
-     assumptions the code makes in this area, when working with
-     `mpf_class' values of various different or non-default precisions.
-     For instance implementations of the standard `complex' template
-     have been seen in both styles above, though of course `complex' is
-     normally only actually specified for use with the builtin float
-     types.
-
- -- Function: mpf_class abs (mpf_class OP)
- -- Function: mpf_class ceil (mpf_class OP)
- -- Function: int cmp (mpf_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpf_class OP2)
- -- Function: bool mpf_class::fits_sint_p (void)
- -- Function: bool mpf_class::fits_slong_p (void)
- -- Function: bool mpf_class::fits_sshort_p (void)
- -- Function: bool mpf_class::fits_uint_p (void)
- -- Function: bool mpf_class::fits_ulong_p (void)
- -- Function: bool mpf_class::fits_ushort_p (void)
- -- Function: mpf_class floor (mpf_class OP)
- -- Function: mpf_class hypot (mpf_class OP1, mpf_class OP2)
- -- Function: double mpf_class::get_d (void)
- -- Function: long mpf_class::get_si (void)
- -- Function: string mpf_class::get_str (mp_exp_t& EXP, int BASE = 10,
-          size_t DIGITS = 0)
- -- Function: unsigned long mpf_class::get_ui (void)
- -- Function: int mpf_class::set_str (const char *STR, int BASE)
- -- Function: int mpf_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpf_class OP)
- -- Function: mpf_class sqrt (mpf_class OP)
- -- Function: mpf_class trunc (mpf_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
-     The accuracy provided by `hypot' is not currently guaranteed.
-
- -- Function: mp_bitcnt_t mpf_class::get_prec ()
- -- Function: void mpf_class::set_prec (mp_bitcnt_t PREC)
- -- Function: void mpf_class::set_prec_raw (mp_bitcnt_t PREC)
-     Get or set the current precision of an `mpf_class'.
-
-     The restrictions described for `mpf_set_prec_raw' (*note
-     Initializing Floats::) apply to `mpf_class::set_prec_raw'.  Note
-     in particular that the `mpf_class' must be restored to it's
-     allocated precision before being destroyed.  This must be done by
-     application code, there's no automatic mechanism for it.
-
-\1f
-File: gmp.info,  Node: C++ Interface Random Numbers,  Next: C++ Interface Limitations,  Prev: C++ Interface Floats,  Up: C++ Class Interface
-
-12.5 C++ Interface Random Numbers
-=================================
-
- -- Class: gmp_randclass
-     The C++ class interface to the GMP random number functions uses
-     `gmp_randclass' to hold an algorithm selection and current state,
-     as per `gmp_randstate_t'.
-
- -- Function:  gmp_randclass::gmp_randclass (void (*RANDINIT)
-          (gmp_randstate_t, ...), ...)
-     Construct a `gmp_randclass', using a call to the given RANDINIT
-     function (*note Random State Initialization::).  The arguments
-     expected are the same as RANDINIT, but with `mpz_class' instead of
-     `mpz_t'.  For example,
-
-          gmp_randclass r1 (gmp_randinit_default);
-          gmp_randclass r2 (gmp_randinit_lc_2exp_size, 32);
-          gmp_randclass r3 (gmp_randinit_lc_2exp, a, c, m2exp);
-          gmp_randclass r4 (gmp_randinit_mt);
-
-     `gmp_randinit_lc_2exp_size' will fail if the size requested is too
-     big, an `std::length_error' exception is thrown in that case.
-
- -- Function:  gmp_randclass::gmp_randclass (gmp_randalg_t ALG, ...)
-     Construct a `gmp_randclass' using the same parameters as
-     `gmp_randinit' (*note Random State Initialization::).  This
-     function is obsolete and the above RANDINIT style should be
-     preferred.
-
- -- Function: void gmp_randclass::seed (unsigned long int S)
- -- Function: void gmp_randclass::seed (mpz_class S)
-     Seed a random number generator.  See *note Random Number
-     Functions::, for how to choose a good seed.
-
- -- Function: mpz_class gmp_randclass::get_z_bits (unsigned long BITS)
- -- Function: mpz_class gmp_randclass::get_z_bits (mpz_class BITS)
-     Generate a random integer with a specified number of bits.
-
- -- Function: mpz_class gmp_randclass::get_z_range (mpz_class N)
-     Generate a random integer in the range 0 to N-1 inclusive.
-
- -- Function: mpf_class gmp_randclass::get_f ()
- -- Function: mpf_class gmp_randclass::get_f (unsigned long PREC)
-     Generate a random float F in the range 0 <= F < 1.  F will be to
-     PREC bits precision, or if PREC is not given then to the precision
-     of the destination.  For example,
-
-          gmp_randclass  r;
-          ...
-          mpf_class  f (0, 512);   // 512 bits precision
-          f = r.get_f();           // random number, 512 bits
-
-\1f
-File: gmp.info,  Node: C++ Interface Limitations,  Prev: C++ Interface Random Numbers,  Up: C++ Class Interface
-
-12.6 C++ Interface Limitations
-==============================
-
-`mpq_class' and Templated Reading
-     A generic piece of template code probably won't know that
-     `mpq_class' requires a `canonicalize' call if inputs read with
-     `operator>>' might be non-canonical.  This can lead to incorrect
-     results.
-
-     `operator>>' behaves as it does for reasons of efficiency.  A
-     canonicalize can be quite time consuming on large operands, and is
-     best avoided if it's not necessary.
-
-     But this potential difficulty reduces the usefulness of
-     `mpq_class'.  Perhaps a mechanism to tell `operator>>' what to do
-     will be adopted in the future, maybe a preprocessor define, a
-     global flag, or an `ios' flag pressed into service.  Or maybe, at
-     the risk of inconsistency, the `mpq_class' `operator>>' could
-     canonicalize and leave `mpq_t' `operator>>' not doing so, for use
-     on those occasions when that's acceptable.  Send feedback or
-     alternate ideas to <gmp-bugs@gmplib.org>.
-
-Subclassing
-     Subclassing the GMP C++ classes works, but is not currently
-     recommended.
-
-     Expressions involving subclasses resolve correctly (or seem to),
-     but in normal C++ fashion the subclass doesn't inherit
-     constructors and assignments.  There's many of those in the GMP
-     classes, and a good way to reestablish them in a subclass is not
-     yet provided.
-
-Templated Expressions
-     A subtle difficulty exists when using expressions together with
-     application-defined template functions.  Consider the following,
-     with `T' intended to be some numeric type,
-
-          template <class T>
-          T fun (const T &, const T &);
-
-     When used with, say, plain `mpz_class' variables, it works fine:
-     `T' is resolved as `mpz_class'.
-
-          mpz_class f(1), g(2);
-          fun (f, g);    // Good
-
-     But when one of the arguments is an expression, it doesn't work.
-
-          mpz_class f(1), g(2), h(3);
-          fun (f, g+h);  // Bad
-
-     This is because `g+h' ends up being a certain expression template
-     type internal to `gmpxx.h', which the C++ template resolution
-     rules are unable to automatically convert to `mpz_class'.  The
-     workaround is simply to add an explicit cast.
-
-          mpz_class f(1), g(2), h(3);
-          fun (f, mpz_class(g+h));  // Good
-
-     Similarly, within `fun' it may be necessary to cast an expression
-     to type `T' when calling a templated `fun2'.
-
-          template <class T>
-          void fun (T f, T g)
-          {
-            fun2 (f, f+g);     // Bad
-          }
-
-          template <class T>
-          void fun (T f, T g)
-          {
-            fun2 (f, T(f+g));  // Good
-          }
-
-\1f
-File: gmp.info,  Node: BSD Compatible Functions,  Next: Custom Allocation,  Prev: C++ Class Interface,  Up: Top
-
-13 Berkeley MP Compatible Functions
-***********************************
-
-These functions are intended to be fully compatible with the Berkeley MP
-library which is available on many BSD derived U*ix systems.  The
-`--enable-mpbsd' option must be used when building GNU MP to make these
-available (*note Installing GMP::).
-
-   The original Berkeley MP library has a usage restriction: you cannot
-use the same variable as both source and destination in a single
-function call.  The compatible functions in GNU MP do not share this
-restriction--inputs and outputs may overlap.
-
-   It is not recommended that new programs are written using these
-functions.  Apart from the incomplete set of functions, the interface
-for initializing `MINT' objects is more error prone, and the `pow'
-function collides with `pow' in `libm.a'.
-
-   Include the header `mp.h' to get the definition of the necessary
-types and functions.  If you are on a BSD derived system, make sure to
-include GNU `mp.h' if you are going to link the GNU `libmp.a' to your
-program.  This means that you probably need to give the `-I<dir>'
-option to the compiler, where `<dir>' is the directory where you have
-GNU `mp.h'.
-
- -- Function: MINT * itom (signed short int INITIAL_VALUE)
-     Allocate an integer consisting of a `MINT' object and dynamic limb
-     space.  Initialize the integer to INITIAL_VALUE.  Return a pointer
-     to the `MINT' object.
-
- -- Function: MINT * xtom (char *INITIAL_VALUE)
-     Allocate an integer consisting of a `MINT' object and dynamic limb
-     space.  Initialize the integer from INITIAL_VALUE, a hexadecimal,
-     null-terminated C string.  Return a pointer to the `MINT' object.
-
- -- Function: void move (MINT *SRC, MINT *DEST)
-     Set DEST to SRC by copying.  Both variables must be previously
-     initialized.
-
- -- Function: void madd (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Add SRC_1 and SRC_2 and put the sum in DESTINATION.
-
- -- Function: void msub (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Subtract SRC_2 from SRC_1 and put the difference in DESTINATION.
-
- -- Function: void mult (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Multiply SRC_1 and SRC_2 and put the product in DESTINATION.
-
- -- Function: void mdiv (MINT *DIVIDEND, MINT *DIVISOR, MINT *QUOTIENT,
-          MINT *REMAINDER)
- -- Function: void sdiv (MINT *DIVIDEND, signed short int DIVISOR, MINT
-          *QUOTIENT, signed short int *REMAINDER)
-     Set QUOTIENT to DIVIDEND/DIVISOR, and REMAINDER to DIVIDEND mod
-     DIVISOR.  The quotient is rounded towards zero; the remainder has
-     the same sign as the dividend unless it is zero.
-
-     Some implementations of these functions work differently--or not
-     at all--for negative arguments.
-
- -- Function: void msqrt (MINT *OP, MINT *ROOT, MINT *REMAINDER)
-     Set ROOT to the truncated integer part of the square root of OP,
-     like `mpz_sqrt'.  Set REMAINDER to OP-ROOT*ROOT, i.e.  zero if OP
-     is a perfect square.
-
-     If ROOT and REMAINDER are the same variable, the results are
-     undefined.
-
- -- Function: void pow (MINT *BASE, MINT *EXP, MINT *MOD, MINT *DEST)
-     Set DEST to (BASE raised to EXP) modulo MOD.
-
-     Note that the name `pow' clashes with `pow' from the standard C
-     math library (*note Exponentiation and Logarithms: (libc)Exponents
-     and Logarithms.).  An application will only be able to use one or
-     the other.
-
- -- Function: void rpow (MINT *BASE, signed short int EXP, MINT *DEST)
-     Set DEST to BASE raised to EXP.
-
- -- Function: void gcd (MINT *OP1, MINT *OP2, MINT *RES)
-     Set RES to the greatest common divisor of OP1 and OP2.
-
- -- Function: int mcmp (MINT *OP1, MINT *OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
- -- Function: void min (MINT *DEST)
-     Input a decimal string from `stdin', and put the read integer in
-     DEST.  SPC and TAB are allowed in the number string, and are
-     ignored.
-
- -- Function: void mout (MINT *SRC)
-     Output SRC to `stdout', as a decimal string.  Also output a
-     newline.
-
- -- Function: char * mtox (MINT *OP)
-     Convert OP to a hexadecimal string, and return a pointer to the
-     string.  The returned string is allocated using the default memory
-     allocation function, `malloc' by default.  It will be
-     `strlen(str)+1' bytes, that being exactly enough for the string
-     and null-terminator.
-
- -- Function: void mfree (MINT *OP)
-     De-allocate, the space used by OP.  *This function should only be
-     passed a value returned by `itom' or `xtom'.*
-
-\1f
-File: gmp.info,  Node: Custom Allocation,  Next: Language Bindings,  Prev: BSD Compatible Functions,  Up: Top
-
-14 Custom Allocation
-********************
-
-By default GMP uses `malloc', `realloc' and `free' for memory
-allocation, and if they fail GMP prints a message to the standard error
-output and terminates the program.
-
-   Alternate functions can be specified, to allocate memory in a
-different way or to have a different error action on running out of
-memory.
-
-   This feature is available in the Berkeley compatibility library
-(*note BSD Compatible Functions::) as well as the main GMP library.
-
- -- Function: void mp_set_memory_functions (
-          void *(*ALLOC_FUNC_PTR) (size_t),
-          void *(*REALLOC_FUNC_PTR) (void *, size_t, size_t),
-          void (*FREE_FUNC_PTR) (void *, size_t))
-     Replace the current allocation functions from the arguments.  If
-     an argument is `NULL', the corresponding default function is used.
-
-     These functions will be used for all memory allocation done by
-     GMP, apart from temporary space from `alloca' if that function is
-     available and GMP is configured to use it (*note Build Options::).
-
-     *Be sure to call `mp_set_memory_functions' only when there are no
-     active GMP objects allocated using the previous memory functions!
-     Usually that means calling it before any other GMP function.*
-
-   The functions supplied should fit the following declarations:
-
- -- Function: void * allocate_function (size_t ALLOC_SIZE)
-     Return a pointer to newly allocated space with at least ALLOC_SIZE
-     bytes.
-
- -- Function: void * reallocate_function (void *PTR, size_t OLD_SIZE,
-          size_t NEW_SIZE)
-     Resize a previously allocated block PTR of OLD_SIZE bytes to be
-     NEW_SIZE bytes.
-
-     The block may be moved if necessary or if desired, and in that
-     case the smaller of OLD_SIZE and NEW_SIZE bytes must be copied to
-     the new location.  The return value is a pointer to the resized
-     block, that being the new location if moved or just PTR if not.
-
-     PTR is never `NULL', it's always a previously allocated block.
-     NEW_SIZE may be bigger or smaller than OLD_SIZE.
-
- -- Function: void free_function (void *PTR, size_t SIZE)
-     De-allocate the space pointed to by PTR.
-
-     PTR is never `NULL', it's always a previously allocated block of
-     SIZE bytes.
-
-   A "byte" here means the unit used by the `sizeof' operator.
-
-   The OLD_SIZE parameters to REALLOCATE_FUNCTION and FREE_FUNCTION are
-passed for convenience, but of course can be ignored if not needed.
-The default functions using `malloc' and friends for instance don't use
-them.
-
-   No error return is allowed from any of these functions, if they
-return then they must have performed the specified operation.  In
-particular note that ALLOCATE_FUNCTION or REALLOCATE_FUNCTION mustn't
-return `NULL'.
-
-   Getting a different fatal error action is a good use for custom
-allocation functions, for example giving a graphical dialog rather than
-the default print to `stderr'.  How much is possible when genuinely out
-of memory is another question though.
-
-   There's currently no defined way for the allocation functions to
-recover from an error such as out of memory, they must terminate
-program execution.  A `longjmp' or throwing a C++ exception will have
-undefined results.  This may change in the future.
-
-   GMP may use allocated blocks to hold pointers to other allocated
-blocks.  This will limit the assumptions a conservative garbage
-collection scheme can make.
-
-   Since the default GMP allocation uses `malloc' and friends, those
-functions will be linked in even if the first thing a program does is an
-`mp_set_memory_functions'.  It's necessary to change the GMP sources if
-this is a problem.
-
-
- -- Function: void mp_get_memory_functions (
-          void *(**ALLOC_FUNC_PTR) (size_t),
-          void *(**REALLOC_FUNC_PTR) (void *, size_t, size_t),
-          void (**FREE_FUNC_PTR) (void *, size_t))
-     Get the current allocation functions, storing function pointers to
-     the locations given by the arguments.  If an argument is `NULL',
-     that function pointer is not stored.
-
-     For example, to get just the current free function,
-
-          void (*freefunc) (void *, size_t);
-
-          mp_get_memory_functions (NULL, NULL, &freefunc);
-
-\1f
-File: gmp.info,  Node: Language Bindings,  Next: Algorithms,  Prev: Custom Allocation,  Up: Top
-
-15 Language Bindings
-********************
-
-The following packages and projects offer access to GMP from languages
-other than C, though perhaps with varying levels of functionality and
-efficiency.
-
-
-C++
-        * GMP C++ class interface, *note C++ Class Interface::
-          Straightforward interface, expression templates to eliminate
-          temporaries.
-
-        * ALP `http://www-sop.inria.fr/saga/logiciels/ALP/'
-          Linear algebra and polynomials using templates.
-
-        * Arithmos `http://www.win.ua.ac.be/~cant/arithmos/'
-          Rationals with infinities and square roots.
-
-        * CLN `http://www.ginac.de/CLN/'
-          High level classes for arithmetic.
-
-        * LiDIA `http://www.cdc.informatik.tu-darmstadt.de/TI/LiDIA/'
-          A C++ library for computational number theory.
-
-        * Linbox `http://www.linalg.org/'
-          Sparse vectors and matrices.
-
-        * NTL `http://www.shoup.net/ntl/'
-          A C++ number theory library.
-
-Fortran
-        * Omni F77 `http://phase.hpcc.jp/Omni/home.html'
-          Arbitrary precision floats.
-
-Haskell
-        * Glasgow Haskell Compiler `http://www.haskell.org/ghc/'
-
-Java
-        * Kaffe `http://www.kaffe.org/'
-
-        * Kissme `http://kissme.sourceforge.net/'
-
-Lisp
-        * GNU Common Lisp `http://www.gnu.org/software/gcl/gcl.html'
-
-        * Librep `http://librep.sourceforge.net/'
-
-        * XEmacs (21.5.18 beta and up) `http://www.xemacs.org'
-          Optional big integers, rationals and floats using GMP.
-
-M4
-        * GNU m4 betas `http://www.seindal.dk/rene/gnu/'
-          Optionally provides an arbitrary precision `mpeval'.
-
-ML
-        * MLton compiler `http://mlton.org/'
-
-Objective Caml
-        * MLGMP `http://www.di.ens.fr/~monniaux/programmes.html.en'
-
-        * Numerix `http://pauillac.inria.fr/~quercia/'
-          Optionally using GMP.
-
-Oz
-        * Mozart `http://www.mozart-oz.org/'
-
-Pascal
-        * GNU Pascal Compiler `http://www.gnu-pascal.de/'
-          GMP unit.
-
-        * Numerix `http://pauillac.inria.fr/~quercia/'
-          For Free Pascal, optionally using GMP.
-
-Perl
-        * GMP module, see `demos/perl' in the GMP sources (*note
-          Demonstration Programs::).
-
-        * Math::GMP `http://www.cpan.org/'
-          Compatible with Math::BigInt, but not as many functions as
-          the GMP module above.
-
-        * Math::BigInt::GMP `http://www.cpan.org/'
-          Plug Math::GMP into normal Math::BigInt operations.
-
-Pike
-        * mpz module in the standard distribution,
-          `http://pike.ida.liu.se/'
-
-Prolog
-        * SWI Prolog `http://www.swi-prolog.org/'
-          Arbitrary precision floats.
-
-Python
-        * mpz module in the standard distribution,
-          `http://www.python.org/'
-
-        * GMPY `http://gmpy.sourceforge.net/'
-
-Scheme
-        * GNU Guile (upcoming 1.8)
-          `http://www.gnu.org/software/guile/guile.html'
-
-        * RScheme `http://www.rscheme.org/'
-
-        * STklos `http://www.stklos.org/'
-
-Smalltalk
-        * GNU Smalltalk
-          `http://www.smalltalk.org/versions/GNUSmalltalk.html'
-
-Other
-        * Axiom `http://savannah.nongnu.org/projects/axiom'
-          Computer algebra using GCL.
-
-        * DrGenius `http://drgenius.seul.org/'
-          Geometry system and mathematical programming language.
-
-        * GiNaC `http://www.ginac.de/'
-          C++ computer algebra using CLN.
-
-        * GOO `http://www.googoogaga.org/'
-          Dynamic object oriented language.
-
-        * Maxima `http://www.ma.utexas.edu/users/wfs/maxima.html'
-          Macsyma computer algebra using GCL.
-
-        * Q `http://q-lang.sourceforge.net/'
-          Equational programming system.
-
-        * Regina `http://regina.sourceforge.net/'
-          Topological calculator.
-
-        * Yacas `http://www.xs4all.nl/~apinkus/yacas.html'
-          Yet another computer algebra system.
-
-
-\1f
-File: gmp.info,  Node: Algorithms,  Next: Internals,  Prev: Language Bindings,  Up: Top
-
-16 Algorithms
-*************
-
-This chapter is an introduction to some of the algorithms used for
-various GMP operations.  The code is likely to be hard to understand
-without knowing something about the algorithms.
-
-   Some GMP internals are mentioned, but applications that expect to be
-compatible with future GMP releases should take care to use only the
-documented functions.
-
-* Menu:
-
-* Multiplication Algorithms::
-* Division Algorithms::
-* Greatest Common Divisor Algorithms::
-* Powering Algorithms::
-* Root Extraction Algorithms::
-* Radix Conversion Algorithms::
-* Other Algorithms::
-* Assembly Coding::
-
-\1f
-File: gmp.info,  Node: Multiplication Algorithms,  Next: Division Algorithms,  Prev: Algorithms,  Up: Algorithms
-
-16.1 Multiplication
-===================
-
-NxN limb multiplications and squares are done using one of five
-algorithms, as the size N increases.
-
-     Algorithm      Threshold
-     Basecase       (none)
-     Karatsuba      `MUL_TOOM22_THRESHOLD'
-     Toom-3         `MUL_TOOM33_THRESHOLD'
-     Toom-4         `MUL_TOOM44_THRESHOLD'
-     FFT            `MUL_FFT_THRESHOLD'
-
-   Similarly for squaring, with the `SQR' thresholds.
-
-   NxM multiplications of operands with different sizes above
-`MUL_TOOM22_THRESHOLD' are currently done by special Toom-inspired
-algorithms or directly with FFT, depending on operand size (*note
-Unbalanced Multiplication::).
-
-* Menu:
-
-* Basecase Multiplication::
-* Karatsuba Multiplication::
-* Toom 3-Way Multiplication::
-* Toom 4-Way Multiplication::
-* FFT Multiplication::
-* Other Multiplication::
-* Unbalanced Multiplication::
-
-\1f
-File: gmp.info,  Node: Basecase Multiplication,  Next: Karatsuba Multiplication,  Prev: Multiplication Algorithms,  Up: Multiplication Algorithms
-
-16.1.1 Basecase Multiplication
-------------------------------
-
-Basecase NxM multiplication is a straightforward rectangular set of
-cross-products, the same as long multiplication done by hand and for
-that reason sometimes known as the schoolbook or grammar school method.
-This is an O(N*M) algorithm.  See Knuth section 4.3.1 algorithm M
-(*note References::), and the `mpn/generic/mul_basecase.c' code.
-
-   Assembly implementations of `mpn_mul_basecase' are essentially the
-same as the generic C code, but have all the usual assembly tricks and
-obscurities introduced for speed.
-
-   A square can be done in roughly half the time of a multiply, by
-using the fact that the cross products above and below the diagonal are
-the same.  A triangle of products below the diagonal is formed, doubled
-(left shift by one bit), and then the products on the diagonal added.
-This can be seen in `mpn/generic/sqr_basecase.c'.  Again the assembly
-implementations take essentially the same approach.
-
-          u0  u1  u2  u3  u4
-        +---+---+---+---+---+
-     u0 | d |   |   |   |   |
-        +---+---+---+---+---+
-     u1 |   | d |   |   |   |
-        +---+---+---+---+---+
-     u2 |   |   | d |   |   |
-        +---+---+---+---+---+
-     u3 |   |   |   | d |   |
-        +---+---+---+---+---+
-     u4 |   |   |   |   | d |
-        +---+---+---+---+---+
-
-   In practice squaring isn't a full 2x faster than multiplying, it's
-usually around 1.5x.  Less than 1.5x probably indicates
-`mpn_sqr_basecase' wants improving on that CPU.
-
-   On some CPUs `mpn_mul_basecase' can be faster than the generic C
-`mpn_sqr_basecase' on some small sizes.  `SQR_BASECASE_THRESHOLD' is
-the size at which to use `mpn_sqr_basecase', this will be zero if that
-routine should be used always.
-
-\1f
-File: gmp.info,  Node: Karatsuba Multiplication,  Next: Toom 3-Way Multiplication,  Prev: Basecase Multiplication,  Up: Multiplication Algorithms
-
-16.1.2 Karatsuba Multiplication
--------------------------------
-
-The Karatsuba multiplication algorithm is described in Knuth section
-4.3.3 part A, and various other textbooks.  A brief description is
-given here.
-
-   The inputs x and y are treated as each split into two parts of equal
-length (or the most significant part one limb shorter if N is odd).
-
-      high              low
-     +----------+----------+
-     |    x1    |    x0    |
-     +----------+----------+
-
-     +----------+----------+
-     |    y1    |    y0    |
-     +----------+----------+
-
-   Let b be the power of 2 where the split occurs, ie. if x0 is k limbs
-(y0 the same) then b=2^(k*mp_bits_per_limb).  With that x=x1*b+x0 and
-y=y1*b+y0, and the following holds,
-
-     x*y = (b^2+b)*x1*y1 - b*(x1-x0)*(y1-y0) + (b+1)*x0*y0
-
-   This formula means doing only three multiplies of (N/2)x(N/2) limbs,
-whereas a basecase multiply of NxN limbs is equivalent to four
-multiplies of (N/2)x(N/2).  The factors (b^2+b) etc represent the
-positions where the three products must be added.
-
-      high                              low
-     +--------+--------+ +--------+--------+
-     |      x1*y1      | |      x0*y0      |
-     +--------+--------+ +--------+--------+
-               +--------+--------+
-           add |      x1*y1      |
-               +--------+--------+
-               +--------+--------+
-           add |      x0*y0      |
-               +--------+--------+
-               +--------+--------+
-           sub | (x1-x0)*(y1-y0) |
-               +--------+--------+
-
-   The term (x1-x0)*(y1-y0) is best calculated as an absolute value,
-and the sign used to choose to add or subtract.  Notice the sum
-high(x0*y0)+low(x1*y1) occurs twice, so it's possible to do 5*k limb
-additions, rather than 6*k, but in GMP extra function call overheads
-outweigh the saving.
-
-   Squaring is similar to multiplying, but with x=y the formula reduces
-to an equivalent with three squares,
-
-     x^2 = (b^2+b)*x1^2 - b*(x1-x0)^2 + (b+1)*x0^2
-
-   The final result is accumulated from those three squares the same
-way as for the three multiplies above.  The middle term (x1-x0)^2 is now
-always positive.
-
-   A similar formula for both multiplying and squaring can be
-constructed with a middle term (x1+x0)*(y1+y0).  But those sums can
-exceed k limbs, leading to more carry handling and additions than the
-form above.
-
-   Karatsuba multiplication is asymptotically an O(N^1.585) algorithm,
-the exponent being log(3)/log(2), representing 3 multiplies each 1/2
-the size of the inputs.  This is a big improvement over the basecase
-multiply at O(N^2) and the advantage soon overcomes the extra additions
-Karatsuba performs.  `MUL_TOOM22_THRESHOLD' can be as little as 10
-limbs.  The `SQR' threshold is usually about twice the `MUL'.
-
-   The basecase algorithm will take a time of the form M(N) = a*N^2 +
-b*N + c and the Karatsuba algorithm K(N) = 3*M(N/2) + d*N + e, which
-expands to K(N) = 3/4*a*N^2 + 3/2*b*N + 3*c + d*N + e.  The factor 3/4
-for a means per-crossproduct speedups in the basecase code will
-increase the threshold since they benefit M(N) more than K(N).  And
-conversely the 3/2 for b means linear style speedups of b will increase
-the threshold since they benefit K(N) more than M(N).  The latter can
-be seen for instance when adding an optimized `mpn_sqr_diagonal' to
-`mpn_sqr_basecase'.  Of course all speedups reduce total time, and in
-that sense the algorithm thresholds are merely of academic interest.
-
-\1f
-File: gmp.info,  Node: Toom 3-Way Multiplication,  Next: Toom 4-Way Multiplication,  Prev: Karatsuba Multiplication,  Up: Multiplication Algorithms
-
-16.1.3 Toom 3-Way Multiplication
---------------------------------
-
-The Karatsuba formula is the simplest case of a general approach to
-splitting inputs that leads to both Toom and FFT algorithms.  A
-description of Toom can be found in Knuth section 4.3.3, with an
-example 3-way calculation after Theorem A.  The 3-way form used in GMP
-is described here.
-
-   The operands are each considered split into 3 pieces of equal length
-(or the most significant part 1 or 2 limbs shorter than the other two).
-
-      high                         low
-     +----------+----------+----------+
-     |    x2    |    x1    |    x0    |
-     +----------+----------+----------+
-
-     +----------+----------+----------+
-     |    y2    |    y1    |    y0    |
-     +----------+----------+----------+
-
-These parts are treated as the coefficients of two polynomials
-
-     X(t) = x2*t^2 + x1*t + x0
-     Y(t) = y2*t^2 + y1*t + y0
-
-   Let b equal the power of 2 which is the size of the x0, x1, y0 and
-y1 pieces, ie. if they're k limbs each then b=2^(k*mp_bits_per_limb).
-With this x=X(b) and y=Y(b).
-
-   Let a polynomial W(t)=X(t)*Y(t) and suppose its coefficients are
-
-     W(t) = w4*t^4 + w3*t^3 + w2*t^2 + w1*t + w0
-
-   The w[i] are going to be determined, and when they are they'll give
-the final result using w=W(b), since x*y=X(b)*Y(b)=W(b).  The
-coefficients will be roughly b^2 each, and the final W(b) will be an
-addition like,
-
-      high                                        low
-     +-------+-------+
-     |       w4      |
-     +-------+-------+
-            +--------+-------+
-            |        w3      |
-            +--------+-------+
-                    +--------+-------+
-                    |        w2      |
-                    +--------+-------+
-                            +--------+-------+
-                            |        w1      |
-                            +--------+-------+
-                                     +-------+-------+
-                                     |       w0      |
-                                     +-------+-------+
-
-   The w[i] coefficients could be formed by a simple set of cross
-products, like w4=x2*y2, w3=x2*y1+x1*y2, w2=x2*y0+x1*y1+x0*y2 etc, but
-this would need all nine x[i]*y[j] for i,j=0,1,2, and would be
-equivalent merely to a basecase multiply.  Instead the following
-approach is used.
-
-   X(t) and Y(t) are evaluated and multiplied at 5 points, giving
-values of W(t) at those points.  In GMP the following points are used,
-
-     Point    Value
-     t=0      x0 * y0, which gives w0 immediately
-     t=1      (x2+x1+x0) * (y2+y1+y0)
-     t=-1     (x2-x1+x0) * (y2-y1+y0)
-     t=2      (4*x2+2*x1+x0) * (4*y2+2*y1+y0)
-     t=inf    x2 * y2, which gives w4 immediately
-
-   At t=-1 the values can be negative and that's handled using the
-absolute values and tracking the sign separately.  At t=inf the value
-is actually X(t)*Y(t)/t^4 in the limit as t approaches infinity, but
-it's much easier to think of as simply x2*y2 giving w4 immediately
-(much like x0*y0 at t=0 gives w0 immediately).
-
-   Each of the points substituted into W(t)=w4*t^4+...+w0 gives a
-linear combination of the w[i] coefficients, and the value of those
-combinations has just been calculated.
-
-     W(0)   =                              w0
-     W(1)   =    w4 +   w3 +   w2 +   w1 + w0
-     W(-1)  =    w4 -   w3 +   w2 -   w1 + w0
-     W(2)   = 16*w4 + 8*w3 + 4*w2 + 2*w1 + w0
-     W(inf) =    w4
-
-   This is a set of five equations in five unknowns, and some
-elementary linear algebra quickly isolates each w[i].  This involves
-adding or subtracting one W(t) value from another, and a couple of
-divisions by powers of 2 and one division by 3, the latter using the
-special `mpn_divexact_by3' (*note Exact Division::).
-
-   The conversion of W(t) values to the coefficients is interpolation.
-A polynomial of degree 4 like W(t) is uniquely determined by values
-known at 5 different points.  The points are arbitrary and can be
-chosen to make the linear equations come out with a convenient set of
-steps for quickly isolating the w[i].
-
-   Squaring follows the same procedure as multiplication, but there's
-only one X(t) and it's evaluated at the 5 points, and those values
-squared to give values of W(t).  The interpolation is then identical,
-and in fact the same `toom3_interpolate' subroutine is used for both
-squaring and multiplying.
-
-   Toom-3 is asymptotically O(N^1.465), the exponent being
-log(5)/log(3), representing 5 recursive multiplies of 1/3 the original
-size each.  This is an improvement over Karatsuba at O(N^1.585), though
-Toom does more work in the evaluation and interpolation and so it only
-realizes its advantage above a certain size.
-
-   Near the crossover between Toom-3 and Karatsuba there's generally a
-range of sizes where the difference between the two is small.
-`MUL_TOOM33_THRESHOLD' is a somewhat arbitrary point in that range and
-successive runs of the tune program can give different values due to
-small variations in measuring.  A graph of time versus size for the two
-shows the effect, see `tune/README'.
-
-   At the fairly small sizes where the Toom-3 thresholds occur it's
-worth remembering that the asymptotic behaviour for Karatsuba and
-Toom-3 can't be expected to make accurate predictions, due of course to
-the big influence of all sorts of overheads, and the fact that only a
-few recursions of each are being performed.  Even at large sizes
-there's a good chance machine dependent effects like cache architecture
-will mean actual performance deviates from what might be predicted.
-
-   The formula given for the Karatsuba algorithm (*note Karatsuba
-Multiplication::) has an equivalent for Toom-3 involving only five
-multiplies, but this would be complicated and unenlightening.
-
-   An alternate view of Toom-3 can be found in Zuras (*note
-References::), using a vector to represent the x and y splits and a
-matrix multiplication for the evaluation and interpolation stages.  The
-matrix inverses are not meant to be actually used, and they have
-elements with values much greater than in fact arise in the
-interpolation steps.  The diagram shown for the 3-way is attractive,
-but again doesn't have to be implemented that way and for example with
-a bit of rearrangement just one division by 6 can be done.
-
-\1f
-File: gmp.info,  Node: Toom 4-Way Multiplication,  Next: FFT Multiplication,  Prev: Toom 3-Way Multiplication,  Up: Multiplication Algorithms
-
-16.1.4 Toom 4-Way Multiplication
---------------------------------
-
-Karatsuba and Toom-3 split the operands into 2 and 3 coefficients,
-respectively.  Toom-4 analogously splits the operands into 4
-coefficients.  Using the notation from the section on Toom-3
-multiplication, we form two polynomials:
-
-     X(t) = x3*t^3 + x2*t^2 + x1*t + x0
-     Y(t) = y3*t^3 + y2*t^2 + y1*t + y0
-
-   X(t) and Y(t) are evaluated and multiplied at 7 points, giving
-values of W(t) at those points.  In GMP the following points are used,
-
-     Point    Value
-     t=0      x0 * y0, which gives w0 immediately
-     t=1/2    (x3+2*x2+4*x1+8*x0) * (y3+2*y2+4*y1+8*y0)
-     t=-1/2   (-x3+2*x2-4*x1+8*x0) * (-y3+2*y2-4*y1+8*y0)
-     t=1      (x3+x2+x1+x0) * (y3+y2+y1+y0)
-     t=-1     (-x3+x2-x1+x0) * (-y3+y2-y1+y0)
-     t=2      (8*x3+4*x2+2*x1+x0) * (8*y3+4*y2+2*y1+y0)
-     t=inf    x3 * y3, which gives w6 immediately
-
-   The number of additions and subtractions for Toom-4 is much larger
-than for Toom-3.  But several subexpressions occur multiple times, for
-example x2+x0, occurs for both t=1 and t=-1.
-
-   Toom-4 is asymptotically O(N^1.404), the exponent being
-log(7)/log(4), representing 7 recursive multiplies of 1/4 the original
-size each.
-
-\1f
-File: gmp.info,  Node: FFT Multiplication,  Next: Other Multiplication,  Prev: Toom 4-Way Multiplication,  Up: Multiplication Algorithms
-
-16.1.5 FFT Multiplication
--------------------------
-
-At large to very large sizes a Fermat style FFT multiplication is used,
-following Scho"nhage and Strassen (*note References::).  Descriptions
-of FFTs in various forms can be found in many textbooks, for instance
-Knuth section 4.3.3 part C or Lipson chapter IX.  A brief description
-of the form used in GMP is given here.
-
-   The multiplication done is x*y mod 2^N+1, for a given N.  A full
-product x*y is obtained by choosing N>=bits(x)+bits(y) and padding x
-and y with high zero limbs.  The modular product is the native form for
-the algorithm, so padding to get a full product is unavoidable.
-
-   The algorithm follows a split, evaluate, pointwise multiply,
-interpolate and combine similar to that described above for Karatsuba
-and Toom-3.  A k parameter controls the split, with an FFT-k splitting
-into 2^k pieces of M=N/2^k bits each.  N must be a multiple of
-(2^k)*mp_bits_per_limb so the split falls on limb boundaries, avoiding
-bit shifts in the split and combine stages.
-
-   The evaluations, pointwise multiplications, and interpolation, are
-all done modulo 2^N'+1 where N' is 2M+k+3 rounded up to a multiple of
-2^k and of `mp_bits_per_limb'.  The results of interpolation will be
-the following negacyclic convolution of the input pieces, and the
-choice of N' ensures these sums aren't truncated.
-
-                ---
-                \         b
-     w[n] =     /     (-1) * x[i] * y[j]
-                ---
-            i+j==b*2^k+n
-               b=0,1
-
-   The points used for the evaluation are g^i for i=0 to 2^k-1 where
-g=2^(2N'/2^k).  g is a 2^k'th root of unity mod 2^N'+1, which produces
-necessary cancellations at the interpolation stage, and it's also a
-power of 2 so the fast Fourier transforms used for the evaluation and
-interpolation do only shifts, adds and negations.
-
-   The pointwise multiplications are done modulo 2^N'+1 and either
-recurse into a further FFT or use a plain multiplication (Toom-3,
-Karatsuba or basecase), whichever is optimal at the size N'.  The
-interpolation is an inverse fast Fourier transform.  The resulting set
-of sums of x[i]*y[j] are added at appropriate offsets to give the final
-result.
-
-   Squaring is the same, but x is the only input so it's one transform
-at the evaluate stage and the pointwise multiplies are squares.  The
-interpolation is the same.
-
-   For a mod 2^N+1 product, an FFT-k is an O(N^(k/(k-1))) algorithm,
-the exponent representing 2^k recursed modular multiplies each
-1/2^(k-1) the size of the original.  Each successive k is an asymptotic
-improvement, but overheads mean each is only faster at bigger and
-bigger sizes.  In the code, `MUL_FFT_TABLE' and `SQR_FFT_TABLE' are the
-thresholds where each k is used.  Each new k effectively swaps some
-multiplying for some shifts, adds and overheads.
-
-   A mod 2^N+1 product can be formed with a normal NxN->2N bit multiply
-plus a subtraction, so an FFT and Toom-3 etc can be compared directly.
-A k=4 FFT at O(N^1.333) can be expected to be the first faster than
-Toom-3 at O(N^1.465).  In practice this is what's found, with
-`MUL_FFT_MODF_THRESHOLD' and `SQR_FFT_MODF_THRESHOLD' being between 300
-and 1000 limbs, depending on the CPU.  So far it's been found that only
-very large FFTs recurse into pointwise multiplies above these sizes.
-
-   When an FFT is to give a full product, the change of N to 2N doesn't
-alter the theoretical complexity for a given k, but for the purposes of
-considering where an FFT might be first used it can be assumed that the
-FFT is recursing into a normal multiply and that on that basis it's
-doing 2^k recursed multiplies each 1/2^(k-2) the size of the inputs,
-making it O(N^(k/(k-2))).  This would mean k=7 at O(N^1.4) would be the
-first FFT faster than Toom-3.  In practice `MUL_FFT_THRESHOLD' and
-`SQR_FFT_THRESHOLD' have been found to be in the k=8 range, somewhere
-between 3000 and 10000 limbs.
-
-   The way N is split into 2^k pieces and then 2M+k+3 is rounded up to
-a multiple of 2^k and `mp_bits_per_limb' means that when
-2^k>=mp_bits_per_limb the effective N is a multiple of 2^(2k-1) bits.
-The +k+3 means some values of N just under such a multiple will be
-rounded to the next.  The complexity calculations above assume that a
-favourable size is used, meaning one which isn't padded through
-rounding, and it's also assumed that the extra +k+3 bits are negligible
-at typical FFT sizes.
-
-   The practical effect of the 2^(2k-1) constraint is to introduce a
-step-effect into measured speeds.  For example k=8 will round N up to a
-multiple of 32768 bits, so for a 32-bit limb there'll be 512 limb
-groups of sizes for which `mpn_mul_n' runs at the same speed.  Or for
-k=9 groups of 2048 limbs, k=10 groups of 8192 limbs, etc.  In practice
-it's been found each k is used at quite small multiples of its size
-constraint and so the step effect is quite noticeable in a time versus
-size graph.
-
-   The threshold determinations currently measure at the mid-points of
-size steps, but this is sub-optimal since at the start of a new step it
-can happen that it's better to go back to the previous k for a while.
-Something more sophisticated for `MUL_FFT_TABLE' and `SQR_FFT_TABLE'
-will be needed.
-
-\1f
-File: gmp.info,  Node: Other Multiplication,  Next: Unbalanced Multiplication,  Prev: FFT Multiplication,  Up: Multiplication Algorithms
-
-16.1.6 Other Multiplication
----------------------------
-
-The Toom algorithms described above (*note Toom 3-Way Multiplication::,
-*note Toom 4-Way Multiplication::) generalizes to split into an
-arbitrary number of pieces, as per Knuth section 4.3.3 algorithm C.
-This is not currently used.  The notes here are merely for interest.
-
-   In general a split into r+1 pieces is made, and evaluations and
-pointwise multiplications done at 2*r+1 points.  A 4-way split does 7
-pointwise multiplies, 5-way does 9, etc.  Asymptotically an (r+1)-way
-algorithm is O(N^(log(2*r+1)/log(r+1))).  Only the pointwise
-multiplications count towards big-O complexity, but the time spent in
-the evaluate and interpolate stages grows with r and has a significant
-practical impact, with the asymptotic advantage of each r realized only
-at bigger and bigger sizes.  The overheads grow as O(N*r), whereas in
-an r=2^k FFT they grow only as O(N*log(r)).
-
-   Knuth algorithm C evaluates at points 0,1,2,...,2*r, but exercise 4
-uses -r,...,0,...,r and the latter saves some small multiplies in the
-evaluate stage (or rather trades them for additions), and has a further
-saving of nearly half the interpolate steps.  The idea is to separate
-odd and even final coefficients and then perform algorithm C steps C7
-and C8 on them separately.  The divisors at step C7 become j^2 and the
-multipliers at C8 become 2*t*j-j^2.
-
-   Splitting odd and even parts through positive and negative points
-can be thought of as using -1 as a square root of unity.  If a 4th root
-of unity was available then a further split and speedup would be
-possible, but no such root exists for plain integers.  Going to complex
-integers with i=sqrt(-1) doesn't help, essentially because in Cartesian
-form it takes three real multiplies to do a complex multiply.  The
-existence of 2^k'th roots of unity in a suitable ring or field lets the
-fast Fourier transform keep splitting and get to O(N*log(r)).
-
-   Floating point FFTs use complex numbers approximating Nth roots of
-unity.  Some processors have special support for such FFTs.  But these
-are not used in GMP since it's very difficult to guarantee an exact
-result (to some number of bits).  An occasional difference of 1 in the
-last bit might not matter to a typical signal processing algorithm, but
-is of course of vital importance to GMP.
-
-\1f
-File: gmp.info,  Node: Unbalanced Multiplication,  Prev: Other Multiplication,  Up: Multiplication Algorithms
-
-16.1.7 Unbalanced Multiplication
---------------------------------
-
-Multiplication of operands with different sizes, both below
-`MUL_TOOM22_THRESHOLD' are done with plain schoolbook multiplication
-(*note Basecase Multiplication::).
-
-   For really large operands, we invoke FFT directly.
-
-   For operands between these sizes, we use Toom inspired algorithms
-suggested by Alberto Zanoni and Marco Bodrato.  The idea is to split
-the operands into polynomials of different degree.  GMP currently
-splits the smaller operand onto 2 coefficients, i.e., a polynomial of
-degree 1, but the larger operand can be split into 2, 3, or 4
-coefficients, i.e., a polynomial of degree 1 to 3.
-
-\1f
-File: gmp.info,  Node: Division Algorithms,  Next: Greatest Common Divisor Algorithms,  Prev: Multiplication Algorithms,  Up: Algorithms
-
-16.2 Division Algorithms
-========================
-
-* Menu:
-
-* Single Limb Division::
-* Basecase Division::
-* Divide and Conquer Division::
-* Block-Wise Barrett Division::
-* Exact Division::
-* Exact Remainder::
-* Small Quotient Division::
-
-\1f
-File: gmp.info,  Node: Single Limb Division,  Next: Basecase Division,  Prev: Division Algorithms,  Up: Division Algorithms
-
-16.2.1 Single Limb Division
----------------------------
-
-Nx1 division is implemented using repeated 2x1 divisions from high to
-low, either with a hardware divide instruction or a multiplication by
-inverse, whichever is best on a given CPU.
-
-   The multiply by inverse follows "Improved division by invariant
-integers" by Mo"ller and Granlund (*note References::) and is
-implemented as `udiv_qrnnd_preinv' in `gmp-impl.h'.  The idea is to
-have a fixed-point approximation to 1/d (see `invert_limb') and then
-multiply by the high limb (plus one bit) of the dividend to get a
-quotient q.  With d normalized (high bit set), q is no more than 1 too
-small.  Subtracting q*d from the dividend gives a remainder, and
-reveals whether q or q-1 is correct.
-
-   The result is a division done with two multiplications and four or
-five arithmetic operations.  On CPUs with low latency multipliers this
-can be much faster than a hardware divide, though the cost of
-calculating the inverse at the start may mean it's only better on
-inputs bigger than say 4 or 5 limbs.
-
-   When a divisor must be normalized, either for the generic C
-`__udiv_qrnnd_c' or the multiply by inverse, the division performed is
-actually a*2^k by d*2^k where a is the dividend and k is the power
-necessary to have the high bit of d*2^k set.  The bit shifts for the
-dividend are usually accomplished "on the fly" meaning by extracting
-the appropriate bits at each step.  Done this way the quotient limbs
-come out aligned ready to store.  When only the remainder is wanted, an
-alternative is to take the dividend limbs unshifted and calculate r = a
-mod d*2^k followed by an extra final step r*2^k mod d*2^k.  This can
-help on CPUs with poor bit shifts or few registers.
-
-   The multiply by inverse can be done two limbs at a time.  The
-calculation is basically the same, but the inverse is two limbs and the
-divisor treated as if padded with a low zero limb.  This means more
-work, since the inverse will need a 2x2 multiply, but the four 1x1s to
-do that are independent and can therefore be done partly or wholly in
-parallel.  Likewise for a 2x1 calculating q*d.  The net effect is to
-process two limbs with roughly the same two multiplies worth of latency
-that one limb at a time gives.  This extends to 3 or 4 limbs at a time,
-though the extra work to apply the inverse will almost certainly soon
-reach the limits of multiplier throughput.
-
-   A similar approach in reverse can be taken to process just half a
-limb at a time if the divisor is only a half limb.  In this case the
-1x1 multiply for the inverse effectively becomes two (1/2)x1 for each
-limb, which can be a saving on CPUs with a fast half limb multiply, or
-in fact if the only multiply is a half limb, and especially if it's not
-pipelined.
-
-\1f
-File: gmp.info,  Node: Basecase Division,  Next: Divide and Conquer Division,  Prev: Single Limb Division,  Up: Division Algorithms
-
-16.2.2 Basecase Division
-------------------------
-
-Basecase NxM division is like long division done by hand, but in base
-2^mp_bits_per_limb.  See Knuth section 4.3.1 algorithm D, and
-`mpn/generic/sb_divrem_mn.c'.
-
-   Briefly stated, while the dividend remains larger than the divisor,
-a high quotient limb is formed and the Nx1 product q*d subtracted at
-the top end of the dividend.  With a normalized divisor (most
-significant bit set), each quotient limb can be formed with a 2x1
-division and a 1x1 multiplication plus some subtractions.  The 2x1
-division is by the high limb of the divisor and is done either with a
-hardware divide or a multiply by inverse (the same as in *Note Single
-Limb Division::) whichever is faster.  Such a quotient is sometimes one
-too big, requiring an addback of the divisor, but that happens rarely.
-
-   With Q=N-M being the number of quotient limbs, this is an O(Q*M)
-algorithm and will run at a speed similar to a basecase QxM
-multiplication, differing in fact only in the extra multiply and divide
-for each of the Q quotient limbs.
-
-\1f
-File: gmp.info,  Node: Divide and Conquer Division,  Next: Block-Wise Barrett Division,  Prev: Basecase Division,  Up: Division Algorithms
-
-16.2.3 Divide and Conquer Division
-----------------------------------
-
-For divisors larger than `DC_DIV_QR_THRESHOLD', division is done by
-dividing.  Or to be precise by a recursive divide and conquer algorithm
-based on work by Moenck and Borodin, Jebelean, and Burnikel and Ziegler
-(*note References::).
-
-   The algorithm consists essentially of recognising that a 2NxN
-division can be done with the basecase division algorithm (*note
-Basecase Division::), but using N/2 limbs as a base, not just a single
-limb.  This way the multiplications that arise are (N/2)x(N/2) and can
-take advantage of Karatsuba and higher multiplication algorithms (*note
-Multiplication Algorithms::).  The two "digits" of the quotient are
-formed by recursive Nx(N/2) divisions.
-
-   If the (N/2)x(N/2) multiplies are done with a basecase multiplication
-then the work is about the same as a basecase division, but with more
-function call overheads and with some subtractions separated from the
-multiplies.  These overheads mean that it's only when N/2 is above
-`MUL_TOOM22_THRESHOLD' that divide and conquer is of use.
-
-   `DC_DIV_QR_THRESHOLD' is based on the divisor size N, so it will be
-somewhere above twice `MUL_TOOM22_THRESHOLD', but how much above
-depends on the CPU.  An optimized `mpn_mul_basecase' can lower
-`DC_DIV_QR_THRESHOLD' a little by offering a ready-made advantage over
-repeated `mpn_submul_1' calls.
-
-   Divide and conquer is asymptotically O(M(N)*log(N)) where M(N) is
-the time for an NxN multiplication done with FFTs.  The actual time is
-a sum over multiplications of the recursed sizes, as can be seen near
-the end of section 2.2 of Burnikel and Ziegler.  For example, within
-the Toom-3 range, divide and conquer is 2.63*M(N).  With higher
-algorithms the M(N) term improves and the multiplier tends to log(N).
-In practice, at moderate to large sizes, a 2NxN division is about 2 to
-4 times slower than an NxN multiplication.
-
-\1f
-File: gmp.info,  Node: Block-Wise Barrett Division,  Next: Exact Division,  Prev: Divide and Conquer Division,  Up: Division Algorithms
-
-16.2.4 Block-Wise Barrett Division
-----------------------------------
-
-For the largest divisions, a block-wise Barrett division algorithm is
-used.  Here, the divisor is inverted to a precision determined by the
-relative size of the dividend and divisor.  Blocks of quotient limbs
-are then generated by multiplying blocks from the dividend by the
-inverse.
-
-   Our block-wise algorithm computes a smaller inverse than in the
-plain Barrett algorithm.  For a 2n/n division, the inverse will be just
-ceil(n/2) limbs.
-
-\1f
-File: gmp.info,  Node: Exact Division,  Next: Exact Remainder,  Prev: Block-Wise Barrett Division,  Up: Division Algorithms
-
-16.2.5 Exact Division
----------------------
-
-A so-called exact division is when the dividend is known to be an exact
-multiple of the divisor.  Jebelean's exact division algorithm uses this
-knowledge to make some significant optimizations (*note References::).
-
-   The idea can be illustrated in decimal for example with 368154
-divided by 543.  Because the low digit of the dividend is 4, the low
-digit of the quotient must be 8.  This is arrived at from 4*7 mod 10,
-using the fact 7 is the modular inverse of 3 (the low digit of the
-divisor), since 3*7 == 1 mod 10.  So 8*543=4344 can be subtracted from
-the dividend leaving 363810.  Notice the low digit has become zero.
-
-   The procedure is repeated at the second digit, with the next
-quotient digit 7 (7 == 1*7 mod 10), subtracting 7*543=3801, leaving
-325800.  And finally at the third digit with quotient digit 6 (8*7 mod
-10), subtracting 6*543=3258 leaving 0.  So the quotient is 678.
-
-   Notice however that the multiplies and subtractions don't need to
-extend past the low three digits of the dividend, since that's enough
-to determine the three quotient digits.  For the last quotient digit no
-subtraction is needed at all.  On a 2NxN division like this one, only
-about half the work of a normal basecase division is necessary.
-
-   For an NxM exact division producing Q=N-M quotient limbs, the saving
-over a normal basecase division is in two parts.  Firstly, each of the
-Q quotient limbs needs only one multiply, not a 2x1 divide and
-multiply.  Secondly, the crossproducts are reduced when Q>M to
-Q*M-M*(M+1)/2, or when Q<=M to Q*(Q-1)/2.  Notice the savings are
-complementary.  If Q is big then many divisions are saved, or if Q is
-small then the crossproducts reduce to a small number.
-
-   The modular inverse used is calculated efficiently by `binvert_limb'
-in `gmp-impl.h'.  This does four multiplies for a 32-bit limb, or six
-for a 64-bit limb.  `tune/modlinv.c' has some alternate implementations
-that might suit processors better at bit twiddling than multiplying.
-
-   The sub-quadratic exact division described by Jebelean in "Exact
-Division with Karatsuba Complexity" is not currently implemented.  It
-uses a rearrangement similar to the divide and conquer for normal
-division (*note Divide and Conquer Division::), but operating from low
-to high.  A further possibility not currently implemented is
-"Bidirectional Exact Integer Division" by Krandick and Jebelean which
-forms quotient limbs from both the high and low ends of the dividend,
-and can halve once more the number of crossproducts needed in a 2NxN
-division.
-
-   A special case exact division by 3 exists in `mpn_divexact_by3',
-supporting Toom-3 multiplication and `mpq' canonicalizations.  It forms
-quotient digits with a multiply by the modular inverse of 3 (which is
-`0xAA..AAB') and uses two comparisons to determine a borrow for the next
-limb.  The multiplications don't need to be on the dependent chain, as
-long as the effect of the borrows is applied, which can help chips with
-pipelined multipliers.
-
-\1f
-File: gmp.info,  Node: Exact Remainder,  Next: Small Quotient Division,  Prev: Exact Division,  Up: Division Algorithms
-
-16.2.6 Exact Remainder
-----------------------
-
-If the exact division algorithm is done with a full subtraction at each
-stage and the dividend isn't a multiple of the divisor, then low zero
-limbs are produced but with a remainder in the high limbs.  For
-dividend a, divisor d, quotient q, and b = 2^mp_bits_per_limb, this
-remainder r is of the form
-
-     a = q*d + r*b^n
-
-   n represents the number of zero limbs produced by the subtractions,
-that being the number of limbs produced for q.  r will be in the range
-0<=r<d and can be viewed as a remainder, but one shifted up by a factor
-of b^n.
-
-   Carrying out full subtractions at each stage means the same number
-of cross products must be done as a normal division, but there's still
-some single limb divisions saved.  When d is a single limb some
-simplifications arise, providing good speedups on a number of
-processors.
-
-   `mpn_divexact_by3', `mpn_modexact_1_odd' and the `mpn_redc_X'
-functions differ subtly in how they return r, leading to some negations
-in the above formula, but all are essentially the same.
-
-   Clearly r is zero when a is a multiple of d, and this leads to
-divisibility or congruence tests which are potentially more efficient
-than a normal division.
-
-   The factor of b^n on r can be ignored in a GCD when d is odd, hence
-the use of `mpn_modexact_1_odd' by `mpn_gcd_1' and `mpz_kronecker_ui'
-etc (*note Greatest Common Divisor Algorithms::).
-
-   Montgomery's REDC method for modular multiplications uses operands
-of the form of x*b^-n and y*b^-n and on calculating (x*b^-n)*(y*b^-n)
-uses the factor of b^n in the exact remainder to reach a product in the
-same form (x*y)*b^-n (*note Modular Powering Algorithm::).
-
-   Notice that r generally gives no useful information about the
-ordinary remainder a mod d since b^n mod d could be anything.  If
-however b^n == 1 mod d, then r is the negative of the ordinary
-remainder.  This occurs whenever d is a factor of b^n-1, as for example
-with 3 in `mpn_divexact_by3'.  For a 32 or 64 bit limb other such
-factors include 5, 17 and 257, but no particular use has been found for
-this.
-
-\1f
-File: gmp.info,  Node: Small Quotient Division,  Prev: Exact Remainder,  Up: Division Algorithms
-
-16.2.7 Small Quotient Division
-------------------------------
-
-An NxM division where the number of quotient limbs Q=N-M is small can
-be optimized somewhat.
-
-   An ordinary basecase division normalizes the divisor by shifting it
-to make the high bit set, shifting the dividend accordingly, and
-shifting the remainder back down at the end of the calculation.  This
-is wasteful if only a few quotient limbs are to be formed.  Instead a
-division of just the top 2*Q limbs of the dividend by the top Q limbs
-of the divisor can be used to form a trial quotient.  This requires
-only those limbs normalized, not the whole of the divisor and dividend.
-
-   A multiply and subtract then applies the trial quotient to the M-Q
-unused limbs of the divisor and N-Q dividend limbs (which includes Q
-limbs remaining from the trial quotient division).  The starting trial
-quotient can be 1 or 2 too big, but all cases of 2 too big and most
-cases of 1 too big are detected by first comparing the most significant
-limbs that will arise from the subtraction.  An addback is done if the
-quotient still turns out to be 1 too big.
-
-   This whole procedure is essentially the same as one step of the
-basecase algorithm done in a Q limb base, though with the trial
-quotient test done only with the high limbs, not an entire Q limb
-"digit" product.  The correctness of this weaker test can be
-established by following the argument of Knuth section 4.3.1 exercise
-20 but with the v2*q>b*r+u2 condition appropriately relaxed.
-
-\1f
-File: gmp.info,  Node: Greatest Common Divisor Algorithms,  Next: Powering Algorithms,  Prev: Division Algorithms,  Up: Algorithms
-
-16.3 Greatest Common Divisor
-============================
-
-* Menu:
-
-* Binary GCD::
-* Lehmer's Algorithm::
-* Subquadratic GCD::
-* Extended GCD::
-* Jacobi Symbol::
-
-\1f
-File: gmp.info,  Node: Binary GCD,  Next: Lehmer's Algorithm,  Prev: Greatest Common Divisor Algorithms,  Up: Greatest Common Divisor Algorithms
-
-16.3.1 Binary GCD
------------------
-
-At small sizes GMP uses an O(N^2) binary style GCD.  This is described
-in many textbooks, for example Knuth section 4.5.2 algorithm B.  It
-simply consists of successively reducing odd operands a and b using
-
-     a,b = abs(a-b),min(a,b)
-     strip factors of 2 from a
-
-   The Euclidean GCD algorithm, as per Knuth algorithms E and A,
-repeatedly computes the quotient q = floor(a/b) and replaces a,b by v,
-u - q v. The binary algorithm has so far been found to be faster than
-the Euclidean algorithm everywhere.  One reason the binary method does
-well is that the implied quotient at each step is usually small, so
-often only one or two subtractions are needed to get the same effect as
-a division.  Quotients 1, 2 and 3 for example occur 67.7% of the time,
-see Knuth section 4.5.3 Theorem E.
-
-   When the implied quotient is large, meaning b is much smaller than
-a, then a division is worthwhile.  This is the basis for the initial a
-mod b reductions in `mpn_gcd' and `mpn_gcd_1' (the latter for both Nx1
-and 1x1 cases).  But after that initial reduction, big quotients occur
-too rarely to make it worth checking for them.
-
-
-   The final 1x1 GCD in `mpn_gcd_1' is done in the generic C code as
-described above.  For two N-bit operands, the algorithm takes about
-0.68 iterations per bit.  For optimum performance some attention needs
-to be paid to the way the factors of 2 are stripped from a.
-
-   Firstly it may be noted that in twos complement the number of low
-zero bits on a-b is the same as b-a, so counting or testing can begin on
-a-b without waiting for abs(a-b) to be determined.
-
-   A loop stripping low zero bits tends not to branch predict well,
-since the condition is data dependent.  But on average there's only a
-few low zeros, so an option is to strip one or two bits arithmetically
-then loop for more (as done for AMD K6).  Or use a lookup table to get
-a count for several bits then loop for more (as done for AMD K7).  An
-alternative approach is to keep just one of a or b odd and iterate
-
-     a,b = abs(a-b), min(a,b)
-     a = a/2 if even
-     b = b/2 if even
-
-   This requires about 1.25 iterations per bit, but stripping of a
-single bit at each step avoids any branching.  Repeating the bit strip
-reduces to about 0.9 iterations per bit, which may be a worthwhile
-tradeoff.
-
-   Generally with the above approaches a speed of perhaps 6 cycles per
-bit can be achieved, which is still not terribly fast with for instance
-a 64-bit GCD taking nearly 400 cycles.  It's this sort of time which
-means it's not usually advantageous to combine a set of divisibility
-tests into a GCD.
-
-   Currently, the binary algorithm is used for GCD only when N < 3.
-
-\1f
-File: gmp.info,  Node: Lehmer's Algorithm,  Next: Subquadratic GCD,  Prev: Binary GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.2 Lehmer's algorithm
--------------------------
-
-Lehmer's improvement of the Euclidean algorithms is based on the
-observation that the initial part of the quotient sequence depends only
-on the most significant parts of the inputs. The variant of Lehmer's
-algorithm used in GMP splits off the most significant two limbs, as
-suggested, e.g., in "A Double-Digit Lehmer-Euclid Algorithm" by
-Jebelean (*note References::). The quotients of two double-limb inputs
-are collected as a 2 by 2 matrix with single-limb elements. This is
-done by the function `mpn_hgcd2'. The resulting matrix is applied to
-the inputs using `mpn_mul_1' and `mpn_submul_1'. Each iteration usually
-reduces the inputs by almost one limb. In the rare case of a large
-quotient, no progress can be made by examining just the most
-significant two limbs, and the quotient is computing using plain
-division.
-
-   The resulting algorithm is asymptotically O(N^2), just as the
-Euclidean algorithm and the binary algorithm. The quadratic part of the
-work are the calls to `mpn_mul_1' and `mpn_submul_1'. For small sizes,
-the linear work is also significant. There are roughly N calls to the
-`mpn_hgcd2' function. This function uses a couple of important
-optimizations:
-
-   * It uses the same relaxed notion of correctness as `mpn_hgcd' (see
-     next section). This means that when called with the most
-     significant two limbs of two large numbers, the returned matrix
-     does not always correspond exactly to the initial quotient
-     sequence for the two large numbers; the final quotient may
-     sometimes be one off.
-
-   * It takes advantage of the fact the quotients are usually small.
-     The division operator is not used, since the corresponding
-     assembler instruction is very slow on most architectures. (This
-     code could probably be improved further, it uses many branches
-     that are unfriendly to prediction).
-
-   * It switches from double-limb calculations to single-limb
-     calculations half-way through, when the input numbers have been
-     reduced in size from two limbs to one and a half.
-
-
-\1f
-File: gmp.info,  Node: Subquadratic GCD,  Next: Extended GCD,  Prev: Lehmer's Algorithm,  Up: Greatest Common Divisor Algorithms
-
-16.3.3 Subquadratic GCD
------------------------
-
-For inputs larger than `GCD_DC_THRESHOLD', GCD is computed via the HGCD
-(Half GCD) function, as a generalization to Lehmer's algorithm.
-
-   Let the inputs a,b be of size N limbs each. Put S = floor(N/2) + 1.
-Then HGCD(a,b) returns a transformation matrix T with non-negative
-elements, and reduced numbers (c;d) = T^-1 (a;b). The reduced numbers
-c,d must be larger than S limbs, while their difference abs(c-d) must
-fit in S limbs. The matrix elements will also be of size roughly N/2.
-
-   The HGCD base case uses Lehmer's algorithm, but with the above stop
-condition that returns reduced numbers and the corresponding
-transformation matrix half-way through. For inputs larger than
-`HGCD_THRESHOLD', HGCD is computed recursively, using the divide and
-conquer algorithm in "On Scho"nhage's algorithm and subquadratic
-integer GCD computation" by Mo"ller (*note References::). The recursive
-algorithm consists of these main steps.
-
-   * Call HGCD recursively, on the most significant N/2 limbs. Apply the
-     resulting matrix T_1 to the full numbers, reducing them to a size
-     just above 3N/2.
-
-   * Perform a small number of division or subtraction steps to reduce
-     the numbers to size below 3N/2. This is essential mainly for the
-     unlikely case of large quotients.
-
-   * Call HGCD recursively, on the most significant N/2 limbs of the
-     reduced numbers. Apply the resulting matrix T_2 to the full
-     numbers, reducing them to a size just above N/2.
-
-   * Compute T = T_1 T_2.
-
-   * Perform a small number of division and subtraction steps to
-     satisfy the requirements, and return.
-
-   GCD is then implemented as a loop around HGCD, similarly to Lehmer's
-algorithm. Where Lehmer repeatedly chops off the top two limbs, calls
-`mpn_hgcd2', and applies the resulting matrix to the full numbers, the
-subquadratic GCD chops off the most significant third of the limbs (the
-proportion is a tuning parameter, and 1/3 seems to be more efficient
-than, e.g, 1/2), calls `mpn_hgcd', and applies the resulting matrix.
-Once the input numbers are reduced to size below `GCD_DC_THRESHOLD',
-Lehmer's algorithm is used for the rest of the work.
-
-   The asymptotic running time of both HGCD and GCD is O(M(N)*log(N)),
-where M(N) is the time for multiplying two N-limb numbers.
-
-\1f
-File: gmp.info,  Node: Extended GCD,  Next: Jacobi Symbol,  Prev: Subquadratic GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.4 Extended GCD
--------------------
-
-The extended GCD function, or GCDEXT, calculates gcd(a,b) and also
-cofactors x and y satisfying a*x+b*y=gcd(a,b). All the algorithms used
-for plain GCD are extended to handle this case. The binary algorithm is
-used only for single-limb GCDEXT.  Lehmer's algorithm is used for sizes
-up to `GCDEXT_DC_THRESHOLD'. Above this threshold, GCDEXT is
-implemented as a loop around HGCD, but with more book-keeping to keep
-track of the cofactors. This gives the same asymptotic running time as
-for GCD and HGCD, O(M(N)*log(N))
-
-   One difference to plain GCD is that while the inputs a and b are
-reduced as the algorithm proceeds, the cofactors x and y grow in size.
-This makes the tuning of the chopping-point more difficult. The current
-code chops off the most significant half of the inputs for the call to
-HGCD in the first iteration, and the most significant two thirds for
-the remaining calls. This strategy could surely be improved. Also the
-stop condition for the loop, where Lehmer's algorithm is invoked once
-the inputs are reduced below `GCDEXT_DC_THRESHOLD', could maybe be
-improved by taking into account the current size of the cofactors.
-
-\1f
-File: gmp.info,  Node: Jacobi Symbol,  Prev: Extended GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.5 Jacobi Symbol
---------------------
-
-`mpz_jacobi' and `mpz_kronecker' are currently implemented with a
-simple binary algorithm similar to that described for the GCDs (*note
-Binary GCD::).  They're not very fast when both inputs are large.
-Lehmer's multi-step improvement or a binary based multi-step algorithm
-is likely to be better.
-
-   When one operand fits a single limb, and that includes
-`mpz_kronecker_ui' and friends, an initial reduction is done with
-either `mpn_mod_1' or `mpn_modexact_1_odd', followed by the binary
-algorithm on a single limb.  The binary algorithm is well suited to a
-single limb, and the whole calculation in this case is quite efficient.
-
-   In all the routines sign changes for the result are accumulated
-using some bit twiddling, avoiding table lookups or conditional jumps.
-
diff --git a/misc/builddeps/linux32/gmp/share/info/gmp.info-2 b/misc/builddeps/linux32/gmp/share/info/gmp.info-2
deleted file mode 100644 (file)
index 4584623..0000000
+++ /dev/null
@@ -1,3489 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-File: gmp.info,  Node: Powering Algorithms,  Next: Root Extraction Algorithms,  Prev: Greatest Common Divisor Algorithms,  Up: Algorithms
-
-16.4 Powering Algorithms
-========================
-
-* Menu:
-
-* Normal Powering Algorithm::
-* Modular Powering Algorithm::
-
-\1f
-File: gmp.info,  Node: Normal Powering Algorithm,  Next: Modular Powering Algorithm,  Prev: Powering Algorithms,  Up: Powering Algorithms
-
-16.4.1 Normal Powering
-----------------------
-
-Normal `mpz' or `mpf' powering uses a simple binary algorithm,
-successively squaring and then multiplying by the base when a 1 bit is
-seen in the exponent, as per Knuth section 4.6.3.  The "left to right"
-variant described there is used rather than algorithm A, since it's
-just as easy and can be done with somewhat less temporary memory.
-
-\1f
-File: gmp.info,  Node: Modular Powering Algorithm,  Prev: Normal Powering Algorithm,  Up: Powering Algorithms
-
-16.4.2 Modular Powering
------------------------
-
-Modular powering is implemented using a 2^k-ary sliding window
-algorithm, as per "Handbook of Applied Cryptography" algorithm 14.85
-(*note References::).  k is chosen according to the size of the
-exponent.  Larger exponents use larger values of k, the choice being
-made to minimize the average number of multiplications that must
-supplement the squaring.
-
-   The modular multiplies and squares use either a simple division or
-the REDC method by Montgomery (*note References::).  REDC is a little
-faster, essentially saving N single limb divisions in a fashion similar
-to an exact remainder (*note Exact Remainder::).
-
-\1f
-File: gmp.info,  Node: Root Extraction Algorithms,  Next: Radix Conversion Algorithms,  Prev: Powering Algorithms,  Up: Algorithms
-
-16.5 Root Extraction Algorithms
-===============================
-
-* Menu:
-
-* Square Root Algorithm::
-* Nth Root Algorithm::
-* Perfect Square Algorithm::
-* Perfect Power Algorithm::
-
-\1f
-File: gmp.info,  Node: Square Root Algorithm,  Next: Nth Root Algorithm,  Prev: Root Extraction Algorithms,  Up: Root Extraction Algorithms
-
-16.5.1 Square Root
-------------------
-
-Square roots are taken using the "Karatsuba Square Root" algorithm by
-Paul Zimmermann (*note References::).
-
-   An input n is split into four parts of k bits each, so with b=2^k we
-have n = a3*b^3 + a2*b^2 + a1*b + a0.  Part a3 must be "normalized" so
-that either the high or second highest bit is set.  In GMP, k is kept
-on a limb boundary and the input is left shifted (by an even number of
-bits) to normalize.
-
-   The square root of the high two parts is taken, by recursive
-application of the algorithm (bottoming out in a one-limb Newton's
-method),
-
-     s1,r1 = sqrtrem (a3*b + a2)
-
-   This is an approximation to the desired root and is extended by a
-division to give s,r,
-
-     q,u = divrem (r1*b + a1, 2*s1)
-     s = s1*b + q
-     r = u*b + a0 - q^2
-
-   The normalization requirement on a3 means at this point s is either
-correct or 1 too big.  r is negative in the latter case, so
-
-     if r < 0 then
-       r = r + 2*s - 1
-       s = s - 1
-
-   The algorithm is expressed in a divide and conquer form, but as
-noted in the paper it can also be viewed as a discrete variant of
-Newton's method, or as a variation on the schoolboy method (no longer
-taught) for square roots two digits at a time.
-
-   If the remainder r is not required then usually only a few high limbs
-of r and u need to be calculated to determine whether an adjustment to
-s is required.  This optimization is not currently implemented.
-
-   In the Karatsuba multiplication range this algorithm is
-O(1.5*M(N/2)), where M(n) is the time to multiply two numbers of n
-limbs.  In the FFT multiplication range this grows to a bound of
-O(6*M(N/2)).  In practice a factor of about 1.5 to 1.8 is found in the
-Karatsuba and Toom-3 ranges, growing to 2 or 3 in the FFT range.
-
-   The algorithm does all its calculations in integers and the resulting
-`mpn_sqrtrem' is used for both `mpz_sqrt' and `mpf_sqrt'.  The extended
-precision given by `mpf_sqrt_ui' is obtained by padding with zero limbs.
-
-\1f
-File: gmp.info,  Node: Nth Root Algorithm,  Next: Perfect Square Algorithm,  Prev: Square Root Algorithm,  Up: Root Extraction Algorithms
-
-16.5.2 Nth Root
----------------
-
-Integer Nth roots are taken using Newton's method with the following
-iteration, where A is the input and n is the root to be taken.
-
-              1         A
-     a[i+1] = - * ( --------- + (n-1)*a[i] )
-              n     a[i]^(n-1)
-
-   The initial approximation a[1] is generated bitwise by successively
-powering a trial root with or without new 1 bits, aiming to be just
-above the true root.  The iteration converges quadratically when
-started from a good approximation.  When n is large more initial bits
-are needed to get good convergence.  The current implementation is not
-particularly well optimized.
-
-\1f
-File: gmp.info,  Node: Perfect Square Algorithm,  Next: Perfect Power Algorithm,  Prev: Nth Root Algorithm,  Up: Root Extraction Algorithms
-
-16.5.3 Perfect Square
----------------------
-
-A significant fraction of non-squares can be quickly identified by
-checking whether the input is a quadratic residue modulo small integers.
-
-   `mpz_perfect_square_p' first tests the input mod 256, which means
-just examining the low byte.  Only 44 different values occur for
-squares mod 256, so 82.8% of inputs can be immediately identified as
-non-squares.
-
-   On a 32-bit system similar tests are done mod 9, 5, 7, 13 and 17,
-for a total 99.25% of inputs identified as non-squares.  On a 64-bit
-system 97 is tested too, for a total 99.62%.
-
-   These moduli are chosen because they're factors of 2^24-1 (or 2^48-1
-for 64-bits), and such a remainder can be quickly taken just using
-additions (see `mpn_mod_34lsub1').
-
-   When nails are in use moduli are instead selected by the `gen-psqr.c'
-program and applied with an `mpn_mod_1'.  The same 2^24-1 or 2^48-1
-could be done with nails using some extra bit shifts, but this is not
-currently implemented.
-
-   In any case each modulus is applied to the `mpn_mod_34lsub1' or
-`mpn_mod_1' remainder and a table lookup identifies non-squares.  By
-using a "modexact" style calculation, and suitably permuted tables,
-just one multiply each is required, see the code for details.  Moduli
-are also combined to save operations, so long as the lookup tables
-don't become too big.  `gen-psqr.c' does all the pre-calculations.
-
-   A square root must still be taken for any value that passes these
-tests, to verify it's really a square and not one of the small fraction
-of non-squares that get through (ie. a pseudo-square to all the tested
-bases).
-
-   Clearly more residue tests could be done, `mpz_perfect_square_p' only
-uses a compact and efficient set.  Big inputs would probably benefit
-from more residue testing, small inputs might be better off with less.
-The assumed distribution of squares versus non-squares in the input
-would affect such considerations.
-
-\1f
-File: gmp.info,  Node: Perfect Power Algorithm,  Prev: Perfect Square Algorithm,  Up: Root Extraction Algorithms
-
-16.5.4 Perfect Power
---------------------
-
-Detecting perfect powers is required by some factorization algorithms.
-Currently `mpz_perfect_power_p' is implemented using repeated Nth root
-extractions, though naturally only prime roots need to be considered.
-(*Note Nth Root Algorithm::.)
-
-   If a prime divisor p with multiplicity e can be found, then only
-roots which are divisors of e need to be considered, much reducing the
-work necessary.  To this end divisibility by a set of small primes is
-checked.
-
-\1f
-File: gmp.info,  Node: Radix Conversion Algorithms,  Next: Other Algorithms,  Prev: Root Extraction Algorithms,  Up: Algorithms
-
-16.6 Radix Conversion
-=====================
-
-Radix conversions are less important than other algorithms.  A program
-dominated by conversions should probably use a different data
-representation.
-
-* Menu:
-
-* Binary to Radix::
-* Radix to Binary::
-
-\1f
-File: gmp.info,  Node: Binary to Radix,  Next: Radix to Binary,  Prev: Radix Conversion Algorithms,  Up: Radix Conversion Algorithms
-
-16.6.1 Binary to Radix
-----------------------
-
-Conversions from binary to a power-of-2 radix use a simple and fast
-O(N) bit extraction algorithm.
-
-   Conversions from binary to other radices use one of two algorithms.
-Sizes below `GET_STR_PRECOMPUTE_THRESHOLD' use a basic O(N^2) method.
-Repeated divisions by b^n are made, where b is the radix and n is the
-biggest power that fits in a limb.  But instead of simply using the
-remainder r from such divisions, an extra divide step is done to give a
-fractional limb representing r/b^n.  The digits of r can then be
-extracted using multiplications by b rather than divisions.  Special
-case code is provided for decimal, allowing multiplications by 10 to
-optimize to shifts and adds.
-
-   Above `GET_STR_PRECOMPUTE_THRESHOLD' a sub-quadratic algorithm is
-used.  For an input t, powers b^(n*2^i) of the radix are calculated,
-until a power between t and sqrt(t) is reached.  t is then divided by
-that largest power, giving a quotient which is the digits above that
-power, and a remainder which is those below.  These two parts are in
-turn divided by the second highest power, and so on recursively.  When
-a piece has been divided down to less than `GET_STR_DC_THRESHOLD'
-limbs, the basecase algorithm described above is used.
-
-   The advantage of this algorithm is that big divisions can make use
-of the sub-quadratic divide and conquer division (*note Divide and
-Conquer Division::), and big divisions tend to have less overheads than
-lots of separate single limb divisions anyway.  But in any case the
-cost of calculating the powers b^(n*2^i) must first be overcome.
-
-   `GET_STR_PRECOMPUTE_THRESHOLD' and `GET_STR_DC_THRESHOLD' represent
-the same basic thing, the point where it becomes worth doing a big
-division to cut the input in half.  `GET_STR_PRECOMPUTE_THRESHOLD'
-includes the cost of calculating the radix power required, whereas
-`GET_STR_DC_THRESHOLD' assumes that's already available, which is the
-case when recursing.
-
-   Since the base case produces digits from least to most significant
-but they want to be stored from most to least, it's necessary to
-calculate in advance how many digits there will be, or at least be sure
-not to underestimate that.  For GMP the number of input bits is
-multiplied by `chars_per_bit_exactly' from `mp_bases', rounding up.
-The result is either correct or one too big.
-
-   Examining some of the high bits of the input could increase the
-chance of getting the exact number of digits, but an exact result every
-time would not be practical, since in general the difference between
-numbers 100... and 99... is only in the last few bits and the work to
-identify 99...  might well be almost as much as a full conversion.
-
-   `mpf_get_str' doesn't currently use the algorithm described here, it
-multiplies or divides by a power of b to move the radix point to the
-just above the highest non-zero digit (or at worst one above that
-location), then multiplies by b^n to bring out digits.  This is O(N^2)
-and is certainly not optimal.
-
-   The r/b^n scheme described above for using multiplications to bring
-out digits might be useful for more than a single limb.  Some brief
-experiments with it on the base case when recursing didn't give a
-noticeable improvement, but perhaps that was only due to the
-implementation.  Something similar would work for the sub-quadratic
-divisions too, though there would be the cost of calculating a bigger
-radix power.
-
-   Another possible improvement for the sub-quadratic part would be to
-arrange for radix powers that balanced the sizes of quotient and
-remainder produced, ie. the highest power would be an b^(n*k)
-approximately equal to sqrt(t), not restricted to a 2^i factor.  That
-ought to smooth out a graph of times against sizes, but may or may not
-be a net speedup.
-
-\1f
-File: gmp.info,  Node: Radix to Binary,  Prev: Binary to Radix,  Up: Radix Conversion Algorithms
-
-16.6.2 Radix to Binary
-----------------------
-
-*This section needs to be rewritten, it currently describes the
-algorithms used before GMP 4.3.*
-
-   Conversions from a power-of-2 radix into binary use a simple and fast
-O(N) bitwise concatenation algorithm.
-
-   Conversions from other radices use one of two algorithms.  Sizes
-below `SET_STR_PRECOMPUTE_THRESHOLD' use a basic O(N^2) method.  Groups
-of n digits are converted to limbs, where n is the biggest power of the
-base b which will fit in a limb, then those groups are accumulated into
-the result by multiplying by b^n and adding.  This saves
-multi-precision operations, as per Knuth section 4.4 part E (*note
-References::).  Some special case code is provided for decimal, giving
-the compiler a chance to optimize multiplications by 10.
-
-   Above `SET_STR_PRECOMPUTE_THRESHOLD' a sub-quadratic algorithm is
-used.  First groups of n digits are converted into limbs.  Then adjacent
-limbs are combined into limb pairs with x*b^n+y, where x and y are the
-limbs.  Adjacent limb pairs are combined into quads similarly with
-x*b^(2n)+y.  This continues until a single block remains, that being
-the result.
-
-   The advantage of this method is that the multiplications for each x
-are big blocks, allowing Karatsuba and higher algorithms to be used.
-But the cost of calculating the powers b^(n*2^i) must be overcome.
-`SET_STR_PRECOMPUTE_THRESHOLD' usually ends up quite big, around 5000
-digits, and on some processors much bigger still.
-
-   `SET_STR_PRECOMPUTE_THRESHOLD' is based on the input digits (and
-tuned for decimal), though it might be better based on a limb count, so
-as to be independent of the base.  But that sort of count isn't used by
-the base case and so would need some sort of initial calculation or
-estimate.
-
-   The main reason `SET_STR_PRECOMPUTE_THRESHOLD' is so much bigger
-than the corresponding `GET_STR_PRECOMPUTE_THRESHOLD' is that
-`mpn_mul_1' is much faster than `mpn_divrem_1' (often by a factor of 5,
-or more).
-
-\1f
-File: gmp.info,  Node: Other Algorithms,  Next: Assembly Coding,  Prev: Radix Conversion Algorithms,  Up: Algorithms
-
-16.7 Other Algorithms
-=====================
-
-* Menu:
-
-* Prime Testing Algorithm::
-* Factorial Algorithm::
-* Binomial Coefficients Algorithm::
-* Fibonacci Numbers Algorithm::
-* Lucas Numbers Algorithm::
-* Random Number Algorithms::
-
-\1f
-File: gmp.info,  Node: Prime Testing Algorithm,  Next: Factorial Algorithm,  Prev: Other Algorithms,  Up: Other Algorithms
-
-16.7.1 Prime Testing
---------------------
-
-The primality testing in `mpz_probab_prime_p' (*note Number Theoretic
-Functions::) first does some trial division by small factors and then
-uses the Miller-Rabin probabilistic primality testing algorithm, as
-described in Knuth section 4.5.4 algorithm P (*note References::).
-
-   For an odd input n, and with n = q*2^k+1 where q is odd, this
-algorithm selects a random base x and tests whether x^q mod n is 1 or
--1, or an x^(q*2^j) mod n is 1, for 1<=j<=k.  If so then n is probably
-prime, if not then n is definitely composite.
-
-   Any prime n will pass the test, but some composites do too.  Such
-composites are known as strong pseudoprimes to base x.  No n is a
-strong pseudoprime to more than 1/4 of all bases (see Knuth exercise
-22), hence with x chosen at random there's no more than a 1/4 chance a
-"probable prime" will in fact be composite.
-
-   In fact strong pseudoprimes are quite rare, making the test much more
-powerful than this analysis would suggest, but 1/4 is all that's proven
-for an arbitrary n.
-
-\1f
-File: gmp.info,  Node: Factorial Algorithm,  Next: Binomial Coefficients Algorithm,  Prev: Prime Testing Algorithm,  Up: Other Algorithms
-
-16.7.2 Factorial
-----------------
-
-Factorials are calculated by a combination of removal of twos,
-powering, and binary splitting.  The procedure can be best illustrated
-with an example,
-
-     23! = 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23
-
-has factors of two removed,
-
-     23! = 2^19.1.1.3.1.5.3.7.1.9.5.11.3.13.7.15.1.17.9.19.5.21.11.23
-
-and the resulting terms collected up according to their multiplicity,
-
-     23! = 2^19.(3.5)^3.(7.9.11)^2.(13.15.17.19.21.23)
-
-   Each sequence such as 13.15.17.19.21.23 is evaluated by splitting
-into every second term, as for instance (13.17.21).(15.19.23), and the
-same recursively on each half.  This is implemented iteratively using
-some bit twiddling.
-
-   Such splitting is more efficient than repeated Nx1 multiplies since
-it forms big multiplies, allowing Karatsuba and higher algorithms to be
-used.  And even below the Karatsuba threshold a big block of work can
-be more efficient for the basecase algorithm.
-
-   Splitting into subsequences of every second term keeps the resulting
-products more nearly equal in size than would the simpler approach of
-say taking the first half and second half of the sequence.  Nearly
-equal products are more efficient for the current multiply
-implementation.
-
-\1f
-File: gmp.info,  Node: Binomial Coefficients Algorithm,  Next: Fibonacci Numbers Algorithm,  Prev: Factorial Algorithm,  Up: Other Algorithms
-
-16.7.3 Binomial Coefficients
-----------------------------
-
-Binomial coefficients C(n,k) are calculated by first arranging k <= n/2
-using C(n,k) = C(n,n-k) if necessary, and then evaluating the following
-product simply from i=2 to i=k.
-
-                           k  (n-k+i)
-     C(n,k) =  (n-k+1) * prod -------
-                          i=2    i
-
-   It's easy to show that each denominator i will divide the product so
-far, so the exact division algorithm is used (*note Exact Division::).
-
-   The numerators n-k+i and denominators i are first accumulated into
-as many fit a limb, to save multi-precision operations, though for
-`mpz_bin_ui' this applies only to the divisors, since n is an `mpz_t'
-and n-k+i in general won't fit in a limb at all.
-
-\1f
-File: gmp.info,  Node: Fibonacci Numbers Algorithm,  Next: Lucas Numbers Algorithm,  Prev: Binomial Coefficients Algorithm,  Up: Other Algorithms
-
-16.7.4 Fibonacci Numbers
-------------------------
-
-The Fibonacci functions `mpz_fib_ui' and `mpz_fib2_ui' are designed for
-calculating isolated F[n] or F[n],F[n-1] values efficiently.
-
-   For small n, a table of single limb values in `__gmp_fib_table' is
-used.  On a 32-bit limb this goes up to F[47], or on a 64-bit limb up
-to F[93].  For convenience the table starts at F[-1].
-
-   Beyond the table, values are generated with a binary powering
-algorithm, calculating a pair F[n] and F[n-1] working from high to low
-across the bits of n.  The formulas used are
-
-     F[2k+1] = 4*F[k]^2 - F[k-1]^2 + 2*(-1)^k
-     F[2k-1] =   F[k]^2 + F[k-1]^2
-
-     F[2k] = F[2k+1] - F[2k-1]
-
-   At each step, k is the high b bits of n.  If the next bit of n is 0
-then F[2k],F[2k-1] is used, or if it's a 1 then F[2k+1],F[2k] is used,
-and the process repeated until all bits of n are incorporated.  Notice
-these formulas require just two squares per bit of n.
-
-   It'd be possible to handle the first few n above the single limb
-table with simple additions, using the defining Fibonacci recurrence
-F[k+1]=F[k]+F[k-1], but this is not done since it usually turns out to
-be faster for only about 10 or 20 values of n, and including a block of
-code for just those doesn't seem worthwhile.  If they really mattered
-it'd be better to extend the data table.
-
-   Using a table avoids lots of calculations on small numbers, and
-makes small n go fast.  A bigger table would make more small n go fast,
-it's just a question of balancing size against desired speed.  For GMP
-the code is kept compact, with the emphasis primarily on a good
-powering algorithm.
-
-   `mpz_fib2_ui' returns both F[n] and F[n-1], but `mpz_fib_ui' is only
-interested in F[n].  In this case the last step of the algorithm can
-become one multiply instead of two squares.  One of the following two
-formulas is used, according as n is odd or even.
-
-     F[2k]   = F[k]*(F[k]+2F[k-1])
-
-     F[2k+1] = (2F[k]+F[k-1])*(2F[k]-F[k-1]) + 2*(-1)^k
-
-   F[2k+1] here is the same as above, just rearranged to be a multiply.
-For interest, the 2*(-1)^k term both here and above can be applied
-just to the low limb of the calculation, without a carry or borrow into
-further limbs, which saves some code size.  See comments with
-`mpz_fib_ui' and the internal `mpn_fib2_ui' for how this is done.
-
-\1f
-File: gmp.info,  Node: Lucas Numbers Algorithm,  Next: Random Number Algorithms,  Prev: Fibonacci Numbers Algorithm,  Up: Other Algorithms
-
-16.7.5 Lucas Numbers
---------------------
-
-`mpz_lucnum2_ui' derives a pair of Lucas numbers from a pair of
-Fibonacci numbers with the following simple formulas.
-
-     L[k]   =   F[k] + 2*F[k-1]
-     L[k-1] = 2*F[k] -   F[k-1]
-
-   `mpz_lucnum_ui' is only interested in L[n], and some work can be
-saved.  Trailing zero bits on n can be handled with a single square
-each.
-
-     L[2k] = L[k]^2 - 2*(-1)^k
-
-   And the lowest 1 bit can be handled with one multiply of a pair of
-Fibonacci numbers, similar to what `mpz_fib_ui' does.
-
-     L[2k+1] = 5*F[k-1]*(2*F[k]+F[k-1]) - 4*(-1)^k
-
-\1f
-File: gmp.info,  Node: Random Number Algorithms,  Prev: Lucas Numbers Algorithm,  Up: Other Algorithms
-
-16.7.6 Random Numbers
----------------------
-
-For the `urandomb' functions, random numbers are generated simply by
-concatenating bits produced by the generator.  As long as the generator
-has good randomness properties this will produce well-distributed N bit
-numbers.
-
-   For the `urandomm' functions, random numbers in a range 0<=R<N are
-generated by taking values R of ceil(log2(N)) bits each until one
-satisfies R<N.  This will normally require only one or two attempts,
-but the attempts are limited in case the generator is somehow
-degenerate and produces only 1 bits or similar.
-
-   The Mersenne Twister generator is by Matsumoto and Nishimura (*note
-References::).  It has a non-repeating period of 2^19937-1, which is a
-Mersenne prime, hence the name of the generator.  The state is 624
-words of 32-bits each, which is iterated with one XOR and shift for each
-32-bit word generated, making the algorithm very fast.  Randomness
-properties are also very good and this is the default algorithm used by
-GMP.
-
-   Linear congruential generators are described in many text books, for
-instance Knuth volume 2 (*note References::).  With a modulus M and
-parameters A and C, a integer state S is iterated by the formula S <-
-A*S+C mod M.  At each step the new state is a linear function of the
-previous, mod M, hence the name of the generator.
-
-   In GMP only moduli of the form 2^N are supported, and the current
-implementation is not as well optimized as it could be.  Overheads are
-significant when N is small, and when N is large clearly the multiply
-at each step will become slow.  This is not a big concern, since the
-Mersenne Twister generator is better in every respect and is therefore
-recommended for all normal applications.
-
-   For both generators the current state can be deduced by observing
-enough output and applying some linear algebra (over GF(2) in the case
-of the Mersenne Twister).  This generally means raw output is
-unsuitable for cryptographic applications without further hashing or
-the like.
-
-\1f
-File: gmp.info,  Node: Assembly Coding,  Prev: Other Algorithms,  Up: Algorithms
-
-16.8 Assembly Coding
-====================
-
-The assembly subroutines in GMP are the most significant source of
-speed at small to moderate sizes.  At larger sizes algorithm selection
-becomes more important, but of course speedups in low level routines
-will still speed up everything proportionally.
-
-   Carry handling and widening multiplies that are important for GMP
-can't be easily expressed in C.  GCC `asm' blocks help a lot and are
-provided in `longlong.h', but hand coding low level routines invariably
-offers a speedup over generic C by a factor of anything from 2 to 10.
-
-* Menu:
-
-* Assembly Code Organisation::
-* Assembly Basics::
-* Assembly Carry Propagation::
-* Assembly Cache Handling::
-* Assembly Functional Units::
-* Assembly Floating Point::
-* Assembly SIMD Instructions::
-* Assembly Software Pipelining::
-* Assembly Loop Unrolling::
-* Assembly Writing Guide::
-
-\1f
-File: gmp.info,  Node: Assembly Code Organisation,  Next: Assembly Basics,  Prev: Assembly Coding,  Up: Assembly Coding
-
-16.8.1 Code Organisation
-------------------------
-
-The various `mpn' subdirectories contain machine-dependent code, written
-in C or assembly.  The `mpn/generic' subdirectory contains default code,
-used when there's no machine-specific version of a particular file.
-
-   Each `mpn' subdirectory is for an ISA family.  Generally 32-bit and
-64-bit variants in a family cannot share code and have separate
-directories.  Within a family further subdirectories may exist for CPU
-variants.
-
-   In each directory a `nails' subdirectory may exist, holding code with
-nails support for that CPU variant.  A `NAILS_SUPPORT' directive in each
-file indicates the nails values the code handles.  Nails code only
-exists where it's faster, or promises to be faster, than plain code.
-There's no effort put into nails if they're not going to enhance a
-given CPU.
-
-\1f
-File: gmp.info,  Node: Assembly Basics,  Next: Assembly Carry Propagation,  Prev: Assembly Code Organisation,  Up: Assembly Coding
-
-16.8.2 Assembly Basics
-----------------------
-
-`mpn_addmul_1' and `mpn_submul_1' are the most important routines for
-overall GMP performance.  All multiplications and divisions come down to
-repeated calls to these.  `mpn_add_n', `mpn_sub_n', `mpn_lshift' and
-`mpn_rshift' are next most important.
-
-   On some CPUs assembly versions of the internal functions
-`mpn_mul_basecase' and `mpn_sqr_basecase' give significant speedups,
-mainly through avoiding function call overheads.  They can also
-potentially make better use of a wide superscalar processor, as can
-bigger primitives like `mpn_addmul_2' or `mpn_addmul_4'.
-
-   The restrictions on overlaps between sources and destinations (*note
-Low-level Functions::) are designed to facilitate a variety of
-implementations.  For example, knowing `mpn_add_n' won't have partly
-overlapping sources and destination means reading can be done far ahead
-of writing on superscalar processors, and loops can be vectorized on a
-vector processor, depending on the carry handling.
-
-\1f
-File: gmp.info,  Node: Assembly Carry Propagation,  Next: Assembly Cache Handling,  Prev: Assembly Basics,  Up: Assembly Coding
-
-16.8.3 Carry Propagation
-------------------------
-
-The problem that presents most challenges in GMP is propagating carries
-from one limb to the next.  In functions like `mpn_addmul_1' and
-`mpn_add_n', carries are the only dependencies between limb operations.
-
-   On processors with carry flags, a straightforward CISC style `adc' is
-generally best.  AMD K6 `mpn_addmul_1' however is an example of an
-unusual set of circumstances where a branch works out better.
-
-   On RISC processors generally an add and compare for overflow is
-used.  This sort of thing can be seen in `mpn/generic/aors_n.c'.  Some
-carry propagation schemes require 4 instructions, meaning at least 4
-cycles per limb, but other schemes may use just 1 or 2.  On wide
-superscalar processors performance may be completely determined by the
-number of dependent instructions between carry-in and carry-out for
-each limb.
-
-   On vector processors good use can be made of the fact that a carry
-bit only very rarely propagates more than one limb.  When adding a
-single bit to a limb, there's only a carry out if that limb was
-`0xFF...FF' which on random data will be only 1 in 2^mp_bits_per_limb.
-`mpn/cray/add_n.c' is an example of this, it adds all limbs in
-parallel, adds one set of carry bits in parallel and then only rarely
-needs to fall through to a loop propagating further carries.
-
-   On the x86s, GCC (as of version 2.95.2) doesn't generate
-particularly good code for the RISC style idioms that are necessary to
-handle carry bits in C.  Often conditional jumps are generated where
-`adc' or `sbb' forms would be better.  And so unfortunately almost any
-loop involving carry bits needs to be coded in assembly for best
-results.
-
-\1f
-File: gmp.info,  Node: Assembly Cache Handling,  Next: Assembly Functional Units,  Prev: Assembly Carry Propagation,  Up: Assembly Coding
-
-16.8.4 Cache Handling
----------------------
-
-GMP aims to perform well both on operands that fit entirely in L1 cache
-and those which don't.
-
-   Basic routines like `mpn_add_n' or `mpn_lshift' are often used on
-large operands, so L2 and main memory performance is important for them.
-`mpn_mul_1' and `mpn_addmul_1' are mostly used for multiply and square
-basecases, so L1 performance matters most for them, unless assembly
-versions of `mpn_mul_basecase' and `mpn_sqr_basecase' exist, in which
-case the remaining uses are mostly for larger operands.
-
-   For L2 or main memory operands, memory access times will almost
-certainly be more than the calculation time.  The aim therefore is to
-maximize memory throughput, by starting a load of the next cache line
-while processing the contents of the previous one.  Clearly this is
-only possible if the chip has a lock-up free cache or some sort of
-prefetch instruction.  Most current chips have both these features.
-
-   Prefetching sources combines well with loop unrolling, since a
-prefetch can be initiated once per unrolled loop (or more than once if
-the loop covers more than one cache line).
-
-   On CPUs without write-allocate caches, prefetching destinations will
-ensure individual stores don't go further down the cache hierarchy,
-limiting bandwidth.  Of course for calculations which are slow anyway,
-like `mpn_divrem_1', write-throughs might be fine.
-
-   The distance ahead to prefetch will be determined by memory latency
-versus throughput.  The aim of course is to have data arriving
-continuously, at peak throughput.  Some CPUs have limits on the number
-of fetches or prefetches in progress.
-
-   If a special prefetch instruction doesn't exist then a plain load
-can be used, but in that case care must be taken not to attempt to read
-past the end of an operand, since that might produce a segmentation
-violation.
-
-   Some CPUs or systems have hardware that detects sequential memory
-accesses and initiates suitable cache movements automatically, making
-life easy.
-
-\1f
-File: gmp.info,  Node: Assembly Functional Units,  Next: Assembly Floating Point,  Prev: Assembly Cache Handling,  Up: Assembly Coding
-
-16.8.5 Functional Units
------------------------
-
-When choosing an approach for an assembly loop, consideration is given
-to what operations can execute simultaneously and what throughput can
-thereby be achieved.  In some cases an algorithm can be tweaked to
-accommodate available resources.
-
-   Loop control will generally require a counter and pointer updates,
-costing as much as 5 instructions, plus any delays a branch introduces.
-CPU addressing modes might reduce pointer updates, perhaps by allowing
-just one updating pointer and others expressed as offsets from it, or
-on CISC chips with all addressing done with the loop counter as a
-scaled index.
-
-   The final loop control cost can be amortised by processing several
-limbs in each iteration (*note Assembly Loop Unrolling::).  This at
-least ensures loop control isn't a big fraction the work done.
-
-   Memory throughput is always a limit.  If perhaps only one load or
-one store can be done per cycle then 3 cycles/limb will the top speed
-for "binary" operations like `mpn_add_n', and any code achieving that
-is optimal.
-
-   Integer resources can be freed up by having the loop counter in a
-float register, or by pressing the float units into use for some
-multiplying, perhaps doing every second limb on the float side (*note
-Assembly Floating Point::).
-
-   Float resources can be freed up by doing carry propagation on the
-integer side, or even by doing integer to float conversions in integers
-using bit twiddling.
-
-\1f
-File: gmp.info,  Node: Assembly Floating Point,  Next: Assembly SIMD Instructions,  Prev: Assembly Functional Units,  Up: Assembly Coding
-
-16.8.6 Floating Point
----------------------
-
-Floating point arithmetic is used in GMP for multiplications on CPUs
-with poor integer multipliers.  It's mostly useful for `mpn_mul_1',
-`mpn_addmul_1' and `mpn_submul_1' on 64-bit machines, and
-`mpn_mul_basecase' on both 32-bit and 64-bit machines.
-
-   With IEEE 53-bit double precision floats, integer multiplications
-producing up to 53 bits will give exact results.  Breaking a 64x64
-multiplication into eight 16x32->48 bit pieces is convenient.  With
-some care though six 21x32->53 bit products can be used, if one of the
-lower two 21-bit pieces also uses the sign bit.
-
-   For the `mpn_mul_1' family of functions on a 64-bit machine, the
-invariant single limb is split at the start, into 3 or 4 pieces.
-Inside the loop, the bignum operand is split into 32-bit pieces.  Fast
-conversion of these unsigned 32-bit pieces to floating point is highly
-machine-dependent.  In some cases, reading the data into the integer
-unit, zero-extending to 64-bits, then transferring to the floating
-point unit back via memory is the only option.
-
-   Converting partial products back to 64-bit limbs is usually best
-done as a signed conversion.  Since all values are smaller than 2^53,
-signed and unsigned are the same, but most processors lack unsigned
-conversions.
-
-
-
-   Here is a diagram showing 16x32 bit products for an `mpn_mul_1' or
-`mpn_addmul_1' with a 64-bit limb.  The single limb operand V is split
-into four 16-bit parts.  The multi-limb operand U is split in the loop
-into two 32-bit parts.
-
-                     +---+---+---+---+
-                     |v48|v32|v16|v00|    V operand
-                     +---+---+---+---+
-
-                     +-------+---+---+
-                 x   |  u32  |  u00  |    U operand (one limb)
-                     +---------------+
-
-     ---------------------------------
-
-                         +-----------+
-                         | u00 x v00 |    p00    48-bit products
-                         +-----------+
-                     +-----------+
-                     | u00 x v16 |        p16
-                     +-----------+
-                 +-----------+
-                 | u00 x v32 |            p32
-                 +-----------+
-             +-----------+
-             | u00 x v48 |                p48
-             +-----------+
-                 +-----------+
-                 | u32 x v00 |            r32
-                 +-----------+
-             +-----------+
-             | u32 x v16 |                r48
-             +-----------+
-         +-----------+
-         | u32 x v32 |                    r64
-         +-----------+
-     +-----------+
-     | u32 x v48 |                        r80
-     +-----------+
-
-   p32 and r32 can be summed using floating-point addition, and
-likewise p48 and r48.  p00 and p16 can be summed with r64 and r80 from
-the previous iteration.
-
-   For each loop then, four 49-bit quantities are transferred to the
-integer unit, aligned as follows,
-
-     |-----64bits----|-----64bits----|
-                        +------------+
-                        | p00 + r64' |    i00
-                        +------------+
-                    +------------+
-                    | p16 + r80' |        i16
-                    +------------+
-                +------------+
-                | p32 + r32  |            i32
-                +------------+
-            +------------+
-            | p48 + r48  |                i48
-            +------------+
-
-   The challenge then is to sum these efficiently and add in a carry
-limb, generating a low 64-bit result limb and a high 33-bit carry limb
-(i48 extends 33 bits into the high half).
-
-\1f
-File: gmp.info,  Node: Assembly SIMD Instructions,  Next: Assembly Software Pipelining,  Prev: Assembly Floating Point,  Up: Assembly Coding
-
-16.8.7 SIMD Instructions
-------------------------
-
-The single-instruction multiple-data support in current microprocessors
-is aimed at signal processing algorithms where each data point can be
-treated more or less independently.  There's generally not much support
-for propagating the sort of carries that arise in GMP.
-
-   SIMD multiplications of say four 16x16 bit multiplies only do as much
-work as one 32x32 from GMP's point of view, and need some shifts and
-adds besides.  But of course if say the SIMD form is fully pipelined
-and uses less instruction decoding then it may still be worthwhile.
-
-   On the x86 chips, MMX has so far found a use in `mpn_rshift' and
-`mpn_lshift', and is used in a special case for 16-bit multipliers in
-the P55 `mpn_mul_1'.  SSE2 is used for Pentium 4 `mpn_mul_1',
-`mpn_addmul_1', and `mpn_submul_1'.
-
-\1f
-File: gmp.info,  Node: Assembly Software Pipelining,  Next: Assembly Loop Unrolling,  Prev: Assembly SIMD Instructions,  Up: Assembly Coding
-
-16.8.8 Software Pipelining
---------------------------
-
-Software pipelining consists of scheduling instructions around the
-branch point in a loop.  For example a loop might issue a load not for
-use in the present iteration but the next, thereby allowing extra
-cycles for the data to arrive from memory.
-
-   Naturally this is wanted only when doing things like loads or
-multiplies that take several cycles to complete, and only where a CPU
-has multiple functional units so that other work can be done in the
-meantime.
-
-   A pipeline with several stages will have a data value in progress at
-each stage and each loop iteration moves them along one stage.  This is
-like juggling.
-
-   If the latency of some instruction is greater than the loop time
-then it will be necessary to unroll, so one register has a result ready
-to use while another (or multiple others) are still in progress.
-(*note Assembly Loop Unrolling::).
-
-\1f
-File: gmp.info,  Node: Assembly Loop Unrolling,  Next: Assembly Writing Guide,  Prev: Assembly Software Pipelining,  Up: Assembly Coding
-
-16.8.9 Loop Unrolling
----------------------
-
-Loop unrolling consists of replicating code so that several limbs are
-processed in each loop.  At a minimum this reduces loop overheads by a
-corresponding factor, but it can also allow better register usage, for
-example alternately using one register combination and then another.
-Judicious use of `m4' macros can help avoid lots of duplication in the
-source code.
-
-   Any amount of unrolling can be handled with a loop counter that's
-decremented by N each time, stopping when the remaining count is less
-than the further N the loop will process.  Or by subtracting N at the
-start, the termination condition becomes when the counter C is less
-than 0 (and the count of remaining limbs is C+N).
-
-   Alternately for a power of 2 unroll the loop count and remainder can
-be established with a shift and mask.  This is convenient if also
-making a computed jump into the middle of a large loop.
-
-   The limbs not a multiple of the unrolling can be handled in various
-ways, for example
-
-   * A simple loop at the end (or the start) to process the excess.
-     Care will be wanted that it isn't too much slower than the
-     unrolled part.
-
-   * A set of binary tests, for example after an 8-limb unrolling, test
-     for 4 more limbs to process, then a further 2 more or not, and
-     finally 1 more or not.  This will probably take more code space
-     than a simple loop.
-
-   * A `switch' statement, providing separate code for each possible
-     excess, for example an 8-limb unrolling would have separate code
-     for 0 remaining, 1 remaining, etc, up to 7 remaining.  This might
-     take a lot of code, but may be the best way to optimize all cases
-     in combination with a deep pipelined loop.
-
-   * A computed jump into the middle of the loop, thus making the first
-     iteration handle the excess.  This should make times smoothly
-     increase with size, which is attractive, but setups for the jump
-     and adjustments for pointers can be tricky and could become quite
-     difficult in combination with deep pipelining.
-
-\1f
-File: gmp.info,  Node: Assembly Writing Guide,  Prev: Assembly Loop Unrolling,  Up: Assembly Coding
-
-16.8.10 Writing Guide
----------------------
-
-This is a guide to writing software pipelined loops for processing limb
-vectors in assembly.
-
-   First determine the algorithm and which instructions are needed.
-Code it without unrolling or scheduling, to make sure it works.  On a
-3-operand CPU try to write each new value to a new register, this will
-greatly simplify later steps.
-
-   Then note for each instruction the functional unit and/or issue port
-requirements.  If an instruction can use either of two units, like U0
-or U1 then make a category "U0/U1".  Count the total using each unit
-(or combined unit), and count all instructions.
-
-   Figure out from those counts the best possible loop time.  The goal
-will be to find a perfect schedule where instruction latencies are
-completely hidden.  The total instruction count might be the limiting
-factor, or perhaps a particular functional unit.  It might be possible
-to tweak the instructions to help the limiting factor.
-
-   Suppose the loop time is N, then make N issue buckets, with the
-final loop branch at the end of the last.  Now fill the buckets with
-dummy instructions using the functional units desired.  Run this to
-make sure the intended speed is reached.
-
-   Now replace the dummy instructions with the real instructions from
-the slow but correct loop you started with.  The first will typically
-be a load instruction.  Then the instruction using that value is placed
-in a bucket an appropriate distance down.  Run the loop again, to check
-it still runs at target speed.
-
-   Keep placing instructions, frequently measuring the loop.  After a
-few you will need to wrap around from the last bucket back to the top
-of the loop.  If you used the new-register for new-value strategy above
-then there will be no register conflicts.  If not then take care not to
-clobber something already in use.  Changing registers at this time is
-very error prone.
-
-   The loop will overlap two or more of the original loop iterations,
-and the computation of one vector element result will be started in one
-iteration of the new loop, and completed one or several iterations
-later.
-
-   The final step is to create feed-in and wind-down code for the loop.
-A good way to do this is to make a copy (or copies) of the loop at the
-start and delete those instructions which don't have valid antecedents,
-and at the end replicate and delete those whose results are unwanted
-(including any further loads).
-
-   The loop will have a minimum number of limbs loaded and processed,
-so the feed-in code must test if the request size is smaller and skip
-either to a suitable part of the wind-down or to special code for small
-sizes.
-
-\1f
-File: gmp.info,  Node: Internals,  Next: Contributors,  Prev: Algorithms,  Up: Top
-
-17 Internals
-************
-
-*This chapter is provided only for informational purposes and the
-various internals described here may change in future GMP releases.
-Applications expecting to be compatible with future releases should use
-only the documented interfaces described in previous chapters.*
-
-* Menu:
-
-* Integer Internals::
-* Rational Internals::
-* Float Internals::
-* Raw Output Internals::
-* C++ Interface Internals::
-
-\1f
-File: gmp.info,  Node: Integer Internals,  Next: Rational Internals,  Prev: Internals,  Up: Internals
-
-17.1 Integer Internals
-======================
-
-`mpz_t' variables represent integers using sign and magnitude, in space
-dynamically allocated and reallocated.  The fields are as follows.
-
-`_mp_size'
-     The number of limbs, or the negative of that when representing a
-     negative integer.  Zero is represented by `_mp_size' set to zero,
-     in which case the `_mp_d' data is unused.
-
-`_mp_d'
-     A pointer to an array of limbs which is the magnitude.  These are
-     stored "little endian" as per the `mpn' functions, so `_mp_d[0]'
-     is the least significant limb and `_mp_d[ABS(_mp_size)-1]' is the
-     most significant.  Whenever `_mp_size' is non-zero, the most
-     significant limb is non-zero.
-
-     Currently there's always at least one limb allocated, so for
-     instance `mpz_set_ui' never needs to reallocate, and `mpz_get_ui'
-     can fetch `_mp_d[0]' unconditionally (though its value is then
-     only wanted if `_mp_size' is non-zero).
-
-`_mp_alloc'
-     `_mp_alloc' is the number of limbs currently allocated at `_mp_d',
-     and naturally `_mp_alloc >= ABS(_mp_size)'.  When an `mpz' routine
-     is about to (or might be about to) increase `_mp_size', it checks
-     `_mp_alloc' to see whether there's enough space, and reallocates
-     if not.  `MPZ_REALLOC' is generally used for this.
-
-   The various bitwise logical functions like `mpz_and' behave as if
-negative values were twos complement.  But sign and magnitude is always
-used internally, and necessary adjustments are made during the
-calculations.  Sometimes this isn't pretty, but sign and magnitude are
-best for other routines.
-
-   Some internal temporary variables are setup with `MPZ_TMP_INIT' and
-these have `_mp_d' space obtained from `TMP_ALLOC' rather than the
-memory allocation functions.  Care is taken to ensure that these are
-big enough that no reallocation is necessary (since it would have
-unpredictable consequences).
-
-   `_mp_size' and `_mp_alloc' are `int', although `mp_size_t' is
-usually a `long'.  This is done to make the fields just 32 bits on some
-64 bits systems, thereby saving a few bytes of data space but still
-providing plenty of range.
-
-\1f
-File: gmp.info,  Node: Rational Internals,  Next: Float Internals,  Prev: Integer Internals,  Up: Internals
-
-17.2 Rational Internals
-=======================
-
-`mpq_t' variables represent rationals using an `mpz_t' numerator and
-denominator (*note Integer Internals::).
-
-   The canonical form adopted is denominator positive (and non-zero),
-no common factors between numerator and denominator, and zero uniquely
-represented as 0/1.
-
-   It's believed that casting out common factors at each stage of a
-calculation is best in general.  A GCD is an O(N^2) operation so it's
-better to do a few small ones immediately than to delay and have to do
-a big one later.  Knowing the numerator and denominator have no common
-factors can be used for example in `mpq_mul' to make only two cross
-GCDs necessary, not four.
-
-   This general approach to common factors is badly sub-optimal in the
-presence of simple factorizations or little prospect for cancellation,
-but GMP has no way to know when this will occur.  As per *Note
-Efficiency::, that's left to applications.  The `mpq_t' framework might
-still suit, with `mpq_numref' and `mpq_denref' for direct access to the
-numerator and denominator, or of course `mpz_t' variables can be used
-directly.
-
-\1f
-File: gmp.info,  Node: Float Internals,  Next: Raw Output Internals,  Prev: Rational Internals,  Up: Internals
-
-17.3 Float Internals
-====================
-
-Efficient calculation is the primary aim of GMP floats and the use of
-whole limbs and simple rounding facilitates this.
-
-   `mpf_t' floats have a variable precision mantissa and a single
-machine word signed exponent.  The mantissa is represented using sign
-and magnitude.
-
-        most                   least
-     significant            significant
-        limb                   limb
-
-                                 _mp_d
-      |---- _mp_exp --->           |
-       _____ _____ _____ _____ _____
-      |_____|_____|_____|_____|_____|
-                        . <------------ radix point
-
-       <-------- _mp_size --------->
-
-The fields are as follows.
-
-`_mp_size'
-     The number of limbs currently in use, or the negative of that when
-     representing a negative value.  Zero is represented by `_mp_size'
-     and `_mp_exp' both set to zero, and in that case the `_mp_d' data
-     is unused.  (In the future `_mp_exp' might be undefined when
-     representing zero.)
-
-`_mp_prec'
-     The precision of the mantissa, in limbs.  In any calculation the
-     aim is to produce `_mp_prec' limbs of result (the most significant
-     being non-zero).
-
-`_mp_d'
-     A pointer to the array of limbs which is the absolute value of the
-     mantissa.  These are stored "little endian" as per the `mpn'
-     functions, so `_mp_d[0]' is the least significant limb and
-     `_mp_d[ABS(_mp_size)-1]' the most significant.
-
-     The most significant limb is always non-zero, but there are no
-     other restrictions on its value, in particular the highest 1 bit
-     can be anywhere within the limb.
-
-     `_mp_prec+1' limbs are allocated to `_mp_d', the extra limb being
-     for convenience (see below).  There are no reallocations during a
-     calculation, only in a change of precision with `mpf_set_prec'.
-
-`_mp_exp'
-     The exponent, in limbs, determining the location of the implied
-     radix point.  Zero means the radix point is just above the most
-     significant limb.  Positive values mean a radix point offset
-     towards the lower limbs and hence a value >= 1, as for example in
-     the diagram above.  Negative exponents mean a radix point further
-     above the highest limb.
-
-     Naturally the exponent can be any value, it doesn't have to fall
-     within the limbs as the diagram shows, it can be a long way above
-     or a long way below.  Limbs other than those included in the
-     `{_mp_d,_mp_size}' data are treated as zero.
-
-   The `_mp_size' and `_mp_prec' fields are `int', although the
-`mp_size_t' type is usually a `long'.  The `_mp_exp' field is usually
-`long'.  This is done to make some fields just 32 bits on some 64 bits
-systems, thereby saving a few bytes of data space but still providing
-plenty of precision and a very large range.
-
-
-The following various points should be noted.
-
-Low Zeros
-     The least significant limbs `_mp_d[0]' etc can be zero, though
-     such low zeros can always be ignored.  Routines likely to produce
-     low zeros check and avoid them to save time in subsequent
-     calculations, but for most routines they're quite unlikely and
-     aren't checked.
-
-Mantissa Size Range
-     The `_mp_size' count of limbs in use can be less than `_mp_prec' if
-     the value can be represented in less.  This means low precision
-     values or small integers stored in a high precision `mpf_t' can
-     still be operated on efficiently.
-
-     `_mp_size' can also be greater than `_mp_prec'.  Firstly a value is
-     allowed to use all of the `_mp_prec+1' limbs available at `_mp_d',
-     and secondly when `mpf_set_prec_raw' lowers `_mp_prec' it leaves
-     `_mp_size' unchanged and so the size can be arbitrarily bigger than
-     `_mp_prec'.
-
-Rounding
-     All rounding is done on limb boundaries.  Calculating `_mp_prec'
-     limbs with the high non-zero will ensure the application requested
-     minimum precision is obtained.
-
-     The use of simple "trunc" rounding towards zero is efficient,
-     since there's no need to examine extra limbs and increment or
-     decrement.
-
-Bit Shifts
-     Since the exponent is in limbs, there are no bit shifts in basic
-     operations like `mpf_add' and `mpf_mul'.  When differing exponents
-     are encountered all that's needed is to adjust pointers to line up
-     the relevant limbs.
-
-     Of course `mpf_mul_2exp' and `mpf_div_2exp' will require bit
-     shifts, but the choice is between an exponent in limbs which
-     requires shifts there, or one in bits which requires them almost
-     everywhere else.
-
-Use of `_mp_prec+1' Limbs
-     The extra limb on `_mp_d' (`_mp_prec+1' rather than just
-     `_mp_prec') helps when an `mpf' routine might get a carry from its
-     operation.  `mpf_add' for instance will do an `mpn_add' of
-     `_mp_prec' limbs.  If there's no carry then that's the result, but
-     if there is a carry then it's stored in the extra limb of space and
-     `_mp_size' becomes `_mp_prec+1'.
-
-     Whenever `_mp_prec+1' limbs are held in a variable, the low limb
-     is not needed for the intended precision, only the `_mp_prec' high
-     limbs.  But zeroing it out or moving the rest down is unnecessary.
-     Subsequent routines reading the value will simply take the high
-     limbs they need, and this will be `_mp_prec' if their target has
-     that same precision.  This is no more than a pointer adjustment,
-     and must be checked anyway since the destination precision can be
-     different from the sources.
-
-     Copy functions like `mpf_set' will retain a full `_mp_prec+1' limbs
-     if available.  This ensures that a variable which has `_mp_size'
-     equal to `_mp_prec+1' will get its full exact value copied.
-     Strictly speaking this is unnecessary since only `_mp_prec' limbs
-     are needed for the application's requested precision, but it's
-     considered that an `mpf_set' from one variable into another of the
-     same precision ought to produce an exact copy.
-
-Application Precisions
-     `__GMPF_BITS_TO_PREC' converts an application requested precision
-     to an `_mp_prec'.  The value in bits is rounded up to a whole limb
-     then an extra limb is added since the most significant limb of
-     `_mp_d' is only non-zero and therefore might contain only one bit.
-
-     `__GMPF_PREC_TO_BITS' does the reverse conversion, and removes the
-     extra limb from `_mp_prec' before converting to bits.  The net
-     effect of reading back with `mpf_get_prec' is simply the precision
-     rounded up to a multiple of `mp_bits_per_limb'.
-
-     Note that the extra limb added here for the high only being
-     non-zero is in addition to the extra limb allocated to `_mp_d'.
-     For example with a 32-bit limb, an application request for 250
-     bits will be rounded up to 8 limbs, then an extra added for the
-     high being only non-zero, giving an `_mp_prec' of 9.  `_mp_d' then
-     gets 10 limbs allocated.  Reading back with `mpf_get_prec' will
-     take `_mp_prec' subtract 1 limb and multiply by 32, giving 256
-     bits.
-
-     Strictly speaking, the fact the high limb has at least one bit
-     means that a float with, say, 3 limbs of 32-bits each will be
-     holding at least 65 bits, but for the purposes of `mpf_t' it's
-     considered simply to be 64 bits, a nice multiple of the limb size.
-
-\1f
-File: gmp.info,  Node: Raw Output Internals,  Next: C++ Interface Internals,  Prev: Float Internals,  Up: Internals
-
-17.4 Raw Output Internals
-=========================
-
-`mpz_out_raw' uses the following format.
-
-     +------+------------------------+
-     | size |       data bytes       |
-     +------+------------------------+
-
-   The size is 4 bytes written most significant byte first, being the
-number of subsequent data bytes, or the twos complement negative of
-that when a negative integer is represented.  The data bytes are the
-absolute value of the integer, written most significant byte first.
-
-   The most significant data byte is always non-zero, so the output is
-the same on all systems, irrespective of limb size.
-
-   In GMP 1, leading zero bytes were written to pad the data bytes to a
-multiple of the limb size.  `mpz_inp_raw' will still accept this, for
-compatibility.
-
-   The use of "big endian" for both the size and data fields is
-deliberate, it makes the data easy to read in a hex dump of a file.
-Unfortunately it also means that the limb data must be reversed when
-reading or writing, so neither a big endian nor little endian system
-can just read and write `_mp_d'.
-
-\1f
-File: gmp.info,  Node: C++ Interface Internals,  Prev: Raw Output Internals,  Up: Internals
-
-17.5 C++ Interface Internals
-============================
-
-A system of expression templates is used to ensure something like
-`a=b+c' turns into a simple call to `mpz_add' etc.  For `mpf_class' the
-scheme also ensures the precision of the final destination is used for
-any temporaries within a statement like `f=w*x+y*z'.  These are
-important features which a naive implementation cannot provide.
-
-   A simplified description of the scheme follows.  The true scheme is
-complicated by the fact that expressions have different return types.
-For detailed information, refer to the source code.
-
-   To perform an operation, say, addition, we first define a "function
-object" evaluating it,
-
-     struct __gmp_binary_plus
-     {
-       static void eval(mpf_t f, mpf_t g, mpf_t h) { mpf_add(f, g, h); }
-     };
-
-And an "additive expression" object,
-
-     __gmp_expr<__gmp_binary_expr<mpf_class, mpf_class, __gmp_binary_plus> >
-     operator+(const mpf_class &f, const mpf_class &g)
-     {
-       return __gmp_expr
-         <__gmp_binary_expr<mpf_class, mpf_class, __gmp_binary_plus> >(f, g);
-     }
-
-   The seemingly redundant `__gmp_expr<__gmp_binary_expr<...>>' is used
-to encapsulate any possible kind of expression into a single template
-type.  In fact even `mpf_class' etc are `typedef' specializations of
-`__gmp_expr'.
-
-   Next we define assignment of `__gmp_expr' to `mpf_class'.
-
-     template <class T>
-     mpf_class & mpf_class::operator=(const __gmp_expr<T> &expr)
-     {
-       expr.eval(this->get_mpf_t(), this->precision());
-       return *this;
-     }
-
-     template <class Op>
-     void __gmp_expr<__gmp_binary_expr<mpf_class, mpf_class, Op> >::eval
-     (mpf_t f, mp_bitcnt_t precision)
-     {
-       Op::eval(f, expr.val1.get_mpf_t(), expr.val2.get_mpf_t());
-     }
-
-   where `expr.val1' and `expr.val2' are references to the expression's
-operands (here `expr' is the `__gmp_binary_expr' stored within the
-`__gmp_expr').
-
-   This way, the expression is actually evaluated only at the time of
-assignment, when the required precision (that of `f') is known.
-Furthermore the target `mpf_t' is now available, thus we can call
-`mpf_add' directly with `f' as the output argument.
-
-   Compound expressions are handled by defining operators taking
-subexpressions as their arguments, like this:
-
-     template <class T, class U>
-     __gmp_expr
-     <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, __gmp_binary_plus> >
-     operator+(const __gmp_expr<T> &expr1, const __gmp_expr<U> &expr2)
-     {
-       return __gmp_expr
-         <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, __gmp_binary_plus> >
-         (expr1, expr2);
-     }
-
-   And the corresponding specializations of `__gmp_expr::eval':
-
-     template <class T, class U, class Op>
-     void __gmp_expr
-     <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, Op> >::eval
-     (mpf_t f, mp_bitcnt_t precision)
-     {
-       // declare two temporaries
-       mpf_class temp1(expr.val1, precision), temp2(expr.val2, precision);
-       Op::eval(f, temp1.get_mpf_t(), temp2.get_mpf_t());
-     }
-
-   The expression is thus recursively evaluated to any level of
-complexity and all subexpressions are evaluated to the precision of `f'.
-
-\1f
-File: gmp.info,  Node: Contributors,  Next: References,  Prev: Internals,  Up: Top
-
-Appendix A Contributors
-***********************
-
-Torbjo"rn Granlund wrote the original GMP library and is still the main
-developer.  Code not explicitly attributed to others, was contributed by
-Torbjo"rn.  Several other individuals and organizations have contributed
-GMP.  Here is a list in chronological order on first contribution:
-
-   Gunnar Sjo"din and Hans Riesel helped with mathematical problems in
-early versions of the library.
-
-   Richard Stallman helped with the interface design and revised the
-first version of this manual.
-
-   Brian Beuning and Doug Lea helped with testing of early versions of
-the library and made creative suggestions.
-
-   John Amanatides of York University in Canada contributed the function
-`mpz_probab_prime_p'.
-
-   Paul Zimmermann wrote the REDC-based mpz_powm code, the
-Scho"nhage-Strassen FFT multiply code, and the Karatsuba square root
-code.  He also improved the Toom3 code for GMP 4.2.  Paul sparked the
-development of GMP 2, with his comparisons between bignum packages.
-The ECMNET project Paul is organizing was a driving force behind many
-of the optimizations in GMP 3.  Paul also wrote the new GMP 4.3 nth
-root code (with Torbjo"rn).
-
-   Ken Weber (Kent State University, Universidade Federal do Rio Grande
-do Sul) contributed now defunct versions of `mpz_gcd', `mpz_divexact',
-`mpn_gcd', and `mpn_bdivmod', partially supported by CNPq (Brazil)
-grant 301314194-2.
-
-   Per Bothner of Cygnus Support helped to set up GMP to use Cygnus'
-configure.  He has also made valuable suggestions and tested numerous
-intermediary releases.
-
-   Joachim Hollman was involved in the design of the `mpf' interface,
-and in the `mpz' design revisions for version 2.
-
-   Bennet Yee contributed the initial versions of `mpz_jacobi' and
-`mpz_legendre'.
-
-   Andreas Schwab contributed the files `mpn/m68k/lshift.S' and
-`mpn/m68k/rshift.S' (now in `.asm' form).
-
-   Robert Harley of Inria, France and David Seal of ARM, England,
-suggested clever improvements for population count.  Robert also wrote
-highly optimized Karatsuba and 3-way Toom multiplication functions for
-GMP 3, and contributed the ARM assembly code.
-
-   Torsten Ekedahl of the Mathematical department of Stockholm
-University provided significant inspiration during several phases of
-the GMP development.  His mathematical expertise helped improve several
-algorithms.
-
-   Linus Nordberg wrote the new configure system based on autoconf and
-implemented the new random functions.
-
-   Kevin Ryde worked on a large number of things: optimized x86 code,
-m4 asm macros, parameter tuning, speed measuring, the configure system,
-function inlining, divisibility tests, bit scanning, Jacobi symbols,
-Fibonacci and Lucas number functions, printf and scanf functions, perl
-interface, demo expression parser, the algorithms chapter in the
-manual, `gmpasm-mode.el', and various miscellaneous improvements
-elsewhere.
-
-   Kent Boortz made the Mac OS 9 port.
-
-   Steve Root helped write the optimized alpha 21264 assembly code.
-
-   Gerardo Ballabio wrote the `gmpxx.h' C++ class interface and the C++
-`istream' input routines.
-
-   Jason Moxham rewrote `mpz_fac_ui'.
-
-   Pedro Gimeno implemented the Mersenne Twister and made other random
-number improvements.
-
-   Niels Mo"ller wrote the sub-quadratic GCD and extended GCD code, the
-quadratic Hensel division code, and (with Torbjo"rn) the new divide and
-conquer division code for GMP 4.3.  Niels also helped implement the new
-Toom multiply code for GMP 4.3 and implemented helper functions to
-simplify Toom evaluations for GMP 5.0.  He wrote the original version
-of mpn_mulmod_bnm1.
-
-   Alberto Zanoni and Marco Bodrato suggested the unbalanced multiply
-strategy, and found the optimal strategies for evaluation and
-interpolation in Toom multiplication.
-
-   Marco Bodrato helped implement the new Toom multiply code for GMP
-4.3 and implemented most of the new Toom multiply and squaring code for
-5.0.  He is the main author of the current mpn_mulmod_bnm1 and
-mpn_mullo_n.  Marco also wrote the functions mpn_invert and
-mpn_invertappr.
-
-   David Harvey suggested the internal function `mpn_bdiv_dbm1',
-implementing division relevant to Toom multiplication.  He also worked
-on fast assembly sequences, in particular on a fast AMD64
-`mpn_mul_basecase'.
-
-   Martin Boij wrote `mpn_perfect_power_p'.
-
-   (This list is chronological, not ordered after significance.  If you
-have contributed to GMP but are not listed above, please tell
-<gmp-devel@gmplib.org> about the omission!)
-
-   The development of floating point functions of GNU MP 2, were
-supported in part by the ESPRIT-BRA (Basic Research Activities) 6846
-project POSSO (POlynomial System SOlving).
-
-   The development of GMP 2, 3, and 4 was supported in part by the IDA
-Center for Computing Sciences.
-
-   Thanks go to Hans Thorsen for donating an SGI system for the GMP
-test system environment.
-
-\1f
-File: gmp.info,  Node: References,  Next: GNU Free Documentation License,  Prev: Contributors,  Up: Top
-
-Appendix B References
-*********************
-
-B.1 Books
-=========
-
-   * Jonathan M. Borwein and Peter B. Borwein, "Pi and the AGM: A Study
-     in Analytic Number Theory and Computational Complexity", Wiley,
-     1998.
-
-   * Richard Crandall and Carl Pomerance, "Prime Numbers: A
-     Computational Perspective", 2nd edition, Springer-Verlag, 2005.
-     `http://math.dartmouth.edu/~carlp/'
-
-   * Henri Cohen, "A Course in Computational Algebraic Number Theory",
-     Graduate Texts in Mathematics number 138, Springer-Verlag, 1993.
-     `http://www.math.u-bordeaux.fr/~cohen/'
-
-   * Donald E. Knuth, "The Art of Computer Programming", volume 2,
-     "Seminumerical Algorithms", 3rd edition, Addison-Wesley, 1998.
-     `http://www-cs-faculty.stanford.edu/~knuth/taocp.html'
-
-   * John D. Lipson, "Elements of Algebra and Algebraic Computing", The
-     Benjamin Cummings Publishing Company Inc, 1981.
-
-   * Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone,
-     "Handbook of Applied Cryptography",
-     `http://www.cacr.math.uwaterloo.ca/hac/'
-
-   * Richard M. Stallman and the GCC Developer Community, "Using the
-     GNU Compiler Collection", Free Software Foundation, 2008,
-     available online `http://gcc.gnu.org/onlinedocs/', and in the GCC
-     package `ftp://ftp.gnu.org/gnu/gcc/'
-
-B.2 Papers
-==========
-
-   * Yves Bertot, Nicolas Magaud and Paul Zimmermann, "A Proof of GMP
-     Square Root", Journal of Automated Reasoning, volume 29, 2002, pp.
-     225-252.  Also available online as INRIA Research Report 4475,
-     June 2001, `http://www.inria.fr/rrrt/rr-4475.html'
-
-   * Christoph Burnikel and Joachim Ziegler, "Fast Recursive Division",
-     Max-Planck-Institut fuer Informatik Research Report MPI-I-98-1-022,
-     `http://data.mpi-sb.mpg.de/internet/reports.nsf/NumberView/1998-1-022'
-
-   * Torbjo"rn Granlund and Peter L. Montgomery, "Division by Invariant
-     Integers using Multiplication", in Proceedings of the SIGPLAN
-     PLDI'94 Conference, June 1994.  Also available
-     `ftp://ftp.cwi.nl/pub/pmontgom/divcnst.psa4.gz' (and .psl.gz).
-
-   * Niels Mo"ller and Torbjo"rn Granlund, "Improved division by
-     invariant integers", to appear.
-
-   * Torbjo"rn Granlund and Niels Mo"ller, "Division of integers large
-     and small", to appear.
-
-   * Tudor Jebelean, "An algorithm for exact division", Journal of
-     Symbolic Computation, volume 15, 1993, pp. 169-180.  Research
-     report version available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1992/92-35.ps.gz'
-
-   * Tudor Jebelean, "Exact Division with Karatsuba Complexity -
-     Extended Abstract", RISC-Linz technical report 96-31,
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1996/96-31.ps.gz'
-
-   * Tudor Jebelean, "Practical Integer Division with Karatsuba
-     Complexity", ISSAC 97, pp. 339-341.  Technical report available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1996/96-29.ps.gz'
-
-   * Tudor Jebelean, "A Generalization of the Binary GCD Algorithm",
-     ISSAC 93, pp. 111-116.  Technical report version available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1993/93-01.ps.gz'
-
-   * Tudor Jebelean, "A Double-Digit Lehmer-Euclid Algorithm for
-     Finding the GCD of Long Integers", Journal of Symbolic
-     Computation, volume 19, 1995, pp. 145-157.  Technical report
-     version also available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1992/92-69.ps.gz'
-
-   * Werner Krandick and Tudor Jebelean, "Bidirectional Exact Integer
-     Division", Journal of Symbolic Computation, volume 21, 1996, pp.
-     441-455.  Early technical report version also available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1994/94-50.ps.gz'
-
-   * Makoto Matsumoto and Takuji Nishimura, "Mersenne Twister: A
-     623-dimensionally equidistributed uniform pseudorandom number
-     generator", ACM Transactions on Modelling and Computer Simulation,
-     volume 8, January 1998, pp. 3-30.  Available online
-     `http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/mt.ps.gz'
-     (or .pdf)
-
-   * R. Moenck and A. Borodin, "Fast Modular Transforms via Division",
-     Proceedings of the 13th Annual IEEE Symposium on Switching and
-     Automata Theory, October 1972, pp. 90-96.  Reprinted as "Fast
-     Modular Transforms", Journal of Computer and System Sciences,
-     volume 8, number 3, June 1974, pp. 366-386.
-
-   * Niels Mo"ller, "On Scho"nhage's algorithm and subquadratic integer
-     GCD   computation", in Mathematics of Computation, volume 77,
-     January 2008, pp.    589-607.
-
-   * Peter L. Montgomery, "Modular Multiplication Without Trial
-     Division", in Mathematics of Computation, volume 44, number 170,
-     April 1985.
-
-   * Arnold Scho"nhage and Volker Strassen, "Schnelle Multiplikation
-     grosser Zahlen", Computing 7, 1971, pp. 281-292.
-
-   * Kenneth Weber, "The accelerated integer GCD algorithm", ACM
-     Transactions on Mathematical Software, volume 21, number 1, March
-     1995, pp. 111-122.
-
-   * Paul Zimmermann, "Karatsuba Square Root", INRIA Research Report
-     3805, November 1999, `http://www.inria.fr/rrrt/rr-3805.html'
-
-   * Paul Zimmermann, "A Proof of GMP Fast Division and Square Root
-     Implementations",
-     `http://www.loria.fr/~zimmerma/papers/proof-div-sqrt.ps.gz'
-
-   * Dan Zuras, "On Squaring and Multiplying Large Integers", ARITH-11:
-     IEEE Symposium on Computer Arithmetic, 1993, pp. 260 to 271.
-     Reprinted as "More on Multiplying and Squaring Large Integers",
-     IEEE Transactions on Computers, volume 43, number 8, August 1994,
-     pp. 899-908.
-
-\1f
-File: gmp.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: References,  Up: Top
-
-Appendix C GNU Free Documentation License
-*****************************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     `http://fsf.org/'
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.
-     We recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it
-     can be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You
-     accept the license if you copy, modify or distribute the work in a
-     way requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in
-     the notice that says that the Document is released under this
-     License.  If a section does not fit the above definition of
-     Secondary then it is not allowed to be designated as Invariant.
-     The Document may contain zero Invariant Sections.  If the Document
-     does not identify any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images
-     composed of pixels) generic paint programs or (for drawings) some
-     widely available drawing editor, and that is suitable for input to
-     text formatters or for automatic translation to a variety of
-     formats suitable for input to text formatters.  A copy made in an
-     otherwise Transparent file format whose markup, or absence of
-     markup, has been arranged to thwart or discourage subsequent
-     modification by readers is not Transparent.  An image format is
-     not Transparent if used for any substantial amount of text.  A
-     copy that is not "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and
-     standard-conforming simple HTML, PostScript or PDF designed for
-     human modification.  Examples of transparent image formats include
-     PNG, XCF and JPG.  Opaque formats include proprietary formats that
-     can be read and edited only by proprietary word processors, SGML or
-     XML for which the DTD and/or processing tools are not generally
-     available, and the machine-generated HTML, PostScript or PDF
-     produced by some word processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow
-     the conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the
-     title equally prominent and visible.  You may add other material
-     on the covers in addition.  Copying with changes limited to the
-     covers, as long as they preserve the title of the Document and
-     satisfy these conditions, can be treated as verbatim copying in
-     other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a
-     machine-readable Transparent copy along with each Opaque copy, or
-     state in or with each Opaque copy a computer-network location from
-     which the general network-using public has access to download
-     using public-standard network protocols a complete Transparent
-     copy of the Document, free of added material.  If you use the
-     latter option, you must take reasonably prudent steps, when you
-     begin distribution of Opaque copies in quantity, to ensure that
-     this Transparent copy will remain thus accessible at the stated
-     location until at least one year after the last time you
-     distribute an Opaque copy (directly or through your agents or
-     retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of
-     copies, to give them a chance to provide you with an updated
-     version of the Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with
-     the Modified Version filling the role of the Document, thus
-     licensing distribution and modification of the Modified Version to
-     whoever possesses a copy of it.  In addition, you must do these
-     things in the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of
-          previous versions (which should, if there were any, be listed
-          in the History section of the Document).  You may use the
-          same title as a previous version if the original publisher of
-          that version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on
-          the Title Page.  If there is no section Entitled "History" in
-          the Document, create one stating the title, year, authors,
-          and publisher of the Document as given on its Title Page,
-          then add an item describing the Modified Version as stated in
-          the previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in
-          the "History" section.  You may omit a network location for a
-          work that was published at least four years before the
-          Document itself, or if the original publisher of the version
-          it refers to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the
-          section all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document,
-          unaltered in their text and in their titles.  Section numbers
-          or the equivalent are not considered part of the section
-          titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option
-     designate some or all of these sections as invariant.  To do this,
-     add their titles to the list of Invariant Sections in the Modified
-     Version's license notice.  These titles must be distinct from any
-     other section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end
-     of the list of Cover Texts in the Modified Version.  Only one
-     passage of Front-Cover Text and one of Back-Cover Text may be
-     added by (or through arrangements made by) any one entity.  If the
-     Document already includes a cover text for the same cover,
-     previously added by you or by arrangement made by the same entity
-     you are acting on behalf of, you may not add another; but you may
-     replace the old one, on explicit permission from the previous
-     publisher that added the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination
-     all of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the
-     documents in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow
-     this License in all other respects regarding verbatim copying of
-     that document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of
-     a storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly
-     and finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from
-     you under this License.  If your rights have been terminated and
-     not permanently reinstated, receipt of a copy of some or all of
-     the same material does not give you any rights to use it.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     `http://www.gnu.org/copyleft/'.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If
-     the Document does not specify a version number of this License,
-     you may choose any version ever published (not as a draft) by the
-     Free Software Foundation.  If the Document specifies that a proxy
-     can decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
- 11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts." line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License, to
-permit their use in free software.
-
-\1f
-File: gmp.info,  Node: Concept Index,  Next: Function Index,  Prev: GNU Free Documentation License,  Up: Top
-
-Concept Index
-*************
-
-\0\b[index\0\b]
-* Menu:
-
-* #include:                              Headers and Libraries.
-                                                              (line   6)
-* --build:                               Build Options.       (line  52)
-* --disable-fft:                         Build Options.       (line 317)
-* --disable-shared:                      Build Options.       (line  45)
-* --disable-static:                      Build Options.       (line  45)
-* --enable-alloca:                       Build Options.       (line 278)
-* --enable-assert:                       Build Options.       (line 327)
-* --enable-cxx:                          Build Options.       (line 230)
-* --enable-fat:                          Build Options.       (line 164)
-* --enable-mpbsd:                        Build Options.       (line 322)
-* --enable-profiling <1>:                Profiling.           (line   6)
-* --enable-profiling:                    Build Options.       (line 331)
-* --exec-prefix:                         Build Options.       (line  32)
-* --host:                                Build Options.       (line  66)
-* --prefix:                              Build Options.       (line  32)
-* -finstrument-functions:                Profiling.           (line  66)
-* 2exp functions:                        Efficiency.          (line  43)
-* 68000:                                 Notes for Particular Systems.
-                                                              (line  80)
-* 80x86:                                 Notes for Particular Systems.
-                                                              (line 126)
-* ABI <1>:                               Build Options.       (line 171)
-* ABI:                                   ABI and ISA.         (line   6)
-* About this manual:                     Introduction to GMP. (line  58)
-* AC_CHECK_LIB:                          Autoconf.            (line  11)
-* AIX <1>:                               ABI and ISA.         (line 184)
-* AIX <2>:                               Notes for Particular Systems.
-                                                              (line   7)
-* AIX:                                   ABI and ISA.         (line 169)
-* Algorithms:                            Algorithms.          (line   6)
-* alloca:                                Build Options.       (line 278)
-* Allocation of memory:                  Custom Allocation.   (line   6)
-* AMD64:                                 ABI and ISA.         (line  44)
-* Anonymous FTP of latest version:       Introduction to GMP. (line  38)
-* Application Binary Interface:          ABI and ISA.         (line   6)
-* Arithmetic functions <1>:              Float Arithmetic.    (line   6)
-* Arithmetic functions <2>:              Integer Arithmetic.  (line   6)
-* Arithmetic functions:                  Rational Arithmetic. (line   6)
-* ARM:                                   Notes for Particular Systems.
-                                                              (line  20)
-* Assembly cache handling:               Assembly Cache Handling.
-                                                              (line   6)
-* Assembly carry propagation:            Assembly Carry Propagation.
-                                                              (line   6)
-* Assembly code organisation:            Assembly Code Organisation.
-                                                              (line   6)
-* Assembly coding:                       Assembly Coding.     (line   6)
-* Assembly floating Point:               Assembly Floating Point.
-                                                              (line   6)
-* Assembly loop unrolling:               Assembly Loop Unrolling.
-                                                              (line   6)
-* Assembly SIMD:                         Assembly SIMD Instructions.
-                                                              (line   6)
-* Assembly software pipelining:          Assembly Software Pipelining.
-                                                              (line   6)
-* Assembly writing guide:                Assembly Writing Guide.
-                                                              (line   6)
-* Assertion checking <1>:                Debugging.           (line  79)
-* Assertion checking:                    Build Options.       (line 327)
-* Assignment functions <1>:              Assigning Floats.    (line   6)
-* Assignment functions <2>:              Initializing Rationals.
-                                                              (line   6)
-* Assignment functions <3>:              Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Assignment functions <4>:              Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Assignment functions:                  Assigning Integers.  (line   6)
-* Autoconf:                              Autoconf.            (line   6)
-* Basics:                                GMP Basics.          (line   6)
-* Berkeley MP compatible functions <1>:  Build Options.       (line 322)
-* Berkeley MP compatible functions:      BSD Compatible Functions.
-                                                              (line   6)
-* Binomial coefficient algorithm:        Binomial Coefficients Algorithm.
-                                                              (line   6)
-* Binomial coefficient functions:        Number Theoretic Functions.
-                                                              (line 100)
-* Binutils strip:                        Known Build Problems.
-                                                              (line  28)
-* Bit manipulation functions:            Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Bit scanning functions:                Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* Bit shift left:                        Integer Arithmetic.  (line  35)
-* Bit shift right:                       Integer Division.    (line  53)
-* Bits per limb:                         Useful Macros and Constants.
-                                                              (line   7)
-* BSD MP compatible functions <1>:       Build Options.       (line 322)
-* BSD MP compatible functions:           BSD Compatible Functions.
-                                                              (line   6)
-* Bug reporting:                         Reporting Bugs.      (line   6)
-* Build directory:                       Build Options.       (line  19)
-* Build notes for binary packaging:      Notes for Package Builds.
-                                                              (line   6)
-* Build notes for particular systems:    Notes for Particular Systems.
-                                                              (line   6)
-* Build options:                         Build Options.       (line   6)
-* Build problems known:                  Known Build Problems.
-                                                              (line   6)
-* Build system:                          Build Options.       (line  52)
-* Building GMP:                          Installing GMP.      (line   6)
-* Bus error:                             Debugging.           (line   7)
-* C compiler:                            Build Options.       (line 182)
-* C++ compiler:                          Build Options.       (line 254)
-* C++ interface:                         C++ Class Interface. (line   6)
-* C++ interface internals:               C++ Interface Internals.
-                                                              (line   6)
-* C++ istream input:                     C++ Formatted Input. (line   6)
-* C++ ostream output:                    C++ Formatted Output.
-                                                              (line   6)
-* C++ support:                           Build Options.       (line 230)
-* CC:                                    Build Options.       (line 182)
-* CC_FOR_BUILD:                          Build Options.       (line 217)
-* CFLAGS:                                Build Options.       (line 182)
-* Checker:                               Debugging.           (line 115)
-* checkergcc:                            Debugging.           (line 122)
-* Code organisation:                     Assembly Code Organisation.
-                                                              (line   6)
-* Compaq C++:                            Notes for Particular Systems.
-                                                              (line  25)
-* Comparison functions <1>:              Integer Comparisons. (line   6)
-* Comparison functions <2>:              Comparing Rationals. (line   6)
-* Comparison functions:                  Float Comparison.    (line   6)
-* Compatibility with older versions:     Compatibility with older versions.
-                                                              (line   6)
-* Conditions for copying GNU MP:         Copying.             (line   6)
-* Configuring GMP:                       Installing GMP.      (line   6)
-* Congruence algorithm:                  Exact Remainder.     (line  29)
-* Congruence functions:                  Integer Division.    (line 124)
-* Constants:                             Useful Macros and Constants.
-                                                              (line   6)
-* Contributors:                          Contributors.        (line   6)
-* Conventions for parameters:            Parameter Conventions.
-                                                              (line   6)
-* Conventions for variables:             Variable Conventions.
-                                                              (line   6)
-* Conversion functions <1>:              Converting Integers. (line   6)
-* Conversion functions <2>:              Converting Floats.   (line   6)
-* Conversion functions:                  Rational Conversions.
-                                                              (line   6)
-* Copying conditions:                    Copying.             (line   6)
-* CPPFLAGS:                              Build Options.       (line 208)
-* CPU types <1>:                         Introduction to GMP. (line  24)
-* CPU types:                             Build Options.       (line 108)
-* Cross compiling:                       Build Options.       (line  66)
-* Custom allocation:                     Custom Allocation.   (line   6)
-* CXX:                                   Build Options.       (line 254)
-* CXXFLAGS:                              Build Options.       (line 254)
-* Cygwin:                                Notes for Particular Systems.
-                                                              (line  43)
-* Darwin:                                Known Build Problems.
-                                                              (line  51)
-* Debugging:                             Debugging.           (line   6)
-* Demonstration programs:                Demonstration Programs.
-                                                              (line   6)
-* Digits in an integer:                  Miscellaneous Integer Functions.
-                                                              (line  23)
-* Divisibility algorithm:                Exact Remainder.     (line  29)
-* Divisibility functions:                Integer Division.    (line 124)
-* Divisibility testing:                  Efficiency.          (line  91)
-* Division algorithms:                   Division Algorithms. (line   6)
-* Division functions <1>:                Rational Arithmetic. (line  22)
-* Division functions <2>:                Integer Division.    (line   6)
-* Division functions:                    Float Arithmetic.    (line  33)
-* DJGPP <1>:                             Notes for Particular Systems.
-                                                              (line  43)
-* DJGPP:                                 Known Build Problems.
-                                                              (line  18)
-* DLLs:                                  Notes for Particular Systems.
-                                                              (line  56)
-* DocBook:                               Build Options.       (line 354)
-* Documentation formats:                 Build Options.       (line 347)
-* Documentation license:                 GNU Free Documentation License.
-                                                              (line   6)
-* DVI:                                   Build Options.       (line 350)
-* Efficiency:                            Efficiency.          (line   6)
-* Emacs:                                 Emacs.               (line   6)
-* Exact division functions:              Integer Division.    (line 102)
-* Exact remainder:                       Exact Remainder.     (line   6)
-* Example programs:                      Demonstration Programs.
-                                                              (line   6)
-* Exec prefix:                           Build Options.       (line  32)
-* Execution profiling <1>:               Profiling.           (line   6)
-* Execution profiling:                   Build Options.       (line 331)
-* Exponentiation functions <1>:          Integer Exponentiation.
-                                                              (line   6)
-* Exponentiation functions:              Float Arithmetic.    (line  41)
-* Export:                                Integer Import and Export.
-                                                              (line  45)
-* Expression parsing demo:               Demonstration Programs.
-                                                              (line  18)
-* Extended GCD:                          Number Theoretic Functions.
-                                                              (line  45)
-* Factor removal functions:              Number Theoretic Functions.
-                                                              (line  90)
-* Factorial algorithm:                   Factorial Algorithm. (line   6)
-* Factorial functions:                   Number Theoretic Functions.
-                                                              (line  95)
-* Factorization demo:                    Demonstration Programs.
-                                                              (line  25)
-* Fast Fourier Transform:                FFT Multiplication.  (line   6)
-* Fat binary:                            Build Options.       (line 164)
-* FFT multiplication <1>:                FFT Multiplication.  (line   6)
-* FFT multiplication:                    Build Options.       (line 317)
-* Fibonacci number algorithm:            Fibonacci Numbers Algorithm.
-                                                              (line   6)
-* Fibonacci sequence functions:          Number Theoretic Functions.
-                                                              (line 108)
-* Float arithmetic functions:            Float Arithmetic.    (line   6)
-* Float assignment functions <1>:        Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Float assignment functions:            Assigning Floats.    (line   6)
-* Float comparison functions:            Float Comparison.    (line   6)
-* Float conversion functions:            Converting Floats.   (line   6)
-* Float functions:                       Floating-point Functions.
-                                                              (line   6)
-* Float initialization functions <1>:    Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Float initialization functions:        Initializing Floats. (line   6)
-* Float input and output functions:      I/O of Floats.       (line   6)
-* Float internals:                       Float Internals.     (line   6)
-* Float miscellaneous functions:         Miscellaneous Float Functions.
-                                                              (line   6)
-* Float random number functions:         Miscellaneous Float Functions.
-                                                              (line  27)
-* Float rounding functions:              Miscellaneous Float Functions.
-                                                              (line   9)
-* Float sign tests:                      Float Comparison.    (line  33)
-* Floating point mode:                   Notes for Particular Systems.
-                                                              (line  34)
-* Floating-point functions:              Floating-point Functions.
-                                                              (line   6)
-* Floating-point number:                 Nomenclature and Types.
-                                                              (line  21)
-* fnccheck:                              Profiling.           (line  77)
-* Formatted input:                       Formatted Input.     (line   6)
-* Formatted output:                      Formatted Output.    (line   6)
-* Free Documentation License:            GNU Free Documentation License.
-                                                              (line   6)
-* frexp <1>:                             Converting Floats.   (line  23)
-* frexp:                                 Converting Integers. (line  42)
-* FTP of latest version:                 Introduction to GMP. (line  38)
-* Function classes:                      Function Classes.    (line   6)
-* FunctionCheck:                         Profiling.           (line  77)
-* GCC Checker:                           Debugging.           (line 115)
-* GCD algorithms:                        Greatest Common Divisor Algorithms.
-                                                              (line   6)
-* GCD extended:                          Number Theoretic Functions.
-                                                              (line  45)
-* GCD functions:                         Number Theoretic Functions.
-                                                              (line  30)
-* GDB:                                   Debugging.           (line  58)
-* Generic C:                             Build Options.       (line 153)
-* GMP Perl module:                       Demonstration Programs.
-                                                              (line  35)
-* GMP version number:                    Useful Macros and Constants.
-                                                              (line  12)
-* gmp.h:                                 Headers and Libraries.
-                                                              (line   6)
-* gmpxx.h:                               C++ Interface General.
-                                                              (line   8)
-* GNU Debugger:                          Debugging.           (line  58)
-* GNU Free Documentation License:        GNU Free Documentation License.
-                                                              (line   6)
-* GNU strip:                             Known Build Problems.
-                                                              (line  28)
-* gprof:                                 Profiling.           (line  41)
-* Greatest common divisor algorithms:    Greatest Common Divisor Algorithms.
-                                                              (line   6)
-* Greatest common divisor functions:     Number Theoretic Functions.
-                                                              (line  30)
-* Hardware floating point mode:          Notes for Particular Systems.
-                                                              (line  34)
-* Headers:                               Headers and Libraries.
-                                                              (line   6)
-* Heap problems:                         Debugging.           (line  24)
-* Home page:                             Introduction to GMP. (line  34)
-* Host system:                           Build Options.       (line  66)
-* HP-UX:                                 ABI and ISA.         (line 107)
-* HPPA:                                  ABI and ISA.         (line  68)
-* I/O functions <1>:                     I/O of Integers.     (line   6)
-* I/O functions <2>:                     I/O of Rationals.    (line   6)
-* I/O functions:                         I/O of Floats.       (line   6)
-* i386:                                  Notes for Particular Systems.
-                                                              (line 126)
-* IA-64:                                 ABI and ISA.         (line 107)
-* Import:                                Integer Import and Export.
-                                                              (line  11)
-* In-place operations:                   Efficiency.          (line  57)
-* Include files:                         Headers and Libraries.
-                                                              (line   6)
-* info-lookup-symbol:                    Emacs.               (line   6)
-* Initialization functions <1>:          Initializing Integers.
-                                                              (line   6)
-* Initialization functions <2>:          Initializing Rationals.
-                                                              (line   6)
-* Initialization functions <3>:          Random State Initialization.
-                                                              (line   6)
-* Initialization functions <4>:          Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Initialization functions <5>:          Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Initialization functions:              Initializing Floats. (line   6)
-* Initializing and clearing:             Efficiency.          (line  21)
-* Input functions <1>:                   I/O of Integers.     (line   6)
-* Input functions <2>:                   I/O of Rationals.    (line   6)
-* Input functions <3>:                   I/O of Floats.       (line   6)
-* Input functions:                       Formatted Input Functions.
-                                                              (line   6)
-* Install prefix:                        Build Options.       (line  32)
-* Installing GMP:                        Installing GMP.      (line   6)
-* Instruction Set Architecture:          ABI and ISA.         (line   6)
-* instrument-functions:                  Profiling.           (line  66)
-* Integer:                               Nomenclature and Types.
-                                                              (line   6)
-* Integer arithmetic functions:          Integer Arithmetic.  (line   6)
-* Integer assignment functions <1>:      Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Integer assignment functions:          Assigning Integers.  (line   6)
-* Integer bit manipulation functions:    Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Integer comparison functions:          Integer Comparisons. (line   6)
-* Integer conversion functions:          Converting Integers. (line   6)
-* Integer division functions:            Integer Division.    (line   6)
-* Integer exponentiation functions:      Integer Exponentiation.
-                                                              (line   6)
-* Integer export:                        Integer Import and Export.
-                                                              (line  45)
-* Integer functions:                     Integer Functions.   (line   6)
-* Integer import:                        Integer Import and Export.
-                                                              (line  11)
-* Integer initialization functions <1>:  Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Integer initialization functions:      Initializing Integers.
-                                                              (line   6)
-* Integer input and output functions:    I/O of Integers.     (line   6)
-* Integer internals:                     Integer Internals.   (line   6)
-* Integer logical functions:             Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Integer miscellaneous functions:       Miscellaneous Integer Functions.
-                                                              (line   6)
-* Integer random number functions:       Integer Random Numbers.
-                                                              (line   6)
-* Integer root functions:                Integer Roots.       (line   6)
-* Integer sign tests:                    Integer Comparisons. (line  28)
-* Integer special functions:             Integer Special Functions.
-                                                              (line   6)
-* Interix:                               Notes for Particular Systems.
-                                                              (line  51)
-* Internals:                             Internals.           (line   6)
-* Introduction:                          Introduction to GMP. (line   6)
-* Inverse modulo functions:              Number Theoretic Functions.
-                                                              (line  60)
-* IRIX <1>:                              Known Build Problems.
-                                                              (line  38)
-* IRIX:                                  ABI and ISA.         (line 132)
-* ISA:                                   ABI and ISA.         (line   6)
-* istream input:                         C++ Formatted Input. (line   6)
-* Jacobi symbol algorithm:               Jacobi Symbol.       (line   6)
-* Jacobi symbol functions:               Number Theoretic Functions.
-                                                              (line  66)
-* Karatsuba multiplication:              Karatsuba Multiplication.
-                                                              (line   6)
-* Karatsuba square root algorithm:       Square Root Algorithm.
-                                                              (line   6)
-* Kronecker symbol functions:            Number Theoretic Functions.
-                                                              (line  78)
-* Language bindings:                     Language Bindings.   (line   6)
-* Latest version of GMP:                 Introduction to GMP. (line  38)
-* LCM functions:                         Number Theoretic Functions.
-                                                              (line  55)
-* Least common multiple functions:       Number Theoretic Functions.
-                                                              (line  55)
-* Legendre symbol functions:             Number Theoretic Functions.
-                                                              (line  69)
-* libgmp:                                Headers and Libraries.
-                                                              (line  22)
-* libgmpxx:                              Headers and Libraries.
-                                                              (line  27)
-* Libraries:                             Headers and Libraries.
-                                                              (line  22)
-* Libtool:                               Headers and Libraries.
-                                                              (line  33)
-* Libtool versioning:                    Notes for Package Builds.
-                                                              (line   9)
-* License conditions:                    Copying.             (line   6)
-* Limb:                                  Nomenclature and Types.
-                                                              (line  31)
-* Limb size:                             Useful Macros and Constants.
-                                                              (line   7)
-* Linear congruential algorithm:         Random Number Algorithms.
-                                                              (line  25)
-* Linear congruential random numbers:    Random State Initialization.
-                                                              (line  32)
-* Linking:                               Headers and Libraries.
-                                                              (line  22)
-* Logical functions:                     Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Low-level functions:                   Low-level Functions. (line   6)
-* Lucas number algorithm:                Lucas Numbers Algorithm.
-                                                              (line   6)
-* Lucas number functions:                Number Theoretic Functions.
-                                                              (line 119)
-* MacOS X:                               Known Build Problems.
-                                                              (line  51)
-* Mailing lists:                         Introduction to GMP. (line  45)
-* Malloc debugger:                       Debugging.           (line  30)
-* Malloc problems:                       Debugging.           (line  24)
-* Memory allocation:                     Custom Allocation.   (line   6)
-* Memory management:                     Memory Management.   (line   6)
-* Mersenne twister algorithm:            Random Number Algorithms.
-                                                              (line  17)
-* Mersenne twister random numbers:       Random State Initialization.
-                                                              (line  13)
-* MINGW:                                 Notes for Particular Systems.
-                                                              (line  43)
-* MIPS:                                  ABI and ISA.         (line 132)
-* Miscellaneous float functions:         Miscellaneous Float Functions.
-                                                              (line   6)
-* Miscellaneous integer functions:       Miscellaneous Integer Functions.
-                                                              (line   6)
-* MMX:                                   Notes for Particular Systems.
-                                                              (line 132)
-* Modular inverse functions:             Number Theoretic Functions.
-                                                              (line  60)
-* Most significant bit:                  Miscellaneous Integer Functions.
-                                                              (line  34)
-* mp.h:                                  BSD Compatible Functions.
-                                                              (line  21)
-* MPN_PATH:                              Build Options.       (line 335)
-* MS Windows:                            Notes for Particular Systems.
-                                                              (line  56)
-* MS-DOS:                                Notes for Particular Systems.
-                                                              (line  43)
-* Multi-threading:                       Reentrancy.          (line   6)
-* Multiplication algorithms:             Multiplication Algorithms.
-                                                              (line   6)
-* Nails:                                 Low-level Functions. (line 478)
-* Native compilation:                    Build Options.       (line  52)
-* NeXT:                                  Known Build Problems.
-                                                              (line  57)
-* Next prime function:                   Number Theoretic Functions.
-                                                              (line  23)
-* Nomenclature:                          Nomenclature and Types.
-                                                              (line   6)
-* Non-Unix systems:                      Build Options.       (line  11)
-* Nth root algorithm:                    Nth Root Algorithm.  (line   6)
-* Number sequences:                      Efficiency.          (line 147)
-* Number theoretic functions:            Number Theoretic Functions.
-                                                              (line   6)
-* Numerator and denominator:             Applying Integer Functions.
-                                                              (line   6)
-* obstack output:                        Formatted Output Functions.
-                                                              (line  81)
-* OpenBSD:                               Notes for Particular Systems.
-                                                              (line  86)
-* Optimizing performance:                Performance optimization.
-                                                              (line   6)
-* ostream output:                        C++ Formatted Output.
-                                                              (line   6)
-* Other languages:                       Language Bindings.   (line   6)
-* Output functions <1>:                  I/O of Floats.       (line   6)
-* Output functions <2>:                  I/O of Rationals.    (line   6)
-* Output functions <3>:                  Formatted Output Functions.
-                                                              (line   6)
-* Output functions:                      I/O of Integers.     (line   6)
-* Packaged builds:                       Notes for Package Builds.
-                                                              (line   6)
-* Parameter conventions:                 Parameter Conventions.
-                                                              (line   6)
-* Parsing expressions demo:              Demonstration Programs.
-                                                              (line  21)
-* Particular systems:                    Notes for Particular Systems.
-                                                              (line   6)
-* Past GMP versions:                     Compatibility with older versions.
-                                                              (line   6)
-* PDF:                                   Build Options.       (line 350)
-* Perfect power algorithm:               Perfect Power Algorithm.
-                                                              (line   6)
-* Perfect power functions:               Integer Roots.       (line  27)
-* Perfect square algorithm:              Perfect Square Algorithm.
-                                                              (line   6)
-* Perfect square functions:              Integer Roots.       (line  36)
-* perl:                                  Demonstration Programs.
-                                                              (line  35)
-* Perl module:                           Demonstration Programs.
-                                                              (line  35)
-* Postscript:                            Build Options.       (line 350)
-* Power/PowerPC <1>:                     Known Build Problems.
-                                                              (line  63)
-* Power/PowerPC:                         Notes for Particular Systems.
-                                                              (line  92)
-* Powering algorithms:                   Powering Algorithms. (line   6)
-* Powering functions <1>:                Float Arithmetic.    (line  41)
-* Powering functions:                    Integer Exponentiation.
-                                                              (line   6)
-* PowerPC:                               ABI and ISA.         (line 167)
-* Precision of floats:                   Floating-point Functions.
-                                                              (line   6)
-* Precision of hardware floating point:  Notes for Particular Systems.
-                                                              (line  34)
-* Prefix:                                Build Options.       (line  32)
-* Prime testing algorithms:              Prime Testing Algorithm.
-                                                              (line   6)
-* Prime testing functions:               Number Theoretic Functions.
-                                                              (line   7)
-* printf formatted output:               Formatted Output.    (line   6)
-* Probable prime testing functions:      Number Theoretic Functions.
-                                                              (line   7)
-* prof:                                  Profiling.           (line  24)
-* Profiling:                             Profiling.           (line   6)
-* Radix conversion algorithms:           Radix Conversion Algorithms.
-                                                              (line   6)
-* Random number algorithms:              Random Number Algorithms.
-                                                              (line   6)
-* Random number functions <1>:           Integer Random Numbers.
-                                                              (line   6)
-* Random number functions <2>:           Miscellaneous Float Functions.
-                                                              (line  27)
-* Random number functions:               Random Number Functions.
-                                                              (line   6)
-* Random number seeding:                 Random State Seeding.
-                                                              (line   6)
-* Random number state:                   Random State Initialization.
-                                                              (line   6)
-* Random state:                          Nomenclature and Types.
-                                                              (line  46)
-* Rational arithmetic:                   Efficiency.          (line 113)
-* Rational arithmetic functions:         Rational Arithmetic. (line   6)
-* Rational assignment functions:         Initializing Rationals.
-                                                              (line   6)
-* Rational comparison functions:         Comparing Rationals. (line   6)
-* Rational conversion functions:         Rational Conversions.
-                                                              (line   6)
-* Rational initialization functions:     Initializing Rationals.
-                                                              (line   6)
-* Rational input and output functions:   I/O of Rationals.    (line   6)
-* Rational internals:                    Rational Internals.  (line   6)
-* Rational number:                       Nomenclature and Types.
-                                                              (line  16)
-* Rational number functions:             Rational Number Functions.
-                                                              (line   6)
-* Rational numerator and denominator:    Applying Integer Functions.
-                                                              (line   6)
-* Rational sign tests:                   Comparing Rationals. (line  27)
-* Raw output internals:                  Raw Output Internals.
-                                                              (line   6)
-* Reallocations:                         Efficiency.          (line  30)
-* Reentrancy:                            Reentrancy.          (line   6)
-* References:                            References.          (line   6)
-* Remove factor functions:               Number Theoretic Functions.
-                                                              (line  90)
-* Reporting bugs:                        Reporting Bugs.      (line   6)
-* Root extraction algorithm:             Nth Root Algorithm.  (line   6)
-* Root extraction algorithms:            Root Extraction Algorithms.
-                                                              (line   6)
-* Root extraction functions <1>:         Float Arithmetic.    (line  37)
-* Root extraction functions:             Integer Roots.       (line   6)
-* Root testing functions:                Integer Roots.       (line  36)
-* Rounding functions:                    Miscellaneous Float Functions.
-                                                              (line   9)
-* Sample programs:                       Demonstration Programs.
-                                                              (line   6)
-* Scan bit functions:                    Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* scanf formatted input:                 Formatted Input.     (line   6)
-* SCO:                                   Known Build Problems.
-                                                              (line  38)
-* Seeding random numbers:                Random State Seeding.
-                                                              (line   6)
-* Segmentation violation:                Debugging.           (line   7)
-* Sequent Symmetry:                      Known Build Problems.
-                                                              (line  68)
-* Services for Unix:                     Notes for Particular Systems.
-                                                              (line  51)
-* Shared library versioning:             Notes for Package Builds.
-                                                              (line   9)
-* Sign tests <1>:                        Float Comparison.    (line  33)
-* Sign tests <2>:                        Integer Comparisons. (line  28)
-* Sign tests:                            Comparing Rationals. (line  27)
-* Size in digits:                        Miscellaneous Integer Functions.
-                                                              (line  23)
-* Small operands:                        Efficiency.          (line   7)
-* Solaris <1>:                           ABI and ISA.         (line 201)
-* Solaris:                               Known Build Problems.
-                                                              (line  78)
-* Sparc:                                 Notes for Particular Systems.
-                                                              (line 108)
-* Sparc V9:                              ABI and ISA.         (line 201)
-* Special integer functions:             Integer Special Functions.
-                                                              (line   6)
-* Square root algorithm:                 Square Root Algorithm.
-                                                              (line   6)
-* SSE2:                                  Notes for Particular Systems.
-                                                              (line 132)
-* Stack backtrace:                       Debugging.           (line  50)
-* Stack overflow <1>:                    Debugging.           (line   7)
-* Stack overflow:                        Build Options.       (line 278)
-* Static linking:                        Efficiency.          (line  14)
-* stdarg.h:                              Headers and Libraries.
-                                                              (line  17)
-* stdio.h:                               Headers and Libraries.
-                                                              (line  11)
-* Stripped libraries:                    Known Build Problems.
-                                                              (line  28)
-* Sun:                                   ABI and ISA.         (line 201)
-* SunOS:                                 Notes for Particular Systems.
-                                                              (line 120)
-* Systems:                               Notes for Particular Systems.
-                                                              (line   6)
-* Temporary memory:                      Build Options.       (line 278)
-* Texinfo:                               Build Options.       (line 347)
-* Text input/output:                     Efficiency.          (line 153)
-* Thread safety:                         Reentrancy.          (line   6)
-* Toom multiplication <1>:               Other Multiplication.
-                                                              (line   6)
-* Toom multiplication <2>:               Toom 4-Way Multiplication.
-                                                              (line   6)
-* Toom multiplication:                   Toom 3-Way Multiplication.
-                                                              (line   6)
-* Types:                                 Nomenclature and Types.
-                                                              (line   6)
-* ui and si functions:                   Efficiency.          (line  50)
-* Unbalanced multiplication:             Unbalanced Multiplication.
-                                                              (line   6)
-* Upward compatibility:                  Compatibility with older versions.
-                                                              (line   6)
-* Useful macros and constants:           Useful Macros and Constants.
-                                                              (line   6)
-* User-defined precision:                Floating-point Functions.
-                                                              (line   6)
-* Valgrind:                              Debugging.           (line 130)
-* Variable conventions:                  Variable Conventions.
-                                                              (line   6)
-* Version number:                        Useful Macros and Constants.
-                                                              (line  12)
-* Web page:                              Introduction to GMP. (line  34)
-* Windows:                               Notes for Particular Systems.
-                                                              (line  56)
-* x86:                                   Notes for Particular Systems.
-                                                              (line 126)
-* x87:                                   Notes for Particular Systems.
-                                                              (line  34)
-* XML:                                   Build Options.       (line 354)
-
-\1f
-File: gmp.info,  Node: Function Index,  Prev: Concept Index,  Up: Top
-
-Function and Type Index
-***********************
-
-\0\b[index\0\b]
-* Menu:
-
-* __GMP_CC:                              Useful Macros and Constants.
-                                                              (line  23)
-* __GMP_CFLAGS:                          Useful Macros and Constants.
-                                                              (line  24)
-* __GNU_MP_VERSION:                      Useful Macros and Constants.
-                                                              (line  10)
-* __GNU_MP_VERSION_MINOR:                Useful Macros and Constants.
-                                                              (line  11)
-* __GNU_MP_VERSION_PATCHLEVEL:           Useful Macros and Constants.
-                                                              (line  12)
-* _mpz_realloc:                          Integer Special Functions.
-                                                              (line  51)
-* abs <1>:                               C++ Interface Rationals.
-                                                              (line  43)
-* abs <2>:                               C++ Interface Integers.
-                                                              (line  42)
-* abs:                                   C++ Interface Floats.
-                                                              (line  70)
-* ceil:                                  C++ Interface Floats.
-                                                              (line  71)
-* cmp <1>:                               C++ Interface Floats.
-                                                              (line  72)
-* cmp <2>:                               C++ Interface Rationals.
-                                                              (line  44)
-* cmp <3>:                               C++ Interface Integers.
-                                                              (line  44)
-* cmp:                                   C++ Interface Rationals.
-                                                              (line  45)
-* floor:                                 C++ Interface Floats.
-                                                              (line  80)
-* gcd:                                   BSD Compatible Functions.
-                                                              (line  82)
-* gmp_asprintf:                          Formatted Output Functions.
-                                                              (line  65)
-* gmp_errno:                             Random State Initialization.
-                                                              (line  55)
-* GMP_ERROR_INVALID_ARGUMENT:            Random State Initialization.
-                                                              (line  55)
-* GMP_ERROR_UNSUPPORTED_ARGUMENT:        Random State Initialization.
-                                                              (line  55)
-* gmp_fprintf:                           Formatted Output Functions.
-                                                              (line  29)
-* gmp_fscanf:                            Formatted Input Functions.
-                                                              (line  25)
-* GMP_LIMB_BITS:                         Low-level Functions. (line 508)
-* GMP_NAIL_BITS:                         Low-level Functions. (line 506)
-* GMP_NAIL_MASK:                         Low-level Functions. (line 516)
-* GMP_NUMB_BITS:                         Low-level Functions. (line 507)
-* GMP_NUMB_MASK:                         Low-level Functions. (line 517)
-* GMP_NUMB_MAX:                          Low-level Functions. (line 525)
-* gmp_obstack_printf:                    Formatted Output Functions.
-                                                              (line  79)
-* gmp_obstack_vprintf:                   Formatted Output Functions.
-                                                              (line  81)
-* gmp_printf:                            Formatted Output Functions.
-                                                              (line  24)
-* GMP_RAND_ALG_DEFAULT:                  Random State Initialization.
-                                                              (line  49)
-* GMP_RAND_ALG_LC:                       Random State Initialization.
-                                                              (line  49)
-* gmp_randclass:                         C++ Interface Random Numbers.
-                                                              (line   7)
-* gmp_randclass::get_f:                  C++ Interface Random Numbers.
-                                                              (line  45)
-* gmp_randclass::get_z_bits:             C++ Interface Random Numbers.
-                                                              (line  39)
-* gmp_randclass::get_z_range:            C++ Interface Random Numbers.
-                                                              (line  42)
-* gmp_randclass::gmp_randclass:          C++ Interface Random Numbers.
-                                                              (line  13)
-* gmp_randclass::seed:                   C++ Interface Random Numbers.
-                                                              (line  33)
-* gmp_randclear:                         Random State Initialization.
-                                                              (line  62)
-* gmp_randinit:                          Random State Initialization.
-                                                              (line  47)
-* gmp_randinit_default:                  Random State Initialization.
-                                                              (line   7)
-* gmp_randinit_lc_2exp:                  Random State Initialization.
-                                                              (line  18)
-* gmp_randinit_lc_2exp_size:             Random State Initialization.
-                                                              (line  32)
-* gmp_randinit_mt:                       Random State Initialization.
-                                                              (line  13)
-* gmp_randinit_set:                      Random State Initialization.
-                                                              (line  43)
-* gmp_randseed:                          Random State Seeding.
-                                                              (line   7)
-* gmp_randseed_ui:                       Random State Seeding.
-                                                              (line   9)
-* gmp_randstate_t:                       Nomenclature and Types.
-                                                              (line  46)
-* gmp_scanf:                             Formatted Input Functions.
-                                                              (line  21)
-* gmp_snprintf:                          Formatted Output Functions.
-                                                              (line  46)
-* gmp_sprintf:                           Formatted Output Functions.
-                                                              (line  34)
-* gmp_sscanf:                            Formatted Input Functions.
-                                                              (line  29)
-* gmp_urandomb_ui:                       Random State Miscellaneous.
-                                                              (line   8)
-* gmp_urandomm_ui:                       Random State Miscellaneous.
-                                                              (line  14)
-* gmp_vasprintf:                         Formatted Output Functions.
-                                                              (line  66)
-* gmp_version:                           Useful Macros and Constants.
-                                                              (line  18)
-* gmp_vfprintf:                          Formatted Output Functions.
-                                                              (line  30)
-* gmp_vfscanf:                           Formatted Input Functions.
-                                                              (line  26)
-* gmp_vprintf:                           Formatted Output Functions.
-                                                              (line  25)
-* gmp_vscanf:                            Formatted Input Functions.
-                                                              (line  22)
-* gmp_vsnprintf:                         Formatted Output Functions.
-                                                              (line  48)
-* gmp_vsprintf:                          Formatted Output Functions.
-                                                              (line  35)
-* gmp_vsscanf:                           Formatted Input Functions.
-                                                              (line  31)
-* hypot:                                 C++ Interface Floats.
-                                                              (line  81)
-* itom:                                  BSD Compatible Functions.
-                                                              (line  29)
-* madd:                                  BSD Compatible Functions.
-                                                              (line  43)
-* mcmp:                                  BSD Compatible Functions.
-                                                              (line  85)
-* mdiv:                                  BSD Compatible Functions.
-                                                              (line  53)
-* mfree:                                 BSD Compatible Functions.
-                                                              (line 105)
-* min:                                   BSD Compatible Functions.
-                                                              (line  89)
-* MINT:                                  BSD Compatible Functions.
-                                                              (line  21)
-* mout:                                  BSD Compatible Functions.
-                                                              (line  94)
-* move:                                  BSD Compatible Functions.
-                                                              (line  39)
-* mp_bitcnt_t:                           Nomenclature and Types.
-                                                              (line  42)
-* mp_bits_per_limb:                      Useful Macros and Constants.
-                                                              (line   7)
-* mp_exp_t:                              Nomenclature and Types.
-                                                              (line  27)
-* mp_get_memory_functions:               Custom Allocation.   (line  93)
-* mp_limb_t:                             Nomenclature and Types.
-                                                              (line  31)
-* mp_set_memory_functions:               Custom Allocation.   (line  21)
-* mp_size_t:                             Nomenclature and Types.
-                                                              (line  37)
-* mpf_abs:                               Float Arithmetic.    (line  47)
-* mpf_add:                               Float Arithmetic.    (line   7)
-* mpf_add_ui:                            Float Arithmetic.    (line   9)
-* mpf_ceil:                              Miscellaneous Float Functions.
-                                                              (line   7)
-* mpf_class:                             C++ Interface General.
-                                                              (line  20)
-* mpf_class::fits_sint_p:                C++ Interface Floats.
-                                                              (line  74)
-* mpf_class::fits_slong_p:               C++ Interface Floats.
-                                                              (line  75)
-* mpf_class::fits_sshort_p:              C++ Interface Floats.
-                                                              (line  76)
-* mpf_class::fits_uint_p:                C++ Interface Floats.
-                                                              (line  77)
-* mpf_class::fits_ulong_p:               C++ Interface Floats.
-                                                              (line  78)
-* mpf_class::fits_ushort_p:              C++ Interface Floats.
-                                                              (line  79)
-* mpf_class::get_d:                      C++ Interface Floats.
-                                                              (line  82)
-* mpf_class::get_mpf_t:                  C++ Interface General.
-                                                              (line  66)
-* mpf_class::get_prec:                   C++ Interface Floats.
-                                                              (line 100)
-* mpf_class::get_si:                     C++ Interface Floats.
-                                                              (line  83)
-* mpf_class::get_str:                    C++ Interface Floats.
-                                                              (line  85)
-* mpf_class::get_ui:                     C++ Interface Floats.
-                                                              (line  86)
-* mpf_class::mpf_class:                  C++ Interface Floats.
-                                                              (line  38)
-* mpf_class::operator=:                  C++ Interface Floats.
-                                                              (line  47)
-* mpf_class::set_prec:                   C++ Interface Floats.
-                                                              (line 101)
-* mpf_class::set_prec_raw:               C++ Interface Floats.
-                                                              (line 102)
-* mpf_class::set_str:                    C++ Interface Floats.
-                                                              (line  88)
-* mpf_clear:                             Initializing Floats. (line  37)
-* mpf_clears:                            Initializing Floats. (line  41)
-* mpf_cmp:                               Float Comparison.    (line   7)
-* mpf_cmp_d:                             Float Comparison.    (line   8)
-* mpf_cmp_si:                            Float Comparison.    (line  10)
-* mpf_cmp_ui:                            Float Comparison.    (line   9)
-* mpf_div:                               Float Arithmetic.    (line  29)
-* mpf_div_2exp:                          Float Arithmetic.    (line  53)
-* mpf_div_ui:                            Float Arithmetic.    (line  33)
-* mpf_eq:                                Float Comparison.    (line  17)
-* mpf_fits_sint_p:                       Miscellaneous Float Functions.
-                                                              (line  20)
-* mpf_fits_slong_p:                      Miscellaneous Float Functions.
-                                                              (line  18)
-* mpf_fits_sshort_p:                     Miscellaneous Float Functions.
-                                                              (line  22)
-* mpf_fits_uint_p:                       Miscellaneous Float Functions.
-                                                              (line  19)
-* mpf_fits_ulong_p:                      Miscellaneous Float Functions.
-                                                              (line  17)
-* mpf_fits_ushort_p:                     Miscellaneous Float Functions.
-                                                              (line  21)
-* mpf_floor:                             Miscellaneous Float Functions.
-                                                              (line   8)
-* mpf_get_d:                             Converting Floats.   (line   7)
-* mpf_get_d_2exp:                        Converting Floats.   (line  16)
-* mpf_get_default_prec:                  Initializing Floats. (line  12)
-* mpf_get_prec:                          Initializing Floats. (line  62)
-* mpf_get_si:                            Converting Floats.   (line  27)
-* mpf_get_str:                           Converting Floats.   (line  37)
-* mpf_get_ui:                            Converting Floats.   (line  28)
-* mpf_init:                              Initializing Floats. (line  19)
-* mpf_init2:                             Initializing Floats. (line  26)
-* mpf_init_set:                          Simultaneous Float Init & Assign.
-                                                              (line  16)
-* mpf_init_set_d:                        Simultaneous Float Init & Assign.
-                                                              (line  19)
-* mpf_init_set_si:                       Simultaneous Float Init & Assign.
-                                                              (line  18)
-* mpf_init_set_str:                      Simultaneous Float Init & Assign.
-                                                              (line  25)
-* mpf_init_set_ui:                       Simultaneous Float Init & Assign.
-                                                              (line  17)
-* mpf_inits:                             Initializing Floats. (line  31)
-* mpf_inp_str:                           I/O of Floats.       (line  37)
-* mpf_integer_p:                         Miscellaneous Float Functions.
-                                                              (line  14)
-* mpf_mul:                               Float Arithmetic.    (line  19)
-* mpf_mul_2exp:                          Float Arithmetic.    (line  50)
-* mpf_mul_ui:                            Float Arithmetic.    (line  21)
-* mpf_neg:                               Float Arithmetic.    (line  44)
-* mpf_out_str:                           I/O of Floats.       (line  17)
-* mpf_pow_ui:                            Float Arithmetic.    (line  41)
-* mpf_random2:                           Miscellaneous Float Functions.
-                                                              (line  36)
-* mpf_reldiff:                           Float Comparison.    (line  29)
-* mpf_set:                               Assigning Floats.    (line  10)
-* mpf_set_d:                             Assigning Floats.    (line  13)
-* mpf_set_default_prec:                  Initializing Floats. (line   7)
-* mpf_set_prec:                          Initializing Floats. (line  65)
-* mpf_set_prec_raw:                      Initializing Floats. (line  72)
-* mpf_set_q:                             Assigning Floats.    (line  15)
-* mpf_set_si:                            Assigning Floats.    (line  12)
-* mpf_set_str:                           Assigning Floats.    (line  18)
-* mpf_set_ui:                            Assigning Floats.    (line  11)
-* mpf_set_z:                             Assigning Floats.    (line  14)
-* mpf_sgn:                               Float Comparison.    (line  33)
-* mpf_sqrt:                              Float Arithmetic.    (line  36)
-* mpf_sqrt_ui:                           Float Arithmetic.    (line  37)
-* mpf_sub:                               Float Arithmetic.    (line  12)
-* mpf_sub_ui:                            Float Arithmetic.    (line  16)
-* mpf_swap:                              Assigning Floats.    (line  52)
-* mpf_t:                                 Nomenclature and Types.
-                                                              (line  21)
-* mpf_trunc:                             Miscellaneous Float Functions.
-                                                              (line   9)
-* mpf_ui_div:                            Float Arithmetic.    (line  31)
-* mpf_ui_sub:                            Float Arithmetic.    (line  14)
-* mpf_urandomb:                          Miscellaneous Float Functions.
-                                                              (line  27)
-* mpn_add:                               Low-level Functions. (line  69)
-* mpn_add_1:                             Low-level Functions. (line  64)
-* mpn_add_n:                             Low-level Functions. (line  54)
-* mpn_addmul_1:                          Low-level Functions. (line 148)
-* mpn_and_n:                             Low-level Functions. (line 420)
-* mpn_andn_n:                            Low-level Functions. (line 435)
-* mpn_cmp:                               Low-level Functions. (line 284)
-* mpn_com:                               Low-level Functions. (line 460)
-* mpn_copyd:                             Low-level Functions. (line 469)
-* mpn_copyi:                             Low-level Functions. (line 465)
-* mpn_divexact_by3:                      Low-level Functions. (line 229)
-* mpn_divexact_by3c:                     Low-level Functions. (line 231)
-* mpn_divmod:                            Low-level Functions. (line 224)
-* mpn_divmod_1:                          Low-level Functions. (line 208)
-* mpn_divrem:                            Low-level Functions. (line 182)
-* mpn_divrem_1:                          Low-level Functions. (line 206)
-* mpn_gcd:                               Low-level Functions. (line 289)
-* mpn_gcd_1:                             Low-level Functions. (line 299)
-* mpn_gcdext:                            Low-level Functions. (line 305)
-* mpn_get_str:                           Low-level Functions. (line 346)
-* mpn_hamdist:                           Low-level Functions. (line 410)
-* mpn_ior_n:                             Low-level Functions. (line 425)
-* mpn_iorn_n:                            Low-level Functions. (line 440)
-* mpn_lshift:                            Low-level Functions. (line 260)
-* mpn_mod_1:                             Low-level Functions. (line 255)
-* mpn_mul:                               Low-level Functions. (line 114)
-* mpn_mul_1:                             Low-level Functions. (line 133)
-* mpn_mul_n:                             Low-level Functions. (line 103)
-* mpn_nand_n:                            Low-level Functions. (line 445)
-* mpn_neg:                               Low-level Functions. (line  98)
-* mpn_nior_n:                            Low-level Functions. (line 450)
-* mpn_perfect_square_p:                  Low-level Functions. (line 416)
-* mpn_popcount:                          Low-level Functions. (line 406)
-* mpn_random:                            Low-level Functions. (line 395)
-* mpn_random2:                           Low-level Functions. (line 396)
-* mpn_rshift:                            Low-level Functions. (line 272)
-* mpn_scan0:                             Low-level Functions. (line 380)
-* mpn_scan1:                             Low-level Functions. (line 388)
-* mpn_set_str:                           Low-level Functions. (line 361)
-* mpn_sqr:                               Low-level Functions. (line 125)
-* mpn_sqrtrem:                           Low-level Functions. (line 328)
-* mpn_sub:                               Low-level Functions. (line  90)
-* mpn_sub_1:                             Low-level Functions. (line  85)
-* mpn_sub_n:                             Low-level Functions. (line  76)
-* mpn_submul_1:                          Low-level Functions. (line 159)
-* mpn_tdiv_qr:                           Low-level Functions. (line 171)
-* mpn_xnor_n:                            Low-level Functions. (line 455)
-* mpn_xor_n:                             Low-level Functions. (line 430)
-* mpn_zero:                              Low-level Functions. (line 472)
-* mpq_abs:                               Rational Arithmetic. (line  31)
-* mpq_add:                               Rational Arithmetic. (line   7)
-* mpq_canonicalize:                      Rational Number Functions.
-                                                              (line  22)
-* mpq_class:                             C++ Interface General.
-                                                              (line  19)
-* mpq_class::canonicalize:               C++ Interface Rationals.
-                                                              (line  37)
-* mpq_class::get_d:                      C++ Interface Rationals.
-                                                              (line  46)
-* mpq_class::get_den:                    C++ Interface Rationals.
-                                                              (line  58)
-* mpq_class::get_den_mpz_t:              C++ Interface Rationals.
-                                                              (line  68)
-* mpq_class::get_mpq_t:                  C++ Interface General.
-                                                              (line  65)
-* mpq_class::get_num:                    C++ Interface Rationals.
-                                                              (line  57)
-* mpq_class::get_num_mpz_t:              C++ Interface Rationals.
-                                                              (line  67)
-* mpq_class::get_str:                    C++ Interface Rationals.
-                                                              (line  47)
-* mpq_class::mpq_class:                  C++ Interface Rationals.
-                                                              (line  22)
-* mpq_class::set_str:                    C++ Interface Rationals.
-                                                              (line  49)
-* mpq_clear:                             Initializing Rationals.
-                                                              (line  16)
-* mpq_clears:                            Initializing Rationals.
-                                                              (line  20)
-* mpq_cmp:                               Comparing Rationals. (line   7)
-* mpq_cmp_si:                            Comparing Rationals. (line  17)
-* mpq_cmp_ui:                            Comparing Rationals. (line  15)
-* mpq_denref:                            Applying Integer Functions.
-                                                              (line  18)
-* mpq_div:                               Rational Arithmetic. (line  22)
-* mpq_div_2exp:                          Rational Arithmetic. (line  25)
-* mpq_equal:                             Comparing Rationals. (line  33)
-* mpq_get_d:                             Rational Conversions.
-                                                              (line   7)
-* mpq_get_den:                           Applying Integer Functions.
-                                                              (line  24)
-* mpq_get_num:                           Applying Integer Functions.
-                                                              (line  23)
-* mpq_get_str:                           Rational Conversions.
-                                                              (line  22)
-* mpq_init:                              Initializing Rationals.
-                                                              (line   7)
-* mpq_inits:                             Initializing Rationals.
-                                                              (line  12)
-* mpq_inp_str:                           I/O of Rationals.    (line  23)
-* mpq_inv:                               Rational Arithmetic. (line  34)
-* mpq_mul:                               Rational Arithmetic. (line  15)
-* mpq_mul_2exp:                          Rational Arithmetic. (line  18)
-* mpq_neg:                               Rational Arithmetic. (line  28)
-* mpq_numref:                            Applying Integer Functions.
-                                                              (line  17)
-* mpq_out_str:                           I/O of Rationals.    (line  15)
-* mpq_set:                               Initializing Rationals.
-                                                              (line  24)
-* mpq_set_d:                             Rational Conversions.
-                                                              (line  17)
-* mpq_set_den:                           Applying Integer Functions.
-                                                              (line  26)
-* mpq_set_f:                             Rational Conversions.
-                                                              (line  18)
-* mpq_set_num:                           Applying Integer Functions.
-                                                              (line  25)
-* mpq_set_si:                            Initializing Rationals.
-                                                              (line  31)
-* mpq_set_str:                           Initializing Rationals.
-                                                              (line  36)
-* mpq_set_ui:                            Initializing Rationals.
-                                                              (line  29)
-* mpq_set_z:                             Initializing Rationals.
-                                                              (line  25)
-* mpq_sgn:                               Comparing Rationals. (line  27)
-* mpq_sub:                               Rational Arithmetic. (line  11)
-* mpq_swap:                              Initializing Rationals.
-                                                              (line  56)
-* mpq_t:                                 Nomenclature and Types.
-                                                              (line  16)
-* mpz_abs:                               Integer Arithmetic.  (line  42)
-* mpz_add:                               Integer Arithmetic.  (line   7)
-* mpz_add_ui:                            Integer Arithmetic.  (line   9)
-* mpz_addmul:                            Integer Arithmetic.  (line  25)
-* mpz_addmul_ui:                         Integer Arithmetic.  (line  27)
-* mpz_and:                               Integer Logic and Bit Fiddling.
-                                                              (line  11)
-* mpz_array_init:                        Integer Special Functions.
-                                                              (line  11)
-* mpz_bin_ui:                            Number Theoretic Functions.
-                                                              (line  98)
-* mpz_bin_uiui:                          Number Theoretic Functions.
-                                                              (line 100)
-* mpz_cdiv_q:                            Integer Division.    (line  13)
-* mpz_cdiv_q_2exp:                       Integer Division.    (line  24)
-* mpz_cdiv_q_ui:                         Integer Division.    (line  17)
-* mpz_cdiv_qr:                           Integer Division.    (line  15)
-* mpz_cdiv_qr_ui:                        Integer Division.    (line  21)
-* mpz_cdiv_r:                            Integer Division.    (line  14)
-* mpz_cdiv_r_2exp:                       Integer Division.    (line  25)
-* mpz_cdiv_r_ui:                         Integer Division.    (line  19)
-* mpz_cdiv_ui:                           Integer Division.    (line  23)
-* mpz_class:                             C++ Interface General.
-                                                              (line  18)
-* mpz_class::fits_sint_p:                C++ Interface Integers.
-                                                              (line  45)
-* mpz_class::fits_slong_p:               C++ Interface Integers.
-                                                              (line  46)
-* mpz_class::fits_sshort_p:              C++ Interface Integers.
-                                                              (line  47)
-* mpz_class::fits_uint_p:                C++ Interface Integers.
-                                                              (line  48)
-* mpz_class::fits_ulong_p:               C++ Interface Integers.
-                                                              (line  49)
-* mpz_class::fits_ushort_p:              C++ Interface Integers.
-                                                              (line  50)
-* mpz_class::get_d:                      C++ Interface Integers.
-                                                              (line  51)
-* mpz_class::get_mpz_t:                  C++ Interface General.
-                                                              (line  64)
-* mpz_class::get_si:                     C++ Interface Integers.
-                                                              (line  52)
-* mpz_class::get_str:                    C++ Interface Integers.
-                                                              (line  53)
-* mpz_class::get_ui:                     C++ Interface Integers.
-                                                              (line  54)
-* mpz_class::mpz_class:                  C++ Interface Integers.
-                                                              (line   7)
-* mpz_class::set_str:                    C++ Interface Integers.
-                                                              (line  56)
-* mpz_clear:                             Initializing Integers.
-                                                              (line  44)
-* mpz_clears:                            Initializing Integers.
-                                                              (line  48)
-* mpz_clrbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  54)
-* mpz_cmp:                               Integer Comparisons. (line   7)
-* mpz_cmp_d:                             Integer Comparisons. (line   8)
-* mpz_cmp_si:                            Integer Comparisons. (line   9)
-* mpz_cmp_ui:                            Integer Comparisons. (line  10)
-* mpz_cmpabs:                            Integer Comparisons. (line  18)
-* mpz_cmpabs_d:                          Integer Comparisons. (line  19)
-* mpz_cmpabs_ui:                         Integer Comparisons. (line  20)
-* mpz_com:                               Integer Logic and Bit Fiddling.
-                                                              (line  20)
-* mpz_combit:                            Integer Logic and Bit Fiddling.
-                                                              (line  57)
-* mpz_congruent_2exp_p:                  Integer Division.    (line 124)
-* mpz_congruent_p:                       Integer Division.    (line 121)
-* mpz_congruent_ui_p:                    Integer Division.    (line 123)
-* mpz_divexact:                          Integer Division.    (line 101)
-* mpz_divexact_ui:                       Integer Division.    (line 102)
-* mpz_divisible_2exp_p:                  Integer Division.    (line 112)
-* mpz_divisible_p:                       Integer Division.    (line 110)
-* mpz_divisible_ui_p:                    Integer Division.    (line 111)
-* mpz_even_p:                            Miscellaneous Integer Functions.
-                                                              (line  18)
-* mpz_export:                            Integer Import and Export.
-                                                              (line  45)
-* mpz_fac_ui:                            Number Theoretic Functions.
-                                                              (line  95)
-* mpz_fdiv_q:                            Integer Division.    (line  27)
-* mpz_fdiv_q_2exp:                       Integer Division.    (line  38)
-* mpz_fdiv_q_ui:                         Integer Division.    (line  31)
-* mpz_fdiv_qr:                           Integer Division.    (line  29)
-* mpz_fdiv_qr_ui:                        Integer Division.    (line  35)
-* mpz_fdiv_r:                            Integer Division.    (line  28)
-* mpz_fdiv_r_2exp:                       Integer Division.    (line  39)
-* mpz_fdiv_r_ui:                         Integer Division.    (line  33)
-* mpz_fdiv_ui:                           Integer Division.    (line  37)
-* mpz_fib2_ui:                           Number Theoretic Functions.
-                                                              (line 108)
-* mpz_fib_ui:                            Number Theoretic Functions.
-                                                              (line 106)
-* mpz_fits_sint_p:                       Miscellaneous Integer Functions.
-                                                              (line  10)
-* mpz_fits_slong_p:                      Miscellaneous Integer Functions.
-                                                              (line   8)
-* mpz_fits_sshort_p:                     Miscellaneous Integer Functions.
-                                                              (line  12)
-* mpz_fits_uint_p:                       Miscellaneous Integer Functions.
-                                                              (line   9)
-* mpz_fits_ulong_p:                      Miscellaneous Integer Functions.
-                                                              (line   7)
-* mpz_fits_ushort_p:                     Miscellaneous Integer Functions.
-                                                              (line  11)
-* mpz_gcd:                               Number Theoretic Functions.
-                                                              (line  30)
-* mpz_gcd_ui:                            Number Theoretic Functions.
-                                                              (line  35)
-* mpz_gcdext:                            Number Theoretic Functions.
-                                                              (line  45)
-* mpz_get_d:                             Converting Integers. (line  27)
-* mpz_get_d_2exp:                        Converting Integers. (line  35)
-* mpz_get_si:                            Converting Integers. (line  18)
-* mpz_get_str:                           Converting Integers. (line  46)
-* mpz_get_ui:                            Converting Integers. (line  11)
-* mpz_getlimbn:                          Integer Special Functions.
-                                                              (line  60)
-* mpz_hamdist:                           Integer Logic and Bit Fiddling.
-                                                              (line  29)
-* mpz_import:                            Integer Import and Export.
-                                                              (line  11)
-* mpz_init:                              Initializing Integers.
-                                                              (line  26)
-* mpz_init2:                             Initializing Integers.
-                                                              (line  33)
-* mpz_init_set:                          Simultaneous Integer Init & Assign.
-                                                              (line  27)
-* mpz_init_set_d:                        Simultaneous Integer Init & Assign.
-                                                              (line  30)
-* mpz_init_set_si:                       Simultaneous Integer Init & Assign.
-                                                              (line  29)
-* mpz_init_set_str:                      Simultaneous Integer Init & Assign.
-                                                              (line  34)
-* mpz_init_set_ui:                       Simultaneous Integer Init & Assign.
-                                                              (line  28)
-* mpz_inits:                             Initializing Integers.
-                                                              (line  29)
-* mpz_inp_raw:                           I/O of Integers.     (line  59)
-* mpz_inp_str:                           I/O of Integers.     (line  28)
-* mpz_invert:                            Number Theoretic Functions.
-                                                              (line  60)
-* mpz_ior:                               Integer Logic and Bit Fiddling.
-                                                              (line  14)
-* mpz_jacobi:                            Number Theoretic Functions.
-                                                              (line  66)
-* mpz_kronecker:                         Number Theoretic Functions.
-                                                              (line  74)
-* mpz_kronecker_si:                      Number Theoretic Functions.
-                                                              (line  75)
-* mpz_kronecker_ui:                      Number Theoretic Functions.
-                                                              (line  76)
-* mpz_lcm:                               Number Theoretic Functions.
-                                                              (line  54)
-* mpz_lcm_ui:                            Number Theoretic Functions.
-                                                              (line  55)
-* mpz_legendre:                          Number Theoretic Functions.
-                                                              (line  69)
-* mpz_lucnum2_ui:                        Number Theoretic Functions.
-                                                              (line 119)
-* mpz_lucnum_ui:                         Number Theoretic Functions.
-                                                              (line 117)
-* mpz_mod:                               Integer Division.    (line  91)
-* mpz_mod_ui:                            Integer Division.    (line  93)
-* mpz_mul:                               Integer Arithmetic.  (line  19)
-* mpz_mul_2exp:                          Integer Arithmetic.  (line  35)
-* mpz_mul_si:                            Integer Arithmetic.  (line  20)
-* mpz_mul_ui:                            Integer Arithmetic.  (line  22)
-* mpz_neg:                               Integer Arithmetic.  (line  39)
-* mpz_nextprime:                         Number Theoretic Functions.
-                                                              (line  23)
-* mpz_odd_p:                             Miscellaneous Integer Functions.
-                                                              (line  17)
-* mpz_out_raw:                           I/O of Integers.     (line  43)
-* mpz_out_str:                           I/O of Integers.     (line  16)
-* mpz_perfect_power_p:                   Integer Roots.       (line  27)
-* mpz_perfect_square_p:                  Integer Roots.       (line  36)
-* mpz_popcount:                          Integer Logic and Bit Fiddling.
-                                                              (line  23)
-* mpz_pow_ui:                            Integer Exponentiation.
-                                                              (line  31)
-* mpz_powm:                              Integer Exponentiation.
-                                                              (line   8)
-* mpz_powm_sec:                          Integer Exponentiation.
-                                                              (line  18)
-* mpz_powm_ui:                           Integer Exponentiation.
-                                                              (line  10)
-* mpz_probab_prime_p:                    Number Theoretic Functions.
-                                                              (line   7)
-* mpz_random:                            Integer Random Numbers.
-                                                              (line  42)
-* mpz_random2:                           Integer Random Numbers.
-                                                              (line  51)
-* mpz_realloc2:                          Initializing Integers.
-                                                              (line  52)
-* mpz_remove:                            Number Theoretic Functions.
-                                                              (line  90)
-* mpz_root:                              Integer Roots.       (line   7)
-* mpz_rootrem:                           Integer Roots.       (line  13)
-* mpz_rrandomb:                          Integer Random Numbers.
-                                                              (line  31)
-* mpz_scan0:                             Integer Logic and Bit Fiddling.
-                                                              (line  37)
-* mpz_scan1:                             Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* mpz_set:                               Assigning Integers.  (line  10)
-* mpz_set_d:                             Assigning Integers.  (line  13)
-* mpz_set_f:                             Assigning Integers.  (line  15)
-* mpz_set_q:                             Assigning Integers.  (line  14)
-* mpz_set_si:                            Assigning Integers.  (line  12)
-* mpz_set_str:                           Assigning Integers.  (line  21)
-* mpz_set_ui:                            Assigning Integers.  (line  11)
-* mpz_setbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  51)
-* mpz_sgn:                               Integer Comparisons. (line  28)
-* mpz_si_kronecker:                      Number Theoretic Functions.
-                                                              (line  77)
-* mpz_size:                              Integer Special Functions.
-                                                              (line  68)
-* mpz_sizeinbase:                        Miscellaneous Integer Functions.
-                                                              (line  23)
-* mpz_sqrt:                              Integer Roots.       (line  17)
-* mpz_sqrtrem:                           Integer Roots.       (line  20)
-* mpz_sub:                               Integer Arithmetic.  (line  12)
-* mpz_sub_ui:                            Integer Arithmetic.  (line  14)
-* mpz_submul:                            Integer Arithmetic.  (line  30)
-* mpz_submul_ui:                         Integer Arithmetic.  (line  32)
-* mpz_swap:                              Assigning Integers.  (line  37)
-* mpz_t:                                 Nomenclature and Types.
-                                                              (line   6)
-* mpz_tdiv_q:                            Integer Division.    (line  41)
-* mpz_tdiv_q_2exp:                       Integer Division.    (line  52)
-* mpz_tdiv_q_ui:                         Integer Division.    (line  45)
-* mpz_tdiv_qr:                           Integer Division.    (line  43)
-* mpz_tdiv_qr_ui:                        Integer Division.    (line  49)
-* mpz_tdiv_r:                            Integer Division.    (line  42)
-* mpz_tdiv_r_2exp:                       Integer Division.    (line  53)
-* mpz_tdiv_r_ui:                         Integer Division.    (line  47)
-* mpz_tdiv_ui:                           Integer Division.    (line  51)
-* mpz_tstbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  60)
-* mpz_ui_kronecker:                      Number Theoretic Functions.
-                                                              (line  78)
-* mpz_ui_pow_ui:                         Integer Exponentiation.
-                                                              (line  33)
-* mpz_ui_sub:                            Integer Arithmetic.  (line  16)
-* mpz_urandomb:                          Integer Random Numbers.
-                                                              (line  14)
-* mpz_urandomm:                          Integer Random Numbers.
-                                                              (line  23)
-* mpz_xor:                               Integer Logic and Bit Fiddling.
-                                                              (line  17)
-* msqrt:                                 BSD Compatible Functions.
-                                                              (line  63)
-* msub:                                  BSD Compatible Functions.
-                                                              (line  46)
-* mtox:                                  BSD Compatible Functions.
-                                                              (line  98)
-* mult:                                  BSD Compatible Functions.
-                                                              (line  49)
-* operator%:                             C++ Interface Integers.
-                                                              (line  30)
-* operator/:                             C++ Interface Integers.
-                                                              (line  29)
-* operator<<:                            C++ Formatted Output.
-                                                              (line  20)
-* operator>> <1>:                        C++ Formatted Input. (line  11)
-* operator>>:                            C++ Interface Rationals.
-                                                              (line  77)
-* pow:                                   BSD Compatible Functions.
-                                                              (line  71)
-* rpow:                                  BSD Compatible Functions.
-                                                              (line  79)
-* sdiv:                                  BSD Compatible Functions.
-                                                              (line  55)
-* sgn <1>:                               C++ Interface Rationals.
-                                                              (line  50)
-* sgn <2>:                               C++ Interface Integers.
-                                                              (line  57)
-* sgn:                                   C++ Interface Floats.
-                                                              (line  89)
-* sqrt <1>:                              C++ Interface Integers.
-                                                              (line  58)
-* sqrt:                                  C++ Interface Floats.
-                                                              (line  90)
-* trunc:                                 C++ Interface Floats.
-                                                              (line  91)
-* xtom:                                  BSD Compatible Functions.
-                                                              (line  34)
-
-
diff --git a/misc/builddeps/linux32/jpeg/bin/cjpeg b/misc/builddeps/linux32/jpeg/bin/cjpeg
deleted file mode 100755 (executable)
index 4ff73ae..0000000
Binary files a/misc/builddeps/linux32/jpeg/bin/cjpeg and /dev/null differ
diff --git a/misc/builddeps/linux32/jpeg/bin/djpeg b/misc/builddeps/linux32/jpeg/bin/djpeg
deleted file mode 100755 (executable)
index 536a162..0000000
Binary files a/misc/builddeps/linux32/jpeg/bin/djpeg and /dev/null differ
diff --git a/misc/builddeps/linux32/jpeg/bin/jpegtran b/misc/builddeps/linux32/jpeg/bin/jpegtran
deleted file mode 100755 (executable)
index 0b11f92..0000000
Binary files a/misc/builddeps/linux32/jpeg/bin/jpegtran and /dev/null differ
diff --git a/misc/builddeps/linux32/jpeg/bin/rdjpgcom b/misc/builddeps/linux32/jpeg/bin/rdjpgcom
deleted file mode 100755 (executable)
index 123dd9f..0000000
Binary files a/misc/builddeps/linux32/jpeg/bin/rdjpgcom and /dev/null differ
diff --git a/misc/builddeps/linux32/jpeg/bin/wrjpgcom b/misc/builddeps/linux32/jpeg/bin/wrjpgcom
deleted file mode 100755 (executable)
index 2408dee..0000000
Binary files a/misc/builddeps/linux32/jpeg/bin/wrjpgcom and /dev/null differ
diff --git a/misc/builddeps/linux32/jpeg/include/jconfig.h b/misc/builddeps/linux32/jpeg/include/jconfig.h
deleted file mode 100644 (file)
index 966b1d5..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* jconfig.h.  Generated from jconfig.cfg by configure.  */
-/* jconfig.cfg --- source file edited by configure script */
-/* see jconfig.txt for explanations */
-
-#define HAVE_PROTOTYPES 1
-#define HAVE_UNSIGNED_CHAR 1
-#define HAVE_UNSIGNED_SHORT 1
-/* #undef void */
-/* #undef const */
-/* #undef CHAR_IS_UNSIGNED */
-#define HAVE_STDDEF_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_LOCALE_H 1
-/* #undef NEED_BSD_STRINGS */
-/* #undef NEED_SYS_TYPES_H */
-/* #undef NEED_FAR_POINTERS */
-/* #undef NEED_SHORT_EXTERNAL_NAMES */
-/* Define this if you get warnings about undefined structures. */
-/* #undef INCOMPLETE_TYPES_BROKEN */
-
-/* Define "boolean" as unsigned char, not int, on Windows systems. */
-#ifdef _WIN32
-#ifndef __RPCNDR_H__           /* don't conflict if rpcndr.h already read */
-typedef unsigned char boolean;
-#endif
-#define HAVE_BOOLEAN           /* prevent jmorecfg.h from redefining it */
-#endif
-
-#ifdef JPEG_INTERNALS
-
-/* #undef RIGHT_SHIFT_IS_UNSIGNED */
-#define INLINE __inline__
-/* These are for configuring the JPEG memory manager. */
-/* #undef DEFAULT_MAX_MEM */
-/* #undef NO_MKTEMP */
-
-#endif /* JPEG_INTERNALS */
-
-#ifdef JPEG_CJPEG_DJPEG
-
-#define BMP_SUPPORTED          /* BMP image file format */
-#define GIF_SUPPORTED          /* GIF image file format */
-#define PPM_SUPPORTED          /* PBMPLUS PPM/PGM image file format */
-/* #undef RLE_SUPPORTED */
-#define TARGA_SUPPORTED                /* Targa image file format */
-
-/* #undef TWO_FILE_COMMANDLINE */
-/* #undef NEED_SIGNAL_CATCHER */
-/* #undef DONT_USE_B_MODE */
-
-/* Define this if you want percent-done progress reports from cjpeg/djpeg. */
-/* #undef PROGRESS_REPORT */
-
-#endif /* JPEG_CJPEG_DJPEG */
diff --git a/misc/builddeps/linux32/jpeg/include/jerror.h b/misc/builddeps/linux32/jpeg/include/jerror.h
deleted file mode 100644 (file)
index 1cfb2b1..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * jerror.h
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * Modified 1997-2009 by Guido Vollbeding.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the error and message codes for the JPEG library.
- * Edit this file to add new codes, or to translate the message strings to
- * some other language.
- * A set of error-reporting macros are defined too.  Some applications using
- * the JPEG library may wish to include this file to get the error codes
- * and/or the macros.
- */
-
-/*
- * To define the enum list of message codes, include this file without
- * defining macro JMESSAGE.  To create a message string table, include it
- * again with a suitable JMESSAGE definition (see jerror.c for an example).
- */
-#ifndef JMESSAGE
-#ifndef JERROR_H
-/* First time through, define the enum list */
-#define JMAKE_ENUM_LIST
-#else
-/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
-#define JMESSAGE(code,string)
-#endif /* JERROR_H */
-#endif /* JMESSAGE */
-
-#ifdef JMAKE_ENUM_LIST
-
-typedef enum {
-
-#define JMESSAGE(code,string)  code ,
-
-#endif /* JMAKE_ENUM_LIST */
-
-JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */
-
-/* For maintenance convenience, list is alphabetical by message code name */
-JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
-JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
-JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
-JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS")
-JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request")
-JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range")
-JMESSAGE(JERR_BAD_DCTSIZE, "DCT scaled block size %dx%d not supported")
-JMESSAGE(JERR_BAD_DROP_SAMPLING,
-        "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c")
-JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition")
-JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace")
-JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace")
-JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length")
-JMESSAGE(JERR_BAD_LIB_VERSION,
-        "Wrong JPEG library version: library is %d, caller expects %d")
-JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan")
-JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d")
-JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d")
-JMESSAGE(JERR_BAD_PROGRESSION,
-        "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d")
-JMESSAGE(JERR_BAD_PROG_SCRIPT,
-        "Invalid progressive parameters at scan script entry %d")
-JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors")
-JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d")
-JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d")
-JMESSAGE(JERR_BAD_STRUCT_SIZE,
-        "JPEG parameter struct mismatch: library thinks size is %u, caller expects %u")
-JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access")
-JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small")
-JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here")
-JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet")
-JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d")
-JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request")
-JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d")
-JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x")
-JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d")
-JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d")
-JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)")
-JMESSAGE(JERR_EMS_READ, "Read from EMS failed")
-JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed")
-JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan")
-JMESSAGE(JERR_FILE_READ, "Input file read error")
-JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?")
-JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet")
-JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow")
-JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry")
-JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels")
-JMESSAGE(JERR_INPUT_EMPTY, "Empty input file")
-JMESSAGE(JERR_INPUT_EOF, "Premature end of input file")
-JMESSAGE(JERR_MISMATCHED_QUANT_TABLE,
-        "Cannot transcode due to multiple use of quantization table %d")
-JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data")
-JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change")
-JMESSAGE(JERR_NOTIMPL, "Not implemented yet")
-JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time")
-JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined")
-JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported")
-JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined")
-JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image")
-JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined")
-JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x")
-JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)")
-JMESSAGE(JERR_QUANT_COMPONENTS,
-        "Cannot quantize more than %d color components")
-JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors")
-JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors")
-JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers")
-JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker")
-JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x")
-JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers")
-JMESSAGE(JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF")
-JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s")
-JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file")
-JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file")
-JMESSAGE(JERR_TFILE_WRITE,
-        "Write failed on temporary file --- out of disk space?")
-JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines")
-JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x")
-JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up")
-JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation")
-JMESSAGE(JERR_XMS_READ, "Read from XMS failed")
-JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed")
-JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT)
-JMESSAGE(JMSG_VERSION, JVERSION)
-JMESSAGE(JTRC_16BIT_TABLES,
-        "Caution: quantization tables are too coarse for baseline JPEG")
-JMESSAGE(JTRC_ADOBE,
-        "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d")
-JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u")
-JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u")
-JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x")
-JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x")
-JMESSAGE(JTRC_DQT, "Define Quantization Table %d  precision %d")
-JMESSAGE(JTRC_DRI, "Define Restart Interval %u")
-JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u")
-JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u")
-JMESSAGE(JTRC_EOI, "End Of Image")
-JMESSAGE(JTRC_HUFFBITS, "        %3d %3d %3d %3d %3d %3d %3d %3d")
-JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d  %d")
-JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE,
-        "Warning: thumbnail image size does not match data length %u")
-JMESSAGE(JTRC_JFIF_EXTENSION,
-        "JFIF extension marker: type 0x%02x, length %u")
-JMESSAGE(JTRC_JFIF_THUMBNAIL, "    with %d x %d thumbnail image")
-JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u")
-JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x")
-JMESSAGE(JTRC_QUANTVALS, "        %4u %4u %4u %4u %4u %4u %4u %4u")
-JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors")
-JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors")
-JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization")
-JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d")
-JMESSAGE(JTRC_RST, "RST%d")
-JMESSAGE(JTRC_SMOOTH_NOTIMPL,
-        "Smoothing not supported with nonstandard sampling ratios")
-JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d")
-JMESSAGE(JTRC_SOF_COMPONENT, "    Component %d: %dhx%dv q=%d")
-JMESSAGE(JTRC_SOI, "Start of Image")
-JMESSAGE(JTRC_SOS, "Start Of Scan: %d components")
-JMESSAGE(JTRC_SOS_COMPONENT, "    Component %d: dc=%d ac=%d")
-JMESSAGE(JTRC_SOS_PARAMS, "  Ss=%d, Se=%d, Ah=%d, Al=%d")
-JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s")
-JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s")
-JMESSAGE(JTRC_THUMB_JPEG,
-        "JFIF extension marker: JPEG-compressed thumbnail image, length %u")
-JMESSAGE(JTRC_THUMB_PALETTE,
-        "JFIF extension marker: palette thumbnail image, length %u")
-JMESSAGE(JTRC_THUMB_RGB,
-        "JFIF extension marker: RGB thumbnail image, length %u")
-JMESSAGE(JTRC_UNKNOWN_IDS,
-        "Unrecognized component IDs %d %d %d, assuming YCbCr")
-JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u")
-JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u")
-JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d")
-JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code")
-JMESSAGE(JWRN_BOGUS_PROGRESSION,
-        "Inconsistent progression sequence for component %d coefficient %d")
-JMESSAGE(JWRN_EXTRANEOUS_DATA,
-        "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x")
-JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment")
-JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code")
-JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d")
-JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file")
-JMESSAGE(JWRN_MUST_RESYNC,
-        "Corrupt JPEG data: found marker 0x%02x instead of RST%d")
-JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG")
-JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines")
-
-#ifdef JMAKE_ENUM_LIST
-
-  JMSG_LASTMSGCODE
-} J_MESSAGE_CODE;
-
-#undef JMAKE_ENUM_LIST
-#endif /* JMAKE_ENUM_LIST */
-
-/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
-#undef JMESSAGE
-
-
-#ifndef JERROR_H
-#define JERROR_H
-
-/* Macros to simplify using the error and trace message stuff */
-/* The first parameter is either type of cinfo pointer */
-
-/* Fatal errors (print message and exit) */
-#define ERREXIT(cinfo,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT1(cinfo,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT2(cinfo,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT3(cinfo,code,p1,p2,p3)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT4(cinfo,code,p1,p2,p3,p4)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (cinfo)->err->msg_parm.i[3] = (p4), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT6(cinfo,code,p1,p2,p3,p4,p5,p6)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (cinfo)->err->msg_parm.i[3] = (p4), \
-   (cinfo)->err->msg_parm.i[4] = (p5), \
-   (cinfo)->err->msg_parm.i[5] = (p6), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXITS(cinfo,code,str)  \
-  ((cinfo)->err->msg_code = (code), \
-   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-
-#define MAKESTMT(stuff)                do { stuff } while (0)
-
-/* Nonfatal errors (we can keep going, but the data is probably corrupt) */
-#define WARNMS(cinfo,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-#define WARNMS1(cinfo,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-#define WARNMS2(cinfo,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-
-/* Informational/debugging messages */
-#define TRACEMS(cinfo,lvl,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS1(cinfo,lvl,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS2(cinfo,lvl,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS3(cinfo,lvl,code,p1,p2,p3)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-          _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \
-          (cinfo)->err->msg_code = (code); \
-          (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-          _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-          (cinfo)->err->msg_code = (code); \
-          (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-          _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-          _mp[4] = (p5); \
-          (cinfo)->err->msg_code = (code); \
-          (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-          _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-          _mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \
-          (cinfo)->err->msg_code = (code); \
-          (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMSS(cinfo,lvl,code,str)  \
-  ((cinfo)->err->msg_code = (code), \
-   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-
-#endif /* JERROR_H */
diff --git a/misc/builddeps/linux32/jpeg/include/jmorecfg.h b/misc/builddeps/linux32/jpeg/include/jmorecfg.h
deleted file mode 100644 (file)
index 928d052..0000000
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * jmorecfg.h
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * Modified 1997-2009 by Guido Vollbeding.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains additional configuration options that customize the
- * JPEG software for special applications or support machine-dependent
- * optimizations.  Most users will not need to touch this file.
- */
-
-
-/*
- * Define BITS_IN_JSAMPLE as either
- *   8   for 8-bit sample values (the usual setting)
- *   12  for 12-bit sample values
- * Only 8 and 12 are legal data precisions for lossy JPEG according to the
- * JPEG standard, and the IJG code does not support anything else!
- * We do not support run-time selection of data precision, sorry.
- */
-
-#define BITS_IN_JSAMPLE  8     /* use 8 or 12 */
-
-
-/*
- * Maximum number of components (color channels) allowed in JPEG image.
- * To meet the letter of the JPEG spec, set this to 255.  However, darn
- * few applications need more than 4 channels (maybe 5 for CMYK + alpha
- * mask).  We recommend 10 as a reasonable compromise; use 4 if you are
- * really short on memory.  (Each allowed component costs a hundred or so
- * bytes of storage, whether actually used in an image or not.)
- */
-
-#define MAX_COMPONENTS  10     /* maximum number of image components */
-
-
-/*
- * Basic data types.
- * You may need to change these if you have a machine with unusual data
- * type sizes; for example, "char" not 8 bits, "short" not 16 bits,
- * or "long" not 32 bits.  We don't care whether "int" is 16 or 32 bits,
- * but it had better be at least 16.
- */
-
-/* Representation of a single sample (pixel element value).
- * We frequently allocate large arrays of these, so it's important to keep
- * them small.  But if you have memory to burn and access to char or short
- * arrays is very slow on your hardware, you might want to change these.
- */
-
-#if BITS_IN_JSAMPLE == 8
-/* JSAMPLE should be the smallest type that will hold the values 0..255.
- * You can use a signed char by having GETJSAMPLE mask it with 0xFF.
- */
-
-#ifdef HAVE_UNSIGNED_CHAR
-
-typedef unsigned char JSAMPLE;
-#define GETJSAMPLE(value)  ((int) (value))
-
-#else /* not HAVE_UNSIGNED_CHAR */
-
-typedef char JSAMPLE;
-#ifdef CHAR_IS_UNSIGNED
-#define GETJSAMPLE(value)  ((int) (value))
-#else
-#define GETJSAMPLE(value)  ((int) (value) & 0xFF)
-#endif /* CHAR_IS_UNSIGNED */
-
-#endif /* HAVE_UNSIGNED_CHAR */
-
-#define MAXJSAMPLE     255
-#define CENTERJSAMPLE  128
-
-#endif /* BITS_IN_JSAMPLE == 8 */
-
-
-#if BITS_IN_JSAMPLE == 12
-/* JSAMPLE should be the smallest type that will hold the values 0..4095.
- * On nearly all machines "short" will do nicely.
- */
-
-typedef short JSAMPLE;
-#define GETJSAMPLE(value)  ((int) (value))
-
-#define MAXJSAMPLE     4095
-#define CENTERJSAMPLE  2048
-
-#endif /* BITS_IN_JSAMPLE == 12 */
-
-
-/* Representation of a DCT frequency coefficient.
- * This should be a signed value of at least 16 bits; "short" is usually OK.
- * Again, we allocate large arrays of these, but you can change to int
- * if you have memory to burn and "short" is really slow.
- */
-
-typedef short JCOEF;
-
-
-/* Compressed datastreams are represented as arrays of JOCTET.
- * These must be EXACTLY 8 bits wide, at least once they are written to
- * external storage.  Note that when using the stdio data source/destination
- * managers, this is also the data type passed to fread/fwrite.
- */
-
-#ifdef HAVE_UNSIGNED_CHAR
-
-typedef unsigned char JOCTET;
-#define GETJOCTET(value)  (value)
-
-#else /* not HAVE_UNSIGNED_CHAR */
-
-typedef char JOCTET;
-#ifdef CHAR_IS_UNSIGNED
-#define GETJOCTET(value)  (value)
-#else
-#define GETJOCTET(value)  ((value) & 0xFF)
-#endif /* CHAR_IS_UNSIGNED */
-
-#endif /* HAVE_UNSIGNED_CHAR */
-
-
-/* These typedefs are used for various table entries and so forth.
- * They must be at least as wide as specified; but making them too big
- * won't cost a huge amount of memory, so we don't provide special
- * extraction code like we did for JSAMPLE.  (In other words, these
- * typedefs live at a different point on the speed/space tradeoff curve.)
- */
-
-/* UINT8 must hold at least the values 0..255. */
-
-#ifdef HAVE_UNSIGNED_CHAR
-typedef unsigned char UINT8;
-#else /* not HAVE_UNSIGNED_CHAR */
-#ifdef CHAR_IS_UNSIGNED
-typedef char UINT8;
-#else /* not CHAR_IS_UNSIGNED */
-typedef short UINT8;
-#endif /* CHAR_IS_UNSIGNED */
-#endif /* HAVE_UNSIGNED_CHAR */
-
-/* UINT16 must hold at least the values 0..65535. */
-
-#ifdef HAVE_UNSIGNED_SHORT
-typedef unsigned short UINT16;
-#else /* not HAVE_UNSIGNED_SHORT */
-typedef unsigned int UINT16;
-#endif /* HAVE_UNSIGNED_SHORT */
-
-/* INT16 must hold at least the values -32768..32767. */
-
-#ifndef XMD_H                  /* X11/xmd.h correctly defines INT16 */
-typedef short INT16;
-#endif
-
-/* INT32 must hold at least signed 32-bit values. */
-
-#ifndef XMD_H                  /* X11/xmd.h correctly defines INT32 */
-#ifndef _BASETSD_H_            /* Microsoft defines it in basetsd.h */
-#ifndef _BASETSD_H             /* MinGW is slightly different */
-#ifndef QGLOBAL_H              /* Qt defines it in qglobal.h */
-typedef long INT32;
-#endif
-#endif
-#endif
-#endif
-
-/* Datatype used for image dimensions.  The JPEG standard only supports
- * images up to 64K*64K due to 16-bit fields in SOF markers.  Therefore
- * "unsigned int" is sufficient on all machines.  However, if you need to
- * handle larger images and you don't mind deviating from the spec, you
- * can change this datatype.
- */
-
-typedef unsigned int JDIMENSION;
-
-#define JPEG_MAX_DIMENSION  65500L  /* a tad under 64K to prevent overflows */
-
-
-/* These macros are used in all function definitions and extern declarations.
- * You could modify them if you need to change function linkage conventions;
- * in particular, you'll need to do that to make the library a Windows DLL.
- * Another application is to make all functions global for use with debuggers
- * or code profilers that require it.
- */
-
-/* a function called through method pointers: */
-#define METHODDEF(type)                static type
-/* a function used only in its module: */
-#define LOCAL(type)            static type
-/* a function referenced thru EXTERNs: */
-#define GLOBAL(type)           type
-/* a reference to a GLOBAL function: */
-#define EXTERN(type)           extern type
-
-
-/* This macro is used to declare a "method", that is, a function pointer.
- * We want to supply prototype parameters if the compiler can cope.
- * Note that the arglist parameter must be parenthesized!
- * Again, you can customize this if you need special linkage keywords.
- */
-
-#ifdef HAVE_PROTOTYPES
-#define JMETHOD(type,methodname,arglist)  type (*methodname) arglist
-#else
-#define JMETHOD(type,methodname,arglist)  type (*methodname) ()
-#endif
-
-
-/* Here is the pseudo-keyword for declaring pointers that must be "far"
- * on 80x86 machines.  Most of the specialized coding for 80x86 is handled
- * by just saying "FAR *" where such a pointer is needed.  In a few places
- * explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol.
- */
-
-#ifndef FAR
-#ifdef NEED_FAR_POINTERS
-#define FAR  far
-#else
-#define FAR
-#endif
-#endif
-
-
-/*
- * On a few systems, type boolean and/or its values FALSE, TRUE may appear
- * in standard header files.  Or you may have conflicts with application-
- * specific header files that you want to include together with these files.
- * Defining HAVE_BOOLEAN before including jpeglib.h should make it work.
- */
-
-#ifndef HAVE_BOOLEAN
-typedef int boolean;
-#endif
-#ifndef FALSE                  /* in case these macros already exist */
-#define FALSE  0               /* values of boolean */
-#endif
-#ifndef TRUE
-#define TRUE   1
-#endif
-
-
-/*
- * The remaining options affect code selection within the JPEG library,
- * but they don't need to be visible to most applications using the library.
- * To minimize application namespace pollution, the symbols won't be
- * defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined.
- */
-
-#ifdef JPEG_INTERNALS
-#define JPEG_INTERNAL_OPTIONS
-#endif
-
-#ifdef JPEG_INTERNAL_OPTIONS
-
-
-/*
- * These defines indicate whether to include various optional functions.
- * Undefining some of these symbols will produce a smaller but less capable
- * library.  Note that you can leave certain source files out of the
- * compilation/linking process if you've #undef'd the corresponding symbols.
- * (You may HAVE to do that if your compiler doesn't like null source files.)
- */
-
-/* Capability options common to encoder and decoder: */
-
-#define DCT_ISLOW_SUPPORTED    /* slow but accurate integer algorithm */
-#define DCT_IFAST_SUPPORTED    /* faster, less accurate integer method */
-#define DCT_FLOAT_SUPPORTED    /* floating-point: accurate, fast on fast HW */
-
-/* Encoder capability options: */
-
-#define C_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
-#define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
-#define C_PROGRESSIVE_SUPPORTED            /* Progressive JPEG? (Requires MULTISCAN)*/
-#define DCT_SCALING_SUPPORTED      /* Input rescaling via DCT? (Requires DCT_ISLOW)*/
-#define ENTROPY_OPT_SUPPORTED      /* Optimization of entropy coding parms? */
-/* Note: if you selected 12-bit data precision, it is dangerous to turn off
- * ENTROPY_OPT_SUPPORTED.  The standard Huffman tables are only good for 8-bit
- * precision, so jchuff.c normally uses entropy optimization to compute
- * usable tables for higher precision.  If you don't want to do optimization,
- * you'll have to supply different default Huffman tables.
- * The exact same statements apply for progressive JPEG: the default tables
- * don't work for progressive mode.  (This may get fixed, however.)
- */
-#define INPUT_SMOOTHING_SUPPORTED   /* Input image smoothing option? */
-
-/* Decoder capability options: */
-
-#define D_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
-#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
-#define D_PROGRESSIVE_SUPPORTED            /* Progressive JPEG? (Requires MULTISCAN)*/
-#define IDCT_SCALING_SUPPORTED     /* Output rescaling via IDCT? */
-#define SAVE_MARKERS_SUPPORTED     /* jpeg_save_markers() needed? */
-#define BLOCK_SMOOTHING_SUPPORTED   /* Block smoothing? (Progressive only) */
-#undef  UPSAMPLE_SCALING_SUPPORTED  /* Output rescaling at upsample stage? */
-#define UPSAMPLE_MERGING_SUPPORTED  /* Fast path for sloppy upsampling? */
-#define QUANT_1PASS_SUPPORTED      /* 1-pass color quantization? */
-#define QUANT_2PASS_SUPPORTED      /* 2-pass color quantization? */
-
-/* more capability options later, no doubt */
-
-
-/*
- * Ordering of RGB data in scanlines passed to or from the application.
- * If your application wants to deal with data in the order B,G,R, just
- * change these macros.  You can also deal with formats such as R,G,B,X
- * (one extra byte per pixel) by changing RGB_PIXELSIZE.  Note that changing
- * the offsets will also change the order in which colormap data is organized.
- * RESTRICTIONS:
- * 1. The sample applications cjpeg,djpeg do NOT support modified RGB formats.
- * 2. These macros only affect RGB<=>YCbCr color conversion, so they are not
- *    useful if you are using JPEG color spaces other than YCbCr or grayscale.
- * 3. The color quantizer modules will not behave desirably if RGB_PIXELSIZE
- *    is not 3 (they don't understand about dummy color components!).  So you
- *    can't use color quantization if you change that value.
- */
-
-#define RGB_RED                0       /* Offset of Red in an RGB scanline element */
-#define RGB_GREEN      1       /* Offset of Green */
-#define RGB_BLUE       2       /* Offset of Blue */
-#define RGB_PIXELSIZE  3       /* JSAMPLEs per RGB scanline element */
-
-
-/* Definitions for speed-related optimizations. */
-
-
-/* If your compiler supports inline functions, define INLINE
- * as the inline keyword; otherwise define it as empty.
- */
-
-#ifndef INLINE
-#ifdef __GNUC__                        /* for instance, GNU C knows about inline */
-#define INLINE __inline__
-#endif
-#ifndef INLINE
-#define INLINE                 /* default is to define it as empty */
-#endif
-#endif
-
-
-/* On some machines (notably 68000 series) "int" is 32 bits, but multiplying
- * two 16-bit shorts is faster than multiplying two ints.  Define MULTIPLIER
- * as short on such a machine.  MULTIPLIER must be at least 16 bits wide.
- */
-
-#ifndef MULTIPLIER
-#define MULTIPLIER  int                /* type for fastest integer multiply */
-#endif
-
-
-/* FAST_FLOAT should be either float or double, whichever is done faster
- * by your compiler.  (Note that this type is only used in the floating point
- * DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.)
- * Typically, float is faster in ANSI C compilers, while double is faster in
- * pre-ANSI compilers (because they insist on converting to double anyway).
- * The code below therefore chooses float if we have ANSI-style prototypes.
- */
-
-#ifndef FAST_FLOAT
-#ifdef HAVE_PROTOTYPES
-#define FAST_FLOAT  float
-#else
-#define FAST_FLOAT  double
-#endif
-#endif
-
-#endif /* JPEG_INTERNAL_OPTIONS */
diff --git a/misc/builddeps/linux32/jpeg/include/jpeglib.h b/misc/builddeps/linux32/jpeg/include/jpeglib.h
deleted file mode 100644 (file)
index 5039d4b..0000000
+++ /dev/null
@@ -1,1158 +0,0 @@
-/*
- * jpeglib.h
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * Modified 2002-2009 by Guido Vollbeding.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the application interface for the JPEG library.
- * Most applications using the library need only include this file,
- * and perhaps jerror.h if they want to know the exact error codes.
- */
-
-#ifndef JPEGLIB_H
-#define JPEGLIB_H
-
-/*
- * First we include the configuration files that record how this
- * installation of the JPEG library is set up.  jconfig.h can be
- * generated automatically for many systems.  jmorecfg.h contains
- * manual configuration options that most people need not worry about.
- */
-
-#ifndef JCONFIG_INCLUDED       /* in case jinclude.h already did */
-#include "jconfig.h"           /* widely used configuration options */
-#endif
-#include "jmorecfg.h"          /* seldom changed options */
-
-
-#ifdef __cplusplus
-#ifndef DONT_USE_EXTERN_C
-extern "C" {
-#endif
-#endif
-
-/* Version ID for the JPEG library.
- * Might be useful for tests like "#if JPEG_LIB_VERSION >= 80".
- */
-
-#define JPEG_LIB_VERSION  80   /* Version 8.0 */
-
-
-/* Various constants determining the sizes of things.
- * All of these are specified by the JPEG standard, so don't change them
- * if you want to be compatible.
- */
-
-#define DCTSIZE                    8   /* The basic DCT block is 8x8 samples */
-#define DCTSIZE2           64  /* DCTSIZE squared; # of elements in a block */
-#define NUM_QUANT_TBLS      4  /* Quantization tables are numbered 0..3 */
-#define NUM_HUFF_TBLS       4  /* Huffman tables are numbered 0..3 */
-#define NUM_ARITH_TBLS      16 /* Arith-coding tables are numbered 0..15 */
-#define MAX_COMPS_IN_SCAN   4  /* JPEG limit on # of components in one scan */
-#define MAX_SAMP_FACTOR     4  /* JPEG limit on sampling factors */
-/* Unfortunately, some bozo at Adobe saw no reason to be bound by the standard;
- * the PostScript DCT filter can emit files with many more than 10 blocks/MCU.
- * If you happen to run across such a file, you can up D_MAX_BLOCKS_IN_MCU
- * to handle it.  We even let you do this from the jconfig.h file.  However,
- * we strongly discourage changing C_MAX_BLOCKS_IN_MCU; just because Adobe
- * sometimes emits noncompliant files doesn't mean you should too.
- */
-#define C_MAX_BLOCKS_IN_MCU   10 /* compressor's limit on blocks per MCU */
-#ifndef D_MAX_BLOCKS_IN_MCU
-#define D_MAX_BLOCKS_IN_MCU   10 /* decompressor's limit on blocks per MCU */
-#endif
-
-
-/* Data structures for images (arrays of samples and of DCT coefficients).
- * On 80x86 machines, the image arrays are too big for near pointers,
- * but the pointer arrays can fit in near memory.
- */
-
-typedef JSAMPLE FAR *JSAMPROW; /* ptr to one image row of pixel samples. */
-typedef JSAMPROW *JSAMPARRAY;  /* ptr to some rows (a 2-D sample array) */
-typedef JSAMPARRAY *JSAMPIMAGE;        /* a 3-D sample array: top index is color */
-
-typedef JCOEF JBLOCK[DCTSIZE2];        /* one block of coefficients */
-typedef JBLOCK FAR *JBLOCKROW; /* pointer to one row of coefficient blocks */
-typedef JBLOCKROW *JBLOCKARRAY;                /* a 2-D array of coefficient blocks */
-typedef JBLOCKARRAY *JBLOCKIMAGE;      /* a 3-D array of coefficient blocks */
-
-typedef JCOEF FAR *JCOEFPTR;   /* useful in a couple of places */
-
-
-/* Types for JPEG compression parameters and working tables. */
-
-
-/* DCT coefficient quantization tables. */
-
-typedef struct {
-  /* This array gives the coefficient quantizers in natural array order
-   * (not the zigzag order in which they are stored in a JPEG DQT marker).
-   * CAUTION: IJG versions prior to v6a kept this array in zigzag order.
-   */
-  UINT16 quantval[DCTSIZE2];   /* quantization step for each coefficient */
-  /* This field is used only during compression.  It's initialized FALSE when
-   * the table is created, and set TRUE when it's been output to the file.
-   * You could suppress output of a table by setting this to TRUE.
-   * (See jpeg_suppress_tables for an example.)
-   */
-  boolean sent_table;          /* TRUE when table has been output */
-} JQUANT_TBL;
-
-
-/* Huffman coding tables. */
-
-typedef struct {
-  /* These two fields directly represent the contents of a JPEG DHT marker */
-  UINT8 bits[17];              /* bits[k] = # of symbols with codes of */
-                               /* length k bits; bits[0] is unused */
-  UINT8 huffval[256];          /* The symbols, in order of incr code length */
-  /* This field is used only during compression.  It's initialized FALSE when
-   * the table is created, and set TRUE when it's been output to the file.
-   * You could suppress output of a table by setting this to TRUE.
-   * (See jpeg_suppress_tables for an example.)
-   */
-  boolean sent_table;          /* TRUE when table has been output */
-} JHUFF_TBL;
-
-
-/* Basic info about one component (color channel). */
-
-typedef struct {
-  /* These values are fixed over the whole image. */
-  /* For compression, they must be supplied by parameter setup; */
-  /* for decompression, they are read from the SOF marker. */
-  int component_id;            /* identifier for this component (0..255) */
-  int component_index;         /* its index in SOF or cinfo->comp_info[] */
-  int h_samp_factor;           /* horizontal sampling factor (1..4) */
-  int v_samp_factor;           /* vertical sampling factor (1..4) */
-  int quant_tbl_no;            /* quantization table selector (0..3) */
-  /* These values may vary between scans. */
-  /* For compression, they must be supplied by parameter setup; */
-  /* for decompression, they are read from the SOS marker. */
-  /* The decompressor output side may not use these variables. */
-  int dc_tbl_no;               /* DC entropy table selector (0..3) */
-  int ac_tbl_no;               /* AC entropy table selector (0..3) */
-  
-  /* Remaining fields should be treated as private by applications. */
-  
-  /* These values are computed during compression or decompression startup: */
-  /* Component's size in DCT blocks.
-   * Any dummy blocks added to complete an MCU are not counted; therefore
-   * these values do not depend on whether a scan is interleaved or not.
-   */
-  JDIMENSION width_in_blocks;
-  JDIMENSION height_in_blocks;
-  /* Size of a DCT block in samples,
-   * reflecting any scaling we choose to apply during the DCT step.
-   * Values from 1 to 16 are supported.
-   * Note that different components may receive different DCT scalings.
-   */
-  int DCT_h_scaled_size;
-  int DCT_v_scaled_size;
-  /* The downsampled dimensions are the component's actual, unpadded number
-   * of samples at the main buffer (preprocessing/compression interface);
-   * DCT scaling is included, so
-   * downsampled_width = ceil(image_width * Hi/Hmax * DCT_h_scaled_size/DCTSIZE)
-   * and similarly for height.
-   */
-  JDIMENSION downsampled_width;         /* actual width in samples */
-  JDIMENSION downsampled_height; /* actual height in samples */
-  /* This flag is used only for decompression.  In cases where some of the
-   * components will be ignored (eg grayscale output from YCbCr image),
-   * we can skip most computations for the unused components.
-   */
-  boolean component_needed;    /* do we need the value of this component? */
-
-  /* These values are computed before starting a scan of the component. */
-  /* The decompressor output side may not use these variables. */
-  int MCU_width;               /* number of blocks per MCU, horizontally */
-  int MCU_height;              /* number of blocks per MCU, vertically */
-  int MCU_blocks;              /* MCU_width * MCU_height */
-  int MCU_sample_width;        /* MCU width in samples: MCU_width * DCT_h_scaled_size */
-  int last_col_width;          /* # of non-dummy blocks across in last MCU */
-  int last_row_height;         /* # of non-dummy blocks down in last MCU */
-
-  /* Saved quantization table for component; NULL if none yet saved.
-   * See jdinput.c comments about the need for this information.
-   * This field is currently used only for decompression.
-   */
-  JQUANT_TBL * quant_table;
-
-  /* Private per-component storage for DCT or IDCT subsystem. */
-  void * dct_table;
-} jpeg_component_info;
-
-
-/* The script for encoding a multiple-scan file is an array of these: */
-
-typedef struct {
-  int comps_in_scan;           /* number of components encoded in this scan */
-  int component_index[MAX_COMPS_IN_SCAN]; /* their SOF/comp_info[] indexes */
-  int Ss, Se;                  /* progressive JPEG spectral selection parms */
-  int Ah, Al;                  /* progressive JPEG successive approx. parms */
-} jpeg_scan_info;
-
-/* The decompressor can save APPn and COM markers in a list of these: */
-
-typedef struct jpeg_marker_struct FAR * jpeg_saved_marker_ptr;
-
-struct jpeg_marker_struct {
-  jpeg_saved_marker_ptr next;  /* next in list, or NULL */
-  UINT8 marker;                        /* marker code: JPEG_COM, or JPEG_APP0+n */
-  unsigned int original_length;        /* # bytes of data in the file */
-  unsigned int data_length;    /* # bytes of data saved at data[] */
-  JOCTET FAR * data;           /* the data contained in the marker */
-  /* the marker length word is not counted in data_length or original_length */
-};
-
-/* Known color spaces. */
-
-typedef enum {
-       JCS_UNKNOWN,            /* error/unspecified */
-       JCS_GRAYSCALE,          /* monochrome */
-       JCS_RGB,                /* red/green/blue */
-       JCS_YCbCr,              /* Y/Cb/Cr (also known as YUV) */
-       JCS_CMYK,               /* C/M/Y/K */
-       JCS_YCCK                /* Y/Cb/Cr/K */
-} J_COLOR_SPACE;
-
-/* DCT/IDCT algorithm options. */
-
-typedef enum {
-       JDCT_ISLOW,             /* slow but accurate integer algorithm */
-       JDCT_IFAST,             /* faster, less accurate integer method */
-       JDCT_FLOAT              /* floating-point: accurate, fast on fast HW */
-} J_DCT_METHOD;
-
-#ifndef JDCT_DEFAULT           /* may be overridden in jconfig.h */
-#define JDCT_DEFAULT  JDCT_ISLOW
-#endif
-#ifndef JDCT_FASTEST           /* may be overridden in jconfig.h */
-#define JDCT_FASTEST  JDCT_IFAST
-#endif
-
-/* Dithering options for decompression. */
-
-typedef enum {
-       JDITHER_NONE,           /* no dithering */
-       JDITHER_ORDERED,        /* simple ordered dither */
-       JDITHER_FS              /* Floyd-Steinberg error diffusion dither */
-} J_DITHER_MODE;
-
-
-/* Common fields between JPEG compression and decompression master structs. */
-
-#define jpeg_common_fields \
-  struct jpeg_error_mgr * err; /* Error handler module */\
-  struct jpeg_memory_mgr * mem;        /* Memory manager module */\
-  struct jpeg_progress_mgr * progress; /* Progress monitor, or NULL if none */\
-  void * client_data;          /* Available for use by application */\
-  boolean is_decompressor;     /* So common code can tell which is which */\
-  int global_state             /* For checking call sequence validity */
-
-/* Routines that are to be used by both halves of the library are declared
- * to receive a pointer to this structure.  There are no actual instances of
- * jpeg_common_struct, only of jpeg_compress_struct and jpeg_decompress_struct.
- */
-struct jpeg_common_struct {
-  jpeg_common_fields;          /* Fields common to both master struct types */
-  /* Additional fields follow in an actual jpeg_compress_struct or
-   * jpeg_decompress_struct.  All three structs must agree on these
-   * initial fields!  (This would be a lot cleaner in C++.)
-   */
-};
-
-typedef struct jpeg_common_struct * j_common_ptr;
-typedef struct jpeg_compress_struct * j_compress_ptr;
-typedef struct jpeg_decompress_struct * j_decompress_ptr;
-
-
-/* Master record for a compression instance */
-
-struct jpeg_compress_struct {
-  jpeg_common_fields;          /* Fields shared with jpeg_decompress_struct */
-
-  /* Destination for compressed data */
-  struct jpeg_destination_mgr * dest;
-
-  /* Description of source image --- these fields must be filled in by
-   * outer application before starting compression.  in_color_space must
-   * be correct before you can even call jpeg_set_defaults().
-   */
-
-  JDIMENSION image_width;      /* input image width */
-  JDIMENSION image_height;     /* input image height */
-  int input_components;                /* # of color components in input image */
-  J_COLOR_SPACE in_color_space;        /* colorspace of input image */
-
-  double input_gamma;          /* image gamma of input image */
-
-  /* Compression parameters --- these fields must be set before calling
-   * jpeg_start_compress().  We recommend calling jpeg_set_defaults() to
-   * initialize everything to reasonable defaults, then changing anything
-   * the application specifically wants to change.  That way you won't get
-   * burnt when new parameters are added.  Also note that there are several
-   * helper routines to simplify changing parameters.
-   */
-
-  unsigned int scale_num, scale_denom; /* fraction by which to scale image */
-
-  JDIMENSION jpeg_width;       /* scaled JPEG image width */
-  JDIMENSION jpeg_height;      /* scaled JPEG image height */
-  /* Dimensions of actual JPEG image that will be written to file,
-   * derived from input dimensions by scaling factors above.
-   * These fields are computed by jpeg_start_compress().
-   * You can also use jpeg_calc_jpeg_dimensions() to determine these values
-   * in advance of calling jpeg_start_compress().
-   */
-
-  int data_precision;          /* bits of precision in image data */
-
-  int num_components;          /* # of color components in JPEG image */
-  J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
-
-  jpeg_component_info * comp_info;
-  /* comp_info[i] describes component that appears i'th in SOF */
-
-  JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
-  int q_scale_factor[NUM_QUANT_TBLS];
-  /* ptrs to coefficient quantization tables, or NULL if not defined,
-   * and corresponding scale factors (percentage, initialized 100).
-   */
-
-  JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  /* ptrs to Huffman coding tables, or NULL if not defined */
-
-  UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
-  UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
-  UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
-
-  int num_scans;               /* # of entries in scan_info array */
-  const jpeg_scan_info * scan_info; /* script for multi-scan file, or NULL */
-  /* The default value of scan_info is NULL, which causes a single-scan
-   * sequential JPEG file to be emitted.  To create a multi-scan file,
-   * set num_scans and scan_info to point to an array of scan definitions.
-   */
-
-  boolean raw_data_in;         /* TRUE=caller supplies downsampled data */
-  boolean arith_code;          /* TRUE=arithmetic coding, FALSE=Huffman */
-  boolean optimize_coding;     /* TRUE=optimize entropy encoding parms */
-  boolean CCIR601_sampling;    /* TRUE=first samples are cosited */
-  boolean do_fancy_downsampling; /* TRUE=apply fancy downsampling */
-  int smoothing_factor;                /* 1..100, or 0 for no input smoothing */
-  J_DCT_METHOD dct_method;     /* DCT algorithm selector */
-
-  /* The restart interval can be specified in absolute MCUs by setting
-   * restart_interval, or in MCU rows by setting restart_in_rows
-   * (in which case the correct restart_interval will be figured
-   * for each scan).
-   */
-  unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */
-  int restart_in_rows;         /* if > 0, MCU rows per restart interval */
-
-  /* Parameters controlling emission of special markers. */
-
-  boolean write_JFIF_header;   /* should a JFIF marker be written? */
-  UINT8 JFIF_major_version;    /* What to write for the JFIF version number */
-  UINT8 JFIF_minor_version;
-  /* These three values are not used by the JPEG code, merely copied */
-  /* into the JFIF APP0 marker.  density_unit can be 0 for unknown, */
-  /* 1 for dots/inch, or 2 for dots/cm.  Note that the pixel aspect */
-  /* ratio is defined by X_density/Y_density even when density_unit=0. */
-  UINT8 density_unit;          /* JFIF code for pixel size units */
-  UINT16 X_density;            /* Horizontal pixel density */
-  UINT16 Y_density;            /* Vertical pixel density */
-  boolean write_Adobe_marker;  /* should an Adobe marker be written? */
-  
-  /* State variable: index of next scanline to be written to
-   * jpeg_write_scanlines().  Application may use this to control its
-   * processing loop, e.g., "while (next_scanline < image_height)".
-   */
-
-  JDIMENSION next_scanline;    /* 0 .. image_height-1  */
-
-  /* Remaining fields are known throughout compressor, but generally
-   * should not be touched by a surrounding application.
-   */
-
-  /*
-   * These fields are computed during compression startup
-   */
-  boolean progressive_mode;    /* TRUE if scan script uses progressive mode */
-  int max_h_samp_factor;       /* largest h_samp_factor */
-  int max_v_samp_factor;       /* largest v_samp_factor */
-
-  int min_DCT_h_scaled_size;   /* smallest DCT_h_scaled_size of any component */
-  int min_DCT_v_scaled_size;   /* smallest DCT_v_scaled_size of any component */
-
-  JDIMENSION total_iMCU_rows;  /* # of iMCU rows to be input to coef ctlr */
-  /* The coefficient controller receives data in units of MCU rows as defined
-   * for fully interleaved scans (whether the JPEG file is interleaved or not).
-   * There are v_samp_factor * DCTSIZE sample rows of each component in an
-   * "iMCU" (interleaved MCU) row.
-   */
-  
-  /*
-   * These fields are valid during any one scan.
-   * They describe the components and MCUs actually appearing in the scan.
-   */
-  int comps_in_scan;           /* # of JPEG components in this scan */
-  jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
-  /* *cur_comp_info[i] describes component that appears i'th in SOS */
-  
-  JDIMENSION MCUs_per_row;     /* # of MCUs across the image */
-  JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */
-  
-  int blocks_in_MCU;           /* # of DCT blocks per MCU */
-  int MCU_membership[C_MAX_BLOCKS_IN_MCU];
-  /* MCU_membership[i] is index in cur_comp_info of component owning */
-  /* i'th block in an MCU */
-
-  int Ss, Se, Ah, Al;          /* progressive JPEG parameters for scan */
-
-  int block_size;              /* the basic DCT block size: 1..16 */
-  const int * natural_order;   /* natural-order position array */
-  int lim_Se;                  /* min( Se, DCTSIZE2-1 ) */
-
-  /*
-   * Links to compression subobjects (methods and private variables of modules)
-   */
-  struct jpeg_comp_master * master;
-  struct jpeg_c_main_controller * main;
-  struct jpeg_c_prep_controller * prep;
-  struct jpeg_c_coef_controller * coef;
-  struct jpeg_marker_writer * marker;
-  struct jpeg_color_converter * cconvert;
-  struct jpeg_downsampler * downsample;
-  struct jpeg_forward_dct * fdct;
-  struct jpeg_entropy_encoder * entropy;
-  jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */
-  int script_space_size;
-};
-
-
-/* Master record for a decompression instance */
-
-struct jpeg_decompress_struct {
-  jpeg_common_fields;          /* Fields shared with jpeg_compress_struct */
-
-  /* Source of compressed data */
-  struct jpeg_source_mgr * src;
-
-  /* Basic description of image --- filled in by jpeg_read_header(). */
-  /* Application may inspect these values to decide how to process image. */
-
-  JDIMENSION image_width;      /* nominal image width (from SOF marker) */
-  JDIMENSION image_height;     /* nominal image height */
-  int num_components;          /* # of color components in JPEG image */
-  J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
-
-  /* Decompression processing parameters --- these fields must be set before
-   * calling jpeg_start_decompress().  Note that jpeg_read_header() initializes
-   * them to default values.
-   */
-
-  J_COLOR_SPACE out_color_space; /* colorspace for output */
-
-  unsigned int scale_num, scale_denom; /* fraction by which to scale image */
-
-  double output_gamma;         /* image gamma wanted in output */
-
-  boolean buffered_image;      /* TRUE=multiple output passes */
-  boolean raw_data_out;                /* TRUE=downsampled data wanted */
-
-  J_DCT_METHOD dct_method;     /* IDCT algorithm selector */
-  boolean do_fancy_upsampling; /* TRUE=apply fancy upsampling */
-  boolean do_block_smoothing;  /* TRUE=apply interblock smoothing */
-
-  boolean quantize_colors;     /* TRUE=colormapped output wanted */
-  /* the following are ignored if not quantize_colors: */
-  J_DITHER_MODE dither_mode;   /* type of color dithering to use */
-  boolean two_pass_quantize;   /* TRUE=use two-pass color quantization */
-  int desired_number_of_colors;        /* max # colors to use in created colormap */
-  /* these are significant only in buffered-image mode: */
-  boolean enable_1pass_quant;  /* enable future use of 1-pass quantizer */
-  boolean enable_external_quant;/* enable future use of external colormap */
-  boolean enable_2pass_quant;  /* enable future use of 2-pass quantizer */
-
-  /* Description of actual output image that will be returned to application.
-   * These fields are computed by jpeg_start_decompress().
-   * You can also use jpeg_calc_output_dimensions() to determine these values
-   * in advance of calling jpeg_start_decompress().
-   */
-
-  JDIMENSION output_width;     /* scaled image width */
-  JDIMENSION output_height;    /* scaled image height */
-  int out_color_components;    /* # of color components in out_color_space */
-  int output_components;       /* # of color components returned */
-  /* output_components is 1 (a colormap index) when quantizing colors;
-   * otherwise it equals out_color_components.
-   */
-  int rec_outbuf_height;       /* min recommended height of scanline buffer */
-  /* If the buffer passed to jpeg_read_scanlines() is less than this many rows
-   * high, space and time will be wasted due to unnecessary data copying.
-   * Usually rec_outbuf_height will be 1 or 2, at most 4.
-   */
-
-  /* When quantizing colors, the output colormap is described by these fields.
-   * The application can supply a colormap by setting colormap non-NULL before
-   * calling jpeg_start_decompress; otherwise a colormap is created during
-   * jpeg_start_decompress or jpeg_start_output.
-   * The map has out_color_components rows and actual_number_of_colors columns.
-   */
-  int actual_number_of_colors; /* number of entries in use */
-  JSAMPARRAY colormap;         /* The color map as a 2-D pixel array */
-
-  /* State variables: these variables indicate the progress of decompression.
-   * The application may examine these but must not modify them.
-   */
-
-  /* Row index of next scanline to be read from jpeg_read_scanlines().
-   * Application may use this to control its processing loop, e.g.,
-   * "while (output_scanline < output_height)".
-   */
-  JDIMENSION output_scanline;  /* 0 .. output_height-1  */
-
-  /* Current input scan number and number of iMCU rows completed in scan.
-   * These indicate the progress of the decompressor input side.
-   */
-  int input_scan_number;       /* Number of SOS markers seen so far */
-  JDIMENSION input_iMCU_row;   /* Number of iMCU rows completed */
-
-  /* The "output scan number" is the notional scan being displayed by the
-   * output side.  The decompressor will not allow output scan/row number
-   * to get ahead of input scan/row, but it can fall arbitrarily far behind.
-   */
-  int output_scan_number;      /* Nominal scan number being displayed */
-  JDIMENSION output_iMCU_row;  /* Number of iMCU rows read */
-
-  /* Current progression status.  coef_bits[c][i] indicates the precision
-   * with which component c's DCT coefficient i (in zigzag order) is known.
-   * It is -1 when no data has yet been received, otherwise it is the point
-   * transform (shift) value for the most recent scan of the coefficient
-   * (thus, 0 at completion of the progression).
-   * This pointer is NULL when reading a non-progressive file.
-   */
-  int (*coef_bits)[DCTSIZE2];  /* -1 or current Al value for each coef */
-
-  /* Internal JPEG parameters --- the application usually need not look at
-   * these fields.  Note that the decompressor output side may not use
-   * any parameters that can change between scans.
-   */
-
-  /* Quantization and Huffman tables are carried forward across input
-   * datastreams when processing abbreviated JPEG datastreams.
-   */
-
-  JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
-  /* ptrs to coefficient quantization tables, or NULL if not defined */
-
-  JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  /* ptrs to Huffman coding tables, or NULL if not defined */
-
-  /* These parameters are never carried across datastreams, since they
-   * are given in SOF/SOS markers or defined to be reset by SOI.
-   */
-
-  int data_precision;          /* bits of precision in image data */
-
-  jpeg_component_info * comp_info;
-  /* comp_info[i] describes component that appears i'th in SOF */
-
-  boolean is_baseline;         /* TRUE if Baseline SOF0 encountered */
-  boolean progressive_mode;    /* TRUE if SOFn specifies progressive mode */
-  boolean arith_code;          /* TRUE=arithmetic coding, FALSE=Huffman */
-
-  UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
-  UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
-  UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
-
-  unsigned int restart_interval; /* MCUs per restart interval, or 0 for no restart */
-
-  /* These fields record data obtained from optional markers recognized by
-   * the JPEG library.
-   */
-  boolean saw_JFIF_marker;     /* TRUE iff a JFIF APP0 marker was found */
-  /* Data copied from JFIF marker; only valid if saw_JFIF_marker is TRUE: */
-  UINT8 JFIF_major_version;    /* JFIF version number */
-  UINT8 JFIF_minor_version;
-  UINT8 density_unit;          /* JFIF code for pixel size units */
-  UINT16 X_density;            /* Horizontal pixel density */
-  UINT16 Y_density;            /* Vertical pixel density */
-  boolean saw_Adobe_marker;    /* TRUE iff an Adobe APP14 marker was found */
-  UINT8 Adobe_transform;       /* Color transform code from Adobe marker */
-
-  boolean CCIR601_sampling;    /* TRUE=first samples are cosited */
-
-  /* Aside from the specific data retained from APPn markers known to the
-   * library, the uninterpreted contents of any or all APPn and COM markers
-   * can be saved in a list for examination by the application.
-   */
-  jpeg_saved_marker_ptr marker_list; /* Head of list of saved markers */
-
-  /* Remaining fields are known throughout decompressor, but generally
-   * should not be touched by a surrounding application.
-   */
-
-  /*
-   * These fields are computed during decompression startup
-   */
-  int max_h_samp_factor;       /* largest h_samp_factor */
-  int max_v_samp_factor;       /* largest v_samp_factor */
-
-  int min_DCT_h_scaled_size;   /* smallest DCT_h_scaled_size of any component */
-  int min_DCT_v_scaled_size;   /* smallest DCT_v_scaled_size of any component */
-
-  JDIMENSION total_iMCU_rows;  /* # of iMCU rows in image */
-  /* The coefficient controller's input and output progress is measured in
-   * units of "iMCU" (interleaved MCU) rows.  These are the same as MCU rows
-   * in fully interleaved JPEG scans, but are used whether the scan is
-   * interleaved or not.  We define an iMCU row as v_samp_factor DCT block
-   * rows of each component.  Therefore, the IDCT output contains
-   * v_samp_factor*DCT_v_scaled_size sample rows of a component per iMCU row.
-   */
-
-  JSAMPLE * sample_range_limit; /* table for fast range-limiting */
-
-  /*
-   * These fields are valid during any one scan.
-   * They describe the components and MCUs actually appearing in the scan.
-   * Note that the decompressor output side must not use these fields.
-   */
-  int comps_in_scan;           /* # of JPEG components in this scan */
-  jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
-  /* *cur_comp_info[i] describes component that appears i'th in SOS */
-
-  JDIMENSION MCUs_per_row;     /* # of MCUs across the image */
-  JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */
-
-  int blocks_in_MCU;           /* # of DCT blocks per MCU */
-  int MCU_membership[D_MAX_BLOCKS_IN_MCU];
-  /* MCU_membership[i] is index in cur_comp_info of component owning */
-  /* i'th block in an MCU */
-
-  int Ss, Se, Ah, Al;          /* progressive JPEG parameters for scan */
-
-  /* These fields are derived from Se of first SOS marker.
-   */
-  int block_size;              /* the basic DCT block size: 1..16 */
-  const int * natural_order; /* natural-order position array for entropy decode */
-  int lim_Se;                  /* min( Se, DCTSIZE2-1 ) for entropy decode */
-
-  /* This field is shared between entropy decoder and marker parser.
-   * It is either zero or the code of a JPEG marker that has been
-   * read from the data source, but has not yet been processed.
-   */
-  int unread_marker;
-
-  /*
-   * Links to decompression subobjects (methods, private variables of modules)
-   */
-  struct jpeg_decomp_master * master;
-  struct jpeg_d_main_controller * main;
-  struct jpeg_d_coef_controller * coef;
-  struct jpeg_d_post_controller * post;
-  struct jpeg_input_controller * inputctl;
-  struct jpeg_marker_reader * marker;
-  struct jpeg_entropy_decoder * entropy;
-  struct jpeg_inverse_dct * idct;
-  struct jpeg_upsampler * upsample;
-  struct jpeg_color_deconverter * cconvert;
-  struct jpeg_color_quantizer * cquantize;
-};
-
-
-/* "Object" declarations for JPEG modules that may be supplied or called
- * directly by the surrounding application.
- * As with all objects in the JPEG library, these structs only define the
- * publicly visible methods and state variables of a module.  Additional
- * private fields may exist after the public ones.
- */
-
-
-/* Error handler object */
-
-struct jpeg_error_mgr {
-  /* Error exit handler: does not return to caller */
-  JMETHOD(void, error_exit, (j_common_ptr cinfo));
-  /* Conditionally emit a trace or warning message */
-  JMETHOD(void, emit_message, (j_common_ptr cinfo, int msg_level));
-  /* Routine that actually outputs a trace or error message */
-  JMETHOD(void, output_message, (j_common_ptr cinfo));
-  /* Format a message string for the most recent JPEG error or message */
-  JMETHOD(void, format_message, (j_common_ptr cinfo, char * buffer));
-#define JMSG_LENGTH_MAX  200   /* recommended size of format_message buffer */
-  /* Reset error state variables at start of a new image */
-  JMETHOD(void, reset_error_mgr, (j_common_ptr cinfo));
-  
-  /* The message ID code and any parameters are saved here.
-   * A message can have one string parameter or up to 8 int parameters.
-   */
-  int msg_code;
-#define JMSG_STR_PARM_MAX  80
-  union {
-    int i[8];
-    char s[JMSG_STR_PARM_MAX];
-  } msg_parm;
-  
-  /* Standard state variables for error facility */
-  
-  int trace_level;             /* max msg_level that will be displayed */
-  
-  /* For recoverable corrupt-data errors, we emit a warning message,
-   * but keep going unless emit_message chooses to abort.  emit_message
-   * should count warnings in num_warnings.  The surrounding application
-   * can check for bad data by seeing if num_warnings is nonzero at the
-   * end of processing.
-   */
-  long num_warnings;           /* number of corrupt-data warnings */
-
-  /* These fields point to the table(s) of error message strings.
-   * An application can change the table pointer to switch to a different
-   * message list (typically, to change the language in which errors are
-   * reported).  Some applications may wish to add additional error codes
-   * that will be handled by the JPEG library error mechanism; the second
-   * table pointer is used for this purpose.
-   *
-   * First table includes all errors generated by JPEG library itself.
-   * Error code 0 is reserved for a "no such error string" message.
-   */
-  const char * const * jpeg_message_table; /* Library errors */
-  int last_jpeg_message;    /* Table contains strings 0..last_jpeg_message */
-  /* Second table can be added by application (see cjpeg/djpeg for example).
-   * It contains strings numbered first_addon_message..last_addon_message.
-   */
-  const char * const * addon_message_table; /* Non-library errors */
-  int first_addon_message;     /* code for first string in addon table */
-  int last_addon_message;      /* code for last string in addon table */
-};
-
-
-/* Progress monitor object */
-
-struct jpeg_progress_mgr {
-  JMETHOD(void, progress_monitor, (j_common_ptr cinfo));
-
-  long pass_counter;           /* work units completed in this pass */
-  long pass_limit;             /* total number of work units in this pass */
-  int completed_passes;                /* passes completed so far */
-  int total_passes;            /* total number of passes expected */
-};
-
-
-/* Data destination object for compression */
-
-struct jpeg_destination_mgr {
-  JOCTET * next_output_byte;   /* => next byte to write in buffer */
-  size_t free_in_buffer;       /* # of byte spaces remaining in buffer */
-
-  JMETHOD(void, init_destination, (j_compress_ptr cinfo));
-  JMETHOD(boolean, empty_output_buffer, (j_compress_ptr cinfo));
-  JMETHOD(void, term_destination, (j_compress_ptr cinfo));
-};
-
-
-/* Data source object for decompression */
-
-struct jpeg_source_mgr {
-  const JOCTET * next_input_byte; /* => next byte to read from buffer */
-  size_t bytes_in_buffer;      /* # of bytes remaining in buffer */
-
-  JMETHOD(void, init_source, (j_decompress_ptr cinfo));
-  JMETHOD(boolean, fill_input_buffer, (j_decompress_ptr cinfo));
-  JMETHOD(void, skip_input_data, (j_decompress_ptr cinfo, long num_bytes));
-  JMETHOD(boolean, resync_to_restart, (j_decompress_ptr cinfo, int desired));
-  JMETHOD(void, term_source, (j_decompress_ptr cinfo));
-};
-
-
-/* Memory manager object.
- * Allocates "small" objects (a few K total), "large" objects (tens of K),
- * and "really big" objects (virtual arrays with backing store if needed).
- * The memory manager does not allow individual objects to be freed; rather,
- * each created object is assigned to a pool, and whole pools can be freed
- * at once.  This is faster and more convenient than remembering exactly what
- * to free, especially where malloc()/free() are not too speedy.
- * NB: alloc routines never return NULL.  They exit to error_exit if not
- * successful.
- */
-
-#define JPOOL_PERMANENT        0       /* lasts until master record is destroyed */
-#define JPOOL_IMAGE    1       /* lasts until done with image/datastream */
-#define JPOOL_NUMPOOLS 2
-
-typedef struct jvirt_sarray_control * jvirt_sarray_ptr;
-typedef struct jvirt_barray_control * jvirt_barray_ptr;
-
-
-struct jpeg_memory_mgr {
-  /* Method pointers */
-  JMETHOD(void *, alloc_small, (j_common_ptr cinfo, int pool_id,
-                               size_t sizeofobject));
-  JMETHOD(void FAR *, alloc_large, (j_common_ptr cinfo, int pool_id,
-                                    size_t sizeofobject));
-  JMETHOD(JSAMPARRAY, alloc_sarray, (j_common_ptr cinfo, int pool_id,
-                                    JDIMENSION samplesperrow,
-                                    JDIMENSION numrows));
-  JMETHOD(JBLOCKARRAY, alloc_barray, (j_common_ptr cinfo, int pool_id,
-                                     JDIMENSION blocksperrow,
-                                     JDIMENSION numrows));
-  JMETHOD(jvirt_sarray_ptr, request_virt_sarray, (j_common_ptr cinfo,
-                                                 int pool_id,
-                                                 boolean pre_zero,
-                                                 JDIMENSION samplesperrow,
-                                                 JDIMENSION numrows,
-                                                 JDIMENSION maxaccess));
-  JMETHOD(jvirt_barray_ptr, request_virt_barray, (j_common_ptr cinfo,
-                                                 int pool_id,
-                                                 boolean pre_zero,
-                                                 JDIMENSION blocksperrow,
-                                                 JDIMENSION numrows,
-                                                 JDIMENSION maxaccess));
-  JMETHOD(void, realize_virt_arrays, (j_common_ptr cinfo));
-  JMETHOD(JSAMPARRAY, access_virt_sarray, (j_common_ptr cinfo,
-                                          jvirt_sarray_ptr ptr,
-                                          JDIMENSION start_row,
-                                          JDIMENSION num_rows,
-                                          boolean writable));
-  JMETHOD(JBLOCKARRAY, access_virt_barray, (j_common_ptr cinfo,
-                                           jvirt_barray_ptr ptr,
-                                           JDIMENSION start_row,
-                                           JDIMENSION num_rows,
-                                           boolean writable));
-  JMETHOD(void, free_pool, (j_common_ptr cinfo, int pool_id));
-  JMETHOD(void, self_destruct, (j_common_ptr cinfo));
-
-  /* Limit on memory allocation for this JPEG object.  (Note that this is
-   * merely advisory, not a guaranteed maximum; it only affects the space
-   * used for virtual-array buffers.)  May be changed by outer application
-   * after creating the JPEG object.
-   */
-  long max_memory_to_use;
-
-  /* Maximum allocation request accepted by alloc_large. */
-  long max_alloc_chunk;
-};
-
-
-/* Routine signature for application-supplied marker processing methods.
- * Need not pass marker code since it is stored in cinfo->unread_marker.
- */
-typedef JMETHOD(boolean, jpeg_marker_parser_method, (j_decompress_ptr cinfo));
-
-
-/* Declarations for routines called by application.
- * The JPP macro hides prototype parameters from compilers that can't cope.
- * Note JPP requires double parentheses.
- */
-
-#ifdef HAVE_PROTOTYPES
-#define JPP(arglist)   arglist
-#else
-#define JPP(arglist)   ()
-#endif
-
-
-/* Short forms of external names for systems with brain-damaged linkers.
- * We shorten external names to be unique in the first six letters, which
- * is good enough for all known systems.
- * (If your compiler itself needs names to be unique in less than 15 
- * characters, you are out of luck.  Get a better compiler.)
- */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_std_error         jStdError
-#define jpeg_CreateCompress    jCreaCompress
-#define jpeg_CreateDecompress  jCreaDecompress
-#define jpeg_destroy_compress  jDestCompress
-#define jpeg_destroy_decompress        jDestDecompress
-#define jpeg_stdio_dest                jStdDest
-#define jpeg_stdio_src         jStdSrc
-#define jpeg_mem_dest          jMemDest
-#define jpeg_mem_src           jMemSrc
-#define jpeg_set_defaults      jSetDefaults
-#define jpeg_set_colorspace    jSetColorspace
-#define jpeg_default_colorspace        jDefColorspace
-#define jpeg_set_quality       jSetQuality
-#define jpeg_set_linear_quality        jSetLQuality
-#define jpeg_default_qtables   jDefQTables
-#define jpeg_add_quant_table   jAddQuantTable
-#define jpeg_quality_scaling   jQualityScaling
-#define jpeg_simple_progression        jSimProgress
-#define jpeg_suppress_tables   jSuppressTables
-#define jpeg_alloc_quant_table jAlcQTable
-#define jpeg_alloc_huff_table  jAlcHTable
-#define jpeg_start_compress    jStrtCompress
-#define jpeg_write_scanlines   jWrtScanlines
-#define jpeg_finish_compress   jFinCompress
-#define jpeg_calc_jpeg_dimensions      jCjpegDimensions
-#define jpeg_write_raw_data    jWrtRawData
-#define jpeg_write_marker      jWrtMarker
-#define jpeg_write_m_header    jWrtMHeader
-#define jpeg_write_m_byte      jWrtMByte
-#define jpeg_write_tables      jWrtTables
-#define jpeg_read_header       jReadHeader
-#define jpeg_start_decompress  jStrtDecompress
-#define jpeg_read_scanlines    jReadScanlines
-#define jpeg_finish_decompress jFinDecompress
-#define jpeg_read_raw_data     jReadRawData
-#define jpeg_has_multiple_scans        jHasMultScn
-#define jpeg_start_output      jStrtOutput
-#define jpeg_finish_output     jFinOutput
-#define jpeg_input_complete    jInComplete
-#define jpeg_new_colormap      jNewCMap
-#define jpeg_consume_input     jConsumeInput
-#define jpeg_core_output_dimensions    jCoreDimensions
-#define jpeg_calc_output_dimensions    jCalcDimensions
-#define jpeg_save_markers      jSaveMarkers
-#define jpeg_set_marker_processor      jSetMarker
-#define jpeg_read_coefficients jReadCoefs
-#define jpeg_write_coefficients        jWrtCoefs
-#define jpeg_copy_critical_parameters  jCopyCrit
-#define jpeg_abort_compress    jAbrtCompress
-#define jpeg_abort_decompress  jAbrtDecompress
-#define jpeg_abort             jAbort
-#define jpeg_destroy           jDestroy
-#define jpeg_resync_to_restart jResyncRestart
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/* Default error-management setup */
-EXTERN(struct jpeg_error_mgr *) jpeg_std_error
-       JPP((struct jpeg_error_mgr * err));
-
-/* Initialization of JPEG compression objects.
- * jpeg_create_compress() and jpeg_create_decompress() are the exported
- * names that applications should call.  These expand to calls on
- * jpeg_CreateCompress and jpeg_CreateDecompress with additional information
- * passed for version mismatch checking.
- * NB: you must set up the error-manager BEFORE calling jpeg_create_xxx.
- */
-#define jpeg_create_compress(cinfo) \
-    jpeg_CreateCompress((cinfo), JPEG_LIB_VERSION, \
-                       (size_t) sizeof(struct jpeg_compress_struct))
-#define jpeg_create_decompress(cinfo) \
-    jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \
-                         (size_t) sizeof(struct jpeg_decompress_struct))
-EXTERN(void) jpeg_CreateCompress JPP((j_compress_ptr cinfo,
-                                     int version, size_t structsize));
-EXTERN(void) jpeg_CreateDecompress JPP((j_decompress_ptr cinfo,
-                                       int version, size_t structsize));
-/* Destruction of JPEG compression objects */
-EXTERN(void) jpeg_destroy_compress JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_destroy_decompress JPP((j_decompress_ptr cinfo));
-
-/* Standard data source and destination managers: stdio streams. */
-/* Caller is responsible for opening the file before and closing after. */
-EXTERN(void) jpeg_stdio_dest JPP((j_compress_ptr cinfo, FILE * outfile));
-EXTERN(void) jpeg_stdio_src JPP((j_decompress_ptr cinfo, FILE * infile));
-
-/* Data source and destination managers: memory buffers. */
-EXTERN(void) jpeg_mem_dest JPP((j_compress_ptr cinfo,
-                              unsigned char ** outbuffer,
-                              unsigned long * outsize));
-EXTERN(void) jpeg_mem_src JPP((j_decompress_ptr cinfo,
-                             unsigned char * inbuffer,
-                             unsigned long insize));
-
-/* Default parameter setup for compression */
-EXTERN(void) jpeg_set_defaults JPP((j_compress_ptr cinfo));
-/* Compression parameter setup aids */
-EXTERN(void) jpeg_set_colorspace JPP((j_compress_ptr cinfo,
-                                     J_COLOR_SPACE colorspace));
-EXTERN(void) jpeg_default_colorspace JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_set_quality JPP((j_compress_ptr cinfo, int quality,
-                                  boolean force_baseline));
-EXTERN(void) jpeg_set_linear_quality JPP((j_compress_ptr cinfo,
-                                         int scale_factor,
-                                         boolean force_baseline));
-EXTERN(void) jpeg_default_qtables JPP((j_compress_ptr cinfo,
-                                      boolean force_baseline));
-EXTERN(void) jpeg_add_quant_table JPP((j_compress_ptr cinfo, int which_tbl,
-                                      const unsigned int *basic_table,
-                                      int scale_factor,
-                                      boolean force_baseline));
-EXTERN(int) jpeg_quality_scaling JPP((int quality));
-EXTERN(void) jpeg_simple_progression JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_suppress_tables JPP((j_compress_ptr cinfo,
-                                      boolean suppress));
-EXTERN(JQUANT_TBL *) jpeg_alloc_quant_table JPP((j_common_ptr cinfo));
-EXTERN(JHUFF_TBL *) jpeg_alloc_huff_table JPP((j_common_ptr cinfo));
-
-/* Main entry points for compression */
-EXTERN(void) jpeg_start_compress JPP((j_compress_ptr cinfo,
-                                     boolean write_all_tables));
-EXTERN(JDIMENSION) jpeg_write_scanlines JPP((j_compress_ptr cinfo,
-                                            JSAMPARRAY scanlines,
-                                            JDIMENSION num_lines));
-EXTERN(void) jpeg_finish_compress JPP((j_compress_ptr cinfo));
-
-/* Precalculate JPEG dimensions for current compression parameters. */
-EXTERN(void) jpeg_calc_jpeg_dimensions JPP((j_compress_ptr cinfo));
-
-/* Replaces jpeg_write_scanlines when writing raw downsampled data. */
-EXTERN(JDIMENSION) jpeg_write_raw_data JPP((j_compress_ptr cinfo,
-                                           JSAMPIMAGE data,
-                                           JDIMENSION num_lines));
-
-/* Write a special marker.  See libjpeg.txt concerning safe usage. */
-EXTERN(void) jpeg_write_marker
-       JPP((j_compress_ptr cinfo, int marker,
-            const JOCTET * dataptr, unsigned int datalen));
-/* Same, but piecemeal. */
-EXTERN(void) jpeg_write_m_header
-       JPP((j_compress_ptr cinfo, int marker, unsigned int datalen));
-EXTERN(void) jpeg_write_m_byte
-       JPP((j_compress_ptr cinfo, int val));
-
-/* Alternate compression function: just write an abbreviated table file */
-EXTERN(void) jpeg_write_tables JPP((j_compress_ptr cinfo));
-
-/* Decompression startup: read start of JPEG datastream to see what's there */
-EXTERN(int) jpeg_read_header JPP((j_decompress_ptr cinfo,
-                                 boolean require_image));
-/* Return value is one of: */
-#define JPEG_SUSPENDED         0 /* Suspended due to lack of input data */
-#define JPEG_HEADER_OK         1 /* Found valid image datastream */
-#define JPEG_HEADER_TABLES_ONLY        2 /* Found valid table-specs-only datastream */
-/* If you pass require_image = TRUE (normal case), you need not check for
- * a TABLES_ONLY return code; an abbreviated file will cause an error exit.
- * JPEG_SUSPENDED is only possible if you use a data source module that can
- * give a suspension return (the stdio source module doesn't).
- */
-
-/* Main entry points for decompression */
-EXTERN(boolean) jpeg_start_decompress JPP((j_decompress_ptr cinfo));
-EXTERN(JDIMENSION) jpeg_read_scanlines JPP((j_decompress_ptr cinfo,
-                                           JSAMPARRAY scanlines,
-                                           JDIMENSION max_lines));
-EXTERN(boolean) jpeg_finish_decompress JPP((j_decompress_ptr cinfo));
-
-/* Replaces jpeg_read_scanlines when reading raw downsampled data. */
-EXTERN(JDIMENSION) jpeg_read_raw_data JPP((j_decompress_ptr cinfo,
-                                          JSAMPIMAGE data,
-                                          JDIMENSION max_lines));
-
-/* Additional entry points for buffered-image mode. */
-EXTERN(boolean) jpeg_has_multiple_scans JPP((j_decompress_ptr cinfo));
-EXTERN(boolean) jpeg_start_output JPP((j_decompress_ptr cinfo,
-                                      int scan_number));
-EXTERN(boolean) jpeg_finish_output JPP((j_decompress_ptr cinfo));
-EXTERN(boolean) jpeg_input_complete JPP((j_decompress_ptr cinfo));
-EXTERN(void) jpeg_new_colormap JPP((j_decompress_ptr cinfo));
-EXTERN(int) jpeg_consume_input JPP((j_decompress_ptr cinfo));
-/* Return value is one of: */
-/* #define JPEG_SUSPENDED      0    Suspended due to lack of input data */
-#define JPEG_REACHED_SOS       1 /* Reached start of new scan */
-#define JPEG_REACHED_EOI       2 /* Reached end of image */
-#define JPEG_ROW_COMPLETED     3 /* Completed one iMCU row */
-#define JPEG_SCAN_COMPLETED    4 /* Completed last iMCU row of a scan */
-
-/* Precalculate output dimensions for current decompression parameters. */
-EXTERN(void) jpeg_core_output_dimensions JPP((j_decompress_ptr cinfo));
-EXTERN(void) jpeg_calc_output_dimensions JPP((j_decompress_ptr cinfo));
-
-/* Control saving of COM and APPn markers into marker_list. */
-EXTERN(void) jpeg_save_markers
-       JPP((j_decompress_ptr cinfo, int marker_code,
-            unsigned int length_limit));
-
-/* Install a special processing method for COM or APPn markers. */
-EXTERN(void) jpeg_set_marker_processor
-       JPP((j_decompress_ptr cinfo, int marker_code,
-            jpeg_marker_parser_method routine));
-
-/* Read or write raw DCT coefficients --- useful for lossless transcoding. */
-EXTERN(jvirt_barray_ptr *) jpeg_read_coefficients JPP((j_decompress_ptr cinfo));
-EXTERN(void) jpeg_write_coefficients JPP((j_compress_ptr cinfo,
-                                         jvirt_barray_ptr * coef_arrays));
-EXTERN(void) jpeg_copy_critical_parameters JPP((j_decompress_ptr srcinfo,
-                                               j_compress_ptr dstinfo));
-
-/* If you choose to abort compression or decompression before completing
- * jpeg_finish_(de)compress, then you need to clean up to release memory,
- * temporary files, etc.  You can just call jpeg_destroy_(de)compress
- * if you're done with the JPEG object, but if you want to clean it up and
- * reuse it, call this:
- */
-EXTERN(void) jpeg_abort_compress JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_abort_decompress JPP((j_decompress_ptr cinfo));
-
-/* Generic versions of jpeg_abort and jpeg_destroy that work on either
- * flavor of JPEG object.  These may be more convenient in some places.
- */
-EXTERN(void) jpeg_abort JPP((j_common_ptr cinfo));
-EXTERN(void) jpeg_destroy JPP((j_common_ptr cinfo));
-
-/* Default restart-marker-resync procedure for use by data source modules */
-EXTERN(boolean) jpeg_resync_to_restart JPP((j_decompress_ptr cinfo,
-                                           int desired));
-
-
-/* These marker codes are exported since applications and data source modules
- * are likely to want to use them.
- */
-
-#define JPEG_RST0      0xD0    /* RST0 marker code */
-#define JPEG_EOI       0xD9    /* EOI marker code */
-#define JPEG_APP0      0xE0    /* APP0 marker code */
-#define JPEG_COM       0xFE    /* COM marker code */
-
-
-/* If we have a brain-damaged compiler that emits warnings (or worse, errors)
- * for structure definitions that are never filled in, keep it quiet by
- * supplying dummy definitions for the various substructures.
- */
-
-#ifdef INCOMPLETE_TYPES_BROKEN
-#ifndef JPEG_INTERNALS         /* will be defined in jpegint.h */
-struct jvirt_sarray_control { long dummy; };
-struct jvirt_barray_control { long dummy; };
-struct jpeg_comp_master { long dummy; };
-struct jpeg_c_main_controller { long dummy; };
-struct jpeg_c_prep_controller { long dummy; };
-struct jpeg_c_coef_controller { long dummy; };
-struct jpeg_marker_writer { long dummy; };
-struct jpeg_color_converter { long dummy; };
-struct jpeg_downsampler { long dummy; };
-struct jpeg_forward_dct { long dummy; };
-struct jpeg_entropy_encoder { long dummy; };
-struct jpeg_decomp_master { long dummy; };
-struct jpeg_d_main_controller { long dummy; };
-struct jpeg_d_coef_controller { long dummy; };
-struct jpeg_d_post_controller { long dummy; };
-struct jpeg_input_controller { long dummy; };
-struct jpeg_marker_reader { long dummy; };
-struct jpeg_entropy_decoder { long dummy; };
-struct jpeg_inverse_dct { long dummy; };
-struct jpeg_upsampler { long dummy; };
-struct jpeg_color_deconverter { long dummy; };
-struct jpeg_color_quantizer { long dummy; };
-#endif /* JPEG_INTERNALS */
-#endif /* INCOMPLETE_TYPES_BROKEN */
-
-
-/*
- * The JPEG library modules define JPEG_INTERNALS before including this file.
- * The internal structure declarations are read only when that is true.
- * Applications using the library should not include jpegint.h, but may wish
- * to include jerror.h.
- */
-
-#ifdef JPEG_INTERNALS
-#include "jpegint.h"           /* fetch private declarations */
-#include "jerror.h"            /* fetch error codes too */
-#endif
-
-#ifdef __cplusplus
-#ifndef DONT_USE_EXTERN_C
-}
-#endif
-#endif
-
-#endif /* JPEGLIB_H */
diff --git a/misc/builddeps/linux32/jpeg/lib/libjpeg.a b/misc/builddeps/linux32/jpeg/lib/libjpeg.a
deleted file mode 100644 (file)
index 991dbce..0000000
Binary files a/misc/builddeps/linux32/jpeg/lib/libjpeg.a and /dev/null differ
diff --git a/misc/builddeps/linux32/jpeg/lib/libjpeg.la b/misc/builddeps/linux32/jpeg/lib/libjpeg.la
deleted file mode 100755 (executable)
index ac8ef61..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libjpeg.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libjpeg.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libjpeg.
-current=8
-age=0
-revision=2
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/tmp/j/lib'
diff --git a/misc/builddeps/linux32/jpeg/share/man/man1/cjpeg.1 b/misc/builddeps/linux32/jpeg/share/man/man1/cjpeg.1
deleted file mode 100644 (file)
index 01bfa25..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-.TH CJPEG 1 "30 December 2009"
-.SH NAME
-cjpeg \- compress an image file to a JPEG file
-.SH SYNOPSIS
-.B cjpeg
-[
-.I options
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B cjpeg
-compresses the named image file, or the standard input if no file is
-named, and produces a JPEG/JFIF file on the standard output.
-The currently supported input file formats are: PPM (PBMPLUS color
-format), PGM (PBMPLUS gray-scale format), BMP, Targa, and RLE (Utah Raster
-Toolkit format).  (RLE is supported only if the URT library is available.)
-.SH OPTIONS
-All switch names may be abbreviated; for example,
-.B \-grayscale
-may be written
-.B \-gray
-or
-.BR \-gr .
-Most of the "basic" switches can be abbreviated to as little as one letter.
-Upper and lower case are equivalent (thus
-.B \-BMP
-is the same as
-.BR \-bmp ).
-British spellings are also accepted (e.g.,
-.BR \-greyscale ),
-though for brevity these are not mentioned below.
-.PP
-The basic switches are:
-.TP
-.BI \-quality " N[,...]"
-Scale quantization tables to adjust image quality.  Quality is 0 (worst) to
-100 (best); default is 75.  (See below for more info.)
-.TP
-.B \-grayscale
-Create monochrome JPEG file from color input.  Be sure to use this switch when
-compressing a grayscale BMP file, because
-.B cjpeg
-isn't bright enough to notice whether a BMP file uses only shades of gray.
-By saying
-.BR \-grayscale ,
-you'll get a smaller JPEG file that takes less time to process.
-.TP
-.B \-optimize
-Perform optimization of entropy encoding parameters.  Without this, default
-encoding parameters are used.
-.B \-optimize
-usually makes the JPEG file a little smaller, but
-.B cjpeg
-runs somewhat slower and needs much more memory.  Image quality and speed of
-decompression are unaffected by
-.BR \-optimize .
-.TP
-.B \-progressive
-Create progressive JPEG file (see below).
-.TP
-.BI \-scale " M/N"
-Scale the output image by a factor M/N.  Currently supported scale factors are
-8/N with all N from 1 to 16.
-.TP
-.B \-targa
-Input file is Targa format.  Targa files that contain an "identification"
-field will not be automatically recognized by
-.BR cjpeg ;
-for such files you must specify
-.B \-targa
-to make
-.B cjpeg
-treat the input as Targa format.
-For most Targa files, you won't need this switch.
-.PP
-The
-.B \-quality
-switch lets you trade off compressed file size against quality of the
-reconstructed image: the higher the quality setting, the larger the JPEG file,
-and the closer the output image will be to the original input.  Normally you
-want to use the lowest quality setting (smallest file) that decompresses into
-something visually indistinguishable from the original image.  For this
-purpose the quality setting should be between 50 and 95; the default of 75 is
-often about right.  If you see defects at
-.B \-quality
-75, then go up 5 or 10 counts at a time until you are happy with the output
-image.  (The optimal setting will vary from one image to another.)
-.PP
-.B \-quality
-100 will generate a quantization table of all 1's, minimizing loss in the
-quantization step (but there is still information loss in subsampling, as well
-as roundoff error).  This setting is mainly of interest for experimental
-purposes.  Quality values above about 95 are
-.B not
-recommended for normal use; the compressed file size goes up dramatically for
-hardly any gain in output image quality.
-.PP
-In the other direction, quality values below 50 will produce very small files
-of low image quality.  Settings around 5 to 10 might be useful in preparing an
-index of a large image library, for example.  Try
-.B \-quality
-2 (or so) for some amusing Cubist effects.  (Note: quality
-values below about 25 generate 2-byte quantization tables, which are
-considered optional in the JPEG standard.
-.B cjpeg
-emits a warning message when you give such a quality value, because some
-other JPEG programs may be unable to decode the resulting file.  Use
-.B \-baseline
-if you need to ensure compatibility at low quality values.)
-.PP
-The
-.B \-quality
-option has been extended in IJG version 7 for support of separate quality
-settings for luminance and chrominance (or in general, for every provided
-quantization table slot).  This feature is useful for high-quality
-applications which cannot accept the damage of color data by coarse
-subsampling settings.  You can now easily reduce the color data amount more
-smoothly with finer control without separate subsampling.  The resulting file
-is fully compliant with standard JPEG decoders.
-Note that the
-.B \-quality
-ratings refer to the quantization table slots, and that the last value is
-replicated if there are more q-table slots than parameters.  The default
-q-table slots are 0 for luminance and 1 for chrominance with default tables as
-given in the JPEG standard.  This is compatible with the old behaviour in case
-that only one parameter is given, which is then used for both luminance and
-chrominance (slots 0 and 1).  More or custom quantization tables can be set
-with
-.B \-qtables
-and assigned to components with
-.B \-qslots
-parameter (see the "wizard" switches below).
-.B Caution:
-You must explicitly add
-.BI \-sample " 1x1"
-for efficient separate color
-quality selection, since the default value used by library is 2x2!
-.PP
-The
-.B \-progressive
-switch creates a "progressive JPEG" file.  In this type of JPEG file, the data
-is stored in multiple scans of increasing quality.  If the file is being
-transmitted over a slow communications link, the decoder can use the first
-scan to display a low-quality image very quickly, and can then improve the
-display with each subsequent scan.  The final image is exactly equivalent to a
-standard JPEG file of the same quality setting, and the total file size is
-about the same --- often a little smaller.
-.PP
-Switches for advanced users:
-.TP
-.B \-dct int
-Use integer DCT method (default).
-.TP
-.B \-dct fast
-Use fast integer DCT (less accurate).
-.TP
-.B \-dct float
-Use floating-point DCT method.
-The float method is very slightly more accurate than the int method, but is
-much slower unless your machine has very fast floating-point hardware.  Also
-note that results of the floating-point method may vary slightly across
-machines, while the integer methods should give the same results everywhere.
-The fast integer method is much less accurate than the other two.
-.TP
-.B \-nosmooth
-Don't use high-quality downsampling.
-.TP
-.BI \-restart " N"
-Emit a JPEG restart marker every N MCU rows, or every N MCU blocks if "B" is
-attached to the number.
-.B \-restart 0
-(the default) means no restart markers.
-.TP
-.BI \-smooth " N"
-Smooth the input image to eliminate dithering noise.  N, ranging from 1 to
-100, indicates the strength of smoothing.  0 (the default) means no smoothing.
-.TP
-.BI \-maxmemory " N"
-Set limit for amount of memory to use in processing large images.  Value is
-in thousands of bytes, or millions of bytes if "M" is attached to the
-number.  For example,
-.B \-max 4m
-selects 4000000 bytes.  If more space is needed, temporary files will be used.
-.TP
-.BI \-outfile " name"
-Send output image to the named file, not to standard output.
-.TP
-.B \-verbose
-Enable debug printout.  More
-.BR \-v 's
-give more output.  Also, version information is printed at startup.
-.TP
-.B \-debug
-Same as
-.BR \-verbose .
-.PP
-The
-.B \-restart
-option inserts extra markers that allow a JPEG decoder to resynchronize after
-a transmission error.  Without restart markers, any damage to a compressed
-file will usually ruin the image from the point of the error to the end of the
-image; with restart markers, the damage is usually confined to the portion of
-the image up to the next restart marker.  Of course, the restart markers
-occupy extra space.  We recommend
-.B \-restart 1
-for images that will be transmitted across unreliable networks such as Usenet.
-.PP
-The
-.B \-smooth
-option filters the input to eliminate fine-scale noise.  This is often useful
-when converting dithered images to JPEG: a moderate smoothing factor of 10 to
-50 gets rid of dithering patterns in the input file, resulting in a smaller
-JPEG file and a better-looking image.  Too large a smoothing factor will
-visibly blur the image, however.
-.PP
-Switches for wizards:
-.TP
-.B \-arithmetic
-Use arithmetic coding.
-.B Caution:
-arithmetic coded JPEG is not yet widely implemented, so many decoders will be
-unable to view an arithmetic coded JPEG file at all.
-.TP
-.B \-baseline
-Force baseline-compatible quantization tables to be generated.  This clamps
-quantization values to 8 bits even at low quality settings.  (This switch is
-poorly named, since it does not ensure that the output is actually baseline
-JPEG.  For example, you can use
-.B \-baseline
-and
-.B \-progressive
-together.)
-.TP
-.BI \-qtables " file"
-Use the quantization tables given in the specified text file.
-.TP
-.BI \-qslots " N[,...]"
-Select which quantization table to use for each color component.
-.TP
-.BI \-sample " HxV[,...]"
-Set JPEG sampling factors for each color component.
-.TP
-.BI \-scans " file"
-Use the scan script given in the specified text file.
-.PP
-The "wizard" switches are intended for experimentation with JPEG.  If you
-don't know what you are doing, \fBdon't use them\fR.  These switches are
-documented further in the file wizard.txt.
-.SH EXAMPLES
-.LP
-This example compresses the PPM file foo.ppm with a quality factor of
-60 and saves the output as foo.jpg:
-.IP
-.B cjpeg \-quality
-.I 60 foo.ppm
-.B >
-.I foo.jpg
-.SH HINTS
-Color GIF files are not the ideal input for JPEG; JPEG is really intended for
-compressing full-color (24-bit) images.  In particular, don't try to convert
-cartoons, line drawings, and other images that have only a few distinct
-colors.  GIF works great on these, JPEG does not.  If you want to convert a
-GIF to JPEG, you should experiment with
-.BR cjpeg 's
-.B \-quality
-and
-.B \-smooth
-options to get a satisfactory conversion.
-.B \-smooth 10
-or so is often helpful.
-.PP
-Avoid running an image through a series of JPEG compression/decompression
-cycles.  Image quality loss will accumulate; after ten or so cycles the image
-may be noticeably worse than it was after one cycle.  It's best to use a
-lossless format while manipulating an image, then convert to JPEG format when
-you are ready to file the image away.
-.PP
-The
-.B \-optimize
-option to
-.B cjpeg
-is worth using when you are making a "final" version for posting or archiving.
-It's also a win when you are using low quality settings to make very small
-JPEG files; the percentage improvement is often a lot more than it is on
-larger files.  (At present,
-.B \-optimize
-mode is always selected when generating progressive JPEG files.)
-.SH ENVIRONMENT
-.TP
-.B JPEGMEM
-If this environment variable is set, its value is the default memory limit.
-The value is specified as described for the
-.B \-maxmemory
-switch.
-.B JPEGMEM
-overrides the default value specified when the program was compiled, and
-itself is overridden by an explicit
-.BR \-maxmemory .
-.SH SEE ALSO
-.BR djpeg (1),
-.BR jpegtran (1),
-.BR rdjpgcom (1),
-.BR wrjpgcom (1)
-.br
-.BR ppm (5),
-.BR pgm (5)
-.br
-Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
-Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
-.SH AUTHOR
-Independent JPEG Group
-.SH BUGS
-GIF input files are no longer supported, to avoid the Unisys LZW patent.
-(Conversion of GIF files to JPEG is usually a bad idea anyway.)
-.PP
-Not all variants of BMP and Targa file formats are supported.
-.PP
-The
-.B \-targa
-switch is not a bug, it's a feature.  (It would be a bug if the Targa format
-designers had not been clueless.)
diff --git a/misc/builddeps/linux32/jpeg/share/man/man1/djpeg.1 b/misc/builddeps/linux32/jpeg/share/man/man1/djpeg.1
deleted file mode 100644 (file)
index f3722d1..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-.TH DJPEG 1 "3 October 2009"
-.SH NAME
-djpeg \- decompress a JPEG file to an image file
-.SH SYNOPSIS
-.B djpeg
-[
-.I options
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B djpeg
-decompresses the named JPEG file, or the standard input if no file is named,
-and produces an image file on the standard output.  PBMPLUS (PPM/PGM), BMP,
-GIF, Targa, or RLE (Utah Raster Toolkit) output format can be selected.
-(RLE is supported only if the URT library is available.)
-.SH OPTIONS
-All switch names may be abbreviated; for example,
-.B \-grayscale
-may be written
-.B \-gray
-or
-.BR \-gr .
-Most of the "basic" switches can be abbreviated to as little as one letter.
-Upper and lower case are equivalent (thus
-.B \-BMP
-is the same as
-.BR \-bmp ).
-British spellings are also accepted (e.g.,
-.BR \-greyscale ),
-though for brevity these are not mentioned below.
-.PP
-The basic switches are:
-.TP
-.BI \-colors " N"
-Reduce image to at most N colors.  This reduces the number of colors used in
-the output image, so that it can be displayed on a colormapped display or
-stored in a colormapped file format.  For example, if you have an 8-bit
-display, you'd need to reduce to 256 or fewer colors.
-.TP
-.BI \-quantize " N"
-Same as
-.BR \-colors .
-.B \-colors
-is the recommended name,
-.B \-quantize
-is provided only for backwards compatibility.
-.TP
-.B \-fast
-Select recommended processing options for fast, low quality output.  (The
-default options are chosen for highest quality output.)  Currently, this is
-equivalent to \fB\-dct fast \-nosmooth \-onepass \-dither ordered\fR.
-.TP
-.B \-grayscale
-Force gray-scale output even if JPEG file is color.  Useful for viewing on
-monochrome displays; also,
-.B djpeg
-runs noticeably faster in this mode.
-.TP
-.BI \-scale " M/N"
-Scale the output image by a factor M/N.  Currently supported scale factors are
-M/N with all M from 1 to 16, where N is the source DCT size, which is 8 for
-baseline JPEG.  If the /N part is omitted, then M specifies the DCT scaled
-size to be applied on the given input.  For baseline JPEG this is equivalent
-to M/8 scaling, since the source DCT size for baseline JPEG is 8.
-Scaling is handy if the image is larger than your screen; also,
-.B djpeg
-runs much faster when scaling down the output.
-.TP
-.B \-bmp
-Select BMP output format (Windows flavor).  8-bit colormapped format is
-emitted if
-.B \-colors
-or
-.B \-grayscale
-is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
-format is emitted.
-.TP
-.B \-gif
-Select GIF output format.  Since GIF does not support more than 256 colors,
-.B \-colors 256
-is assumed (unless you specify a smaller number of colors).
-.TP
-.B \-os2
-Select BMP output format (OS/2 1.x flavor).  8-bit colormapped format is
-emitted if
-.B \-colors
-or
-.B \-grayscale
-is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
-format is emitted.
-.TP
-.B \-pnm
-Select PBMPLUS (PPM/PGM) output format (this is the default format).
-PGM is emitted if the JPEG file is gray-scale or if
-.B \-grayscale
-is specified; otherwise PPM is emitted.
-.TP
-.B \-rle
-Select RLE output format.  (Requires URT library.)
-.TP
-.B \-targa
-Select Targa output format.  Gray-scale format is emitted if the JPEG file is
-gray-scale or if
-.B \-grayscale
-is specified; otherwise, colormapped format is emitted if
-.B \-colors
-is specified; otherwise, 24-bit full-color format is emitted.
-.PP
-Switches for advanced users:
-.TP
-.B \-dct int
-Use integer DCT method (default).
-.TP
-.B \-dct fast
-Use fast integer DCT (less accurate).
-.TP
-.B \-dct float
-Use floating-point DCT method.
-The float method is very slightly more accurate than the int method, but is
-much slower unless your machine has very fast floating-point hardware.  Also
-note that results of the floating-point method may vary slightly across
-machines, while the integer methods should give the same results everywhere.
-The fast integer method is much less accurate than the other two.
-.TP
-.B \-dither fs
-Use Floyd-Steinberg dithering in color quantization.
-.TP
-.B \-dither ordered
-Use ordered dithering in color quantization.
-.TP
-.B \-dither none
-Do not use dithering in color quantization.
-By default, Floyd-Steinberg dithering is applied when quantizing colors; this
-is slow but usually produces the best results.  Ordered dither is a compromise
-between speed and quality; no dithering is fast but usually looks awful.  Note
-that these switches have no effect unless color quantization is being done.
-Ordered dither is only available in
-.B \-onepass
-mode.
-.TP
-.BI \-map " file"
-Quantize to the colors used in the specified image file.  This is useful for
-producing multiple files with identical color maps, or for forcing a
-predefined set of colors to be used.  The
-.I file
-must be a GIF or PPM file. This option overrides
-.B \-colors
-and
-.BR \-onepass .
-.TP
-.B \-nosmooth
-Don't use high-quality upsampling.
-.TP
-.B \-onepass
-Use one-pass instead of two-pass color quantization.  The one-pass method is
-faster and needs less memory, but it produces a lower-quality image.
-.B \-onepass
-is ignored unless you also say
-.B \-colors
-.IR N .
-Also, the one-pass method is always used for gray-scale output (the two-pass
-method is no improvement then).
-.TP
-.BI \-maxmemory " N"
-Set limit for amount of memory to use in processing large images.  Value is
-in thousands of bytes, or millions of bytes if "M" is attached to the
-number.  For example,
-.B \-max 4m
-selects 4000000 bytes.  If more space is needed, temporary files will be used.
-.TP
-.BI \-outfile " name"
-Send output image to the named file, not to standard output.
-.TP
-.B \-verbose
-Enable debug printout.  More
-.BR \-v 's
-give more output.  Also, version information is printed at startup.
-.TP
-.B \-debug
-Same as
-.BR \-verbose .
-.SH EXAMPLES
-.LP
-This example decompresses the JPEG file foo.jpg, quantizes it to
-256 colors, and saves the output in 8-bit BMP format in foo.bmp:
-.IP
-.B djpeg \-colors 256 \-bmp
-.I foo.jpg
-.B >
-.I foo.bmp
-.SH HINTS
-To get a quick preview of an image, use the
-.B \-grayscale
-and/or
-.B \-scale
-switches.
-.B \-grayscale \-scale 1/8
-is the fastest case.
-.PP
-Several options are available that trade off image quality to gain speed.
-.B \-fast
-turns on the recommended settings.
-.PP
-.B \-dct fast
-and/or
-.B \-nosmooth
-gain speed at a small sacrifice in quality.
-When producing a color-quantized image,
-.B \-onepass \-dither ordered
-is fast but much lower quality than the default behavior.
-.B \-dither none
-may give acceptable results in two-pass mode, but is seldom tolerable in
-one-pass mode.
-.PP
-If you are fortunate enough to have very fast floating point hardware,
-\fB\-dct float\fR may be even faster than \fB\-dct fast\fR.  But on most
-machines \fB\-dct float\fR is slower than \fB\-dct int\fR; in this case it is
-not worth using, because its theoretical accuracy advantage is too small to be
-significant in practice.
-.SH ENVIRONMENT
-.TP
-.B JPEGMEM
-If this environment variable is set, its value is the default memory limit.
-The value is specified as described for the
-.B \-maxmemory
-switch.
-.B JPEGMEM
-overrides the default value specified when the program was compiled, and
-itself is overridden by an explicit
-.BR \-maxmemory .
-.SH SEE ALSO
-.BR cjpeg (1),
-.BR jpegtran (1),
-.BR rdjpgcom (1),
-.BR wrjpgcom (1)
-.br
-.BR ppm (5),
-.BR pgm (5)
-.br
-Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
-Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
-.SH AUTHOR
-Independent JPEG Group
-.SH BUGS
-To avoid the Unisys LZW patent,
-.B djpeg
-produces uncompressed GIF files.  These are larger than they should be, but
-are readable by standard GIF decoders.
diff --git a/misc/builddeps/linux32/jpeg/share/man/man1/jpegtran.1 b/misc/builddeps/linux32/jpeg/share/man/man1/jpegtran.1
deleted file mode 100644 (file)
index 0ad1bbc..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-.TH JPEGTRAN 1 "28 December 2009"
-.SH NAME
-jpegtran \- lossless transformation of JPEG files
-.SH SYNOPSIS
-.B jpegtran
-[
-.I options
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B jpegtran
-performs various useful transformations of JPEG files.
-It can translate the coded representation from one variant of JPEG to another,
-for example from baseline JPEG to progressive JPEG or vice versa.  It can also
-perform some rearrangements of the image data, for example turning an image
-from landscape to portrait format by rotation.
-.PP
-.B jpegtran
-works by rearranging the compressed data (DCT coefficients), without
-ever fully decoding the image.  Therefore, its transformations are lossless:
-there is no image degradation at all, which would not be true if you used
-.B djpeg
-followed by
-.B cjpeg
-to accomplish the same conversion.  But by the same token,
-.B jpegtran
-cannot perform lossy operations such as changing the image quality.
-.PP
-.B jpegtran
-reads the named JPEG/JFIF file, or the standard input if no file is
-named, and produces a JPEG/JFIF file on the standard output.
-.SH OPTIONS
-All switch names may be abbreviated; for example,
-.B \-optimize
-may be written
-.B \-opt
-or
-.BR \-o .
-Upper and lower case are equivalent.
-British spellings are also accepted (e.g.,
-.BR \-optimise ),
-though for brevity these are not mentioned below.
-.PP
-To specify the coded JPEG representation used in the output file,
-.B jpegtran
-accepts a subset of the switches recognized by
-.BR cjpeg :
-.TP
-.B \-optimize
-Perform optimization of entropy encoding parameters.
-.TP
-.B \-progressive
-Create progressive JPEG file.
-.TP
-.BI \-restart " N"
-Emit a JPEG restart marker every N MCU rows, or every N MCU blocks if "B" is
-attached to the number.
-.TP
-.B \-arithmetic
-Use arithmetic coding.
-.TP
-.BI \-scans " file"
-Use the scan script given in the specified text file.
-.PP
-See
-.BR cjpeg (1)
-for more details about these switches.
-If you specify none of these switches, you get a plain baseline-JPEG output
-file.  The quality setting and so forth are determined by the input file.
-.PP
-The image can be losslessly transformed by giving one of these switches:
-.TP
-.B \-flip horizontal
-Mirror image horizontally (left-right).
-.TP
-.B \-flip vertical
-Mirror image vertically (top-bottom).
-.TP
-.B \-rotate 90
-Rotate image 90 degrees clockwise.
-.TP
-.B \-rotate 180
-Rotate image 180 degrees.
-.TP
-.B \-rotate 270
-Rotate image 270 degrees clockwise (or 90 ccw).
-.TP
-.B \-transpose
-Transpose image (across UL-to-LR axis).
-.TP
-.B \-transverse
-Transverse transpose (across UR-to-LL axis).
-.IP
-The transpose transformation has no restrictions regarding image dimensions.
-The other transformations operate rather oddly if the image dimensions are not
-a multiple of the iMCU size (usually 8 or 16 pixels), because they can only
-transform complete blocks of DCT coefficient data in the desired way.
-.IP
-.BR jpegtran 's
-default behavior when transforming an odd-size image is designed
-to preserve exact reversibility and mathematical consistency of the
-transformation set.  As stated, transpose is able to flip the entire image
-area.  Horizontal mirroring leaves any partial iMCU column at the right edge
-untouched, but is able to flip all rows of the image.  Similarly, vertical
-mirroring leaves any partial iMCU row at the bottom edge untouched, but is
-able to flip all columns.  The other transforms can be built up as sequences
-of transpose and flip operations; for consistency, their actions on edge
-pixels are defined to be the same as the end result of the corresponding
-transpose-and-flip sequence.
-.IP
-For practical use, you may prefer to discard any untransformable edge pixels
-rather than having a strange-looking strip along the right and/or bottom edges
-of a transformed image.  To do this, add the
-.B \-trim
-switch:
-.TP
-.B \-trim
-Drop non-transformable edge blocks.
-.IP
-Obviously, a transformation with
-.B \-trim
-is not reversible, so strictly speaking
-.B jpegtran
-with this switch is not lossless.  Also, the expected mathematical
-equivalences between the transformations no longer hold.  For example,
-.B \-rot 270 -trim
-trims only the bottom edge, but
-.B \-rot 90 -trim
-followed by
-.B \-rot 180 -trim
-trims both edges.
-.IP
-If you are only interested in perfect transformation, add the
-.B \-perfect
-switch:
-.TP
-.B \-perfect
-Fails with an error if the transformation is not perfect.
-.IP
-For example you may want to do
-.IP
-.B (jpegtran \-rot 90 -perfect
-.I foo.jpg
-.B || djpeg
-.I foo.jpg
-.B | pnmflip \-r90 | cjpeg)
-.IP
-to do a perfect rotation if available or an approximated one if not.
-.PP
-We also offer a lossless-crop option, which discards data outside a given
-image region but losslessly preserves what is inside.  Like the rotate and
-flip transforms, lossless crop is restricted by the current JPEG format: the
-upper left corner of the selected region must fall on an iMCU boundary.  If
-this does not hold for the given crop parameters, we silently move the upper
-left corner up and/or left to make it so, simultaneously increasing the region
-dimensions to keep the lower right crop corner unchanged.  (Thus, the output
-image covers at least the requested region, but may cover more.)
-
-The image can be losslessly cropped by giving the switch:
-.TP
-.B \-crop WxH+X+Y
-Crop to a rectangular subarea of width W, height H starting at point X,Y.
-.PP
-Other not-strictly-lossless transformation switches are:
-.TP
-.B \-grayscale
-Force grayscale output.
-.IP
-This option discards the chrominance channels if the input image is YCbCr
-(ie, a standard color JPEG), resulting in a grayscale JPEG file.  The
-luminance channel is preserved exactly, so this is a better method of reducing
-to grayscale than decompression, conversion, and recompression.  This switch
-is particularly handy for fixing a monochrome picture that was mistakenly
-encoded as a color JPEG.  (In such a case, the space savings from getting rid
-of the near-empty chroma channels won't be large; but the decoding time for
-a grayscale JPEG is substantially less than that for a color JPEG.)
-.TP
-.BI \-scale " M/N"
-Scale the output image by a factor M/N.
-.IP
-Currently supported scale factors are M/N with all M from 1 to 16, where N is
-the source DCT size, which is 8 for baseline JPEG.  If the /N part is omitted,
-then M specifies the DCT scaled size to be applied on the given input.  For
-baseline JPEG this is equivalent to M/8 scaling, since the source DCT size
-for baseline JPEG is 8.
-.B Caution:
-An implementation of the JPEG SmartScale extension is required for this
-feature.  SmartScale enabled JPEG is not yet widely implemented, so many
-decoders will be unable to view a SmartScale extended JPEG file at all.
-.PP
-.B jpegtran
-also recognizes these switches that control what to do with "extra" markers,
-such as comment blocks:
-.TP
-.B \-copy none
-Copy no extra markers from source file.  This setting suppresses all
-comments and other excess baggage present in the source file.
-.TP
-.B \-copy comments
-Copy only comment markers.  This setting copies comments from the source file,
-but discards any other inessential (for image display) data.
-.TP
-.B \-copy all
-Copy all extra markers.  This setting preserves miscellaneous markers
-found in the source file, such as JFIF thumbnails, Exif data, and Photoshop
-settings.  In some files these extra markers can be sizable.
-.IP
-The default behavior is
-.BR "\-copy comments" .
-(Note: in IJG releases v6 and v6a,
-.B jpegtran
-always did the equivalent of
-.BR "\-copy none" .)
-.PP
-Additional switches recognized by jpegtran are:
-.TP
-.BI \-maxmemory " N"
-Set limit for amount of memory to use in processing large images.  Value is
-in thousands of bytes, or millions of bytes if "M" is attached to the
-number.  For example,
-.B \-max 4m
-selects 4000000 bytes.  If more space is needed, temporary files will be used.
-.TP
-.BI \-outfile " name"
-Send output image to the named file, not to standard output.
-.TP
-.B \-verbose
-Enable debug printout.  More
-.BR \-v 's
-give more output.  Also, version information is printed at startup.
-.TP
-.B \-debug
-Same as
-.BR \-verbose .
-.SH EXAMPLES
-.LP
-This example converts a baseline JPEG file to progressive form:
-.IP
-.B jpegtran \-progressive
-.I foo.jpg
-.B >
-.I fooprog.jpg
-.PP
-This example rotates an image 90 degrees clockwise, discarding any
-unrotatable edge pixels:
-.IP
-.B jpegtran \-rot 90 -trim
-.I foo.jpg
-.B >
-.I foo90.jpg
-.SH ENVIRONMENT
-.TP
-.B JPEGMEM
-If this environment variable is set, its value is the default memory limit.
-The value is specified as described for the
-.B \-maxmemory
-switch.
-.B JPEGMEM
-overrides the default value specified when the program was compiled, and
-itself is overridden by an explicit
-.BR \-maxmemory .
-.SH SEE ALSO
-.BR cjpeg (1),
-.BR djpeg (1),
-.BR rdjpgcom (1),
-.BR wrjpgcom (1)
-.br
-Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
-Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
-.SH AUTHOR
-Independent JPEG Group
-.SH BUGS
-The transform options can't transform odd-size images perfectly.  Use
-.B \-trim
-or
-.B \-perfect
-if you don't like the results.
-.PP
-The entire image is read into memory and then written out again, even in
-cases where this isn't really necessary.  Expect swapping on large images,
-especially when using the more complex transform options.
diff --git a/misc/builddeps/linux32/jpeg/share/man/man1/rdjpgcom.1 b/misc/builddeps/linux32/jpeg/share/man/man1/rdjpgcom.1
deleted file mode 100644 (file)
index 97611df..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-.TH RDJPGCOM 1 "02 April 2009"
-.SH NAME
-rdjpgcom \- display text comments from a JPEG file
-.SH SYNOPSIS
-.B rdjpgcom
-[
-.B \-raw
-]
-[
-.B \-verbose
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B rdjpgcom
-reads the named JPEG/JFIF file, or the standard input if no file is named,
-and prints any text comments found in the file on the standard output.
-.PP
-The JPEG standard allows "comment" (COM) blocks to occur within a JPEG file.
-Although the standard doesn't actually define what COM blocks are for, they
-are widely used to hold user-supplied text strings.  This lets you add
-annotations, titles, index terms, etc to your JPEG files, and later retrieve
-them as text.  COM blocks do not interfere with the image stored in the JPEG
-file.  The maximum size of a COM block is 64K, but you can have as many of
-them as you like in one JPEG file.
-.SH OPTIONS
-.TP
-.B \-raw
-Normally
-.B rdjpgcom
-escapes non-printable characters in comments, for security reasons.
-This option avoids that.
-.PP
-.B \-verbose
-Causes
-.B rdjpgcom
-to also display the JPEG image dimensions.
-.PP
-Switch names may be abbreviated, and are not case sensitive.
-.SH HINTS
-.B rdjpgcom
-does not depend on the IJG JPEG library.  Its source code is intended as an
-illustration of the minimum amount of code required to parse a JPEG file
-header correctly.
-.PP
-In
-.B \-verbose
-mode,
-.B rdjpgcom
-will also attempt to print the contents of any "APP12" markers as text.
-Some digital cameras produce APP12 markers containing useful textual
-information.  If you like, you can modify the source code to print
-other APPn marker types as well.
-.SH SEE ALSO
-.BR cjpeg (1),
-.BR djpeg (1),
-.BR jpegtran (1),
-.BR wrjpgcom (1)
-.SH AUTHOR
-Independent JPEG Group
diff --git a/misc/builddeps/linux32/jpeg/share/man/man1/wrjpgcom.1 b/misc/builddeps/linux32/jpeg/share/man/man1/wrjpgcom.1
deleted file mode 100644 (file)
index d419a99..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-.TH WRJPGCOM 1 "15 June 1995"
-.SH NAME
-wrjpgcom \- insert text comments into a JPEG file
-.SH SYNOPSIS
-.B wrjpgcom
-[
-.B \-replace
-]
-[
-.BI \-comment " text"
-]
-[
-.BI \-cfile " name"
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B wrjpgcom
-reads the named JPEG/JFIF file, or the standard input if no file is named,
-and generates a new JPEG/JFIF file on standard output.  A comment block is
-added to the file.
-.PP
-The JPEG standard allows "comment" (COM) blocks to occur within a JPEG file.
-Although the standard doesn't actually define what COM blocks are for, they
-are widely used to hold user-supplied text strings.  This lets you add
-annotations, titles, index terms, etc to your JPEG files, and later retrieve
-them as text.  COM blocks do not interfere with the image stored in the JPEG
-file.  The maximum size of a COM block is 64K, but you can have as many of
-them as you like in one JPEG file.
-.PP
-.B wrjpgcom
-adds a COM block, containing text you provide, to a JPEG file.
-Ordinarily, the COM block is added after any existing COM blocks; but you
-can delete the old COM blocks if you wish.
-.SH OPTIONS
-Switch names may be abbreviated, and are not case sensitive.
-.TP
-.B \-replace
-Delete any existing COM blocks from the file.
-.TP
-.BI \-comment " text"
-Supply text for new COM block on command line.
-.TP
-.BI \-cfile " name"
-Read text for new COM block from named file.
-.PP
-If you have only one line of comment text to add, you can provide it on the
-command line with
-.BR \-comment .
-The comment text must be surrounded with quotes so that it is treated as a
-single argument.  Longer comments can be read from a text file.
-.PP
-If you give neither
-.B \-comment
-nor
-.BR \-cfile ,
-then
-.B wrjpgcom
-will read the comment text from standard input.  (In this case an input image
-file name MUST be supplied, so that the source JPEG file comes from somewhere
-else.)  You can enter multiple lines, up to 64KB worth.  Type an end-of-file
-indicator (usually control-D) to terminate the comment text entry.
-.PP
-.B wrjpgcom
-will not add a COM block if the provided comment string is empty.  Therefore
-\fB\-replace \-comment ""\fR can be used to delete all COM blocks from a file.
-.SH EXAMPLES
-.LP
-Add a short comment to in.jpg, producing out.jpg:
-.IP
-.B wrjpgcom \-c
-\fI"View of my back yard" in.jpg
-.B >
-.I out.jpg
-.PP
-Attach a long comment previously stored in comment.txt:
-.IP
-.B wrjpgcom
-.I in.jpg
-.B <
-.I comment.txt
-.B >
-.I out.jpg
-.PP
-or equivalently
-.IP
-.B wrjpgcom
-.B -cfile
-.I comment.txt
-.B <
-.I in.jpg
-.B >
-.I out.jpg
-.SH SEE ALSO
-.BR cjpeg (1),
-.BR djpeg (1),
-.BR jpegtran (1),
-.BR rdjpgcom (1)
-.SH AUTHOR
-Independent JPEG Group
diff --git a/misc/builddeps/linux32/ode/bin/ode-config b/misc/builddeps/linux32/ode/bin/ode-config
deleted file mode 100755 (executable)
index dddc75d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-
-prefix=/usr/local
-exec_prefix=${prefix}
-exec_prefix_set=no
-
-usage="\
-Usage: ode-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]"
-
-if test $# -eq 0; then
-      echo "${usage}" 1>&2
-      exit 1
-fi
-
-while test $# -gt 0; do
-  case "$1" in
-  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) optarg= ;;
-  esac
-
-  case $1 in
-    --prefix=*)
-      prefix=$optarg
-      if test $exec_prefix_set = no ; then
-        exec_prefix=$optarg
-      fi
-      ;;
-    --prefix)
-      echo $prefix
-      ;;
-    --exec-prefix=*)
-      exec_prefix=$optarg
-      exec_prefix_set=yes
-      ;;
-    --exec-prefix)
-      echo $exec_prefix
-      ;;
-    --version)
-      echo 0.12
-      ;;
-    --cflags)
-      echo  -I${prefix}/include -DdDOUBLE
-      ;;
-    --libs)
-      echo  -L${exec_prefix}/lib -lode
-      ;;
-    *)
-      echo "${usage}" 1>&2
-      exit 1
-      ;;
-  esac
-  shift
-done
diff --git a/misc/builddeps/linux32/ode/include/ode/collision.h b/misc/builddeps/linux32/ode/include/ode/collision.h
deleted file mode 100644 (file)
index e89726c..0000000
+++ /dev/null
@@ -1,1523 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_COLLISION_H_
-#define _ODE_COLLISION_H_
-
-#include <ode/common.h>
-#include <ode/collision_space.h>
-#include <ode/contact.h>
-// Include odeinit.h for backward compatibility as some of initialization APIs 
-// were initally declared in current header.
-#include <ode/odeinit.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup collide Collision Detection
- *
- * ODE has two main components: a dynamics simulation engine and a collision
- * detection engine. The collision engine is given information about the
- * shape of each body. At each time step it figures out which bodies touch
- * each other and passes the resulting contact point information to the user.
- * The user in turn creates contact joints between bodies.
- *
- * Using ODE's collision detection is optional - an alternative collision
- * detection system can be used as long as it can supply the right kinds of
- * contact information.
- */
-
-
-/* ************************************************************************ */
-/* general functions */
-
-/**
- * @brief Destroy a geom, removing it from any space.
- *
- * Destroy a geom, removing it from any space it is in first. This one
- * function destroys a geom of any type, but to create a geom you must call
- * a creation function for that type.
- *
- * When a space is destroyed, if its cleanup mode is 1 (the default) then all
- * the geoms in that space are automatically destroyed as well.
- *
- * @param geom the geom to be destroyed.
- * @ingroup collide
- */
-ODE_API void dGeomDestroy (dGeomID geom);
-
-
-/**
- * @brief Set the user-defined data pointer stored in the geom.
- *
- * @param geom the geom to hold the data
- * @param data the data pointer to be stored
- * @ingroup collide
- */
-ODE_API void dGeomSetData (dGeomID geom, void* data);
-
-
-/**
- * @brief Get the user-defined data pointer stored in the geom.
- *
- * @param geom the geom containing the data
- * @ingroup collide
- */
-ODE_API void *dGeomGetData (dGeomID geom);
-
-
-/**
- * @brief Set the body associated with a placeable geom.
- *
- * Setting a body on a geom automatically combines the position vector and
- * rotation matrix of the body and geom, so that setting the position or
- * orientation of one will set the value for both objects. Setting a body
- * ID of zero gives the geom its own position and rotation, independent
- * from any body. If the geom was previously connected to a body then its
- * new independent position/rotation is set to the current position/rotation
- * of the body.
- *
- * Calling these functions on a non-placeable geom results in a runtime
- * error in the debug build of ODE.
- *
- * @param geom the geom to connect
- * @param body the body to attach to the geom
- * @ingroup collide
- */
-ODE_API void dGeomSetBody (dGeomID geom, dBodyID body);
-
-
-/**
- * @brief Get the body associated with a placeable geom.
- * @param geom the geom to query.
- * @sa dGeomSetBody
- * @ingroup collide
- */
-ODE_API dBodyID dGeomGetBody (dGeomID geom);
-
-
-/**
- * @brief Set the position vector of a placeable geom.
- *
- * If the geom is attached to a body, the body's position will also be changed.
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to set.
- * @param x the new X coordinate.
- * @param y the new Y coordinate.
- * @param z the new Z coordinate.
- * @sa dBodySetPosition
- * @ingroup collide
- */
-ODE_API void dGeomSetPosition (dGeomID geom, dReal x, dReal y, dReal z);
-
-
-/**
- * @brief Set the rotation matrix of a placeable geom.
- *
- * If the geom is attached to a body, the body's rotation will also be changed.
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to set.
- * @param R the new rotation matrix.
- * @sa dBodySetRotation
- * @ingroup collide
- */
-ODE_API void dGeomSetRotation (dGeomID geom, const dMatrix3 R);
-
-
-/**
- * @brief Set the rotation of a placeable geom.
- *
- * If the geom is attached to a body, the body's rotation will also be changed.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to set.
- * @param Q the new rotation.
- * @sa dBodySetQuaternion
- * @ingroup collide
- */
-ODE_API void dGeomSetQuaternion (dGeomID geom, const dQuaternion Q);
-
-
-/**
- * @brief Get the position vector of a placeable geom.
- *
- * If the geom is attached to a body, the body's position will be returned.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to query.
- * @returns A pointer to the geom's position vector.
- * @remarks The returned value is a pointer to the geom's internal
- *          data structure. It is valid until any changes are made
- *          to the geom.
- * @sa dBodyGetPosition
- * @ingroup collide
- */
-ODE_API const dReal * dGeomGetPosition (dGeomID geom);
-
-
-/**
- * @brief Copy the position of a geom into a vector.
- * @ingroup collide
- * @param geom  the geom to query
- * @param pos   a copy of the geom position
- * @sa dGeomGetPosition
- */
-ODE_API void dGeomCopyPosition (dGeomID geom, dVector3 pos);
-
-
-/**
- * @brief Get the rotation matrix of a placeable geom.
- *
- * If the geom is attached to a body, the body's rotation will be returned.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to query.
- * @returns A pointer to the geom's rotation matrix.
- * @remarks The returned value is a pointer to the geom's internal
- *          data structure. It is valid until any changes are made
- *          to the geom.
- * @sa dBodyGetRotation
- * @ingroup collide
- */
-ODE_API const dReal * dGeomGetRotation (dGeomID geom);
-
-
-/**
- * @brief Get the rotation matrix of a placeable geom.
- *
- * If the geom is attached to a body, the body's rotation will be returned.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom   the geom to query.
- * @param R      a copy of the geom rotation
- * @sa dGeomGetRotation
- * @ingroup collide
- */
-ODE_API void dGeomCopyRotation(dGeomID geom, dMatrix3 R);
-
-
-/**
- * @brief Get the rotation quaternion of a placeable geom.
- *
- * If the geom is attached to a body, the body's quaternion will be returned.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to query.
- * @param result a copy of the rotation quaternion.
- * @sa dBodyGetQuaternion
- * @ingroup collide
- */
-ODE_API void dGeomGetQuaternion (dGeomID geom, dQuaternion result);
-
-
-/**
- * @brief Return the axis-aligned bounding box.
- *
- * Return in aabb an axis aligned bounding box that surrounds the given geom.
- * The aabb array has elements (minx, maxx, miny, maxy, minz, maxz). If the
- * geom is a space, a bounding box that surrounds all contained geoms is
- * returned.
- *
- * This function may return a pre-computed cached bounding box, if it can
- * determine that the geom has not moved since the last time the bounding
- * box was computed.
- *
- * @param geom the geom to query
- * @param aabb the returned bounding box
- * @ingroup collide
- */
-ODE_API void dGeomGetAABB (dGeomID geom, dReal aabb[6]);
-
-
-/**
- * @brief Determing if a geom is a space.
- * @param geom the geom to query
- * @returns Non-zero if the geom is a space, zero otherwise.
- * @ingroup collide
- */
-ODE_API int dGeomIsSpace (dGeomID geom);
-
-
-/**
- * @brief Query for the space containing a particular geom.
- * @param geom the geom to query
- * @returns The space that contains the geom, or NULL if the geom is
- *          not contained by a space.
- * @ingroup collide
- */
-ODE_API dSpaceID dGeomGetSpace (dGeomID);
-
-
-/**
- * @brief Given a geom, this returns its class.
- *
- * The ODE classes are:
- *  @li dSphereClass
- *  @li dBoxClass
- *  @li dCylinderClass
- *  @li dPlaneClass
- *  @li dRayClass
- *  @li dConvexClass
- *  @li dGeomTransformClass
- *  @li dTriMeshClass
- *  @li dSimpleSpaceClass
- *  @li dHashSpaceClass
- *  @li dQuadTreeSpaceClass
- *  @li dFirstUserClass
- *  @li dLastUserClass
- *
- * User-defined class will return their own number.
- *
- * @param geom the geom to query
- * @returns The geom class ID.
- * @ingroup collide
- */
-ODE_API int dGeomGetClass (dGeomID geom);
-
-
-/**
- * @brief Set the "category" bitfield for the given geom.
- *
- * The category bitfield is used by spaces to govern which geoms will
- * interact with each other. The bitfield is guaranteed to be at least
- * 32 bits wide. The default category values for newly created geoms
- * have all bits set.
- *
- * @param geom the geom to set
- * @param bits the new bitfield value
- * @ingroup collide
- */
-ODE_API void dGeomSetCategoryBits (dGeomID geom, unsigned long bits);
-
-
-/**
- * @brief Set the "collide" bitfield for the given geom.
- *
- * The collide bitfield is used by spaces to govern which geoms will
- * interact with each other. The bitfield is guaranteed to be at least
- * 32 bits wide. The default category values for newly created geoms
- * have all bits set.
- *
- * @param geom the geom to set
- * @param bits the new bitfield value
- * @ingroup collide
- */
-ODE_API void dGeomSetCollideBits (dGeomID geom, unsigned long bits);
-
-
-/**
- * @brief Get the "category" bitfield for the given geom.
- *
- * @param geom the geom to set
- * @param bits the new bitfield value
- * @sa dGeomSetCategoryBits
- * @ingroup collide
- */
-ODE_API unsigned long dGeomGetCategoryBits (dGeomID);
-
-
-/**
- * @brief Get the "collide" bitfield for the given geom.
- *
- * @param geom the geom to set
- * @param bits the new bitfield value
- * @sa dGeomSetCollideBits
- * @ingroup collide
- */
-ODE_API unsigned long dGeomGetCollideBits (dGeomID);
-
-
-/**
- * @brief Enable a geom.
- *
- * Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2,
- * although they can still be members of a space. New geoms are created in
- * the enabled state.
- *
- * @param geom   the geom to enable
- * @sa dGeomDisable
- * @sa dGeomIsEnabled
- * @ingroup collide
- */
-ODE_API void dGeomEnable (dGeomID geom);
-
-
-/**
- * @brief Disable a geom.
- *
- * Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2,
- * although they can still be members of a space. New geoms are created in
- * the enabled state.
- *
- * @param geom   the geom to disable
- * @sa dGeomDisable
- * @sa dGeomIsEnabled
- * @ingroup collide
- */
-ODE_API void dGeomDisable (dGeomID geom);
-
-
-/**
- * @brief Check to see if a geom is enabled.
- *
- * Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2,
- * although they can still be members of a space. New geoms are created in
- * the enabled state.
- *
- * @param geom   the geom to query
- * @returns Non-zero if the geom is enabled, zero otherwise.
- * @sa dGeomDisable
- * @sa dGeomIsEnabled
- * @ingroup collide
- */
-ODE_API int dGeomIsEnabled (dGeomID geom);
-
-
-enum
-{
-       dGeomCommonControlClass = 0,
-       dGeomColliderControlClass = 1
-};
-
-enum
-{
-       dGeomCommonAnyControlCode = 0,
-
-       dGeomColliderSetMergeSphereContactsControlCode = 1,
-       dGeomColliderGetMergeSphereContactsControlCode = 2
-};
-
-enum
-{
-       dGeomColliderMergeContactsValue__Default = 0, // Used with Set... to restore default value
-       dGeomColliderMergeContactsValue_None = 1,
-       dGeomColliderMergeContactsValue_Normals = 2,
-       dGeomColliderMergeContactsValue_Full = 3
-};
-
-/**
- * @brief Execute low level control operation for geometry.
- *
- * The variable the dataSize points to must be initialized before the call.
- * If the size does not match the one expected for the control class/code function
- * changes it to the size expected and returns failure. This implies the function 
- * can be called with NULL data and zero size to test if control class/code is supported
- * and obtain required data size for it.
- *
- * dGeomCommonAnyControlCode applies to any control class and returns success if 
- * at least one control code is available for the given class with given geom.
- *
- * Currently there are the folliwing control classes supported:
- *  @li dGeomColliderControlClass
- *
- * For dGeomColliderControlClass there are the following codes available:
- *  @li dGeomColliderSetMergeSphereContactsControlCode (arg of type int, dGeomColliderMergeContactsValue_*)
- *  @li dGeomColliderGetMergeSphereContactsControlCode (arg of type int, dGeomColliderMergeContactsValue_*)
- *
- * @param geom   the geom to control
- * @param controlClass   the control class
- * @param controlCode   the control code for the class
- * @param dataValue   the control argument pointer
- * @param dataSize   the control argument size provided or expected
- * @returns Boolean execution status
- * @ingroup collide
- */
-ODE_API int dGeomLowLevelControl (dGeomID geom, int controlClass, int controlCode, void *dataValue, int *dataSize);
-
-
-/**
- * @brief Get world position of a relative point on geom.
- *
- * Calling this function on a non-placeable geom results in the same point being
- * returned.
- *
- * @ingroup collide
- * @param result will contain the result.
- */
-ODE_API void dGeomGetRelPointPos
-(
-  dGeomID geom, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief takes a point in global coordinates and returns
- * the point's position in geom-relative coordinates.
- *
- * Calling this function on a non-placeable geom results in the same point being
- * returned.
- *
- * @remarks
- * This is the inverse of dGeomGetRelPointPos()
- * @ingroup collide
- * @param result will contain the result.
- */
-ODE_API void dGeomGetPosRelPoint
-(
-  dGeomID geom, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Convert from geom-local to world coordinates.
- *
- * Calling this function on a non-placeable geom results in the same vector being
- * returned.
- *
- * @ingroup collide
- * @param result will contain the result.
- */
-ODE_API void dGeomVectorToWorld
-(
-  dGeomID geom, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Convert from world to geom-local coordinates.
- *
- * Calling this function on a non-placeable geom results in the same vector being
- * returned.
- *
- * @ingroup collide
- * @param result will contain the result.
- */
-ODE_API void dGeomVectorFromWorld
-(
-  dGeomID geom, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-
-/* ************************************************************************ */
-/* geom offset from body */
-
-/**
- * @brief Set the local offset position of a geom from its body.
- *
- * Sets the geom's positional offset in local coordinates.
- * After this call, the geom will be at a new position determined from the
- * body's position and the offset.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param x the new X coordinate.
- * @param y the new Y coordinate.
- * @param z the new Z coordinate.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetPosition (dGeomID geom, dReal x, dReal y, dReal z);
-
-
-/**
- * @brief Set the local offset rotation matrix of a geom from its body.
- *
- * Sets the geom's rotational offset in local coordinates.
- * After this call, the geom will be at a new position determined from the
- * body's position and the offset.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param R the new rotation matrix.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetRotation (dGeomID geom, const dMatrix3 R);
-
-
-/**
- * @brief Set the local offset rotation of a geom from its body.
- *
- * Sets the geom's rotational offset in local coordinates.
- * After this call, the geom will be at a new position determined from the
- * body's position and the offset.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param Q the new rotation.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetQuaternion (dGeomID geom, const dQuaternion Q);
-
-
-/**
- * @brief Set the offset position of a geom from its body.
- *
- * Sets the geom's positional offset to move it to the new world
- * coordinates.
- * After this call, the geom will be at the world position passed in,
- * and the offset will be the difference from the current body position.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param x the new X coordinate.
- * @param y the new Y coordinate.
- * @param z the new Z coordinate.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetWorldPosition (dGeomID geom, dReal x, dReal y, dReal z);
-
-
-/**
- * @brief Set the offset rotation of a geom from its body.
- *
- * Sets the geom's rotational offset to orient it to the new world
- * rotation matrix.
- * After this call, the geom will be at the world orientation passed in,
- * and the offset will be the difference from the current body orientation.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param R the new rotation matrix.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetWorldRotation (dGeomID geom, const dMatrix3 R);
-
-
-/**
- * @brief Set the offset rotation of a geom from its body.
- *
- * Sets the geom's rotational offset to orient it to the new world
- * rotation matrix.
- * After this call, the geom will be at the world orientation passed in,
- * and the offset will be the difference from the current body orientation.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param Q the new rotation.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetWorldQuaternion (dGeomID geom, const dQuaternion);
-
-
-/**
- * @brief Clear any offset from the geom.
- *
- * If the geom has an offset, it is eliminated and the geom is
- * repositioned at the body's position.  If the geom has no offset,
- * this function does nothing.
- * This is more efficient than calling dGeomSetOffsetPosition(zero)
- * and dGeomSetOffsetRotation(identiy), because this function actually
- * eliminates the offset, rather than leaving it as the identity transform.
- *
- * @param geom the geom to have its offset destroyed.
- * @ingroup collide
- */
-ODE_API void dGeomClearOffset(dGeomID geom);
-
-
-/**
- * @brief Check to see whether the geom has an offset.
- *
- * This function will return non-zero if the offset has been created.
- * Note that there is a difference between a geom with no offset,
- * and a geom with an offset that is the identity transform.
- * In the latter case, although the observed behaviour is identical,
- * there is a unnecessary computation involved because the geom will
- * be applying the transform whenever it needs to recalculate its world
- * position.
- *
- * @param geom the geom to query.
- * @returns Non-zero if the geom has an offset, zero otherwise.
- * @ingroup collide
- */
-ODE_API int dGeomIsOffset(dGeomID geom);
-
-
-/**
- * @brief Get the offset position vector of a geom.
- *
- * Returns the positional offset of the geom in local coordinates.
- * If the geom has no offset, this function returns the zero vector.
- *
- * @param geom the geom to query.
- * @returns A pointer to the geom's offset vector.
- * @remarks The returned value is a pointer to the geom's internal
- *          data structure. It is valid until any changes are made
- *          to the geom.
- * @ingroup collide
- */
-ODE_API const dReal * dGeomGetOffsetPosition (dGeomID geom);
-
-
-/**
- * @brief Copy the offset position vector of a geom.
- *
- * Returns the positional offset of the geom in local coordinates.
- * If the geom has no offset, this function returns the zero vector.
- *
- * @param geom   the geom to query.
- * @param pos    returns the offset position
- * @ingroup collide
- */
-ODE_API void dGeomCopyOffsetPosition (dGeomID geom, dVector3 pos);
-
-
-/**
- * @brief Get the offset rotation matrix of a geom.
- *
- * Returns the rotational offset of the geom in local coordinates.
- * If the geom has no offset, this function returns the identity
- * matrix.
- *
- * @param geom the geom to query.
- * @returns A pointer to the geom's offset rotation matrix.
- * @remarks The returned value is a pointer to the geom's internal
- *          data structure. It is valid until any changes are made
- *          to the geom.
- * @ingroup collide
- */
-ODE_API const dReal * dGeomGetOffsetRotation (dGeomID geom);
-
-
-/**
- * @brief Copy the offset rotation matrix of a geom.
- *
- * Returns the rotational offset of the geom in local coordinates.
- * If the geom has no offset, this function returns the identity
- * matrix.
- *
- * @param geom   the geom to query.
- * @param R      returns the rotation matrix.
- * @ingroup collide
- */
-ODE_API void dGeomCopyOffsetRotation (dGeomID geom, dMatrix3 R);
-
-
-/**
- * @brief Get the offset rotation quaternion of a geom.
- *
- * Returns the rotation offset of the geom as a quaternion.
- * If the geom has no offset, the identity quaternion is returned.
- *
- * @param geom the geom to query.
- * @param result a copy of the rotation quaternion.
- * @ingroup collide
- */
-ODE_API void dGeomGetOffsetQuaternion (dGeomID geom, dQuaternion result);
-
-
-/* ************************************************************************ */
-/* collision detection */
-
-/*
- *     Just generate any contacts (disables any contact refining).
- */
-#define CONTACTS_UNIMPORTANT                   0x80000000
-
-/**
- *
- * @brief Given two geoms o1 and o2 that potentially intersect,
- * generate contact information for them.
- *
- * Internally, this just calls the correct class-specific collision
- * functions for o1 and o2.
- *
- * @param o1 The first geom to test.
- * @param o2 The second geom to test.
- *
- * @param flags The flags specify how contacts should be generated if
- * the geoms touch. The lower 16 bits of flags is an integer that
- * specifies the maximum number of contact points to generate. You must
- * ask for at least one contact. 
- * Additionally, following bits may be set:
- * CONTACTS_UNIMPORTANT -- just generate any contacts (skip contact refining).
- * All other bits in flags must be set to zero. In the future the other bits 
- * may be used to select from different contact generation strategies.
- *
- * @param contact Points to an array of dContactGeom structures. The array
- * must be able to hold at least the maximum number of contacts. These
- * dContactGeom structures may be embedded within larger structures in the
- * array -- the skip parameter is the byte offset from one dContactGeom to
- * the next in the array. If skip is sizeof(dContactGeom) then contact
- * points to a normal (C-style) array. It is an error for skip to be smaller
- * than sizeof(dContactGeom).
- *
- * @returns If the geoms intersect, this function returns the number of contact
- * points generated (and updates the contact array), otherwise it returns 0
- * (and the contact array is not touched).
- *
- * @remarks If a space is passed as o1 or o2 then this function will collide
- * all objects contained in o1 with all objects contained in o2, and return
- * the resulting contact points. This method for colliding spaces with geoms
- * (or spaces with spaces) provides no user control over the individual
- * collisions. To get that control, use dSpaceCollide or dSpaceCollide2 instead.
- *
- * @remarks If o1 and o2 are the same geom then this function will do nothing
- * and return 0. Technically speaking an object intersects with itself, but it
- * is not useful to find contact points in this case.
- *
- * @remarks This function does not care if o1 and o2 are in the same space or not
- * (or indeed if they are in any space at all).
- *
- * @ingroup collide
- */
-ODE_API int dCollide (dGeomID o1, dGeomID o2, int flags, dContactGeom *contact,
-             int skip);
-
-/**
- * @brief Determines which pairs of geoms in a space may potentially intersect,
- * and calls the callback function for each candidate pair.
- *
- * @param space The space to test.
- *
- * @param data Passed from dSpaceCollide directly to the callback
- * function. Its meaning is user defined. The o1 and o2 arguments are the
- * geoms that may be near each other.
- *
- * @param callback A callback function is of type @ref dNearCallback.
- *
- * @remarks Other spaces that are contained within the colliding space are
- * not treated specially, i.e. they are not recursed into. The callback
- * function may be passed these contained spaces as one or both geom
- * arguments.
- *
- * @remarks dSpaceCollide() is guaranteed to pass all intersecting geom
- * pairs to the callback function, but may also pass close but
- * non-intersecting pairs. The number of these calls depends on the
- * internal algorithms used by the space. Thus you should not expect
- * that dCollide will return contacts for every pair passed to the
- * callback.
- *
- * @sa dSpaceCollide2
- * @ingroup collide
- */
-ODE_API void dSpaceCollide (dSpaceID space, void *data, dNearCallback *callback);
-
-
-/**
- * @brief Determines which geoms from one space may potentially intersect with 
- * geoms from another space, and calls the callback function for each candidate 
- * pair. 
- *
- * @param space1 The first space to test.
- *
- * @param space2 The second space to test.
- *
- * @param data Passed from dSpaceCollide directly to the callback
- * function. Its meaning is user defined. The o1 and o2 arguments are the
- * geoms that may be near each other.
- *
- * @param callback A callback function is of type @ref dNearCallback.
- *
- * @remarks This function can also test a single non-space geom against a 
- * space. This function is useful when there is a collision hierarchy, i.e. 
- * when there are spaces that contain other spaces.
- *
- * @remarks Other spaces that are contained within the colliding space are
- * not treated specially, i.e. they are not recursed into. The callback
- * function may be passed these contained spaces as one or both geom
- * arguments.
- *
- * @remarks Sublevel value of space affects how the spaces are iterated.
- * Both spaces are recursed only if their sublevels match. Otherwise, only
- * the space with greater sublevel is recursed and the one with lesser sublevel
- * is used as a geom itself.
- *
- * @remarks dSpaceCollide2() is guaranteed to pass all intersecting geom
- * pairs to the callback function, but may also pass close but
- * non-intersecting pairs. The number of these calls depends on the
- * internal algorithms used by the space. Thus you should not expect
- * that dCollide will return contacts for every pair passed to the
- * callback.
- *
- * @sa dSpaceCollide
- * @sa dSpaceSetSublevel
- * @ingroup collide
- */
-ODE_API void dSpaceCollide2 (dGeomID space1, dGeomID space2, void *data, dNearCallback *callback);
-
-
-/* ************************************************************************ */
-/* standard classes */
-
-/* the maximum number of user classes that are supported */
-enum {
-  dMaxUserClasses = 4
-};
-
-/* class numbers - each geometry object needs a unique number */
-enum {
-  dSphereClass = 0,
-  dBoxClass,
-  dCapsuleClass,
-  dCylinderClass,
-  dPlaneClass,
-  dRayClass,
-  dConvexClass,
-  dGeomTransformClass,
-  dTriMeshClass,
-  dHeightfieldClass,
-
-  dFirstSpaceClass,
-  dSimpleSpaceClass = dFirstSpaceClass,
-  dHashSpaceClass,
-  dSweepAndPruneSpaceClass, // SAP
-  dQuadTreeSpaceClass,
-  dLastSpaceClass = dQuadTreeSpaceClass,
-
-  dFirstUserClass,
-  dLastUserClass = dFirstUserClass + dMaxUserClasses - 1,
-  dGeomNumClasses
-};
-
-
-/**
- * @defgroup collide_sphere Sphere Class
- * @ingroup collide
- */
-
-/**
- * @brief Create a sphere geom of the given radius, and return its ID. 
- *
- * @param space   a space to contain the new geom. May be null.
- * @param radius  the radius of the sphere.
- *
- * @returns A new sphere geom.
- *
- * @remarks The point of reference for a sphere is its center.
- *
- * @sa dGeomDestroy
- * @sa dGeomSphereSetRadius
- * @ingroup collide_sphere
- */
-ODE_API dGeomID dCreateSphere (dSpaceID space, dReal radius);
-
-
-/**
- * @brief Set the radius of a sphere geom.
- *
- * @param sphere  the sphere to set.
- * @param radius  the new radius.
- *
- * @sa dGeomSphereGetRadius
- * @ingroup collide_sphere
- */
-ODE_API void dGeomSphereSetRadius (dGeomID sphere, dReal radius);
-
-
-/**
- * @brief Retrieves the radius of a sphere geom.
- *
- * @param sphere  the sphere to query.
- *
- * @sa dGeomSphereSetRadius
- * @ingroup collide_sphere
- */
-ODE_API dReal dGeomSphereGetRadius (dGeomID sphere);
-
-
-/**
- * @brief Calculate the depth of the a given point within a sphere.
- *
- * @param sphere  the sphere to query.
- * @param x       the X coordinate of the point.
- * @param y       the Y coordinate of the point.
- * @param z       the Z coordinate of the point.
- *
- * @returns The depth of the point. Points inside the sphere will have a 
- * positive depth, points outside it will have a negative depth, and points
- * on the surface will have a depth of zero.
- *
- * @ingroup collide_sphere
- */
-ODE_API dReal dGeomSpherePointDepth (dGeomID sphere, dReal x, dReal y, dReal z);
-
-
-//--> Convex Functions
-ODE_API dGeomID dCreateConvex (dSpaceID space,
-                              dReal *_planes,
-                              unsigned int _planecount,
-                              dReal *_points,
-                              unsigned int _pointcount,unsigned int *_polygons);
-
-ODE_API void dGeomSetConvex (dGeomID g,
-                            dReal *_planes,
-                            unsigned int _count,
-                            dReal *_points,
-                            unsigned int _pointcount,unsigned int *_polygons);
-//<-- Convex Functions
-
-/**
- * @defgroup collide_box Box Class
- * @ingroup collide
- */
-
-/**
- * @brief Create a box geom with the provided side lengths.
- *
- * @param space   a space to contain the new geom. May be null.
- * @param lx      the length of the box along the X axis
- * @param ly      the length of the box along the Y axis
- * @param lz      the length of the box along the Z axis
- *
- * @returns A new box geom.
- *
- * @remarks The point of reference for a box is its center.
- *
- * @sa dGeomDestroy
- * @sa dGeomBoxSetLengths
- * @ingroup collide_box
- */
-ODE_API dGeomID dCreateBox (dSpaceID space, dReal lx, dReal ly, dReal lz);
-
-
-/**
- * @brief Set the side lengths of the given box.
- *
- * @param box  the box to set
- * @param lx      the length of the box along the X axis
- * @param ly      the length of the box along the Y axis
- * @param lz      the length of the box along the Z axis
- *
- * @sa dGeomBoxGetLengths
- * @ingroup collide_box
- */
-ODE_API void dGeomBoxSetLengths (dGeomID box, dReal lx, dReal ly, dReal lz);
-
-
-/**
- * @brief Get the side lengths of a box.
- *
- * @param box     the box to query
- * @param result  the returned side lengths
- *
- * @sa dGeomBoxSetLengths
- * @ingroup collide_box
- */
-ODE_API void dGeomBoxGetLengths (dGeomID box, dVector3 result);
-
-
-/**
- * @brief Return the depth of a point in a box.
- * 
- * @param box  the box to query
- * @param x    the X coordinate of the point to test.
- * @param y    the Y coordinate of the point to test.
- * @param z    the Z coordinate of the point to test.
- *
- * @returns The depth of the point. Points inside the box will have a 
- * positive depth, points outside it will have a negative depth, and points
- * on the surface will have a depth of zero.
- */
-ODE_API dReal dGeomBoxPointDepth (dGeomID box, dReal x, dReal y, dReal z);
-
-
-ODE_API dGeomID dCreatePlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d);
-ODE_API void dGeomPlaneSetParams (dGeomID plane, dReal a, dReal b, dReal c, dReal d);
-ODE_API void dGeomPlaneGetParams (dGeomID plane, dVector4 result);
-ODE_API dReal dGeomPlanePointDepth (dGeomID plane, dReal x, dReal y, dReal z);
-
-ODE_API dGeomID dCreateCapsule (dSpaceID space, dReal radius, dReal length);
-ODE_API void dGeomCapsuleSetParams (dGeomID ccylinder, dReal radius, dReal length);
-ODE_API void dGeomCapsuleGetParams (dGeomID ccylinder, dReal *radius, dReal *length);
-ODE_API dReal dGeomCapsulePointDepth (dGeomID ccylinder, dReal x, dReal y, dReal z);
-
-// For now we want to have a backwards compatible C-API, note: C++ API is not.
-#define dCreateCCylinder dCreateCapsule
-#define dGeomCCylinderSetParams dGeomCapsuleSetParams
-#define dGeomCCylinderGetParams dGeomCapsuleGetParams
-#define dGeomCCylinderPointDepth dGeomCapsulePointDepth
-#define dCCylinderClass dCapsuleClass
-
-ODE_API dGeomID dCreateCylinder (dSpaceID space, dReal radius, dReal length);
-ODE_API void dGeomCylinderSetParams (dGeomID cylinder, dReal radius, dReal length);
-ODE_API void dGeomCylinderGetParams (dGeomID cylinder, dReal *radius, dReal *length);
-
-ODE_API dGeomID dCreateRay (dSpaceID space, dReal length);
-ODE_API void dGeomRaySetLength (dGeomID ray, dReal length);
-ODE_API dReal dGeomRayGetLength (dGeomID ray);
-ODE_API void dGeomRaySet (dGeomID ray, dReal px, dReal py, dReal pz,
-                 dReal dx, dReal dy, dReal dz);
-ODE_API void dGeomRayGet (dGeomID ray, dVector3 start, dVector3 dir);
-
-/*
- * Set/get ray flags that influence ray collision detection.
- * These flags are currently only noticed by the trimesh collider, because
- * they can make a major differences there.
- */
-ODE_API void dGeomRaySetParams (dGeomID g, int FirstContact, int BackfaceCull);
-ODE_API void dGeomRayGetParams (dGeomID g, int *FirstContact, int *BackfaceCull);
-ODE_API void dGeomRaySetClosestHit (dGeomID g, int closestHit);
-ODE_API int dGeomRayGetClosestHit (dGeomID g);
-
-#include "collision_trimesh.h"
-
-ODE_API dGeomID dCreateGeomTransform (dSpaceID space);
-ODE_API void dGeomTransformSetGeom (dGeomID g, dGeomID obj);
-ODE_API dGeomID dGeomTransformGetGeom (dGeomID g);
-ODE_API void dGeomTransformSetCleanup (dGeomID g, int mode);
-ODE_API int dGeomTransformGetCleanup (dGeomID g);
-ODE_API void dGeomTransformSetInfo (dGeomID g, int mode);
-ODE_API int dGeomTransformGetInfo (dGeomID g);
-
-
-/* ************************************************************************ */
-/* heightfield functions */
-
-
-// Data storage for heightfield data.
-struct dxHeightfieldData;
-typedef struct dxHeightfieldData* dHeightfieldDataID;
-
-
-/**
- * @brief Callback prototype
- *
- * Used by the callback heightfield data type to sample a height for a
- * given cell position.
- *
- * @param p_user_data User data specified when creating the dHeightfieldDataID
- * @param x The index of a sample in the local x axis. It is a value
- * in the range zero to ( nWidthSamples - 1 ).
- * @param x The index of a sample in the local z axis. It is a value
- * in the range zero to ( nDepthSamples - 1 ).
- *
- * @return The sample height which is then scaled and offset using the
- * values specified when the heightfield data was created.
- *
- * @ingroup collide
- */
-typedef dReal dHeightfieldGetHeight( void* p_user_data, int x, int z );
-
-
-
-/**
- * @brief Creates a heightfield geom.
- *
- * Uses the information in the given dHeightfieldDataID to construct
- * a geom representing a heightfield in a collision space.
- *
- * @param space The space to add the geom to.
- * @param data The dHeightfieldDataID created by dGeomHeightfieldDataCreate and
- * setup by dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte,
- * dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat.
- * @param bPlaceable If non-zero this geom can be transformed in the world using the
- * usual functions such as dGeomSetPosition and dGeomSetRotation. If the geom is
- * not set as placeable, then it uses a fixed orientation where the global y axis
- * represents the dynamic 'height' of the heightfield.
- *
- * @return A geom id to reference this geom in other calls.
- *
- * @ingroup collide
- */
-ODE_API dGeomID dCreateHeightfield( dSpaceID space,
-                                       dHeightfieldDataID data, int bPlaceable );
-
-
-/**
- * @brief Creates a new empty dHeightfieldDataID.
- *
- * Allocates a new dHeightfieldDataID and returns it. You must call
- * dGeomHeightfieldDataDestroy to destroy it after the geom has been removed.
- * The dHeightfieldDataID value is used when specifying a data format type.
- *
- * @return A dHeightfieldDataID for use with dGeomHeightfieldDataBuildCallback,
- * dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or
- * dGeomHeightfieldDataBuildFloat.
- * @ingroup collide
- */
-ODE_API dHeightfieldDataID dGeomHeightfieldDataCreate(void);
-
-
-/**
- * @brief Destroys a dHeightfieldDataID.
- *
- * Deallocates a given dHeightfieldDataID and all managed resources.
- *
- * @param d A dHeightfieldDataID created by dGeomHeightfieldDataCreate
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataDestroy( dHeightfieldDataID d );
-
-
-
-/**
- * @brief Configures a dHeightfieldDataID to use a callback to
- * retrieve height data.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is computed by
- * the user and it should use the given callback when determining
- * the height of a given element of it's shape.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildCallback( dHeightfieldDataID d,
-                               void* pUserData, dHeightfieldGetHeight* pCallback,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness, int bWrap );
-
-/**
- * @brief Configures a dHeightfieldDataID to use height data in byte format.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is stored as a rectangular
- * array of bytes (8 bit unsigned) representing the height at each sample point.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param pHeightData A pointer to the height data.
- * @param bCopyHeightData When non-zero the height data is copied to an
- * internal store. When zero the height data is accessed by reference and
- * so must persist throughout the lifetime of the heightfield.
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildByte( dHeightfieldDataID d,
-                               const unsigned char* pHeightData, int bCopyHeightData,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness,     int bWrap );
-
-/**
- * @brief Configures a dHeightfieldDataID to use height data in short format.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is stored as a rectangular
- * array of shorts (16 bit signed) representing the height at each sample point.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param pHeightData A pointer to the height data.
- * @param bCopyHeightData When non-zero the height data is copied to an
- * internal store. When zero the height data is accessed by reference and
- * so must persist throughout the lifetime of the heightfield.
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildShort( dHeightfieldDataID d,
-                               const short* pHeightData, int bCopyHeightData,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness, int bWrap );
-
-/**
- * @brief Configures a dHeightfieldDataID to use height data in 
- * single precision floating point format.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is stored as a rectangular
- * array of single precision floats representing the height at each
- * sample point.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param pHeightData A pointer to the height data.
- * @param bCopyHeightData When non-zero the height data is copied to an
- * internal store. When zero the height data is accessed by reference and
- * so must persist throughout the lifetime of the heightfield.
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildSingle( dHeightfieldDataID d,
-                               const float* pHeightData, int bCopyHeightData,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness, int bWrap );
-
-/**
- * @brief Configures a dHeightfieldDataID to use height data in 
- * double precision floating point format.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is stored as a rectangular
- * array of double precision floats representing the height at each
- * sample point.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param pHeightData A pointer to the height data.
- * @param bCopyHeightData When non-zero the height data is copied to an
- * internal store. When zero the height data is accessed by reference and
- * so must persist throughout the lifetime of the heightfield.
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildDouble( dHeightfieldDataID d,
-                               const double* pHeightData, int bCopyHeightData,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness, int bWrap );
-
-/**
- * @brief Manually set the minimum and maximum height bounds.
- *
- * This call allows you to set explicit min / max values after initial
- * creation typically for callback heightfields which default to +/- infinity,
- * or those whose data has changed. This must be set prior to binding with a
- * geom, as the the AABB is not recomputed after it's first generation.
- *
- * @remarks The minimum and maximum values are used to compute the AABB
- * for the heightfield which is used for early rejection of collisions.
- * A close fit will yield a more efficient collision check.
- *
- * @param d A dHeightfieldDataID created by dGeomHeightfieldDataCreate
- * @param min_height The new minimum height value. Scale, offset and thickness is then applied.
- * @param max_height The new maximum height value. Scale and offset is then applied.
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataSetBounds( dHeightfieldDataID d,
-                               dReal minHeight, dReal maxHeight );
-
-
-/**
- * @brief Assigns a dHeightfieldDataID to a heightfield geom.
- *
- * Associates the given dHeightfieldDataID with a heightfield geom.
- * This is done without affecting the GEOM_PLACEABLE flag.
- *
- * @param g A geom created by dCreateHeightfield
- * @param d A dHeightfieldDataID created by dGeomHeightfieldDataCreate
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldSetHeightfieldData( dGeomID g, dHeightfieldDataID d );
-
-
-/**
- * @brief Gets the dHeightfieldDataID bound to a heightfield geom.
- *
- * Returns the dHeightfieldDataID associated with a heightfield geom.
- *
- * @param g A geom created by dCreateHeightfield
- * @return The dHeightfieldDataID which may be NULL if none was assigned.
- * @ingroup collide
- */
-ODE_API dHeightfieldDataID dGeomHeightfieldGetHeightfieldData( dGeomID g );
-
-
-
-/* ************************************************************************ */
-/* utility functions */
-
-ODE_API void dClosestLineSegmentPoints (const dVector3 a1, const dVector3 a2,
-                               const dVector3 b1, const dVector3 b2,
-                               dVector3 cp1, dVector3 cp2);
-
-ODE_API int dBoxTouchesBox (const dVector3 _p1, const dMatrix3 R1,
-                   const dVector3 side1, const dVector3 _p2,
-                   const dMatrix3 R2, const dVector3 side2);
-
-// The meaning of flags parameter is the same as in dCollide()
-ODE_API int dBoxBox (const dVector3 p1, const dMatrix3 R1,
-            const dVector3 side1, const dVector3 p2,
-            const dMatrix3 R2, const dVector3 side2,
-            dVector3 normal, dReal *depth, int *return_code,
-            int flags, dContactGeom *contact, int skip);
-
-ODE_API void dInfiniteAABB (dGeomID geom, dReal aabb[6]);
-
-
-/* ************************************************************************ */
-/* custom classes */
-
-typedef void dGetAABBFn (dGeomID, dReal aabb[6]);
-typedef int dColliderFn (dGeomID o1, dGeomID o2,
-                        int flags, dContactGeom *contact, int skip);
-typedef dColliderFn * dGetColliderFnFn (int num);
-typedef void dGeomDtorFn (dGeomID o);
-typedef int dAABBTestFn (dGeomID o1, dGeomID o2, dReal aabb[6]);
-
-typedef struct dGeomClass {
-  int bytes;
-  dGetColliderFnFn *collider;
-  dGetAABBFn *aabb;
-  dAABBTestFn *aabb_test;
-  dGeomDtorFn *dtor;
-} dGeomClass;
-
-ODE_API int dCreateGeomClass (const dGeomClass *classptr);
-ODE_API void * dGeomGetClassData (dGeomID);
-ODE_API dGeomID dCreateGeom (int classnum);
-
-/**
- * @brief Sets a custom collider function for two geom classes. 
- *
- * @param i The first geom class handled by this collider
- * @param j The second geom class handled by this collider
- * @param fn The collider function to use to determine collisions.
- * @ingroup collide
- */
-ODE_API void dSetColliderOverride (int i, int j, dColliderFn *fn);
-
-
-/* ************************************************************************ */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/collision_space.h b/misc/builddeps/linux32/ode/include/ode/collision_space.h
deleted file mode 100644 (file)
index bf7ef9b..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_COLLISION_SPACE_H_
-#define _ODE_COLLISION_SPACE_H_
-
-#include <ode/common.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct dContactGeom;
-
-/**
- * @brief User callback for geom-geom collision testing.
- *
- * @param data The user data object, as passed to dSpaceCollide.
- * @param o1   The first geom being tested.
- * @param o2   The second geom being test.
- *
- * @remarks The callback function can call dCollide on o1 and o2 to generate
- * contact points between each pair. Then these contact points may be added
- * to the simulation as contact joints. The user's callback function can of
- * course chose not to call dCollide for any pair, e.g. if the user decides
- * that those pairs should not interact.
- *
- * @ingroup collide
- */
-typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2);
-
-
-ODE_API dSpaceID dSimpleSpaceCreate (dSpaceID space);
-ODE_API dSpaceID dHashSpaceCreate (dSpaceID space);
-ODE_API dSpaceID dQuadTreeSpaceCreate (dSpaceID space, const dVector3 Center, const dVector3 Extents, int Depth);
-
-
-// SAP
-// Order XZY or ZXY usually works best, if your Y is up.
-#define dSAP_AXES_XYZ  ((0)|(1<<2)|(2<<4))
-#define dSAP_AXES_XZY  ((0)|(2<<2)|(1<<4))
-#define dSAP_AXES_YXZ  ((1)|(0<<2)|(2<<4))
-#define dSAP_AXES_YZX  ((1)|(2<<2)|(0<<4))
-#define dSAP_AXES_ZXY  ((2)|(0<<2)|(1<<4))
-#define dSAP_AXES_ZYX  ((2)|(1<<2)|(0<<4))
-
-ODE_API dSpaceID dSweepAndPruneSpaceCreate( dSpaceID space, int axisorder );
-
-
-
-ODE_API void dSpaceDestroy (dSpaceID);
-
-ODE_API void dHashSpaceSetLevels (dSpaceID space, int minlevel, int maxlevel);
-ODE_API void dHashSpaceGetLevels (dSpaceID space, int *minlevel, int *maxlevel);
-
-ODE_API void dSpaceSetCleanup (dSpaceID space, int mode);
-ODE_API int dSpaceGetCleanup (dSpaceID space);
-
-/**
-* @brief Sets sublevel value for a space.
-*
-* Sublevel affects how the space is handled in dSpaceCollide2 when it is collided
-* with another space. If sublevels of both spaces match, the function iterates 
-* geometries of both spaces and collides them with each other. If sublevel of one
-* space is greater than the sublevel of another one, only the geometries of the 
-* space with greater sublevel are iterated, another space is passed into 
-* collision callback as a geometry itself. By default all the spaces are assigned
-* zero sublevel.
-*
-* @note
-* The space sublevel @e IS @e NOT automatically updated when one space is inserted
-* into another or removed from one. It is a client's responsibility to update sublevel
-* value if necessary.
-*
-* @param space the space to modify
-* @param sublevel the sublevel value to be assigned
-* @ingroup collide
-* @see dSpaceGetSublevel
-* @see dSpaceCollide2
-*/
-ODE_API void dSpaceSetSublevel (dSpaceID space, int sublevel);
-
-/**
-* @brief Gets sublevel value of a space.
-*
-* Sublevel affects how the space is handled in dSpaceCollide2 when it is collided
-* with another space. See @c dSpaceSetSublevel for more details.
-*
-* @param space the space to query
-* @returns the sublevel value of the space
-* @ingroup collide
-* @see dSpaceSetSublevel
-* @see dSpaceCollide2
-*/
-ODE_API int dSpaceGetSublevel (dSpaceID space);
-
-
-/**
-* @brief Sets manual cleanup flag for a space.
-*
-* Manual cleanup flag marks a space as eligible for manual thread data cleanup.
-* This function should be called for every space object right after creation in 
-* case if ODE has been initialized with @c dInitFlagManualThreadCleanup flag.
-* 
-* Failure to set manual cleanup flag for a space may lead to some resources 
-* remaining leaked until the program exit.
-*
-* @param space the space to modify
-* @param mode 1 for manual cleanup mode and 0 for default cleanup mode
-* @ingroup collide
-* @see dSpaceGetManualCleanup
-* @see dInitODE2
-*/
-ODE_API void dSpaceSetManualCleanup (dSpaceID space, int mode);
-
-/**
-* @brief Get manual cleanup flag of a space.
-*
-* Manual cleanup flag marks a space space as eligible for manual thread data cleanup.
-* See @c dSpaceSetManualCleanup for more details.
-* 
-* @param space the space to query
-* @returns 1 for manual cleanup mode and 0 for default cleanup mode of the space
-* @ingroup collide
-* @see dSpaceSetManualCleanup
-* @see dInitODE2
-*/
-ODE_API int dSpaceGetManualCleanup (dSpaceID space);
-
-ODE_API void dSpaceAdd (dSpaceID, dGeomID);
-ODE_API void dSpaceRemove (dSpaceID, dGeomID);
-ODE_API int dSpaceQuery (dSpaceID, dGeomID);
-ODE_API void dSpaceClean (dSpaceID);
-ODE_API int dSpaceGetNumGeoms (dSpaceID);
-ODE_API dGeomID dSpaceGetGeom (dSpaceID, int i);
-
-/**
- * @brief Given a space, this returns its class.
- *
- * The ODE classes are:
- *  @li dSimpleSpaceClass
- *  @li dHashSpaceClass
- *  @li dSweepAndPruneSpaceClass
- *  @li dQuadTreeSpaceClass
- *  @li dFirstUserClass
- *  @li dLastUserClass
- *
- * The class id not defined by the user should be between
- * dFirstSpaceClass and dLastSpaceClass.
- *
- * User-defined class will return their own number.
- *
- * @param space the space to query
- * @returns The space class ID.
- * @ingroup collide
- */
-ODE_API int dSpaceGetClass(dSpaceID space);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/collision_trimesh.h b/misc/builddeps/linux32/ode/include/ode/collision_trimesh.h
deleted file mode 100644 (file)
index f263a9e..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/*
- * TriMesh code by Erwin de Vries.
- *
- * Trimesh data.
- * This is where the actual vertexdata (pointers), and BV tree is stored.
- * Vertices should be single precision!
- * This should be more sophisticated, so that the user can easyly implement
- * another collision library, but this is a lot of work, and also costs some
- * performance because some data has to be copied.
- */
-
-#ifndef _ODE_COLLISION_TRIMESH_H_
-#define _ODE_COLLISION_TRIMESH_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Data storage for triangle meshes.
- */
-struct dxTriMeshData;
-typedef struct dxTriMeshData* dTriMeshDataID;
-
-/*
- * These dont make much sense now, but they will later when we add more
- * features.
- */
-ODE_API dTriMeshDataID dGeomTriMeshDataCreate(void);
-ODE_API void dGeomTriMeshDataDestroy(dTriMeshDataID g);
-
-
-
-enum { TRIMESH_FACE_NORMALS };
-ODE_API void dGeomTriMeshDataSet(dTriMeshDataID g, int data_id, void* in_data);
-ODE_API void* dGeomTriMeshDataGet(dTriMeshDataID g, int data_id);
-
-
-
-/**
- * We need to set the last transform after each time step for 
- * accurate collision response. These functions get and set that transform.
- * It is stored per geom instance, rather than per dTriMeshDataID.
- */
-ODE_API void dGeomTriMeshSetLastTransform( dGeomID g, dMatrix4 last_trans );
-ODE_API dReal* dGeomTriMeshGetLastTransform( dGeomID g );
-
-/*
- * Build a TriMesh data object with single precision vertex data.
- */
-ODE_API void dGeomTriMeshDataBuildSingle(dTriMeshDataID g,
-                                 const void* Vertices, int VertexStride, int VertexCount, 
-                                 const void* Indices, int IndexCount, int TriStride);
-/* same again with a normals array (used as trimesh-trimesh optimization) */
-ODE_API void dGeomTriMeshDataBuildSingle1(dTriMeshDataID g,
-                                  const void* Vertices, int VertexStride, int VertexCount, 
-                                  const void* Indices, int IndexCount, int TriStride,
-                                  const void* Normals);
-/*
-* Build a TriMesh data object with double precision vertex data.
-*/
-ODE_API void dGeomTriMeshDataBuildDouble(dTriMeshDataID g, 
-                                 const void* Vertices,  int VertexStride, int VertexCount, 
-                                 const void* Indices, int IndexCount, int TriStride);
-/* same again with a normals array (used as trimesh-trimesh optimization) */
-ODE_API void dGeomTriMeshDataBuildDouble1(dTriMeshDataID g, 
-                                  const void* Vertices,  int VertexStride, int VertexCount, 
-                                  const void* Indices, int IndexCount, int TriStride,
-                                  const void* Normals);
-
-/*
- * Simple build. Single/double precision based on dSINGLE/dDOUBLE!
- */
-ODE_API void dGeomTriMeshDataBuildSimple(dTriMeshDataID g,
-                                 const dReal* Vertices, int VertexCount,
-                                 const dTriIndex* Indices, int IndexCount);
-/* same again with a normals array (used as trimesh-trimesh optimization) */
-ODE_API void dGeomTriMeshDataBuildSimple1(dTriMeshDataID g,
-                                  const dReal* Vertices, int VertexCount,
-                                  const dTriIndex* Indices, int IndexCount,
-                                  const int* Normals);
-
-/* Preprocess the trimesh data to remove mark unnecessary edges and vertices */
-ODE_API void dGeomTriMeshDataPreprocess(dTriMeshDataID g);
-/* Get and set the internal preprocessed trimesh data buffer, for loading and saving */
-ODE_API void dGeomTriMeshDataGetBuffer(dTriMeshDataID g, unsigned char** buf, int* bufLen);
-ODE_API void dGeomTriMeshDataSetBuffer(dTriMeshDataID g, unsigned char* buf);
-
-
-/*
- * Per triangle callback. Allows the user to say if he wants a collision with
- * a particular triangle.
- */
-typedef int dTriCallback(dGeomID TriMesh, dGeomID RefObject, int TriangleIndex);
-ODE_API void dGeomTriMeshSetCallback(dGeomID g, dTriCallback* Callback);
-ODE_API dTriCallback* dGeomTriMeshGetCallback(dGeomID g);
-
-/*
- * Per object callback. Allows the user to get the list of triangles in 1
- * shot. Maybe we should remove this one.
- */
-typedef void dTriArrayCallback(dGeomID TriMesh, dGeomID RefObject, const int* TriIndices, int TriCount);
-ODE_API void dGeomTriMeshSetArrayCallback(dGeomID g, dTriArrayCallback* ArrayCallback);
-ODE_API dTriArrayCallback* dGeomTriMeshGetArrayCallback(dGeomID g);
-
-/*
- * Ray callback.
- * Allows the user to say if a ray collides with a triangle on barycentric
- * coords. The user can for example sample a texture with alpha transparency
- * to determine if a collision should occur.
- */
-typedef int dTriRayCallback(dGeomID TriMesh, dGeomID Ray, int TriangleIndex, dReal u, dReal v);
-ODE_API void dGeomTriMeshSetRayCallback(dGeomID g, dTriRayCallback* Callback);
-ODE_API dTriRayCallback* dGeomTriMeshGetRayCallback(dGeomID g);
-
-/*
- * Triangle merging callback.
- * Allows the user to generate a fake triangle index for a new contact generated
- * from merging of two other contacts. That index could later be used by the 
- * user to determine attributes of original triangles used as sources for a 
- * merged contact.
- */
-typedef int dTriTriMergeCallback(dGeomID TriMesh, int FirstTriangleIndex, int SecondTriangleIndex);
-ODE_API void dGeomTriMeshSetTriMergeCallback(dGeomID g, dTriTriMergeCallback* Callback);
-ODE_API dTriTriMergeCallback* dGeomTriMeshGetTriMergeCallback(dGeomID g);
-
-/*
- * Trimesh class
- * Construction. Callbacks are optional.
- */
-ODE_API dGeomID dCreateTriMesh(dSpaceID space, dTriMeshDataID Data, dTriCallback* Callback, dTriArrayCallback* ArrayCallback, dTriRayCallback* RayCallback);
-
-ODE_API void dGeomTriMeshSetData(dGeomID g, dTriMeshDataID Data);
-ODE_API dTriMeshDataID dGeomTriMeshGetData(dGeomID g);
-
-
-// enable/disable/check temporal coherence
-ODE_API void dGeomTriMeshEnableTC(dGeomID g, int geomClass, int enable);
-ODE_API int dGeomTriMeshIsTCEnabled(dGeomID g, int geomClass);
-
-/*
- * Clears the internal temporal coherence caches. When a geom has its
- * collision checked with a trimesh once, data is stored inside the trimesh.
- * With large worlds with lots of seperate objects this list could get huge.
- * We should be able to do this automagically.
- */
-ODE_API void dGeomTriMeshClearTCCache(dGeomID g);
-
-
-/*
- * returns the TriMeshDataID
- */
-ODE_API dTriMeshDataID dGeomTriMeshGetTriMeshDataID(dGeomID g);
-
-/*
- * Gets a triangle.
- */
-ODE_API void dGeomTriMeshGetTriangle(dGeomID g, int Index, dVector3* v0, dVector3* v1, dVector3* v2);
-
-/*
- * Gets the point on the requested triangle and the given barycentric
- * coordinates.
- */
-ODE_API void dGeomTriMeshGetPoint(dGeomID g, int Index, dReal u, dReal v, dVector3 Out);
-
-/*
-
-This is how the strided data works:
-
-struct StridedVertex{
-       dVector3 Vertex;
-       // Userdata
-};
-int VertexStride = sizeof(StridedVertex);
-
-struct StridedTri{
-       int Indices[3];
-       // Userdata
-};
-int TriStride = sizeof(StridedTri);
-
-*/
-
-
-ODE_API int dGeomTriMeshGetTriangleCount (dGeomID g);
-
-ODE_API void dGeomTriMeshDataUpdate(dTriMeshDataID g);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ODE_COLLISION_TRIMESH_H_ */
-
diff --git a/misc/builddeps/linux32/ode/include/ode/common.h b/misc/builddeps/linux32/ode/include/ode/common.h
deleted file mode 100644 (file)
index d7b2bba..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_COMMON_H_
-#define _ODE_COMMON_H_
-#include <ode/odeconfig.h>
-#include <ode/error.h>
-#include <math.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define PURE_INLINE static __inline
-
-
-/* configuration stuff */
-
-/* constants */
-
-/* pi and 1/sqrt(2) are defined here if necessary because they don't get
- * defined in <math.h> on some platforms (like MS-Windows)
- */
-
-#ifndef M_PI
-#define M_PI REAL(3.1415926535897932384626433832795029)
-#endif
-#ifndef M_SQRT1_2
-#define M_SQRT1_2 REAL(0.7071067811865475244008443621048490)
-#endif
-
-
-/* debugging:
- *   IASSERT  is an internal assertion, i.e. a consistency check. if it fails
- *            we want to know where.
- *   UASSERT  is a user assertion, i.e. if it fails a nice error message
- *            should be printed for the user.
- *   AASSERT  is an arguments assertion, i.e. if it fails "bad argument(s)"
- *            is printed.
- *   DEBUGMSG just prints out a message
- */
-
-#  if defined(__STDC__) && __STDC_VERSION__ >= 199901L
-#    define __FUNCTION__ __func__
-#  endif
-#ifndef dNODEBUG
-#  ifdef __GNUC__
-#    define dIASSERT(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
-      "assertion \"" #a "\" failed in %s() [%s:%u]",__FUNCTION__,__FILE__,__LINE__); } }
-#    define dUASSERT(a,msg) { if (!(a)) { dDebug (d_ERR_UASSERT, \
-      msg " in %s()", __FUNCTION__); } }
-#    define dDEBUGMSG(msg) { dMessage (d_ERR_UASSERT,                          \
-  msg " in %s() [%s:%u]", __FUNCTION__,__FILE__,__LINE__); }
-#  else // not __GNUC__
-#    define dIASSERT(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
-      "assertion \"" #a "\" failed in %s:%u",__FILE__,__LINE__); } }
-#    define dUASSERT(a,msg) { if (!(a)) { dDebug (d_ERR_UASSERT, \
-      msg " (%s:%u)", __FILE__,__LINE__); } }
-#    define dDEBUGMSG(msg) { dMessage (d_ERR_UASSERT, \
-      msg " (%s:%u)", __FILE__,__LINE__); }
-#  endif
-#  define dIVERIFY(a) dIASSERT(a)
-#else
-#  define dIASSERT(a) ((void)0)
-#  define dUASSERT(a,msg) ((void)0)
-#  define dDEBUGMSG(msg) ((void)0)
-#  define dIVERIFY(a) ((void)(a))
-#endif
-
-#  ifdef __GNUC__
-#    define dICHECK(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
-      "assertion \"" #a "\" failed in %s() [%s:%u]",__FUNCTION__,__FILE__,__LINE__); *(int *)0 = 0; } }
-#  else // not __GNUC__
-#    define dICHECK(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
-      "assertion \"" #a "\" failed in %s:%u",__FILE__,__LINE__); *(int *)0 = 0; } }
-#  endif
-
-// Argument assert is a special case of user assert
-#define dAASSERT(a) dUASSERT(a,"Bad argument(s)")
-
-/* floating point data type, vector, matrix and quaternion types */
-
-#if defined(dSINGLE)
-typedef float dReal;
-#ifdef dDOUBLE
-#error You can only #define dSINGLE or dDOUBLE, not both.
-#endif // dDOUBLE
-#elif defined(dDOUBLE)
-typedef double dReal;
-#else
-#error You must #define dSINGLE or dDOUBLE
-#endif
-
-// Detect if we've got both trimesh engines enabled.
-#if dTRIMESH_ENABLED
-#if dTRIMESH_OPCODE && dTRIMESH_GIMPACT
-#error You can only #define dTRIMESH_OPCODE or dTRIMESH_GIMPACT, not both.
-#endif
-#endif // dTRIMESH_ENABLED
-
-// Define a type for indices, either 16 or 32 bit, based on build option
-// TODO: Currently GIMPACT only supports 32 bit indices.
-#if dTRIMESH_16BIT_INDICES
-#if dTRIMESH_GIMPACT
-typedef uint32 dTriIndex;
-#else // dTRIMESH_GIMPACT
-typedef uint16 dTriIndex;
-#endif // dTRIMESH_GIMPACT
-#else // dTRIMESH_16BIT_INDICES
-typedef uint32 dTriIndex;
-#endif // dTRIMESH_16BIT_INDICES
-
-/* round an integer up to a multiple of 4, except that 0 and 1 are unmodified
- * (used to compute matrix leading dimensions)
- */
-#define dPAD(a) (((a) > 1) ? ((((a)-1)|3)+1) : (a))
-
-/* these types are mainly just used in headers */
-typedef dReal dVector3[4];
-typedef dReal dVector4[4];
-typedef dReal dMatrix3[4*3];
-typedef dReal dMatrix4[4*4];
-typedef dReal dMatrix6[8*6];
-typedef dReal dQuaternion[4];
-
-
-/* precision dependent scalar math functions */
-
-#if defined(dSINGLE)
-
-#define REAL(x) (x ## f)                                       /* form a constant */
-#define dRecip(x) ((1.0f/(x)))                         /* reciprocal */
-#define dSqrt(x) (sqrtf(x))                    /* square root */
-#define dRecipSqrt(x) ((1.0f/sqrtf(x)))                /* reciprocal square root */
-#define dSin(x) (sinf(x))                              /* sine */
-#define dCos(x) (cosf(x))                              /* cosine */
-#define dFabs(x) (fabsf(x))                    /* absolute value */
-#define dAtan2(y,x) (atan2f(y,x))              /* arc tangent with 2 args */
-#define dFMod(a,b) (fmodf(a,b))                /* modulo */
-#define dFloor(x) floorf(x)                    /* floor */
-#define dCeil(x) ceilf(x)                      /* floor */
-#define dCopySign(a,b) ((dReal)copysignf(a,b)) /* copy value sign */
-#define dNextAfter(x, y) nextafterf(x, y) /* next value after */
-
-#if defined(_ODE__NEXTAFTERF_REQUIRED)
-float _nextafterf(float x, float y);
-#endif
-
-#ifdef HAVE___ISNANF
-#define dIsNan(x) (__isnanf(x))
-#elif defined(HAVE__ISNANF)
-#define dIsNan(x) (_isnanf(x))
-#elif defined(HAVE_ISNANF)
-#define dIsNan(x) (isnanf(x))
-#else
-  /*
-     fall back to _isnan which is the VC way,
-     this may seem redundant since we already checked
-     for _isnan before, but if isnan is detected by
-     configure but is not found during compilation
-     we should always make sure we check for __isnanf,
-     _isnanf and isnanf in that order before falling
-     back to a default
-  */
-#define dIsNan(x) (_isnan(x))
-#endif
-
-#elif defined(dDOUBLE)
-
-#define REAL(x) (x)
-#define dRecip(x) (1.0/(x))
-#define dSqrt(x) sqrt(x)
-#define dRecipSqrt(x) (1.0/sqrt(x))
-#define dSin(x) sin(x)
-#define dCos(x) cos(x)
-#define dFabs(x) fabs(x)
-#define dAtan2(y,x) atan2((y),(x))
-#define dFMod(a,b) (fmod((a),(b)))
-#define dFloor(x) floor(x)
-#define dCeil(x) ceil(x)
-#define dCopySign(a,b) (copysign((a),(b)))
-#define dNextAfter(x, y) nextafter(x, y)
-
-#undef _ODE__NEXTAFTERF_REQUIRED
-
-#ifdef HAVE___ISNAN
-#define dIsNan(x) (__isnan(x))
-#elif defined(HAVE__ISNAN)
-#define dIsNan(x) (_isnan(x))
-#elif defined(HAVE_ISNAN)
-#define dIsNan(x) (isnan(x))
-#else
-#define dIsNan(x) (_isnan(x))
-#endif
-
-#else
-#error You must #define dSINGLE or dDOUBLE
-#endif
-
-/* internal object types (all prefixed with `dx') */
-
-struct dxWorld;                /* dynamics world */
-struct dxSpace;                /* collision space */
-struct dxBody;         /* rigid body (dynamics object) */
-struct dxGeom;         /* geometry (collision object) */
-struct dxJoint;
-struct dxJointNode;
-struct dxJointGroup;
-struct dxWorldProcessThreadingManager;
-
-typedef struct dxWorld *dWorldID;
-typedef struct dxSpace *dSpaceID;
-typedef struct dxBody *dBodyID;
-typedef struct dxGeom *dGeomID;
-typedef struct dxJoint *dJointID;
-typedef struct dxJointGroup *dJointGroupID;
-typedef struct dxWorldProcessThreadingManager *dWorldStepThreadingManagerID;
-
-/* error numbers */
-
-enum {
-  d_ERR_UNKNOWN = 0,           /* unknown error */
-  d_ERR_IASSERT,               /* internal assertion failed */
-  d_ERR_UASSERT,               /* user assertion failed */
-  d_ERR_LCP                    /* user assertion failed */
-};
-
-
-/* joint type numbers */
-
-typedef enum {
-  dJointTypeNone = 0,          /* or "unknown" */
-  dJointTypeBall,
-  dJointTypeHinge,
-  dJointTypeSlider,
-  dJointTypeContact,
-  dJointTypeUniversal,
-  dJointTypeHinge2,
-  dJointTypeFixed,
-  dJointTypeNull,
-  dJointTypeAMotor,
-  dJointTypeLMotor,
-  dJointTypePlane2D,
-  dJointTypePR,
-  dJointTypePU,
-  dJointTypePiston
-} dJointType;
-
-
-/* an alternative way of setting joint parameters, using joint parameter
- * structures and member constants. we don't actually do this yet.
- */
-
-/*
-typedef struct dLimot {
-  int mode;
-  dReal lostop, histop;
-  dReal vel, fmax;
-  dReal fudge_factor;
-  dReal bounce, soft;
-  dReal suspension_erp, suspension_cfm;
-} dLimot;
-
-enum {
-  dLimotLoStop         = 0x0001,
-  dLimotHiStop         = 0x0002,
-  dLimotVel            = 0x0004,
-  dLimotFMax           = 0x0008,
-  dLimotFudgeFactor    = 0x0010,
-  dLimotBounce         = 0x0020,
-  dLimotSoft           = 0x0040
-};
-*/
-
-
-/* standard joint parameter names. why are these here? - because we don't want
- * to include all the joint function definitions in joint.cpp. hmmmm.
- * MSVC complains if we call D_ALL_PARAM_NAMES_X with a blank second argument,
- * which is why we have the D_ALL_PARAM_NAMES macro as well. please copy and
- * paste between these two.
- */
-
-#define D_ALL_PARAM_NAMES(start) \
-  /* parameters for limits and motors */ \
-  dParamLoStop = start, \
-  dParamHiStop, \
-  dParamVel, \
-  dParamFMax, \
-  dParamFudgeFactor, \
-  dParamBounce, \
-  dParamCFM, \
-  dParamStopERP, \
-  dParamStopCFM, \
-  /* parameters for suspension */ \
-  dParamSuspensionERP, \
-  dParamSuspensionCFM, \
-  dParamERP, \
-
-  //////////////////////////////////////////////////////////////////////////////
-  /// \enum  D_ALL_PARAM_NAMES_X
-  ///
-  /// \var dParamGroup This is the starting value of the different group
-  ///                  (i.e. dParamGroup1, dParamGroup2, dParamGroup3)
-  ///                  It also helps in the use of parameter
-  ///                  (dParamGroup2 | dParamFMax) == dParamFMax2
-  //////////////////////////////////////////////////////////////////////////////
-#define D_ALL_PARAM_NAMES_X(start,x) \
-  dParamGroup ## x = start, \
-  /* parameters for limits and motors */ \
-  dParamLoStop ## x = start, \
-  dParamHiStop ## x, \
-  dParamVel ## x, \
-  dParamFMax ## x, \
-  dParamFudgeFactor ## x, \
-  dParamBounce ## x, \
-  dParamCFM ## x, \
-  dParamStopERP ## x, \
-  dParamStopCFM ## x, \
-  /* parameters for suspension */ \
-  dParamSuspensionERP ## x, \
-  dParamSuspensionCFM ## x, \
-  dParamERP ## x,
-
-enum {
-  D_ALL_PARAM_NAMES(0)
-  dParamsInGroup,     ///< Number of parameter in a group
-  D_ALL_PARAM_NAMES_X(0x000,1)
-  D_ALL_PARAM_NAMES_X(0x100,2)
-  D_ALL_PARAM_NAMES_X(0x200,3)
-
-  /* add a multiple of this constant to the basic parameter numbers to get
-   * the parameters for the second, third etc axes.
-   */
-  dParamGroup=0x100
-};
-
-
-/* angular motor mode numbers */
-
-enum {
-  dAMotorUser = 0,
-  dAMotorEuler = 1
-};
-
-
-/* joint force feedback information */
-
-typedef struct dJointFeedback {
-  dVector3 f1;         /* force applied to body 1 */
-  dVector3 t1;         /* torque applied to body 1 */
-  dVector3 f2;         /* force applied to body 2 */
-  dVector3 t2;         /* torque applied to body 2 */
-} dJointFeedback;
-
-
-/* private functions that must be implemented by the collision library:
- * (1) indicate that a geom has moved, (2) get the next geom in a body list.
- * these functions are called whenever the position of geoms connected to a
- * body have changed, e.g. with dBodySetPosition(), dBodySetRotation(), or
- * when the ODE step function updates the body state.
- */
-
-void dGeomMoved (dGeomID);
-dGeomID dGeomGetBodyNext (dGeomID);
-
-/**
- * dGetConfiguration returns the specific ODE build configuration as
- * a string of tokens. The string can be parsed in a similar way to
- * the OpenGL extension mechanism, the naming convention should be
- * familiar too. The following extensions are reported:
- *
- * ODE
- * ODE_single_precision
- * ODE_double_precision
- * ODE_EXT_no_debug
- * ODE_EXT_trimesh
- * ODE_EXT_opcode
- * ODE_EXT_gimpact
- * ODE_EXT_malloc_not_alloca
- * ODE_EXT_gyroscopic
- * ODE_OPC_16bit_indices
- * ODE_OPC_new_collider
-*/
-ODE_API const char* dGetConfiguration (void);
-
-/**
- * Helper to check for a token in the ODE configuration string.
- * Caution, this function is case sensitive.
- *
- * @param token A configuration token, see dGetConfiguration for details
- *
- * @return 1 if exact token is present, 0 if not present
- */
-ODE_API int dCheckConfiguration( const char* token );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/compatibility.h b/misc/builddeps/linux32/ode/include/ode/compatibility.h
deleted file mode 100644 (file)
index b370986..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_COMPATIBILITY_H_
-#define _ODE_COMPATIBILITY_H_
-
-/*
- * ODE's backward compatibility system ensures that as ODE's API
- * evolves, user code will not break.
- */
-
-/*
- * These new rotation function names are more consistent with the
- * rest of the API.
- */
-#define dQtoR(q,R) dRfromQ((R),(q))
-#define dRtoQ(R,q) dQfromR((q),(R))
-#define dWtoDQ(w,q,dq) dDQfromW((dq),(w),(q))
-
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/contact.h b/misc/builddeps/linux32/ode/include/ode/contact.h
deleted file mode 100644 (file)
index 8bb810f..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_CONTACT_H_
-#define _ODE_CONTACT_H_
-
-#include <ode/common.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-enum {
-  dContactMu2          = 0x001,
-  dContactFDir1                = 0x002,
-  dContactBounce       = 0x004,
-  dContactSoftERP      = 0x008,
-  dContactSoftCFM      = 0x010,
-  dContactMotion1      = 0x020,
-  dContactMotion2      = 0x040,
-  dContactMotionN      = 0x080,
-  dContactSlip1                = 0x100,
-  dContactSlip2                = 0x200,
-
-  dContactApprox0      = 0x0000,
-  dContactApprox1_1    = 0x1000,
-  dContactApprox1_2    = 0x2000,
-  dContactApprox1      = 0x3000
-};
-
-
-typedef struct dSurfaceParameters {
-  /* must always be defined */
-  int mode;
-  dReal mu;
-
-  /* only defined if the corresponding flag is set in mode */
-  dReal mu2;
-  dReal bounce;
-  dReal bounce_vel;
-  dReal soft_erp;
-  dReal soft_cfm;
-  dReal motion1,motion2,motionN;
-  dReal slip1,slip2;
-} dSurfaceParameters;
-
-
-/**
- * @brief Describe the contact point between two geoms.
- *
- * If two bodies touch, or if a body touches a static feature in its 
- * environment, the contact is represented by one or more "contact 
- * points", described by dContactGeom.
- *
- * The convention is that if body 1 is moved along the normal vector by 
- * a distance depth (or equivalently if body 2 is moved the same distance 
- * in the opposite direction) then the contact depth will be reduced to 
- * zero. This means that the normal vector points "in" to body 1.
- *
- * @ingroup collide
- */
-typedef struct dContactGeom {
-  dVector3 pos;          ///< contact position
-  dVector3 normal;       ///< normal vector
-  dReal depth;           ///< penetration depth
-  dGeomID g1,g2;         ///< the colliding geoms
-  int side1,side2;       ///< (to be documented)
-} dContactGeom;
-
-
-/* contact info used by contact joint */
-
-typedef struct dContact {
-  dSurfaceParameters surface;
-  dContactGeom geom;
-  dVector3 fdir1;
-} dContact;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/error.h b/misc/builddeps/linux32/ode/include/ode/error.h
deleted file mode 100644 (file)
index 20b9ba4..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/* this comes from the `reuse' library. copy any changes back to the source */
-
-#ifndef _ODE_ERROR_H_
-#define _ODE_ERROR_H_
-
-#include <ode/odeconfig.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* all user defined error functions have this type. error and debug functions
- * should not return.
- */
-typedef void dMessageFunction (int errnum, const char *msg, va_list ap);
-
-/* set a new error, debug or warning handler. if fn is 0, the default handlers
- * are used.
- */
-ODE_API void dSetErrorHandler (dMessageFunction *fn);
-ODE_API void dSetDebugHandler (dMessageFunction *fn);
-ODE_API void dSetMessageHandler (dMessageFunction *fn);
-
-/* return the current error, debug or warning handler. if the return value is
- * 0, the default handlers are in place.
- */
-ODE_API dMessageFunction *dGetErrorHandler(void);
-ODE_API dMessageFunction *dGetDebugHandler(void);
-ODE_API dMessageFunction *dGetMessageHandler(void);
-
-/* generate a fatal error, debug trap or a message. */
-ODE_API void dError (int num, const char *msg, ...);
-ODE_API void dDebug (int num, const char *msg, ...);
-ODE_API void dMessage (int num, const char *msg, ...);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/export-dif.h b/misc/builddeps/linux32/ode/include/ode/export-dif.h
deleted file mode 100644 (file)
index f6578ac..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_EXPORT_DIF_
-#define _ODE_EXPORT_DIF_
-
-#include <ode/common.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-ODE_API void dWorldExportDIF (dWorldID w, FILE *file, const char *world_name);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/mass.h b/misc/builddeps/linux32/ode/include/ode/mass.h
deleted file mode 100644 (file)
index d74500c..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_MASS_H_
-#define _ODE_MASS_H_
-
-#include <ode/common.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct dMass;
-typedef struct dMass dMass;
-
-/**
- * Check if a mass structure has valid value.
- * The function check if the mass and innertia matrix are positive definits
- *
- * @param m A mass structure to check
- *
- * @return 1 if both codition are met
- */
-ODE_API int dMassCheck(const dMass *m);
-
-ODE_API void dMassSetZero (dMass *);
-
-ODE_API void dMassSetParameters (dMass *, dReal themass,
-                        dReal cgx, dReal cgy, dReal cgz,
-                        dReal I11, dReal I22, dReal I33,
-                        dReal I12, dReal I13, dReal I23);
-
-ODE_API void dMassSetSphere (dMass *, dReal density, dReal radius);
-ODE_API void dMassSetSphereTotal (dMass *, dReal total_mass, dReal radius);
-
-ODE_API void dMassSetCapsule (dMass *, dReal density, int direction,
-                       dReal radius, dReal length);
-ODE_API void dMassSetCapsuleTotal (dMass *, dReal total_mass, int direction,
-                       dReal radius, dReal length);
-
-ODE_API void dMassSetCylinder (dMass *, dReal density, int direction,
-                      dReal radius, dReal length);
-ODE_API void dMassSetCylinderTotal (dMass *, dReal total_mass, int direction,
-                           dReal radius, dReal length);
-
-ODE_API void dMassSetBox (dMass *, dReal density,
-                 dReal lx, dReal ly, dReal lz);
-ODE_API void dMassSetBoxTotal (dMass *, dReal total_mass,
-                      dReal lx, dReal ly, dReal lz);
-
-ODE_API void dMassSetTrimesh (dMass *, dReal density, dGeomID g);
-
-ODE_API void dMassSetTrimeshTotal (dMass *m, dReal total_mass, dGeomID g);
-
-ODE_API void dMassAdjust (dMass *, dReal newmass);
-
-ODE_API void dMassTranslate (dMass *, dReal x, dReal y, dReal z);
-
-ODE_API void dMassRotate (dMass *, const dMatrix3 R);
-
-ODE_API void dMassAdd (dMass *a, const dMass *b);
-
-
-// Backwards compatible API
-ODE_API ODE_API_DEPRECATED void dMassSetCappedCylinder(dMass *a, dReal b, int c, dReal d, dReal e);
-ODE_API ODE_API_DEPRECATED void dMassSetCappedCylinderTotal(dMass *a, dReal b, int c, dReal d, dReal e);
-
-
-struct dMass {
-  dReal mass;
-  dVector3 c;
-  dMatrix3 I;
-
-#ifdef __cplusplus
-  dMass()
-    { dMassSetZero (this); }
-  void setZero()
-    { dMassSetZero (this); }
-  void setParameters (dReal themass, dReal cgx, dReal cgy, dReal cgz,
-                     dReal I11, dReal I22, dReal I33,
-                     dReal I12, dReal I13, dReal I23)
-    { dMassSetParameters (this,themass,cgx,cgy,cgz,I11,I22,I33,I12,I13,I23); }
-
-  void setSphere (dReal density, dReal radius)
-    { dMassSetSphere (this,density,radius); }
-  void setSphereTotal (dReal total, dReal radius)
-    { dMassSetSphereTotal (this,total,radius); }
-
-  void setCapsule (dReal density, int direction, dReal radius, dReal length)
-    { dMassSetCapsule (this,density,direction,radius,length); }
-  void setCapsuleTotal (dReal total, int direction, dReal radius, dReal length)
-    { dMassSetCapsule (this,total,direction,radius,length); }
-
-  void setCylinder(dReal density, int direction, dReal radius, dReal length)
-    { dMassSetCylinder (this,density,direction,radius,length); }
-  void setCylinderTotal(dReal total, int direction, dReal radius, dReal length)
-    { dMassSetCylinderTotal (this,total,direction,radius,length); }
-
-  void setBox (dReal density, dReal lx, dReal ly, dReal lz)
-    { dMassSetBox (this,density,lx,ly,lz); }
-  void setBoxTotal (dReal total, dReal lx, dReal ly, dReal lz)
-    { dMassSetBoxTotal (this,total,lx,ly,lz); }
-
-  void setTrimesh(dReal density, dGeomID g)
-    { dMassSetTrimesh (this, density, g); }
-  void setTrimeshTotal(dReal total, dGeomID g)
-    { dMassSetTrimeshTotal (this, total, g); }
-
-  void adjust (dReal newmass)
-    { dMassAdjust (this,newmass); }
-  void translate (dReal x, dReal y, dReal z)
-    { dMassTranslate (this,x,y,z); }
-  void rotate (const dMatrix3 R)
-    { dMassRotate (this,R); }
-  void add (const dMass *b)
-    { dMassAdd (this,b); }
-#endif
-};
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/matrix.h b/misc/builddeps/linux32/ode/include/ode/matrix.h
deleted file mode 100644 (file)
index e177f44..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/* optimized and unoptimized vector and matrix functions */
-
-#ifndef _ODE_MATRIX_H_
-#define _ODE_MATRIX_H_
-
-#include <ode/common.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* set a vector/matrix of size n to all zeros, or to a specific value. */
-
-ODE_API void dSetZero (dReal *a, int n);
-ODE_API void dSetValue (dReal *a, int n, dReal value);
-
-
-/* get the dot product of two n*1 vectors. if n <= 0 then
- * zero will be returned (in which case a and b need not be valid).
- */
-
-ODE_API dReal dDot (const dReal *a, const dReal *b, int n);
-
-
-/* get the dot products of (a0,b), (a1,b), etc and return them in outsum.
- * all vectors are n*1. if n <= 0 then zeroes will be returned (in which case
- * the input vectors need not be valid). this function is somewhat faster
- * than calling dDot() for all of the combinations separately.
- */
-
-/* NOT INCLUDED in the library for now.
-void dMultidot2 (const dReal *a0, const dReal *a1,
-                const dReal *b, dReal *outsum, int n);
-*/
-
-
-/* matrix multiplication. all matrices are stored in standard row format.
- * the digit refers to the argument that is transposed:
- *   0:   A = B  * C   (sizes: A:p*r B:p*q C:q*r)
- *   1:   A = B' * C   (sizes: A:p*r B:q*p C:q*r)
- *   2:   A = B  * C'  (sizes: A:p*r B:p*q C:r*q)
- * case 1,2 are equivalent to saying that the operation is A=B*C but
- * B or C are stored in standard column format.
- */
-
-ODE_API void dMultiply0 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-ODE_API void dMultiply1 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-ODE_API void dMultiply2 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-
-
-/* do an in-place cholesky decomposition on the lower triangle of the n*n
- * symmetric matrix A (which is stored by rows). the resulting lower triangle
- * will be such that L*L'=A. return 1 on success and 0 on failure (on failure
- * the matrix is not positive definite).
- */
-
-ODE_API int dFactorCholesky (dReal *A, int n);
-
-
-/* solve for x: L*L'*x = b, and put the result back into x.
- * L is size n*n, b is size n*1. only the lower triangle of L is considered.
- */
-
-ODE_API void dSolveCholesky (const dReal *L, dReal *b, int n);
-
-
-/* compute the inverse of the n*n positive definite matrix A and put it in
- * Ainv. this is not especially fast. this returns 1 on success (A was
- * positive definite) or 0 on failure (not PD).
- */
-
-ODE_API int dInvertPDMatrix (const dReal *A, dReal *Ainv, int n);
-
-
-/* check whether an n*n matrix A is positive definite, return 1/0 (yes/no).
- * positive definite means that x'*A*x > 0 for any x. this performs a
- * cholesky decomposition of A. if the decomposition fails then the matrix
- * is not positive definite. A is stored by rows. A is not altered.
- */
-
-ODE_API int dIsPositiveDefinite (const dReal *A, int n);
-
-
-/* factorize a matrix A into L*D*L', where L is lower triangular with ones on
- * the diagonal, and D is diagonal.
- * A is an n*n matrix stored by rows, with a leading dimension of n rounded
- * up to 4. L is written into the strict lower triangle of A (the ones are not
- * written) and the reciprocal of the diagonal elements of D are written into
- * d.
- */
-ODE_API void dFactorLDLT (dReal *A, dReal *d, int n, int nskip);
-
-
-/* solve L*x=b, where L is n*n lower triangular with ones on the diagonal,
- * and x,b are n*1. b is overwritten with x.
- * the leading dimension of L is `nskip'.
- */
-ODE_API void dSolveL1 (const dReal *L, dReal *b, int n, int nskip);
-
-
-/* solve L'*x=b, where L is n*n lower triangular with ones on the diagonal,
- * and x,b are n*1. b is overwritten with x.
- * the leading dimension of L is `nskip'.
- */
-ODE_API void dSolveL1T (const dReal *L, dReal *b, int n, int nskip);
-
-
-/* in matlab syntax: a(1:n) = a(1:n) .* d(1:n) */
-
-ODE_API void dVectorScale (dReal *a, const dReal *d, int n);
-
-
-/* given `L', a n*n lower triangular matrix with ones on the diagonal,
- * and `d', a n*1 vector of the reciprocal diagonal elements of an n*n matrix
- * D, solve L*D*L'*x=b where x,b are n*1. x overwrites b.
- * the leading dimension of L is `nskip'.
- */
-
-ODE_API void dSolveLDLT (const dReal *L, const dReal *d, dReal *b, int n, int nskip);
-
-
-/* given an L*D*L' factorization of an n*n matrix A, return the updated
- * factorization L2*D2*L2' of A plus the following "top left" matrix:
- *
- *    [ b a' ]     <-- b is a[0]
- *    [ a 0  ]     <-- a is a[1..n-1]
- *
- *   - L has size n*n, its leading dimension is nskip. L is lower triangular
- *     with ones on the diagonal. only the lower triangle of L is referenced.
- *   - d has size n. d contains the reciprocal diagonal elements of D.
- *   - a has size n.
- * the result is written into L, except that the left column of L and d[0]
- * are not actually modified. see ldltaddTL.m for further comments. 
- */
-ODE_API void dLDLTAddTL (dReal *L, dReal *d, const dReal *a, int n, int nskip);
-
-
-/* given an L*D*L' factorization of a permuted matrix A, produce a new
- * factorization for row and column `r' removed.
- *   - A has size n1*n1, its leading dimension in nskip. A is symmetric and
- *     positive definite. only the lower triangle of A is referenced.
- *     A itself may actually be an array of row pointers.
- *   - L has size n2*n2, its leading dimension in nskip. L is lower triangular
- *     with ones on the diagonal. only the lower triangle of L is referenced.
- *   - d has size n2. d contains the reciprocal diagonal elements of D.
- *   - p is a permutation vector. it contains n2 indexes into A. each index
- *     must be in the range 0..n1-1.
- *   - r is the row/column of L to remove.
- * the new L will be written within the old L, i.e. will have the same leading
- * dimension. the last row and column of L, and the last element of d, are
- * undefined on exit.
- *
- * a fast O(n^2) algorithm is used. see ldltremove.m for further comments.
- */
-ODE_API void dLDLTRemove (dReal **A, const int *p, dReal *L, dReal *d,
-                 int n1, int n2, int r, int nskip);
-
-
-/* given an n*n matrix A (with leading dimension nskip), remove the r'th row
- * and column by moving elements. the new matrix will have the same leading
- * dimension. the last row and column of A are untouched on exit.
- */
-ODE_API void dRemoveRowCol (dReal *A, int n, int nskip, int r);
-
-
-#if defined(__ODE__)
-
-void _dSetZero (dReal *a, size_t n);
-void _dSetValue (dReal *a, size_t n, dReal value);
-dReal _dDot (const dReal *a, const dReal *b, int n);
-void _dMultiply0 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-void _dMultiply1 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-void _dMultiply2 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-int _dFactorCholesky (dReal *A, int n, void *tmpbuf);
-void _dSolveCholesky (const dReal *L, dReal *b, int n, void *tmpbuf);
-int _dInvertPDMatrix (const dReal *A, dReal *Ainv, int n, void *tmpbuf);
-int _dIsPositiveDefinite (const dReal *A, int n, void *tmpbuf);
-void _dFactorLDLT (dReal *A, dReal *d, int n, int nskip);
-void _dSolveL1 (const dReal *L, dReal *b, int n, int nskip);
-void _dSolveL1T (const dReal *L, dReal *b, int n, int nskip);
-void _dVectorScale (dReal *a, const dReal *d, int n);
-void _dSolveLDLT (const dReal *L, const dReal *d, dReal *b, int n, int nskip);
-void _dLDLTAddTL (dReal *L, dReal *d, const dReal *a, int n, int nskip, void *tmpbuf);
-void _dLDLTRemove (dReal **A, const int *p, dReal *L, dReal *d, int n1, int n2, int r, int nskip, void *tmpbuf);
-void _dRemoveRowCol (dReal *A, int n, int nskip, int r);
-
-PURE_INLINE size_t _dEstimateFactorCholeskyTmpbufSize(int n)
-{
-  return dPAD(n) * sizeof(dReal);
-}
-
-PURE_INLINE size_t _dEstimateSolveCholeskyTmpbufSize(int n)
-{
-  return dPAD(n) * sizeof(dReal);
-}
-
-PURE_INLINE size_t _dEstimateInvertPDMatrixTmpbufSize(int n)
-{
-  size_t FactorCholesky_size = _dEstimateFactorCholeskyTmpbufSize(n);
-  size_t SolveCholesky_size = _dEstimateSolveCholeskyTmpbufSize(n);
-  size_t MaxCholesky_size = FactorCholesky_size > SolveCholesky_size ? FactorCholesky_size : SolveCholesky_size;
-  return dPAD(n) * (n + 1) * sizeof(dReal) + MaxCholesky_size;
-}
-
-PURE_INLINE size_t _dEstimateIsPositiveDefiniteTmpbufSize(int n)
-{
-  return dPAD(n) * n * sizeof(dReal) + _dEstimateFactorCholeskyTmpbufSize(n);
-}
-
-PURE_INLINE size_t _dEstimateLDLTAddTLTmpbufSize(int nskip)
-{
-  return nskip * 2 * sizeof(dReal);
-}
-
-PURE_INLINE size_t _dEstimateLDLTRemoveTmpbufSize(int n2, int nskip)
-{
-  return n2 * sizeof(dReal) + _dEstimateLDLTAddTLTmpbufSize(nskip);
-}
-
-// For internal use
-#define dSetZero(a, n) _dSetZero(a, n)
-#define dSetValue(a, n, value) _dSetValue(a, n, value)
-#define dDot(a, b, n) _dDot(a, b, n)
-#define dMultiply0(A, B, C, p, q, r) _dMultiply0(A, B, C, p, q, r)
-#define dMultiply1(A, B, C, p, q, r) _dMultiply1(A, B, C, p, q, r)
-#define dMultiply2(A, B, C, p, q, r) _dMultiply2(A, B, C, p, q, r)
-#define dFactorCholesky(A, n, tmpbuf) _dFactorCholesky(A, n, tmpbuf)
-#define dSolveCholesky(L, b, n, tmpbuf) _dSolveCholesky(L, b, n, tmpbuf)
-#define dInvertPDMatrix(A, Ainv, n, tmpbuf) _dInvertPDMatrix(A, Ainv, n, tmpbuf)
-#define dIsPositiveDefinite(A, n, tmpbuf) _dIsPositiveDefinite(A, n, tmpbuf)
-#define dFactorLDLT(A, d, n, nskip) _dFactorLDLT(A, d, n, nskip)
-#define dSolveL1(L, b, n, nskip) _dSolveL1(L, b, n, nskip)
-#define dSolveL1T(L, b, n, nskip) _dSolveL1T(L, b, n, nskip)
-#define dVectorScale(a, d, n) _dVectorScale(a, d, n)
-#define dSolveLDLT(L, d, b, n, nskip) _dSolveLDLT(L, d, b, n, nskip)
-#define dLDLTAddTL(L, d, a, n, nskip, tmpbuf) _dLDLTAddTL(L, d, a, n, nskip, tmpbuf)
-#define dLDLTRemove(A, p, L, d, n1, n2, r, nskip, tmpbuf) _dLDLTRemove(A, p, L, d, n1, n2, r, nskip, tmpbuf)
-#define dRemoveRowCol(A, n, nskip, r) _dRemoveRowCol(A, n, nskip, r)
-
-
-#define dEstimateFactorCholeskyTmpbufSize(n) _dEstimateFactorCholeskyTmpbufSize(n)
-#define dEstimateSolveCholeskyTmpbufSize(n) _dEstimateSolveCholeskyTmpbufSize(n)
-#define dEstimateInvertPDMatrixTmpbufSize(n) _dEstimateInvertPDMatrixTmpbufSize(n)
-#define dEstimateIsPositiveDefiniteTmpbufSize(n) _dEstimateIsPositiveDefiniteTmpbufSize(n)
-#define dEstimateLDLTAddTLTmpbufSize(nskip) _dEstimateLDLTAddTLTmpbufSize(nskip)
-#define dEstimateLDLTRemoveTmpbufSize(n2, nskip) _dEstimateLDLTRemoveTmpbufSize(n2, nskip)
-
-
-#endif // defined(__ODE__)
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/memory.h b/misc/builddeps/linux32/ode/include/ode/memory.h
deleted file mode 100644 (file)
index 361061c..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/* this comes from the `reuse' library. copy any changes back to the source */
-
-#ifndef _ODE_MEMORY_H_
-#define _ODE_MEMORY_H_
-
-#include <ode/odeconfig.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* function types to allocate and free memory */
-typedef void * dAllocFunction (size_t size);
-typedef void * dReallocFunction (void *ptr, size_t oldsize, size_t newsize);
-typedef void dFreeFunction (void *ptr, size_t size);
-
-/* set new memory management functions. if fn is 0, the default handlers are
- * used. */
-ODE_API void dSetAllocHandler (dAllocFunction *fn);
-ODE_API void dSetReallocHandler (dReallocFunction *fn);
-ODE_API void dSetFreeHandler (dFreeFunction *fn);
-
-/* get current memory management functions */
-ODE_API dAllocFunction *dGetAllocHandler (void);
-ODE_API dReallocFunction *dGetReallocHandler (void);
-ODE_API dFreeFunction *dGetFreeHandler (void);
-
-/* allocate and free memory. */
-ODE_API void * dAlloc (size_t size);
-ODE_API void * dRealloc (void *ptr, size_t oldsize, size_t newsize);
-ODE_API void dFree (void *ptr, size_t size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/misc.h b/misc/builddeps/linux32/ode/include/ode/misc.h
deleted file mode 100644 (file)
index 0c55fc5..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/* miscellaneous math functions. these are mostly useful for testing */
-
-#ifndef _ODE_MISC_H_
-#define _ODE_MISC_H_
-
-#include <ode/common.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* return 1 if the random number generator is working. */
-ODE_API int dTestRand(void);
-
-/* return next 32 bit random number. this uses a not-very-random linear
- * congruential method.
- */
-ODE_API unsigned long dRand(void);
-
-/* get and set the current random number seed. */
-ODE_API unsigned long  dRandGetSeed(void);
-ODE_API void dRandSetSeed (unsigned long s);
-
-/* return a random integer between 0..n-1. the distribution will get worse
- * as n approaches 2^32.
- */
-ODE_API int dRandInt (int n);
-
-/* return a random real number between 0..1 */
-ODE_API dReal dRandReal(void);
-
-/* print out a matrix */
-#ifdef __cplusplus
-ODE_API void dPrintMatrix (const dReal *A, int n, int m, char *fmt = "%10.4f ",
-                  FILE *f=stdout);
-#else
-ODE_API void dPrintMatrix (const dReal *A, int n, int m, char *fmt, FILE *f);
-#endif
-
-/* make a random vector with entries between +/- range. A has n elements. */
-ODE_API void dMakeRandomVector (dReal *A, int n, dReal range);
-
-/* make a random matrix with entries between +/- range. A has size n*m. */
-ODE_API void dMakeRandomMatrix (dReal *A, int n, int m, dReal range);
-
-/* clear the upper triangle of a square matrix */
-ODE_API void dClearUpperTriangle (dReal *A, int n);
-
-/* return the maximum element difference between the two n*m matrices */
-ODE_API dReal dMaxDifference (const dReal *A, const dReal *B, int n, int m);
-
-/* return the maximum element difference between the lower triangle of two
- * n*n matrices */
-ODE_API dReal dMaxDifferenceLowerTriangle (const dReal *A, const dReal *B, int n);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/objects.h b/misc/builddeps/linux32/ode/include/ode/objects.h
deleted file mode 100644 (file)
index 379de01..0000000
+++ /dev/null
@@ -1,2975 +0,0 @@
-
-
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_OBJECTS_H_
-#define _ODE_OBJECTS_H_
-
-#include <ode/common.h>
-#include <ode/mass.h>
-#include <ode/contact.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup world World
- *
- * The world object is a container for rigid bodies and joints. Objects in
- * different worlds can not interact, for example rigid bodies from two
- * different worlds can not collide.
- *
- * All the objects in a world exist at the same point in time, thus one
- * reason to use separate worlds is to simulate systems at different rates.
- * Most applications will only need one world.
- */
-
-
-/**
- * @brief Create a new, empty world and return its ID number.
- * @return an identifier
- * @ingroup world
- */
-ODE_API dWorldID dWorldCreate(void);
-
-
-/**
- * @brief Destroy a world and everything in it.
- *
- * This includes all bodies, and all joints that are not part of a joint
- * group. Joints that are part of a joint group will be deactivated, and
- * can be destroyed by calling, for example, dJointGroupEmpty().
- * @ingroup world
- * @param world the identifier for the world the be destroyed.
- */
-ODE_API void dWorldDestroy (dWorldID world);
-
-
-/**
- * @brief Set the world's global gravity vector.
- *
- * The units are m/s^2, so Earth's gravity vector would be (0,0,-9.81),
- * assuming that +z is up. The default is no gravity, i.e. (0,0,0).
- *
- * @ingroup world
- */
-ODE_API void dWorldSetGravity (dWorldID, dReal x, dReal y, dReal z);
-
-
-/**
- * @brief Get the gravity vector for a given world.
- * @ingroup world
- */
-ODE_API void dWorldGetGravity (dWorldID, dVector3 gravity);
-
-
-/**
- * @brief Set the global ERP value, that controls how much error
- * correction is performed in each time step.
- * @ingroup world
- * @param dWorldID the identifier of the world.
- * @param erp Typical values are in the range 0.1--0.8. The default is 0.2.
- */
-ODE_API void dWorldSetERP (dWorldID, dReal erp);
-
-/**
- * @brief Get the error reduction parameter.
- * @ingroup world
- * @return ERP value
- */
-ODE_API dReal dWorldGetERP (dWorldID);
-
-
-/**
- * @brief Set the global CFM (constraint force mixing) value.
- * @ingroup world
- * @param cfm Typical values are in the range @m{10^{-9}} -- 1.
- * The default is 10^-5 if single precision is being used, or 10^-10
- * if double precision is being used.
- */
-ODE_API void dWorldSetCFM (dWorldID, dReal cfm);
-
-/**
- * @brief Get the constraint force mixing value.
- * @ingroup world
- * @return CFM value
- */
-ODE_API dReal dWorldGetCFM (dWorldID);
-
-
-/**
- * @brief Set the world to use shared working memory along with another world.
- *
- * The worlds allocate working memory internally for simulation stepping. This
- * memory is cached among the calls to @c dWordStep and @c dWorldQuickStep. 
- * Similarly, several worlds can be set up to share this memory caches thus 
- * reducing overall memory usage by cost of making worlds inappropriate for 
- * simultaneous simulation in multiple threads.
- *
- * If null value is passed for @a from_world parameter the world is detached from 
- * sharing and returns to defaults for working memory, reservation policy and 
- * memory manager as if just created. This can also be used to enable use of shared 
- * memory for a world that has already had working memory allocated privately.
- * Normally using shared memory after a world has its private working memory allocated
- * is prohibited.
- *
- * Allocation policy used can only increase world's internal reserved memory size
- * and never decreases it. @c dWorldCleanupWorkingMemory can be used to release 
- * working memory for a world in case if number of objects/joint decreases 
- * significantly in it.
- *
- * With sharing working memory worlds also automatically share memory reservation 
- * policy and memory manager. Thus, these parameters need to be customized for
- * initial world to be used as sharing source only.
- *
- * Failure result status means a memory allocation failure.
- *
- * @param w The world to use the shared memory with.
- * @param from_world Null or the world the shared memory is to be used from.
- * @returns 1 for success and 0 for failure.
- *
- * @ingroup world
- * @see dWorldCleanupWorkingMemory
- * @see dWorldSetStepMemoryReservationPolicy
- * @see dWorldSetStepMemoryManager
- */
-ODE_API int dWorldUseSharedWorkingMemory(dWorldID w, dWorldID from_world/*=NULL*/);
-
-/**
- * @brief Release internal working memory allocated for world
- *
- * The worlds allocate working memory internally for simulation stepping. This 
- * function can be used to free world's internal memory cache in case if number of
- * objects/joints in the world decreases significantly. By default, internal 
- * allocation policy is used to only increase cache size as necessary and never 
- * decrease it.
- *
- * If a world shares its working memory with other worlds the cache deletion 
- * affects all the linked worlds. However the shared status itself remains intact.
- *
- * The function call does affect neither memory reservation policy nor memory manager.
- *
- * @param w The world to release working memory for.
- *
- * @ingroup world
- * @see dWorldUseSharedWorkingMemory
- * @see dWorldSetStepMemoryReservationPolicy
- * @see dWorldSetStepMemoryManager
- */
-ODE_API void dWorldCleanupWorkingMemory(dWorldID w);
-
-#define dWORLDSTEP_RESERVEFACTOR_DEFAULT    1.2f
-#define dWORLDSTEP_RESERVESIZE_DEFAULT      65536U
-
-/**
- * @struct dWorldStepReserveInfo
- * @brief Memory reservation policy descriptor structure for world stepping functions.
- *
- * @c struct_size should be assigned the size of the structure.
- *
- * @c reserve_factor is a quotient that is multiplied by required memory size
- *  to allocate extra reserve whenever reallocation is needed.
- *
- * @c reserve_minimum is a minimum size that is checked against whenever reallocation 
- * is needed to allocate expected working memory minimum at once without extra 
- * reallocations as number of bodies/joints grows.
- *
- * @ingroup world
- * @see dWorldSetStepMemoryReservationPolicy
- */
-typedef struct
-{
-  unsigned struct_size;
-  float reserve_factor; // Use float as precision does not matter here
-  unsigned reserve_minimum;
-
-} dWorldStepReserveInfo;
-
-/**
- * @brief Set memory reservation policy for world to be used with simulation stepping functions
- *
- * The function allows to customize reservation policy to be used for internal
- * memory which is allocated to aid simulation for a world. By default, values
- * of @c dWORLDSTEP_RESERVEFACTOR_DEFAULT and @c dWORLDSTEP_RESERVESIZE_DEFAULT
- * are used.
- *
- * Passing @a policyinfo argument as NULL results in reservation policy being
- * reset to defaults as if the world has been just created. The content of 
- * @a policyinfo structure is copied internally and does not need to remain valid
- * after the call returns.
- *
- * If the world uses working memory sharing, changing memory reservation policy
- * affects all the worlds linked together.
- *
- * Failure result status means a memory allocation failure.
- *
- * @param w The world to change memory reservation policy for.
- * @param policyinfo Null or a pointer to policy descriptor structure.
- * @returns 1 for success and 0 for failure.
- *
- * @ingroup world
- * @see dWorldUseSharedWorkingMemory
- */
-ODE_API int dWorldSetStepMemoryReservationPolicy(dWorldID w, const dWorldStepReserveInfo *policyinfo/*=NULL*/);
-
-/**
-* @struct dWorldStepMemoryFunctionsInfo
-* @brief World stepping memory manager descriptor structure
-*
-* This structure is intended to define the functions of memory manager to be used
-* with world stepping functions.
-*
-* @c struct_size should be assigned the size of the structure
-*
-* @c alloc_block is a function to allocate memory block of given size.
-*
-* @c shrink_block is a function to shrink existing memory block to a smaller size.
-* It must preserve the contents of block head while shrinking. The new block size
-* is guaranteed to be always less than the existing one.
-*
-* @c free_block is a function to delete existing memory block.
-*
-* @ingroup init
-* @see dWorldSetStepMemoryManager
-*/
-typedef struct 
-{
-  unsigned struct_size;
-  void *(*alloc_block)(size_t block_size);
-  void *(*shrink_block)(void *block_pointer, size_t block_current_size, size_t block_smaller_size);
-  void (*free_block)(void *block_pointer, size_t block_current_size);
-
-} dWorldStepMemoryFunctionsInfo;
-
-/**
-* @brief Set memory manager for world to be used with simulation stepping functions
-*
-* The function allows to customize memory manager to be used for internal
-* memory allocation during simulation for a world. By default, @c dAlloc/@c dRealloc/@c dFree
-* based memory manager is used.
-*
-* Passing @a memfuncs argument as NULL results in memory manager being
-* reset to default one as if the world has been just created. The content of 
-* @a memfuncs structure is copied internally and does not need to remain valid
-* after the call returns.
-*
-* If the world uses working memory sharing, changing memory manager
-* affects all the worlds linked together. 
-*
-* Failure result status means a memory allocation failure.
-*
-* @param w The world to change memory reservation policy for.
-* @param memfuncs Null or a pointer to memory manager descriptor structure.
-* @returns 1 for success and 0 for failure.
-*
-* @ingroup world
-* @see dWorldUseSharedWorkingMemory
-*/
-ODE_API int dWorldSetStepMemoryManager(dWorldID w, const dWorldStepMemoryFunctionsInfo *memfuncs);
-
-/**
- * @brief Step the world.
- *
- * This uses a "big matrix" method that takes time on the order of m^3
- * and memory on the order of m^2, where m is the total number of constraint
- * rows. For large systems this will use a lot of memory and can be very slow,
- * but this is currently the most accurate method.
- *
- * Failure result status means that the memory allocation has failed for operation.
- * In such a case all the objects remain in unchanged state and simulation can be
- * retried as soon as more memory is available.
- *
- * @param w The world to be stepped
- * @param stepsize The number of seconds that the simulation has to advance.
- * @returns 1 for success and 0 for failure
- *
- * @ingroup world
- */
-ODE_API int dWorldStep (dWorldID w, dReal stepsize);
-
-/**
- * @brief Quick-step the world.
- *
- * This uses an iterative method that takes time on the order of m*N
- * and memory on the order of m, where m is the total number of constraint
- * rows N is the number of iterations.
- * For large systems this is a lot faster than dWorldStep(),
- * but it is less accurate.
- *
- * QuickStep is great for stacks of objects especially when the
- * auto-disable feature is used as well.
- * However, it has poor accuracy for near-singular systems.
- * Near-singular systems can occur when using high-friction contacts, motors,
- * or certain articulated structures. For example, a robot with multiple legs
- * sitting on the ground may be near-singular.
- *
- * There are ways to help overcome QuickStep's inaccuracy problems:
- *
- * \li Increase CFM.
- * \li Reduce the number of contacts in your system (e.g. use the minimum
- *     number of contacts for the feet of a robot or creature).
- * \li Don't use excessive friction in the contacts.
- * \li Use contact slip if appropriate
- * \li Avoid kinematic loops (however, kinematic loops are inevitable in
- *     legged creatures).
- * \li Don't use excessive motor strength.
- * \liUse force-based motors instead of velocity-based motors.
- *
- * Increasing the number of QuickStep iterations may help a little bit, but
- * it is not going to help much if your system is really near singular.
- *
- * Failure result status means that the memory allocation has failed for operation.
- * In such a case all the objects remain in unchanged state and simulation can be
- * retried as soon as more memory is available.
- *
- * @param w The world to be stepped
- * @param stepsize The number of seconds that the simulation has to advance.
- * @returns 1 for success and 0 for failure
- *
- * @ingroup world
- */
-ODE_API int dWorldQuickStep (dWorldID w, dReal stepsize);
-
-
-/**
-* @brief Converts an impulse to a force.
-* @ingroup world
-* @remarks
-* If you want to apply a linear or angular impulse to a rigid body,
-* instead of a force or a torque, then you can use this function to convert
-* the desired impulse into a force/torque vector before calling the
-* BodyAdd... function.
-* The current algorithm simply scales the impulse by 1/stepsize,
-* where stepsize is the step size for the next step that will be taken.
-* This function is given a dWorldID because, in the future, the force
-* computation may depend on integrator parameters that are set as
-* properties of the world.
-*/
-ODE_API void dWorldImpulseToForce
-(
- dWorldID, dReal stepsize,
- dReal ix, dReal iy, dReal iz, dVector3 force
- );
-
-
-/**
- * @brief Set the number of iterations that the QuickStep method performs per
- *        step.
- * @ingroup world
- * @remarks
- * More iterations will give a more accurate solution, but will take
- * longer to compute.
- * @param num The default is 20 iterations.
- */
-ODE_API void dWorldSetQuickStepNumIterations (dWorldID, int num);
-
-
-/**
- * @brief Get the number of iterations that the QuickStep method performs per
- *        step.
- * @ingroup world
- * @return nr of iterations
- */
-ODE_API int dWorldGetQuickStepNumIterations (dWorldID);
-
-/**
- * @brief Set the SOR over-relaxation parameter
- * @ingroup world
- * @param over_relaxation value to use by SOR
- */
-ODE_API void dWorldSetQuickStepW (dWorldID, dReal over_relaxation);
-
-/**
- * @brief Get the SOR over-relaxation parameter
- * @ingroup world
- * @returns the over-relaxation setting
- */
-ODE_API dReal dWorldGetQuickStepW (dWorldID);
-
-/* World contact parameter functions */
-
-/**
- * @brief Set the maximum correcting velocity that contacts are allowed
- * to generate.
- * @ingroup world
- * @param vel The default value is infinity (i.e. no limit).
- * @remarks
- * Reducing this value can help prevent "popping" of deeply embedded objects.
- */
-ODE_API void dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel);
-
-/**
- * @brief Get the maximum correcting velocity that contacts are allowed
- * to generated.
- * @ingroup world
- */
-ODE_API dReal dWorldGetContactMaxCorrectingVel (dWorldID);
-
-/**
- * @brief Set the depth of the surface layer around all geometry objects.
- * @ingroup world
- * @remarks
- * Contacts are allowed to sink into the surface layer up to the given
- * depth before coming to rest.
- * @param depth The default value is zero.
- * @remarks
- * Increasing this to some small value (e.g. 0.001) can help prevent
- * jittering problems due to contacts being repeatedly made and broken.
- */
-ODE_API void dWorldSetContactSurfaceLayer (dWorldID, dReal depth);
-
-/**
- * @brief Get the depth of the surface layer around all geometry objects.
- * @ingroup world
- * @returns the depth
- */
-ODE_API dReal dWorldGetContactSurfaceLayer (dWorldID);
-
-
-/**
- * @defgroup disable Automatic Enabling and Disabling
- * @ingroup world bodies
- *
- * Every body can be enabled or disabled. Enabled bodies participate in the
- * simulation, while disabled bodies are turned off and do not get updated
- * during a simulation step. New bodies are always created in the enabled state.
- *
- * A disabled body that is connected through a joint to an enabled body will be
- * automatically re-enabled at the next simulation step.
- *
- * Disabled bodies do not consume CPU time, therefore to speed up the simulation
- * bodies should be disabled when they come to rest. This can be done automatically
- * with the auto-disable feature.
- *
- * If a body has its auto-disable flag turned on, it will automatically disable
- * itself when
- *   @li It has been idle for a given number of simulation steps.
- *   @li It has also been idle for a given amount of simulation time.
- *
- * A body is considered to be idle when the magnitudes of both its
- * linear average velocity and angular average velocity are below given thresholds.
- * The sample size for the average defaults to one and can be disabled by setting
- * to zero with 
- *
- * Thus, every body has six auto-disable parameters: an enabled flag, a idle step
- * count, an idle time, linear/angular average velocity thresholds, and the
- * average samples count.
- *
- * Newly created bodies get these parameters from world.
- */
-
-/**
- * @brief Get auto disable linear threshold for newly created bodies.
- * @ingroup disable
- * @return the threshold
- */
-ODE_API dReal dWorldGetAutoDisableLinearThreshold (dWorldID);
-
-/**
- * @brief Set auto disable linear threshold for newly created bodies.
- * @param linear_threshold default is 0.01
- * @ingroup disable
- */
-ODE_API void  dWorldSetAutoDisableLinearThreshold (dWorldID, dReal linear_threshold);
-
-/**
- * @brief Get auto disable angular threshold for newly created bodies.
- * @ingroup disable
- * @return the threshold
- */
-ODE_API dReal dWorldGetAutoDisableAngularThreshold (dWorldID);
-
-/**
- * @brief Set auto disable angular threshold for newly created bodies.
- * @param linear_threshold default is 0.01
- * @ingroup disable
- */
-ODE_API void dWorldSetAutoDisableAngularThreshold (dWorldID, dReal angular_threshold);
-
-/**
- * @brief Get auto disable linear average threshold for newly created bodies.
- * @ingroup disable
- * @return the threshold
- */
-ODE_API dReal dWorldGetAutoDisableLinearAverageThreshold (dWorldID);
-
-/**
- * @brief Set auto disable linear average threshold for newly created bodies.
- * @param linear_average_threshold default is 0.01
- * @ingroup disable
- */
-ODE_API void  dWorldSetAutoDisableLinearAverageThreshold (dWorldID, dReal linear_average_threshold);
-
-/**
- * @brief Get auto disable angular average threshold for newly created bodies.
- * @ingroup disable
- * @return the threshold
- */
-ODE_API dReal dWorldGetAutoDisableAngularAverageThreshold (dWorldID);
-
-/**
- * @brief Set auto disable angular average threshold for newly created bodies.
- * @param linear_average_threshold default is 0.01
- * @ingroup disable
- */
-ODE_API void dWorldSetAutoDisableAngularAverageThreshold (dWorldID, dReal angular_average_threshold);
-
-/**
- * @brief Get auto disable sample count for newly created bodies.
- * @ingroup disable
- * @return number of samples used
- */
-ODE_API int dWorldGetAutoDisableAverageSamplesCount (dWorldID);
-
-/**
- * @brief Set auto disable average sample count for newly created bodies.
- * @ingroup disable
- * @param average_samples_count Default is 1, meaning only instantaneous velocity is used.
- * Set to zero to disable sampling and thus prevent any body from auto-disabling.
- */
-ODE_API void dWorldSetAutoDisableAverageSamplesCount (dWorldID, unsigned int average_samples_count );
-
-/**
- * @brief Get auto disable steps for newly created bodies.
- * @ingroup disable
- * @return nr of steps
- */
-ODE_API int dWorldGetAutoDisableSteps (dWorldID);
-
-/**
- * @brief Set auto disable steps for newly created bodies.
- * @ingroup disable
- * @param steps default is 10
- */
-ODE_API void dWorldSetAutoDisableSteps (dWorldID, int steps);
-
-/**
- * @brief Get auto disable time for newly created bodies.
- * @ingroup disable
- * @return nr of seconds
- */
-ODE_API dReal dWorldGetAutoDisableTime (dWorldID);
-
-/**
- * @brief Set auto disable time for newly created bodies.
- * @ingroup disable
- * @param time default is 0 seconds
- */
-ODE_API void dWorldSetAutoDisableTime (dWorldID, dReal time);
-
-/**
- * @brief Get auto disable flag for newly created bodies.
- * @ingroup disable
- * @return 0 or 1
- */
-ODE_API int dWorldGetAutoDisableFlag (dWorldID);
-
-/**
- * @brief Set auto disable flag for newly created bodies.
- * @ingroup disable
- * @param do_auto_disable default is false.
- */
-ODE_API void dWorldSetAutoDisableFlag (dWorldID, int do_auto_disable);
-
-
-/**
- * @defgroup damping Damping
- * @ingroup bodies world
- *
- * Damping serves two purposes: reduce simulation instability, and to allow
- * the bodies to come to rest (and possibly auto-disabling them).
- *
- * Bodies are constructed using the world's current damping parameters. Setting
- * the scales to 0 disables the damping.
- *
- * Here is how it is done: after every time step linear and angular
- * velocities are tested against the corresponding thresholds. If they
- * are above, they are multiplied by (1 - scale). So a negative scale value
- * will actually increase the speed, and values greater than one will
- * make the object oscillate every step; both can make the simulation unstable.
- *
- * To disable damping just set the damping scale to zero.
- *
- * You can also limit the maximum angular velocity. In contrast to the damping
- * functions, the angular velocity is affected before the body is moved.
- * This means that it will introduce errors in joints that are forcing the body
- * to rotate too fast. Some bodies have naturally high angular velocities
- * (like cars' wheels), so you may want to give them a very high (like the default,
- * dInfinity) limit.
- *
- * @note The velocities are damped after the stepper function has moved the
- * object. Otherwise the damping could introduce errors in joints. First the
- * joint constraints are processed by the stepper (moving the body), then
- * the damping is applied.
- *
- * @note The damping happens right after the moved callback is called; this way 
- * it still possible use the exact velocities the body has acquired during the
- * step. You can even use the callback to create your own customized damping.
- */
-
-/**
- * @brief Get the world's linear damping threshold.
- * @ingroup damping
- */
-ODE_API dReal dWorldGetLinearDampingThreshold (dWorldID w);
-
-/**
- * @brief Set the world's linear damping threshold.
- * @param threshold The damping won't be applied if the linear speed is
- *        below this threshold. Default is 0.01.
- * @ingroup damping
- */
-ODE_API void dWorldSetLinearDampingThreshold(dWorldID w, dReal threshold);
-
-/**
- * @brief Get the world's angular damping threshold.
- * @ingroup damping
- */
-ODE_API dReal dWorldGetAngularDampingThreshold (dWorldID w);
-
-/**
- * @brief Set the world's angular damping threshold.
- * @param threshold The damping won't be applied if the angular speed is
- *        below this threshold. Default is 0.01.
- * @ingroup damping
- */
-ODE_API void dWorldSetAngularDampingThreshold(dWorldID w, dReal threshold);
-
-/**
- * @brief Get the world's linear damping scale.
- * @ingroup damping
- */
-ODE_API dReal dWorldGetLinearDamping (dWorldID w);
-
-/**
- * @brief Set the world's linear damping scale.
- * @param scale The linear damping scale that is to be applied to bodies.
- * Default is 0 (no damping). Should be in the interval [0, 1].
- * @ingroup damping
- */
-ODE_API void dWorldSetLinearDamping (dWorldID w, dReal scale);
-
-/**
- * @brief Get the world's angular damping scale.
- * @ingroup damping
- */
-ODE_API dReal dWorldGetAngularDamping (dWorldID w);
-
-/**
- * @brief Set the world's angular damping scale.
- * @param scale The angular damping scale that is to be applied to bodies.
- * Default is 0 (no damping). Should be in the interval [0, 1].
- * @ingroup damping
- */
-ODE_API void dWorldSetAngularDamping(dWorldID w, dReal scale);
-
-/**
- * @brief Convenience function to set body linear and angular scales.
- * @param linear_scale The linear damping scale that is to be applied to bodies.
- * @param angular_scale The angular damping scale that is to be applied to bodies.
- * @ingroup damping
- */
-ODE_API void dWorldSetDamping(dWorldID w,
-                                dReal linear_scale,
-                                dReal angular_scale);
-
-/**
- * @brief Get the default maximum angular speed.
- * @ingroup damping
- * @sa dBodyGetMaxAngularSpeed()
- */
-ODE_API dReal dWorldGetMaxAngularSpeed (dWorldID w);
-
-
-/**
- * @brief Set the default maximum angular speed for new bodies.
- * @ingroup damping
- * @sa dBodySetMaxAngularSpeed()
- */
-ODE_API void dWorldSetMaxAngularSpeed (dWorldID w, dReal max_speed);
-
-
-
-/**
- * @defgroup bodies Rigid Bodies
- *
- * A rigid body has various properties from the point of view of the
- * simulation. Some properties change over time:
- *
- *  @li Position vector (x,y,z) of the body's point of reference.
- *      Currently the point of reference must correspond to the body's center of mass.
- *  @li Linear velocity of the point of reference, a vector (vx,vy,vz).
- *  @li Orientation of a body, represented by a quaternion (qs,qx,qy,qz) or
- *      a 3x3 rotation matrix.
- *  @li Angular velocity vector (wx,wy,wz) which describes how the orientation
- *      changes over time.
- *
- * Other body properties are usually constant over time:
- *
- *  @li Mass of the body.
- *  @li Position of the center of mass with respect to the point of reference.
- *      In the current implementation the center of mass and the point of
- *      reference must coincide.
- *  @li Inertia matrix. This is a 3x3 matrix that describes how the body's mass
- *      is distributed around the center of mass. Conceptually each body has an
- *      x-y-z coordinate frame embedded in it that moves and rotates with the body.
- *
- * The origin of this coordinate frame is the body's point of reference. Some values
- * in ODE (vectors, matrices etc) are relative to the body coordinate frame, and others
- * are relative to the global coordinate frame.
- *
- * Note that the shape of a rigid body is not a dynamical property (except insofar as
- * it influences the various mass properties). It is only collision detection that cares
- * about the detailed shape of the body.
- */
-
-
-/**
- * @brief Get auto disable linear average threshold.
- * @ingroup bodies disable
- * @return the threshold
- */
-ODE_API dReal dBodyGetAutoDisableLinearThreshold (dBodyID);
-
-/**
- * @brief Set auto disable linear average threshold.
- * @ingroup bodies disable
- * @return the threshold
- */
-ODE_API void  dBodySetAutoDisableLinearThreshold (dBodyID, dReal linear_average_threshold);
-
-/**
- * @brief Get auto disable angular average threshold.
- * @ingroup bodies disable
- * @return the threshold
- */
-ODE_API dReal dBodyGetAutoDisableAngularThreshold (dBodyID);
-
-/**
- * @brief Set auto disable angular average threshold.
- * @ingroup bodies disable
- * @return the threshold
- */
-ODE_API void  dBodySetAutoDisableAngularThreshold (dBodyID, dReal angular_average_threshold);
-
-/**
- * @brief Get auto disable average size (samples count).
- * @ingroup bodies disable
- * @return the nr of steps/size.
- */
-ODE_API int dBodyGetAutoDisableAverageSamplesCount (dBodyID);
-
-/**
- * @brief Set auto disable average buffer size (average steps).
- * @ingroup bodies disable
- * @param average_samples_count the nr of samples to review.
- */
-ODE_API void dBodySetAutoDisableAverageSamplesCount (dBodyID, unsigned int average_samples_count);
-
-
-/**
- * @brief Get auto steps a body must be thought of as idle to disable
- * @ingroup bodies disable
- * @return the nr of steps
- */
-ODE_API int dBodyGetAutoDisableSteps (dBodyID);
-
-/**
- * @brief Set auto disable steps.
- * @ingroup bodies disable
- * @param steps the nr of steps.
- */
-ODE_API void dBodySetAutoDisableSteps (dBodyID, int steps);
-
-/**
- * @brief Get auto disable time.
- * @ingroup bodies disable
- * @return nr of seconds
- */
-ODE_API dReal dBodyGetAutoDisableTime (dBodyID);
-
-/**
- * @brief Set auto disable time.
- * @ingroup bodies disable
- * @param time nr of seconds.
- */
-ODE_API void  dBodySetAutoDisableTime (dBodyID, dReal time);
-
-/**
- * @brief Get auto disable flag.
- * @ingroup bodies disable
- * @return 0 or 1
- */
-ODE_API int dBodyGetAutoDisableFlag (dBodyID);
-
-/**
- * @brief Set auto disable flag.
- * @ingroup bodies disable
- * @param do_auto_disable 0 or 1
- */
-ODE_API void dBodySetAutoDisableFlag (dBodyID, int do_auto_disable);
-
-/**
- * @brief Set auto disable defaults.
- * @remarks
- * Set the values for the body to those set as default for the world.
- * @ingroup bodies disable
- */
-ODE_API void  dBodySetAutoDisableDefaults (dBodyID);
-
-
-/**
- * @brief Retrieves the world attached to te given body.
- * @remarks
- * 
- * @ingroup bodies
- */
-ODE_API dWorldID dBodyGetWorld (dBodyID);
-
-/**
- * @brief Create a body in given world.
- * @remarks
- * Default mass parameters are at position (0,0,0).
- * @ingroup bodies
- */
-ODE_API dBodyID dBodyCreate (dWorldID);
-
-/**
- * @brief Destroy a body.
- * @remarks
- * All joints that are attached to this body will be put into limbo:
- * i.e. unattached and not affecting the simulation, but they will NOT be
- * deleted.
- * @ingroup bodies
- */
-ODE_API void dBodyDestroy (dBodyID);
-
-/**
- * @brief Set the body's user-data pointer.
- * @ingroup bodies
- * @param data arbitraty pointer
- */
-ODE_API void  dBodySetData (dBodyID, void *data);
-
-/**
- * @brief Get the body's user-data pointer.
- * @ingroup bodies
- * @return a pointer to the user's data.
- */
-ODE_API void *dBodyGetData (dBodyID);
-
-/**
- * @brief Set position of a body.
- * @remarks
- * After setting, the outcome of the simulation is undefined
- * if the new configuration is inconsistent with the joints/constraints
- * that are present.
- * @ingroup bodies
- */
-ODE_API void dBodySetPosition   (dBodyID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the orientation of a body.
- * @ingroup bodies
- * @remarks
- * After setting, the outcome of the simulation is undefined
- * if the new configuration is inconsistent with the joints/constraints
- * that are present.
- */
-ODE_API void dBodySetRotation   (dBodyID, const dMatrix3 R);
-
-/**
- * @brief Set the orientation of a body.
- * @ingroup bodies
- * @remarks
- * After setting, the outcome of the simulation is undefined
- * if the new configuration is inconsistent with the joints/constraints
- * that are present.
- */
-ODE_API void dBodySetQuaternion (dBodyID, const dQuaternion q);
-
-/**
- * @brief Set the linear velocity of a body.
- * @ingroup bodies
- */
-ODE_API void dBodySetLinearVel  (dBodyID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the angular velocity of a body.
- * @ingroup bodies
- */
-ODE_API void dBodySetAngularVel (dBodyID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Get the position of a body.
- * @ingroup bodies
- * @remarks
- * When getting, the returned values are pointers to internal data structures,
- * so the vectors are valid until any changes are made to the rigid body
- * system structure.
- * @sa dBodyCopyPosition
- */
-ODE_API const dReal * dBodyGetPosition (dBodyID);
-
-
-/**
- * @brief Copy the position of a body into a vector.
- * @ingroup bodies
- * @param body  the body to query
- * @param pos   a copy of the body position
- * @sa dBodyGetPosition
- */
-ODE_API void dBodyCopyPosition (dBodyID body, dVector3 pos);
-
-
-/**
- * @brief Get the rotation of a body.
- * @ingroup bodies
- * @return pointer to a 4x3 rotation matrix.
- */
-ODE_API const dReal * dBodyGetRotation (dBodyID);
-
-
-/**
- * @brief Copy the rotation of a body.
- * @ingroup bodies
- * @param body   the body to query
- * @param R      a copy of the rotation matrix
- * @sa dBodyGetRotation
- */
-ODE_API void dBodyCopyRotation (dBodyID, dMatrix3 R);
-
-
-/**
- * @brief Get the rotation of a body.
- * @ingroup bodies
- * @return pointer to 4 scalars that represent the quaternion.
- */
-ODE_API const dReal * dBodyGetQuaternion (dBodyID);
-
-
-/**
- * @brief Copy the orientation of a body into a quaternion.
- * @ingroup bodies
- * @param body  the body to query
- * @param quat  a copy of the orientation quaternion
- * @sa dBodyGetQuaternion
- */
-ODE_API void dBodyCopyQuaternion(dBodyID body, dQuaternion quat);
-
-
-/**
- * @brief Get the linear velocity of a body.
- * @ingroup bodies
- */
-ODE_API const dReal * dBodyGetLinearVel (dBodyID);
-
-/**
- * @brief Get the angular velocity of a body.
- * @ingroup bodies
- */
-ODE_API const dReal * dBodyGetAngularVel (dBodyID);
-
-/**
- * @brief Set the mass of a body.
- * @ingroup bodies
- */
-ODE_API void dBodySetMass (dBodyID, const dMass *mass);
-
-/**
- * @brief Get the mass of a body.
- * @ingroup bodies
- */
-ODE_API void dBodyGetMass (dBodyID, dMass *mass);
-
-/**
- * @brief Add force at centre of mass of body in absolute coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddForce            (dBodyID, dReal fx, dReal fy, dReal fz);
-
-/**
- * @brief Add torque at centre of mass of body in absolute coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddTorque           (dBodyID, dReal fx, dReal fy, dReal fz);
-
-/**
- * @brief Add force at centre of mass of body in coordinates relative to body.
- * @ingroup bodies
- */
-ODE_API void dBodyAddRelForce         (dBodyID, dReal fx, dReal fy, dReal fz);
-
-/**
- * @brief Add torque at centre of mass of body in coordinates relative to body.
- * @ingroup bodies
- */
-ODE_API void dBodyAddRelTorque        (dBodyID, dReal fx, dReal fy, dReal fz);
-
-/**
- * @brief Add force at specified point in body in global coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddForceAtPos       (dBodyID, dReal fx, dReal fy, dReal fz,
-                                       dReal px, dReal py, dReal pz);
-/**
- * @brief Add force at specified point in body in local coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddForceAtRelPos    (dBodyID, dReal fx, dReal fy, dReal fz,
-                                       dReal px, dReal py, dReal pz);
-/**
- * @brief Add force at specified point in body in global coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddRelForceAtPos    (dBodyID, dReal fx, dReal fy, dReal fz,
-                                       dReal px, dReal py, dReal pz);
-/**
- * @brief Add force at specified point in body in local coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz,
-                                       dReal px, dReal py, dReal pz);
-
-/**
- * @brief Return the current accumulated force vector.
- * @return points to an array of 3 reals.
- * @remarks
- * The returned values are pointers to internal data structures, so
- * the vectors are only valid until any changes are made to the rigid
- * body system.
- * @ingroup bodies
- */
-ODE_API const dReal * dBodyGetForce (dBodyID);
-
-/**
- * @brief Return the current accumulated torque vector.
- * @return points to an array of 3 reals.
- * @remarks
- * The returned values are pointers to internal data structures, so
- * the vectors are only valid until any changes are made to the rigid
- * body system.
- * @ingroup bodies
- */
-ODE_API const dReal * dBodyGetTorque (dBodyID);
-
-/**
- * @brief Set the body force accumulation vector.
- * @remarks
- * This is mostly useful to zero the force and torque for deactivated bodies
- * before they are reactivated, in the case where the force-adding functions
- * were called on them while they were deactivated.
- * @ingroup bodies
- */
-ODE_API void dBodySetForce  (dBodyID b, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the body torque accumulation vector.
- * @remarks
- * This is mostly useful to zero the force and torque for deactivated bodies
- * before they are reactivated, in the case where the force-adding functions
- * were called on them while they were deactivated.
- * @ingroup bodies
- */
-ODE_API void dBodySetTorque (dBodyID b, dReal x, dReal y, dReal z);
-
-/**
- * @brief Get world position of a relative point on body.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyGetRelPointPos
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Get velocity vector in global coords of a relative point on body.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyGetRelPointVel
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Get velocity vector in global coords of a globally
- * specified point on a body.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyGetPointVel
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief takes a point in global coordinates and returns
- * the point's position in body-relative coordinates.
- * @remarks
- * This is the inverse of dBodyGetRelPointPos()
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyGetPosRelPoint
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Convert from local to world coordinates.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyVectorToWorld
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Convert from world to local coordinates.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyVectorFromWorld
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief controls the way a body's orientation is updated at each timestep.
- * @ingroup bodies
- * @param mode can be 0 or 1:
- * \li 0: An ``infinitesimal'' orientation update is used.
- * This is fast to compute, but it can occasionally cause inaccuracies
- * for bodies that are rotating at high speed, especially when those
- * bodies are joined to other bodies.
- * This is the default for every new body that is created.
- * \li 1: A ``finite'' orientation update is used.
- * This is more costly to compute, but will be more accurate for high
- * speed rotations.
- * @remarks
- * Note however that high speed rotations can result in many types of
- * error in a simulation, and the finite mode will only fix one of those
- * sources of error.
- */
-ODE_API void dBodySetFiniteRotationMode (dBodyID, int mode);
-
-/**
- * @brief sets the finite rotation axis for a body.
- * @ingroup bodies
- * @remarks
- * This is axis only has meaning when the finite rotation mode is set
- * If this axis is zero (0,0,0), full finite rotations are performed on
- * the body.
- * If this axis is nonzero, the body is rotated by performing a partial finite
- * rotation along the axis direction followed by an infinitesimal rotation
- * along an orthogonal direction.
- * @remarks
- * This can be useful to alleviate certain sources of error caused by quickly
- * spinning bodies. For example, if a car wheel is rotating at high speed
- * you can call this function with the wheel's hinge axis as the argument to
- * try and improve its behavior.
- */
-ODE_API void dBodySetFiniteRotationAxis (dBodyID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Get the way a body's orientation is updated each timestep.
- * @ingroup bodies
- * @return the mode 0 (infitesimal) or 1 (finite).
- */
-ODE_API int dBodyGetFiniteRotationMode (dBodyID);
-
-/**
- * @brief Get the finite rotation axis.
- * @param result will contain the axis.
- * @ingroup bodies
- */
-ODE_API void dBodyGetFiniteRotationAxis (dBodyID, dVector3 result);
-
-/**
- * @brief Get the number of joints that are attached to this body.
- * @ingroup bodies
- * @return nr of joints
- */
-ODE_API int dBodyGetNumJoints (dBodyID b);
-
-/**
- * @brief Return a joint attached to this body, given by index.
- * @ingroup bodies
- * @param index valid range is  0 to n-1 where n is the value returned by
- * dBodyGetNumJoints().
- */
-ODE_API dJointID dBodyGetJoint (dBodyID, int index);
-
-
-
-
-/**
- * @brief Set rigid body to dynamic state (default).
- * @param dBodyID identification of body.
- * @ingroup bodies
- */
-ODE_API void dBodySetDynamic (dBodyID);
-
-/**
- * @brief Set rigid body to kinematic state.
- * When in kinematic state the body isn't simulated as a dynamic
- * body (it's "unstoppable", doesn't respond to forces),
- * but can still affect dynamic bodies (e.g. in joints).
- * Kinematic bodies can be controlled by position and velocity.
- * @note A kinematic body has infinite mass. If you set its mass
- * to something else, it loses the kinematic state and behaves
- * as a normal dynamic body.
- * @param dBodyID identification of body.
- * @ingroup bodies
- */
-ODE_API void dBodySetKinematic (dBodyID);
-
-/**
- * @brief Check wether a body is in kinematic state.
- * @ingroup bodies
- * @return 1 if a body is kinematic or 0 if it is dynamic.
- */
-ODE_API int dBodyIsKinematic (dBodyID);
-
-/**
- * @brief Manually enable a body.
- * @param dBodyID identification of body.
- * @ingroup bodies
- */
-ODE_API void dBodyEnable (dBodyID);
-
-/**
- * @brief Manually disable a body.
- * @ingroup bodies
- * @remarks
- * A disabled body that is connected through a joint to an enabled body will
- * be automatically re-enabled at the next simulation step.
- */
-ODE_API void dBodyDisable (dBodyID);
-
-/**
- * @brief Check wether a body is enabled.
- * @ingroup bodies
- * @return 1 if a body is currently enabled or 0 if it is disabled.
- */
-ODE_API int dBodyIsEnabled (dBodyID);
-
-/**
- * @brief Set whether the body is influenced by the world's gravity or not.
- * @ingroup bodies
- * @param mode when nonzero gravity affects this body.
- * @remarks
- * Newly created bodies are always influenced by the world's gravity.
- */
-ODE_API void dBodySetGravityMode (dBodyID b, int mode);
-
-/**
- * @brief Get whether the body is influenced by the world's gravity or not.
- * @ingroup bodies
- * @return nonzero means gravity affects this body.
- */
-ODE_API int dBodyGetGravityMode (dBodyID b);
-
-/**
- * @brief Set the 'moved' callback of a body.
- *
- * Whenever a body has its position or rotation changed during the
- * timestep, the callback will be called (with body as the argument).
- * Use it to know which body may need an update in an external
- * structure (like a 3D engine).
- *
- * @param b the body that needs to be watched.
- * @param callback the callback to be invoked when the body moves. Set to zero
- * to disable.
- * @ingroup bodies
- */
-ODE_API void dBodySetMovedCallback(dBodyID b, void (*callback)(dBodyID));
-
-
-/**
- * @brief Return the first geom associated with the body.
- * 
- * You can traverse through the geoms by repeatedly calling
- * dBodyGetNextGeom().
- *
- * @return the first geom attached to this body, or 0.
- * @ingroup bodies
- */
-ODE_API dGeomID dBodyGetFirstGeom (dBodyID b);
-
-
-/**
- * @brief returns the next geom associated with the same body.
- * @param g a geom attached to some body.
- * @return the next geom attached to the same body, or 0.
- * @sa dBodyGetFirstGeom
- * @ingroup bodies
- */
-ODE_API dGeomID dBodyGetNextGeom (dGeomID g);
-
-
-/**
- * @brief Resets the damping settings to the current world's settings.
- * @ingroup bodies damping
- */
-ODE_API void dBodySetDampingDefaults(dBodyID b);
-
-/**
- * @brief Get the body's linear damping scale.
- * @ingroup bodies damping
- */
-ODE_API dReal dBodyGetLinearDamping (dBodyID b);
-
-/**
- * @brief Set the body's linear damping scale.
- * @param scale The linear damping scale. Should be in the interval [0, 1].
- * @ingroup bodies damping
- * @remarks From now on the body will not use the world's linear damping
- * scale until dBodySetDampingDefaults() is called.
- * @sa dBodySetDampingDefaults()
- */
-ODE_API void dBodySetLinearDamping(dBodyID b, dReal scale);
-
-/**
- * @brief Get the body's angular damping scale.
- * @ingroup bodies damping
- * @remarks If the body's angular damping scale was not set, this function
- * returns the world's angular damping scale.
- */
-ODE_API dReal dBodyGetAngularDamping (dBodyID b);
-
-/**
- * @brief Set the body's angular damping scale.
- * @param scale The angular damping scale. Should be in the interval [0, 1].
- * @ingroup bodies damping
- * @remarks From now on the body will not use the world's angular damping
- * scale until dBodyResetAngularDamping() is called.
- * @sa dBodyResetAngularDamping()
- */
-ODE_API void dBodySetAngularDamping(dBodyID b, dReal scale);
-
-/**
- * @brief Convenience function to set linear and angular scales at once.
- * @param linear_scale The linear damping scale. Should be in the interval [0, 1].
- * @param angular_scale The angular damping scale. Should be in the interval [0, 1].
- * @ingroup bodies damping
- * @sa dBodySetLinearDamping() dBodySetAngularDamping()
- */
-ODE_API void dBodySetDamping(dBodyID b, dReal linear_scale, dReal angular_scale);
-
-/**
- * @brief Get the body's linear damping threshold.
- * @ingroup bodies damping
- */
-ODE_API dReal dBodyGetLinearDampingThreshold (dBodyID b);
-
-/**
- * @brief Set the body's linear damping threshold.
- * @param threshold The linear threshold to be used. Damping
- *      is only applied if the linear speed is above this limit.
- * @ingroup bodies damping
- */
-ODE_API void dBodySetLinearDampingThreshold(dBodyID b, dReal threshold);
-
-/**
- * @brief Get the body's angular damping threshold.
- * @ingroup bodies damping
- */
-ODE_API dReal dBodyGetAngularDampingThreshold (dBodyID b);
-
-/**
- * @brief Set the body's angular damping threshold.
- * @param threshold The angular threshold to be used. Damping is
- *      only used if the angular speed is above this limit.
- * @ingroup bodies damping
- */
-ODE_API void dBodySetAngularDampingThreshold(dBodyID b, dReal threshold);
-
-/**
- * @brief Get the body's maximum angular speed.
- * @ingroup damping bodies
- * @sa dWorldGetMaxAngularSpeed()
- */
-ODE_API dReal dBodyGetMaxAngularSpeed (dBodyID b);
-
-/**
- * @brief Set the body's maximum angular speed.
- * @ingroup damping bodies
- * @sa dWorldSetMaxAngularSpeed() dBodyResetMaxAngularSpeed()
- * The default value is dInfinity, but it's a good idea to limit
- * it at less than 500 if the body has the gyroscopic term
- * enabled.
- */
-ODE_API void dBodySetMaxAngularSpeed(dBodyID b, dReal max_speed);
-
-
-
-/**
- * @brief Get the body's gyroscopic state.
- *
- * @return nonzero if gyroscopic term computation is enabled (default),
- * zero otherwise.
- * @ingroup bodies
- */
-ODE_API int dBodyGetGyroscopicMode(dBodyID b);
-
-
-/**
- * @brief Enable/disable the body's gyroscopic term.
- *
- * Disabling the gyroscopic term of a body usually improves
- * stability. It also helps turning spining objects, like cars'
- * wheels.
- *
- * @param enabled   nonzero (default) to enable gyroscopic term, 0
- * to disable.
- * @ingroup bodies
- */
-ODE_API void dBodySetGyroscopicMode(dBodyID b, int enabled);
-
-
-
-
-/**
- * @defgroup joints Joints
- *
- * In real life a joint is something like a hinge, that is used to connect two
- * objects.
- * In ODE a joint is very similar: It is a relationship that is enforced between
- * two bodies so that they can only have certain positions and orientations
- * relative to each other.
- * This relationship is called a constraint -- the words joint and
- * constraint are often used interchangeably.
- *
- * A joint has a set of parameters that can be set. These include:
- *
- *
- * \li  dParamLoStop Low stop angle or position. Setting this to
- *     -dInfinity (the default value) turns off the low stop.
- *     For rotational joints, this stop must be greater than -pi to be
- *     effective.
- * \li  dParamHiStop High stop angle or position. Setting this to
- *     dInfinity (the default value) turns off the high stop.
- *     For rotational joints, this stop must be less than pi to be
- *     effective.
- *     If the high stop is less than the low stop then both stops will
- *     be ineffective.
- * \li  dParamVel Desired motor velocity (this will be an angular or
- *     linear velocity).
- * \li  dParamFMax The maximum force or torque that the motor will use to
- *     achieve the desired velocity.
- *     This must always be greater than or equal to zero.
- *     Setting this to zero (the default value) turns off the motor.
- * \li  dParamFudgeFactor The current joint stop/motor implementation has
- *     a small problem:
- *     when the joint is at one stop and the motor is set to move it away
- *     from the stop, too much force may be applied for one time step,
- *     causing a ``jumping'' motion.
- *     This fudge factor is used to scale this excess force.
- *     It should have a value between zero and one (the default value).
- *     If the jumping motion is too visible in a joint, the value can be
- *     reduced.
- *     Making this value too small can prevent the motor from being able to
- *     move the joint away from a stop.
- * \li  dParamBounce The bouncyness of the stops.
- *     This is a restitution parameter in the range 0..1.
- *     0 means the stops are not bouncy at all, 1 means maximum bouncyness.
- * \li  dParamCFM The constraint force mixing (CFM) value used when not
- *     at a stop.
- * \li  dParamStopERP The error reduction parameter (ERP) used by the
- *     stops.
- * \li  dParamStopCFM The constraint force mixing (CFM) value used by the
- *     stops. Together with the ERP value this can be used to get spongy or
- *     soft stops.
- *     Note that this is intended for unpowered joints, it does not really
- *     work as expected when a powered joint reaches its limit.
- * \li  dParamSuspensionERP Suspension error reduction parameter (ERP).
- *     Currently this is only implemented on the hinge-2 joint.
- * \li  dParamSuspensionCFM Suspension constraint force mixing (CFM) value.
- *     Currently this is only implemented on the hinge-2 joint.
- *
- * If a particular parameter is not implemented by a given joint, setting it
- * will have no effect.
- * These parameter names can be optionally followed by a digit (2 or 3)
- * to indicate the second or third set of parameters, e.g. for the second axis
- * in a hinge-2 joint, or the third axis in an AMotor joint.
- */
-
-
-/**
- * @brief Create a new joint of the ball type.
- * @ingroup joints
- * @remarks
- * The joint is initially in "limbo" (i.e. it has no effect on the simulation)
- * because it does not connect to any bodies.
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateBall (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the hinge type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateHinge (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the slider type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateSlider (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the contact type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateContact (dWorldID, dJointGroupID, const dContact *);
-
-/**
- * @brief Create a new joint of the hinge2 type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateHinge2 (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the universal type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateUniversal (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the PR (Prismatic and Rotoide) type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreatePR (dWorldID, dJointGroupID);
-
-  /**
-   * @brief Create a new joint of the PU (Prismatic and Universal) type.
-   * @ingroup joints
-   * @param dJointGroupID set to 0 to allocate the joint normally.
-   * If it is nonzero the joint is allocated in the given joint group.
-   */
-  ODE_API dJointID dJointCreatePU (dWorldID, dJointGroupID);
-
-  /**
-   * @brief Create a new joint of the Piston type.
-   * @ingroup joints
-   * @param dJointGroupID set to 0 to allocate the joint normally.
-   *                      If it is nonzero the joint is allocated in the given
-   *                      joint group.
-   */
-  ODE_API dJointID dJointCreatePiston (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the fixed type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateFixed (dWorldID, dJointGroupID);
-
-ODE_API dJointID dJointCreateNull (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the A-motor type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateAMotor (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the L-motor type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateLMotor (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the plane-2d type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreatePlane2D (dWorldID, dJointGroupID);
-
-/**
- * @brief Destroy a joint.
- * @ingroup joints
- *
- * disconnects it from its attached bodies and removing it from the world.
- * However, if the joint is a member of a group then this function has no
- * effect - to destroy that joint the group must be emptied or destroyed.
- */
-ODE_API void dJointDestroy (dJointID);
-
-
-/**
- * @brief Create a joint group
- * @ingroup joints
- * @param max_size deprecated. Set to 0.
- */
-ODE_API dJointGroupID dJointGroupCreate (int max_size);
-
-/**
- * @brief Destroy a joint group.
- * @ingroup joints
- *
- * All joints in the joint group will be destroyed.
- */
-ODE_API void dJointGroupDestroy (dJointGroupID);
-
-/**
- * @brief Empty a joint group.
- * @ingroup joints
- *
- * All joints in the joint group will be destroyed,
- * but the joint group itself will not be destroyed.
- */
-ODE_API void dJointGroupEmpty (dJointGroupID);
-
-/**
- * @brief Return the number of bodies attached to the joint
- * @ingroup joints
- */
-ODE_API int dJointGetNumBodies(dJointID);
-
-/**
- * @brief Attach the joint to some new bodies.
- * @ingroup joints
- *
- * If the joint is already attached, it will be detached from the old bodies
- * first.
- * To attach this joint to only one body, set body1 or body2 to zero - a zero
- * body refers to the static environment.
- * Setting both bodies to zero puts the joint into "limbo", i.e. it will
- * have no effect on the simulation.
- * @remarks
- * Some joints, like hinge-2 need to be attached to two bodies to work.
- */
-ODE_API void dJointAttach (dJointID, dBodyID body1, dBodyID body2);
-
-/**
- * @brief Manually enable a joint.
- * @param dJointID identification of joint.
- * @ingroup joints
- */
-ODE_API void dJointEnable (dJointID);
-
-/**
- * @brief Manually disable a joint.
- * @ingroup joints
- * @remarks
- * A disabled joint will not affect the simulation, but will maintain the anchors and
- * axes so it can be enabled later.
- */
-ODE_API void dJointDisable (dJointID);
-
-/**
- * @brief Check wether a joint is enabled.
- * @ingroup joints
- * @return 1 if a joint is currently enabled or 0 if it is disabled.
- */
-ODE_API int dJointIsEnabled (dJointID);
-
-/**
- * @brief Set the user-data pointer
- * @ingroup joints
- */
-ODE_API void dJointSetData (dJointID, void *data);
-
-/**
- * @brief Get the user-data pointer
- * @ingroup joints
- */
-ODE_API void *dJointGetData (dJointID);
-
-/**
- * @brief Get the type of the joint
- * @ingroup joints
- * @return the type, being one of these:
- * \li dJointTypeBall
- * \li dJointTypeHinge
- * \li dJointTypeSlider
- * \li dJointTypeContact
- * \li dJointTypeUniversal
- * \li dJointTypeHinge2
- * \li dJointTypeFixed
- * \li dJointTypeNull
- * \li dJointTypeAMotor
- * \li dJointTypeLMotor
- * \li dJointTypePlane2D
- * \li dJointTypePR
- * \li dJointTypePU
- * \li dJointTypePiston
- */
-ODE_API dJointType dJointGetType (dJointID);
-
-/**
- * @brief Return the bodies that this joint connects.
- * @ingroup joints
- * @param index return the first (0) or second (1) body.
- * @remarks
- * If one of these returned body IDs is zero, the joint connects the other body
- * to the static environment.
- * If both body IDs are zero, the joint is in ``limbo'' and has no effect on
- * the simulation.
- */
-ODE_API dBodyID dJointGetBody (dJointID, int index);
-
-/**
- * @brief Sets the datastructure that is to receive the feedback.
- *
- * The feedback can be used by the user, so that it is known how
- * much force an individual joint exerts.
- * @ingroup joints
- */
-ODE_API void dJointSetFeedback (dJointID, dJointFeedback *);
-
-/**
- * @brief Gets the datastructure that is to receive the feedback.
- * @ingroup joints
- */
-ODE_API dJointFeedback *dJointGetFeedback (dJointID);
-
-/**
- * @brief Set the joint anchor point.
- * @ingroup joints
- *
- * The joint will try to keep this point on each body
- * together. The input is specified in world coordinates.
- */
-ODE_API void dJointSetBallAnchor (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the joint anchor point.
- * @ingroup joints
- */
-ODE_API void dJointSetBallAnchor2 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Param setting for Ball joints
- * @ingroup joints
- */
-ODE_API void dJointSetBallParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Set hinge anchor parameter.
- * @ingroup joints
- */
-ODE_API void dJointSetHingeAnchor (dJointID, dReal x, dReal y, dReal z);
-
-ODE_API void dJointSetHingeAnchorDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
-
-/**
- * @brief Set hinge axis.
- * @ingroup joints
- */
-ODE_API void dJointSetHingeAxis (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the Hinge axis as if the 2 bodies were already at angle appart.
- * @ingroup joints
- *
- * This function initialize the Axis and the relative orientation of each body
- * as if body1 was rotated around the axis by the angle value. \br
- * Ex:
- * <PRE>
- * dJointSetHingeAxis(jId, 1, 0, 0);
- * // If you request the position you will have: dJointGetHingeAngle(jId) == 0
- * dJointSetHingeAxisDelta(jId, 1, 0, 0, 0.23);
- * // If you request the position you will have: dJointGetHingeAngle(jId) == 0.23
- * </PRE>
-
- * @param j The Hinge joint ID for which the axis will be set
- * @param x The X component of the axis in world frame
- * @param y The Y component of the axis in world frame
- * @param z The Z component of the axis in world frame
- * @param angle The angle for the offset of the relative orientation.
- *              As if body1 was rotated by angle when the Axis was set (see below).
- *              The rotation is around the new Hinge axis.
- *
- * @note Usually the function dJointSetHingeAxis set the current position of body1
- *       and body2 as the zero angle position. This function set the current position
- *       as the if the 2 bodies where \b angle appart.
- * @warning Calling dJointSetHingeAnchor or dJointSetHingeAxis will reset the "zero"
- *          angle position.
- */
-ODE_API void dJointSetHingeAxisOffset (dJointID j, dReal x, dReal y, dReal z, dReal angle);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetHingeParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies the torque about the hinge axis.
- *
- * That is, it applies a torque with specified magnitude in the direction
- * of the hinge axis, to body 1, and with the same magnitude but in opposite
- * direction to body 2. This function is just a wrapper for dBodyAddTorque()}
- * @ingroup joints
- */
-ODE_API void dJointAddHingeTorque(dJointID joint, dReal torque);
-
-/**
- * @brief set the joint axis
- * @ingroup joints
- */
-ODE_API void dJointSetSliderAxis (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @ingroup joints
- */
-ODE_API void dJointSetSliderAxisDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetSliderParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies the given force in the slider's direction.
- *
- * That is, it applies a force with specified magnitude, in the direction of
- * slider's axis, to body1, and with the same magnitude but opposite
- * direction to body2.  This function is just a wrapper for dBodyAddForce().
- * @ingroup joints
- */
-ODE_API void dJointAddSliderForce(dJointID joint, dReal force);
-
-/**
- * @brief set anchor
- * @ingroup joints
- */
-ODE_API void dJointSetHinge2Anchor (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetHinge2Axis1 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetHinge2Axis2 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetHinge2Param (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies torque1 about the hinge2's axis 1, torque2 about the
- * hinge2's axis 2.
- * @remarks  This function is just a wrapper for dBodyAddTorque().
- * @ingroup joints
- */
-ODE_API void dJointAddHinge2Torques(dJointID joint, dReal torque1, dReal torque2);
-
-/**
- * @brief set anchor
- * @ingroup joints
- */
-ODE_API void dJointSetUniversalAnchor (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetUniversalAxis1 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the Universal axis1 as if the 2 bodies were already at 
- *        offset1 and offset2 appart with respect to axis1 and axis2.
- * @ingroup joints
- *
- * This function initialize the axis1 and the relative orientation of 
- * each body as if body1 was rotated around the new axis1 by the offset1 
- * value and as if body2 was rotated around the axis2 by offset2. \br
- * Ex:
-* <PRE>
- * dJointSetHuniversalAxis1(jId, 1, 0, 0);
- * // If you request the position you will have: dJointGetUniversalAngle1(jId) == 0
- * // If you request the position you will have: dJointGetUniversalAngle2(jId) == 0
- * dJointSetHuniversalAxis1Offset(jId, 1, 0, 0, 0.2, 0.17);
- * // If you request the position you will have: dJointGetUniversalAngle1(jId) == 0.2
- * // If you request the position you will have: dJointGetUniversalAngle2(jId) == 0.17
- * </PRE>
- *
- * @param j The Hinge joint ID for which the axis will be set
- * @param x The X component of the axis in world frame
- * @param y The Y component of the axis in world frame
- * @param z The Z component of the axis in world frame
- * @param angle The angle for the offset of the relative orientation.
- *              As if body1 was rotated by angle when the Axis was set (see below).
- *              The rotation is around the new Hinge axis.
- *
- * @note Usually the function dJointSetHingeAxis set the current position of body1
- *       and body2 as the zero angle position. This function set the current position
- *       as the if the 2 bodies where \b offsets appart.
- *
- * @note Any previous offsets are erased.
- *
- * @warning Calling dJointSetUniversalAnchor, dJointSetUnivesalAxis1, 
- *          dJointSetUniversalAxis2, dJointSetUniversalAxis2Offset 
- *          will reset the "zero" angle position.
- */
-ODE_API void dJointSetUniversalAxis1Offset (dJointID, dReal x, dReal y, dReal z,
-                                            dReal offset1, dReal offset2);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetUniversalAxis2 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the Universal axis2 as if the 2 bodies were already at 
- *        offset1 and offset2 appart with respect to axis1 and axis2.
- * @ingroup joints
- *
- * This function initialize the axis2 and the relative orientation of 
- * each body as if body1 was rotated around the axis1 by the offset1 
- * value and as if body2 was rotated around the new axis2 by offset2. \br
- * Ex:
- * <PRE>
- * dJointSetHuniversalAxis2(jId, 0, 1, 0);
- * // If you request the position you will have: dJointGetUniversalAngle1(jId) == 0
- * // If you request the position you will have: dJointGetUniversalAngle2(jId) == 0
- * dJointSetHuniversalAxis2Offset(jId, 0, 1, 0, 0.2, 0.17);
- * // If you request the position you will have: dJointGetUniversalAngle1(jId) == 0.2
- * // If you request the position you will have: dJointGetUniversalAngle2(jId) == 0.17
- * </PRE>
-
- * @param j The Hinge joint ID for which the axis will be set
- * @param x The X component of the axis in world frame
- * @param y The Y component of the axis in world frame
- * @param z The Z component of the axis in world frame
- * @param angle The angle for the offset of the relative orientation.
- *              As if body1 was rotated by angle when the Axis was set (see below).
- *              The rotation is around the new Hinge axis.
- *
- * @note Usually the function dJointSetHingeAxis set the current position of body1
- *       and body2 as the zero angle position. This function set the current position
- *       as the if the 2 bodies where \b offsets appart.
- *
- * @note Any previous offsets are erased.
- *
- * @warning Calling dJointSetUniversalAnchor, dJointSetUnivesalAxis1, 
- *          dJointSetUniversalAxis2, dJointSetUniversalAxis2Offset 
- *          will reset the "zero" angle position.
- */
-
-
-ODE_API void dJointSetUniversalAxis2Offset (dJointID, dReal x, dReal y, dReal z,
-                                            dReal offset1, dReal offset2);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetUniversalParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies torque1 about the universal's axis 1, torque2 about the
- * universal's axis 2.
- * @remarks This function is just a wrapper for dBodyAddTorque().
- * @ingroup joints
- */
-ODE_API void dJointAddUniversalTorques(dJointID joint, dReal torque1, dReal torque2);
-
-
-/**
- * @brief set anchor
- * @ingroup joints
- */
-ODE_API void dJointSetPRAnchor (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set the axis for the prismatic articulation
- * @ingroup joints
- */
-ODE_API void dJointSetPRAxis1 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set the axis for the rotoide articulation
- * @ingroup joints
- */
-ODE_API void dJointSetPRAxis2 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- *
- * @note parameterX where X equal 2 refer to parameter for the rotoide articulation
- */
-ODE_API void dJointSetPRParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies the torque about the rotoide axis of the PR joint
- *
- * That is, it applies a torque with specified magnitude in the direction 
- * of the rotoide axis, to body 1, and with the same magnitude but in opposite
- * direction to body 2. This function is just a wrapper for dBodyAddTorque()}
- * @ingroup joints
- */
-ODE_API void dJointAddPRTorque (dJointID j, dReal torque);
-
-
-  /**
-  * @brief set anchor
-  * @ingroup joints
-  */
-  ODE_API void dJointSetPUAnchor (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief set anchor
-   * @ingroup joints
-   */
-  ODE_API_DEPRECATED ODE_API void dJointSetPUAnchorDelta (dJointID, dReal x, dReal y, dReal z,
-                                                          dReal dx, dReal dy, dReal dz);
-
-  /**
-   * @brief Set the PU anchor as if the 2 bodies were already at [dx, dy, dz] appart.
-   * @ingroup joints
-   *
-   * This function initialize the anchor and the relative position of each body
-   * as if the position between body1 and body2 was already the projection of [dx, dy, dz]
-   * along the Piston axis. (i.e as if the body1 was at its current position - [dx,dy,dy] when the
-   * axis is set).
-   * Ex:
-   * <PRE>
-   * dReal offset = 3;
-   * dVector3 axis;
-   * dJointGetPUAxis(jId, axis);
-   * dJointSetPUAnchor(jId, 0, 0, 0);
-   * // If you request the position you will have: dJointGetPUPosition(jId) == 0
-   * dJointSetPUAnchorOffset(jId, 0, 0, 0, axis[X]*offset, axis[Y]*offset, axis[Z]*offset);
-   * // If you request the position you will have: dJointGetPUPosition(jId) == offset
-   * </PRE>
-   * @param j The PU joint for which the anchor point will be set
-   * @param x The X position of the anchor point in world frame
-   * @param y The Y position of the anchor point in world frame
-   * @param z The Z position of the anchor point in world frame
-   * @param dx A delta to be substracted to the X position as if the anchor was set
-   *           when body1 was at current_position[X] - dx
-   * @param dx A delta to be substracted to the Y position as if the anchor was set
-   *           when body1 was at current_position[Y] - dy
-   * @param dx A delta to be substracted to the Z position as if the anchor was set
-   *           when body1 was at current_position[Z] - dz
-   */
-  ODE_API void dJointSetPUAnchorOffset (dJointID, dReal x, dReal y, dReal z,
-                                       dReal dx, dReal dy, dReal dz);
-
-  /**
-   * @brief set the axis for the first axis or the universal articulation
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPUAxis1 (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief set the axis for the second axis or the universal articulation
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPUAxis2 (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief set the axis for the prismatic articulation
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPUAxis3 (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief set the axis for the prismatic articulation
-   * @ingroup joints
-   * @note This function was added for convenience it is the same as
-   *       dJointSetPUAxis3
-   */
-  ODE_API void dJointSetPUAxisP (dJointID id, dReal x, dReal y, dReal z);
-
-
-
-  /**
-   * @brief set joint parameter
-   * @ingroup joints
-   *
-   * @note parameterX where X equal 2 refer to parameter for second axis of the
-   *       universal articulation
-   * @note parameterX where X equal 3 refer to parameter for prismatic
-   *       articulation
-   */
-  ODE_API void dJointSetPUParam (dJointID, int parameter, dReal value);
-
-  /**
-   * @brief Applies the torque about the rotoide axis of the PU joint
-   *
-   * That is, it applies a torque with specified magnitude in the direction
-   * of the rotoide axis, to body 1, and with the same magnitude but in opposite
-   * direction to body 2. This function is just a wrapper for dBodyAddTorque()}
-   * @ingroup joints
-   */
-  ODE_API void dJointAddPUTorque (dJointID j, dReal torque);
-
-
-
-
-  /**
-   * @brief set the joint anchor
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPistonAnchor (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief Set the Piston anchor as if the 2 bodies were already at [dx,dy, dz] appart.
-   * @ingroup joints
-   *
-   * This function initialize the anchor and the relative position of each body
-   * as if the position between body1 and body2 was already the projection of [dx, dy, dz]
-   * along the Piston axis. (i.e as if the body1 was at its current position - [dx,dy,dy] when the
-   * axis is set).
-   * Ex:
-   * <PRE>
-   * dReal offset = 3;
-   * dVector3 axis;
-   * dJointGetPistonAxis(jId, axis);
-   * dJointSetPistonAnchor(jId, 0, 0, 0);
-   * // If you request the position you will have: dJointGetPistonPosition(jId) == 0
-   * dJointSetPistonAnchorOffset(jId, 0, 0, 0, axis[X]*offset, axis[Y]*offset, axis[Z]*offset);
-   * // If you request the position you will have: dJointGetPistonPosition(jId) == offset
-   * </PRE>
-   * @param j The Piston joint for which the anchor point will be set
-   * @param x The X position of the anchor point in world frame
-   * @param y The Y position of the anchor point in world frame
-   * @param z The Z position of the anchor point in world frame
-   * @param dx A delta to be substracted to the X position as if the anchor was set
-   *           when body1 was at current_position[X] - dx
-   * @param dx A delta to be substracted to the Y position as if the anchor was set
-   *           when body1 was at current_position[Y] - dy
-   * @param dx A delta to be substracted to the Z position as if the anchor was set
-   *           when body1 was at current_position[Z] - dz
-   */
-  ODE_API void dJointSetPistonAnchorOffset(dJointID j, dReal x, dReal y, dReal z,
-                                           dReal dx, dReal dy, dReal dz);
-
-    /**
-     * @brief set the joint axis
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPistonAxis (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * This function set prismatic axis of the joint and also set the position
-   * of the joint.
-   *
-   * @ingroup joints
-   * @param j The joint affected by this function
-   * @param x The x component of the axis
-   * @param y The y component of the axis
-   * @param z The z component of the axis
-   * @param dx The Initial position of the prismatic join in the x direction
-   * @param dy The Initial position of the prismatic join in the y direction
-   * @param dz The Initial position of the prismatic join in the z direction
-   */
-  ODE_API_DEPRECATED ODE_API void dJointSetPistonAxisDelta (dJointID j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
-
-  /**
-   * @brief set joint parameter
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPistonParam (dJointID, int parameter, dReal value);
-
-  /**
-   * @brief Applies the given force in the slider's direction.
-   *
-   * That is, it applies a force with specified magnitude, in the direction of
-   * prismatic's axis, to body1, and with the same magnitude but opposite
-   * direction to body2.  This function is just a wrapper for dBodyAddForce().
-   * @ingroup joints
-   */
-  ODE_API void dJointAddPistonForce (dJointID joint, dReal force);
-
-
-/**
- * @brief Call this on the fixed joint after it has been attached to
- * remember the current desired relative offset and desired relative
- * rotation between the bodies.
- * @ingroup joints
- */
-ODE_API void dJointSetFixed (dJointID);
-
-/*
- * @brief Sets joint parameter
- *
- * @ingroup joints
- */
-ODE_API void dJointSetFixedParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief set the nr of axes
- * @param num 0..3
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorNumAxes (dJointID, int num);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorAxis (dJointID, int anum, int rel,
-                         dReal x, dReal y, dReal z);
-
-/**
- * @brief Tell the AMotor what the current angle is along axis anum.
- *
- * This function should only be called in dAMotorUser mode, because in this
- * mode the AMotor has no other way of knowing the joint angles.
- * The angle information is needed if stops have been set along the axis,
- * but it is not needed for axis motors.
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorAngle (dJointID, int anum, dReal angle);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief set mode
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorMode (dJointID, int mode);
-
-/**
- * @brief Applies torque0 about the AMotor's axis 0, torque1 about the
- * AMotor's axis 1, and torque2 about the AMotor's axis 2.
- * @remarks
- * If the motor has fewer than three axes, the higher torques are ignored.
- * This function is just a wrapper for dBodyAddTorque().
- * @ingroup joints
- */
-ODE_API void dJointAddAMotorTorques (dJointID, dReal torque1, dReal torque2, dReal torque3);
-
-/**
- * @brief Set the number of axes that will be controlled by the LMotor.
- * @param num can range from 0 (which effectively deactivates the joint) to 3.
- * @ingroup joints
- */
-ODE_API void dJointSetLMotorNumAxes (dJointID, int num);
-
-/**
- * @brief Set the AMotor axes.
- * @param anum selects the axis to change (0,1 or 2).
- * @param rel Each axis can have one of three ``relative orientation'' modes
- * \li 0: The axis is anchored to the global frame.
- * \li 1: The axis is anchored to the first body.
- * \li 2: The axis is anchored to the second body.
- * @remarks The axis vector is always specified in global coordinates
- * regardless of the setting of rel.
- * @ingroup joints
- */
-ODE_API void dJointSetLMotorAxis (dJointID, int anum, int rel, dReal x, dReal y, dReal z);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetLMotorParam (dJointID, int parameter, dReal value);
-
-/**
- * @ingroup joints
- */
-ODE_API void dJointSetPlane2DXParam (dJointID, int parameter, dReal value);
-
-/**
- * @ingroup joints
- */
-
-ODE_API void dJointSetPlane2DYParam (dJointID, int parameter, dReal value);
-
-/**
- * @ingroup joints
- */
-ODE_API void dJointSetPlane2DAngleParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- *
- * This returns the point on body 1. If the joint is perfectly satisfied,
- * this will be the same as the point on body 2.
- */
-ODE_API void dJointGetBallAnchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- *
- * This returns the point on body 2. You can think of a ball and socket
- * joint as trying to keep the result of dJointGetBallAnchor() and
- * dJointGetBallAnchor2() the same.  If the joint is perfectly satisfied,
- * this function will return the same value as dJointGetBallAnchor() to
- * within roundoff errors. dJointGetBallAnchor2() can be used, along with
- * dJointGetBallAnchor(), to see how far the joint has come apart.
- */
-ODE_API void dJointGetBallAnchor2 (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetBallParam (dJointID, int parameter);
-
-/**
- * @brief Get the hinge anchor point, in world coordinates.
- *
- * This returns the point on body 1. If the joint is perfectly satisfied,
- * this will be the same as the point on body 2.
- * @ingroup joints
- */
-ODE_API void dJointGetHingeAnchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return The point on body 2. If the joint is perfectly satisfied,
- * this will return the same value as dJointGetHingeAnchor().
- * If not, this value will be slightly different.
- * This can be used, for example, to see how far the joint has come apart.
- * @ingroup joints
- */
-ODE_API void dJointGetHingeAnchor2 (dJointID, dVector3 result);
-
-/**
- * @brief get axis
- * @ingroup joints
- */
-ODE_API void dJointGetHingeAxis (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetHingeParam (dJointID, int parameter);
-
-/**
- * @brief Get the hinge angle.
- *
- * The angle is measured between the two bodies, or between the body and
- * the static environment.
- * The angle will be between -pi..pi.
- * Give the relative rotation with respect to the Hinge axis of Body 1 with
- * respect to Body 2.
- * When the hinge anchor or axis is set, the current position of the attached
- * bodies is examined and that position will be the zero angle.
- * @ingroup joints
- */
-ODE_API dReal dJointGetHingeAngle (dJointID);
-
-/**
- * @brief Get the hinge angle time derivative.
- * @ingroup joints
- */
-ODE_API dReal dJointGetHingeAngleRate (dJointID);
-
-/**
- * @brief Get the slider linear position (i.e. the slider's extension)
- *
- * When the axis is set, the current position of the attached bodies is
- * examined and that position will be the zero position.
-
- * The position is the distance, with respect to the zero position,
- * along the slider axis of body 1 with respect to
- * body 2. (A NULL body is replaced by the world).
- * @ingroup joints
- */
-ODE_API dReal dJointGetSliderPosition (dJointID);
-
-/**
- * @brief Get the slider linear position's time derivative.
- * @ingroup joints
- */
-ODE_API dReal dJointGetSliderPositionRate (dJointID);
-
-/**
- * @brief Get the slider axis
- * @ingroup joints
- */
-ODE_API void dJointGetSliderAxis (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetSliderParam (dJointID, int parameter);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return the point on body 1.  If the joint is perfectly satisfied,
- * this will be the same as the point on body 2.
- * @ingroup joints
- */
-ODE_API void dJointGetHinge2Anchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * This returns the point on body 2. If the joint is perfectly satisfied,
- * this will return the same value as dJointGetHinge2Anchor.
- * If not, this value will be slightly different.
- * This can be used, for example, to see how far the joint has come apart.
- * @ingroup joints
- */
-ODE_API void dJointGetHinge2Anchor2 (dJointID, dVector3 result);
-
-/**
- * @brief Get joint axis
- * @ingroup joints
- */
-ODE_API void dJointGetHinge2Axis1 (dJointID, dVector3 result);
-
-/**
- * @brief Get joint axis
- * @ingroup joints
- */
-ODE_API void dJointGetHinge2Axis2 (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetHinge2Param (dJointID, int parameter);
-
-/**
- * @brief Get angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetHinge2Angle1 (dJointID);
-
-/**
- * @brief Get time derivative of angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetHinge2Angle1Rate (dJointID);
-
-/**
- * @brief Get time derivative of angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetHinge2Angle2Rate (dJointID);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return the point on body 1. If the joint is perfectly satisfied,
- * this will be the same as the point on body 2.
- * @ingroup joints
- */
-ODE_API void dJointGetUniversalAnchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return This returns the point on body 2.
- * @remarks
- * You can think of the ball and socket part of a universal joint as
- * trying to keep the result of dJointGetBallAnchor() and
- * dJointGetBallAnchor2() the same. If the joint is
- * perfectly satisfied, this function will return the same value
- * as dJointGetUniversalAnchor() to within roundoff errors.
- * dJointGetUniversalAnchor2() can be used, along with
- * dJointGetUniversalAnchor(), to see how far the joint has come apart.
- * @ingroup joints
- */
-ODE_API void dJointGetUniversalAnchor2 (dJointID, dVector3 result);
-
-/**
- * @brief Get axis
- * @ingroup joints
- */
-ODE_API void dJointGetUniversalAxis1 (dJointID, dVector3 result);
-
-/**
- * @brief Get axis
- * @ingroup joints
- */
-ODE_API void dJointGetUniversalAxis2 (dJointID, dVector3 result);
-
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalParam (dJointID, int parameter);
-
-/**
- * @brief Get both angles at the same time.
- * @ingroup joints
- *
- * @param joint   The universal joint for which we want to calculate the angles
- * @param angle1  The angle between the body1 and the axis 1
- * @param angle2  The angle between the body2 and the axis 2
- *
- * @note This function combine getUniversalAngle1 and getUniversalAngle2 together
- *       and try to avoid redundant calculation
- */
-ODE_API void dJointGetUniversalAngles (dJointID, dReal *angle1, dReal *angle2);
-
-/**
- * @brief Get angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalAngle1 (dJointID);
-
-/**
- * @brief Get angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalAngle2 (dJointID);
-
-/**
- * @brief Get time derivative of angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalAngle1Rate (dJointID);
-
-/**
- * @brief Get time derivative of angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalAngle2Rate (dJointID);
-
-
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return the point on body 1. If the joint is perfectly satisfied, 
- * this will be the same as the point on body 2.
- * @ingroup joints
- */
-ODE_API void dJointGetPRAnchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the PR linear position (i.e. the prismatic's extension)
- *
- * When the axis is set, the current position of the attached bodies is
- * examined and that position will be the zero position.
- *
- * The position is the "oriented" length between the
- * position = (Prismatic axis) dot_product [(body1 + offset) - (body2 + anchor2)]
- *
- * @ingroup joints
- */
-ODE_API dReal dJointGetPRPosition (dJointID);
-
-/**
- * @brief Get the PR linear position's time derivative
- *
- * @ingroup joints
- */
-ODE_API dReal dJointGetPRPositionRate (dJointID);
-
-
-/**
-   * @brief Get the PR angular position (i.e. the  twist between the 2 bodies)
-   *
-   * When the axis is set, the current position of the attached bodies is
-   * examined and that position will be the zero position.
-   * @ingroup joints
-   */
-ODE_API dReal dJointGetPRAngle (dJointID);
-
-/**
- * @brief Get the PR angular position's time derivative
- *
- * @ingroup joints
- */
-ODE_API dReal dJointGetPRAngleRate (dJointID);
-
-
-/**
- * @brief Get the prismatic axis
- * @ingroup joints
- */
-ODE_API void dJointGetPRAxis1 (dJointID, dVector3 result);
-
-/**
- * @brief Get the Rotoide axis
- * @ingroup joints
- */
-ODE_API void dJointGetPRAxis2 (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetPRParam (dJointID, int parameter);
-
-    
-    
-  /**
-   * @brief Get the joint anchor point, in world coordinates.
-   * @return the point on body 1. If the joint is perfectly satisfied,
-   * this will be the same as the point on body 2.
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPUAnchor (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the PU linear position (i.e. the prismatic's extension)
-   *
-   * When the axis is set, the current position of the attached bodies is
-   * examined and that position will be the zero position.
-   *
-   * The position is the "oriented" length between the
-   * position = (Prismatic axis) dot_product [(body1 + offset) - (body2 + anchor2)]
-   *
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUPosition (dJointID);
-
-  /**
-   * @brief Get the PR linear position's time derivative
-   *
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUPositionRate (dJointID);
-
-  /**
-   * @brief Get the first axis of the universal component of the joint
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPUAxis1 (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the second axis of the Universal component of the joint
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPUAxis2 (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the prismatic axis
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPUAxis3 (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the prismatic axis
-   * @ingroup joints
-   *
-   * @note This function was added for convenience it is the same as
-   *       dJointGetPUAxis3
-   */
-  ODE_API void dJointGetPUAxisP (dJointID id, dVector3 result);
-
-
-
-
-  /**
-   * @brief Get both angles at the same time.
-   * @ingroup joints
-   *
-   * @param joint   The Prismatic universal joint for which we want to calculate the angles
-   * @param angle1  The angle between the body1 and the axis 1
-   * @param angle2  The angle between the body2 and the axis 2
-   *
-   * @note This function combine dJointGetPUAngle1 and dJointGetPUAngle2 together
-   *       and try to avoid redundant calculation
-   */
-  ODE_API void dJointGetPUAngles (dJointID, dReal *angle1, dReal *angle2);
-
-  /**
-   * @brief Get angle
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUAngle1 (dJointID);
-
-  /**
-   * @brief * @brief Get time derivative of angle1
-   *
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUAngle1Rate (dJointID);
-
-
-  /**
-   * @brief Get angle
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUAngle2 (dJointID);
-
-  /**
-   * @brief * @brief Get time derivative of angle2
-   *
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUAngle2Rate (dJointID);
-
-  /**
-   * @brief get joint parameter
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUParam (dJointID, int parameter);
-
-
-
-
-
-/**
-   * @brief Get the Piston linear position (i.e. the piston's extension)
-   *
-   * When the axis is set, the current position of the attached bodies is
-   * examined and that position will be the zero position.
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonPosition (dJointID);
-
-  /**
-   * @brief Get the piston linear position's time derivative.
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonPositionRate (dJointID);
-
-/**
-   * @brief Get the Piston angular position (i.e. the  twist between the 2 bodies)
-   *
-   * When the axis is set, the current position of the attached bodies is
-   * examined and that position will be the zero position.
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonAngle (dJointID);
-
-  /**
-   * @brief Get the piston angular position's time derivative.
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonAngleRate (dJointID);
-
-
-  /**
-   * @brief Get the joint anchor
-   *
-   * This returns the point on body 1. If the joint is perfectly satisfied,
-   * this will be the same as the point on body 2 in direction perpendicular
-   * to the prismatic axis.
-   *
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPistonAnchor (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the joint anchor w.r.t. body 2
-   *
-   * This returns the point on body 2. You can think of a Piston
-   * joint as trying to keep the result of dJointGetPistonAnchor() and
-   * dJointGetPistonAnchor2() the same in the direction perpendicular to the
-   * pirsmatic axis. If the joint is perfectly satisfied,
-   * this function will return the same value as dJointGetPistonAnchor() to
-   * within roundoff errors. dJointGetPistonAnchor2() can be used, along with
-   * dJointGetPistonAnchor(), to see how far the joint has come apart.
-   *
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPistonAnchor2 (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the prismatic axis (This is also the rotoide axis.
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPistonAxis (dJointID, dVector3 result);
-
-  /**
-   * @brief get joint parameter
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonParam (dJointID, int parameter);
-
-
-  /**
- * @brief Get the number of angular axes that will be controlled by the
- * AMotor.
- * @param num can range from 0 (which effectively deactivates the
- * joint) to 3.
- * This is automatically set to 3 in dAMotorEuler mode.
- * @ingroup joints
- */
-ODE_API int dJointGetAMotorNumAxes (dJointID);
-
-/**
- * @brief Get the AMotor axes.
- * @param anum selects the axis to change (0,1 or 2).
- * @param rel Each axis can have one of three ``relative orientation'' modes.
- * \li 0: The axis is anchored to the global frame.
- * \li 1: The axis is anchored to the first body.
- * \li 2: The axis is anchored to the second body.
- * @ingroup joints
- */
-ODE_API void dJointGetAMotorAxis (dJointID, int anum, dVector3 result);
-
-/**
- * @brief Get axis
- * @remarks
- * The axis vector is always specified in global coordinates regardless
- * of the setting of rel.
- * There are two GetAMotorAxis functions, one to return the axis and one to
- * return the relative mode.
- *
- * For dAMotorEuler mode:
- * \li Only axes 0 and 2 need to be set. Axis 1 will be determined
-       automatically at each time step.
- * \li Axes 0 and 2 must be perpendicular to each other.
- * \li Axis 0 must be anchored to the first body, axis 2 must be anchored
-       to the second body.
- * @ingroup joints
- */
-ODE_API int dJointGetAMotorAxisRel (dJointID, int anum);
-
-/**
- * @brief Get the current angle for axis.
- * @remarks
- * In dAMotorUser mode this is simply the value that was set with
- * dJointSetAMotorAngle().
- * In dAMotorEuler mode this is the corresponding euler angle.
- * @ingroup joints
- */
-ODE_API dReal dJointGetAMotorAngle (dJointID, int anum);
-
-/**
- * @brief Get the current angle rate for axis anum.
- * @remarks
- * In dAMotorUser mode this is always zero, as not enough information is
- * available.
- * In dAMotorEuler mode this is the corresponding euler angle rate.
- * @ingroup joints
- */
-ODE_API dReal dJointGetAMotorAngleRate (dJointID, int anum);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetAMotorParam (dJointID, int parameter);
-
-/**
- * @brief Get the angular motor mode.
- * @param mode must be one of the following constants:
- * \li dAMotorUser The AMotor axes and joint angle settings are entirely
- * controlled by the user.  This is the default mode.
- * \li dAMotorEuler Euler angles are automatically computed.
- * The axis a1 is also automatically computed.
- * The AMotor axes must be set correctly when in this mode,
- * as described below.
- * When this mode is initially set the current relative orientations
- * of the bodies will correspond to all euler angles at zero.
- * @ingroup joints
- */
-ODE_API int dJointGetAMotorMode (dJointID);
-
-/**
- * @brief Get nr of axes.
- * @ingroup joints
- */
-ODE_API int dJointGetLMotorNumAxes (dJointID);
-
-/**
- * @brief Get axis.
- * @ingroup joints
- */
-ODE_API void dJointGetLMotorAxis (dJointID, int anum, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetLMotorParam (dJointID, int parameter);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetFixedParam (dJointID, int parameter);
-
-
-/**
- * @ingroup joints
- */
-ODE_API dJointID dConnectingJoint (dBodyID, dBodyID);
-
-/**
- * @ingroup joints
- */
-ODE_API int dConnectingJointList (dBodyID, dBodyID, dJointID*);
-
-/**
- * @brief Utility function
- * @return 1 if the two bodies are connected together by
- * a joint, otherwise return 0.
- * @ingroup joints
- */
-ODE_API int dAreConnected (dBodyID, dBodyID);
-
-/**
- * @brief Utility function
- * @return 1 if the two bodies are connected together by
- * a joint that does not have type @arg{joint_type}, otherwise return 0.
- * @param body1 A body to check.
- * @param body2 A body to check.
- * @param joint_type is a dJointTypeXXX constant.
- * This is useful for deciding whether to add contact joints between two bodies:
- * if they are already connected by non-contact joints then it may not be
- * appropriate to add contacts, however it is okay to add more contact between-
- * bodies that already have contacts.
- * @ingroup joints
- */
-ODE_API int dAreConnectedExcluding (dBodyID body1, dBodyID body2, int joint_type);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/ode.h b/misc/builddeps/linux32/ode/include/ode/ode.h
deleted file mode 100644 (file)
index af74e50..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_ODE_H_
-#define _ODE_ODE_H_
-
-/* include *everything* here */
-
-#include <ode/odeconfig.h>
-#include <ode/compatibility.h>
-#include <ode/common.h>
-#include <ode/odeinit.h>
-#include <ode/contact.h>
-#include <ode/error.h>
-#include <ode/memory.h>
-#include <ode/odemath.h>
-#include <ode/matrix.h>
-#include <ode/timer.h>
-#include <ode/rotation.h>
-#include <ode/mass.h>
-#include <ode/misc.h>
-#include <ode/objects.h>
-#include <ode/odecpp.h>
-#include <ode/collision_space.h>
-#include <ode/collision.h>
-#include <ode/odecpp_collision.h>
-#include <ode/export-dif.h>
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/odeconfig.h b/misc/builddeps/linux32/ode/include/ode/odeconfig.h
deleted file mode 100644 (file)
index 6e32fc6..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef ODECONFIG_H
-#define ODECONFIG_H
-
-/* Pull in the standard headers */
-#include <stddef.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <math.h>
-#include <string.h>
-#include <float.h>
-
-
-#if defined(ODE_DLL) || defined(ODE_LIB)
-#define __ODE__
-#endif
-
-/* Define a DLL export symbol for those platforms that need it */
-#if defined(_MSC_VER)
-  #if defined(ODE_DLL)
-    #define ODE_API __declspec(dllexport)
-  #elif !defined(ODE_LIB)
-    #define ODE_DLL_API __declspec(dllimport)
-  #endif
-#endif
-
-#if !defined(ODE_API)
-  #define ODE_API
-#endif
-
-#if defined(_MSC_VER)
-#  define ODE_API_DEPRECATED __declspec(deprecated)
-#elif defined (__GNUC__) && ( (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)) )
-#  define ODE_API_DEPRECATED __attribute__((__deprecated__))
-#else
-#  define ODE_API_DEPRECATED
-#endif
-
-/* Well-defined common data types...need to define for 64 bit systems */
-#if defined(_M_IA64) || defined(__ia64__) || defined(_M_AMD64) || defined(__x86_64__)
-  #define X86_64_SYSTEM   1
-  typedef int             int32;
-  typedef unsigned int    uint32;
-  typedef short           int16;
-  typedef unsigned short  uint16;
-  typedef signed char     int8;
-  typedef unsigned char   uint8;
-#else
-  typedef int             int32;
-  typedef unsigned int    uint32;
-  typedef short           int16;
-  typedef unsigned short  uint16;
-  typedef signed char     int8;
-  typedef unsigned char   uint8;
-#endif
-
-/* Visual C does not define these functions */
-#if defined(_MSC_VER)
-  #define copysignf(x, y) ((float)_copysign(x, y))
-  #define copysign(x, y) _copysign(x, y)
-  #define nextafterf(x, y) _nextafterf(x, y)
-  #define nextafter(x, y) _nextafter(x, y)
-  #if !defined(_WIN64)
-    #define _ODE__NEXTAFTERF_REQUIRED
-  #endif
-#endif
-
-
-
-/* Define the dInfinity macro */
-#ifdef INFINITY
-  #define dInfinity INFINITY
-#elif defined(HUGE_VAL)
-  #ifdef dSINGLE
-    #ifdef HUGE_VALF
-      #define dInfinity HUGE_VALF
-    #else
-      #define dInfinity ((float)HUGE_VAL)
-    #endif
-  #else
-    #define dInfinity HUGE_VAL
-  #endif
-#else
-  #ifdef dSINGLE
-    #define dInfinity ((float)(1.0/0.0))
-  #else
-    #define dInfinity (1.0/0.0)
-  #endif
-#endif
-
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/odecpp.h b/misc/builddeps/linux32/ode/include/ode/odecpp.h
deleted file mode 100644 (file)
index f734892..0000000
+++ /dev/null
@@ -1,1353 +0,0 @@
-/*************************************************************************
- *                                                                      *
- * Open Dynamics Engine, Copyright (C) 2001, 2002 Russell L. Smith.     *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org         *
- *                                                                      *
- * This library is free software; you can redistribute it and/or        *
- * modify it under the terms of EITHER:                                 *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *      Software Foundation; either version 2.1 of the License, or (at  *
- *      your option) any later version. The text of the GNU Lesser      *
- *      General Public License is included with this library in the     *
- *      file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in    *
- *      the file LICENSE-BSD.TXT.                                       *
- *                                                                      *
- * This library is distributed in the hope that it will be useful,      *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files   *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                    *
- *                                                                      *
- *************************************************************************/
-
-/* C++ interface for non-collision stuff */
-
-
-#ifndef _ODE_ODECPP_H_
-#define _ODE_ODECPP_H_
-#ifdef __cplusplus
-
-
-
-
-//namespace ode {
-
-
-class dWorldSimpleIDContainer {
-protected:
-       dWorldID _id;
-
-       dWorldSimpleIDContainer(): _id(0) {}
-       ~dWorldSimpleIDContainer() { destroy(); }
-
-       void destroy() { 
-               if (_id) {
-                       dWorldDestroy(_id); 
-                       _id = 0;
-               }
-       }
-};
-
-class dWorldDynamicIDContainer: public dWorldSimpleIDContainer {
-protected:
-       virtual ~dWorldDynamicIDContainer() {}
-};
-
-template <class dWorldTemplateBase>
-class dWorldTemplate: public dWorldTemplateBase {
-  // intentionally undefined, don't use these
-  dWorldTemplate (const dWorldTemplate<dWorldTemplateBase> &);
-  void operator= (const dWorldTemplate<dWorldTemplateBase> &);
-
-protected:
-  dWorldID get_id() const { return dWorldTemplateBase::_id; }
-  void set_id(dWorldID value) { dWorldTemplateBase::_id = value; }
-
-public:
-  dWorldTemplate()
-    { set_id(dWorldCreate()); }
-
-  dWorldID id() const
-    { return get_id(); }
-  operator dWorldID() const
-    { return get_id(); }
-
-  void setGravity (dReal x, dReal y, dReal z)
-    { dWorldSetGravity (get_id(), x, y, z); }
-  void setGravity (const dVector3 g)
-    { setGravity (g[0], g[1], g[2]); }
-  void getGravity (dVector3 g) const
-    { dWorldGetGravity (get_id(), g); }
-
-  void setERP (dReal erp)
-    { dWorldSetERP(get_id(), erp); }
-  dReal getERP() const
-    { return dWorldGetERP(get_id()); }
-
-  void setCFM (dReal cfm)
-    { dWorldSetCFM(get_id(), cfm); }
-  dReal getCFM() const
-    { return dWorldGetCFM(get_id()); }
-
-  void step (dReal stepsize)
-    { dWorldStep (get_id(), stepsize); }
-
-  void quickStep(dReal stepsize)
-    { dWorldQuickStep (get_id(), stepsize); }
-  void setQuickStepNumIterations(int num)
-    { dWorldSetQuickStepNumIterations (get_id(), num); }
-  int getQuickStepNumIterations() const
-    { return dWorldGetQuickStepNumIterations (get_id()); }
-  void setQuickStepW(dReal over_relaxation)
-    { dWorldSetQuickStepW (get_id(), over_relaxation); }
-  dReal getQuickStepW() const
-    { return dWorldGetQuickStepW (get_id()); }
-
-  void  setAutoDisableLinearThreshold (dReal threshold) 
-    { dWorldSetAutoDisableLinearThreshold (get_id(), threshold); }
-  dReal getAutoDisableLinearThreshold() const
-    { return dWorldGetAutoDisableLinearThreshold (get_id()); }
-  void setAutoDisableAngularThreshold (dReal threshold)
-    { dWorldSetAutoDisableAngularThreshold (get_id(), threshold); }
-  dReal getAutoDisableAngularThreshold() const
-    { return dWorldGetAutoDisableAngularThreshold (get_id()); }
-  void setAutoDisableSteps (int steps)
-    { dWorldSetAutoDisableSteps (get_id(), steps); }
-  int getAutoDisableSteps() const
-    { return dWorldGetAutoDisableSteps (get_id()); }
-  void setAutoDisableTime (dReal time)
-    { dWorldSetAutoDisableTime (get_id(), time); }
-  dReal getAutoDisableTime() const
-    { return dWorldGetAutoDisableTime (get_id()); }
-  void setAutoDisableFlag (int do_auto_disable)
-    { dWorldSetAutoDisableFlag (get_id(), do_auto_disable); }
-  int getAutoDisableFlag() const
-    { return dWorldGetAutoDisableFlag (get_id()); }
-
-  dReal getLinearDampingThreshold() const
-    { return dWorldGetLinearDampingThreshold(get_id()); }
-  void setLinearDampingThreshold(dReal threshold)
-    { dWorldSetLinearDampingThreshold(get_id(), threshold); }
-  dReal getAngularDampingThreshold() const
-    { return dWorldGetAngularDampingThreshold(get_id()); }
-  void setAngularDampingThreshold(dReal threshold)
-    { dWorldSetAngularDampingThreshold(get_id(), threshold); }
-  dReal getLinearDamping() const
-    { return dWorldGetLinearDamping(get_id()); }
-  void setLinearDamping(dReal scale)
-    { dWorldSetLinearDamping(get_id(), scale); }
-  dReal getAngularDamping() const
-    { return dWorldGetAngularDamping(get_id()); }
-  void setAngularDamping(dReal scale)
-    { dWorldSetAngularDamping(get_id(), scale); }
-  void setDamping(dReal linear_scale, dReal angular_scale)
-    { dWorldSetDamping(get_id(), linear_scale, angular_scale); }
-
-  dReal getMaxAngularSpeed() const
-    { return dWorldGetMaxAngularSpeed(get_id()); }
-  void setMaxAngularSpeed(dReal max_speed)
-    { dWorldSetMaxAngularSpeed(get_id(), max_speed); }
-
-  void setContactSurfaceLayer(dReal depth)
-    { dWorldSetContactSurfaceLayer (get_id(), depth); }
-  dReal getContactSurfaceLayer() const
-    { return dWorldGetContactSurfaceLayer (get_id()); }
-
-  void impulseToForce (dReal stepsize, dReal ix, dReal iy, dReal iz, 
-                      dVector3 force)
-    { dWorldImpulseToForce (get_id(), stepsize, ix, iy, iz, force); }
-};
-
-
-class dBodySimpleIDContainer {
-protected:
-       dBodyID _id;
-
-       dBodySimpleIDContainer(): _id(0) {}
-       ~dBodySimpleIDContainer() { destroy(); }
-
-       void destroy() { 
-               if (_id) {
-                       dBodyDestroy(_id); 
-                       _id = 0;
-               }
-       }
-};
-
-class dBodyDynamicIDContainer: public dBodySimpleIDContainer {
-protected:
-       virtual ~dBodyDynamicIDContainer() {}
-};
-
-template <class dBodyTemplateBase, class dWorldTemplateBase>
-class dBodyTemplate: public dBodyTemplateBase {
-  // intentionally undefined, don't use these
-  dBodyTemplate (const dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase> &);
-  void operator= (const dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase> &);
-
-protected:
-  dBodyID get_id() const { return dBodyTemplateBase::_id; }
-  void set_id(dBodyID value) { dBodyTemplateBase::_id = value; }
-
-  void destroy() { dBodyTemplateBase::destroy(); }
-
-public:
-  dBodyTemplate()
-    { }
-  dBodyTemplate (dWorldID world)
-    { set_id(dBodyCreate(world)); }
-  dBodyTemplate (dWorldTemplate<dWorldTemplateBase>& world)
-    { set_id(dBodyCreate(world.id())); }
-
-  void create (dWorldID world) {
-    destroy();
-    set_id(dBodyCreate(world));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world) {
-    create(world.id());
-  }
-
-  dBodyID id() const
-    { return get_id(); }
-  operator dBodyID() const
-    { return get_id(); }
-
-  void setData (void *data)
-    { dBodySetData (get_id(), data); }
-  void *getData() const
-    { return dBodyGetData (get_id()); }
-
-  void setPosition (dReal x, dReal y, dReal z)
-    { dBodySetPosition (get_id(), x, y, z); }
-  void setPosition (const dVector3 p)
-    { setPosition(p[0], p[1], p[2]); }
-
-  void setRotation (const dMatrix3 R)
-    { dBodySetRotation (get_id(), R); }
-  void setQuaternion (const dQuaternion q)
-    { dBodySetQuaternion (get_id(), q); }
-  void setLinearVel (dReal x, dReal y, dReal z)
-    { dBodySetLinearVel (get_id(), x, y, z); }
-  void setLinearVel (const dVector3 v)
-    { setLinearVel(v[0], v[1], v[2]); }
-  void setAngularVel (dReal x, dReal y, dReal z)
-    { dBodySetAngularVel (get_id(), x, y, z); }
-  void setAngularVel (const dVector3 v)
-    { setAngularVel (v[0], v[1], v[2]); }
-
-  const dReal * getPosition() const
-    { return dBodyGetPosition (get_id()); }
-  const dReal * getRotation() const
-    { return dBodyGetRotation (get_id()); }
-  const dReal * getQuaternion() const
-    { return dBodyGetQuaternion (get_id()); }
-  const dReal * getLinearVel() const
-    { return dBodyGetLinearVel (get_id()); }
-  const dReal * getAngularVel() const
-    { return dBodyGetAngularVel (get_id()); }
-
-  void setMass (const dMass *mass)
-    { dBodySetMass (get_id(), mass); }
-  void setMass (const dMass &mass)
-    { setMass (&mass); }
-  dMass getMass () const
-    { dMass mass; dBodyGetMass (get_id(), &mass); return mass; }
-
-  void addForce (dReal fx, dReal fy, dReal fz)
-    { dBodyAddForce (get_id(), fx, fy, fz); }
-  void addForce (const dVector3 f)
-    { addForce (f[0], f[1], f[2]); }
-  void addTorque (dReal fx, dReal fy, dReal fz)
-    { dBodyAddTorque (get_id(), fx, fy, fz); }
-  void addTorque (const dVector3 t)
-    { addTorque(t[0], t[1], t[2]); }
-
-  void addRelForce (dReal fx, dReal fy, dReal fz)
-    { dBodyAddRelForce (get_id(), fx, fy, fz); }
-  void addRelForce (const dVector3 f)
-    { addRelForce (f[0], f[1], f[2]); }
-  void addRelTorque (dReal fx, dReal fy, dReal fz)
-    { dBodyAddRelTorque (get_id(), fx, fy, fz); }
-  void addRelTorque (const dVector3 t)
-    { addRelTorque (t[0], t[1], t[2]); }
-
-  void addForceAtPos (dReal fx, dReal fy, dReal fz, 
-                     dReal px, dReal py, dReal pz)
-    { dBodyAddForceAtPos (get_id(), fx, fy, fz, px, py, pz); }
-  void addForceAtPos (const dVector3 f, const dVector3 p)
-    { addForceAtPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
-  void addForceAtRelPos (dReal fx, dReal fy, dReal fz, 
-                         dReal px, dReal py, dReal pz)
-    { dBodyAddForceAtRelPos (get_id(), fx, fy, fz, px, py, pz); }
-  void addForceAtRelPos (const dVector3 f, const dVector3 p)
-    { addForceAtRelPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
-  void addRelForceAtPos (dReal fx, dReal fy, dReal fz, 
-                        dReal px, dReal py, dReal pz)
-    { dBodyAddRelForceAtPos (get_id(), fx, fy, fz, px, py, pz); }
-  void addRelForceAtPos (const dVector3 f, const dVector3 p)
-    { addRelForceAtPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
-  void addRelForceAtRelPos (dReal fx, dReal fy, dReal fz, 
-                           dReal px, dReal py, dReal pz)
-    { dBodyAddRelForceAtRelPos (get_id(), fx, fy, fz, px, py, pz); }
-  void addRelForceAtRelPos (const dVector3 f, const dVector3 p)
-    { addRelForceAtRelPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
-  const dReal * getForce() const
-    { return dBodyGetForce(get_id()); }
-  const dReal * getTorque() const
-    { return dBodyGetTorque(get_id()); }
-  void setForce (dReal x, dReal y, dReal z)
-    { dBodySetForce (get_id(), x, y, z); }
-  void setForce (const dVector3 f)
-    { setForce (f[0], f[1], f[2]); }
-  void setTorque (dReal x, dReal y, dReal z)
-    { dBodySetTorque (get_id(), x, y, z); }
-  void setTorque (const dVector3 t)
-  { setTorque (t[0], t[1], t[2]); }
-
-  void setDynamic()
-    { dBodySetDynamic (get_id()); }
-  void setKinematic()
-    { dBodySetKinematic (get_id()); }
-  bool isKinematic() const
-    { return dBodyIsKinematic (get_id()) != 0; }
-
-  void enable()
-    { dBodyEnable (get_id()); }
-  void disable()
-    { dBodyDisable (get_id()); }
-  bool isEnabled() const
-    { return dBodyIsEnabled (get_id()) != 0; }
-
-  void getRelPointPos (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyGetRelPointPos (get_id(), px, py, pz, result); }
-  void getRelPointPos (const dVector3 p, dVector3 result) const
-    { getRelPointPos (p[0], p[1], p[2], result); }
-
-  void getRelPointVel (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyGetRelPointVel (get_id(), px, py, pz, result); }
-  void getRelPointVel (const dVector3 p, dVector3 result) const
-    { getRelPointVel (p[0], p[1], p[2], result); }
-
-  void getPointVel (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyGetPointVel (get_id(), px, py, pz, result); }
-  void getPointVel (const dVector3 p, dVector3 result) const
-    { getPointVel (p[0], p[1], p[2], result); }
-
-  void getPosRelPoint (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyGetPosRelPoint (get_id(), px, py, pz, result); }
-  void getPosRelPoint (const dVector3 p, dVector3 result) const
-    { getPosRelPoint (p[0], p[1], p[2], result); }
-
-  void vectorToWorld (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyVectorToWorld (get_id(), px, py, pz, result); }
-  void vectorToWorld (const dVector3 p, dVector3 result) const
-    { vectorToWorld (p[0], p[1], p[2], result); }
-
-  void vectorFromWorld (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyVectorFromWorld (get_id(), px, py, pz, result); }
-  void vectorFromWorld (const dVector3 p, dVector3 result) const
-    { vectorFromWorld (p[0], p[1], p[2], result); }
-
-  void setFiniteRotationMode (bool mode)
-    { dBodySetFiniteRotationMode (get_id(), mode); }
-
-  void setFiniteRotationAxis (dReal x, dReal y, dReal z)
-    { dBodySetFiniteRotationAxis (get_id(), x, y, z); }
-  void setFiniteRotationAxis (const dVector3 a)
-    { setFiniteRotationAxis (a[0], a[1], a[2]); }
-
-  bool getFiniteRotationMode() const
-    { return dBodyGetFiniteRotationMode (get_id()) != 0; }
-  void getFiniteRotationAxis (dVector3 result) const
-    { dBodyGetFiniteRotationAxis (get_id(), result); }
-
-  int getNumJoints() const
-    { return dBodyGetNumJoints (get_id()); }
-  dJointID getJoint (int index) const
-    { return dBodyGetJoint (get_id(), index); }
-
-  void setGravityMode (bool mode)
-    { dBodySetGravityMode (get_id(), mode); }
-  bool getGravityMode() const
-    { return dBodyGetGravityMode (get_id()) != 0; }
-
-  bool isConnectedTo (dBodyID body) const
-    { return dAreConnected (get_id(), body) != 0; }
-
-  void  setAutoDisableLinearThreshold (dReal threshold) 
-    { dBodySetAutoDisableLinearThreshold (get_id(), threshold); }
-  dReal getAutoDisableLinearThreshold() const
-    { return dBodyGetAutoDisableLinearThreshold (get_id()); }
-  void setAutoDisableAngularThreshold (dReal threshold)
-    { dBodySetAutoDisableAngularThreshold (get_id(), threshold); }
-  dReal getAutoDisableAngularThreshold() const
-    { return dBodyGetAutoDisableAngularThreshold (get_id()); }
-  void setAutoDisableSteps (int steps)
-    { dBodySetAutoDisableSteps (get_id(), steps); }
-  int getAutoDisableSteps() const
-    { return dBodyGetAutoDisableSteps (get_id()); }
-  void setAutoDisableTime (dReal time)
-    { dBodySetAutoDisableTime (get_id(), time); }
-  dReal getAutoDisableTime() const
-    { return dBodyGetAutoDisableTime (get_id()); }
-  void setAutoDisableFlag (bool do_auto_disable)
-    { dBodySetAutoDisableFlag (get_id(), do_auto_disable); }
-  bool getAutoDisableFlag() const
-    { return dBodyGetAutoDisableFlag (get_id()) != 0; }
-
-  dReal getLinearDamping() const
-    { return dBodyGetLinearDamping(get_id()); }
-  void setLinearDamping(dReal scale)
-    { dBodySetLinearDamping(get_id(), scale); }
-  dReal getAngularDamping() const
-    { return dBodyGetAngularDamping(get_id()); }
-  void setAngularDamping(dReal scale)
-    { dBodySetAngularDamping(get_id(), scale); }
-  void setDamping(dReal linear_scale, dReal angular_scale)
-    { dBodySetDamping(get_id(), linear_scale, angular_scale); }
-  dReal getLinearDampingThreshold() const
-    { return dBodyGetLinearDampingThreshold(get_id()); }
-  void setLinearDampingThreshold(dReal threshold) const
-    { dBodySetLinearDampingThreshold(get_id(), threshold); }
-  dReal getAngularDampingThreshold() const
-    { return dBodyGetAngularDampingThreshold(get_id()); }
-  void setAngularDampingThreshold(dReal threshold)
-    { dBodySetAngularDampingThreshold(get_id(), threshold); }
-  void setDampingDefaults()
-    { dBodySetDampingDefaults(get_id()); }
-
-  dReal getMaxAngularSpeed() const
-    { return dBodyGetMaxAngularSpeed(get_id()); }
-  void setMaxAngularSpeed(dReal max_speed)
-    { dBodySetMaxAngularSpeed(get_id(), max_speed); }
-
-  bool getGyroscopicMode() const
-    { return dBodyGetGyroscopicMode(get_id()) != 0; }
-  void setGyroscopicMode(bool mode)
-    { dBodySetGyroscopicMode(get_id(), mode); }
-
-};
-
-
-class dJointGroupSimpleIDContainer {
-protected:
-       dJointGroupID _id;
-
-       dJointGroupSimpleIDContainer(): _id(0) {}
-       ~dJointGroupSimpleIDContainer() { destroy(); }
-
-       void destroy() { 
-               if (_id) {
-                       dJointGroupDestroy(_id); 
-                       _id = 0;
-               }
-       }
-};
-
-class dJointGroupDynamicIDContainer: public dJointGroupSimpleIDContainer {
-protected:
-       virtual ~dJointGroupDynamicIDContainer() {}
-};
-
-template <class dJointGroupTemplateBase>
-class dJointGroupTemplate: public dJointGroupTemplateBase {
-  // intentionally undefined, don't use these
-  dJointGroupTemplate (const dJointGroupTemplate<dJointGroupTemplateBase> &);
-  void operator= (const dJointGroupTemplate<dJointGroupTemplateBase> &);
-
-protected:
-  dJointGroupID get_id() const { return dJointGroupTemplateBase::_id; }
-  void set_id(dJointGroupID value) { dJointGroupTemplateBase::_id = value; }
-
-  void destroy() { dJointGroupTemplateBase::destroy(); }
-
-public:
-  dJointGroupTemplate ()
-    { set_id(dJointGroupCreate(0)); }
-  
-  void create () {
-    destroy();
-    set_id(dJointGroupCreate(0));
-  }
-
-  dJointGroupID id() const
-    { return get_id(); }
-  operator dJointGroupID() const
-    { return get_id(); }
-
-  void empty()
-    { dJointGroupEmpty (get_id()); }
-  void clear()
-    { empty(); }
-};
-
-
-class dJointSimpleIDContainer {
-protected:
-       dJointID _id;
-
-       dJointSimpleIDContainer(): _id(0) {}
-       ~dJointSimpleIDContainer() { destroy(); }
-
-       void destroy() { 
-               if (_id) {
-                       dJointDestroy (_id); 
-                       _id = 0;
-               }
-       }
-};
-
-class dJointDynamicIDContainer: public dJointSimpleIDContainer {
-protected:
-       virtual ~dJointDynamicIDContainer() {}
-};
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dJointTemplate: public dJointTemplateBase {
-private:
-  // intentionally undefined, don't use these
-  dJointTemplate (const dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &) ;
-  void operator= (const dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  dJointID get_id() const { return dJointTemplateBase::_id; }
-  void set_id(dJointID value) { dJointTemplateBase::_id = value; }
-
-  void destroy() { dJointTemplateBase::destroy(); }
-
-protected:
-  dJointTemplate() // don't let user construct pure dJointTemplate objects
-    { }
-
-public:
-  dJointID id() const
-    { return get_id(); }
-  operator dJointID() const
-    { return get_id(); }
-
-  int getNumBodies() const
-    { return dJointGetNumBodies(get_id()); }
-
-  void attach (dBodyID body1, dBodyID body2)
-    { dJointAttach (get_id(), body1, body2); }
-  void attach (dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase>& body1, dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase>& body2)
-    { attach(body1.id(), body2.id()); }
-
-  void enable()
-    { dJointEnable (get_id()); }
-  void disable()
-    { dJointDisable (get_id()); }
-  bool isEnabled() const
-    { return dJointIsEnabled (get_id()) != 0; }
-
-  void setData (void *data)
-    { dJointSetData (get_id(), data); }
-  void *getData() const
-    { return dJointGetData (get_id()); }
-
-  dJointType getType() const
-    { return dJointGetType (get_id()); }
-
-  dBodyID getBody (int index) const
-    { return dJointGetBody (get_id(), index); }
-
-  void setFeedback(dJointFeedback *fb)
-    { dJointSetFeedback(get_id(), fb); }
-  dJointFeedback *getFeedback() const
-    { return dJointGetFeedback(get_id()); }
-
-  // If not implemented it will do nothing as describe in the doc
-  virtual void setParam (int, dReal) {};
-  virtual dReal getParam (int) const { return 0; }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dBallJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dBallJointTemplate (const dBallJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator= (const dBallJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dBallJointTemplate() { }
-  dBallJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateBall(world, group)); }
-  dBallJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateBall(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateBall(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetBallAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void getAnchor (dVector3 result) const
-    { dJointGetBallAnchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetBallAnchor2 (get_id(), result); }
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetBallParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetBallParam (get_id(), parameter); }
-  // TODO: expose params through methods
-} ;
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dHingeJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dHingeJointTemplate (const dHingeJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dHingeJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dHingeJointTemplate() { }
-  dHingeJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateHinge(world, group)); }
-  dHingeJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateHinge(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateHinge (world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-  
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetHingeAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void getAnchor (dVector3 result) const
-    { dJointGetHingeAnchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetHingeAnchor2 (get_id(), result); }
-
-  void setAxis (dReal x, dReal y, dReal z)
-    { dJointSetHingeAxis (get_id(), x, y, z); }
-  void setAxis (const dVector3 a)
-    { setAxis(a[0], a[1], a[2]); }
-  void getAxis (dVector3 result) const
-    { dJointGetHingeAxis (get_id(), result); }
-
-  dReal getAngle() const
-    { return dJointGetHingeAngle (get_id()); }
-  dReal getAngleRate() const
-    { return dJointGetHingeAngleRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetHingeParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetHingeParam (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addTorque (dReal torque)
-       { dJointAddHingeTorque(get_id(), torque); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dSliderJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dSliderJointTemplate (const dSliderJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dSliderJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dSliderJointTemplate() { }
-  dSliderJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateSlider(world, group)); }
-  dSliderJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateSlider(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateSlider(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAxis (dReal x, dReal y, dReal z)
-    { dJointSetSliderAxis (get_id(), x, y, z); }
-  void setAxis (const dVector3 a)
-    { setAxis (a[0], a[1], a[2]); }
-  void getAxis (dVector3 result) const
-    { dJointGetSliderAxis (get_id(), result); }
-
-  dReal getPosition() const
-    { return dJointGetSliderPosition (get_id()); }
-  dReal getPositionRate() const
-    { return dJointGetSliderPositionRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetSliderParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetSliderParam (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addForce (dReal force)
-       { dJointAddSliderForce(get_id(), force); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dUniversalJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dUniversalJointTemplate (const dUniversalJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dUniversalJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dUniversalJointTemplate() { }
-  dUniversalJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateUniversal(world, group)); }
-  dUniversalJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateUniversal(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateUniversal(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetUniversalAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor(a[0], a[1], a[2]); }
-  void setAxis1 (dReal x, dReal y, dReal z)
-    { dJointSetUniversalAxis1 (get_id(), x, y, z); }
-  void setAxis1 (const dVector3 a)
-    { setAxis1 (a[0], a[1], a[2]); }
-  void setAxis2 (dReal x, dReal y, dReal z)
-    { dJointSetUniversalAxis2 (get_id(), x, y, z); }
-  void setAxis2 (const dVector3 a)
-    { setAxis2 (a[0], a[1], a[2]); }
-
-  void getAnchor (dVector3 result) const
-    { dJointGetUniversalAnchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetUniversalAnchor2 (get_id(), result); }
-  void getAxis1 (dVector3 result) const
-    { dJointGetUniversalAxis1 (get_id(), result); }
-  void getAxis2 (dVector3 result) const
-    { dJointGetUniversalAxis2 (get_id(), result); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetUniversalParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetUniversalParam (get_id(), parameter); }
-  // TODO: expose params through methods
-  
-  void getAngles(dReal *angle1, dReal *angle2) const
-    { dJointGetUniversalAngles (get_id(), angle1, angle2); }
-
-  dReal getAngle1() const
-    { return dJointGetUniversalAngle1 (get_id()); }
-  dReal getAngle1Rate() const
-    { return dJointGetUniversalAngle1Rate (get_id()); }
-  dReal getAngle2() const
-    { return dJointGetUniversalAngle2 (get_id()); }
-  dReal getAngle2Rate() const
-    { return dJointGetUniversalAngle2Rate (get_id()); }
-
-  void addTorques (dReal torque1, dReal torque2)
-       { dJointAddUniversalTorques(get_id(), torque1, torque2); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dHinge2JointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dHinge2JointTemplate (const dHinge2JointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dHinge2JointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dHinge2JointTemplate() { }
-  dHinge2JointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateHinge2(world, group)); }
-  dHinge2JointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateHinge2(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateHinge2(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetHinge2Anchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor(a[0], a[1], a[2]); }
-  void setAxis1 (dReal x, dReal y, dReal z)
-    { dJointSetHinge2Axis1 (get_id(), x, y, z); }
-  void setAxis1 (const dVector3 a)
-    { setAxis1 (a[0], a[1], a[2]); }
-  void setAxis2 (dReal x, dReal y, dReal z)
-    { dJointSetHinge2Axis2 (get_id(), x, y, z); }
-  void setAxis2 (const dVector3 a)
-    { setAxis2 (a[0], a[1], a[2]); }
-    
-  void getAnchor (dVector3 result) const
-    { dJointGetHinge2Anchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetHinge2Anchor2 (get_id(), result); }
-  void getAxis1 (dVector3 result) const
-    { dJointGetHinge2Axis1 (get_id(), result); }
-  void getAxis2 (dVector3 result) const
-    { dJointGetHinge2Axis2 (get_id(), result); }
-
-  dReal getAngle1() const
-    { return dJointGetHinge2Angle1 (get_id()); }
-  dReal getAngle1Rate() const
-    { return dJointGetHinge2Angle1Rate (get_id()); }
-  dReal getAngle2Rate() const
-    { return dJointGetHinge2Angle2Rate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetHinge2Param (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetHinge2Param (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addTorques(dReal torque1, dReal torque2)
-       { dJointAddHinge2Torques(get_id(), torque1, torque2); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dPRJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dPRJointTemplate (const dPRJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dPRJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dPRJointTemplate() { }
-  dPRJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreatePR(world, group)); }
-  dPRJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreatePR(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreatePR(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetPRAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void setAxis1 (dReal x, dReal y, dReal z)
-    { dJointSetPRAxis1 (get_id(), x, y, z); }
-  void setAxis1 (const dVector3 a)
-    { setAxis1(a[0], a[1], a[2]); }
-  void setAxis2 (dReal x, dReal y, dReal z)
-    { dJointSetPRAxis2 (get_id(), x, y, z); }
-  void setAxis2 (const dVector3 a)
-    { setAxis2(a[0], a[1], a[2]); }
-
-  void getAnchor (dVector3 result) const
-    { dJointGetPRAnchor (get_id(), result); }
-  void getAxis1 (dVector3 result) const
-    { dJointGetPRAxis1 (get_id(), result); }
-  void getAxis2 (dVector3 result) const
-    { dJointGetPRAxis2 (get_id(), result); }
-
-  dReal getPosition() const
-    { return dJointGetPRPosition (get_id()); }
-  dReal getPositionRate() const
-    { return dJointGetPRPositionRate (get_id()); }
-
-  dReal getAngle() const
-    { return dJointGetPRAngle (get_id()); }
-  dReal getAngleRate() const
-    { return dJointGetPRAngleRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetPRParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetPRParam (get_id(), parameter); }
-};
-
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dPUJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase>
-{
-private:
-  // intentionally undefined, don't use these
-  dPUJointTemplate (const dPUJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dPUJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dPUJointTemplate() { }
-  dPUJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreatePU(world, group)); }
-  dPUJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreatePU(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0)
-  {
-    destroy();
-    set_id(dJointCreatePU(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-  { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetPUAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void setAxis1 (dReal x, dReal y, dReal z)
-    { dJointSetPUAxis1 (get_id(), x, y, z); }
-  void setAxis1 (const dVector3 a)
-    { setAxis1(a[0], a[1], a[2]); }
-  void setAxis2 (dReal x, dReal y, dReal z)
-  { dJointSetPUAxis2 (get_id(), x, y, z); }
-  void setAxis3 (dReal x, dReal y, dReal z)
-  { dJointSetPUAxis3 (get_id(), x, y, z); }
-  void setAxis3 (const dVector3 a)
-    { setAxis3(a[0], a[1], a[2]); }
-  void setAxisP (dReal x, dReal y, dReal z)
-  { dJointSetPUAxis3 (get_id(), x, y, z); }
-  void setAxisP (const dVector3 a)
-    { setAxisP(a[0], a[1], a[2]); }
-
-  virtual void getAnchor (dVector3 result) const
-    { dJointGetPUAnchor (get_id(), result); }
-  void getAxis1 (dVector3 result) const
-    { dJointGetPUAxis1 (get_id(), result); }
-  void getAxis2 (dVector3 result) const
-    { dJointGetPUAxis2 (get_id(), result); }
-  void getAxis3 (dVector3 result) const
-    { dJointGetPUAxis3 (get_id(), result); }
-  void getAxisP (dVector3 result) const
-    { dJointGetPUAxis3 (get_id(), result); }
-
-  dReal getAngle1() const
-    { return dJointGetPUAngle1 (get_id()); }
-  dReal getAngle1Rate() const
-    { return dJointGetPUAngle1Rate (get_id()); }
-  dReal getAngle2() const
-    { return dJointGetPUAngle2 (get_id()); }
-  dReal getAngle2Rate() const
-    { return dJointGetPUAngle2Rate (get_id()); }
-
-  dReal getPosition() const
-    { return dJointGetPUPosition (get_id()); }
-  dReal getPositionRate() const
-    { return dJointGetPUPositionRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-  { dJointSetPUParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetPUParam (get_id(), parameter); }
-  // TODO: expose params through methods
-};
-
-
-
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dPistonJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase>
-{
-private:
-  // intentionally undefined, don't use these
-  dPistonJointTemplate (const dPistonJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dPistonJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dPistonJointTemplate() { }
-  dPistonJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreatePiston(world, group)); }
-  dPistonJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreatePiston(world, group)); }
-
-  void create (dWorldID world, dJointGroupID group=0)
-  {
-    destroy();
-    set_id(dJointCreatePiston(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetPistonAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void getAnchor (dVector3 result) const
-    { dJointGetPistonAnchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetPistonAnchor2 (get_id(), result); }
-
-  void setAxis (dReal x, dReal y, dReal z)
-    { dJointSetPistonAxis (get_id(), x, y, z); }
-  void setAxis (const dVector3 a)
-    { setAxis(a[0], a[1], a[2]); }
-  void getAxis (dVector3 result) const
-    { dJointGetPistonAxis (get_id(), result); }
-
-  dReal getPosition() const
-    { return dJointGetPistonPosition (get_id()); }
-  dReal getPositionRate() const
-    { return dJointGetPistonPositionRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-  { dJointSetPistonParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetPistonParam (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addForce (dReal force)
-  { dJointAddPistonForce (get_id(), force); }
-};
-
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dFixedJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase>
-{
-private:
-  // intentionally undefined, don't use these
-  dFixedJointTemplate (const dFixedJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dFixedJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dFixedJointTemplate() { }
-  dFixedJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateFixed(world, group)); }
-  dFixedJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateFixed(world, group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateFixed(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void set()
-    { dJointSetFixed (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetFixedParam (get_id(), parameter, value); }
-
-  virtual dReal getParam (int parameter) const
-    { return dJointGetFixedParam (get_id(), parameter); }
-  // TODO: expose params through methods
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dContactJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dContactJointTemplate (const dContactJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dContactJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dContactJointTemplate() { }
-  dContactJointTemplate (dWorldID world, dJointGroupID group, dContact *contact)
-    { set_id(dJointCreateContact(world, group, contact)); }
-  dContactJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group, dContact *contact)
-    { set_id(dJointCreateContact(world.id(), group, contact)); }
-
-  void create (dWorldID world, dJointGroupID group, dContact *contact) {
-    destroy();
-    set_id(dJointCreateContact(world, group, contact));
-  }
-  
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group, dContact *contact)
-    { create(world.id(), group, contact); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dNullJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dNullJointTemplate (const dNullJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dNullJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dNullJointTemplate() { }
-  dNullJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateNull(world, group)); }
-  dNullJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateNull (world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateNull(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dAMotorJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dAMotorJointTemplate (const dAMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dAMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dAMotorJointTemplate() { }
-  dAMotorJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateAMotor(world, group)); }
-  dAMotorJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateAMotor(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateAMotor(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setMode (int mode)
-    { dJointSetAMotorMode (get_id(), mode); }
-  int getMode() const
-    { return dJointGetAMotorMode (get_id()); }
-
-  void setNumAxes (int num)
-    { dJointSetAMotorNumAxes (get_id(), num); }
-  int getNumAxes() const
-    { return dJointGetAMotorNumAxes (get_id()); }
-
-  void setAxis (int anum, int rel, dReal x, dReal y, dReal z)
-    { dJointSetAMotorAxis (get_id(), anum, rel, x, y, z); }
-  void setAxis (int anum, int rel, const dVector3 a)
-    { setAxis(anum, rel, a[0], a[1], a[2]); }
-  void getAxis (int anum, dVector3 result) const
-    { dJointGetAMotorAxis (get_id(), anum, result); }
-  int getAxisRel (int anum) const
-    { return dJointGetAMotorAxisRel (get_id(), anum); }
-
-  void setAngle (int anum, dReal angle)
-    { dJointSetAMotorAngle (get_id(), anum, angle); }
-  dReal getAngle (int anum) const
-    { return dJointGetAMotorAngle (get_id(), anum); }
-  dReal getAngleRate (int anum)
-    { return dJointGetAMotorAngleRate (get_id(), anum); }
-
-  void setParam (int parameter, dReal value)
-    { dJointSetAMotorParam (get_id(), parameter, value); }
-  dReal getParam (int parameter) const
-    { return dJointGetAMotorParam (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addTorques(dReal torque1, dReal torque2, dReal torque3)
-       { dJointAddAMotorTorques(get_id(), torque1, torque2, torque3); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dLMotorJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dLMotorJointTemplate (const dLMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dLMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dLMotorJointTemplate() { }
-  dLMotorJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateLMotor(world, group)); }
-  dLMotorJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateLMotor(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateLMotor(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setNumAxes (int num)
-    { dJointSetLMotorNumAxes (get_id(), num); }
-  int getNumAxes() const
-    { return dJointGetLMotorNumAxes (get_id()); }
-
-  void setAxis (int anum, int rel, dReal x, dReal y, dReal z)
-    { dJointSetLMotorAxis (get_id(), anum, rel, x, y, z); }
-  void setAxis (int anum, int rel, const dVector3 a)
-    { setAxis(anum, rel, a[0], a[1], a[2]); }
-  void getAxis (int anum, dVector3 result) const
-    { dJointGetLMotorAxis (get_id(), anum, result); }
-
-  void setParam (int parameter, dReal value)
-    { dJointSetLMotorParam (get_id(), parameter, value); }
-  dReal getParam (int parameter) const
-    { return dJointGetLMotorParam (get_id(), parameter); }
-  // TODO: expose params through methods
-};
-
-//}
-
-#if !defined(dODECPP_WORLD_TEMPLATE_BASE)
-
-#if defined(dODECPP_BODY_TEMPLATE_BASE) || defined(dODECPP_JOINTGROUP_TEMPLATE_BASE) || defined(dODECPP_JOINT_TEMPLATE_BASE)
-#error All the odecpp template bases must be defined or not defined together
-#endif
-
-#define dODECPP_WORLD_TEMPLATE_BASE dWorldDynamicIDContainer
-#define dODECPP_BODY_TEMPLATE_BASE dBodyDynamicIDContainer
-#define dODECPP_JOINTGROUP_TEMPLATE_BASE dJointGroupDynamicIDContainer
-#define dODECPP_JOINT_TEMPLATE_BASE dJointDynamicIDContainer
-
-#else // #if defined(dODECPP_WORLD_TEMPLATE_BASE)
-
-#if !defined(dODECPP_BODY_TEMPLATE_BASE) || !defined(dODECPP_JOINTGROUP_TEMPLATE_BASE) || !defined(dODECPP_JOINT_TEMPLATE_BASE)
-#error All the odecpp template bases must be defined or not defined together
-#endif
-
-#endif // #if defined(dODECPP_WORLD_TEMPLATE_BASE)
-
-
-typedef dWorldTemplate<dODECPP_WORLD_TEMPLATE_BASE> dWorld;
-typedef dBodyTemplate<dODECPP_BODY_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE> dBody;
-typedef dJointGroupTemplate<dODECPP_JOINTGROUP_TEMPLATE_BASE> dJointGroup;
-typedef dJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dJoint;
-typedef dBallJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dBallJoint;
-typedef dHingeJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dHingeJoint;
-typedef dSliderJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dSliderJoint;
-typedef dUniversalJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dUniversalJoint;
-typedef dHinge2JointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dHinge2Joint;
-typedef dPRJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dPRJoint;
-typedef dPUJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dPUJoint;
-typedef dPistonJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dPistonJoint;
-typedef dFixedJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dFixedJoint;
-typedef dContactJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dContactJoint;
-typedef dNullJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dNullJoint;
-typedef dAMotorJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dAMotorJoint;
-typedef dLMotorJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dLMotorJoint;
-
-
-#endif
-#endif
-
-// Local variables:
-// mode:c++
-// c-basic-offset:2
-// End:
diff --git a/misc/builddeps/linux32/ode/include/ode/odecpp_collision.h b/misc/builddeps/linux32/ode/include/ode/odecpp_collision.h
deleted file mode 100644 (file)
index 2377a5e..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-/*************************************************************************
- *                                                                      *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.      *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org         *
- *                                                                      *
- * This library is free software; you can redistribute it and/or        *
- * modify it under the terms of EITHER:                                 *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *      Software Foundation; either version 2.1 of the License, or (at  *
- *      your option) any later version. The text of the GNU Lesser      *
- *      General Public License is included with this library in the     *
- *      file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in    *
- *      the file LICENSE-BSD.TXT.                                       *
- *                                                                      *
- * This library is distributed in the hope that it will be useful,      *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files   *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                    *
- *                                                                      *
- *************************************************************************/
-
-/* C++ interface for new collision API */
-
-
-#ifndef _ODE_ODECPP_COLLISION_H_
-#define _ODE_ODECPP_COLLISION_H_
-#ifdef __cplusplus
-
-//#include <ode/error.h>
-
-//namespace ode {
-
-class dGeom {
-  // intentionally undefined, don't use these
-  dGeom (dGeom &);
-  void operator= (dGeom &);
-
-protected:
-  dGeomID _id;
-
-  dGeom()
-    { _id = 0; }
-public:
-  ~dGeom()
-    { if (_id) dGeomDestroy (_id); }
-
-  dGeomID id() const
-    { return _id; }
-  operator dGeomID() const
-    { return _id; }
-
-  void destroy() {
-    if (_id) dGeomDestroy (_id);
-    _id = 0;
-  }
-
-  int getClass() const
-    { return dGeomGetClass (_id); }
-
-  dSpaceID getSpace() const
-    { return dGeomGetSpace (_id); }
-
-  void setData (void *data)
-    { dGeomSetData (_id,data); }
-  void *getData() const
-    { return dGeomGetData (_id); }
-
-  void setBody (dBodyID b)
-    { dGeomSetBody (_id,b); }
-  dBodyID getBody() const
-    { return dGeomGetBody (_id); }
-
-  void setPosition (dReal x, dReal y, dReal z)
-    { dGeomSetPosition (_id,x,y,z); }
-  const dReal * getPosition() const
-    { return dGeomGetPosition (_id); }
-
-  void setRotation (const dMatrix3 R)
-    { dGeomSetRotation (_id,R); }
-  const dReal * getRotation() const
-    { return dGeomGetRotation (_id); }
-    
-  void setQuaternion (const dQuaternion quat)
-    { dGeomSetQuaternion (_id,quat); }
-  void getQuaternion (dQuaternion quat) const
-    { dGeomGetQuaternion (_id,quat); }
-
-  void getAABB (dReal aabb[6]) const
-    { dGeomGetAABB (_id, aabb); }
-
-  int isSpace()
-    { return dGeomIsSpace (_id); }
-
-  void setCategoryBits (unsigned long bits)
-    { dGeomSetCategoryBits (_id, bits); }
-  void setCollideBits (unsigned long bits)
-    { dGeomSetCollideBits (_id, bits); }
-  unsigned long getCategoryBits()
-    { return dGeomGetCategoryBits (_id); }
-  unsigned long getCollideBits()
-    { return dGeomGetCollideBits (_id); }
-
-  void enable()
-    { dGeomEnable (_id); }
-  void disable()
-    { dGeomDisable (_id); }
-  int isEnabled()
-    { return dGeomIsEnabled (_id); }
-  
-  void getRelPointPos (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dGeomGetRelPointPos (_id, px, py, pz, result); }
-  void getRelPointPos (const dVector3 p, dVector3 result) const
-    { getRelPointPos (p[0], p[1], p[2], result); }
-
-  void getPosRelPoint (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dGeomGetPosRelPoint (_id, px, py, pz, result); }
-  void getPosRelPoint (const dVector3 p, dVector3 result) const
-    { getPosRelPoint (p[0], p[1], p[2], result); }
-
-  void vectorToWorld (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dGeomVectorToWorld (_id, px, py, pz, result); }
-  void vectorToWorld (const dVector3 p, dVector3 result) const
-    { vectorToWorld (p[0], p[1], p[2], result); }
-
-  void vectorFromWorld (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dGeomVectorFromWorld (_id, px, py, pz, result); }
-  void vectorFromWorld (const dVector3 p, dVector3 result) const
-    { vectorFromWorld (p[0], p[1], p[2], result); }
-  
-  void collide2 (dGeomID g, void *data, dNearCallback *callback)
-    { dSpaceCollide2 (_id,g,data,callback); }
-};
-
-
-class dSpace : public dGeom {
-  // intentionally undefined, don't use these
-  dSpace (dSpace &);
-  void operator= (dSpace &);
-
-protected:
-  // the default constructor is protected so that you
-  // can't instance this class. you must instance one
-  // of its subclasses instead.
-  dSpace () { _id = 0; }
-
-public:
-  dSpaceID id() const
-    { return (dSpaceID) _id; }
-  operator dSpaceID() const
-    { return (dSpaceID) _id; }
-
-  void setCleanup (int mode)
-    { dSpaceSetCleanup (id(), mode); }
-  int getCleanup()
-    { return dSpaceGetCleanup (id()); }
-
-  void add (dGeomID x)
-    { dSpaceAdd (id(), x); }
-  void remove (dGeomID x)
-    { dSpaceRemove (id(), x); }
-  int query (dGeomID x)
-    { return dSpaceQuery (id(),x); }
-
-  int getNumGeoms()
-    { return dSpaceGetNumGeoms (id()); }
-  dGeomID getGeom (int i)
-    { return dSpaceGetGeom (id(),i); }
-
-  void collide (void *data, dNearCallback *callback)
-    { dSpaceCollide (id(),data,callback); }
-};
-
-
-class dSimpleSpace : public dSpace {
-  // intentionally undefined, don't use these
-  dSimpleSpace (dSimpleSpace &);
-  void operator= (dSimpleSpace &);
-
-public:
-  dSimpleSpace ()
-    { _id = (dGeomID) dSimpleSpaceCreate (0); }
-  dSimpleSpace (dSpace &space)
-    { _id = (dGeomID) dSimpleSpaceCreate (space.id()); }
-  dSimpleSpace (dSpaceID space)
-    { _id = (dGeomID) dSimpleSpaceCreate (space); }
-};
-
-
-class dHashSpace : public dSpace {
-  // intentionally undefined, don't use these
-  dHashSpace (dHashSpace &);
-  void operator= (dHashSpace &);
-
-public:
-  dHashSpace ()
-    { _id = (dGeomID) dHashSpaceCreate (0); }
-  dHashSpace (dSpace &space)
-    { _id = (dGeomID) dHashSpaceCreate (space.id()); }
-  dHashSpace (dSpaceID space)
-    { _id = (dGeomID) dHashSpaceCreate (space); }
-
-  void setLevels (int minlevel, int maxlevel)
-    { dHashSpaceSetLevels (id(),minlevel,maxlevel); }
-};
-
-
-class dQuadTreeSpace : public dSpace {
-  // intentionally undefined, don't use these
-  dQuadTreeSpace (dQuadTreeSpace &);
-  void operator= (dQuadTreeSpace &);
-
-public:
-  dQuadTreeSpace (const dVector3 center, const dVector3 extents, int depth)
-    { _id = (dGeomID) dQuadTreeSpaceCreate (0,center,extents,depth); }
-  dQuadTreeSpace (dSpace &space, const dVector3 center, const dVector3 extents, int depth)
-    { _id = (dGeomID) dQuadTreeSpaceCreate (space.id(),center,extents,depth); }
-  dQuadTreeSpace (dSpaceID space, const dVector3 center, const dVector3 extents, int depth)
-    { _id = (dGeomID) dQuadTreeSpaceCreate (space,center,extents,depth); }
-};
-
-
-class dSphere : public dGeom {
-  // intentionally undefined, don't use these
-  dSphere (dSphere &);
-  void operator= (dSphere &);
-
-public:
-  dSphere () { }
-  dSphere (dReal radius)
-    { _id = dCreateSphere (0, radius); }
-  dSphere (dSpace &space, dReal radius)
-    { _id = dCreateSphere (space.id(), radius); }
-  dSphere (dSpaceID space, dReal radius)
-    { _id = dCreateSphere (space, radius); }
-
-  void create (dSpaceID space, dReal radius) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateSphere (space, radius);
-  }
-
-  void setRadius (dReal radius)
-    { dGeomSphereSetRadius (_id, radius); }
-  dReal getRadius() const
-    { return dGeomSphereGetRadius (_id); }
-};
-
-
-class dBox : public dGeom {
-  // intentionally undefined, don't use these
-  dBox (dBox &);
-  void operator= (dBox &);
-
-public:
-  dBox () { }
-  dBox (dReal lx, dReal ly, dReal lz)
-    { _id = dCreateBox (0,lx,ly,lz); }
-  dBox (dSpace &space, dReal lx, dReal ly, dReal lz)
-    { _id = dCreateBox (space,lx,ly,lz); }
-  dBox (dSpaceID space, dReal lx, dReal ly, dReal lz)
-    { _id = dCreateBox (space,lx,ly,lz); }
-
-  void create (dSpaceID space, dReal lx, dReal ly, dReal lz) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateBox (space,lx,ly,lz);
-  }
-
-  void setLengths (dReal lx, dReal ly, dReal lz)
-    { dGeomBoxSetLengths (_id, lx, ly, lz); }
-  void getLengths (dVector3 result) const
-    { dGeomBoxGetLengths (_id,result); }
-};
-
-
-class dPlane : public dGeom {
-  // intentionally undefined, don't use these
-  dPlane (dPlane &);
-  void operator= (dPlane &);
-
-public:
-  dPlane() { }
-  dPlane (dReal a, dReal b, dReal c, dReal d)
-    { _id = dCreatePlane (0,a,b,c,d); }
-  dPlane (dSpace &space, dReal a, dReal b, dReal c, dReal d)
-    { _id = dCreatePlane (space.id(),a,b,c,d); }
-  dPlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d)
-    { _id = dCreatePlane (space,a,b,c,d); }
-
-  void create (dSpaceID space, dReal a, dReal b, dReal c, dReal d) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreatePlane (space,a,b,c,d);
-  }
-
-  void setParams (dReal a, dReal b, dReal c, dReal d)
-    { dGeomPlaneSetParams (_id, a, b, c, d); }
-  void getParams (dVector4 result) const
-    { dGeomPlaneGetParams (_id,result); }
-};
-
-
-class dCapsule : public dGeom {
-  // intentionally undefined, don't use these
-  dCapsule (dCapsule &);
-  void operator= (dCapsule &);
-
-public:
-  dCapsule() { }
-  dCapsule (dReal radius, dReal length)
-    { _id = dCreateCapsule (0,radius,length); }
-  dCapsule (dSpace &space, dReal radius, dReal length)
-    { _id = dCreateCapsule (space.id(),radius,length); }
-  dCapsule (dSpaceID space, dReal radius, dReal length)
-    { _id = dCreateCapsule (space,radius,length); }
-
-  void create (dSpaceID space, dReal radius, dReal length) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateCapsule (space,radius,length);
-  }
-
-  void setParams (dReal radius, dReal length)
-    { dGeomCapsuleSetParams (_id, radius, length); }
-  void getParams (dReal *radius, dReal *length) const
-    { dGeomCapsuleGetParams (_id,radius,length); }
-};
-
-
-class dCylinder : public dGeom {
-  // intentionally undefined, don't use these
-  dCylinder (dCylinder &);
-  void operator= (dCylinder &);
-
-public:
-  dCylinder() { }
-  dCylinder (dReal radius, dReal length)
-    { _id = dCreateCylinder (0,radius,length); }
-  dCylinder (dSpace &space, dReal radius, dReal length)
-    { _id = dCreateCylinder (space.id(),radius,length); }
-  dCylinder (dSpaceID space, dReal radius, dReal length)
-    { _id = dCreateCylinder (space,radius,length); }
-
-  void create (dSpaceID space, dReal radius, dReal length) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateCylinder (space,radius,length);
-  }
-
-  void setParams (dReal radius, dReal length)
-    { dGeomCylinderSetParams (_id, radius, length); }
-  void getParams (dReal *radius, dReal *length) const
-    { dGeomCylinderGetParams (_id,radius,length); }
-};
-
-
-class dRay : public dGeom {
-  // intentionally undefined, don't use these
-  dRay (dRay &);
-  void operator= (dRay &);
-
-public:
-  dRay() { }
-  dRay (dReal length)
-    { _id = dCreateRay (0,length); }
-  dRay (dSpace &space, dReal length)
-    { _id = dCreateRay (space.id(),length); }
-  dRay (dSpaceID space, dReal length)
-    { _id = dCreateRay (space,length); }
-
-  void create (dSpaceID space, dReal length) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateRay (space,length);
-  }
-
-  void setLength (dReal length)
-    { dGeomRaySetLength (_id, length); }
-  dReal getLength()
-    { return dGeomRayGetLength (_id); }
-
-  void set (dReal px, dReal py, dReal pz, dReal dx, dReal dy, dReal dz)
-    { dGeomRaySet (_id, px, py, pz, dx, dy, dz); }
-  void get (dVector3 start, dVector3 dir)
-    { dGeomRayGet (_id, start, dir); }
-
-  void setParams (int firstContact, int backfaceCull)
-    { dGeomRaySetParams (_id, firstContact, backfaceCull); }
-  void getParams (int *firstContact, int *backfaceCull)
-    { dGeomRayGetParams (_id, firstContact, backfaceCull); }
-  void setClosestHit (int closestHit)
-    { dGeomRaySetClosestHit (_id, closestHit); }
-  int getClosestHit()
-    { return dGeomRayGetClosestHit (_id); }
-};
-
-
-class dGeomTransform : public dGeom {
-  // intentionally undefined, don't use these
-  dGeomTransform (dGeomTransform &);
-  void operator= (dGeomTransform &);
-
-public:
-  dGeomTransform() { }
-  dGeomTransform (dSpace &space)
-    { _id = dCreateGeomTransform (space.id()); }
-  dGeomTransform (dSpaceID space)
-    { _id = dCreateGeomTransform (space); }
-
-  void create (dSpaceID space=0) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateGeomTransform (space);
-  }
-
-  void setGeom (dGeomID geom)
-    { dGeomTransformSetGeom (_id, geom); }
-  dGeomID getGeom() const
-    { return dGeomTransformGetGeom (_id); }
-
-  void setCleanup (int mode)
-    { dGeomTransformSetCleanup (_id,mode); }
-  int getCleanup ()
-    { return dGeomTransformGetCleanup (_id); }
-
-  void setInfo (int mode)
-    { dGeomTransformSetInfo (_id,mode); }
-  int getInfo()
-    { return dGeomTransformGetInfo (_id); }
-};
-
-//}
-
-#endif
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/odeinit.h b/misc/builddeps/linux32/ode/include/ode/odeinit.h
deleted file mode 100644 (file)
index bb430c8..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-/*************************************************************************
-*                                                                       *
-* Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
-* All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
-*                                                                       *
-* This library is free software; you can redistribute it and/or         *
-* modify it under the terms of EITHER:                                  *
-*   (1) The GNU Lesser General Public License as published by the Free  *
-*       Software Foundation; either version 2.1 of the License, or (at  *
-*       your option) any later version. The text of the GNU Lesser      *
-*       General Public License is included with this library in the     *
-*       file LICENSE.TXT.                                               *
-*   (2) The BSD-style license that is included with this library in     *
-*       the file LICENSE-BSD.TXT.                                       *
-*                                                                       *
-* This library is distributed in the hope that it will be useful,       *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of        *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
-* LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
-*                                                                       *
-*************************************************************************/
-
-/* Library initialization/finalization functions. */
-
-#ifndef _ODE_ODEINIT_H_
-#define _ODE_ODEINIT_H_
-
-#include <ode/common.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* ************************************************************************ */
-/* Library initialization */
-
-/**
- * @defgroup init Library Initialization
- *
- * Library initialization functions prepare ODE internal data structures for use
- * and release allocated resources after ODE is not needed any more.
- */
-
-
-/**
- * @brief Library initialization flags.
- *
- * These flags define ODE library initialization options.
- *
- * @c dInitFlagManualThreadCleanup indicates that resources allocated in TLS for threads
- * using ODE are to be cleared by library client with explicit call to @c dCleanupODEAllDataForThread.
- * If this flag is not specified the automatic resource tracking algorithm is used.
- *
- * With automatic resource tracking, On Windows, memory allocated for a thread may 
- * remain not freed for some time after the thread exits. The resources may be 
- * released when one of other threads calls @c dAllocateODEDataForThread. Ultimately,
- * the resources are released when library is closed with @c dCloseODE. On other 
- * operating systems resources are always released by the thread itself on its exit
- * or on library closure with @c dCloseODE.
- *
- * With manual thread data cleanup mode every collision space object must be 
- * explicitly switched to manual cleanup mode with @c dSpaceSetManualCleanup
- * after creation. See description of the function for more details.
- *
- * If @c dInitFlagManualThreadCleanup was not specified during initialization,
- * calls to @c dCleanupODEAllDataForThread are not allowed.
- *
- * @see dInitODE2
- * @see dAllocateODEDataForThread
- * @see dSpaceSetManualCleanup
- * @see dCloseODE
- * @ingroup init
- */
-enum dInitODEFlags {
-       dInitFlagManualThreadCleanup = 0x00000001 //@< Thread local data is to be cleared explicitly on @c dCleanupODEAllDataForThread function call
-};
-
-/**
- * @brief Initializes ODE library.
- *
- * @c dInitODE is obsolete. @c dInitODE2 is to be used for library initialization.
- *
- * A call to @c dInitODE is equal to the following initialization sequence
- * @code
- *     dInitODE2(0);
- *     dAllocateODEDataForThread(dAllocateMaskAll);
- * @endcode
- *
- * @see dInitODE2
- * @see dAllocateODEDataForThread
- * @ingroup init
- */
-ODE_API void dInitODE(void);
-
-/**
- * @brief Initializes ODE library.
- * @param uiInitFlags Initialization options bitmask
- * @return A nonzero if initialization succeeded and zero otherwise.
- *
- * This function must be called to initialize ODE library before first use. If 
- * initialization succeeds the function may not be called again until library is 
- * closed with a call to @c dCloseODE.
- *
- * The @a uiInitFlags parameter specifies initialization options to be used. These
- * can be combination of zero or more @c dInitODEFlags flags.
- *
- * @note
- * If @c dInitFlagManualThreadCleanup flag is used for initialization, 
- * @c dSpaceSetManualCleanup must be called to set manual cleanup mode for every
- * space object right after creation. Failure to do so may lead to resource leaks.
- *
- * @see dInitODEFlags
- * @see dCloseODE
- * @see dSpaceSetManualCleanup
- * @ingroup init
- */
-ODE_API int dInitODE2(unsigned int uiInitFlags/*=0*/);
-
-
-/**
- * @brief ODE data allocation flags.
- *
- * These flags are used to indicate which data is to be pre-allocated in call to
- * @c dAllocateODEDataForThread.
- *
- * @c dAllocateFlagBasicData tells to allocate the basic data set required for
- * normal library operation. This flag is equal to zero and is always implicitly 
- * included.
- *
- * @c dAllocateFlagCollisionData tells that collision detection data is to be allocated.
- * Collision detection functions may not be called if the data has not be allocated 
- * in advance. If collision detection is not going to be used, it is not necessary
- * to specify this flag.
- *
- * @c dAllocateMaskAll is a mask that can be used for for allocating all possible 
- * data in cases when it is not known what exactly features of ODE will be used.
- * The mask may not be used in combination with other flags. It is guaranteed to
- * include all the current and future legal allocation flags. However, mature 
- * applications should use explicit flags they need rather than allocating everything.
- *
- * @see dAllocateODEDataForThread
- * @ingroup init
- */
-enum dAllocateODEDataFlags {
-       dAllocateFlagBasicData = 0, //@< Allocate basic data required for library to operate
-
-       dAllocateFlagCollisionData = 0x00000001, //@< Allocate data for collision detection
-
-       dAllocateMaskAll = ~0U //@< Allocate all the possible data that is currently defined or will be defined in the future.
-};
-
-/**
- * @brief Allocate thread local data to allow the thread calling ODE.
- * @param uiAllocateFlags Allocation options bitmask.
- * @return A nonzero if allocation succeeded and zero otherwise.
- * 
- * The function is required to be called for every thread that is going to use
- * ODE. This function allocates the data that is required for accessing ODE from 
- * current thread along with optional data required for particular ODE subsystems.
- *
- * @a uiAllocateFlags parameter can contain zero or more flags from @c dAllocateODEDataFlags
- * enumerated type. Multiple calls with different allocation flags are allowed.
- * The flags that are already allocated are ignored in subsequent calls. If zero
- * is passed as the parameter, it means to only allocate the set of most important
- * data the library can not operate without.
- *
- * If the function returns failure status it means that none of the requested 
- * data has been allocated. The client may retry allocation attempt with the same 
- * flags when more system resources are available.
- *
- * @see dAllocateODEDataFlags
- * @see dCleanupODEAllDataForThread
- * @ingroup init
- */
-ODE_API int dAllocateODEDataForThread(unsigned int uiAllocateFlags);
-
-/**
- * @brief Free thread local data that was allocated for current thread.
- *
- * If library was initialized with @c dInitFlagManualThreadCleanup flag the function 
- * is required to be called on exit of every thread that was calling @c dAllocateODEDataForThread.
- * Failure to call @c dCleanupODEAllDataForThread may result in some resources remaining 
- * not freed until program exit. The function may also be called when ODE is still 
- * being used to release resources allocated for all the current subsystems and 
- * possibly proceed with data pre-allocation for other subsystems.
- *
- * The function can safely be called several times in a row. The function can be 
- * called without prior invocation of @c dAllocateODEDataForThread. The function 
- * may not be called before ODE is initialized with @c dInitODE2 or after library 
- * has been closed with @c dCloseODE. A call to @c dCloseODE implicitly releases 
- * all the thread local resources that might be allocated for all the threads that 
- * were using ODE.
- *
- * If library was initialized without @c dInitFlagManualThreadCleanup flag 
- * @c dCleanupODEAllDataForThread must not be called.
- *
- * @see dAllocateODEDataForThread
- * @see dInitODE2
- * @see dCloseODE
- * @ingroup init
- */
-ODE_API void dCleanupODEAllDataForThread();
-
-
-/**
- * @brief Close ODE after it is not needed any more.
- *
- * The function is required to be called when program does not need ODE features any more.
- * The call to @c dCloseODE releases all the resources allocated for library
- * including all the thread local data that might be allocated for all the threads
- * that were using ODE.
- *
- * @c dCloseODE is a paired function for @c dInitODE2 and must only be called
- * after successful library initialization.
- *
- * @note Important!
- * Make sure that all the threads that were using ODE have already terminated 
- * before calling @c dCloseODE. In particular it is not allowed to call
- * @c dCleanupODEAllDataForThread after @c dCloseODE.
- *
- * @see dInitODE2
- * @see dCleanupODEAllDataForThread
- * @ingroup init
- */
-ODE_API void dCloseODE(void);
-
-
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-
-#endif // _ODE_ODEINIT_H_
diff --git a/misc/builddeps/linux32/ode/include/ode/odemath.h b/misc/builddeps/linux32/ode/include/ode/odemath.h
deleted file mode 100644 (file)
index 2e689db..0000000
+++ /dev/null
@@ -1,473 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_ODEMATH_H_
-#define _ODE_ODEMATH_H_
-
-#include <ode/common.h>
-
-/*
- * macro to access elements i,j in an NxM matrix A, independent of the
- * matrix storage convention.
- */
-#define dACCESS33(A,i,j) ((A)[(i)*4+(j)])
-
-/*
- * Macro to test for valid floating point values
- */
-#define dVALIDVEC3(v) (!(dIsNan(v[0]) || dIsNan(v[1]) || dIsNan(v[2])))
-#define dVALIDVEC4(v) (!(dIsNan(v[0]) || dIsNan(v[1]) || dIsNan(v[2]) || dIsNan(v[3])))
-#define dVALIDMAT3(m) (!(dIsNan(m[0]) || dIsNan(m[1]) || dIsNan(m[2]) || dIsNan(m[3]) || dIsNan(m[4]) || dIsNan(m[5]) || dIsNan(m[6]) || dIsNan(m[7]) || dIsNan(m[8]) || dIsNan(m[9]) || dIsNan(m[10]) || dIsNan(m[11])))
-#define dVALIDMAT4(m) (!(dIsNan(m[0]) || dIsNan(m[1]) || dIsNan(m[2]) || dIsNan(m[3]) || dIsNan(m[4]) || dIsNan(m[5]) || dIsNan(m[6]) || dIsNan(m[7]) || dIsNan(m[8]) || dIsNan(m[9]) || dIsNan(m[10]) || dIsNan(m[11]) || dIsNan(m[12]) || dIsNan(m[13]) || dIsNan(m[14]) || dIsNan(m[15]) ))
-
-
-
-// Some vector math
-PURE_INLINE void dAddVectors3(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[0] + b[0];
-  res_1 = a[1] + b[1];
-  res_2 = a[2] + b[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dSubtractVectors3(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[0] - b[0];
-  res_1 = a[1] - b[1];
-  res_2 = a[2] - b[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dAddScaledVectors3(dReal *res, const dReal *a, const dReal *b, dReal a_scale, dReal b_scale)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a_scale * a[0] + b_scale * b[0];
-  res_1 = a_scale * a[1] + b_scale * b[1];
-  res_2 = a_scale * a[2] + b_scale * b[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dScaleVector3(dReal *res, dReal nScale)
-{
-  res[0] *= nScale ;
-  res[1] *= nScale ;
-  res[2] *= nScale ;
-}
-
-PURE_INLINE void dNegateVector3(dReal *res)
-{
-  res[0] = -res[0];
-  res[1] = -res[1];
-  res[2] = -res[2];
-}
-
-PURE_INLINE void dCopyVector3(dReal *res, const dReal *a)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[0];
-  res_1 = a[1];
-  res_2 = a[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dCopyScaledVector3(dReal *res, const dReal *a, dReal nScale)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[0] * nScale;
-  res_1 = a[1] * nScale;
-  res_2 = a[2] * nScale;
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dCopyNegatedVector3(dReal *res, const dReal *a)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = -a[0];
-  res_1 = -a[1];
-  res_2 = -a[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dCopyVector4(dReal *res, const dReal *a)
-{
-  dReal res_0, res_1, res_2, res_3;
-  res_0 = a[0];
-  res_1 = a[1];
-  res_2 = a[2];
-  res_3 = a[3];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2; res[3] = res_3;
-}
-
-PURE_INLINE void dCopyMatrix4x4(dReal *res, const dReal *a)
-{
-  dCopyVector4(res + 0, a + 0);
-  dCopyVector4(res + 4, a + 4);
-  dCopyVector4(res + 8, a + 8);
-}
-
-PURE_INLINE void dCopyMatrix4x3(dReal *res, const dReal *a)
-{
-  dCopyVector3(res + 0, a + 0);
-  dCopyVector3(res + 4, a + 4);
-  dCopyVector3(res + 8, a + 8);
-}
-
-PURE_INLINE void dGetMatrixColumn3(dReal *res, const dReal *a, unsigned n)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[n + 0];
-  res_1 = a[n + 4];
-  res_2 = a[n + 8];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE dReal dCalcVectorLength3(const dReal *a)
-{
-  return dSqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);
-}
-
-PURE_INLINE dReal dCalcVectorLengthSquare3(const dReal *a)
-{
-  return (a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);
-}
-
-PURE_INLINE dReal dCalcPointDepth3(const dReal *test_p, const dReal *plane_p, const dReal *plane_n)
-{
-  return (plane_p[0] - test_p[0]) * plane_n[0] + (plane_p[1] - test_p[1]) * plane_n[1] + (plane_p[2] - test_p[2]) * plane_n[2];
-}
-
-
-/*
-* 3-way dot product. _dCalcVectorDot3 means that elements of `a' and `b' are spaced
-* step_a and step_b indexes apart respectively. dCalcVectorDot3() means dDot311.
-*/
-
-PURE_INLINE dReal _dCalcVectorDot3(const dReal *a, const dReal *b, unsigned step_a, unsigned step_b)
-{
-  return a[0] * b[0] + a[step_a] * b[step_b] + a[2 * step_a] * b[2 * step_b];
-}
-
-
-PURE_INLINE dReal dCalcVectorDot3    (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,1,1); }
-PURE_INLINE dReal dCalcVectorDot3_13 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,1,3); }
-PURE_INLINE dReal dCalcVectorDot3_31 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,3,1); }
-PURE_INLINE dReal dCalcVectorDot3_33 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,3,3); }
-PURE_INLINE dReal dCalcVectorDot3_14 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,1,4); }
-PURE_INLINE dReal dCalcVectorDot3_41 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,4,1); }
-PURE_INLINE dReal dCalcVectorDot3_44 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,4,4); }
-
-
-/*
- * cross product, set res = a x b. _dCalcVectorCross3 means that elements of `res', `a'
- * and `b' are spaced step_res, step_a and step_b indexes apart respectively.
- * dCalcVectorCross3() means dCross3111. 
- */
-
-PURE_INLINE void _dCalcVectorCross3(dReal *res, const dReal *a, const dReal *b, unsigned step_res, unsigned step_a, unsigned step_b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[  step_a]*b[2*step_b] - a[2*step_a]*b[  step_b];
-  res_1 = a[2*step_a]*b[       0] - a[       0]*b[2*step_b];
-  res_2 = a[       0]*b[  step_b] - a[  step_a]*b[       0];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[         0] = res_0;
-  res[  step_res] = res_1;
-  res[2*step_res] = res_2;
-}
-
-PURE_INLINE void dCalcVectorCross3    (dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 1, 1, 1); }
-PURE_INLINE void dCalcVectorCross3_114(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 1, 1, 4); }
-PURE_INLINE void dCalcVectorCross3_141(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 1, 4, 1); }
-PURE_INLINE void dCalcVectorCross3_144(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 1, 4, 4); }
-PURE_INLINE void dCalcVectorCross3_411(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 4, 1, 1); }
-PURE_INLINE void dCalcVectorCross3_414(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 4, 1, 4); }
-PURE_INLINE void dCalcVectorCross3_441(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 4, 4, 1); }
-PURE_INLINE void dCalcVectorCross3_444(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 4, 4, 4); }
-
-PURE_INLINE void dAddVectorCross3(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dCalcVectorCross3(tmp, a, b);
-  dAddVectors3(res, res, tmp);
-}
-
-PURE_INLINE void dSubtractVectorCross3(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dCalcVectorCross3(tmp, a, b);
-  dSubtractVectors3(res, res, tmp);
-}
-
-
-/*
- * set a 3x3 submatrix of A to a matrix such that submatrix(A)*b = a x b.
- * A is stored by rows, and has `skip' elements per row. the matrix is
- * assumed to be already zero, so this does not write zero elements!
- * if (plus,minus) is (+,-) then a positive version will be written.
- * if (plus,minus) is (-,+) then a negative version will be written.
- */
-
-PURE_INLINE void dSetCrossMatrixPlus(dReal *res, const dReal *a, unsigned skip)
-{
-  const dReal a_0 = a[0], a_1 = a[1], a_2 = a[2];
-  res[1] = -a_2;
-  res[2] = +a_1;
-  res[skip+0] = +a_2;
-  res[skip+2] = -a_0;
-  res[2*skip+0] = -a_1;
-  res[2*skip+1] = +a_0;
-}
-
-PURE_INLINE void dSetCrossMatrixMinus(dReal *res, const dReal *a, unsigned skip)
-{
-  const dReal a_0 = a[0], a_1 = a[1], a_2 = a[2];
-  res[1] = +a_2;
-  res[2] = -a_1;
-  res[skip+0] = -a_2;
-  res[skip+2] = +a_0;
-  res[2*skip+0] = +a_1;
-  res[2*skip+1] = -a_0;
-}
-
-
-/*
- * compute the distance between two 3D-vectors
- */
-
-PURE_INLINE dReal dCalcPointsDistance3(const dReal *a, const dReal *b)
-{
-  dReal res;
-  dReal tmp[3];
-  dSubtractVectors3(tmp, a, b);
-  res = dCalcVectorLength3(tmp);
-  return res;
-}
-
-/*
- * special case matrix multiplication, with operator selection
- */
-
-PURE_INLINE void dMultiplyHelper0_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = dCalcVectorDot3(a, b);
-  res_1 = dCalcVectorDot3(a + 4, b);
-  res_2 = dCalcVectorDot3(a + 8, b);
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dMultiplyHelper1_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = dCalcVectorDot3_41(a, b);
-  res_1 = dCalcVectorDot3_41(a + 1, b);
-  res_2 = dCalcVectorDot3_41(a + 2, b);
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dMultiplyHelper0_133(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper1_331(res, b, a);
-}
-
-PURE_INLINE void dMultiplyHelper1_133(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = dCalcVectorDot3_44(a, b);
-  res_1 = dCalcVectorDot3_44(a + 1, b);
-  res_2 = dCalcVectorDot3_44(a + 2, b);
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-/* 
-Note: NEVER call any of these functions/macros with the same variable for A and C, 
-it is not equivalent to A*=B.
-*/
-
-PURE_INLINE void dMultiply0_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper0_331(res, a, b);
-}
-
-PURE_INLINE void dMultiply1_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper1_331(res, a, b);
-}
-
-PURE_INLINE void dMultiply0_133(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper0_133(res, a, b);
-}
-
-PURE_INLINE void dMultiply0_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper0_133(res + 0, a + 0, b);
-  dMultiplyHelper0_133(res + 4, a + 4, b);
-  dMultiplyHelper0_133(res + 8, a + 8, b);
-}
-
-PURE_INLINE void dMultiply1_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper1_133(res + 0, b, a + 0);
-  dMultiplyHelper1_133(res + 4, b, a + 1);
-  dMultiplyHelper1_133(res + 8, b, a + 2);
-}
-
-PURE_INLINE void dMultiply2_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper0_331(res + 0, b, a + 0);
-  dMultiplyHelper0_331(res + 4, b, a + 4);
-  dMultiplyHelper0_331(res + 8, b, a + 8);
-}
-
-PURE_INLINE void dMultiplyAdd0_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper0_331(tmp, a, b);
-  dAddVectors3(res, res, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd1_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper1_331(tmp, a, b);
-  dAddVectors3(res, res, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd0_133(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper0_133(tmp, a, b);
-  dAddVectors3(res, res, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd0_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper0_133(tmp, a + 0, b);
-  dAddVectors3(res+ 0, res + 0, tmp);
-  dMultiplyHelper0_133(tmp, a + 4, b);
-  dAddVectors3(res + 4, res + 4, tmp);
-  dMultiplyHelper0_133(tmp, a + 8, b);
-  dAddVectors3(res + 8, res + 8, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd1_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper1_133(tmp, b, a + 0);
-  dAddVectors3(res + 0, res + 0, tmp);
-  dMultiplyHelper1_133(tmp, b, a + 1);
-  dAddVectors3(res + 4, res + 4, tmp);
-  dMultiplyHelper1_133(tmp, b, a + 2);
-  dAddVectors3(res + 8, res + 8, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd2_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper0_331(tmp, b, a + 0);
-  dAddVectors3(res + 0, res + 0, tmp);
-  dMultiplyHelper0_331(tmp, b, a + 4);
-  dAddVectors3(res + 4, res + 4, tmp);
-  dMultiplyHelper0_331(tmp, b, a + 8);
-  dAddVectors3(res + 8, res + 8, tmp);
-}
-
-
-// Include legacy macros here
-#include <ode/odemath_legacy.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * normalize 3x1 and 4x1 vectors (i.e. scale them to unit length)
- */
-
-// For DLL export
-ODE_API int  dSafeNormalize3 (dVector3 a);
-ODE_API int  dSafeNormalize4 (dVector4 a);
-ODE_API void dNormalize3 (dVector3 a); // Potentially asserts on zero vec
-ODE_API void dNormalize4 (dVector4 a); // Potentially asserts on zero vec
-
-#if defined(__ODE__)
-
-int  _dSafeNormalize3 (dVector3 a);
-int  _dSafeNormalize4 (dVector4 a);
-
-PURE_INLINE void _dNormalize3(dVector3 a)
-{
-  int bNormalizationResult = _dSafeNormalize3(a);
-  dIVERIFY(bNormalizationResult);
-}
-
-PURE_INLINE void _dNormalize4(dVector4 a)
-{
-  int bNormalizationResult = _dSafeNormalize4(a);
-  dIVERIFY(bNormalizationResult);
-}
-
-// For internal use
-#define dSafeNormalize3(a) _dSafeNormalize3(a)
-#define dSafeNormalize4(a) _dSafeNormalize4(a)
-#define dNormalize3(a) _dNormalize3(a)
-#define dNormalize4(a) _dNormalize4(a)
-
-#endif // defined(__ODE__)
-
-/*
- * given a unit length "normal" vector n, generate vectors p and q vectors
- * that are an orthonormal basis for the plane space perpendicular to n.
- * i.e. this makes p,q such that n,p,q are all perpendicular to each other.
- * q will equal n x p. if n is not unit length then p will be unit length but
- * q wont be.
- */
-
-ODE_API void dPlaneSpace (const dVector3 n, dVector3 p, dVector3 q);
-/* Makes sure the matrix is a proper rotation */
-ODE_API void dOrthogonalizeR(dMatrix3 m);
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/odemath_legacy.h b/misc/builddeps/linux32/ode/include/ode/odemath_legacy.h
deleted file mode 100644 (file)
index b742638..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_ODEMATH_LEGACY_H_
-#define _ODE_ODEMATH_LEGACY_H_
-
-
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-/*
-*      These macros are not used any more inside of ODE
-*  They are kept for backward compatibility with external code that
-*  might still be using them.
-*/
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-
-/*
-* General purpose vector operations with other vectors or constants.
-*/
-
-#define dOP(a,op,b,c) do { \
-  (a)[0] = ((b)[0]) op ((c)[0]); \
-  (a)[1] = ((b)[1]) op ((c)[1]); \
-  (a)[2] = ((b)[2]) op ((c)[2]); \
-} while (0)
-#define dOPC(a,op,b,c) do { \
-  (a)[0] = ((b)[0]) op (c); \
-  (a)[1] = ((b)[1]) op (c); \
-  (a)[2] = ((b)[2]) op (c); \
-} while (0)
-#define dOPE(a,op,b) do {\
-  (a)[0] op ((b)[0]); \
-  (a)[1] op ((b)[1]); \
-  (a)[2] op ((b)[2]); \
-} while (0)
-#define dOPEC(a,op,c) do { \
-  (a)[0] op (c); \
-  (a)[1] op (c); \
-  (a)[2] op (c); \
-} while (0)
-
-/// Define an equation with operators
-/// For example this function can be used to replace
-/// <PRE>
-/// for (int i=0; i<3; ++i)
-///   a[i] += b[i] + c[i];
-/// </PRE>
-#define dOPE2(a,op1,b,op2,c) do { \
-  (a)[0] op1 ((b)[0]) op2 ((c)[0]); \
-  (a)[1] op1 ((b)[1]) op2 ((c)[1]); \
-  (a)[2] op1 ((b)[2]) op2 ((c)[2]); \
-} while (0)
-
-
-#define dLENGTHSQUARED(a) dCalcVectorLengthSquare3(a)
-#define dLENGTH(a) dCalcVectorLength3(a)
-#define dDISTANCE(a, b) dCalcPointsDistance3(a, b)
-
-
-#define dDOT(a, b) dCalcVectorDot3(a, b)
-#define dDOT13(a, b) dCalcVectorDot3_13(a, b)
-#define dDOT31(a, b) dCalcVectorDot3_31(a, b)
-#define dDOT33(a, b) dCalcVectorDot3_33(a, b)
-#define dDOT14(a, b) dCalcVectorDot3_14(a, b)
-#define dDOT41(a, b) dCalcVectorDot3_41(a, b)
-#define dDOT44(a, b) dCalcVectorDot3_44(a, b)
-
-
-/*
-* cross product, set a = b x c. dCROSSpqr means that elements of `a', `b'
-* and `c' are spaced p, q and r indexes apart respectively.
-* dCROSS() means dCROSS111. `op' is normally `=', but you can set it to
-* +=, -= etc to get other effects.
-*/
-
-#define dCROSS(a,op,b,c) \
-  do { \
-  (a)[0] op ((b)[1]*(c)[2] - (b)[2]*(c)[1]); \
-  (a)[1] op ((b)[2]*(c)[0] - (b)[0]*(c)[2]); \
-  (a)[2] op ((b)[0]*(c)[1] - (b)[1]*(c)[0]); \
-  } while(0)
-#define dCROSSpqr(a,op,b,c,p,q,r) \
-  do { \
-  (a)[  0] op ((b)[  q]*(c)[2*r] - (b)[2*q]*(c)[  r]); \
-  (a)[  p] op ((b)[2*q]*(c)[  0] - (b)[  0]*(c)[2*r]); \
-  (a)[2*p] op ((b)[  0]*(c)[  r] - (b)[  q]*(c)[  0]); \
-  } while(0)
-#define dCROSS114(a,op,b,c) dCROSSpqr(a,op,b,c,1,1,4)
-#define dCROSS141(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,1)
-#define dCROSS144(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,4)
-#define dCROSS411(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,1)
-#define dCROSS414(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,4)
-#define dCROSS441(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,1)
-#define dCROSS444(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,4)
-
-
-/*
-* set a 3x3 submatrix of A to a matrix such that submatrix(A)*b = a x b.
-* A is stored by rows, and has `skip' elements per row. the matrix is
-* assumed to be already zero, so this does not write zero elements!
-* if (plus,minus) is (+,-) then a positive version will be written.
-* if (plus,minus) is (-,+) then a negative version will be written.
-*/
-
-#define dCROSSMAT(A,a,skip,plus,minus) \
-  do { \
-  (A)[1] = minus (a)[2]; \
-  (A)[2] = plus (a)[1]; \
-  (A)[(skip)+0] = plus (a)[2]; \
-  (A)[(skip)+2] = minus (a)[0]; \
-  (A)[2*(skip)+0] = minus (a)[1]; \
-  (A)[2*(skip)+1] = plus (a)[0]; \
-  } while(0)
-
-
-
-
-/* 
-Note: NEVER call any of these functions/macros with the same variable for A and C, 
-it is not equivalent to A*=B.
-*/
-
-#define dMULTIPLY0_331(A, B, C) dMultiply0_331(A, B, C)
-#define dMULTIPLY1_331(A, B, C) dMultiply1_331(A, B, C)
-#define dMULTIPLY0_133(A, B, C) dMultiply0_133(A, B, C)
-#define dMULTIPLY0_333(A, B, C) dMultiply0_333(A, B, C)
-#define dMULTIPLY1_333(A, B, C) dMultiply1_333(A, B, C)
-#define dMULTIPLY2_333(A, B, C) dMultiply2_333(A, B, C)
-
-#define dMULTIPLYADD0_331(A, B, C) dMultiplyAdd0_331(A, B, C)
-#define dMULTIPLYADD1_331(A, B, C) dMultiplyAdd1_331(A, B, C)
-#define dMULTIPLYADD0_133(A, B, C) dMultiplyAdd0_133(A, B, C)
-#define dMULTIPLYADD0_333(A, B, C) dMultiplyAdd0_333(A, B, C)
-#define dMULTIPLYADD1_333(A, B, C) dMultiplyAdd1_333(A, B, C)
-#define dMULTIPLYADD2_333(A, B, C) dMultiplyAdd2_333(A, B, C)
-
-
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-/*
-*      These macros are not used any more inside of ODE
-*  They are kept for backward compatibility with external code that
-*  might still be using them.
-*/
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-
-
-#endif // #ifndef _ODE_ODEMATH_LEGACY_H_
diff --git a/misc/builddeps/linux32/ode/include/ode/rotation.h b/misc/builddeps/linux32/ode/include/ode/rotation.h
deleted file mode 100644 (file)
index a72be27..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_ROTATION_H_
-#define _ODE_ROTATION_H_
-
-#include <ode/common.h>
-#include <ode/compatibility.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-ODE_API void dRSetIdentity (dMatrix3 R);
-
-ODE_API void dRFromAxisAndAngle (dMatrix3 R, dReal ax, dReal ay, dReal az,
-                        dReal angle);
-
-ODE_API void dRFromEulerAngles (dMatrix3 R, dReal phi, dReal theta, dReal psi);
-
-ODE_API void dRFrom2Axes (dMatrix3 R, dReal ax, dReal ay, dReal az,
-                 dReal bx, dReal by, dReal bz);
-
-ODE_API void dRFromZAxis (dMatrix3 R, dReal ax, dReal ay, dReal az);
-
-ODE_API void dQSetIdentity (dQuaternion q);
-
-ODE_API void dQFromAxisAndAngle (dQuaternion q, dReal ax, dReal ay, dReal az,
-                        dReal angle);
-
-/* Quaternion multiplication, analogous to the matrix multiplication routines. */
-/* qa = rotate by qc, then qb */
-ODE_API void dQMultiply0 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
-/* qa = rotate by qc, then by inverse of qb */
-ODE_API void dQMultiply1 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
-/* qa = rotate by inverse of qc, then by qb */
-ODE_API void dQMultiply2 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
-/* qa = rotate by inverse of qc, then by inverse of qb */
-ODE_API void dQMultiply3 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
-
-ODE_API void dRfromQ (dMatrix3 R, const dQuaternion q);
-ODE_API void dQfromR (dQuaternion q, const dMatrix3 R);
-ODE_API void dDQfromW (dReal dq[4], const dVector3 w, const dQuaternion q);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/include/ode/timer.h b/misc/builddeps/linux32/ode/include/ode/timer.h
deleted file mode 100644 (file)
index fe1483f..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_TIMER_H_
-#define _ODE_TIMER_H_
-
-#include <ode/odeconfig.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* stop watch objects */
-
-typedef struct dStopwatch {
-  double time;                 /* total clock count */
-  unsigned long cc[2];         /* clock count since last `start' */
-} dStopwatch;
-
-ODE_API void dStopwatchReset (dStopwatch *);
-ODE_API void dStopwatchStart (dStopwatch *);
-ODE_API void dStopwatchStop  (dStopwatch *);
-ODE_API double dStopwatchTime (dStopwatch *);  /* returns total time in secs */
-
-
-/* code timers */
-
-ODE_API void dTimerStart (const char *description);    /* pass a static string here */
-ODE_API void dTimerNow (const char *description);      /* pass a static string here */
-ODE_API void dTimerEnd(void);
-
-/* print out a timer report. if `average' is nonzero, print out the average
- * time for each slot (this is only meaningful if the same start-now-end
- * calls are being made repeatedly.
- */
-ODE_API void dTimerReport (FILE *fout, int average);
-
-
-/* resolution */
-
-/* returns the timer ticks per second implied by the timing hardware or API.
- * the actual timer resolution may not be this great.
- */
-ODE_API double dTimerTicksPerSecond(void);
-
-/* returns an estimate of the actual timer resolution, in seconds. this may
- * be greater than 1/ticks_per_second.
- */
-ODE_API double dTimerResolution(void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux32/ode/lib/libode.a b/misc/builddeps/linux32/ode/lib/libode.a
deleted file mode 100644 (file)
index 71abadd..0000000
Binary files a/misc/builddeps/linux32/ode/lib/libode.a and /dev/null differ
diff --git a/misc/builddeps/linux32/ode/lib/libode.la b/misc/builddeps/linux32/ode/lib/libode.la
deleted file mode 100755 (executable)
index 7cabb97..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libode.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.4
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libode.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -L/tmp/ode-0.12.deps/lib/ -lpthread'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libode.
-current=3
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/misc/builddeps/linux32/ode/lib/pkgconfig/ode.pc b/misc/builddeps/linux32/ode/lib/pkgconfig/ode.pc
deleted file mode 100644 (file)
index 7be9daa..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=/usr/local
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: ode
-Description: Open Dynamics Engine
-Version: 0.12
-Libs: -L${libdir} -lode
-Libs.private: -lstdc++ -lm
-Cflags: -I${includedir} -DdDOUBLE
diff --git a/misc/builddeps/linux64/d0_blind_id/bin/blind_id b/misc/builddeps/linux64/d0_blind_id/bin/blind_id
deleted file mode 100755 (executable)
index 775836c..0000000
Binary files a/misc/builddeps/linux64/d0_blind_id/bin/blind_id and /dev/null differ
diff --git a/misc/builddeps/linux64/d0_blind_id/include/d0_blind_id/d0.h b/misc/builddeps/linux64/d0_blind_id/include/d0_blind_id/d0.h
deleted file mode 100644 (file)
index 4c8708e..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * FILE:       d0.h
- * AUTHOR:     Rudolf Polzer - divVerent@xonotic.org
- * 
- * Copyright (c) 2010, Rudolf Polzer
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the names of contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Format:commit %H$
- * $Id: 6c55afeb50f24bd316079ae46582e65f8020b19b $
- */
-
-#ifndef __D0_H__
-#define __D0_H__
-
-#include <unistd.h> // size_t
-
-#define D0_EXPORT __attribute__((__visibility__("default")))
-#define D0_USED __attribute__((used))
-#define D0_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
-#define D0_BOOL int
-
-typedef void *(d0_malloc_t)(size_t len);
-typedef void (d0_free_t)(void *p);
-typedef void *(d0_createmutex_t)(void);
-typedef void (d0_destroymutex_t)(void *);
-typedef int (d0_lockmutex_t)(void *); // zero on success
-typedef int (d0_unlockmutex_t)(void *); // zero on success
-
-extern d0_malloc_t *d0_malloc;
-extern d0_free_t *d0_free;
-extern d0_createmutex_t *d0_createmutex;
-extern d0_destroymutex_t *d0_destroymutex;
-extern d0_lockmutex_t *d0_lockmutex;
-extern d0_unlockmutex_t *d0_unlockmutex;
-
-void d0_setmallocfuncs(d0_malloc_t *m, d0_free_t *f);
-void d0_setmutexfuncs(d0_createmutex_t *c, d0_destroymutex_t *d, d0_lockmutex_t *l, d0_unlockmutex_t *u);
-void d0_initfuncs(void); // initializes them, this needs to be only called internally once
-
-extern const char *d0_bsd_license_notice;
-
-#endif
diff --git a/misc/builddeps/linux64/d0_blind_id/include/d0_blind_id/d0_blind_id.h b/misc/builddeps/linux64/d0_blind_id/include/d0_blind_id/d0_blind_id.h
deleted file mode 100644 (file)
index f546b67..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * FILE:       d0_blind_id.h
- * AUTHOR:     Rudolf Polzer - divVerent@xonotic.org
- * 
- * Copyright (c) 2010, Rudolf Polzer
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the names of contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Format:commit %H$
- * $Id: bf838f43093aceadcd2d20071684f1e7148a4332 $
- */
-
-#ifndef __D0_BLIND_ID_H__
-#define __D0_BLIND_ID_H__
-
-#include "d0.h"
-
-typedef struct d0_blind_id_s d0_blind_id_t;
-typedef D0_BOOL (*d0_fastreject_function) (const d0_blind_id_t *ctx, void *pass);
-
-D0_EXPORT D0_WARN_UNUSED_RESULT d0_blind_id_t *d0_blind_id_new(void);
-D0_EXPORT void d0_blind_id_free(d0_blind_id_t *a);
-D0_EXPORT void d0_blind_id_clear(d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_copy(d0_blind_id_t *ctx, const d0_blind_id_t *src);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_key(d0_blind_id_t *ctx, int k);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_key_fastreject(d0_blind_id_t *ctx, int k, d0_fastreject_function reject, void *pass);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_private_key(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_public_key(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_private_key(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_public_key(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_fingerprint64_public_key(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_id_modulus(d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_private_id_modulus(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_private_id_modulus(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_id_start(d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_generate_private_id_request(d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_answer_private_id_request(const d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_finish_private_id_request(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_private_id_request_camouflage(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_private_id_request_camouflage(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_private_id(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_read_public_id(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_private_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_write_public_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_start(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL send_modulus, const char *message, size_t msglen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_challenge(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL recv_modulus, const char *inbuf, size_t inbuflen, char *outbuf, size_t *outbuflen, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_response(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_verify(d0_blind_id_t *ctx, const char *inbuf, size_t inbuflen, char *msg, size_t *msglen, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_authenticate_with_private_id_generate_missing_signature(d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sign_with_private_id_sign(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL send_modulus, const char *message, size_t msglen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sign_with_private_id_sign_detached(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL send_modulus, const char *message, size_t msglen, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sign_with_private_id_verify(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL recv_modulus, const char *inbuf, size_t inbuflen, char *msg, size_t *msglen, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sign_with_private_id_verify_detached(d0_blind_id_t *ctx, D0_BOOL is_first, D0_BOOL recv_modulus, const char *inbuf, size_t inbuflen, const char *msg, size_t msglen, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_fingerprint64_public_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_verify_public_id(const d0_blind_id_t *ctx, D0_BOOL *status);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_verify_private_id(const d0_blind_id_t *ctx);
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_sessionkey_public_id(const d0_blind_id_t *ctx, char *outbuf, size_t *outbuflen); // can only be done after successful key exchange, this performs a modpow; key length is limited by SHA_DIGESTSIZE for now; also ONLY valid after successful d0_blind_id_authenticate_with_private_id_verify/d0_blind_id_fingerprint64_public_id
-
-D0_EXPORT D0_WARN_UNUSED_RESULT D0_BOOL d0_blind_id_INITIALIZE(void);
-D0_EXPORT void d0_blind_id_SHUTDOWN(void);
-
-D0_EXPORT void d0_blind_id_util_sha256(char *out, const char *in, size_t n);
-
-// for exporting
-D0_EXPORT void d0_blind_id_setmallocfuncs(d0_malloc_t *m, d0_free_t *f);
-D0_EXPORT void d0_blind_id_setmutexfuncs(d0_createmutex_t *c, d0_destroymutex_t *d, d0_lockmutex_t *l, d0_unlockmutex_t *u);
-
-#endif
diff --git a/misc/builddeps/linux64/d0_blind_id/include/d0_blind_id/d0_rijndael.h b/misc/builddeps/linux64/d0_blind_id/include/d0_blind_id/d0_rijndael.h
deleted file mode 100644 (file)
index e1c8f71..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// from http://www.efgh.com/software/rijndael.htm (public domain)
-
-#ifndef H__RIJNDAEL
-#define H__RIJNDAEL
-
-#include "d0.h"
-
-D0_EXPORT int d0_rijndael_setup_encrypt(unsigned long *rk, const unsigned char *key,
-  int keybits);
-D0_EXPORT int d0_rijndael_setup_decrypt(unsigned long *rk, const unsigned char *key,
-  int keybits);
-D0_EXPORT void d0_rijndael_encrypt(const unsigned long *rk, int nrounds,
-  const unsigned char plaintext[16], unsigned char ciphertext[16]);
-D0_EXPORT void d0_rijndael_decrypt(const unsigned long *rk, int nrounds,
-  const unsigned char ciphertext[16], unsigned char plaintext[16]);
-
-#define D0_RIJNDAEL_KEYLENGTH(keybits) ((keybits)/8)
-#define D0_RIJNDAEL_RKLENGTH(keybits)  ((keybits)/8+28)
-#define D0_RIJNDAEL_NROUNDS(keybits)   ((keybits)/32+6)
-
-#endif
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.a b/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.a
deleted file mode 100644 (file)
index 4f0feda..0000000
Binary files a/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.a and /dev/null differ
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.la b/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.la
deleted file mode 100755 (executable)
index 34767d3..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libd0_blind_id.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libd0_blind_id.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -L/tmp/d0_blind_id.deps/lib/ /tmp/g/lib/libgmp.la'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libd0_blind_id.
-current=0
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so b/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so
deleted file mode 120000 (symlink)
index 6adf4aa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libd0_blind_id.so.0.0.0
\ No newline at end of file
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so.0 b/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so.0
deleted file mode 120000 (symlink)
index 6adf4aa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libd0_blind_id.so.0.0.0
\ No newline at end of file
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so.0.0.0 b/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so.0.0.0
deleted file mode 100755 (executable)
index 11fb746..0000000
Binary files a/misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.so.0.0.0 and /dev/null differ
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.a b/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.a
deleted file mode 100644 (file)
index 4e59302..0000000
Binary files a/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.a and /dev/null differ
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.la b/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.la
deleted file mode 100755 (executable)
index f0bab29..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libd0_rijndael.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libd0_rijndael.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -L/tmp/d0_blind_id.deps/lib/ /tmp/g/lib/libgmp.la'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libd0_rijndael.
-current=0
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so b/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so
deleted file mode 120000 (symlink)
index 01dce01..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libd0_rijndael.so.0.0.0
\ No newline at end of file
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so.0 b/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so.0
deleted file mode 120000 (symlink)
index 01dce01..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libd0_rijndael.so.0.0.0
\ No newline at end of file
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so.0.0.0 b/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so.0.0.0
deleted file mode 100755 (executable)
index 16e0840..0000000
Binary files a/misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.so.0.0.0 and /dev/null differ
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/pkgconfig/d0_blind_id.pc b/misc/builddeps/linux64/d0_blind_id/lib/pkgconfig/d0_blind_id.pc
deleted file mode 100644 (file)
index 8c9bb32..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=/usr/local
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: Blind-ID
-Description: Library for user identification using RSA blind signatures
-Requires: 
-Version: 0.5
-Libs: -L${libdir} -ld0_blind_id
-Cflags: -I${includedir}/d0_blind_id
diff --git a/misc/builddeps/linux64/d0_blind_id/lib/pkgconfig/d0_rijndael.pc b/misc/builddeps/linux64/d0_blind_id/lib/pkgconfig/d0_rijndael.pc
deleted file mode 100644 (file)
index 1040d65..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=/usr/local
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: Rijndael
-Description: Library for Rijndael encryption
-Requires: 
-Version: 0.5
-Libs: -L${libdir} -ld0_rijndael
-Cflags: -I${includedir}/d0_blind_id
diff --git a/misc/builddeps/linux64/gmp/include/gmp.h b/misc/builddeps/linux64/gmp/include/gmp.h
deleted file mode 100644 (file)
index e8cc9b3..0000000
+++ /dev/null
@@ -1,2280 +0,0 @@
-/* Definitions for GNU multiple precision functions.   -*- mode: c -*-
-
-Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-The GNU MP Library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
-
-#ifndef __GMP_H__
-
-#if defined (__cplusplus)
-#include <iosfwd>   /* for std::istream, std::ostream, std::string */
-#include <cstdio>
-#endif
-
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-#define __GMP_HAVE_HOST_CPU_FAMILY_power   0
-#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0
-#define GMP_LIMB_BITS                      64
-#define GMP_NAIL_BITS                      0
-#endif
-#define GMP_NUMB_BITS     (GMP_LIMB_BITS - GMP_NAIL_BITS)
-#define GMP_NUMB_MASK     ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)
-#define GMP_NUMB_MAX      GMP_NUMB_MASK
-#define GMP_NAIL_MASK     (~ GMP_NUMB_MASK)
-
-
-/* The following (everything under ifndef __GNU_MP__) must be identical in
-   gmp.h and mp.h to allow both to be included in an application or during
-   the library build.  */
-#ifndef __GNU_MP__
-#define __GNU_MP__ 5
-
-#define __need_size_t  /* tell gcc stddef.h we only want size_t */
-#if defined (__cplusplus)
-#include <cstddef>     /* for size_t */
-#else
-#include <stddef.h>    /* for size_t */
-#endif
-#undef __need_size_t
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-/* #undef _LONG_LONG_LIMB */
-#define __GMP_LIBGMP_DLL  0
-#endif
-
-
-/* __STDC__ - some ANSI compilers define this only to 0, hence the use of
-       "defined" and not "__STDC__-0".  In particular Sun workshop C 5.0
-       sets __STDC__ to 0, but requires "##" for token pasting.
-
-   _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but
-       don't always define __STDC__.
-
-   __DECC - current versions of DEC C (5.9 for instance) for alpha are ANSI,
-       but don't define __STDC__ in their default mode.  Don't know if old
-       versions might have been K&R, but let's not worry about that unless
-       someone is still using one.
-
-   _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4
-       mode, but doesn't define __STDC__.
-
-   _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za
-       option is given (in which case it's 1).
-
-   _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that
-      all w32 compilers are ansi.
-
-   Note: This same set of tests is used by gen-psqr.c and
-   demos/expr/expr-impl.h, so if anything needs adding, then be sure to
-   update those too.  */
-
-#if  defined (__STDC__)                                 \
-  || defined (__cplusplus)                              \
-  || defined (_AIX)                                     \
-  || defined (__DECC)                                   \
-  || (defined (__mips) && defined (_SYSTYPE_SVR4))      \
-  || defined (_MSC_VER)                                 \
-  || defined (_WIN32)
-#define __GMP_HAVE_CONST        1
-#define __GMP_HAVE_PROTOTYPES   1
-#define __GMP_HAVE_TOKEN_PASTE  1
-#else
-#define __GMP_HAVE_CONST        0
-#define __GMP_HAVE_PROTOTYPES   0
-#define __GMP_HAVE_TOKEN_PASTE  0
-#endif
-
-
-#if __GMP_HAVE_CONST
-#define __gmp_const   const
-#define __gmp_signed  signed
-#else
-#define __gmp_const
-#define __gmp_signed
-#endif
-
-
-/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in
-   all other circumstances.
-
-   When compiling objects for libgmp, __GMP_DECLSPEC is an export directive,
-   or when compiling for an application it's an import directive.  The two
-   cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles
-   (and not defined from an application).
-
-   __GMP_DECLSPEC_XX is similarly used for libgmpxx.  __GMP_WITHIN_GMPXX
-   indicates when building libgmpxx, and in that case libgmpxx functions are
-   exports, but libgmp functions which might get called are imports.
-
-   libmp.la uses __GMP_DECLSPEC, just as if it were libgmp.la.  libgmp and
-   libmp don't call each other, so there's no conflict or confusion.
-
-   Libtool DLL_EXPORT define is not used.
-
-   There's no attempt to support GMP built both static and DLL.  Doing so
-   would mean applications would have to tell us which of the two is going
-   to be used when linking, and that seems very tedious and error prone if
-   using GMP by hand, and equally tedious from a package since autoconf and
-   automake don't give much help.
-
-   __GMP_DECLSPEC is required on all documented global functions and
-   variables, the various internals in gmp-impl.h etc can be left unadorned.
-   But internals used by the test programs or speed measuring programs
-   should have __GMP_DECLSPEC, and certainly constants or variables must
-   have it or the wrong address will be resolved.
-
-   In gcc __declspec can go at either the start or end of a prototype.
-
-   In Microsoft C __declspec must go at the start, or after the type like
-   void __declspec(...) *foo()".  There's no __dllexport or anything to
-   guard against someone foolish #defining dllexport.  _export used to be
-   available, but no longer.
-
-   In Borland C _export still exists, but needs to go after the type, like
-   "void _export foo();".  Would have to change the __GMP_DECLSPEC syntax to
-   make use of that.  Probably more trouble than it's worth.  */
-
-#if defined (__GNUC__)
-#define __GMP_DECLSPEC_EXPORT  __declspec(__dllexport__)
-#define __GMP_DECLSPEC_IMPORT  __declspec(__dllimport__)
-#endif
-#if defined (_MSC_VER) || defined (__BORLANDC__)
-#define __GMP_DECLSPEC_EXPORT  __declspec(dllexport)
-#define __GMP_DECLSPEC_IMPORT  __declspec(dllimport)
-#endif
-#ifdef __WATCOMC__
-#define __GMP_DECLSPEC_EXPORT  __export
-#define __GMP_DECLSPEC_IMPORT  __import
-#endif
-#ifdef __IBMC__
-#define __GMP_DECLSPEC_EXPORT  _Export
-#define __GMP_DECLSPEC_IMPORT  _Import
-#endif
-
-#if __GMP_LIBGMP_DLL
-#if __GMP_WITHIN_GMP
-/* compiling to go into a DLL libgmp */
-#define __GMP_DECLSPEC  __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into an application which will link to a DLL libgmp */
-#define __GMP_DECLSPEC  __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC
-#endif
-
-
-#ifdef __GMP_SHORT_LIMB
-typedef unsigned int           mp_limb_t;
-typedef int                    mp_limb_signed_t;
-#else
-#ifdef _LONG_LONG_LIMB
-typedef unsigned long long int mp_limb_t;
-typedef long long int          mp_limb_signed_t;
-#else
-typedef unsigned long int      mp_limb_t;
-typedef long int               mp_limb_signed_t;
-#endif
-#endif
-typedef unsigned long int      mp_bitcnt_t;
-
-/* For reference, note that the name __mpz_struct gets into C++ mangled
-   function names, which means although the "__" suggests an internal, we
-   must leave this name for binary compatibility.  */
-typedef struct
-{
-  int _mp_alloc;               /* Number of *limbs* allocated and pointed
-                                  to by the _mp_d field.  */
-  int _mp_size;                        /* abs(_mp_size) is the number of limbs the
-                                  last field points to.  If _mp_size is
-                                  negative this is a negative number.  */
-  mp_limb_t *_mp_d;            /* Pointer to the limbs.  */
-} __mpz_struct;
-
-#endif /* __GNU_MP__ */
-
-
-typedef __mpz_struct MP_INT;    /* gmp 1 source compatibility */
-typedef __mpz_struct mpz_t[1];
-
-typedef mp_limb_t *            mp_ptr;
-typedef __gmp_const mp_limb_t *        mp_srcptr;
-#if defined (_CRAY) && ! defined (_CRAYMPP)
-/* plain `int' is much faster (48 bits) */
-#define __GMP_MP_SIZE_T_INT     1
-typedef int                    mp_size_t;
-typedef int                    mp_exp_t;
-#else
-#define __GMP_MP_SIZE_T_INT     0
-typedef long int               mp_size_t;
-typedef long int               mp_exp_t;
-#endif
-
-typedef struct
-{
-  __mpz_struct _mp_num;
-  __mpz_struct _mp_den;
-} __mpq_struct;
-
-typedef __mpq_struct MP_RAT;    /* gmp 1 source compatibility */
-typedef __mpq_struct mpq_t[1];
-
-typedef struct
-{
-  int _mp_prec;                        /* Max precision, in number of `mp_limb_t's.
-                                  Set by mpf_init and modified by
-                                  mpf_set_prec.  The area pointed to by the
-                                  _mp_d field contains `prec' + 1 limbs.  */
-  int _mp_size;                        /* abs(_mp_size) is the number of limbs the
-                                  last field points to.  If _mp_size is
-                                  negative this is a negative number.  */
-  mp_exp_t _mp_exp;            /* Exponent, in the base of `mp_limb_t'.  */
-  mp_limb_t *_mp_d;            /* Pointer to the limbs.  */
-} __mpf_struct;
-
-/* typedef __mpf_struct MP_FLOAT; */
-typedef __mpf_struct mpf_t[1];
-
-/* Available random number generation algorithms.  */
-typedef enum
-{
-  GMP_RAND_ALG_DEFAULT = 0,
-  GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential.  */
-} gmp_randalg_t;
-
-/* Random state struct.  */
-typedef struct
-{
-  mpz_t _mp_seed;        /* _mp_d member points to state of the generator. */
-  gmp_randalg_t _mp_alg;  /* Currently unused. */
-  union {
-    void *_mp_lc;         /* Pointer to function pointers structure.  */
-  } _mp_algdata;
-} __gmp_randstate_struct;
-typedef __gmp_randstate_struct gmp_randstate_t[1];
-
-/* Types for function declarations in gmp files.  */
-/* ??? Should not pollute user name space with these ??? */
-typedef __gmp_const __mpz_struct *mpz_srcptr;
-typedef __mpz_struct *mpz_ptr;
-typedef __gmp_const __mpf_struct *mpf_srcptr;
-typedef __mpf_struct *mpf_ptr;
-typedef __gmp_const __mpq_struct *mpq_srcptr;
-typedef __mpq_struct *mpq_ptr;
-
-
-/* This is not wanted in mp.h, so put it outside the __GNU_MP__ common
-   section. */
-#if __GMP_LIBGMP_DLL
-#if __GMP_WITHIN_GMPXX
-/* compiling to go into a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into a application which will link to a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC_XX
-#endif
-
-
-#if __GMP_HAVE_PROTOTYPES
-#define __GMP_PROTO(x) x
-#else
-#define __GMP_PROTO(x) ()
-#endif
-
-#ifndef __MPN
-#if __GMP_HAVE_TOKEN_PASTE
-#define __MPN(x) __gmpn_##x
-#else
-#define __MPN(x) __gmpn_/**/x
-#endif
-#endif
-
-/* For reference, "defined(EOF)" cannot be used here.  In g++ 2.95.4,
-   <iostream> defines EOF but not FILE.  */
-#if defined (FILE)                                              \
-  || defined (H_STDIO)                                          \
-  || defined (_H_STDIO)               /* AIX */                 \
-  || defined (_STDIO_H)               /* glibc, Sun, SCO */     \
-  || defined (_STDIO_H_)              /* BSD, OSF */            \
-  || defined (__STDIO_H)              /* Borland */             \
-  || defined (__STDIO_H__)            /* IRIX */                \
-  || defined (_STDIO_INCLUDED)        /* HPUX */                \
-  || defined (__dj_include_stdio_h_)  /* DJGPP */               \
-  || defined (_FILE_DEFINED)          /* Microsoft */           \
-  || defined (__STDIO__)              /* Apple MPW MrC */       \
-  || defined (_MSL_STDIO_H)           /* Metrowerks */          \
-  || defined (_STDIO_H_INCLUDED)      /* QNX4 */               \
-  || defined (_ISO_STDIO_ISO_H)       /* Sun C++ */
-#define _GMP_H_HAVE_FILE 1
-#endif
-
-/* In ISO C, if a prototype involving "struct obstack *" is given without
-   that structure defined, then the struct is scoped down to just the
-   prototype, causing a conflict if it's subsequently defined for real.  So
-   only give prototypes if we've got obstack.h.  */
-#if defined (_OBSTACK_H)   /* glibc <obstack.h> */
-#define _GMP_H_HAVE_OBSTACK 1
-#endif
-
-/* The prototypes for gmp_vprintf etc are provided only if va_list is
-   available, via an application having included <stdarg.h> or <varargs.h>.
-   Usually va_list is a typedef so can't be tested directly, but C99
-   specifies that va_start is a macro (and it was normally a macro on past
-   systems too), so look for that.
-
-   <stdio.h> will define some sort of va_list for vprintf and vfprintf, but
-   let's not bother trying to use that since it's not standard and since
-   application uses for gmp_vprintf etc will almost certainly require the
-   whole <stdarg.h> or <varargs.h> anyway.  */
-
-#ifdef va_start
-#define _GMP_H_HAVE_VA_LIST 1
-#endif
-
-/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
-#if defined (__GNUC__) && defined (__GNUC_MINOR__)
-#define __GMP_GNUC_PREREQ(maj, min) \
-  ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-#else
-#define __GMP_GNUC_PREREQ(maj, min)  0
-#endif
-
-/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes".  Basically
-   it means a function does nothing but examine its arguments and memory
-   (global or via arguments) to generate a return value, but changes nothing
-   and has no side-effects.  __GMP_NO_ATTRIBUTE_CONST_PURE lets
-   tune/common.c etc turn this off when trying to write timing loops.  */
-#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE)
-#define __GMP_ATTRIBUTE_PURE   __attribute__ ((__pure__))
-#else
-#define __GMP_ATTRIBUTE_PURE
-#endif
-
-
-/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean
-   to "g++ -Wold-style-cast".
-
-   Casts in "extern inline" code within an extern "C" block don't induce
-   these warnings, so __GMP_CAST only needs to be used on documented
-   macros.  */
-
-#ifdef __cplusplus
-#define __GMP_CAST(type, expr)  (static_cast<type> (expr))
-#else
-#define __GMP_CAST(type, expr)  ((type) (expr))
-#endif
-
-
-/* An empty "throw ()" means the function doesn't throw any C++ exceptions,
-   this can save some stack frame info in applications.
-
-   Currently it's given only on functions which never divide-by-zero etc,
-   don't allocate memory, and are expected to never need to allocate memory.
-   This leaves open the possibility of a C++ throw from a future GMP
-   exceptions scheme.
-
-   mpz_set_ui etc are omitted to leave open the lazy allocation scheme
-   described in doc/tasks.html.  mpz_get_d etc are omitted to leave open
-   exceptions for float overflows.
-
-   Note that __GMP_NOTHROW must be given on any inlines the same as on their
-   prototypes (for g++ at least, where they're used together).  Note also
-   that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like
-   __GMP_ATTRIBUTE_PURE.  */
-
-#if defined (__cplusplus)
-#define __GMP_NOTHROW  throw ()
-#else
-#define __GMP_NOTHROW
-#endif
-
-
-/* PORTME: What other compilers have a useful "extern inline"?  "static
-   inline" would be an acceptable substitute if the compiler (or linker)
-   discards unused statics.  */
-
- /* gcc has __inline__ in all modes, including strict ansi.  Give a prototype
-    for an inline too, so as to correctly specify "dllimport" on windows, in
-    case the function is called rather than inlined.
-    GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
-    inline semantics, unless -fgnu89-inline is used.  */
-#ifdef __GNUC__
-#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2)
-#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
-#else
-#define __GMP_EXTERN_INLINE      extern __inline__
-#endif
-#define __GMP_INLINE_PROTOTYPES  1
-#endif
-
-/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1
-   strict ANSI mode.  Inlining is done even when not optimizing (ie. -O0
-   mode, which is the default), but an unnecessary local copy of foo is
-   emitted unless -O is used.  "extern __inline" is accepted, but the
-   "extern" appears to be ignored, ie. it becomes a plain global function
-   but which is inlined within its file.  Don't know if all old versions of
-   DEC C supported __inline, but as a start let's do the right thing for
-   current versions.  */
-#ifdef __DECC
-#define __GMP_EXTERN_INLINE  static __inline
-#endif
-
-/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict
-   ANSI mode (__STDC__ is 1 in that mode).  Inlining only actually takes
-   place under -O.  Without -O "foo" seems to be emitted whether it's used
-   or not, which is wasteful.  "extern inline foo()" isn't useful, the
-   "extern" is apparently ignored, so foo is inlined if possible but also
-   emitted as a global, which causes multiple definition errors when
-   building a shared libgmp.  */
-#ifdef __SCO_VERSION__
-#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  static inline
-#endif
-#endif
-
-/* Microsoft's C compiler accepts __inline */
-#ifdef _MSC_VER
-#define __GMP_EXTERN_INLINE  __inline
-#endif
-
-/* Recent enough Sun C compilers want "inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  inline
-#endif
-
-/* Somewhat older Sun C compilers want "static inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  static inline
-#endif
-
-
-/* C++ always has "inline" and since it's a normal feature the linker should
-   discard duplicate non-inlined copies, or if it doesn't then that's a
-   problem for everyone, not just GMP.  */
-#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  inline
-#endif
-
-/* Don't do any inlining within a configure run, since if the compiler ends
-   up emitting copies of the code into the object file it can end up
-   demanding the various support routines (like mpn_popcount) for linking,
-   making the "alloca" test and perhaps others fail.  And on hppa ia64 a
-   pre-release gcc 3.2 was seen not respecting the "extern" in "extern
-   __inline__", triggering this problem too.  */
-#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE
-#undef __GMP_EXTERN_INLINE
-#endif
-
-/* By default, don't give a prototype when there's going to be an inline
-   version.  Note in particular that Cray C++ objects to the combination of
-   prototype and inline.  */
-#ifdef __GMP_EXTERN_INLINE
-#ifndef __GMP_INLINE_PROTOTYPES
-#define __GMP_INLINE_PROTOTYPES  0
-#endif
-#else
-#define __GMP_INLINE_PROTOTYPES  1
-#endif
-
-
-#define __GMP_ABS(x)   ((x) >= 0 ? (x) : -(x))
-#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i))
-
-/* __GMP_USHRT_MAX is not "~ (unsigned short) 0" because short is promoted
-   to int by "~".  */
-#define __GMP_UINT_MAX   (~ (unsigned) 0)
-#define __GMP_ULONG_MAX  (~ (unsigned long) 0)
-#define __GMP_USHRT_MAX  ((unsigned short) ~0)
-
-
-/* __builtin_expect is in gcc 3.0, and not in 2.95. */
-#if __GMP_GNUC_PREREQ (3,0)
-#define __GMP_LIKELY(cond)    __builtin_expect ((cond) != 0, 1)
-#define __GMP_UNLIKELY(cond)  __builtin_expect ((cond) != 0, 0)
-#else
-#define __GMP_LIKELY(cond)    (cond)
-#define __GMP_UNLIKELY(cond)  (cond)
-#endif
-
-#ifdef _CRAY
-#define __GMP_CRAY_Pragma(str)  _Pragma (str)
-#else
-#define __GMP_CRAY_Pragma(str)
-#endif
-
-
-/* Allow direct user access to numerator and denominator of a mpq_t object.  */
-#define mpq_numref(Q) (&((Q)->_mp_num))
-#define mpq_denref(Q) (&((Q)->_mp_den))
-
-
-#if defined (__cplusplus)
-extern "C" {
-using std::FILE;
-#endif
-
-#define mp_set_memory_functions __gmp_set_memory_functions
-__GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t),
-                                     void *(*) (void *, size_t, size_t),
-                                     void (*) (void *, size_t))) __GMP_NOTHROW;
-
-#define mp_get_memory_functions __gmp_get_memory_functions
-__GMP_DECLSPEC void mp_get_memory_functions __GMP_PROTO ((void *(**) (size_t),
-                                      void *(**) (void *, size_t, size_t),
-                                      void (**) (void *, size_t))) __GMP_NOTHROW;
-
-#define mp_bits_per_limb __gmp_bits_per_limb
-__GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb;
-
-#define gmp_errno __gmp_errno
-__GMP_DECLSPEC extern int gmp_errno;
-
-#define gmp_version __gmp_version
-__GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version;
-
-
-/**************** Random number routines.  ****************/
-
-/* obsolete */
-#define gmp_randinit __gmp_randinit
-__GMP_DECLSPEC void gmp_randinit __GMP_PROTO ((gmp_randstate_t, gmp_randalg_t, ...));
-
-#define gmp_randinit_default __gmp_randinit_default
-__GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp
-__GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t,
-                                                      mpz_srcptr, unsigned long int,
-                                                      mp_bitcnt_t));
-
-#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size
-__GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, mp_bitcnt_t));
-
-#define gmp_randinit_mt __gmp_randinit_mt
-__GMP_DECLSPEC void gmp_randinit_mt __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_randinit_set __gmp_randinit_set
-__GMP_DECLSPEC void gmp_randinit_set __GMP_PROTO ((gmp_randstate_t, __gmp_const __gmp_randstate_struct *));
-
-#define gmp_randseed __gmp_randseed
-__GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr));
-
-#define gmp_randseed_ui __gmp_randseed_ui
-__GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, unsigned long int));
-
-#define gmp_randclear __gmp_randclear
-__GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_urandomb_ui __gmp_urandomb_ui
-__GMP_DECLSPEC unsigned long gmp_urandomb_ui __GMP_PROTO ((gmp_randstate_t, unsigned long));
-
-#define gmp_urandomm_ui __gmp_urandomm_ui
-__GMP_DECLSPEC unsigned long gmp_urandomm_ui __GMP_PROTO ((gmp_randstate_t, unsigned long));
-
-
-/**************** Formatted output routines.  ****************/
-
-#define gmp_asprintf __gmp_asprintf
-__GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, __gmp_const char *, ...));
-
-#define gmp_fprintf __gmp_fprintf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, __gmp_const char *, ...));
-#endif
-
-#define gmp_obstack_printf __gmp_obstack_printf
-#if defined (_GMP_H_HAVE_OBSTACK)
-__GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, __gmp_const char *, ...));
-#endif
-
-#define gmp_obstack_vprintf __gmp_obstack_vprintf
-#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_printf __gmp_printf
-__GMP_DECLSPEC int gmp_printf __GMP_PROTO ((__gmp_const char *, ...));
-
-#define gmp_snprintf __gmp_snprintf
-__GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, ...));
-
-#define gmp_sprintf __gmp_sprintf
-__GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, __gmp_const char *, ...));
-
-#define gmp_vasprintf __gmp_vasprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vfprintf __gmp_vfprintf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vprintf __gmp_vprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((__gmp_const char *, va_list));
-#endif
-
-#define gmp_vsnprintf __gmp_vsnprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vsprintf __gmp_vsprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, __gmp_const char *, va_list));
-#endif
-
-
-/**************** Formatted input routines.  ****************/
-
-#define gmp_fscanf __gmp_fscanf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, __gmp_const char *, ...));
-#endif
-
-#define gmp_scanf __gmp_scanf
-__GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((__gmp_const char *, ...));
-
-#define gmp_sscanf __gmp_sscanf
-__GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, ...));
-
-#define gmp_vfscanf __gmp_vfscanf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vscanf __gmp_vscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((__gmp_const char *, va_list));
-#endif
-
-#define gmp_vsscanf __gmp_vsscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, va_list));
-#endif
-
-
-/**************** Integer (i.e. Z) routines.  ****************/
-
-#define _mpz_realloc __gmpz_realloc
-#define mpz_realloc __gmpz_realloc
-__GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_abs __gmpz_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)
-__GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-#endif
-
-#define mpz_add __gmpz_add
-__GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_add_ui __gmpz_add_ui
-__GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_addmul __gmpz_addmul
-__GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_addmul_ui __gmpz_addmul_ui
-__GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_and __gmpz_and
-__GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_array_init __gmpz_array_init
-__GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t));
-
-#define mpz_bin_ui __gmpz_bin_ui
-__GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_bin_uiui __gmpz_bin_uiui
-__GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int));
-
-#define mpz_cdiv_q __gmpz_cdiv_q
-__GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp
-__GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_qr __gmpz_cdiv_qr
-__GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_r __gmpz_cdiv_r
-__GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp
-__GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_ui __gmpz_cdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_clear __gmpz_clear
-__GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr));
-
-#define mpz_clears __gmpz_clears
-__GMP_DECLSPEC void mpz_clears __GMP_PROTO ((mpz_ptr, ...));
-
-#define mpz_clrbit __gmpz_clrbit
-__GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_cmp __gmpz_cmp
-__GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmp_d __gmpz_cmp_d
-__GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_si __gmpz_cmp_si
-__GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_ui __gmpz_cmp_ui
-__GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs __gmpz_cmpabs
-__GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_d __gmpz_cmpabs_d
-__GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_ui __gmpz_cmpabs_ui
-__GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_com __gmpz_com
-__GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_combit __gmpz_combit
-__GMP_DECLSPEC void mpz_combit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_congruent_p __gmpz_congruent_p
-__GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p
-__GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_ui_p __gmpz_congruent_ui_p
-__GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divexact __gmpz_divexact
-__GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_divexact_ui __gmpz_divexact_ui
-__GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_divisible_p __gmpz_divisible_p
-__GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_ui_p __gmpz_divisible_ui_p
-__GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p
-__GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_dump __gmpz_dump
-__GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr));
-
-#define mpz_export __gmpz_export
-__GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr));
-
-#define mpz_fac_ui __gmpz_fac_ui
-__GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_fdiv_q __gmpz_fdiv_q
-__GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
-__GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_qr __gmpz_fdiv_qr
-__GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_r __gmpz_fdiv_r
-__GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
-__GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_ui __gmpz_fdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fib_ui __gmpz_fib_ui
-__GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_fib2_ui __gmpz_fib2_ui
-__GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int));
-
-#define mpz_fits_sint_p __gmpz_fits_sint_p
-__GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_slong_p __gmpz_fits_slong_p
-__GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_sshort_p __gmpz_fits_sshort_p
-__GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_uint_p __gmpz_fits_uint_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ulong_p __gmpz_fits_ulong_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ushort_p __gmpz_fits_ushort_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_gcd __gmpz_gcd
-__GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_gcd_ui __gmpz_gcd_ui
-__GMP_DECLSPEC unsigned long int mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_gcdext __gmpz_gcdext
-__GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_get_d __gmpz_get_d
-__GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_d_2exp __gmpz_get_d_2exp
-__GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((signed long int *, mpz_srcptr));
-
-#define mpz_get_si __gmpz_get_si
-__GMP_DECLSPEC /* signed */ long int mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_str __gmpz_get_str
-__GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr));
-
-#define mpz_get_ui __gmpz_get_ui
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)
-__GMP_DECLSPEC unsigned long int mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_getlimbn __gmpz_getlimbn
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_hamdist __gmpz_hamdist
-__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_import __gmpz_import
-__GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, __gmp_const void *));
-
-#define mpz_init __gmpz_init
-__GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr));
-
-#define mpz_init2 __gmpz_init2
-__GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_inits __gmpz_inits
-__GMP_DECLSPEC void mpz_inits __GMP_PROTO ((mpz_ptr, ...));
-
-#define mpz_init_set __gmpz_init_set
-__GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_init_set_d __gmpz_init_set_d
-__GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double));
-
-#define mpz_init_set_si __gmpz_init_set_si
-__GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, signed long int));
-
-#define mpz_init_set_str __gmpz_init_set_str
-__GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int));
-
-#define mpz_init_set_ui __gmpz_init_set_ui
-__GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_inp_raw __gmpz_inp_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *));
-#endif
-
-#define mpz_inp_str __gmpz_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int));
-#endif
-
-#define mpz_invert __gmpz_invert
-__GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_ior __gmpz_ior
-__GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_jacobi __gmpz_jacobi
-__GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker mpz_jacobi  /* alias */
-
-#define mpz_kronecker_si __gmpz_kronecker_si
-__GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker_ui __gmpz_kronecker_ui
-__GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_si_kronecker __gmpz_si_kronecker
-__GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_kronecker __gmpz_ui_kronecker
-__GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((unsigned long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_lcm __gmpz_lcm
-__GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_lcm_ui __gmpz_lcm_ui
-__GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_legendre mpz_jacobi  /* alias */
-
-#define mpz_lucnum_ui __gmpz_lucnum_ui
-__GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_lucnum2_ui __gmpz_lucnum2_ui
-__GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int));
-
-#define mpz_millerrabin __gmpz_millerrabin
-__GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_mod __gmpz_mod
-__GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */
-
-#define mpz_mul __gmpz_mul
-__GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_mul_2exp __gmpz_mul_2exp
-__GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_mul_si __gmpz_mul_si
-__GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, long int));
-
-#define mpz_mul_ui __gmpz_mul_ui
-__GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_neg __gmpz_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)
-__GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-#endif
-
-#define mpz_nextprime __gmpz_nextprime
-__GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_out_raw __gmpz_out_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr));
-#endif
-
-#define mpz_out_str __gmpz_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr));
-#endif
-
-#define mpz_perfect_power_p __gmpz_perfect_power_p
-__GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_perfect_square_p __gmpz_perfect_square_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_popcount __gmpz_popcount
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_pow_ui __gmpz_pow_ui
-__GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_powm __gmpz_powm
-__GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_powm_sec __gmpz_powm_sec
-__GMP_DECLSPEC void mpz_powm_sec __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_powm_ui __gmpz_powm_ui
-__GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr));
-
-#define mpz_probab_prime_p __gmpz_probab_prime_p
-__GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_random __gmpz_random
-__GMP_DECLSPEC void mpz_random __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_random2 __gmpz_random2
-__GMP_DECLSPEC void mpz_random2 __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_realloc2 __gmpz_realloc2
-__GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_remove __gmpz_remove
-__GMP_DECLSPEC unsigned long int mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_root __gmpz_root
-__GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_rootrem __gmpz_rootrem
-__GMP_DECLSPEC void mpz_rootrem __GMP_PROTO ((mpz_ptr,mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_rrandomb __gmpz_rrandomb
-__GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
-
-#define mpz_scan0 __gmpz_scan0
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_scan1 __gmpz_scan1
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_set __gmpz_set
-__GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_set_d __gmpz_set_d
-__GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double));
-
-#define mpz_set_f __gmpz_set_f
-__GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr));
-
-#define mpz_set_q __gmpz_set_q
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)
-__GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-#endif
-
-#define mpz_set_si __gmpz_set_si
-__GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, signed long int));
-
-#define mpz_set_str __gmpz_set_str
-__GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int));
-
-#define mpz_set_ui __gmpz_set_ui
-__GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_setbit __gmpz_setbit
-__GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_size __gmpz_size
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)
-__GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_sizeinbase __gmpz_sizeinbase
-__GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_sqrt __gmpz_sqrt
-__GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_sqrtrem __gmpz_sqrtrem
-__GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr));
-
-#define mpz_sub __gmpz_sub
-__GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_sub_ui __gmpz_sub_ui
-__GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_ui_sub __gmpz_ui_sub
-__GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, unsigned long int, mpz_srcptr));
-
-#define mpz_submul __gmpz_submul
-__GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_submul_ui __gmpz_submul_ui
-__GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_swap __gmpz_swap
-__GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW;
-
-#define mpz_tdiv_ui __gmpz_tdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_tdiv_q __gmpz_tdiv_q
-__GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
-__GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tdiv_qr __gmpz_tdiv_qr
-__GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tdiv_r __gmpz_tdiv_r
-__GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
-__GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tstbit __gmpz_tstbit
-__GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_pow_ui __gmpz_ui_pow_ui
-__GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int));
-
-#define mpz_urandomb __gmpz_urandomb
-__GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
-
-#define mpz_urandomm __gmpz_urandomm
-__GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr));
-
-#define mpz_xor __gmpz_xor
-#define mpz_eor __gmpz_xor
-__GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-
-/**************** Rational (i.e. Q) routines.  ****************/
-
-#define mpq_abs __gmpq_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)
-__GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-#endif
-
-#define mpq_add __gmpq_add
-__GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_canonicalize __gmpq_canonicalize
-__GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr));
-
-#define mpq_clear __gmpq_clear
-__GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr));
-
-#define mpq_clears __gmpq_clears
-__GMP_DECLSPEC void mpq_clears __GMP_PROTO ((mpq_ptr, ...));
-
-#define mpq_cmp __gmpq_cmp
-__GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_si __gmpq_cmp_si
-__GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, long, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_ui __gmpq_cmp_ui
-__GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, unsigned long int, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_div __gmpq_div
-__GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_div_2exp __gmpq_div_2exp
-__GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t));
-
-#define mpq_equal __gmpq_equal
-__GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_num __gmpq_get_num
-__GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-
-#define mpq_get_den __gmpq_get_den
-__GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-
-#define mpq_get_d __gmpq_get_d
-__GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_str __gmpq_get_str
-__GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr));
-
-#define mpq_init __gmpq_init
-__GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr));
-
-#define mpq_inits __gmpq_inits
-__GMP_DECLSPEC void mpq_inits __GMP_PROTO ((mpq_ptr, ...));
-
-#define mpq_inp_str __gmpq_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int));
-#endif
-
-#define mpq_inv __gmpq_inv
-__GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-
-#define mpq_mul __gmpq_mul
-__GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_mul_2exp __gmpq_mul_2exp
-__GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t));
-
-#define mpq_neg __gmpq_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)
-__GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-#endif
-
-#define mpq_out_str __gmpq_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr));
-#endif
-
-#define mpq_set __gmpq_set
-__GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-
-#define mpq_set_d __gmpq_set_d
-__GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double));
-
-#define mpq_set_den __gmpq_set_den
-__GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_set_f __gmpq_set_f
-__GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr));
-
-#define mpq_set_num __gmpq_set_num
-__GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_set_si __gmpq_set_si
-__GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, signed long int, unsigned long int));
-
-#define mpq_set_str __gmpq_set_str
-__GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, __gmp_const char *, int));
-
-#define mpq_set_ui __gmpq_set_ui
-__GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, unsigned long int, unsigned long int));
-
-#define mpq_set_z __gmpq_set_z
-__GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_sub __gmpq_sub
-__GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_swap __gmpq_swap
-__GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW;
-
-
-/**************** Float (i.e. F) routines.  ****************/
-
-#define mpf_abs __gmpf_abs
-__GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_add __gmpf_add
-__GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_add_ui __gmpf_add_ui
-__GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-#define mpf_ceil __gmpf_ceil
-__GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_clear __gmpf_clear
-__GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr));
-
-#define mpf_clears __gmpf_clears
-__GMP_DECLSPEC void mpf_clears __GMP_PROTO ((mpf_ptr, ...));
-
-#define mpf_cmp __gmpf_cmp
-__GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_d __gmpf_cmp_d
-__GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_si __gmpf_cmp_si
-__GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_ui __gmpf_cmp_ui
-__GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_div __gmpf_div
-__GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_div_2exp __gmpf_div_2exp
-__GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t));
-
-#define mpf_div_ui __gmpf_div_ui
-__GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_dump __gmpf_dump
-__GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr));
-
-#define mpf_eq __gmpf_eq
-__GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sint_p __gmpf_fits_sint_p
-__GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_slong_p __gmpf_fits_slong_p
-__GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sshort_p __gmpf_fits_sshort_p
-__GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_uint_p __gmpf_fits_uint_p
-__GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ulong_p __gmpf_fits_ulong_p
-__GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ushort_p __gmpf_fits_ushort_p
-__GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_floor __gmpf_floor
-__GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_get_d __gmpf_get_d
-__GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_d_2exp __gmpf_get_d_2exp
-__GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((signed long int *, mpf_srcptr));
-
-#define mpf_get_default_prec __gmpf_get_default_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_prec __gmpf_get_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_si __gmpf_get_si
-__GMP_DECLSPEC long mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_str __gmpf_get_str
-__GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr));
-
-#define mpf_get_ui __gmpf_get_ui
-__GMP_DECLSPEC unsigned long mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_init __gmpf_init
-__GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr));
-
-#define mpf_init2 __gmpf_init2
-__GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, mp_bitcnt_t));
-
-#define mpf_inits __gmpf_inits
-__GMP_DECLSPEC void mpf_inits __GMP_PROTO ((mpf_ptr, ...));
-
-#define mpf_init_set __gmpf_init_set
-__GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_init_set_d __gmpf_init_set_d
-__GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double));
-
-#define mpf_init_set_si __gmpf_init_set_si
-__GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, signed long int));
-
-#define mpf_init_set_str __gmpf_init_set_str
-__GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int));
-
-#define mpf_init_set_ui __gmpf_init_set_ui
-__GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_inp_str __gmpf_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int));
-#endif
-
-#define mpf_integer_p __gmpf_integer_p
-__GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_mul __gmpf_mul
-__GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_mul_2exp __gmpf_mul_2exp
-__GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t));
-
-#define mpf_mul_ui __gmpf_mul_ui
-__GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_neg __gmpf_neg
-__GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_out_str __gmpf_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr));
-#endif
-
-#define mpf_pow_ui __gmpf_pow_ui
-__GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_random2 __gmpf_random2
-__GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t));
-
-#define mpf_reldiff __gmpf_reldiff
-__GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_set __gmpf_set
-__GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_set_d __gmpf_set_d
-__GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double));
-
-#define mpf_set_default_prec __gmpf_set_default_prec
-__GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((mp_bitcnt_t)) __GMP_NOTHROW;
-
-#define mpf_set_prec __gmpf_set_prec
-__GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, mp_bitcnt_t));
-
-#define mpf_set_prec_raw __gmpf_set_prec_raw
-__GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)) __GMP_NOTHROW;
-
-#define mpf_set_q __gmpf_set_q
-__GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr));
-
-#define mpf_set_si __gmpf_set_si
-__GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, signed long int));
-
-#define mpf_set_str __gmpf_set_str
-__GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int));
-
-#define mpf_set_ui __gmpf_set_ui
-__GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_set_z __gmpf_set_z
-__GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr));
-
-#define mpf_size __gmpf_size
-__GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_sqrt __gmpf_sqrt
-__GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_sqrt_ui __gmpf_sqrt_ui
-__GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_sub __gmpf_sub
-__GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_sub_ui __gmpf_sub_ui
-__GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_swap __gmpf_swap
-__GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW;
-
-#define mpf_trunc __gmpf_trunc
-__GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_ui_div __gmpf_ui_div
-__GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-
-#define mpf_ui_sub __gmpf_ui_sub
-__GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-
-#define mpf_urandomb __gmpf_urandomb
-__GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, mp_bitcnt_t));
-
-
-/************ Low level positive-integer (i.e. N) routines.  ************/
-
-/* This is ugly, but we need to make user calls reach the prefixed function. */
-
-#define mpn_add __MPN(add)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)
-__GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-#endif
-
-#define mpn_add_1 __MPN(add_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)
-__GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW;
-#endif
-
-#define mpn_add_n __MPN(add_n)
-__GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_addmul_1 __MPN(addmul_1)
-__GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_cmp __MPN(cmp)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)
-__GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpn_divexact_by3(dst,src,size) \
-  mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))
-
-#define mpn_divexact_by3c __MPN(divexact_by3c)
-__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_divmod_1(qp,np,nsize,dlimb) \
-  mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)
-
-#define mpn_divrem __MPN(divrem)
-__GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_divrem_1 __MPN(divrem_1)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_divrem_2 __MPN(divrem_2)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr));
-
-#define mpn_gcd __MPN(gcd)
-__GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-
-#define mpn_gcd_1 __MPN(gcd_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_gcdext_1 __MPN(gcdext_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 __GMP_PROTO ((mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t));
-
-#define mpn_gcdext __MPN(gcdext)
-__GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-
-#define mpn_get_str __MPN(get_str)
-__GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t));
-
-#define mpn_hamdist __MPN(hamdist)
-__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_lshift __MPN(lshift)
-__GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-
-#define mpn_mod_1 __MPN(mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_mul __MPN(mul)
-__GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_mul_1 __MPN(mul_1)
-__GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_mul_n __MPN(mul_n)
-__GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_sqr __MPN(sqr)
-__GMP_DECLSPEC void mpn_sqr __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-
-#define mpn_neg __MPN(neg)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)
-__GMP_DECLSPEC mp_limb_t mpn_neg __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#endif
-
-#define mpn_com __MPN(com)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_com)
-__GMP_DECLSPEC void mpn_com __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#endif
-
-#define mpn_perfect_square_p __MPN(perfect_square_p)
-__GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_perfect_power_p __MPN(perfect_power_p)
-__GMP_DECLSPEC int mpn_perfect_power_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_popcount __MPN(popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_pow_1 __MPN(pow_1)
-__GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr));
-
-/* undocumented now, but retained here for upward compatibility */
-#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_random __MPN(random)
-__GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t));
-
-#define mpn_random2 __MPN(random2)
-__GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t));
-
-#define mpn_rshift __MPN(rshift)
-__GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-
-#define mpn_scan0 __MPN(scan0)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_scan1 __MPN(scan1)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_set_str __MPN(set_str)
-__GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int));
-
-#define mpn_sqrtrem __MPN(sqrtrem)
-__GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t));
-
-#define mpn_sub __MPN(sub)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)
-__GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-#endif
-
-#define mpn_sub_1 __MPN(sub_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)
-__GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW;
-#endif
-
-#define mpn_sub_n __MPN(sub_n)
-__GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_submul_1 __MPN(submul_1)
-__GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_tdiv_qr __MPN(tdiv_qr)
-__GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_and_n __MPN(and_n)
-__GMP_DECLSPEC void mpn_and_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_andn_n __MPN(andn_n)
-__GMP_DECLSPEC void mpn_andn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nand_n __MPN(nand_n)
-__GMP_DECLSPEC void mpn_nand_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_ior_n __MPN(ior_n)
-__GMP_DECLSPEC void mpn_ior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_iorn_n __MPN(iorn_n)
-__GMP_DECLSPEC void mpn_iorn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nior_n __MPN(nior_n)
-__GMP_DECLSPEC void mpn_nior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xor_n __MPN(xor_n)
-__GMP_DECLSPEC void mpn_xor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xnor_n __MPN(xnor_n)
-__GMP_DECLSPEC void mpn_xnor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_copyi __MPN(copyi)
-__GMP_DECLSPEC void mpn_copyi __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_copyd __MPN(copyd)
-__GMP_DECLSPEC void mpn_copyd __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_zero __MPN(zero)
-__GMP_DECLSPEC void mpn_zero __GMP_PROTO ((mp_ptr, mp_size_t));
-
-/**************** mpz inlines ****************/
-
-/* The following are provided as inlines where possible, but always exist as
-   library functions too, for binary compatibility.
-
-   Within gmp itself this inlining generally isn't relied on, since it
-   doesn't get done for all compilers, whereas if something is worth
-   inlining then it's worth arranging always.
-
-   There are two styles of inlining here.  When the same bit of code is
-   wanted for the inline as for the library version, then __GMP_FORCE_foo
-   arranges for that code to be emitted and the __GMP_EXTERN_INLINE
-   directive suppressed, eg. mpz_fits_uint_p.  When a different bit of code
-   is wanted for the inline than for the library version, then
-   __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs.  */
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs)
-__GMP_EXTERN_INLINE void
-mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpz_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size);
-}
-#endif
-
-#if GMP_NAIL_BITS == 0
-#define __GMPZ_FITS_UTYPE_P(z,maxval)                                  \
-  mp_size_t  __gmp_n = z->_mp_size;                                    \
-  mp_ptr  __gmp_p = z->_mp_d;                                          \
-  return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval));
-#else
-#define __GMPZ_FITS_UTYPE_P(z,maxval)                                  \
-  mp_size_t  __gmp_n = z->_mp_size;                                    \
-  mp_ptr  __gmp_p = z->_mp_d;                                          \
-  return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)       \
-         || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS)));
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p)
-#if ! defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui)
-#if ! defined (__GMP_FORCE_mpz_get_ui)
-__GMP_EXTERN_INLINE
-#endif
-unsigned long
-mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  mp_ptr __gmp_p = __gmp_z->_mp_d;
-  mp_size_t __gmp_n = __gmp_z->_mp_size;
-  mp_limb_t __gmp_l = __gmp_p[0];
-  /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings
-     about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland
-     C++ 6.0 warnings about condition always true for something like
-     "__GMP_ULONG_MAX < GMP_NUMB_MASK".  */
-#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB)
-  /* limb==long and no nails, or limb==longlong, one limb is enough */
-  return (__gmp_n != 0 ? __gmp_l : 0);
-#else
-  /* limb==long and nails, need two limbs when available */
-  __gmp_n = __GMP_ABS (__gmp_n);
-  if (__gmp_n <= 1)
-    return (__gmp_n != 0 ? __gmp_l : 0);
-  else
-    return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS);
-#endif
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn)
-#if ! defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_result = 0;
-  if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size)))
-    __gmp_result = __gmp_z->_mp_d[__gmp_n];
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg)
-__GMP_EXTERN_INLINE void
-mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpz_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_size = - __gmp_w->_mp_size;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p)
-#if ! defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_perfect_square_p (mpz_srcptr __gmp_a)
-{
-  mp_size_t __gmp_asize;
-  int       __gmp_result;
-
-  __gmp_asize = __gmp_a->_mp_size;
-  __gmp_result = (__gmp_asize >= 0);  /* zero is a square, negatives are not */
-  if (__GMP_LIKELY (__gmp_asize > 0))
-    __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount)
-#if ! defined (__GMP_FORCE_mpz_popcount)
-__GMP_EXTERN_INLINE
-#endif
-mp_bitcnt_t
-mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW
-{
-  mp_size_t      __gmp_usize;
-  mp_bitcnt_t    __gmp_result;
-
-  __gmp_usize = __gmp_u->_mp_size;
-  __gmp_result = (__gmp_usize < 0 ? __GMP_ULONG_MAX : 0);
-  if (__GMP_LIKELY (__gmp_usize > 0))
-    __gmp_result =  mpn_popcount (__gmp_u->_mp_d, __gmp_usize);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q)
-#if ! defined (__GMP_FORCE_mpz_set_q)
-__GMP_EXTERN_INLINE
-#endif
-void
-mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u));
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size)
-#if ! defined (__GMP_FORCE_mpz_size)
-__GMP_EXTERN_INLINE
-#endif
-size_t
-mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  return __GMP_ABS (__gmp_z->_mp_size);
-}
-#endif
-
-
-/**************** mpq inlines ****************/
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs)
-__GMP_EXTERN_INLINE void
-mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpq_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg)
-__GMP_EXTERN_INLINE void
-mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpq_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
-}
-#endif
-
-
-/**************** mpn inlines ****************/
-
-/* The comments with __GMPN_ADD_1 below apply here too.
-
-   The test for FUNCTION returning 0 should predict well.  If it's assumed
-   {yp,ysize} will usually have a random number of bits then the high limb
-   won't be full and a carry out will occur a good deal less than 50% of the
-   time.
-
-   ysize==0 isn't a documented feature, but is used internally in a few
-   places.
-
-   Producing cout last stops it using up a register during the main part of
-   the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))"
-   doesn't seem able to move the true and false legs of the conditional up
-   to the two places cout is generated.  */
-
-#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST)     \
-  do {                                                                  \
-    mp_size_t  __gmp_i;                                                 \
-    mp_limb_t  __gmp_x;                                                 \
-                                                                        \
-    /* ASSERT ((ysize) >= 0); */                                        \
-    /* ASSERT ((xsize) >= (ysize)); */                                  \
-    /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */      \
-    /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */      \
-                                                                        \
-    __gmp_i = (ysize);                                                  \
-    if (__gmp_i != 0)                                                   \
-      {                                                                 \
-        if (FUNCTION (wp, xp, yp, __gmp_i))                             \
-          {                                                             \
-            do                                                          \
-              {                                                         \
-                if (__gmp_i >= (xsize))                                 \
-                  {                                                     \
-                    (cout) = 1;                                         \
-                    goto __gmp_done;                                    \
-                  }                                                     \
-                __gmp_x = (xp)[__gmp_i];                                \
-              }                                                         \
-            while (TEST);                                               \
-          }                                                             \
-      }                                                                 \
-    if ((wp) != (xp))                                                   \
-      __GMPN_COPY_REST (wp, xp, xsize, __gmp_i);                        \
-    (cout) = 0;                                                         \
-  __gmp_done:                                                           \
-    ;                                                                   \
-  } while (0)
-
-#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize)              \
-  __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n,       \
-               (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0))
-#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize)              \
-  __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n,       \
-               (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0))
-
-
-/* The use of __gmp_i indexing is designed to ensure a compile time src==dst
-   remains nice and clear to the compiler, so that __GMPN_COPY_REST can
-   disappear, and the load/add/store gets a chance to become a
-   read-modify-write on CISC CPUs.
-
-   Alternatives:
-
-   Using a pair of pointers instead of indexing would be possible, but gcc
-   isn't able to recognise compile-time src==dst in that case, even when the
-   pointers are incremented more or less together.  Other compilers would
-   very likely have similar difficulty.
-
-   gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or
-   similar to detect a compile-time src==dst.  This works nicely on gcc
-   2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems
-   to be always false, for a pointer p.  But the current code form seems
-   good enough for src==dst anyway.
-
-   gcc on x86 as usual doesn't give particularly good flags handling for the
-   carry/borrow detection.  It's tempting to want some multi instruction asm
-   blocks to help it, and this was tried, but in truth there's only a few
-   instructions to save and any gain is all too easily lost by register
-   juggling setting up for the asm.  */
-
-#if GMP_NAIL_BITS == 0
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)            \
-  do {                                                         \
-    mp_size_t  __gmp_i;                                                \
-    mp_limb_t  __gmp_x, __gmp_r;                                \
-                                                               \
-    /* ASSERT ((n) >= 1); */                                   \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */       \
-                                                               \
-    __gmp_x = (src)[0];                                                \
-    __gmp_r = __gmp_x OP (v);                                   \
-    (dst)[0] = __gmp_r;                                                \
-    if (CB (__gmp_r, __gmp_x, (v)))                             \
-      {                                                                \
-       (cout) = 1;                                             \
-       for (__gmp_i = 1; __gmp_i < (n);)                       \
-         {                                                     \
-           __gmp_x = (src)[__gmp_i];                           \
-           __gmp_r = __gmp_x OP 1;                             \
-           (dst)[__gmp_i] = __gmp_r;                           \
-           ++__gmp_i;                                          \
-           if (!CB (__gmp_r, __gmp_x, 1))                      \
-             {                                                 \
-               if ((src) != (dst))                             \
-                 __GMPN_COPY_REST (dst, src, n, __gmp_i);      \
-               (cout) = 0;                                     \
-               break;                                          \
-             }                                                 \
-         }                                                     \
-      }                                                                \
-    else                                                       \
-      {                                                                \
-       if ((src) != (dst))                                     \
-         __GMPN_COPY_REST (dst, src, n, 1);                    \
-       (cout) = 0;                                             \
-      }                                                                \
-  } while (0)
-#endif
-
-#if GMP_NAIL_BITS >= 1
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)            \
-  do {                                                         \
-    mp_size_t  __gmp_i;                                                \
-    mp_limb_t  __gmp_x, __gmp_r;                               \
-                                                               \
-    /* ASSERT ((n) >= 1); */                                   \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */       \
-                                                               \
-    __gmp_x = (src)[0];                                                \
-    __gmp_r = __gmp_x OP (v);                                  \
-    (dst)[0] = __gmp_r & GMP_NUMB_MASK;                                \
-    if (__gmp_r >> GMP_NUMB_BITS != 0)                         \
-      {                                                                \
-       (cout) = 1;                                             \
-       for (__gmp_i = 1; __gmp_i < (n);)                       \
-         {                                                     \
-           __gmp_x = (src)[__gmp_i];                           \
-           __gmp_r = __gmp_x OP 1;                             \
-           (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK;           \
-           ++__gmp_i;                                          \
-           if (__gmp_r >> GMP_NUMB_BITS == 0)                  \
-             {                                                 \
-               if ((src) != (dst))                             \
-                 __GMPN_COPY_REST (dst, src, n, __gmp_i);      \
-               (cout) = 0;                                     \
-               break;                                          \
-             }                                                 \
-         }                                                     \
-      }                                                                \
-    else                                                       \
-      {                                                                \
-       if ((src) != (dst))                                     \
-         __GMPN_COPY_REST (dst, src, n, 1);                    \
-       (cout) = 0;                                             \
-      }                                                                \
-  } while (0)
-#endif
-
-#define __GMPN_ADDCB(r,x,y) ((r) < (y))
-#define __GMPN_SUBCB(r,x,y) ((x) < (y))
-
-#define __GMPN_ADD_1(cout, dst, src, n, v)          \
-  __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB)
-#define __GMPN_SUB_1(cout, dst, src, n, v)          \
-  __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB)
-
-
-/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or
-   negative.  size==0 is allowed.  On random data usually only one limb will
-   need to be examined to get a result, so it's worth having it inline.  */
-#define __GMPN_CMP(result, xp, yp, size)                                \
-  do {                                                                  \
-    mp_size_t  __gmp_i;                                                 \
-    mp_limb_t  __gmp_x, __gmp_y;                                        \
-                                                                        \
-    /* ASSERT ((size) >= 0); */                                         \
-                                                                        \
-    (result) = 0;                                                       \
-    __gmp_i = (size);                                                   \
-    while (--__gmp_i >= 0)                                              \
-      {                                                                 \
-        __gmp_x = (xp)[__gmp_i];                                        \
-        __gmp_y = (yp)[__gmp_i];                                        \
-        if (__gmp_x != __gmp_y)                                         \
-          {                                                             \
-            /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */   \
-            (result) = (__gmp_x > __gmp_y ? 1 : -1);                    \
-            break;                                                      \
-          }                                                             \
-      }                                                                 \
-  } while (0)
-
-
-#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start)                 \
-  do {                                                          \
-    /* ASSERT ((start) >= 0); */                                \
-    /* ASSERT ((start) <= (size)); */                           \
-    __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \
-  } while (0)
-#endif
-
-/* Copy {src,size} to {dst,size}, starting at "start".  This is designed to
-   keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1,
-   __GMPN_ADD, etc.  */
-#if ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start)                 \
-  do {                                                          \
-    mp_size_t __gmp_j;                                          \
-    /* ASSERT ((size) >= 0); */                                 \
-    /* ASSERT ((start) >= 0); */                                \
-    /* ASSERT ((start) <= (size)); */                           \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */     \
-    __GMP_CRAY_Pragma ("_CRI ivdep");                           \
-    for (__gmp_j = (start); __gmp_j < (size); __gmp_j++)        \
-      (dst)[__gmp_j] = (src)[__gmp_j];                          \
-  } while (0)
-#endif
-
-/* Enhancement: Use some of the smarter code from gmp-impl.h.  Maybe use
-   mpn_copyi if there's a native version, and if we don't mind demanding
-   binary compatibility for it (on targets which use it).  */
-
-#if ! defined (__GMPN_COPY)
-#define __GMPN_COPY(dst, src, size)   __GMPN_COPY_REST (dst, src, size, 0)
-#endif
-
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add)
-#if ! defined (__GMP_FORCE_mpn_add)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1)
-#if ! defined (__GMP_FORCE_mpn_add_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp)
-#if ! defined (__GMP_FORCE_mpn_cmp)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW
-{
-  int __gmp_result;
-  __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub)
-#if ! defined (__GMP_FORCE_mpn_sub)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1)
-#if ! defined (__GMP_FORCE_mpn_sub_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg)
-#if ! defined (__GMP_FORCE_mpn_neg)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
-{
-  mp_limb_t __gmp_ul, __gmp_cy;
-  __gmp_cy = 0;
-  do {
-      __gmp_ul = *__gmp_up++;
-      *__gmp_rp++ = -__gmp_ul - __gmp_cy;
-      __gmp_cy |= __gmp_ul != 0;
-  } while (--__gmp_n != 0);
-  return __gmp_cy;
-}
-#endif
-
-#if defined (__cplusplus)
-}
-#endif
-
-
-/* Allow faster testing for negative, zero, and positive.  */
-#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)
-#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)
-#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)
-
-/* When using GCC, optimize certain common comparisons.  */
-#if defined (__GNUC__) && __GNUC__ >= 2
-#define mpz_cmp_ui(Z,UI) \
-  (__builtin_constant_p (UI) && (UI) == 0                              \
-   ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))
-#define mpz_cmp_si(Z,SI) \
-  (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z)                        \
-   : __builtin_constant_p (SI) && (SI) > 0                             \
-    ? _mpz_cmp_ui (Z, __GMP_CAST (unsigned long int, SI))              \
-   : _mpz_cmp_si (Z,SI))
-#define mpq_cmp_ui(Q,NUI,DUI) \
-  (__builtin_constant_p (NUI) && (NUI) == 0                            \
-   ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI))
-#define mpq_cmp_si(q,n,d)                       \
-  (__builtin_constant_p ((n) >= 0) && (n) >= 0  \
-   ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \
-   : _mpq_cmp_si (q, n, d))
-#else
-#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI)
-#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI)
-#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI)
-#define mpq_cmp_si(q,n,d)  _mpq_cmp_si(q,n,d)
-#endif
-
-
-/* Using "&" rather than "&&" means these can come out branch-free.  Every
-   mpz_t has at least one limb allocated, so fetching the low limb is always
-   allowed.  */
-#define mpz_odd_p(z)   (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0]))
-#define mpz_even_p(z)  (! mpz_odd_p (z))
-
-
-/**************** C++ routines ****************/
-
-#ifdef __cplusplus
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);
-#endif
-
-
-/* Source-level compatibility with GMP 2 and earlier. */
-#define mpn_divmod(qp,np,nsize,dp,dsize) \
-  mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize)
-
-/* Source-level compatibility with GMP 1.  */
-#define mpz_mdiv       mpz_fdiv_q
-#define mpz_mdivmod    mpz_fdiv_qr
-#define mpz_mmod       mpz_fdiv_r
-#define mpz_mdiv_ui    mpz_fdiv_q_ui
-#define mpz_mdivmod_ui(q,r,n,d) \
-  (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))
-#define mpz_mmod_ui(r,n,d) \
-  (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))
-
-/* Useful synonyms, but not quite compatible with GMP 1.  */
-#define mpz_div                mpz_fdiv_q
-#define mpz_divmod     mpz_fdiv_qr
-#define mpz_div_ui     mpz_fdiv_q_ui
-#define mpz_divmod_ui  mpz_fdiv_qr_ui
-#define mpz_div_2exp   mpz_fdiv_q_2exp
-#define mpz_mod_2exp   mpz_fdiv_r_2exp
-
-enum
-{
-  GMP_ERROR_NONE = 0,
-  GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
-  GMP_ERROR_DIVISION_BY_ZERO = 2,
-  GMP_ERROR_SQRT_OF_NEGATIVE = 4,
-  GMP_ERROR_INVALID_ARGUMENT = 8
-};
-
-/* Define CC and CFLAGS which were used to build this version of GMP */
-#define __GMP_CC "gcc -std=gnu99"
-#define __GMP_CFLAGS "-O2 -pedantic -m64 -mtune=k8 -march=k8"
-
-/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */
-#define __GNU_MP_VERSION 5
-#define __GNU_MP_VERSION_MINOR 0
-#define __GNU_MP_VERSION_PATCHLEVEL 1
-#define __GMP_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)
-
-#define __GMP_H__
-#endif /* __GMP_H__ */
diff --git a/misc/builddeps/linux64/gmp/lib/libgmp.a b/misc/builddeps/linux64/gmp/lib/libgmp.a
deleted file mode 100644 (file)
index abac8d2..0000000
Binary files a/misc/builddeps/linux64/gmp/lib/libgmp.a and /dev/null differ
diff --git a/misc/builddeps/linux64/gmp/lib/libgmp.la b/misc/builddeps/linux64/gmp/lib/libgmp.la
deleted file mode 100755 (executable)
index 34fab8f..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libgmp.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libgmp.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libgmp.
-current=10
-age=0
-revision=1
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/tmp/g/lib'
diff --git a/misc/builddeps/linux64/gmp/share/info/gmp.info b/misc/builddeps/linux64/gmp/share/info/gmp.info
deleted file mode 100644 (file)
index d65ab79..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-Indirect:
-gmp.info-1: 981
-gmp.info-2: 300864
-\1f
-Tag Table:
-(Indirect)
-Node: Top\7f981
-Node: Copying\7f3211
-Node: Introduction to GMP\7f5062
-Node: Installing GMP\7f7773
-Node: Build Options\7f8505
-Node: ABI and ISA\7f24573
-Node: Notes for Package Builds\7f34251
-Node: Notes for Particular Systems\7f37338
-Node: Known Build Problems\7f43895
-Node: Performance optimization\7f47429
-Node: GMP Basics\7f48563
-Node: Headers and Libraries\7f49211
-Node: Nomenclature and Types\7f50635
-Node: Function Classes\7f52632
-Node: Variable Conventions\7f54325
-Node: Parameter Conventions\7f55934
-Node: Memory Management\7f57990
-Node: Reentrancy\7f59118
-Node: Useful Macros and Constants\7f60991
-Node: Compatibility with older versions\7f61989
-Node: Demonstration Programs\7f62950
-Node: Efficiency\7f64815
-Node: Debugging\7f72439
-Node: Profiling\7f78997
-Node: Autoconf\7f82988
-Node: Emacs\7f84767
-Node: Reporting Bugs\7f85373
-Node: Integer Functions\7f87916
-Node: Initializing Integers\7f88692
-Node: Assigning Integers\7f90839
-Node: Simultaneous Integer Init & Assign\7f92426
-Node: Converting Integers\7f94051
-Node: Integer Arithmetic\7f96973
-Node: Integer Division\7f98559
-Node: Integer Exponentiation\7f104869
-Node: Integer Roots\7f106309
-Node: Number Theoretic Functions\7f107983
-Node: Integer Comparisons\7f114126
-Node: Integer Logic and Bit Fiddling\7f115504
-Node: I/O of Integers\7f118051
-Node: Integer Random Numbers\7f120935
-Node: Integer Import and Export\7f123546
-Node: Miscellaneous Integer Functions\7f127556
-Node: Integer Special Functions\7f129416
-Node: Rational Number Functions\7f132503
-Node: Initializing Rationals\7f133696
-Node: Rational Conversions\7f136157
-Node: Rational Arithmetic\7f137888
-Node: Comparing Rationals\7f139192
-Node: Applying Integer Functions\7f140559
-Node: I/O of Rationals\7f142042
-Node: Floating-point Functions\7f143902
-Node: Initializing Floats\7f146787
-Node: Assigning Floats\7f150874
-Node: Simultaneous Float Init & Assign\7f153441
-Node: Converting Floats\7f154969
-Node: Float Arithmetic\7f158217
-Node: Float Comparison\7f160230
-Node: I/O of Floats\7f161811
-Node: Miscellaneous Float Functions\7f164409
-Node: Low-level Functions\7f166303
-Node: Random Number Functions\7f190437
-Node: Random State Initialization\7f191505
-Node: Random State Seeding\7f194363
-Node: Random State Miscellaneous\7f195752
-Node: Formatted Output\7f196393
-Node: Formatted Output Strings\7f196638
-Node: Formatted Output Functions\7f201852
-Node: C++ Formatted Output\7f205927
-Node: Formatted Input\7f208609
-Node: Formatted Input Strings\7f208845
-Node: Formatted Input Functions\7f213497
-Node: C++ Formatted Input\7f216466
-Node: C++ Class Interface\7f218369
-Node: C++ Interface General\7f219370
-Node: C++ Interface Integers\7f222440
-Node: C++ Interface Rationals\7f225871
-Node: C++ Interface Floats\7f229548
-Node: C++ Interface Random Numbers\7f234830
-Node: C++ Interface Limitations\7f237236
-Node: BSD Compatible Functions\7f240056
-Node: Custom Allocation\7f244767
-Node: Language Bindings\7f249085
-Node: Algorithms\7f253038
-Node: Multiplication Algorithms\7f253738
-Node: Basecase Multiplication\7f254710
-Node: Karatsuba Multiplication\7f256618
-Node: Toom 3-Way Multiplication\7f260243
-Node: Toom 4-Way Multiplication\7f266657
-Node: FFT Multiplication\7f268029
-Node: Other Multiplication\7f273365
-Node: Unbalanced Multiplication\7f275839
-Node: Division Algorithms\7f276627
-Node: Single Limb Division\7f277006
-Node: Basecase Division\7f279897
-Node: Divide and Conquer Division\7f281100
-Node: Block-Wise Barrett Division\7f283169
-Node: Exact Division\7f283821
-Node: Exact Remainder\7f286986
-Node: Small Quotient Division\7f289213
-Node: Greatest Common Divisor Algorithms\7f290811
-Node: Binary GCD\7f291108
-Node: Lehmer's Algorithm\7f293957
-Node: Subquadratic GCD\7f296177
-Node: Extended GCD\7f298636
-Node: Jacobi Symbol\7f299948
-Node: Powering Algorithms\7f300864
-Node: Normal Powering Algorithm\7f301127
-Node: Modular Powering Algorithm\7f301655
-Node: Root Extraction Algorithms\7f302435
-Node: Square Root Algorithm\7f302750
-Node: Nth Root Algorithm\7f304891
-Node: Perfect Square Algorithm\7f305676
-Node: Perfect Power Algorithm\7f307762
-Node: Radix Conversion Algorithms\7f308383
-Node: Binary to Radix\7f308759
-Node: Radix to Binary\7f312688
-Node: Other Algorithms\7f314776
-Node: Prime Testing Algorithm\7f315128
-Node: Factorial Algorithm\7f316312
-Node: Binomial Coefficients Algorithm\7f317715
-Node: Fibonacci Numbers Algorithm\7f318609
-Node: Lucas Numbers Algorithm\7f321083
-Node: Random Number Algorithms\7f321804
-Node: Assembly Coding\7f323925
-Node: Assembly Code Organisation\7f324885
-Node: Assembly Basics\7f325852
-Node: Assembly Carry Propagation\7f327002
-Node: Assembly Cache Handling\7f328833
-Node: Assembly Functional Units\7f330994
-Node: Assembly Floating Point\7f332607
-Node: Assembly SIMD Instructions\7f336385
-Node: Assembly Software Pipelining\7f337367
-Node: Assembly Loop Unrolling\7f338429
-Node: Assembly Writing Guide\7f340644
-Node: Internals\7f343409
-Node: Integer Internals\7f343921
-Node: Rational Internals\7f346177
-Node: Float Internals\7f347415
-Node: Raw Output Internals\7f354829
-Node: C++ Interface Internals\7f356023
-Node: Contributors\7f359309
-Node: References\7f364267
-Node: GNU Free Documentation License\7f369925
-Node: Concept Index\7f395094
-Node: Function Index\7f441276
-\1f
-End Tag Table
diff --git a/misc/builddeps/linux64/gmp/share/info/gmp.info-1 b/misc/builddeps/linux64/gmp/share/info/gmp.info-1
deleted file mode 100644 (file)
index d136059..0000000
+++ /dev/null
@@ -1,7084 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-File: gmp.info,  Node: Top,  Next: Copying,  Prev: (dir),  Up: (dir)
-
-GNU MP
-******
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-
-* Menu:
-
-* Copying::                    GMP Copying Conditions (LGPL).
-* Introduction to GMP::        Brief introduction to GNU MP.
-* Installing GMP::             How to configure and compile the GMP library.
-* GMP Basics::                 What every GMP user should know.
-* Reporting Bugs::             How to usefully report bugs.
-* Integer Functions::          Functions for arithmetic on signed integers.
-* Rational Number Functions::  Functions for arithmetic on rational numbers.
-* Floating-point Functions::   Functions for arithmetic on floats.
-* Low-level Functions::        Fast functions for natural numbers.
-* Random Number Functions::    Functions for generating random numbers.
-* Formatted Output::           `printf' style output.
-* Formatted Input::            `scanf' style input.
-* C++ Class Interface::        Class wrappers around GMP types.
-* BSD Compatible Functions::   All functions found in BSD MP.
-* Custom Allocation::          How to customize the internal allocation.
-* Language Bindings::          Using GMP from other languages.
-* Algorithms::                 What happens behind the scenes.
-* Internals::                  How values are represented behind the scenes.
-
-* Contributors::               Who brings you this library?
-* References::                 Some useful papers and books to read.
-* GNU Free Documentation License::
-* Concept Index::
-* Function Index::
-
-\1f
-File: gmp.info,  Node: Copying,  Next: Introduction to GMP,  Prev: Top,  Up: Top
-
-GNU MP Copying Conditions
-*************************
-
-This library is "free"; this means that everyone is free to use it and
-free to redistribute it on a free basis.  The library is not in the
-public domain; it is copyrighted and there are restrictions on its
-distribution, but these restrictions are designed to permit everything
-that a good cooperating citizen would want to do.  What is not allowed
-is to try to prevent others from further sharing any version of this
-library that they might get from you.
-
-   Specifically, we want to make sure that you have the right to give
-away copies of the library, that you receive source code or else can
-get it if you want it, that you can change this library or use pieces
-of it in new free programs, and that you know you can do these things.
-
-   To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights.  For example, if you distribute
-copies of the GNU MP library, you must give the recipients all the
-rights that you have.  You must make sure that they, too, receive or
-can get the source code.  And you must tell them their rights.
-
-   Also, for our own protection, we must make certain that everyone
-finds out that there is no warranty for the GNU MP library.  If it is
-modified by someone else and passed on, we want their recipients to
-know that what they have is not what we distributed, so that any
-problems introduced by others will not reflect on our reputation.
-
-   The precise conditions of the license for the GNU MP library are
-found in the Lesser General Public License version 3 that accompanies
-the source code, see `COPYING.LIB'.  Certain demonstration programs are
-provided under the terms of the plain General Public License version 3,
-see `COPYING'.
-
-\1f
-File: gmp.info,  Node: Introduction to GMP,  Next: Installing GMP,  Prev: Copying,  Up: Top
-
-1 Introduction to GNU MP
-************************
-
-GNU MP is a portable library written in C for arbitrary precision
-arithmetic on integers, rational numbers, and floating-point numbers.
-It aims to provide the fastest possible arithmetic for all applications
-that need higher precision than is directly supported by the basic C
-types.
-
-   Many applications use just a few hundred bits of precision; but some
-applications may need thousands or even millions of bits.  GMP is
-designed to give good performance for both, by choosing algorithms
-based on the sizes of the operands, and by carefully keeping the
-overhead at a minimum.
-
-   The speed of GMP is achieved by using fullwords as the basic
-arithmetic type, by using sophisticated algorithms, by including
-carefully optimized assembly code for the most common inner loops for
-many different CPUs, and by a general emphasis on speed (as opposed to
-simplicity or elegance).
-
-   There is assembly code for these CPUs: ARM, DEC Alpha 21064, 21164,
-and 21264, AMD 29000, AMD K6, K6-2, Athlon, and Athlon64, Hitachi
-SuperH and SH-2, HPPA 1.0, 1.1 and 2.0, Intel Pentium, Pentium
-Pro/II/III, Pentium 4, generic x86, Intel IA-64, i960, Motorola
-MC68000, MC68020, MC88100, and MC88110, Motorola/IBM PowerPC 32 and 64,
-National NS32000, IBM POWER, MIPS R3000, R4000, SPARCv7, SuperSPARC,
-generic SPARCv8, UltraSPARC, DEC VAX, and Zilog Z8000.  Some
-optimizations also for Cray vector systems, Clipper, IBM ROMP (RT), and
-Pyramid AP/XP.
-
-For up-to-date information on GMP, please see the GMP web pages at
-
-     `http://gmplib.org/'
-
-The latest version of the library is available at
-
-     `ftp://ftp.gnu.org/gnu/gmp/'
-
-   Many sites around the world mirror `ftp.gnu.org', please use a mirror
-near you, see `http://www.gnu.org/order/ftp.html' for a full list.
-
-   There are three public mailing lists of interest.  One for release
-announcements, one for general questions and discussions about usage of
-the GMP library and one for bug reports.  For more information, see
-
-     `http://gmplib.org/mailman/listinfo/'.
-
-   The proper place for bug reports is <gmp-bugs@gmplib.org>.  See
-*Note Reporting Bugs:: for information about reporting bugs.
-
-
-1.1 How to use this Manual
-==========================
-
-Everyone should read *Note GMP Basics::.  If you need to install the
-library yourself, then read *Note Installing GMP::.  If you have a
-system with multiple ABIs, then read *Note ABI and ISA::, for the
-compiler options that must be used on applications.
-
-   The rest of the manual can be used for later reference, although it
-is probably a good idea to glance through it.
-
-\1f
-File: gmp.info,  Node: Installing GMP,  Next: GMP Basics,  Prev: Introduction to GMP,  Up: Top
-
-2 Installing GMP
-****************
-
-GMP has an autoconf/automake/libtool based configuration system.  On a
-Unix-like system a basic build can be done with
-
-     ./configure
-     make
-
-Some self-tests can be run with
-
-     make check
-
-And you can install (under `/usr/local' by default) with
-
-     make install
-
-   If you experience problems, please report them to
-<gmp-bugs@gmplib.org>.  See *Note Reporting Bugs::, for information on
-what to include in useful bug reports.
-
-* Menu:
-
-* Build Options::
-* ABI and ISA::
-* Notes for Package Builds::
-* Notes for Particular Systems::
-* Known Build Problems::
-* Performance optimization::
-
-\1f
-File: gmp.info,  Node: Build Options,  Next: ABI and ISA,  Prev: Installing GMP,  Up: Installing GMP
-
-2.1 Build Options
-=================
-
-All the usual autoconf configure options are available, run `./configure
---help' for a summary.  The file `INSTALL.autoconf' has some generic
-installation information too.
-
-Tools
-     `configure' requires various Unix-like tools.  See *Note Notes for
-     Particular Systems::, for some options on non-Unix systems.
-
-     It might be possible to build without the help of `configure',
-     certainly all the code is there, but unfortunately you'll be on
-     your own.
-
-Build Directory
-     To compile in a separate build directory, `cd' to that directory,
-     and prefix the configure command with the path to the GMP source
-     directory.  For example
-
-          cd /my/build/dir
-          /my/sources/gmp-5.0.1/configure
-
-     Not all `make' programs have the necessary features (`VPATH') to
-     support this.  In particular, SunOS and Slowaris `make' have bugs
-     that make them unable to build in a separate directory.  Use GNU
-     `make' instead.
-
-`--prefix' and `--exec-prefix'
-     The `--prefix' option can be used in the normal way to direct GMP
-     to install under a particular tree.  The default is `/usr/local'.
-
-     `--exec-prefix' can be used to direct architecture-dependent files
-     like `libgmp.a' to a different location.  This can be used to share
-     architecture-independent parts like the documentation, but
-     separate the dependent parts.  Note however that `gmp.h' and
-     `mp.h' are architecture-dependent since they encode certain
-     aspects of `libgmp', so it will be necessary to ensure both
-     `$prefix/include' and `$exec_prefix/include' are available to the
-     compiler.
-
-`--disable-shared', `--disable-static'
-     By default both shared and static libraries are built (where
-     possible), but one or other can be disabled.  Shared libraries
-     result in smaller executables and permit code sharing between
-     separate running processes, but on some CPUs are slightly slower,
-     having a small cost on each function call.
-
-Native Compilation, `--build=CPU-VENDOR-OS'
-     For normal native compilation, the system can be specified with
-     `--build'.  By default `./configure' uses the output from running
-     `./config.guess'.  On some systems `./config.guess' can determine
-     the exact CPU type, on others it will be necessary to give it
-     explicitly.  For example,
-
-          ./configure --build=ultrasparc-sun-solaris2.7
-
-     In all cases the `OS' part is important, since it controls how
-     libtool generates shared libraries.  Running `./config.guess' is
-     the simplest way to see what it should be, if you don't know
-     already.
-
-Cross Compilation, `--host=CPU-VENDOR-OS'
-     When cross-compiling, the system used for compiling is given by
-     `--build' and the system where the library will run is given by
-     `--host'.  For example when using a FreeBSD Athlon system to build
-     GNU/Linux m68k binaries,
-
-          ./configure --build=athlon-pc-freebsd3.5 --host=m68k-mac-linux-gnu
-
-     Compiler tools are sought first with the host system type as a
-     prefix.  For example `m68k-mac-linux-gnu-ranlib' is tried, then
-     plain `ranlib'.  This makes it possible for a set of
-     cross-compiling tools to co-exist with native tools.  The prefix
-     is the argument to `--host', and this can be an alias, such as
-     `m68k-linux'.  But note that tools don't have to be setup this
-     way, it's enough to just have a `PATH' with a suitable
-     cross-compiling `cc' etc.
-
-     Compiling for a different CPU in the same family as the build
-     system is a form of cross-compilation, though very possibly this
-     would merely be special options on a native compiler.  In any case
-     `./configure' avoids depending on being able to run code on the
-     build system, which is important when creating binaries for a
-     newer CPU since they very possibly won't run on the build system.
-
-     In all cases the compiler must be able to produce an executable
-     (of whatever format) from a standard C `main'.  Although only
-     object files will go to make up `libgmp', `./configure' uses
-     linking tests for various purposes, such as determining what
-     functions are available on the host system.
-
-     Currently a warning is given unless an explicit `--build' is used
-     when cross-compiling, because it may not be possible to correctly
-     guess the build system type if the `PATH' has only a
-     cross-compiling `cc'.
-
-     Note that the `--target' option is not appropriate for GMP.  It's
-     for use when building compiler tools, with `--host' being where
-     they will run, and `--target' what they'll produce code for.
-     Ordinary programs or libraries like GMP are only interested in the
-     `--host' part, being where they'll run.  (Some past versions of
-     GMP used `--target' incorrectly.)
-
-CPU types
-     In general, if you want a library that runs as fast as possible,
-     you should configure GMP for the exact CPU type your system uses.
-     However, this may mean the binaries won't run on older members of
-     the family, and might run slower on other members, older or newer.
-     The best idea is always to build GMP for the exact machine type
-     you intend to run it on.
-
-     The following CPUs have specific support.  See `configure.in' for
-     details of what code and compiler options they select.
-
-        * Alpha: alpha, alphaev5, alphaev56, alphapca56, alphapca57,
-          alphaev6, alphaev67, alphaev68 alphaev7
-
-        * Cray: c90, j90, t90, sv1
-
-        * HPPA: hppa1.0, hppa1.1, hppa2.0, hppa2.0n, hppa2.0w, hppa64
-
-        * IA-64: ia64, itanium, itanium2
-
-        * MIPS: mips, mips3, mips64
-
-        * Motorola: m68k, m68000, m68010, m68020, m68030, m68040,
-          m68060, m68302, m68360, m88k, m88110
-
-        * POWER: power, power1, power2, power2sc
-
-        * PowerPC: powerpc, powerpc64, powerpc401, powerpc403,
-          powerpc405, powerpc505, powerpc601, powerpc602, powerpc603,
-          powerpc603e, powerpc604, powerpc604e, powerpc620, powerpc630,
-          powerpc740, powerpc7400, powerpc7450, powerpc750, powerpc801,
-          powerpc821, powerpc823, powerpc860, powerpc970
-
-        * SPARC: sparc, sparcv8, microsparc, supersparc, sparcv9,
-          ultrasparc, ultrasparc2, ultrasparc2i, ultrasparc3, sparc64
-
-        * x86 family: i386, i486, i586, pentium, pentiummmx, pentiumpro,
-          pentium2, pentium3, pentium4, k6, k62, k63, athlon, amd64,
-          viac3, viac32
-
-        * Other: a29k, arm, clipper, i960, ns32k, pyramid, sh, sh2, vax,
-          z8k
-
-     CPUs not listed will use generic C code.
-
-Generic C Build
-     If some of the assembly code causes problems, or if otherwise
-     desired, the generic C code can be selected with CPU `none'.  For
-     example,
-
-          ./configure --host=none-unknown-freebsd3.5
-
-     Note that this will run quite slowly, but it should be portable
-     and should at least make it possible to get something running if
-     all else fails.
-
-Fat binary, `--enable-fat'
-     Using `--enable-fat' selects a "fat binary" build on x86, where
-     optimized low level subroutines are chosen at runtime according to
-     the CPU detected.  This means more code, but gives good
-     performance on all x86 chips.  (This option might become available
-     for more architectures in the future.)
-
-`ABI'
-     On some systems GMP supports multiple ABIs (application binary
-     interfaces), meaning data type sizes and calling conventions.  By
-     default GMP chooses the best ABI available, but a particular ABI
-     can be selected.  For example
-
-          ./configure --host=mips64-sgi-irix6 ABI=n32
-
-     See *Note ABI and ISA::, for the available choices on relevant
-     CPUs, and what applications need to do.
-
-`CC', `CFLAGS'
-     By default the C compiler used is chosen from among some likely
-     candidates, with `gcc' normally preferred if it's present.  The
-     usual `CC=whatever' can be passed to `./configure' to choose
-     something different.
-
-     For various systems, default compiler flags are set based on the
-     CPU and compiler.  The usual `CFLAGS="-whatever"' can be passed to
-     `./configure' to use something different or to set good flags for
-     systems GMP doesn't otherwise know.
-
-     The `CC' and `CFLAGS' used are printed during `./configure', and
-     can be found in each generated `Makefile'.  This is the easiest way
-     to check the defaults when considering changing or adding
-     something.
-
-     Note that when `CC' and `CFLAGS' are specified on a system
-     supporting multiple ABIs it's important to give an explicit
-     `ABI=whatever', since GMP can't determine the ABI just from the
-     flags and won't be able to select the correct assembly code.
-
-     If just `CC' is selected then normal default `CFLAGS' for that
-     compiler will be used (if GMP recognises it).  For example
-     `CC=gcc' can be used to force the use of GCC, with default flags
-     (and default ABI).
-
-`CPPFLAGS'
-     Any flags like `-D' defines or `-I' includes required by the
-     preprocessor should be set in `CPPFLAGS' rather than `CFLAGS'.
-     Compiling is done with both `CPPFLAGS' and `CFLAGS', but
-     preprocessing uses just `CPPFLAGS'.  This distinction is because
-     most preprocessors won't accept all the flags the compiler does.
-     Preprocessing is done separately in some configure tests, and in
-     the `ansi2knr' support for K&R compilers.
-
-`CC_FOR_BUILD'
-     Some build-time programs are compiled and run to generate
-     host-specific data tables.  `CC_FOR_BUILD' is the compiler used
-     for this.  It doesn't need to be in any particular ABI or mode, it
-     merely needs to generate executables that can run.  The default is
-     to try the selected `CC' and some likely candidates such as `cc'
-     and `gcc', looking for something that works.
-
-     No flags are used with `CC_FOR_BUILD' because a simple invocation
-     like `cc foo.c' should be enough.  If some particular options are
-     required they can be included as for instance `CC_FOR_BUILD="cc
-     -whatever"'.
-
-C++ Support, `--enable-cxx'
-     C++ support in GMP can be enabled with `--enable-cxx', in which
-     case a C++ compiler will be required.  As a convenience
-     `--enable-cxx=detect' can be used to enable C++ support only if a
-     compiler can be found.  The C++ support consists of a library
-     `libgmpxx.la' and header file `gmpxx.h' (*note Headers and
-     Libraries::).
-
-     A separate `libgmpxx.la' has been adopted rather than having C++
-     objects within `libgmp.la' in order to ensure dynamic linked C
-     programs aren't bloated by a dependency on the C++ standard
-     library, and to avoid any chance that the C++ compiler could be
-     required when linking plain C programs.
-
-     `libgmpxx.la' will use certain internals from `libgmp.la' and can
-     only be expected to work with `libgmp.la' from the same GMP
-     version.  Future changes to the relevant internals will be
-     accompanied by renaming, so a mismatch will cause unresolved
-     symbols rather than perhaps mysterious misbehaviour.
-
-     In general `libgmpxx.la' will be usable only with the C++ compiler
-     that built it, since name mangling and runtime support are usually
-     incompatible between different compilers.
-
-`CXX', `CXXFLAGS'
-     When C++ support is enabled, the C++ compiler and its flags can be
-     set with variables `CXX' and `CXXFLAGS' in the usual way.  The
-     default for `CXX' is the first compiler that works from a list of
-     likely candidates, with `g++' normally preferred when available.
-     The default for `CXXFLAGS' is to try `CFLAGS', `CFLAGS' without
-     `-g', then for `g++' either `-g -O2' or `-O2', or for other
-     compilers `-g' or nothing.  Trying `CFLAGS' this way is convenient
-     when using `gcc' and `g++' together, since the flags for `gcc' will
-     usually suit `g++'.
-
-     It's important that the C and C++ compilers match, meaning their
-     startup and runtime support routines are compatible and that they
-     generate code in the same ABI (if there's a choice of ABIs on the
-     system).  `./configure' isn't currently able to check these things
-     very well itself, so for that reason `--disable-cxx' is the
-     default, to avoid a build failure due to a compiler mismatch.
-     Perhaps this will change in the future.
-
-     Incidentally, it's normally not good enough to set `CXX' to the
-     same as `CC'.  Although `gcc' for instance recognises `foo.cc' as
-     C++ code, only `g++' will invoke the linker the right way when
-     building an executable or shared library from C++ object files.
-
-Temporary Memory, `--enable-alloca=<choice>'
-     GMP allocates temporary workspace using one of the following three
-     methods, which can be selected with for instance
-     `--enable-alloca=malloc-reentrant'.
-
-        * `alloca' - C library or compiler builtin.
-
-        * `malloc-reentrant' - the heap, in a re-entrant fashion.
-
-        * `malloc-notreentrant' - the heap, with global variables.
-
-     For convenience, the following choices are also available.
-     `--disable-alloca' is the same as `no'.
-
-        * `yes' - a synonym for `alloca'.
-
-        * `no' - a synonym for `malloc-reentrant'.
-
-        * `reentrant' - `alloca' if available, otherwise
-          `malloc-reentrant'.  This is the default.
-
-        * `notreentrant' - `alloca' if available, otherwise
-          `malloc-notreentrant'.
-
-     `alloca' is reentrant and fast, and is recommended.  It actually
-     allocates just small blocks on the stack; larger ones use
-     malloc-reentrant.
-
-     `malloc-reentrant' is, as the name suggests, reentrant and thread
-     safe, but `malloc-notreentrant' is faster and should be used if
-     reentrancy is not required.
-
-     The two malloc methods in fact use the memory allocation functions
-     selected by `mp_set_memory_functions', these being `malloc' and
-     friends by default.  *Note Custom Allocation::.
-
-     An additional choice `--enable-alloca=debug' is available, to help
-     when debugging memory related problems (*note Debugging::).
-
-FFT Multiplication, `--disable-fft'
-     By default multiplications are done using Karatsuba, 3-way Toom,
-     and Fermat FFT.  The FFT is only used on large to very large
-     operands and can be disabled to save code size if desired.
-
-Berkeley MP, `--enable-mpbsd'
-     The Berkeley MP compatibility library (`libmp') and header file
-     (`mp.h') are built and installed only if `--enable-mpbsd' is used.
-     *Note BSD Compatible Functions::.
-
-Assertion Checking, `--enable-assert'
-     This option enables some consistency checking within the library.
-     This can be of use while debugging, *note Debugging::.
-
-Execution Profiling, `--enable-profiling=prof/gprof/instrument'
-     Enable profiling support, in one of various styles, *note
-     Profiling::.
-
-`MPN_PATH'
-     Various assembly versions of each mpn subroutines are provided.
-     For a given CPU, a search is made though a path to choose a
-     version of each.  For example `sparcv8' has
-
-          MPN_PATH="sparc32/v8 sparc32 generic"
-
-     which means look first for v8 code, then plain sparc32 (which is
-     v7), and finally fall back on generic C.  Knowledgeable users with
-     special requirements can specify a different path.  Normally this
-     is completely unnecessary.
-
-Documentation
-     The source for the document you're now reading is `doc/gmp.texi',
-     in Texinfo format, see *Note Texinfo: (texinfo)Top.
-
-     Info format `doc/gmp.info' is included in the distribution.  The
-     usual automake targets are available to make PostScript, DVI, PDF
-     and HTML (these will require various TeX and Texinfo tools).
-
-     DocBook and XML can be generated by the Texinfo `makeinfo' program
-     too, see *Note Options for `makeinfo': (texinfo)makeinfo options.
-
-     Some supplementary notes can also be found in the `doc'
-     subdirectory.
-
-
-\1f
-File: gmp.info,  Node: ABI and ISA,  Next: Notes for Package Builds,  Prev: Build Options,  Up: Installing GMP
-
-2.2 ABI and ISA
-===============
-
-ABI (Application Binary Interface) refers to the calling conventions
-between functions, meaning what registers are used and what sizes the
-various C data types are.  ISA (Instruction Set Architecture) refers to
-the instructions and registers a CPU has available.
-
-   Some 64-bit ISA CPUs have both a 64-bit ABI and a 32-bit ABI
-defined, the latter for compatibility with older CPUs in the family.
-GMP supports some CPUs like this in both ABIs.  In fact within GMP
-`ABI' means a combination of chip ABI, plus how GMP chooses to use it.
-For example in some 32-bit ABIs, GMP may support a limb as either a
-32-bit `long' or a 64-bit `long long'.
-
-   By default GMP chooses the best ABI available for a given system,
-and this generally gives significantly greater speed.  But an ABI can
-be chosen explicitly to make GMP compatible with other libraries, or
-particular application requirements.  For example,
-
-     ./configure ABI=32
-
-   In all cases it's vital that all object code used in a given program
-is compiled for the same ABI.
-
-   Usually a limb is implemented as a `long'.  When a `long long' limb
-is used this is encoded in the generated `gmp.h'.  This is convenient
-for applications, but it does mean that `gmp.h' will vary, and can't be
-just copied around.  `gmp.h' remains compiler independent though, since
-all compilers for a particular ABI will be expected to use the same
-limb type.
-
-   Currently no attempt is made to follow whatever conventions a system
-has for installing library or header files built for a particular ABI.
-This will probably only matter when installing multiple builds of GMP,
-and it might be as simple as configuring with a special `libdir', or it
-might require more than that.  Note that builds for different ABIs need
-to done separately, with a fresh `./configure' and `make' each.
-
-
-AMD64 (`x86_64')
-     On AMD64 systems supporting both 32-bit and 64-bit modes for
-     applications, the following ABI choices are available.
-
-    `ABI=64'
-          The 64-bit ABI uses 64-bit limbs and pointers and makes full
-          use of the chip architecture.  This is the default.
-          Applications will usually not need special compiler flags,
-          but for reference the option is
-
-               gcc  -m64
-
-    `ABI=32'
-          The 32-bit ABI is the usual i386 conventions.  This will be
-          slower, and is not recommended except for inter-operating
-          with other code not yet 64-bit capable.  Applications must be
-          compiled with
-
-               gcc  -m32
-
-          (In GCC 2.95 and earlier there's no `-m32' option, it's the
-          only mode.)
-
-
-HPPA 2.0 (`hppa2.0*', `hppa64')
-
-    `ABI=2.0w'
-          The 2.0w ABI uses 64-bit limbs and pointers and is available
-          on HP-UX 11 or up.  Applications must be compiled with
-
-               gcc [built for 2.0w]
-               cc  +DD64
-
-    `ABI=2.0n'
-          The 2.0n ABI means the 32-bit HPPA 1.0 ABI and all its normal
-          calling conventions, but with 64-bit instructions permitted
-          within functions.  GMP uses a 64-bit `long long' for a limb.
-          This ABI is available on hppa64 GNU/Linux and on HP-UX 10 or
-          higher.  Applications must be compiled with
-
-               gcc [built for 2.0n]
-               cc  +DA2.0 +e
-
-          Note that current versions of GCC (eg. 3.2) don't generate
-          64-bit instructions for `long long' operations and so may be
-          slower than for 2.0w.  (The GMP assembly code is the same
-          though.)
-
-    `ABI=1.0'
-          HPPA 2.0 CPUs can run all HPPA 1.0 and 1.1 code in the 32-bit
-          HPPA 1.0 ABI.  No special compiler options are needed for
-          applications.
-
-     All three ABIs are available for CPU types `hppa2.0w', `hppa2.0'
-     and `hppa64', but for CPU type `hppa2.0n' only 2.0n or 1.0 are
-     considered.
-
-     Note that GCC on HP-UX has no options to choose between 2.0n and
-     2.0w modes, unlike HP `cc'.  Instead it must be built for one or
-     the other ABI.  GMP will detect how it was built, and skip to the
-     corresponding `ABI'.
-
-
-IA-64 under HP-UX (`ia64*-*-hpux*', `itanium*-*-hpux*')
-     HP-UX supports two ABIs for IA-64.  GMP performance is the same in
-     both.
-
-    `ABI=32'
-          In the 32-bit ABI, pointers, `int's and `long's are 32 bits
-          and GMP uses a 64 bit `long long' for a limb.  Applications
-          can be compiled without any special flags since this ABI is
-          the default in both HP C and GCC, but for reference the flags
-          are
-
-               gcc  -milp32
-               cc   +DD32
-
-    `ABI=64'
-          In the 64-bit ABI, `long's and pointers are 64 bits and GMP
-          uses a `long' for a limb.  Applications must be compiled with
-
-               gcc  -mlp64
-               cc   +DD64
-
-     On other IA-64 systems, GNU/Linux for instance, `ABI=64' is the
-     only choice.
-
-
-MIPS under IRIX 6 (`mips*-*-irix[6789]')
-     IRIX 6 always has a 64-bit MIPS 3 or better CPU, and supports ABIs
-     o32, n32, and 64.  n32 or 64 are recommended, and GMP performance
-     will be the same in each.  The default is n32.
-
-    `ABI=o32'
-          The o32 ABI is 32-bit pointers and integers, and no 64-bit
-          operations.  GMP will be slower than in n32 or 64, this
-          option only exists to support old compilers, eg. GCC 2.7.2.
-          Applications can be compiled with no special flags on an old
-          compiler, or on a newer compiler with
-
-               gcc  -mabi=32
-               cc   -32
-
-    `ABI=n32'
-          The n32 ABI is 32-bit pointers and integers, but with a
-          64-bit limb using a `long long'.  Applications must be
-          compiled with
-
-               gcc  -mabi=n32
-               cc   -n32
-
-    `ABI=64'
-          The 64-bit ABI is 64-bit pointers and integers.  Applications
-          must be compiled with
-
-               gcc  -mabi=64
-               cc   -64
-
-     Note that MIPS GNU/Linux, as of kernel version 2.2, doesn't have
-     the necessary support for n32 or 64 and so only gets a 32-bit limb
-     and the MIPS 2 code.
-
-
-PowerPC 64 (`powerpc64', `powerpc620', `powerpc630', `powerpc970', `power4', `power5')
-
-    `ABI=aix64'
-          The AIX 64 ABI uses 64-bit limbs and pointers and is the
-          default on PowerPC 64 `*-*-aix*' systems.  Applications must
-          be compiled with
-
-               gcc  -maix64
-               xlc  -q64
-
-    `ABI=mode64'
-          The `mode64' ABI uses 64-bit limbs and pointers, and is the
-          default on 64-bit GNU/Linux, BSD, and Mac OS X/Darwin
-          systems.  Applications must be compiled with
-
-               gcc  -m64
-
-    `ABI=mode32'
-          The `mode32' ABI uses a 64-bit `long long' limb but with the
-          chip still in 32-bit mode and using 32-bit calling
-          conventions.  This is the default on for systems where the
-          true 64-bit ABIs are unavailable.  No special compiler
-          options are needed for applications.
-
-    `ABI=32'
-          This is the basic 32-bit PowerPC ABI, with a 32-bit limb.  No
-          special compiler options are needed for applications.
-
-     GMP speed is greatest in `aix64' and `mode32'.  In `ABI=32' only
-     the 32-bit ISA is used and this doesn't make full use of a 64-bit
-     chip.  On a suitable system we could perhaps use more of the ISA,
-     but there are no plans to do so.
-
-
-Sparc V9 (`sparc64', `sparcv9', `ultrasparc*')
-
-    `ABI=64'
-          The 64-bit V9 ABI is available on the various BSD sparc64
-          ports, recent versions of Sparc64 GNU/Linux, and Solaris 2.7
-          and up (when the kernel is in 64-bit mode).  GCC 3.2 or
-          higher, or Sun `cc' is required.  On GNU/Linux, depending on
-          the default `gcc' mode, applications must be compiled with
-
-               gcc  -m64
-
-          On Solaris applications must be compiled with
-
-               gcc  -m64 -mptr64 -Wa,-xarch=v9 -mcpu=v9
-               cc   -xarch=v9
-
-          On the BSD sparc64 systems no special options are required,
-          since 64-bits is the only ABI available.
-
-    `ABI=32'
-          For the basic 32-bit ABI, GMP still uses as much of the V9
-          ISA as it can.  In the Sun documentation this combination is
-          known as "v8plus".  On GNU/Linux, depending on the default
-          `gcc' mode, applications may need to be compiled with
-
-               gcc  -m32
-
-          On Solaris, no special compiler options are required for
-          applications, though using something like the following is
-          recommended.  (`gcc' 2.8 and earlier only support `-mv8'
-          though.)
-
-               gcc  -mv8plus
-               cc   -xarch=v8plus
-
-     GMP speed is greatest in `ABI=64', so it's the default where
-     available.  The speed is partly because there are extra registers
-     available and partly because 64-bits is considered the more
-     important case and has therefore had better code written for it.
-
-     Don't be confused by the names of the `-m' and `-x' compiler
-     options, they're called `arch' but effectively control both ABI
-     and ISA.
-
-     On Solaris 2.6 and earlier, only `ABI=32' is available since the
-     kernel doesn't save all registers.
-
-     On Solaris 2.7 with the kernel in 32-bit mode, a normal native
-     build will reject `ABI=64' because the resulting executables won't
-     run.  `ABI=64' can still be built if desired by making it look
-     like a cross-compile, for example
-
-          ./configure --build=none --host=sparcv9-sun-solaris2.7 ABI=64
-
-\1f
-File: gmp.info,  Node: Notes for Package Builds,  Next: Notes for Particular Systems,  Prev: ABI and ISA,  Up: Installing GMP
-
-2.3 Notes for Package Builds
-============================
-
-GMP should present no great difficulties for packaging in a binary
-distribution.
-
-   Libtool is used to build the library and `-version-info' is set
-appropriately, having started from `3:0:0' in GMP 3.0 (*note Library
-interface versions: (libtool)Versioning.).
-
-   The GMP 4 series will be upwardly binary compatible in each release
-and will be upwardly binary compatible with all of the GMP 3 series.
-Additional function interfaces may be added in each release, so on
-systems where libtool versioning is not fully checked by the loader an
-auxiliary mechanism may be needed to express that a dynamic linked
-application depends on a new enough GMP.
-
-   An auxiliary mechanism may also be needed to express that
-`libgmpxx.la' (from `--enable-cxx', *note Build Options::) requires
-`libgmp.la' from the same GMP version, since this is not done by the
-libtool versioning, nor otherwise.  A mismatch will result in
-unresolved symbols from the linker, or perhaps the loader.
-
-   When building a package for a CPU family, care should be taken to use
-`--host' (or `--build') to choose the least common denominator among
-the CPUs which might use the package.  For example this might mean plain
-`sparc' (meaning V7) for SPARCs.
-
-   For x86s, `--enable-fat' sets things up for a fat binary build,
-making a runtime selection of optimized low level routines.  This is a
-good choice for packaging to run on a range of x86 chips.
-
-   Users who care about speed will want GMP built for their exact CPU
-type, to make best use of the available optimizations.  Providing a way
-to suitably rebuild a package may be useful.  This could be as simple
-as making it possible for a user to omit `--build' (and `--host') so
-`./config.guess' will detect the CPU.  But a way to manually specify a
-`--build' will be wanted for systems where `./config.guess' is inexact.
-
-   On systems with multiple ABIs, a packaged build will need to decide
-which among the choices is to be provided, see *Note ABI and ISA::.  A
-given run of `./configure' etc will only build one ABI.  If a second
-ABI is also required then a second run of `./configure' etc must be
-made, starting from a clean directory tree (`make distclean').
-
-   As noted under "ABI and ISA", currently no attempt is made to follow
-system conventions for install locations that vary with ABI, such as
-`/usr/lib/sparcv9' for `ABI=64' as opposed to `/usr/lib' for `ABI=32'.
-A package build can override `libdir' and other standard variables as
-necessary.
-
-   Note that `gmp.h' is a generated file, and will be architecture and
-ABI dependent.  When attempting to install two ABIs simultaneously it
-will be important that an application compile gets the correct `gmp.h'
-for its desired ABI.  If compiler include paths don't vary with ABI
-options then it might be necessary to create a `/usr/include/gmp.h'
-which tests preprocessor symbols and chooses the correct actual `gmp.h'.
-
-\1f
-File: gmp.info,  Node: Notes for Particular Systems,  Next: Known Build Problems,  Prev: Notes for Package Builds,  Up: Installing GMP
-
-2.4 Notes for Particular Systems
-================================
-
-AIX 3 and 4
-     On systems `*-*-aix[34]*' shared libraries are disabled by
-     default, since some versions of the native `ar' fail on the
-     convenience libraries used.  A shared build can be attempted with
-
-          ./configure --enable-shared --disable-static
-
-     Note that the `--disable-static' is necessary because in a shared
-     build libtool makes `libgmp.a' a symlink to `libgmp.so',
-     apparently for the benefit of old versions of `ld' which only
-     recognise `.a', but unfortunately this is done even if a fully
-     functional `ld' is available.
-
-ARM
-     On systems `arm*-*-*', versions of GCC up to and including 2.95.3
-     have a bug in unsigned division, giving wrong results for some
-     operands.  GMP `./configure' will demand GCC 2.95.4 or later.
-
-Compaq C++
-     Compaq C++ on OSF 5.1 has two flavours of `iostream', a standard
-     one and an old pre-standard one (see `man iostream_intro').  GMP
-     can only use the standard one, which unfortunately is not the
-     default but must be selected by defining `__USE_STD_IOSTREAM'.
-     Configure with for instance
-
-          ./configure --enable-cxx CPPFLAGS=-D__USE_STD_IOSTREAM
-
-Floating Point Mode
-     On some systems, the hardware floating point has a control mode
-     which can set all operations to be done in a particular precision,
-     for instance single, double or extended on x86 systems (x87
-     floating point).  The GMP functions involving a `double' cannot be
-     expected to operate to their full precision when the hardware is
-     in single precision mode.  Of course this affects all code,
-     including application code, not just GMP.
-
-MS-DOS and MS Windows
-     On an MS-DOS system DJGPP can be used to build GMP, and on an MS
-     Windows system Cygwin, DJGPP and MINGW can be used.  All three are
-     excellent ports of GCC and the various GNU tools.
-
-          `http://www.cygwin.com/'
-          `http://www.delorie.com/djgpp/'
-          `http://www.mingw.org/'
-
-     Microsoft also publishes an Interix "Services for Unix" which can
-     be used to build GMP on Windows (with a normal `./configure'), but
-     it's not free software.
-
-MS Windows DLLs
-     On systems `*-*-cygwin*', `*-*-mingw*' and `*-*-pw32*' by default
-     GMP builds only a static library, but a DLL can be built instead
-     using
-
-          ./configure --disable-static --enable-shared
-
-     Static and DLL libraries can't both be built, since certain export
-     directives in `gmp.h' must be different.
-
-     A MINGW DLL build of GMP can be used with Microsoft C.  Libtool
-     doesn't install a `.lib' format import library, but it can be
-     created with MS `lib' as follows, and copied to the install
-     directory.  Similarly for `libmp' and `libgmpxx'.
-
-          cd .libs
-          lib /def:libgmp-3.dll.def /out:libgmp-3.lib
-
-     MINGW uses the C runtime library `msvcrt.dll' for I/O, so
-     applications wanting to use the GMP I/O routines must be compiled
-     with `cl /MD' to do the same.  If one of the other C runtime
-     library choices provided by MS C is desired then the suggestion is
-     to use the GMP string functions and confine I/O to the application.
-
-Motorola 68k CPU Types
-     `m68k' is taken to mean 68000.  `m68020' or higher will give a
-     performance boost on applicable CPUs.  `m68360' can be used for
-     CPU32 series chips.  `m68302' can be used for "Dragonball" series
-     chips, though this is merely a synonym for `m68000'.
-
-OpenBSD 2.6
-     `m4' in this release of OpenBSD has a bug in `eval' that makes it
-     unsuitable for `.asm' file processing.  `./configure' will detect
-     the problem and either abort or choose another m4 in the `PATH'.
-     The bug is fixed in OpenBSD 2.7, so either upgrade or use GNU m4.
-
-Power CPU Types
-     In GMP, CPU types `power*' and `powerpc*' will each use
-     instructions not available on the other, so it's important to
-     choose the right one for the CPU that will be used.  Currently GMP
-     has no assembly code support for using just the common instruction
-     subset.  To get executables that run on both, the current
-     suggestion is to use the generic C code (CPU `none'), possibly
-     with appropriate compiler options (like `-mcpu=common' for `gcc').
-     CPU `rs6000' (which is not a CPU but a family of workstations) is
-     accepted by `config.sub', but is currently equivalent to `none'.
-
-Sparc CPU Types
-     `sparcv8' or `supersparc' on relevant systems will give a
-     significant performance increase over the V7 code selected by plain
-     `sparc'.
-
-Sparc App Regs
-     The GMP assembly code for both 32-bit and 64-bit Sparc clobbers the
-     "application registers" `g2', `g3' and `g4', the same way that the
-     GCC default `-mapp-regs' does (*note SPARC Options: (gcc)SPARC
-     Options.).
-
-     This makes that code unsuitable for use with the special V9
-     `-mcmodel=embmedany' (which uses `g4' as a data segment pointer),
-     and for applications wanting to use those registers for special
-     purposes.  In these cases the only suggestion currently is to
-     build GMP with CPU `none' to avoid the assembly code.
-
-SunOS 4
-     `/usr/bin/m4' lacks various features needed to process `.asm'
-     files, and instead `./configure' will automatically use
-     `/usr/5bin/m4', which we believe is always available (if not then
-     use GNU m4).
-
-x86 CPU Types
-     `i586', `pentium' or `pentiummmx' code is good for its intended P5
-     Pentium chips, but quite slow when run on Intel P6 class chips
-     (PPro, P-II, P-III).  `i386' is a better choice when making
-     binaries that must run on both.
-
-x86 MMX and SSE2 Code
-     If the CPU selected has MMX code but the assembler doesn't support
-     it, a warning is given and non-MMX code is used instead.  This
-     will be an inferior build, since the MMX code that's present is
-     there because it's faster than the corresponding plain integer
-     code.  The same applies to SSE2.
-
-     Old versions of `gas' don't support MMX instructions, in particular
-     version 1.92.3 that comes with FreeBSD 2.2.8 or the more recent
-     OpenBSD 3.1 doesn't.
-
-     Solaris 2.6 and 2.7 `as' generate incorrect object code for
-     register to register `movq' instructions, and so can't be used for
-     MMX code.  Install a recent `gas' if MMX code is wanted on these
-     systems.
-
-\1f
-File: gmp.info,  Node: Known Build Problems,  Next: Performance optimization,  Prev: Notes for Particular Systems,  Up: Installing GMP
-
-2.5 Known Build Problems
-========================
-
-You might find more up-to-date information at `http://gmplib.org/'.
-
-Compiler link options
-     The version of libtool currently in use rather aggressively strips
-     compiler options when linking a shared library.  This will
-     hopefully be relaxed in the future, but for now if this is a
-     problem the suggestion is to create a little script to hide them,
-     and for instance configure with
-
-          ./configure CC=gcc-with-my-options
-
-DJGPP (`*-*-msdosdjgpp*')
-     The DJGPP port of `bash' 2.03 is unable to run the `configure'
-     script, it exits silently, having died writing a preamble to
-     `config.log'.  Use `bash' 2.04 or higher.
-
-     `make all' was found to run out of memory during the final
-     `libgmp.la' link on one system tested, despite having 64Mb
-     available.  Running `make libgmp.la' directly helped, perhaps
-     recursing into the various subdirectories uses up memory.
-
-GNU binutils `strip' prior to 2.12
-     `strip' from GNU binutils 2.11 and earlier should not be used on
-     the static libraries `libgmp.a' and `libmp.a' since it will
-     discard all but the last of multiple archive members with the same
-     name, like the three versions of `init.o' in `libgmp.a'.  Binutils
-     2.12 or higher can be used successfully.
-
-     The shared libraries `libgmp.so' and `libmp.so' are not affected by
-     this and any version of `strip' can be used on them.
-
-`make' syntax error
-     On certain versions of SCO OpenServer 5 and IRIX 6.5 the native
-     `make' is unable to handle the long dependencies list for
-     `libgmp.la'.  The symptom is a "syntax error" on the following
-     line of the top-level `Makefile'.
-
-          libgmp.la: $(libgmp_la_OBJECTS) $(libgmp_la_DEPENDENCIES)
-
-     Either use GNU Make, or as a workaround remove
-     `$(libgmp_la_DEPENDENCIES)' from that line (which will make the
-     initial build work, but if any recompiling is done `libgmp.la'
-     might not be rebuilt).
-
-MacOS X (`*-*-darwin*')
-     Libtool currently only knows how to create shared libraries on
-     MacOS X using the native `cc' (which is a modified GCC), not a
-     plain GCC.  A static-only build should work though
-     (`--disable-shared').
-
-NeXT prior to 3.3
-     The system compiler on old versions of NeXT was a massacred and
-     old GCC, even if it called itself `cc'.  This compiler cannot be
-     used to build GMP, you need to get a real GCC, and install that.
-     (NeXT may have fixed this in release 3.3 of their system.)
-
-POWER and PowerPC
-     Bugs in GCC 2.7.2 (and 2.6.3) mean it can't be used to compile GMP
-     on POWER or PowerPC.  If you want to use GCC for these machines,
-     get GCC 2.7.2.1 (or later).
-
-Sequent Symmetry
-     Use the GNU assembler instead of the system assembler, since the
-     latter has serious bugs.
-
-Solaris 2.6
-     The system `sed' prints an error "Output line too long" when
-     libtool builds `libgmp.la'.  This doesn't seem to cause any
-     obvious ill effects, but GNU `sed' is recommended, to avoid any
-     doubt.
-
-Sparc Solaris 2.7 with gcc 2.95.2 in `ABI=32'
-     A shared library build of GMP seems to fail in this combination,
-     it builds but then fails the tests, apparently due to some
-     incorrect data relocations within `gmp_randinit_lc_2exp_size'.
-     The exact cause is unknown, `--disable-shared' is recommended.
-
-\1f
-File: gmp.info,  Node: Performance optimization,  Prev: Known Build Problems,  Up: Installing GMP
-
-2.6 Performance optimization
-============================
-
-For optimal performance, build GMP for the exact CPU type of the target
-computer, see *Note Build Options::.
-
-   Unlike what is the case for most other programs, the compiler
-typically doesn't matter much, since GMP uses assembly language for the
-most critical operation.
-
-   In particular for long-running GMP applications, and applications
-demanding extremely large numbers, building and running the `tuneup'
-program in the `tune' subdirectory, can be important.  For example,
-
-     cd tune
-     make tuneup
-     ./tuneup
-
-   will generate better contents for the `gmp-mparam.h' parameter file.
-
-   To use the results, put the output in the file file indicated in the
-`Parameters for ...' header.  Then recompile from scratch.
-
-   The `tuneup' program takes one useful parameter, `-f NNN', which
-instructs the program how long to check FFT multiply parameters.  If
-you're going to use GMP for extremely large numbers, you may want to
-run `tuneup' with a large NNN value.
-
-\1f
-File: gmp.info,  Node: GMP Basics,  Next: Reporting Bugs,  Prev: Installing GMP,  Up: Top
-
-3 GMP Basics
-************
-
-*Using functions, macros, data types, etc. not documented in this
-manual is strongly discouraged.  If you do so your application is
-guaranteed to be incompatible with future versions of GMP.*
-
-* Menu:
-
-* Headers and Libraries::
-* Nomenclature and Types::
-* Function Classes::
-* Variable Conventions::
-* Parameter Conventions::
-* Memory Management::
-* Reentrancy::
-* Useful Macros and Constants::
-* Compatibility with older versions::
-* Demonstration Programs::
-* Efficiency::
-* Debugging::
-* Profiling::
-* Autoconf::
-* Emacs::
-
-\1f
-File: gmp.info,  Node: Headers and Libraries,  Next: Nomenclature and Types,  Prev: GMP Basics,  Up: GMP Basics
-
-3.1 Headers and Libraries
-=========================
-
-All declarations needed to use GMP are collected in the include file
-`gmp.h'.  It is designed to work with both C and C++ compilers.
-
-     #include <gmp.h>
-
-   Note however that prototypes for GMP functions with `FILE *'
-parameters are only provided if `<stdio.h>' is included too.
-
-     #include <stdio.h>
-     #include <gmp.h>
-
-   Likewise `<stdarg.h>' (or `<varargs.h>') is required for prototypes
-with `va_list' parameters, such as `gmp_vprintf'.  And `<obstack.h>'
-for prototypes with `struct obstack' parameters, such as
-`gmp_obstack_printf', when available.
-
-   All programs using GMP must link against the `libgmp' library.  On a
-typical Unix-like system this can be done with `-lgmp', for example
-
-     gcc myprogram.c -lgmp
-
-   GMP C++ functions are in a separate `libgmpxx' library.  This is
-built and installed if C++ support has been enabled (*note Build
-Options::).  For example,
-
-     g++ mycxxprog.cc -lgmpxx -lgmp
-
-   GMP is built using Libtool and an application can use that to link
-if desired, *note GNU Libtool: (libtool)Top.
-
-   If GMP has been installed to a non-standard location then it may be
-necessary to use `-I' and `-L' compiler options to point to the right
-directories, and some sort of run-time path for a shared library.
-
-\1f
-File: gmp.info,  Node: Nomenclature and Types,  Next: Function Classes,  Prev: Headers and Libraries,  Up: GMP Basics
-
-3.2 Nomenclature and Types
-==========================
-
-In this manual, "integer" usually means a multiple precision integer, as
-defined by the GMP library.  The C data type for such integers is
-`mpz_t'.  Here are some examples of how to declare such integers:
-
-     mpz_t sum;
-
-     struct foo { mpz_t x, y; };
-
-     mpz_t vec[20];
-
-   "Rational number" means a multiple precision fraction.  The C data
-type for these fractions is `mpq_t'.  For example:
-
-     mpq_t quotient;
-
-   "Floating point number" or "Float" for short, is an arbitrary
-precision mantissa with a limited precision exponent.  The C data type
-for such objects is `mpf_t'.  For example:
-
-     mpf_t fp;
-
-   The floating point functions accept and return exponents in the C
-type `mp_exp_t'.  Currently this is usually a `long', but on some
-systems it's an `int' for efficiency.
-
-   A "limb" means the part of a multi-precision number that fits in a
-single machine word.  (We chose this word because a limb of the human
-body is analogous to a digit, only larger, and containing several
-digits.)  Normally a limb is 32 or 64 bits.  The C data type for a limb
-is `mp_limb_t'.
-
-   Counts of limbs of a multi-precision number represented in the C type
-`mp_size_t'.  Currently this is normally a `long', but on some systems
-it's an `int' for efficiency, and on some systems it will be `long
-long' in the future.
-
-   Counts of bits of a multi-precision number are represented in the C
-type `mp_bitcnt_t'.  Currently this is always an `unsigned long', but on
-some systems it will be an `unsigned long long' in the future .
-
-   "Random state" means an algorithm selection and current state data.
-The C data type for such objects is `gmp_randstate_t'.  For example:
-
-     gmp_randstate_t rstate;
-
-   Also, in general `mp_bitcnt_t' is used for bit counts and ranges, and
-`size_t' is used for byte or character counts.
-
-\1f
-File: gmp.info,  Node: Function Classes,  Next: Variable Conventions,  Prev: Nomenclature and Types,  Up: GMP Basics
-
-3.3 Function Classes
-====================
-
-There are six classes of functions in the GMP library:
-
-  1. Functions for signed integer arithmetic, with names beginning with
-     `mpz_'.  The associated type is `mpz_t'.  There are about 150
-     functions in this class.  (*note Integer Functions::)
-
-  2. Functions for rational number arithmetic, with names beginning with
-     `mpq_'.  The associated type is `mpq_t'.  There are about 40
-     functions in this class, but the integer functions can be used for
-     arithmetic on the numerator and denominator separately.  (*note
-     Rational Number Functions::)
-
-  3. Functions for floating-point arithmetic, with names beginning with
-     `mpf_'.  The associated type is `mpf_t'.  There are about 60
-     functions is this class.  (*note Floating-point Functions::)
-
-  4. Functions compatible with Berkeley MP, such as `itom', `madd', and
-     `mult'.  The associated type is `MINT'.  (*note BSD Compatible
-     Functions::)
-
-  5. Fast low-level functions that operate on natural numbers.  These
-     are used by the functions in the preceding groups, and you can
-     also call them directly from very time-critical user programs.
-     These functions' names begin with `mpn_'.  The associated type is
-     array of `mp_limb_t'.  There are about 30 (hard-to-use) functions
-     in this class.  (*note Low-level Functions::)
-
-  6. Miscellaneous functions.  Functions for setting up custom
-     allocation and functions for generating random numbers.  (*note
-     Custom Allocation::, and *note Random Number Functions::)
-
-\1f
-File: gmp.info,  Node: Variable Conventions,  Next: Parameter Conventions,  Prev: Function Classes,  Up: GMP Basics
-
-3.4 Variable Conventions
-========================
-
-GMP functions generally have output arguments before input arguments.
-This notation is by analogy with the assignment operator.  The BSD MP
-compatibility functions are exceptions, having the output arguments
-last.
-
-   GMP lets you use the same variable for both input and output in one
-call.  For example, the main function for integer multiplication,
-`mpz_mul', can be used to square `x' and put the result back in `x' with
-
-     mpz_mul (x, x, x);
-
-   Before you can assign to a GMP variable, you need to initialize it
-by calling one of the special initialization functions.  When you're
-done with a variable, you need to clear it out, using one of the
-functions for that purpose.  Which function to use depends on the type
-of variable.  See the chapters on integer functions, rational number
-functions, and floating-point functions for details.
-
-   A variable should only be initialized once, or at least cleared
-between each initialization.  After a variable has been initialized, it
-may be assigned to any number of times.
-
-   For efficiency reasons, avoid excessive initializing and clearing.
-In general, initialize near the start of a function and clear near the
-end.  For example,
-
-     void
-     foo (void)
-     {
-       mpz_t  n;
-       int    i;
-       mpz_init (n);
-       for (i = 1; i < 100; i++)
-         {
-           mpz_mul (n, ...);
-           mpz_fdiv_q (n, ...);
-           ...
-         }
-       mpz_clear (n);
-     }
-
-\1f
-File: gmp.info,  Node: Parameter Conventions,  Next: Memory Management,  Prev: Variable Conventions,  Up: GMP Basics
-
-3.5 Parameter Conventions
-=========================
-
-When a GMP variable is used as a function parameter, it's effectively a
-call-by-reference, meaning if the function stores a value there it will
-change the original in the caller.  Parameters which are input-only can
-be designated `const' to provoke a compiler error or warning on
-attempting to modify them.
-
-   When a function is going to return a GMP result, it should designate
-a parameter that it sets, like the library functions do.  More than one
-value can be returned by having more than one output parameter, again
-like the library functions.  A `return' of an `mpz_t' etc doesn't
-return the object, only a pointer, and this is almost certainly not
-what's wanted.
-
-   Here's an example accepting an `mpz_t' parameter, doing a
-calculation, and storing the result to the indicated parameter.
-
-     void
-     foo (mpz_t result, const mpz_t param, unsigned long n)
-     {
-       unsigned long  i;
-       mpz_mul_ui (result, param, n);
-       for (i = 1; i < n; i++)
-         mpz_add_ui (result, result, i*7);
-     }
-
-     int
-     main (void)
-     {
-       mpz_t  r, n;
-       mpz_init (r);
-       mpz_init_set_str (n, "123456", 0);
-       foo (r, n, 20L);
-       gmp_printf ("%Zd\n", r);
-       return 0;
-     }
-
-   `foo' works even if the mainline passes the same variable for
-`param' and `result', just like the library functions.  But sometimes
-it's tricky to make that work, and an application might not want to
-bother supporting that sort of thing.
-
-   For interest, the GMP types `mpz_t' etc are implemented as
-one-element arrays of certain structures.  This is why declaring a
-variable creates an object with the fields GMP needs, but then using it
-as a parameter passes a pointer to the object.  Note that the actual
-fields in each `mpz_t' etc are for internal use only and should not be
-accessed directly by code that expects to be compatible with future GMP
-releases.
-
-\1f
-File: gmp.info,  Node: Memory Management,  Next: Reentrancy,  Prev: Parameter Conventions,  Up: GMP Basics
-
-3.6 Memory Management
-=====================
-
-The GMP types like `mpz_t' are small, containing only a couple of sizes,
-and pointers to allocated data.  Once a variable is initialized, GMP
-takes care of all space allocation.  Additional space is allocated
-whenever a variable doesn't have enough.
-
-   `mpz_t' and `mpq_t' variables never reduce their allocated space.
-Normally this is the best policy, since it avoids frequent reallocation.
-Applications that need to return memory to the heap at some particular
-point can use `mpz_realloc2', or clear variables no longer needed.
-
-   `mpf_t' variables, in the current implementation, use a fixed amount
-of space, determined by the chosen precision and allocated at
-initialization, so their size doesn't change.
-
-   All memory is allocated using `malloc' and friends by default, but
-this can be changed, see *Note Custom Allocation::.  Temporary memory
-on the stack is also used (via `alloca'), but this can be changed at
-build-time if desired, see *Note Build Options::.
-
-\1f
-File: gmp.info,  Node: Reentrancy,  Next: Useful Macros and Constants,  Prev: Memory Management,  Up: GMP Basics
-
-3.7 Reentrancy
-==============
-
-GMP is reentrant and thread-safe, with some exceptions:
-
-   * If configured with `--enable-alloca=malloc-notreentrant' (or with
-     `--enable-alloca=notreentrant' when `alloca' is not available),
-     then naturally GMP is not reentrant.
-
-   * `mpf_set_default_prec' and `mpf_init' use a global variable for the
-     selected precision.  `mpf_init2' can be used instead, and in the
-     C++ interface an explicit precision to the `mpf_class' constructor.
-
-   * `mpz_random' and the other old random number functions use a global
-     random state and are hence not reentrant.  The newer random number
-     functions that accept a `gmp_randstate_t' parameter can be used
-     instead.
-
-   * `gmp_randinit' (obsolete) returns an error indication through a
-     global variable, which is not thread safe.  Applications are
-     advised to use `gmp_randinit_default' or `gmp_randinit_lc_2exp'
-     instead.
-
-   * `mp_set_memory_functions' uses global variables to store the
-     selected memory allocation functions.
-
-   * If the memory allocation functions set by a call to
-     `mp_set_memory_functions' (or `malloc' and friends by default) are
-     not reentrant, then GMP will not be reentrant either.
-
-   * If the standard I/O functions such as `fwrite' are not reentrant
-     then the GMP I/O functions using them will not be reentrant either.
-
-   * It's safe for two threads to read from the same GMP variable
-     simultaneously, but it's not safe for one to read while the
-     another might be writing, nor for two threads to write
-     simultaneously.  It's not safe for two threads to generate a
-     random number from the same `gmp_randstate_t' simultaneously,
-     since this involves an update of that variable.
-
-\1f
-File: gmp.info,  Node: Useful Macros and Constants,  Next: Compatibility with older versions,  Prev: Reentrancy,  Up: GMP Basics
-
-3.8 Useful Macros and Constants
-===============================
-
- -- Global Constant: const int mp_bits_per_limb
-     The number of bits per limb.
-
- -- Macro: __GNU_MP_VERSION
- -- Macro: __GNU_MP_VERSION_MINOR
- -- Macro: __GNU_MP_VERSION_PATCHLEVEL
-     The major and minor GMP version, and patch level, respectively, as
-     integers.  For GMP i.j, these numbers will be i, j, and 0,
-     respectively.  For GMP i.j.k, these numbers will be i, j, and k,
-     respectively.
-
- -- Global Constant: const char * const gmp_version
-     The GMP version number, as a null-terminated string, in the form
-     "i.j.k".  This release is "5.0.1".  Note that the format "i.j" was
-     used when k was zero was used before version 4.3.0.
-
- -- Macro: __GMP_CC
- -- Macro: __GMP_CFLAGS
-     The compiler and compiler flags, respectively, used when compiling
-     GMP, as strings.
-
-\1f
-File: gmp.info,  Node: Compatibility with older versions,  Next: Demonstration Programs,  Prev: Useful Macros and Constants,  Up: GMP Basics
-
-3.9 Compatibility with older versions
-=====================================
-
-This version of GMP is upwardly binary compatible with all 4.x and 3.x
-versions, and upwardly compatible at the source level with all 2.x
-versions, with the following exceptions.
-
-   * `mpn_gcd' had its source arguments swapped as of GMP 3.0, for
-     consistency with other `mpn' functions.
-
-   * `mpf_get_prec' counted precision slightly differently in GMP 3.0
-     and 3.0.1, but in 3.1 reverted to the 2.x style.
-
-   There are a number of compatibility issues between GMP 1 and GMP 2
-that of course also apply when porting applications from GMP 1 to GMP
-4.  Please see the GMP 2 manual for details.
-
-   The Berkeley MP compatibility library (*note BSD Compatible
-Functions::) is source and binary compatible with the standard `libmp'.
-
-\1f
-File: gmp.info,  Node: Demonstration Programs,  Next: Efficiency,  Prev: Compatibility with older versions,  Up: GMP Basics
-
-3.10 Demonstration programs
-===========================
-
-The `demos' subdirectory has some sample programs using GMP.  These
-aren't built or installed, but there's a `Makefile' with rules for them.
-For instance,
-
-     make pexpr
-     ./pexpr 68^975+10
-
-The following programs are provided
-
-   * `pexpr' is an expression evaluator, the program used on the GMP
-     web page.
-
-   * The `calc' subdirectory has a similar but simpler evaluator using
-     `lex' and `yacc'.
-
-   * The `expr' subdirectory is yet another expression evaluator, a
-     library designed for ease of use within a C program.  See
-     `demos/expr/README' for more information.
-
-   * `factorize' is a Pollard-Rho factorization program.
-
-   * `isprime' is a command-line interface to the `mpz_probab_prime_p'
-     function.
-
-   * `primes' counts or lists primes in an interval, using a sieve.
-
-   * `qcn' is an example use of `mpz_kronecker_ui' to estimate quadratic
-     class numbers.
-
-   * The `perl' subdirectory is a comprehensive perl interface to GMP.
-     See `demos/perl/INSTALL' for more information.  Documentation is
-     in POD format in `demos/perl/GMP.pm'.
-
-   As an aside, consideration has been given at various times to some
-sort of expression evaluation within the main GMP library.  Going
-beyond something minimal quickly leads to matters like user-defined
-functions, looping, fixnums for control variables, etc, which are
-considered outside the scope of GMP (much closer to language
-interpreters or compilers, *Note Language Bindings::.)  Something
-simple for program input convenience may yet be a possibility, a
-combination of the `expr' demo and the `pexpr' tree back-end perhaps.
-But for now the above evaluators are offered as illustrations.
-
-\1f
-File: gmp.info,  Node: Efficiency,  Next: Debugging,  Prev: Demonstration Programs,  Up: GMP Basics
-
-3.11 Efficiency
-===============
-
-Small Operands
-     On small operands, the time for function call overheads and memory
-     allocation can be significant in comparison to actual calculation.
-     This is unavoidable in a general purpose variable precision
-     library, although GMP attempts to be as efficient as it can on
-     both large and small operands.
-
-Static Linking
-     On some CPUs, in particular the x86s, the static `libgmp.a' should
-     be used for maximum speed, since the PIC code in the shared
-     `libgmp.so' will have a small overhead on each function call and
-     global data address.  For many programs this will be
-     insignificant, but for long calculations there's a gain to be had.
-
-Initializing and Clearing
-     Avoid excessive initializing and clearing of variables, since this
-     can be quite time consuming, especially in comparison to otherwise
-     fast operations like addition.
-
-     A language interpreter might want to keep a free list or stack of
-     initialized variables ready for use.  It should be possible to
-     integrate something like that with a garbage collector too.
-
-Reallocations
-     An `mpz_t' or `mpq_t' variable used to hold successively increasing
-     values will have its memory repeatedly `realloc'ed, which could be
-     quite slow or could fragment memory, depending on the C library.
-     If an application can estimate the final size then `mpz_init2' or
-     `mpz_realloc2' can be called to allocate the necessary space from
-     the beginning (*note Initializing Integers::).
-
-     It doesn't matter if a size set with `mpz_init2' or `mpz_realloc2'
-     is too small, since all functions will do a further reallocation
-     if necessary.  Badly overestimating memory required will waste
-     space though.
-
-`2exp' Functions
-     It's up to an application to call functions like `mpz_mul_2exp'
-     when appropriate.  General purpose functions like `mpz_mul' make
-     no attempt to identify powers of two or other special forms,
-     because such inputs will usually be very rare and testing every
-     time would be wasteful.
-
-`ui' and `si' Functions
-     The `ui' functions and the small number of `si' functions exist for
-     convenience and should be used where applicable.  But if for
-     example an `mpz_t' contains a value that fits in an `unsigned
-     long' there's no need extract it and call a `ui' function, just
-     use the regular `mpz' function.
-
-In-Place Operations
-     `mpz_abs', `mpq_abs', `mpf_abs', `mpz_neg', `mpq_neg' and
-     `mpf_neg' are fast when used for in-place operations like
-     `mpz_abs(x,x)', since in the current implementation only a single
-     field of `x' needs changing.  On suitable compilers (GCC for
-     instance) this is inlined too.
-
-     `mpz_add_ui', `mpz_sub_ui', `mpf_add_ui' and `mpf_sub_ui' benefit
-     from an in-place operation like `mpz_add_ui(x,x,y)', since usually
-     only one or two limbs of `x' will need to be changed.  The same
-     applies to the full precision `mpz_add' etc if `y' is small.  If
-     `y' is big then cache locality may be helped, but that's all.
-
-     `mpz_mul' is currently the opposite, a separate destination is
-     slightly better.  A call like `mpz_mul(x,x,y)' will, unless `y' is
-     only one limb, make a temporary copy of `x' before forming the
-     result.  Normally that copying will only be a tiny fraction of the
-     time for the multiply, so this is not a particularly important
-     consideration.
-
-     `mpz_set', `mpq_set', `mpq_set_num', `mpf_set', etc, make no
-     attempt to recognise a copy of something to itself, so a call like
-     `mpz_set(x,x)' will be wasteful.  Naturally that would never be
-     written deliberately, but if it might arise from two pointers to
-     the same object then a test to avoid it might be desirable.
-
-          if (x != y)
-            mpz_set (x, y);
-
-     Note that it's never worth introducing extra `mpz_set' calls just
-     to get in-place operations.  If a result should go to a particular
-     variable then just direct it there and let GMP take care of data
-     movement.
-
-Divisibility Testing (Small Integers)
-     `mpz_divisible_ui_p' and `mpz_congruent_ui_p' are the best
-     functions for testing whether an `mpz_t' is divisible by an
-     individual small integer.  They use an algorithm which is faster
-     than `mpz_tdiv_ui', but which gives no useful information about
-     the actual remainder, only whether it's zero (or a particular
-     value).
-
-     However when testing divisibility by several small integers, it's
-     best to take a remainder modulo their product, to save
-     multi-precision operations.  For instance to test whether a number
-     is divisible by any of 23, 29 or 31 take a remainder modulo
-     23*29*31 = 20677 and then test that.
-
-     The division functions like `mpz_tdiv_q_ui' which give a quotient
-     as well as a remainder are generally a little slower than the
-     remainder-only functions like `mpz_tdiv_ui'.  If the quotient is
-     only rarely wanted then it's probably best to just take a
-     remainder and then go back and calculate the quotient if and when
-     it's wanted (`mpz_divexact_ui' can be used if the remainder is
-     zero).
-
-Rational Arithmetic
-     The `mpq' functions operate on `mpq_t' values with no common
-     factors in the numerator and denominator.  Common factors are
-     checked-for and cast out as necessary.  In general, cancelling
-     factors every time is the best approach since it minimizes the
-     sizes for subsequent operations.
-
-     However, applications that know something about the factorization
-     of the values they're working with might be able to avoid some of
-     the GCDs used for canonicalization, or swap them for divisions.
-     For example when multiplying by a prime it's enough to check for
-     factors of it in the denominator instead of doing a full GCD.  Or
-     when forming a big product it might be known that very little
-     cancellation will be possible, and so canonicalization can be left
-     to the end.
-
-     The `mpq_numref' and `mpq_denref' macros give access to the
-     numerator and denominator to do things outside the scope of the
-     supplied `mpq' functions.  *Note Applying Integer Functions::.
-
-     The canonical form for rationals allows mixed-type `mpq_t' and
-     integer additions or subtractions to be done directly with
-     multiples of the denominator.  This will be somewhat faster than
-     `mpq_add'.  For example,
-
-          /* mpq increment */
-          mpz_add (mpq_numref(q), mpq_numref(q), mpq_denref(q));
-
-          /* mpq += unsigned long */
-          mpz_addmul_ui (mpq_numref(q), mpq_denref(q), 123UL);
-
-          /* mpq -= mpz */
-          mpz_submul (mpq_numref(q), mpq_denref(q), z);
-
-Number Sequences
-     Functions like `mpz_fac_ui', `mpz_fib_ui' and `mpz_bin_uiui' are
-     designed for calculating isolated values.  If a range of values is
-     wanted it's probably best to call to get a starting point and
-     iterate from there.
-
-Text Input/Output
-     Hexadecimal or octal are suggested for input or output in text
-     form.  Power-of-2 bases like these can be converted much more
-     efficiently than other bases, like decimal.  For big numbers
-     there's usually nothing of particular interest to be seen in the
-     digits, so the base doesn't matter much.
-
-     Maybe we can hope octal will one day become the normal base for
-     everyday use, as proposed by King Charles XII of Sweden and later
-     reformers.
-
-\1f
-File: gmp.info,  Node: Debugging,  Next: Profiling,  Prev: Efficiency,  Up: GMP Basics
-
-3.12 Debugging
-==============
-
-Stack Overflow
-     Depending on the system, a segmentation violation or bus error
-     might be the only indication of stack overflow.  See
-     `--enable-alloca' choices in *Note Build Options::, for how to
-     address this.
-
-     In new enough versions of GCC, `-fstack-check' may be able to
-     ensure an overflow is recognised by the system before too much
-     damage is done, or `-fstack-limit-symbol' or
-     `-fstack-limit-register' may be able to add checking if the system
-     itself doesn't do any (*note Options for Code Generation:
-     (gcc)Code Gen Options.).  These options must be added to the
-     `CFLAGS' used in the GMP build (*note Build Options::), adding
-     them just to an application will have no effect.  Note also
-     they're a slowdown, adding overhead to each function call and each
-     stack allocation.
-
-Heap Problems
-     The most likely cause of application problems with GMP is heap
-     corruption.  Failing to `init' GMP variables will have
-     unpredictable effects, and corruption arising elsewhere in a
-     program may well affect GMP.  Initializing GMP variables more than
-     once or failing to clear them will cause memory leaks.
-
-     In all such cases a `malloc' debugger is recommended.  On a GNU or
-     BSD system the standard C library `malloc' has some diagnostic
-     facilities, see *Note Allocation Debugging: (libc)Allocation
-     Debugging, or `man 3 malloc'.  Other possibilities, in no
-     particular order, include
-
-          `http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/'
-          `http://dmalloc.com/'
-          `http://www.perens.com/FreeSoftware/'  (electric fence)
-          `http://packages.debian.org/stable/devel/fda'
-          `http://www.gnupdate.org/components/leakbug/'
-          `http://people.redhat.com/~otaylor/memprof/'
-          `http://www.cbmamiga.demon.co.uk/mpatrol/'
-
-     The GMP default allocation routines in `memory.c' also have a
-     simple sentinel scheme which can be enabled with `#define DEBUG'
-     in that file.  This is mainly designed for detecting buffer
-     overruns during GMP development, but might find other uses.
-
-Stack Backtraces
-     On some systems the compiler options GMP uses by default can
-     interfere with debugging.  In particular on x86 and 68k systems
-     `-fomit-frame-pointer' is used and this generally inhibits stack
-     backtracing.  Recompiling without such options may help while
-     debugging, though the usual caveats about it potentially moving a
-     memory problem or hiding a compiler bug will apply.
-
-GDB, the GNU Debugger
-     A sample `.gdbinit' is included in the distribution, showing how
-     to call some undocumented dump functions to print GMP variables
-     from within GDB.  Note that these functions shouldn't be used in
-     final application code since they're undocumented and may be
-     subject to incompatible changes in future versions of GMP.
-
-Source File Paths
-     GMP has multiple source files with the same name, in different
-     directories.  For example `mpz', `mpq' and `mpf' each have an
-     `init.c'.  If the debugger can't already determine the right one
-     it may help to build with absolute paths on each C file.  One way
-     to do that is to use a separate object directory with an absolute
-     path to the source directory.
-
-          cd /my/build/dir
-          /my/source/dir/gmp-5.0.1/configure
-
-     This works via `VPATH', and might require GNU `make'.  Alternately
-     it might be possible to change the `.c.lo' rules appropriately.
-
-Assertion Checking
-     The build option `--enable-assert' is available to add some
-     consistency checks to the library (see *Note Build Options::).
-     These are likely to be of limited value to most applications.
-     Assertion failures are just as likely to indicate memory
-     corruption as a library or compiler bug.
-
-     Applications using the low-level `mpn' functions, however, will
-     benefit from `--enable-assert' since it adds checks on the
-     parameters of most such functions, many of which have subtle
-     restrictions on their usage.  Note however that only the generic C
-     code has checks, not the assembly code, so CPU `none' should be
-     used for maximum checking.
-
-Temporary Memory Checking
-     The build option `--enable-alloca=debug' arranges that each block
-     of temporary memory in GMP is allocated with a separate call to
-     `malloc' (or the allocation function set with
-     `mp_set_memory_functions').
-
-     This can help a malloc debugger detect accesses outside the
-     intended bounds, or detect memory not released.  In a normal
-     build, on the other hand, temporary memory is allocated in blocks
-     which GMP divides up for its own use, or may be allocated with a
-     compiler builtin `alloca' which will go nowhere near any malloc
-     debugger hooks.
-
-Maximum Debuggability
-     To summarize the above, a GMP build for maximum debuggability
-     would be
-
-          ./configure --disable-shared --enable-assert \
-            --enable-alloca=debug --host=none CFLAGS=-g
-
-     For C++, add `--enable-cxx CXXFLAGS=-g'.
-
-Checker
-     The GCC checker (`http://savannah.nongnu.org/projects/checker/')
-     can be used with GMP.  It contains a stub library which means GMP
-     applications compiled with checker can use a normal GMP build.
-
-     A build of GMP with checking within GMP itself can be made.  This
-     will run very very slowly.  On GNU/Linux for example,
-
-          ./configure --host=none-pc-linux-gnu CC=checkergcc
-
-     `--host=none' must be used, since the GMP assembly code doesn't
-     support the checking scheme.  The GMP C++ features cannot be used,
-     since current versions of checker (0.9.9.1) don't yet support the
-     standard C++ library.
-
-Valgrind
-     The valgrind program (`http://valgrind.org/') is a memory checker
-     for x86s.  It translates and emulates machine instructions to do
-     strong checks for uninitialized data (at the level of individual
-     bits), memory accesses through bad pointers, and memory leaks.
-
-     Recent versions of Valgrind are getting support for MMX and
-     SSE/SSE2 instructions, for past versions GMP will need to be
-     configured not to use those, ie. for an x86 without them (for
-     instance plain `i486').
-
-Other Problems
-     Any suspected bug in GMP itself should be isolated to make sure
-     it's not an application problem, see *Note Reporting Bugs::.
-
-\1f
-File: gmp.info,  Node: Profiling,  Next: Autoconf,  Prev: Debugging,  Up: GMP Basics
-
-3.13 Profiling
-==============
-
-Running a program under a profiler is a good way to find where it's
-spending most time and where improvements can be best sought.  The
-profiling choices for a GMP build are as follows.
-
-`--disable-profiling'
-     The default is to add nothing special for profiling.
-
-     It should be possible to just compile the mainline of a program
-     with `-p' and use `prof' to get a profile consisting of
-     timer-based sampling of the program counter.  Most of the GMP
-     assembly code has the necessary symbol information.
-
-     This approach has the advantage of minimizing interference with
-     normal program operation, but on most systems the resolution of
-     the sampling is quite low (10 milliseconds for instance),
-     requiring long runs to get accurate information.
-
-`--enable-profiling=prof'
-     Build with support for the system `prof', which means `-p' added
-     to the `CFLAGS'.
-
-     This provides call counting in addition to program counter
-     sampling, which allows the most frequently called routines to be
-     identified, and an average time spent in each routine to be
-     determined.
-
-     The x86 assembly code has support for this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-p' and therefore won't appear in the call counts.
-
-     On some systems, such as GNU/Linux, `-p' in fact means `-pg' and in
-     this case `--enable-profiling=gprof' described below should be used
-     instead.
-
-`--enable-profiling=gprof'
-     Build with support for `gprof', which means `-pg' added to the
-     `CFLAGS'.
-
-     This provides call graph construction in addition to call counting
-     and program counter sampling, which makes it possible to count
-     calls coming from different locations.  For example the number of
-     calls to `mpn_mul' from `mpz_mul' versus the number from
-     `mpf_mul'.  The program counter sampling is still flat though, so
-     only a total time in `mpn_mul' would be accumulated, not a
-     separate amount for each call site.
-
-     The x86 assembly code has support for this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-pg' and therefore not be included in the call counts.
-
-     On x86 and m68k systems `-pg' and `-fomit-frame-pointer' are
-     incompatible, so the latter is omitted from the default flags in
-     that case, which might result in poorer code generation.
-
-     Incidentally, it should be possible to use the `gprof' program
-     with a plain `--enable-profiling=prof' build.  But in that case
-     only the `gprof -p' flat profile and call counts can be expected
-     to be valid, not the `gprof -q' call graph.
-
-`--enable-profiling=instrument'
-     Build with the GCC option `-finstrument-functions' added to the
-     `CFLAGS' (*note Options for Code Generation: (gcc)Code Gen
-     Options.).
-
-     This inserts special instrumenting calls at the start and end of
-     each function, allowing exact timing and full call graph
-     construction.
-
-     This instrumenting is not normally a standard system feature and
-     will require support from an external library, such as
-
-          `http://sourceforge.net/projects/fnccheck/'
-
-     This should be included in `LIBS' during the GMP configure so that
-     test programs will link.  For example,
-
-          ./configure --enable-profiling=instrument LIBS=-lfc
-
-     On a GNU system the C library provides dummy instrumenting
-     functions, so programs compiled with this option will link.  In
-     this case it's only necessary to ensure the correct library is
-     added when linking an application.
-
-     The x86 assembly code supports this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-finstrument-functions' meaning time spent in them will
-     effectively be attributed to their caller.
-
-\1f
-File: gmp.info,  Node: Autoconf,  Next: Emacs,  Prev: Profiling,  Up: GMP Basics
-
-3.14 Autoconf
-=============
-
-Autoconf based applications can easily check whether GMP is installed.
-The only thing to be noted is that GMP library symbols from version 3
-onwards have prefixes like `__gmpz'.  The following therefore would be
-a simple test,
-
-     AC_CHECK_LIB(gmp, __gmpz_init)
-
-   This just uses the default `AC_CHECK_LIB' actions for found or not
-found, but an application that must have GMP would want to generate an
-error if not found.  For example,
-
-     AC_CHECK_LIB(gmp, __gmpz_init, ,
-       [AC_MSG_ERROR([GNU MP not found, see http://gmplib.org/])])
-
-   If functions added in some particular version of GMP are required,
-then one of those can be used when checking.  For example `mpz_mul_si'
-was added in GMP 3.1,
-
-     AC_CHECK_LIB(gmp, __gmpz_mul_si, ,
-       [AC_MSG_ERROR(
-       [GNU MP not found, or not 3.1 or up, see http://gmplib.org/])])
-
-   An alternative would be to test the version number in `gmp.h' using
-say `AC_EGREP_CPP'.  That would make it possible to test the exact
-version, if some particular sub-minor release is known to be necessary.
-
-   In general it's recommended that applications should simply demand a
-new enough GMP rather than trying to provide supplements for features
-not available in past versions.
-
-   Occasionally an application will need or want to know the size of a
-type at configuration or preprocessing time, not just with `sizeof' in
-the code.  This can be done in the normal way with `mp_limb_t' etc, but
-GMP 4.0 or up is best for this, since prior versions needed certain
-`-D' defines on systems using a `long long' limb.  The following would
-suit Autoconf 2.50 or up,
-
-     AC_CHECK_SIZEOF(mp_limb_t, , [#include <gmp.h>])
-
-\1f
-File: gmp.info,  Node: Emacs,  Prev: Autoconf,  Up: GMP Basics
-
-3.15 Emacs
-==========
-
-<C-h C-i> (`info-lookup-symbol') is a good way to find documentation on
-C functions while editing (*note Info Documentation Lookup: (emacs)Info
-Lookup.).
-
-   The GMP manual can be included in such lookups by putting the
-following in your `.emacs',
-
-     (eval-after-load "info-look"
-       '(let ((mode-value (assoc 'c-mode (assoc 'symbol info-lookup-alist))))
-          (setcar (nthcdr 3 mode-value)
-                  (cons '("(gmp)Function Index" nil "^ -.* " "\\>")
-                        (nth 3 mode-value)))))
-
-\1f
-File: gmp.info,  Node: Reporting Bugs,  Next: Integer Functions,  Prev: GMP Basics,  Up: Top
-
-4 Reporting Bugs
-****************
-
-If you think you have found a bug in the GMP library, please
-investigate it and report it.  We have made this library available to
-you, and it is not too much to ask you to report the bugs you find.
-
-   Before you report a bug, check it's not already addressed in *Note
-Known Build Problems::, or perhaps *Note Notes for Particular
-Systems::.  You may also want to check `http://gmplib.org/' for patches
-for this release.
-
-   Please include the following in any report,
-
-   * The GMP version number, and if pre-packaged or patched then say so.
-
-   * A test program that makes it possible for us to reproduce the bug.
-     Include instructions on how to run the program.
-
-   * A description of what is wrong.  If the results are incorrect, in
-     what way.  If you get a crash, say so.
-
-   * If you get a crash, include a stack backtrace from the debugger if
-     it's informative (`where' in `gdb', or `$C' in `adb').
-
-   * Please do not send core dumps, executables or `strace's.
-
-   * The configuration options you used when building GMP, if any.
-
-   * The name of the compiler and its version.  For `gcc', get the
-     version with `gcc -v', otherwise perhaps `what `which cc`', or
-     similar.
-
-   * The output from running `uname -a'.
-
-   * The output from running `./config.guess', and from running
-     `./configfsf.guess' (might be the same).
-
-   * If the bug is related to `configure', then the compressed contents
-     of `config.log'.
-
-   * If the bug is related to an `asm' file not assembling, then the
-     contents of `config.m4' and the offending line or lines from the
-     temporary `mpn/tmp-<file>.s'.
-
-   Please make an effort to produce a self-contained report, with
-something definite that can be tested or debugged.  Vague queries or
-piecemeal messages are difficult to act on and don't help the
-development effort.
-
-   It is not uncommon that an observed problem is actually due to a bug
-in the compiler; the GMP code tends to explore interesting corners in
-compilers.
-
-   If your bug report is good, we will do our best to help you get a
-corrected version of the library; if the bug report is poor, we won't
-do anything about it (except maybe ask you to send a better report).
-
-   Send your report to: <gmp-bugs@gmplib.org>.
-
-   If you think something in this manual is unclear, or downright
-incorrect, or if the language needs to be improved, please send a note
-to the same address.
-
-\1f
-File: gmp.info,  Node: Integer Functions,  Next: Rational Number Functions,  Prev: Reporting Bugs,  Up: Top
-
-5 Integer Functions
-*******************
-
-This chapter describes the GMP functions for performing integer
-arithmetic.  These functions start with the prefix `mpz_'.
-
-   GMP integers are stored in objects of type `mpz_t'.
-
-* Menu:
-
-* Initializing Integers::
-* Assigning Integers::
-* Simultaneous Integer Init & Assign::
-* Converting Integers::
-* Integer Arithmetic::
-* Integer Division::
-* Integer Exponentiation::
-* Integer Roots::
-* Number Theoretic Functions::
-* Integer Comparisons::
-* Integer Logic and Bit Fiddling::
-* I/O of Integers::
-* Integer Random Numbers::
-* Integer Import and Export::
-* Miscellaneous Integer Functions::
-* Integer Special Functions::
-
-\1f
-File: gmp.info,  Node: Initializing Integers,  Next: Assigning Integers,  Prev: Integer Functions,  Up: Integer Functions
-
-5.1 Initialization Functions
-============================
-
-The functions for integer arithmetic assume that all integer objects are
-initialized.  You do that by calling the function `mpz_init'.  For
-example,
-
-     {
-       mpz_t integ;
-       mpz_init (integ);
-       ...
-       mpz_add (integ, ...);
-       ...
-       mpz_sub (integ, ...);
-
-       /* Unless the program is about to exit, do ... */
-       mpz_clear (integ);
-     }
-
-   As you can see, you can store new values any number of times, once an
-object is initialized.
-
- -- Function: void mpz_init (mpz_t X)
-     Initialize X, and set its value to 0.
-
- -- Function: void mpz_inits (mpz_t X, ...)
-     Initialize a NULL-terminated list of `mpz_t' variables, and set
-     their values to 0.
-
- -- Function: void mpz_init2 (mpz_t X, mp_bitcnt_t N)
-     Initialize X, with space for N-bit numbers, and set its value to 0.
-     Calling this function instead of `mpz_init' or `mpz_inits' is never
-     necessary; reallocation is handled automatically by GMP when
-     needed.
-
-     N is only the initial space, X will grow automatically in the
-     normal way, if necessary, for subsequent values stored.
-     `mpz_init2' makes it possible to avoid such reallocations if a
-     maximum size is known in advance.
-
- -- Function: void mpz_clear (mpz_t X)
-     Free the space occupied by X.  Call this function for all `mpz_t'
-     variables when you are done with them.
-
- -- Function: void mpz_clears (mpz_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpz_t'
-     variables.
-
- -- Function: void mpz_realloc2 (mpz_t X, mp_bitcnt_t N)
-     Change the space allocated for X to N bits.  The value in X is
-     preserved if it fits, or is set to 0 if not.
-
-     Calling this function is never necessary; reallocation is handled
-     automatically by GMP when needed.  But this function can be used
-     to increase the space for a variable in order to avoid repeated
-     automatic reallocations, or to decrease it to give memory back to
-     the heap.
-
-\1f
-File: gmp.info,  Node: Assigning Integers,  Next: Simultaneous Integer Init & Assign,  Prev: Initializing Integers,  Up: Integer Functions
-
-5.2 Assignment Functions
-========================
-
-These functions assign new values to already initialized integers
-(*note Initializing Integers::).
-
- -- Function: void mpz_set (mpz_t ROP, mpz_t OP)
- -- Function: void mpz_set_ui (mpz_t ROP, unsigned long int OP)
- -- Function: void mpz_set_si (mpz_t ROP, signed long int OP)
- -- Function: void mpz_set_d (mpz_t ROP, double OP)
- -- Function: void mpz_set_q (mpz_t ROP, mpq_t OP)
- -- Function: void mpz_set_f (mpz_t ROP, mpf_t OP)
-     Set the value of ROP from OP.
-
-     `mpz_set_d', `mpz_set_q' and `mpz_set_f' truncate OP to make it an
-     integer.
-
- -- Function: int mpz_set_str (mpz_t ROP, char *STR, int BASE)
-     Set the value of ROP from STR, a null-terminated C string in base
-     BASE.  White space is allowed in the string, and is simply ignored.
-
-     The BASE may vary from 2 to 62, or if BASE is 0, then the leading
-     characters are used: `0x' and `0X' for hexadecimal, `0b' and `0B'
-     for binary, `0' for octal, or decimal otherwise.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value.  For bases 37 to 62, upper-case
-     letter represent the usual 10..35 while lower-case letter
-     represent 36..61.
-
-     This function returns 0 if the entire string is a valid number in
-     base BASE.  Otherwise it returns -1.
-
- -- Function: void mpz_swap (mpz_t ROP1, mpz_t ROP2)
-     Swap the values ROP1 and ROP2 efficiently.
-
-\1f
-File: gmp.info,  Node: Simultaneous Integer Init & Assign,  Next: Converting Integers,  Prev: Assigning Integers,  Up: Integer Functions
-
-5.3 Combined Initialization and Assignment Functions
-====================================================
-
-For convenience, GMP provides a parallel series of initialize-and-set
-functions which initialize the output and then store the value there.
-These functions' names have the form `mpz_init_set...'
-
-   Here is an example of using one:
-
-     {
-       mpz_t pie;
-       mpz_init_set_str (pie, "3141592653589793238462643383279502884", 10);
-       ...
-       mpz_sub (pie, ...);
-       ...
-       mpz_clear (pie);
-     }
-
-Once the integer has been initialized by any of the `mpz_init_set...'
-functions, it can be used as the source or destination operand for the
-ordinary integer functions.  Don't use an initialize-and-set function
-on a variable already initialized!
-
- -- Function: void mpz_init_set (mpz_t ROP, mpz_t OP)
- -- Function: void mpz_init_set_ui (mpz_t ROP, unsigned long int OP)
- -- Function: void mpz_init_set_si (mpz_t ROP, signed long int OP)
- -- Function: void mpz_init_set_d (mpz_t ROP, double OP)
-     Initialize ROP with limb space and set the initial numeric value
-     from OP.
-
- -- Function: int mpz_init_set_str (mpz_t ROP, char *STR, int BASE)
-     Initialize ROP and set its value like `mpz_set_str' (see its
-     documentation above for details).
-
-     If the string is a correct base BASE number, the function returns
-     0; if an error occurs it returns -1.  ROP is initialized even if
-     an error occurs.  (I.e., you have to call `mpz_clear' for it.)
-
-\1f
-File: gmp.info,  Node: Converting Integers,  Next: Integer Arithmetic,  Prev: Simultaneous Integer Init & Assign,  Up: Integer Functions
-
-5.4 Conversion Functions
-========================
-
-This section describes functions for converting GMP integers to
-standard C types.  Functions for converting _to_ GMP integers are
-described in *Note Assigning Integers:: and *Note I/O of Integers::.
-
- -- Function: unsigned long int mpz_get_ui (mpz_t OP)
-     Return the value of OP as an `unsigned long'.
-
-     If OP is too big to fit an `unsigned long' then just the least
-     significant bits that do fit are returned.  The sign of OP is
-     ignored, only the absolute value is used.
-
- -- Function: signed long int mpz_get_si (mpz_t OP)
-     If OP fits into a `signed long int' return the value of OP.
-     Otherwise return the least significant part of OP, with the same
-     sign as OP.
-
-     If OP is too big to fit in a `signed long int', the returned
-     result is probably not very useful.  To find out if the value will
-     fit, use the function `mpz_fits_slong_p'.
-
- -- Function: double mpz_get_d (mpz_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent from the conversion is too big, the result is
-     system dependent.  An infinity is returned where available.  A
-     hardware overflow trap may or may not occur.
-
- -- Function: double mpz_get_d_2exp (signed long int *EXP, mpz_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero), and returning the exponent separately.
-
-     The return value is in the range 0.5<=abs(D)<1 and the exponent is
-     stored to `*EXP'.  D * 2^EXP is the (truncated) OP value.  If OP
-     is zero, the return is 0.0 and 0 is stored to `*EXP'.
-
-     This is similar to the standard C `frexp' function (*note
-     Normalization Functions: (libc)Normalization Functions.).
-
- -- Function: char * mpz_get_str (char *STR, int BASE, mpz_t OP)
-     Convert OP to a string of digits in base BASE.  The base argument
-     may vary from 2 to 62 or from -2 to -36.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of storage large
-     enough for the result, that being `mpz_sizeinbase (OP, BASE) + 2'.
-     The two extra bytes are for a possible minus sign, and the
-     null-terminator.
-
-     A pointer to the result string is returned, being either the
-     allocated block, or the given STR.
-
-\1f
-File: gmp.info,  Node: Integer Arithmetic,  Next: Integer Division,  Prev: Converting Integers,  Up: Integer Functions
-
-5.5 Arithmetic Functions
-========================
-
- -- Function: void mpz_add (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_add_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 + OP2.
-
- -- Function: void mpz_sub (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_sub_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
- -- Function: void mpz_ui_sub (mpz_t ROP, unsigned long int OP1, mpz_t
-          OP2)
-     Set ROP to OP1 - OP2.
-
- -- Function: void mpz_mul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_mul_si (mpz_t ROP, mpz_t OP1, long int OP2)
- -- Function: void mpz_mul_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 times OP2.
-
- -- Function: void mpz_addmul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_addmul_ui (mpz_t ROP, mpz_t OP1, unsigned long
-          int OP2)
-     Set ROP to ROP + OP1 times OP2.
-
- -- Function: void mpz_submul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_submul_ui (mpz_t ROP, mpz_t OP1, unsigned long
-          int OP2)
-     Set ROP to ROP - OP1 times OP2.
-
- -- Function: void mpz_mul_2exp (mpz_t ROP, mpz_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.  This operation can also be
-     defined as a left shift by OP2 bits.
-
- -- Function: void mpz_neg (mpz_t ROP, mpz_t OP)
-     Set ROP to -OP.
-
- -- Function: void mpz_abs (mpz_t ROP, mpz_t OP)
-     Set ROP to the absolute value of OP.
-
-\1f
-File: gmp.info,  Node: Integer Division,  Next: Integer Exponentiation,  Prev: Integer Arithmetic,  Up: Integer Functions
-
-5.6 Division Functions
-======================
-
-Division is undefined if the divisor is zero.  Passing a zero divisor
-to the division or modulo functions (including the modular powering
-functions `mpz_powm' and `mpz_powm_ui'), will cause an intentional
-division by zero.  This lets a program handle arithmetic exceptions in
-these functions the same way as for normal C `int' arithmetic.
-
- -- Function: void mpz_cdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_cdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_cdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_cdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_cdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_cdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
- -- Function: void mpz_fdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_fdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_fdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_fdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_fdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_fdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
- -- Function: void mpz_tdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_tdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_tdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_tdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_tdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_tdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
-     Divide N by D, forming a quotient Q and/or remainder R.  For the
-     `2exp' functions, D=2^B.  The rounding is in three styles, each
-     suiting different applications.
-
-        * `cdiv' rounds Q up towards +infinity, and R will have the
-          opposite sign to D.  The `c' stands for "ceil".
-
-        * `fdiv' rounds Q down towards -infinity, and R will have the
-          same sign as D.  The `f' stands for "floor".
-
-        * `tdiv' rounds Q towards zero, and R will have the same sign
-          as N.  The `t' stands for "truncate".
-
-     In all cases Q and R will satisfy N=Q*D+R, and R will satisfy
-     0<=abs(R)<abs(D).
-
-     The `q' functions calculate only the quotient, the `r' functions
-     only the remainder, and the `qr' functions calculate both.  Note
-     that for `qr' the same variable cannot be passed for both Q and R,
-     or results will be unpredictable.
-
-     For the `ui' variants the return value is the remainder, and in
-     fact returning the remainder is all the `div_ui' functions do.  For
-     `tdiv' and `cdiv' the remainder can be negative, so for those the
-     return value is the absolute value of the remainder.
-
-     For the `2exp' variants the divisor is 2^B.  These functions are
-     implemented as right shifts and bit masks, but of course they
-     round the same as the other functions.
-
-     For positive N both `mpz_fdiv_q_2exp' and `mpz_tdiv_q_2exp' are
-     simple bitwise right shifts.  For negative N, `mpz_fdiv_q_2exp' is
-     effectively an arithmetic right shift treating N as twos complement
-     the same as the bitwise logical functions do, whereas
-     `mpz_tdiv_q_2exp' effectively treats N as sign and magnitude.
-
- -- Function: void mpz_mod (mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_mod_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
-     Set R to N `mod' D.  The sign of the divisor is ignored; the
-     result is always non-negative.
-
-     `mpz_mod_ui' is identical to `mpz_fdiv_r_ui' above, returning the
-     remainder as well as setting R.  See `mpz_fdiv_ui' above if only
-     the return value is wanted.
-
- -- Function: void mpz_divexact (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_divexact_ui (mpz_t Q, mpz_t N, unsigned long D)
-     Set Q to N/D.  These functions produce correct results only when
-     it is known in advance that D divides N.
-
-     These routines are much faster than the other division functions,
-     and are the best choice when exact division is known to occur, for
-     example reducing a rational to lowest terms.
-
- -- Function: int mpz_divisible_p (mpz_t N, mpz_t D)
- -- Function: int mpz_divisible_ui_p (mpz_t N, unsigned long int D)
- -- Function: int mpz_divisible_2exp_p (mpz_t N, mp_bitcnt_t B)
-     Return non-zero if N is exactly divisible by D, or in the case of
-     `mpz_divisible_2exp_p' by 2^B.
-
-     N is divisible by D if there exists an integer Q satisfying N =
-     Q*D.  Unlike the other division functions, D=0 is accepted and
-     following the rule it can be seen that only 0 is considered
-     divisible by 0.
-
- -- Function: int mpz_congruent_p (mpz_t N, mpz_t C, mpz_t D)
- -- Function: int mpz_congruent_ui_p (mpz_t N, unsigned long int C,
-          unsigned long int D)
- -- Function: int mpz_congruent_2exp_p (mpz_t N, mpz_t C, mp_bitcnt_t B)
-     Return non-zero if N is congruent to C modulo D, or in the case of
-     `mpz_congruent_2exp_p' modulo 2^B.
-
-     N is congruent to C mod D if there exists an integer Q satisfying
-     N = C + Q*D.  Unlike the other division functions, D=0 is accepted
-     and following the rule it can be seen that N and C are considered
-     congruent mod 0 only when exactly equal.
-
-\1f
-File: gmp.info,  Node: Integer Exponentiation,  Next: Integer Roots,  Prev: Integer Division,  Up: Integer Functions
-
-5.7 Exponentiation Functions
-============================
-
- -- Function: void mpz_powm (mpz_t ROP, mpz_t BASE, mpz_t EXP, mpz_t
-          MOD)
- -- Function: void mpz_powm_ui (mpz_t ROP, mpz_t BASE, unsigned long
-          int EXP, mpz_t MOD)
-     Set ROP to (BASE raised to EXP) modulo MOD.
-
-     Negative EXP is supported if an inverse BASE^-1 mod MOD exists
-     (see `mpz_invert' in *Note Number Theoretic Functions::).  If an
-     inverse doesn't exist then a divide by zero is raised.
-
- -- Function: void mpz_powm_sec (mpz_t ROP, mpz_t BASE, mpz_t EXP,
-          mpz_t MOD)
-     Set ROP to (BASE raised to EXP) modulo MOD.
-
-     It is required that EXP > 0 and that MOD is odd.
-
-     This function is designed to take the same time and have the same
-     cache access patterns for any two same-size arguments, assuming
-     that function arguments are placed at the same position and that
-     the machine state is identical upon function entry.  This function
-     is intended for cryptographic purposes, where resilience to
-     side-channel attacks is desired.
-
- -- Function: void mpz_pow_ui (mpz_t ROP, mpz_t BASE, unsigned long int
-          EXP)
- -- Function: void mpz_ui_pow_ui (mpz_t ROP, unsigned long int BASE,
-          unsigned long int EXP)
-     Set ROP to BASE raised to EXP.  The case 0^0 yields 1.
-
-\1f
-File: gmp.info,  Node: Integer Roots,  Next: Number Theoretic Functions,  Prev: Integer Exponentiation,  Up: Integer Functions
-
-5.8 Root Extraction Functions
-=============================
-
- -- Function: int mpz_root (mpz_t ROP, mpz_t OP, unsigned long int N)
-     Set ROP to  the truncated integer part of the Nth root of OP.
-     Return non-zero if the computation was exact, i.e., if OP is ROP
-     to the Nth power.
-
- -- Function: void mpz_rootrem (mpz_t ROOT, mpz_t REM, mpz_t U,
-          unsigned long int N)
-     Set ROOT to  the truncated integer part of the Nth root of U.  Set
-     REM to the remainder, U-ROOT**N.
-
- -- Function: void mpz_sqrt (mpz_t ROP, mpz_t OP)
-     Set ROP to  the truncated integer part of the square root of OP.
-
- -- Function: void mpz_sqrtrem (mpz_t ROP1, mpz_t ROP2, mpz_t OP)
-     Set ROP1 to the truncated integer part of the square root of OP,
-     like `mpz_sqrt'.  Set ROP2 to the remainder OP-ROP1*ROP1, which
-     will be zero if OP is a perfect square.
-
-     If ROP1 and ROP2 are the same variable, the results are undefined.
-
- -- Function: int mpz_perfect_power_p (mpz_t OP)
-     Return non-zero if OP is a perfect power, i.e., if there exist
-     integers A and B, with B>1, such that OP equals A raised to the
-     power B.
-
-     Under this definition both 0 and 1 are considered to be perfect
-     powers.  Negative values of OP are accepted, but of course can
-     only be odd perfect powers.
-
- -- Function: int mpz_perfect_square_p (mpz_t OP)
-     Return non-zero if OP is a perfect square, i.e., if the square
-     root of OP is an integer.  Under this definition both 0 and 1 are
-     considered to be perfect squares.
-
-\1f
-File: gmp.info,  Node: Number Theoretic Functions,  Next: Integer Comparisons,  Prev: Integer Roots,  Up: Integer Functions
-
-5.9 Number Theoretic Functions
-==============================
-
- -- Function: int mpz_probab_prime_p (mpz_t N, int REPS)
-     Determine whether N is prime.  Return 2 if N is definitely prime,
-     return 1 if N is probably prime (without being certain), or return
-     0 if N is definitely composite.
-
-     This function does some trial divisions, then some Miller-Rabin
-     probabilistic primality tests.  REPS controls how many such tests
-     are done, 5 to 10 is a reasonable number, more will reduce the
-     chances of a composite being returned as "probably prime".
-
-     Miller-Rabin and similar tests can be more properly called
-     compositeness tests.  Numbers which fail are known to be composite
-     but those which pass might be prime or might be composite.  Only a
-     few composites pass, hence those which pass are considered
-     probably prime.
-
- -- Function: void mpz_nextprime (mpz_t ROP, mpz_t OP)
-     Set ROP to the next prime greater than OP.
-
-     This function uses a probabilistic algorithm to identify primes.
-     For practical purposes it's adequate, the chance of a composite
-     passing will be extremely small.
-
- -- Function: void mpz_gcd (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to the greatest common divisor of OP1 and OP2.  The result
-     is always positive even if one or both input operands are negative.
-
- -- Function: unsigned long int mpz_gcd_ui (mpz_t ROP, mpz_t OP1,
-          unsigned long int OP2)
-     Compute the greatest common divisor of OP1 and OP2.  If ROP is not
-     `NULL', store the result there.
-
-     If the result is small enough to fit in an `unsigned long int', it
-     is returned.  If the result does not fit, 0 is returned, and the
-     result is equal to the argument OP1.  Note that the result will
-     always fit if OP2 is non-zero.
-
- -- Function: void mpz_gcdext (mpz_t G, mpz_t S, mpz_t T, mpz_t A,
-          mpz_t B)
-     Set G to the greatest common divisor of A and B, and in addition
-     set S and T to coefficients satisfying A*S + B*T = G.  The value
-     in G is always positive, even if one or both of A and B are
-     negative.  The values in S and T are chosen such that abs(S) <=
-     abs(B) and abs(T) <= abs(A).
-
-     If T is `NULL' then that value is not computed.
-
- -- Function: void mpz_lcm (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_lcm_ui (mpz_t ROP, mpz_t OP1, unsigned long OP2)
-     Set ROP to the least common multiple of OP1 and OP2.  ROP is
-     always positive, irrespective of the signs of OP1 and OP2.  ROP
-     will be zero if either OP1 or OP2 is zero.
-
- -- Function: int mpz_invert (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Compute the inverse of OP1 modulo OP2 and put the result in ROP.
-     If the inverse exists, the return value is non-zero and ROP will
-     satisfy 0 <= ROP < OP2.  If an inverse doesn't exist the return
-     value is zero and ROP is undefined.
-
- -- Function: int mpz_jacobi (mpz_t A, mpz_t B)
-     Calculate the Jacobi symbol (A/B).  This is defined only for B odd.
-
- -- Function: int mpz_legendre (mpz_t A, mpz_t P)
-     Calculate the Legendre symbol (A/P).  This is defined only for P
-     an odd positive prime, and for such P it's identical to the Jacobi
-     symbol.
-
- -- Function: int mpz_kronecker (mpz_t A, mpz_t B)
- -- Function: int mpz_kronecker_si (mpz_t A, long B)
- -- Function: int mpz_kronecker_ui (mpz_t A, unsigned long B)
- -- Function: int mpz_si_kronecker (long A, mpz_t B)
- -- Function: int mpz_ui_kronecker (unsigned long A, mpz_t B)
-     Calculate the Jacobi symbol (A/B) with the Kronecker extension
-     (a/2)=(2/a) when a odd, or (a/2)=0 when a even.
-
-     When B is odd the Jacobi symbol and Kronecker symbol are
-     identical, so `mpz_kronecker_ui' etc can be used for mixed
-     precision Jacobi symbols too.
-
-     For more information see Henri Cohen section 1.4.2 (*note
-     References::), or any number theory textbook.  See also the
-     example program `demos/qcn.c' which uses `mpz_kronecker_ui'.
-
- -- Function: mp_bitcnt_t mpz_remove (mpz_t ROP, mpz_t OP, mpz_t F)
-     Remove all occurrences of the factor F from OP and store the
-     result in ROP.  The return value is how many such occurrences were
-     removed.
-
- -- Function: void mpz_fac_ui (mpz_t ROP, unsigned long int OP)
-     Set ROP to OP!, the factorial of OP.
-
- -- Function: void mpz_bin_ui (mpz_t ROP, mpz_t N, unsigned long int K)
- -- Function: void mpz_bin_uiui (mpz_t ROP, unsigned long int N,
-          unsigned long int K)
-     Compute the binomial coefficient N over K and store the result in
-     ROP.  Negative values of N are supported by `mpz_bin_ui', using
-     the identity bin(-n,k) = (-1)^k * bin(n+k-1,k), see Knuth volume 1
-     section 1.2.6 part G.
-
- -- Function: void mpz_fib_ui (mpz_t FN, unsigned long int N)
- -- Function: void mpz_fib2_ui (mpz_t FN, mpz_t FNSUB1, unsigned long
-          int N)
-     `mpz_fib_ui' sets FN to to F[n], the N'th Fibonacci number.
-     `mpz_fib2_ui' sets FN to F[n], and FNSUB1 to F[n-1].
-
-     These functions are designed for calculating isolated Fibonacci
-     numbers.  When a sequence of values is wanted it's best to start
-     with `mpz_fib2_ui' and iterate the defining F[n+1]=F[n]+F[n-1] or
-     similar.
-
- -- Function: void mpz_lucnum_ui (mpz_t LN, unsigned long int N)
- -- Function: void mpz_lucnum2_ui (mpz_t LN, mpz_t LNSUB1, unsigned
-          long int N)
-     `mpz_lucnum_ui' sets LN to to L[n], the N'th Lucas number.
-     `mpz_lucnum2_ui' sets LN to L[n], and LNSUB1 to L[n-1].
-
-     These functions are designed for calculating isolated Lucas
-     numbers.  When a sequence of values is wanted it's best to start
-     with `mpz_lucnum2_ui' and iterate the defining L[n+1]=L[n]+L[n-1]
-     or similar.
-
-     The Fibonacci numbers and Lucas numbers are related sequences, so
-     it's never necessary to call both `mpz_fib2_ui' and
-     `mpz_lucnum2_ui'.  The formulas for going from Fibonacci to Lucas
-     can be found in *Note Lucas Numbers Algorithm::, the reverse is
-     straightforward too.
-
-\1f
-File: gmp.info,  Node: Integer Comparisons,  Next: Integer Logic and Bit Fiddling,  Prev: Number Theoretic Functions,  Up: Integer Functions
-
-5.10 Comparison Functions
-=========================
-
- -- Function: int mpz_cmp (mpz_t OP1, mpz_t OP2)
- -- Function: int mpz_cmp_d (mpz_t OP1, double OP2)
- -- Macro: int mpz_cmp_si (mpz_t OP1, signed long int OP2)
- -- Macro: int mpz_cmp_ui (mpz_t OP1, unsigned long int OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, or a negative value if OP1 < OP2.
-
-     `mpz_cmp_ui' and `mpz_cmp_si' are macros and will evaluate their
-     arguments more than once.  `mpz_cmp_d' can be called with an
-     infinity, but results are undefined for a NaN.
-
- -- Function: int mpz_cmpabs (mpz_t OP1, mpz_t OP2)
- -- Function: int mpz_cmpabs_d (mpz_t OP1, double OP2)
- -- Function: int mpz_cmpabs_ui (mpz_t OP1, unsigned long int OP2)
-     Compare the absolute values of OP1 and OP2.  Return a positive
-     value if abs(OP1) > abs(OP2), zero if abs(OP1) = abs(OP2), or a
-     negative value if abs(OP1) < abs(OP2).
-
-     `mpz_cmpabs_d' can be called with an infinity, but results are
-     undefined for a NaN.
-
- -- Macro: int mpz_sgn (mpz_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates
-     its argument multiple times.
-
-\1f
-File: gmp.info,  Node: Integer Logic and Bit Fiddling,  Next: I/O of Integers,  Prev: Integer Comparisons,  Up: Integer Functions
-
-5.11 Logical and Bit Manipulation Functions
-===========================================
-
-These functions behave as if twos complement arithmetic were used
-(although sign-magnitude is the actual implementation).  The least
-significant bit is number 0.
-
- -- Function: void mpz_and (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise-and OP2.
-
- -- Function: void mpz_ior (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise inclusive-or OP2.
-
- -- Function: void mpz_xor (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise exclusive-or OP2.
-
- -- Function: void mpz_com (mpz_t ROP, mpz_t OP)
-     Set ROP to the one's complement of OP.
-
- -- Function: mp_bitcnt_t mpz_popcount (mpz_t OP)
-     If OP>=0, return the population count of OP, which is the number
-     of 1 bits in the binary representation.  If OP<0, the number of 1s
-     is infinite, and the return value is the largest possible
-     `mp_bitcnt_t'.
-
- -- Function: mp_bitcnt_t mpz_hamdist (mpz_t OP1, mpz_t OP2)
-     If OP1 and OP2 are both >=0 or both <0, return the hamming
-     distance between the two operands, which is the number of bit
-     positions where OP1 and OP2 have different bit values.  If one
-     operand is >=0 and the other <0 then the number of bits different
-     is infinite, and the return value is the largest possible
-     `mp_bitcnt_t'.
-
- -- Function: mp_bitcnt_t mpz_scan0 (mpz_t OP, mp_bitcnt_t STARTING_BIT)
- -- Function: mp_bitcnt_t mpz_scan1 (mpz_t OP, mp_bitcnt_t STARTING_BIT)
-     Scan OP, starting from bit STARTING_BIT, towards more significant
-     bits, until the first 0 or 1 bit (respectively) is found.  Return
-     the index of the found bit.
-
-     If the bit at STARTING_BIT is already what's sought, then
-     STARTING_BIT is returned.
-
-     If there's no bit found, then the largest possible `mp_bitcnt_t' is
-     returned.  This will happen in `mpz_scan0' past the end of a
-     negative number, or `mpz_scan1' past the end of a nonnegative
-     number.
-
- -- Function: void mpz_setbit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Set bit BIT_INDEX in ROP.
-
- -- Function: void mpz_clrbit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Clear bit BIT_INDEX in ROP.
-
- -- Function: void mpz_combit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Complement bit BIT_INDEX in ROP.
-
- -- Function: int mpz_tstbit (mpz_t OP, mp_bitcnt_t BIT_INDEX)
-     Test bit BIT_INDEX in OP and return 0 or 1 accordingly.
-
-\1f
-File: gmp.info,  Node: I/O of Integers,  Next: Integer Random Numbers,  Prev: Integer Logic and Bit Fiddling,  Up: Integer Functions
-
-5.12 Input and Output Functions
-===============================
-
-Functions that perform input from a stdio stream, and functions that
-output to a stdio stream.  Passing a `NULL' pointer for a STREAM
-argument to any of these functions will make them read from `stdin' and
-write to `stdout', respectively.
-
-   When using any of these functions, it is a good idea to include
-`stdio.h' before `gmp.h', since that will allow `gmp.h' to define
-prototypes for these functions.
-
- -- Function: size_t mpz_out_str (FILE *STREAM, int BASE, mpz_t OP)
-     Output OP on stdio stream STREAM, as a string of digits in base
-     BASE.  The base argument may vary from 2 to 62 or from -2 to -36.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
- -- Function: size_t mpz_inp_str (mpz_t ROP, FILE *STREAM, int BASE)
-     Input a possibly white-space preceded string in base BASE from
-     stdio stream STREAM, and put the read integer in ROP.
-
-     The BASE may vary from 2 to 62, or if BASE is 0, then the leading
-     characters are used: `0x' and `0X' for hexadecimal, `0b' and `0B'
-     for binary, `0' for octal, or decimal otherwise.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value.  For bases 37 to 62, upper-case
-     letter represent the usual 10..35 while lower-case letter
-     represent 36..61.
-
-     Return the number of bytes read, or if an error occurred, return 0.
-
- -- Function: size_t mpz_out_raw (FILE *STREAM, mpz_t OP)
-     Output OP on stdio stream STREAM, in raw binary format.  The
-     integer is written in a portable format, with 4 bytes of size
-     information, and that many bytes of limbs.  Both the size and the
-     limbs are written in decreasing significance order (i.e., in
-     big-endian).
-
-     The output can be read with `mpz_inp_raw'.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
-     The output of this can not be read by `mpz_inp_raw' from GMP 1,
-     because of changes necessary for compatibility between 32-bit and
-     64-bit machines.
-
- -- Function: size_t mpz_inp_raw (mpz_t ROP, FILE *STREAM)
-     Input from stdio stream STREAM in the format written by
-     `mpz_out_raw', and put the result in ROP.  Return the number of
-     bytes read, or if an error occurred, return 0.
-
-     This routine can read the output from `mpz_out_raw' also from GMP
-     1, in spite of changes necessary for compatibility between 32-bit
-     and 64-bit machines.
-
-\1f
-File: gmp.info,  Node: Integer Random Numbers,  Next: Integer Import and Export,  Prev: I/O of Integers,  Up: Integer Functions
-
-5.13 Random Number Functions
-============================
-
-The random number functions of GMP come in two groups; older function
-that rely on a global state, and newer functions that accept a state
-parameter that is read and modified.  Please see the *Note Random
-Number Functions:: for more information on how to use and not to use
-random number functions.
-
- -- Function: void mpz_urandomb (mpz_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t N)
-     Generate a uniformly distributed random integer in the range 0 to
-     2^N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_urandomm (mpz_t ROP, gmp_randstate_t STATE,
-          mpz_t N)
-     Generate a uniform random integer in the range 0 to N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_rrandomb (mpz_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t N)
-     Generate a random integer with long strings of zeros and ones in
-     the binary representation.  Useful for testing functions and
-     algorithms, since this kind of random numbers have proven to be
-     more likely to trigger corner-case bugs.  The random number will
-     be in the range 0 to 2^N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_random (mpz_t ROP, mp_size_t MAX_SIZE)
-     Generate a random integer of at most MAX_SIZE limbs.  The generated
-     random number doesn't satisfy any particular requirements of
-     randomness.  Negative random numbers are generated when MAX_SIZE
-     is negative.
-
-     This function is obsolete.  Use `mpz_urandomb' or `mpz_urandomm'
-     instead.
-
- -- Function: void mpz_random2 (mpz_t ROP, mp_size_t MAX_SIZE)
-     Generate a random integer of at most MAX_SIZE limbs, with long
-     strings of zeros and ones in the binary representation.  Useful
-     for testing functions and algorithms, since this kind of random
-     numbers have proven to be more likely to trigger corner-case bugs.
-     Negative random numbers are generated when MAX_SIZE is negative.
-
-     This function is obsolete.  Use `mpz_rrandomb' instead.
-
-\1f
-File: gmp.info,  Node: Integer Import and Export,  Next: Miscellaneous Integer Functions,  Prev: Integer Random Numbers,  Up: Integer Functions
-
-5.14 Integer Import and Export
-==============================
-
-`mpz_t' variables can be converted to and from arbitrary words of binary
-data with the following functions.
-
- -- Function: void mpz_import (mpz_t ROP, size_t COUNT, int ORDER,
-          size_t SIZE, int ENDIAN, size_t NAILS, const void *OP)
-     Set ROP from an array of word data at OP.
-
-     The parameters specify the format of the data.  COUNT many words
-     are read, each SIZE bytes.  ORDER can be 1 for most significant
-     word first or -1 for least significant first.  Within each word
-     ENDIAN can be 1 for most significant byte first, -1 for least
-     significant first, or 0 for the native endianness of the host CPU.
-     The most significant NAILS bits of each word are skipped, this
-     can be 0 to use the full words.
-
-     There is no sign taken from the data, ROP will simply be a positive
-     integer.  An application can handle any sign itself, and apply it
-     for instance with `mpz_neg'.
-
-     There are no data alignment restrictions on OP, any address is
-     allowed.
-
-     Here's an example converting an array of `unsigned long' data, most
-     significant element first, and host byte order within each value.
-
-          unsigned long  a[20];
-          /* Initialize Z and A */
-          mpz_import (z, 20, 1, sizeof(a[0]), 0, 0, a);
-
-     This example assumes the full `sizeof' bytes are used for data in
-     the given type, which is usually true, and certainly true for
-     `unsigned long' everywhere we know of.  However on Cray vector
-     systems it may be noted that `short' and `int' are always stored
-     in 8 bytes (and with `sizeof' indicating that) but use only 32 or
-     46 bits.  The NAILS feature can account for this, by passing for
-     instance `8*sizeof(int)-INT_BIT'.
-
- -- Function: void * mpz_export (void *ROP, size_t *COUNTP, int ORDER,
-          size_t SIZE, int ENDIAN, size_t NAILS, mpz_t OP)
-     Fill ROP with word data from OP.
-
-     The parameters specify the format of the data produced.  Each word
-     will be SIZE bytes and ORDER can be 1 for most significant word
-     first or -1 for least significant first.  Within each word ENDIAN
-     can be 1 for most significant byte first, -1 for least significant
-     first, or 0 for the native endianness of the host CPU.  The most
-     significant NAILS bits of each word are unused and set to zero,
-     this can be 0 to produce full words.
-
-     The number of words produced is written to `*COUNTP', or COUNTP
-     can be `NULL' to discard the count.  ROP must have enough space
-     for the data, or if ROP is `NULL' then a result array of the
-     necessary size is allocated using the current GMP allocation
-     function (*note Custom Allocation::).  In either case the return
-     value is the destination used, either ROP or the allocated block.
-
-     If OP is non-zero then the most significant word produced will be
-     non-zero.  If OP is zero then the count returned will be zero and
-     nothing written to ROP.  If ROP is `NULL' in this case, no block
-     is allocated, just `NULL' is returned.
-
-     The sign of OP is ignored, just the absolute value is exported.  An
-     application can use `mpz_sgn' to get the sign and handle it as
-     desired.  (*note Integer Comparisons::)
-
-     There are no data alignment restrictions on ROP, any address is
-     allowed.
-
-     When an application is allocating space itself the required size
-     can be determined with a calculation like the following.  Since
-     `mpz_sizeinbase' always returns at least 1, `count' here will be
-     at least one, which avoids any portability problems with
-     `malloc(0)', though if `z' is zero no space at all is actually
-     needed (or written).
-
-          numb = 8*size - nail;
-          count = (mpz_sizeinbase (z, 2) + numb-1) / numb;
-          p = malloc (count * size);
-
-\1f
-File: gmp.info,  Node: Miscellaneous Integer Functions,  Next: Integer Special Functions,  Prev: Integer Import and Export,  Up: Integer Functions
-
-5.15 Miscellaneous Functions
-============================
-
- -- Function: int mpz_fits_ulong_p (mpz_t OP)
- -- Function: int mpz_fits_slong_p (mpz_t OP)
- -- Function: int mpz_fits_uint_p (mpz_t OP)
- -- Function: int mpz_fits_sint_p (mpz_t OP)
- -- Function: int mpz_fits_ushort_p (mpz_t OP)
- -- Function: int mpz_fits_sshort_p (mpz_t OP)
-     Return non-zero iff the value of OP fits in an `unsigned long int',
-     `signed long int', `unsigned int', `signed int', `unsigned short
-     int', or `signed short int', respectively.  Otherwise, return zero.
-
- -- Macro: int mpz_odd_p (mpz_t OP)
- -- Macro: int mpz_even_p (mpz_t OP)
-     Determine whether OP is odd or even, respectively.  Return
-     non-zero if yes, zero if no.  These macros evaluate their argument
-     more than once.
-
- -- Function: size_t mpz_sizeinbase (mpz_t OP, int BASE)
-     Return the size of OP measured in number of digits in the given
-     BASE.  BASE can vary from 2 to 62.  The sign of OP is ignored,
-     just the absolute value is used.  The result will be either exact
-     or 1 too big.  If BASE is a power of 2, the result is always
-     exact.  If OP is zero the return value is always 1.
-
-     This function can be used to determine the space required when
-     converting OP to a string.  The right amount of allocation is
-     normally two more than the value returned by `mpz_sizeinbase', one
-     extra for a minus sign and one for the null-terminator.
-
-     It will be noted that `mpz_sizeinbase(OP,2)' can be used to locate
-     the most significant 1 bit in OP, counting from 1.  (Unlike the
-     bitwise functions which start from 0, *Note Logical and Bit
-     Manipulation Functions: Integer Logic and Bit Fiddling.)
-
-\1f
-File: gmp.info,  Node: Integer Special Functions,  Prev: Miscellaneous Integer Functions,  Up: Integer Functions
-
-5.16 Special Functions
-======================
-
-The functions in this section are for various special purposes.  Most
-applications will not need them.
-
- -- Function: void mpz_array_init (mpz_t INTEGER_ARRAY, mp_size_t
-          ARRAY_SIZE, mp_size_t FIXED_NUM_BITS)
-     This is a special type of initialization.  *Fixed* space of
-     FIXED_NUM_BITS is allocated to each of the ARRAY_SIZE integers in
-     INTEGER_ARRAY.  There is no way to free the storage allocated by
-     this function.  Don't call `mpz_clear'!
-
-     The INTEGER_ARRAY parameter is the first `mpz_t' in the array.  For
-     example,
-
-          mpz_t  arr[20000];
-          mpz_array_init (arr[0], 20000, 512);
-
-     This function is only intended for programs that create a large
-     number of integers and need to reduce memory usage by avoiding the
-     overheads of allocating and reallocating lots of small blocks.  In
-     normal programs this function is not recommended.
-
-     The space allocated to each integer by this function will not be
-     automatically increased, unlike the normal `mpz_init', so an
-     application must ensure it is sufficient for any value stored.
-     The following space requirements apply to various routines,
-
-        * `mpz_abs', `mpz_neg', `mpz_set', `mpz_set_si' and
-          `mpz_set_ui' need room for the value they store.
-
-        * `mpz_add', `mpz_add_ui', `mpz_sub' and `mpz_sub_ui' need room
-          for the larger of the two operands, plus an extra
-          `mp_bits_per_limb'.
-
-        * `mpz_mul', `mpz_mul_ui' and `mpz_mul_ui' need room for the sum
-          of the number of bits in their operands, but each rounded up
-          to a multiple of `mp_bits_per_limb'.
-
-        * `mpz_swap' can be used between two array variables, but not
-          between an array and a normal variable.
-
-     For other functions, or if in doubt, the suggestion is to
-     calculate in a regular `mpz_init' variable and copy the result to
-     an array variable with `mpz_set'.
-
- -- Function: void * _mpz_realloc (mpz_t INTEGER, mp_size_t NEW_ALLOC)
-     Change the space for INTEGER to NEW_ALLOC limbs.  The value in
-     INTEGER is preserved if it fits, or is set to 0 if not.  The return
-     value is not useful to applications and should be ignored.
-
-     `mpz_realloc2' is the preferred way to accomplish allocation
-     changes like this.  `mpz_realloc2' and `_mpz_realloc' are the same
-     except that `_mpz_realloc' takes its size in limbs.
-
- -- Function: mp_limb_t mpz_getlimbn (mpz_t OP, mp_size_t N)
-     Return limb number N from OP.  The sign of OP is ignored, just the
-     absolute value is used.  The least significant limb is number 0.
-
-     `mpz_size' can be used to find how many limbs make up OP.
-     `mpz_getlimbn' returns zero if N is outside the range 0 to
-     `mpz_size(OP)-1'.
-
- -- Function: size_t mpz_size (mpz_t OP)
-     Return the size of OP measured in number of limbs.  If OP is zero,
-     the returned value will be zero.
-
-\1f
-File: gmp.info,  Node: Rational Number Functions,  Next: Floating-point Functions,  Prev: Integer Functions,  Up: Top
-
-6 Rational Number Functions
-***************************
-
-This chapter describes the GMP functions for performing arithmetic on
-rational numbers.  These functions start with the prefix `mpq_'.
-
-   Rational numbers are stored in objects of type `mpq_t'.
-
-   All rational arithmetic functions assume operands have a canonical
-form, and canonicalize their result.  The canonical from means that the
-denominator and the numerator have no common factors, and that the
-denominator is positive.  Zero has the unique representation 0/1.
-
-   Pure assignment functions do not canonicalize the assigned variable.
-It is the responsibility of the user to canonicalize the assigned
-variable before any arithmetic operations are performed on that
-variable.
-
- -- Function: void mpq_canonicalize (mpq_t OP)
-     Remove any factors that are common to the numerator and
-     denominator of OP, and make the denominator positive.
-
-* Menu:
-
-* Initializing Rationals::
-* Rational Conversions::
-* Rational Arithmetic::
-* Comparing Rationals::
-* Applying Integer Functions::
-* I/O of Rationals::
-
-\1f
-File: gmp.info,  Node: Initializing Rationals,  Next: Rational Conversions,  Prev: Rational Number Functions,  Up: Rational Number Functions
-
-6.1 Initialization and Assignment Functions
-===========================================
-
- -- Function: void mpq_init (mpq_t X)
-     Initialize X and set it to 0/1.  Each variable should normally
-     only be initialized once, or at least cleared out (using the
-     function `mpq_clear') between each initialization.
-
- -- Function: void mpq_inits (mpq_t X, ...)
-     Initialize a NULL-terminated list of `mpq_t' variables, and set
-     their values to 0/1.
-
- -- Function: void mpq_clear (mpq_t X)
-     Free the space occupied by X.  Make sure to call this function for
-     all `mpq_t' variables when you are done with them.
-
- -- Function: void mpq_clears (mpq_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpq_t'
-     variables.
-
- -- Function: void mpq_set (mpq_t ROP, mpq_t OP)
- -- Function: void mpq_set_z (mpq_t ROP, mpz_t OP)
-     Assign ROP from OP.
-
- -- Function: void mpq_set_ui (mpq_t ROP, unsigned long int OP1,
-          unsigned long int OP2)
- -- Function: void mpq_set_si (mpq_t ROP, signed long int OP1, unsigned
-          long int OP2)
-     Set the value of ROP to OP1/OP2.  Note that if OP1 and OP2 have
-     common factors, ROP has to be passed to `mpq_canonicalize' before
-     any operations are performed on ROP.
-
- -- Function: int mpq_set_str (mpq_t ROP, char *STR, int BASE)
-     Set ROP from a null-terminated string STR in the given BASE.
-
-     The string can be an integer like "41" or a fraction like
-     "41/152".  The fraction must be in canonical form (*note Rational
-     Number Functions::), or if not then `mpq_canonicalize' must be
-     called.
-
-     The numerator and optional denominator are parsed the same as in
-     `mpz_set_str' (*note Assigning Integers::).  White space is
-     allowed in the string, and is simply ignored.  The BASE can vary
-     from 2 to 62, or if BASE is 0 then the leading characters are
-     used: `0x' or `0X' for hex, `0b' or `0B' for binary, `0' for
-     octal, or decimal otherwise.  Note that this is done separately
-     for the numerator and denominator, so for instance `0xEF/100' is
-     239/100, whereas `0xEF/0x100' is 239/256.
-
-     The return value is 0 if the entire string is a valid number, or
-     -1 if not.
-
- -- Function: void mpq_swap (mpq_t ROP1, mpq_t ROP2)
-     Swap the values ROP1 and ROP2 efficiently.
-
-\1f
-File: gmp.info,  Node: Rational Conversions,  Next: Rational Arithmetic,  Prev: Initializing Rationals,  Up: Rational Number Functions
-
-6.2 Conversion Functions
-========================
-
- -- Function: double mpq_get_d (mpq_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent from the conversion is too big or too small to fit
-     a `double' then the result is system dependent.  For too big an
-     infinity is returned when available.  For too small 0.0 is
-     normally returned.  Hardware overflow, underflow and denorm traps
-     may or may not occur.
-
- -- Function: void mpq_set_d (mpq_t ROP, double OP)
- -- Function: void mpq_set_f (mpq_t ROP, mpf_t OP)
-     Set ROP to the value of OP.  There is no rounding, this conversion
-     is exact.
-
- -- Function: char * mpq_get_str (char *STR, int BASE, mpq_t OP)
-     Convert OP to a string of digits in base BASE.  The base may vary
-     from 2 to 36.  The string will be of the form `num/den', or if the
-     denominator is 1 then just `num'.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of storage large
-     enough for the result, that being
-
-          mpz_sizeinbase (mpq_numref(OP), BASE)
-          + mpz_sizeinbase (mpq_denref(OP), BASE) + 3
-
-     The three extra bytes are for a possible minus sign, possible
-     slash, and the null-terminator.
-
-     A pointer to the result string is returned, being either the
-     allocated block, or the given STR.
-
-\1f
-File: gmp.info,  Node: Rational Arithmetic,  Next: Comparing Rationals,  Prev: Rational Conversions,  Up: Rational Number Functions
-
-6.3 Arithmetic Functions
-========================
-
- -- Function: void mpq_add (mpq_t SUM, mpq_t ADDEND1, mpq_t ADDEND2)
-     Set SUM to ADDEND1 + ADDEND2.
-
- -- Function: void mpq_sub (mpq_t DIFFERENCE, mpq_t MINUEND, mpq_t
-          SUBTRAHEND)
-     Set DIFFERENCE to MINUEND - SUBTRAHEND.
-
- -- Function: void mpq_mul (mpq_t PRODUCT, mpq_t MULTIPLIER, mpq_t
-          MULTIPLICAND)
-     Set PRODUCT to MULTIPLIER times MULTIPLICAND.
-
- -- Function: void mpq_mul_2exp (mpq_t ROP, mpq_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.
-
- -- Function: void mpq_div (mpq_t QUOTIENT, mpq_t DIVIDEND, mpq_t
-          DIVISOR)
-     Set QUOTIENT to DIVIDEND/DIVISOR.
-
- -- Function: void mpq_div_2exp (mpq_t ROP, mpq_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 divided by 2 raised to OP2.
-
- -- Function: void mpq_neg (mpq_t NEGATED_OPERAND, mpq_t OPERAND)
-     Set NEGATED_OPERAND to -OPERAND.
-
- -- Function: void mpq_abs (mpq_t ROP, mpq_t OP)
-     Set ROP to the absolute value of OP.
-
- -- Function: void mpq_inv (mpq_t INVERTED_NUMBER, mpq_t NUMBER)
-     Set INVERTED_NUMBER to 1/NUMBER.  If the new denominator is zero,
-     this routine will divide by zero.
-
-\1f
-File: gmp.info,  Node: Comparing Rationals,  Next: Applying Integer Functions,  Prev: Rational Arithmetic,  Up: Rational Number Functions
-
-6.4 Comparison Functions
-========================
-
- -- Function: int mpq_cmp (mpq_t OP1, mpq_t OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
-     To determine if two rationals are equal, `mpq_equal' is faster than
-     `mpq_cmp'.
-
- -- Macro: int mpq_cmp_ui (mpq_t OP1, unsigned long int NUM2, unsigned
-          long int DEN2)
- -- Macro: int mpq_cmp_si (mpq_t OP1, long int NUM2, unsigned long int
-          DEN2)
-     Compare OP1 and NUM2/DEN2.  Return a positive value if OP1 >
-     NUM2/DEN2, zero if OP1 = NUM2/DEN2, and a negative value if OP1 <
-     NUM2/DEN2.
-
-     NUM2 and DEN2 are allowed to have common factors.
-
-     These functions are implemented as a macros and evaluate their
-     arguments multiple times.
-
- -- Macro: int mpq_sgn (mpq_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates its
-     arguments multiple times.
-
- -- Function: int mpq_equal (mpq_t OP1, mpq_t OP2)
-     Return non-zero if OP1 and OP2 are equal, zero if they are
-     non-equal.  Although `mpq_cmp' can be used for the same purpose,
-     this function is much faster.
-
-\1f
-File: gmp.info,  Node: Applying Integer Functions,  Next: I/O of Rationals,  Prev: Comparing Rationals,  Up: Rational Number Functions
-
-6.5 Applying Integer Functions to Rationals
-===========================================
-
-The set of `mpq' functions is quite small.  In particular, there are few
-functions for either input or output.  The following functions give
-direct access to the numerator and denominator of an `mpq_t'.
-
-   Note that if an assignment to the numerator and/or denominator could
-take an `mpq_t' out of the canonical form described at the start of
-this chapter (*note Rational Number Functions::) then
-`mpq_canonicalize' must be called before any other `mpq' functions are
-applied to that `mpq_t'.
-
- -- Macro: mpz_t mpq_numref (mpq_t OP)
- -- Macro: mpz_t mpq_denref (mpq_t OP)
-     Return a reference to the numerator and denominator of OP,
-     respectively.  The `mpz' functions can be used on the result of
-     these macros.
-
- -- Function: void mpq_get_num (mpz_t NUMERATOR, mpq_t RATIONAL)
- -- Function: void mpq_get_den (mpz_t DENOMINATOR, mpq_t RATIONAL)
- -- Function: void mpq_set_num (mpq_t RATIONAL, mpz_t NUMERATOR)
- -- Function: void mpq_set_den (mpq_t RATIONAL, mpz_t DENOMINATOR)
-     Get or set the numerator or denominator of a rational.  These
-     functions are equivalent to calling `mpz_set' with an appropriate
-     `mpq_numref' or `mpq_denref'.  Direct use of `mpq_numref' or
-     `mpq_denref' is recommended instead of these functions.
-
-\1f
-File: gmp.info,  Node: I/O of Rationals,  Prev: Applying Integer Functions,  Up: Rational Number Functions
-
-6.6 Input and Output Functions
-==============================
-
-When using any of these functions, it's a good idea to include `stdio.h'
-before `gmp.h', since that will allow `gmp.h' to define prototypes for
-these functions.
-
-   Passing a `NULL' pointer for a STREAM argument to any of these
-functions will make them read from `stdin' and write to `stdout',
-respectively.
-
- -- Function: size_t mpq_out_str (FILE *STREAM, int BASE, mpq_t OP)
-     Output OP on stdio stream STREAM, as a string of digits in base
-     BASE.  The base may vary from 2 to 36.  Output is in the form
-     `num/den' or if the denominator is 1 then just `num'.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
- -- Function: size_t mpq_inp_str (mpq_t ROP, FILE *STREAM, int BASE)
-     Read a string of digits from STREAM and convert them to a rational
-     in ROP.  Any initial white-space characters are read and
-     discarded.  Return the number of characters read (including white
-     space), or 0 if a rational could not be read.
-
-     The input can be a fraction like `17/63' or just an integer like
-     `123'.  Reading stops at the first character not in this form, and
-     white space is not permitted within the string.  If the input
-     might not be in canonical form, then `mpq_canonicalize' must be
-     called (*note Rational Number Functions::).
-
-     The BASE can be between 2 and 36, or can be 0 in which case the
-     leading characters of the string determine the base, `0x' or `0X'
-     for hexadecimal, `0' for octal, or decimal otherwise.  The leading
-     characters are examined separately for the numerator and
-     denominator of a fraction, so for instance `0x10/11' is 16/11,
-     whereas `0x10/0x11' is 16/17.
-
-\1f
-File: gmp.info,  Node: Floating-point Functions,  Next: Low-level Functions,  Prev: Rational Number Functions,  Up: Top
-
-7 Floating-point Functions
-**************************
-
-GMP floating point numbers are stored in objects of type `mpf_t' and
-functions operating on them have an `mpf_' prefix.
-
-   The mantissa of each float has a user-selectable precision, limited
-only by available memory.  Each variable has its own precision, and
-that can be increased or decreased at any time.
-
-   The exponent of each float is a fixed precision, one machine word on
-most systems.  In the current implementation the exponent is a count of
-limbs, so for example on a 32-bit system this means a range of roughly
-2^-68719476768 to 2^68719476736, or on a 64-bit system this will be
-greater.  Note however `mpf_get_str' can only return an exponent which
-fits an `mp_exp_t' and currently `mpf_set_str' doesn't accept exponents
-bigger than a `long'.
-
-   Each variable keeps a size for the mantissa data actually in use.
-This means that if a float is exactly represented in only a few bits
-then only those bits will be used in a calculation, even if the
-selected precision is high.
-
-   All calculations are performed to the precision of the destination
-variable.  Each function is defined to calculate with "infinite
-precision" followed by a truncation to the destination precision, but
-of course the work done is only what's needed to determine a result
-under that definition.
-
-   The precision selected for a variable is a minimum value, GMP may
-increase it a little to facilitate efficient calculation.  Currently
-this means rounding up to a whole limb, and then sometimes having a
-further partial limb, depending on the high limb of the mantissa.  But
-applications shouldn't be concerned by such details.
-
-   The mantissa in stored in binary, as might be imagined from the fact
-precisions are expressed in bits.  One consequence of this is that
-decimal fractions like 0.1 cannot be represented exactly.  The same is
-true of plain IEEE `double' floats.  This makes both highly unsuitable
-for calculations involving money or other values that should be exact
-decimal fractions.  (Suitably scaled integers, or perhaps rationals,
-are better choices.)
-
-   `mpf' functions and variables have no special notion of infinity or
-not-a-number, and applications must take care not to overflow the
-exponent or results will be unpredictable.  This might change in a
-future release.
-
-   Note that the `mpf' functions are _not_ intended as a smooth
-extension to IEEE P754 arithmetic.  In particular results obtained on
-one computer often differ from the results on a computer with a
-different word size.
-
-* Menu:
-
-* Initializing Floats::
-* Assigning Floats::
-* Simultaneous Float Init & Assign::
-* Converting Floats::
-* Float Arithmetic::
-* Float Comparison::
-* I/O of Floats::
-* Miscellaneous Float Functions::
-
-\1f
-File: gmp.info,  Node: Initializing Floats,  Next: Assigning Floats,  Prev: Floating-point Functions,  Up: Floating-point Functions
-
-7.1 Initialization Functions
-============================
-
- -- Function: void mpf_set_default_prec (mp_bitcnt_t PREC)
-     Set the default precision to be *at least* PREC bits.  All
-     subsequent calls to `mpf_init' will use this precision, but
-     previously initialized variables are unaffected.
-
- -- Function: mp_bitcnt_t mpf_get_default_prec (void)
-     Return the default precision actually used.
-
-   An `mpf_t' object must be initialized before storing the first value
-in it.  The functions `mpf_init' and `mpf_init2' are used for that
-purpose.
-
- -- Function: void mpf_init (mpf_t X)
-     Initialize X to 0.  Normally, a variable should be initialized
-     once only or at least be cleared, using `mpf_clear', between
-     initializations.  The precision of X is undefined unless a default
-     precision has already been established by a call to
-     `mpf_set_default_prec'.
-
- -- Function: void mpf_init2 (mpf_t X, mp_bitcnt_t PREC)
-     Initialize X to 0 and set its precision to be *at least* PREC
-     bits.  Normally, a variable should be initialized once only or at
-     least be cleared, using `mpf_clear', between initializations.
-
- -- Function: void mpf_inits (mpf_t X, ...)
-     Initialize a NULL-terminated list of `mpf_t' variables, and set
-     their values to 0.  The precision of the initialized variables is
-     undefined unless a default precision has already been established
-     by a call to `mpf_set_default_prec'.
-
- -- Function: void mpf_clear (mpf_t X)
-     Free the space occupied by X.  Make sure to call this function for
-     all `mpf_t' variables when you are done with them.
-
- -- Function: void mpf_clears (mpf_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpf_t'
-     variables.
-
-   Here is an example on how to initialize floating-point variables:
-     {
-       mpf_t x, y;
-       mpf_init (x);           /* use default precision */
-       mpf_init2 (y, 256);     /* precision _at least_ 256 bits */
-       ...
-       /* Unless the program is about to exit, do ... */
-       mpf_clear (x);
-       mpf_clear (y);
-     }
-
-   The following three functions are useful for changing the precision
-during a calculation.  A typical use would be for adjusting the
-precision gradually in iterative algorithms like Newton-Raphson, making
-the computation precision closely match the actual accurate part of the
-numbers.
-
- -- Function: mp_bitcnt_t mpf_get_prec (mpf_t OP)
-     Return the current precision of OP, in bits.
-
- -- Function: void mpf_set_prec (mpf_t ROP, mp_bitcnt_t PREC)
-     Set the precision of ROP to be *at least* PREC bits.  The value in
-     ROP will be truncated to the new precision.
-
-     This function requires a call to `realloc', and so should not be
-     used in a tight loop.
-
- -- Function: void mpf_set_prec_raw (mpf_t ROP, mp_bitcnt_t PREC)
-     Set the precision of ROP to be *at least* PREC bits, without
-     changing the memory allocated.
-
-     PREC must be no more than the allocated precision for ROP, that
-     being the precision when ROP was initialized, or in the most recent
-     `mpf_set_prec'.
-
-     The value in ROP is unchanged, and in particular if it had a higher
-     precision than PREC it will retain that higher precision.  New
-     values written to ROP will use the new PREC.
-
-     Before calling `mpf_clear' or the full `mpf_set_prec', another
-     `mpf_set_prec_raw' call must be made to restore ROP to its original
-     allocated precision.  Failing to do so will have unpredictable
-     results.
-
-     `mpf_get_prec' can be used before `mpf_set_prec_raw' to get the
-     original allocated precision.  After `mpf_set_prec_raw' it
-     reflects the PREC value set.
-
-     `mpf_set_prec_raw' is an efficient way to use an `mpf_t' variable
-     at different precisions during a calculation, perhaps to gradually
-     increase precision in an iteration, or just to use various
-     different precisions for different purposes during a calculation.
-
-\1f
-File: gmp.info,  Node: Assigning Floats,  Next: Simultaneous Float Init & Assign,  Prev: Initializing Floats,  Up: Floating-point Functions
-
-7.2 Assignment Functions
-========================
-
-These functions assign new values to already initialized floats (*note
-Initializing Floats::).
-
- -- Function: void mpf_set (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_set_ui (mpf_t ROP, unsigned long int OP)
- -- Function: void mpf_set_si (mpf_t ROP, signed long int OP)
- -- Function: void mpf_set_d (mpf_t ROP, double OP)
- -- Function: void mpf_set_z (mpf_t ROP, mpz_t OP)
- -- Function: void mpf_set_q (mpf_t ROP, mpq_t OP)
-     Set the value of ROP from OP.
-
- -- Function: int mpf_set_str (mpf_t ROP, char *STR, int BASE)
-     Set the value of ROP from the string in STR.  The string is of the
-     form `M@N' or, if the base is 10 or less, alternatively `MeN'.
-     `M' is the mantissa and `N' is the exponent.  The mantissa is
-     always in the specified base.  The exponent is either in the
-     specified base or, if BASE is negative, in decimal.  The decimal
-     point expected is taken from the current locale, on systems
-     providing `localeconv'.
-
-     The argument BASE may be in the ranges 2 to 62, or -62 to -2.
-     Negative values are used to specify that the exponent is in
-     decimal.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value; for bases 37 to 62, upper-case letter
-     represent the usual 10..35 while lower-case letter represent
-     36..61.
-
-     Unlike the corresponding `mpz' function, the base will not be
-     determined from the leading characters of the string if BASE is 0.
-     This is so that numbers like `0.23' are not interpreted as octal.
-
-     White space is allowed in the string, and is simply ignored.
-     [This is not really true; white-space is ignored in the beginning
-     of the string and within the mantissa, but not in other places,
-     such as after a minus sign or in the exponent.  We are considering
-     changing the definition of this function, making it fail when
-     there is any white-space in the input, since that makes a lot of
-     sense.  Please tell us your opinion about this change.  Do you
-     really want it to accept "3 14" as meaning 314 as it does now?]
-
-     This function returns 0 if the entire string is a valid number in
-     base BASE.  Otherwise it returns -1.
-
- -- Function: void mpf_swap (mpf_t ROP1, mpf_t ROP2)
-     Swap ROP1 and ROP2 efficiently.  Both the values and the
-     precisions of the two variables are swapped.
-
-\1f
-File: gmp.info,  Node: Simultaneous Float Init & Assign,  Next: Converting Floats,  Prev: Assigning Floats,  Up: Floating-point Functions
-
-7.3 Combined Initialization and Assignment Functions
-====================================================
-
-For convenience, GMP provides a parallel series of initialize-and-set
-functions which initialize the output and then store the value there.
-These functions' names have the form `mpf_init_set...'
-
-   Once the float has been initialized by any of the `mpf_init_set...'
-functions, it can be used as the source or destination operand for the
-ordinary float functions.  Don't use an initialize-and-set function on
-a variable already initialized!
-
- -- Function: void mpf_init_set (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_init_set_ui (mpf_t ROP, unsigned long int OP)
- -- Function: void mpf_init_set_si (mpf_t ROP, signed long int OP)
- -- Function: void mpf_init_set_d (mpf_t ROP, double OP)
-     Initialize ROP and set its value from OP.
-
-     The precision of ROP will be taken from the active default
-     precision, as set by `mpf_set_default_prec'.
-
- -- Function: int mpf_init_set_str (mpf_t ROP, char *STR, int BASE)
-     Initialize ROP and set its value from the string in STR.  See
-     `mpf_set_str' above for details on the assignment operation.
-
-     Note that ROP is initialized even if an error occurs.  (I.e., you
-     have to call `mpf_clear' for it.)
-
-     The precision of ROP will be taken from the active default
-     precision, as set by `mpf_set_default_prec'.
-
-\1f
-File: gmp.info,  Node: Converting Floats,  Next: Float Arithmetic,  Prev: Simultaneous Float Init & Assign,  Up: Floating-point Functions
-
-7.4 Conversion Functions
-========================
-
- -- Function: double mpf_get_d (mpf_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent in OP is too big or too small to fit a `double'
-     then the result is system dependent.  For too big an infinity is
-     returned when available.  For too small 0.0 is normally returned.
-     Hardware overflow, underflow and denorm traps may or may not occur.
-
- -- Function: double mpf_get_d_2exp (signed long int *EXP, mpf_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero), and with an exponent returned separately.
-
-     The return value is in the range 0.5<=abs(D)<1 and the exponent is
-     stored to `*EXP'.  D * 2^EXP is the (truncated) OP value.  If OP
-     is zero, the return is 0.0 and 0 is stored to `*EXP'.
-
-     This is similar to the standard C `frexp' function (*note
-     Normalization Functions: (libc)Normalization Functions.).
-
- -- Function: long mpf_get_si (mpf_t OP)
- -- Function: unsigned long mpf_get_ui (mpf_t OP)
-     Convert OP to a `long' or `unsigned long', truncating any fraction
-     part.  If OP is too big for the return type, the result is
-     undefined.
-
-     See also `mpf_fits_slong_p' and `mpf_fits_ulong_p' (*note
-     Miscellaneous Float Functions::).
-
- -- Function: char * mpf_get_str (char *STR, mp_exp_t *EXPPTR, int
-          BASE, size_t N_DIGITS, mpf_t OP)
-     Convert OP to a string of digits in base BASE.  The base argument
-     may vary from 2 to 62 or from -2 to -36.  Up to N_DIGITS digits
-     will be generated.  Trailing zeros are not returned.  No more
-     digits than can be accurately represented by OP are ever
-     generated.  If N_DIGITS is 0 then that accurate maximum number of
-     digits are generated.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of N_DIGITS + 2
-     bytes, that being enough for the mantissa, a possible minus sign,
-     and a null-terminator.  When N_DIGITS is 0 to get all significant
-     digits, an application won't be able to know the space required,
-     and STR should be `NULL' in that case.
-
-     The generated string is a fraction, with an implicit radix point
-     immediately to the left of the first digit.  The applicable
-     exponent is written through the EXPPTR pointer.  For example, the
-     number 3.1416 would be returned as string "31416" and exponent 1.
-
-     When OP is zero, an empty string is produced and the exponent
-     returned is 0.
-
-     A pointer to the result string is returned, being either the
-     allocated block or the given STR.
-
-\1f
-File: gmp.info,  Node: Float Arithmetic,  Next: Float Comparison,  Prev: Converting Floats,  Up: Floating-point Functions
-
-7.5 Arithmetic Functions
-========================
-
- -- Function: void mpf_add (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_add_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 + OP2.
-
- -- Function: void mpf_sub (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_ui_sub (mpf_t ROP, unsigned long int OP1, mpf_t
-          OP2)
- -- Function: void mpf_sub_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 - OP2.
-
- -- Function: void mpf_mul (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_mul_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 times OP2.
-
-   Division is undefined if the divisor is zero, and passing a zero
-divisor to the divide functions will make these functions intentionally
-divide by zero.  This lets the user handle arithmetic exceptions in
-these functions in the same manner as other arithmetic exceptions.
-
- -- Function: void mpf_div (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_ui_div (mpf_t ROP, unsigned long int OP1, mpf_t
-          OP2)
- -- Function: void mpf_div_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1/OP2.
-
- -- Function: void mpf_sqrt (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_sqrt_ui (mpf_t ROP, unsigned long int OP)
-     Set ROP to the square root of OP.
-
- -- Function: void mpf_pow_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 raised to the power OP2.
-
- -- Function: void mpf_neg (mpf_t ROP, mpf_t OP)
-     Set ROP to -OP.
-
- -- Function: void mpf_abs (mpf_t ROP, mpf_t OP)
-     Set ROP to the absolute value of OP.
-
- -- Function: void mpf_mul_2exp (mpf_t ROP, mpf_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.
-
- -- Function: void mpf_div_2exp (mpf_t ROP, mpf_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 divided by 2 raised to OP2.
-
-\1f
-File: gmp.info,  Node: Float Comparison,  Next: I/O of Floats,  Prev: Float Arithmetic,  Up: Floating-point Functions
-
-7.6 Comparison Functions
-========================
-
- -- Function: int mpf_cmp (mpf_t OP1, mpf_t OP2)
- -- Function: int mpf_cmp_d (mpf_t OP1, double OP2)
- -- Function: int mpf_cmp_ui (mpf_t OP1, unsigned long int OP2)
- -- Function: int mpf_cmp_si (mpf_t OP1, signed long int OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
-     `mpf_cmp_d' can be called with an infinity, but results are
-     undefined for a NaN.
-
- -- Function: int mpf_eq (mpf_t OP1, mpf_t OP2, mp_bitcnt_t op3)
-     Return non-zero if the first OP3 bits of OP1 and OP2 are equal,
-     zero otherwise.  I.e., test if OP1 and OP2 are approximately equal.
-
-     Caution 1: All version of GMP up to version 4.2.4 compared just
-     whole limbs, meaning sometimes more than OP3 bits, sometimes fewer.
-
-     Caution 2: This function will consider XXX11...111 and XX100...000
-     different, even if ... is replaced by a semi-infinite number of
-     bits.  Such numbers are really just one ulp off, and should be
-     considered equal.
-
- -- Function: void mpf_reldiff (mpf_t ROP, mpf_t OP1, mpf_t OP2)
-     Compute the relative difference between OP1 and OP2 and store the
-     result in ROP.  This is abs(OP1-OP2)/OP1.
-
- -- Macro: int mpf_sgn (mpf_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates
-     its arguments multiple times.
-
-\1f
-File: gmp.info,  Node: I/O of Floats,  Next: Miscellaneous Float Functions,  Prev: Float Comparison,  Up: Floating-point Functions
-
-7.7 Input and Output Functions
-==============================
-
-Functions that perform input from a stdio stream, and functions that
-output to a stdio stream.  Passing a `NULL' pointer for a STREAM
-argument to any of these functions will make them read from `stdin' and
-write to `stdout', respectively.
-
-   When using any of these functions, it is a good idea to include
-`stdio.h' before `gmp.h', since that will allow `gmp.h' to define
-prototypes for these functions.
-
- -- Function: size_t mpf_out_str (FILE *STREAM, int BASE, size_t
-          N_DIGITS, mpf_t OP)
-     Print OP to STREAM, as a string of digits.  Return the number of
-     bytes written, or if an error occurred, return 0.
-
-     The mantissa is prefixed with an `0.' and is in the given BASE,
-     which may vary from 2 to 62 or from -2 to -36.  An exponent is
-     then printed, separated by an `e', or if the base is greater than
-     10 then by an `@'.  The exponent is always in decimal.  The
-     decimal point follows the current locale, on systems providing
-     `localeconv'.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     Up to N_DIGITS will be printed from the mantissa, except that no
-     more digits than are accurately representable by OP will be
-     printed.  N_DIGITS can be 0 to select that accurate maximum.
-
- -- Function: size_t mpf_inp_str (mpf_t ROP, FILE *STREAM, int BASE)
-     Read a string in base BASE from STREAM, and put the read float in
-     ROP.  The string is of the form `M@N' or, if the base is 10 or
-     less, alternatively `MeN'.  `M' is the mantissa and `N' is the
-     exponent.  The mantissa is always in the specified base.  The
-     exponent is either in the specified base or, if BASE is negative,
-     in decimal.  The decimal point expected is taken from the current
-     locale, on systems providing `localeconv'.
-
-     The argument BASE may be in the ranges 2 to 36, or -36 to -2.
-     Negative values are used to specify that the exponent is in
-     decimal.
-
-     Unlike the corresponding `mpz' function, the base will not be
-     determined from the leading characters of the string if BASE is 0.
-     This is so that numbers like `0.23' are not interpreted as octal.
-
-     Return the number of bytes read, or if an error occurred, return 0.
-
-\1f
-File: gmp.info,  Node: Miscellaneous Float Functions,  Prev: I/O of Floats,  Up: Floating-point Functions
-
-7.8 Miscellaneous Functions
-===========================
-
- -- Function: void mpf_ceil (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_floor (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_trunc (mpf_t ROP, mpf_t OP)
-     Set ROP to OP rounded to an integer.  `mpf_ceil' rounds to the
-     next higher integer, `mpf_floor' to the next lower, and `mpf_trunc'
-     to the integer towards zero.
-
- -- Function: int mpf_integer_p (mpf_t OP)
-     Return non-zero if OP is an integer.
-
- -- Function: int mpf_fits_ulong_p (mpf_t OP)
- -- Function: int mpf_fits_slong_p (mpf_t OP)
- -- Function: int mpf_fits_uint_p (mpf_t OP)
- -- Function: int mpf_fits_sint_p (mpf_t OP)
- -- Function: int mpf_fits_ushort_p (mpf_t OP)
- -- Function: int mpf_fits_sshort_p (mpf_t OP)
-     Return non-zero if OP would fit in the respective C data type, when
-     truncated to an integer.
-
- -- Function: void mpf_urandomb (mpf_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t NBITS)
-     Generate a uniformly distributed random float in ROP, such that 0
-     <= ROP < 1, with NBITS significant bits in the mantissa.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpf_random2 (mpf_t ROP, mp_size_t MAX_SIZE, mp_exp_t
-          EXP)
-     Generate a random float of at most MAX_SIZE limbs, with long
-     strings of zeros and ones in the binary representation.  The
-     exponent of the number is in the interval -EXP to EXP (in limbs).
-     This function is useful for testing functions and algorithms,
-     since these kind of random numbers have proven to be more likely
-     to trigger corner-case bugs.  Negative random numbers are
-     generated when MAX_SIZE is negative.
-
-\1f
-File: gmp.info,  Node: Low-level Functions,  Next: Random Number Functions,  Prev: Floating-point Functions,  Up: Top
-
-8 Low-level Functions
-*********************
-
-This chapter describes low-level GMP functions, used to implement the
-high-level GMP functions, but also intended for time-critical user code.
-
-   These functions start with the prefix `mpn_'.
-
-   The `mpn' functions are designed to be as fast as possible, *not* to
-provide a coherent calling interface.  The different functions have
-somewhat similar interfaces, but there are variations that make them
-hard to use.  These functions do as little as possible apart from the
-real multiple precision computation, so that no time is spent on things
-that not all callers need.
-
-   A source operand is specified by a pointer to the least significant
-limb and a limb count.  A destination operand is specified by just a
-pointer.  It is the responsibility of the caller to ensure that the
-destination has enough space for storing the result.
-
-   With this way of specifying operands, it is possible to perform
-computations on subranges of an argument, and store the result into a
-subrange of a destination.
-
-   A common requirement for all functions is that each source area
-needs at least one limb.  No size argument may be zero.  Unless
-otherwise stated, in-place operations are allowed where source and
-destination are the same, but not where they only partly overlap.
-
-   The `mpn' functions are the base for the implementation of the
-`mpz_', `mpf_', and `mpq_' functions.
-
-   This example adds the number beginning at S1P and the number
-beginning at S2P and writes the sum at DESTP.  All areas have N limbs.
-
-     cy = mpn_add_n (destp, s1p, s2p, n)
-
-   It should be noted that the `mpn' functions make no attempt to
-identify high or low zero limbs on their operands, or other special
-forms.  On random data such cases will be unlikely and it'd be wasteful
-for every function to check every time.  An application knowing
-something about its data can take steps to trim or perhaps split its
-calculations.
-
-
-In the notation used below, a source operand is identified by the
-pointer to the least significant limb, and the limb count in braces.
-For example, {S1P, S1N}.
-
- -- Function: mp_limb_t mpn_add_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Add {S1P, N} and {S2P, N}, and write the N least significant limbs
-     of the result to RP.  Return carry, either 0 or 1.
-
-     This is the lowest-level function for addition.  It is the
-     preferred function for addition, since it is written in assembly
-     for most CPUs.  For addition of a variable to itself (i.e., S1P
-     equals S2P) use `mpn_lshift' with a count of 1 for optimal speed.
-
- -- Function: mp_limb_t mpn_add_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Add {S1P, N} and S2LIMB, and write the N least significant limbs
-     of the result to RP.  Return carry, either 0 or 1.
-
- -- Function: mp_limb_t mpn_add (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Add {S1P, S1N} and {S2P, S2N}, and write the S1N least significant
-     limbs of the result to RP.  Return carry, either 0 or 1.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: mp_limb_t mpn_sub_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Subtract {S2P, N} from {S1P, N}, and write the N least significant
-     limbs of the result to RP.  Return borrow, either 0 or 1.
-
-     This is the lowest-level function for subtraction.  It is the
-     preferred function for subtraction, since it is written in
-     assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_sub_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Subtract S2LIMB from {S1P, N}, and write the N least significant
-     limbs of the result to RP.  Return borrow, either 0 or 1.
-
- -- Function: mp_limb_t mpn_sub (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Subtract {S2P, S2N} from {S1P, S1N}, and write the S1N least
-     significant limbs of the result to RP.  Return borrow, either 0 or
-     1.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: void mpn_neg (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N)
-     Perform the negation of {SP, N}, and write the result to {RP, N}.
-     Return carry-out.
-
- -- Function: void mpn_mul_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Multiply {S1P, N} and {S2P, N}, and write the 2*N-limb result to
-     RP.
-
-     The destination has to have space for 2*N limbs, even if the
-     product's most significant limb is zero.  No overlap is permitted
-     between the destination and either source.
-
-     If the two input operands are the same, use `mpn_sqr'.
-
- -- Function: mp_limb_t mpn_mul (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Multiply {S1P, S1N} and {S2P, S2N}, and write the (S1N+S2N)-limb
-     result to RP.  Return the most significant limb of the result.
-
-     The destination has to have space for S1N + S2N limbs, even if the
-     product's most significant limb is zero.  No overlap is permitted
-     between the destination and either source.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: void mpn_sqr (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Compute the square of {S1P, N} and write the 2*N-limb result to RP.
-
-     The destination has to have space for 2*N limbs, even if the
-     result's most significant limb is zero.  No overlap is permitted
-     between the destination and the source.
-
- -- Function: mp_limb_t mpn_mul_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} by S2LIMB, and write the N least significant
-     limbs of the product to RP.  Return the most significant limb of
-     the product.  {S1P, N} and {RP, N} are allowed to overlap provided
-     RP <= S1P.
-
-     This is a low-level function that is a building block for general
-     multiplication as well as other operations in GMP.  It is written
-     in assembly for most CPUs.
-
-     Don't call this function if S2LIMB is a power of 2; use
-     `mpn_lshift' with a count equal to the logarithm of S2LIMB
-     instead, for optimal speed.
-
- -- Function: mp_limb_t mpn_addmul_1 (mp_limb_t *RP, const mp_limb_t
-          *S1P, mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} and S2LIMB, and add the N least significant
-     limbs of the product to {RP, N} and write the result to RP.
-     Return the most significant limb of the product, plus carry-out
-     from the addition.
-
-     This is a low-level function that is a building block for general
-     multiplication as well as other operations in GMP.  It is written
-     in assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_submul_1 (mp_limb_t *RP, const mp_limb_t
-          *S1P, mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} and S2LIMB, and subtract the N least significant
-     limbs of the product from {RP, N} and write the result to RP.
-     Return the most significant limb of the product, plus borrow-out
-     from the subtraction.
-
-     This is a low-level function that is a building block for general
-     multiplication and division as well as other operations in GMP.
-     It is written in assembly for most CPUs.
-
- -- Function: void mpn_tdiv_qr (mp_limb_t *QP, mp_limb_t *RP, mp_size_t
-          QXN, const mp_limb_t *NP, mp_size_t NN, const mp_limb_t *DP,
-          mp_size_t DN)
-     Divide {NP, NN} by {DP, DN} and put the quotient at {QP, NN-DN+1}
-     and the remainder at {RP, DN}.  The quotient is rounded towards 0.
-
-     No overlap is permitted between arguments, except that NP might
-     equal RP.  The dividend size NN must be greater than or equal to
-     divisor size DN.  The most significant limb of the divisor must be
-     non-zero.  The QXN operand must be zero.
-
- -- Function: mp_limb_t mpn_divrem (mp_limb_t *R1P, mp_size_t QXN,
-          mp_limb_t *RS2P, mp_size_t RS2N, const mp_limb_t *S3P,
-          mp_size_t S3N)
-     [This function is obsolete.  Please call `mpn_tdiv_qr' instead for
-     best performance.]
-
-     Divide {RS2P, RS2N} by {S3P, S3N}, and write the quotient at R1P,
-     with the exception of the most significant limb, which is
-     returned.  The remainder replaces the dividend at RS2P; it will be
-     S3N limbs long (i.e., as many limbs as the divisor).
-
-     In addition to an integer quotient, QXN fraction limbs are
-     developed, and stored after the integral limbs.  For most usages,
-     QXN will be zero.
-
-     It is required that RS2N is greater than or equal to S3N.  It is
-     required that the most significant bit of the divisor is set.
-
-     If the quotient is not needed, pass RS2P + S3N as R1P.  Aside from
-     that special case, no overlap between arguments is permitted.
-
-     Return the most significant limb of the quotient, either 0 or 1.
-
-     The area at R1P needs to be RS2N - S3N + QXN limbs large.
-
- -- Function: mp_limb_t mpn_divrem_1 (mp_limb_t *R1P, mp_size_t QXN,
-          mp_limb_t *S2P, mp_size_t S2N, mp_limb_t S3LIMB)
- -- Macro: mp_limb_t mpn_divmod_1 (mp_limb_t *R1P, mp_limb_t *S2P,
-          mp_size_t S2N, mp_limb_t S3LIMB)
-     Divide {S2P, S2N} by S3LIMB, and write the quotient at R1P.
-     Return the remainder.
-
-     The integer quotient is written to {R1P+QXN, S2N} and in addition
-     QXN fraction limbs are developed and written to {R1P, QXN}.
-     Either or both S2N and QXN can be zero.  For most usages, QXN will
-     be zero.
-
-     `mpn_divmod_1' exists for upward source compatibility and is
-     simply a macro calling `mpn_divrem_1' with a QXN of 0.
-
-     The areas at R1P and S2P have to be identical or completely
-     separate, not partially overlapping.
-
- -- Function: mp_limb_t mpn_divmod (mp_limb_t *R1P, mp_limb_t *RS2P,
-          mp_size_t RS2N, const mp_limb_t *S3P, mp_size_t S3N)
-     [This function is obsolete.  Please call `mpn_tdiv_qr' instead for
-     best performance.]
-
- -- Macro: mp_limb_t mpn_divexact_by3 (mp_limb_t *RP, mp_limb_t *SP,
-          mp_size_t N)
- -- Function: mp_limb_t mpn_divexact_by3c (mp_limb_t *RP, mp_limb_t
-          *SP, mp_size_t N, mp_limb_t CARRY)
-     Divide {SP, N} by 3, expecting it to divide exactly, and writing
-     the result to {RP, N}.  If 3 divides exactly, the return value is
-     zero and the result is the quotient.  If not, the return value is
-     non-zero and the result won't be anything useful.
-
-     `mpn_divexact_by3c' takes an initial carry parameter, which can be
-     the return value from a previous call, so a large calculation can
-     be done piece by piece from low to high.  `mpn_divexact_by3' is
-     simply a macro calling `mpn_divexact_by3c' with a 0 carry
-     parameter.
-
-     These routines use a multiply-by-inverse and will be faster than
-     `mpn_divrem_1' on CPUs with fast multiplication but slow division.
-
-     The source a, result q, size n, initial carry i, and return value
-     c satisfy c*b^n + a-i = 3*q, where b=2^GMP_NUMB_BITS.  The return
-     c is always 0, 1 or 2, and the initial carry i must also be 0, 1
-     or 2 (these are both borrows really).  When c=0 clearly q=(a-i)/3.
-     When c!=0, the remainder (a-i) mod 3 is given by 3-c, because b
-     == 1 mod 3 (when `mp_bits_per_limb' is even, which is always so
-     currently).
-
- -- Function: mp_limb_t mpn_mod_1 (mp_limb_t *S1P, mp_size_t S1N,
-          mp_limb_t S2LIMB)
-     Divide {S1P, S1N} by S2LIMB, and return the remainder.  S1N can be
-     zero.
-
- -- Function: mp_limb_t mpn_lshift (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N, unsigned int COUNT)
-     Shift {SP, N} left by COUNT bits, and write the result to {RP, N}.
-     The bits shifted out at the left are returned in the least
-     significant COUNT bits of the return value (the rest of the return
-     value is zero).
-
-     COUNT must be in the range 1 to mp_bits_per_limb-1.  The regions
-     {SP, N} and {RP, N} may overlap, provided RP >= SP.
-
-     This function is written in assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_rshift (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N, unsigned int COUNT)
-     Shift {SP, N} right by COUNT bits, and write the result to {RP,
-     N}.  The bits shifted out at the right are returned in the most
-     significant COUNT bits of the return value (the rest of the return
-     value is zero).
-
-     COUNT must be in the range 1 to mp_bits_per_limb-1.  The regions
-     {SP, N} and {RP, N} may overlap, provided RP <= SP.
-
-     This function is written in assembly for most CPUs.
-
- -- Function: int mpn_cmp (const mp_limb_t *S1P, const mp_limb_t *S2P,
-          mp_size_t N)
-     Compare {S1P, N} and {S2P, N} and return a positive value if S1 >
-     S2, 0 if they are equal, or a negative value if S1 < S2.
-
- -- Function: mp_size_t mpn_gcd (mp_limb_t *RP, mp_limb_t *XP,
-          mp_size_t XN, mp_limb_t *YP, mp_size_t YN)
-     Set {RP, RETVAL} to the greatest common divisor of {XP, XN} and
-     {YP, YN}.  The result can be up to YN limbs, the return value is
-     the actual number produced.  Both source operands are destroyed.
-
-     {XP, XN} must have at least as many bits as {YP, YN}.  {YP, YN}
-     must be odd.  Both operands must have non-zero most significant
-     limbs.  No overlap is permitted between {XP, XN} and {YP, YN}.
-
- -- Function: mp_limb_t mpn_gcd_1 (const mp_limb_t *XP, mp_size_t XN,
-          mp_limb_t YLIMB)
-     Return the greatest common divisor of {XP, XN} and YLIMB.  Both
-     operands must be non-zero.
-
- -- Function: mp_size_t mpn_gcdext (mp_limb_t *GP, mp_limb_t *SP,
-          mp_size_t *SN, mp_limb_t *XP, mp_size_t XN, mp_limb_t *YP,
-          mp_size_t YN)
-     Let U be defined by {XP, XN} and let V be defined by {YP, YN}.
-
-     Compute the greatest common divisor G of U and V.  Compute a
-     cofactor S such that G = US + VT.  The second cofactor T is not
-     computed but can easily be obtained from (G - U*S) / V (the
-     division will be exact).  It is required that U >= V > 0.
-
-     S satisfies S = 1 or abs(S) < V / (2 G). S = 0 if and only if V
-     divides U (i.e., G = V).
-
-     Store G at GP and let the return value define its limb count.
-     Store S at SP and let |*SN| define its limb count.  S can be
-     negative; when this happens *SN will be negative.  The areas at GP
-     and SP should each have room for XN+1 limbs.
-
-     The areas {XP, XN+1} and {YP, YN+1} are destroyed (i.e. the input
-     operands plus an extra limb past the end of each).
-
-     Compatibility note: GMP 4.3.0 and 4.3.1 defined S less strictly.
-     Earlier as well as later GMP releases define S as described here.
-
- -- Function: mp_size_t mpn_sqrtrem (mp_limb_t *R1P, mp_limb_t *R2P,
-          const mp_limb_t *SP, mp_size_t N)
-     Compute the square root of {SP, N} and put the result at {R1P,
-     ceil(N/2)} and the remainder at {R2P, RETVAL}.  R2P needs space
-     for N limbs, but the return value indicates how many are produced.
-
-     The most significant limb of {SP, N} must be non-zero.  The areas
-     {R1P, ceil(N/2)} and {SP, N} must be completely separate.  The
-     areas {R2P, N} and {SP, N} must be either identical or completely
-     separate.
-
-     If the remainder is not wanted then R2P can be `NULL', and in this
-     case the return value is zero or non-zero according to whether the
-     remainder would have been zero or non-zero.
-
-     A return value of zero indicates a perfect square.  See also
-     `mpz_perfect_square_p'.
-
- -- Function: mp_size_t mpn_get_str (unsigned char *STR, int BASE,
-          mp_limb_t *S1P, mp_size_t S1N)
-     Convert {S1P, S1N} to a raw unsigned char array at STR in base
-     BASE, and return the number of characters produced.  There may be
-     leading zeros in the string.  The string is not in ASCII; to
-     convert it to printable format, add the ASCII codes for `0' or
-     `A', depending on the base and range.  BASE can vary from 2 to 256.
-
-     The most significant limb of the input {S1P, S1N} must be
-     non-zero.  The input {S1P, S1N} is clobbered, except when BASE is
-     a power of 2, in which case it's unchanged.
-
-     The area at STR has to have space for the largest possible number
-     represented by a S1N long limb array, plus one extra character.
-
- -- Function: mp_size_t mpn_set_str (mp_limb_t *RP, const unsigned char
-          *STR, size_t STRSIZE, int BASE)
-     Convert bytes {STR,STRSIZE} in the given BASE to limbs at RP.
-
-     STR[0] is the most significant byte and STR[STRSIZE-1] is the
-     least significant.  Each byte should be a value in the range 0 to
-     BASE-1, not an ASCII character.  BASE can vary from 2 to 256.
-
-     The return value is the number of limbs written to RP.  If the most
-     significant input byte is non-zero then the high limb at RP will be
-     non-zero, and only that exact number of limbs will be required
-     there.
-
-     If the most significant input byte is zero then there may be high
-     zero limbs written to RP and included in the return value.
-
-     STRSIZE must be at least 1, and no overlap is permitted between
-     {STR,STRSIZE} and the result at RP.
-
- -- Function: mp_bitcnt_t mpn_scan0 (const mp_limb_t *S1P, mp_bitcnt_t
-          BIT)
-     Scan S1P from bit position BIT for the next clear bit.
-
-     It is required that there be a clear bit within the area at S1P at
-     or beyond bit position BIT, so that the function has something to
-     return.
-
- -- Function: mp_bitcnt_t mpn_scan1 (const mp_limb_t *S1P, mp_bitcnt_t
-          BIT)
-     Scan S1P from bit position BIT for the next set bit.
-
-     It is required that there be a set bit within the area at S1P at or
-     beyond bit position BIT, so that the function has something to
-     return.
-
- -- Function: void mpn_random (mp_limb_t *R1P, mp_size_t R1N)
- -- Function: void mpn_random2 (mp_limb_t *R1P, mp_size_t R1N)
-     Generate a random number of length R1N and store it at R1P.  The
-     most significant limb is always non-zero.  `mpn_random' generates
-     uniformly distributed limb data, `mpn_random2' generates long
-     strings of zeros and ones in the binary representation.
-
-     `mpn_random2' is intended for testing the correctness of the `mpn'
-     routines.
-
- -- Function: mp_bitcnt_t mpn_popcount (const mp_limb_t *S1P, mp_size_t
-          N)
-     Count the number of set bits in {S1P, N}.
-
- -- Function: mp_bitcnt_t mpn_hamdist (const mp_limb_t *S1P, const
-          mp_limb_t *S2P, mp_size_t N)
-     Compute the hamming distance between {S1P, N} and {S2P, N}, which
-     is the number of bit positions where the two operands have
-     different bit values.
-
- -- Function: int mpn_perfect_square_p (const mp_limb_t *S1P, mp_size_t
-          N)
-     Return non-zero iff {S1P, N} is a perfect square.
-
- -- Function: void mpn_and_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and {S2P, N}, and
-     write the result to {RP, N}.
-
- -- Function: void mpn_ior_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and {S2P, N},
-     and write the result to {RP, N}.
-
- -- Function: void mpn_xor_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical exclusive or of {S1P, N} and {S2P, N},
-     and write the result to {RP, N}.
-
- -- Function: void mpn_andn_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and the bitwise
-     complement of {S2P, N}, and write the result to {RP, N}.
-
- -- Function: void mpn_iorn_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and the
-     bitwise complement of {S2P, N}, and write the result to {RP, N}.
-
- -- Function: void mpn_nand_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and {S2P, N}, and
-     write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_nior_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and {S2P, N},
-     and write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_xnor_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical exclusive or of {S1P, N} and {S2P, N},
-     and write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_com (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N)
-     Perform the bitwise complement of {SP, N}, and write the result to
-     {RP, N}.
-
- -- Function: void mpn_copyi (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Copy from {S1P, N} to {RP, N}, increasingly.
-
- -- Function: void mpn_copyd (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Copy from {S1P, N} to {RP, N}, decreasingly.
-
- -- Function: void mpn_zero (mp_limb_t *RP, mp_size_t N)
-     Zero {RP, N}.
-
-
-8.1 Nails
-=========
-
-*Everything in this section is highly experimental and may disappear or
-be subject to incompatible changes in a future version of GMP.*
-
-   Nails are an experimental feature whereby a few bits are left unused
-at the top of each `mp_limb_t'.  This can significantly improve carry
-handling on some processors.
-
-   All the `mpn' functions accepting limb data will expect the nail
-bits to be zero on entry, and will return data with the nails similarly
-all zero.  This applies both to limb vectors and to single limb
-arguments.
-
-   Nails can be enabled by configuring with `--enable-nails'.  By
-default the number of bits will be chosen according to what suits the
-host processor, but a particular number can be selected with
-`--enable-nails=N'.
-
-   At the mpn level, a nail build is neither source nor binary
-compatible with a non-nail build, strictly speaking.  But programs
-acting on limbs only through the mpn functions are likely to work
-equally well with either build, and judicious use of the definitions
-below should make any program compatible with either build, at the
-source level.
-
-   For the higher level routines, meaning `mpz' etc, a nail build
-should be fully source and binary compatible with a non-nail build.
-
- -- Macro: GMP_NAIL_BITS
- -- Macro: GMP_NUMB_BITS
- -- Macro: GMP_LIMB_BITS
-     `GMP_NAIL_BITS' is the number of nail bits, or 0 when nails are
-     not in use.  `GMP_NUMB_BITS' is the number of data bits in a limb.
-     `GMP_LIMB_BITS' is the total number of bits in an `mp_limb_t'.  In
-     all cases
-
-          GMP_LIMB_BITS == GMP_NAIL_BITS + GMP_NUMB_BITS
-
- -- Macro: GMP_NAIL_MASK
- -- Macro: GMP_NUMB_MASK
-     Bit masks for the nail and number parts of a limb.
-     `GMP_NAIL_MASK' is 0 when nails are not in use.
-
-     `GMP_NAIL_MASK' is not often needed, since the nail part can be
-     obtained with `x >> GMP_NUMB_BITS', and that means one less large
-     constant, which can help various RISC chips.
-
- -- Macro: GMP_NUMB_MAX
-     The maximum value that can be stored in the number part of a limb.
-     This is the same as `GMP_NUMB_MASK', but can be used for clarity
-     when doing comparisons rather than bit-wise operations.
-
-   The term "nails" comes from finger or toe nails, which are at the
-ends of a limb (arm or leg).  "numb" is short for number, but is also
-how the developers felt after trying for a long time to come up with
-sensible names for these things.
-
-   In the future (the distant future most likely) a non-zero nail might
-be permitted, giving non-unique representations for numbers in a limb
-vector.  This would help vector processors since carries would only
-ever need to propagate one or two limbs.
-
-\1f
-File: gmp.info,  Node: Random Number Functions,  Next: Formatted Output,  Prev: Low-level Functions,  Up: Top
-
-9 Random Number Functions
-*************************
-
-Sequences of pseudo-random numbers in GMP are generated using a
-variable of type `gmp_randstate_t', which holds an algorithm selection
-and a current state.  Such a variable must be initialized by a call to
-one of the `gmp_randinit' functions, and can be seeded with one of the
-`gmp_randseed' functions.
-
-   The functions actually generating random numbers are described in
-*Note Integer Random Numbers::, and *Note Miscellaneous Float
-Functions::.
-
-   The older style random number functions don't accept a
-`gmp_randstate_t' parameter but instead share a global variable of that
-type.  They use a default algorithm and are currently not seeded
-(though perhaps that will change in the future).  The new functions
-accepting a `gmp_randstate_t' are recommended for applications that
-care about randomness.
-
-* Menu:
-
-* Random State Initialization::
-* Random State Seeding::
-* Random State Miscellaneous::
-
-\1f
-File: gmp.info,  Node: Random State Initialization,  Next: Random State Seeding,  Prev: Random Number Functions,  Up: Random Number Functions
-
-9.1 Random State Initialization
-===============================
-
- -- Function: void gmp_randinit_default (gmp_randstate_t STATE)
-     Initialize STATE with a default algorithm.  This will be a
-     compromise between speed and randomness, and is recommended for
-     applications with no special requirements.  Currently this is
-     `gmp_randinit_mt'.
-
- -- Function: void gmp_randinit_mt (gmp_randstate_t STATE)
-     Initialize STATE for a Mersenne Twister algorithm.  This algorithm
-     is fast and has good randomness properties.
-
- -- Function: void gmp_randinit_lc_2exp (gmp_randstate_t STATE, mpz_t
-          A, unsigned long C, mp_bitcnt_t M2EXP)
-     Initialize STATE with a linear congruential algorithm X = (A*X +
-     C) mod 2^M2EXP.
-
-     The low bits of X in this algorithm are not very random.  The least
-     significant bit will have a period no more than 2, and the second
-     bit no more than 4, etc.  For this reason only the high half of
-     each X is actually used.
-
-     When a random number of more than M2EXP/2 bits is to be generated,
-     multiple iterations of the recurrence are used and the results
-     concatenated.
-
- -- Function: int gmp_randinit_lc_2exp_size (gmp_randstate_t STATE,
-          mp_bitcnt_t SIZE)
-     Initialize STATE for a linear congruential algorithm as per
-     `gmp_randinit_lc_2exp'.  A, C and M2EXP are selected from a table,
-     chosen so that SIZE bits (or more) of each X will be used, ie.
-     M2EXP/2 >= SIZE.
-
-     If successful the return value is non-zero.  If SIZE is bigger
-     than the table data provides then the return value is zero.  The
-     maximum SIZE currently supported is 128.
-
- -- Function: void gmp_randinit_set (gmp_randstate_t ROP,
-          gmp_randstate_t OP)
-     Initialize ROP with a copy of the algorithm and state from OP.
-
- -- Function: void gmp_randinit (gmp_randstate_t STATE,
-          gmp_randalg_t ALG, ...)
-     *This function is obsolete.*
-
-     Initialize STATE with an algorithm selected by ALG.  The only
-     choice is `GMP_RAND_ALG_LC', which is `gmp_randinit_lc_2exp_size'
-     described above.  A third parameter of type `unsigned long' is
-     required, this is the SIZE for that function.
-     `GMP_RAND_ALG_DEFAULT' or 0 are the same as `GMP_RAND_ALG_LC'.
-
-     `gmp_randinit' sets bits in the global variable `gmp_errno' to
-     indicate an error.  `GMP_ERROR_UNSUPPORTED_ARGUMENT' if ALG is
-     unsupported, or `GMP_ERROR_INVALID_ARGUMENT' if the SIZE parameter
-     is too big.  It may be noted this error reporting is not thread
-     safe (a good reason to use `gmp_randinit_lc_2exp_size' instead).
-
- -- Function: void gmp_randclear (gmp_randstate_t STATE)
-     Free all memory occupied by STATE.
-
-\1f
-File: gmp.info,  Node: Random State Seeding,  Next: Random State Miscellaneous,  Prev: Random State Initialization,  Up: Random Number Functions
-
-9.2 Random State Seeding
-========================
-
- -- Function: void gmp_randseed (gmp_randstate_t STATE, mpz_t SEED)
- -- Function: void gmp_randseed_ui (gmp_randstate_t STATE,
-          unsigned long int SEED)
-     Set an initial seed value into STATE.
-
-     The size of a seed determines how many different sequences of
-     random numbers that it's possible to generate.  The "quality" of
-     the seed is the randomness of a given seed compared to the
-     previous seed used, and this affects the randomness of separate
-     number sequences.  The method for choosing a seed is critical if
-     the generated numbers are to be used for important applications,
-     such as generating cryptographic keys.
-
-     Traditionally the system time has been used to seed, but care
-     needs to be taken with this.  If an application seeds often and
-     the resolution of the system clock is low, then the same sequence
-     of numbers might be repeated.  Also, the system time is quite easy
-     to guess, so if unpredictability is required then it should
-     definitely not be the only source for the seed value.  On some
-     systems there's a special device `/dev/random' which provides
-     random data better suited for use as a seed.
-
-\1f
-File: gmp.info,  Node: Random State Miscellaneous,  Prev: Random State Seeding,  Up: Random Number Functions
-
-9.3 Random State Miscellaneous
-==============================
-
- -- Function: unsigned long gmp_urandomb_ui (gmp_randstate_t STATE,
-          unsigned long N)
-     Return a uniformly distributed random number of N bits, ie. in the
-     range 0 to 2^N-1 inclusive.  N must be less than or equal to the
-     number of bits in an `unsigned long'.
-
- -- Function: unsigned long gmp_urandomm_ui (gmp_randstate_t STATE,
-          unsigned long N)
-     Return a uniformly distributed random number in the range 0 to
-     N-1, inclusive.
-
-\1f
-File: gmp.info,  Node: Formatted Output,  Next: Formatted Input,  Prev: Random Number Functions,  Up: Top
-
-10 Formatted Output
-*******************
-
-* Menu:
-
-* Formatted Output Strings::
-* Formatted Output Functions::
-* C++ Formatted Output::
-
-\1f
-File: gmp.info,  Node: Formatted Output Strings,  Next: Formatted Output Functions,  Prev: Formatted Output,  Up: Formatted Output
-
-10.1 Format Strings
-===================
-
-`gmp_printf' and friends accept format strings similar to the standard C
-`printf' (*note Formatted Output: (libc)Formatted Output.).  A format
-specification is of the form
-
-     % [flags] [width] [.[precision]] [type] conv
-
-   GMP adds types `Z', `Q' and `F' for `mpz_t', `mpq_t' and `mpf_t'
-respectively, `M' for `mp_limb_t', and `N' for an `mp_limb_t' array.
-`Z', `Q', `M' and `N' behave like integers.  `Q' will print a `/' and a
-denominator, if needed.  `F' behaves like a float.  For example,
-
-     mpz_t z;
-     gmp_printf ("%s is an mpz %Zd\n", "here", z);
-
-     mpq_t q;
-     gmp_printf ("a hex rational: %#40Qx\n", q);
-
-     mpf_t f;
-     int   n;
-     gmp_printf ("fixed point mpf %.*Ff with %d digits\n", n, f, n);
-
-     mp_limb_t l;
-     gmp_printf ("limb %Mu\n", l);
-
-     const mp_limb_t *ptr;
-     mp_size_t       size;
-     gmp_printf ("limb array %Nx\n", ptr, size);
-
-   For `N' the limbs are expected least significant first, as per the
-`mpn' functions (*note Low-level Functions::).  A negative size can be
-given to print the value as a negative.
-
-   All the standard C `printf' types behave the same as the C library
-`printf', and can be freely intermixed with the GMP extensions.  In the
-current implementation the standard parts of the format string are
-simply handed to `printf' and only the GMP extensions handled directly.
-
-   The flags accepted are as follows.  GLIBC style ' is only for the
-standard C types (not the GMP types), and only if the C library
-supports it.
-
-     0         pad with zeros (rather than spaces)
-     #         show the base with `0x', `0X' or `0'
-     +         always show a sign
-     (space)   show a space or a `-' sign
-     '         group digits, GLIBC style (not GMP types)
-
-   The optional width and precision can be given as a number within the
-format string, or as a `*' to take an extra parameter of type `int', the
-same as the standard `printf'.
-
-   The standard types accepted are as follows.  `h' and `l' are
-portable, the rest will depend on the compiler (or include files) for
-the type and the C library for the output.
-
-     h         short
-     hh        char
-     j         intmax_t or uintmax_t
-     l         long or wchar_t
-     ll        long long
-     L         long double
-     q         quad_t or u_quad_t
-     t         ptrdiff_t
-     z         size_t
-
-The GMP types are
-
-     F         mpf_t, float conversions
-     Q         mpq_t, integer conversions
-     M         mp_limb_t, integer conversions
-     N         mp_limb_t array, integer conversions
-     Z         mpz_t, integer conversions
-
-   The conversions accepted are as follows.  `a' and `A' are always
-supported for `mpf_t' but depend on the C library for standard C float
-types.  `m' and `p' depend on the C library.
-
-     a A       hex floats, C99 style
-     c         character
-     d         decimal integer
-     e E       scientific format float
-     f         fixed point float
-     i         same as d
-     g G       fixed or scientific float
-     m         `strerror' string, GLIBC style
-     n         store characters written so far
-     o         octal integer
-     p         pointer
-     s         string
-     u         unsigned integer
-     x X       hex integer
-
-   `o', `x' and `X' are unsigned for the standard C types, but for
-types `Z', `Q' and `N' they are signed.  `u' is not meaningful for `Z',
-`Q' and `N'.
-
-   `M' is a proxy for the C library `l' or `L', according to the size
-of `mp_limb_t'.  Unsigned conversions will be usual, but a signed
-conversion can be used and will interpret the value as a twos complement
-negative.
-
-   `n' can be used with any type, even the GMP types.
-
-   Other types or conversions that might be accepted by the C library
-`printf' cannot be used through `gmp_printf', this includes for
-instance extensions registered with GLIBC `register_printf_function'.
-Also currently there's no support for POSIX `$' style numbered arguments
-(perhaps this will be added in the future).
-
-   The precision field has it's usual meaning for integer `Z' and float
-`F' types, but is currently undefined for `Q' and should not be used
-with that.
-
-   `mpf_t' conversions only ever generate as many digits as can be
-accurately represented by the operand, the same as `mpf_get_str' does.
-Zeros will be used if necessary to pad to the requested precision.  This
-happens even for an `f' conversion of an `mpf_t' which is an integer,
-for instance 2^1024 in an `mpf_t' of 128 bits precision will only
-produce about 40 digits, then pad with zeros to the decimal point.  An
-empty precision field like `%.Fe' or `%.Ff' can be used to specifically
-request just the significant digits.
-
-   The decimal point character (or string) is taken from the current
-locale settings on systems which provide `localeconv' (*note Locales
-and Internationalization: (libc)Locales.).  The C library will normally
-do the same for standard float output.
-
-   The format string is only interpreted as plain `char's, multibyte
-characters are not recognised.  Perhaps this will change in the future.
-
-\1f
-File: gmp.info,  Node: Formatted Output Functions,  Next: C++ Formatted Output,  Prev: Formatted Output Strings,  Up: Formatted Output
-
-10.2 Functions
-==============
-
-Each of the following functions is similar to the corresponding C
-library function.  The basic `printf' forms take a variable argument
-list.  The `vprintf' forms take an argument pointer, see *Note Variadic
-Functions: (libc)Variadic Functions, or `man 3 va_start'.
-
-   It should be emphasised that if a format string is invalid, or the
-arguments don't match what the format specifies, then the behaviour of
-any of these functions will be unpredictable.  GCC format string
-checking is not available, since it doesn't recognise the GMP
-extensions.
-
-   The file based functions `gmp_printf' and `gmp_fprintf' will return
--1 to indicate a write error.  Output is not "atomic", so partial
-output may be produced if a write error occurs.  All the functions can
-return -1 if the C library `printf' variant in use returns -1, but this
-shouldn't normally occur.
-
- -- Function: int gmp_printf (const char *FMT, ...)
- -- Function: int gmp_vprintf (const char *FMT, va_list AP)
-     Print to the standard output `stdout'.  Return the number of
-     characters written, or -1 if an error occurred.
-
- -- Function: int gmp_fprintf (FILE *FP, const char *FMT, ...)
- -- Function: int gmp_vfprintf (FILE *FP, const char *FMT, va_list AP)
-     Print to the stream FP.  Return the number of characters written,
-     or -1 if an error occurred.
-
- -- Function: int gmp_sprintf (char *BUF, const char *FMT, ...)
- -- Function: int gmp_vsprintf (char *BUF, const char *FMT, va_list AP)
-     Form a null-terminated string in BUF.  Return the number of
-     characters written, excluding the terminating null.
-
-     No overlap is permitted between the space at BUF and the string
-     FMT.
-
-     These functions are not recommended, since there's no protection
-     against exceeding the space available at BUF.
-
- -- Function: int gmp_snprintf (char *BUF, size_t SIZE, const char
-          *FMT, ...)
- -- Function: int gmp_vsnprintf (char *BUF, size_t SIZE, const char
-          *FMT, va_list AP)
-     Form a null-terminated string in BUF.  No more than SIZE bytes
-     will be written.  To get the full output, SIZE must be enough for
-     the string and null-terminator.
-
-     The return value is the total number of characters which ought to
-     have been produced, excluding the terminating null.  If RETVAL >=
-     SIZE then the actual output has been truncated to the first SIZE-1
-     characters, and a null appended.
-
-     No overlap is permitted between the region {BUF,SIZE} and the FMT
-     string.
-
-     Notice the return value is in ISO C99 `snprintf' style.  This is
-     so even if the C library `vsnprintf' is the older GLIBC 2.0.x
-     style.
-
- -- Function: int gmp_asprintf (char **PP, const char *FMT, ...)
- -- Function: int gmp_vasprintf (char **PP, const char *FMT, va_list AP)
-     Form a null-terminated string in a block of memory obtained from
-     the current memory allocation function (*note Custom
-     Allocation::).  The block will be the size of the string and
-     null-terminator.  The address of the block in stored to *PP.  The
-     return value is the number of characters produced, excluding the
-     null-terminator.
-
-     Unlike the C library `asprintf', `gmp_asprintf' doesn't return -1
-     if there's no more memory available, it lets the current allocation
-     function handle that.
-
- -- Function: int gmp_obstack_printf (struct obstack *OB, const char
-          *FMT, ...)
- -- Function: int gmp_obstack_vprintf (struct obstack *OB, const char
-          *FMT, va_list AP)
-     Append to the current object in OB.  The return value is the
-     number of characters written.  A null-terminator is not written.
-
-     FMT cannot be within the current object in OB, since that object
-     might move as it grows.
-
-     These functions are available only when the C library provides the
-     obstack feature, which probably means only on GNU systems, see
-     *Note Obstacks: (libc)Obstacks.
-
-\1f
-File: gmp.info,  Node: C++ Formatted Output,  Prev: Formatted Output Functions,  Up: Formatted Output
-
-10.3 C++ Formatted Output
-=========================
-
-The following functions are provided in `libgmpxx' (*note Headers and
-Libraries::), which is built if C++ support is enabled (*note Build
-Options::).  Prototypes are available from `<gmp.h>'.
-
- -- Function: ostream& operator<< (ostream& STREAM, mpz_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     In hex or octal, OP is printed as a signed number, the same as for
-     decimal.  This is unlike the standard `operator<<' routines on
-     `int' etc, which instead give twos complement.
-
- -- Function: ostream& operator<< (ostream& STREAM, mpq_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     Output will be a fraction like `5/9', or if the denominator is 1
-     then just a plain integer like `123'.
-
-     In hex or octal, OP is printed as a signed value, the same as for
-     decimal.  If `ios::showbase' is set then a base indicator is shown
-     on both the numerator and denominator (if the denominator is
-     required).
-
- -- Function: ostream& operator<< (ostream& STREAM, mpf_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     The decimal point follows the standard library float `operator<<',
-     which on recent systems means the `std::locale' imbued on STREAM.
-
-     Hex and octal are supported, unlike the standard `operator<<' on
-     `double'.  The mantissa will be in hex or octal, the exponent will
-     be in decimal.  For hex the exponent delimiter is an `@'.  This is
-     as per `mpf_out_str'.
-
-     `ios::showbase' is supported, and will put a base on the mantissa,
-     for example hex `0x1.8' or `0x0.8', or octal `01.4' or `00.4'.
-     This last form is slightly strange, but at least differentiates
-     itself from decimal.
-
-   These operators mean that GMP types can be printed in the usual C++
-way, for example,
-
-     mpz_t  z;
-     int    n;
-     ...
-     cout << "iteration " << n << " value " << z << "\n";
-
-   But note that `ostream' output (and `istream' input, *note C++
-Formatted Input::) is the only overloading available for the GMP types
-and that for instance using `+' with an `mpz_t' will have unpredictable
-results.  For classes with overloading, see *Note C++ Class Interface::.
-
-\1f
-File: gmp.info,  Node: Formatted Input,  Next: C++ Class Interface,  Prev: Formatted Output,  Up: Top
-
-11 Formatted Input
-******************
-
-* Menu:
-
-* Formatted Input Strings::
-* Formatted Input Functions::
-* C++ Formatted Input::
-
-\1f
-File: gmp.info,  Node: Formatted Input Strings,  Next: Formatted Input Functions,  Prev: Formatted Input,  Up: Formatted Input
-
-11.1 Formatted Input Strings
-============================
-
-`gmp_scanf' and friends accept format strings similar to the standard C
-`scanf' (*note Formatted Input: (libc)Formatted Input.).  A format
-specification is of the form
-
-     % [flags] [width] [type] conv
-
-   GMP adds types `Z', `Q' and `F' for `mpz_t', `mpq_t' and `mpf_t'
-respectively.  `Z' and `Q' behave like integers.  `Q' will read a `/'
-and a denominator, if present.  `F' behaves like a float.
-
-   GMP variables don't require an `&' when passed to `gmp_scanf', since
-they're already "call-by-reference".  For example,
-
-     /* to read say "a(5) = 1234" */
-     int   n;
-     mpz_t z;
-     gmp_scanf ("a(%d) = %Zd\n", &n, z);
-
-     mpq_t q1, q2;
-     gmp_sscanf ("0377 + 0x10/0x11", "%Qi + %Qi", q1, q2);
-
-     /* to read say "topleft (1.55,-2.66)" */
-     mpf_t x, y;
-     char  buf[32];
-     gmp_scanf ("%31s (%Ff,%Ff)", buf, x, y);
-
-   All the standard C `scanf' types behave the same as in the C library
-`scanf', and can be freely intermixed with the GMP extensions.  In the
-current implementation the standard parts of the format string are
-simply handed to `scanf' and only the GMP extensions handled directly.
-
-   The flags accepted are as follows.  `a' and `'' will depend on
-support from the C library, and `'' cannot be used with GMP types.
-
-     *         read but don't store
-     a         allocate a buffer (string conversions)
-     '         grouped digits, GLIBC style (not GMP
-               types)
-
-   The standard types accepted are as follows.  `h' and `l' are
-portable, the rest will depend on the compiler (or include files) for
-the type and the C library for the input.
-
-     h         short
-     hh        char
-     j         intmax_t or uintmax_t
-     l         long int, double or wchar_t
-     ll        long long
-     L         long double
-     q         quad_t or u_quad_t
-     t         ptrdiff_t
-     z         size_t
-
-The GMP types are
-
-     F         mpf_t, float conversions
-     Q         mpq_t, integer conversions
-     Z         mpz_t, integer conversions
-
-   The conversions accepted are as follows.  `p' and `[' will depend on
-support from the C library, the rest are standard.
-
-     c         character or characters
-     d         decimal integer
-     e E f g G float
-     i         integer with base indicator
-     n         characters read so far
-     o         octal integer
-     p         pointer
-     s         string of non-whitespace characters
-     u         decimal integer
-     x X       hex integer
-     [         string of characters in a set
-
-   `e', `E', `f', `g' and `G' are identical, they all read either fixed
-point or scientific format, and either upper or lower case `e' for the
-exponent in scientific format.
-
-   C99 style hex float format (`printf %a', *note Formatted Output
-Strings::) is always accepted for `mpf_t', but for the standard float
-types it will depend on the C library.
-
-   `x' and `X' are identical, both accept both upper and lower case
-hexadecimal.
-
-   `o', `u', `x' and `X' all read positive or negative values.  For the
-standard C types these are described as "unsigned" conversions, but
-that merely affects certain overflow handling, negatives are still
-allowed (per `strtoul', *note Parsing of Integers: (libc)Parsing of
-Integers.).  For GMP types there are no overflows, so `d' and `u' are
-identical.
-
-   `Q' type reads the numerator and (optional) denominator as given.
-If the value might not be in canonical form then `mpq_canonicalize'
-must be called before using it in any calculations (*note Rational
-Number Functions::).
-
-   `Qi' will read a base specification separately for the numerator and
-denominator.  For example `0x10/11' would be 16/11, whereas `0x10/0x11'
-would be 16/17.
-
-   `n' can be used with any of the types above, even the GMP types.
-`*' to suppress assignment is allowed, though in that case it would do
-nothing at all.
-
-   Other conversions or types that might be accepted by the C library
-`scanf' cannot be used through `gmp_scanf'.
-
-   Whitespace is read and discarded before a field, except for `c' and
-`[' conversions.
-
-   For float conversions, the decimal point character (or string)
-expected is taken from the current locale settings on systems which
-provide `localeconv' (*note Locales and Internationalization:
-(libc)Locales.).  The C library will normally do the same for standard
-float input.
-
-   The format string is only interpreted as plain `char's, multibyte
-characters are not recognised.  Perhaps this will change in the future.
-
-\1f
-File: gmp.info,  Node: Formatted Input Functions,  Next: C++ Formatted Input,  Prev: Formatted Input Strings,  Up: Formatted Input
-
-11.2 Formatted Input Functions
-==============================
-
-Each of the following functions is similar to the corresponding C
-library function.  The plain `scanf' forms take a variable argument
-list.  The `vscanf' forms take an argument pointer, see *Note Variadic
-Functions: (libc)Variadic Functions, or `man 3 va_start'.
-
-   It should be emphasised that if a format string is invalid, or the
-arguments don't match what the format specifies, then the behaviour of
-any of these functions will be unpredictable.  GCC format string
-checking is not available, since it doesn't recognise the GMP
-extensions.
-
-   No overlap is permitted between the FMT string and any of the results
-produced.
-
- -- Function: int gmp_scanf (const char *FMT, ...)
- -- Function: int gmp_vscanf (const char *FMT, va_list AP)
-     Read from the standard input `stdin'.
-
- -- Function: int gmp_fscanf (FILE *FP, const char *FMT, ...)
- -- Function: int gmp_vfscanf (FILE *FP, const char *FMT, va_list AP)
-     Read from the stream FP.
-
- -- Function: int gmp_sscanf (const char *S, const char *FMT, ...)
- -- Function: int gmp_vsscanf (const char *S, const char *FMT, va_list
-          AP)
-     Read from a null-terminated string S.
-
-   The return value from each of these functions is the same as the
-standard C99 `scanf', namely the number of fields successfully parsed
-and stored.  `%n' fields and fields read but suppressed by `*' don't
-count towards the return value.
-
-   If end of input (or a file error) is reached before a character for
-a field or a literal, and if no previous non-suppressed fields have
-matched, then the return value is `EOF' instead of 0.  A whitespace
-character in the format string is only an optional match and doesn't
-induce an `EOF' in this fashion.  Leading whitespace read and discarded
-for a field don't count as characters for that field.
-
-   For the GMP types, input parsing follows C99 rules, namely one
-character of lookahead is used and characters are read while they
-continue to meet the format requirements.  If this doesn't provide a
-complete number then the function terminates, with that field not
-stored nor counted towards the return value.  For instance with `mpf_t'
-an input `1.23e-XYZ' would be read up to the `X' and that character
-pushed back since it's not a digit.  The string `1.23e-' would then be
-considered invalid since an `e' must be followed by at least one digit.
-
-   For the standard C types, in the current implementation GMP calls
-the C library `scanf' functions, which might have looser rules about
-what constitutes a valid input.
-
-   Note that `gmp_sscanf' is the same as `gmp_fscanf' and only does one
-character of lookahead when parsing.  Although clearly it could look at
-its entire input, it is deliberately made identical to `gmp_fscanf',
-the same way C99 `sscanf' is the same as `fscanf'.
-
-\1f
-File: gmp.info,  Node: C++ Formatted Input,  Prev: Formatted Input Functions,  Up: Formatted Input
-
-11.3 C++ Formatted Input
-========================
-
-The following functions are provided in `libgmpxx' (*note Headers and
-Libraries::), which is built only if C++ support is enabled (*note
-Build Options::).  Prototypes are available from `<gmp.h>'.
-
- -- Function: istream& operator>> (istream& STREAM, mpz_t ROP)
-     Read ROP from STREAM, using its `ios' formatting settings.
-
- -- Function: istream& operator>> (istream& STREAM, mpq_t ROP)
-     An integer like `123' will be read, or a fraction like `5/9'.  No
-     whitespace is allowed around the `/'.  If the fraction is not in
-     canonical form then `mpq_canonicalize' must be called (*note
-     Rational Number Functions::) before operating on it.
-
-     As per integer input, an `0' or `0x' base indicator is read when
-     none of `ios::dec', `ios::oct' or `ios::hex' are set.  This is
-     done separately for numerator and denominator, so that for instance
-     `0x10/11' is 16/11 and `0x10/0x11' is 16/17.
-
- -- Function: istream& operator>> (istream& STREAM, mpf_t ROP)
-     Read ROP from STREAM, using its `ios' formatting settings.
-
-     Hex or octal floats are not supported, but might be in the future,
-     or perhaps it's best to accept only what the standard float
-     `operator>>' does.
-
-   Note that digit grouping specified by the `istream' locale is
-currently not accepted.  Perhaps this will change in the future.
-
-
-   These operators mean that GMP types can be read in the usual C++
-way, for example,
-
-     mpz_t  z;
-     ...
-     cin >> z;
-
-   But note that `istream' input (and `ostream' output, *note C++
-Formatted Output::) is the only overloading available for the GMP types
-and that for instance using `+' with an `mpz_t' will have unpredictable
-results.  For classes with overloading, see *Note C++ Class Interface::.
-
-\1f
-File: gmp.info,  Node: C++ Class Interface,  Next: BSD Compatible Functions,  Prev: Formatted Input,  Up: Top
-
-12 C++ Class Interface
-**********************
-
-This chapter describes the C++ class based interface to GMP.
-
-   All GMP C language types and functions can be used in C++ programs,
-since `gmp.h' has `extern "C"' qualifiers, but the class interface
-offers overloaded functions and operators which may be more convenient.
-
-   Due to the implementation of this interface, a reasonably recent C++
-compiler is required, one supporting namespaces, partial specialization
-of templates and member templates.  For GCC this means version 2.91 or
-later.
-
-   *Everything described in this chapter is to be considered preliminary
-and might be subject to incompatible changes if some unforeseen
-difficulty reveals itself.*
-
-* Menu:
-
-* C++ Interface General::
-* C++ Interface Integers::
-* C++ Interface Rationals::
-* C++ Interface Floats::
-* C++ Interface Random Numbers::
-* C++ Interface Limitations::
-
-\1f
-File: gmp.info,  Node: C++ Interface General,  Next: C++ Interface Integers,  Prev: C++ Class Interface,  Up: C++ Class Interface
-
-12.1 C++ Interface General
-==========================
-
-All the C++ classes and functions are available with
-
-     #include <gmpxx.h>
-
-   Programs should be linked with the `libgmpxx' and `libgmp'
-libraries.  For example,
-
-     g++ mycxxprog.cc -lgmpxx -lgmp
-
-The classes defined are
-
- -- Class: mpz_class
- -- Class: mpq_class
- -- Class: mpf_class
-
-   The standard operators and various standard functions are overloaded
-to allow arithmetic with these classes.  For example,
-
-     int
-     main (void)
-     {
-       mpz_class a, b, c;
-
-       a = 1234;
-       b = "-5678";
-       c = a+b;
-       cout << "sum is " << c << "\n";
-       cout << "absolute value is " << abs(c) << "\n";
-
-       return 0;
-     }
-
-   An important feature of the implementation is that an expression like
-`a=b+c' results in a single call to the corresponding `mpz_add',
-without using a temporary for the `b+c' part.  Expressions which by
-their nature imply intermediate values, like `a=b*c+d*e', still use
-temporaries though.
-
-   The classes can be freely intermixed in expressions, as can the
-classes and the standard types `long', `unsigned long' and `double'.
-Smaller types like `int' or `float' can also be intermixed, since C++
-will promote them.
-
-   Note that `bool' is not accepted directly, but must be explicitly
-cast to an `int' first.  This is because C++ will automatically convert
-any pointer to a `bool', so if GMP accepted `bool' it would make all
-sorts of invalid class and pointer combinations compile but almost
-certainly not do anything sensible.
-
-   Conversions back from the classes to standard C++ types aren't done
-automatically, instead member functions like `get_si' are provided (see
-the following sections for details).
-
-   Also there are no automatic conversions from the classes to the
-corresponding GMP C types, instead a reference to the underlying C
-object can be obtained with the following functions,
-
- -- Function: mpz_t mpz_class::get_mpz_t ()
- -- Function: mpq_t mpq_class::get_mpq_t ()
- -- Function: mpf_t mpf_class::get_mpf_t ()
-
-   These can be used to call a C function which doesn't have a C++ class
-interface.  For example to set `a' to the GCD of `b' and `c',
-
-     mpz_class a, b, c;
-     ...
-     mpz_gcd (a.get_mpz_t(), b.get_mpz_t(), c.get_mpz_t());
-
-   In the other direction, a class can be initialized from the
-corresponding GMP C type, or assigned to if an explicit constructor is
-used.  In both cases this makes a copy of the value, it doesn't create
-any sort of association.  For example,
-
-     mpz_t z;
-     // ... init and calculate z ...
-     mpz_class x(z);
-     mpz_class y;
-     y = mpz_class (z);
-
-   There are no namespace setups in `gmpxx.h', all types and functions
-are simply put into the global namespace.  This is what `gmp.h' has
-done in the past, and continues to do for compatibility.  The extras
-provided by `gmpxx.h' follow GMP naming conventions and are unlikely to
-clash with anything.
-
-\1f
-File: gmp.info,  Node: C++ Interface Integers,  Next: C++ Interface Rationals,  Prev: C++ Interface General,  Up: C++ Class Interface
-
-12.2 C++ Interface Integers
-===========================
-
- -- Function: void mpz_class::mpz_class (type N)
-     Construct an `mpz_class'.  All the standard C++ types may be used,
-     except `long long' and `long double', and all the GMP C++ classes
-     can be used.  Any necessary conversion follows the corresponding C
-     function, for example `double' follows `mpz_set_d' (*note
-     Assigning Integers::).
-
- -- Function: void mpz_class::mpz_class (mpz_t Z)
-     Construct an `mpz_class' from an `mpz_t'.  The value in Z is
-     copied into the new `mpz_class', there won't be any permanent
-     association between it and Z.
-
- -- Function: void mpz_class::mpz_class (const char *S)
- -- Function: void mpz_class::mpz_class (const char *S, int BASE = 0)
- -- Function: void mpz_class::mpz_class (const string& S)
- -- Function: void mpz_class::mpz_class (const string& S, int BASE = 0)
-     Construct an `mpz_class' converted from a string using
-     `mpz_set_str' (*note Assigning Integers::).
-
-     If the string is not a valid integer, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: mpz_class operator/ (mpz_class A, mpz_class D)
- -- Function: mpz_class operator% (mpz_class A, mpz_class D)
-     Divisions involving `mpz_class' round towards zero, as per the
-     `mpz_tdiv_q' and `mpz_tdiv_r' functions (*note Integer Division::).
-     This is the same as the C99 `/' and `%' operators.
-
-     The `mpz_fdiv...' or `mpz_cdiv...' functions can always be called
-     directly if desired.  For example,
-
-          mpz_class q, a, d;
-          ...
-          mpz_fdiv_q (q.get_mpz_t(), a.get_mpz_t(), d.get_mpz_t());
-
- -- Function: mpz_class abs (mpz_class OP1)
- -- Function: int cmp (mpz_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpz_class OP2)
- -- Function: bool mpz_class::fits_sint_p (void)
- -- Function: bool mpz_class::fits_slong_p (void)
- -- Function: bool mpz_class::fits_sshort_p (void)
- -- Function: bool mpz_class::fits_uint_p (void)
- -- Function: bool mpz_class::fits_ulong_p (void)
- -- Function: bool mpz_class::fits_ushort_p (void)
- -- Function: double mpz_class::get_d (void)
- -- Function: long mpz_class::get_si (void)
- -- Function: string mpz_class::get_str (int BASE = 10)
- -- Function: unsigned long mpz_class::get_ui (void)
- -- Function: int mpz_class::set_str (const char *STR, int BASE)
- -- Function: int mpz_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpz_class OP)
- -- Function: mpz_class sqrt (mpz_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
-
-   Overloaded operators for combinations of `mpz_class' and `double'
-are provided for completeness, but it should be noted that if the given
-`double' is not an integer then the way any rounding is done is
-currently unspecified.  The rounding might take place at the start, in
-the middle, or at the end of the operation, and it might change in the
-future.
-
-   Conversions between `mpz_class' and `double', however, are defined
-to follow the corresponding C functions `mpz_get_d' and `mpz_set_d'.
-And comparisons are always made exactly, as per `mpz_cmp_d'.
-
-\1f
-File: gmp.info,  Node: C++ Interface Rationals,  Next: C++ Interface Floats,  Prev: C++ Interface Integers,  Up: C++ Class Interface
-
-12.3 C++ Interface Rationals
-============================
-
-In all the following constructors, if a fraction is given then it
-should be in canonical form, or if not then `mpq_class::canonicalize'
-called.
-
- -- Function: void mpq_class::mpq_class (type OP)
- -- Function: void mpq_class::mpq_class (integer NUM, integer DEN)
-     Construct an `mpq_class'.  The initial value can be a single value
-     of any type, or a pair of integers (`mpz_class' or standard C++
-     integer types) representing a fraction, except that `long long'
-     and `long double' are not supported.  For example,
-
-          mpq_class q (99);
-          mpq_class q (1.75);
-          mpq_class q (1, 3);
-
- -- Function: void mpq_class::mpq_class (mpq_t Q)
-     Construct an `mpq_class' from an `mpq_t'.  The value in Q is
-     copied into the new `mpq_class', there won't be any permanent
-     association between it and Q.
-
- -- Function: void mpq_class::mpq_class (const char *S)
- -- Function: void mpq_class::mpq_class (const char *S, int BASE = 0)
- -- Function: void mpq_class::mpq_class (const string& S)
- -- Function: void mpq_class::mpq_class (const string& S, int BASE = 0)
-     Construct an `mpq_class' converted from a string using
-     `mpq_set_str' (*note Initializing Rationals::).
-
-     If the string is not a valid rational, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: void mpq_class::canonicalize ()
-     Put an `mpq_class' into canonical form, as per *Note Rational
-     Number Functions::.  All arithmetic operators require their
-     operands in canonical form, and will return results in canonical
-     form.
-
- -- Function: mpq_class abs (mpq_class OP)
- -- Function: int cmp (mpq_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpq_class OP2)
- -- Function: double mpq_class::get_d (void)
- -- Function: string mpq_class::get_str (int BASE = 10)
- -- Function: int mpq_class::set_str (const char *STR, int BASE)
- -- Function: int mpq_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpq_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
- -- Function: mpz_class& mpq_class::get_num ()
- -- Function: mpz_class& mpq_class::get_den ()
-     Get a reference to an `mpz_class' which is the numerator or
-     denominator of an `mpq_class'.  This can be used both for read and
-     write access.  If the object returned is modified, it modifies the
-     original `mpq_class'.
-
-     If direct manipulation might produce a non-canonical value, then
-     `mpq_class::canonicalize' must be called before further operations.
-
- -- Function: mpz_t mpq_class::get_num_mpz_t ()
- -- Function: mpz_t mpq_class::get_den_mpz_t ()
-     Get a reference to the underlying `mpz_t' numerator or denominator
-     of an `mpq_class'.  This can be passed to C functions expecting an
-     `mpz_t'.  Any modifications made to the `mpz_t' will modify the
-     original `mpq_class'.
-
-     If direct manipulation might produce a non-canonical value, then
-     `mpq_class::canonicalize' must be called before further operations.
-
- -- Function: istream& operator>> (istream& STREAM, mpq_class& ROP);
-     Read ROP from STREAM, using its `ios' formatting settings, the
-     same as `mpq_t operator>>' (*note C++ Formatted Input::).
-
-     If the ROP read might not be in canonical form then
-     `mpq_class::canonicalize' must be called.
-
-\1f
-File: gmp.info,  Node: C++ Interface Floats,  Next: C++ Interface Random Numbers,  Prev: C++ Interface Rationals,  Up: C++ Class Interface
-
-12.4 C++ Interface Floats
-=========================
-
-When an expression requires the use of temporary intermediate
-`mpf_class' values, like `f=g*h+x*y', those temporaries will have the
-same precision as the destination `f'.  Explicit constructors can be
-used if this doesn't suit.
-
- -- Function:  mpf_class::mpf_class (type OP)
- -- Function:  mpf_class::mpf_class (type OP, unsigned long PREC)
-     Construct an `mpf_class'.  Any standard C++ type can be used,
-     except `long long' and `long double', and any of the GMP C++
-     classes can be used.
-
-     If PREC is given, the initial precision is that value, in bits.  If
-     PREC is not given, then the initial precision is determined by the
-     type of OP given.  An `mpz_class', `mpq_class', or C++ builtin
-     type will give the default `mpf' precision (*note Initializing
-     Floats::).  An `mpf_class' or expression will give the precision
-     of that value.  The precision of a binary expression is the higher
-     of the two operands.
-
-          mpf_class f(1.5);        // default precision
-          mpf_class f(1.5, 500);   // 500 bits (at least)
-          mpf_class f(x);          // precision of x
-          mpf_class f(abs(x));     // precision of x
-          mpf_class f(-g, 1000);   // 1000 bits (at least)
-          mpf_class f(x+y);        // greater of precisions of x and y
-
- -- Function: void mpf_class::mpf_class (const char *S)
- -- Function: void mpf_class::mpf_class (const char *S, unsigned long
-          PREC, int BASE = 0)
- -- Function: void mpf_class::mpf_class (const string& S)
- -- Function: void mpf_class::mpf_class (const string& S, unsigned long
-          PREC, int BASE = 0)
-     Construct an `mpf_class' converted from a string using
-     `mpf_set_str' (*note Assigning Floats::).  If PREC is given, the
-     initial precision is that value, in bits.  If not, the default
-     `mpf' precision (*note Initializing Floats::) is used.
-
-     If the string is not a valid float, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: mpf_class& mpf_class::operator= (type OP)
-     Convert and store the given OP value to an `mpf_class' object.  The
-     same types are accepted as for the constructors above.
-
-     Note that `operator=' only stores a new value, it doesn't copy or
-     change the precision of the destination, instead the value is
-     truncated if necessary.  This is the same as `mpf_set' etc.  Note
-     in particular this means for `mpf_class' a copy constructor is not
-     the same as a default constructor plus assignment.
-
-          mpf_class x (y);   // x created with precision of y
-
-          mpf_class x;       // x created with default precision
-          x = y;             // value truncated to that precision
-
-     Applications using templated code may need to be careful about the
-     assumptions the code makes in this area, when working with
-     `mpf_class' values of various different or non-default precisions.
-     For instance implementations of the standard `complex' template
-     have been seen in both styles above, though of course `complex' is
-     normally only actually specified for use with the builtin float
-     types.
-
- -- Function: mpf_class abs (mpf_class OP)
- -- Function: mpf_class ceil (mpf_class OP)
- -- Function: int cmp (mpf_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpf_class OP2)
- -- Function: bool mpf_class::fits_sint_p (void)
- -- Function: bool mpf_class::fits_slong_p (void)
- -- Function: bool mpf_class::fits_sshort_p (void)
- -- Function: bool mpf_class::fits_uint_p (void)
- -- Function: bool mpf_class::fits_ulong_p (void)
- -- Function: bool mpf_class::fits_ushort_p (void)
- -- Function: mpf_class floor (mpf_class OP)
- -- Function: mpf_class hypot (mpf_class OP1, mpf_class OP2)
- -- Function: double mpf_class::get_d (void)
- -- Function: long mpf_class::get_si (void)
- -- Function: string mpf_class::get_str (mp_exp_t& EXP, int BASE = 10,
-          size_t DIGITS = 0)
- -- Function: unsigned long mpf_class::get_ui (void)
- -- Function: int mpf_class::set_str (const char *STR, int BASE)
- -- Function: int mpf_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpf_class OP)
- -- Function: mpf_class sqrt (mpf_class OP)
- -- Function: mpf_class trunc (mpf_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
-     The accuracy provided by `hypot' is not currently guaranteed.
-
- -- Function: mp_bitcnt_t mpf_class::get_prec ()
- -- Function: void mpf_class::set_prec (mp_bitcnt_t PREC)
- -- Function: void mpf_class::set_prec_raw (mp_bitcnt_t PREC)
-     Get or set the current precision of an `mpf_class'.
-
-     The restrictions described for `mpf_set_prec_raw' (*note
-     Initializing Floats::) apply to `mpf_class::set_prec_raw'.  Note
-     in particular that the `mpf_class' must be restored to it's
-     allocated precision before being destroyed.  This must be done by
-     application code, there's no automatic mechanism for it.
-
-\1f
-File: gmp.info,  Node: C++ Interface Random Numbers,  Next: C++ Interface Limitations,  Prev: C++ Interface Floats,  Up: C++ Class Interface
-
-12.5 C++ Interface Random Numbers
-=================================
-
- -- Class: gmp_randclass
-     The C++ class interface to the GMP random number functions uses
-     `gmp_randclass' to hold an algorithm selection and current state,
-     as per `gmp_randstate_t'.
-
- -- Function:  gmp_randclass::gmp_randclass (void (*RANDINIT)
-          (gmp_randstate_t, ...), ...)
-     Construct a `gmp_randclass', using a call to the given RANDINIT
-     function (*note Random State Initialization::).  The arguments
-     expected are the same as RANDINIT, but with `mpz_class' instead of
-     `mpz_t'.  For example,
-
-          gmp_randclass r1 (gmp_randinit_default);
-          gmp_randclass r2 (gmp_randinit_lc_2exp_size, 32);
-          gmp_randclass r3 (gmp_randinit_lc_2exp, a, c, m2exp);
-          gmp_randclass r4 (gmp_randinit_mt);
-
-     `gmp_randinit_lc_2exp_size' will fail if the size requested is too
-     big, an `std::length_error' exception is thrown in that case.
-
- -- Function:  gmp_randclass::gmp_randclass (gmp_randalg_t ALG, ...)
-     Construct a `gmp_randclass' using the same parameters as
-     `gmp_randinit' (*note Random State Initialization::).  This
-     function is obsolete and the above RANDINIT style should be
-     preferred.
-
- -- Function: void gmp_randclass::seed (unsigned long int S)
- -- Function: void gmp_randclass::seed (mpz_class S)
-     Seed a random number generator.  See *note Random Number
-     Functions::, for how to choose a good seed.
-
- -- Function: mpz_class gmp_randclass::get_z_bits (unsigned long BITS)
- -- Function: mpz_class gmp_randclass::get_z_bits (mpz_class BITS)
-     Generate a random integer with a specified number of bits.
-
- -- Function: mpz_class gmp_randclass::get_z_range (mpz_class N)
-     Generate a random integer in the range 0 to N-1 inclusive.
-
- -- Function: mpf_class gmp_randclass::get_f ()
- -- Function: mpf_class gmp_randclass::get_f (unsigned long PREC)
-     Generate a random float F in the range 0 <= F < 1.  F will be to
-     PREC bits precision, or if PREC is not given then to the precision
-     of the destination.  For example,
-
-          gmp_randclass  r;
-          ...
-          mpf_class  f (0, 512);   // 512 bits precision
-          f = r.get_f();           // random number, 512 bits
-
-\1f
-File: gmp.info,  Node: C++ Interface Limitations,  Prev: C++ Interface Random Numbers,  Up: C++ Class Interface
-
-12.6 C++ Interface Limitations
-==============================
-
-`mpq_class' and Templated Reading
-     A generic piece of template code probably won't know that
-     `mpq_class' requires a `canonicalize' call if inputs read with
-     `operator>>' might be non-canonical.  This can lead to incorrect
-     results.
-
-     `operator>>' behaves as it does for reasons of efficiency.  A
-     canonicalize can be quite time consuming on large operands, and is
-     best avoided if it's not necessary.
-
-     But this potential difficulty reduces the usefulness of
-     `mpq_class'.  Perhaps a mechanism to tell `operator>>' what to do
-     will be adopted in the future, maybe a preprocessor define, a
-     global flag, or an `ios' flag pressed into service.  Or maybe, at
-     the risk of inconsistency, the `mpq_class' `operator>>' could
-     canonicalize and leave `mpq_t' `operator>>' not doing so, for use
-     on those occasions when that's acceptable.  Send feedback or
-     alternate ideas to <gmp-bugs@gmplib.org>.
-
-Subclassing
-     Subclassing the GMP C++ classes works, but is not currently
-     recommended.
-
-     Expressions involving subclasses resolve correctly (or seem to),
-     but in normal C++ fashion the subclass doesn't inherit
-     constructors and assignments.  There's many of those in the GMP
-     classes, and a good way to reestablish them in a subclass is not
-     yet provided.
-
-Templated Expressions
-     A subtle difficulty exists when using expressions together with
-     application-defined template functions.  Consider the following,
-     with `T' intended to be some numeric type,
-
-          template <class T>
-          T fun (const T &, const T &);
-
-     When used with, say, plain `mpz_class' variables, it works fine:
-     `T' is resolved as `mpz_class'.
-
-          mpz_class f(1), g(2);
-          fun (f, g);    // Good
-
-     But when one of the arguments is an expression, it doesn't work.
-
-          mpz_class f(1), g(2), h(3);
-          fun (f, g+h);  // Bad
-
-     This is because `g+h' ends up being a certain expression template
-     type internal to `gmpxx.h', which the C++ template resolution
-     rules are unable to automatically convert to `mpz_class'.  The
-     workaround is simply to add an explicit cast.
-
-          mpz_class f(1), g(2), h(3);
-          fun (f, mpz_class(g+h));  // Good
-
-     Similarly, within `fun' it may be necessary to cast an expression
-     to type `T' when calling a templated `fun2'.
-
-          template <class T>
-          void fun (T f, T g)
-          {
-            fun2 (f, f+g);     // Bad
-          }
-
-          template <class T>
-          void fun (T f, T g)
-          {
-            fun2 (f, T(f+g));  // Good
-          }
-
-\1f
-File: gmp.info,  Node: BSD Compatible Functions,  Next: Custom Allocation,  Prev: C++ Class Interface,  Up: Top
-
-13 Berkeley MP Compatible Functions
-***********************************
-
-These functions are intended to be fully compatible with the Berkeley MP
-library which is available on many BSD derived U*ix systems.  The
-`--enable-mpbsd' option must be used when building GNU MP to make these
-available (*note Installing GMP::).
-
-   The original Berkeley MP library has a usage restriction: you cannot
-use the same variable as both source and destination in a single
-function call.  The compatible functions in GNU MP do not share this
-restriction--inputs and outputs may overlap.
-
-   It is not recommended that new programs are written using these
-functions.  Apart from the incomplete set of functions, the interface
-for initializing `MINT' objects is more error prone, and the `pow'
-function collides with `pow' in `libm.a'.
-
-   Include the header `mp.h' to get the definition of the necessary
-types and functions.  If you are on a BSD derived system, make sure to
-include GNU `mp.h' if you are going to link the GNU `libmp.a' to your
-program.  This means that you probably need to give the `-I<dir>'
-option to the compiler, where `<dir>' is the directory where you have
-GNU `mp.h'.
-
- -- Function: MINT * itom (signed short int INITIAL_VALUE)
-     Allocate an integer consisting of a `MINT' object and dynamic limb
-     space.  Initialize the integer to INITIAL_VALUE.  Return a pointer
-     to the `MINT' object.
-
- -- Function: MINT * xtom (char *INITIAL_VALUE)
-     Allocate an integer consisting of a `MINT' object and dynamic limb
-     space.  Initialize the integer from INITIAL_VALUE, a hexadecimal,
-     null-terminated C string.  Return a pointer to the `MINT' object.
-
- -- Function: void move (MINT *SRC, MINT *DEST)
-     Set DEST to SRC by copying.  Both variables must be previously
-     initialized.
-
- -- Function: void madd (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Add SRC_1 and SRC_2 and put the sum in DESTINATION.
-
- -- Function: void msub (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Subtract SRC_2 from SRC_1 and put the difference in DESTINATION.
-
- -- Function: void mult (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Multiply SRC_1 and SRC_2 and put the product in DESTINATION.
-
- -- Function: void mdiv (MINT *DIVIDEND, MINT *DIVISOR, MINT *QUOTIENT,
-          MINT *REMAINDER)
- -- Function: void sdiv (MINT *DIVIDEND, signed short int DIVISOR, MINT
-          *QUOTIENT, signed short int *REMAINDER)
-     Set QUOTIENT to DIVIDEND/DIVISOR, and REMAINDER to DIVIDEND mod
-     DIVISOR.  The quotient is rounded towards zero; the remainder has
-     the same sign as the dividend unless it is zero.
-
-     Some implementations of these functions work differently--or not
-     at all--for negative arguments.
-
- -- Function: void msqrt (MINT *OP, MINT *ROOT, MINT *REMAINDER)
-     Set ROOT to the truncated integer part of the square root of OP,
-     like `mpz_sqrt'.  Set REMAINDER to OP-ROOT*ROOT, i.e.  zero if OP
-     is a perfect square.
-
-     If ROOT and REMAINDER are the same variable, the results are
-     undefined.
-
- -- Function: void pow (MINT *BASE, MINT *EXP, MINT *MOD, MINT *DEST)
-     Set DEST to (BASE raised to EXP) modulo MOD.
-
-     Note that the name `pow' clashes with `pow' from the standard C
-     math library (*note Exponentiation and Logarithms: (libc)Exponents
-     and Logarithms.).  An application will only be able to use one or
-     the other.
-
- -- Function: void rpow (MINT *BASE, signed short int EXP, MINT *DEST)
-     Set DEST to BASE raised to EXP.
-
- -- Function: void gcd (MINT *OP1, MINT *OP2, MINT *RES)
-     Set RES to the greatest common divisor of OP1 and OP2.
-
- -- Function: int mcmp (MINT *OP1, MINT *OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
- -- Function: void min (MINT *DEST)
-     Input a decimal string from `stdin', and put the read integer in
-     DEST.  SPC and TAB are allowed in the number string, and are
-     ignored.
-
- -- Function: void mout (MINT *SRC)
-     Output SRC to `stdout', as a decimal string.  Also output a
-     newline.
-
- -- Function: char * mtox (MINT *OP)
-     Convert OP to a hexadecimal string, and return a pointer to the
-     string.  The returned string is allocated using the default memory
-     allocation function, `malloc' by default.  It will be
-     `strlen(str)+1' bytes, that being exactly enough for the string
-     and null-terminator.
-
- -- Function: void mfree (MINT *OP)
-     De-allocate, the space used by OP.  *This function should only be
-     passed a value returned by `itom' or `xtom'.*
-
-\1f
-File: gmp.info,  Node: Custom Allocation,  Next: Language Bindings,  Prev: BSD Compatible Functions,  Up: Top
-
-14 Custom Allocation
-********************
-
-By default GMP uses `malloc', `realloc' and `free' for memory
-allocation, and if they fail GMP prints a message to the standard error
-output and terminates the program.
-
-   Alternate functions can be specified, to allocate memory in a
-different way or to have a different error action on running out of
-memory.
-
-   This feature is available in the Berkeley compatibility library
-(*note BSD Compatible Functions::) as well as the main GMP library.
-
- -- Function: void mp_set_memory_functions (
-          void *(*ALLOC_FUNC_PTR) (size_t),
-          void *(*REALLOC_FUNC_PTR) (void *, size_t, size_t),
-          void (*FREE_FUNC_PTR) (void *, size_t))
-     Replace the current allocation functions from the arguments.  If
-     an argument is `NULL', the corresponding default function is used.
-
-     These functions will be used for all memory allocation done by
-     GMP, apart from temporary space from `alloca' if that function is
-     available and GMP is configured to use it (*note Build Options::).
-
-     *Be sure to call `mp_set_memory_functions' only when there are no
-     active GMP objects allocated using the previous memory functions!
-     Usually that means calling it before any other GMP function.*
-
-   The functions supplied should fit the following declarations:
-
- -- Function: void * allocate_function (size_t ALLOC_SIZE)
-     Return a pointer to newly allocated space with at least ALLOC_SIZE
-     bytes.
-
- -- Function: void * reallocate_function (void *PTR, size_t OLD_SIZE,
-          size_t NEW_SIZE)
-     Resize a previously allocated block PTR of OLD_SIZE bytes to be
-     NEW_SIZE bytes.
-
-     The block may be moved if necessary or if desired, and in that
-     case the smaller of OLD_SIZE and NEW_SIZE bytes must be copied to
-     the new location.  The return value is a pointer to the resized
-     block, that being the new location if moved or just PTR if not.
-
-     PTR is never `NULL', it's always a previously allocated block.
-     NEW_SIZE may be bigger or smaller than OLD_SIZE.
-
- -- Function: void free_function (void *PTR, size_t SIZE)
-     De-allocate the space pointed to by PTR.
-
-     PTR is never `NULL', it's always a previously allocated block of
-     SIZE bytes.
-
-   A "byte" here means the unit used by the `sizeof' operator.
-
-   The OLD_SIZE parameters to REALLOCATE_FUNCTION and FREE_FUNCTION are
-passed for convenience, but of course can be ignored if not needed.
-The default functions using `malloc' and friends for instance don't use
-them.
-
-   No error return is allowed from any of these functions, if they
-return then they must have performed the specified operation.  In
-particular note that ALLOCATE_FUNCTION or REALLOCATE_FUNCTION mustn't
-return `NULL'.
-
-   Getting a different fatal error action is a good use for custom
-allocation functions, for example giving a graphical dialog rather than
-the default print to `stderr'.  How much is possible when genuinely out
-of memory is another question though.
-
-   There's currently no defined way for the allocation functions to
-recover from an error such as out of memory, they must terminate
-program execution.  A `longjmp' or throwing a C++ exception will have
-undefined results.  This may change in the future.
-
-   GMP may use allocated blocks to hold pointers to other allocated
-blocks.  This will limit the assumptions a conservative garbage
-collection scheme can make.
-
-   Since the default GMP allocation uses `malloc' and friends, those
-functions will be linked in even if the first thing a program does is an
-`mp_set_memory_functions'.  It's necessary to change the GMP sources if
-this is a problem.
-
-
- -- Function: void mp_get_memory_functions (
-          void *(**ALLOC_FUNC_PTR) (size_t),
-          void *(**REALLOC_FUNC_PTR) (void *, size_t, size_t),
-          void (**FREE_FUNC_PTR) (void *, size_t))
-     Get the current allocation functions, storing function pointers to
-     the locations given by the arguments.  If an argument is `NULL',
-     that function pointer is not stored.
-
-     For example, to get just the current free function,
-
-          void (*freefunc) (void *, size_t);
-
-          mp_get_memory_functions (NULL, NULL, &freefunc);
-
-\1f
-File: gmp.info,  Node: Language Bindings,  Next: Algorithms,  Prev: Custom Allocation,  Up: Top
-
-15 Language Bindings
-********************
-
-The following packages and projects offer access to GMP from languages
-other than C, though perhaps with varying levels of functionality and
-efficiency.
-
-
-C++
-        * GMP C++ class interface, *note C++ Class Interface::
-          Straightforward interface, expression templates to eliminate
-          temporaries.
-
-        * ALP `http://www-sop.inria.fr/saga/logiciels/ALP/'
-          Linear algebra and polynomials using templates.
-
-        * Arithmos `http://www.win.ua.ac.be/~cant/arithmos/'
-          Rationals with infinities and square roots.
-
-        * CLN `http://www.ginac.de/CLN/'
-          High level classes for arithmetic.
-
-        * LiDIA `http://www.cdc.informatik.tu-darmstadt.de/TI/LiDIA/'
-          A C++ library for computational number theory.
-
-        * Linbox `http://www.linalg.org/'
-          Sparse vectors and matrices.
-
-        * NTL `http://www.shoup.net/ntl/'
-          A C++ number theory library.
-
-Fortran
-        * Omni F77 `http://phase.hpcc.jp/Omni/home.html'
-          Arbitrary precision floats.
-
-Haskell
-        * Glasgow Haskell Compiler `http://www.haskell.org/ghc/'
-
-Java
-        * Kaffe `http://www.kaffe.org/'
-
-        * Kissme `http://kissme.sourceforge.net/'
-
-Lisp
-        * GNU Common Lisp `http://www.gnu.org/software/gcl/gcl.html'
-
-        * Librep `http://librep.sourceforge.net/'
-
-        * XEmacs (21.5.18 beta and up) `http://www.xemacs.org'
-          Optional big integers, rationals and floats using GMP.
-
-M4
-        * GNU m4 betas `http://www.seindal.dk/rene/gnu/'
-          Optionally provides an arbitrary precision `mpeval'.
-
-ML
-        * MLton compiler `http://mlton.org/'
-
-Objective Caml
-        * MLGMP `http://www.di.ens.fr/~monniaux/programmes.html.en'
-
-        * Numerix `http://pauillac.inria.fr/~quercia/'
-          Optionally using GMP.
-
-Oz
-        * Mozart `http://www.mozart-oz.org/'
-
-Pascal
-        * GNU Pascal Compiler `http://www.gnu-pascal.de/'
-          GMP unit.
-
-        * Numerix `http://pauillac.inria.fr/~quercia/'
-          For Free Pascal, optionally using GMP.
-
-Perl
-        * GMP module, see `demos/perl' in the GMP sources (*note
-          Demonstration Programs::).
-
-        * Math::GMP `http://www.cpan.org/'
-          Compatible with Math::BigInt, but not as many functions as
-          the GMP module above.
-
-        * Math::BigInt::GMP `http://www.cpan.org/'
-          Plug Math::GMP into normal Math::BigInt operations.
-
-Pike
-        * mpz module in the standard distribution,
-          `http://pike.ida.liu.se/'
-
-Prolog
-        * SWI Prolog `http://www.swi-prolog.org/'
-          Arbitrary precision floats.
-
-Python
-        * mpz module in the standard distribution,
-          `http://www.python.org/'
-
-        * GMPY `http://gmpy.sourceforge.net/'
-
-Scheme
-        * GNU Guile (upcoming 1.8)
-          `http://www.gnu.org/software/guile/guile.html'
-
-        * RScheme `http://www.rscheme.org/'
-
-        * STklos `http://www.stklos.org/'
-
-Smalltalk
-        * GNU Smalltalk
-          `http://www.smalltalk.org/versions/GNUSmalltalk.html'
-
-Other
-        * Axiom `http://savannah.nongnu.org/projects/axiom'
-          Computer algebra using GCL.
-
-        * DrGenius `http://drgenius.seul.org/'
-          Geometry system and mathematical programming language.
-
-        * GiNaC `http://www.ginac.de/'
-          C++ computer algebra using CLN.
-
-        * GOO `http://www.googoogaga.org/'
-          Dynamic object oriented language.
-
-        * Maxima `http://www.ma.utexas.edu/users/wfs/maxima.html'
-          Macsyma computer algebra using GCL.
-
-        * Q `http://q-lang.sourceforge.net/'
-          Equational programming system.
-
-        * Regina `http://regina.sourceforge.net/'
-          Topological calculator.
-
-        * Yacas `http://www.xs4all.nl/~apinkus/yacas.html'
-          Yet another computer algebra system.
-
-
-\1f
-File: gmp.info,  Node: Algorithms,  Next: Internals,  Prev: Language Bindings,  Up: Top
-
-16 Algorithms
-*************
-
-This chapter is an introduction to some of the algorithms used for
-various GMP operations.  The code is likely to be hard to understand
-without knowing something about the algorithms.
-
-   Some GMP internals are mentioned, but applications that expect to be
-compatible with future GMP releases should take care to use only the
-documented functions.
-
-* Menu:
-
-* Multiplication Algorithms::
-* Division Algorithms::
-* Greatest Common Divisor Algorithms::
-* Powering Algorithms::
-* Root Extraction Algorithms::
-* Radix Conversion Algorithms::
-* Other Algorithms::
-* Assembly Coding::
-
-\1f
-File: gmp.info,  Node: Multiplication Algorithms,  Next: Division Algorithms,  Prev: Algorithms,  Up: Algorithms
-
-16.1 Multiplication
-===================
-
-NxN limb multiplications and squares are done using one of five
-algorithms, as the size N increases.
-
-     Algorithm      Threshold
-     Basecase       (none)
-     Karatsuba      `MUL_TOOM22_THRESHOLD'
-     Toom-3         `MUL_TOOM33_THRESHOLD'
-     Toom-4         `MUL_TOOM44_THRESHOLD'
-     FFT            `MUL_FFT_THRESHOLD'
-
-   Similarly for squaring, with the `SQR' thresholds.
-
-   NxM multiplications of operands with different sizes above
-`MUL_TOOM22_THRESHOLD' are currently done by special Toom-inspired
-algorithms or directly with FFT, depending on operand size (*note
-Unbalanced Multiplication::).
-
-* Menu:
-
-* Basecase Multiplication::
-* Karatsuba Multiplication::
-* Toom 3-Way Multiplication::
-* Toom 4-Way Multiplication::
-* FFT Multiplication::
-* Other Multiplication::
-* Unbalanced Multiplication::
-
-\1f
-File: gmp.info,  Node: Basecase Multiplication,  Next: Karatsuba Multiplication,  Prev: Multiplication Algorithms,  Up: Multiplication Algorithms
-
-16.1.1 Basecase Multiplication
-------------------------------
-
-Basecase NxM multiplication is a straightforward rectangular set of
-cross-products, the same as long multiplication done by hand and for
-that reason sometimes known as the schoolbook or grammar school method.
-This is an O(N*M) algorithm.  See Knuth section 4.3.1 algorithm M
-(*note References::), and the `mpn/generic/mul_basecase.c' code.
-
-   Assembly implementations of `mpn_mul_basecase' are essentially the
-same as the generic C code, but have all the usual assembly tricks and
-obscurities introduced for speed.
-
-   A square can be done in roughly half the time of a multiply, by
-using the fact that the cross products above and below the diagonal are
-the same.  A triangle of products below the diagonal is formed, doubled
-(left shift by one bit), and then the products on the diagonal added.
-This can be seen in `mpn/generic/sqr_basecase.c'.  Again the assembly
-implementations take essentially the same approach.
-
-          u0  u1  u2  u3  u4
-        +---+---+---+---+---+
-     u0 | d |   |   |   |   |
-        +---+---+---+---+---+
-     u1 |   | d |   |   |   |
-        +---+---+---+---+---+
-     u2 |   |   | d |   |   |
-        +---+---+---+---+---+
-     u3 |   |   |   | d |   |
-        +---+---+---+---+---+
-     u4 |   |   |   |   | d |
-        +---+---+---+---+---+
-
-   In practice squaring isn't a full 2x faster than multiplying, it's
-usually around 1.5x.  Less than 1.5x probably indicates
-`mpn_sqr_basecase' wants improving on that CPU.
-
-   On some CPUs `mpn_mul_basecase' can be faster than the generic C
-`mpn_sqr_basecase' on some small sizes.  `SQR_BASECASE_THRESHOLD' is
-the size at which to use `mpn_sqr_basecase', this will be zero if that
-routine should be used always.
-
-\1f
-File: gmp.info,  Node: Karatsuba Multiplication,  Next: Toom 3-Way Multiplication,  Prev: Basecase Multiplication,  Up: Multiplication Algorithms
-
-16.1.2 Karatsuba Multiplication
--------------------------------
-
-The Karatsuba multiplication algorithm is described in Knuth section
-4.3.3 part A, and various other textbooks.  A brief description is
-given here.
-
-   The inputs x and y are treated as each split into two parts of equal
-length (or the most significant part one limb shorter if N is odd).
-
-      high              low
-     +----------+----------+
-     |    x1    |    x0    |
-     +----------+----------+
-
-     +----------+----------+
-     |    y1    |    y0    |
-     +----------+----------+
-
-   Let b be the power of 2 where the split occurs, ie. if x0 is k limbs
-(y0 the same) then b=2^(k*mp_bits_per_limb).  With that x=x1*b+x0 and
-y=y1*b+y0, and the following holds,
-
-     x*y = (b^2+b)*x1*y1 - b*(x1-x0)*(y1-y0) + (b+1)*x0*y0
-
-   This formula means doing only three multiplies of (N/2)x(N/2) limbs,
-whereas a basecase multiply of NxN limbs is equivalent to four
-multiplies of (N/2)x(N/2).  The factors (b^2+b) etc represent the
-positions where the three products must be added.
-
-      high                              low
-     +--------+--------+ +--------+--------+
-     |      x1*y1      | |      x0*y0      |
-     +--------+--------+ +--------+--------+
-               +--------+--------+
-           add |      x1*y1      |
-               +--------+--------+
-               +--------+--------+
-           add |      x0*y0      |
-               +--------+--------+
-               +--------+--------+
-           sub | (x1-x0)*(y1-y0) |
-               +--------+--------+
-
-   The term (x1-x0)*(y1-y0) is best calculated as an absolute value,
-and the sign used to choose to add or subtract.  Notice the sum
-high(x0*y0)+low(x1*y1) occurs twice, so it's possible to do 5*k limb
-additions, rather than 6*k, but in GMP extra function call overheads
-outweigh the saving.
-
-   Squaring is similar to multiplying, but with x=y the formula reduces
-to an equivalent with three squares,
-
-     x^2 = (b^2+b)*x1^2 - b*(x1-x0)^2 + (b+1)*x0^2
-
-   The final result is accumulated from those three squares the same
-way as for the three multiplies above.  The middle term (x1-x0)^2 is now
-always positive.
-
-   A similar formula for both multiplying and squaring can be
-constructed with a middle term (x1+x0)*(y1+y0).  But those sums can
-exceed k limbs, leading to more carry handling and additions than the
-form above.
-
-   Karatsuba multiplication is asymptotically an O(N^1.585) algorithm,
-the exponent being log(3)/log(2), representing 3 multiplies each 1/2
-the size of the inputs.  This is a big improvement over the basecase
-multiply at O(N^2) and the advantage soon overcomes the extra additions
-Karatsuba performs.  `MUL_TOOM22_THRESHOLD' can be as little as 10
-limbs.  The `SQR' threshold is usually about twice the `MUL'.
-
-   The basecase algorithm will take a time of the form M(N) = a*N^2 +
-b*N + c and the Karatsuba algorithm K(N) = 3*M(N/2) + d*N + e, which
-expands to K(N) = 3/4*a*N^2 + 3/2*b*N + 3*c + d*N + e.  The factor 3/4
-for a means per-crossproduct speedups in the basecase code will
-increase the threshold since they benefit M(N) more than K(N).  And
-conversely the 3/2 for b means linear style speedups of b will increase
-the threshold since they benefit K(N) more than M(N).  The latter can
-be seen for instance when adding an optimized `mpn_sqr_diagonal' to
-`mpn_sqr_basecase'.  Of course all speedups reduce total time, and in
-that sense the algorithm thresholds are merely of academic interest.
-
-\1f
-File: gmp.info,  Node: Toom 3-Way Multiplication,  Next: Toom 4-Way Multiplication,  Prev: Karatsuba Multiplication,  Up: Multiplication Algorithms
-
-16.1.3 Toom 3-Way Multiplication
---------------------------------
-
-The Karatsuba formula is the simplest case of a general approach to
-splitting inputs that leads to both Toom and FFT algorithms.  A
-description of Toom can be found in Knuth section 4.3.3, with an
-example 3-way calculation after Theorem A.  The 3-way form used in GMP
-is described here.
-
-   The operands are each considered split into 3 pieces of equal length
-(or the most significant part 1 or 2 limbs shorter than the other two).
-
-      high                         low
-     +----------+----------+----------+
-     |    x2    |    x1    |    x0    |
-     +----------+----------+----------+
-
-     +----------+----------+----------+
-     |    y2    |    y1    |    y0    |
-     +----------+----------+----------+
-
-These parts are treated as the coefficients of two polynomials
-
-     X(t) = x2*t^2 + x1*t + x0
-     Y(t) = y2*t^2 + y1*t + y0
-
-   Let b equal the power of 2 which is the size of the x0, x1, y0 and
-y1 pieces, ie. if they're k limbs each then b=2^(k*mp_bits_per_limb).
-With this x=X(b) and y=Y(b).
-
-   Let a polynomial W(t)=X(t)*Y(t) and suppose its coefficients are
-
-     W(t) = w4*t^4 + w3*t^3 + w2*t^2 + w1*t + w0
-
-   The w[i] are going to be determined, and when they are they'll give
-the final result using w=W(b), since x*y=X(b)*Y(b)=W(b).  The
-coefficients will be roughly b^2 each, and the final W(b) will be an
-addition like,
-
-      high                                        low
-     +-------+-------+
-     |       w4      |
-     +-------+-------+
-            +--------+-------+
-            |        w3      |
-            +--------+-------+
-                    +--------+-------+
-                    |        w2      |
-                    +--------+-------+
-                            +--------+-------+
-                            |        w1      |
-                            +--------+-------+
-                                     +-------+-------+
-                                     |       w0      |
-                                     +-------+-------+
-
-   The w[i] coefficients could be formed by a simple set of cross
-products, like w4=x2*y2, w3=x2*y1+x1*y2, w2=x2*y0+x1*y1+x0*y2 etc, but
-this would need all nine x[i]*y[j] for i,j=0,1,2, and would be
-equivalent merely to a basecase multiply.  Instead the following
-approach is used.
-
-   X(t) and Y(t) are evaluated and multiplied at 5 points, giving
-values of W(t) at those points.  In GMP the following points are used,
-
-     Point    Value
-     t=0      x0 * y0, which gives w0 immediately
-     t=1      (x2+x1+x0) * (y2+y1+y0)
-     t=-1     (x2-x1+x0) * (y2-y1+y0)
-     t=2      (4*x2+2*x1+x0) * (4*y2+2*y1+y0)
-     t=inf    x2 * y2, which gives w4 immediately
-
-   At t=-1 the values can be negative and that's handled using the
-absolute values and tracking the sign separately.  At t=inf the value
-is actually X(t)*Y(t)/t^4 in the limit as t approaches infinity, but
-it's much easier to think of as simply x2*y2 giving w4 immediately
-(much like x0*y0 at t=0 gives w0 immediately).
-
-   Each of the points substituted into W(t)=w4*t^4+...+w0 gives a
-linear combination of the w[i] coefficients, and the value of those
-combinations has just been calculated.
-
-     W(0)   =                              w0
-     W(1)   =    w4 +   w3 +   w2 +   w1 + w0
-     W(-1)  =    w4 -   w3 +   w2 -   w1 + w0
-     W(2)   = 16*w4 + 8*w3 + 4*w2 + 2*w1 + w0
-     W(inf) =    w4
-
-   This is a set of five equations in five unknowns, and some
-elementary linear algebra quickly isolates each w[i].  This involves
-adding or subtracting one W(t) value from another, and a couple of
-divisions by powers of 2 and one division by 3, the latter using the
-special `mpn_divexact_by3' (*note Exact Division::).
-
-   The conversion of W(t) values to the coefficients is interpolation.
-A polynomial of degree 4 like W(t) is uniquely determined by values
-known at 5 different points.  The points are arbitrary and can be
-chosen to make the linear equations come out with a convenient set of
-steps for quickly isolating the w[i].
-
-   Squaring follows the same procedure as multiplication, but there's
-only one X(t) and it's evaluated at the 5 points, and those values
-squared to give values of W(t).  The interpolation is then identical,
-and in fact the same `toom3_interpolate' subroutine is used for both
-squaring and multiplying.
-
-   Toom-3 is asymptotically O(N^1.465), the exponent being
-log(5)/log(3), representing 5 recursive multiplies of 1/3 the original
-size each.  This is an improvement over Karatsuba at O(N^1.585), though
-Toom does more work in the evaluation and interpolation and so it only
-realizes its advantage above a certain size.
-
-   Near the crossover between Toom-3 and Karatsuba there's generally a
-range of sizes where the difference between the two is small.
-`MUL_TOOM33_THRESHOLD' is a somewhat arbitrary point in that range and
-successive runs of the tune program can give different values due to
-small variations in measuring.  A graph of time versus size for the two
-shows the effect, see `tune/README'.
-
-   At the fairly small sizes where the Toom-3 thresholds occur it's
-worth remembering that the asymptotic behaviour for Karatsuba and
-Toom-3 can't be expected to make accurate predictions, due of course to
-the big influence of all sorts of overheads, and the fact that only a
-few recursions of each are being performed.  Even at large sizes
-there's a good chance machine dependent effects like cache architecture
-will mean actual performance deviates from what might be predicted.
-
-   The formula given for the Karatsuba algorithm (*note Karatsuba
-Multiplication::) has an equivalent for Toom-3 involving only five
-multiplies, but this would be complicated and unenlightening.
-
-   An alternate view of Toom-3 can be found in Zuras (*note
-References::), using a vector to represent the x and y splits and a
-matrix multiplication for the evaluation and interpolation stages.  The
-matrix inverses are not meant to be actually used, and they have
-elements with values much greater than in fact arise in the
-interpolation steps.  The diagram shown for the 3-way is attractive,
-but again doesn't have to be implemented that way and for example with
-a bit of rearrangement just one division by 6 can be done.
-
-\1f
-File: gmp.info,  Node: Toom 4-Way Multiplication,  Next: FFT Multiplication,  Prev: Toom 3-Way Multiplication,  Up: Multiplication Algorithms
-
-16.1.4 Toom 4-Way Multiplication
---------------------------------
-
-Karatsuba and Toom-3 split the operands into 2 and 3 coefficients,
-respectively.  Toom-4 analogously splits the operands into 4
-coefficients.  Using the notation from the section on Toom-3
-multiplication, we form two polynomials:
-
-     X(t) = x3*t^3 + x2*t^2 + x1*t + x0
-     Y(t) = y3*t^3 + y2*t^2 + y1*t + y0
-
-   X(t) and Y(t) are evaluated and multiplied at 7 points, giving
-values of W(t) at those points.  In GMP the following points are used,
-
-     Point    Value
-     t=0      x0 * y0, which gives w0 immediately
-     t=1/2    (x3+2*x2+4*x1+8*x0) * (y3+2*y2+4*y1+8*y0)
-     t=-1/2   (-x3+2*x2-4*x1+8*x0) * (-y3+2*y2-4*y1+8*y0)
-     t=1      (x3+x2+x1+x0) * (y3+y2+y1+y0)
-     t=-1     (-x3+x2-x1+x0) * (-y3+y2-y1+y0)
-     t=2      (8*x3+4*x2+2*x1+x0) * (8*y3+4*y2+2*y1+y0)
-     t=inf    x3 * y3, which gives w6 immediately
-
-   The number of additions and subtractions for Toom-4 is much larger
-than for Toom-3.  But several subexpressions occur multiple times, for
-example x2+x0, occurs for both t=1 and t=-1.
-
-   Toom-4 is asymptotically O(N^1.404), the exponent being
-log(7)/log(4), representing 7 recursive multiplies of 1/4 the original
-size each.
-
-\1f
-File: gmp.info,  Node: FFT Multiplication,  Next: Other Multiplication,  Prev: Toom 4-Way Multiplication,  Up: Multiplication Algorithms
-
-16.1.5 FFT Multiplication
--------------------------
-
-At large to very large sizes a Fermat style FFT multiplication is used,
-following Scho"nhage and Strassen (*note References::).  Descriptions
-of FFTs in various forms can be found in many textbooks, for instance
-Knuth section 4.3.3 part C or Lipson chapter IX.  A brief description
-of the form used in GMP is given here.
-
-   The multiplication done is x*y mod 2^N+1, for a given N.  A full
-product x*y is obtained by choosing N>=bits(x)+bits(y) and padding x
-and y with high zero limbs.  The modular product is the native form for
-the algorithm, so padding to get a full product is unavoidable.
-
-   The algorithm follows a split, evaluate, pointwise multiply,
-interpolate and combine similar to that described above for Karatsuba
-and Toom-3.  A k parameter controls the split, with an FFT-k splitting
-into 2^k pieces of M=N/2^k bits each.  N must be a multiple of
-(2^k)*mp_bits_per_limb so the split falls on limb boundaries, avoiding
-bit shifts in the split and combine stages.
-
-   The evaluations, pointwise multiplications, and interpolation, are
-all done modulo 2^N'+1 where N' is 2M+k+3 rounded up to a multiple of
-2^k and of `mp_bits_per_limb'.  The results of interpolation will be
-the following negacyclic convolution of the input pieces, and the
-choice of N' ensures these sums aren't truncated.
-
-                ---
-                \         b
-     w[n] =     /     (-1) * x[i] * y[j]
-                ---
-            i+j==b*2^k+n
-               b=0,1
-
-   The points used for the evaluation are g^i for i=0 to 2^k-1 where
-g=2^(2N'/2^k).  g is a 2^k'th root of unity mod 2^N'+1, which produces
-necessary cancellations at the interpolation stage, and it's also a
-power of 2 so the fast Fourier transforms used for the evaluation and
-interpolation do only shifts, adds and negations.
-
-   The pointwise multiplications are done modulo 2^N'+1 and either
-recurse into a further FFT or use a plain multiplication (Toom-3,
-Karatsuba or basecase), whichever is optimal at the size N'.  The
-interpolation is an inverse fast Fourier transform.  The resulting set
-of sums of x[i]*y[j] are added at appropriate offsets to give the final
-result.
-
-   Squaring is the same, but x is the only input so it's one transform
-at the evaluate stage and the pointwise multiplies are squares.  The
-interpolation is the same.
-
-   For a mod 2^N+1 product, an FFT-k is an O(N^(k/(k-1))) algorithm,
-the exponent representing 2^k recursed modular multiplies each
-1/2^(k-1) the size of the original.  Each successive k is an asymptotic
-improvement, but overheads mean each is only faster at bigger and
-bigger sizes.  In the code, `MUL_FFT_TABLE' and `SQR_FFT_TABLE' are the
-thresholds where each k is used.  Each new k effectively swaps some
-multiplying for some shifts, adds and overheads.
-
-   A mod 2^N+1 product can be formed with a normal NxN->2N bit multiply
-plus a subtraction, so an FFT and Toom-3 etc can be compared directly.
-A k=4 FFT at O(N^1.333) can be expected to be the first faster than
-Toom-3 at O(N^1.465).  In practice this is what's found, with
-`MUL_FFT_MODF_THRESHOLD' and `SQR_FFT_MODF_THRESHOLD' being between 300
-and 1000 limbs, depending on the CPU.  So far it's been found that only
-very large FFTs recurse into pointwise multiplies above these sizes.
-
-   When an FFT is to give a full product, the change of N to 2N doesn't
-alter the theoretical complexity for a given k, but for the purposes of
-considering where an FFT might be first used it can be assumed that the
-FFT is recursing into a normal multiply and that on that basis it's
-doing 2^k recursed multiplies each 1/2^(k-2) the size of the inputs,
-making it O(N^(k/(k-2))).  This would mean k=7 at O(N^1.4) would be the
-first FFT faster than Toom-3.  In practice `MUL_FFT_THRESHOLD' and
-`SQR_FFT_THRESHOLD' have been found to be in the k=8 range, somewhere
-between 3000 and 10000 limbs.
-
-   The way N is split into 2^k pieces and then 2M+k+3 is rounded up to
-a multiple of 2^k and `mp_bits_per_limb' means that when
-2^k>=mp_bits_per_limb the effective N is a multiple of 2^(2k-1) bits.
-The +k+3 means some values of N just under such a multiple will be
-rounded to the next.  The complexity calculations above assume that a
-favourable size is used, meaning one which isn't padded through
-rounding, and it's also assumed that the extra +k+3 bits are negligible
-at typical FFT sizes.
-
-   The practical effect of the 2^(2k-1) constraint is to introduce a
-step-effect into measured speeds.  For example k=8 will round N up to a
-multiple of 32768 bits, so for a 32-bit limb there'll be 512 limb
-groups of sizes for which `mpn_mul_n' runs at the same speed.  Or for
-k=9 groups of 2048 limbs, k=10 groups of 8192 limbs, etc.  In practice
-it's been found each k is used at quite small multiples of its size
-constraint and so the step effect is quite noticeable in a time versus
-size graph.
-
-   The threshold determinations currently measure at the mid-points of
-size steps, but this is sub-optimal since at the start of a new step it
-can happen that it's better to go back to the previous k for a while.
-Something more sophisticated for `MUL_FFT_TABLE' and `SQR_FFT_TABLE'
-will be needed.
-
-\1f
-File: gmp.info,  Node: Other Multiplication,  Next: Unbalanced Multiplication,  Prev: FFT Multiplication,  Up: Multiplication Algorithms
-
-16.1.6 Other Multiplication
----------------------------
-
-The Toom algorithms described above (*note Toom 3-Way Multiplication::,
-*note Toom 4-Way Multiplication::) generalizes to split into an
-arbitrary number of pieces, as per Knuth section 4.3.3 algorithm C.
-This is not currently used.  The notes here are merely for interest.
-
-   In general a split into r+1 pieces is made, and evaluations and
-pointwise multiplications done at 2*r+1 points.  A 4-way split does 7
-pointwise multiplies, 5-way does 9, etc.  Asymptotically an (r+1)-way
-algorithm is O(N^(log(2*r+1)/log(r+1))).  Only the pointwise
-multiplications count towards big-O complexity, but the time spent in
-the evaluate and interpolate stages grows with r and has a significant
-practical impact, with the asymptotic advantage of each r realized only
-at bigger and bigger sizes.  The overheads grow as O(N*r), whereas in
-an r=2^k FFT they grow only as O(N*log(r)).
-
-   Knuth algorithm C evaluates at points 0,1,2,...,2*r, but exercise 4
-uses -r,...,0,...,r and the latter saves some small multiplies in the
-evaluate stage (or rather trades them for additions), and has a further
-saving of nearly half the interpolate steps.  The idea is to separate
-odd and even final coefficients and then perform algorithm C steps C7
-and C8 on them separately.  The divisors at step C7 become j^2 and the
-multipliers at C8 become 2*t*j-j^2.
-
-   Splitting odd and even parts through positive and negative points
-can be thought of as using -1 as a square root of unity.  If a 4th root
-of unity was available then a further split and speedup would be
-possible, but no such root exists for plain integers.  Going to complex
-integers with i=sqrt(-1) doesn't help, essentially because in Cartesian
-form it takes three real multiplies to do a complex multiply.  The
-existence of 2^k'th roots of unity in a suitable ring or field lets the
-fast Fourier transform keep splitting and get to O(N*log(r)).
-
-   Floating point FFTs use complex numbers approximating Nth roots of
-unity.  Some processors have special support for such FFTs.  But these
-are not used in GMP since it's very difficult to guarantee an exact
-result (to some number of bits).  An occasional difference of 1 in the
-last bit might not matter to a typical signal processing algorithm, but
-is of course of vital importance to GMP.
-
-\1f
-File: gmp.info,  Node: Unbalanced Multiplication,  Prev: Other Multiplication,  Up: Multiplication Algorithms
-
-16.1.7 Unbalanced Multiplication
---------------------------------
-
-Multiplication of operands with different sizes, both below
-`MUL_TOOM22_THRESHOLD' are done with plain schoolbook multiplication
-(*note Basecase Multiplication::).
-
-   For really large operands, we invoke FFT directly.
-
-   For operands between these sizes, we use Toom inspired algorithms
-suggested by Alberto Zanoni and Marco Bodrato.  The idea is to split
-the operands into polynomials of different degree.  GMP currently
-splits the smaller operand onto 2 coefficients, i.e., a polynomial of
-degree 1, but the larger operand can be split into 2, 3, or 4
-coefficients, i.e., a polynomial of degree 1 to 3.
-
-\1f
-File: gmp.info,  Node: Division Algorithms,  Next: Greatest Common Divisor Algorithms,  Prev: Multiplication Algorithms,  Up: Algorithms
-
-16.2 Division Algorithms
-========================
-
-* Menu:
-
-* Single Limb Division::
-* Basecase Division::
-* Divide and Conquer Division::
-* Block-Wise Barrett Division::
-* Exact Division::
-* Exact Remainder::
-* Small Quotient Division::
-
-\1f
-File: gmp.info,  Node: Single Limb Division,  Next: Basecase Division,  Prev: Division Algorithms,  Up: Division Algorithms
-
-16.2.1 Single Limb Division
----------------------------
-
-Nx1 division is implemented using repeated 2x1 divisions from high to
-low, either with a hardware divide instruction or a multiplication by
-inverse, whichever is best on a given CPU.
-
-   The multiply by inverse follows "Improved division by invariant
-integers" by Mo"ller and Granlund (*note References::) and is
-implemented as `udiv_qrnnd_preinv' in `gmp-impl.h'.  The idea is to
-have a fixed-point approximation to 1/d (see `invert_limb') and then
-multiply by the high limb (plus one bit) of the dividend to get a
-quotient q.  With d normalized (high bit set), q is no more than 1 too
-small.  Subtracting q*d from the dividend gives a remainder, and
-reveals whether q or q-1 is correct.
-
-   The result is a division done with two multiplications and four or
-five arithmetic operations.  On CPUs with low latency multipliers this
-can be much faster than a hardware divide, though the cost of
-calculating the inverse at the start may mean it's only better on
-inputs bigger than say 4 or 5 limbs.
-
-   When a divisor must be normalized, either for the generic C
-`__udiv_qrnnd_c' or the multiply by inverse, the division performed is
-actually a*2^k by d*2^k where a is the dividend and k is the power
-necessary to have the high bit of d*2^k set.  The bit shifts for the
-dividend are usually accomplished "on the fly" meaning by extracting
-the appropriate bits at each step.  Done this way the quotient limbs
-come out aligned ready to store.  When only the remainder is wanted, an
-alternative is to take the dividend limbs unshifted and calculate r = a
-mod d*2^k followed by an extra final step r*2^k mod d*2^k.  This can
-help on CPUs with poor bit shifts or few registers.
-
-   The multiply by inverse can be done two limbs at a time.  The
-calculation is basically the same, but the inverse is two limbs and the
-divisor treated as if padded with a low zero limb.  This means more
-work, since the inverse will need a 2x2 multiply, but the four 1x1s to
-do that are independent and can therefore be done partly or wholly in
-parallel.  Likewise for a 2x1 calculating q*d.  The net effect is to
-process two limbs with roughly the same two multiplies worth of latency
-that one limb at a time gives.  This extends to 3 or 4 limbs at a time,
-though the extra work to apply the inverse will almost certainly soon
-reach the limits of multiplier throughput.
-
-   A similar approach in reverse can be taken to process just half a
-limb at a time if the divisor is only a half limb.  In this case the
-1x1 multiply for the inverse effectively becomes two (1/2)x1 for each
-limb, which can be a saving on CPUs with a fast half limb multiply, or
-in fact if the only multiply is a half limb, and especially if it's not
-pipelined.
-
-\1f
-File: gmp.info,  Node: Basecase Division,  Next: Divide and Conquer Division,  Prev: Single Limb Division,  Up: Division Algorithms
-
-16.2.2 Basecase Division
-------------------------
-
-Basecase NxM division is like long division done by hand, but in base
-2^mp_bits_per_limb.  See Knuth section 4.3.1 algorithm D, and
-`mpn/generic/sb_divrem_mn.c'.
-
-   Briefly stated, while the dividend remains larger than the divisor,
-a high quotient limb is formed and the Nx1 product q*d subtracted at
-the top end of the dividend.  With a normalized divisor (most
-significant bit set), each quotient limb can be formed with a 2x1
-division and a 1x1 multiplication plus some subtractions.  The 2x1
-division is by the high limb of the divisor and is done either with a
-hardware divide or a multiply by inverse (the same as in *Note Single
-Limb Division::) whichever is faster.  Such a quotient is sometimes one
-too big, requiring an addback of the divisor, but that happens rarely.
-
-   With Q=N-M being the number of quotient limbs, this is an O(Q*M)
-algorithm and will run at a speed similar to a basecase QxM
-multiplication, differing in fact only in the extra multiply and divide
-for each of the Q quotient limbs.
-
-\1f
-File: gmp.info,  Node: Divide and Conquer Division,  Next: Block-Wise Barrett Division,  Prev: Basecase Division,  Up: Division Algorithms
-
-16.2.3 Divide and Conquer Division
-----------------------------------
-
-For divisors larger than `DC_DIV_QR_THRESHOLD', division is done by
-dividing.  Or to be precise by a recursive divide and conquer algorithm
-based on work by Moenck and Borodin, Jebelean, and Burnikel and Ziegler
-(*note References::).
-
-   The algorithm consists essentially of recognising that a 2NxN
-division can be done with the basecase division algorithm (*note
-Basecase Division::), but using N/2 limbs as a base, not just a single
-limb.  This way the multiplications that arise are (N/2)x(N/2) and can
-take advantage of Karatsuba and higher multiplication algorithms (*note
-Multiplication Algorithms::).  The two "digits" of the quotient are
-formed by recursive Nx(N/2) divisions.
-
-   If the (N/2)x(N/2) multiplies are done with a basecase multiplication
-then the work is about the same as a basecase division, but with more
-function call overheads and with some subtractions separated from the
-multiplies.  These overheads mean that it's only when N/2 is above
-`MUL_TOOM22_THRESHOLD' that divide and conquer is of use.
-
-   `DC_DIV_QR_THRESHOLD' is based on the divisor size N, so it will be
-somewhere above twice `MUL_TOOM22_THRESHOLD', but how much above
-depends on the CPU.  An optimized `mpn_mul_basecase' can lower
-`DC_DIV_QR_THRESHOLD' a little by offering a ready-made advantage over
-repeated `mpn_submul_1' calls.
-
-   Divide and conquer is asymptotically O(M(N)*log(N)) where M(N) is
-the time for an NxN multiplication done with FFTs.  The actual time is
-a sum over multiplications of the recursed sizes, as can be seen near
-the end of section 2.2 of Burnikel and Ziegler.  For example, within
-the Toom-3 range, divide and conquer is 2.63*M(N).  With higher
-algorithms the M(N) term improves and the multiplier tends to log(N).
-In practice, at moderate to large sizes, a 2NxN division is about 2 to
-4 times slower than an NxN multiplication.
-
-\1f
-File: gmp.info,  Node: Block-Wise Barrett Division,  Next: Exact Division,  Prev: Divide and Conquer Division,  Up: Division Algorithms
-
-16.2.4 Block-Wise Barrett Division
-----------------------------------
-
-For the largest divisions, a block-wise Barrett division algorithm is
-used.  Here, the divisor is inverted to a precision determined by the
-relative size of the dividend and divisor.  Blocks of quotient limbs
-are then generated by multiplying blocks from the dividend by the
-inverse.
-
-   Our block-wise algorithm computes a smaller inverse than in the
-plain Barrett algorithm.  For a 2n/n division, the inverse will be just
-ceil(n/2) limbs.
-
-\1f
-File: gmp.info,  Node: Exact Division,  Next: Exact Remainder,  Prev: Block-Wise Barrett Division,  Up: Division Algorithms
-
-16.2.5 Exact Division
----------------------
-
-A so-called exact division is when the dividend is known to be an exact
-multiple of the divisor.  Jebelean's exact division algorithm uses this
-knowledge to make some significant optimizations (*note References::).
-
-   The idea can be illustrated in decimal for example with 368154
-divided by 543.  Because the low digit of the dividend is 4, the low
-digit of the quotient must be 8.  This is arrived at from 4*7 mod 10,
-using the fact 7 is the modular inverse of 3 (the low digit of the
-divisor), since 3*7 == 1 mod 10.  So 8*543=4344 can be subtracted from
-the dividend leaving 363810.  Notice the low digit has become zero.
-
-   The procedure is repeated at the second digit, with the next
-quotient digit 7 (7 == 1*7 mod 10), subtracting 7*543=3801, leaving
-325800.  And finally at the third digit with quotient digit 6 (8*7 mod
-10), subtracting 6*543=3258 leaving 0.  So the quotient is 678.
-
-   Notice however that the multiplies and subtractions don't need to
-extend past the low three digits of the dividend, since that's enough
-to determine the three quotient digits.  For the last quotient digit no
-subtraction is needed at all.  On a 2NxN division like this one, only
-about half the work of a normal basecase division is necessary.
-
-   For an NxM exact division producing Q=N-M quotient limbs, the saving
-over a normal basecase division is in two parts.  Firstly, each of the
-Q quotient limbs needs only one multiply, not a 2x1 divide and
-multiply.  Secondly, the crossproducts are reduced when Q>M to
-Q*M-M*(M+1)/2, or when Q<=M to Q*(Q-1)/2.  Notice the savings are
-complementary.  If Q is big then many divisions are saved, or if Q is
-small then the crossproducts reduce to a small number.
-
-   The modular inverse used is calculated efficiently by `binvert_limb'
-in `gmp-impl.h'.  This does four multiplies for a 32-bit limb, or six
-for a 64-bit limb.  `tune/modlinv.c' has some alternate implementations
-that might suit processors better at bit twiddling than multiplying.
-
-   The sub-quadratic exact division described by Jebelean in "Exact
-Division with Karatsuba Complexity" is not currently implemented.  It
-uses a rearrangement similar to the divide and conquer for normal
-division (*note Divide and Conquer Division::), but operating from low
-to high.  A further possibility not currently implemented is
-"Bidirectional Exact Integer Division" by Krandick and Jebelean which
-forms quotient limbs from both the high and low ends of the dividend,
-and can halve once more the number of crossproducts needed in a 2NxN
-division.
-
-   A special case exact division by 3 exists in `mpn_divexact_by3',
-supporting Toom-3 multiplication and `mpq' canonicalizations.  It forms
-quotient digits with a multiply by the modular inverse of 3 (which is
-`0xAA..AAB') and uses two comparisons to determine a borrow for the next
-limb.  The multiplications don't need to be on the dependent chain, as
-long as the effect of the borrows is applied, which can help chips with
-pipelined multipliers.
-
-\1f
-File: gmp.info,  Node: Exact Remainder,  Next: Small Quotient Division,  Prev: Exact Division,  Up: Division Algorithms
-
-16.2.6 Exact Remainder
-----------------------
-
-If the exact division algorithm is done with a full subtraction at each
-stage and the dividend isn't a multiple of the divisor, then low zero
-limbs are produced but with a remainder in the high limbs.  For
-dividend a, divisor d, quotient q, and b = 2^mp_bits_per_limb, this
-remainder r is of the form
-
-     a = q*d + r*b^n
-
-   n represents the number of zero limbs produced by the subtractions,
-that being the number of limbs produced for q.  r will be in the range
-0<=r<d and can be viewed as a remainder, but one shifted up by a factor
-of b^n.
-
-   Carrying out full subtractions at each stage means the same number
-of cross products must be done as a normal division, but there's still
-some single limb divisions saved.  When d is a single limb some
-simplifications arise, providing good speedups on a number of
-processors.
-
-   `mpn_divexact_by3', `mpn_modexact_1_odd' and the `mpn_redc_X'
-functions differ subtly in how they return r, leading to some negations
-in the above formula, but all are essentially the same.
-
-   Clearly r is zero when a is a multiple of d, and this leads to
-divisibility or congruence tests which are potentially more efficient
-than a normal division.
-
-   The factor of b^n on r can be ignored in a GCD when d is odd, hence
-the use of `mpn_modexact_1_odd' by `mpn_gcd_1' and `mpz_kronecker_ui'
-etc (*note Greatest Common Divisor Algorithms::).
-
-   Montgomery's REDC method for modular multiplications uses operands
-of the form of x*b^-n and y*b^-n and on calculating (x*b^-n)*(y*b^-n)
-uses the factor of b^n in the exact remainder to reach a product in the
-same form (x*y)*b^-n (*note Modular Powering Algorithm::).
-
-   Notice that r generally gives no useful information about the
-ordinary remainder a mod d since b^n mod d could be anything.  If
-however b^n == 1 mod d, then r is the negative of the ordinary
-remainder.  This occurs whenever d is a factor of b^n-1, as for example
-with 3 in `mpn_divexact_by3'.  For a 32 or 64 bit limb other such
-factors include 5, 17 and 257, but no particular use has been found for
-this.
-
-\1f
-File: gmp.info,  Node: Small Quotient Division,  Prev: Exact Remainder,  Up: Division Algorithms
-
-16.2.7 Small Quotient Division
-------------------------------
-
-An NxM division where the number of quotient limbs Q=N-M is small can
-be optimized somewhat.
-
-   An ordinary basecase division normalizes the divisor by shifting it
-to make the high bit set, shifting the dividend accordingly, and
-shifting the remainder back down at the end of the calculation.  This
-is wasteful if only a few quotient limbs are to be formed.  Instead a
-division of just the top 2*Q limbs of the dividend by the top Q limbs
-of the divisor can be used to form a trial quotient.  This requires
-only those limbs normalized, not the whole of the divisor and dividend.
-
-   A multiply and subtract then applies the trial quotient to the M-Q
-unused limbs of the divisor and N-Q dividend limbs (which includes Q
-limbs remaining from the trial quotient division).  The starting trial
-quotient can be 1 or 2 too big, but all cases of 2 too big and most
-cases of 1 too big are detected by first comparing the most significant
-limbs that will arise from the subtraction.  An addback is done if the
-quotient still turns out to be 1 too big.
-
-   This whole procedure is essentially the same as one step of the
-basecase algorithm done in a Q limb base, though with the trial
-quotient test done only with the high limbs, not an entire Q limb
-"digit" product.  The correctness of this weaker test can be
-established by following the argument of Knuth section 4.3.1 exercise
-20 but with the v2*q>b*r+u2 condition appropriately relaxed.
-
-\1f
-File: gmp.info,  Node: Greatest Common Divisor Algorithms,  Next: Powering Algorithms,  Prev: Division Algorithms,  Up: Algorithms
-
-16.3 Greatest Common Divisor
-============================
-
-* Menu:
-
-* Binary GCD::
-* Lehmer's Algorithm::
-* Subquadratic GCD::
-* Extended GCD::
-* Jacobi Symbol::
-
-\1f
-File: gmp.info,  Node: Binary GCD,  Next: Lehmer's Algorithm,  Prev: Greatest Common Divisor Algorithms,  Up: Greatest Common Divisor Algorithms
-
-16.3.1 Binary GCD
------------------
-
-At small sizes GMP uses an O(N^2) binary style GCD.  This is described
-in many textbooks, for example Knuth section 4.5.2 algorithm B.  It
-simply consists of successively reducing odd operands a and b using
-
-     a,b = abs(a-b),min(a,b)
-     strip factors of 2 from a
-
-   The Euclidean GCD algorithm, as per Knuth algorithms E and A,
-repeatedly computes the quotient q = floor(a/b) and replaces a,b by v,
-u - q v. The binary algorithm has so far been found to be faster than
-the Euclidean algorithm everywhere.  One reason the binary method does
-well is that the implied quotient at each step is usually small, so
-often only one or two subtractions are needed to get the same effect as
-a division.  Quotients 1, 2 and 3 for example occur 67.7% of the time,
-see Knuth section 4.5.3 Theorem E.
-
-   When the implied quotient is large, meaning b is much smaller than
-a, then a division is worthwhile.  This is the basis for the initial a
-mod b reductions in `mpn_gcd' and `mpn_gcd_1' (the latter for both Nx1
-and 1x1 cases).  But after that initial reduction, big quotients occur
-too rarely to make it worth checking for them.
-
-
-   The final 1x1 GCD in `mpn_gcd_1' is done in the generic C code as
-described above.  For two N-bit operands, the algorithm takes about
-0.68 iterations per bit.  For optimum performance some attention needs
-to be paid to the way the factors of 2 are stripped from a.
-
-   Firstly it may be noted that in twos complement the number of low
-zero bits on a-b is the same as b-a, so counting or testing can begin on
-a-b without waiting for abs(a-b) to be determined.
-
-   A loop stripping low zero bits tends not to branch predict well,
-since the condition is data dependent.  But on average there's only a
-few low zeros, so an option is to strip one or two bits arithmetically
-then loop for more (as done for AMD K6).  Or use a lookup table to get
-a count for several bits then loop for more (as done for AMD K7).  An
-alternative approach is to keep just one of a or b odd and iterate
-
-     a,b = abs(a-b), min(a,b)
-     a = a/2 if even
-     b = b/2 if even
-
-   This requires about 1.25 iterations per bit, but stripping of a
-single bit at each step avoids any branching.  Repeating the bit strip
-reduces to about 0.9 iterations per bit, which may be a worthwhile
-tradeoff.
-
-   Generally with the above approaches a speed of perhaps 6 cycles per
-bit can be achieved, which is still not terribly fast with for instance
-a 64-bit GCD taking nearly 400 cycles.  It's this sort of time which
-means it's not usually advantageous to combine a set of divisibility
-tests into a GCD.
-
-   Currently, the binary algorithm is used for GCD only when N < 3.
-
-\1f
-File: gmp.info,  Node: Lehmer's Algorithm,  Next: Subquadratic GCD,  Prev: Binary GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.2 Lehmer's algorithm
--------------------------
-
-Lehmer's improvement of the Euclidean algorithms is based on the
-observation that the initial part of the quotient sequence depends only
-on the most significant parts of the inputs. The variant of Lehmer's
-algorithm used in GMP splits off the most significant two limbs, as
-suggested, e.g., in "A Double-Digit Lehmer-Euclid Algorithm" by
-Jebelean (*note References::). The quotients of two double-limb inputs
-are collected as a 2 by 2 matrix with single-limb elements. This is
-done by the function `mpn_hgcd2'. The resulting matrix is applied to
-the inputs using `mpn_mul_1' and `mpn_submul_1'. Each iteration usually
-reduces the inputs by almost one limb. In the rare case of a large
-quotient, no progress can be made by examining just the most
-significant two limbs, and the quotient is computing using plain
-division.
-
-   The resulting algorithm is asymptotically O(N^2), just as the
-Euclidean algorithm and the binary algorithm. The quadratic part of the
-work are the calls to `mpn_mul_1' and `mpn_submul_1'. For small sizes,
-the linear work is also significant. There are roughly N calls to the
-`mpn_hgcd2' function. This function uses a couple of important
-optimizations:
-
-   * It uses the same relaxed notion of correctness as `mpn_hgcd' (see
-     next section). This means that when called with the most
-     significant two limbs of two large numbers, the returned matrix
-     does not always correspond exactly to the initial quotient
-     sequence for the two large numbers; the final quotient may
-     sometimes be one off.
-
-   * It takes advantage of the fact the quotients are usually small.
-     The division operator is not used, since the corresponding
-     assembler instruction is very slow on most architectures. (This
-     code could probably be improved further, it uses many branches
-     that are unfriendly to prediction).
-
-   * It switches from double-limb calculations to single-limb
-     calculations half-way through, when the input numbers have been
-     reduced in size from two limbs to one and a half.
-
-
-\1f
-File: gmp.info,  Node: Subquadratic GCD,  Next: Extended GCD,  Prev: Lehmer's Algorithm,  Up: Greatest Common Divisor Algorithms
-
-16.3.3 Subquadratic GCD
------------------------
-
-For inputs larger than `GCD_DC_THRESHOLD', GCD is computed via the HGCD
-(Half GCD) function, as a generalization to Lehmer's algorithm.
-
-   Let the inputs a,b be of size N limbs each. Put S = floor(N/2) + 1.
-Then HGCD(a,b) returns a transformation matrix T with non-negative
-elements, and reduced numbers (c;d) = T^-1 (a;b). The reduced numbers
-c,d must be larger than S limbs, while their difference abs(c-d) must
-fit in S limbs. The matrix elements will also be of size roughly N/2.
-
-   The HGCD base case uses Lehmer's algorithm, but with the above stop
-condition that returns reduced numbers and the corresponding
-transformation matrix half-way through. For inputs larger than
-`HGCD_THRESHOLD', HGCD is computed recursively, using the divide and
-conquer algorithm in "On Scho"nhage's algorithm and subquadratic
-integer GCD computation" by Mo"ller (*note References::). The recursive
-algorithm consists of these main steps.
-
-   * Call HGCD recursively, on the most significant N/2 limbs. Apply the
-     resulting matrix T_1 to the full numbers, reducing them to a size
-     just above 3N/2.
-
-   * Perform a small number of division or subtraction steps to reduce
-     the numbers to size below 3N/2. This is essential mainly for the
-     unlikely case of large quotients.
-
-   * Call HGCD recursively, on the most significant N/2 limbs of the
-     reduced numbers. Apply the resulting matrix T_2 to the full
-     numbers, reducing them to a size just above N/2.
-
-   * Compute T = T_1 T_2.
-
-   * Perform a small number of division and subtraction steps to
-     satisfy the requirements, and return.
-
-   GCD is then implemented as a loop around HGCD, similarly to Lehmer's
-algorithm. Where Lehmer repeatedly chops off the top two limbs, calls
-`mpn_hgcd2', and applies the resulting matrix to the full numbers, the
-subquadratic GCD chops off the most significant third of the limbs (the
-proportion is a tuning parameter, and 1/3 seems to be more efficient
-than, e.g, 1/2), calls `mpn_hgcd', and applies the resulting matrix.
-Once the input numbers are reduced to size below `GCD_DC_THRESHOLD',
-Lehmer's algorithm is used for the rest of the work.
-
-   The asymptotic running time of both HGCD and GCD is O(M(N)*log(N)),
-where M(N) is the time for multiplying two N-limb numbers.
-
-\1f
-File: gmp.info,  Node: Extended GCD,  Next: Jacobi Symbol,  Prev: Subquadratic GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.4 Extended GCD
--------------------
-
-The extended GCD function, or GCDEXT, calculates gcd(a,b) and also
-cofactors x and y satisfying a*x+b*y=gcd(a,b). All the algorithms used
-for plain GCD are extended to handle this case. The binary algorithm is
-used only for single-limb GCDEXT.  Lehmer's algorithm is used for sizes
-up to `GCDEXT_DC_THRESHOLD'. Above this threshold, GCDEXT is
-implemented as a loop around HGCD, but with more book-keeping to keep
-track of the cofactors. This gives the same asymptotic running time as
-for GCD and HGCD, O(M(N)*log(N))
-
-   One difference to plain GCD is that while the inputs a and b are
-reduced as the algorithm proceeds, the cofactors x and y grow in size.
-This makes the tuning of the chopping-point more difficult. The current
-code chops off the most significant half of the inputs for the call to
-HGCD in the first iteration, and the most significant two thirds for
-the remaining calls. This strategy could surely be improved. Also the
-stop condition for the loop, where Lehmer's algorithm is invoked once
-the inputs are reduced below `GCDEXT_DC_THRESHOLD', could maybe be
-improved by taking into account the current size of the cofactors.
-
-\1f
-File: gmp.info,  Node: Jacobi Symbol,  Prev: Extended GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.5 Jacobi Symbol
---------------------
-
-`mpz_jacobi' and `mpz_kronecker' are currently implemented with a
-simple binary algorithm similar to that described for the GCDs (*note
-Binary GCD::).  They're not very fast when both inputs are large.
-Lehmer's multi-step improvement or a binary based multi-step algorithm
-is likely to be better.
-
-   When one operand fits a single limb, and that includes
-`mpz_kronecker_ui' and friends, an initial reduction is done with
-either `mpn_mod_1' or `mpn_modexact_1_odd', followed by the binary
-algorithm on a single limb.  The binary algorithm is well suited to a
-single limb, and the whole calculation in this case is quite efficient.
-
-   In all the routines sign changes for the result are accumulated
-using some bit twiddling, avoiding table lookups or conditional jumps.
-
diff --git a/misc/builddeps/linux64/gmp/share/info/gmp.info-2 b/misc/builddeps/linux64/gmp/share/info/gmp.info-2
deleted file mode 100644 (file)
index 4584623..0000000
+++ /dev/null
@@ -1,3489 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-File: gmp.info,  Node: Powering Algorithms,  Next: Root Extraction Algorithms,  Prev: Greatest Common Divisor Algorithms,  Up: Algorithms
-
-16.4 Powering Algorithms
-========================
-
-* Menu:
-
-* Normal Powering Algorithm::
-* Modular Powering Algorithm::
-
-\1f
-File: gmp.info,  Node: Normal Powering Algorithm,  Next: Modular Powering Algorithm,  Prev: Powering Algorithms,  Up: Powering Algorithms
-
-16.4.1 Normal Powering
-----------------------
-
-Normal `mpz' or `mpf' powering uses a simple binary algorithm,
-successively squaring and then multiplying by the base when a 1 bit is
-seen in the exponent, as per Knuth section 4.6.3.  The "left to right"
-variant described there is used rather than algorithm A, since it's
-just as easy and can be done with somewhat less temporary memory.
-
-\1f
-File: gmp.info,  Node: Modular Powering Algorithm,  Prev: Normal Powering Algorithm,  Up: Powering Algorithms
-
-16.4.2 Modular Powering
------------------------
-
-Modular powering is implemented using a 2^k-ary sliding window
-algorithm, as per "Handbook of Applied Cryptography" algorithm 14.85
-(*note References::).  k is chosen according to the size of the
-exponent.  Larger exponents use larger values of k, the choice being
-made to minimize the average number of multiplications that must
-supplement the squaring.
-
-   The modular multiplies and squares use either a simple division or
-the REDC method by Montgomery (*note References::).  REDC is a little
-faster, essentially saving N single limb divisions in a fashion similar
-to an exact remainder (*note Exact Remainder::).
-
-\1f
-File: gmp.info,  Node: Root Extraction Algorithms,  Next: Radix Conversion Algorithms,  Prev: Powering Algorithms,  Up: Algorithms
-
-16.5 Root Extraction Algorithms
-===============================
-
-* Menu:
-
-* Square Root Algorithm::
-* Nth Root Algorithm::
-* Perfect Square Algorithm::
-* Perfect Power Algorithm::
-
-\1f
-File: gmp.info,  Node: Square Root Algorithm,  Next: Nth Root Algorithm,  Prev: Root Extraction Algorithms,  Up: Root Extraction Algorithms
-
-16.5.1 Square Root
-------------------
-
-Square roots are taken using the "Karatsuba Square Root" algorithm by
-Paul Zimmermann (*note References::).
-
-   An input n is split into four parts of k bits each, so with b=2^k we
-have n = a3*b^3 + a2*b^2 + a1*b + a0.  Part a3 must be "normalized" so
-that either the high or second highest bit is set.  In GMP, k is kept
-on a limb boundary and the input is left shifted (by an even number of
-bits) to normalize.
-
-   The square root of the high two parts is taken, by recursive
-application of the algorithm (bottoming out in a one-limb Newton's
-method),
-
-     s1,r1 = sqrtrem (a3*b + a2)
-
-   This is an approximation to the desired root and is extended by a
-division to give s,r,
-
-     q,u = divrem (r1*b + a1, 2*s1)
-     s = s1*b + q
-     r = u*b + a0 - q^2
-
-   The normalization requirement on a3 means at this point s is either
-correct or 1 too big.  r is negative in the latter case, so
-
-     if r < 0 then
-       r = r + 2*s - 1
-       s = s - 1
-
-   The algorithm is expressed in a divide and conquer form, but as
-noted in the paper it can also be viewed as a discrete variant of
-Newton's method, or as a variation on the schoolboy method (no longer
-taught) for square roots two digits at a time.
-
-   If the remainder r is not required then usually only a few high limbs
-of r and u need to be calculated to determine whether an adjustment to
-s is required.  This optimization is not currently implemented.
-
-   In the Karatsuba multiplication range this algorithm is
-O(1.5*M(N/2)), where M(n) is the time to multiply two numbers of n
-limbs.  In the FFT multiplication range this grows to a bound of
-O(6*M(N/2)).  In practice a factor of about 1.5 to 1.8 is found in the
-Karatsuba and Toom-3 ranges, growing to 2 or 3 in the FFT range.
-
-   The algorithm does all its calculations in integers and the resulting
-`mpn_sqrtrem' is used for both `mpz_sqrt' and `mpf_sqrt'.  The extended
-precision given by `mpf_sqrt_ui' is obtained by padding with zero limbs.
-
-\1f
-File: gmp.info,  Node: Nth Root Algorithm,  Next: Perfect Square Algorithm,  Prev: Square Root Algorithm,  Up: Root Extraction Algorithms
-
-16.5.2 Nth Root
----------------
-
-Integer Nth roots are taken using Newton's method with the following
-iteration, where A is the input and n is the root to be taken.
-
-              1         A
-     a[i+1] = - * ( --------- + (n-1)*a[i] )
-              n     a[i]^(n-1)
-
-   The initial approximation a[1] is generated bitwise by successively
-powering a trial root with or without new 1 bits, aiming to be just
-above the true root.  The iteration converges quadratically when
-started from a good approximation.  When n is large more initial bits
-are needed to get good convergence.  The current implementation is not
-particularly well optimized.
-
-\1f
-File: gmp.info,  Node: Perfect Square Algorithm,  Next: Perfect Power Algorithm,  Prev: Nth Root Algorithm,  Up: Root Extraction Algorithms
-
-16.5.3 Perfect Square
----------------------
-
-A significant fraction of non-squares can be quickly identified by
-checking whether the input is a quadratic residue modulo small integers.
-
-   `mpz_perfect_square_p' first tests the input mod 256, which means
-just examining the low byte.  Only 44 different values occur for
-squares mod 256, so 82.8% of inputs can be immediately identified as
-non-squares.
-
-   On a 32-bit system similar tests are done mod 9, 5, 7, 13 and 17,
-for a total 99.25% of inputs identified as non-squares.  On a 64-bit
-system 97 is tested too, for a total 99.62%.
-
-   These moduli are chosen because they're factors of 2^24-1 (or 2^48-1
-for 64-bits), and such a remainder can be quickly taken just using
-additions (see `mpn_mod_34lsub1').
-
-   When nails are in use moduli are instead selected by the `gen-psqr.c'
-program and applied with an `mpn_mod_1'.  The same 2^24-1 or 2^48-1
-could be done with nails using some extra bit shifts, but this is not
-currently implemented.
-
-   In any case each modulus is applied to the `mpn_mod_34lsub1' or
-`mpn_mod_1' remainder and a table lookup identifies non-squares.  By
-using a "modexact" style calculation, and suitably permuted tables,
-just one multiply each is required, see the code for details.  Moduli
-are also combined to save operations, so long as the lookup tables
-don't become too big.  `gen-psqr.c' does all the pre-calculations.
-
-   A square root must still be taken for any value that passes these
-tests, to verify it's really a square and not one of the small fraction
-of non-squares that get through (ie. a pseudo-square to all the tested
-bases).
-
-   Clearly more residue tests could be done, `mpz_perfect_square_p' only
-uses a compact and efficient set.  Big inputs would probably benefit
-from more residue testing, small inputs might be better off with less.
-The assumed distribution of squares versus non-squares in the input
-would affect such considerations.
-
-\1f
-File: gmp.info,  Node: Perfect Power Algorithm,  Prev: Perfect Square Algorithm,  Up: Root Extraction Algorithms
-
-16.5.4 Perfect Power
---------------------
-
-Detecting perfect powers is required by some factorization algorithms.
-Currently `mpz_perfect_power_p' is implemented using repeated Nth root
-extractions, though naturally only prime roots need to be considered.
-(*Note Nth Root Algorithm::.)
-
-   If a prime divisor p with multiplicity e can be found, then only
-roots which are divisors of e need to be considered, much reducing the
-work necessary.  To this end divisibility by a set of small primes is
-checked.
-
-\1f
-File: gmp.info,  Node: Radix Conversion Algorithms,  Next: Other Algorithms,  Prev: Root Extraction Algorithms,  Up: Algorithms
-
-16.6 Radix Conversion
-=====================
-
-Radix conversions are less important than other algorithms.  A program
-dominated by conversions should probably use a different data
-representation.
-
-* Menu:
-
-* Binary to Radix::
-* Radix to Binary::
-
-\1f
-File: gmp.info,  Node: Binary to Radix,  Next: Radix to Binary,  Prev: Radix Conversion Algorithms,  Up: Radix Conversion Algorithms
-
-16.6.1 Binary to Radix
-----------------------
-
-Conversions from binary to a power-of-2 radix use a simple and fast
-O(N) bit extraction algorithm.
-
-   Conversions from binary to other radices use one of two algorithms.
-Sizes below `GET_STR_PRECOMPUTE_THRESHOLD' use a basic O(N^2) method.
-Repeated divisions by b^n are made, where b is the radix and n is the
-biggest power that fits in a limb.  But instead of simply using the
-remainder r from such divisions, an extra divide step is done to give a
-fractional limb representing r/b^n.  The digits of r can then be
-extracted using multiplications by b rather than divisions.  Special
-case code is provided for decimal, allowing multiplications by 10 to
-optimize to shifts and adds.
-
-   Above `GET_STR_PRECOMPUTE_THRESHOLD' a sub-quadratic algorithm is
-used.  For an input t, powers b^(n*2^i) of the radix are calculated,
-until a power between t and sqrt(t) is reached.  t is then divided by
-that largest power, giving a quotient which is the digits above that
-power, and a remainder which is those below.  These two parts are in
-turn divided by the second highest power, and so on recursively.  When
-a piece has been divided down to less than `GET_STR_DC_THRESHOLD'
-limbs, the basecase algorithm described above is used.
-
-   The advantage of this algorithm is that big divisions can make use
-of the sub-quadratic divide and conquer division (*note Divide and
-Conquer Division::), and big divisions tend to have less overheads than
-lots of separate single limb divisions anyway.  But in any case the
-cost of calculating the powers b^(n*2^i) must first be overcome.
-
-   `GET_STR_PRECOMPUTE_THRESHOLD' and `GET_STR_DC_THRESHOLD' represent
-the same basic thing, the point where it becomes worth doing a big
-division to cut the input in half.  `GET_STR_PRECOMPUTE_THRESHOLD'
-includes the cost of calculating the radix power required, whereas
-`GET_STR_DC_THRESHOLD' assumes that's already available, which is the
-case when recursing.
-
-   Since the base case produces digits from least to most significant
-but they want to be stored from most to least, it's necessary to
-calculate in advance how many digits there will be, or at least be sure
-not to underestimate that.  For GMP the number of input bits is
-multiplied by `chars_per_bit_exactly' from `mp_bases', rounding up.
-The result is either correct or one too big.
-
-   Examining some of the high bits of the input could increase the
-chance of getting the exact number of digits, but an exact result every
-time would not be practical, since in general the difference between
-numbers 100... and 99... is only in the last few bits and the work to
-identify 99...  might well be almost as much as a full conversion.
-
-   `mpf_get_str' doesn't currently use the algorithm described here, it
-multiplies or divides by a power of b to move the radix point to the
-just above the highest non-zero digit (or at worst one above that
-location), then multiplies by b^n to bring out digits.  This is O(N^2)
-and is certainly not optimal.
-
-   The r/b^n scheme described above for using multiplications to bring
-out digits might be useful for more than a single limb.  Some brief
-experiments with it on the base case when recursing didn't give a
-noticeable improvement, but perhaps that was only due to the
-implementation.  Something similar would work for the sub-quadratic
-divisions too, though there would be the cost of calculating a bigger
-radix power.
-
-   Another possible improvement for the sub-quadratic part would be to
-arrange for radix powers that balanced the sizes of quotient and
-remainder produced, ie. the highest power would be an b^(n*k)
-approximately equal to sqrt(t), not restricted to a 2^i factor.  That
-ought to smooth out a graph of times against sizes, but may or may not
-be a net speedup.
-
-\1f
-File: gmp.info,  Node: Radix to Binary,  Prev: Binary to Radix,  Up: Radix Conversion Algorithms
-
-16.6.2 Radix to Binary
-----------------------
-
-*This section needs to be rewritten, it currently describes the
-algorithms used before GMP 4.3.*
-
-   Conversions from a power-of-2 radix into binary use a simple and fast
-O(N) bitwise concatenation algorithm.
-
-   Conversions from other radices use one of two algorithms.  Sizes
-below `SET_STR_PRECOMPUTE_THRESHOLD' use a basic O(N^2) method.  Groups
-of n digits are converted to limbs, where n is the biggest power of the
-base b which will fit in a limb, then those groups are accumulated into
-the result by multiplying by b^n and adding.  This saves
-multi-precision operations, as per Knuth section 4.4 part E (*note
-References::).  Some special case code is provided for decimal, giving
-the compiler a chance to optimize multiplications by 10.
-
-   Above `SET_STR_PRECOMPUTE_THRESHOLD' a sub-quadratic algorithm is
-used.  First groups of n digits are converted into limbs.  Then adjacent
-limbs are combined into limb pairs with x*b^n+y, where x and y are the
-limbs.  Adjacent limb pairs are combined into quads similarly with
-x*b^(2n)+y.  This continues until a single block remains, that being
-the result.
-
-   The advantage of this method is that the multiplications for each x
-are big blocks, allowing Karatsuba and higher algorithms to be used.
-But the cost of calculating the powers b^(n*2^i) must be overcome.
-`SET_STR_PRECOMPUTE_THRESHOLD' usually ends up quite big, around 5000
-digits, and on some processors much bigger still.
-
-   `SET_STR_PRECOMPUTE_THRESHOLD' is based on the input digits (and
-tuned for decimal), though it might be better based on a limb count, so
-as to be independent of the base.  But that sort of count isn't used by
-the base case and so would need some sort of initial calculation or
-estimate.
-
-   The main reason `SET_STR_PRECOMPUTE_THRESHOLD' is so much bigger
-than the corresponding `GET_STR_PRECOMPUTE_THRESHOLD' is that
-`mpn_mul_1' is much faster than `mpn_divrem_1' (often by a factor of 5,
-or more).
-
-\1f
-File: gmp.info,  Node: Other Algorithms,  Next: Assembly Coding,  Prev: Radix Conversion Algorithms,  Up: Algorithms
-
-16.7 Other Algorithms
-=====================
-
-* Menu:
-
-* Prime Testing Algorithm::
-* Factorial Algorithm::
-* Binomial Coefficients Algorithm::
-* Fibonacci Numbers Algorithm::
-* Lucas Numbers Algorithm::
-* Random Number Algorithms::
-
-\1f
-File: gmp.info,  Node: Prime Testing Algorithm,  Next: Factorial Algorithm,  Prev: Other Algorithms,  Up: Other Algorithms
-
-16.7.1 Prime Testing
---------------------
-
-The primality testing in `mpz_probab_prime_p' (*note Number Theoretic
-Functions::) first does some trial division by small factors and then
-uses the Miller-Rabin probabilistic primality testing algorithm, as
-described in Knuth section 4.5.4 algorithm P (*note References::).
-
-   For an odd input n, and with n = q*2^k+1 where q is odd, this
-algorithm selects a random base x and tests whether x^q mod n is 1 or
--1, or an x^(q*2^j) mod n is 1, for 1<=j<=k.  If so then n is probably
-prime, if not then n is definitely composite.
-
-   Any prime n will pass the test, but some composites do too.  Such
-composites are known as strong pseudoprimes to base x.  No n is a
-strong pseudoprime to more than 1/4 of all bases (see Knuth exercise
-22), hence with x chosen at random there's no more than a 1/4 chance a
-"probable prime" will in fact be composite.
-
-   In fact strong pseudoprimes are quite rare, making the test much more
-powerful than this analysis would suggest, but 1/4 is all that's proven
-for an arbitrary n.
-
-\1f
-File: gmp.info,  Node: Factorial Algorithm,  Next: Binomial Coefficients Algorithm,  Prev: Prime Testing Algorithm,  Up: Other Algorithms
-
-16.7.2 Factorial
-----------------
-
-Factorials are calculated by a combination of removal of twos,
-powering, and binary splitting.  The procedure can be best illustrated
-with an example,
-
-     23! = 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23
-
-has factors of two removed,
-
-     23! = 2^19.1.1.3.1.5.3.7.1.9.5.11.3.13.7.15.1.17.9.19.5.21.11.23
-
-and the resulting terms collected up according to their multiplicity,
-
-     23! = 2^19.(3.5)^3.(7.9.11)^2.(13.15.17.19.21.23)
-
-   Each sequence such as 13.15.17.19.21.23 is evaluated by splitting
-into every second term, as for instance (13.17.21).(15.19.23), and the
-same recursively on each half.  This is implemented iteratively using
-some bit twiddling.
-
-   Such splitting is more efficient than repeated Nx1 multiplies since
-it forms big multiplies, allowing Karatsuba and higher algorithms to be
-used.  And even below the Karatsuba threshold a big block of work can
-be more efficient for the basecase algorithm.
-
-   Splitting into subsequences of every second term keeps the resulting
-products more nearly equal in size than would the simpler approach of
-say taking the first half and second half of the sequence.  Nearly
-equal products are more efficient for the current multiply
-implementation.
-
-\1f
-File: gmp.info,  Node: Binomial Coefficients Algorithm,  Next: Fibonacci Numbers Algorithm,  Prev: Factorial Algorithm,  Up: Other Algorithms
-
-16.7.3 Binomial Coefficients
-----------------------------
-
-Binomial coefficients C(n,k) are calculated by first arranging k <= n/2
-using C(n,k) = C(n,n-k) if necessary, and then evaluating the following
-product simply from i=2 to i=k.
-
-                           k  (n-k+i)
-     C(n,k) =  (n-k+1) * prod -------
-                          i=2    i
-
-   It's easy to show that each denominator i will divide the product so
-far, so the exact division algorithm is used (*note Exact Division::).
-
-   The numerators n-k+i and denominators i are first accumulated into
-as many fit a limb, to save multi-precision operations, though for
-`mpz_bin_ui' this applies only to the divisors, since n is an `mpz_t'
-and n-k+i in general won't fit in a limb at all.
-
-\1f
-File: gmp.info,  Node: Fibonacci Numbers Algorithm,  Next: Lucas Numbers Algorithm,  Prev: Binomial Coefficients Algorithm,  Up: Other Algorithms
-
-16.7.4 Fibonacci Numbers
-------------------------
-
-The Fibonacci functions `mpz_fib_ui' and `mpz_fib2_ui' are designed for
-calculating isolated F[n] or F[n],F[n-1] values efficiently.
-
-   For small n, a table of single limb values in `__gmp_fib_table' is
-used.  On a 32-bit limb this goes up to F[47], or on a 64-bit limb up
-to F[93].  For convenience the table starts at F[-1].
-
-   Beyond the table, values are generated with a binary powering
-algorithm, calculating a pair F[n] and F[n-1] working from high to low
-across the bits of n.  The formulas used are
-
-     F[2k+1] = 4*F[k]^2 - F[k-1]^2 + 2*(-1)^k
-     F[2k-1] =   F[k]^2 + F[k-1]^2
-
-     F[2k] = F[2k+1] - F[2k-1]
-
-   At each step, k is the high b bits of n.  If the next bit of n is 0
-then F[2k],F[2k-1] is used, or if it's a 1 then F[2k+1],F[2k] is used,
-and the process repeated until all bits of n are incorporated.  Notice
-these formulas require just two squares per bit of n.
-
-   It'd be possible to handle the first few n above the single limb
-table with simple additions, using the defining Fibonacci recurrence
-F[k+1]=F[k]+F[k-1], but this is not done since it usually turns out to
-be faster for only about 10 or 20 values of n, and including a block of
-code for just those doesn't seem worthwhile.  If they really mattered
-it'd be better to extend the data table.
-
-   Using a table avoids lots of calculations on small numbers, and
-makes small n go fast.  A bigger table would make more small n go fast,
-it's just a question of balancing size against desired speed.  For GMP
-the code is kept compact, with the emphasis primarily on a good
-powering algorithm.
-
-   `mpz_fib2_ui' returns both F[n] and F[n-1], but `mpz_fib_ui' is only
-interested in F[n].  In this case the last step of the algorithm can
-become one multiply instead of two squares.  One of the following two
-formulas is used, according as n is odd or even.
-
-     F[2k]   = F[k]*(F[k]+2F[k-1])
-
-     F[2k+1] = (2F[k]+F[k-1])*(2F[k]-F[k-1]) + 2*(-1)^k
-
-   F[2k+1] here is the same as above, just rearranged to be a multiply.
-For interest, the 2*(-1)^k term both here and above can be applied
-just to the low limb of the calculation, without a carry or borrow into
-further limbs, which saves some code size.  See comments with
-`mpz_fib_ui' and the internal `mpn_fib2_ui' for how this is done.
-
-\1f
-File: gmp.info,  Node: Lucas Numbers Algorithm,  Next: Random Number Algorithms,  Prev: Fibonacci Numbers Algorithm,  Up: Other Algorithms
-
-16.7.5 Lucas Numbers
---------------------
-
-`mpz_lucnum2_ui' derives a pair of Lucas numbers from a pair of
-Fibonacci numbers with the following simple formulas.
-
-     L[k]   =   F[k] + 2*F[k-1]
-     L[k-1] = 2*F[k] -   F[k-1]
-
-   `mpz_lucnum_ui' is only interested in L[n], and some work can be
-saved.  Trailing zero bits on n can be handled with a single square
-each.
-
-     L[2k] = L[k]^2 - 2*(-1)^k
-
-   And the lowest 1 bit can be handled with one multiply of a pair of
-Fibonacci numbers, similar to what `mpz_fib_ui' does.
-
-     L[2k+1] = 5*F[k-1]*(2*F[k]+F[k-1]) - 4*(-1)^k
-
-\1f
-File: gmp.info,  Node: Random Number Algorithms,  Prev: Lucas Numbers Algorithm,  Up: Other Algorithms
-
-16.7.6 Random Numbers
----------------------
-
-For the `urandomb' functions, random numbers are generated simply by
-concatenating bits produced by the generator.  As long as the generator
-has good randomness properties this will produce well-distributed N bit
-numbers.
-
-   For the `urandomm' functions, random numbers in a range 0<=R<N are
-generated by taking values R of ceil(log2(N)) bits each until one
-satisfies R<N.  This will normally require only one or two attempts,
-but the attempts are limited in case the generator is somehow
-degenerate and produces only 1 bits or similar.
-
-   The Mersenne Twister generator is by Matsumoto and Nishimura (*note
-References::).  It has a non-repeating period of 2^19937-1, which is a
-Mersenne prime, hence the name of the generator.  The state is 624
-words of 32-bits each, which is iterated with one XOR and shift for each
-32-bit word generated, making the algorithm very fast.  Randomness
-properties are also very good and this is the default algorithm used by
-GMP.
-
-   Linear congruential generators are described in many text books, for
-instance Knuth volume 2 (*note References::).  With a modulus M and
-parameters A and C, a integer state S is iterated by the formula S <-
-A*S+C mod M.  At each step the new state is a linear function of the
-previous, mod M, hence the name of the generator.
-
-   In GMP only moduli of the form 2^N are supported, and the current
-implementation is not as well optimized as it could be.  Overheads are
-significant when N is small, and when N is large clearly the multiply
-at each step will become slow.  This is not a big concern, since the
-Mersenne Twister generator is better in every respect and is therefore
-recommended for all normal applications.
-
-   For both generators the current state can be deduced by observing
-enough output and applying some linear algebra (over GF(2) in the case
-of the Mersenne Twister).  This generally means raw output is
-unsuitable for cryptographic applications without further hashing or
-the like.
-
-\1f
-File: gmp.info,  Node: Assembly Coding,  Prev: Other Algorithms,  Up: Algorithms
-
-16.8 Assembly Coding
-====================
-
-The assembly subroutines in GMP are the most significant source of
-speed at small to moderate sizes.  At larger sizes algorithm selection
-becomes more important, but of course speedups in low level routines
-will still speed up everything proportionally.
-
-   Carry handling and widening multiplies that are important for GMP
-can't be easily expressed in C.  GCC `asm' blocks help a lot and are
-provided in `longlong.h', but hand coding low level routines invariably
-offers a speedup over generic C by a factor of anything from 2 to 10.
-
-* Menu:
-
-* Assembly Code Organisation::
-* Assembly Basics::
-* Assembly Carry Propagation::
-* Assembly Cache Handling::
-* Assembly Functional Units::
-* Assembly Floating Point::
-* Assembly SIMD Instructions::
-* Assembly Software Pipelining::
-* Assembly Loop Unrolling::
-* Assembly Writing Guide::
-
-\1f
-File: gmp.info,  Node: Assembly Code Organisation,  Next: Assembly Basics,  Prev: Assembly Coding,  Up: Assembly Coding
-
-16.8.1 Code Organisation
-------------------------
-
-The various `mpn' subdirectories contain machine-dependent code, written
-in C or assembly.  The `mpn/generic' subdirectory contains default code,
-used when there's no machine-specific version of a particular file.
-
-   Each `mpn' subdirectory is for an ISA family.  Generally 32-bit and
-64-bit variants in a family cannot share code and have separate
-directories.  Within a family further subdirectories may exist for CPU
-variants.
-
-   In each directory a `nails' subdirectory may exist, holding code with
-nails support for that CPU variant.  A `NAILS_SUPPORT' directive in each
-file indicates the nails values the code handles.  Nails code only
-exists where it's faster, or promises to be faster, than plain code.
-There's no effort put into nails if they're not going to enhance a
-given CPU.
-
-\1f
-File: gmp.info,  Node: Assembly Basics,  Next: Assembly Carry Propagation,  Prev: Assembly Code Organisation,  Up: Assembly Coding
-
-16.8.2 Assembly Basics
-----------------------
-
-`mpn_addmul_1' and `mpn_submul_1' are the most important routines for
-overall GMP performance.  All multiplications and divisions come down to
-repeated calls to these.  `mpn_add_n', `mpn_sub_n', `mpn_lshift' and
-`mpn_rshift' are next most important.
-
-   On some CPUs assembly versions of the internal functions
-`mpn_mul_basecase' and `mpn_sqr_basecase' give significant speedups,
-mainly through avoiding function call overheads.  They can also
-potentially make better use of a wide superscalar processor, as can
-bigger primitives like `mpn_addmul_2' or `mpn_addmul_4'.
-
-   The restrictions on overlaps between sources and destinations (*note
-Low-level Functions::) are designed to facilitate a variety of
-implementations.  For example, knowing `mpn_add_n' won't have partly
-overlapping sources and destination means reading can be done far ahead
-of writing on superscalar processors, and loops can be vectorized on a
-vector processor, depending on the carry handling.
-
-\1f
-File: gmp.info,  Node: Assembly Carry Propagation,  Next: Assembly Cache Handling,  Prev: Assembly Basics,  Up: Assembly Coding
-
-16.8.3 Carry Propagation
-------------------------
-
-The problem that presents most challenges in GMP is propagating carries
-from one limb to the next.  In functions like `mpn_addmul_1' and
-`mpn_add_n', carries are the only dependencies between limb operations.
-
-   On processors with carry flags, a straightforward CISC style `adc' is
-generally best.  AMD K6 `mpn_addmul_1' however is an example of an
-unusual set of circumstances where a branch works out better.
-
-   On RISC processors generally an add and compare for overflow is
-used.  This sort of thing can be seen in `mpn/generic/aors_n.c'.  Some
-carry propagation schemes require 4 instructions, meaning at least 4
-cycles per limb, but other schemes may use just 1 or 2.  On wide
-superscalar processors performance may be completely determined by the
-number of dependent instructions between carry-in and carry-out for
-each limb.
-
-   On vector processors good use can be made of the fact that a carry
-bit only very rarely propagates more than one limb.  When adding a
-single bit to a limb, there's only a carry out if that limb was
-`0xFF...FF' which on random data will be only 1 in 2^mp_bits_per_limb.
-`mpn/cray/add_n.c' is an example of this, it adds all limbs in
-parallel, adds one set of carry bits in parallel and then only rarely
-needs to fall through to a loop propagating further carries.
-
-   On the x86s, GCC (as of version 2.95.2) doesn't generate
-particularly good code for the RISC style idioms that are necessary to
-handle carry bits in C.  Often conditional jumps are generated where
-`adc' or `sbb' forms would be better.  And so unfortunately almost any
-loop involving carry bits needs to be coded in assembly for best
-results.
-
-\1f
-File: gmp.info,  Node: Assembly Cache Handling,  Next: Assembly Functional Units,  Prev: Assembly Carry Propagation,  Up: Assembly Coding
-
-16.8.4 Cache Handling
----------------------
-
-GMP aims to perform well both on operands that fit entirely in L1 cache
-and those which don't.
-
-   Basic routines like `mpn_add_n' or `mpn_lshift' are often used on
-large operands, so L2 and main memory performance is important for them.
-`mpn_mul_1' and `mpn_addmul_1' are mostly used for multiply and square
-basecases, so L1 performance matters most for them, unless assembly
-versions of `mpn_mul_basecase' and `mpn_sqr_basecase' exist, in which
-case the remaining uses are mostly for larger operands.
-
-   For L2 or main memory operands, memory access times will almost
-certainly be more than the calculation time.  The aim therefore is to
-maximize memory throughput, by starting a load of the next cache line
-while processing the contents of the previous one.  Clearly this is
-only possible if the chip has a lock-up free cache or some sort of
-prefetch instruction.  Most current chips have both these features.
-
-   Prefetching sources combines well with loop unrolling, since a
-prefetch can be initiated once per unrolled loop (or more than once if
-the loop covers more than one cache line).
-
-   On CPUs without write-allocate caches, prefetching destinations will
-ensure individual stores don't go further down the cache hierarchy,
-limiting bandwidth.  Of course for calculations which are slow anyway,
-like `mpn_divrem_1', write-throughs might be fine.
-
-   The distance ahead to prefetch will be determined by memory latency
-versus throughput.  The aim of course is to have data arriving
-continuously, at peak throughput.  Some CPUs have limits on the number
-of fetches or prefetches in progress.
-
-   If a special prefetch instruction doesn't exist then a plain load
-can be used, but in that case care must be taken not to attempt to read
-past the end of an operand, since that might produce a segmentation
-violation.
-
-   Some CPUs or systems have hardware that detects sequential memory
-accesses and initiates suitable cache movements automatically, making
-life easy.
-
-\1f
-File: gmp.info,  Node: Assembly Functional Units,  Next: Assembly Floating Point,  Prev: Assembly Cache Handling,  Up: Assembly Coding
-
-16.8.5 Functional Units
------------------------
-
-When choosing an approach for an assembly loop, consideration is given
-to what operations can execute simultaneously and what throughput can
-thereby be achieved.  In some cases an algorithm can be tweaked to
-accommodate available resources.
-
-   Loop control will generally require a counter and pointer updates,
-costing as much as 5 instructions, plus any delays a branch introduces.
-CPU addressing modes might reduce pointer updates, perhaps by allowing
-just one updating pointer and others expressed as offsets from it, or
-on CISC chips with all addressing done with the loop counter as a
-scaled index.
-
-   The final loop control cost can be amortised by processing several
-limbs in each iteration (*note Assembly Loop Unrolling::).  This at
-least ensures loop control isn't a big fraction the work done.
-
-   Memory throughput is always a limit.  If perhaps only one load or
-one store can be done per cycle then 3 cycles/limb will the top speed
-for "binary" operations like `mpn_add_n', and any code achieving that
-is optimal.
-
-   Integer resources can be freed up by having the loop counter in a
-float register, or by pressing the float units into use for some
-multiplying, perhaps doing every second limb on the float side (*note
-Assembly Floating Point::).
-
-   Float resources can be freed up by doing carry propagation on the
-integer side, or even by doing integer to float conversions in integers
-using bit twiddling.
-
-\1f
-File: gmp.info,  Node: Assembly Floating Point,  Next: Assembly SIMD Instructions,  Prev: Assembly Functional Units,  Up: Assembly Coding
-
-16.8.6 Floating Point
----------------------
-
-Floating point arithmetic is used in GMP for multiplications on CPUs
-with poor integer multipliers.  It's mostly useful for `mpn_mul_1',
-`mpn_addmul_1' and `mpn_submul_1' on 64-bit machines, and
-`mpn_mul_basecase' on both 32-bit and 64-bit machines.
-
-   With IEEE 53-bit double precision floats, integer multiplications
-producing up to 53 bits will give exact results.  Breaking a 64x64
-multiplication into eight 16x32->48 bit pieces is convenient.  With
-some care though six 21x32->53 bit products can be used, if one of the
-lower two 21-bit pieces also uses the sign bit.
-
-   For the `mpn_mul_1' family of functions on a 64-bit machine, the
-invariant single limb is split at the start, into 3 or 4 pieces.
-Inside the loop, the bignum operand is split into 32-bit pieces.  Fast
-conversion of these unsigned 32-bit pieces to floating point is highly
-machine-dependent.  In some cases, reading the data into the integer
-unit, zero-extending to 64-bits, then transferring to the floating
-point unit back via memory is the only option.
-
-   Converting partial products back to 64-bit limbs is usually best
-done as a signed conversion.  Since all values are smaller than 2^53,
-signed and unsigned are the same, but most processors lack unsigned
-conversions.
-
-
-
-   Here is a diagram showing 16x32 bit products for an `mpn_mul_1' or
-`mpn_addmul_1' with a 64-bit limb.  The single limb operand V is split
-into four 16-bit parts.  The multi-limb operand U is split in the loop
-into two 32-bit parts.
-
-                     +---+---+---+---+
-                     |v48|v32|v16|v00|    V operand
-                     +---+---+---+---+
-
-                     +-------+---+---+
-                 x   |  u32  |  u00  |    U operand (one limb)
-                     +---------------+
-
-     ---------------------------------
-
-                         +-----------+
-                         | u00 x v00 |    p00    48-bit products
-                         +-----------+
-                     +-----------+
-                     | u00 x v16 |        p16
-                     +-----------+
-                 +-----------+
-                 | u00 x v32 |            p32
-                 +-----------+
-             +-----------+
-             | u00 x v48 |                p48
-             +-----------+
-                 +-----------+
-                 | u32 x v00 |            r32
-                 +-----------+
-             +-----------+
-             | u32 x v16 |                r48
-             +-----------+
-         +-----------+
-         | u32 x v32 |                    r64
-         +-----------+
-     +-----------+
-     | u32 x v48 |                        r80
-     +-----------+
-
-   p32 and r32 can be summed using floating-point addition, and
-likewise p48 and r48.  p00 and p16 can be summed with r64 and r80 from
-the previous iteration.
-
-   For each loop then, four 49-bit quantities are transferred to the
-integer unit, aligned as follows,
-
-     |-----64bits----|-----64bits----|
-                        +------------+
-                        | p00 + r64' |    i00
-                        +------------+
-                    +------------+
-                    | p16 + r80' |        i16
-                    +------------+
-                +------------+
-                | p32 + r32  |            i32
-                +------------+
-            +------------+
-            | p48 + r48  |                i48
-            +------------+
-
-   The challenge then is to sum these efficiently and add in a carry
-limb, generating a low 64-bit result limb and a high 33-bit carry limb
-(i48 extends 33 bits into the high half).
-
-\1f
-File: gmp.info,  Node: Assembly SIMD Instructions,  Next: Assembly Software Pipelining,  Prev: Assembly Floating Point,  Up: Assembly Coding
-
-16.8.7 SIMD Instructions
-------------------------
-
-The single-instruction multiple-data support in current microprocessors
-is aimed at signal processing algorithms where each data point can be
-treated more or less independently.  There's generally not much support
-for propagating the sort of carries that arise in GMP.
-
-   SIMD multiplications of say four 16x16 bit multiplies only do as much
-work as one 32x32 from GMP's point of view, and need some shifts and
-adds besides.  But of course if say the SIMD form is fully pipelined
-and uses less instruction decoding then it may still be worthwhile.
-
-   On the x86 chips, MMX has so far found a use in `mpn_rshift' and
-`mpn_lshift', and is used in a special case for 16-bit multipliers in
-the P55 `mpn_mul_1'.  SSE2 is used for Pentium 4 `mpn_mul_1',
-`mpn_addmul_1', and `mpn_submul_1'.
-
-\1f
-File: gmp.info,  Node: Assembly Software Pipelining,  Next: Assembly Loop Unrolling,  Prev: Assembly SIMD Instructions,  Up: Assembly Coding
-
-16.8.8 Software Pipelining
---------------------------
-
-Software pipelining consists of scheduling instructions around the
-branch point in a loop.  For example a loop might issue a load not for
-use in the present iteration but the next, thereby allowing extra
-cycles for the data to arrive from memory.
-
-   Naturally this is wanted only when doing things like loads or
-multiplies that take several cycles to complete, and only where a CPU
-has multiple functional units so that other work can be done in the
-meantime.
-
-   A pipeline with several stages will have a data value in progress at
-each stage and each loop iteration moves them along one stage.  This is
-like juggling.
-
-   If the latency of some instruction is greater than the loop time
-then it will be necessary to unroll, so one register has a result ready
-to use while another (or multiple others) are still in progress.
-(*note Assembly Loop Unrolling::).
-
-\1f
-File: gmp.info,  Node: Assembly Loop Unrolling,  Next: Assembly Writing Guide,  Prev: Assembly Software Pipelining,  Up: Assembly Coding
-
-16.8.9 Loop Unrolling
----------------------
-
-Loop unrolling consists of replicating code so that several limbs are
-processed in each loop.  At a minimum this reduces loop overheads by a
-corresponding factor, but it can also allow better register usage, for
-example alternately using one register combination and then another.
-Judicious use of `m4' macros can help avoid lots of duplication in the
-source code.
-
-   Any amount of unrolling can be handled with a loop counter that's
-decremented by N each time, stopping when the remaining count is less
-than the further N the loop will process.  Or by subtracting N at the
-start, the termination condition becomes when the counter C is less
-than 0 (and the count of remaining limbs is C+N).
-
-   Alternately for a power of 2 unroll the loop count and remainder can
-be established with a shift and mask.  This is convenient if also
-making a computed jump into the middle of a large loop.
-
-   The limbs not a multiple of the unrolling can be handled in various
-ways, for example
-
-   * A simple loop at the end (or the start) to process the excess.
-     Care will be wanted that it isn't too much slower than the
-     unrolled part.
-
-   * A set of binary tests, for example after an 8-limb unrolling, test
-     for 4 more limbs to process, then a further 2 more or not, and
-     finally 1 more or not.  This will probably take more code space
-     than a simple loop.
-
-   * A `switch' statement, providing separate code for each possible
-     excess, for example an 8-limb unrolling would have separate code
-     for 0 remaining, 1 remaining, etc, up to 7 remaining.  This might
-     take a lot of code, but may be the best way to optimize all cases
-     in combination with a deep pipelined loop.
-
-   * A computed jump into the middle of the loop, thus making the first
-     iteration handle the excess.  This should make times smoothly
-     increase with size, which is attractive, but setups for the jump
-     and adjustments for pointers can be tricky and could become quite
-     difficult in combination with deep pipelining.
-
-\1f
-File: gmp.info,  Node: Assembly Writing Guide,  Prev: Assembly Loop Unrolling,  Up: Assembly Coding
-
-16.8.10 Writing Guide
----------------------
-
-This is a guide to writing software pipelined loops for processing limb
-vectors in assembly.
-
-   First determine the algorithm and which instructions are needed.
-Code it without unrolling or scheduling, to make sure it works.  On a
-3-operand CPU try to write each new value to a new register, this will
-greatly simplify later steps.
-
-   Then note for each instruction the functional unit and/or issue port
-requirements.  If an instruction can use either of two units, like U0
-or U1 then make a category "U0/U1".  Count the total using each unit
-(or combined unit), and count all instructions.
-
-   Figure out from those counts the best possible loop time.  The goal
-will be to find a perfect schedule where instruction latencies are
-completely hidden.  The total instruction count might be the limiting
-factor, or perhaps a particular functional unit.  It might be possible
-to tweak the instructions to help the limiting factor.
-
-   Suppose the loop time is N, then make N issue buckets, with the
-final loop branch at the end of the last.  Now fill the buckets with
-dummy instructions using the functional units desired.  Run this to
-make sure the intended speed is reached.
-
-   Now replace the dummy instructions with the real instructions from
-the slow but correct loop you started with.  The first will typically
-be a load instruction.  Then the instruction using that value is placed
-in a bucket an appropriate distance down.  Run the loop again, to check
-it still runs at target speed.
-
-   Keep placing instructions, frequently measuring the loop.  After a
-few you will need to wrap around from the last bucket back to the top
-of the loop.  If you used the new-register for new-value strategy above
-then there will be no register conflicts.  If not then take care not to
-clobber something already in use.  Changing registers at this time is
-very error prone.
-
-   The loop will overlap two or more of the original loop iterations,
-and the computation of one vector element result will be started in one
-iteration of the new loop, and completed one or several iterations
-later.
-
-   The final step is to create feed-in and wind-down code for the loop.
-A good way to do this is to make a copy (or copies) of the loop at the
-start and delete those instructions which don't have valid antecedents,
-and at the end replicate and delete those whose results are unwanted
-(including any further loads).
-
-   The loop will have a minimum number of limbs loaded and processed,
-so the feed-in code must test if the request size is smaller and skip
-either to a suitable part of the wind-down or to special code for small
-sizes.
-
-\1f
-File: gmp.info,  Node: Internals,  Next: Contributors,  Prev: Algorithms,  Up: Top
-
-17 Internals
-************
-
-*This chapter is provided only for informational purposes and the
-various internals described here may change in future GMP releases.
-Applications expecting to be compatible with future releases should use
-only the documented interfaces described in previous chapters.*
-
-* Menu:
-
-* Integer Internals::
-* Rational Internals::
-* Float Internals::
-* Raw Output Internals::
-* C++ Interface Internals::
-
-\1f
-File: gmp.info,  Node: Integer Internals,  Next: Rational Internals,  Prev: Internals,  Up: Internals
-
-17.1 Integer Internals
-======================
-
-`mpz_t' variables represent integers using sign and magnitude, in space
-dynamically allocated and reallocated.  The fields are as follows.
-
-`_mp_size'
-     The number of limbs, or the negative of that when representing a
-     negative integer.  Zero is represented by `_mp_size' set to zero,
-     in which case the `_mp_d' data is unused.
-
-`_mp_d'
-     A pointer to an array of limbs which is the magnitude.  These are
-     stored "little endian" as per the `mpn' functions, so `_mp_d[0]'
-     is the least significant limb and `_mp_d[ABS(_mp_size)-1]' is the
-     most significant.  Whenever `_mp_size' is non-zero, the most
-     significant limb is non-zero.
-
-     Currently there's always at least one limb allocated, so for
-     instance `mpz_set_ui' never needs to reallocate, and `mpz_get_ui'
-     can fetch `_mp_d[0]' unconditionally (though its value is then
-     only wanted if `_mp_size' is non-zero).
-
-`_mp_alloc'
-     `_mp_alloc' is the number of limbs currently allocated at `_mp_d',
-     and naturally `_mp_alloc >= ABS(_mp_size)'.  When an `mpz' routine
-     is about to (or might be about to) increase `_mp_size', it checks
-     `_mp_alloc' to see whether there's enough space, and reallocates
-     if not.  `MPZ_REALLOC' is generally used for this.
-
-   The various bitwise logical functions like `mpz_and' behave as if
-negative values were twos complement.  But sign and magnitude is always
-used internally, and necessary adjustments are made during the
-calculations.  Sometimes this isn't pretty, but sign and magnitude are
-best for other routines.
-
-   Some internal temporary variables are setup with `MPZ_TMP_INIT' and
-these have `_mp_d' space obtained from `TMP_ALLOC' rather than the
-memory allocation functions.  Care is taken to ensure that these are
-big enough that no reallocation is necessary (since it would have
-unpredictable consequences).
-
-   `_mp_size' and `_mp_alloc' are `int', although `mp_size_t' is
-usually a `long'.  This is done to make the fields just 32 bits on some
-64 bits systems, thereby saving a few bytes of data space but still
-providing plenty of range.
-
-\1f
-File: gmp.info,  Node: Rational Internals,  Next: Float Internals,  Prev: Integer Internals,  Up: Internals
-
-17.2 Rational Internals
-=======================
-
-`mpq_t' variables represent rationals using an `mpz_t' numerator and
-denominator (*note Integer Internals::).
-
-   The canonical form adopted is denominator positive (and non-zero),
-no common factors between numerator and denominator, and zero uniquely
-represented as 0/1.
-
-   It's believed that casting out common factors at each stage of a
-calculation is best in general.  A GCD is an O(N^2) operation so it's
-better to do a few small ones immediately than to delay and have to do
-a big one later.  Knowing the numerator and denominator have no common
-factors can be used for example in `mpq_mul' to make only two cross
-GCDs necessary, not four.
-
-   This general approach to common factors is badly sub-optimal in the
-presence of simple factorizations or little prospect for cancellation,
-but GMP has no way to know when this will occur.  As per *Note
-Efficiency::, that's left to applications.  The `mpq_t' framework might
-still suit, with `mpq_numref' and `mpq_denref' for direct access to the
-numerator and denominator, or of course `mpz_t' variables can be used
-directly.
-
-\1f
-File: gmp.info,  Node: Float Internals,  Next: Raw Output Internals,  Prev: Rational Internals,  Up: Internals
-
-17.3 Float Internals
-====================
-
-Efficient calculation is the primary aim of GMP floats and the use of
-whole limbs and simple rounding facilitates this.
-
-   `mpf_t' floats have a variable precision mantissa and a single
-machine word signed exponent.  The mantissa is represented using sign
-and magnitude.
-
-        most                   least
-     significant            significant
-        limb                   limb
-
-                                 _mp_d
-      |---- _mp_exp --->           |
-       _____ _____ _____ _____ _____
-      |_____|_____|_____|_____|_____|
-                        . <------------ radix point
-
-       <-------- _mp_size --------->
-
-The fields are as follows.
-
-`_mp_size'
-     The number of limbs currently in use, or the negative of that when
-     representing a negative value.  Zero is represented by `_mp_size'
-     and `_mp_exp' both set to zero, and in that case the `_mp_d' data
-     is unused.  (In the future `_mp_exp' might be undefined when
-     representing zero.)
-
-`_mp_prec'
-     The precision of the mantissa, in limbs.  In any calculation the
-     aim is to produce `_mp_prec' limbs of result (the most significant
-     being non-zero).
-
-`_mp_d'
-     A pointer to the array of limbs which is the absolute value of the
-     mantissa.  These are stored "little endian" as per the `mpn'
-     functions, so `_mp_d[0]' is the least significant limb and
-     `_mp_d[ABS(_mp_size)-1]' the most significant.
-
-     The most significant limb is always non-zero, but there are no
-     other restrictions on its value, in particular the highest 1 bit
-     can be anywhere within the limb.
-
-     `_mp_prec+1' limbs are allocated to `_mp_d', the extra limb being
-     for convenience (see below).  There are no reallocations during a
-     calculation, only in a change of precision with `mpf_set_prec'.
-
-`_mp_exp'
-     The exponent, in limbs, determining the location of the implied
-     radix point.  Zero means the radix point is just above the most
-     significant limb.  Positive values mean a radix point offset
-     towards the lower limbs and hence a value >= 1, as for example in
-     the diagram above.  Negative exponents mean a radix point further
-     above the highest limb.
-
-     Naturally the exponent can be any value, it doesn't have to fall
-     within the limbs as the diagram shows, it can be a long way above
-     or a long way below.  Limbs other than those included in the
-     `{_mp_d,_mp_size}' data are treated as zero.
-
-   The `_mp_size' and `_mp_prec' fields are `int', although the
-`mp_size_t' type is usually a `long'.  The `_mp_exp' field is usually
-`long'.  This is done to make some fields just 32 bits on some 64 bits
-systems, thereby saving a few bytes of data space but still providing
-plenty of precision and a very large range.
-
-
-The following various points should be noted.
-
-Low Zeros
-     The least significant limbs `_mp_d[0]' etc can be zero, though
-     such low zeros can always be ignored.  Routines likely to produce
-     low zeros check and avoid them to save time in subsequent
-     calculations, but for most routines they're quite unlikely and
-     aren't checked.
-
-Mantissa Size Range
-     The `_mp_size' count of limbs in use can be less than `_mp_prec' if
-     the value can be represented in less.  This means low precision
-     values or small integers stored in a high precision `mpf_t' can
-     still be operated on efficiently.
-
-     `_mp_size' can also be greater than `_mp_prec'.  Firstly a value is
-     allowed to use all of the `_mp_prec+1' limbs available at `_mp_d',
-     and secondly when `mpf_set_prec_raw' lowers `_mp_prec' it leaves
-     `_mp_size' unchanged and so the size can be arbitrarily bigger than
-     `_mp_prec'.
-
-Rounding
-     All rounding is done on limb boundaries.  Calculating `_mp_prec'
-     limbs with the high non-zero will ensure the application requested
-     minimum precision is obtained.
-
-     The use of simple "trunc" rounding towards zero is efficient,
-     since there's no need to examine extra limbs and increment or
-     decrement.
-
-Bit Shifts
-     Since the exponent is in limbs, there are no bit shifts in basic
-     operations like `mpf_add' and `mpf_mul'.  When differing exponents
-     are encountered all that's needed is to adjust pointers to line up
-     the relevant limbs.
-
-     Of course `mpf_mul_2exp' and `mpf_div_2exp' will require bit
-     shifts, but the choice is between an exponent in limbs which
-     requires shifts there, or one in bits which requires them almost
-     everywhere else.
-
-Use of `_mp_prec+1' Limbs
-     The extra limb on `_mp_d' (`_mp_prec+1' rather than just
-     `_mp_prec') helps when an `mpf' routine might get a carry from its
-     operation.  `mpf_add' for instance will do an `mpn_add' of
-     `_mp_prec' limbs.  If there's no carry then that's the result, but
-     if there is a carry then it's stored in the extra limb of space and
-     `_mp_size' becomes `_mp_prec+1'.
-
-     Whenever `_mp_prec+1' limbs are held in a variable, the low limb
-     is not needed for the intended precision, only the `_mp_prec' high
-     limbs.  But zeroing it out or moving the rest down is unnecessary.
-     Subsequent routines reading the value will simply take the high
-     limbs they need, and this will be `_mp_prec' if their target has
-     that same precision.  This is no more than a pointer adjustment,
-     and must be checked anyway since the destination precision can be
-     different from the sources.
-
-     Copy functions like `mpf_set' will retain a full `_mp_prec+1' limbs
-     if available.  This ensures that a variable which has `_mp_size'
-     equal to `_mp_prec+1' will get its full exact value copied.
-     Strictly speaking this is unnecessary since only `_mp_prec' limbs
-     are needed for the application's requested precision, but it's
-     considered that an `mpf_set' from one variable into another of the
-     same precision ought to produce an exact copy.
-
-Application Precisions
-     `__GMPF_BITS_TO_PREC' converts an application requested precision
-     to an `_mp_prec'.  The value in bits is rounded up to a whole limb
-     then an extra limb is added since the most significant limb of
-     `_mp_d' is only non-zero and therefore might contain only one bit.
-
-     `__GMPF_PREC_TO_BITS' does the reverse conversion, and removes the
-     extra limb from `_mp_prec' before converting to bits.  The net
-     effect of reading back with `mpf_get_prec' is simply the precision
-     rounded up to a multiple of `mp_bits_per_limb'.
-
-     Note that the extra limb added here for the high only being
-     non-zero is in addition to the extra limb allocated to `_mp_d'.
-     For example with a 32-bit limb, an application request for 250
-     bits will be rounded up to 8 limbs, then an extra added for the
-     high being only non-zero, giving an `_mp_prec' of 9.  `_mp_d' then
-     gets 10 limbs allocated.  Reading back with `mpf_get_prec' will
-     take `_mp_prec' subtract 1 limb and multiply by 32, giving 256
-     bits.
-
-     Strictly speaking, the fact the high limb has at least one bit
-     means that a float with, say, 3 limbs of 32-bits each will be
-     holding at least 65 bits, but for the purposes of `mpf_t' it's
-     considered simply to be 64 bits, a nice multiple of the limb size.
-
-\1f
-File: gmp.info,  Node: Raw Output Internals,  Next: C++ Interface Internals,  Prev: Float Internals,  Up: Internals
-
-17.4 Raw Output Internals
-=========================
-
-`mpz_out_raw' uses the following format.
-
-     +------+------------------------+
-     | size |       data bytes       |
-     +------+------------------------+
-
-   The size is 4 bytes written most significant byte first, being the
-number of subsequent data bytes, or the twos complement negative of
-that when a negative integer is represented.  The data bytes are the
-absolute value of the integer, written most significant byte first.
-
-   The most significant data byte is always non-zero, so the output is
-the same on all systems, irrespective of limb size.
-
-   In GMP 1, leading zero bytes were written to pad the data bytes to a
-multiple of the limb size.  `mpz_inp_raw' will still accept this, for
-compatibility.
-
-   The use of "big endian" for both the size and data fields is
-deliberate, it makes the data easy to read in a hex dump of a file.
-Unfortunately it also means that the limb data must be reversed when
-reading or writing, so neither a big endian nor little endian system
-can just read and write `_mp_d'.
-
-\1f
-File: gmp.info,  Node: C++ Interface Internals,  Prev: Raw Output Internals,  Up: Internals
-
-17.5 C++ Interface Internals
-============================
-
-A system of expression templates is used to ensure something like
-`a=b+c' turns into a simple call to `mpz_add' etc.  For `mpf_class' the
-scheme also ensures the precision of the final destination is used for
-any temporaries within a statement like `f=w*x+y*z'.  These are
-important features which a naive implementation cannot provide.
-
-   A simplified description of the scheme follows.  The true scheme is
-complicated by the fact that expressions have different return types.
-For detailed information, refer to the source code.
-
-   To perform an operation, say, addition, we first define a "function
-object" evaluating it,
-
-     struct __gmp_binary_plus
-     {
-       static void eval(mpf_t f, mpf_t g, mpf_t h) { mpf_add(f, g, h); }
-     };
-
-And an "additive expression" object,
-
-     __gmp_expr<__gmp_binary_expr<mpf_class, mpf_class, __gmp_binary_plus> >
-     operator+(const mpf_class &f, const mpf_class &g)
-     {
-       return __gmp_expr
-         <__gmp_binary_expr<mpf_class, mpf_class, __gmp_binary_plus> >(f, g);
-     }
-
-   The seemingly redundant `__gmp_expr<__gmp_binary_expr<...>>' is used
-to encapsulate any possible kind of expression into a single template
-type.  In fact even `mpf_class' etc are `typedef' specializations of
-`__gmp_expr'.
-
-   Next we define assignment of `__gmp_expr' to `mpf_class'.
-
-     template <class T>
-     mpf_class & mpf_class::operator=(const __gmp_expr<T> &expr)
-     {
-       expr.eval(this->get_mpf_t(), this->precision());
-       return *this;
-     }
-
-     template <class Op>
-     void __gmp_expr<__gmp_binary_expr<mpf_class, mpf_class, Op> >::eval
-     (mpf_t f, mp_bitcnt_t precision)
-     {
-       Op::eval(f, expr.val1.get_mpf_t(), expr.val2.get_mpf_t());
-     }
-
-   where `expr.val1' and `expr.val2' are references to the expression's
-operands (here `expr' is the `__gmp_binary_expr' stored within the
-`__gmp_expr').
-
-   This way, the expression is actually evaluated only at the time of
-assignment, when the required precision (that of `f') is known.
-Furthermore the target `mpf_t' is now available, thus we can call
-`mpf_add' directly with `f' as the output argument.
-
-   Compound expressions are handled by defining operators taking
-subexpressions as their arguments, like this:
-
-     template <class T, class U>
-     __gmp_expr
-     <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, __gmp_binary_plus> >
-     operator+(const __gmp_expr<T> &expr1, const __gmp_expr<U> &expr2)
-     {
-       return __gmp_expr
-         <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, __gmp_binary_plus> >
-         (expr1, expr2);
-     }
-
-   And the corresponding specializations of `__gmp_expr::eval':
-
-     template <class T, class U, class Op>
-     void __gmp_expr
-     <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, Op> >::eval
-     (mpf_t f, mp_bitcnt_t precision)
-     {
-       // declare two temporaries
-       mpf_class temp1(expr.val1, precision), temp2(expr.val2, precision);
-       Op::eval(f, temp1.get_mpf_t(), temp2.get_mpf_t());
-     }
-
-   The expression is thus recursively evaluated to any level of
-complexity and all subexpressions are evaluated to the precision of `f'.
-
-\1f
-File: gmp.info,  Node: Contributors,  Next: References,  Prev: Internals,  Up: Top
-
-Appendix A Contributors
-***********************
-
-Torbjo"rn Granlund wrote the original GMP library and is still the main
-developer.  Code not explicitly attributed to others, was contributed by
-Torbjo"rn.  Several other individuals and organizations have contributed
-GMP.  Here is a list in chronological order on first contribution:
-
-   Gunnar Sjo"din and Hans Riesel helped with mathematical problems in
-early versions of the library.
-
-   Richard Stallman helped with the interface design and revised the
-first version of this manual.
-
-   Brian Beuning and Doug Lea helped with testing of early versions of
-the library and made creative suggestions.
-
-   John Amanatides of York University in Canada contributed the function
-`mpz_probab_prime_p'.
-
-   Paul Zimmermann wrote the REDC-based mpz_powm code, the
-Scho"nhage-Strassen FFT multiply code, and the Karatsuba square root
-code.  He also improved the Toom3 code for GMP 4.2.  Paul sparked the
-development of GMP 2, with his comparisons between bignum packages.
-The ECMNET project Paul is organizing was a driving force behind many
-of the optimizations in GMP 3.  Paul also wrote the new GMP 4.3 nth
-root code (with Torbjo"rn).
-
-   Ken Weber (Kent State University, Universidade Federal do Rio Grande
-do Sul) contributed now defunct versions of `mpz_gcd', `mpz_divexact',
-`mpn_gcd', and `mpn_bdivmod', partially supported by CNPq (Brazil)
-grant 301314194-2.
-
-   Per Bothner of Cygnus Support helped to set up GMP to use Cygnus'
-configure.  He has also made valuable suggestions and tested numerous
-intermediary releases.
-
-   Joachim Hollman was involved in the design of the `mpf' interface,
-and in the `mpz' design revisions for version 2.
-
-   Bennet Yee contributed the initial versions of `mpz_jacobi' and
-`mpz_legendre'.
-
-   Andreas Schwab contributed the files `mpn/m68k/lshift.S' and
-`mpn/m68k/rshift.S' (now in `.asm' form).
-
-   Robert Harley of Inria, France and David Seal of ARM, England,
-suggested clever improvements for population count.  Robert also wrote
-highly optimized Karatsuba and 3-way Toom multiplication functions for
-GMP 3, and contributed the ARM assembly code.
-
-   Torsten Ekedahl of the Mathematical department of Stockholm
-University provided significant inspiration during several phases of
-the GMP development.  His mathematical expertise helped improve several
-algorithms.
-
-   Linus Nordberg wrote the new configure system based on autoconf and
-implemented the new random functions.
-
-   Kevin Ryde worked on a large number of things: optimized x86 code,
-m4 asm macros, parameter tuning, speed measuring, the configure system,
-function inlining, divisibility tests, bit scanning, Jacobi symbols,
-Fibonacci and Lucas number functions, printf and scanf functions, perl
-interface, demo expression parser, the algorithms chapter in the
-manual, `gmpasm-mode.el', and various miscellaneous improvements
-elsewhere.
-
-   Kent Boortz made the Mac OS 9 port.
-
-   Steve Root helped write the optimized alpha 21264 assembly code.
-
-   Gerardo Ballabio wrote the `gmpxx.h' C++ class interface and the C++
-`istream' input routines.
-
-   Jason Moxham rewrote `mpz_fac_ui'.
-
-   Pedro Gimeno implemented the Mersenne Twister and made other random
-number improvements.
-
-   Niels Mo"ller wrote the sub-quadratic GCD and extended GCD code, the
-quadratic Hensel division code, and (with Torbjo"rn) the new divide and
-conquer division code for GMP 4.3.  Niels also helped implement the new
-Toom multiply code for GMP 4.3 and implemented helper functions to
-simplify Toom evaluations for GMP 5.0.  He wrote the original version
-of mpn_mulmod_bnm1.
-
-   Alberto Zanoni and Marco Bodrato suggested the unbalanced multiply
-strategy, and found the optimal strategies for evaluation and
-interpolation in Toom multiplication.
-
-   Marco Bodrato helped implement the new Toom multiply code for GMP
-4.3 and implemented most of the new Toom multiply and squaring code for
-5.0.  He is the main author of the current mpn_mulmod_bnm1 and
-mpn_mullo_n.  Marco also wrote the functions mpn_invert and
-mpn_invertappr.
-
-   David Harvey suggested the internal function `mpn_bdiv_dbm1',
-implementing division relevant to Toom multiplication.  He also worked
-on fast assembly sequences, in particular on a fast AMD64
-`mpn_mul_basecase'.
-
-   Martin Boij wrote `mpn_perfect_power_p'.
-
-   (This list is chronological, not ordered after significance.  If you
-have contributed to GMP but are not listed above, please tell
-<gmp-devel@gmplib.org> about the omission!)
-
-   The development of floating point functions of GNU MP 2, were
-supported in part by the ESPRIT-BRA (Basic Research Activities) 6846
-project POSSO (POlynomial System SOlving).
-
-   The development of GMP 2, 3, and 4 was supported in part by the IDA
-Center for Computing Sciences.
-
-   Thanks go to Hans Thorsen for donating an SGI system for the GMP
-test system environment.
-
-\1f
-File: gmp.info,  Node: References,  Next: GNU Free Documentation License,  Prev: Contributors,  Up: Top
-
-Appendix B References
-*********************
-
-B.1 Books
-=========
-
-   * Jonathan M. Borwein and Peter B. Borwein, "Pi and the AGM: A Study
-     in Analytic Number Theory and Computational Complexity", Wiley,
-     1998.
-
-   * Richard Crandall and Carl Pomerance, "Prime Numbers: A
-     Computational Perspective", 2nd edition, Springer-Verlag, 2005.
-     `http://math.dartmouth.edu/~carlp/'
-
-   * Henri Cohen, "A Course in Computational Algebraic Number Theory",
-     Graduate Texts in Mathematics number 138, Springer-Verlag, 1993.
-     `http://www.math.u-bordeaux.fr/~cohen/'
-
-   * Donald E. Knuth, "The Art of Computer Programming", volume 2,
-     "Seminumerical Algorithms", 3rd edition, Addison-Wesley, 1998.
-     `http://www-cs-faculty.stanford.edu/~knuth/taocp.html'
-
-   * John D. Lipson, "Elements of Algebra and Algebraic Computing", The
-     Benjamin Cummings Publishing Company Inc, 1981.
-
-   * Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone,
-     "Handbook of Applied Cryptography",
-     `http://www.cacr.math.uwaterloo.ca/hac/'
-
-   * Richard M. Stallman and the GCC Developer Community, "Using the
-     GNU Compiler Collection", Free Software Foundation, 2008,
-     available online `http://gcc.gnu.org/onlinedocs/', and in the GCC
-     package `ftp://ftp.gnu.org/gnu/gcc/'
-
-B.2 Papers
-==========
-
-   * Yves Bertot, Nicolas Magaud and Paul Zimmermann, "A Proof of GMP
-     Square Root", Journal of Automated Reasoning, volume 29, 2002, pp.
-     225-252.  Also available online as INRIA Research Report 4475,
-     June 2001, `http://www.inria.fr/rrrt/rr-4475.html'
-
-   * Christoph Burnikel and Joachim Ziegler, "Fast Recursive Division",
-     Max-Planck-Institut fuer Informatik Research Report MPI-I-98-1-022,
-     `http://data.mpi-sb.mpg.de/internet/reports.nsf/NumberView/1998-1-022'
-
-   * Torbjo"rn Granlund and Peter L. Montgomery, "Division by Invariant
-     Integers using Multiplication", in Proceedings of the SIGPLAN
-     PLDI'94 Conference, June 1994.  Also available
-     `ftp://ftp.cwi.nl/pub/pmontgom/divcnst.psa4.gz' (and .psl.gz).
-
-   * Niels Mo"ller and Torbjo"rn Granlund, "Improved division by
-     invariant integers", to appear.
-
-   * Torbjo"rn Granlund and Niels Mo"ller, "Division of integers large
-     and small", to appear.
-
-   * Tudor Jebelean, "An algorithm for exact division", Journal of
-     Symbolic Computation, volume 15, 1993, pp. 169-180.  Research
-     report version available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1992/92-35.ps.gz'
-
-   * Tudor Jebelean, "Exact Division with Karatsuba Complexity -
-     Extended Abstract", RISC-Linz technical report 96-31,
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1996/96-31.ps.gz'
-
-   * Tudor Jebelean, "Practical Integer Division with Karatsuba
-     Complexity", ISSAC 97, pp. 339-341.  Technical report available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1996/96-29.ps.gz'
-
-   * Tudor Jebelean, "A Generalization of the Binary GCD Algorithm",
-     ISSAC 93, pp. 111-116.  Technical report version available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1993/93-01.ps.gz'
-
-   * Tudor Jebelean, "A Double-Digit Lehmer-Euclid Algorithm for
-     Finding the GCD of Long Integers", Journal of Symbolic
-     Computation, volume 19, 1995, pp. 145-157.  Technical report
-     version also available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1992/92-69.ps.gz'
-
-   * Werner Krandick and Tudor Jebelean, "Bidirectional Exact Integer
-     Division", Journal of Symbolic Computation, volume 21, 1996, pp.
-     441-455.  Early technical report version also available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1994/94-50.ps.gz'
-
-   * Makoto Matsumoto and Takuji Nishimura, "Mersenne Twister: A
-     623-dimensionally equidistributed uniform pseudorandom number
-     generator", ACM Transactions on Modelling and Computer Simulation,
-     volume 8, January 1998, pp. 3-30.  Available online
-     `http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/mt.ps.gz'
-     (or .pdf)
-
-   * R. Moenck and A. Borodin, "Fast Modular Transforms via Division",
-     Proceedings of the 13th Annual IEEE Symposium on Switching and
-     Automata Theory, October 1972, pp. 90-96.  Reprinted as "Fast
-     Modular Transforms", Journal of Computer and System Sciences,
-     volume 8, number 3, June 1974, pp. 366-386.
-
-   * Niels Mo"ller, "On Scho"nhage's algorithm and subquadratic integer
-     GCD   computation", in Mathematics of Computation, volume 77,
-     January 2008, pp.    589-607.
-
-   * Peter L. Montgomery, "Modular Multiplication Without Trial
-     Division", in Mathematics of Computation, volume 44, number 170,
-     April 1985.
-
-   * Arnold Scho"nhage and Volker Strassen, "Schnelle Multiplikation
-     grosser Zahlen", Computing 7, 1971, pp. 281-292.
-
-   * Kenneth Weber, "The accelerated integer GCD algorithm", ACM
-     Transactions on Mathematical Software, volume 21, number 1, March
-     1995, pp. 111-122.
-
-   * Paul Zimmermann, "Karatsuba Square Root", INRIA Research Report
-     3805, November 1999, `http://www.inria.fr/rrrt/rr-3805.html'
-
-   * Paul Zimmermann, "A Proof of GMP Fast Division and Square Root
-     Implementations",
-     `http://www.loria.fr/~zimmerma/papers/proof-div-sqrt.ps.gz'
-
-   * Dan Zuras, "On Squaring and Multiplying Large Integers", ARITH-11:
-     IEEE Symposium on Computer Arithmetic, 1993, pp. 260 to 271.
-     Reprinted as "More on Multiplying and Squaring Large Integers",
-     IEEE Transactions on Computers, volume 43, number 8, August 1994,
-     pp. 899-908.
-
-\1f
-File: gmp.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: References,  Up: Top
-
-Appendix C GNU Free Documentation License
-*****************************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     `http://fsf.org/'
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.
-     We recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it
-     can be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You
-     accept the license if you copy, modify or distribute the work in a
-     way requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in
-     the notice that says that the Document is released under this
-     License.  If a section does not fit the above definition of
-     Secondary then it is not allowed to be designated as Invariant.
-     The Document may contain zero Invariant Sections.  If the Document
-     does not identify any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images
-     composed of pixels) generic paint programs or (for drawings) some
-     widely available drawing editor, and that is suitable for input to
-     text formatters or for automatic translation to a variety of
-     formats suitable for input to text formatters.  A copy made in an
-     otherwise Transparent file format whose markup, or absence of
-     markup, has been arranged to thwart or discourage subsequent
-     modification by readers is not Transparent.  An image format is
-     not Transparent if used for any substantial amount of text.  A
-     copy that is not "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and
-     standard-conforming simple HTML, PostScript or PDF designed for
-     human modification.  Examples of transparent image formats include
-     PNG, XCF and JPG.  Opaque formats include proprietary formats that
-     can be read and edited only by proprietary word processors, SGML or
-     XML for which the DTD and/or processing tools are not generally
-     available, and the machine-generated HTML, PostScript or PDF
-     produced by some word processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow
-     the conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the
-     title equally prominent and visible.  You may add other material
-     on the covers in addition.  Copying with changes limited to the
-     covers, as long as they preserve the title of the Document and
-     satisfy these conditions, can be treated as verbatim copying in
-     other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a
-     machine-readable Transparent copy along with each Opaque copy, or
-     state in or with each Opaque copy a computer-network location from
-     which the general network-using public has access to download
-     using public-standard network protocols a complete Transparent
-     copy of the Document, free of added material.  If you use the
-     latter option, you must take reasonably prudent steps, when you
-     begin distribution of Opaque copies in quantity, to ensure that
-     this Transparent copy will remain thus accessible at the stated
-     location until at least one year after the last time you
-     distribute an Opaque copy (directly or through your agents or
-     retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of
-     copies, to give them a chance to provide you with an updated
-     version of the Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with
-     the Modified Version filling the role of the Document, thus
-     licensing distribution and modification of the Modified Version to
-     whoever possesses a copy of it.  In addition, you must do these
-     things in the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of
-          previous versions (which should, if there were any, be listed
-          in the History section of the Document).  You may use the
-          same title as a previous version if the original publisher of
-          that version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on
-          the Title Page.  If there is no section Entitled "History" in
-          the Document, create one stating the title, year, authors,
-          and publisher of the Document as given on its Title Page,
-          then add an item describing the Modified Version as stated in
-          the previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in
-          the "History" section.  You may omit a network location for a
-          work that was published at least four years before the
-          Document itself, or if the original publisher of the version
-          it refers to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the
-          section all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document,
-          unaltered in their text and in their titles.  Section numbers
-          or the equivalent are not considered part of the section
-          titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option
-     designate some or all of these sections as invariant.  To do this,
-     add their titles to the list of Invariant Sections in the Modified
-     Version's license notice.  These titles must be distinct from any
-     other section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end
-     of the list of Cover Texts in the Modified Version.  Only one
-     passage of Front-Cover Text and one of Back-Cover Text may be
-     added by (or through arrangements made by) any one entity.  If the
-     Document already includes a cover text for the same cover,
-     previously added by you or by arrangement made by the same entity
-     you are acting on behalf of, you may not add another; but you may
-     replace the old one, on explicit permission from the previous
-     publisher that added the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination
-     all of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the
-     documents in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow
-     this License in all other respects regarding verbatim copying of
-     that document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of
-     a storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly
-     and finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from
-     you under this License.  If your rights have been terminated and
-     not permanently reinstated, receipt of a copy of some or all of
-     the same material does not give you any rights to use it.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     `http://www.gnu.org/copyleft/'.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If
-     the Document does not specify a version number of this License,
-     you may choose any version ever published (not as a draft) by the
-     Free Software Foundation.  If the Document specifies that a proxy
-     can decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
- 11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts." line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License, to
-permit their use in free software.
-
-\1f
-File: gmp.info,  Node: Concept Index,  Next: Function Index,  Prev: GNU Free Documentation License,  Up: Top
-
-Concept Index
-*************
-
-\0\b[index\0\b]
-* Menu:
-
-* #include:                              Headers and Libraries.
-                                                              (line   6)
-* --build:                               Build Options.       (line  52)
-* --disable-fft:                         Build Options.       (line 317)
-* --disable-shared:                      Build Options.       (line  45)
-* --disable-static:                      Build Options.       (line  45)
-* --enable-alloca:                       Build Options.       (line 278)
-* --enable-assert:                       Build Options.       (line 327)
-* --enable-cxx:                          Build Options.       (line 230)
-* --enable-fat:                          Build Options.       (line 164)
-* --enable-mpbsd:                        Build Options.       (line 322)
-* --enable-profiling <1>:                Profiling.           (line   6)
-* --enable-profiling:                    Build Options.       (line 331)
-* --exec-prefix:                         Build Options.       (line  32)
-* --host:                                Build Options.       (line  66)
-* --prefix:                              Build Options.       (line  32)
-* -finstrument-functions:                Profiling.           (line  66)
-* 2exp functions:                        Efficiency.          (line  43)
-* 68000:                                 Notes for Particular Systems.
-                                                              (line  80)
-* 80x86:                                 Notes for Particular Systems.
-                                                              (line 126)
-* ABI <1>:                               Build Options.       (line 171)
-* ABI:                                   ABI and ISA.         (line   6)
-* About this manual:                     Introduction to GMP. (line  58)
-* AC_CHECK_LIB:                          Autoconf.            (line  11)
-* AIX <1>:                               ABI and ISA.         (line 184)
-* AIX <2>:                               Notes for Particular Systems.
-                                                              (line   7)
-* AIX:                                   ABI and ISA.         (line 169)
-* Algorithms:                            Algorithms.          (line   6)
-* alloca:                                Build Options.       (line 278)
-* Allocation of memory:                  Custom Allocation.   (line   6)
-* AMD64:                                 ABI and ISA.         (line  44)
-* Anonymous FTP of latest version:       Introduction to GMP. (line  38)
-* Application Binary Interface:          ABI and ISA.         (line   6)
-* Arithmetic functions <1>:              Float Arithmetic.    (line   6)
-* Arithmetic functions <2>:              Integer Arithmetic.  (line   6)
-* Arithmetic functions:                  Rational Arithmetic. (line   6)
-* ARM:                                   Notes for Particular Systems.
-                                                              (line  20)
-* Assembly cache handling:               Assembly Cache Handling.
-                                                              (line   6)
-* Assembly carry propagation:            Assembly Carry Propagation.
-                                                              (line   6)
-* Assembly code organisation:            Assembly Code Organisation.
-                                                              (line   6)
-* Assembly coding:                       Assembly Coding.     (line   6)
-* Assembly floating Point:               Assembly Floating Point.
-                                                              (line   6)
-* Assembly loop unrolling:               Assembly Loop Unrolling.
-                                                              (line   6)
-* Assembly SIMD:                         Assembly SIMD Instructions.
-                                                              (line   6)
-* Assembly software pipelining:          Assembly Software Pipelining.
-                                                              (line   6)
-* Assembly writing guide:                Assembly Writing Guide.
-                                                              (line   6)
-* Assertion checking <1>:                Debugging.           (line  79)
-* Assertion checking:                    Build Options.       (line 327)
-* Assignment functions <1>:              Assigning Floats.    (line   6)
-* Assignment functions <2>:              Initializing Rationals.
-                                                              (line   6)
-* Assignment functions <3>:              Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Assignment functions <4>:              Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Assignment functions:                  Assigning Integers.  (line   6)
-* Autoconf:                              Autoconf.            (line   6)
-* Basics:                                GMP Basics.          (line   6)
-* Berkeley MP compatible functions <1>:  Build Options.       (line 322)
-* Berkeley MP compatible functions:      BSD Compatible Functions.
-                                                              (line   6)
-* Binomial coefficient algorithm:        Binomial Coefficients Algorithm.
-                                                              (line   6)
-* Binomial coefficient functions:        Number Theoretic Functions.
-                                                              (line 100)
-* Binutils strip:                        Known Build Problems.
-                                                              (line  28)
-* Bit manipulation functions:            Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Bit scanning functions:                Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* Bit shift left:                        Integer Arithmetic.  (line  35)
-* Bit shift right:                       Integer Division.    (line  53)
-* Bits per limb:                         Useful Macros and Constants.
-                                                              (line   7)
-* BSD MP compatible functions <1>:       Build Options.       (line 322)
-* BSD MP compatible functions:           BSD Compatible Functions.
-                                                              (line   6)
-* Bug reporting:                         Reporting Bugs.      (line   6)
-* Build directory:                       Build Options.       (line  19)
-* Build notes for binary packaging:      Notes for Package Builds.
-                                                              (line   6)
-* Build notes for particular systems:    Notes for Particular Systems.
-                                                              (line   6)
-* Build options:                         Build Options.       (line   6)
-* Build problems known:                  Known Build Problems.
-                                                              (line   6)
-* Build system:                          Build Options.       (line  52)
-* Building GMP:                          Installing GMP.      (line   6)
-* Bus error:                             Debugging.           (line   7)
-* C compiler:                            Build Options.       (line 182)
-* C++ compiler:                          Build Options.       (line 254)
-* C++ interface:                         C++ Class Interface. (line   6)
-* C++ interface internals:               C++ Interface Internals.
-                                                              (line   6)
-* C++ istream input:                     C++ Formatted Input. (line   6)
-* C++ ostream output:                    C++ Formatted Output.
-                                                              (line   6)
-* C++ support:                           Build Options.       (line 230)
-* CC:                                    Build Options.       (line 182)
-* CC_FOR_BUILD:                          Build Options.       (line 217)
-* CFLAGS:                                Build Options.       (line 182)
-* Checker:                               Debugging.           (line 115)
-* checkergcc:                            Debugging.           (line 122)
-* Code organisation:                     Assembly Code Organisation.
-                                                              (line   6)
-* Compaq C++:                            Notes for Particular Systems.
-                                                              (line  25)
-* Comparison functions <1>:              Integer Comparisons. (line   6)
-* Comparison functions <2>:              Comparing Rationals. (line   6)
-* Comparison functions:                  Float Comparison.    (line   6)
-* Compatibility with older versions:     Compatibility with older versions.
-                                                              (line   6)
-* Conditions for copying GNU MP:         Copying.             (line   6)
-* Configuring GMP:                       Installing GMP.      (line   6)
-* Congruence algorithm:                  Exact Remainder.     (line  29)
-* Congruence functions:                  Integer Division.    (line 124)
-* Constants:                             Useful Macros and Constants.
-                                                              (line   6)
-* Contributors:                          Contributors.        (line   6)
-* Conventions for parameters:            Parameter Conventions.
-                                                              (line   6)
-* Conventions for variables:             Variable Conventions.
-                                                              (line   6)
-* Conversion functions <1>:              Converting Integers. (line   6)
-* Conversion functions <2>:              Converting Floats.   (line   6)
-* Conversion functions:                  Rational Conversions.
-                                                              (line   6)
-* Copying conditions:                    Copying.             (line   6)
-* CPPFLAGS:                              Build Options.       (line 208)
-* CPU types <1>:                         Introduction to GMP. (line  24)
-* CPU types:                             Build Options.       (line 108)
-* Cross compiling:                       Build Options.       (line  66)
-* Custom allocation:                     Custom Allocation.   (line   6)
-* CXX:                                   Build Options.       (line 254)
-* CXXFLAGS:                              Build Options.       (line 254)
-* Cygwin:                                Notes for Particular Systems.
-                                                              (line  43)
-* Darwin:                                Known Build Problems.
-                                                              (line  51)
-* Debugging:                             Debugging.           (line   6)
-* Demonstration programs:                Demonstration Programs.
-                                                              (line   6)
-* Digits in an integer:                  Miscellaneous Integer Functions.
-                                                              (line  23)
-* Divisibility algorithm:                Exact Remainder.     (line  29)
-* Divisibility functions:                Integer Division.    (line 124)
-* Divisibility testing:                  Efficiency.          (line  91)
-* Division algorithms:                   Division Algorithms. (line   6)
-* Division functions <1>:                Rational Arithmetic. (line  22)
-* Division functions <2>:                Integer Division.    (line   6)
-* Division functions:                    Float Arithmetic.    (line  33)
-* DJGPP <1>:                             Notes for Particular Systems.
-                                                              (line  43)
-* DJGPP:                                 Known Build Problems.
-                                                              (line  18)
-* DLLs:                                  Notes for Particular Systems.
-                                                              (line  56)
-* DocBook:                               Build Options.       (line 354)
-* Documentation formats:                 Build Options.       (line 347)
-* Documentation license:                 GNU Free Documentation License.
-                                                              (line   6)
-* DVI:                                   Build Options.       (line 350)
-* Efficiency:                            Efficiency.          (line   6)
-* Emacs:                                 Emacs.               (line   6)
-* Exact division functions:              Integer Division.    (line 102)
-* Exact remainder:                       Exact Remainder.     (line   6)
-* Example programs:                      Demonstration Programs.
-                                                              (line   6)
-* Exec prefix:                           Build Options.       (line  32)
-* Execution profiling <1>:               Profiling.           (line   6)
-* Execution profiling:                   Build Options.       (line 331)
-* Exponentiation functions <1>:          Integer Exponentiation.
-                                                              (line   6)
-* Exponentiation functions:              Float Arithmetic.    (line  41)
-* Export:                                Integer Import and Export.
-                                                              (line  45)
-* Expression parsing demo:               Demonstration Programs.
-                                                              (line  18)
-* Extended GCD:                          Number Theoretic Functions.
-                                                              (line  45)
-* Factor removal functions:              Number Theoretic Functions.
-                                                              (line  90)
-* Factorial algorithm:                   Factorial Algorithm. (line   6)
-* Factorial functions:                   Number Theoretic Functions.
-                                                              (line  95)
-* Factorization demo:                    Demonstration Programs.
-                                                              (line  25)
-* Fast Fourier Transform:                FFT Multiplication.  (line   6)
-* Fat binary:                            Build Options.       (line 164)
-* FFT multiplication <1>:                FFT Multiplication.  (line   6)
-* FFT multiplication:                    Build Options.       (line 317)
-* Fibonacci number algorithm:            Fibonacci Numbers Algorithm.
-                                                              (line   6)
-* Fibonacci sequence functions:          Number Theoretic Functions.
-                                                              (line 108)
-* Float arithmetic functions:            Float Arithmetic.    (line   6)
-* Float assignment functions <1>:        Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Float assignment functions:            Assigning Floats.    (line   6)
-* Float comparison functions:            Float Comparison.    (line   6)
-* Float conversion functions:            Converting Floats.   (line   6)
-* Float functions:                       Floating-point Functions.
-                                                              (line   6)
-* Float initialization functions <1>:    Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Float initialization functions:        Initializing Floats. (line   6)
-* Float input and output functions:      I/O of Floats.       (line   6)
-* Float internals:                       Float Internals.     (line   6)
-* Float miscellaneous functions:         Miscellaneous Float Functions.
-                                                              (line   6)
-* Float random number functions:         Miscellaneous Float Functions.
-                                                              (line  27)
-* Float rounding functions:              Miscellaneous Float Functions.
-                                                              (line   9)
-* Float sign tests:                      Float Comparison.    (line  33)
-* Floating point mode:                   Notes for Particular Systems.
-                                                              (line  34)
-* Floating-point functions:              Floating-point Functions.
-                                                              (line   6)
-* Floating-point number:                 Nomenclature and Types.
-                                                              (line  21)
-* fnccheck:                              Profiling.           (line  77)
-* Formatted input:                       Formatted Input.     (line   6)
-* Formatted output:                      Formatted Output.    (line   6)
-* Free Documentation License:            GNU Free Documentation License.
-                                                              (line   6)
-* frexp <1>:                             Converting Floats.   (line  23)
-* frexp:                                 Converting Integers. (line  42)
-* FTP of latest version:                 Introduction to GMP. (line  38)
-* Function classes:                      Function Classes.    (line   6)
-* FunctionCheck:                         Profiling.           (line  77)
-* GCC Checker:                           Debugging.           (line 115)
-* GCD algorithms:                        Greatest Common Divisor Algorithms.
-                                                              (line   6)
-* GCD extended:                          Number Theoretic Functions.
-                                                              (line  45)
-* GCD functions:                         Number Theoretic Functions.
-                                                              (line  30)
-* GDB:                                   Debugging.           (line  58)
-* Generic C:                             Build Options.       (line 153)
-* GMP Perl module:                       Demonstration Programs.
-                                                              (line  35)
-* GMP version number:                    Useful Macros and Constants.
-                                                              (line  12)
-* gmp.h:                                 Headers and Libraries.
-                                                              (line   6)
-* gmpxx.h:                               C++ Interface General.
-                                                              (line   8)
-* GNU Debugger:                          Debugging.           (line  58)
-* GNU Free Documentation License:        GNU Free Documentation License.
-                                                              (line   6)
-* GNU strip:                             Known Build Problems.
-                                                              (line  28)
-* gprof:                                 Profiling.           (line  41)
-* Greatest common divisor algorithms:    Greatest Common Divisor Algorithms.
-                                                              (line   6)
-* Greatest common divisor functions:     Number Theoretic Functions.
-                                                              (line  30)
-* Hardware floating point mode:          Notes for Particular Systems.
-                                                              (line  34)
-* Headers:                               Headers and Libraries.
-                                                              (line   6)
-* Heap problems:                         Debugging.           (line  24)
-* Home page:                             Introduction to GMP. (line  34)
-* Host system:                           Build Options.       (line  66)
-* HP-UX:                                 ABI and ISA.         (line 107)
-* HPPA:                                  ABI and ISA.         (line  68)
-* I/O functions <1>:                     I/O of Integers.     (line   6)
-* I/O functions <2>:                     I/O of Rationals.    (line   6)
-* I/O functions:                         I/O of Floats.       (line   6)
-* i386:                                  Notes for Particular Systems.
-                                                              (line 126)
-* IA-64:                                 ABI and ISA.         (line 107)
-* Import:                                Integer Import and Export.
-                                                              (line  11)
-* In-place operations:                   Efficiency.          (line  57)
-* Include files:                         Headers and Libraries.
-                                                              (line   6)
-* info-lookup-symbol:                    Emacs.               (line   6)
-* Initialization functions <1>:          Initializing Integers.
-                                                              (line   6)
-* Initialization functions <2>:          Initializing Rationals.
-                                                              (line   6)
-* Initialization functions <3>:          Random State Initialization.
-                                                              (line   6)
-* Initialization functions <4>:          Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Initialization functions <5>:          Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Initialization functions:              Initializing Floats. (line   6)
-* Initializing and clearing:             Efficiency.          (line  21)
-* Input functions <1>:                   I/O of Integers.     (line   6)
-* Input functions <2>:                   I/O of Rationals.    (line   6)
-* Input functions <3>:                   I/O of Floats.       (line   6)
-* Input functions:                       Formatted Input Functions.
-                                                              (line   6)
-* Install prefix:                        Build Options.       (line  32)
-* Installing GMP:                        Installing GMP.      (line   6)
-* Instruction Set Architecture:          ABI and ISA.         (line   6)
-* instrument-functions:                  Profiling.           (line  66)
-* Integer:                               Nomenclature and Types.
-                                                              (line   6)
-* Integer arithmetic functions:          Integer Arithmetic.  (line   6)
-* Integer assignment functions <1>:      Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Integer assignment functions:          Assigning Integers.  (line   6)
-* Integer bit manipulation functions:    Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Integer comparison functions:          Integer Comparisons. (line   6)
-* Integer conversion functions:          Converting Integers. (line   6)
-* Integer division functions:            Integer Division.    (line   6)
-* Integer exponentiation functions:      Integer Exponentiation.
-                                                              (line   6)
-* Integer export:                        Integer Import and Export.
-                                                              (line  45)
-* Integer functions:                     Integer Functions.   (line   6)
-* Integer import:                        Integer Import and Export.
-                                                              (line  11)
-* Integer initialization functions <1>:  Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Integer initialization functions:      Initializing Integers.
-                                                              (line   6)
-* Integer input and output functions:    I/O of Integers.     (line   6)
-* Integer internals:                     Integer Internals.   (line   6)
-* Integer logical functions:             Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Integer miscellaneous functions:       Miscellaneous Integer Functions.
-                                                              (line   6)
-* Integer random number functions:       Integer Random Numbers.
-                                                              (line   6)
-* Integer root functions:                Integer Roots.       (line   6)
-* Integer sign tests:                    Integer Comparisons. (line  28)
-* Integer special functions:             Integer Special Functions.
-                                                              (line   6)
-* Interix:                               Notes for Particular Systems.
-                                                              (line  51)
-* Internals:                             Internals.           (line   6)
-* Introduction:                          Introduction to GMP. (line   6)
-* Inverse modulo functions:              Number Theoretic Functions.
-                                                              (line  60)
-* IRIX <1>:                              Known Build Problems.
-                                                              (line  38)
-* IRIX:                                  ABI and ISA.         (line 132)
-* ISA:                                   ABI and ISA.         (line   6)
-* istream input:                         C++ Formatted Input. (line   6)
-* Jacobi symbol algorithm:               Jacobi Symbol.       (line   6)
-* Jacobi symbol functions:               Number Theoretic Functions.
-                                                              (line  66)
-* Karatsuba multiplication:              Karatsuba Multiplication.
-                                                              (line   6)
-* Karatsuba square root algorithm:       Square Root Algorithm.
-                                                              (line   6)
-* Kronecker symbol functions:            Number Theoretic Functions.
-                                                              (line  78)
-* Language bindings:                     Language Bindings.   (line   6)
-* Latest version of GMP:                 Introduction to GMP. (line  38)
-* LCM functions:                         Number Theoretic Functions.
-                                                              (line  55)
-* Least common multiple functions:       Number Theoretic Functions.
-                                                              (line  55)
-* Legendre symbol functions:             Number Theoretic Functions.
-                                                              (line  69)
-* libgmp:                                Headers and Libraries.
-                                                              (line  22)
-* libgmpxx:                              Headers and Libraries.
-                                                              (line  27)
-* Libraries:                             Headers and Libraries.
-                                                              (line  22)
-* Libtool:                               Headers and Libraries.
-                                                              (line  33)
-* Libtool versioning:                    Notes for Package Builds.
-                                                              (line   9)
-* License conditions:                    Copying.             (line   6)
-* Limb:                                  Nomenclature and Types.
-                                                              (line  31)
-* Limb size:                             Useful Macros and Constants.
-                                                              (line   7)
-* Linear congruential algorithm:         Random Number Algorithms.
-                                                              (line  25)
-* Linear congruential random numbers:    Random State Initialization.
-                                                              (line  32)
-* Linking:                               Headers and Libraries.
-                                                              (line  22)
-* Logical functions:                     Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Low-level functions:                   Low-level Functions. (line   6)
-* Lucas number algorithm:                Lucas Numbers Algorithm.
-                                                              (line   6)
-* Lucas number functions:                Number Theoretic Functions.
-                                                              (line 119)
-* MacOS X:                               Known Build Problems.
-                                                              (line  51)
-* Mailing lists:                         Introduction to GMP. (line  45)
-* Malloc debugger:                       Debugging.           (line  30)
-* Malloc problems:                       Debugging.           (line  24)
-* Memory allocation:                     Custom Allocation.   (line   6)
-* Memory management:                     Memory Management.   (line   6)
-* Mersenne twister algorithm:            Random Number Algorithms.
-                                                              (line  17)
-* Mersenne twister random numbers:       Random State Initialization.
-                                                              (line  13)
-* MINGW:                                 Notes for Particular Systems.
-                                                              (line  43)
-* MIPS:                                  ABI and ISA.         (line 132)
-* Miscellaneous float functions:         Miscellaneous Float Functions.
-                                                              (line   6)
-* Miscellaneous integer functions:       Miscellaneous Integer Functions.
-                                                              (line   6)
-* MMX:                                   Notes for Particular Systems.
-                                                              (line 132)
-* Modular inverse functions:             Number Theoretic Functions.
-                                                              (line  60)
-* Most significant bit:                  Miscellaneous Integer Functions.
-                                                              (line  34)
-* mp.h:                                  BSD Compatible Functions.
-                                                              (line  21)
-* MPN_PATH:                              Build Options.       (line 335)
-* MS Windows:                            Notes for Particular Systems.
-                                                              (line  56)
-* MS-DOS:                                Notes for Particular Systems.
-                                                              (line  43)
-* Multi-threading:                       Reentrancy.          (line   6)
-* Multiplication algorithms:             Multiplication Algorithms.
-                                                              (line   6)
-* Nails:                                 Low-level Functions. (line 478)
-* Native compilation:                    Build Options.       (line  52)
-* NeXT:                                  Known Build Problems.
-                                                              (line  57)
-* Next prime function:                   Number Theoretic Functions.
-                                                              (line  23)
-* Nomenclature:                          Nomenclature and Types.
-                                                              (line   6)
-* Non-Unix systems:                      Build Options.       (line  11)
-* Nth root algorithm:                    Nth Root Algorithm.  (line   6)
-* Number sequences:                      Efficiency.          (line 147)
-* Number theoretic functions:            Number Theoretic Functions.
-                                                              (line   6)
-* Numerator and denominator:             Applying Integer Functions.
-                                                              (line   6)
-* obstack output:                        Formatted Output Functions.
-                                                              (line  81)
-* OpenBSD:                               Notes for Particular Systems.
-                                                              (line  86)
-* Optimizing performance:                Performance optimization.
-                                                              (line   6)
-* ostream output:                        C++ Formatted Output.
-                                                              (line   6)
-* Other languages:                       Language Bindings.   (line   6)
-* Output functions <1>:                  I/O of Floats.       (line   6)
-* Output functions <2>:                  I/O of Rationals.    (line   6)
-* Output functions <3>:                  Formatted Output Functions.
-                                                              (line   6)
-* Output functions:                      I/O of Integers.     (line   6)
-* Packaged builds:                       Notes for Package Builds.
-                                                              (line   6)
-* Parameter conventions:                 Parameter Conventions.
-                                                              (line   6)
-* Parsing expressions demo:              Demonstration Programs.
-                                                              (line  21)
-* Particular systems:                    Notes for Particular Systems.
-                                                              (line   6)
-* Past GMP versions:                     Compatibility with older versions.
-                                                              (line   6)
-* PDF:                                   Build Options.       (line 350)
-* Perfect power algorithm:               Perfect Power Algorithm.
-                                                              (line   6)
-* Perfect power functions:               Integer Roots.       (line  27)
-* Perfect square algorithm:              Perfect Square Algorithm.
-                                                              (line   6)
-* Perfect square functions:              Integer Roots.       (line  36)
-* perl:                                  Demonstration Programs.
-                                                              (line  35)
-* Perl module:                           Demonstration Programs.
-                                                              (line  35)
-* Postscript:                            Build Options.       (line 350)
-* Power/PowerPC <1>:                     Known Build Problems.
-                                                              (line  63)
-* Power/PowerPC:                         Notes for Particular Systems.
-                                                              (line  92)
-* Powering algorithms:                   Powering Algorithms. (line   6)
-* Powering functions <1>:                Float Arithmetic.    (line  41)
-* Powering functions:                    Integer Exponentiation.
-                                                              (line   6)
-* PowerPC:                               ABI and ISA.         (line 167)
-* Precision of floats:                   Floating-point Functions.
-                                                              (line   6)
-* Precision of hardware floating point:  Notes for Particular Systems.
-                                                              (line  34)
-* Prefix:                                Build Options.       (line  32)
-* Prime testing algorithms:              Prime Testing Algorithm.
-                                                              (line   6)
-* Prime testing functions:               Number Theoretic Functions.
-                                                              (line   7)
-* printf formatted output:               Formatted Output.    (line   6)
-* Probable prime testing functions:      Number Theoretic Functions.
-                                                              (line   7)
-* prof:                                  Profiling.           (line  24)
-* Profiling:                             Profiling.           (line   6)
-* Radix conversion algorithms:           Radix Conversion Algorithms.
-                                                              (line   6)
-* Random number algorithms:              Random Number Algorithms.
-                                                              (line   6)
-* Random number functions <1>:           Integer Random Numbers.
-                                                              (line   6)
-* Random number functions <2>:           Miscellaneous Float Functions.
-                                                              (line  27)
-* Random number functions:               Random Number Functions.
-                                                              (line   6)
-* Random number seeding:                 Random State Seeding.
-                                                              (line   6)
-* Random number state:                   Random State Initialization.
-                                                              (line   6)
-* Random state:                          Nomenclature and Types.
-                                                              (line  46)
-* Rational arithmetic:                   Efficiency.          (line 113)
-* Rational arithmetic functions:         Rational Arithmetic. (line   6)
-* Rational assignment functions:         Initializing Rationals.
-                                                              (line   6)
-* Rational comparison functions:         Comparing Rationals. (line   6)
-* Rational conversion functions:         Rational Conversions.
-                                                              (line   6)
-* Rational initialization functions:     Initializing Rationals.
-                                                              (line   6)
-* Rational input and output functions:   I/O of Rationals.    (line   6)
-* Rational internals:                    Rational Internals.  (line   6)
-* Rational number:                       Nomenclature and Types.
-                                                              (line  16)
-* Rational number functions:             Rational Number Functions.
-                                                              (line   6)
-* Rational numerator and denominator:    Applying Integer Functions.
-                                                              (line   6)
-* Rational sign tests:                   Comparing Rationals. (line  27)
-* Raw output internals:                  Raw Output Internals.
-                                                              (line   6)
-* Reallocations:                         Efficiency.          (line  30)
-* Reentrancy:                            Reentrancy.          (line   6)
-* References:                            References.          (line   6)
-* Remove factor functions:               Number Theoretic Functions.
-                                                              (line  90)
-* Reporting bugs:                        Reporting Bugs.      (line   6)
-* Root extraction algorithm:             Nth Root Algorithm.  (line   6)
-* Root extraction algorithms:            Root Extraction Algorithms.
-                                                              (line   6)
-* Root extraction functions <1>:         Float Arithmetic.    (line  37)
-* Root extraction functions:             Integer Roots.       (line   6)
-* Root testing functions:                Integer Roots.       (line  36)
-* Rounding functions:                    Miscellaneous Float Functions.
-                                                              (line   9)
-* Sample programs:                       Demonstration Programs.
-                                                              (line   6)
-* Scan bit functions:                    Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* scanf formatted input:                 Formatted Input.     (line   6)
-* SCO:                                   Known Build Problems.
-                                                              (line  38)
-* Seeding random numbers:                Random State Seeding.
-                                                              (line   6)
-* Segmentation violation:                Debugging.           (line   7)
-* Sequent Symmetry:                      Known Build Problems.
-                                                              (line  68)
-* Services for Unix:                     Notes for Particular Systems.
-                                                              (line  51)
-* Shared library versioning:             Notes for Package Builds.
-                                                              (line   9)
-* Sign tests <1>:                        Float Comparison.    (line  33)
-* Sign tests <2>:                        Integer Comparisons. (line  28)
-* Sign tests:                            Comparing Rationals. (line  27)
-* Size in digits:                        Miscellaneous Integer Functions.
-                                                              (line  23)
-* Small operands:                        Efficiency.          (line   7)
-* Solaris <1>:                           ABI and ISA.         (line 201)
-* Solaris:                               Known Build Problems.
-                                                              (line  78)
-* Sparc:                                 Notes for Particular Systems.
-                                                              (line 108)
-* Sparc V9:                              ABI and ISA.         (line 201)
-* Special integer functions:             Integer Special Functions.
-                                                              (line   6)
-* Square root algorithm:                 Square Root Algorithm.
-                                                              (line   6)
-* SSE2:                                  Notes for Particular Systems.
-                                                              (line 132)
-* Stack backtrace:                       Debugging.           (line  50)
-* Stack overflow <1>:                    Debugging.           (line   7)
-* Stack overflow:                        Build Options.       (line 278)
-* Static linking:                        Efficiency.          (line  14)
-* stdarg.h:                              Headers and Libraries.
-                                                              (line  17)
-* stdio.h:                               Headers and Libraries.
-                                                              (line  11)
-* Stripped libraries:                    Known Build Problems.
-                                                              (line  28)
-* Sun:                                   ABI and ISA.         (line 201)
-* SunOS:                                 Notes for Particular Systems.
-                                                              (line 120)
-* Systems:                               Notes for Particular Systems.
-                                                              (line   6)
-* Temporary memory:                      Build Options.       (line 278)
-* Texinfo:                               Build Options.       (line 347)
-* Text input/output:                     Efficiency.          (line 153)
-* Thread safety:                         Reentrancy.          (line   6)
-* Toom multiplication <1>:               Other Multiplication.
-                                                              (line   6)
-* Toom multiplication <2>:               Toom 4-Way Multiplication.
-                                                              (line   6)
-* Toom multiplication:                   Toom 3-Way Multiplication.
-                                                              (line   6)
-* Types:                                 Nomenclature and Types.
-                                                              (line   6)
-* ui and si functions:                   Efficiency.          (line  50)
-* Unbalanced multiplication:             Unbalanced Multiplication.
-                                                              (line   6)
-* Upward compatibility:                  Compatibility with older versions.
-                                                              (line   6)
-* Useful macros and constants:           Useful Macros and Constants.
-                                                              (line   6)
-* User-defined precision:                Floating-point Functions.
-                                                              (line   6)
-* Valgrind:                              Debugging.           (line 130)
-* Variable conventions:                  Variable Conventions.
-                                                              (line   6)
-* Version number:                        Useful Macros and Constants.
-                                                              (line  12)
-* Web page:                              Introduction to GMP. (line  34)
-* Windows:                               Notes for Particular Systems.
-                                                              (line  56)
-* x86:                                   Notes for Particular Systems.
-                                                              (line 126)
-* x87:                                   Notes for Particular Systems.
-                                                              (line  34)
-* XML:                                   Build Options.       (line 354)
-
-\1f
-File: gmp.info,  Node: Function Index,  Prev: Concept Index,  Up: Top
-
-Function and Type Index
-***********************
-
-\0\b[index\0\b]
-* Menu:
-
-* __GMP_CC:                              Useful Macros and Constants.
-                                                              (line  23)
-* __GMP_CFLAGS:                          Useful Macros and Constants.
-                                                              (line  24)
-* __GNU_MP_VERSION:                      Useful Macros and Constants.
-                                                              (line  10)
-* __GNU_MP_VERSION_MINOR:                Useful Macros and Constants.
-                                                              (line  11)
-* __GNU_MP_VERSION_PATCHLEVEL:           Useful Macros and Constants.
-                                                              (line  12)
-* _mpz_realloc:                          Integer Special Functions.
-                                                              (line  51)
-* abs <1>:                               C++ Interface Rationals.
-                                                              (line  43)
-* abs <2>:                               C++ Interface Integers.
-                                                              (line  42)
-* abs:                                   C++ Interface Floats.
-                                                              (line  70)
-* ceil:                                  C++ Interface Floats.
-                                                              (line  71)
-* cmp <1>:                               C++ Interface Floats.
-                                                              (line  72)
-* cmp <2>:                               C++ Interface Rationals.
-                                                              (line  44)
-* cmp <3>:                               C++ Interface Integers.
-                                                              (line  44)
-* cmp:                                   C++ Interface Rationals.
-                                                              (line  45)
-* floor:                                 C++ Interface Floats.
-                                                              (line  80)
-* gcd:                                   BSD Compatible Functions.
-                                                              (line  82)
-* gmp_asprintf:                          Formatted Output Functions.
-                                                              (line  65)
-* gmp_errno:                             Random State Initialization.
-                                                              (line  55)
-* GMP_ERROR_INVALID_ARGUMENT:            Random State Initialization.
-                                                              (line  55)
-* GMP_ERROR_UNSUPPORTED_ARGUMENT:        Random State Initialization.
-                                                              (line  55)
-* gmp_fprintf:                           Formatted Output Functions.
-                                                              (line  29)
-* gmp_fscanf:                            Formatted Input Functions.
-                                                              (line  25)
-* GMP_LIMB_BITS:                         Low-level Functions. (line 508)
-* GMP_NAIL_BITS:                         Low-level Functions. (line 506)
-* GMP_NAIL_MASK:                         Low-level Functions. (line 516)
-* GMP_NUMB_BITS:                         Low-level Functions. (line 507)
-* GMP_NUMB_MASK:                         Low-level Functions. (line 517)
-* GMP_NUMB_MAX:                          Low-level Functions. (line 525)
-* gmp_obstack_printf:                    Formatted Output Functions.
-                                                              (line  79)
-* gmp_obstack_vprintf:                   Formatted Output Functions.
-                                                              (line  81)
-* gmp_printf:                            Formatted Output Functions.
-                                                              (line  24)
-* GMP_RAND_ALG_DEFAULT:                  Random State Initialization.
-                                                              (line  49)
-* GMP_RAND_ALG_LC:                       Random State Initialization.
-                                                              (line  49)
-* gmp_randclass:                         C++ Interface Random Numbers.
-                                                              (line   7)
-* gmp_randclass::get_f:                  C++ Interface Random Numbers.
-                                                              (line  45)
-* gmp_randclass::get_z_bits:             C++ Interface Random Numbers.
-                                                              (line  39)
-* gmp_randclass::get_z_range:            C++ Interface Random Numbers.
-                                                              (line  42)
-* gmp_randclass::gmp_randclass:          C++ Interface Random Numbers.
-                                                              (line  13)
-* gmp_randclass::seed:                   C++ Interface Random Numbers.
-                                                              (line  33)
-* gmp_randclear:                         Random State Initialization.
-                                                              (line  62)
-* gmp_randinit:                          Random State Initialization.
-                                                              (line  47)
-* gmp_randinit_default:                  Random State Initialization.
-                                                              (line   7)
-* gmp_randinit_lc_2exp:                  Random State Initialization.
-                                                              (line  18)
-* gmp_randinit_lc_2exp_size:             Random State Initialization.
-                                                              (line  32)
-* gmp_randinit_mt:                       Random State Initialization.
-                                                              (line  13)
-* gmp_randinit_set:                      Random State Initialization.
-                                                              (line  43)
-* gmp_randseed:                          Random State Seeding.
-                                                              (line   7)
-* gmp_randseed_ui:                       Random State Seeding.
-                                                              (line   9)
-* gmp_randstate_t:                       Nomenclature and Types.
-                                                              (line  46)
-* gmp_scanf:                             Formatted Input Functions.
-                                                              (line  21)
-* gmp_snprintf:                          Formatted Output Functions.
-                                                              (line  46)
-* gmp_sprintf:                           Formatted Output Functions.
-                                                              (line  34)
-* gmp_sscanf:                            Formatted Input Functions.
-                                                              (line  29)
-* gmp_urandomb_ui:                       Random State Miscellaneous.
-                                                              (line   8)
-* gmp_urandomm_ui:                       Random State Miscellaneous.
-                                                              (line  14)
-* gmp_vasprintf:                         Formatted Output Functions.
-                                                              (line  66)
-* gmp_version:                           Useful Macros and Constants.
-                                                              (line  18)
-* gmp_vfprintf:                          Formatted Output Functions.
-                                                              (line  30)
-* gmp_vfscanf:                           Formatted Input Functions.
-                                                              (line  26)
-* gmp_vprintf:                           Formatted Output Functions.
-                                                              (line  25)
-* gmp_vscanf:                            Formatted Input Functions.
-                                                              (line  22)
-* gmp_vsnprintf:                         Formatted Output Functions.
-                                                              (line  48)
-* gmp_vsprintf:                          Formatted Output Functions.
-                                                              (line  35)
-* gmp_vsscanf:                           Formatted Input Functions.
-                                                              (line  31)
-* hypot:                                 C++ Interface Floats.
-                                                              (line  81)
-* itom:                                  BSD Compatible Functions.
-                                                              (line  29)
-* madd:                                  BSD Compatible Functions.
-                                                              (line  43)
-* mcmp:                                  BSD Compatible Functions.
-                                                              (line  85)
-* mdiv:                                  BSD Compatible Functions.
-                                                              (line  53)
-* mfree:                                 BSD Compatible Functions.
-                                                              (line 105)
-* min:                                   BSD Compatible Functions.
-                                                              (line  89)
-* MINT:                                  BSD Compatible Functions.
-                                                              (line  21)
-* mout:                                  BSD Compatible Functions.
-                                                              (line  94)
-* move:                                  BSD Compatible Functions.
-                                                              (line  39)
-* mp_bitcnt_t:                           Nomenclature and Types.
-                                                              (line  42)
-* mp_bits_per_limb:                      Useful Macros and Constants.
-                                                              (line   7)
-* mp_exp_t:                              Nomenclature and Types.
-                                                              (line  27)
-* mp_get_memory_functions:               Custom Allocation.   (line  93)
-* mp_limb_t:                             Nomenclature and Types.
-                                                              (line  31)
-* mp_set_memory_functions:               Custom Allocation.   (line  21)
-* mp_size_t:                             Nomenclature and Types.
-                                                              (line  37)
-* mpf_abs:                               Float Arithmetic.    (line  47)
-* mpf_add:                               Float Arithmetic.    (line   7)
-* mpf_add_ui:                            Float Arithmetic.    (line   9)
-* mpf_ceil:                              Miscellaneous Float Functions.
-                                                              (line   7)
-* mpf_class:                             C++ Interface General.
-                                                              (line  20)
-* mpf_class::fits_sint_p:                C++ Interface Floats.
-                                                              (line  74)
-* mpf_class::fits_slong_p:               C++ Interface Floats.
-                                                              (line  75)
-* mpf_class::fits_sshort_p:              C++ Interface Floats.
-                                                              (line  76)
-* mpf_class::fits_uint_p:                C++ Interface Floats.
-                                                              (line  77)
-* mpf_class::fits_ulong_p:               C++ Interface Floats.
-                                                              (line  78)
-* mpf_class::fits_ushort_p:              C++ Interface Floats.
-                                                              (line  79)
-* mpf_class::get_d:                      C++ Interface Floats.
-                                                              (line  82)
-* mpf_class::get_mpf_t:                  C++ Interface General.
-                                                              (line  66)
-* mpf_class::get_prec:                   C++ Interface Floats.
-                                                              (line 100)
-* mpf_class::get_si:                     C++ Interface Floats.
-                                                              (line  83)
-* mpf_class::get_str:                    C++ Interface Floats.
-                                                              (line  85)
-* mpf_class::get_ui:                     C++ Interface Floats.
-                                                              (line  86)
-* mpf_class::mpf_class:                  C++ Interface Floats.
-                                                              (line  38)
-* mpf_class::operator=:                  C++ Interface Floats.
-                                                              (line  47)
-* mpf_class::set_prec:                   C++ Interface Floats.
-                                                              (line 101)
-* mpf_class::set_prec_raw:               C++ Interface Floats.
-                                                              (line 102)
-* mpf_class::set_str:                    C++ Interface Floats.
-                                                              (line  88)
-* mpf_clear:                             Initializing Floats. (line  37)
-* mpf_clears:                            Initializing Floats. (line  41)
-* mpf_cmp:                               Float Comparison.    (line   7)
-* mpf_cmp_d:                             Float Comparison.    (line   8)
-* mpf_cmp_si:                            Float Comparison.    (line  10)
-* mpf_cmp_ui:                            Float Comparison.    (line   9)
-* mpf_div:                               Float Arithmetic.    (line  29)
-* mpf_div_2exp:                          Float Arithmetic.    (line  53)
-* mpf_div_ui:                            Float Arithmetic.    (line  33)
-* mpf_eq:                                Float Comparison.    (line  17)
-* mpf_fits_sint_p:                       Miscellaneous Float Functions.
-                                                              (line  20)
-* mpf_fits_slong_p:                      Miscellaneous Float Functions.
-                                                              (line  18)
-* mpf_fits_sshort_p:                     Miscellaneous Float Functions.
-                                                              (line  22)
-* mpf_fits_uint_p:                       Miscellaneous Float Functions.
-                                                              (line  19)
-* mpf_fits_ulong_p:                      Miscellaneous Float Functions.
-                                                              (line  17)
-* mpf_fits_ushort_p:                     Miscellaneous Float Functions.
-                                                              (line  21)
-* mpf_floor:                             Miscellaneous Float Functions.
-                                                              (line   8)
-* mpf_get_d:                             Converting Floats.   (line   7)
-* mpf_get_d_2exp:                        Converting Floats.   (line  16)
-* mpf_get_default_prec:                  Initializing Floats. (line  12)
-* mpf_get_prec:                          Initializing Floats. (line  62)
-* mpf_get_si:                            Converting Floats.   (line  27)
-* mpf_get_str:                           Converting Floats.   (line  37)
-* mpf_get_ui:                            Converting Floats.   (line  28)
-* mpf_init:                              Initializing Floats. (line  19)
-* mpf_init2:                             Initializing Floats. (line  26)
-* mpf_init_set:                          Simultaneous Float Init & Assign.
-                                                              (line  16)
-* mpf_init_set_d:                        Simultaneous Float Init & Assign.
-                                                              (line  19)
-* mpf_init_set_si:                       Simultaneous Float Init & Assign.
-                                                              (line  18)
-* mpf_init_set_str:                      Simultaneous Float Init & Assign.
-                                                              (line  25)
-* mpf_init_set_ui:                       Simultaneous Float Init & Assign.
-                                                              (line  17)
-* mpf_inits:                             Initializing Floats. (line  31)
-* mpf_inp_str:                           I/O of Floats.       (line  37)
-* mpf_integer_p:                         Miscellaneous Float Functions.
-                                                              (line  14)
-* mpf_mul:                               Float Arithmetic.    (line  19)
-* mpf_mul_2exp:                          Float Arithmetic.    (line  50)
-* mpf_mul_ui:                            Float Arithmetic.    (line  21)
-* mpf_neg:                               Float Arithmetic.    (line  44)
-* mpf_out_str:                           I/O of Floats.       (line  17)
-* mpf_pow_ui:                            Float Arithmetic.    (line  41)
-* mpf_random2:                           Miscellaneous Float Functions.
-                                                              (line  36)
-* mpf_reldiff:                           Float Comparison.    (line  29)
-* mpf_set:                               Assigning Floats.    (line  10)
-* mpf_set_d:                             Assigning Floats.    (line  13)
-* mpf_set_default_prec:                  Initializing Floats. (line   7)
-* mpf_set_prec:                          Initializing Floats. (line  65)
-* mpf_set_prec_raw:                      Initializing Floats. (line  72)
-* mpf_set_q:                             Assigning Floats.    (line  15)
-* mpf_set_si:                            Assigning Floats.    (line  12)
-* mpf_set_str:                           Assigning Floats.    (line  18)
-* mpf_set_ui:                            Assigning Floats.    (line  11)
-* mpf_set_z:                             Assigning Floats.    (line  14)
-* mpf_sgn:                               Float Comparison.    (line  33)
-* mpf_sqrt:                              Float Arithmetic.    (line  36)
-* mpf_sqrt_ui:                           Float Arithmetic.    (line  37)
-* mpf_sub:                               Float Arithmetic.    (line  12)
-* mpf_sub_ui:                            Float Arithmetic.    (line  16)
-* mpf_swap:                              Assigning Floats.    (line  52)
-* mpf_t:                                 Nomenclature and Types.
-                                                              (line  21)
-* mpf_trunc:                             Miscellaneous Float Functions.
-                                                              (line   9)
-* mpf_ui_div:                            Float Arithmetic.    (line  31)
-* mpf_ui_sub:                            Float Arithmetic.    (line  14)
-* mpf_urandomb:                          Miscellaneous Float Functions.
-                                                              (line  27)
-* mpn_add:                               Low-level Functions. (line  69)
-* mpn_add_1:                             Low-level Functions. (line  64)
-* mpn_add_n:                             Low-level Functions. (line  54)
-* mpn_addmul_1:                          Low-level Functions. (line 148)
-* mpn_and_n:                             Low-level Functions. (line 420)
-* mpn_andn_n:                            Low-level Functions. (line 435)
-* mpn_cmp:                               Low-level Functions. (line 284)
-* mpn_com:                               Low-level Functions. (line 460)
-* mpn_copyd:                             Low-level Functions. (line 469)
-* mpn_copyi:                             Low-level Functions. (line 465)
-* mpn_divexact_by3:                      Low-level Functions. (line 229)
-* mpn_divexact_by3c:                     Low-level Functions. (line 231)
-* mpn_divmod:                            Low-level Functions. (line 224)
-* mpn_divmod_1:                          Low-level Functions. (line 208)
-* mpn_divrem:                            Low-level Functions. (line 182)
-* mpn_divrem_1:                          Low-level Functions. (line 206)
-* mpn_gcd:                               Low-level Functions. (line 289)
-* mpn_gcd_1:                             Low-level Functions. (line 299)
-* mpn_gcdext:                            Low-level Functions. (line 305)
-* mpn_get_str:                           Low-level Functions. (line 346)
-* mpn_hamdist:                           Low-level Functions. (line 410)
-* mpn_ior_n:                             Low-level Functions. (line 425)
-* mpn_iorn_n:                            Low-level Functions. (line 440)
-* mpn_lshift:                            Low-level Functions. (line 260)
-* mpn_mod_1:                             Low-level Functions. (line 255)
-* mpn_mul:                               Low-level Functions. (line 114)
-* mpn_mul_1:                             Low-level Functions. (line 133)
-* mpn_mul_n:                             Low-level Functions. (line 103)
-* mpn_nand_n:                            Low-level Functions. (line 445)
-* mpn_neg:                               Low-level Functions. (line  98)
-* mpn_nior_n:                            Low-level Functions. (line 450)
-* mpn_perfect_square_p:                  Low-level Functions. (line 416)
-* mpn_popcount:                          Low-level Functions. (line 406)
-* mpn_random:                            Low-level Functions. (line 395)
-* mpn_random2:                           Low-level Functions. (line 396)
-* mpn_rshift:                            Low-level Functions. (line 272)
-* mpn_scan0:                             Low-level Functions. (line 380)
-* mpn_scan1:                             Low-level Functions. (line 388)
-* mpn_set_str:                           Low-level Functions. (line 361)
-* mpn_sqr:                               Low-level Functions. (line 125)
-* mpn_sqrtrem:                           Low-level Functions. (line 328)
-* mpn_sub:                               Low-level Functions. (line  90)
-* mpn_sub_1:                             Low-level Functions. (line  85)
-* mpn_sub_n:                             Low-level Functions. (line  76)
-* mpn_submul_1:                          Low-level Functions. (line 159)
-* mpn_tdiv_qr:                           Low-level Functions. (line 171)
-* mpn_xnor_n:                            Low-level Functions. (line 455)
-* mpn_xor_n:                             Low-level Functions. (line 430)
-* mpn_zero:                              Low-level Functions. (line 472)
-* mpq_abs:                               Rational Arithmetic. (line  31)
-* mpq_add:                               Rational Arithmetic. (line   7)
-* mpq_canonicalize:                      Rational Number Functions.
-                                                              (line  22)
-* mpq_class:                             C++ Interface General.
-                                                              (line  19)
-* mpq_class::canonicalize:               C++ Interface Rationals.
-                                                              (line  37)
-* mpq_class::get_d:                      C++ Interface Rationals.
-                                                              (line  46)
-* mpq_class::get_den:                    C++ Interface Rationals.
-                                                              (line  58)
-* mpq_class::get_den_mpz_t:              C++ Interface Rationals.
-                                                              (line  68)
-* mpq_class::get_mpq_t:                  C++ Interface General.
-                                                              (line  65)
-* mpq_class::get_num:                    C++ Interface Rationals.
-                                                              (line  57)
-* mpq_class::get_num_mpz_t:              C++ Interface Rationals.
-                                                              (line  67)
-* mpq_class::get_str:                    C++ Interface Rationals.
-                                                              (line  47)
-* mpq_class::mpq_class:                  C++ Interface Rationals.
-                                                              (line  22)
-* mpq_class::set_str:                    C++ Interface Rationals.
-                                                              (line  49)
-* mpq_clear:                             Initializing Rationals.
-                                                              (line  16)
-* mpq_clears:                            Initializing Rationals.
-                                                              (line  20)
-* mpq_cmp:                               Comparing Rationals. (line   7)
-* mpq_cmp_si:                            Comparing Rationals. (line  17)
-* mpq_cmp_ui:                            Comparing Rationals. (line  15)
-* mpq_denref:                            Applying Integer Functions.
-                                                              (line  18)
-* mpq_div:                               Rational Arithmetic. (line  22)
-* mpq_div_2exp:                          Rational Arithmetic. (line  25)
-* mpq_equal:                             Comparing Rationals. (line  33)
-* mpq_get_d:                             Rational Conversions.
-                                                              (line   7)
-* mpq_get_den:                           Applying Integer Functions.
-                                                              (line  24)
-* mpq_get_num:                           Applying Integer Functions.
-                                                              (line  23)
-* mpq_get_str:                           Rational Conversions.
-                                                              (line  22)
-* mpq_init:                              Initializing Rationals.
-                                                              (line   7)
-* mpq_inits:                             Initializing Rationals.
-                                                              (line  12)
-* mpq_inp_str:                           I/O of Rationals.    (line  23)
-* mpq_inv:                               Rational Arithmetic. (line  34)
-* mpq_mul:                               Rational Arithmetic. (line  15)
-* mpq_mul_2exp:                          Rational Arithmetic. (line  18)
-* mpq_neg:                               Rational Arithmetic. (line  28)
-* mpq_numref:                            Applying Integer Functions.
-                                                              (line  17)
-* mpq_out_str:                           I/O of Rationals.    (line  15)
-* mpq_set:                               Initializing Rationals.
-                                                              (line  24)
-* mpq_set_d:                             Rational Conversions.
-                                                              (line  17)
-* mpq_set_den:                           Applying Integer Functions.
-                                                              (line  26)
-* mpq_set_f:                             Rational Conversions.
-                                                              (line  18)
-* mpq_set_num:                           Applying Integer Functions.
-                                                              (line  25)
-* mpq_set_si:                            Initializing Rationals.
-                                                              (line  31)
-* mpq_set_str:                           Initializing Rationals.
-                                                              (line  36)
-* mpq_set_ui:                            Initializing Rationals.
-                                                              (line  29)
-* mpq_set_z:                             Initializing Rationals.
-                                                              (line  25)
-* mpq_sgn:                               Comparing Rationals. (line  27)
-* mpq_sub:                               Rational Arithmetic. (line  11)
-* mpq_swap:                              Initializing Rationals.
-                                                              (line  56)
-* mpq_t:                                 Nomenclature and Types.
-                                                              (line  16)
-* mpz_abs:                               Integer Arithmetic.  (line  42)
-* mpz_add:                               Integer Arithmetic.  (line   7)
-* mpz_add_ui:                            Integer Arithmetic.  (line   9)
-* mpz_addmul:                            Integer Arithmetic.  (line  25)
-* mpz_addmul_ui:                         Integer Arithmetic.  (line  27)
-* mpz_and:                               Integer Logic and Bit Fiddling.
-                                                              (line  11)
-* mpz_array_init:                        Integer Special Functions.
-                                                              (line  11)
-* mpz_bin_ui:                            Number Theoretic Functions.
-                                                              (line  98)
-* mpz_bin_uiui:                          Number Theoretic Functions.
-                                                              (line 100)
-* mpz_cdiv_q:                            Integer Division.    (line  13)
-* mpz_cdiv_q_2exp:                       Integer Division.    (line  24)
-* mpz_cdiv_q_ui:                         Integer Division.    (line  17)
-* mpz_cdiv_qr:                           Integer Division.    (line  15)
-* mpz_cdiv_qr_ui:                        Integer Division.    (line  21)
-* mpz_cdiv_r:                            Integer Division.    (line  14)
-* mpz_cdiv_r_2exp:                       Integer Division.    (line  25)
-* mpz_cdiv_r_ui:                         Integer Division.    (line  19)
-* mpz_cdiv_ui:                           Integer Division.    (line  23)
-* mpz_class:                             C++ Interface General.
-                                                              (line  18)
-* mpz_class::fits_sint_p:                C++ Interface Integers.
-                                                              (line  45)
-* mpz_class::fits_slong_p:               C++ Interface Integers.
-                                                              (line  46)
-* mpz_class::fits_sshort_p:              C++ Interface Integers.
-                                                              (line  47)
-* mpz_class::fits_uint_p:                C++ Interface Integers.
-                                                              (line  48)
-* mpz_class::fits_ulong_p:               C++ Interface Integers.
-                                                              (line  49)
-* mpz_class::fits_ushort_p:              C++ Interface Integers.
-                                                              (line  50)
-* mpz_class::get_d:                      C++ Interface Integers.
-                                                              (line  51)
-* mpz_class::get_mpz_t:                  C++ Interface General.
-                                                              (line  64)
-* mpz_class::get_si:                     C++ Interface Integers.
-                                                              (line  52)
-* mpz_class::get_str:                    C++ Interface Integers.
-                                                              (line  53)
-* mpz_class::get_ui:                     C++ Interface Integers.
-                                                              (line  54)
-* mpz_class::mpz_class:                  C++ Interface Integers.
-                                                              (line   7)
-* mpz_class::set_str:                    C++ Interface Integers.
-                                                              (line  56)
-* mpz_clear:                             Initializing Integers.
-                                                              (line  44)
-* mpz_clears:                            Initializing Integers.
-                                                              (line  48)
-* mpz_clrbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  54)
-* mpz_cmp:                               Integer Comparisons. (line   7)
-* mpz_cmp_d:                             Integer Comparisons. (line   8)
-* mpz_cmp_si:                            Integer Comparisons. (line   9)
-* mpz_cmp_ui:                            Integer Comparisons. (line  10)
-* mpz_cmpabs:                            Integer Comparisons. (line  18)
-* mpz_cmpabs_d:                          Integer Comparisons. (line  19)
-* mpz_cmpabs_ui:                         Integer Comparisons. (line  20)
-* mpz_com:                               Integer Logic and Bit Fiddling.
-                                                              (line  20)
-* mpz_combit:                            Integer Logic and Bit Fiddling.
-                                                              (line  57)
-* mpz_congruent_2exp_p:                  Integer Division.    (line 124)
-* mpz_congruent_p:                       Integer Division.    (line 121)
-* mpz_congruent_ui_p:                    Integer Division.    (line 123)
-* mpz_divexact:                          Integer Division.    (line 101)
-* mpz_divexact_ui:                       Integer Division.    (line 102)
-* mpz_divisible_2exp_p:                  Integer Division.    (line 112)
-* mpz_divisible_p:                       Integer Division.    (line 110)
-* mpz_divisible_ui_p:                    Integer Division.    (line 111)
-* mpz_even_p:                            Miscellaneous Integer Functions.
-                                                              (line  18)
-* mpz_export:                            Integer Import and Export.
-                                                              (line  45)
-* mpz_fac_ui:                            Number Theoretic Functions.
-                                                              (line  95)
-* mpz_fdiv_q:                            Integer Division.    (line  27)
-* mpz_fdiv_q_2exp:                       Integer Division.    (line  38)
-* mpz_fdiv_q_ui:                         Integer Division.    (line  31)
-* mpz_fdiv_qr:                           Integer Division.    (line  29)
-* mpz_fdiv_qr_ui:                        Integer Division.    (line  35)
-* mpz_fdiv_r:                            Integer Division.    (line  28)
-* mpz_fdiv_r_2exp:                       Integer Division.    (line  39)
-* mpz_fdiv_r_ui:                         Integer Division.    (line  33)
-* mpz_fdiv_ui:                           Integer Division.    (line  37)
-* mpz_fib2_ui:                           Number Theoretic Functions.
-                                                              (line 108)
-* mpz_fib_ui:                            Number Theoretic Functions.
-                                                              (line 106)
-* mpz_fits_sint_p:                       Miscellaneous Integer Functions.
-                                                              (line  10)
-* mpz_fits_slong_p:                      Miscellaneous Integer Functions.
-                                                              (line   8)
-* mpz_fits_sshort_p:                     Miscellaneous Integer Functions.
-                                                              (line  12)
-* mpz_fits_uint_p:                       Miscellaneous Integer Functions.
-                                                              (line   9)
-* mpz_fits_ulong_p:                      Miscellaneous Integer Functions.
-                                                              (line   7)
-* mpz_fits_ushort_p:                     Miscellaneous Integer Functions.
-                                                              (line  11)
-* mpz_gcd:                               Number Theoretic Functions.
-                                                              (line  30)
-* mpz_gcd_ui:                            Number Theoretic Functions.
-                                                              (line  35)
-* mpz_gcdext:                            Number Theoretic Functions.
-                                                              (line  45)
-* mpz_get_d:                             Converting Integers. (line  27)
-* mpz_get_d_2exp:                        Converting Integers. (line  35)
-* mpz_get_si:                            Converting Integers. (line  18)
-* mpz_get_str:                           Converting Integers. (line  46)
-* mpz_get_ui:                            Converting Integers. (line  11)
-* mpz_getlimbn:                          Integer Special Functions.
-                                                              (line  60)
-* mpz_hamdist:                           Integer Logic and Bit Fiddling.
-                                                              (line  29)
-* mpz_import:                            Integer Import and Export.
-                                                              (line  11)
-* mpz_init:                              Initializing Integers.
-                                                              (line  26)
-* mpz_init2:                             Initializing Integers.
-                                                              (line  33)
-* mpz_init_set:                          Simultaneous Integer Init & Assign.
-                                                              (line  27)
-* mpz_init_set_d:                        Simultaneous Integer Init & Assign.
-                                                              (line  30)
-* mpz_init_set_si:                       Simultaneous Integer Init & Assign.
-                                                              (line  29)
-* mpz_init_set_str:                      Simultaneous Integer Init & Assign.
-                                                              (line  34)
-* mpz_init_set_ui:                       Simultaneous Integer Init & Assign.
-                                                              (line  28)
-* mpz_inits:                             Initializing Integers.
-                                                              (line  29)
-* mpz_inp_raw:                           I/O of Integers.     (line  59)
-* mpz_inp_str:                           I/O of Integers.     (line  28)
-* mpz_invert:                            Number Theoretic Functions.
-                                                              (line  60)
-* mpz_ior:                               Integer Logic and Bit Fiddling.
-                                                              (line  14)
-* mpz_jacobi:                            Number Theoretic Functions.
-                                                              (line  66)
-* mpz_kronecker:                         Number Theoretic Functions.
-                                                              (line  74)
-* mpz_kronecker_si:                      Number Theoretic Functions.
-                                                              (line  75)
-* mpz_kronecker_ui:                      Number Theoretic Functions.
-                                                              (line  76)
-* mpz_lcm:                               Number Theoretic Functions.
-                                                              (line  54)
-* mpz_lcm_ui:                            Number Theoretic Functions.
-                                                              (line  55)
-* mpz_legendre:                          Number Theoretic Functions.
-                                                              (line  69)
-* mpz_lucnum2_ui:                        Number Theoretic Functions.
-                                                              (line 119)
-* mpz_lucnum_ui:                         Number Theoretic Functions.
-                                                              (line 117)
-* mpz_mod:                               Integer Division.    (line  91)
-* mpz_mod_ui:                            Integer Division.    (line  93)
-* mpz_mul:                               Integer Arithmetic.  (line  19)
-* mpz_mul_2exp:                          Integer Arithmetic.  (line  35)
-* mpz_mul_si:                            Integer Arithmetic.  (line  20)
-* mpz_mul_ui:                            Integer Arithmetic.  (line  22)
-* mpz_neg:                               Integer Arithmetic.  (line  39)
-* mpz_nextprime:                         Number Theoretic Functions.
-                                                              (line  23)
-* mpz_odd_p:                             Miscellaneous Integer Functions.
-                                                              (line  17)
-* mpz_out_raw:                           I/O of Integers.     (line  43)
-* mpz_out_str:                           I/O of Integers.     (line  16)
-* mpz_perfect_power_p:                   Integer Roots.       (line  27)
-* mpz_perfect_square_p:                  Integer Roots.       (line  36)
-* mpz_popcount:                          Integer Logic and Bit Fiddling.
-                                                              (line  23)
-* mpz_pow_ui:                            Integer Exponentiation.
-                                                              (line  31)
-* mpz_powm:                              Integer Exponentiation.
-                                                              (line   8)
-* mpz_powm_sec:                          Integer Exponentiation.
-                                                              (line  18)
-* mpz_powm_ui:                           Integer Exponentiation.
-                                                              (line  10)
-* mpz_probab_prime_p:                    Number Theoretic Functions.
-                                                              (line   7)
-* mpz_random:                            Integer Random Numbers.
-                                                              (line  42)
-* mpz_random2:                           Integer Random Numbers.
-                                                              (line  51)
-* mpz_realloc2:                          Initializing Integers.
-                                                              (line  52)
-* mpz_remove:                            Number Theoretic Functions.
-                                                              (line  90)
-* mpz_root:                              Integer Roots.       (line   7)
-* mpz_rootrem:                           Integer Roots.       (line  13)
-* mpz_rrandomb:                          Integer Random Numbers.
-                                                              (line  31)
-* mpz_scan0:                             Integer Logic and Bit Fiddling.
-                                                              (line  37)
-* mpz_scan1:                             Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* mpz_set:                               Assigning Integers.  (line  10)
-* mpz_set_d:                             Assigning Integers.  (line  13)
-* mpz_set_f:                             Assigning Integers.  (line  15)
-* mpz_set_q:                             Assigning Integers.  (line  14)
-* mpz_set_si:                            Assigning Integers.  (line  12)
-* mpz_set_str:                           Assigning Integers.  (line  21)
-* mpz_set_ui:                            Assigning Integers.  (line  11)
-* mpz_setbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  51)
-* mpz_sgn:                               Integer Comparisons. (line  28)
-* mpz_si_kronecker:                      Number Theoretic Functions.
-                                                              (line  77)
-* mpz_size:                              Integer Special Functions.
-                                                              (line  68)
-* mpz_sizeinbase:                        Miscellaneous Integer Functions.
-                                                              (line  23)
-* mpz_sqrt:                              Integer Roots.       (line  17)
-* mpz_sqrtrem:                           Integer Roots.       (line  20)
-* mpz_sub:                               Integer Arithmetic.  (line  12)
-* mpz_sub_ui:                            Integer Arithmetic.  (line  14)
-* mpz_submul:                            Integer Arithmetic.  (line  30)
-* mpz_submul_ui:                         Integer Arithmetic.  (line  32)
-* mpz_swap:                              Assigning Integers.  (line  37)
-* mpz_t:                                 Nomenclature and Types.
-                                                              (line   6)
-* mpz_tdiv_q:                            Integer Division.    (line  41)
-* mpz_tdiv_q_2exp:                       Integer Division.    (line  52)
-* mpz_tdiv_q_ui:                         Integer Division.    (line  45)
-* mpz_tdiv_qr:                           Integer Division.    (line  43)
-* mpz_tdiv_qr_ui:                        Integer Division.    (line  49)
-* mpz_tdiv_r:                            Integer Division.    (line  42)
-* mpz_tdiv_r_2exp:                       Integer Division.    (line  53)
-* mpz_tdiv_r_ui:                         Integer Division.    (line  47)
-* mpz_tdiv_ui:                           Integer Division.    (line  51)
-* mpz_tstbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  60)
-* mpz_ui_kronecker:                      Number Theoretic Functions.
-                                                              (line  78)
-* mpz_ui_pow_ui:                         Integer Exponentiation.
-                                                              (line  33)
-* mpz_ui_sub:                            Integer Arithmetic.  (line  16)
-* mpz_urandomb:                          Integer Random Numbers.
-                                                              (line  14)
-* mpz_urandomm:                          Integer Random Numbers.
-                                                              (line  23)
-* mpz_xor:                               Integer Logic and Bit Fiddling.
-                                                              (line  17)
-* msqrt:                                 BSD Compatible Functions.
-                                                              (line  63)
-* msub:                                  BSD Compatible Functions.
-                                                              (line  46)
-* mtox:                                  BSD Compatible Functions.
-                                                              (line  98)
-* mult:                                  BSD Compatible Functions.
-                                                              (line  49)
-* operator%:                             C++ Interface Integers.
-                                                              (line  30)
-* operator/:                             C++ Interface Integers.
-                                                              (line  29)
-* operator<<:                            C++ Formatted Output.
-                                                              (line  20)
-* operator>> <1>:                        C++ Formatted Input. (line  11)
-* operator>>:                            C++ Interface Rationals.
-                                                              (line  77)
-* pow:                                   BSD Compatible Functions.
-                                                              (line  71)
-* rpow:                                  BSD Compatible Functions.
-                                                              (line  79)
-* sdiv:                                  BSD Compatible Functions.
-                                                              (line  55)
-* sgn <1>:                               C++ Interface Rationals.
-                                                              (line  50)
-* sgn <2>:                               C++ Interface Integers.
-                                                              (line  57)
-* sgn:                                   C++ Interface Floats.
-                                                              (line  89)
-* sqrt <1>:                              C++ Interface Integers.
-                                                              (line  58)
-* sqrt:                                  C++ Interface Floats.
-                                                              (line  90)
-* trunc:                                 C++ Interface Floats.
-                                                              (line  91)
-* xtom:                                  BSD Compatible Functions.
-                                                              (line  34)
-
-
diff --git a/misc/builddeps/linux64/jpeg/bin/cjpeg b/misc/builddeps/linux64/jpeg/bin/cjpeg
deleted file mode 100755 (executable)
index 66b7f58..0000000
Binary files a/misc/builddeps/linux64/jpeg/bin/cjpeg and /dev/null differ
diff --git a/misc/builddeps/linux64/jpeg/bin/djpeg b/misc/builddeps/linux64/jpeg/bin/djpeg
deleted file mode 100755 (executable)
index 561ec38..0000000
Binary files a/misc/builddeps/linux64/jpeg/bin/djpeg and /dev/null differ
diff --git a/misc/builddeps/linux64/jpeg/bin/jpegtran b/misc/builddeps/linux64/jpeg/bin/jpegtran
deleted file mode 100755 (executable)
index ccdabd2..0000000
Binary files a/misc/builddeps/linux64/jpeg/bin/jpegtran and /dev/null differ
diff --git a/misc/builddeps/linux64/jpeg/bin/rdjpgcom b/misc/builddeps/linux64/jpeg/bin/rdjpgcom
deleted file mode 100755 (executable)
index eab09a2..0000000
Binary files a/misc/builddeps/linux64/jpeg/bin/rdjpgcom and /dev/null differ
diff --git a/misc/builddeps/linux64/jpeg/bin/wrjpgcom b/misc/builddeps/linux64/jpeg/bin/wrjpgcom
deleted file mode 100755 (executable)
index 7485c62..0000000
Binary files a/misc/builddeps/linux64/jpeg/bin/wrjpgcom and /dev/null differ
diff --git a/misc/builddeps/linux64/jpeg/include/jconfig.h b/misc/builddeps/linux64/jpeg/include/jconfig.h
deleted file mode 100644 (file)
index 966b1d5..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* jconfig.h.  Generated from jconfig.cfg by configure.  */
-/* jconfig.cfg --- source file edited by configure script */
-/* see jconfig.txt for explanations */
-
-#define HAVE_PROTOTYPES 1
-#define HAVE_UNSIGNED_CHAR 1
-#define HAVE_UNSIGNED_SHORT 1
-/* #undef void */
-/* #undef const */
-/* #undef CHAR_IS_UNSIGNED */
-#define HAVE_STDDEF_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_LOCALE_H 1
-/* #undef NEED_BSD_STRINGS */
-/* #undef NEED_SYS_TYPES_H */
-/* #undef NEED_FAR_POINTERS */
-/* #undef NEED_SHORT_EXTERNAL_NAMES */
-/* Define this if you get warnings about undefined structures. */
-/* #undef INCOMPLETE_TYPES_BROKEN */
-
-/* Define "boolean" as unsigned char, not int, on Windows systems. */
-#ifdef _WIN32
-#ifndef __RPCNDR_H__           /* don't conflict if rpcndr.h already read */
-typedef unsigned char boolean;
-#endif
-#define HAVE_BOOLEAN           /* prevent jmorecfg.h from redefining it */
-#endif
-
-#ifdef JPEG_INTERNALS
-
-/* #undef RIGHT_SHIFT_IS_UNSIGNED */
-#define INLINE __inline__
-/* These are for configuring the JPEG memory manager. */
-/* #undef DEFAULT_MAX_MEM */
-/* #undef NO_MKTEMP */
-
-#endif /* JPEG_INTERNALS */
-
-#ifdef JPEG_CJPEG_DJPEG
-
-#define BMP_SUPPORTED          /* BMP image file format */
-#define GIF_SUPPORTED          /* GIF image file format */
-#define PPM_SUPPORTED          /* PBMPLUS PPM/PGM image file format */
-/* #undef RLE_SUPPORTED */
-#define TARGA_SUPPORTED                /* Targa image file format */
-
-/* #undef TWO_FILE_COMMANDLINE */
-/* #undef NEED_SIGNAL_CATCHER */
-/* #undef DONT_USE_B_MODE */
-
-/* Define this if you want percent-done progress reports from cjpeg/djpeg. */
-/* #undef PROGRESS_REPORT */
-
-#endif /* JPEG_CJPEG_DJPEG */
diff --git a/misc/builddeps/linux64/jpeg/include/jerror.h b/misc/builddeps/linux64/jpeg/include/jerror.h
deleted file mode 100644 (file)
index 1cfb2b1..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * jerror.h
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * Modified 1997-2009 by Guido Vollbeding.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the error and message codes for the JPEG library.
- * Edit this file to add new codes, or to translate the message strings to
- * some other language.
- * A set of error-reporting macros are defined too.  Some applications using
- * the JPEG library may wish to include this file to get the error codes
- * and/or the macros.
- */
-
-/*
- * To define the enum list of message codes, include this file without
- * defining macro JMESSAGE.  To create a message string table, include it
- * again with a suitable JMESSAGE definition (see jerror.c for an example).
- */
-#ifndef JMESSAGE
-#ifndef JERROR_H
-/* First time through, define the enum list */
-#define JMAKE_ENUM_LIST
-#else
-/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
-#define JMESSAGE(code,string)
-#endif /* JERROR_H */
-#endif /* JMESSAGE */
-
-#ifdef JMAKE_ENUM_LIST
-
-typedef enum {
-
-#define JMESSAGE(code,string)  code ,
-
-#endif /* JMAKE_ENUM_LIST */
-
-JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */
-
-/* For maintenance convenience, list is alphabetical by message code name */
-JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
-JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
-JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
-JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS")
-JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request")
-JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range")
-JMESSAGE(JERR_BAD_DCTSIZE, "DCT scaled block size %dx%d not supported")
-JMESSAGE(JERR_BAD_DROP_SAMPLING,
-        "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c")
-JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition")
-JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace")
-JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace")
-JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length")
-JMESSAGE(JERR_BAD_LIB_VERSION,
-        "Wrong JPEG library version: library is %d, caller expects %d")
-JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan")
-JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d")
-JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d")
-JMESSAGE(JERR_BAD_PROGRESSION,
-        "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d")
-JMESSAGE(JERR_BAD_PROG_SCRIPT,
-        "Invalid progressive parameters at scan script entry %d")
-JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors")
-JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d")
-JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d")
-JMESSAGE(JERR_BAD_STRUCT_SIZE,
-        "JPEG parameter struct mismatch: library thinks size is %u, caller expects %u")
-JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access")
-JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small")
-JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here")
-JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet")
-JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d")
-JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request")
-JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d")
-JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x")
-JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d")
-JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d")
-JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)")
-JMESSAGE(JERR_EMS_READ, "Read from EMS failed")
-JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed")
-JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan")
-JMESSAGE(JERR_FILE_READ, "Input file read error")
-JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?")
-JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet")
-JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow")
-JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry")
-JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels")
-JMESSAGE(JERR_INPUT_EMPTY, "Empty input file")
-JMESSAGE(JERR_INPUT_EOF, "Premature end of input file")
-JMESSAGE(JERR_MISMATCHED_QUANT_TABLE,
-        "Cannot transcode due to multiple use of quantization table %d")
-JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data")
-JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change")
-JMESSAGE(JERR_NOTIMPL, "Not implemented yet")
-JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time")
-JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined")
-JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported")
-JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined")
-JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image")
-JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined")
-JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x")
-JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)")
-JMESSAGE(JERR_QUANT_COMPONENTS,
-        "Cannot quantize more than %d color components")
-JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors")
-JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors")
-JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers")
-JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker")
-JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x")
-JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers")
-JMESSAGE(JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF")
-JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s")
-JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file")
-JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file")
-JMESSAGE(JERR_TFILE_WRITE,
-        "Write failed on temporary file --- out of disk space?")
-JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines")
-JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x")
-JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up")
-JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation")
-JMESSAGE(JERR_XMS_READ, "Read from XMS failed")
-JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed")
-JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT)
-JMESSAGE(JMSG_VERSION, JVERSION)
-JMESSAGE(JTRC_16BIT_TABLES,
-        "Caution: quantization tables are too coarse for baseline JPEG")
-JMESSAGE(JTRC_ADOBE,
-        "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d")
-JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u")
-JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u")
-JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x")
-JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x")
-JMESSAGE(JTRC_DQT, "Define Quantization Table %d  precision %d")
-JMESSAGE(JTRC_DRI, "Define Restart Interval %u")
-JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u")
-JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u")
-JMESSAGE(JTRC_EOI, "End Of Image")
-JMESSAGE(JTRC_HUFFBITS, "        %3d %3d %3d %3d %3d %3d %3d %3d")
-JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d  %d")
-JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE,
-        "Warning: thumbnail image size does not match data length %u")
-JMESSAGE(JTRC_JFIF_EXTENSION,
-        "JFIF extension marker: type 0x%02x, length %u")
-JMESSAGE(JTRC_JFIF_THUMBNAIL, "    with %d x %d thumbnail image")
-JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u")
-JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x")
-JMESSAGE(JTRC_QUANTVALS, "        %4u %4u %4u %4u %4u %4u %4u %4u")
-JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors")
-JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors")
-JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization")
-JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d")
-JMESSAGE(JTRC_RST, "RST%d")
-JMESSAGE(JTRC_SMOOTH_NOTIMPL,
-        "Smoothing not supported with nonstandard sampling ratios")
-JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d")
-JMESSAGE(JTRC_SOF_COMPONENT, "    Component %d: %dhx%dv q=%d")
-JMESSAGE(JTRC_SOI, "Start of Image")
-JMESSAGE(JTRC_SOS, "Start Of Scan: %d components")
-JMESSAGE(JTRC_SOS_COMPONENT, "    Component %d: dc=%d ac=%d")
-JMESSAGE(JTRC_SOS_PARAMS, "  Ss=%d, Se=%d, Ah=%d, Al=%d")
-JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s")
-JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s")
-JMESSAGE(JTRC_THUMB_JPEG,
-        "JFIF extension marker: JPEG-compressed thumbnail image, length %u")
-JMESSAGE(JTRC_THUMB_PALETTE,
-        "JFIF extension marker: palette thumbnail image, length %u")
-JMESSAGE(JTRC_THUMB_RGB,
-        "JFIF extension marker: RGB thumbnail image, length %u")
-JMESSAGE(JTRC_UNKNOWN_IDS,
-        "Unrecognized component IDs %d %d %d, assuming YCbCr")
-JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u")
-JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u")
-JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d")
-JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code")
-JMESSAGE(JWRN_BOGUS_PROGRESSION,
-        "Inconsistent progression sequence for component %d coefficient %d")
-JMESSAGE(JWRN_EXTRANEOUS_DATA,
-        "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x")
-JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment")
-JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code")
-JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d")
-JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file")
-JMESSAGE(JWRN_MUST_RESYNC,
-        "Corrupt JPEG data: found marker 0x%02x instead of RST%d")
-JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG")
-JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines")
-
-#ifdef JMAKE_ENUM_LIST
-
-  JMSG_LASTMSGCODE
-} J_MESSAGE_CODE;
-
-#undef JMAKE_ENUM_LIST
-#endif /* JMAKE_ENUM_LIST */
-
-/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
-#undef JMESSAGE
-
-
-#ifndef JERROR_H
-#define JERROR_H
-
-/* Macros to simplify using the error and trace message stuff */
-/* The first parameter is either type of cinfo pointer */
-
-/* Fatal errors (print message and exit) */
-#define ERREXIT(cinfo,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT1(cinfo,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT2(cinfo,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT3(cinfo,code,p1,p2,p3)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT4(cinfo,code,p1,p2,p3,p4)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (cinfo)->err->msg_parm.i[3] = (p4), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT6(cinfo,code,p1,p2,p3,p4,p5,p6)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (cinfo)->err->msg_parm.i[3] = (p4), \
-   (cinfo)->err->msg_parm.i[4] = (p5), \
-   (cinfo)->err->msg_parm.i[5] = (p6), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXITS(cinfo,code,str)  \
-  ((cinfo)->err->msg_code = (code), \
-   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-
-#define MAKESTMT(stuff)                do { stuff } while (0)
-
-/* Nonfatal errors (we can keep going, but the data is probably corrupt) */
-#define WARNMS(cinfo,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-#define WARNMS1(cinfo,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-#define WARNMS2(cinfo,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-
-/* Informational/debugging messages */
-#define TRACEMS(cinfo,lvl,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS1(cinfo,lvl,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS2(cinfo,lvl,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS3(cinfo,lvl,code,p1,p2,p3)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-          _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \
-          (cinfo)->err->msg_code = (code); \
-          (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-          _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-          (cinfo)->err->msg_code = (code); \
-          (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-          _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-          _mp[4] = (p5); \
-          (cinfo)->err->msg_code = (code); \
-          (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-          _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-          _mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \
-          (cinfo)->err->msg_code = (code); \
-          (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMSS(cinfo,lvl,code,str)  \
-  ((cinfo)->err->msg_code = (code), \
-   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-
-#endif /* JERROR_H */
diff --git a/misc/builddeps/linux64/jpeg/include/jmorecfg.h b/misc/builddeps/linux64/jpeg/include/jmorecfg.h
deleted file mode 100644 (file)
index 928d052..0000000
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * jmorecfg.h
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * Modified 1997-2009 by Guido Vollbeding.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains additional configuration options that customize the
- * JPEG software for special applications or support machine-dependent
- * optimizations.  Most users will not need to touch this file.
- */
-
-
-/*
- * Define BITS_IN_JSAMPLE as either
- *   8   for 8-bit sample values (the usual setting)
- *   12  for 12-bit sample values
- * Only 8 and 12 are legal data precisions for lossy JPEG according to the
- * JPEG standard, and the IJG code does not support anything else!
- * We do not support run-time selection of data precision, sorry.
- */
-
-#define BITS_IN_JSAMPLE  8     /* use 8 or 12 */
-
-
-/*
- * Maximum number of components (color channels) allowed in JPEG image.
- * To meet the letter of the JPEG spec, set this to 255.  However, darn
- * few applications need more than 4 channels (maybe 5 for CMYK + alpha
- * mask).  We recommend 10 as a reasonable compromise; use 4 if you are
- * really short on memory.  (Each allowed component costs a hundred or so
- * bytes of storage, whether actually used in an image or not.)
- */
-
-#define MAX_COMPONENTS  10     /* maximum number of image components */
-
-
-/*
- * Basic data types.
- * You may need to change these if you have a machine with unusual data
- * type sizes; for example, "char" not 8 bits, "short" not 16 bits,
- * or "long" not 32 bits.  We don't care whether "int" is 16 or 32 bits,
- * but it had better be at least 16.
- */
-
-/* Representation of a single sample (pixel element value).
- * We frequently allocate large arrays of these, so it's important to keep
- * them small.  But if you have memory to burn and access to char or short
- * arrays is very slow on your hardware, you might want to change these.
- */
-
-#if BITS_IN_JSAMPLE == 8
-/* JSAMPLE should be the smallest type that will hold the values 0..255.
- * You can use a signed char by having GETJSAMPLE mask it with 0xFF.
- */
-
-#ifdef HAVE_UNSIGNED_CHAR
-
-typedef unsigned char JSAMPLE;
-#define GETJSAMPLE(value)  ((int) (value))
-
-#else /* not HAVE_UNSIGNED_CHAR */
-
-typedef char JSAMPLE;
-#ifdef CHAR_IS_UNSIGNED
-#define GETJSAMPLE(value)  ((int) (value))
-#else
-#define GETJSAMPLE(value)  ((int) (value) & 0xFF)
-#endif /* CHAR_IS_UNSIGNED */
-
-#endif /* HAVE_UNSIGNED_CHAR */
-
-#define MAXJSAMPLE     255
-#define CENTERJSAMPLE  128
-
-#endif /* BITS_IN_JSAMPLE == 8 */
-
-
-#if BITS_IN_JSAMPLE == 12
-/* JSAMPLE should be the smallest type that will hold the values 0..4095.
- * On nearly all machines "short" will do nicely.
- */
-
-typedef short JSAMPLE;
-#define GETJSAMPLE(value)  ((int) (value))
-
-#define MAXJSAMPLE     4095
-#define CENTERJSAMPLE  2048
-
-#endif /* BITS_IN_JSAMPLE == 12 */
-
-
-/* Representation of a DCT frequency coefficient.
- * This should be a signed value of at least 16 bits; "short" is usually OK.
- * Again, we allocate large arrays of these, but you can change to int
- * if you have memory to burn and "short" is really slow.
- */
-
-typedef short JCOEF;
-
-
-/* Compressed datastreams are represented as arrays of JOCTET.
- * These must be EXACTLY 8 bits wide, at least once they are written to
- * external storage.  Note that when using the stdio data source/destination
- * managers, this is also the data type passed to fread/fwrite.
- */
-
-#ifdef HAVE_UNSIGNED_CHAR
-
-typedef unsigned char JOCTET;
-#define GETJOCTET(value)  (value)
-
-#else /* not HAVE_UNSIGNED_CHAR */
-
-typedef char JOCTET;
-#ifdef CHAR_IS_UNSIGNED
-#define GETJOCTET(value)  (value)
-#else
-#define GETJOCTET(value)  ((value) & 0xFF)
-#endif /* CHAR_IS_UNSIGNED */
-
-#endif /* HAVE_UNSIGNED_CHAR */
-
-
-/* These typedefs are used for various table entries and so forth.
- * They must be at least as wide as specified; but making them too big
- * won't cost a huge amount of memory, so we don't provide special
- * extraction code like we did for JSAMPLE.  (In other words, these
- * typedefs live at a different point on the speed/space tradeoff curve.)
- */
-
-/* UINT8 must hold at least the values 0..255. */
-
-#ifdef HAVE_UNSIGNED_CHAR
-typedef unsigned char UINT8;
-#else /* not HAVE_UNSIGNED_CHAR */
-#ifdef CHAR_IS_UNSIGNED
-typedef char UINT8;
-#else /* not CHAR_IS_UNSIGNED */
-typedef short UINT8;
-#endif /* CHAR_IS_UNSIGNED */
-#endif /* HAVE_UNSIGNED_CHAR */
-
-/* UINT16 must hold at least the values 0..65535. */
-
-#ifdef HAVE_UNSIGNED_SHORT
-typedef unsigned short UINT16;
-#else /* not HAVE_UNSIGNED_SHORT */
-typedef unsigned int UINT16;
-#endif /* HAVE_UNSIGNED_SHORT */
-
-/* INT16 must hold at least the values -32768..32767. */
-
-#ifndef XMD_H                  /* X11/xmd.h correctly defines INT16 */
-typedef short INT16;
-#endif
-
-/* INT32 must hold at least signed 32-bit values. */
-
-#ifndef XMD_H                  /* X11/xmd.h correctly defines INT32 */
-#ifndef _BASETSD_H_            /* Microsoft defines it in basetsd.h */
-#ifndef _BASETSD_H             /* MinGW is slightly different */
-#ifndef QGLOBAL_H              /* Qt defines it in qglobal.h */
-typedef long INT32;
-#endif
-#endif
-#endif
-#endif
-
-/* Datatype used for image dimensions.  The JPEG standard only supports
- * images up to 64K*64K due to 16-bit fields in SOF markers.  Therefore
- * "unsigned int" is sufficient on all machines.  However, if you need to
- * handle larger images and you don't mind deviating from the spec, you
- * can change this datatype.
- */
-
-typedef unsigned int JDIMENSION;
-
-#define JPEG_MAX_DIMENSION  65500L  /* a tad under 64K to prevent overflows */
-
-
-/* These macros are used in all function definitions and extern declarations.
- * You could modify them if you need to change function linkage conventions;
- * in particular, you'll need to do that to make the library a Windows DLL.
- * Another application is to make all functions global for use with debuggers
- * or code profilers that require it.
- */
-
-/* a function called through method pointers: */
-#define METHODDEF(type)                static type
-/* a function used only in its module: */
-#define LOCAL(type)            static type
-/* a function referenced thru EXTERNs: */
-#define GLOBAL(type)           type
-/* a reference to a GLOBAL function: */
-#define EXTERN(type)           extern type
-
-
-/* This macro is used to declare a "method", that is, a function pointer.
- * We want to supply prototype parameters if the compiler can cope.
- * Note that the arglist parameter must be parenthesized!
- * Again, you can customize this if you need special linkage keywords.
- */
-
-#ifdef HAVE_PROTOTYPES
-#define JMETHOD(type,methodname,arglist)  type (*methodname) arglist
-#else
-#define JMETHOD(type,methodname,arglist)  type (*methodname) ()
-#endif
-
-
-/* Here is the pseudo-keyword for declaring pointers that must be "far"
- * on 80x86 machines.  Most of the specialized coding for 80x86 is handled
- * by just saying "FAR *" where such a pointer is needed.  In a few places
- * explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol.
- */
-
-#ifndef FAR
-#ifdef NEED_FAR_POINTERS
-#define FAR  far
-#else
-#define FAR
-#endif
-#endif
-
-
-/*
- * On a few systems, type boolean and/or its values FALSE, TRUE may appear
- * in standard header files.  Or you may have conflicts with application-
- * specific header files that you want to include together with these files.
- * Defining HAVE_BOOLEAN before including jpeglib.h should make it work.
- */
-
-#ifndef HAVE_BOOLEAN
-typedef int boolean;
-#endif
-#ifndef FALSE                  /* in case these macros already exist */
-#define FALSE  0               /* values of boolean */
-#endif
-#ifndef TRUE
-#define TRUE   1
-#endif
-
-
-/*
- * The remaining options affect code selection within the JPEG library,
- * but they don't need to be visible to most applications using the library.
- * To minimize application namespace pollution, the symbols won't be
- * defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined.
- */
-
-#ifdef JPEG_INTERNALS
-#define JPEG_INTERNAL_OPTIONS
-#endif
-
-#ifdef JPEG_INTERNAL_OPTIONS
-
-
-/*
- * These defines indicate whether to include various optional functions.
- * Undefining some of these symbols will produce a smaller but less capable
- * library.  Note that you can leave certain source files out of the
- * compilation/linking process if you've #undef'd the corresponding symbols.
- * (You may HAVE to do that if your compiler doesn't like null source files.)
- */
-
-/* Capability options common to encoder and decoder: */
-
-#define DCT_ISLOW_SUPPORTED    /* slow but accurate integer algorithm */
-#define DCT_IFAST_SUPPORTED    /* faster, less accurate integer method */
-#define DCT_FLOAT_SUPPORTED    /* floating-point: accurate, fast on fast HW */
-
-/* Encoder capability options: */
-
-#define C_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
-#define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
-#define C_PROGRESSIVE_SUPPORTED            /* Progressive JPEG? (Requires MULTISCAN)*/
-#define DCT_SCALING_SUPPORTED      /* Input rescaling via DCT? (Requires DCT_ISLOW)*/
-#define ENTROPY_OPT_SUPPORTED      /* Optimization of entropy coding parms? */
-/* Note: if you selected 12-bit data precision, it is dangerous to turn off
- * ENTROPY_OPT_SUPPORTED.  The standard Huffman tables are only good for 8-bit
- * precision, so jchuff.c normally uses entropy optimization to compute
- * usable tables for higher precision.  If you don't want to do optimization,
- * you'll have to supply different default Huffman tables.
- * The exact same statements apply for progressive JPEG: the default tables
- * don't work for progressive mode.  (This may get fixed, however.)
- */
-#define INPUT_SMOOTHING_SUPPORTED   /* Input image smoothing option? */
-
-/* Decoder capability options: */
-
-#define D_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
-#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
-#define D_PROGRESSIVE_SUPPORTED            /* Progressive JPEG? (Requires MULTISCAN)*/
-#define IDCT_SCALING_SUPPORTED     /* Output rescaling via IDCT? */
-#define SAVE_MARKERS_SUPPORTED     /* jpeg_save_markers() needed? */
-#define BLOCK_SMOOTHING_SUPPORTED   /* Block smoothing? (Progressive only) */
-#undef  UPSAMPLE_SCALING_SUPPORTED  /* Output rescaling at upsample stage? */
-#define UPSAMPLE_MERGING_SUPPORTED  /* Fast path for sloppy upsampling? */
-#define QUANT_1PASS_SUPPORTED      /* 1-pass color quantization? */
-#define QUANT_2PASS_SUPPORTED      /* 2-pass color quantization? */
-
-/* more capability options later, no doubt */
-
-
-/*
- * Ordering of RGB data in scanlines passed to or from the application.
- * If your application wants to deal with data in the order B,G,R, just
- * change these macros.  You can also deal with formats such as R,G,B,X
- * (one extra byte per pixel) by changing RGB_PIXELSIZE.  Note that changing
- * the offsets will also change the order in which colormap data is organized.
- * RESTRICTIONS:
- * 1. The sample applications cjpeg,djpeg do NOT support modified RGB formats.
- * 2. These macros only affect RGB<=>YCbCr color conversion, so they are not
- *    useful if you are using JPEG color spaces other than YCbCr or grayscale.
- * 3. The color quantizer modules will not behave desirably if RGB_PIXELSIZE
- *    is not 3 (they don't understand about dummy color components!).  So you
- *    can't use color quantization if you change that value.
- */
-
-#define RGB_RED                0       /* Offset of Red in an RGB scanline element */
-#define RGB_GREEN      1       /* Offset of Green */
-#define RGB_BLUE       2       /* Offset of Blue */
-#define RGB_PIXELSIZE  3       /* JSAMPLEs per RGB scanline element */
-
-
-/* Definitions for speed-related optimizations. */
-
-
-/* If your compiler supports inline functions, define INLINE
- * as the inline keyword; otherwise define it as empty.
- */
-
-#ifndef INLINE
-#ifdef __GNUC__                        /* for instance, GNU C knows about inline */
-#define INLINE __inline__
-#endif
-#ifndef INLINE
-#define INLINE                 /* default is to define it as empty */
-#endif
-#endif
-
-
-/* On some machines (notably 68000 series) "int" is 32 bits, but multiplying
- * two 16-bit shorts is faster than multiplying two ints.  Define MULTIPLIER
- * as short on such a machine.  MULTIPLIER must be at least 16 bits wide.
- */
-
-#ifndef MULTIPLIER
-#define MULTIPLIER  int                /* type for fastest integer multiply */
-#endif
-
-
-/* FAST_FLOAT should be either float or double, whichever is done faster
- * by your compiler.  (Note that this type is only used in the floating point
- * DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.)
- * Typically, float is faster in ANSI C compilers, while double is faster in
- * pre-ANSI compilers (because they insist on converting to double anyway).
- * The code below therefore chooses float if we have ANSI-style prototypes.
- */
-
-#ifndef FAST_FLOAT
-#ifdef HAVE_PROTOTYPES
-#define FAST_FLOAT  float
-#else
-#define FAST_FLOAT  double
-#endif
-#endif
-
-#endif /* JPEG_INTERNAL_OPTIONS */
diff --git a/misc/builddeps/linux64/jpeg/include/jpeglib.h b/misc/builddeps/linux64/jpeg/include/jpeglib.h
deleted file mode 100644 (file)
index 5039d4b..0000000
+++ /dev/null
@@ -1,1158 +0,0 @@
-/*
- * jpeglib.h
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * Modified 2002-2009 by Guido Vollbeding.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the application interface for the JPEG library.
- * Most applications using the library need only include this file,
- * and perhaps jerror.h if they want to know the exact error codes.
- */
-
-#ifndef JPEGLIB_H
-#define JPEGLIB_H
-
-/*
- * First we include the configuration files that record how this
- * installation of the JPEG library is set up.  jconfig.h can be
- * generated automatically for many systems.  jmorecfg.h contains
- * manual configuration options that most people need not worry about.
- */
-
-#ifndef JCONFIG_INCLUDED       /* in case jinclude.h already did */
-#include "jconfig.h"           /* widely used configuration options */
-#endif
-#include "jmorecfg.h"          /* seldom changed options */
-
-
-#ifdef __cplusplus
-#ifndef DONT_USE_EXTERN_C
-extern "C" {
-#endif
-#endif
-
-/* Version ID for the JPEG library.
- * Might be useful for tests like "#if JPEG_LIB_VERSION >= 80".
- */
-
-#define JPEG_LIB_VERSION  80   /* Version 8.0 */
-
-
-/* Various constants determining the sizes of things.
- * All of these are specified by the JPEG standard, so don't change them
- * if you want to be compatible.
- */
-
-#define DCTSIZE                    8   /* The basic DCT block is 8x8 samples */
-#define DCTSIZE2           64  /* DCTSIZE squared; # of elements in a block */
-#define NUM_QUANT_TBLS      4  /* Quantization tables are numbered 0..3 */
-#define NUM_HUFF_TBLS       4  /* Huffman tables are numbered 0..3 */
-#define NUM_ARITH_TBLS      16 /* Arith-coding tables are numbered 0..15 */
-#define MAX_COMPS_IN_SCAN   4  /* JPEG limit on # of components in one scan */
-#define MAX_SAMP_FACTOR     4  /* JPEG limit on sampling factors */
-/* Unfortunately, some bozo at Adobe saw no reason to be bound by the standard;
- * the PostScript DCT filter can emit files with many more than 10 blocks/MCU.
- * If you happen to run across such a file, you can up D_MAX_BLOCKS_IN_MCU
- * to handle it.  We even let you do this from the jconfig.h file.  However,
- * we strongly discourage changing C_MAX_BLOCKS_IN_MCU; just because Adobe
- * sometimes emits noncompliant files doesn't mean you should too.
- */
-#define C_MAX_BLOCKS_IN_MCU   10 /* compressor's limit on blocks per MCU */
-#ifndef D_MAX_BLOCKS_IN_MCU
-#define D_MAX_BLOCKS_IN_MCU   10 /* decompressor's limit on blocks per MCU */
-#endif
-
-
-/* Data structures for images (arrays of samples and of DCT coefficients).
- * On 80x86 machines, the image arrays are too big for near pointers,
- * but the pointer arrays can fit in near memory.
- */
-
-typedef JSAMPLE FAR *JSAMPROW; /* ptr to one image row of pixel samples. */
-typedef JSAMPROW *JSAMPARRAY;  /* ptr to some rows (a 2-D sample array) */
-typedef JSAMPARRAY *JSAMPIMAGE;        /* a 3-D sample array: top index is color */
-
-typedef JCOEF JBLOCK[DCTSIZE2];        /* one block of coefficients */
-typedef JBLOCK FAR *JBLOCKROW; /* pointer to one row of coefficient blocks */
-typedef JBLOCKROW *JBLOCKARRAY;                /* a 2-D array of coefficient blocks */
-typedef JBLOCKARRAY *JBLOCKIMAGE;      /* a 3-D array of coefficient blocks */
-
-typedef JCOEF FAR *JCOEFPTR;   /* useful in a couple of places */
-
-
-/* Types for JPEG compression parameters and working tables. */
-
-
-/* DCT coefficient quantization tables. */
-
-typedef struct {
-  /* This array gives the coefficient quantizers in natural array order
-   * (not the zigzag order in which they are stored in a JPEG DQT marker).
-   * CAUTION: IJG versions prior to v6a kept this array in zigzag order.
-   */
-  UINT16 quantval[DCTSIZE2];   /* quantization step for each coefficient */
-  /* This field is used only during compression.  It's initialized FALSE when
-   * the table is created, and set TRUE when it's been output to the file.
-   * You could suppress output of a table by setting this to TRUE.
-   * (See jpeg_suppress_tables for an example.)
-   */
-  boolean sent_table;          /* TRUE when table has been output */
-} JQUANT_TBL;
-
-
-/* Huffman coding tables. */
-
-typedef struct {
-  /* These two fields directly represent the contents of a JPEG DHT marker */
-  UINT8 bits[17];              /* bits[k] = # of symbols with codes of */
-                               /* length k bits; bits[0] is unused */
-  UINT8 huffval[256];          /* The symbols, in order of incr code length */
-  /* This field is used only during compression.  It's initialized FALSE when
-   * the table is created, and set TRUE when it's been output to the file.
-   * You could suppress output of a table by setting this to TRUE.
-   * (See jpeg_suppress_tables for an example.)
-   */
-  boolean sent_table;          /* TRUE when table has been output */
-} JHUFF_TBL;
-
-
-/* Basic info about one component (color channel). */
-
-typedef struct {
-  /* These values are fixed over the whole image. */
-  /* For compression, they must be supplied by parameter setup; */
-  /* for decompression, they are read from the SOF marker. */
-  int component_id;            /* identifier for this component (0..255) */
-  int component_index;         /* its index in SOF or cinfo->comp_info[] */
-  int h_samp_factor;           /* horizontal sampling factor (1..4) */
-  int v_samp_factor;           /* vertical sampling factor (1..4) */
-  int quant_tbl_no;            /* quantization table selector (0..3) */
-  /* These values may vary between scans. */
-  /* For compression, they must be supplied by parameter setup; */
-  /* for decompression, they are read from the SOS marker. */
-  /* The decompressor output side may not use these variables. */
-  int dc_tbl_no;               /* DC entropy table selector (0..3) */
-  int ac_tbl_no;               /* AC entropy table selector (0..3) */
-  
-  /* Remaining fields should be treated as private by applications. */
-  
-  /* These values are computed during compression or decompression startup: */
-  /* Component's size in DCT blocks.
-   * Any dummy blocks added to complete an MCU are not counted; therefore
-   * these values do not depend on whether a scan is interleaved or not.
-   */
-  JDIMENSION width_in_blocks;
-  JDIMENSION height_in_blocks;
-  /* Size of a DCT block in samples,
-   * reflecting any scaling we choose to apply during the DCT step.
-   * Values from 1 to 16 are supported.
-   * Note that different components may receive different DCT scalings.
-   */
-  int DCT_h_scaled_size;
-  int DCT_v_scaled_size;
-  /* The downsampled dimensions are the component's actual, unpadded number
-   * of samples at the main buffer (preprocessing/compression interface);
-   * DCT scaling is included, so
-   * downsampled_width = ceil(image_width * Hi/Hmax * DCT_h_scaled_size/DCTSIZE)
-   * and similarly for height.
-   */
-  JDIMENSION downsampled_width;         /* actual width in samples */
-  JDIMENSION downsampled_height; /* actual height in samples */
-  /* This flag is used only for decompression.  In cases where some of the
-   * components will be ignored (eg grayscale output from YCbCr image),
-   * we can skip most computations for the unused components.
-   */
-  boolean component_needed;    /* do we need the value of this component? */
-
-  /* These values are computed before starting a scan of the component. */
-  /* The decompressor output side may not use these variables. */
-  int MCU_width;               /* number of blocks per MCU, horizontally */
-  int MCU_height;              /* number of blocks per MCU, vertically */
-  int MCU_blocks;              /* MCU_width * MCU_height */
-  int MCU_sample_width;        /* MCU width in samples: MCU_width * DCT_h_scaled_size */
-  int last_col_width;          /* # of non-dummy blocks across in last MCU */
-  int last_row_height;         /* # of non-dummy blocks down in last MCU */
-
-  /* Saved quantization table for component; NULL if none yet saved.
-   * See jdinput.c comments about the need for this information.
-   * This field is currently used only for decompression.
-   */
-  JQUANT_TBL * quant_table;
-
-  /* Private per-component storage for DCT or IDCT subsystem. */
-  void * dct_table;
-} jpeg_component_info;
-
-
-/* The script for encoding a multiple-scan file is an array of these: */
-
-typedef struct {
-  int comps_in_scan;           /* number of components encoded in this scan */
-  int component_index[MAX_COMPS_IN_SCAN]; /* their SOF/comp_info[] indexes */
-  int Ss, Se;                  /* progressive JPEG spectral selection parms */
-  int Ah, Al;                  /* progressive JPEG successive approx. parms */
-} jpeg_scan_info;
-
-/* The decompressor can save APPn and COM markers in a list of these: */
-
-typedef struct jpeg_marker_struct FAR * jpeg_saved_marker_ptr;
-
-struct jpeg_marker_struct {
-  jpeg_saved_marker_ptr next;  /* next in list, or NULL */
-  UINT8 marker;                        /* marker code: JPEG_COM, or JPEG_APP0+n */
-  unsigned int original_length;        /* # bytes of data in the file */
-  unsigned int data_length;    /* # bytes of data saved at data[] */
-  JOCTET FAR * data;           /* the data contained in the marker */
-  /* the marker length word is not counted in data_length or original_length */
-};
-
-/* Known color spaces. */
-
-typedef enum {
-       JCS_UNKNOWN,            /* error/unspecified */
-       JCS_GRAYSCALE,          /* monochrome */
-       JCS_RGB,                /* red/green/blue */
-       JCS_YCbCr,              /* Y/Cb/Cr (also known as YUV) */
-       JCS_CMYK,               /* C/M/Y/K */
-       JCS_YCCK                /* Y/Cb/Cr/K */
-} J_COLOR_SPACE;
-
-/* DCT/IDCT algorithm options. */
-
-typedef enum {
-       JDCT_ISLOW,             /* slow but accurate integer algorithm */
-       JDCT_IFAST,             /* faster, less accurate integer method */
-       JDCT_FLOAT              /* floating-point: accurate, fast on fast HW */
-} J_DCT_METHOD;
-
-#ifndef JDCT_DEFAULT           /* may be overridden in jconfig.h */
-#define JDCT_DEFAULT  JDCT_ISLOW
-#endif
-#ifndef JDCT_FASTEST           /* may be overridden in jconfig.h */
-#define JDCT_FASTEST  JDCT_IFAST
-#endif
-
-/* Dithering options for decompression. */
-
-typedef enum {
-       JDITHER_NONE,           /* no dithering */
-       JDITHER_ORDERED,        /* simple ordered dither */
-       JDITHER_FS              /* Floyd-Steinberg error diffusion dither */
-} J_DITHER_MODE;
-
-
-/* Common fields between JPEG compression and decompression master structs. */
-
-#define jpeg_common_fields \
-  struct jpeg_error_mgr * err; /* Error handler module */\
-  struct jpeg_memory_mgr * mem;        /* Memory manager module */\
-  struct jpeg_progress_mgr * progress; /* Progress monitor, or NULL if none */\
-  void * client_data;          /* Available for use by application */\
-  boolean is_decompressor;     /* So common code can tell which is which */\
-  int global_state             /* For checking call sequence validity */
-
-/* Routines that are to be used by both halves of the library are declared
- * to receive a pointer to this structure.  There are no actual instances of
- * jpeg_common_struct, only of jpeg_compress_struct and jpeg_decompress_struct.
- */
-struct jpeg_common_struct {
-  jpeg_common_fields;          /* Fields common to both master struct types */
-  /* Additional fields follow in an actual jpeg_compress_struct or
-   * jpeg_decompress_struct.  All three structs must agree on these
-   * initial fields!  (This would be a lot cleaner in C++.)
-   */
-};
-
-typedef struct jpeg_common_struct * j_common_ptr;
-typedef struct jpeg_compress_struct * j_compress_ptr;
-typedef struct jpeg_decompress_struct * j_decompress_ptr;
-
-
-/* Master record for a compression instance */
-
-struct jpeg_compress_struct {
-  jpeg_common_fields;          /* Fields shared with jpeg_decompress_struct */
-
-  /* Destination for compressed data */
-  struct jpeg_destination_mgr * dest;
-
-  /* Description of source image --- these fields must be filled in by
-   * outer application before starting compression.  in_color_space must
-   * be correct before you can even call jpeg_set_defaults().
-   */
-
-  JDIMENSION image_width;      /* input image width */
-  JDIMENSION image_height;     /* input image height */
-  int input_components;                /* # of color components in input image */
-  J_COLOR_SPACE in_color_space;        /* colorspace of input image */
-
-  double input_gamma;          /* image gamma of input image */
-
-  /* Compression parameters --- these fields must be set before calling
-   * jpeg_start_compress().  We recommend calling jpeg_set_defaults() to
-   * initialize everything to reasonable defaults, then changing anything
-   * the application specifically wants to change.  That way you won't get
-   * burnt when new parameters are added.  Also note that there are several
-   * helper routines to simplify changing parameters.
-   */
-
-  unsigned int scale_num, scale_denom; /* fraction by which to scale image */
-
-  JDIMENSION jpeg_width;       /* scaled JPEG image width */
-  JDIMENSION jpeg_height;      /* scaled JPEG image height */
-  /* Dimensions of actual JPEG image that will be written to file,
-   * derived from input dimensions by scaling factors above.
-   * These fields are computed by jpeg_start_compress().
-   * You can also use jpeg_calc_jpeg_dimensions() to determine these values
-   * in advance of calling jpeg_start_compress().
-   */
-
-  int data_precision;          /* bits of precision in image data */
-
-  int num_components;          /* # of color components in JPEG image */
-  J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
-
-  jpeg_component_info * comp_info;
-  /* comp_info[i] describes component that appears i'th in SOF */
-
-  JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
-  int q_scale_factor[NUM_QUANT_TBLS];
-  /* ptrs to coefficient quantization tables, or NULL if not defined,
-   * and corresponding scale factors (percentage, initialized 100).
-   */
-
-  JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  /* ptrs to Huffman coding tables, or NULL if not defined */
-
-  UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
-  UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
-  UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
-
-  int num_scans;               /* # of entries in scan_info array */
-  const jpeg_scan_info * scan_info; /* script for multi-scan file, or NULL */
-  /* The default value of scan_info is NULL, which causes a single-scan
-   * sequential JPEG file to be emitted.  To create a multi-scan file,
-   * set num_scans and scan_info to point to an array of scan definitions.
-   */
-
-  boolean raw_data_in;         /* TRUE=caller supplies downsampled data */
-  boolean arith_code;          /* TRUE=arithmetic coding, FALSE=Huffman */
-  boolean optimize_coding;     /* TRUE=optimize entropy encoding parms */
-  boolean CCIR601_sampling;    /* TRUE=first samples are cosited */
-  boolean do_fancy_downsampling; /* TRUE=apply fancy downsampling */
-  int smoothing_factor;                /* 1..100, or 0 for no input smoothing */
-  J_DCT_METHOD dct_method;     /* DCT algorithm selector */
-
-  /* The restart interval can be specified in absolute MCUs by setting
-   * restart_interval, or in MCU rows by setting restart_in_rows
-   * (in which case the correct restart_interval will be figured
-   * for each scan).
-   */
-  unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */
-  int restart_in_rows;         /* if > 0, MCU rows per restart interval */
-
-  /* Parameters controlling emission of special markers. */
-
-  boolean write_JFIF_header;   /* should a JFIF marker be written? */
-  UINT8 JFIF_major_version;    /* What to write for the JFIF version number */
-  UINT8 JFIF_minor_version;
-  /* These three values are not used by the JPEG code, merely copied */
-  /* into the JFIF APP0 marker.  density_unit can be 0 for unknown, */
-  /* 1 for dots/inch, or 2 for dots/cm.  Note that the pixel aspect */
-  /* ratio is defined by X_density/Y_density even when density_unit=0. */
-  UINT8 density_unit;          /* JFIF code for pixel size units */
-  UINT16 X_density;            /* Horizontal pixel density */
-  UINT16 Y_density;            /* Vertical pixel density */
-  boolean write_Adobe_marker;  /* should an Adobe marker be written? */
-  
-  /* State variable: index of next scanline to be written to
-   * jpeg_write_scanlines().  Application may use this to control its
-   * processing loop, e.g., "while (next_scanline < image_height)".
-   */
-
-  JDIMENSION next_scanline;    /* 0 .. image_height-1  */
-
-  /* Remaining fields are known throughout compressor, but generally
-   * should not be touched by a surrounding application.
-   */
-
-  /*
-   * These fields are computed during compression startup
-   */
-  boolean progressive_mode;    /* TRUE if scan script uses progressive mode */
-  int max_h_samp_factor;       /* largest h_samp_factor */
-  int max_v_samp_factor;       /* largest v_samp_factor */
-
-  int min_DCT_h_scaled_size;   /* smallest DCT_h_scaled_size of any component */
-  int min_DCT_v_scaled_size;   /* smallest DCT_v_scaled_size of any component */
-
-  JDIMENSION total_iMCU_rows;  /* # of iMCU rows to be input to coef ctlr */
-  /* The coefficient controller receives data in units of MCU rows as defined
-   * for fully interleaved scans (whether the JPEG file is interleaved or not).
-   * There are v_samp_factor * DCTSIZE sample rows of each component in an
-   * "iMCU" (interleaved MCU) row.
-   */
-  
-  /*
-   * These fields are valid during any one scan.
-   * They describe the components and MCUs actually appearing in the scan.
-   */
-  int comps_in_scan;           /* # of JPEG components in this scan */
-  jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
-  /* *cur_comp_info[i] describes component that appears i'th in SOS */
-  
-  JDIMENSION MCUs_per_row;     /* # of MCUs across the image */
-  JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */
-  
-  int blocks_in_MCU;           /* # of DCT blocks per MCU */
-  int MCU_membership[C_MAX_BLOCKS_IN_MCU];
-  /* MCU_membership[i] is index in cur_comp_info of component owning */
-  /* i'th block in an MCU */
-
-  int Ss, Se, Ah, Al;          /* progressive JPEG parameters for scan */
-
-  int block_size;              /* the basic DCT block size: 1..16 */
-  const int * natural_order;   /* natural-order position array */
-  int lim_Se;                  /* min( Se, DCTSIZE2-1 ) */
-
-  /*
-   * Links to compression subobjects (methods and private variables of modules)
-   */
-  struct jpeg_comp_master * master;
-  struct jpeg_c_main_controller * main;
-  struct jpeg_c_prep_controller * prep;
-  struct jpeg_c_coef_controller * coef;
-  struct jpeg_marker_writer * marker;
-  struct jpeg_color_converter * cconvert;
-  struct jpeg_downsampler * downsample;
-  struct jpeg_forward_dct * fdct;
-  struct jpeg_entropy_encoder * entropy;
-  jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */
-  int script_space_size;
-};
-
-
-/* Master record for a decompression instance */
-
-struct jpeg_decompress_struct {
-  jpeg_common_fields;          /* Fields shared with jpeg_compress_struct */
-
-  /* Source of compressed data */
-  struct jpeg_source_mgr * src;
-
-  /* Basic description of image --- filled in by jpeg_read_header(). */
-  /* Application may inspect these values to decide how to process image. */
-
-  JDIMENSION image_width;      /* nominal image width (from SOF marker) */
-  JDIMENSION image_height;     /* nominal image height */
-  int num_components;          /* # of color components in JPEG image */
-  J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
-
-  /* Decompression processing parameters --- these fields must be set before
-   * calling jpeg_start_decompress().  Note that jpeg_read_header() initializes
-   * them to default values.
-   */
-
-  J_COLOR_SPACE out_color_space; /* colorspace for output */
-
-  unsigned int scale_num, scale_denom; /* fraction by which to scale image */
-
-  double output_gamma;         /* image gamma wanted in output */
-
-  boolean buffered_image;      /* TRUE=multiple output passes */
-  boolean raw_data_out;                /* TRUE=downsampled data wanted */
-
-  J_DCT_METHOD dct_method;     /* IDCT algorithm selector */
-  boolean do_fancy_upsampling; /* TRUE=apply fancy upsampling */
-  boolean do_block_smoothing;  /* TRUE=apply interblock smoothing */
-
-  boolean quantize_colors;     /* TRUE=colormapped output wanted */
-  /* the following are ignored if not quantize_colors: */
-  J_DITHER_MODE dither_mode;   /* type of color dithering to use */
-  boolean two_pass_quantize;   /* TRUE=use two-pass color quantization */
-  int desired_number_of_colors;        /* max # colors to use in created colormap */
-  /* these are significant only in buffered-image mode: */
-  boolean enable_1pass_quant;  /* enable future use of 1-pass quantizer */
-  boolean enable_external_quant;/* enable future use of external colormap */
-  boolean enable_2pass_quant;  /* enable future use of 2-pass quantizer */
-
-  /* Description of actual output image that will be returned to application.
-   * These fields are computed by jpeg_start_decompress().
-   * You can also use jpeg_calc_output_dimensions() to determine these values
-   * in advance of calling jpeg_start_decompress().
-   */
-
-  JDIMENSION output_width;     /* scaled image width */
-  JDIMENSION output_height;    /* scaled image height */
-  int out_color_components;    /* # of color components in out_color_space */
-  int output_components;       /* # of color components returned */
-  /* output_components is 1 (a colormap index) when quantizing colors;
-   * otherwise it equals out_color_components.
-   */
-  int rec_outbuf_height;       /* min recommended height of scanline buffer */
-  /* If the buffer passed to jpeg_read_scanlines() is less than this many rows
-   * high, space and time will be wasted due to unnecessary data copying.
-   * Usually rec_outbuf_height will be 1 or 2, at most 4.
-   */
-
-  /* When quantizing colors, the output colormap is described by these fields.
-   * The application can supply a colormap by setting colormap non-NULL before
-   * calling jpeg_start_decompress; otherwise a colormap is created during
-   * jpeg_start_decompress or jpeg_start_output.
-   * The map has out_color_components rows and actual_number_of_colors columns.
-   */
-  int actual_number_of_colors; /* number of entries in use */
-  JSAMPARRAY colormap;         /* The color map as a 2-D pixel array */
-
-  /* State variables: these variables indicate the progress of decompression.
-   * The application may examine these but must not modify them.
-   */
-
-  /* Row index of next scanline to be read from jpeg_read_scanlines().
-   * Application may use this to control its processing loop, e.g.,
-   * "while (output_scanline < output_height)".
-   */
-  JDIMENSION output_scanline;  /* 0 .. output_height-1  */
-
-  /* Current input scan number and number of iMCU rows completed in scan.
-   * These indicate the progress of the decompressor input side.
-   */
-  int input_scan_number;       /* Number of SOS markers seen so far */
-  JDIMENSION input_iMCU_row;   /* Number of iMCU rows completed */
-
-  /* The "output scan number" is the notional scan being displayed by the
-   * output side.  The decompressor will not allow output scan/row number
-   * to get ahead of input scan/row, but it can fall arbitrarily far behind.
-   */
-  int output_scan_number;      /* Nominal scan number being displayed */
-  JDIMENSION output_iMCU_row;  /* Number of iMCU rows read */
-
-  /* Current progression status.  coef_bits[c][i] indicates the precision
-   * with which component c's DCT coefficient i (in zigzag order) is known.
-   * It is -1 when no data has yet been received, otherwise it is the point
-   * transform (shift) value for the most recent scan of the coefficient
-   * (thus, 0 at completion of the progression).
-   * This pointer is NULL when reading a non-progressive file.
-   */
-  int (*coef_bits)[DCTSIZE2];  /* -1 or current Al value for each coef */
-
-  /* Internal JPEG parameters --- the application usually need not look at
-   * these fields.  Note that the decompressor output side may not use
-   * any parameters that can change between scans.
-   */
-
-  /* Quantization and Huffman tables are carried forward across input
-   * datastreams when processing abbreviated JPEG datastreams.
-   */
-
-  JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
-  /* ptrs to coefficient quantization tables, or NULL if not defined */
-
-  JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  /* ptrs to Huffman coding tables, or NULL if not defined */
-
-  /* These parameters are never carried across datastreams, since they
-   * are given in SOF/SOS markers or defined to be reset by SOI.
-   */
-
-  int data_precision;          /* bits of precision in image data */
-
-  jpeg_component_info * comp_info;
-  /* comp_info[i] describes component that appears i'th in SOF */
-
-  boolean is_baseline;         /* TRUE if Baseline SOF0 encountered */
-  boolean progressive_mode;    /* TRUE if SOFn specifies progressive mode */
-  boolean arith_code;          /* TRUE=arithmetic coding, FALSE=Huffman */
-
-  UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
-  UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
-  UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
-
-  unsigned int restart_interval; /* MCUs per restart interval, or 0 for no restart */
-
-  /* These fields record data obtained from optional markers recognized by
-   * the JPEG library.
-   */
-  boolean saw_JFIF_marker;     /* TRUE iff a JFIF APP0 marker was found */
-  /* Data copied from JFIF marker; only valid if saw_JFIF_marker is TRUE: */
-  UINT8 JFIF_major_version;    /* JFIF version number */
-  UINT8 JFIF_minor_version;
-  UINT8 density_unit;          /* JFIF code for pixel size units */
-  UINT16 X_density;            /* Horizontal pixel density */
-  UINT16 Y_density;            /* Vertical pixel density */
-  boolean saw_Adobe_marker;    /* TRUE iff an Adobe APP14 marker was found */
-  UINT8 Adobe_transform;       /* Color transform code from Adobe marker */
-
-  boolean CCIR601_sampling;    /* TRUE=first samples are cosited */
-
-  /* Aside from the specific data retained from APPn markers known to the
-   * library, the uninterpreted contents of any or all APPn and COM markers
-   * can be saved in a list for examination by the application.
-   */
-  jpeg_saved_marker_ptr marker_list; /* Head of list of saved markers */
-
-  /* Remaining fields are known throughout decompressor, but generally
-   * should not be touched by a surrounding application.
-   */
-
-  /*
-   * These fields are computed during decompression startup
-   */
-  int max_h_samp_factor;       /* largest h_samp_factor */
-  int max_v_samp_factor;       /* largest v_samp_factor */
-
-  int min_DCT_h_scaled_size;   /* smallest DCT_h_scaled_size of any component */
-  int min_DCT_v_scaled_size;   /* smallest DCT_v_scaled_size of any component */
-
-  JDIMENSION total_iMCU_rows;  /* # of iMCU rows in image */
-  /* The coefficient controller's input and output progress is measured in
-   * units of "iMCU" (interleaved MCU) rows.  These are the same as MCU rows
-   * in fully interleaved JPEG scans, but are used whether the scan is
-   * interleaved or not.  We define an iMCU row as v_samp_factor DCT block
-   * rows of each component.  Therefore, the IDCT output contains
-   * v_samp_factor*DCT_v_scaled_size sample rows of a component per iMCU row.
-   */
-
-  JSAMPLE * sample_range_limit; /* table for fast range-limiting */
-
-  /*
-   * These fields are valid during any one scan.
-   * They describe the components and MCUs actually appearing in the scan.
-   * Note that the decompressor output side must not use these fields.
-   */
-  int comps_in_scan;           /* # of JPEG components in this scan */
-  jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
-  /* *cur_comp_info[i] describes component that appears i'th in SOS */
-
-  JDIMENSION MCUs_per_row;     /* # of MCUs across the image */
-  JDIMENSION MCU_rows_in_scan; /* # of MCU rows in the image */
-
-  int blocks_in_MCU;           /* # of DCT blocks per MCU */
-  int MCU_membership[D_MAX_BLOCKS_IN_MCU];
-  /* MCU_membership[i] is index in cur_comp_info of component owning */
-  /* i'th block in an MCU */
-
-  int Ss, Se, Ah, Al;          /* progressive JPEG parameters for scan */
-
-  /* These fields are derived from Se of first SOS marker.
-   */
-  int block_size;              /* the basic DCT block size: 1..16 */
-  const int * natural_order; /* natural-order position array for entropy decode */
-  int lim_Se;                  /* min( Se, DCTSIZE2-1 ) for entropy decode */
-
-  /* This field is shared between entropy decoder and marker parser.
-   * It is either zero or the code of a JPEG marker that has been
-   * read from the data source, but has not yet been processed.
-   */
-  int unread_marker;
-
-  /*
-   * Links to decompression subobjects (methods, private variables of modules)
-   */
-  struct jpeg_decomp_master * master;
-  struct jpeg_d_main_controller * main;
-  struct jpeg_d_coef_controller * coef;
-  struct jpeg_d_post_controller * post;
-  struct jpeg_input_controller * inputctl;
-  struct jpeg_marker_reader * marker;
-  struct jpeg_entropy_decoder * entropy;
-  struct jpeg_inverse_dct * idct;
-  struct jpeg_upsampler * upsample;
-  struct jpeg_color_deconverter * cconvert;
-  struct jpeg_color_quantizer * cquantize;
-};
-
-
-/* "Object" declarations for JPEG modules that may be supplied or called
- * directly by the surrounding application.
- * As with all objects in the JPEG library, these structs only define the
- * publicly visible methods and state variables of a module.  Additional
- * private fields may exist after the public ones.
- */
-
-
-/* Error handler object */
-
-struct jpeg_error_mgr {
-  /* Error exit handler: does not return to caller */
-  JMETHOD(void, error_exit, (j_common_ptr cinfo));
-  /* Conditionally emit a trace or warning message */
-  JMETHOD(void, emit_message, (j_common_ptr cinfo, int msg_level));
-  /* Routine that actually outputs a trace or error message */
-  JMETHOD(void, output_message, (j_common_ptr cinfo));
-  /* Format a message string for the most recent JPEG error or message */
-  JMETHOD(void, format_message, (j_common_ptr cinfo, char * buffer));
-#define JMSG_LENGTH_MAX  200   /* recommended size of format_message buffer */
-  /* Reset error state variables at start of a new image */
-  JMETHOD(void, reset_error_mgr, (j_common_ptr cinfo));
-  
-  /* The message ID code and any parameters are saved here.
-   * A message can have one string parameter or up to 8 int parameters.
-   */
-  int msg_code;
-#define JMSG_STR_PARM_MAX  80
-  union {
-    int i[8];
-    char s[JMSG_STR_PARM_MAX];
-  } msg_parm;
-  
-  /* Standard state variables for error facility */
-  
-  int trace_level;             /* max msg_level that will be displayed */
-  
-  /* For recoverable corrupt-data errors, we emit a warning message,
-   * but keep going unless emit_message chooses to abort.  emit_message
-   * should count warnings in num_warnings.  The surrounding application
-   * can check for bad data by seeing if num_warnings is nonzero at the
-   * end of processing.
-   */
-  long num_warnings;           /* number of corrupt-data warnings */
-
-  /* These fields point to the table(s) of error message strings.
-   * An application can change the table pointer to switch to a different
-   * message list (typically, to change the language in which errors are
-   * reported).  Some applications may wish to add additional error codes
-   * that will be handled by the JPEG library error mechanism; the second
-   * table pointer is used for this purpose.
-   *
-   * First table includes all errors generated by JPEG library itself.
-   * Error code 0 is reserved for a "no such error string" message.
-   */
-  const char * const * jpeg_message_table; /* Library errors */
-  int last_jpeg_message;    /* Table contains strings 0..last_jpeg_message */
-  /* Second table can be added by application (see cjpeg/djpeg for example).
-   * It contains strings numbered first_addon_message..last_addon_message.
-   */
-  const char * const * addon_message_table; /* Non-library errors */
-  int first_addon_message;     /* code for first string in addon table */
-  int last_addon_message;      /* code for last string in addon table */
-};
-
-
-/* Progress monitor object */
-
-struct jpeg_progress_mgr {
-  JMETHOD(void, progress_monitor, (j_common_ptr cinfo));
-
-  long pass_counter;           /* work units completed in this pass */
-  long pass_limit;             /* total number of work units in this pass */
-  int completed_passes;                /* passes completed so far */
-  int total_passes;            /* total number of passes expected */
-};
-
-
-/* Data destination object for compression */
-
-struct jpeg_destination_mgr {
-  JOCTET * next_output_byte;   /* => next byte to write in buffer */
-  size_t free_in_buffer;       /* # of byte spaces remaining in buffer */
-
-  JMETHOD(void, init_destination, (j_compress_ptr cinfo));
-  JMETHOD(boolean, empty_output_buffer, (j_compress_ptr cinfo));
-  JMETHOD(void, term_destination, (j_compress_ptr cinfo));
-};
-
-
-/* Data source object for decompression */
-
-struct jpeg_source_mgr {
-  const JOCTET * next_input_byte; /* => next byte to read from buffer */
-  size_t bytes_in_buffer;      /* # of bytes remaining in buffer */
-
-  JMETHOD(void, init_source, (j_decompress_ptr cinfo));
-  JMETHOD(boolean, fill_input_buffer, (j_decompress_ptr cinfo));
-  JMETHOD(void, skip_input_data, (j_decompress_ptr cinfo, long num_bytes));
-  JMETHOD(boolean, resync_to_restart, (j_decompress_ptr cinfo, int desired));
-  JMETHOD(void, term_source, (j_decompress_ptr cinfo));
-};
-
-
-/* Memory manager object.
- * Allocates "small" objects (a few K total), "large" objects (tens of K),
- * and "really big" objects (virtual arrays with backing store if needed).
- * The memory manager does not allow individual objects to be freed; rather,
- * each created object is assigned to a pool, and whole pools can be freed
- * at once.  This is faster and more convenient than remembering exactly what
- * to free, especially where malloc()/free() are not too speedy.
- * NB: alloc routines never return NULL.  They exit to error_exit if not
- * successful.
- */
-
-#define JPOOL_PERMANENT        0       /* lasts until master record is destroyed */
-#define JPOOL_IMAGE    1       /* lasts until done with image/datastream */
-#define JPOOL_NUMPOOLS 2
-
-typedef struct jvirt_sarray_control * jvirt_sarray_ptr;
-typedef struct jvirt_barray_control * jvirt_barray_ptr;
-
-
-struct jpeg_memory_mgr {
-  /* Method pointers */
-  JMETHOD(void *, alloc_small, (j_common_ptr cinfo, int pool_id,
-                               size_t sizeofobject));
-  JMETHOD(void FAR *, alloc_large, (j_common_ptr cinfo, int pool_id,
-                                    size_t sizeofobject));
-  JMETHOD(JSAMPARRAY, alloc_sarray, (j_common_ptr cinfo, int pool_id,
-                                    JDIMENSION samplesperrow,
-                                    JDIMENSION numrows));
-  JMETHOD(JBLOCKARRAY, alloc_barray, (j_common_ptr cinfo, int pool_id,
-                                     JDIMENSION blocksperrow,
-                                     JDIMENSION numrows));
-  JMETHOD(jvirt_sarray_ptr, request_virt_sarray, (j_common_ptr cinfo,
-                                                 int pool_id,
-                                                 boolean pre_zero,
-                                                 JDIMENSION samplesperrow,
-                                                 JDIMENSION numrows,
-                                                 JDIMENSION maxaccess));
-  JMETHOD(jvirt_barray_ptr, request_virt_barray, (j_common_ptr cinfo,
-                                                 int pool_id,
-                                                 boolean pre_zero,
-                                                 JDIMENSION blocksperrow,
-                                                 JDIMENSION numrows,
-                                                 JDIMENSION maxaccess));
-  JMETHOD(void, realize_virt_arrays, (j_common_ptr cinfo));
-  JMETHOD(JSAMPARRAY, access_virt_sarray, (j_common_ptr cinfo,
-                                          jvirt_sarray_ptr ptr,
-                                          JDIMENSION start_row,
-                                          JDIMENSION num_rows,
-                                          boolean writable));
-  JMETHOD(JBLOCKARRAY, access_virt_barray, (j_common_ptr cinfo,
-                                           jvirt_barray_ptr ptr,
-                                           JDIMENSION start_row,
-                                           JDIMENSION num_rows,
-                                           boolean writable));
-  JMETHOD(void, free_pool, (j_common_ptr cinfo, int pool_id));
-  JMETHOD(void, self_destruct, (j_common_ptr cinfo));
-
-  /* Limit on memory allocation for this JPEG object.  (Note that this is
-   * merely advisory, not a guaranteed maximum; it only affects the space
-   * used for virtual-array buffers.)  May be changed by outer application
-   * after creating the JPEG object.
-   */
-  long max_memory_to_use;
-
-  /* Maximum allocation request accepted by alloc_large. */
-  long max_alloc_chunk;
-};
-
-
-/* Routine signature for application-supplied marker processing methods.
- * Need not pass marker code since it is stored in cinfo->unread_marker.
- */
-typedef JMETHOD(boolean, jpeg_marker_parser_method, (j_decompress_ptr cinfo));
-
-
-/* Declarations for routines called by application.
- * The JPP macro hides prototype parameters from compilers that can't cope.
- * Note JPP requires double parentheses.
- */
-
-#ifdef HAVE_PROTOTYPES
-#define JPP(arglist)   arglist
-#else
-#define JPP(arglist)   ()
-#endif
-
-
-/* Short forms of external names for systems with brain-damaged linkers.
- * We shorten external names to be unique in the first six letters, which
- * is good enough for all known systems.
- * (If your compiler itself needs names to be unique in less than 15 
- * characters, you are out of luck.  Get a better compiler.)
- */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_std_error         jStdError
-#define jpeg_CreateCompress    jCreaCompress
-#define jpeg_CreateDecompress  jCreaDecompress
-#define jpeg_destroy_compress  jDestCompress
-#define jpeg_destroy_decompress        jDestDecompress
-#define jpeg_stdio_dest                jStdDest
-#define jpeg_stdio_src         jStdSrc
-#define jpeg_mem_dest          jMemDest
-#define jpeg_mem_src           jMemSrc
-#define jpeg_set_defaults      jSetDefaults
-#define jpeg_set_colorspace    jSetColorspace
-#define jpeg_default_colorspace        jDefColorspace
-#define jpeg_set_quality       jSetQuality
-#define jpeg_set_linear_quality        jSetLQuality
-#define jpeg_default_qtables   jDefQTables
-#define jpeg_add_quant_table   jAddQuantTable
-#define jpeg_quality_scaling   jQualityScaling
-#define jpeg_simple_progression        jSimProgress
-#define jpeg_suppress_tables   jSuppressTables
-#define jpeg_alloc_quant_table jAlcQTable
-#define jpeg_alloc_huff_table  jAlcHTable
-#define jpeg_start_compress    jStrtCompress
-#define jpeg_write_scanlines   jWrtScanlines
-#define jpeg_finish_compress   jFinCompress
-#define jpeg_calc_jpeg_dimensions      jCjpegDimensions
-#define jpeg_write_raw_data    jWrtRawData
-#define jpeg_write_marker      jWrtMarker
-#define jpeg_write_m_header    jWrtMHeader
-#define jpeg_write_m_byte      jWrtMByte
-#define jpeg_write_tables      jWrtTables
-#define jpeg_read_header       jReadHeader
-#define jpeg_start_decompress  jStrtDecompress
-#define jpeg_read_scanlines    jReadScanlines
-#define jpeg_finish_decompress jFinDecompress
-#define jpeg_read_raw_data     jReadRawData
-#define jpeg_has_multiple_scans        jHasMultScn
-#define jpeg_start_output      jStrtOutput
-#define jpeg_finish_output     jFinOutput
-#define jpeg_input_complete    jInComplete
-#define jpeg_new_colormap      jNewCMap
-#define jpeg_consume_input     jConsumeInput
-#define jpeg_core_output_dimensions    jCoreDimensions
-#define jpeg_calc_output_dimensions    jCalcDimensions
-#define jpeg_save_markers      jSaveMarkers
-#define jpeg_set_marker_processor      jSetMarker
-#define jpeg_read_coefficients jReadCoefs
-#define jpeg_write_coefficients        jWrtCoefs
-#define jpeg_copy_critical_parameters  jCopyCrit
-#define jpeg_abort_compress    jAbrtCompress
-#define jpeg_abort_decompress  jAbrtDecompress
-#define jpeg_abort             jAbort
-#define jpeg_destroy           jDestroy
-#define jpeg_resync_to_restart jResyncRestart
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/* Default error-management setup */
-EXTERN(struct jpeg_error_mgr *) jpeg_std_error
-       JPP((struct jpeg_error_mgr * err));
-
-/* Initialization of JPEG compression objects.
- * jpeg_create_compress() and jpeg_create_decompress() are the exported
- * names that applications should call.  These expand to calls on
- * jpeg_CreateCompress and jpeg_CreateDecompress with additional information
- * passed for version mismatch checking.
- * NB: you must set up the error-manager BEFORE calling jpeg_create_xxx.
- */
-#define jpeg_create_compress(cinfo) \
-    jpeg_CreateCompress((cinfo), JPEG_LIB_VERSION, \
-                       (size_t) sizeof(struct jpeg_compress_struct))
-#define jpeg_create_decompress(cinfo) \
-    jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \
-                         (size_t) sizeof(struct jpeg_decompress_struct))
-EXTERN(void) jpeg_CreateCompress JPP((j_compress_ptr cinfo,
-                                     int version, size_t structsize));
-EXTERN(void) jpeg_CreateDecompress JPP((j_decompress_ptr cinfo,
-                                       int version, size_t structsize));
-/* Destruction of JPEG compression objects */
-EXTERN(void) jpeg_destroy_compress JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_destroy_decompress JPP((j_decompress_ptr cinfo));
-
-/* Standard data source and destination managers: stdio streams. */
-/* Caller is responsible for opening the file before and closing after. */
-EXTERN(void) jpeg_stdio_dest JPP((j_compress_ptr cinfo, FILE * outfile));
-EXTERN(void) jpeg_stdio_src JPP((j_decompress_ptr cinfo, FILE * infile));
-
-/* Data source and destination managers: memory buffers. */
-EXTERN(void) jpeg_mem_dest JPP((j_compress_ptr cinfo,
-                              unsigned char ** outbuffer,
-                              unsigned long * outsize));
-EXTERN(void) jpeg_mem_src JPP((j_decompress_ptr cinfo,
-                             unsigned char * inbuffer,
-                             unsigned long insize));
-
-/* Default parameter setup for compression */
-EXTERN(void) jpeg_set_defaults JPP((j_compress_ptr cinfo));
-/* Compression parameter setup aids */
-EXTERN(void) jpeg_set_colorspace JPP((j_compress_ptr cinfo,
-                                     J_COLOR_SPACE colorspace));
-EXTERN(void) jpeg_default_colorspace JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_set_quality JPP((j_compress_ptr cinfo, int quality,
-                                  boolean force_baseline));
-EXTERN(void) jpeg_set_linear_quality JPP((j_compress_ptr cinfo,
-                                         int scale_factor,
-                                         boolean force_baseline));
-EXTERN(void) jpeg_default_qtables JPP((j_compress_ptr cinfo,
-                                      boolean force_baseline));
-EXTERN(void) jpeg_add_quant_table JPP((j_compress_ptr cinfo, int which_tbl,
-                                      const unsigned int *basic_table,
-                                      int scale_factor,
-                                      boolean force_baseline));
-EXTERN(int) jpeg_quality_scaling JPP((int quality));
-EXTERN(void) jpeg_simple_progression JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_suppress_tables JPP((j_compress_ptr cinfo,
-                                      boolean suppress));
-EXTERN(JQUANT_TBL *) jpeg_alloc_quant_table JPP((j_common_ptr cinfo));
-EXTERN(JHUFF_TBL *) jpeg_alloc_huff_table JPP((j_common_ptr cinfo));
-
-/* Main entry points for compression */
-EXTERN(void) jpeg_start_compress JPP((j_compress_ptr cinfo,
-                                     boolean write_all_tables));
-EXTERN(JDIMENSION) jpeg_write_scanlines JPP((j_compress_ptr cinfo,
-                                            JSAMPARRAY scanlines,
-                                            JDIMENSION num_lines));
-EXTERN(void) jpeg_finish_compress JPP((j_compress_ptr cinfo));
-
-/* Precalculate JPEG dimensions for current compression parameters. */
-EXTERN(void) jpeg_calc_jpeg_dimensions JPP((j_compress_ptr cinfo));
-
-/* Replaces jpeg_write_scanlines when writing raw downsampled data. */
-EXTERN(JDIMENSION) jpeg_write_raw_data JPP((j_compress_ptr cinfo,
-                                           JSAMPIMAGE data,
-                                           JDIMENSION num_lines));
-
-/* Write a special marker.  See libjpeg.txt concerning safe usage. */
-EXTERN(void) jpeg_write_marker
-       JPP((j_compress_ptr cinfo, int marker,
-            const JOCTET * dataptr, unsigned int datalen));
-/* Same, but piecemeal. */
-EXTERN(void) jpeg_write_m_header
-       JPP((j_compress_ptr cinfo, int marker, unsigned int datalen));
-EXTERN(void) jpeg_write_m_byte
-       JPP((j_compress_ptr cinfo, int val));
-
-/* Alternate compression function: just write an abbreviated table file */
-EXTERN(void) jpeg_write_tables JPP((j_compress_ptr cinfo));
-
-/* Decompression startup: read start of JPEG datastream to see what's there */
-EXTERN(int) jpeg_read_header JPP((j_decompress_ptr cinfo,
-                                 boolean require_image));
-/* Return value is one of: */
-#define JPEG_SUSPENDED         0 /* Suspended due to lack of input data */
-#define JPEG_HEADER_OK         1 /* Found valid image datastream */
-#define JPEG_HEADER_TABLES_ONLY        2 /* Found valid table-specs-only datastream */
-/* If you pass require_image = TRUE (normal case), you need not check for
- * a TABLES_ONLY return code; an abbreviated file will cause an error exit.
- * JPEG_SUSPENDED is only possible if you use a data source module that can
- * give a suspension return (the stdio source module doesn't).
- */
-
-/* Main entry points for decompression */
-EXTERN(boolean) jpeg_start_decompress JPP((j_decompress_ptr cinfo));
-EXTERN(JDIMENSION) jpeg_read_scanlines JPP((j_decompress_ptr cinfo,
-                                           JSAMPARRAY scanlines,
-                                           JDIMENSION max_lines));
-EXTERN(boolean) jpeg_finish_decompress JPP((j_decompress_ptr cinfo));
-
-/* Replaces jpeg_read_scanlines when reading raw downsampled data. */
-EXTERN(JDIMENSION) jpeg_read_raw_data JPP((j_decompress_ptr cinfo,
-                                          JSAMPIMAGE data,
-                                          JDIMENSION max_lines));
-
-/* Additional entry points for buffered-image mode. */
-EXTERN(boolean) jpeg_has_multiple_scans JPP((j_decompress_ptr cinfo));
-EXTERN(boolean) jpeg_start_output JPP((j_decompress_ptr cinfo,
-                                      int scan_number));
-EXTERN(boolean) jpeg_finish_output JPP((j_decompress_ptr cinfo));
-EXTERN(boolean) jpeg_input_complete JPP((j_decompress_ptr cinfo));
-EXTERN(void) jpeg_new_colormap JPP((j_decompress_ptr cinfo));
-EXTERN(int) jpeg_consume_input JPP((j_decompress_ptr cinfo));
-/* Return value is one of: */
-/* #define JPEG_SUSPENDED      0    Suspended due to lack of input data */
-#define JPEG_REACHED_SOS       1 /* Reached start of new scan */
-#define JPEG_REACHED_EOI       2 /* Reached end of image */
-#define JPEG_ROW_COMPLETED     3 /* Completed one iMCU row */
-#define JPEG_SCAN_COMPLETED    4 /* Completed last iMCU row of a scan */
-
-/* Precalculate output dimensions for current decompression parameters. */
-EXTERN(void) jpeg_core_output_dimensions JPP((j_decompress_ptr cinfo));
-EXTERN(void) jpeg_calc_output_dimensions JPP((j_decompress_ptr cinfo));
-
-/* Control saving of COM and APPn markers into marker_list. */
-EXTERN(void) jpeg_save_markers
-       JPP((j_decompress_ptr cinfo, int marker_code,
-            unsigned int length_limit));
-
-/* Install a special processing method for COM or APPn markers. */
-EXTERN(void) jpeg_set_marker_processor
-       JPP((j_decompress_ptr cinfo, int marker_code,
-            jpeg_marker_parser_method routine));
-
-/* Read or write raw DCT coefficients --- useful for lossless transcoding. */
-EXTERN(jvirt_barray_ptr *) jpeg_read_coefficients JPP((j_decompress_ptr cinfo));
-EXTERN(void) jpeg_write_coefficients JPP((j_compress_ptr cinfo,
-                                         jvirt_barray_ptr * coef_arrays));
-EXTERN(void) jpeg_copy_critical_parameters JPP((j_decompress_ptr srcinfo,
-                                               j_compress_ptr dstinfo));
-
-/* If you choose to abort compression or decompression before completing
- * jpeg_finish_(de)compress, then you need to clean up to release memory,
- * temporary files, etc.  You can just call jpeg_destroy_(de)compress
- * if you're done with the JPEG object, but if you want to clean it up and
- * reuse it, call this:
- */
-EXTERN(void) jpeg_abort_compress JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_abort_decompress JPP((j_decompress_ptr cinfo));
-
-/* Generic versions of jpeg_abort and jpeg_destroy that work on either
- * flavor of JPEG object.  These may be more convenient in some places.
- */
-EXTERN(void) jpeg_abort JPP((j_common_ptr cinfo));
-EXTERN(void) jpeg_destroy JPP((j_common_ptr cinfo));
-
-/* Default restart-marker-resync procedure for use by data source modules */
-EXTERN(boolean) jpeg_resync_to_restart JPP((j_decompress_ptr cinfo,
-                                           int desired));
-
-
-/* These marker codes are exported since applications and data source modules
- * are likely to want to use them.
- */
-
-#define JPEG_RST0      0xD0    /* RST0 marker code */
-#define JPEG_EOI       0xD9    /* EOI marker code */
-#define JPEG_APP0      0xE0    /* APP0 marker code */
-#define JPEG_COM       0xFE    /* COM marker code */
-
-
-/* If we have a brain-damaged compiler that emits warnings (or worse, errors)
- * for structure definitions that are never filled in, keep it quiet by
- * supplying dummy definitions for the various substructures.
- */
-
-#ifdef INCOMPLETE_TYPES_BROKEN
-#ifndef JPEG_INTERNALS         /* will be defined in jpegint.h */
-struct jvirt_sarray_control { long dummy; };
-struct jvirt_barray_control { long dummy; };
-struct jpeg_comp_master { long dummy; };
-struct jpeg_c_main_controller { long dummy; };
-struct jpeg_c_prep_controller { long dummy; };
-struct jpeg_c_coef_controller { long dummy; };
-struct jpeg_marker_writer { long dummy; };
-struct jpeg_color_converter { long dummy; };
-struct jpeg_downsampler { long dummy; };
-struct jpeg_forward_dct { long dummy; };
-struct jpeg_entropy_encoder { long dummy; };
-struct jpeg_decomp_master { long dummy; };
-struct jpeg_d_main_controller { long dummy; };
-struct jpeg_d_coef_controller { long dummy; };
-struct jpeg_d_post_controller { long dummy; };
-struct jpeg_input_controller { long dummy; };
-struct jpeg_marker_reader { long dummy; };
-struct jpeg_entropy_decoder { long dummy; };
-struct jpeg_inverse_dct { long dummy; };
-struct jpeg_upsampler { long dummy; };
-struct jpeg_color_deconverter { long dummy; };
-struct jpeg_color_quantizer { long dummy; };
-#endif /* JPEG_INTERNALS */
-#endif /* INCOMPLETE_TYPES_BROKEN */
-
-
-/*
- * The JPEG library modules define JPEG_INTERNALS before including this file.
- * The internal structure declarations are read only when that is true.
- * Applications using the library should not include jpegint.h, but may wish
- * to include jerror.h.
- */
-
-#ifdef JPEG_INTERNALS
-#include "jpegint.h"           /* fetch private declarations */
-#include "jerror.h"            /* fetch error codes too */
-#endif
-
-#ifdef __cplusplus
-#ifndef DONT_USE_EXTERN_C
-}
-#endif
-#endif
-
-#endif /* JPEGLIB_H */
diff --git a/misc/builddeps/linux64/jpeg/lib/libjpeg.a b/misc/builddeps/linux64/jpeg/lib/libjpeg.a
deleted file mode 100644 (file)
index bc49739..0000000
Binary files a/misc/builddeps/linux64/jpeg/lib/libjpeg.a and /dev/null differ
diff --git a/misc/builddeps/linux64/jpeg/lib/libjpeg.la b/misc/builddeps/linux64/jpeg/lib/libjpeg.la
deleted file mode 100755 (executable)
index ac8ef61..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libjpeg.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libjpeg.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libjpeg.
-current=8
-age=0
-revision=2
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/tmp/j/lib'
diff --git a/misc/builddeps/linux64/jpeg/share/man/man1/cjpeg.1 b/misc/builddeps/linux64/jpeg/share/man/man1/cjpeg.1
deleted file mode 100644 (file)
index 01bfa25..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-.TH CJPEG 1 "30 December 2009"
-.SH NAME
-cjpeg \- compress an image file to a JPEG file
-.SH SYNOPSIS
-.B cjpeg
-[
-.I options
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B cjpeg
-compresses the named image file, or the standard input if no file is
-named, and produces a JPEG/JFIF file on the standard output.
-The currently supported input file formats are: PPM (PBMPLUS color
-format), PGM (PBMPLUS gray-scale format), BMP, Targa, and RLE (Utah Raster
-Toolkit format).  (RLE is supported only if the URT library is available.)
-.SH OPTIONS
-All switch names may be abbreviated; for example,
-.B \-grayscale
-may be written
-.B \-gray
-or
-.BR \-gr .
-Most of the "basic" switches can be abbreviated to as little as one letter.
-Upper and lower case are equivalent (thus
-.B \-BMP
-is the same as
-.BR \-bmp ).
-British spellings are also accepted (e.g.,
-.BR \-greyscale ),
-though for brevity these are not mentioned below.
-.PP
-The basic switches are:
-.TP
-.BI \-quality " N[,...]"
-Scale quantization tables to adjust image quality.  Quality is 0 (worst) to
-100 (best); default is 75.  (See below for more info.)
-.TP
-.B \-grayscale
-Create monochrome JPEG file from color input.  Be sure to use this switch when
-compressing a grayscale BMP file, because
-.B cjpeg
-isn't bright enough to notice whether a BMP file uses only shades of gray.
-By saying
-.BR \-grayscale ,
-you'll get a smaller JPEG file that takes less time to process.
-.TP
-.B \-optimize
-Perform optimization of entropy encoding parameters.  Without this, default
-encoding parameters are used.
-.B \-optimize
-usually makes the JPEG file a little smaller, but
-.B cjpeg
-runs somewhat slower and needs much more memory.  Image quality and speed of
-decompression are unaffected by
-.BR \-optimize .
-.TP
-.B \-progressive
-Create progressive JPEG file (see below).
-.TP
-.BI \-scale " M/N"
-Scale the output image by a factor M/N.  Currently supported scale factors are
-8/N with all N from 1 to 16.
-.TP
-.B \-targa
-Input file is Targa format.  Targa files that contain an "identification"
-field will not be automatically recognized by
-.BR cjpeg ;
-for such files you must specify
-.B \-targa
-to make
-.B cjpeg
-treat the input as Targa format.
-For most Targa files, you won't need this switch.
-.PP
-The
-.B \-quality
-switch lets you trade off compressed file size against quality of the
-reconstructed image: the higher the quality setting, the larger the JPEG file,
-and the closer the output image will be to the original input.  Normally you
-want to use the lowest quality setting (smallest file) that decompresses into
-something visually indistinguishable from the original image.  For this
-purpose the quality setting should be between 50 and 95; the default of 75 is
-often about right.  If you see defects at
-.B \-quality
-75, then go up 5 or 10 counts at a time until you are happy with the output
-image.  (The optimal setting will vary from one image to another.)
-.PP
-.B \-quality
-100 will generate a quantization table of all 1's, minimizing loss in the
-quantization step (but there is still information loss in subsampling, as well
-as roundoff error).  This setting is mainly of interest for experimental
-purposes.  Quality values above about 95 are
-.B not
-recommended for normal use; the compressed file size goes up dramatically for
-hardly any gain in output image quality.
-.PP
-In the other direction, quality values below 50 will produce very small files
-of low image quality.  Settings around 5 to 10 might be useful in preparing an
-index of a large image library, for example.  Try
-.B \-quality
-2 (or so) for some amusing Cubist effects.  (Note: quality
-values below about 25 generate 2-byte quantization tables, which are
-considered optional in the JPEG standard.
-.B cjpeg
-emits a warning message when you give such a quality value, because some
-other JPEG programs may be unable to decode the resulting file.  Use
-.B \-baseline
-if you need to ensure compatibility at low quality values.)
-.PP
-The
-.B \-quality
-option has been extended in IJG version 7 for support of separate quality
-settings for luminance and chrominance (or in general, for every provided
-quantization table slot).  This feature is useful for high-quality
-applications which cannot accept the damage of color data by coarse
-subsampling settings.  You can now easily reduce the color data amount more
-smoothly with finer control without separate subsampling.  The resulting file
-is fully compliant with standard JPEG decoders.
-Note that the
-.B \-quality
-ratings refer to the quantization table slots, and that the last value is
-replicated if there are more q-table slots than parameters.  The default
-q-table slots are 0 for luminance and 1 for chrominance with default tables as
-given in the JPEG standard.  This is compatible with the old behaviour in case
-that only one parameter is given, which is then used for both luminance and
-chrominance (slots 0 and 1).  More or custom quantization tables can be set
-with
-.B \-qtables
-and assigned to components with
-.B \-qslots
-parameter (see the "wizard" switches below).
-.B Caution:
-You must explicitly add
-.BI \-sample " 1x1"
-for efficient separate color
-quality selection, since the default value used by library is 2x2!
-.PP
-The
-.B \-progressive
-switch creates a "progressive JPEG" file.  In this type of JPEG file, the data
-is stored in multiple scans of increasing quality.  If the file is being
-transmitted over a slow communications link, the decoder can use the first
-scan to display a low-quality image very quickly, and can then improve the
-display with each subsequent scan.  The final image is exactly equivalent to a
-standard JPEG file of the same quality setting, and the total file size is
-about the same --- often a little smaller.
-.PP
-Switches for advanced users:
-.TP
-.B \-dct int
-Use integer DCT method (default).
-.TP
-.B \-dct fast
-Use fast integer DCT (less accurate).
-.TP
-.B \-dct float
-Use floating-point DCT method.
-The float method is very slightly more accurate than the int method, but is
-much slower unless your machine has very fast floating-point hardware.  Also
-note that results of the floating-point method may vary slightly across
-machines, while the integer methods should give the same results everywhere.
-The fast integer method is much less accurate than the other two.
-.TP
-.B \-nosmooth
-Don't use high-quality downsampling.
-.TP
-.BI \-restart " N"
-Emit a JPEG restart marker every N MCU rows, or every N MCU blocks if "B" is
-attached to the number.
-.B \-restart 0
-(the default) means no restart markers.
-.TP
-.BI \-smooth " N"
-Smooth the input image to eliminate dithering noise.  N, ranging from 1 to
-100, indicates the strength of smoothing.  0 (the default) means no smoothing.
-.TP
-.BI \-maxmemory " N"
-Set limit for amount of memory to use in processing large images.  Value is
-in thousands of bytes, or millions of bytes if "M" is attached to the
-number.  For example,
-.B \-max 4m
-selects 4000000 bytes.  If more space is needed, temporary files will be used.
-.TP
-.BI \-outfile " name"
-Send output image to the named file, not to standard output.
-.TP
-.B \-verbose
-Enable debug printout.  More
-.BR \-v 's
-give more output.  Also, version information is printed at startup.
-.TP
-.B \-debug
-Same as
-.BR \-verbose .
-.PP
-The
-.B \-restart
-option inserts extra markers that allow a JPEG decoder to resynchronize after
-a transmission error.  Without restart markers, any damage to a compressed
-file will usually ruin the image from the point of the error to the end of the
-image; with restart markers, the damage is usually confined to the portion of
-the image up to the next restart marker.  Of course, the restart markers
-occupy extra space.  We recommend
-.B \-restart 1
-for images that will be transmitted across unreliable networks such as Usenet.
-.PP
-The
-.B \-smooth
-option filters the input to eliminate fine-scale noise.  This is often useful
-when converting dithered images to JPEG: a moderate smoothing factor of 10 to
-50 gets rid of dithering patterns in the input file, resulting in a smaller
-JPEG file and a better-looking image.  Too large a smoothing factor will
-visibly blur the image, however.
-.PP
-Switches for wizards:
-.TP
-.B \-arithmetic
-Use arithmetic coding.
-.B Caution:
-arithmetic coded JPEG is not yet widely implemented, so many decoders will be
-unable to view an arithmetic coded JPEG file at all.
-.TP
-.B \-baseline
-Force baseline-compatible quantization tables to be generated.  This clamps
-quantization values to 8 bits even at low quality settings.  (This switch is
-poorly named, since it does not ensure that the output is actually baseline
-JPEG.  For example, you can use
-.B \-baseline
-and
-.B \-progressive
-together.)
-.TP
-.BI \-qtables " file"
-Use the quantization tables given in the specified text file.
-.TP
-.BI \-qslots " N[,...]"
-Select which quantization table to use for each color component.
-.TP
-.BI \-sample " HxV[,...]"
-Set JPEG sampling factors for each color component.
-.TP
-.BI \-scans " file"
-Use the scan script given in the specified text file.
-.PP
-The "wizard" switches are intended for experimentation with JPEG.  If you
-don't know what you are doing, \fBdon't use them\fR.  These switches are
-documented further in the file wizard.txt.
-.SH EXAMPLES
-.LP
-This example compresses the PPM file foo.ppm with a quality factor of
-60 and saves the output as foo.jpg:
-.IP
-.B cjpeg \-quality
-.I 60 foo.ppm
-.B >
-.I foo.jpg
-.SH HINTS
-Color GIF files are not the ideal input for JPEG; JPEG is really intended for
-compressing full-color (24-bit) images.  In particular, don't try to convert
-cartoons, line drawings, and other images that have only a few distinct
-colors.  GIF works great on these, JPEG does not.  If you want to convert a
-GIF to JPEG, you should experiment with
-.BR cjpeg 's
-.B \-quality
-and
-.B \-smooth
-options to get a satisfactory conversion.
-.B \-smooth 10
-or so is often helpful.
-.PP
-Avoid running an image through a series of JPEG compression/decompression
-cycles.  Image quality loss will accumulate; after ten or so cycles the image
-may be noticeably worse than it was after one cycle.  It's best to use a
-lossless format while manipulating an image, then convert to JPEG format when
-you are ready to file the image away.
-.PP
-The
-.B \-optimize
-option to
-.B cjpeg
-is worth using when you are making a "final" version for posting or archiving.
-It's also a win when you are using low quality settings to make very small
-JPEG files; the percentage improvement is often a lot more than it is on
-larger files.  (At present,
-.B \-optimize
-mode is always selected when generating progressive JPEG files.)
-.SH ENVIRONMENT
-.TP
-.B JPEGMEM
-If this environment variable is set, its value is the default memory limit.
-The value is specified as described for the
-.B \-maxmemory
-switch.
-.B JPEGMEM
-overrides the default value specified when the program was compiled, and
-itself is overridden by an explicit
-.BR \-maxmemory .
-.SH SEE ALSO
-.BR djpeg (1),
-.BR jpegtran (1),
-.BR rdjpgcom (1),
-.BR wrjpgcom (1)
-.br
-.BR ppm (5),
-.BR pgm (5)
-.br
-Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
-Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
-.SH AUTHOR
-Independent JPEG Group
-.SH BUGS
-GIF input files are no longer supported, to avoid the Unisys LZW patent.
-(Conversion of GIF files to JPEG is usually a bad idea anyway.)
-.PP
-Not all variants of BMP and Targa file formats are supported.
-.PP
-The
-.B \-targa
-switch is not a bug, it's a feature.  (It would be a bug if the Targa format
-designers had not been clueless.)
diff --git a/misc/builddeps/linux64/jpeg/share/man/man1/djpeg.1 b/misc/builddeps/linux64/jpeg/share/man/man1/djpeg.1
deleted file mode 100644 (file)
index f3722d1..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-.TH DJPEG 1 "3 October 2009"
-.SH NAME
-djpeg \- decompress a JPEG file to an image file
-.SH SYNOPSIS
-.B djpeg
-[
-.I options
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B djpeg
-decompresses the named JPEG file, or the standard input if no file is named,
-and produces an image file on the standard output.  PBMPLUS (PPM/PGM), BMP,
-GIF, Targa, or RLE (Utah Raster Toolkit) output format can be selected.
-(RLE is supported only if the URT library is available.)
-.SH OPTIONS
-All switch names may be abbreviated; for example,
-.B \-grayscale
-may be written
-.B \-gray
-or
-.BR \-gr .
-Most of the "basic" switches can be abbreviated to as little as one letter.
-Upper and lower case are equivalent (thus
-.B \-BMP
-is the same as
-.BR \-bmp ).
-British spellings are also accepted (e.g.,
-.BR \-greyscale ),
-though for brevity these are not mentioned below.
-.PP
-The basic switches are:
-.TP
-.BI \-colors " N"
-Reduce image to at most N colors.  This reduces the number of colors used in
-the output image, so that it can be displayed on a colormapped display or
-stored in a colormapped file format.  For example, if you have an 8-bit
-display, you'd need to reduce to 256 or fewer colors.
-.TP
-.BI \-quantize " N"
-Same as
-.BR \-colors .
-.B \-colors
-is the recommended name,
-.B \-quantize
-is provided only for backwards compatibility.
-.TP
-.B \-fast
-Select recommended processing options for fast, low quality output.  (The
-default options are chosen for highest quality output.)  Currently, this is
-equivalent to \fB\-dct fast \-nosmooth \-onepass \-dither ordered\fR.
-.TP
-.B \-grayscale
-Force gray-scale output even if JPEG file is color.  Useful for viewing on
-monochrome displays; also,
-.B djpeg
-runs noticeably faster in this mode.
-.TP
-.BI \-scale " M/N"
-Scale the output image by a factor M/N.  Currently supported scale factors are
-M/N with all M from 1 to 16, where N is the source DCT size, which is 8 for
-baseline JPEG.  If the /N part is omitted, then M specifies the DCT scaled
-size to be applied on the given input.  For baseline JPEG this is equivalent
-to M/8 scaling, since the source DCT size for baseline JPEG is 8.
-Scaling is handy if the image is larger than your screen; also,
-.B djpeg
-runs much faster when scaling down the output.
-.TP
-.B \-bmp
-Select BMP output format (Windows flavor).  8-bit colormapped format is
-emitted if
-.B \-colors
-or
-.B \-grayscale
-is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
-format is emitted.
-.TP
-.B \-gif
-Select GIF output format.  Since GIF does not support more than 256 colors,
-.B \-colors 256
-is assumed (unless you specify a smaller number of colors).
-.TP
-.B \-os2
-Select BMP output format (OS/2 1.x flavor).  8-bit colormapped format is
-emitted if
-.B \-colors
-or
-.B \-grayscale
-is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
-format is emitted.
-.TP
-.B \-pnm
-Select PBMPLUS (PPM/PGM) output format (this is the default format).
-PGM is emitted if the JPEG file is gray-scale or if
-.B \-grayscale
-is specified; otherwise PPM is emitted.
-.TP
-.B \-rle
-Select RLE output format.  (Requires URT library.)
-.TP
-.B \-targa
-Select Targa output format.  Gray-scale format is emitted if the JPEG file is
-gray-scale or if
-.B \-grayscale
-is specified; otherwise, colormapped format is emitted if
-.B \-colors
-is specified; otherwise, 24-bit full-color format is emitted.
-.PP
-Switches for advanced users:
-.TP
-.B \-dct int
-Use integer DCT method (default).
-.TP
-.B \-dct fast
-Use fast integer DCT (less accurate).
-.TP
-.B \-dct float
-Use floating-point DCT method.
-The float method is very slightly more accurate than the int method, but is
-much slower unless your machine has very fast floating-point hardware.  Also
-note that results of the floating-point method may vary slightly across
-machines, while the integer methods should give the same results everywhere.
-The fast integer method is much less accurate than the other two.
-.TP
-.B \-dither fs
-Use Floyd-Steinberg dithering in color quantization.
-.TP
-.B \-dither ordered
-Use ordered dithering in color quantization.
-.TP
-.B \-dither none
-Do not use dithering in color quantization.
-By default, Floyd-Steinberg dithering is applied when quantizing colors; this
-is slow but usually produces the best results.  Ordered dither is a compromise
-between speed and quality; no dithering is fast but usually looks awful.  Note
-that these switches have no effect unless color quantization is being done.
-Ordered dither is only available in
-.B \-onepass
-mode.
-.TP
-.BI \-map " file"
-Quantize to the colors used in the specified image file.  This is useful for
-producing multiple files with identical color maps, or for forcing a
-predefined set of colors to be used.  The
-.I file
-must be a GIF or PPM file. This option overrides
-.B \-colors
-and
-.BR \-onepass .
-.TP
-.B \-nosmooth
-Don't use high-quality upsampling.
-.TP
-.B \-onepass
-Use one-pass instead of two-pass color quantization.  The one-pass method is
-faster and needs less memory, but it produces a lower-quality image.
-.B \-onepass
-is ignored unless you also say
-.B \-colors
-.IR N .
-Also, the one-pass method is always used for gray-scale output (the two-pass
-method is no improvement then).
-.TP
-.BI \-maxmemory " N"
-Set limit for amount of memory to use in processing large images.  Value is
-in thousands of bytes, or millions of bytes if "M" is attached to the
-number.  For example,
-.B \-max 4m
-selects 4000000 bytes.  If more space is needed, temporary files will be used.
-.TP
-.BI \-outfile " name"
-Send output image to the named file, not to standard output.
-.TP
-.B \-verbose
-Enable debug printout.  More
-.BR \-v 's
-give more output.  Also, version information is printed at startup.
-.TP
-.B \-debug
-Same as
-.BR \-verbose .
-.SH EXAMPLES
-.LP
-This example decompresses the JPEG file foo.jpg, quantizes it to
-256 colors, and saves the output in 8-bit BMP format in foo.bmp:
-.IP
-.B djpeg \-colors 256 \-bmp
-.I foo.jpg
-.B >
-.I foo.bmp
-.SH HINTS
-To get a quick preview of an image, use the
-.B \-grayscale
-and/or
-.B \-scale
-switches.
-.B \-grayscale \-scale 1/8
-is the fastest case.
-.PP
-Several options are available that trade off image quality to gain speed.
-.B \-fast
-turns on the recommended settings.
-.PP
-.B \-dct fast
-and/or
-.B \-nosmooth
-gain speed at a small sacrifice in quality.
-When producing a color-quantized image,
-.B \-onepass \-dither ordered
-is fast but much lower quality than the default behavior.
-.B \-dither none
-may give acceptable results in two-pass mode, but is seldom tolerable in
-one-pass mode.
-.PP
-If you are fortunate enough to have very fast floating point hardware,
-\fB\-dct float\fR may be even faster than \fB\-dct fast\fR.  But on most
-machines \fB\-dct float\fR is slower than \fB\-dct int\fR; in this case it is
-not worth using, because its theoretical accuracy advantage is too small to be
-significant in practice.
-.SH ENVIRONMENT
-.TP
-.B JPEGMEM
-If this environment variable is set, its value is the default memory limit.
-The value is specified as described for the
-.B \-maxmemory
-switch.
-.B JPEGMEM
-overrides the default value specified when the program was compiled, and
-itself is overridden by an explicit
-.BR \-maxmemory .
-.SH SEE ALSO
-.BR cjpeg (1),
-.BR jpegtran (1),
-.BR rdjpgcom (1),
-.BR wrjpgcom (1)
-.br
-.BR ppm (5),
-.BR pgm (5)
-.br
-Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
-Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
-.SH AUTHOR
-Independent JPEG Group
-.SH BUGS
-To avoid the Unisys LZW patent,
-.B djpeg
-produces uncompressed GIF files.  These are larger than they should be, but
-are readable by standard GIF decoders.
diff --git a/misc/builddeps/linux64/jpeg/share/man/man1/jpegtran.1 b/misc/builddeps/linux64/jpeg/share/man/man1/jpegtran.1
deleted file mode 100644 (file)
index 0ad1bbc..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-.TH JPEGTRAN 1 "28 December 2009"
-.SH NAME
-jpegtran \- lossless transformation of JPEG files
-.SH SYNOPSIS
-.B jpegtran
-[
-.I options
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B jpegtran
-performs various useful transformations of JPEG files.
-It can translate the coded representation from one variant of JPEG to another,
-for example from baseline JPEG to progressive JPEG or vice versa.  It can also
-perform some rearrangements of the image data, for example turning an image
-from landscape to portrait format by rotation.
-.PP
-.B jpegtran
-works by rearranging the compressed data (DCT coefficients), without
-ever fully decoding the image.  Therefore, its transformations are lossless:
-there is no image degradation at all, which would not be true if you used
-.B djpeg
-followed by
-.B cjpeg
-to accomplish the same conversion.  But by the same token,
-.B jpegtran
-cannot perform lossy operations such as changing the image quality.
-.PP
-.B jpegtran
-reads the named JPEG/JFIF file, or the standard input if no file is
-named, and produces a JPEG/JFIF file on the standard output.
-.SH OPTIONS
-All switch names may be abbreviated; for example,
-.B \-optimize
-may be written
-.B \-opt
-or
-.BR \-o .
-Upper and lower case are equivalent.
-British spellings are also accepted (e.g.,
-.BR \-optimise ),
-though for brevity these are not mentioned below.
-.PP
-To specify the coded JPEG representation used in the output file,
-.B jpegtran
-accepts a subset of the switches recognized by
-.BR cjpeg :
-.TP
-.B \-optimize
-Perform optimization of entropy encoding parameters.
-.TP
-.B \-progressive
-Create progressive JPEG file.
-.TP
-.BI \-restart " N"
-Emit a JPEG restart marker every N MCU rows, or every N MCU blocks if "B" is
-attached to the number.
-.TP
-.B \-arithmetic
-Use arithmetic coding.
-.TP
-.BI \-scans " file"
-Use the scan script given in the specified text file.
-.PP
-See
-.BR cjpeg (1)
-for more details about these switches.
-If you specify none of these switches, you get a plain baseline-JPEG output
-file.  The quality setting and so forth are determined by the input file.
-.PP
-The image can be losslessly transformed by giving one of these switches:
-.TP
-.B \-flip horizontal
-Mirror image horizontally (left-right).
-.TP
-.B \-flip vertical
-Mirror image vertically (top-bottom).
-.TP
-.B \-rotate 90
-Rotate image 90 degrees clockwise.
-.TP
-.B \-rotate 180
-Rotate image 180 degrees.
-.TP
-.B \-rotate 270
-Rotate image 270 degrees clockwise (or 90 ccw).
-.TP
-.B \-transpose
-Transpose image (across UL-to-LR axis).
-.TP
-.B \-transverse
-Transverse transpose (across UR-to-LL axis).
-.IP
-The transpose transformation has no restrictions regarding image dimensions.
-The other transformations operate rather oddly if the image dimensions are not
-a multiple of the iMCU size (usually 8 or 16 pixels), because they can only
-transform complete blocks of DCT coefficient data in the desired way.
-.IP
-.BR jpegtran 's
-default behavior when transforming an odd-size image is designed
-to preserve exact reversibility and mathematical consistency of the
-transformation set.  As stated, transpose is able to flip the entire image
-area.  Horizontal mirroring leaves any partial iMCU column at the right edge
-untouched, but is able to flip all rows of the image.  Similarly, vertical
-mirroring leaves any partial iMCU row at the bottom edge untouched, but is
-able to flip all columns.  The other transforms can be built up as sequences
-of transpose and flip operations; for consistency, their actions on edge
-pixels are defined to be the same as the end result of the corresponding
-transpose-and-flip sequence.
-.IP
-For practical use, you may prefer to discard any untransformable edge pixels
-rather than having a strange-looking strip along the right and/or bottom edges
-of a transformed image.  To do this, add the
-.B \-trim
-switch:
-.TP
-.B \-trim
-Drop non-transformable edge blocks.
-.IP
-Obviously, a transformation with
-.B \-trim
-is not reversible, so strictly speaking
-.B jpegtran
-with this switch is not lossless.  Also, the expected mathematical
-equivalences between the transformations no longer hold.  For example,
-.B \-rot 270 -trim
-trims only the bottom edge, but
-.B \-rot 90 -trim
-followed by
-.B \-rot 180 -trim
-trims both edges.
-.IP
-If you are only interested in perfect transformation, add the
-.B \-perfect
-switch:
-.TP
-.B \-perfect
-Fails with an error if the transformation is not perfect.
-.IP
-For example you may want to do
-.IP
-.B (jpegtran \-rot 90 -perfect
-.I foo.jpg
-.B || djpeg
-.I foo.jpg
-.B | pnmflip \-r90 | cjpeg)
-.IP
-to do a perfect rotation if available or an approximated one if not.
-.PP
-We also offer a lossless-crop option, which discards data outside a given
-image region but losslessly preserves what is inside.  Like the rotate and
-flip transforms, lossless crop is restricted by the current JPEG format: the
-upper left corner of the selected region must fall on an iMCU boundary.  If
-this does not hold for the given crop parameters, we silently move the upper
-left corner up and/or left to make it so, simultaneously increasing the region
-dimensions to keep the lower right crop corner unchanged.  (Thus, the output
-image covers at least the requested region, but may cover more.)
-
-The image can be losslessly cropped by giving the switch:
-.TP
-.B \-crop WxH+X+Y
-Crop to a rectangular subarea of width W, height H starting at point X,Y.
-.PP
-Other not-strictly-lossless transformation switches are:
-.TP
-.B \-grayscale
-Force grayscale output.
-.IP
-This option discards the chrominance channels if the input image is YCbCr
-(ie, a standard color JPEG), resulting in a grayscale JPEG file.  The
-luminance channel is preserved exactly, so this is a better method of reducing
-to grayscale than decompression, conversion, and recompression.  This switch
-is particularly handy for fixing a monochrome picture that was mistakenly
-encoded as a color JPEG.  (In such a case, the space savings from getting rid
-of the near-empty chroma channels won't be large; but the decoding time for
-a grayscale JPEG is substantially less than that for a color JPEG.)
-.TP
-.BI \-scale " M/N"
-Scale the output image by a factor M/N.
-.IP
-Currently supported scale factors are M/N with all M from 1 to 16, where N is
-the source DCT size, which is 8 for baseline JPEG.  If the /N part is omitted,
-then M specifies the DCT scaled size to be applied on the given input.  For
-baseline JPEG this is equivalent to M/8 scaling, since the source DCT size
-for baseline JPEG is 8.
-.B Caution:
-An implementation of the JPEG SmartScale extension is required for this
-feature.  SmartScale enabled JPEG is not yet widely implemented, so many
-decoders will be unable to view a SmartScale extended JPEG file at all.
-.PP
-.B jpegtran
-also recognizes these switches that control what to do with "extra" markers,
-such as comment blocks:
-.TP
-.B \-copy none
-Copy no extra markers from source file.  This setting suppresses all
-comments and other excess baggage present in the source file.
-.TP
-.B \-copy comments
-Copy only comment markers.  This setting copies comments from the source file,
-but discards any other inessential (for image display) data.
-.TP
-.B \-copy all
-Copy all extra markers.  This setting preserves miscellaneous markers
-found in the source file, such as JFIF thumbnails, Exif data, and Photoshop
-settings.  In some files these extra markers can be sizable.
-.IP
-The default behavior is
-.BR "\-copy comments" .
-(Note: in IJG releases v6 and v6a,
-.B jpegtran
-always did the equivalent of
-.BR "\-copy none" .)
-.PP
-Additional switches recognized by jpegtran are:
-.TP
-.BI \-maxmemory " N"
-Set limit for amount of memory to use in processing large images.  Value is
-in thousands of bytes, or millions of bytes if "M" is attached to the
-number.  For example,
-.B \-max 4m
-selects 4000000 bytes.  If more space is needed, temporary files will be used.
-.TP
-.BI \-outfile " name"
-Send output image to the named file, not to standard output.
-.TP
-.B \-verbose
-Enable debug printout.  More
-.BR \-v 's
-give more output.  Also, version information is printed at startup.
-.TP
-.B \-debug
-Same as
-.BR \-verbose .
-.SH EXAMPLES
-.LP
-This example converts a baseline JPEG file to progressive form:
-.IP
-.B jpegtran \-progressive
-.I foo.jpg
-.B >
-.I fooprog.jpg
-.PP
-This example rotates an image 90 degrees clockwise, discarding any
-unrotatable edge pixels:
-.IP
-.B jpegtran \-rot 90 -trim
-.I foo.jpg
-.B >
-.I foo90.jpg
-.SH ENVIRONMENT
-.TP
-.B JPEGMEM
-If this environment variable is set, its value is the default memory limit.
-The value is specified as described for the
-.B \-maxmemory
-switch.
-.B JPEGMEM
-overrides the default value specified when the program was compiled, and
-itself is overridden by an explicit
-.BR \-maxmemory .
-.SH SEE ALSO
-.BR cjpeg (1),
-.BR djpeg (1),
-.BR rdjpgcom (1),
-.BR wrjpgcom (1)
-.br
-Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
-Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
-.SH AUTHOR
-Independent JPEG Group
-.SH BUGS
-The transform options can't transform odd-size images perfectly.  Use
-.B \-trim
-or
-.B \-perfect
-if you don't like the results.
-.PP
-The entire image is read into memory and then written out again, even in
-cases where this isn't really necessary.  Expect swapping on large images,
-especially when using the more complex transform options.
diff --git a/misc/builddeps/linux64/jpeg/share/man/man1/rdjpgcom.1 b/misc/builddeps/linux64/jpeg/share/man/man1/rdjpgcom.1
deleted file mode 100644 (file)
index 97611df..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-.TH RDJPGCOM 1 "02 April 2009"
-.SH NAME
-rdjpgcom \- display text comments from a JPEG file
-.SH SYNOPSIS
-.B rdjpgcom
-[
-.B \-raw
-]
-[
-.B \-verbose
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B rdjpgcom
-reads the named JPEG/JFIF file, or the standard input if no file is named,
-and prints any text comments found in the file on the standard output.
-.PP
-The JPEG standard allows "comment" (COM) blocks to occur within a JPEG file.
-Although the standard doesn't actually define what COM blocks are for, they
-are widely used to hold user-supplied text strings.  This lets you add
-annotations, titles, index terms, etc to your JPEG files, and later retrieve
-them as text.  COM blocks do not interfere with the image stored in the JPEG
-file.  The maximum size of a COM block is 64K, but you can have as many of
-them as you like in one JPEG file.
-.SH OPTIONS
-.TP
-.B \-raw
-Normally
-.B rdjpgcom
-escapes non-printable characters in comments, for security reasons.
-This option avoids that.
-.PP
-.B \-verbose
-Causes
-.B rdjpgcom
-to also display the JPEG image dimensions.
-.PP
-Switch names may be abbreviated, and are not case sensitive.
-.SH HINTS
-.B rdjpgcom
-does not depend on the IJG JPEG library.  Its source code is intended as an
-illustration of the minimum amount of code required to parse a JPEG file
-header correctly.
-.PP
-In
-.B \-verbose
-mode,
-.B rdjpgcom
-will also attempt to print the contents of any "APP12" markers as text.
-Some digital cameras produce APP12 markers containing useful textual
-information.  If you like, you can modify the source code to print
-other APPn marker types as well.
-.SH SEE ALSO
-.BR cjpeg (1),
-.BR djpeg (1),
-.BR jpegtran (1),
-.BR wrjpgcom (1)
-.SH AUTHOR
-Independent JPEG Group
diff --git a/misc/builddeps/linux64/jpeg/share/man/man1/wrjpgcom.1 b/misc/builddeps/linux64/jpeg/share/man/man1/wrjpgcom.1
deleted file mode 100644 (file)
index d419a99..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-.TH WRJPGCOM 1 "15 June 1995"
-.SH NAME
-wrjpgcom \- insert text comments into a JPEG file
-.SH SYNOPSIS
-.B wrjpgcom
-[
-.B \-replace
-]
-[
-.BI \-comment " text"
-]
-[
-.BI \-cfile " name"
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B wrjpgcom
-reads the named JPEG/JFIF file, or the standard input if no file is named,
-and generates a new JPEG/JFIF file on standard output.  A comment block is
-added to the file.
-.PP
-The JPEG standard allows "comment" (COM) blocks to occur within a JPEG file.
-Although the standard doesn't actually define what COM blocks are for, they
-are widely used to hold user-supplied text strings.  This lets you add
-annotations, titles, index terms, etc to your JPEG files, and later retrieve
-them as text.  COM blocks do not interfere with the image stored in the JPEG
-file.  The maximum size of a COM block is 64K, but you can have as many of
-them as you like in one JPEG file.
-.PP
-.B wrjpgcom
-adds a COM block, containing text you provide, to a JPEG file.
-Ordinarily, the COM block is added after any existing COM blocks; but you
-can delete the old COM blocks if you wish.
-.SH OPTIONS
-Switch names may be abbreviated, and are not case sensitive.
-.TP
-.B \-replace
-Delete any existing COM blocks from the file.
-.TP
-.BI \-comment " text"
-Supply text for new COM block on command line.
-.TP
-.BI \-cfile " name"
-Read text for new COM block from named file.
-.PP
-If you have only one line of comment text to add, you can provide it on the
-command line with
-.BR \-comment .
-The comment text must be surrounded with quotes so that it is treated as a
-single argument.  Longer comments can be read from a text file.
-.PP
-If you give neither
-.B \-comment
-nor
-.BR \-cfile ,
-then
-.B wrjpgcom
-will read the comment text from standard input.  (In this case an input image
-file name MUST be supplied, so that the source JPEG file comes from somewhere
-else.)  You can enter multiple lines, up to 64KB worth.  Type an end-of-file
-indicator (usually control-D) to terminate the comment text entry.
-.PP
-.B wrjpgcom
-will not add a COM block if the provided comment string is empty.  Therefore
-\fB\-replace \-comment ""\fR can be used to delete all COM blocks from a file.
-.SH EXAMPLES
-.LP
-Add a short comment to in.jpg, producing out.jpg:
-.IP
-.B wrjpgcom \-c
-\fI"View of my back yard" in.jpg
-.B >
-.I out.jpg
-.PP
-Attach a long comment previously stored in comment.txt:
-.IP
-.B wrjpgcom
-.I in.jpg
-.B <
-.I comment.txt
-.B >
-.I out.jpg
-.PP
-or equivalently
-.IP
-.B wrjpgcom
-.B -cfile
-.I comment.txt
-.B <
-.I in.jpg
-.B >
-.I out.jpg
-.SH SEE ALSO
-.BR cjpeg (1),
-.BR djpeg (1),
-.BR jpegtran (1),
-.BR rdjpgcom (1)
-.SH AUTHOR
-Independent JPEG Group
diff --git a/misc/builddeps/linux64/ode/bin/ode-config b/misc/builddeps/linux64/ode/bin/ode-config
deleted file mode 100755 (executable)
index dddc75d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-
-prefix=/usr/local
-exec_prefix=${prefix}
-exec_prefix_set=no
-
-usage="\
-Usage: ode-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]"
-
-if test $# -eq 0; then
-      echo "${usage}" 1>&2
-      exit 1
-fi
-
-while test $# -gt 0; do
-  case "$1" in
-  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) optarg= ;;
-  esac
-
-  case $1 in
-    --prefix=*)
-      prefix=$optarg
-      if test $exec_prefix_set = no ; then
-        exec_prefix=$optarg
-      fi
-      ;;
-    --prefix)
-      echo $prefix
-      ;;
-    --exec-prefix=*)
-      exec_prefix=$optarg
-      exec_prefix_set=yes
-      ;;
-    --exec-prefix)
-      echo $exec_prefix
-      ;;
-    --version)
-      echo 0.12
-      ;;
-    --cflags)
-      echo  -I${prefix}/include -DdDOUBLE
-      ;;
-    --libs)
-      echo  -L${exec_prefix}/lib -lode
-      ;;
-    *)
-      echo "${usage}" 1>&2
-      exit 1
-      ;;
-  esac
-  shift
-done
diff --git a/misc/builddeps/linux64/ode/include/ode/collision.h b/misc/builddeps/linux64/ode/include/ode/collision.h
deleted file mode 100644 (file)
index e89726c..0000000
+++ /dev/null
@@ -1,1523 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_COLLISION_H_
-#define _ODE_COLLISION_H_
-
-#include <ode/common.h>
-#include <ode/collision_space.h>
-#include <ode/contact.h>
-// Include odeinit.h for backward compatibility as some of initialization APIs 
-// were initally declared in current header.
-#include <ode/odeinit.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup collide Collision Detection
- *
- * ODE has two main components: a dynamics simulation engine and a collision
- * detection engine. The collision engine is given information about the
- * shape of each body. At each time step it figures out which bodies touch
- * each other and passes the resulting contact point information to the user.
- * The user in turn creates contact joints between bodies.
- *
- * Using ODE's collision detection is optional - an alternative collision
- * detection system can be used as long as it can supply the right kinds of
- * contact information.
- */
-
-
-/* ************************************************************************ */
-/* general functions */
-
-/**
- * @brief Destroy a geom, removing it from any space.
- *
- * Destroy a geom, removing it from any space it is in first. This one
- * function destroys a geom of any type, but to create a geom you must call
- * a creation function for that type.
- *
- * When a space is destroyed, if its cleanup mode is 1 (the default) then all
- * the geoms in that space are automatically destroyed as well.
- *
- * @param geom the geom to be destroyed.
- * @ingroup collide
- */
-ODE_API void dGeomDestroy (dGeomID geom);
-
-
-/**
- * @brief Set the user-defined data pointer stored in the geom.
- *
- * @param geom the geom to hold the data
- * @param data the data pointer to be stored
- * @ingroup collide
- */
-ODE_API void dGeomSetData (dGeomID geom, void* data);
-
-
-/**
- * @brief Get the user-defined data pointer stored in the geom.
- *
- * @param geom the geom containing the data
- * @ingroup collide
- */
-ODE_API void *dGeomGetData (dGeomID geom);
-
-
-/**
- * @brief Set the body associated with a placeable geom.
- *
- * Setting a body on a geom automatically combines the position vector and
- * rotation matrix of the body and geom, so that setting the position or
- * orientation of one will set the value for both objects. Setting a body
- * ID of zero gives the geom its own position and rotation, independent
- * from any body. If the geom was previously connected to a body then its
- * new independent position/rotation is set to the current position/rotation
- * of the body.
- *
- * Calling these functions on a non-placeable geom results in a runtime
- * error in the debug build of ODE.
- *
- * @param geom the geom to connect
- * @param body the body to attach to the geom
- * @ingroup collide
- */
-ODE_API void dGeomSetBody (dGeomID geom, dBodyID body);
-
-
-/**
- * @brief Get the body associated with a placeable geom.
- * @param geom the geom to query.
- * @sa dGeomSetBody
- * @ingroup collide
- */
-ODE_API dBodyID dGeomGetBody (dGeomID geom);
-
-
-/**
- * @brief Set the position vector of a placeable geom.
- *
- * If the geom is attached to a body, the body's position will also be changed.
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to set.
- * @param x the new X coordinate.
- * @param y the new Y coordinate.
- * @param z the new Z coordinate.
- * @sa dBodySetPosition
- * @ingroup collide
- */
-ODE_API void dGeomSetPosition (dGeomID geom, dReal x, dReal y, dReal z);
-
-
-/**
- * @brief Set the rotation matrix of a placeable geom.
- *
- * If the geom is attached to a body, the body's rotation will also be changed.
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to set.
- * @param R the new rotation matrix.
- * @sa dBodySetRotation
- * @ingroup collide
- */
-ODE_API void dGeomSetRotation (dGeomID geom, const dMatrix3 R);
-
-
-/**
- * @brief Set the rotation of a placeable geom.
- *
- * If the geom is attached to a body, the body's rotation will also be changed.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to set.
- * @param Q the new rotation.
- * @sa dBodySetQuaternion
- * @ingroup collide
- */
-ODE_API void dGeomSetQuaternion (dGeomID geom, const dQuaternion Q);
-
-
-/**
- * @brief Get the position vector of a placeable geom.
- *
- * If the geom is attached to a body, the body's position will be returned.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to query.
- * @returns A pointer to the geom's position vector.
- * @remarks The returned value is a pointer to the geom's internal
- *          data structure. It is valid until any changes are made
- *          to the geom.
- * @sa dBodyGetPosition
- * @ingroup collide
- */
-ODE_API const dReal * dGeomGetPosition (dGeomID geom);
-
-
-/**
- * @brief Copy the position of a geom into a vector.
- * @ingroup collide
- * @param geom  the geom to query
- * @param pos   a copy of the geom position
- * @sa dGeomGetPosition
- */
-ODE_API void dGeomCopyPosition (dGeomID geom, dVector3 pos);
-
-
-/**
- * @brief Get the rotation matrix of a placeable geom.
- *
- * If the geom is attached to a body, the body's rotation will be returned.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to query.
- * @returns A pointer to the geom's rotation matrix.
- * @remarks The returned value is a pointer to the geom's internal
- *          data structure. It is valid until any changes are made
- *          to the geom.
- * @sa dBodyGetRotation
- * @ingroup collide
- */
-ODE_API const dReal * dGeomGetRotation (dGeomID geom);
-
-
-/**
- * @brief Get the rotation matrix of a placeable geom.
- *
- * If the geom is attached to a body, the body's rotation will be returned.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom   the geom to query.
- * @param R      a copy of the geom rotation
- * @sa dGeomGetRotation
- * @ingroup collide
- */
-ODE_API void dGeomCopyRotation(dGeomID geom, dMatrix3 R);
-
-
-/**
- * @brief Get the rotation quaternion of a placeable geom.
- *
- * If the geom is attached to a body, the body's quaternion will be returned.
- *
- * Calling this function on a non-placeable geom results in a runtime error in
- * the debug build of ODE.
- *
- * @param geom the geom to query.
- * @param result a copy of the rotation quaternion.
- * @sa dBodyGetQuaternion
- * @ingroup collide
- */
-ODE_API void dGeomGetQuaternion (dGeomID geom, dQuaternion result);
-
-
-/**
- * @brief Return the axis-aligned bounding box.
- *
- * Return in aabb an axis aligned bounding box that surrounds the given geom.
- * The aabb array has elements (minx, maxx, miny, maxy, minz, maxz). If the
- * geom is a space, a bounding box that surrounds all contained geoms is
- * returned.
- *
- * This function may return a pre-computed cached bounding box, if it can
- * determine that the geom has not moved since the last time the bounding
- * box was computed.
- *
- * @param geom the geom to query
- * @param aabb the returned bounding box
- * @ingroup collide
- */
-ODE_API void dGeomGetAABB (dGeomID geom, dReal aabb[6]);
-
-
-/**
- * @brief Determing if a geom is a space.
- * @param geom the geom to query
- * @returns Non-zero if the geom is a space, zero otherwise.
- * @ingroup collide
- */
-ODE_API int dGeomIsSpace (dGeomID geom);
-
-
-/**
- * @brief Query for the space containing a particular geom.
- * @param geom the geom to query
- * @returns The space that contains the geom, or NULL if the geom is
- *          not contained by a space.
- * @ingroup collide
- */
-ODE_API dSpaceID dGeomGetSpace (dGeomID);
-
-
-/**
- * @brief Given a geom, this returns its class.
- *
- * The ODE classes are:
- *  @li dSphereClass
- *  @li dBoxClass
- *  @li dCylinderClass
- *  @li dPlaneClass
- *  @li dRayClass
- *  @li dConvexClass
- *  @li dGeomTransformClass
- *  @li dTriMeshClass
- *  @li dSimpleSpaceClass
- *  @li dHashSpaceClass
- *  @li dQuadTreeSpaceClass
- *  @li dFirstUserClass
- *  @li dLastUserClass
- *
- * User-defined class will return their own number.
- *
- * @param geom the geom to query
- * @returns The geom class ID.
- * @ingroup collide
- */
-ODE_API int dGeomGetClass (dGeomID geom);
-
-
-/**
- * @brief Set the "category" bitfield for the given geom.
- *
- * The category bitfield is used by spaces to govern which geoms will
- * interact with each other. The bitfield is guaranteed to be at least
- * 32 bits wide. The default category values for newly created geoms
- * have all bits set.
- *
- * @param geom the geom to set
- * @param bits the new bitfield value
- * @ingroup collide
- */
-ODE_API void dGeomSetCategoryBits (dGeomID geom, unsigned long bits);
-
-
-/**
- * @brief Set the "collide" bitfield for the given geom.
- *
- * The collide bitfield is used by spaces to govern which geoms will
- * interact with each other. The bitfield is guaranteed to be at least
- * 32 bits wide. The default category values for newly created geoms
- * have all bits set.
- *
- * @param geom the geom to set
- * @param bits the new bitfield value
- * @ingroup collide
- */
-ODE_API void dGeomSetCollideBits (dGeomID geom, unsigned long bits);
-
-
-/**
- * @brief Get the "category" bitfield for the given geom.
- *
- * @param geom the geom to set
- * @param bits the new bitfield value
- * @sa dGeomSetCategoryBits
- * @ingroup collide
- */
-ODE_API unsigned long dGeomGetCategoryBits (dGeomID);
-
-
-/**
- * @brief Get the "collide" bitfield for the given geom.
- *
- * @param geom the geom to set
- * @param bits the new bitfield value
- * @sa dGeomSetCollideBits
- * @ingroup collide
- */
-ODE_API unsigned long dGeomGetCollideBits (dGeomID);
-
-
-/**
- * @brief Enable a geom.
- *
- * Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2,
- * although they can still be members of a space. New geoms are created in
- * the enabled state.
- *
- * @param geom   the geom to enable
- * @sa dGeomDisable
- * @sa dGeomIsEnabled
- * @ingroup collide
- */
-ODE_API void dGeomEnable (dGeomID geom);
-
-
-/**
- * @brief Disable a geom.
- *
- * Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2,
- * although they can still be members of a space. New geoms are created in
- * the enabled state.
- *
- * @param geom   the geom to disable
- * @sa dGeomDisable
- * @sa dGeomIsEnabled
- * @ingroup collide
- */
-ODE_API void dGeomDisable (dGeomID geom);
-
-
-/**
- * @brief Check to see if a geom is enabled.
- *
- * Disabled geoms are completely ignored by dSpaceCollide and dSpaceCollide2,
- * although they can still be members of a space. New geoms are created in
- * the enabled state.
- *
- * @param geom   the geom to query
- * @returns Non-zero if the geom is enabled, zero otherwise.
- * @sa dGeomDisable
- * @sa dGeomIsEnabled
- * @ingroup collide
- */
-ODE_API int dGeomIsEnabled (dGeomID geom);
-
-
-enum
-{
-       dGeomCommonControlClass = 0,
-       dGeomColliderControlClass = 1
-};
-
-enum
-{
-       dGeomCommonAnyControlCode = 0,
-
-       dGeomColliderSetMergeSphereContactsControlCode = 1,
-       dGeomColliderGetMergeSphereContactsControlCode = 2
-};
-
-enum
-{
-       dGeomColliderMergeContactsValue__Default = 0, // Used with Set... to restore default value
-       dGeomColliderMergeContactsValue_None = 1,
-       dGeomColliderMergeContactsValue_Normals = 2,
-       dGeomColliderMergeContactsValue_Full = 3
-};
-
-/**
- * @brief Execute low level control operation for geometry.
- *
- * The variable the dataSize points to must be initialized before the call.
- * If the size does not match the one expected for the control class/code function
- * changes it to the size expected and returns failure. This implies the function 
- * can be called with NULL data and zero size to test if control class/code is supported
- * and obtain required data size for it.
- *
- * dGeomCommonAnyControlCode applies to any control class and returns success if 
- * at least one control code is available for the given class with given geom.
- *
- * Currently there are the folliwing control classes supported:
- *  @li dGeomColliderControlClass
- *
- * For dGeomColliderControlClass there are the following codes available:
- *  @li dGeomColliderSetMergeSphereContactsControlCode (arg of type int, dGeomColliderMergeContactsValue_*)
- *  @li dGeomColliderGetMergeSphereContactsControlCode (arg of type int, dGeomColliderMergeContactsValue_*)
- *
- * @param geom   the geom to control
- * @param controlClass   the control class
- * @param controlCode   the control code for the class
- * @param dataValue   the control argument pointer
- * @param dataSize   the control argument size provided or expected
- * @returns Boolean execution status
- * @ingroup collide
- */
-ODE_API int dGeomLowLevelControl (dGeomID geom, int controlClass, int controlCode, void *dataValue, int *dataSize);
-
-
-/**
- * @brief Get world position of a relative point on geom.
- *
- * Calling this function on a non-placeable geom results in the same point being
- * returned.
- *
- * @ingroup collide
- * @param result will contain the result.
- */
-ODE_API void dGeomGetRelPointPos
-(
-  dGeomID geom, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief takes a point in global coordinates and returns
- * the point's position in geom-relative coordinates.
- *
- * Calling this function on a non-placeable geom results in the same point being
- * returned.
- *
- * @remarks
- * This is the inverse of dGeomGetRelPointPos()
- * @ingroup collide
- * @param result will contain the result.
- */
-ODE_API void dGeomGetPosRelPoint
-(
-  dGeomID geom, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Convert from geom-local to world coordinates.
- *
- * Calling this function on a non-placeable geom results in the same vector being
- * returned.
- *
- * @ingroup collide
- * @param result will contain the result.
- */
-ODE_API void dGeomVectorToWorld
-(
-  dGeomID geom, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Convert from world to geom-local coordinates.
- *
- * Calling this function on a non-placeable geom results in the same vector being
- * returned.
- *
- * @ingroup collide
- * @param result will contain the result.
- */
-ODE_API void dGeomVectorFromWorld
-(
-  dGeomID geom, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-
-/* ************************************************************************ */
-/* geom offset from body */
-
-/**
- * @brief Set the local offset position of a geom from its body.
- *
- * Sets the geom's positional offset in local coordinates.
- * After this call, the geom will be at a new position determined from the
- * body's position and the offset.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param x the new X coordinate.
- * @param y the new Y coordinate.
- * @param z the new Z coordinate.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetPosition (dGeomID geom, dReal x, dReal y, dReal z);
-
-
-/**
- * @brief Set the local offset rotation matrix of a geom from its body.
- *
- * Sets the geom's rotational offset in local coordinates.
- * After this call, the geom will be at a new position determined from the
- * body's position and the offset.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param R the new rotation matrix.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetRotation (dGeomID geom, const dMatrix3 R);
-
-
-/**
- * @brief Set the local offset rotation of a geom from its body.
- *
- * Sets the geom's rotational offset in local coordinates.
- * After this call, the geom will be at a new position determined from the
- * body's position and the offset.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param Q the new rotation.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetQuaternion (dGeomID geom, const dQuaternion Q);
-
-
-/**
- * @brief Set the offset position of a geom from its body.
- *
- * Sets the geom's positional offset to move it to the new world
- * coordinates.
- * After this call, the geom will be at the world position passed in,
- * and the offset will be the difference from the current body position.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param x the new X coordinate.
- * @param y the new Y coordinate.
- * @param z the new Z coordinate.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetWorldPosition (dGeomID geom, dReal x, dReal y, dReal z);
-
-
-/**
- * @brief Set the offset rotation of a geom from its body.
- *
- * Sets the geom's rotational offset to orient it to the new world
- * rotation matrix.
- * After this call, the geom will be at the world orientation passed in,
- * and the offset will be the difference from the current body orientation.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param R the new rotation matrix.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetWorldRotation (dGeomID geom, const dMatrix3 R);
-
-
-/**
- * @brief Set the offset rotation of a geom from its body.
- *
- * Sets the geom's rotational offset to orient it to the new world
- * rotation matrix.
- * After this call, the geom will be at the world orientation passed in,
- * and the offset will be the difference from the current body orientation.
- * The geom must be attached to a body.
- * If the geom did not have an offset, it is automatically created.
- *
- * @param geom the geom to set.
- * @param Q the new rotation.
- * @ingroup collide
- */
-ODE_API void dGeomSetOffsetWorldQuaternion (dGeomID geom, const dQuaternion);
-
-
-/**
- * @brief Clear any offset from the geom.
- *
- * If the geom has an offset, it is eliminated and the geom is
- * repositioned at the body's position.  If the geom has no offset,
- * this function does nothing.
- * This is more efficient than calling dGeomSetOffsetPosition(zero)
- * and dGeomSetOffsetRotation(identiy), because this function actually
- * eliminates the offset, rather than leaving it as the identity transform.
- *
- * @param geom the geom to have its offset destroyed.
- * @ingroup collide
- */
-ODE_API void dGeomClearOffset(dGeomID geom);
-
-
-/**
- * @brief Check to see whether the geom has an offset.
- *
- * This function will return non-zero if the offset has been created.
- * Note that there is a difference between a geom with no offset,
- * and a geom with an offset that is the identity transform.
- * In the latter case, although the observed behaviour is identical,
- * there is a unnecessary computation involved because the geom will
- * be applying the transform whenever it needs to recalculate its world
- * position.
- *
- * @param geom the geom to query.
- * @returns Non-zero if the geom has an offset, zero otherwise.
- * @ingroup collide
- */
-ODE_API int dGeomIsOffset(dGeomID geom);
-
-
-/**
- * @brief Get the offset position vector of a geom.
- *
- * Returns the positional offset of the geom in local coordinates.
- * If the geom has no offset, this function returns the zero vector.
- *
- * @param geom the geom to query.
- * @returns A pointer to the geom's offset vector.
- * @remarks The returned value is a pointer to the geom's internal
- *          data structure. It is valid until any changes are made
- *          to the geom.
- * @ingroup collide
- */
-ODE_API const dReal * dGeomGetOffsetPosition (dGeomID geom);
-
-
-/**
- * @brief Copy the offset position vector of a geom.
- *
- * Returns the positional offset of the geom in local coordinates.
- * If the geom has no offset, this function returns the zero vector.
- *
- * @param geom   the geom to query.
- * @param pos    returns the offset position
- * @ingroup collide
- */
-ODE_API void dGeomCopyOffsetPosition (dGeomID geom, dVector3 pos);
-
-
-/**
- * @brief Get the offset rotation matrix of a geom.
- *
- * Returns the rotational offset of the geom in local coordinates.
- * If the geom has no offset, this function returns the identity
- * matrix.
- *
- * @param geom the geom to query.
- * @returns A pointer to the geom's offset rotation matrix.
- * @remarks The returned value is a pointer to the geom's internal
- *          data structure. It is valid until any changes are made
- *          to the geom.
- * @ingroup collide
- */
-ODE_API const dReal * dGeomGetOffsetRotation (dGeomID geom);
-
-
-/**
- * @brief Copy the offset rotation matrix of a geom.
- *
- * Returns the rotational offset of the geom in local coordinates.
- * If the geom has no offset, this function returns the identity
- * matrix.
- *
- * @param geom   the geom to query.
- * @param R      returns the rotation matrix.
- * @ingroup collide
- */
-ODE_API void dGeomCopyOffsetRotation (dGeomID geom, dMatrix3 R);
-
-
-/**
- * @brief Get the offset rotation quaternion of a geom.
- *
- * Returns the rotation offset of the geom as a quaternion.
- * If the geom has no offset, the identity quaternion is returned.
- *
- * @param geom the geom to query.
- * @param result a copy of the rotation quaternion.
- * @ingroup collide
- */
-ODE_API void dGeomGetOffsetQuaternion (dGeomID geom, dQuaternion result);
-
-
-/* ************************************************************************ */
-/* collision detection */
-
-/*
- *     Just generate any contacts (disables any contact refining).
- */
-#define CONTACTS_UNIMPORTANT                   0x80000000
-
-/**
- *
- * @brief Given two geoms o1 and o2 that potentially intersect,
- * generate contact information for them.
- *
- * Internally, this just calls the correct class-specific collision
- * functions for o1 and o2.
- *
- * @param o1 The first geom to test.
- * @param o2 The second geom to test.
- *
- * @param flags The flags specify how contacts should be generated if
- * the geoms touch. The lower 16 bits of flags is an integer that
- * specifies the maximum number of contact points to generate. You must
- * ask for at least one contact. 
- * Additionally, following bits may be set:
- * CONTACTS_UNIMPORTANT -- just generate any contacts (skip contact refining).
- * All other bits in flags must be set to zero. In the future the other bits 
- * may be used to select from different contact generation strategies.
- *
- * @param contact Points to an array of dContactGeom structures. The array
- * must be able to hold at least the maximum number of contacts. These
- * dContactGeom structures may be embedded within larger structures in the
- * array -- the skip parameter is the byte offset from one dContactGeom to
- * the next in the array. If skip is sizeof(dContactGeom) then contact
- * points to a normal (C-style) array. It is an error for skip to be smaller
- * than sizeof(dContactGeom).
- *
- * @returns If the geoms intersect, this function returns the number of contact
- * points generated (and updates the contact array), otherwise it returns 0
- * (and the contact array is not touched).
- *
- * @remarks If a space is passed as o1 or o2 then this function will collide
- * all objects contained in o1 with all objects contained in o2, and return
- * the resulting contact points. This method for colliding spaces with geoms
- * (or spaces with spaces) provides no user control over the individual
- * collisions. To get that control, use dSpaceCollide or dSpaceCollide2 instead.
- *
- * @remarks If o1 and o2 are the same geom then this function will do nothing
- * and return 0. Technically speaking an object intersects with itself, but it
- * is not useful to find contact points in this case.
- *
- * @remarks This function does not care if o1 and o2 are in the same space or not
- * (or indeed if they are in any space at all).
- *
- * @ingroup collide
- */
-ODE_API int dCollide (dGeomID o1, dGeomID o2, int flags, dContactGeom *contact,
-             int skip);
-
-/**
- * @brief Determines which pairs of geoms in a space may potentially intersect,
- * and calls the callback function for each candidate pair.
- *
- * @param space The space to test.
- *
- * @param data Passed from dSpaceCollide directly to the callback
- * function. Its meaning is user defined. The o1 and o2 arguments are the
- * geoms that may be near each other.
- *
- * @param callback A callback function is of type @ref dNearCallback.
- *
- * @remarks Other spaces that are contained within the colliding space are
- * not treated specially, i.e. they are not recursed into. The callback
- * function may be passed these contained spaces as one or both geom
- * arguments.
- *
- * @remarks dSpaceCollide() is guaranteed to pass all intersecting geom
- * pairs to the callback function, but may also pass close but
- * non-intersecting pairs. The number of these calls depends on the
- * internal algorithms used by the space. Thus you should not expect
- * that dCollide will return contacts for every pair passed to the
- * callback.
- *
- * @sa dSpaceCollide2
- * @ingroup collide
- */
-ODE_API void dSpaceCollide (dSpaceID space, void *data, dNearCallback *callback);
-
-
-/**
- * @brief Determines which geoms from one space may potentially intersect with 
- * geoms from another space, and calls the callback function for each candidate 
- * pair. 
- *
- * @param space1 The first space to test.
- *
- * @param space2 The second space to test.
- *
- * @param data Passed from dSpaceCollide directly to the callback
- * function. Its meaning is user defined. The o1 and o2 arguments are the
- * geoms that may be near each other.
- *
- * @param callback A callback function is of type @ref dNearCallback.
- *
- * @remarks This function can also test a single non-space geom against a 
- * space. This function is useful when there is a collision hierarchy, i.e. 
- * when there are spaces that contain other spaces.
- *
- * @remarks Other spaces that are contained within the colliding space are
- * not treated specially, i.e. they are not recursed into. The callback
- * function may be passed these contained spaces as one or both geom
- * arguments.
- *
- * @remarks Sublevel value of space affects how the spaces are iterated.
- * Both spaces are recursed only if their sublevels match. Otherwise, only
- * the space with greater sublevel is recursed and the one with lesser sublevel
- * is used as a geom itself.
- *
- * @remarks dSpaceCollide2() is guaranteed to pass all intersecting geom
- * pairs to the callback function, but may also pass close but
- * non-intersecting pairs. The number of these calls depends on the
- * internal algorithms used by the space. Thus you should not expect
- * that dCollide will return contacts for every pair passed to the
- * callback.
- *
- * @sa dSpaceCollide
- * @sa dSpaceSetSublevel
- * @ingroup collide
- */
-ODE_API void dSpaceCollide2 (dGeomID space1, dGeomID space2, void *data, dNearCallback *callback);
-
-
-/* ************************************************************************ */
-/* standard classes */
-
-/* the maximum number of user classes that are supported */
-enum {
-  dMaxUserClasses = 4
-};
-
-/* class numbers - each geometry object needs a unique number */
-enum {
-  dSphereClass = 0,
-  dBoxClass,
-  dCapsuleClass,
-  dCylinderClass,
-  dPlaneClass,
-  dRayClass,
-  dConvexClass,
-  dGeomTransformClass,
-  dTriMeshClass,
-  dHeightfieldClass,
-
-  dFirstSpaceClass,
-  dSimpleSpaceClass = dFirstSpaceClass,
-  dHashSpaceClass,
-  dSweepAndPruneSpaceClass, // SAP
-  dQuadTreeSpaceClass,
-  dLastSpaceClass = dQuadTreeSpaceClass,
-
-  dFirstUserClass,
-  dLastUserClass = dFirstUserClass + dMaxUserClasses - 1,
-  dGeomNumClasses
-};
-
-
-/**
- * @defgroup collide_sphere Sphere Class
- * @ingroup collide
- */
-
-/**
- * @brief Create a sphere geom of the given radius, and return its ID. 
- *
- * @param space   a space to contain the new geom. May be null.
- * @param radius  the radius of the sphere.
- *
- * @returns A new sphere geom.
- *
- * @remarks The point of reference for a sphere is its center.
- *
- * @sa dGeomDestroy
- * @sa dGeomSphereSetRadius
- * @ingroup collide_sphere
- */
-ODE_API dGeomID dCreateSphere (dSpaceID space, dReal radius);
-
-
-/**
- * @brief Set the radius of a sphere geom.
- *
- * @param sphere  the sphere to set.
- * @param radius  the new radius.
- *
- * @sa dGeomSphereGetRadius
- * @ingroup collide_sphere
- */
-ODE_API void dGeomSphereSetRadius (dGeomID sphere, dReal radius);
-
-
-/**
- * @brief Retrieves the radius of a sphere geom.
- *
- * @param sphere  the sphere to query.
- *
- * @sa dGeomSphereSetRadius
- * @ingroup collide_sphere
- */
-ODE_API dReal dGeomSphereGetRadius (dGeomID sphere);
-
-
-/**
- * @brief Calculate the depth of the a given point within a sphere.
- *
- * @param sphere  the sphere to query.
- * @param x       the X coordinate of the point.
- * @param y       the Y coordinate of the point.
- * @param z       the Z coordinate of the point.
- *
- * @returns The depth of the point. Points inside the sphere will have a 
- * positive depth, points outside it will have a negative depth, and points
- * on the surface will have a depth of zero.
- *
- * @ingroup collide_sphere
- */
-ODE_API dReal dGeomSpherePointDepth (dGeomID sphere, dReal x, dReal y, dReal z);
-
-
-//--> Convex Functions
-ODE_API dGeomID dCreateConvex (dSpaceID space,
-                              dReal *_planes,
-                              unsigned int _planecount,
-                              dReal *_points,
-                              unsigned int _pointcount,unsigned int *_polygons);
-
-ODE_API void dGeomSetConvex (dGeomID g,
-                            dReal *_planes,
-                            unsigned int _count,
-                            dReal *_points,
-                            unsigned int _pointcount,unsigned int *_polygons);
-//<-- Convex Functions
-
-/**
- * @defgroup collide_box Box Class
- * @ingroup collide
- */
-
-/**
- * @brief Create a box geom with the provided side lengths.
- *
- * @param space   a space to contain the new geom. May be null.
- * @param lx      the length of the box along the X axis
- * @param ly      the length of the box along the Y axis
- * @param lz      the length of the box along the Z axis
- *
- * @returns A new box geom.
- *
- * @remarks The point of reference for a box is its center.
- *
- * @sa dGeomDestroy
- * @sa dGeomBoxSetLengths
- * @ingroup collide_box
- */
-ODE_API dGeomID dCreateBox (dSpaceID space, dReal lx, dReal ly, dReal lz);
-
-
-/**
- * @brief Set the side lengths of the given box.
- *
- * @param box  the box to set
- * @param lx      the length of the box along the X axis
- * @param ly      the length of the box along the Y axis
- * @param lz      the length of the box along the Z axis
- *
- * @sa dGeomBoxGetLengths
- * @ingroup collide_box
- */
-ODE_API void dGeomBoxSetLengths (dGeomID box, dReal lx, dReal ly, dReal lz);
-
-
-/**
- * @brief Get the side lengths of a box.
- *
- * @param box     the box to query
- * @param result  the returned side lengths
- *
- * @sa dGeomBoxSetLengths
- * @ingroup collide_box
- */
-ODE_API void dGeomBoxGetLengths (dGeomID box, dVector3 result);
-
-
-/**
- * @brief Return the depth of a point in a box.
- * 
- * @param box  the box to query
- * @param x    the X coordinate of the point to test.
- * @param y    the Y coordinate of the point to test.
- * @param z    the Z coordinate of the point to test.
- *
- * @returns The depth of the point. Points inside the box will have a 
- * positive depth, points outside it will have a negative depth, and points
- * on the surface will have a depth of zero.
- */
-ODE_API dReal dGeomBoxPointDepth (dGeomID box, dReal x, dReal y, dReal z);
-
-
-ODE_API dGeomID dCreatePlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d);
-ODE_API void dGeomPlaneSetParams (dGeomID plane, dReal a, dReal b, dReal c, dReal d);
-ODE_API void dGeomPlaneGetParams (dGeomID plane, dVector4 result);
-ODE_API dReal dGeomPlanePointDepth (dGeomID plane, dReal x, dReal y, dReal z);
-
-ODE_API dGeomID dCreateCapsule (dSpaceID space, dReal radius, dReal length);
-ODE_API void dGeomCapsuleSetParams (dGeomID ccylinder, dReal radius, dReal length);
-ODE_API void dGeomCapsuleGetParams (dGeomID ccylinder, dReal *radius, dReal *length);
-ODE_API dReal dGeomCapsulePointDepth (dGeomID ccylinder, dReal x, dReal y, dReal z);
-
-// For now we want to have a backwards compatible C-API, note: C++ API is not.
-#define dCreateCCylinder dCreateCapsule
-#define dGeomCCylinderSetParams dGeomCapsuleSetParams
-#define dGeomCCylinderGetParams dGeomCapsuleGetParams
-#define dGeomCCylinderPointDepth dGeomCapsulePointDepth
-#define dCCylinderClass dCapsuleClass
-
-ODE_API dGeomID dCreateCylinder (dSpaceID space, dReal radius, dReal length);
-ODE_API void dGeomCylinderSetParams (dGeomID cylinder, dReal radius, dReal length);
-ODE_API void dGeomCylinderGetParams (dGeomID cylinder, dReal *radius, dReal *length);
-
-ODE_API dGeomID dCreateRay (dSpaceID space, dReal length);
-ODE_API void dGeomRaySetLength (dGeomID ray, dReal length);
-ODE_API dReal dGeomRayGetLength (dGeomID ray);
-ODE_API void dGeomRaySet (dGeomID ray, dReal px, dReal py, dReal pz,
-                 dReal dx, dReal dy, dReal dz);
-ODE_API void dGeomRayGet (dGeomID ray, dVector3 start, dVector3 dir);
-
-/*
- * Set/get ray flags that influence ray collision detection.
- * These flags are currently only noticed by the trimesh collider, because
- * they can make a major differences there.
- */
-ODE_API void dGeomRaySetParams (dGeomID g, int FirstContact, int BackfaceCull);
-ODE_API void dGeomRayGetParams (dGeomID g, int *FirstContact, int *BackfaceCull);
-ODE_API void dGeomRaySetClosestHit (dGeomID g, int closestHit);
-ODE_API int dGeomRayGetClosestHit (dGeomID g);
-
-#include "collision_trimesh.h"
-
-ODE_API dGeomID dCreateGeomTransform (dSpaceID space);
-ODE_API void dGeomTransformSetGeom (dGeomID g, dGeomID obj);
-ODE_API dGeomID dGeomTransformGetGeom (dGeomID g);
-ODE_API void dGeomTransformSetCleanup (dGeomID g, int mode);
-ODE_API int dGeomTransformGetCleanup (dGeomID g);
-ODE_API void dGeomTransformSetInfo (dGeomID g, int mode);
-ODE_API int dGeomTransformGetInfo (dGeomID g);
-
-
-/* ************************************************************************ */
-/* heightfield functions */
-
-
-// Data storage for heightfield data.
-struct dxHeightfieldData;
-typedef struct dxHeightfieldData* dHeightfieldDataID;
-
-
-/**
- * @brief Callback prototype
- *
- * Used by the callback heightfield data type to sample a height for a
- * given cell position.
- *
- * @param p_user_data User data specified when creating the dHeightfieldDataID
- * @param x The index of a sample in the local x axis. It is a value
- * in the range zero to ( nWidthSamples - 1 ).
- * @param x The index of a sample in the local z axis. It is a value
- * in the range zero to ( nDepthSamples - 1 ).
- *
- * @return The sample height which is then scaled and offset using the
- * values specified when the heightfield data was created.
- *
- * @ingroup collide
- */
-typedef dReal dHeightfieldGetHeight( void* p_user_data, int x, int z );
-
-
-
-/**
- * @brief Creates a heightfield geom.
- *
- * Uses the information in the given dHeightfieldDataID to construct
- * a geom representing a heightfield in a collision space.
- *
- * @param space The space to add the geom to.
- * @param data The dHeightfieldDataID created by dGeomHeightfieldDataCreate and
- * setup by dGeomHeightfieldDataBuildCallback, dGeomHeightfieldDataBuildByte,
- * dGeomHeightfieldDataBuildShort or dGeomHeightfieldDataBuildFloat.
- * @param bPlaceable If non-zero this geom can be transformed in the world using the
- * usual functions such as dGeomSetPosition and dGeomSetRotation. If the geom is
- * not set as placeable, then it uses a fixed orientation where the global y axis
- * represents the dynamic 'height' of the heightfield.
- *
- * @return A geom id to reference this geom in other calls.
- *
- * @ingroup collide
- */
-ODE_API dGeomID dCreateHeightfield( dSpaceID space,
-                                       dHeightfieldDataID data, int bPlaceable );
-
-
-/**
- * @brief Creates a new empty dHeightfieldDataID.
- *
- * Allocates a new dHeightfieldDataID and returns it. You must call
- * dGeomHeightfieldDataDestroy to destroy it after the geom has been removed.
- * The dHeightfieldDataID value is used when specifying a data format type.
- *
- * @return A dHeightfieldDataID for use with dGeomHeightfieldDataBuildCallback,
- * dGeomHeightfieldDataBuildByte, dGeomHeightfieldDataBuildShort or
- * dGeomHeightfieldDataBuildFloat.
- * @ingroup collide
- */
-ODE_API dHeightfieldDataID dGeomHeightfieldDataCreate(void);
-
-
-/**
- * @brief Destroys a dHeightfieldDataID.
- *
- * Deallocates a given dHeightfieldDataID and all managed resources.
- *
- * @param d A dHeightfieldDataID created by dGeomHeightfieldDataCreate
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataDestroy( dHeightfieldDataID d );
-
-
-
-/**
- * @brief Configures a dHeightfieldDataID to use a callback to
- * retrieve height data.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is computed by
- * the user and it should use the given callback when determining
- * the height of a given element of it's shape.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildCallback( dHeightfieldDataID d,
-                               void* pUserData, dHeightfieldGetHeight* pCallback,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness, int bWrap );
-
-/**
- * @brief Configures a dHeightfieldDataID to use height data in byte format.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is stored as a rectangular
- * array of bytes (8 bit unsigned) representing the height at each sample point.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param pHeightData A pointer to the height data.
- * @param bCopyHeightData When non-zero the height data is copied to an
- * internal store. When zero the height data is accessed by reference and
- * so must persist throughout the lifetime of the heightfield.
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildByte( dHeightfieldDataID d,
-                               const unsigned char* pHeightData, int bCopyHeightData,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness,     int bWrap );
-
-/**
- * @brief Configures a dHeightfieldDataID to use height data in short format.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is stored as a rectangular
- * array of shorts (16 bit signed) representing the height at each sample point.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param pHeightData A pointer to the height data.
- * @param bCopyHeightData When non-zero the height data is copied to an
- * internal store. When zero the height data is accessed by reference and
- * so must persist throughout the lifetime of the heightfield.
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildShort( dHeightfieldDataID d,
-                               const short* pHeightData, int bCopyHeightData,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness, int bWrap );
-
-/**
- * @brief Configures a dHeightfieldDataID to use height data in 
- * single precision floating point format.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is stored as a rectangular
- * array of single precision floats representing the height at each
- * sample point.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param pHeightData A pointer to the height data.
- * @param bCopyHeightData When non-zero the height data is copied to an
- * internal store. When zero the height data is accessed by reference and
- * so must persist throughout the lifetime of the heightfield.
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildSingle( dHeightfieldDataID d,
-                               const float* pHeightData, int bCopyHeightData,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness, int bWrap );
-
-/**
- * @brief Configures a dHeightfieldDataID to use height data in 
- * double precision floating point format.
- *
- * Before a dHeightfieldDataID can be used by a geom it must be
- * configured to specify the format of the height data.
- * This call specifies that the heightfield data is stored as a rectangular
- * array of double precision floats representing the height at each
- * sample point.
- *
- * @param d A new dHeightfieldDataID created by dGeomHeightfieldDataCreate
- *
- * @param pHeightData A pointer to the height data.
- * @param bCopyHeightData When non-zero the height data is copied to an
- * internal store. When zero the height data is accessed by reference and
- * so must persist throughout the lifetime of the heightfield.
- *
- * @param width Specifies the total 'width' of the heightfield along
- * the geom's local x axis.
- * @param depth Specifies the total 'depth' of the heightfield along
- * the geom's local z axis.
- *
- * @param widthSamples Specifies the number of vertices to sample
- * along the width of the heightfield. Each vertex has a corresponding
- * height value which forms the overall shape.
- * Naturally this value must be at least two or more.
- * @param depthSamples Specifies the number of vertices to sample
- * along the depth of the heightfield.
- *
- * @param scale A uniform scale applied to all raw height data.
- * @param offset An offset applied to the scaled height data.
- *
- * @param thickness A value subtracted from the lowest height
- * value which in effect adds an additional cuboid to the base of the
- * heightfield. This is used to prevent geoms from looping under the
- * desired terrain and not registering as a collision. Note that the
- * thickness is not affected by the scale or offset parameters.
- *
- * @param bWrap If non-zero the heightfield will infinitely tile in both
- * directions along the local x and z axes. If zero the heightfield is
- * bounded from zero to width in the local x axis, and zero to depth in
- * the local z axis.
- *
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataBuildDouble( dHeightfieldDataID d,
-                               const double* pHeightData, int bCopyHeightData,
-                               dReal width, dReal depth, int widthSamples, int depthSamples,
-                               dReal scale, dReal offset, dReal thickness, int bWrap );
-
-/**
- * @brief Manually set the minimum and maximum height bounds.
- *
- * This call allows you to set explicit min / max values after initial
- * creation typically for callback heightfields which default to +/- infinity,
- * or those whose data has changed. This must be set prior to binding with a
- * geom, as the the AABB is not recomputed after it's first generation.
- *
- * @remarks The minimum and maximum values are used to compute the AABB
- * for the heightfield which is used for early rejection of collisions.
- * A close fit will yield a more efficient collision check.
- *
- * @param d A dHeightfieldDataID created by dGeomHeightfieldDataCreate
- * @param min_height The new minimum height value. Scale, offset and thickness is then applied.
- * @param max_height The new maximum height value. Scale and offset is then applied.
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldDataSetBounds( dHeightfieldDataID d,
-                               dReal minHeight, dReal maxHeight );
-
-
-/**
- * @brief Assigns a dHeightfieldDataID to a heightfield geom.
- *
- * Associates the given dHeightfieldDataID with a heightfield geom.
- * This is done without affecting the GEOM_PLACEABLE flag.
- *
- * @param g A geom created by dCreateHeightfield
- * @param d A dHeightfieldDataID created by dGeomHeightfieldDataCreate
- * @ingroup collide
- */
-ODE_API void dGeomHeightfieldSetHeightfieldData( dGeomID g, dHeightfieldDataID d );
-
-
-/**
- * @brief Gets the dHeightfieldDataID bound to a heightfield geom.
- *
- * Returns the dHeightfieldDataID associated with a heightfield geom.
- *
- * @param g A geom created by dCreateHeightfield
- * @return The dHeightfieldDataID which may be NULL if none was assigned.
- * @ingroup collide
- */
-ODE_API dHeightfieldDataID dGeomHeightfieldGetHeightfieldData( dGeomID g );
-
-
-
-/* ************************************************************************ */
-/* utility functions */
-
-ODE_API void dClosestLineSegmentPoints (const dVector3 a1, const dVector3 a2,
-                               const dVector3 b1, const dVector3 b2,
-                               dVector3 cp1, dVector3 cp2);
-
-ODE_API int dBoxTouchesBox (const dVector3 _p1, const dMatrix3 R1,
-                   const dVector3 side1, const dVector3 _p2,
-                   const dMatrix3 R2, const dVector3 side2);
-
-// The meaning of flags parameter is the same as in dCollide()
-ODE_API int dBoxBox (const dVector3 p1, const dMatrix3 R1,
-            const dVector3 side1, const dVector3 p2,
-            const dMatrix3 R2, const dVector3 side2,
-            dVector3 normal, dReal *depth, int *return_code,
-            int flags, dContactGeom *contact, int skip);
-
-ODE_API void dInfiniteAABB (dGeomID geom, dReal aabb[6]);
-
-
-/* ************************************************************************ */
-/* custom classes */
-
-typedef void dGetAABBFn (dGeomID, dReal aabb[6]);
-typedef int dColliderFn (dGeomID o1, dGeomID o2,
-                        int flags, dContactGeom *contact, int skip);
-typedef dColliderFn * dGetColliderFnFn (int num);
-typedef void dGeomDtorFn (dGeomID o);
-typedef int dAABBTestFn (dGeomID o1, dGeomID o2, dReal aabb[6]);
-
-typedef struct dGeomClass {
-  int bytes;
-  dGetColliderFnFn *collider;
-  dGetAABBFn *aabb;
-  dAABBTestFn *aabb_test;
-  dGeomDtorFn *dtor;
-} dGeomClass;
-
-ODE_API int dCreateGeomClass (const dGeomClass *classptr);
-ODE_API void * dGeomGetClassData (dGeomID);
-ODE_API dGeomID dCreateGeom (int classnum);
-
-/**
- * @brief Sets a custom collider function for two geom classes. 
- *
- * @param i The first geom class handled by this collider
- * @param j The second geom class handled by this collider
- * @param fn The collider function to use to determine collisions.
- * @ingroup collide
- */
-ODE_API void dSetColliderOverride (int i, int j, dColliderFn *fn);
-
-
-/* ************************************************************************ */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/collision_space.h b/misc/builddeps/linux64/ode/include/ode/collision_space.h
deleted file mode 100644 (file)
index bf7ef9b..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_COLLISION_SPACE_H_
-#define _ODE_COLLISION_SPACE_H_
-
-#include <ode/common.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct dContactGeom;
-
-/**
- * @brief User callback for geom-geom collision testing.
- *
- * @param data The user data object, as passed to dSpaceCollide.
- * @param o1   The first geom being tested.
- * @param o2   The second geom being test.
- *
- * @remarks The callback function can call dCollide on o1 and o2 to generate
- * contact points between each pair. Then these contact points may be added
- * to the simulation as contact joints. The user's callback function can of
- * course chose not to call dCollide for any pair, e.g. if the user decides
- * that those pairs should not interact.
- *
- * @ingroup collide
- */
-typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2);
-
-
-ODE_API dSpaceID dSimpleSpaceCreate (dSpaceID space);
-ODE_API dSpaceID dHashSpaceCreate (dSpaceID space);
-ODE_API dSpaceID dQuadTreeSpaceCreate (dSpaceID space, const dVector3 Center, const dVector3 Extents, int Depth);
-
-
-// SAP
-// Order XZY or ZXY usually works best, if your Y is up.
-#define dSAP_AXES_XYZ  ((0)|(1<<2)|(2<<4))
-#define dSAP_AXES_XZY  ((0)|(2<<2)|(1<<4))
-#define dSAP_AXES_YXZ  ((1)|(0<<2)|(2<<4))
-#define dSAP_AXES_YZX  ((1)|(2<<2)|(0<<4))
-#define dSAP_AXES_ZXY  ((2)|(0<<2)|(1<<4))
-#define dSAP_AXES_ZYX  ((2)|(1<<2)|(0<<4))
-
-ODE_API dSpaceID dSweepAndPruneSpaceCreate( dSpaceID space, int axisorder );
-
-
-
-ODE_API void dSpaceDestroy (dSpaceID);
-
-ODE_API void dHashSpaceSetLevels (dSpaceID space, int minlevel, int maxlevel);
-ODE_API void dHashSpaceGetLevels (dSpaceID space, int *minlevel, int *maxlevel);
-
-ODE_API void dSpaceSetCleanup (dSpaceID space, int mode);
-ODE_API int dSpaceGetCleanup (dSpaceID space);
-
-/**
-* @brief Sets sublevel value for a space.
-*
-* Sublevel affects how the space is handled in dSpaceCollide2 when it is collided
-* with another space. If sublevels of both spaces match, the function iterates 
-* geometries of both spaces and collides them with each other. If sublevel of one
-* space is greater than the sublevel of another one, only the geometries of the 
-* space with greater sublevel are iterated, another space is passed into 
-* collision callback as a geometry itself. By default all the spaces are assigned
-* zero sublevel.
-*
-* @note
-* The space sublevel @e IS @e NOT automatically updated when one space is inserted
-* into another or removed from one. It is a client's responsibility to update sublevel
-* value if necessary.
-*
-* @param space the space to modify
-* @param sublevel the sublevel value to be assigned
-* @ingroup collide
-* @see dSpaceGetSublevel
-* @see dSpaceCollide2
-*/
-ODE_API void dSpaceSetSublevel (dSpaceID space, int sublevel);
-
-/**
-* @brief Gets sublevel value of a space.
-*
-* Sublevel affects how the space is handled in dSpaceCollide2 when it is collided
-* with another space. See @c dSpaceSetSublevel for more details.
-*
-* @param space the space to query
-* @returns the sublevel value of the space
-* @ingroup collide
-* @see dSpaceSetSublevel
-* @see dSpaceCollide2
-*/
-ODE_API int dSpaceGetSublevel (dSpaceID space);
-
-
-/**
-* @brief Sets manual cleanup flag for a space.
-*
-* Manual cleanup flag marks a space as eligible for manual thread data cleanup.
-* This function should be called for every space object right after creation in 
-* case if ODE has been initialized with @c dInitFlagManualThreadCleanup flag.
-* 
-* Failure to set manual cleanup flag for a space may lead to some resources 
-* remaining leaked until the program exit.
-*
-* @param space the space to modify
-* @param mode 1 for manual cleanup mode and 0 for default cleanup mode
-* @ingroup collide
-* @see dSpaceGetManualCleanup
-* @see dInitODE2
-*/
-ODE_API void dSpaceSetManualCleanup (dSpaceID space, int mode);
-
-/**
-* @brief Get manual cleanup flag of a space.
-*
-* Manual cleanup flag marks a space space as eligible for manual thread data cleanup.
-* See @c dSpaceSetManualCleanup for more details.
-* 
-* @param space the space to query
-* @returns 1 for manual cleanup mode and 0 for default cleanup mode of the space
-* @ingroup collide
-* @see dSpaceSetManualCleanup
-* @see dInitODE2
-*/
-ODE_API int dSpaceGetManualCleanup (dSpaceID space);
-
-ODE_API void dSpaceAdd (dSpaceID, dGeomID);
-ODE_API void dSpaceRemove (dSpaceID, dGeomID);
-ODE_API int dSpaceQuery (dSpaceID, dGeomID);
-ODE_API void dSpaceClean (dSpaceID);
-ODE_API int dSpaceGetNumGeoms (dSpaceID);
-ODE_API dGeomID dSpaceGetGeom (dSpaceID, int i);
-
-/**
- * @brief Given a space, this returns its class.
- *
- * The ODE classes are:
- *  @li dSimpleSpaceClass
- *  @li dHashSpaceClass
- *  @li dSweepAndPruneSpaceClass
- *  @li dQuadTreeSpaceClass
- *  @li dFirstUserClass
- *  @li dLastUserClass
- *
- * The class id not defined by the user should be between
- * dFirstSpaceClass and dLastSpaceClass.
- *
- * User-defined class will return their own number.
- *
- * @param space the space to query
- * @returns The space class ID.
- * @ingroup collide
- */
-ODE_API int dSpaceGetClass(dSpaceID space);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/collision_trimesh.h b/misc/builddeps/linux64/ode/include/ode/collision_trimesh.h
deleted file mode 100644 (file)
index f263a9e..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001-2003 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/*
- * TriMesh code by Erwin de Vries.
- *
- * Trimesh data.
- * This is where the actual vertexdata (pointers), and BV tree is stored.
- * Vertices should be single precision!
- * This should be more sophisticated, so that the user can easyly implement
- * another collision library, but this is a lot of work, and also costs some
- * performance because some data has to be copied.
- */
-
-#ifndef _ODE_COLLISION_TRIMESH_H_
-#define _ODE_COLLISION_TRIMESH_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Data storage for triangle meshes.
- */
-struct dxTriMeshData;
-typedef struct dxTriMeshData* dTriMeshDataID;
-
-/*
- * These dont make much sense now, but they will later when we add more
- * features.
- */
-ODE_API dTriMeshDataID dGeomTriMeshDataCreate(void);
-ODE_API void dGeomTriMeshDataDestroy(dTriMeshDataID g);
-
-
-
-enum { TRIMESH_FACE_NORMALS };
-ODE_API void dGeomTriMeshDataSet(dTriMeshDataID g, int data_id, void* in_data);
-ODE_API void* dGeomTriMeshDataGet(dTriMeshDataID g, int data_id);
-
-
-
-/**
- * We need to set the last transform after each time step for 
- * accurate collision response. These functions get and set that transform.
- * It is stored per geom instance, rather than per dTriMeshDataID.
- */
-ODE_API void dGeomTriMeshSetLastTransform( dGeomID g, dMatrix4 last_trans );
-ODE_API dReal* dGeomTriMeshGetLastTransform( dGeomID g );
-
-/*
- * Build a TriMesh data object with single precision vertex data.
- */
-ODE_API void dGeomTriMeshDataBuildSingle(dTriMeshDataID g,
-                                 const void* Vertices, int VertexStride, int VertexCount, 
-                                 const void* Indices, int IndexCount, int TriStride);
-/* same again with a normals array (used as trimesh-trimesh optimization) */
-ODE_API void dGeomTriMeshDataBuildSingle1(dTriMeshDataID g,
-                                  const void* Vertices, int VertexStride, int VertexCount, 
-                                  const void* Indices, int IndexCount, int TriStride,
-                                  const void* Normals);
-/*
-* Build a TriMesh data object with double precision vertex data.
-*/
-ODE_API void dGeomTriMeshDataBuildDouble(dTriMeshDataID g, 
-                                 const void* Vertices,  int VertexStride, int VertexCount, 
-                                 const void* Indices, int IndexCount, int TriStride);
-/* same again with a normals array (used as trimesh-trimesh optimization) */
-ODE_API void dGeomTriMeshDataBuildDouble1(dTriMeshDataID g, 
-                                  const void* Vertices,  int VertexStride, int VertexCount, 
-                                  const void* Indices, int IndexCount, int TriStride,
-                                  const void* Normals);
-
-/*
- * Simple build. Single/double precision based on dSINGLE/dDOUBLE!
- */
-ODE_API void dGeomTriMeshDataBuildSimple(dTriMeshDataID g,
-                                 const dReal* Vertices, int VertexCount,
-                                 const dTriIndex* Indices, int IndexCount);
-/* same again with a normals array (used as trimesh-trimesh optimization) */
-ODE_API void dGeomTriMeshDataBuildSimple1(dTriMeshDataID g,
-                                  const dReal* Vertices, int VertexCount,
-                                  const dTriIndex* Indices, int IndexCount,
-                                  const int* Normals);
-
-/* Preprocess the trimesh data to remove mark unnecessary edges and vertices */
-ODE_API void dGeomTriMeshDataPreprocess(dTriMeshDataID g);
-/* Get and set the internal preprocessed trimesh data buffer, for loading and saving */
-ODE_API void dGeomTriMeshDataGetBuffer(dTriMeshDataID g, unsigned char** buf, int* bufLen);
-ODE_API void dGeomTriMeshDataSetBuffer(dTriMeshDataID g, unsigned char* buf);
-
-
-/*
- * Per triangle callback. Allows the user to say if he wants a collision with
- * a particular triangle.
- */
-typedef int dTriCallback(dGeomID TriMesh, dGeomID RefObject, int TriangleIndex);
-ODE_API void dGeomTriMeshSetCallback(dGeomID g, dTriCallback* Callback);
-ODE_API dTriCallback* dGeomTriMeshGetCallback(dGeomID g);
-
-/*
- * Per object callback. Allows the user to get the list of triangles in 1
- * shot. Maybe we should remove this one.
- */
-typedef void dTriArrayCallback(dGeomID TriMesh, dGeomID RefObject, const int* TriIndices, int TriCount);
-ODE_API void dGeomTriMeshSetArrayCallback(dGeomID g, dTriArrayCallback* ArrayCallback);
-ODE_API dTriArrayCallback* dGeomTriMeshGetArrayCallback(dGeomID g);
-
-/*
- * Ray callback.
- * Allows the user to say if a ray collides with a triangle on barycentric
- * coords. The user can for example sample a texture with alpha transparency
- * to determine if a collision should occur.
- */
-typedef int dTriRayCallback(dGeomID TriMesh, dGeomID Ray, int TriangleIndex, dReal u, dReal v);
-ODE_API void dGeomTriMeshSetRayCallback(dGeomID g, dTriRayCallback* Callback);
-ODE_API dTriRayCallback* dGeomTriMeshGetRayCallback(dGeomID g);
-
-/*
- * Triangle merging callback.
- * Allows the user to generate a fake triangle index for a new contact generated
- * from merging of two other contacts. That index could later be used by the 
- * user to determine attributes of original triangles used as sources for a 
- * merged contact.
- */
-typedef int dTriTriMergeCallback(dGeomID TriMesh, int FirstTriangleIndex, int SecondTriangleIndex);
-ODE_API void dGeomTriMeshSetTriMergeCallback(dGeomID g, dTriTriMergeCallback* Callback);
-ODE_API dTriTriMergeCallback* dGeomTriMeshGetTriMergeCallback(dGeomID g);
-
-/*
- * Trimesh class
- * Construction. Callbacks are optional.
- */
-ODE_API dGeomID dCreateTriMesh(dSpaceID space, dTriMeshDataID Data, dTriCallback* Callback, dTriArrayCallback* ArrayCallback, dTriRayCallback* RayCallback);
-
-ODE_API void dGeomTriMeshSetData(dGeomID g, dTriMeshDataID Data);
-ODE_API dTriMeshDataID dGeomTriMeshGetData(dGeomID g);
-
-
-// enable/disable/check temporal coherence
-ODE_API void dGeomTriMeshEnableTC(dGeomID g, int geomClass, int enable);
-ODE_API int dGeomTriMeshIsTCEnabled(dGeomID g, int geomClass);
-
-/*
- * Clears the internal temporal coherence caches. When a geom has its
- * collision checked with a trimesh once, data is stored inside the trimesh.
- * With large worlds with lots of seperate objects this list could get huge.
- * We should be able to do this automagically.
- */
-ODE_API void dGeomTriMeshClearTCCache(dGeomID g);
-
-
-/*
- * returns the TriMeshDataID
- */
-ODE_API dTriMeshDataID dGeomTriMeshGetTriMeshDataID(dGeomID g);
-
-/*
- * Gets a triangle.
- */
-ODE_API void dGeomTriMeshGetTriangle(dGeomID g, int Index, dVector3* v0, dVector3* v1, dVector3* v2);
-
-/*
- * Gets the point on the requested triangle and the given barycentric
- * coordinates.
- */
-ODE_API void dGeomTriMeshGetPoint(dGeomID g, int Index, dReal u, dReal v, dVector3 Out);
-
-/*
-
-This is how the strided data works:
-
-struct StridedVertex{
-       dVector3 Vertex;
-       // Userdata
-};
-int VertexStride = sizeof(StridedVertex);
-
-struct StridedTri{
-       int Indices[3];
-       // Userdata
-};
-int TriStride = sizeof(StridedTri);
-
-*/
-
-
-ODE_API int dGeomTriMeshGetTriangleCount (dGeomID g);
-
-ODE_API void dGeomTriMeshDataUpdate(dTriMeshDataID g);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ODE_COLLISION_TRIMESH_H_ */
-
diff --git a/misc/builddeps/linux64/ode/include/ode/common.h b/misc/builddeps/linux64/ode/include/ode/common.h
deleted file mode 100644 (file)
index d7b2bba..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_COMMON_H_
-#define _ODE_COMMON_H_
-#include <ode/odeconfig.h>
-#include <ode/error.h>
-#include <math.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define PURE_INLINE static __inline
-
-
-/* configuration stuff */
-
-/* constants */
-
-/* pi and 1/sqrt(2) are defined here if necessary because they don't get
- * defined in <math.h> on some platforms (like MS-Windows)
- */
-
-#ifndef M_PI
-#define M_PI REAL(3.1415926535897932384626433832795029)
-#endif
-#ifndef M_SQRT1_2
-#define M_SQRT1_2 REAL(0.7071067811865475244008443621048490)
-#endif
-
-
-/* debugging:
- *   IASSERT  is an internal assertion, i.e. a consistency check. if it fails
- *            we want to know where.
- *   UASSERT  is a user assertion, i.e. if it fails a nice error message
- *            should be printed for the user.
- *   AASSERT  is an arguments assertion, i.e. if it fails "bad argument(s)"
- *            is printed.
- *   DEBUGMSG just prints out a message
- */
-
-#  if defined(__STDC__) && __STDC_VERSION__ >= 199901L
-#    define __FUNCTION__ __func__
-#  endif
-#ifndef dNODEBUG
-#  ifdef __GNUC__
-#    define dIASSERT(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
-      "assertion \"" #a "\" failed in %s() [%s:%u]",__FUNCTION__,__FILE__,__LINE__); } }
-#    define dUASSERT(a,msg) { if (!(a)) { dDebug (d_ERR_UASSERT, \
-      msg " in %s()", __FUNCTION__); } }
-#    define dDEBUGMSG(msg) { dMessage (d_ERR_UASSERT,                          \
-  msg " in %s() [%s:%u]", __FUNCTION__,__FILE__,__LINE__); }
-#  else // not __GNUC__
-#    define dIASSERT(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
-      "assertion \"" #a "\" failed in %s:%u",__FILE__,__LINE__); } }
-#    define dUASSERT(a,msg) { if (!(a)) { dDebug (d_ERR_UASSERT, \
-      msg " (%s:%u)", __FILE__,__LINE__); } }
-#    define dDEBUGMSG(msg) { dMessage (d_ERR_UASSERT, \
-      msg " (%s:%u)", __FILE__,__LINE__); }
-#  endif
-#  define dIVERIFY(a) dIASSERT(a)
-#else
-#  define dIASSERT(a) ((void)0)
-#  define dUASSERT(a,msg) ((void)0)
-#  define dDEBUGMSG(msg) ((void)0)
-#  define dIVERIFY(a) ((void)(a))
-#endif
-
-#  ifdef __GNUC__
-#    define dICHECK(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
-      "assertion \"" #a "\" failed in %s() [%s:%u]",__FUNCTION__,__FILE__,__LINE__); *(int *)0 = 0; } }
-#  else // not __GNUC__
-#    define dICHECK(a) { if (!(a)) { dDebug (d_ERR_IASSERT, \
-      "assertion \"" #a "\" failed in %s:%u",__FILE__,__LINE__); *(int *)0 = 0; } }
-#  endif
-
-// Argument assert is a special case of user assert
-#define dAASSERT(a) dUASSERT(a,"Bad argument(s)")
-
-/* floating point data type, vector, matrix and quaternion types */
-
-#if defined(dSINGLE)
-typedef float dReal;
-#ifdef dDOUBLE
-#error You can only #define dSINGLE or dDOUBLE, not both.
-#endif // dDOUBLE
-#elif defined(dDOUBLE)
-typedef double dReal;
-#else
-#error You must #define dSINGLE or dDOUBLE
-#endif
-
-// Detect if we've got both trimesh engines enabled.
-#if dTRIMESH_ENABLED
-#if dTRIMESH_OPCODE && dTRIMESH_GIMPACT
-#error You can only #define dTRIMESH_OPCODE or dTRIMESH_GIMPACT, not both.
-#endif
-#endif // dTRIMESH_ENABLED
-
-// Define a type for indices, either 16 or 32 bit, based on build option
-// TODO: Currently GIMPACT only supports 32 bit indices.
-#if dTRIMESH_16BIT_INDICES
-#if dTRIMESH_GIMPACT
-typedef uint32 dTriIndex;
-#else // dTRIMESH_GIMPACT
-typedef uint16 dTriIndex;
-#endif // dTRIMESH_GIMPACT
-#else // dTRIMESH_16BIT_INDICES
-typedef uint32 dTriIndex;
-#endif // dTRIMESH_16BIT_INDICES
-
-/* round an integer up to a multiple of 4, except that 0 and 1 are unmodified
- * (used to compute matrix leading dimensions)
- */
-#define dPAD(a) (((a) > 1) ? ((((a)-1)|3)+1) : (a))
-
-/* these types are mainly just used in headers */
-typedef dReal dVector3[4];
-typedef dReal dVector4[4];
-typedef dReal dMatrix3[4*3];
-typedef dReal dMatrix4[4*4];
-typedef dReal dMatrix6[8*6];
-typedef dReal dQuaternion[4];
-
-
-/* precision dependent scalar math functions */
-
-#if defined(dSINGLE)
-
-#define REAL(x) (x ## f)                                       /* form a constant */
-#define dRecip(x) ((1.0f/(x)))                         /* reciprocal */
-#define dSqrt(x) (sqrtf(x))                    /* square root */
-#define dRecipSqrt(x) ((1.0f/sqrtf(x)))                /* reciprocal square root */
-#define dSin(x) (sinf(x))                              /* sine */
-#define dCos(x) (cosf(x))                              /* cosine */
-#define dFabs(x) (fabsf(x))                    /* absolute value */
-#define dAtan2(y,x) (atan2f(y,x))              /* arc tangent with 2 args */
-#define dFMod(a,b) (fmodf(a,b))                /* modulo */
-#define dFloor(x) floorf(x)                    /* floor */
-#define dCeil(x) ceilf(x)                      /* floor */
-#define dCopySign(a,b) ((dReal)copysignf(a,b)) /* copy value sign */
-#define dNextAfter(x, y) nextafterf(x, y) /* next value after */
-
-#if defined(_ODE__NEXTAFTERF_REQUIRED)
-float _nextafterf(float x, float y);
-#endif
-
-#ifdef HAVE___ISNANF
-#define dIsNan(x) (__isnanf(x))
-#elif defined(HAVE__ISNANF)
-#define dIsNan(x) (_isnanf(x))
-#elif defined(HAVE_ISNANF)
-#define dIsNan(x) (isnanf(x))
-#else
-  /*
-     fall back to _isnan which is the VC way,
-     this may seem redundant since we already checked
-     for _isnan before, but if isnan is detected by
-     configure but is not found during compilation
-     we should always make sure we check for __isnanf,
-     _isnanf and isnanf in that order before falling
-     back to a default
-  */
-#define dIsNan(x) (_isnan(x))
-#endif
-
-#elif defined(dDOUBLE)
-
-#define REAL(x) (x)
-#define dRecip(x) (1.0/(x))
-#define dSqrt(x) sqrt(x)
-#define dRecipSqrt(x) (1.0/sqrt(x))
-#define dSin(x) sin(x)
-#define dCos(x) cos(x)
-#define dFabs(x) fabs(x)
-#define dAtan2(y,x) atan2((y),(x))
-#define dFMod(a,b) (fmod((a),(b)))
-#define dFloor(x) floor(x)
-#define dCeil(x) ceil(x)
-#define dCopySign(a,b) (copysign((a),(b)))
-#define dNextAfter(x, y) nextafter(x, y)
-
-#undef _ODE__NEXTAFTERF_REQUIRED
-
-#ifdef HAVE___ISNAN
-#define dIsNan(x) (__isnan(x))
-#elif defined(HAVE__ISNAN)
-#define dIsNan(x) (_isnan(x))
-#elif defined(HAVE_ISNAN)
-#define dIsNan(x) (isnan(x))
-#else
-#define dIsNan(x) (_isnan(x))
-#endif
-
-#else
-#error You must #define dSINGLE or dDOUBLE
-#endif
-
-/* internal object types (all prefixed with `dx') */
-
-struct dxWorld;                /* dynamics world */
-struct dxSpace;                /* collision space */
-struct dxBody;         /* rigid body (dynamics object) */
-struct dxGeom;         /* geometry (collision object) */
-struct dxJoint;
-struct dxJointNode;
-struct dxJointGroup;
-struct dxWorldProcessThreadingManager;
-
-typedef struct dxWorld *dWorldID;
-typedef struct dxSpace *dSpaceID;
-typedef struct dxBody *dBodyID;
-typedef struct dxGeom *dGeomID;
-typedef struct dxJoint *dJointID;
-typedef struct dxJointGroup *dJointGroupID;
-typedef struct dxWorldProcessThreadingManager *dWorldStepThreadingManagerID;
-
-/* error numbers */
-
-enum {
-  d_ERR_UNKNOWN = 0,           /* unknown error */
-  d_ERR_IASSERT,               /* internal assertion failed */
-  d_ERR_UASSERT,               /* user assertion failed */
-  d_ERR_LCP                    /* user assertion failed */
-};
-
-
-/* joint type numbers */
-
-typedef enum {
-  dJointTypeNone = 0,          /* or "unknown" */
-  dJointTypeBall,
-  dJointTypeHinge,
-  dJointTypeSlider,
-  dJointTypeContact,
-  dJointTypeUniversal,
-  dJointTypeHinge2,
-  dJointTypeFixed,
-  dJointTypeNull,
-  dJointTypeAMotor,
-  dJointTypeLMotor,
-  dJointTypePlane2D,
-  dJointTypePR,
-  dJointTypePU,
-  dJointTypePiston
-} dJointType;
-
-
-/* an alternative way of setting joint parameters, using joint parameter
- * structures and member constants. we don't actually do this yet.
- */
-
-/*
-typedef struct dLimot {
-  int mode;
-  dReal lostop, histop;
-  dReal vel, fmax;
-  dReal fudge_factor;
-  dReal bounce, soft;
-  dReal suspension_erp, suspension_cfm;
-} dLimot;
-
-enum {
-  dLimotLoStop         = 0x0001,
-  dLimotHiStop         = 0x0002,
-  dLimotVel            = 0x0004,
-  dLimotFMax           = 0x0008,
-  dLimotFudgeFactor    = 0x0010,
-  dLimotBounce         = 0x0020,
-  dLimotSoft           = 0x0040
-};
-*/
-
-
-/* standard joint parameter names. why are these here? - because we don't want
- * to include all the joint function definitions in joint.cpp. hmmmm.
- * MSVC complains if we call D_ALL_PARAM_NAMES_X with a blank second argument,
- * which is why we have the D_ALL_PARAM_NAMES macro as well. please copy and
- * paste between these two.
- */
-
-#define D_ALL_PARAM_NAMES(start) \
-  /* parameters for limits and motors */ \
-  dParamLoStop = start, \
-  dParamHiStop, \
-  dParamVel, \
-  dParamFMax, \
-  dParamFudgeFactor, \
-  dParamBounce, \
-  dParamCFM, \
-  dParamStopERP, \
-  dParamStopCFM, \
-  /* parameters for suspension */ \
-  dParamSuspensionERP, \
-  dParamSuspensionCFM, \
-  dParamERP, \
-
-  //////////////////////////////////////////////////////////////////////////////
-  /// \enum  D_ALL_PARAM_NAMES_X
-  ///
-  /// \var dParamGroup This is the starting value of the different group
-  ///                  (i.e. dParamGroup1, dParamGroup2, dParamGroup3)
-  ///                  It also helps in the use of parameter
-  ///                  (dParamGroup2 | dParamFMax) == dParamFMax2
-  //////////////////////////////////////////////////////////////////////////////
-#define D_ALL_PARAM_NAMES_X(start,x) \
-  dParamGroup ## x = start, \
-  /* parameters for limits and motors */ \
-  dParamLoStop ## x = start, \
-  dParamHiStop ## x, \
-  dParamVel ## x, \
-  dParamFMax ## x, \
-  dParamFudgeFactor ## x, \
-  dParamBounce ## x, \
-  dParamCFM ## x, \
-  dParamStopERP ## x, \
-  dParamStopCFM ## x, \
-  /* parameters for suspension */ \
-  dParamSuspensionERP ## x, \
-  dParamSuspensionCFM ## x, \
-  dParamERP ## x,
-
-enum {
-  D_ALL_PARAM_NAMES(0)
-  dParamsInGroup,     ///< Number of parameter in a group
-  D_ALL_PARAM_NAMES_X(0x000,1)
-  D_ALL_PARAM_NAMES_X(0x100,2)
-  D_ALL_PARAM_NAMES_X(0x200,3)
-
-  /* add a multiple of this constant to the basic parameter numbers to get
-   * the parameters for the second, third etc axes.
-   */
-  dParamGroup=0x100
-};
-
-
-/* angular motor mode numbers */
-
-enum {
-  dAMotorUser = 0,
-  dAMotorEuler = 1
-};
-
-
-/* joint force feedback information */
-
-typedef struct dJointFeedback {
-  dVector3 f1;         /* force applied to body 1 */
-  dVector3 t1;         /* torque applied to body 1 */
-  dVector3 f2;         /* force applied to body 2 */
-  dVector3 t2;         /* torque applied to body 2 */
-} dJointFeedback;
-
-
-/* private functions that must be implemented by the collision library:
- * (1) indicate that a geom has moved, (2) get the next geom in a body list.
- * these functions are called whenever the position of geoms connected to a
- * body have changed, e.g. with dBodySetPosition(), dBodySetRotation(), or
- * when the ODE step function updates the body state.
- */
-
-void dGeomMoved (dGeomID);
-dGeomID dGeomGetBodyNext (dGeomID);
-
-/**
- * dGetConfiguration returns the specific ODE build configuration as
- * a string of tokens. The string can be parsed in a similar way to
- * the OpenGL extension mechanism, the naming convention should be
- * familiar too. The following extensions are reported:
- *
- * ODE
- * ODE_single_precision
- * ODE_double_precision
- * ODE_EXT_no_debug
- * ODE_EXT_trimesh
- * ODE_EXT_opcode
- * ODE_EXT_gimpact
- * ODE_EXT_malloc_not_alloca
- * ODE_EXT_gyroscopic
- * ODE_OPC_16bit_indices
- * ODE_OPC_new_collider
-*/
-ODE_API const char* dGetConfiguration (void);
-
-/**
- * Helper to check for a token in the ODE configuration string.
- * Caution, this function is case sensitive.
- *
- * @param token A configuration token, see dGetConfiguration for details
- *
- * @return 1 if exact token is present, 0 if not present
- */
-ODE_API int dCheckConfiguration( const char* token );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/compatibility.h b/misc/builddeps/linux64/ode/include/ode/compatibility.h
deleted file mode 100644 (file)
index b370986..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_COMPATIBILITY_H_
-#define _ODE_COMPATIBILITY_H_
-
-/*
- * ODE's backward compatibility system ensures that as ODE's API
- * evolves, user code will not break.
- */
-
-/*
- * These new rotation function names are more consistent with the
- * rest of the API.
- */
-#define dQtoR(q,R) dRfromQ((R),(q))
-#define dRtoQ(R,q) dQfromR((q),(R))
-#define dWtoDQ(w,q,dq) dDQfromW((dq),(w),(q))
-
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/contact.h b/misc/builddeps/linux64/ode/include/ode/contact.h
deleted file mode 100644 (file)
index 8bb810f..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_CONTACT_H_
-#define _ODE_CONTACT_H_
-
-#include <ode/common.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-enum {
-  dContactMu2          = 0x001,
-  dContactFDir1                = 0x002,
-  dContactBounce       = 0x004,
-  dContactSoftERP      = 0x008,
-  dContactSoftCFM      = 0x010,
-  dContactMotion1      = 0x020,
-  dContactMotion2      = 0x040,
-  dContactMotionN      = 0x080,
-  dContactSlip1                = 0x100,
-  dContactSlip2                = 0x200,
-
-  dContactApprox0      = 0x0000,
-  dContactApprox1_1    = 0x1000,
-  dContactApprox1_2    = 0x2000,
-  dContactApprox1      = 0x3000
-};
-
-
-typedef struct dSurfaceParameters {
-  /* must always be defined */
-  int mode;
-  dReal mu;
-
-  /* only defined if the corresponding flag is set in mode */
-  dReal mu2;
-  dReal bounce;
-  dReal bounce_vel;
-  dReal soft_erp;
-  dReal soft_cfm;
-  dReal motion1,motion2,motionN;
-  dReal slip1,slip2;
-} dSurfaceParameters;
-
-
-/**
- * @brief Describe the contact point between two geoms.
- *
- * If two bodies touch, or if a body touches a static feature in its 
- * environment, the contact is represented by one or more "contact 
- * points", described by dContactGeom.
- *
- * The convention is that if body 1 is moved along the normal vector by 
- * a distance depth (or equivalently if body 2 is moved the same distance 
- * in the opposite direction) then the contact depth will be reduced to 
- * zero. This means that the normal vector points "in" to body 1.
- *
- * @ingroup collide
- */
-typedef struct dContactGeom {
-  dVector3 pos;          ///< contact position
-  dVector3 normal;       ///< normal vector
-  dReal depth;           ///< penetration depth
-  dGeomID g1,g2;         ///< the colliding geoms
-  int side1,side2;       ///< (to be documented)
-} dContactGeom;
-
-
-/* contact info used by contact joint */
-
-typedef struct dContact {
-  dSurfaceParameters surface;
-  dContactGeom geom;
-  dVector3 fdir1;
-} dContact;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/error.h b/misc/builddeps/linux64/ode/include/ode/error.h
deleted file mode 100644 (file)
index 20b9ba4..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/* this comes from the `reuse' library. copy any changes back to the source */
-
-#ifndef _ODE_ERROR_H_
-#define _ODE_ERROR_H_
-
-#include <ode/odeconfig.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* all user defined error functions have this type. error and debug functions
- * should not return.
- */
-typedef void dMessageFunction (int errnum, const char *msg, va_list ap);
-
-/* set a new error, debug or warning handler. if fn is 0, the default handlers
- * are used.
- */
-ODE_API void dSetErrorHandler (dMessageFunction *fn);
-ODE_API void dSetDebugHandler (dMessageFunction *fn);
-ODE_API void dSetMessageHandler (dMessageFunction *fn);
-
-/* return the current error, debug or warning handler. if the return value is
- * 0, the default handlers are in place.
- */
-ODE_API dMessageFunction *dGetErrorHandler(void);
-ODE_API dMessageFunction *dGetDebugHandler(void);
-ODE_API dMessageFunction *dGetMessageHandler(void);
-
-/* generate a fatal error, debug trap or a message. */
-ODE_API void dError (int num, const char *msg, ...);
-ODE_API void dDebug (int num, const char *msg, ...);
-ODE_API void dMessage (int num, const char *msg, ...);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/export-dif.h b/misc/builddeps/linux64/ode/include/ode/export-dif.h
deleted file mode 100644 (file)
index f6578ac..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_EXPORT_DIF_
-#define _ODE_EXPORT_DIF_
-
-#include <ode/common.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-ODE_API void dWorldExportDIF (dWorldID w, FILE *file, const char *world_name);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/mass.h b/misc/builddeps/linux64/ode/include/ode/mass.h
deleted file mode 100644 (file)
index d74500c..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_MASS_H_
-#define _ODE_MASS_H_
-
-#include <ode/common.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct dMass;
-typedef struct dMass dMass;
-
-/**
- * Check if a mass structure has valid value.
- * The function check if the mass and innertia matrix are positive definits
- *
- * @param m A mass structure to check
- *
- * @return 1 if both codition are met
- */
-ODE_API int dMassCheck(const dMass *m);
-
-ODE_API void dMassSetZero (dMass *);
-
-ODE_API void dMassSetParameters (dMass *, dReal themass,
-                        dReal cgx, dReal cgy, dReal cgz,
-                        dReal I11, dReal I22, dReal I33,
-                        dReal I12, dReal I13, dReal I23);
-
-ODE_API void dMassSetSphere (dMass *, dReal density, dReal radius);
-ODE_API void dMassSetSphereTotal (dMass *, dReal total_mass, dReal radius);
-
-ODE_API void dMassSetCapsule (dMass *, dReal density, int direction,
-                       dReal radius, dReal length);
-ODE_API void dMassSetCapsuleTotal (dMass *, dReal total_mass, int direction,
-                       dReal radius, dReal length);
-
-ODE_API void dMassSetCylinder (dMass *, dReal density, int direction,
-                      dReal radius, dReal length);
-ODE_API void dMassSetCylinderTotal (dMass *, dReal total_mass, int direction,
-                           dReal radius, dReal length);
-
-ODE_API void dMassSetBox (dMass *, dReal density,
-                 dReal lx, dReal ly, dReal lz);
-ODE_API void dMassSetBoxTotal (dMass *, dReal total_mass,
-                      dReal lx, dReal ly, dReal lz);
-
-ODE_API void dMassSetTrimesh (dMass *, dReal density, dGeomID g);
-
-ODE_API void dMassSetTrimeshTotal (dMass *m, dReal total_mass, dGeomID g);
-
-ODE_API void dMassAdjust (dMass *, dReal newmass);
-
-ODE_API void dMassTranslate (dMass *, dReal x, dReal y, dReal z);
-
-ODE_API void dMassRotate (dMass *, const dMatrix3 R);
-
-ODE_API void dMassAdd (dMass *a, const dMass *b);
-
-
-// Backwards compatible API
-ODE_API ODE_API_DEPRECATED void dMassSetCappedCylinder(dMass *a, dReal b, int c, dReal d, dReal e);
-ODE_API ODE_API_DEPRECATED void dMassSetCappedCylinderTotal(dMass *a, dReal b, int c, dReal d, dReal e);
-
-
-struct dMass {
-  dReal mass;
-  dVector3 c;
-  dMatrix3 I;
-
-#ifdef __cplusplus
-  dMass()
-    { dMassSetZero (this); }
-  void setZero()
-    { dMassSetZero (this); }
-  void setParameters (dReal themass, dReal cgx, dReal cgy, dReal cgz,
-                     dReal I11, dReal I22, dReal I33,
-                     dReal I12, dReal I13, dReal I23)
-    { dMassSetParameters (this,themass,cgx,cgy,cgz,I11,I22,I33,I12,I13,I23); }
-
-  void setSphere (dReal density, dReal radius)
-    { dMassSetSphere (this,density,radius); }
-  void setSphereTotal (dReal total, dReal radius)
-    { dMassSetSphereTotal (this,total,radius); }
-
-  void setCapsule (dReal density, int direction, dReal radius, dReal length)
-    { dMassSetCapsule (this,density,direction,radius,length); }
-  void setCapsuleTotal (dReal total, int direction, dReal radius, dReal length)
-    { dMassSetCapsule (this,total,direction,radius,length); }
-
-  void setCylinder(dReal density, int direction, dReal radius, dReal length)
-    { dMassSetCylinder (this,density,direction,radius,length); }
-  void setCylinderTotal(dReal total, int direction, dReal radius, dReal length)
-    { dMassSetCylinderTotal (this,total,direction,radius,length); }
-
-  void setBox (dReal density, dReal lx, dReal ly, dReal lz)
-    { dMassSetBox (this,density,lx,ly,lz); }
-  void setBoxTotal (dReal total, dReal lx, dReal ly, dReal lz)
-    { dMassSetBoxTotal (this,total,lx,ly,lz); }
-
-  void setTrimesh(dReal density, dGeomID g)
-    { dMassSetTrimesh (this, density, g); }
-  void setTrimeshTotal(dReal total, dGeomID g)
-    { dMassSetTrimeshTotal (this, total, g); }
-
-  void adjust (dReal newmass)
-    { dMassAdjust (this,newmass); }
-  void translate (dReal x, dReal y, dReal z)
-    { dMassTranslate (this,x,y,z); }
-  void rotate (const dMatrix3 R)
-    { dMassRotate (this,R); }
-  void add (const dMass *b)
-    { dMassAdd (this,b); }
-#endif
-};
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/matrix.h b/misc/builddeps/linux64/ode/include/ode/matrix.h
deleted file mode 100644 (file)
index e177f44..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/* optimized and unoptimized vector and matrix functions */
-
-#ifndef _ODE_MATRIX_H_
-#define _ODE_MATRIX_H_
-
-#include <ode/common.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* set a vector/matrix of size n to all zeros, or to a specific value. */
-
-ODE_API void dSetZero (dReal *a, int n);
-ODE_API void dSetValue (dReal *a, int n, dReal value);
-
-
-/* get the dot product of two n*1 vectors. if n <= 0 then
- * zero will be returned (in which case a and b need not be valid).
- */
-
-ODE_API dReal dDot (const dReal *a, const dReal *b, int n);
-
-
-/* get the dot products of (a0,b), (a1,b), etc and return them in outsum.
- * all vectors are n*1. if n <= 0 then zeroes will be returned (in which case
- * the input vectors need not be valid). this function is somewhat faster
- * than calling dDot() for all of the combinations separately.
- */
-
-/* NOT INCLUDED in the library for now.
-void dMultidot2 (const dReal *a0, const dReal *a1,
-                const dReal *b, dReal *outsum, int n);
-*/
-
-
-/* matrix multiplication. all matrices are stored in standard row format.
- * the digit refers to the argument that is transposed:
- *   0:   A = B  * C   (sizes: A:p*r B:p*q C:q*r)
- *   1:   A = B' * C   (sizes: A:p*r B:q*p C:q*r)
- *   2:   A = B  * C'  (sizes: A:p*r B:p*q C:r*q)
- * case 1,2 are equivalent to saying that the operation is A=B*C but
- * B or C are stored in standard column format.
- */
-
-ODE_API void dMultiply0 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-ODE_API void dMultiply1 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-ODE_API void dMultiply2 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-
-
-/* do an in-place cholesky decomposition on the lower triangle of the n*n
- * symmetric matrix A (which is stored by rows). the resulting lower triangle
- * will be such that L*L'=A. return 1 on success and 0 on failure (on failure
- * the matrix is not positive definite).
- */
-
-ODE_API int dFactorCholesky (dReal *A, int n);
-
-
-/* solve for x: L*L'*x = b, and put the result back into x.
- * L is size n*n, b is size n*1. only the lower triangle of L is considered.
- */
-
-ODE_API void dSolveCholesky (const dReal *L, dReal *b, int n);
-
-
-/* compute the inverse of the n*n positive definite matrix A and put it in
- * Ainv. this is not especially fast. this returns 1 on success (A was
- * positive definite) or 0 on failure (not PD).
- */
-
-ODE_API int dInvertPDMatrix (const dReal *A, dReal *Ainv, int n);
-
-
-/* check whether an n*n matrix A is positive definite, return 1/0 (yes/no).
- * positive definite means that x'*A*x > 0 for any x. this performs a
- * cholesky decomposition of A. if the decomposition fails then the matrix
- * is not positive definite. A is stored by rows. A is not altered.
- */
-
-ODE_API int dIsPositiveDefinite (const dReal *A, int n);
-
-
-/* factorize a matrix A into L*D*L', where L is lower triangular with ones on
- * the diagonal, and D is diagonal.
- * A is an n*n matrix stored by rows, with a leading dimension of n rounded
- * up to 4. L is written into the strict lower triangle of A (the ones are not
- * written) and the reciprocal of the diagonal elements of D are written into
- * d.
- */
-ODE_API void dFactorLDLT (dReal *A, dReal *d, int n, int nskip);
-
-
-/* solve L*x=b, where L is n*n lower triangular with ones on the diagonal,
- * and x,b are n*1. b is overwritten with x.
- * the leading dimension of L is `nskip'.
- */
-ODE_API void dSolveL1 (const dReal *L, dReal *b, int n, int nskip);
-
-
-/* solve L'*x=b, where L is n*n lower triangular with ones on the diagonal,
- * and x,b are n*1. b is overwritten with x.
- * the leading dimension of L is `nskip'.
- */
-ODE_API void dSolveL1T (const dReal *L, dReal *b, int n, int nskip);
-
-
-/* in matlab syntax: a(1:n) = a(1:n) .* d(1:n) */
-
-ODE_API void dVectorScale (dReal *a, const dReal *d, int n);
-
-
-/* given `L', a n*n lower triangular matrix with ones on the diagonal,
- * and `d', a n*1 vector of the reciprocal diagonal elements of an n*n matrix
- * D, solve L*D*L'*x=b where x,b are n*1. x overwrites b.
- * the leading dimension of L is `nskip'.
- */
-
-ODE_API void dSolveLDLT (const dReal *L, const dReal *d, dReal *b, int n, int nskip);
-
-
-/* given an L*D*L' factorization of an n*n matrix A, return the updated
- * factorization L2*D2*L2' of A plus the following "top left" matrix:
- *
- *    [ b a' ]     <-- b is a[0]
- *    [ a 0  ]     <-- a is a[1..n-1]
- *
- *   - L has size n*n, its leading dimension is nskip. L is lower triangular
- *     with ones on the diagonal. only the lower triangle of L is referenced.
- *   - d has size n. d contains the reciprocal diagonal elements of D.
- *   - a has size n.
- * the result is written into L, except that the left column of L and d[0]
- * are not actually modified. see ldltaddTL.m for further comments. 
- */
-ODE_API void dLDLTAddTL (dReal *L, dReal *d, const dReal *a, int n, int nskip);
-
-
-/* given an L*D*L' factorization of a permuted matrix A, produce a new
- * factorization for row and column `r' removed.
- *   - A has size n1*n1, its leading dimension in nskip. A is symmetric and
- *     positive definite. only the lower triangle of A is referenced.
- *     A itself may actually be an array of row pointers.
- *   - L has size n2*n2, its leading dimension in nskip. L is lower triangular
- *     with ones on the diagonal. only the lower triangle of L is referenced.
- *   - d has size n2. d contains the reciprocal diagonal elements of D.
- *   - p is a permutation vector. it contains n2 indexes into A. each index
- *     must be in the range 0..n1-1.
- *   - r is the row/column of L to remove.
- * the new L will be written within the old L, i.e. will have the same leading
- * dimension. the last row and column of L, and the last element of d, are
- * undefined on exit.
- *
- * a fast O(n^2) algorithm is used. see ldltremove.m for further comments.
- */
-ODE_API void dLDLTRemove (dReal **A, const int *p, dReal *L, dReal *d,
-                 int n1, int n2, int r, int nskip);
-
-
-/* given an n*n matrix A (with leading dimension nskip), remove the r'th row
- * and column by moving elements. the new matrix will have the same leading
- * dimension. the last row and column of A are untouched on exit.
- */
-ODE_API void dRemoveRowCol (dReal *A, int n, int nskip, int r);
-
-
-#if defined(__ODE__)
-
-void _dSetZero (dReal *a, size_t n);
-void _dSetValue (dReal *a, size_t n, dReal value);
-dReal _dDot (const dReal *a, const dReal *b, int n);
-void _dMultiply0 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-void _dMultiply1 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-void _dMultiply2 (dReal *A, const dReal *B, const dReal *C, int p,int q,int r);
-int _dFactorCholesky (dReal *A, int n, void *tmpbuf);
-void _dSolveCholesky (const dReal *L, dReal *b, int n, void *tmpbuf);
-int _dInvertPDMatrix (const dReal *A, dReal *Ainv, int n, void *tmpbuf);
-int _dIsPositiveDefinite (const dReal *A, int n, void *tmpbuf);
-void _dFactorLDLT (dReal *A, dReal *d, int n, int nskip);
-void _dSolveL1 (const dReal *L, dReal *b, int n, int nskip);
-void _dSolveL1T (const dReal *L, dReal *b, int n, int nskip);
-void _dVectorScale (dReal *a, const dReal *d, int n);
-void _dSolveLDLT (const dReal *L, const dReal *d, dReal *b, int n, int nskip);
-void _dLDLTAddTL (dReal *L, dReal *d, const dReal *a, int n, int nskip, void *tmpbuf);
-void _dLDLTRemove (dReal **A, const int *p, dReal *L, dReal *d, int n1, int n2, int r, int nskip, void *tmpbuf);
-void _dRemoveRowCol (dReal *A, int n, int nskip, int r);
-
-PURE_INLINE size_t _dEstimateFactorCholeskyTmpbufSize(int n)
-{
-  return dPAD(n) * sizeof(dReal);
-}
-
-PURE_INLINE size_t _dEstimateSolveCholeskyTmpbufSize(int n)
-{
-  return dPAD(n) * sizeof(dReal);
-}
-
-PURE_INLINE size_t _dEstimateInvertPDMatrixTmpbufSize(int n)
-{
-  size_t FactorCholesky_size = _dEstimateFactorCholeskyTmpbufSize(n);
-  size_t SolveCholesky_size = _dEstimateSolveCholeskyTmpbufSize(n);
-  size_t MaxCholesky_size = FactorCholesky_size > SolveCholesky_size ? FactorCholesky_size : SolveCholesky_size;
-  return dPAD(n) * (n + 1) * sizeof(dReal) + MaxCholesky_size;
-}
-
-PURE_INLINE size_t _dEstimateIsPositiveDefiniteTmpbufSize(int n)
-{
-  return dPAD(n) * n * sizeof(dReal) + _dEstimateFactorCholeskyTmpbufSize(n);
-}
-
-PURE_INLINE size_t _dEstimateLDLTAddTLTmpbufSize(int nskip)
-{
-  return nskip * 2 * sizeof(dReal);
-}
-
-PURE_INLINE size_t _dEstimateLDLTRemoveTmpbufSize(int n2, int nskip)
-{
-  return n2 * sizeof(dReal) + _dEstimateLDLTAddTLTmpbufSize(nskip);
-}
-
-// For internal use
-#define dSetZero(a, n) _dSetZero(a, n)
-#define dSetValue(a, n, value) _dSetValue(a, n, value)
-#define dDot(a, b, n) _dDot(a, b, n)
-#define dMultiply0(A, B, C, p, q, r) _dMultiply0(A, B, C, p, q, r)
-#define dMultiply1(A, B, C, p, q, r) _dMultiply1(A, B, C, p, q, r)
-#define dMultiply2(A, B, C, p, q, r) _dMultiply2(A, B, C, p, q, r)
-#define dFactorCholesky(A, n, tmpbuf) _dFactorCholesky(A, n, tmpbuf)
-#define dSolveCholesky(L, b, n, tmpbuf) _dSolveCholesky(L, b, n, tmpbuf)
-#define dInvertPDMatrix(A, Ainv, n, tmpbuf) _dInvertPDMatrix(A, Ainv, n, tmpbuf)
-#define dIsPositiveDefinite(A, n, tmpbuf) _dIsPositiveDefinite(A, n, tmpbuf)
-#define dFactorLDLT(A, d, n, nskip) _dFactorLDLT(A, d, n, nskip)
-#define dSolveL1(L, b, n, nskip) _dSolveL1(L, b, n, nskip)
-#define dSolveL1T(L, b, n, nskip) _dSolveL1T(L, b, n, nskip)
-#define dVectorScale(a, d, n) _dVectorScale(a, d, n)
-#define dSolveLDLT(L, d, b, n, nskip) _dSolveLDLT(L, d, b, n, nskip)
-#define dLDLTAddTL(L, d, a, n, nskip, tmpbuf) _dLDLTAddTL(L, d, a, n, nskip, tmpbuf)
-#define dLDLTRemove(A, p, L, d, n1, n2, r, nskip, tmpbuf) _dLDLTRemove(A, p, L, d, n1, n2, r, nskip, tmpbuf)
-#define dRemoveRowCol(A, n, nskip, r) _dRemoveRowCol(A, n, nskip, r)
-
-
-#define dEstimateFactorCholeskyTmpbufSize(n) _dEstimateFactorCholeskyTmpbufSize(n)
-#define dEstimateSolveCholeskyTmpbufSize(n) _dEstimateSolveCholeskyTmpbufSize(n)
-#define dEstimateInvertPDMatrixTmpbufSize(n) _dEstimateInvertPDMatrixTmpbufSize(n)
-#define dEstimateIsPositiveDefiniteTmpbufSize(n) _dEstimateIsPositiveDefiniteTmpbufSize(n)
-#define dEstimateLDLTAddTLTmpbufSize(nskip) _dEstimateLDLTAddTLTmpbufSize(nskip)
-#define dEstimateLDLTRemoveTmpbufSize(n2, nskip) _dEstimateLDLTRemoveTmpbufSize(n2, nskip)
-
-
-#endif // defined(__ODE__)
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/memory.h b/misc/builddeps/linux64/ode/include/ode/memory.h
deleted file mode 100644 (file)
index 361061c..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/* this comes from the `reuse' library. copy any changes back to the source */
-
-#ifndef _ODE_MEMORY_H_
-#define _ODE_MEMORY_H_
-
-#include <ode/odeconfig.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* function types to allocate and free memory */
-typedef void * dAllocFunction (size_t size);
-typedef void * dReallocFunction (void *ptr, size_t oldsize, size_t newsize);
-typedef void dFreeFunction (void *ptr, size_t size);
-
-/* set new memory management functions. if fn is 0, the default handlers are
- * used. */
-ODE_API void dSetAllocHandler (dAllocFunction *fn);
-ODE_API void dSetReallocHandler (dReallocFunction *fn);
-ODE_API void dSetFreeHandler (dFreeFunction *fn);
-
-/* get current memory management functions */
-ODE_API dAllocFunction *dGetAllocHandler (void);
-ODE_API dReallocFunction *dGetReallocHandler (void);
-ODE_API dFreeFunction *dGetFreeHandler (void);
-
-/* allocate and free memory. */
-ODE_API void * dAlloc (size_t size);
-ODE_API void * dRealloc (void *ptr, size_t oldsize, size_t newsize);
-ODE_API void dFree (void *ptr, size_t size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/misc.h b/misc/builddeps/linux64/ode/include/ode/misc.h
deleted file mode 100644 (file)
index 0c55fc5..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-/* miscellaneous math functions. these are mostly useful for testing */
-
-#ifndef _ODE_MISC_H_
-#define _ODE_MISC_H_
-
-#include <ode/common.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* return 1 if the random number generator is working. */
-ODE_API int dTestRand(void);
-
-/* return next 32 bit random number. this uses a not-very-random linear
- * congruential method.
- */
-ODE_API unsigned long dRand(void);
-
-/* get and set the current random number seed. */
-ODE_API unsigned long  dRandGetSeed(void);
-ODE_API void dRandSetSeed (unsigned long s);
-
-/* return a random integer between 0..n-1. the distribution will get worse
- * as n approaches 2^32.
- */
-ODE_API int dRandInt (int n);
-
-/* return a random real number between 0..1 */
-ODE_API dReal dRandReal(void);
-
-/* print out a matrix */
-#ifdef __cplusplus
-ODE_API void dPrintMatrix (const dReal *A, int n, int m, char *fmt = "%10.4f ",
-                  FILE *f=stdout);
-#else
-ODE_API void dPrintMatrix (const dReal *A, int n, int m, char *fmt, FILE *f);
-#endif
-
-/* make a random vector with entries between +/- range. A has n elements. */
-ODE_API void dMakeRandomVector (dReal *A, int n, dReal range);
-
-/* make a random matrix with entries between +/- range. A has size n*m. */
-ODE_API void dMakeRandomMatrix (dReal *A, int n, int m, dReal range);
-
-/* clear the upper triangle of a square matrix */
-ODE_API void dClearUpperTriangle (dReal *A, int n);
-
-/* return the maximum element difference between the two n*m matrices */
-ODE_API dReal dMaxDifference (const dReal *A, const dReal *B, int n, int m);
-
-/* return the maximum element difference between the lower triangle of two
- * n*n matrices */
-ODE_API dReal dMaxDifferenceLowerTriangle (const dReal *A, const dReal *B, int n);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/objects.h b/misc/builddeps/linux64/ode/include/ode/objects.h
deleted file mode 100644 (file)
index 379de01..0000000
+++ /dev/null
@@ -1,2975 +0,0 @@
-
-
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_OBJECTS_H_
-#define _ODE_OBJECTS_H_
-
-#include <ode/common.h>
-#include <ode/mass.h>
-#include <ode/contact.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup world World
- *
- * The world object is a container for rigid bodies and joints. Objects in
- * different worlds can not interact, for example rigid bodies from two
- * different worlds can not collide.
- *
- * All the objects in a world exist at the same point in time, thus one
- * reason to use separate worlds is to simulate systems at different rates.
- * Most applications will only need one world.
- */
-
-
-/**
- * @brief Create a new, empty world and return its ID number.
- * @return an identifier
- * @ingroup world
- */
-ODE_API dWorldID dWorldCreate(void);
-
-
-/**
- * @brief Destroy a world and everything in it.
- *
- * This includes all bodies, and all joints that are not part of a joint
- * group. Joints that are part of a joint group will be deactivated, and
- * can be destroyed by calling, for example, dJointGroupEmpty().
- * @ingroup world
- * @param world the identifier for the world the be destroyed.
- */
-ODE_API void dWorldDestroy (dWorldID world);
-
-
-/**
- * @brief Set the world's global gravity vector.
- *
- * The units are m/s^2, so Earth's gravity vector would be (0,0,-9.81),
- * assuming that +z is up. The default is no gravity, i.e. (0,0,0).
- *
- * @ingroup world
- */
-ODE_API void dWorldSetGravity (dWorldID, dReal x, dReal y, dReal z);
-
-
-/**
- * @brief Get the gravity vector for a given world.
- * @ingroup world
- */
-ODE_API void dWorldGetGravity (dWorldID, dVector3 gravity);
-
-
-/**
- * @brief Set the global ERP value, that controls how much error
- * correction is performed in each time step.
- * @ingroup world
- * @param dWorldID the identifier of the world.
- * @param erp Typical values are in the range 0.1--0.8. The default is 0.2.
- */
-ODE_API void dWorldSetERP (dWorldID, dReal erp);
-
-/**
- * @brief Get the error reduction parameter.
- * @ingroup world
- * @return ERP value
- */
-ODE_API dReal dWorldGetERP (dWorldID);
-
-
-/**
- * @brief Set the global CFM (constraint force mixing) value.
- * @ingroup world
- * @param cfm Typical values are in the range @m{10^{-9}} -- 1.
- * The default is 10^-5 if single precision is being used, or 10^-10
- * if double precision is being used.
- */
-ODE_API void dWorldSetCFM (dWorldID, dReal cfm);
-
-/**
- * @brief Get the constraint force mixing value.
- * @ingroup world
- * @return CFM value
- */
-ODE_API dReal dWorldGetCFM (dWorldID);
-
-
-/**
- * @brief Set the world to use shared working memory along with another world.
- *
- * The worlds allocate working memory internally for simulation stepping. This
- * memory is cached among the calls to @c dWordStep and @c dWorldQuickStep. 
- * Similarly, several worlds can be set up to share this memory caches thus 
- * reducing overall memory usage by cost of making worlds inappropriate for 
- * simultaneous simulation in multiple threads.
- *
- * If null value is passed for @a from_world parameter the world is detached from 
- * sharing and returns to defaults for working memory, reservation policy and 
- * memory manager as if just created. This can also be used to enable use of shared 
- * memory for a world that has already had working memory allocated privately.
- * Normally using shared memory after a world has its private working memory allocated
- * is prohibited.
- *
- * Allocation policy used can only increase world's internal reserved memory size
- * and never decreases it. @c dWorldCleanupWorkingMemory can be used to release 
- * working memory for a world in case if number of objects/joint decreases 
- * significantly in it.
- *
- * With sharing working memory worlds also automatically share memory reservation 
- * policy and memory manager. Thus, these parameters need to be customized for
- * initial world to be used as sharing source only.
- *
- * Failure result status means a memory allocation failure.
- *
- * @param w The world to use the shared memory with.
- * @param from_world Null or the world the shared memory is to be used from.
- * @returns 1 for success and 0 for failure.
- *
- * @ingroup world
- * @see dWorldCleanupWorkingMemory
- * @see dWorldSetStepMemoryReservationPolicy
- * @see dWorldSetStepMemoryManager
- */
-ODE_API int dWorldUseSharedWorkingMemory(dWorldID w, dWorldID from_world/*=NULL*/);
-
-/**
- * @brief Release internal working memory allocated for world
- *
- * The worlds allocate working memory internally for simulation stepping. This 
- * function can be used to free world's internal memory cache in case if number of
- * objects/joints in the world decreases significantly. By default, internal 
- * allocation policy is used to only increase cache size as necessary and never 
- * decrease it.
- *
- * If a world shares its working memory with other worlds the cache deletion 
- * affects all the linked worlds. However the shared status itself remains intact.
- *
- * The function call does affect neither memory reservation policy nor memory manager.
- *
- * @param w The world to release working memory for.
- *
- * @ingroup world
- * @see dWorldUseSharedWorkingMemory
- * @see dWorldSetStepMemoryReservationPolicy
- * @see dWorldSetStepMemoryManager
- */
-ODE_API void dWorldCleanupWorkingMemory(dWorldID w);
-
-#define dWORLDSTEP_RESERVEFACTOR_DEFAULT    1.2f
-#define dWORLDSTEP_RESERVESIZE_DEFAULT      65536U
-
-/**
- * @struct dWorldStepReserveInfo
- * @brief Memory reservation policy descriptor structure for world stepping functions.
- *
- * @c struct_size should be assigned the size of the structure.
- *
- * @c reserve_factor is a quotient that is multiplied by required memory size
- *  to allocate extra reserve whenever reallocation is needed.
- *
- * @c reserve_minimum is a minimum size that is checked against whenever reallocation 
- * is needed to allocate expected working memory minimum at once without extra 
- * reallocations as number of bodies/joints grows.
- *
- * @ingroup world
- * @see dWorldSetStepMemoryReservationPolicy
- */
-typedef struct
-{
-  unsigned struct_size;
-  float reserve_factor; // Use float as precision does not matter here
-  unsigned reserve_minimum;
-
-} dWorldStepReserveInfo;
-
-/**
- * @brief Set memory reservation policy for world to be used with simulation stepping functions
- *
- * The function allows to customize reservation policy to be used for internal
- * memory which is allocated to aid simulation for a world. By default, values
- * of @c dWORLDSTEP_RESERVEFACTOR_DEFAULT and @c dWORLDSTEP_RESERVESIZE_DEFAULT
- * are used.
- *
- * Passing @a policyinfo argument as NULL results in reservation policy being
- * reset to defaults as if the world has been just created. The content of 
- * @a policyinfo structure is copied internally and does not need to remain valid
- * after the call returns.
- *
- * If the world uses working memory sharing, changing memory reservation policy
- * affects all the worlds linked together.
- *
- * Failure result status means a memory allocation failure.
- *
- * @param w The world to change memory reservation policy for.
- * @param policyinfo Null or a pointer to policy descriptor structure.
- * @returns 1 for success and 0 for failure.
- *
- * @ingroup world
- * @see dWorldUseSharedWorkingMemory
- */
-ODE_API int dWorldSetStepMemoryReservationPolicy(dWorldID w, const dWorldStepReserveInfo *policyinfo/*=NULL*/);
-
-/**
-* @struct dWorldStepMemoryFunctionsInfo
-* @brief World stepping memory manager descriptor structure
-*
-* This structure is intended to define the functions of memory manager to be used
-* with world stepping functions.
-*
-* @c struct_size should be assigned the size of the structure
-*
-* @c alloc_block is a function to allocate memory block of given size.
-*
-* @c shrink_block is a function to shrink existing memory block to a smaller size.
-* It must preserve the contents of block head while shrinking. The new block size
-* is guaranteed to be always less than the existing one.
-*
-* @c free_block is a function to delete existing memory block.
-*
-* @ingroup init
-* @see dWorldSetStepMemoryManager
-*/
-typedef struct 
-{
-  unsigned struct_size;
-  void *(*alloc_block)(size_t block_size);
-  void *(*shrink_block)(void *block_pointer, size_t block_current_size, size_t block_smaller_size);
-  void (*free_block)(void *block_pointer, size_t block_current_size);
-
-} dWorldStepMemoryFunctionsInfo;
-
-/**
-* @brief Set memory manager for world to be used with simulation stepping functions
-*
-* The function allows to customize memory manager to be used for internal
-* memory allocation during simulation for a world. By default, @c dAlloc/@c dRealloc/@c dFree
-* based memory manager is used.
-*
-* Passing @a memfuncs argument as NULL results in memory manager being
-* reset to default one as if the world has been just created. The content of 
-* @a memfuncs structure is copied internally and does not need to remain valid
-* after the call returns.
-*
-* If the world uses working memory sharing, changing memory manager
-* affects all the worlds linked together. 
-*
-* Failure result status means a memory allocation failure.
-*
-* @param w The world to change memory reservation policy for.
-* @param memfuncs Null or a pointer to memory manager descriptor structure.
-* @returns 1 for success and 0 for failure.
-*
-* @ingroup world
-* @see dWorldUseSharedWorkingMemory
-*/
-ODE_API int dWorldSetStepMemoryManager(dWorldID w, const dWorldStepMemoryFunctionsInfo *memfuncs);
-
-/**
- * @brief Step the world.
- *
- * This uses a "big matrix" method that takes time on the order of m^3
- * and memory on the order of m^2, where m is the total number of constraint
- * rows. For large systems this will use a lot of memory and can be very slow,
- * but this is currently the most accurate method.
- *
- * Failure result status means that the memory allocation has failed for operation.
- * In such a case all the objects remain in unchanged state and simulation can be
- * retried as soon as more memory is available.
- *
- * @param w The world to be stepped
- * @param stepsize The number of seconds that the simulation has to advance.
- * @returns 1 for success and 0 for failure
- *
- * @ingroup world
- */
-ODE_API int dWorldStep (dWorldID w, dReal stepsize);
-
-/**
- * @brief Quick-step the world.
- *
- * This uses an iterative method that takes time on the order of m*N
- * and memory on the order of m, where m is the total number of constraint
- * rows N is the number of iterations.
- * For large systems this is a lot faster than dWorldStep(),
- * but it is less accurate.
- *
- * QuickStep is great for stacks of objects especially when the
- * auto-disable feature is used as well.
- * However, it has poor accuracy for near-singular systems.
- * Near-singular systems can occur when using high-friction contacts, motors,
- * or certain articulated structures. For example, a robot with multiple legs
- * sitting on the ground may be near-singular.
- *
- * There are ways to help overcome QuickStep's inaccuracy problems:
- *
- * \li Increase CFM.
- * \li Reduce the number of contacts in your system (e.g. use the minimum
- *     number of contacts for the feet of a robot or creature).
- * \li Don't use excessive friction in the contacts.
- * \li Use contact slip if appropriate
- * \li Avoid kinematic loops (however, kinematic loops are inevitable in
- *     legged creatures).
- * \li Don't use excessive motor strength.
- * \liUse force-based motors instead of velocity-based motors.
- *
- * Increasing the number of QuickStep iterations may help a little bit, but
- * it is not going to help much if your system is really near singular.
- *
- * Failure result status means that the memory allocation has failed for operation.
- * In such a case all the objects remain in unchanged state and simulation can be
- * retried as soon as more memory is available.
- *
- * @param w The world to be stepped
- * @param stepsize The number of seconds that the simulation has to advance.
- * @returns 1 for success and 0 for failure
- *
- * @ingroup world
- */
-ODE_API int dWorldQuickStep (dWorldID w, dReal stepsize);
-
-
-/**
-* @brief Converts an impulse to a force.
-* @ingroup world
-* @remarks
-* If you want to apply a linear or angular impulse to a rigid body,
-* instead of a force or a torque, then you can use this function to convert
-* the desired impulse into a force/torque vector before calling the
-* BodyAdd... function.
-* The current algorithm simply scales the impulse by 1/stepsize,
-* where stepsize is the step size for the next step that will be taken.
-* This function is given a dWorldID because, in the future, the force
-* computation may depend on integrator parameters that are set as
-* properties of the world.
-*/
-ODE_API void dWorldImpulseToForce
-(
- dWorldID, dReal stepsize,
- dReal ix, dReal iy, dReal iz, dVector3 force
- );
-
-
-/**
- * @brief Set the number of iterations that the QuickStep method performs per
- *        step.
- * @ingroup world
- * @remarks
- * More iterations will give a more accurate solution, but will take
- * longer to compute.
- * @param num The default is 20 iterations.
- */
-ODE_API void dWorldSetQuickStepNumIterations (dWorldID, int num);
-
-
-/**
- * @brief Get the number of iterations that the QuickStep method performs per
- *        step.
- * @ingroup world
- * @return nr of iterations
- */
-ODE_API int dWorldGetQuickStepNumIterations (dWorldID);
-
-/**
- * @brief Set the SOR over-relaxation parameter
- * @ingroup world
- * @param over_relaxation value to use by SOR
- */
-ODE_API void dWorldSetQuickStepW (dWorldID, dReal over_relaxation);
-
-/**
- * @brief Get the SOR over-relaxation parameter
- * @ingroup world
- * @returns the over-relaxation setting
- */
-ODE_API dReal dWorldGetQuickStepW (dWorldID);
-
-/* World contact parameter functions */
-
-/**
- * @brief Set the maximum correcting velocity that contacts are allowed
- * to generate.
- * @ingroup world
- * @param vel The default value is infinity (i.e. no limit).
- * @remarks
- * Reducing this value can help prevent "popping" of deeply embedded objects.
- */
-ODE_API void dWorldSetContactMaxCorrectingVel (dWorldID, dReal vel);
-
-/**
- * @brief Get the maximum correcting velocity that contacts are allowed
- * to generated.
- * @ingroup world
- */
-ODE_API dReal dWorldGetContactMaxCorrectingVel (dWorldID);
-
-/**
- * @brief Set the depth of the surface layer around all geometry objects.
- * @ingroup world
- * @remarks
- * Contacts are allowed to sink into the surface layer up to the given
- * depth before coming to rest.
- * @param depth The default value is zero.
- * @remarks
- * Increasing this to some small value (e.g. 0.001) can help prevent
- * jittering problems due to contacts being repeatedly made and broken.
- */
-ODE_API void dWorldSetContactSurfaceLayer (dWorldID, dReal depth);
-
-/**
- * @brief Get the depth of the surface layer around all geometry objects.
- * @ingroup world
- * @returns the depth
- */
-ODE_API dReal dWorldGetContactSurfaceLayer (dWorldID);
-
-
-/**
- * @defgroup disable Automatic Enabling and Disabling
- * @ingroup world bodies
- *
- * Every body can be enabled or disabled. Enabled bodies participate in the
- * simulation, while disabled bodies are turned off and do not get updated
- * during a simulation step. New bodies are always created in the enabled state.
- *
- * A disabled body that is connected through a joint to an enabled body will be
- * automatically re-enabled at the next simulation step.
- *
- * Disabled bodies do not consume CPU time, therefore to speed up the simulation
- * bodies should be disabled when they come to rest. This can be done automatically
- * with the auto-disable feature.
- *
- * If a body has its auto-disable flag turned on, it will automatically disable
- * itself when
- *   @li It has been idle for a given number of simulation steps.
- *   @li It has also been idle for a given amount of simulation time.
- *
- * A body is considered to be idle when the magnitudes of both its
- * linear average velocity and angular average velocity are below given thresholds.
- * The sample size for the average defaults to one and can be disabled by setting
- * to zero with 
- *
- * Thus, every body has six auto-disable parameters: an enabled flag, a idle step
- * count, an idle time, linear/angular average velocity thresholds, and the
- * average samples count.
- *
- * Newly created bodies get these parameters from world.
- */
-
-/**
- * @brief Get auto disable linear threshold for newly created bodies.
- * @ingroup disable
- * @return the threshold
- */
-ODE_API dReal dWorldGetAutoDisableLinearThreshold (dWorldID);
-
-/**
- * @brief Set auto disable linear threshold for newly created bodies.
- * @param linear_threshold default is 0.01
- * @ingroup disable
- */
-ODE_API void  dWorldSetAutoDisableLinearThreshold (dWorldID, dReal linear_threshold);
-
-/**
- * @brief Get auto disable angular threshold for newly created bodies.
- * @ingroup disable
- * @return the threshold
- */
-ODE_API dReal dWorldGetAutoDisableAngularThreshold (dWorldID);
-
-/**
- * @brief Set auto disable angular threshold for newly created bodies.
- * @param linear_threshold default is 0.01
- * @ingroup disable
- */
-ODE_API void dWorldSetAutoDisableAngularThreshold (dWorldID, dReal angular_threshold);
-
-/**
- * @brief Get auto disable linear average threshold for newly created bodies.
- * @ingroup disable
- * @return the threshold
- */
-ODE_API dReal dWorldGetAutoDisableLinearAverageThreshold (dWorldID);
-
-/**
- * @brief Set auto disable linear average threshold for newly created bodies.
- * @param linear_average_threshold default is 0.01
- * @ingroup disable
- */
-ODE_API void  dWorldSetAutoDisableLinearAverageThreshold (dWorldID, dReal linear_average_threshold);
-
-/**
- * @brief Get auto disable angular average threshold for newly created bodies.
- * @ingroup disable
- * @return the threshold
- */
-ODE_API dReal dWorldGetAutoDisableAngularAverageThreshold (dWorldID);
-
-/**
- * @brief Set auto disable angular average threshold for newly created bodies.
- * @param linear_average_threshold default is 0.01
- * @ingroup disable
- */
-ODE_API void dWorldSetAutoDisableAngularAverageThreshold (dWorldID, dReal angular_average_threshold);
-
-/**
- * @brief Get auto disable sample count for newly created bodies.
- * @ingroup disable
- * @return number of samples used
- */
-ODE_API int dWorldGetAutoDisableAverageSamplesCount (dWorldID);
-
-/**
- * @brief Set auto disable average sample count for newly created bodies.
- * @ingroup disable
- * @param average_samples_count Default is 1, meaning only instantaneous velocity is used.
- * Set to zero to disable sampling and thus prevent any body from auto-disabling.
- */
-ODE_API void dWorldSetAutoDisableAverageSamplesCount (dWorldID, unsigned int average_samples_count );
-
-/**
- * @brief Get auto disable steps for newly created bodies.
- * @ingroup disable
- * @return nr of steps
- */
-ODE_API int dWorldGetAutoDisableSteps (dWorldID);
-
-/**
- * @brief Set auto disable steps for newly created bodies.
- * @ingroup disable
- * @param steps default is 10
- */
-ODE_API void dWorldSetAutoDisableSteps (dWorldID, int steps);
-
-/**
- * @brief Get auto disable time for newly created bodies.
- * @ingroup disable
- * @return nr of seconds
- */
-ODE_API dReal dWorldGetAutoDisableTime (dWorldID);
-
-/**
- * @brief Set auto disable time for newly created bodies.
- * @ingroup disable
- * @param time default is 0 seconds
- */
-ODE_API void dWorldSetAutoDisableTime (dWorldID, dReal time);
-
-/**
- * @brief Get auto disable flag for newly created bodies.
- * @ingroup disable
- * @return 0 or 1
- */
-ODE_API int dWorldGetAutoDisableFlag (dWorldID);
-
-/**
- * @brief Set auto disable flag for newly created bodies.
- * @ingroup disable
- * @param do_auto_disable default is false.
- */
-ODE_API void dWorldSetAutoDisableFlag (dWorldID, int do_auto_disable);
-
-
-/**
- * @defgroup damping Damping
- * @ingroup bodies world
- *
- * Damping serves two purposes: reduce simulation instability, and to allow
- * the bodies to come to rest (and possibly auto-disabling them).
- *
- * Bodies are constructed using the world's current damping parameters. Setting
- * the scales to 0 disables the damping.
- *
- * Here is how it is done: after every time step linear and angular
- * velocities are tested against the corresponding thresholds. If they
- * are above, they are multiplied by (1 - scale). So a negative scale value
- * will actually increase the speed, and values greater than one will
- * make the object oscillate every step; both can make the simulation unstable.
- *
- * To disable damping just set the damping scale to zero.
- *
- * You can also limit the maximum angular velocity. In contrast to the damping
- * functions, the angular velocity is affected before the body is moved.
- * This means that it will introduce errors in joints that are forcing the body
- * to rotate too fast. Some bodies have naturally high angular velocities
- * (like cars' wheels), so you may want to give them a very high (like the default,
- * dInfinity) limit.
- *
- * @note The velocities are damped after the stepper function has moved the
- * object. Otherwise the damping could introduce errors in joints. First the
- * joint constraints are processed by the stepper (moving the body), then
- * the damping is applied.
- *
- * @note The damping happens right after the moved callback is called; this way 
- * it still possible use the exact velocities the body has acquired during the
- * step. You can even use the callback to create your own customized damping.
- */
-
-/**
- * @brief Get the world's linear damping threshold.
- * @ingroup damping
- */
-ODE_API dReal dWorldGetLinearDampingThreshold (dWorldID w);
-
-/**
- * @brief Set the world's linear damping threshold.
- * @param threshold The damping won't be applied if the linear speed is
- *        below this threshold. Default is 0.01.
- * @ingroup damping
- */
-ODE_API void dWorldSetLinearDampingThreshold(dWorldID w, dReal threshold);
-
-/**
- * @brief Get the world's angular damping threshold.
- * @ingroup damping
- */
-ODE_API dReal dWorldGetAngularDampingThreshold (dWorldID w);
-
-/**
- * @brief Set the world's angular damping threshold.
- * @param threshold The damping won't be applied if the angular speed is
- *        below this threshold. Default is 0.01.
- * @ingroup damping
- */
-ODE_API void dWorldSetAngularDampingThreshold(dWorldID w, dReal threshold);
-
-/**
- * @brief Get the world's linear damping scale.
- * @ingroup damping
- */
-ODE_API dReal dWorldGetLinearDamping (dWorldID w);
-
-/**
- * @brief Set the world's linear damping scale.
- * @param scale The linear damping scale that is to be applied to bodies.
- * Default is 0 (no damping). Should be in the interval [0, 1].
- * @ingroup damping
- */
-ODE_API void dWorldSetLinearDamping (dWorldID w, dReal scale);
-
-/**
- * @brief Get the world's angular damping scale.
- * @ingroup damping
- */
-ODE_API dReal dWorldGetAngularDamping (dWorldID w);
-
-/**
- * @brief Set the world's angular damping scale.
- * @param scale The angular damping scale that is to be applied to bodies.
- * Default is 0 (no damping). Should be in the interval [0, 1].
- * @ingroup damping
- */
-ODE_API void dWorldSetAngularDamping(dWorldID w, dReal scale);
-
-/**
- * @brief Convenience function to set body linear and angular scales.
- * @param linear_scale The linear damping scale that is to be applied to bodies.
- * @param angular_scale The angular damping scale that is to be applied to bodies.
- * @ingroup damping
- */
-ODE_API void dWorldSetDamping(dWorldID w,
-                                dReal linear_scale,
-                                dReal angular_scale);
-
-/**
- * @brief Get the default maximum angular speed.
- * @ingroup damping
- * @sa dBodyGetMaxAngularSpeed()
- */
-ODE_API dReal dWorldGetMaxAngularSpeed (dWorldID w);
-
-
-/**
- * @brief Set the default maximum angular speed for new bodies.
- * @ingroup damping
- * @sa dBodySetMaxAngularSpeed()
- */
-ODE_API void dWorldSetMaxAngularSpeed (dWorldID w, dReal max_speed);
-
-
-
-/**
- * @defgroup bodies Rigid Bodies
- *
- * A rigid body has various properties from the point of view of the
- * simulation. Some properties change over time:
- *
- *  @li Position vector (x,y,z) of the body's point of reference.
- *      Currently the point of reference must correspond to the body's center of mass.
- *  @li Linear velocity of the point of reference, a vector (vx,vy,vz).
- *  @li Orientation of a body, represented by a quaternion (qs,qx,qy,qz) or
- *      a 3x3 rotation matrix.
- *  @li Angular velocity vector (wx,wy,wz) which describes how the orientation
- *      changes over time.
- *
- * Other body properties are usually constant over time:
- *
- *  @li Mass of the body.
- *  @li Position of the center of mass with respect to the point of reference.
- *      In the current implementation the center of mass and the point of
- *      reference must coincide.
- *  @li Inertia matrix. This is a 3x3 matrix that describes how the body's mass
- *      is distributed around the center of mass. Conceptually each body has an
- *      x-y-z coordinate frame embedded in it that moves and rotates with the body.
- *
- * The origin of this coordinate frame is the body's point of reference. Some values
- * in ODE (vectors, matrices etc) are relative to the body coordinate frame, and others
- * are relative to the global coordinate frame.
- *
- * Note that the shape of a rigid body is not a dynamical property (except insofar as
- * it influences the various mass properties). It is only collision detection that cares
- * about the detailed shape of the body.
- */
-
-
-/**
- * @brief Get auto disable linear average threshold.
- * @ingroup bodies disable
- * @return the threshold
- */
-ODE_API dReal dBodyGetAutoDisableLinearThreshold (dBodyID);
-
-/**
- * @brief Set auto disable linear average threshold.
- * @ingroup bodies disable
- * @return the threshold
- */
-ODE_API void  dBodySetAutoDisableLinearThreshold (dBodyID, dReal linear_average_threshold);
-
-/**
- * @brief Get auto disable angular average threshold.
- * @ingroup bodies disable
- * @return the threshold
- */
-ODE_API dReal dBodyGetAutoDisableAngularThreshold (dBodyID);
-
-/**
- * @brief Set auto disable angular average threshold.
- * @ingroup bodies disable
- * @return the threshold
- */
-ODE_API void  dBodySetAutoDisableAngularThreshold (dBodyID, dReal angular_average_threshold);
-
-/**
- * @brief Get auto disable average size (samples count).
- * @ingroup bodies disable
- * @return the nr of steps/size.
- */
-ODE_API int dBodyGetAutoDisableAverageSamplesCount (dBodyID);
-
-/**
- * @brief Set auto disable average buffer size (average steps).
- * @ingroup bodies disable
- * @param average_samples_count the nr of samples to review.
- */
-ODE_API void dBodySetAutoDisableAverageSamplesCount (dBodyID, unsigned int average_samples_count);
-
-
-/**
- * @brief Get auto steps a body must be thought of as idle to disable
- * @ingroup bodies disable
- * @return the nr of steps
- */
-ODE_API int dBodyGetAutoDisableSteps (dBodyID);
-
-/**
- * @brief Set auto disable steps.
- * @ingroup bodies disable
- * @param steps the nr of steps.
- */
-ODE_API void dBodySetAutoDisableSteps (dBodyID, int steps);
-
-/**
- * @brief Get auto disable time.
- * @ingroup bodies disable
- * @return nr of seconds
- */
-ODE_API dReal dBodyGetAutoDisableTime (dBodyID);
-
-/**
- * @brief Set auto disable time.
- * @ingroup bodies disable
- * @param time nr of seconds.
- */
-ODE_API void  dBodySetAutoDisableTime (dBodyID, dReal time);
-
-/**
- * @brief Get auto disable flag.
- * @ingroup bodies disable
- * @return 0 or 1
- */
-ODE_API int dBodyGetAutoDisableFlag (dBodyID);
-
-/**
- * @brief Set auto disable flag.
- * @ingroup bodies disable
- * @param do_auto_disable 0 or 1
- */
-ODE_API void dBodySetAutoDisableFlag (dBodyID, int do_auto_disable);
-
-/**
- * @brief Set auto disable defaults.
- * @remarks
- * Set the values for the body to those set as default for the world.
- * @ingroup bodies disable
- */
-ODE_API void  dBodySetAutoDisableDefaults (dBodyID);
-
-
-/**
- * @brief Retrieves the world attached to te given body.
- * @remarks
- * 
- * @ingroup bodies
- */
-ODE_API dWorldID dBodyGetWorld (dBodyID);
-
-/**
- * @brief Create a body in given world.
- * @remarks
- * Default mass parameters are at position (0,0,0).
- * @ingroup bodies
- */
-ODE_API dBodyID dBodyCreate (dWorldID);
-
-/**
- * @brief Destroy a body.
- * @remarks
- * All joints that are attached to this body will be put into limbo:
- * i.e. unattached and not affecting the simulation, but they will NOT be
- * deleted.
- * @ingroup bodies
- */
-ODE_API void dBodyDestroy (dBodyID);
-
-/**
- * @brief Set the body's user-data pointer.
- * @ingroup bodies
- * @param data arbitraty pointer
- */
-ODE_API void  dBodySetData (dBodyID, void *data);
-
-/**
- * @brief Get the body's user-data pointer.
- * @ingroup bodies
- * @return a pointer to the user's data.
- */
-ODE_API void *dBodyGetData (dBodyID);
-
-/**
- * @brief Set position of a body.
- * @remarks
- * After setting, the outcome of the simulation is undefined
- * if the new configuration is inconsistent with the joints/constraints
- * that are present.
- * @ingroup bodies
- */
-ODE_API void dBodySetPosition   (dBodyID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the orientation of a body.
- * @ingroup bodies
- * @remarks
- * After setting, the outcome of the simulation is undefined
- * if the new configuration is inconsistent with the joints/constraints
- * that are present.
- */
-ODE_API void dBodySetRotation   (dBodyID, const dMatrix3 R);
-
-/**
- * @brief Set the orientation of a body.
- * @ingroup bodies
- * @remarks
- * After setting, the outcome of the simulation is undefined
- * if the new configuration is inconsistent with the joints/constraints
- * that are present.
- */
-ODE_API void dBodySetQuaternion (dBodyID, const dQuaternion q);
-
-/**
- * @brief Set the linear velocity of a body.
- * @ingroup bodies
- */
-ODE_API void dBodySetLinearVel  (dBodyID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the angular velocity of a body.
- * @ingroup bodies
- */
-ODE_API void dBodySetAngularVel (dBodyID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Get the position of a body.
- * @ingroup bodies
- * @remarks
- * When getting, the returned values are pointers to internal data structures,
- * so the vectors are valid until any changes are made to the rigid body
- * system structure.
- * @sa dBodyCopyPosition
- */
-ODE_API const dReal * dBodyGetPosition (dBodyID);
-
-
-/**
- * @brief Copy the position of a body into a vector.
- * @ingroup bodies
- * @param body  the body to query
- * @param pos   a copy of the body position
- * @sa dBodyGetPosition
- */
-ODE_API void dBodyCopyPosition (dBodyID body, dVector3 pos);
-
-
-/**
- * @brief Get the rotation of a body.
- * @ingroup bodies
- * @return pointer to a 4x3 rotation matrix.
- */
-ODE_API const dReal * dBodyGetRotation (dBodyID);
-
-
-/**
- * @brief Copy the rotation of a body.
- * @ingroup bodies
- * @param body   the body to query
- * @param R      a copy of the rotation matrix
- * @sa dBodyGetRotation
- */
-ODE_API void dBodyCopyRotation (dBodyID, dMatrix3 R);
-
-
-/**
- * @brief Get the rotation of a body.
- * @ingroup bodies
- * @return pointer to 4 scalars that represent the quaternion.
- */
-ODE_API const dReal * dBodyGetQuaternion (dBodyID);
-
-
-/**
- * @brief Copy the orientation of a body into a quaternion.
- * @ingroup bodies
- * @param body  the body to query
- * @param quat  a copy of the orientation quaternion
- * @sa dBodyGetQuaternion
- */
-ODE_API void dBodyCopyQuaternion(dBodyID body, dQuaternion quat);
-
-
-/**
- * @brief Get the linear velocity of a body.
- * @ingroup bodies
- */
-ODE_API const dReal * dBodyGetLinearVel (dBodyID);
-
-/**
- * @brief Get the angular velocity of a body.
- * @ingroup bodies
- */
-ODE_API const dReal * dBodyGetAngularVel (dBodyID);
-
-/**
- * @brief Set the mass of a body.
- * @ingroup bodies
- */
-ODE_API void dBodySetMass (dBodyID, const dMass *mass);
-
-/**
- * @brief Get the mass of a body.
- * @ingroup bodies
- */
-ODE_API void dBodyGetMass (dBodyID, dMass *mass);
-
-/**
- * @brief Add force at centre of mass of body in absolute coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddForce            (dBodyID, dReal fx, dReal fy, dReal fz);
-
-/**
- * @brief Add torque at centre of mass of body in absolute coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddTorque           (dBodyID, dReal fx, dReal fy, dReal fz);
-
-/**
- * @brief Add force at centre of mass of body in coordinates relative to body.
- * @ingroup bodies
- */
-ODE_API void dBodyAddRelForce         (dBodyID, dReal fx, dReal fy, dReal fz);
-
-/**
- * @brief Add torque at centre of mass of body in coordinates relative to body.
- * @ingroup bodies
- */
-ODE_API void dBodyAddRelTorque        (dBodyID, dReal fx, dReal fy, dReal fz);
-
-/**
- * @brief Add force at specified point in body in global coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddForceAtPos       (dBodyID, dReal fx, dReal fy, dReal fz,
-                                       dReal px, dReal py, dReal pz);
-/**
- * @brief Add force at specified point in body in local coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddForceAtRelPos    (dBodyID, dReal fx, dReal fy, dReal fz,
-                                       dReal px, dReal py, dReal pz);
-/**
- * @brief Add force at specified point in body in global coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddRelForceAtPos    (dBodyID, dReal fx, dReal fy, dReal fz,
-                                       dReal px, dReal py, dReal pz);
-/**
- * @brief Add force at specified point in body in local coordinates.
- * @ingroup bodies
- */
-ODE_API void dBodyAddRelForceAtRelPos (dBodyID, dReal fx, dReal fy, dReal fz,
-                                       dReal px, dReal py, dReal pz);
-
-/**
- * @brief Return the current accumulated force vector.
- * @return points to an array of 3 reals.
- * @remarks
- * The returned values are pointers to internal data structures, so
- * the vectors are only valid until any changes are made to the rigid
- * body system.
- * @ingroup bodies
- */
-ODE_API const dReal * dBodyGetForce (dBodyID);
-
-/**
- * @brief Return the current accumulated torque vector.
- * @return points to an array of 3 reals.
- * @remarks
- * The returned values are pointers to internal data structures, so
- * the vectors are only valid until any changes are made to the rigid
- * body system.
- * @ingroup bodies
- */
-ODE_API const dReal * dBodyGetTorque (dBodyID);
-
-/**
- * @brief Set the body force accumulation vector.
- * @remarks
- * This is mostly useful to zero the force and torque for deactivated bodies
- * before they are reactivated, in the case where the force-adding functions
- * were called on them while they were deactivated.
- * @ingroup bodies
- */
-ODE_API void dBodySetForce  (dBodyID b, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the body torque accumulation vector.
- * @remarks
- * This is mostly useful to zero the force and torque for deactivated bodies
- * before they are reactivated, in the case where the force-adding functions
- * were called on them while they were deactivated.
- * @ingroup bodies
- */
-ODE_API void dBodySetTorque (dBodyID b, dReal x, dReal y, dReal z);
-
-/**
- * @brief Get world position of a relative point on body.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyGetRelPointPos
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Get velocity vector in global coords of a relative point on body.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyGetRelPointVel
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Get velocity vector in global coords of a globally
- * specified point on a body.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyGetPointVel
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief takes a point in global coordinates and returns
- * the point's position in body-relative coordinates.
- * @remarks
- * This is the inverse of dBodyGetRelPointPos()
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyGetPosRelPoint
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Convert from local to world coordinates.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyVectorToWorld
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief Convert from world to local coordinates.
- * @ingroup bodies
- * @param result will contain the result.
- */
-ODE_API void dBodyVectorFromWorld
-(
-  dBodyID, dReal px, dReal py, dReal pz,
-  dVector3 result
-);
-
-/**
- * @brief controls the way a body's orientation is updated at each timestep.
- * @ingroup bodies
- * @param mode can be 0 or 1:
- * \li 0: An ``infinitesimal'' orientation update is used.
- * This is fast to compute, but it can occasionally cause inaccuracies
- * for bodies that are rotating at high speed, especially when those
- * bodies are joined to other bodies.
- * This is the default for every new body that is created.
- * \li 1: A ``finite'' orientation update is used.
- * This is more costly to compute, but will be more accurate for high
- * speed rotations.
- * @remarks
- * Note however that high speed rotations can result in many types of
- * error in a simulation, and the finite mode will only fix one of those
- * sources of error.
- */
-ODE_API void dBodySetFiniteRotationMode (dBodyID, int mode);
-
-/**
- * @brief sets the finite rotation axis for a body.
- * @ingroup bodies
- * @remarks
- * This is axis only has meaning when the finite rotation mode is set
- * If this axis is zero (0,0,0), full finite rotations are performed on
- * the body.
- * If this axis is nonzero, the body is rotated by performing a partial finite
- * rotation along the axis direction followed by an infinitesimal rotation
- * along an orthogonal direction.
- * @remarks
- * This can be useful to alleviate certain sources of error caused by quickly
- * spinning bodies. For example, if a car wheel is rotating at high speed
- * you can call this function with the wheel's hinge axis as the argument to
- * try and improve its behavior.
- */
-ODE_API void dBodySetFiniteRotationAxis (dBodyID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Get the way a body's orientation is updated each timestep.
- * @ingroup bodies
- * @return the mode 0 (infitesimal) or 1 (finite).
- */
-ODE_API int dBodyGetFiniteRotationMode (dBodyID);
-
-/**
- * @brief Get the finite rotation axis.
- * @param result will contain the axis.
- * @ingroup bodies
- */
-ODE_API void dBodyGetFiniteRotationAxis (dBodyID, dVector3 result);
-
-/**
- * @brief Get the number of joints that are attached to this body.
- * @ingroup bodies
- * @return nr of joints
- */
-ODE_API int dBodyGetNumJoints (dBodyID b);
-
-/**
- * @brief Return a joint attached to this body, given by index.
- * @ingroup bodies
- * @param index valid range is  0 to n-1 where n is the value returned by
- * dBodyGetNumJoints().
- */
-ODE_API dJointID dBodyGetJoint (dBodyID, int index);
-
-
-
-
-/**
- * @brief Set rigid body to dynamic state (default).
- * @param dBodyID identification of body.
- * @ingroup bodies
- */
-ODE_API void dBodySetDynamic (dBodyID);
-
-/**
- * @brief Set rigid body to kinematic state.
- * When in kinematic state the body isn't simulated as a dynamic
- * body (it's "unstoppable", doesn't respond to forces),
- * but can still affect dynamic bodies (e.g. in joints).
- * Kinematic bodies can be controlled by position and velocity.
- * @note A kinematic body has infinite mass. If you set its mass
- * to something else, it loses the kinematic state and behaves
- * as a normal dynamic body.
- * @param dBodyID identification of body.
- * @ingroup bodies
- */
-ODE_API void dBodySetKinematic (dBodyID);
-
-/**
- * @brief Check wether a body is in kinematic state.
- * @ingroup bodies
- * @return 1 if a body is kinematic or 0 if it is dynamic.
- */
-ODE_API int dBodyIsKinematic (dBodyID);
-
-/**
- * @brief Manually enable a body.
- * @param dBodyID identification of body.
- * @ingroup bodies
- */
-ODE_API void dBodyEnable (dBodyID);
-
-/**
- * @brief Manually disable a body.
- * @ingroup bodies
- * @remarks
- * A disabled body that is connected through a joint to an enabled body will
- * be automatically re-enabled at the next simulation step.
- */
-ODE_API void dBodyDisable (dBodyID);
-
-/**
- * @brief Check wether a body is enabled.
- * @ingroup bodies
- * @return 1 if a body is currently enabled or 0 if it is disabled.
- */
-ODE_API int dBodyIsEnabled (dBodyID);
-
-/**
- * @brief Set whether the body is influenced by the world's gravity or not.
- * @ingroup bodies
- * @param mode when nonzero gravity affects this body.
- * @remarks
- * Newly created bodies are always influenced by the world's gravity.
- */
-ODE_API void dBodySetGravityMode (dBodyID b, int mode);
-
-/**
- * @brief Get whether the body is influenced by the world's gravity or not.
- * @ingroup bodies
- * @return nonzero means gravity affects this body.
- */
-ODE_API int dBodyGetGravityMode (dBodyID b);
-
-/**
- * @brief Set the 'moved' callback of a body.
- *
- * Whenever a body has its position or rotation changed during the
- * timestep, the callback will be called (with body as the argument).
- * Use it to know which body may need an update in an external
- * structure (like a 3D engine).
- *
- * @param b the body that needs to be watched.
- * @param callback the callback to be invoked when the body moves. Set to zero
- * to disable.
- * @ingroup bodies
- */
-ODE_API void dBodySetMovedCallback(dBodyID b, void (*callback)(dBodyID));
-
-
-/**
- * @brief Return the first geom associated with the body.
- * 
- * You can traverse through the geoms by repeatedly calling
- * dBodyGetNextGeom().
- *
- * @return the first geom attached to this body, or 0.
- * @ingroup bodies
- */
-ODE_API dGeomID dBodyGetFirstGeom (dBodyID b);
-
-
-/**
- * @brief returns the next geom associated with the same body.
- * @param g a geom attached to some body.
- * @return the next geom attached to the same body, or 0.
- * @sa dBodyGetFirstGeom
- * @ingroup bodies
- */
-ODE_API dGeomID dBodyGetNextGeom (dGeomID g);
-
-
-/**
- * @brief Resets the damping settings to the current world's settings.
- * @ingroup bodies damping
- */
-ODE_API void dBodySetDampingDefaults(dBodyID b);
-
-/**
- * @brief Get the body's linear damping scale.
- * @ingroup bodies damping
- */
-ODE_API dReal dBodyGetLinearDamping (dBodyID b);
-
-/**
- * @brief Set the body's linear damping scale.
- * @param scale The linear damping scale. Should be in the interval [0, 1].
- * @ingroup bodies damping
- * @remarks From now on the body will not use the world's linear damping
- * scale until dBodySetDampingDefaults() is called.
- * @sa dBodySetDampingDefaults()
- */
-ODE_API void dBodySetLinearDamping(dBodyID b, dReal scale);
-
-/**
- * @brief Get the body's angular damping scale.
- * @ingroup bodies damping
- * @remarks If the body's angular damping scale was not set, this function
- * returns the world's angular damping scale.
- */
-ODE_API dReal dBodyGetAngularDamping (dBodyID b);
-
-/**
- * @brief Set the body's angular damping scale.
- * @param scale The angular damping scale. Should be in the interval [0, 1].
- * @ingroup bodies damping
- * @remarks From now on the body will not use the world's angular damping
- * scale until dBodyResetAngularDamping() is called.
- * @sa dBodyResetAngularDamping()
- */
-ODE_API void dBodySetAngularDamping(dBodyID b, dReal scale);
-
-/**
- * @brief Convenience function to set linear and angular scales at once.
- * @param linear_scale The linear damping scale. Should be in the interval [0, 1].
- * @param angular_scale The angular damping scale. Should be in the interval [0, 1].
- * @ingroup bodies damping
- * @sa dBodySetLinearDamping() dBodySetAngularDamping()
- */
-ODE_API void dBodySetDamping(dBodyID b, dReal linear_scale, dReal angular_scale);
-
-/**
- * @brief Get the body's linear damping threshold.
- * @ingroup bodies damping
- */
-ODE_API dReal dBodyGetLinearDampingThreshold (dBodyID b);
-
-/**
- * @brief Set the body's linear damping threshold.
- * @param threshold The linear threshold to be used. Damping
- *      is only applied if the linear speed is above this limit.
- * @ingroup bodies damping
- */
-ODE_API void dBodySetLinearDampingThreshold(dBodyID b, dReal threshold);
-
-/**
- * @brief Get the body's angular damping threshold.
- * @ingroup bodies damping
- */
-ODE_API dReal dBodyGetAngularDampingThreshold (dBodyID b);
-
-/**
- * @brief Set the body's angular damping threshold.
- * @param threshold The angular threshold to be used. Damping is
- *      only used if the angular speed is above this limit.
- * @ingroup bodies damping
- */
-ODE_API void dBodySetAngularDampingThreshold(dBodyID b, dReal threshold);
-
-/**
- * @brief Get the body's maximum angular speed.
- * @ingroup damping bodies
- * @sa dWorldGetMaxAngularSpeed()
- */
-ODE_API dReal dBodyGetMaxAngularSpeed (dBodyID b);
-
-/**
- * @brief Set the body's maximum angular speed.
- * @ingroup damping bodies
- * @sa dWorldSetMaxAngularSpeed() dBodyResetMaxAngularSpeed()
- * The default value is dInfinity, but it's a good idea to limit
- * it at less than 500 if the body has the gyroscopic term
- * enabled.
- */
-ODE_API void dBodySetMaxAngularSpeed(dBodyID b, dReal max_speed);
-
-
-
-/**
- * @brief Get the body's gyroscopic state.
- *
- * @return nonzero if gyroscopic term computation is enabled (default),
- * zero otherwise.
- * @ingroup bodies
- */
-ODE_API int dBodyGetGyroscopicMode(dBodyID b);
-
-
-/**
- * @brief Enable/disable the body's gyroscopic term.
- *
- * Disabling the gyroscopic term of a body usually improves
- * stability. It also helps turning spining objects, like cars'
- * wheels.
- *
- * @param enabled   nonzero (default) to enable gyroscopic term, 0
- * to disable.
- * @ingroup bodies
- */
-ODE_API void dBodySetGyroscopicMode(dBodyID b, int enabled);
-
-
-
-
-/**
- * @defgroup joints Joints
- *
- * In real life a joint is something like a hinge, that is used to connect two
- * objects.
- * In ODE a joint is very similar: It is a relationship that is enforced between
- * two bodies so that they can only have certain positions and orientations
- * relative to each other.
- * This relationship is called a constraint -- the words joint and
- * constraint are often used interchangeably.
- *
- * A joint has a set of parameters that can be set. These include:
- *
- *
- * \li  dParamLoStop Low stop angle or position. Setting this to
- *     -dInfinity (the default value) turns off the low stop.
- *     For rotational joints, this stop must be greater than -pi to be
- *     effective.
- * \li  dParamHiStop High stop angle or position. Setting this to
- *     dInfinity (the default value) turns off the high stop.
- *     For rotational joints, this stop must be less than pi to be
- *     effective.
- *     If the high stop is less than the low stop then both stops will
- *     be ineffective.
- * \li  dParamVel Desired motor velocity (this will be an angular or
- *     linear velocity).
- * \li  dParamFMax The maximum force or torque that the motor will use to
- *     achieve the desired velocity.
- *     This must always be greater than or equal to zero.
- *     Setting this to zero (the default value) turns off the motor.
- * \li  dParamFudgeFactor The current joint stop/motor implementation has
- *     a small problem:
- *     when the joint is at one stop and the motor is set to move it away
- *     from the stop, too much force may be applied for one time step,
- *     causing a ``jumping'' motion.
- *     This fudge factor is used to scale this excess force.
- *     It should have a value between zero and one (the default value).
- *     If the jumping motion is too visible in a joint, the value can be
- *     reduced.
- *     Making this value too small can prevent the motor from being able to
- *     move the joint away from a stop.
- * \li  dParamBounce The bouncyness of the stops.
- *     This is a restitution parameter in the range 0..1.
- *     0 means the stops are not bouncy at all, 1 means maximum bouncyness.
- * \li  dParamCFM The constraint force mixing (CFM) value used when not
- *     at a stop.
- * \li  dParamStopERP The error reduction parameter (ERP) used by the
- *     stops.
- * \li  dParamStopCFM The constraint force mixing (CFM) value used by the
- *     stops. Together with the ERP value this can be used to get spongy or
- *     soft stops.
- *     Note that this is intended for unpowered joints, it does not really
- *     work as expected when a powered joint reaches its limit.
- * \li  dParamSuspensionERP Suspension error reduction parameter (ERP).
- *     Currently this is only implemented on the hinge-2 joint.
- * \li  dParamSuspensionCFM Suspension constraint force mixing (CFM) value.
- *     Currently this is only implemented on the hinge-2 joint.
- *
- * If a particular parameter is not implemented by a given joint, setting it
- * will have no effect.
- * These parameter names can be optionally followed by a digit (2 or 3)
- * to indicate the second or third set of parameters, e.g. for the second axis
- * in a hinge-2 joint, or the third axis in an AMotor joint.
- */
-
-
-/**
- * @brief Create a new joint of the ball type.
- * @ingroup joints
- * @remarks
- * The joint is initially in "limbo" (i.e. it has no effect on the simulation)
- * because it does not connect to any bodies.
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateBall (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the hinge type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateHinge (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the slider type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateSlider (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the contact type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateContact (dWorldID, dJointGroupID, const dContact *);
-
-/**
- * @brief Create a new joint of the hinge2 type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateHinge2 (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the universal type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateUniversal (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the PR (Prismatic and Rotoide) type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreatePR (dWorldID, dJointGroupID);
-
-  /**
-   * @brief Create a new joint of the PU (Prismatic and Universal) type.
-   * @ingroup joints
-   * @param dJointGroupID set to 0 to allocate the joint normally.
-   * If it is nonzero the joint is allocated in the given joint group.
-   */
-  ODE_API dJointID dJointCreatePU (dWorldID, dJointGroupID);
-
-  /**
-   * @brief Create a new joint of the Piston type.
-   * @ingroup joints
-   * @param dJointGroupID set to 0 to allocate the joint normally.
-   *                      If it is nonzero the joint is allocated in the given
-   *                      joint group.
-   */
-  ODE_API dJointID dJointCreatePiston (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the fixed type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateFixed (dWorldID, dJointGroupID);
-
-ODE_API dJointID dJointCreateNull (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the A-motor type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateAMotor (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the L-motor type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreateLMotor (dWorldID, dJointGroupID);
-
-/**
- * @brief Create a new joint of the plane-2d type.
- * @ingroup joints
- * @param dJointGroupID set to 0 to allocate the joint normally.
- * If it is nonzero the joint is allocated in the given joint group.
- */
-ODE_API dJointID dJointCreatePlane2D (dWorldID, dJointGroupID);
-
-/**
- * @brief Destroy a joint.
- * @ingroup joints
- *
- * disconnects it from its attached bodies and removing it from the world.
- * However, if the joint is a member of a group then this function has no
- * effect - to destroy that joint the group must be emptied or destroyed.
- */
-ODE_API void dJointDestroy (dJointID);
-
-
-/**
- * @brief Create a joint group
- * @ingroup joints
- * @param max_size deprecated. Set to 0.
- */
-ODE_API dJointGroupID dJointGroupCreate (int max_size);
-
-/**
- * @brief Destroy a joint group.
- * @ingroup joints
- *
- * All joints in the joint group will be destroyed.
- */
-ODE_API void dJointGroupDestroy (dJointGroupID);
-
-/**
- * @brief Empty a joint group.
- * @ingroup joints
- *
- * All joints in the joint group will be destroyed,
- * but the joint group itself will not be destroyed.
- */
-ODE_API void dJointGroupEmpty (dJointGroupID);
-
-/**
- * @brief Return the number of bodies attached to the joint
- * @ingroup joints
- */
-ODE_API int dJointGetNumBodies(dJointID);
-
-/**
- * @brief Attach the joint to some new bodies.
- * @ingroup joints
- *
- * If the joint is already attached, it will be detached from the old bodies
- * first.
- * To attach this joint to only one body, set body1 or body2 to zero - a zero
- * body refers to the static environment.
- * Setting both bodies to zero puts the joint into "limbo", i.e. it will
- * have no effect on the simulation.
- * @remarks
- * Some joints, like hinge-2 need to be attached to two bodies to work.
- */
-ODE_API void dJointAttach (dJointID, dBodyID body1, dBodyID body2);
-
-/**
- * @brief Manually enable a joint.
- * @param dJointID identification of joint.
- * @ingroup joints
- */
-ODE_API void dJointEnable (dJointID);
-
-/**
- * @brief Manually disable a joint.
- * @ingroup joints
- * @remarks
- * A disabled joint will not affect the simulation, but will maintain the anchors and
- * axes so it can be enabled later.
- */
-ODE_API void dJointDisable (dJointID);
-
-/**
- * @brief Check wether a joint is enabled.
- * @ingroup joints
- * @return 1 if a joint is currently enabled or 0 if it is disabled.
- */
-ODE_API int dJointIsEnabled (dJointID);
-
-/**
- * @brief Set the user-data pointer
- * @ingroup joints
- */
-ODE_API void dJointSetData (dJointID, void *data);
-
-/**
- * @brief Get the user-data pointer
- * @ingroup joints
- */
-ODE_API void *dJointGetData (dJointID);
-
-/**
- * @brief Get the type of the joint
- * @ingroup joints
- * @return the type, being one of these:
- * \li dJointTypeBall
- * \li dJointTypeHinge
- * \li dJointTypeSlider
- * \li dJointTypeContact
- * \li dJointTypeUniversal
- * \li dJointTypeHinge2
- * \li dJointTypeFixed
- * \li dJointTypeNull
- * \li dJointTypeAMotor
- * \li dJointTypeLMotor
- * \li dJointTypePlane2D
- * \li dJointTypePR
- * \li dJointTypePU
- * \li dJointTypePiston
- */
-ODE_API dJointType dJointGetType (dJointID);
-
-/**
- * @brief Return the bodies that this joint connects.
- * @ingroup joints
- * @param index return the first (0) or second (1) body.
- * @remarks
- * If one of these returned body IDs is zero, the joint connects the other body
- * to the static environment.
- * If both body IDs are zero, the joint is in ``limbo'' and has no effect on
- * the simulation.
- */
-ODE_API dBodyID dJointGetBody (dJointID, int index);
-
-/**
- * @brief Sets the datastructure that is to receive the feedback.
- *
- * The feedback can be used by the user, so that it is known how
- * much force an individual joint exerts.
- * @ingroup joints
- */
-ODE_API void dJointSetFeedback (dJointID, dJointFeedback *);
-
-/**
- * @brief Gets the datastructure that is to receive the feedback.
- * @ingroup joints
- */
-ODE_API dJointFeedback *dJointGetFeedback (dJointID);
-
-/**
- * @brief Set the joint anchor point.
- * @ingroup joints
- *
- * The joint will try to keep this point on each body
- * together. The input is specified in world coordinates.
- */
-ODE_API void dJointSetBallAnchor (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the joint anchor point.
- * @ingroup joints
- */
-ODE_API void dJointSetBallAnchor2 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Param setting for Ball joints
- * @ingroup joints
- */
-ODE_API void dJointSetBallParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Set hinge anchor parameter.
- * @ingroup joints
- */
-ODE_API void dJointSetHingeAnchor (dJointID, dReal x, dReal y, dReal z);
-
-ODE_API void dJointSetHingeAnchorDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
-
-/**
- * @brief Set hinge axis.
- * @ingroup joints
- */
-ODE_API void dJointSetHingeAxis (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the Hinge axis as if the 2 bodies were already at angle appart.
- * @ingroup joints
- *
- * This function initialize the Axis and the relative orientation of each body
- * as if body1 was rotated around the axis by the angle value. \br
- * Ex:
- * <PRE>
- * dJointSetHingeAxis(jId, 1, 0, 0);
- * // If you request the position you will have: dJointGetHingeAngle(jId) == 0
- * dJointSetHingeAxisDelta(jId, 1, 0, 0, 0.23);
- * // If you request the position you will have: dJointGetHingeAngle(jId) == 0.23
- * </PRE>
-
- * @param j The Hinge joint ID for which the axis will be set
- * @param x The X component of the axis in world frame
- * @param y The Y component of the axis in world frame
- * @param z The Z component of the axis in world frame
- * @param angle The angle for the offset of the relative orientation.
- *              As if body1 was rotated by angle when the Axis was set (see below).
- *              The rotation is around the new Hinge axis.
- *
- * @note Usually the function dJointSetHingeAxis set the current position of body1
- *       and body2 as the zero angle position. This function set the current position
- *       as the if the 2 bodies where \b angle appart.
- * @warning Calling dJointSetHingeAnchor or dJointSetHingeAxis will reset the "zero"
- *          angle position.
- */
-ODE_API void dJointSetHingeAxisOffset (dJointID j, dReal x, dReal y, dReal z, dReal angle);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetHingeParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies the torque about the hinge axis.
- *
- * That is, it applies a torque with specified magnitude in the direction
- * of the hinge axis, to body 1, and with the same magnitude but in opposite
- * direction to body 2. This function is just a wrapper for dBodyAddTorque()}
- * @ingroup joints
- */
-ODE_API void dJointAddHingeTorque(dJointID joint, dReal torque);
-
-/**
- * @brief set the joint axis
- * @ingroup joints
- */
-ODE_API void dJointSetSliderAxis (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @ingroup joints
- */
-ODE_API void dJointSetSliderAxisDelta (dJointID, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetSliderParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies the given force in the slider's direction.
- *
- * That is, it applies a force with specified magnitude, in the direction of
- * slider's axis, to body1, and with the same magnitude but opposite
- * direction to body2.  This function is just a wrapper for dBodyAddForce().
- * @ingroup joints
- */
-ODE_API void dJointAddSliderForce(dJointID joint, dReal force);
-
-/**
- * @brief set anchor
- * @ingroup joints
- */
-ODE_API void dJointSetHinge2Anchor (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetHinge2Axis1 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetHinge2Axis2 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetHinge2Param (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies torque1 about the hinge2's axis 1, torque2 about the
- * hinge2's axis 2.
- * @remarks  This function is just a wrapper for dBodyAddTorque().
- * @ingroup joints
- */
-ODE_API void dJointAddHinge2Torques(dJointID joint, dReal torque1, dReal torque2);
-
-/**
- * @brief set anchor
- * @ingroup joints
- */
-ODE_API void dJointSetUniversalAnchor (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetUniversalAxis1 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the Universal axis1 as if the 2 bodies were already at 
- *        offset1 and offset2 appart with respect to axis1 and axis2.
- * @ingroup joints
- *
- * This function initialize the axis1 and the relative orientation of 
- * each body as if body1 was rotated around the new axis1 by the offset1 
- * value and as if body2 was rotated around the axis2 by offset2. \br
- * Ex:
-* <PRE>
- * dJointSetHuniversalAxis1(jId, 1, 0, 0);
- * // If you request the position you will have: dJointGetUniversalAngle1(jId) == 0
- * // If you request the position you will have: dJointGetUniversalAngle2(jId) == 0
- * dJointSetHuniversalAxis1Offset(jId, 1, 0, 0, 0.2, 0.17);
- * // If you request the position you will have: dJointGetUniversalAngle1(jId) == 0.2
- * // If you request the position you will have: dJointGetUniversalAngle2(jId) == 0.17
- * </PRE>
- *
- * @param j The Hinge joint ID for which the axis will be set
- * @param x The X component of the axis in world frame
- * @param y The Y component of the axis in world frame
- * @param z The Z component of the axis in world frame
- * @param angle The angle for the offset of the relative orientation.
- *              As if body1 was rotated by angle when the Axis was set (see below).
- *              The rotation is around the new Hinge axis.
- *
- * @note Usually the function dJointSetHingeAxis set the current position of body1
- *       and body2 as the zero angle position. This function set the current position
- *       as the if the 2 bodies where \b offsets appart.
- *
- * @note Any previous offsets are erased.
- *
- * @warning Calling dJointSetUniversalAnchor, dJointSetUnivesalAxis1, 
- *          dJointSetUniversalAxis2, dJointSetUniversalAxis2Offset 
- *          will reset the "zero" angle position.
- */
-ODE_API void dJointSetUniversalAxis1Offset (dJointID, dReal x, dReal y, dReal z,
-                                            dReal offset1, dReal offset2);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetUniversalAxis2 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief Set the Universal axis2 as if the 2 bodies were already at 
- *        offset1 and offset2 appart with respect to axis1 and axis2.
- * @ingroup joints
- *
- * This function initialize the axis2 and the relative orientation of 
- * each body as if body1 was rotated around the axis1 by the offset1 
- * value and as if body2 was rotated around the new axis2 by offset2. \br
- * Ex:
- * <PRE>
- * dJointSetHuniversalAxis2(jId, 0, 1, 0);
- * // If you request the position you will have: dJointGetUniversalAngle1(jId) == 0
- * // If you request the position you will have: dJointGetUniversalAngle2(jId) == 0
- * dJointSetHuniversalAxis2Offset(jId, 0, 1, 0, 0.2, 0.17);
- * // If you request the position you will have: dJointGetUniversalAngle1(jId) == 0.2
- * // If you request the position you will have: dJointGetUniversalAngle2(jId) == 0.17
- * </PRE>
-
- * @param j The Hinge joint ID for which the axis will be set
- * @param x The X component of the axis in world frame
- * @param y The Y component of the axis in world frame
- * @param z The Z component of the axis in world frame
- * @param angle The angle for the offset of the relative orientation.
- *              As if body1 was rotated by angle when the Axis was set (see below).
- *              The rotation is around the new Hinge axis.
- *
- * @note Usually the function dJointSetHingeAxis set the current position of body1
- *       and body2 as the zero angle position. This function set the current position
- *       as the if the 2 bodies where \b offsets appart.
- *
- * @note Any previous offsets are erased.
- *
- * @warning Calling dJointSetUniversalAnchor, dJointSetUnivesalAxis1, 
- *          dJointSetUniversalAxis2, dJointSetUniversalAxis2Offset 
- *          will reset the "zero" angle position.
- */
-
-
-ODE_API void dJointSetUniversalAxis2Offset (dJointID, dReal x, dReal y, dReal z,
-                                            dReal offset1, dReal offset2);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetUniversalParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies torque1 about the universal's axis 1, torque2 about the
- * universal's axis 2.
- * @remarks This function is just a wrapper for dBodyAddTorque().
- * @ingroup joints
- */
-ODE_API void dJointAddUniversalTorques(dJointID joint, dReal torque1, dReal torque2);
-
-
-/**
- * @brief set anchor
- * @ingroup joints
- */
-ODE_API void dJointSetPRAnchor (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set the axis for the prismatic articulation
- * @ingroup joints
- */
-ODE_API void dJointSetPRAxis1 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set the axis for the rotoide articulation
- * @ingroup joints
- */
-ODE_API void dJointSetPRAxis2 (dJointID, dReal x, dReal y, dReal z);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- *
- * @note parameterX where X equal 2 refer to parameter for the rotoide articulation
- */
-ODE_API void dJointSetPRParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Applies the torque about the rotoide axis of the PR joint
- *
- * That is, it applies a torque with specified magnitude in the direction 
- * of the rotoide axis, to body 1, and with the same magnitude but in opposite
- * direction to body 2. This function is just a wrapper for dBodyAddTorque()}
- * @ingroup joints
- */
-ODE_API void dJointAddPRTorque (dJointID j, dReal torque);
-
-
-  /**
-  * @brief set anchor
-  * @ingroup joints
-  */
-  ODE_API void dJointSetPUAnchor (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief set anchor
-   * @ingroup joints
-   */
-  ODE_API_DEPRECATED ODE_API void dJointSetPUAnchorDelta (dJointID, dReal x, dReal y, dReal z,
-                                                          dReal dx, dReal dy, dReal dz);
-
-  /**
-   * @brief Set the PU anchor as if the 2 bodies were already at [dx, dy, dz] appart.
-   * @ingroup joints
-   *
-   * This function initialize the anchor and the relative position of each body
-   * as if the position between body1 and body2 was already the projection of [dx, dy, dz]
-   * along the Piston axis. (i.e as if the body1 was at its current position - [dx,dy,dy] when the
-   * axis is set).
-   * Ex:
-   * <PRE>
-   * dReal offset = 3;
-   * dVector3 axis;
-   * dJointGetPUAxis(jId, axis);
-   * dJointSetPUAnchor(jId, 0, 0, 0);
-   * // If you request the position you will have: dJointGetPUPosition(jId) == 0
-   * dJointSetPUAnchorOffset(jId, 0, 0, 0, axis[X]*offset, axis[Y]*offset, axis[Z]*offset);
-   * // If you request the position you will have: dJointGetPUPosition(jId) == offset
-   * </PRE>
-   * @param j The PU joint for which the anchor point will be set
-   * @param x The X position of the anchor point in world frame
-   * @param y The Y position of the anchor point in world frame
-   * @param z The Z position of the anchor point in world frame
-   * @param dx A delta to be substracted to the X position as if the anchor was set
-   *           when body1 was at current_position[X] - dx
-   * @param dx A delta to be substracted to the Y position as if the anchor was set
-   *           when body1 was at current_position[Y] - dy
-   * @param dx A delta to be substracted to the Z position as if the anchor was set
-   *           when body1 was at current_position[Z] - dz
-   */
-  ODE_API void dJointSetPUAnchorOffset (dJointID, dReal x, dReal y, dReal z,
-                                       dReal dx, dReal dy, dReal dz);
-
-  /**
-   * @brief set the axis for the first axis or the universal articulation
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPUAxis1 (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief set the axis for the second axis or the universal articulation
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPUAxis2 (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief set the axis for the prismatic articulation
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPUAxis3 (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief set the axis for the prismatic articulation
-   * @ingroup joints
-   * @note This function was added for convenience it is the same as
-   *       dJointSetPUAxis3
-   */
-  ODE_API void dJointSetPUAxisP (dJointID id, dReal x, dReal y, dReal z);
-
-
-
-  /**
-   * @brief set joint parameter
-   * @ingroup joints
-   *
-   * @note parameterX where X equal 2 refer to parameter for second axis of the
-   *       universal articulation
-   * @note parameterX where X equal 3 refer to parameter for prismatic
-   *       articulation
-   */
-  ODE_API void dJointSetPUParam (dJointID, int parameter, dReal value);
-
-  /**
-   * @brief Applies the torque about the rotoide axis of the PU joint
-   *
-   * That is, it applies a torque with specified magnitude in the direction
-   * of the rotoide axis, to body 1, and with the same magnitude but in opposite
-   * direction to body 2. This function is just a wrapper for dBodyAddTorque()}
-   * @ingroup joints
-   */
-  ODE_API void dJointAddPUTorque (dJointID j, dReal torque);
-
-
-
-
-  /**
-   * @brief set the joint anchor
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPistonAnchor (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * @brief Set the Piston anchor as if the 2 bodies were already at [dx,dy, dz] appart.
-   * @ingroup joints
-   *
-   * This function initialize the anchor and the relative position of each body
-   * as if the position between body1 and body2 was already the projection of [dx, dy, dz]
-   * along the Piston axis. (i.e as if the body1 was at its current position - [dx,dy,dy] when the
-   * axis is set).
-   * Ex:
-   * <PRE>
-   * dReal offset = 3;
-   * dVector3 axis;
-   * dJointGetPistonAxis(jId, axis);
-   * dJointSetPistonAnchor(jId, 0, 0, 0);
-   * // If you request the position you will have: dJointGetPistonPosition(jId) == 0
-   * dJointSetPistonAnchorOffset(jId, 0, 0, 0, axis[X]*offset, axis[Y]*offset, axis[Z]*offset);
-   * // If you request the position you will have: dJointGetPistonPosition(jId) == offset
-   * </PRE>
-   * @param j The Piston joint for which the anchor point will be set
-   * @param x The X position of the anchor point in world frame
-   * @param y The Y position of the anchor point in world frame
-   * @param z The Z position of the anchor point in world frame
-   * @param dx A delta to be substracted to the X position as if the anchor was set
-   *           when body1 was at current_position[X] - dx
-   * @param dx A delta to be substracted to the Y position as if the anchor was set
-   *           when body1 was at current_position[Y] - dy
-   * @param dx A delta to be substracted to the Z position as if the anchor was set
-   *           when body1 was at current_position[Z] - dz
-   */
-  ODE_API void dJointSetPistonAnchorOffset(dJointID j, dReal x, dReal y, dReal z,
-                                           dReal dx, dReal dy, dReal dz);
-
-    /**
-     * @brief set the joint axis
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPistonAxis (dJointID, dReal x, dReal y, dReal z);
-
-  /**
-   * This function set prismatic axis of the joint and also set the position
-   * of the joint.
-   *
-   * @ingroup joints
-   * @param j The joint affected by this function
-   * @param x The x component of the axis
-   * @param y The y component of the axis
-   * @param z The z component of the axis
-   * @param dx The Initial position of the prismatic join in the x direction
-   * @param dy The Initial position of the prismatic join in the y direction
-   * @param dz The Initial position of the prismatic join in the z direction
-   */
-  ODE_API_DEPRECATED ODE_API void dJointSetPistonAxisDelta (dJointID j, dReal x, dReal y, dReal z, dReal ax, dReal ay, dReal az);
-
-  /**
-   * @brief set joint parameter
-   * @ingroup joints
-   */
-  ODE_API void dJointSetPistonParam (dJointID, int parameter, dReal value);
-
-  /**
-   * @brief Applies the given force in the slider's direction.
-   *
-   * That is, it applies a force with specified magnitude, in the direction of
-   * prismatic's axis, to body1, and with the same magnitude but opposite
-   * direction to body2.  This function is just a wrapper for dBodyAddForce().
-   * @ingroup joints
-   */
-  ODE_API void dJointAddPistonForce (dJointID joint, dReal force);
-
-
-/**
- * @brief Call this on the fixed joint after it has been attached to
- * remember the current desired relative offset and desired relative
- * rotation between the bodies.
- * @ingroup joints
- */
-ODE_API void dJointSetFixed (dJointID);
-
-/*
- * @brief Sets joint parameter
- *
- * @ingroup joints
- */
-ODE_API void dJointSetFixedParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief set the nr of axes
- * @param num 0..3
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorNumAxes (dJointID, int num);
-
-/**
- * @brief set axis
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorAxis (dJointID, int anum, int rel,
-                         dReal x, dReal y, dReal z);
-
-/**
- * @brief Tell the AMotor what the current angle is along axis anum.
- *
- * This function should only be called in dAMotorUser mode, because in this
- * mode the AMotor has no other way of knowing the joint angles.
- * The angle information is needed if stops have been set along the axis,
- * but it is not needed for axis motors.
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorAngle (dJointID, int anum, dReal angle);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief set mode
- * @ingroup joints
- */
-ODE_API void dJointSetAMotorMode (dJointID, int mode);
-
-/**
- * @brief Applies torque0 about the AMotor's axis 0, torque1 about the
- * AMotor's axis 1, and torque2 about the AMotor's axis 2.
- * @remarks
- * If the motor has fewer than three axes, the higher torques are ignored.
- * This function is just a wrapper for dBodyAddTorque().
- * @ingroup joints
- */
-ODE_API void dJointAddAMotorTorques (dJointID, dReal torque1, dReal torque2, dReal torque3);
-
-/**
- * @brief Set the number of axes that will be controlled by the LMotor.
- * @param num can range from 0 (which effectively deactivates the joint) to 3.
- * @ingroup joints
- */
-ODE_API void dJointSetLMotorNumAxes (dJointID, int num);
-
-/**
- * @brief Set the AMotor axes.
- * @param anum selects the axis to change (0,1 or 2).
- * @param rel Each axis can have one of three ``relative orientation'' modes
- * \li 0: The axis is anchored to the global frame.
- * \li 1: The axis is anchored to the first body.
- * \li 2: The axis is anchored to the second body.
- * @remarks The axis vector is always specified in global coordinates
- * regardless of the setting of rel.
- * @ingroup joints
- */
-ODE_API void dJointSetLMotorAxis (dJointID, int anum, int rel, dReal x, dReal y, dReal z);
-
-/**
- * @brief set joint parameter
- * @ingroup joints
- */
-ODE_API void dJointSetLMotorParam (dJointID, int parameter, dReal value);
-
-/**
- * @ingroup joints
- */
-ODE_API void dJointSetPlane2DXParam (dJointID, int parameter, dReal value);
-
-/**
- * @ingroup joints
- */
-
-ODE_API void dJointSetPlane2DYParam (dJointID, int parameter, dReal value);
-
-/**
- * @ingroup joints
- */
-ODE_API void dJointSetPlane2DAngleParam (dJointID, int parameter, dReal value);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- *
- * This returns the point on body 1. If the joint is perfectly satisfied,
- * this will be the same as the point on body 2.
- */
-ODE_API void dJointGetBallAnchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- *
- * This returns the point on body 2. You can think of a ball and socket
- * joint as trying to keep the result of dJointGetBallAnchor() and
- * dJointGetBallAnchor2() the same.  If the joint is perfectly satisfied,
- * this function will return the same value as dJointGetBallAnchor() to
- * within roundoff errors. dJointGetBallAnchor2() can be used, along with
- * dJointGetBallAnchor(), to see how far the joint has come apart.
- */
-ODE_API void dJointGetBallAnchor2 (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetBallParam (dJointID, int parameter);
-
-/**
- * @brief Get the hinge anchor point, in world coordinates.
- *
- * This returns the point on body 1. If the joint is perfectly satisfied,
- * this will be the same as the point on body 2.
- * @ingroup joints
- */
-ODE_API void dJointGetHingeAnchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return The point on body 2. If the joint is perfectly satisfied,
- * this will return the same value as dJointGetHingeAnchor().
- * If not, this value will be slightly different.
- * This can be used, for example, to see how far the joint has come apart.
- * @ingroup joints
- */
-ODE_API void dJointGetHingeAnchor2 (dJointID, dVector3 result);
-
-/**
- * @brief get axis
- * @ingroup joints
- */
-ODE_API void dJointGetHingeAxis (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetHingeParam (dJointID, int parameter);
-
-/**
- * @brief Get the hinge angle.
- *
- * The angle is measured between the two bodies, or between the body and
- * the static environment.
- * The angle will be between -pi..pi.
- * Give the relative rotation with respect to the Hinge axis of Body 1 with
- * respect to Body 2.
- * When the hinge anchor or axis is set, the current position of the attached
- * bodies is examined and that position will be the zero angle.
- * @ingroup joints
- */
-ODE_API dReal dJointGetHingeAngle (dJointID);
-
-/**
- * @brief Get the hinge angle time derivative.
- * @ingroup joints
- */
-ODE_API dReal dJointGetHingeAngleRate (dJointID);
-
-/**
- * @brief Get the slider linear position (i.e. the slider's extension)
- *
- * When the axis is set, the current position of the attached bodies is
- * examined and that position will be the zero position.
-
- * The position is the distance, with respect to the zero position,
- * along the slider axis of body 1 with respect to
- * body 2. (A NULL body is replaced by the world).
- * @ingroup joints
- */
-ODE_API dReal dJointGetSliderPosition (dJointID);
-
-/**
- * @brief Get the slider linear position's time derivative.
- * @ingroup joints
- */
-ODE_API dReal dJointGetSliderPositionRate (dJointID);
-
-/**
- * @brief Get the slider axis
- * @ingroup joints
- */
-ODE_API void dJointGetSliderAxis (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetSliderParam (dJointID, int parameter);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return the point on body 1.  If the joint is perfectly satisfied,
- * this will be the same as the point on body 2.
- * @ingroup joints
- */
-ODE_API void dJointGetHinge2Anchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * This returns the point on body 2. If the joint is perfectly satisfied,
- * this will return the same value as dJointGetHinge2Anchor.
- * If not, this value will be slightly different.
- * This can be used, for example, to see how far the joint has come apart.
- * @ingroup joints
- */
-ODE_API void dJointGetHinge2Anchor2 (dJointID, dVector3 result);
-
-/**
- * @brief Get joint axis
- * @ingroup joints
- */
-ODE_API void dJointGetHinge2Axis1 (dJointID, dVector3 result);
-
-/**
- * @brief Get joint axis
- * @ingroup joints
- */
-ODE_API void dJointGetHinge2Axis2 (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetHinge2Param (dJointID, int parameter);
-
-/**
- * @brief Get angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetHinge2Angle1 (dJointID);
-
-/**
- * @brief Get time derivative of angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetHinge2Angle1Rate (dJointID);
-
-/**
- * @brief Get time derivative of angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetHinge2Angle2Rate (dJointID);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return the point on body 1. If the joint is perfectly satisfied,
- * this will be the same as the point on body 2.
- * @ingroup joints
- */
-ODE_API void dJointGetUniversalAnchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return This returns the point on body 2.
- * @remarks
- * You can think of the ball and socket part of a universal joint as
- * trying to keep the result of dJointGetBallAnchor() and
- * dJointGetBallAnchor2() the same. If the joint is
- * perfectly satisfied, this function will return the same value
- * as dJointGetUniversalAnchor() to within roundoff errors.
- * dJointGetUniversalAnchor2() can be used, along with
- * dJointGetUniversalAnchor(), to see how far the joint has come apart.
- * @ingroup joints
- */
-ODE_API void dJointGetUniversalAnchor2 (dJointID, dVector3 result);
-
-/**
- * @brief Get axis
- * @ingroup joints
- */
-ODE_API void dJointGetUniversalAxis1 (dJointID, dVector3 result);
-
-/**
- * @brief Get axis
- * @ingroup joints
- */
-ODE_API void dJointGetUniversalAxis2 (dJointID, dVector3 result);
-
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalParam (dJointID, int parameter);
-
-/**
- * @brief Get both angles at the same time.
- * @ingroup joints
- *
- * @param joint   The universal joint for which we want to calculate the angles
- * @param angle1  The angle between the body1 and the axis 1
- * @param angle2  The angle between the body2 and the axis 2
- *
- * @note This function combine getUniversalAngle1 and getUniversalAngle2 together
- *       and try to avoid redundant calculation
- */
-ODE_API void dJointGetUniversalAngles (dJointID, dReal *angle1, dReal *angle2);
-
-/**
- * @brief Get angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalAngle1 (dJointID);
-
-/**
- * @brief Get angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalAngle2 (dJointID);
-
-/**
- * @brief Get time derivative of angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalAngle1Rate (dJointID);
-
-/**
- * @brief Get time derivative of angle
- * @ingroup joints
- */
-ODE_API dReal dJointGetUniversalAngle2Rate (dJointID);
-
-
-
-/**
- * @brief Get the joint anchor point, in world coordinates.
- * @return the point on body 1. If the joint is perfectly satisfied, 
- * this will be the same as the point on body 2.
- * @ingroup joints
- */
-ODE_API void dJointGetPRAnchor (dJointID, dVector3 result);
-
-/**
- * @brief Get the PR linear position (i.e. the prismatic's extension)
- *
- * When the axis is set, the current position of the attached bodies is
- * examined and that position will be the zero position.
- *
- * The position is the "oriented" length between the
- * position = (Prismatic axis) dot_product [(body1 + offset) - (body2 + anchor2)]
- *
- * @ingroup joints
- */
-ODE_API dReal dJointGetPRPosition (dJointID);
-
-/**
- * @brief Get the PR linear position's time derivative
- *
- * @ingroup joints
- */
-ODE_API dReal dJointGetPRPositionRate (dJointID);
-
-
-/**
-   * @brief Get the PR angular position (i.e. the  twist between the 2 bodies)
-   *
-   * When the axis is set, the current position of the attached bodies is
-   * examined and that position will be the zero position.
-   * @ingroup joints
-   */
-ODE_API dReal dJointGetPRAngle (dJointID);
-
-/**
- * @brief Get the PR angular position's time derivative
- *
- * @ingroup joints
- */
-ODE_API dReal dJointGetPRAngleRate (dJointID);
-
-
-/**
- * @brief Get the prismatic axis
- * @ingroup joints
- */
-ODE_API void dJointGetPRAxis1 (dJointID, dVector3 result);
-
-/**
- * @brief Get the Rotoide axis
- * @ingroup joints
- */
-ODE_API void dJointGetPRAxis2 (dJointID, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetPRParam (dJointID, int parameter);
-
-    
-    
-  /**
-   * @brief Get the joint anchor point, in world coordinates.
-   * @return the point on body 1. If the joint is perfectly satisfied,
-   * this will be the same as the point on body 2.
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPUAnchor (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the PU linear position (i.e. the prismatic's extension)
-   *
-   * When the axis is set, the current position of the attached bodies is
-   * examined and that position will be the zero position.
-   *
-   * The position is the "oriented" length between the
-   * position = (Prismatic axis) dot_product [(body1 + offset) - (body2 + anchor2)]
-   *
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUPosition (dJointID);
-
-  /**
-   * @brief Get the PR linear position's time derivative
-   *
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUPositionRate (dJointID);
-
-  /**
-   * @brief Get the first axis of the universal component of the joint
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPUAxis1 (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the second axis of the Universal component of the joint
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPUAxis2 (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the prismatic axis
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPUAxis3 (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the prismatic axis
-   * @ingroup joints
-   *
-   * @note This function was added for convenience it is the same as
-   *       dJointGetPUAxis3
-   */
-  ODE_API void dJointGetPUAxisP (dJointID id, dVector3 result);
-
-
-
-
-  /**
-   * @brief Get both angles at the same time.
-   * @ingroup joints
-   *
-   * @param joint   The Prismatic universal joint for which we want to calculate the angles
-   * @param angle1  The angle between the body1 and the axis 1
-   * @param angle2  The angle between the body2 and the axis 2
-   *
-   * @note This function combine dJointGetPUAngle1 and dJointGetPUAngle2 together
-   *       and try to avoid redundant calculation
-   */
-  ODE_API void dJointGetPUAngles (dJointID, dReal *angle1, dReal *angle2);
-
-  /**
-   * @brief Get angle
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUAngle1 (dJointID);
-
-  /**
-   * @brief * @brief Get time derivative of angle1
-   *
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUAngle1Rate (dJointID);
-
-
-  /**
-   * @brief Get angle
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUAngle2 (dJointID);
-
-  /**
-   * @brief * @brief Get time derivative of angle2
-   *
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUAngle2Rate (dJointID);
-
-  /**
-   * @brief get joint parameter
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPUParam (dJointID, int parameter);
-
-
-
-
-
-/**
-   * @brief Get the Piston linear position (i.e. the piston's extension)
-   *
-   * When the axis is set, the current position of the attached bodies is
-   * examined and that position will be the zero position.
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonPosition (dJointID);
-
-  /**
-   * @brief Get the piston linear position's time derivative.
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonPositionRate (dJointID);
-
-/**
-   * @brief Get the Piston angular position (i.e. the  twist between the 2 bodies)
-   *
-   * When the axis is set, the current position of the attached bodies is
-   * examined and that position will be the zero position.
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonAngle (dJointID);
-
-  /**
-   * @brief Get the piston angular position's time derivative.
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonAngleRate (dJointID);
-
-
-  /**
-   * @brief Get the joint anchor
-   *
-   * This returns the point on body 1. If the joint is perfectly satisfied,
-   * this will be the same as the point on body 2 in direction perpendicular
-   * to the prismatic axis.
-   *
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPistonAnchor (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the joint anchor w.r.t. body 2
-   *
-   * This returns the point on body 2. You can think of a Piston
-   * joint as trying to keep the result of dJointGetPistonAnchor() and
-   * dJointGetPistonAnchor2() the same in the direction perpendicular to the
-   * pirsmatic axis. If the joint is perfectly satisfied,
-   * this function will return the same value as dJointGetPistonAnchor() to
-   * within roundoff errors. dJointGetPistonAnchor2() can be used, along with
-   * dJointGetPistonAnchor(), to see how far the joint has come apart.
-   *
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPistonAnchor2 (dJointID, dVector3 result);
-
-  /**
-   * @brief Get the prismatic axis (This is also the rotoide axis.
-   * @ingroup joints
-   */
-  ODE_API void dJointGetPistonAxis (dJointID, dVector3 result);
-
-  /**
-   * @brief get joint parameter
-   * @ingroup joints
-   */
-  ODE_API dReal dJointGetPistonParam (dJointID, int parameter);
-
-
-  /**
- * @brief Get the number of angular axes that will be controlled by the
- * AMotor.
- * @param num can range from 0 (which effectively deactivates the
- * joint) to 3.
- * This is automatically set to 3 in dAMotorEuler mode.
- * @ingroup joints
- */
-ODE_API int dJointGetAMotorNumAxes (dJointID);
-
-/**
- * @brief Get the AMotor axes.
- * @param anum selects the axis to change (0,1 or 2).
- * @param rel Each axis can have one of three ``relative orientation'' modes.
- * \li 0: The axis is anchored to the global frame.
- * \li 1: The axis is anchored to the first body.
- * \li 2: The axis is anchored to the second body.
- * @ingroup joints
- */
-ODE_API void dJointGetAMotorAxis (dJointID, int anum, dVector3 result);
-
-/**
- * @brief Get axis
- * @remarks
- * The axis vector is always specified in global coordinates regardless
- * of the setting of rel.
- * There are two GetAMotorAxis functions, one to return the axis and one to
- * return the relative mode.
- *
- * For dAMotorEuler mode:
- * \li Only axes 0 and 2 need to be set. Axis 1 will be determined
-       automatically at each time step.
- * \li Axes 0 and 2 must be perpendicular to each other.
- * \li Axis 0 must be anchored to the first body, axis 2 must be anchored
-       to the second body.
- * @ingroup joints
- */
-ODE_API int dJointGetAMotorAxisRel (dJointID, int anum);
-
-/**
- * @brief Get the current angle for axis.
- * @remarks
- * In dAMotorUser mode this is simply the value that was set with
- * dJointSetAMotorAngle().
- * In dAMotorEuler mode this is the corresponding euler angle.
- * @ingroup joints
- */
-ODE_API dReal dJointGetAMotorAngle (dJointID, int anum);
-
-/**
- * @brief Get the current angle rate for axis anum.
- * @remarks
- * In dAMotorUser mode this is always zero, as not enough information is
- * available.
- * In dAMotorEuler mode this is the corresponding euler angle rate.
- * @ingroup joints
- */
-ODE_API dReal dJointGetAMotorAngleRate (dJointID, int anum);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetAMotorParam (dJointID, int parameter);
-
-/**
- * @brief Get the angular motor mode.
- * @param mode must be one of the following constants:
- * \li dAMotorUser The AMotor axes and joint angle settings are entirely
- * controlled by the user.  This is the default mode.
- * \li dAMotorEuler Euler angles are automatically computed.
- * The axis a1 is also automatically computed.
- * The AMotor axes must be set correctly when in this mode,
- * as described below.
- * When this mode is initially set the current relative orientations
- * of the bodies will correspond to all euler angles at zero.
- * @ingroup joints
- */
-ODE_API int dJointGetAMotorMode (dJointID);
-
-/**
- * @brief Get nr of axes.
- * @ingroup joints
- */
-ODE_API int dJointGetLMotorNumAxes (dJointID);
-
-/**
- * @brief Get axis.
- * @ingroup joints
- */
-ODE_API void dJointGetLMotorAxis (dJointID, int anum, dVector3 result);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetLMotorParam (dJointID, int parameter);
-
-/**
- * @brief get joint parameter
- * @ingroup joints
- */
-ODE_API dReal dJointGetFixedParam (dJointID, int parameter);
-
-
-/**
- * @ingroup joints
- */
-ODE_API dJointID dConnectingJoint (dBodyID, dBodyID);
-
-/**
- * @ingroup joints
- */
-ODE_API int dConnectingJointList (dBodyID, dBodyID, dJointID*);
-
-/**
- * @brief Utility function
- * @return 1 if the two bodies are connected together by
- * a joint, otherwise return 0.
- * @ingroup joints
- */
-ODE_API int dAreConnected (dBodyID, dBodyID);
-
-/**
- * @brief Utility function
- * @return 1 if the two bodies are connected together by
- * a joint that does not have type @arg{joint_type}, otherwise return 0.
- * @param body1 A body to check.
- * @param body2 A body to check.
- * @param joint_type is a dJointTypeXXX constant.
- * This is useful for deciding whether to add contact joints between two bodies:
- * if they are already connected by non-contact joints then it may not be
- * appropriate to add contacts, however it is okay to add more contact between-
- * bodies that already have contacts.
- * @ingroup joints
- */
-ODE_API int dAreConnectedExcluding (dBodyID body1, dBodyID body2, int joint_type);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/ode.h b/misc/builddeps/linux64/ode/include/ode/ode.h
deleted file mode 100644 (file)
index af74e50..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_ODE_H_
-#define _ODE_ODE_H_
-
-/* include *everything* here */
-
-#include <ode/odeconfig.h>
-#include <ode/compatibility.h>
-#include <ode/common.h>
-#include <ode/odeinit.h>
-#include <ode/contact.h>
-#include <ode/error.h>
-#include <ode/memory.h>
-#include <ode/odemath.h>
-#include <ode/matrix.h>
-#include <ode/timer.h>
-#include <ode/rotation.h>
-#include <ode/mass.h>
-#include <ode/misc.h>
-#include <ode/objects.h>
-#include <ode/odecpp.h>
-#include <ode/collision_space.h>
-#include <ode/collision.h>
-#include <ode/odecpp_collision.h>
-#include <ode/export-dif.h>
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/odeconfig.h b/misc/builddeps/linux64/ode/include/ode/odeconfig.h
deleted file mode 100644 (file)
index 6e32fc6..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef ODECONFIG_H
-#define ODECONFIG_H
-
-/* Pull in the standard headers */
-#include <stddef.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <math.h>
-#include <string.h>
-#include <float.h>
-
-
-#if defined(ODE_DLL) || defined(ODE_LIB)
-#define __ODE__
-#endif
-
-/* Define a DLL export symbol for those platforms that need it */
-#if defined(_MSC_VER)
-  #if defined(ODE_DLL)
-    #define ODE_API __declspec(dllexport)
-  #elif !defined(ODE_LIB)
-    #define ODE_DLL_API __declspec(dllimport)
-  #endif
-#endif
-
-#if !defined(ODE_API)
-  #define ODE_API
-#endif
-
-#if defined(_MSC_VER)
-#  define ODE_API_DEPRECATED __declspec(deprecated)
-#elif defined (__GNUC__) && ( (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)) )
-#  define ODE_API_DEPRECATED __attribute__((__deprecated__))
-#else
-#  define ODE_API_DEPRECATED
-#endif
-
-/* Well-defined common data types...need to define for 64 bit systems */
-#if defined(_M_IA64) || defined(__ia64__) || defined(_M_AMD64) || defined(__x86_64__)
-  #define X86_64_SYSTEM   1
-  typedef int             int32;
-  typedef unsigned int    uint32;
-  typedef short           int16;
-  typedef unsigned short  uint16;
-  typedef signed char     int8;
-  typedef unsigned char   uint8;
-#else
-  typedef int             int32;
-  typedef unsigned int    uint32;
-  typedef short           int16;
-  typedef unsigned short  uint16;
-  typedef signed char     int8;
-  typedef unsigned char   uint8;
-#endif
-
-/* Visual C does not define these functions */
-#if defined(_MSC_VER)
-  #define copysignf(x, y) ((float)_copysign(x, y))
-  #define copysign(x, y) _copysign(x, y)
-  #define nextafterf(x, y) _nextafterf(x, y)
-  #define nextafter(x, y) _nextafter(x, y)
-  #if !defined(_WIN64)
-    #define _ODE__NEXTAFTERF_REQUIRED
-  #endif
-#endif
-
-
-
-/* Define the dInfinity macro */
-#ifdef INFINITY
-  #define dInfinity INFINITY
-#elif defined(HUGE_VAL)
-  #ifdef dSINGLE
-    #ifdef HUGE_VALF
-      #define dInfinity HUGE_VALF
-    #else
-      #define dInfinity ((float)HUGE_VAL)
-    #endif
-  #else
-    #define dInfinity HUGE_VAL
-  #endif
-#else
-  #ifdef dSINGLE
-    #define dInfinity ((float)(1.0/0.0))
-  #else
-    #define dInfinity (1.0/0.0)
-  #endif
-#endif
-
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/odecpp.h b/misc/builddeps/linux64/ode/include/ode/odecpp.h
deleted file mode 100644 (file)
index f734892..0000000
+++ /dev/null
@@ -1,1353 +0,0 @@
-/*************************************************************************
- *                                                                      *
- * Open Dynamics Engine, Copyright (C) 2001, 2002 Russell L. Smith.     *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org         *
- *                                                                      *
- * This library is free software; you can redistribute it and/or        *
- * modify it under the terms of EITHER:                                 *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *      Software Foundation; either version 2.1 of the License, or (at  *
- *      your option) any later version. The text of the GNU Lesser      *
- *      General Public License is included with this library in the     *
- *      file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in    *
- *      the file LICENSE-BSD.TXT.                                       *
- *                                                                      *
- * This library is distributed in the hope that it will be useful,      *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files   *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                    *
- *                                                                      *
- *************************************************************************/
-
-/* C++ interface for non-collision stuff */
-
-
-#ifndef _ODE_ODECPP_H_
-#define _ODE_ODECPP_H_
-#ifdef __cplusplus
-
-
-
-
-//namespace ode {
-
-
-class dWorldSimpleIDContainer {
-protected:
-       dWorldID _id;
-
-       dWorldSimpleIDContainer(): _id(0) {}
-       ~dWorldSimpleIDContainer() { destroy(); }
-
-       void destroy() { 
-               if (_id) {
-                       dWorldDestroy(_id); 
-                       _id = 0;
-               }
-       }
-};
-
-class dWorldDynamicIDContainer: public dWorldSimpleIDContainer {
-protected:
-       virtual ~dWorldDynamicIDContainer() {}
-};
-
-template <class dWorldTemplateBase>
-class dWorldTemplate: public dWorldTemplateBase {
-  // intentionally undefined, don't use these
-  dWorldTemplate (const dWorldTemplate<dWorldTemplateBase> &);
-  void operator= (const dWorldTemplate<dWorldTemplateBase> &);
-
-protected:
-  dWorldID get_id() const { return dWorldTemplateBase::_id; }
-  void set_id(dWorldID value) { dWorldTemplateBase::_id = value; }
-
-public:
-  dWorldTemplate()
-    { set_id(dWorldCreate()); }
-
-  dWorldID id() const
-    { return get_id(); }
-  operator dWorldID() const
-    { return get_id(); }
-
-  void setGravity (dReal x, dReal y, dReal z)
-    { dWorldSetGravity (get_id(), x, y, z); }
-  void setGravity (const dVector3 g)
-    { setGravity (g[0], g[1], g[2]); }
-  void getGravity (dVector3 g) const
-    { dWorldGetGravity (get_id(), g); }
-
-  void setERP (dReal erp)
-    { dWorldSetERP(get_id(), erp); }
-  dReal getERP() const
-    { return dWorldGetERP(get_id()); }
-
-  void setCFM (dReal cfm)
-    { dWorldSetCFM(get_id(), cfm); }
-  dReal getCFM() const
-    { return dWorldGetCFM(get_id()); }
-
-  void step (dReal stepsize)
-    { dWorldStep (get_id(), stepsize); }
-
-  void quickStep(dReal stepsize)
-    { dWorldQuickStep (get_id(), stepsize); }
-  void setQuickStepNumIterations(int num)
-    { dWorldSetQuickStepNumIterations (get_id(), num); }
-  int getQuickStepNumIterations() const
-    { return dWorldGetQuickStepNumIterations (get_id()); }
-  void setQuickStepW(dReal over_relaxation)
-    { dWorldSetQuickStepW (get_id(), over_relaxation); }
-  dReal getQuickStepW() const
-    { return dWorldGetQuickStepW (get_id()); }
-
-  void  setAutoDisableLinearThreshold (dReal threshold) 
-    { dWorldSetAutoDisableLinearThreshold (get_id(), threshold); }
-  dReal getAutoDisableLinearThreshold() const
-    { return dWorldGetAutoDisableLinearThreshold (get_id()); }
-  void setAutoDisableAngularThreshold (dReal threshold)
-    { dWorldSetAutoDisableAngularThreshold (get_id(), threshold); }
-  dReal getAutoDisableAngularThreshold() const
-    { return dWorldGetAutoDisableAngularThreshold (get_id()); }
-  void setAutoDisableSteps (int steps)
-    { dWorldSetAutoDisableSteps (get_id(), steps); }
-  int getAutoDisableSteps() const
-    { return dWorldGetAutoDisableSteps (get_id()); }
-  void setAutoDisableTime (dReal time)
-    { dWorldSetAutoDisableTime (get_id(), time); }
-  dReal getAutoDisableTime() const
-    { return dWorldGetAutoDisableTime (get_id()); }
-  void setAutoDisableFlag (int do_auto_disable)
-    { dWorldSetAutoDisableFlag (get_id(), do_auto_disable); }
-  int getAutoDisableFlag() const
-    { return dWorldGetAutoDisableFlag (get_id()); }
-
-  dReal getLinearDampingThreshold() const
-    { return dWorldGetLinearDampingThreshold(get_id()); }
-  void setLinearDampingThreshold(dReal threshold)
-    { dWorldSetLinearDampingThreshold(get_id(), threshold); }
-  dReal getAngularDampingThreshold() const
-    { return dWorldGetAngularDampingThreshold(get_id()); }
-  void setAngularDampingThreshold(dReal threshold)
-    { dWorldSetAngularDampingThreshold(get_id(), threshold); }
-  dReal getLinearDamping() const
-    { return dWorldGetLinearDamping(get_id()); }
-  void setLinearDamping(dReal scale)
-    { dWorldSetLinearDamping(get_id(), scale); }
-  dReal getAngularDamping() const
-    { return dWorldGetAngularDamping(get_id()); }
-  void setAngularDamping(dReal scale)
-    { dWorldSetAngularDamping(get_id(), scale); }
-  void setDamping(dReal linear_scale, dReal angular_scale)
-    { dWorldSetDamping(get_id(), linear_scale, angular_scale); }
-
-  dReal getMaxAngularSpeed() const
-    { return dWorldGetMaxAngularSpeed(get_id()); }
-  void setMaxAngularSpeed(dReal max_speed)
-    { dWorldSetMaxAngularSpeed(get_id(), max_speed); }
-
-  void setContactSurfaceLayer(dReal depth)
-    { dWorldSetContactSurfaceLayer (get_id(), depth); }
-  dReal getContactSurfaceLayer() const
-    { return dWorldGetContactSurfaceLayer (get_id()); }
-
-  void impulseToForce (dReal stepsize, dReal ix, dReal iy, dReal iz, 
-                      dVector3 force)
-    { dWorldImpulseToForce (get_id(), stepsize, ix, iy, iz, force); }
-};
-
-
-class dBodySimpleIDContainer {
-protected:
-       dBodyID _id;
-
-       dBodySimpleIDContainer(): _id(0) {}
-       ~dBodySimpleIDContainer() { destroy(); }
-
-       void destroy() { 
-               if (_id) {
-                       dBodyDestroy(_id); 
-                       _id = 0;
-               }
-       }
-};
-
-class dBodyDynamicIDContainer: public dBodySimpleIDContainer {
-protected:
-       virtual ~dBodyDynamicIDContainer() {}
-};
-
-template <class dBodyTemplateBase, class dWorldTemplateBase>
-class dBodyTemplate: public dBodyTemplateBase {
-  // intentionally undefined, don't use these
-  dBodyTemplate (const dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase> &);
-  void operator= (const dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase> &);
-
-protected:
-  dBodyID get_id() const { return dBodyTemplateBase::_id; }
-  void set_id(dBodyID value) { dBodyTemplateBase::_id = value; }
-
-  void destroy() { dBodyTemplateBase::destroy(); }
-
-public:
-  dBodyTemplate()
-    { }
-  dBodyTemplate (dWorldID world)
-    { set_id(dBodyCreate(world)); }
-  dBodyTemplate (dWorldTemplate<dWorldTemplateBase>& world)
-    { set_id(dBodyCreate(world.id())); }
-
-  void create (dWorldID world) {
-    destroy();
-    set_id(dBodyCreate(world));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world) {
-    create(world.id());
-  }
-
-  dBodyID id() const
-    { return get_id(); }
-  operator dBodyID() const
-    { return get_id(); }
-
-  void setData (void *data)
-    { dBodySetData (get_id(), data); }
-  void *getData() const
-    { return dBodyGetData (get_id()); }
-
-  void setPosition (dReal x, dReal y, dReal z)
-    { dBodySetPosition (get_id(), x, y, z); }
-  void setPosition (const dVector3 p)
-    { setPosition(p[0], p[1], p[2]); }
-
-  void setRotation (const dMatrix3 R)
-    { dBodySetRotation (get_id(), R); }
-  void setQuaternion (const dQuaternion q)
-    { dBodySetQuaternion (get_id(), q); }
-  void setLinearVel (dReal x, dReal y, dReal z)
-    { dBodySetLinearVel (get_id(), x, y, z); }
-  void setLinearVel (const dVector3 v)
-    { setLinearVel(v[0], v[1], v[2]); }
-  void setAngularVel (dReal x, dReal y, dReal z)
-    { dBodySetAngularVel (get_id(), x, y, z); }
-  void setAngularVel (const dVector3 v)
-    { setAngularVel (v[0], v[1], v[2]); }
-
-  const dReal * getPosition() const
-    { return dBodyGetPosition (get_id()); }
-  const dReal * getRotation() const
-    { return dBodyGetRotation (get_id()); }
-  const dReal * getQuaternion() const
-    { return dBodyGetQuaternion (get_id()); }
-  const dReal * getLinearVel() const
-    { return dBodyGetLinearVel (get_id()); }
-  const dReal * getAngularVel() const
-    { return dBodyGetAngularVel (get_id()); }
-
-  void setMass (const dMass *mass)
-    { dBodySetMass (get_id(), mass); }
-  void setMass (const dMass &mass)
-    { setMass (&mass); }
-  dMass getMass () const
-    { dMass mass; dBodyGetMass (get_id(), &mass); return mass; }
-
-  void addForce (dReal fx, dReal fy, dReal fz)
-    { dBodyAddForce (get_id(), fx, fy, fz); }
-  void addForce (const dVector3 f)
-    { addForce (f[0], f[1], f[2]); }
-  void addTorque (dReal fx, dReal fy, dReal fz)
-    { dBodyAddTorque (get_id(), fx, fy, fz); }
-  void addTorque (const dVector3 t)
-    { addTorque(t[0], t[1], t[2]); }
-
-  void addRelForce (dReal fx, dReal fy, dReal fz)
-    { dBodyAddRelForce (get_id(), fx, fy, fz); }
-  void addRelForce (const dVector3 f)
-    { addRelForce (f[0], f[1], f[2]); }
-  void addRelTorque (dReal fx, dReal fy, dReal fz)
-    { dBodyAddRelTorque (get_id(), fx, fy, fz); }
-  void addRelTorque (const dVector3 t)
-    { addRelTorque (t[0], t[1], t[2]); }
-
-  void addForceAtPos (dReal fx, dReal fy, dReal fz, 
-                     dReal px, dReal py, dReal pz)
-    { dBodyAddForceAtPos (get_id(), fx, fy, fz, px, py, pz); }
-  void addForceAtPos (const dVector3 f, const dVector3 p)
-    { addForceAtPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
-  void addForceAtRelPos (dReal fx, dReal fy, dReal fz, 
-                         dReal px, dReal py, dReal pz)
-    { dBodyAddForceAtRelPos (get_id(), fx, fy, fz, px, py, pz); }
-  void addForceAtRelPos (const dVector3 f, const dVector3 p)
-    { addForceAtRelPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
-  void addRelForceAtPos (dReal fx, dReal fy, dReal fz, 
-                        dReal px, dReal py, dReal pz)
-    { dBodyAddRelForceAtPos (get_id(), fx, fy, fz, px, py, pz); }
-  void addRelForceAtPos (const dVector3 f, const dVector3 p)
-    { addRelForceAtPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
-  void addRelForceAtRelPos (dReal fx, dReal fy, dReal fz, 
-                           dReal px, dReal py, dReal pz)
-    { dBodyAddRelForceAtRelPos (get_id(), fx, fy, fz, px, py, pz); }
-  void addRelForceAtRelPos (const dVector3 f, const dVector3 p)
-    { addRelForceAtRelPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
-  const dReal * getForce() const
-    { return dBodyGetForce(get_id()); }
-  const dReal * getTorque() const
-    { return dBodyGetTorque(get_id()); }
-  void setForce (dReal x, dReal y, dReal z)
-    { dBodySetForce (get_id(), x, y, z); }
-  void setForce (const dVector3 f)
-    { setForce (f[0], f[1], f[2]); }
-  void setTorque (dReal x, dReal y, dReal z)
-    { dBodySetTorque (get_id(), x, y, z); }
-  void setTorque (const dVector3 t)
-  { setTorque (t[0], t[1], t[2]); }
-
-  void setDynamic()
-    { dBodySetDynamic (get_id()); }
-  void setKinematic()
-    { dBodySetKinematic (get_id()); }
-  bool isKinematic() const
-    { return dBodyIsKinematic (get_id()) != 0; }
-
-  void enable()
-    { dBodyEnable (get_id()); }
-  void disable()
-    { dBodyDisable (get_id()); }
-  bool isEnabled() const
-    { return dBodyIsEnabled (get_id()) != 0; }
-
-  void getRelPointPos (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyGetRelPointPos (get_id(), px, py, pz, result); }
-  void getRelPointPos (const dVector3 p, dVector3 result) const
-    { getRelPointPos (p[0], p[1], p[2], result); }
-
-  void getRelPointVel (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyGetRelPointVel (get_id(), px, py, pz, result); }
-  void getRelPointVel (const dVector3 p, dVector3 result) const
-    { getRelPointVel (p[0], p[1], p[2], result); }
-
-  void getPointVel (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyGetPointVel (get_id(), px, py, pz, result); }
-  void getPointVel (const dVector3 p, dVector3 result) const
-    { getPointVel (p[0], p[1], p[2], result); }
-
-  void getPosRelPoint (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyGetPosRelPoint (get_id(), px, py, pz, result); }
-  void getPosRelPoint (const dVector3 p, dVector3 result) const
-    { getPosRelPoint (p[0], p[1], p[2], result); }
-
-  void vectorToWorld (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyVectorToWorld (get_id(), px, py, pz, result); }
-  void vectorToWorld (const dVector3 p, dVector3 result) const
-    { vectorToWorld (p[0], p[1], p[2], result); }
-
-  void vectorFromWorld (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dBodyVectorFromWorld (get_id(), px, py, pz, result); }
-  void vectorFromWorld (const dVector3 p, dVector3 result) const
-    { vectorFromWorld (p[0], p[1], p[2], result); }
-
-  void setFiniteRotationMode (bool mode)
-    { dBodySetFiniteRotationMode (get_id(), mode); }
-
-  void setFiniteRotationAxis (dReal x, dReal y, dReal z)
-    { dBodySetFiniteRotationAxis (get_id(), x, y, z); }
-  void setFiniteRotationAxis (const dVector3 a)
-    { setFiniteRotationAxis (a[0], a[1], a[2]); }
-
-  bool getFiniteRotationMode() const
-    { return dBodyGetFiniteRotationMode (get_id()) != 0; }
-  void getFiniteRotationAxis (dVector3 result) const
-    { dBodyGetFiniteRotationAxis (get_id(), result); }
-
-  int getNumJoints() const
-    { return dBodyGetNumJoints (get_id()); }
-  dJointID getJoint (int index) const
-    { return dBodyGetJoint (get_id(), index); }
-
-  void setGravityMode (bool mode)
-    { dBodySetGravityMode (get_id(), mode); }
-  bool getGravityMode() const
-    { return dBodyGetGravityMode (get_id()) != 0; }
-
-  bool isConnectedTo (dBodyID body) const
-    { return dAreConnected (get_id(), body) != 0; }
-
-  void  setAutoDisableLinearThreshold (dReal threshold) 
-    { dBodySetAutoDisableLinearThreshold (get_id(), threshold); }
-  dReal getAutoDisableLinearThreshold() const
-    { return dBodyGetAutoDisableLinearThreshold (get_id()); }
-  void setAutoDisableAngularThreshold (dReal threshold)
-    { dBodySetAutoDisableAngularThreshold (get_id(), threshold); }
-  dReal getAutoDisableAngularThreshold() const
-    { return dBodyGetAutoDisableAngularThreshold (get_id()); }
-  void setAutoDisableSteps (int steps)
-    { dBodySetAutoDisableSteps (get_id(), steps); }
-  int getAutoDisableSteps() const
-    { return dBodyGetAutoDisableSteps (get_id()); }
-  void setAutoDisableTime (dReal time)
-    { dBodySetAutoDisableTime (get_id(), time); }
-  dReal getAutoDisableTime() const
-    { return dBodyGetAutoDisableTime (get_id()); }
-  void setAutoDisableFlag (bool do_auto_disable)
-    { dBodySetAutoDisableFlag (get_id(), do_auto_disable); }
-  bool getAutoDisableFlag() const
-    { return dBodyGetAutoDisableFlag (get_id()) != 0; }
-
-  dReal getLinearDamping() const
-    { return dBodyGetLinearDamping(get_id()); }
-  void setLinearDamping(dReal scale)
-    { dBodySetLinearDamping(get_id(), scale); }
-  dReal getAngularDamping() const
-    { return dBodyGetAngularDamping(get_id()); }
-  void setAngularDamping(dReal scale)
-    { dBodySetAngularDamping(get_id(), scale); }
-  void setDamping(dReal linear_scale, dReal angular_scale)
-    { dBodySetDamping(get_id(), linear_scale, angular_scale); }
-  dReal getLinearDampingThreshold() const
-    { return dBodyGetLinearDampingThreshold(get_id()); }
-  void setLinearDampingThreshold(dReal threshold) const
-    { dBodySetLinearDampingThreshold(get_id(), threshold); }
-  dReal getAngularDampingThreshold() const
-    { return dBodyGetAngularDampingThreshold(get_id()); }
-  void setAngularDampingThreshold(dReal threshold)
-    { dBodySetAngularDampingThreshold(get_id(), threshold); }
-  void setDampingDefaults()
-    { dBodySetDampingDefaults(get_id()); }
-
-  dReal getMaxAngularSpeed() const
-    { return dBodyGetMaxAngularSpeed(get_id()); }
-  void setMaxAngularSpeed(dReal max_speed)
-    { dBodySetMaxAngularSpeed(get_id(), max_speed); }
-
-  bool getGyroscopicMode() const
-    { return dBodyGetGyroscopicMode(get_id()) != 0; }
-  void setGyroscopicMode(bool mode)
-    { dBodySetGyroscopicMode(get_id(), mode); }
-
-};
-
-
-class dJointGroupSimpleIDContainer {
-protected:
-       dJointGroupID _id;
-
-       dJointGroupSimpleIDContainer(): _id(0) {}
-       ~dJointGroupSimpleIDContainer() { destroy(); }
-
-       void destroy() { 
-               if (_id) {
-                       dJointGroupDestroy(_id); 
-                       _id = 0;
-               }
-       }
-};
-
-class dJointGroupDynamicIDContainer: public dJointGroupSimpleIDContainer {
-protected:
-       virtual ~dJointGroupDynamicIDContainer() {}
-};
-
-template <class dJointGroupTemplateBase>
-class dJointGroupTemplate: public dJointGroupTemplateBase {
-  // intentionally undefined, don't use these
-  dJointGroupTemplate (const dJointGroupTemplate<dJointGroupTemplateBase> &);
-  void operator= (const dJointGroupTemplate<dJointGroupTemplateBase> &);
-
-protected:
-  dJointGroupID get_id() const { return dJointGroupTemplateBase::_id; }
-  void set_id(dJointGroupID value) { dJointGroupTemplateBase::_id = value; }
-
-  void destroy() { dJointGroupTemplateBase::destroy(); }
-
-public:
-  dJointGroupTemplate ()
-    { set_id(dJointGroupCreate(0)); }
-  
-  void create () {
-    destroy();
-    set_id(dJointGroupCreate(0));
-  }
-
-  dJointGroupID id() const
-    { return get_id(); }
-  operator dJointGroupID() const
-    { return get_id(); }
-
-  void empty()
-    { dJointGroupEmpty (get_id()); }
-  void clear()
-    { empty(); }
-};
-
-
-class dJointSimpleIDContainer {
-protected:
-       dJointID _id;
-
-       dJointSimpleIDContainer(): _id(0) {}
-       ~dJointSimpleIDContainer() { destroy(); }
-
-       void destroy() { 
-               if (_id) {
-                       dJointDestroy (_id); 
-                       _id = 0;
-               }
-       }
-};
-
-class dJointDynamicIDContainer: public dJointSimpleIDContainer {
-protected:
-       virtual ~dJointDynamicIDContainer() {}
-};
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dJointTemplate: public dJointTemplateBase {
-private:
-  // intentionally undefined, don't use these
-  dJointTemplate (const dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &) ;
-  void operator= (const dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  dJointID get_id() const { return dJointTemplateBase::_id; }
-  void set_id(dJointID value) { dJointTemplateBase::_id = value; }
-
-  void destroy() { dJointTemplateBase::destroy(); }
-
-protected:
-  dJointTemplate() // don't let user construct pure dJointTemplate objects
-    { }
-
-public:
-  dJointID id() const
-    { return get_id(); }
-  operator dJointID() const
-    { return get_id(); }
-
-  int getNumBodies() const
-    { return dJointGetNumBodies(get_id()); }
-
-  void attach (dBodyID body1, dBodyID body2)
-    { dJointAttach (get_id(), body1, body2); }
-  void attach (dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase>& body1, dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase>& body2)
-    { attach(body1.id(), body2.id()); }
-
-  void enable()
-    { dJointEnable (get_id()); }
-  void disable()
-    { dJointDisable (get_id()); }
-  bool isEnabled() const
-    { return dJointIsEnabled (get_id()) != 0; }
-
-  void setData (void *data)
-    { dJointSetData (get_id(), data); }
-  void *getData() const
-    { return dJointGetData (get_id()); }
-
-  dJointType getType() const
-    { return dJointGetType (get_id()); }
-
-  dBodyID getBody (int index) const
-    { return dJointGetBody (get_id(), index); }
-
-  void setFeedback(dJointFeedback *fb)
-    { dJointSetFeedback(get_id(), fb); }
-  dJointFeedback *getFeedback() const
-    { return dJointGetFeedback(get_id()); }
-
-  // If not implemented it will do nothing as describe in the doc
-  virtual void setParam (int, dReal) {};
-  virtual dReal getParam (int) const { return 0; }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dBallJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dBallJointTemplate (const dBallJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator= (const dBallJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dBallJointTemplate() { }
-  dBallJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateBall(world, group)); }
-  dBallJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateBall(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateBall(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetBallAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void getAnchor (dVector3 result) const
-    { dJointGetBallAnchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetBallAnchor2 (get_id(), result); }
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetBallParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetBallParam (get_id(), parameter); }
-  // TODO: expose params through methods
-} ;
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dHingeJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dHingeJointTemplate (const dHingeJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dHingeJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dHingeJointTemplate() { }
-  dHingeJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateHinge(world, group)); }
-  dHingeJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateHinge(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateHinge (world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-  
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetHingeAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void getAnchor (dVector3 result) const
-    { dJointGetHingeAnchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetHingeAnchor2 (get_id(), result); }
-
-  void setAxis (dReal x, dReal y, dReal z)
-    { dJointSetHingeAxis (get_id(), x, y, z); }
-  void setAxis (const dVector3 a)
-    { setAxis(a[0], a[1], a[2]); }
-  void getAxis (dVector3 result) const
-    { dJointGetHingeAxis (get_id(), result); }
-
-  dReal getAngle() const
-    { return dJointGetHingeAngle (get_id()); }
-  dReal getAngleRate() const
-    { return dJointGetHingeAngleRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetHingeParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetHingeParam (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addTorque (dReal torque)
-       { dJointAddHingeTorque(get_id(), torque); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dSliderJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dSliderJointTemplate (const dSliderJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dSliderJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dSliderJointTemplate() { }
-  dSliderJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateSlider(world, group)); }
-  dSliderJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateSlider(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateSlider(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAxis (dReal x, dReal y, dReal z)
-    { dJointSetSliderAxis (get_id(), x, y, z); }
-  void setAxis (const dVector3 a)
-    { setAxis (a[0], a[1], a[2]); }
-  void getAxis (dVector3 result) const
-    { dJointGetSliderAxis (get_id(), result); }
-
-  dReal getPosition() const
-    { return dJointGetSliderPosition (get_id()); }
-  dReal getPositionRate() const
-    { return dJointGetSliderPositionRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetSliderParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetSliderParam (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addForce (dReal force)
-       { dJointAddSliderForce(get_id(), force); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dUniversalJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dUniversalJointTemplate (const dUniversalJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dUniversalJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dUniversalJointTemplate() { }
-  dUniversalJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateUniversal(world, group)); }
-  dUniversalJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateUniversal(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateUniversal(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetUniversalAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor(a[0], a[1], a[2]); }
-  void setAxis1 (dReal x, dReal y, dReal z)
-    { dJointSetUniversalAxis1 (get_id(), x, y, z); }
-  void setAxis1 (const dVector3 a)
-    { setAxis1 (a[0], a[1], a[2]); }
-  void setAxis2 (dReal x, dReal y, dReal z)
-    { dJointSetUniversalAxis2 (get_id(), x, y, z); }
-  void setAxis2 (const dVector3 a)
-    { setAxis2 (a[0], a[1], a[2]); }
-
-  void getAnchor (dVector3 result) const
-    { dJointGetUniversalAnchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetUniversalAnchor2 (get_id(), result); }
-  void getAxis1 (dVector3 result) const
-    { dJointGetUniversalAxis1 (get_id(), result); }
-  void getAxis2 (dVector3 result) const
-    { dJointGetUniversalAxis2 (get_id(), result); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetUniversalParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetUniversalParam (get_id(), parameter); }
-  // TODO: expose params through methods
-  
-  void getAngles(dReal *angle1, dReal *angle2) const
-    { dJointGetUniversalAngles (get_id(), angle1, angle2); }
-
-  dReal getAngle1() const
-    { return dJointGetUniversalAngle1 (get_id()); }
-  dReal getAngle1Rate() const
-    { return dJointGetUniversalAngle1Rate (get_id()); }
-  dReal getAngle2() const
-    { return dJointGetUniversalAngle2 (get_id()); }
-  dReal getAngle2Rate() const
-    { return dJointGetUniversalAngle2Rate (get_id()); }
-
-  void addTorques (dReal torque1, dReal torque2)
-       { dJointAddUniversalTorques(get_id(), torque1, torque2); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dHinge2JointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dHinge2JointTemplate (const dHinge2JointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dHinge2JointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dHinge2JointTemplate() { }
-  dHinge2JointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateHinge2(world, group)); }
-  dHinge2JointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateHinge2(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateHinge2(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetHinge2Anchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor(a[0], a[1], a[2]); }
-  void setAxis1 (dReal x, dReal y, dReal z)
-    { dJointSetHinge2Axis1 (get_id(), x, y, z); }
-  void setAxis1 (const dVector3 a)
-    { setAxis1 (a[0], a[1], a[2]); }
-  void setAxis2 (dReal x, dReal y, dReal z)
-    { dJointSetHinge2Axis2 (get_id(), x, y, z); }
-  void setAxis2 (const dVector3 a)
-    { setAxis2 (a[0], a[1], a[2]); }
-    
-  void getAnchor (dVector3 result) const
-    { dJointGetHinge2Anchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetHinge2Anchor2 (get_id(), result); }
-  void getAxis1 (dVector3 result) const
-    { dJointGetHinge2Axis1 (get_id(), result); }
-  void getAxis2 (dVector3 result) const
-    { dJointGetHinge2Axis2 (get_id(), result); }
-
-  dReal getAngle1() const
-    { return dJointGetHinge2Angle1 (get_id()); }
-  dReal getAngle1Rate() const
-    { return dJointGetHinge2Angle1Rate (get_id()); }
-  dReal getAngle2Rate() const
-    { return dJointGetHinge2Angle2Rate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetHinge2Param (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetHinge2Param (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addTorques(dReal torque1, dReal torque2)
-       { dJointAddHinge2Torques(get_id(), torque1, torque2); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dPRJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dPRJointTemplate (const dPRJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dPRJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dPRJointTemplate() { }
-  dPRJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreatePR(world, group)); }
-  dPRJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreatePR(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreatePR(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetPRAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void setAxis1 (dReal x, dReal y, dReal z)
-    { dJointSetPRAxis1 (get_id(), x, y, z); }
-  void setAxis1 (const dVector3 a)
-    { setAxis1(a[0], a[1], a[2]); }
-  void setAxis2 (dReal x, dReal y, dReal z)
-    { dJointSetPRAxis2 (get_id(), x, y, z); }
-  void setAxis2 (const dVector3 a)
-    { setAxis2(a[0], a[1], a[2]); }
-
-  void getAnchor (dVector3 result) const
-    { dJointGetPRAnchor (get_id(), result); }
-  void getAxis1 (dVector3 result) const
-    { dJointGetPRAxis1 (get_id(), result); }
-  void getAxis2 (dVector3 result) const
-    { dJointGetPRAxis2 (get_id(), result); }
-
-  dReal getPosition() const
-    { return dJointGetPRPosition (get_id()); }
-  dReal getPositionRate() const
-    { return dJointGetPRPositionRate (get_id()); }
-
-  dReal getAngle() const
-    { return dJointGetPRAngle (get_id()); }
-  dReal getAngleRate() const
-    { return dJointGetPRAngleRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetPRParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetPRParam (get_id(), parameter); }
-};
-
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dPUJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase>
-{
-private:
-  // intentionally undefined, don't use these
-  dPUJointTemplate (const dPUJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dPUJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dPUJointTemplate() { }
-  dPUJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreatePU(world, group)); }
-  dPUJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreatePU(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0)
-  {
-    destroy();
-    set_id(dJointCreatePU(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-  { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetPUAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void setAxis1 (dReal x, dReal y, dReal z)
-    { dJointSetPUAxis1 (get_id(), x, y, z); }
-  void setAxis1 (const dVector3 a)
-    { setAxis1(a[0], a[1], a[2]); }
-  void setAxis2 (dReal x, dReal y, dReal z)
-  { dJointSetPUAxis2 (get_id(), x, y, z); }
-  void setAxis3 (dReal x, dReal y, dReal z)
-  { dJointSetPUAxis3 (get_id(), x, y, z); }
-  void setAxis3 (const dVector3 a)
-    { setAxis3(a[0], a[1], a[2]); }
-  void setAxisP (dReal x, dReal y, dReal z)
-  { dJointSetPUAxis3 (get_id(), x, y, z); }
-  void setAxisP (const dVector3 a)
-    { setAxisP(a[0], a[1], a[2]); }
-
-  virtual void getAnchor (dVector3 result) const
-    { dJointGetPUAnchor (get_id(), result); }
-  void getAxis1 (dVector3 result) const
-    { dJointGetPUAxis1 (get_id(), result); }
-  void getAxis2 (dVector3 result) const
-    { dJointGetPUAxis2 (get_id(), result); }
-  void getAxis3 (dVector3 result) const
-    { dJointGetPUAxis3 (get_id(), result); }
-  void getAxisP (dVector3 result) const
-    { dJointGetPUAxis3 (get_id(), result); }
-
-  dReal getAngle1() const
-    { return dJointGetPUAngle1 (get_id()); }
-  dReal getAngle1Rate() const
-    { return dJointGetPUAngle1Rate (get_id()); }
-  dReal getAngle2() const
-    { return dJointGetPUAngle2 (get_id()); }
-  dReal getAngle2Rate() const
-    { return dJointGetPUAngle2Rate (get_id()); }
-
-  dReal getPosition() const
-    { return dJointGetPUPosition (get_id()); }
-  dReal getPositionRate() const
-    { return dJointGetPUPositionRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-  { dJointSetPUParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetPUParam (get_id(), parameter); }
-  // TODO: expose params through methods
-};
-
-
-
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dPistonJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase>
-{
-private:
-  // intentionally undefined, don't use these
-  dPistonJointTemplate (const dPistonJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dPistonJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dPistonJointTemplate() { }
-  dPistonJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreatePiston(world, group)); }
-  dPistonJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreatePiston(world, group)); }
-
-  void create (dWorldID world, dJointGroupID group=0)
-  {
-    destroy();
-    set_id(dJointCreatePiston(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setAnchor (dReal x, dReal y, dReal z)
-    { dJointSetPistonAnchor (get_id(), x, y, z); }
-  void setAnchor (const dVector3 a)
-    { setAnchor (a[0], a[1], a[2]); }
-  void getAnchor (dVector3 result) const
-    { dJointGetPistonAnchor (get_id(), result); }
-  void getAnchor2 (dVector3 result) const
-    { dJointGetPistonAnchor2 (get_id(), result); }
-
-  void setAxis (dReal x, dReal y, dReal z)
-    { dJointSetPistonAxis (get_id(), x, y, z); }
-  void setAxis (const dVector3 a)
-    { setAxis(a[0], a[1], a[2]); }
-  void getAxis (dVector3 result) const
-    { dJointGetPistonAxis (get_id(), result); }
-
-  dReal getPosition() const
-    { return dJointGetPistonPosition (get_id()); }
-  dReal getPositionRate() const
-    { return dJointGetPistonPositionRate (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-  { dJointSetPistonParam (get_id(), parameter, value); }
-  virtual dReal getParam (int parameter) const
-    { return dJointGetPistonParam (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addForce (dReal force)
-  { dJointAddPistonForce (get_id(), force); }
-};
-
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dFixedJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase>
-{
-private:
-  // intentionally undefined, don't use these
-  dFixedJointTemplate (const dFixedJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dFixedJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dFixedJointTemplate() { }
-  dFixedJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateFixed(world, group)); }
-  dFixedJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateFixed(world, group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateFixed(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void set()
-    { dJointSetFixed (get_id()); }
-
-  virtual void setParam (int parameter, dReal value)
-    { dJointSetFixedParam (get_id(), parameter, value); }
-
-  virtual dReal getParam (int parameter) const
-    { return dJointGetFixedParam (get_id(), parameter); }
-  // TODO: expose params through methods
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dContactJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dContactJointTemplate (const dContactJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dContactJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dContactJointTemplate() { }
-  dContactJointTemplate (dWorldID world, dJointGroupID group, dContact *contact)
-    { set_id(dJointCreateContact(world, group, contact)); }
-  dContactJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group, dContact *contact)
-    { set_id(dJointCreateContact(world.id(), group, contact)); }
-
-  void create (dWorldID world, dJointGroupID group, dContact *contact) {
-    destroy();
-    set_id(dJointCreateContact(world, group, contact));
-  }
-  
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group, dContact *contact)
-    { create(world.id(), group, contact); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dNullJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dNullJointTemplate (const dNullJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dNullJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dNullJointTemplate() { }
-  dNullJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateNull(world, group)); }
-  dNullJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateNull (world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateNull(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dAMotorJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dAMotorJointTemplate (const dAMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dAMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dAMotorJointTemplate() { }
-  dAMotorJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateAMotor(world, group)); }
-  dAMotorJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateAMotor(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateAMotor(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setMode (int mode)
-    { dJointSetAMotorMode (get_id(), mode); }
-  int getMode() const
-    { return dJointGetAMotorMode (get_id()); }
-
-  void setNumAxes (int num)
-    { dJointSetAMotorNumAxes (get_id(), num); }
-  int getNumAxes() const
-    { return dJointGetAMotorNumAxes (get_id()); }
-
-  void setAxis (int anum, int rel, dReal x, dReal y, dReal z)
-    { dJointSetAMotorAxis (get_id(), anum, rel, x, y, z); }
-  void setAxis (int anum, int rel, const dVector3 a)
-    { setAxis(anum, rel, a[0], a[1], a[2]); }
-  void getAxis (int anum, dVector3 result) const
-    { dJointGetAMotorAxis (get_id(), anum, result); }
-  int getAxisRel (int anum) const
-    { return dJointGetAMotorAxisRel (get_id(), anum); }
-
-  void setAngle (int anum, dReal angle)
-    { dJointSetAMotorAngle (get_id(), anum, angle); }
-  dReal getAngle (int anum) const
-    { return dJointGetAMotorAngle (get_id(), anum); }
-  dReal getAngleRate (int anum)
-    { return dJointGetAMotorAngleRate (get_id(), anum); }
-
-  void setParam (int parameter, dReal value)
-    { dJointSetAMotorParam (get_id(), parameter, value); }
-  dReal getParam (int parameter) const
-    { return dJointGetAMotorParam (get_id(), parameter); }
-  // TODO: expose params through methods
-
-  void addTorques(dReal torque1, dReal torque2, dReal torque3)
-       { dJointAddAMotorTorques(get_id(), torque1, torque2, torque3); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dLMotorJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
-  // intentionally undefined, don't use these
-  dLMotorJointTemplate (const dLMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-  void operator = (const dLMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
-  typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
-  dJointID get_id() const { return dBaseTemplate::get_id(); }
-  void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
-  void destroy() { dBaseTemplate::destroy(); }
-
-public:
-  dLMotorJointTemplate() { }
-  dLMotorJointTemplate (dWorldID world, dJointGroupID group=0)
-    { set_id(dJointCreateLMotor(world, group)); }
-  dLMotorJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { set_id(dJointCreateLMotor(world.id(), group)); }
-
-  void create (dWorldID world, dJointGroupID group=0) {
-    destroy();
-    set_id(dJointCreateLMotor(world, group));
-  }
-  void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
-    { create(world.id(), group); }
-
-  void setNumAxes (int num)
-    { dJointSetLMotorNumAxes (get_id(), num); }
-  int getNumAxes() const
-    { return dJointGetLMotorNumAxes (get_id()); }
-
-  void setAxis (int anum, int rel, dReal x, dReal y, dReal z)
-    { dJointSetLMotorAxis (get_id(), anum, rel, x, y, z); }
-  void setAxis (int anum, int rel, const dVector3 a)
-    { setAxis(anum, rel, a[0], a[1], a[2]); }
-  void getAxis (int anum, dVector3 result) const
-    { dJointGetLMotorAxis (get_id(), anum, result); }
-
-  void setParam (int parameter, dReal value)
-    { dJointSetLMotorParam (get_id(), parameter, value); }
-  dReal getParam (int parameter) const
-    { return dJointGetLMotorParam (get_id(), parameter); }
-  // TODO: expose params through methods
-};
-
-//}
-
-#if !defined(dODECPP_WORLD_TEMPLATE_BASE)
-
-#if defined(dODECPP_BODY_TEMPLATE_BASE) || defined(dODECPP_JOINTGROUP_TEMPLATE_BASE) || defined(dODECPP_JOINT_TEMPLATE_BASE)
-#error All the odecpp template bases must be defined or not defined together
-#endif
-
-#define dODECPP_WORLD_TEMPLATE_BASE dWorldDynamicIDContainer
-#define dODECPP_BODY_TEMPLATE_BASE dBodyDynamicIDContainer
-#define dODECPP_JOINTGROUP_TEMPLATE_BASE dJointGroupDynamicIDContainer
-#define dODECPP_JOINT_TEMPLATE_BASE dJointDynamicIDContainer
-
-#else // #if defined(dODECPP_WORLD_TEMPLATE_BASE)
-
-#if !defined(dODECPP_BODY_TEMPLATE_BASE) || !defined(dODECPP_JOINTGROUP_TEMPLATE_BASE) || !defined(dODECPP_JOINT_TEMPLATE_BASE)
-#error All the odecpp template bases must be defined or not defined together
-#endif
-
-#endif // #if defined(dODECPP_WORLD_TEMPLATE_BASE)
-
-
-typedef dWorldTemplate<dODECPP_WORLD_TEMPLATE_BASE> dWorld;
-typedef dBodyTemplate<dODECPP_BODY_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE> dBody;
-typedef dJointGroupTemplate<dODECPP_JOINTGROUP_TEMPLATE_BASE> dJointGroup;
-typedef dJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dJoint;
-typedef dBallJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dBallJoint;
-typedef dHingeJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dHingeJoint;
-typedef dSliderJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dSliderJoint;
-typedef dUniversalJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dUniversalJoint;
-typedef dHinge2JointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dHinge2Joint;
-typedef dPRJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dPRJoint;
-typedef dPUJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dPUJoint;
-typedef dPistonJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dPistonJoint;
-typedef dFixedJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dFixedJoint;
-typedef dContactJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dContactJoint;
-typedef dNullJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dNullJoint;
-typedef dAMotorJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dAMotorJoint;
-typedef dLMotorJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dLMotorJoint;
-
-
-#endif
-#endif
-
-// Local variables:
-// mode:c++
-// c-basic-offset:2
-// End:
diff --git a/misc/builddeps/linux64/ode/include/ode/odecpp_collision.h b/misc/builddeps/linux64/ode/include/ode/odecpp_collision.h
deleted file mode 100644 (file)
index 2377a5e..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-/*************************************************************************
- *                                                                      *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.      *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org         *
- *                                                                      *
- * This library is free software; you can redistribute it and/or        *
- * modify it under the terms of EITHER:                                 *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *      Software Foundation; either version 2.1 of the License, or (at  *
- *      your option) any later version. The text of the GNU Lesser      *
- *      General Public License is included with this library in the     *
- *      file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in    *
- *      the file LICENSE-BSD.TXT.                                       *
- *                                                                      *
- * This library is distributed in the hope that it will be useful,      *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files   *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                    *
- *                                                                      *
- *************************************************************************/
-
-/* C++ interface for new collision API */
-
-
-#ifndef _ODE_ODECPP_COLLISION_H_
-#define _ODE_ODECPP_COLLISION_H_
-#ifdef __cplusplus
-
-//#include <ode/error.h>
-
-//namespace ode {
-
-class dGeom {
-  // intentionally undefined, don't use these
-  dGeom (dGeom &);
-  void operator= (dGeom &);
-
-protected:
-  dGeomID _id;
-
-  dGeom()
-    { _id = 0; }
-public:
-  ~dGeom()
-    { if (_id) dGeomDestroy (_id); }
-
-  dGeomID id() const
-    { return _id; }
-  operator dGeomID() const
-    { return _id; }
-
-  void destroy() {
-    if (_id) dGeomDestroy (_id);
-    _id = 0;
-  }
-
-  int getClass() const
-    { return dGeomGetClass (_id); }
-
-  dSpaceID getSpace() const
-    { return dGeomGetSpace (_id); }
-
-  void setData (void *data)
-    { dGeomSetData (_id,data); }
-  void *getData() const
-    { return dGeomGetData (_id); }
-
-  void setBody (dBodyID b)
-    { dGeomSetBody (_id,b); }
-  dBodyID getBody() const
-    { return dGeomGetBody (_id); }
-
-  void setPosition (dReal x, dReal y, dReal z)
-    { dGeomSetPosition (_id,x,y,z); }
-  const dReal * getPosition() const
-    { return dGeomGetPosition (_id); }
-
-  void setRotation (const dMatrix3 R)
-    { dGeomSetRotation (_id,R); }
-  const dReal * getRotation() const
-    { return dGeomGetRotation (_id); }
-    
-  void setQuaternion (const dQuaternion quat)
-    { dGeomSetQuaternion (_id,quat); }
-  void getQuaternion (dQuaternion quat) const
-    { dGeomGetQuaternion (_id,quat); }
-
-  void getAABB (dReal aabb[6]) const
-    { dGeomGetAABB (_id, aabb); }
-
-  int isSpace()
-    { return dGeomIsSpace (_id); }
-
-  void setCategoryBits (unsigned long bits)
-    { dGeomSetCategoryBits (_id, bits); }
-  void setCollideBits (unsigned long bits)
-    { dGeomSetCollideBits (_id, bits); }
-  unsigned long getCategoryBits()
-    { return dGeomGetCategoryBits (_id); }
-  unsigned long getCollideBits()
-    { return dGeomGetCollideBits (_id); }
-
-  void enable()
-    { dGeomEnable (_id); }
-  void disable()
-    { dGeomDisable (_id); }
-  int isEnabled()
-    { return dGeomIsEnabled (_id); }
-  
-  void getRelPointPos (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dGeomGetRelPointPos (_id, px, py, pz, result); }
-  void getRelPointPos (const dVector3 p, dVector3 result) const
-    { getRelPointPos (p[0], p[1], p[2], result); }
-
-  void getPosRelPoint (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dGeomGetPosRelPoint (_id, px, py, pz, result); }
-  void getPosRelPoint (const dVector3 p, dVector3 result) const
-    { getPosRelPoint (p[0], p[1], p[2], result); }
-
-  void vectorToWorld (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dGeomVectorToWorld (_id, px, py, pz, result); }
-  void vectorToWorld (const dVector3 p, dVector3 result) const
-    { vectorToWorld (p[0], p[1], p[2], result); }
-
-  void vectorFromWorld (dReal px, dReal py, dReal pz, dVector3 result) const
-    { dGeomVectorFromWorld (_id, px, py, pz, result); }
-  void vectorFromWorld (const dVector3 p, dVector3 result) const
-    { vectorFromWorld (p[0], p[1], p[2], result); }
-  
-  void collide2 (dGeomID g, void *data, dNearCallback *callback)
-    { dSpaceCollide2 (_id,g,data,callback); }
-};
-
-
-class dSpace : public dGeom {
-  // intentionally undefined, don't use these
-  dSpace (dSpace &);
-  void operator= (dSpace &);
-
-protected:
-  // the default constructor is protected so that you
-  // can't instance this class. you must instance one
-  // of its subclasses instead.
-  dSpace () { _id = 0; }
-
-public:
-  dSpaceID id() const
-    { return (dSpaceID) _id; }
-  operator dSpaceID() const
-    { return (dSpaceID) _id; }
-
-  void setCleanup (int mode)
-    { dSpaceSetCleanup (id(), mode); }
-  int getCleanup()
-    { return dSpaceGetCleanup (id()); }
-
-  void add (dGeomID x)
-    { dSpaceAdd (id(), x); }
-  void remove (dGeomID x)
-    { dSpaceRemove (id(), x); }
-  int query (dGeomID x)
-    { return dSpaceQuery (id(),x); }
-
-  int getNumGeoms()
-    { return dSpaceGetNumGeoms (id()); }
-  dGeomID getGeom (int i)
-    { return dSpaceGetGeom (id(),i); }
-
-  void collide (void *data, dNearCallback *callback)
-    { dSpaceCollide (id(),data,callback); }
-};
-
-
-class dSimpleSpace : public dSpace {
-  // intentionally undefined, don't use these
-  dSimpleSpace (dSimpleSpace &);
-  void operator= (dSimpleSpace &);
-
-public:
-  dSimpleSpace ()
-    { _id = (dGeomID) dSimpleSpaceCreate (0); }
-  dSimpleSpace (dSpace &space)
-    { _id = (dGeomID) dSimpleSpaceCreate (space.id()); }
-  dSimpleSpace (dSpaceID space)
-    { _id = (dGeomID) dSimpleSpaceCreate (space); }
-};
-
-
-class dHashSpace : public dSpace {
-  // intentionally undefined, don't use these
-  dHashSpace (dHashSpace &);
-  void operator= (dHashSpace &);
-
-public:
-  dHashSpace ()
-    { _id = (dGeomID) dHashSpaceCreate (0); }
-  dHashSpace (dSpace &space)
-    { _id = (dGeomID) dHashSpaceCreate (space.id()); }
-  dHashSpace (dSpaceID space)
-    { _id = (dGeomID) dHashSpaceCreate (space); }
-
-  void setLevels (int minlevel, int maxlevel)
-    { dHashSpaceSetLevels (id(),minlevel,maxlevel); }
-};
-
-
-class dQuadTreeSpace : public dSpace {
-  // intentionally undefined, don't use these
-  dQuadTreeSpace (dQuadTreeSpace &);
-  void operator= (dQuadTreeSpace &);
-
-public:
-  dQuadTreeSpace (const dVector3 center, const dVector3 extents, int depth)
-    { _id = (dGeomID) dQuadTreeSpaceCreate (0,center,extents,depth); }
-  dQuadTreeSpace (dSpace &space, const dVector3 center, const dVector3 extents, int depth)
-    { _id = (dGeomID) dQuadTreeSpaceCreate (space.id(),center,extents,depth); }
-  dQuadTreeSpace (dSpaceID space, const dVector3 center, const dVector3 extents, int depth)
-    { _id = (dGeomID) dQuadTreeSpaceCreate (space,center,extents,depth); }
-};
-
-
-class dSphere : public dGeom {
-  // intentionally undefined, don't use these
-  dSphere (dSphere &);
-  void operator= (dSphere &);
-
-public:
-  dSphere () { }
-  dSphere (dReal radius)
-    { _id = dCreateSphere (0, radius); }
-  dSphere (dSpace &space, dReal radius)
-    { _id = dCreateSphere (space.id(), radius); }
-  dSphere (dSpaceID space, dReal radius)
-    { _id = dCreateSphere (space, radius); }
-
-  void create (dSpaceID space, dReal radius) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateSphere (space, radius);
-  }
-
-  void setRadius (dReal radius)
-    { dGeomSphereSetRadius (_id, radius); }
-  dReal getRadius() const
-    { return dGeomSphereGetRadius (_id); }
-};
-
-
-class dBox : public dGeom {
-  // intentionally undefined, don't use these
-  dBox (dBox &);
-  void operator= (dBox &);
-
-public:
-  dBox () { }
-  dBox (dReal lx, dReal ly, dReal lz)
-    { _id = dCreateBox (0,lx,ly,lz); }
-  dBox (dSpace &space, dReal lx, dReal ly, dReal lz)
-    { _id = dCreateBox (space,lx,ly,lz); }
-  dBox (dSpaceID space, dReal lx, dReal ly, dReal lz)
-    { _id = dCreateBox (space,lx,ly,lz); }
-
-  void create (dSpaceID space, dReal lx, dReal ly, dReal lz) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateBox (space,lx,ly,lz);
-  }
-
-  void setLengths (dReal lx, dReal ly, dReal lz)
-    { dGeomBoxSetLengths (_id, lx, ly, lz); }
-  void getLengths (dVector3 result) const
-    { dGeomBoxGetLengths (_id,result); }
-};
-
-
-class dPlane : public dGeom {
-  // intentionally undefined, don't use these
-  dPlane (dPlane &);
-  void operator= (dPlane &);
-
-public:
-  dPlane() { }
-  dPlane (dReal a, dReal b, dReal c, dReal d)
-    { _id = dCreatePlane (0,a,b,c,d); }
-  dPlane (dSpace &space, dReal a, dReal b, dReal c, dReal d)
-    { _id = dCreatePlane (space.id(),a,b,c,d); }
-  dPlane (dSpaceID space, dReal a, dReal b, dReal c, dReal d)
-    { _id = dCreatePlane (space,a,b,c,d); }
-
-  void create (dSpaceID space, dReal a, dReal b, dReal c, dReal d) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreatePlane (space,a,b,c,d);
-  }
-
-  void setParams (dReal a, dReal b, dReal c, dReal d)
-    { dGeomPlaneSetParams (_id, a, b, c, d); }
-  void getParams (dVector4 result) const
-    { dGeomPlaneGetParams (_id,result); }
-};
-
-
-class dCapsule : public dGeom {
-  // intentionally undefined, don't use these
-  dCapsule (dCapsule &);
-  void operator= (dCapsule &);
-
-public:
-  dCapsule() { }
-  dCapsule (dReal radius, dReal length)
-    { _id = dCreateCapsule (0,radius,length); }
-  dCapsule (dSpace &space, dReal radius, dReal length)
-    { _id = dCreateCapsule (space.id(),radius,length); }
-  dCapsule (dSpaceID space, dReal radius, dReal length)
-    { _id = dCreateCapsule (space,radius,length); }
-
-  void create (dSpaceID space, dReal radius, dReal length) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateCapsule (space,radius,length);
-  }
-
-  void setParams (dReal radius, dReal length)
-    { dGeomCapsuleSetParams (_id, radius, length); }
-  void getParams (dReal *radius, dReal *length) const
-    { dGeomCapsuleGetParams (_id,radius,length); }
-};
-
-
-class dCylinder : public dGeom {
-  // intentionally undefined, don't use these
-  dCylinder (dCylinder &);
-  void operator= (dCylinder &);
-
-public:
-  dCylinder() { }
-  dCylinder (dReal radius, dReal length)
-    { _id = dCreateCylinder (0,radius,length); }
-  dCylinder (dSpace &space, dReal radius, dReal length)
-    { _id = dCreateCylinder (space.id(),radius,length); }
-  dCylinder (dSpaceID space, dReal radius, dReal length)
-    { _id = dCreateCylinder (space,radius,length); }
-
-  void create (dSpaceID space, dReal radius, dReal length) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateCylinder (space,radius,length);
-  }
-
-  void setParams (dReal radius, dReal length)
-    { dGeomCylinderSetParams (_id, radius, length); }
-  void getParams (dReal *radius, dReal *length) const
-    { dGeomCylinderGetParams (_id,radius,length); }
-};
-
-
-class dRay : public dGeom {
-  // intentionally undefined, don't use these
-  dRay (dRay &);
-  void operator= (dRay &);
-
-public:
-  dRay() { }
-  dRay (dReal length)
-    { _id = dCreateRay (0,length); }
-  dRay (dSpace &space, dReal length)
-    { _id = dCreateRay (space.id(),length); }
-  dRay (dSpaceID space, dReal length)
-    { _id = dCreateRay (space,length); }
-
-  void create (dSpaceID space, dReal length) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateRay (space,length);
-  }
-
-  void setLength (dReal length)
-    { dGeomRaySetLength (_id, length); }
-  dReal getLength()
-    { return dGeomRayGetLength (_id); }
-
-  void set (dReal px, dReal py, dReal pz, dReal dx, dReal dy, dReal dz)
-    { dGeomRaySet (_id, px, py, pz, dx, dy, dz); }
-  void get (dVector3 start, dVector3 dir)
-    { dGeomRayGet (_id, start, dir); }
-
-  void setParams (int firstContact, int backfaceCull)
-    { dGeomRaySetParams (_id, firstContact, backfaceCull); }
-  void getParams (int *firstContact, int *backfaceCull)
-    { dGeomRayGetParams (_id, firstContact, backfaceCull); }
-  void setClosestHit (int closestHit)
-    { dGeomRaySetClosestHit (_id, closestHit); }
-  int getClosestHit()
-    { return dGeomRayGetClosestHit (_id); }
-};
-
-
-class dGeomTransform : public dGeom {
-  // intentionally undefined, don't use these
-  dGeomTransform (dGeomTransform &);
-  void operator= (dGeomTransform &);
-
-public:
-  dGeomTransform() { }
-  dGeomTransform (dSpace &space)
-    { _id = dCreateGeomTransform (space.id()); }
-  dGeomTransform (dSpaceID space)
-    { _id = dCreateGeomTransform (space); }
-
-  void create (dSpaceID space=0) {
-    if (_id) dGeomDestroy (_id);
-    _id = dCreateGeomTransform (space);
-  }
-
-  void setGeom (dGeomID geom)
-    { dGeomTransformSetGeom (_id, geom); }
-  dGeomID getGeom() const
-    { return dGeomTransformGetGeom (_id); }
-
-  void setCleanup (int mode)
-    { dGeomTransformSetCleanup (_id,mode); }
-  int getCleanup ()
-    { return dGeomTransformGetCleanup (_id); }
-
-  void setInfo (int mode)
-    { dGeomTransformSetInfo (_id,mode); }
-  int getInfo()
-    { return dGeomTransformGetInfo (_id); }
-};
-
-//}
-
-#endif
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/odeinit.h b/misc/builddeps/linux64/ode/include/ode/odeinit.h
deleted file mode 100644 (file)
index bb430c8..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-/*************************************************************************
-*                                                                       *
-* Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
-* All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
-*                                                                       *
-* This library is free software; you can redistribute it and/or         *
-* modify it under the terms of EITHER:                                  *
-*   (1) The GNU Lesser General Public License as published by the Free  *
-*       Software Foundation; either version 2.1 of the License, or (at  *
-*       your option) any later version. The text of the GNU Lesser      *
-*       General Public License is included with this library in the     *
-*       file LICENSE.TXT.                                               *
-*   (2) The BSD-style license that is included with this library in     *
-*       the file LICENSE-BSD.TXT.                                       *
-*                                                                       *
-* This library is distributed in the hope that it will be useful,       *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of        *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
-* LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
-*                                                                       *
-*************************************************************************/
-
-/* Library initialization/finalization functions. */
-
-#ifndef _ODE_ODEINIT_H_
-#define _ODE_ODEINIT_H_
-
-#include <ode/common.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* ************************************************************************ */
-/* Library initialization */
-
-/**
- * @defgroup init Library Initialization
- *
- * Library initialization functions prepare ODE internal data structures for use
- * and release allocated resources after ODE is not needed any more.
- */
-
-
-/**
- * @brief Library initialization flags.
- *
- * These flags define ODE library initialization options.
- *
- * @c dInitFlagManualThreadCleanup indicates that resources allocated in TLS for threads
- * using ODE are to be cleared by library client with explicit call to @c dCleanupODEAllDataForThread.
- * If this flag is not specified the automatic resource tracking algorithm is used.
- *
- * With automatic resource tracking, On Windows, memory allocated for a thread may 
- * remain not freed for some time after the thread exits. The resources may be 
- * released when one of other threads calls @c dAllocateODEDataForThread. Ultimately,
- * the resources are released when library is closed with @c dCloseODE. On other 
- * operating systems resources are always released by the thread itself on its exit
- * or on library closure with @c dCloseODE.
- *
- * With manual thread data cleanup mode every collision space object must be 
- * explicitly switched to manual cleanup mode with @c dSpaceSetManualCleanup
- * after creation. See description of the function for more details.
- *
- * If @c dInitFlagManualThreadCleanup was not specified during initialization,
- * calls to @c dCleanupODEAllDataForThread are not allowed.
- *
- * @see dInitODE2
- * @see dAllocateODEDataForThread
- * @see dSpaceSetManualCleanup
- * @see dCloseODE
- * @ingroup init
- */
-enum dInitODEFlags {
-       dInitFlagManualThreadCleanup = 0x00000001 //@< Thread local data is to be cleared explicitly on @c dCleanupODEAllDataForThread function call
-};
-
-/**
- * @brief Initializes ODE library.
- *
- * @c dInitODE is obsolete. @c dInitODE2 is to be used for library initialization.
- *
- * A call to @c dInitODE is equal to the following initialization sequence
- * @code
- *     dInitODE2(0);
- *     dAllocateODEDataForThread(dAllocateMaskAll);
- * @endcode
- *
- * @see dInitODE2
- * @see dAllocateODEDataForThread
- * @ingroup init
- */
-ODE_API void dInitODE(void);
-
-/**
- * @brief Initializes ODE library.
- * @param uiInitFlags Initialization options bitmask
- * @return A nonzero if initialization succeeded and zero otherwise.
- *
- * This function must be called to initialize ODE library before first use. If 
- * initialization succeeds the function may not be called again until library is 
- * closed with a call to @c dCloseODE.
- *
- * The @a uiInitFlags parameter specifies initialization options to be used. These
- * can be combination of zero or more @c dInitODEFlags flags.
- *
- * @note
- * If @c dInitFlagManualThreadCleanup flag is used for initialization, 
- * @c dSpaceSetManualCleanup must be called to set manual cleanup mode for every
- * space object right after creation. Failure to do so may lead to resource leaks.
- *
- * @see dInitODEFlags
- * @see dCloseODE
- * @see dSpaceSetManualCleanup
- * @ingroup init
- */
-ODE_API int dInitODE2(unsigned int uiInitFlags/*=0*/);
-
-
-/**
- * @brief ODE data allocation flags.
- *
- * These flags are used to indicate which data is to be pre-allocated in call to
- * @c dAllocateODEDataForThread.
- *
- * @c dAllocateFlagBasicData tells to allocate the basic data set required for
- * normal library operation. This flag is equal to zero and is always implicitly 
- * included.
- *
- * @c dAllocateFlagCollisionData tells that collision detection data is to be allocated.
- * Collision detection functions may not be called if the data has not be allocated 
- * in advance. If collision detection is not going to be used, it is not necessary
- * to specify this flag.
- *
- * @c dAllocateMaskAll is a mask that can be used for for allocating all possible 
- * data in cases when it is not known what exactly features of ODE will be used.
- * The mask may not be used in combination with other flags. It is guaranteed to
- * include all the current and future legal allocation flags. However, mature 
- * applications should use explicit flags they need rather than allocating everything.
- *
- * @see dAllocateODEDataForThread
- * @ingroup init
- */
-enum dAllocateODEDataFlags {
-       dAllocateFlagBasicData = 0, //@< Allocate basic data required for library to operate
-
-       dAllocateFlagCollisionData = 0x00000001, //@< Allocate data for collision detection
-
-       dAllocateMaskAll = ~0U //@< Allocate all the possible data that is currently defined or will be defined in the future.
-};
-
-/**
- * @brief Allocate thread local data to allow the thread calling ODE.
- * @param uiAllocateFlags Allocation options bitmask.
- * @return A nonzero if allocation succeeded and zero otherwise.
- * 
- * The function is required to be called for every thread that is going to use
- * ODE. This function allocates the data that is required for accessing ODE from 
- * current thread along with optional data required for particular ODE subsystems.
- *
- * @a uiAllocateFlags parameter can contain zero or more flags from @c dAllocateODEDataFlags
- * enumerated type. Multiple calls with different allocation flags are allowed.
- * The flags that are already allocated are ignored in subsequent calls. If zero
- * is passed as the parameter, it means to only allocate the set of most important
- * data the library can not operate without.
- *
- * If the function returns failure status it means that none of the requested 
- * data has been allocated. The client may retry allocation attempt with the same 
- * flags when more system resources are available.
- *
- * @see dAllocateODEDataFlags
- * @see dCleanupODEAllDataForThread
- * @ingroup init
- */
-ODE_API int dAllocateODEDataForThread(unsigned int uiAllocateFlags);
-
-/**
- * @brief Free thread local data that was allocated for current thread.
- *
- * If library was initialized with @c dInitFlagManualThreadCleanup flag the function 
- * is required to be called on exit of every thread that was calling @c dAllocateODEDataForThread.
- * Failure to call @c dCleanupODEAllDataForThread may result in some resources remaining 
- * not freed until program exit. The function may also be called when ODE is still 
- * being used to release resources allocated for all the current subsystems and 
- * possibly proceed with data pre-allocation for other subsystems.
- *
- * The function can safely be called several times in a row. The function can be 
- * called without prior invocation of @c dAllocateODEDataForThread. The function 
- * may not be called before ODE is initialized with @c dInitODE2 or after library 
- * has been closed with @c dCloseODE. A call to @c dCloseODE implicitly releases 
- * all the thread local resources that might be allocated for all the threads that 
- * were using ODE.
- *
- * If library was initialized without @c dInitFlagManualThreadCleanup flag 
- * @c dCleanupODEAllDataForThread must not be called.
- *
- * @see dAllocateODEDataForThread
- * @see dInitODE2
- * @see dCloseODE
- * @ingroup init
- */
-ODE_API void dCleanupODEAllDataForThread();
-
-
-/**
- * @brief Close ODE after it is not needed any more.
- *
- * The function is required to be called when program does not need ODE features any more.
- * The call to @c dCloseODE releases all the resources allocated for library
- * including all the thread local data that might be allocated for all the threads
- * that were using ODE.
- *
- * @c dCloseODE is a paired function for @c dInitODE2 and must only be called
- * after successful library initialization.
- *
- * @note Important!
- * Make sure that all the threads that were using ODE have already terminated 
- * before calling @c dCloseODE. In particular it is not allowed to call
- * @c dCleanupODEAllDataForThread after @c dCloseODE.
- *
- * @see dInitODE2
- * @see dCleanupODEAllDataForThread
- * @ingroup init
- */
-ODE_API void dCloseODE(void);
-
-
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-
-#endif // _ODE_ODEINIT_H_
diff --git a/misc/builddeps/linux64/ode/include/ode/odemath.h b/misc/builddeps/linux64/ode/include/ode/odemath.h
deleted file mode 100644 (file)
index 2e689db..0000000
+++ /dev/null
@@ -1,473 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_ODEMATH_H_
-#define _ODE_ODEMATH_H_
-
-#include <ode/common.h>
-
-/*
- * macro to access elements i,j in an NxM matrix A, independent of the
- * matrix storage convention.
- */
-#define dACCESS33(A,i,j) ((A)[(i)*4+(j)])
-
-/*
- * Macro to test for valid floating point values
- */
-#define dVALIDVEC3(v) (!(dIsNan(v[0]) || dIsNan(v[1]) || dIsNan(v[2])))
-#define dVALIDVEC4(v) (!(dIsNan(v[0]) || dIsNan(v[1]) || dIsNan(v[2]) || dIsNan(v[3])))
-#define dVALIDMAT3(m) (!(dIsNan(m[0]) || dIsNan(m[1]) || dIsNan(m[2]) || dIsNan(m[3]) || dIsNan(m[4]) || dIsNan(m[5]) || dIsNan(m[6]) || dIsNan(m[7]) || dIsNan(m[8]) || dIsNan(m[9]) || dIsNan(m[10]) || dIsNan(m[11])))
-#define dVALIDMAT4(m) (!(dIsNan(m[0]) || dIsNan(m[1]) || dIsNan(m[2]) || dIsNan(m[3]) || dIsNan(m[4]) || dIsNan(m[5]) || dIsNan(m[6]) || dIsNan(m[7]) || dIsNan(m[8]) || dIsNan(m[9]) || dIsNan(m[10]) || dIsNan(m[11]) || dIsNan(m[12]) || dIsNan(m[13]) || dIsNan(m[14]) || dIsNan(m[15]) ))
-
-
-
-// Some vector math
-PURE_INLINE void dAddVectors3(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[0] + b[0];
-  res_1 = a[1] + b[1];
-  res_2 = a[2] + b[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dSubtractVectors3(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[0] - b[0];
-  res_1 = a[1] - b[1];
-  res_2 = a[2] - b[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dAddScaledVectors3(dReal *res, const dReal *a, const dReal *b, dReal a_scale, dReal b_scale)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a_scale * a[0] + b_scale * b[0];
-  res_1 = a_scale * a[1] + b_scale * b[1];
-  res_2 = a_scale * a[2] + b_scale * b[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dScaleVector3(dReal *res, dReal nScale)
-{
-  res[0] *= nScale ;
-  res[1] *= nScale ;
-  res[2] *= nScale ;
-}
-
-PURE_INLINE void dNegateVector3(dReal *res)
-{
-  res[0] = -res[0];
-  res[1] = -res[1];
-  res[2] = -res[2];
-}
-
-PURE_INLINE void dCopyVector3(dReal *res, const dReal *a)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[0];
-  res_1 = a[1];
-  res_2 = a[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dCopyScaledVector3(dReal *res, const dReal *a, dReal nScale)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[0] * nScale;
-  res_1 = a[1] * nScale;
-  res_2 = a[2] * nScale;
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dCopyNegatedVector3(dReal *res, const dReal *a)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = -a[0];
-  res_1 = -a[1];
-  res_2 = -a[2];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dCopyVector4(dReal *res, const dReal *a)
-{
-  dReal res_0, res_1, res_2, res_3;
-  res_0 = a[0];
-  res_1 = a[1];
-  res_2 = a[2];
-  res_3 = a[3];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2; res[3] = res_3;
-}
-
-PURE_INLINE void dCopyMatrix4x4(dReal *res, const dReal *a)
-{
-  dCopyVector4(res + 0, a + 0);
-  dCopyVector4(res + 4, a + 4);
-  dCopyVector4(res + 8, a + 8);
-}
-
-PURE_INLINE void dCopyMatrix4x3(dReal *res, const dReal *a)
-{
-  dCopyVector3(res + 0, a + 0);
-  dCopyVector3(res + 4, a + 4);
-  dCopyVector3(res + 8, a + 8);
-}
-
-PURE_INLINE void dGetMatrixColumn3(dReal *res, const dReal *a, unsigned n)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[n + 0];
-  res_1 = a[n + 4];
-  res_2 = a[n + 8];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE dReal dCalcVectorLength3(const dReal *a)
-{
-  return dSqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);
-}
-
-PURE_INLINE dReal dCalcVectorLengthSquare3(const dReal *a)
-{
-  return (a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);
-}
-
-PURE_INLINE dReal dCalcPointDepth3(const dReal *test_p, const dReal *plane_p, const dReal *plane_n)
-{
-  return (plane_p[0] - test_p[0]) * plane_n[0] + (plane_p[1] - test_p[1]) * plane_n[1] + (plane_p[2] - test_p[2]) * plane_n[2];
-}
-
-
-/*
-* 3-way dot product. _dCalcVectorDot3 means that elements of `a' and `b' are spaced
-* step_a and step_b indexes apart respectively. dCalcVectorDot3() means dDot311.
-*/
-
-PURE_INLINE dReal _dCalcVectorDot3(const dReal *a, const dReal *b, unsigned step_a, unsigned step_b)
-{
-  return a[0] * b[0] + a[step_a] * b[step_b] + a[2 * step_a] * b[2 * step_b];
-}
-
-
-PURE_INLINE dReal dCalcVectorDot3    (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,1,1); }
-PURE_INLINE dReal dCalcVectorDot3_13 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,1,3); }
-PURE_INLINE dReal dCalcVectorDot3_31 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,3,1); }
-PURE_INLINE dReal dCalcVectorDot3_33 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,3,3); }
-PURE_INLINE dReal dCalcVectorDot3_14 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,1,4); }
-PURE_INLINE dReal dCalcVectorDot3_41 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,4,1); }
-PURE_INLINE dReal dCalcVectorDot3_44 (const dReal *a, const dReal *b) { return _dCalcVectorDot3(a,b,4,4); }
-
-
-/*
- * cross product, set res = a x b. _dCalcVectorCross3 means that elements of `res', `a'
- * and `b' are spaced step_res, step_a and step_b indexes apart respectively.
- * dCalcVectorCross3() means dCross3111. 
- */
-
-PURE_INLINE void _dCalcVectorCross3(dReal *res, const dReal *a, const dReal *b, unsigned step_res, unsigned step_a, unsigned step_b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = a[  step_a]*b[2*step_b] - a[2*step_a]*b[  step_b];
-  res_1 = a[2*step_a]*b[       0] - a[       0]*b[2*step_b];
-  res_2 = a[       0]*b[  step_b] - a[  step_a]*b[       0];
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[         0] = res_0;
-  res[  step_res] = res_1;
-  res[2*step_res] = res_2;
-}
-
-PURE_INLINE void dCalcVectorCross3    (dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 1, 1, 1); }
-PURE_INLINE void dCalcVectorCross3_114(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 1, 1, 4); }
-PURE_INLINE void dCalcVectorCross3_141(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 1, 4, 1); }
-PURE_INLINE void dCalcVectorCross3_144(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 1, 4, 4); }
-PURE_INLINE void dCalcVectorCross3_411(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 4, 1, 1); }
-PURE_INLINE void dCalcVectorCross3_414(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 4, 1, 4); }
-PURE_INLINE void dCalcVectorCross3_441(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 4, 4, 1); }
-PURE_INLINE void dCalcVectorCross3_444(dReal *res, const dReal *a, const dReal *b) { _dCalcVectorCross3(res, a, b, 4, 4, 4); }
-
-PURE_INLINE void dAddVectorCross3(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dCalcVectorCross3(tmp, a, b);
-  dAddVectors3(res, res, tmp);
-}
-
-PURE_INLINE void dSubtractVectorCross3(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dCalcVectorCross3(tmp, a, b);
-  dSubtractVectors3(res, res, tmp);
-}
-
-
-/*
- * set a 3x3 submatrix of A to a matrix such that submatrix(A)*b = a x b.
- * A is stored by rows, and has `skip' elements per row. the matrix is
- * assumed to be already zero, so this does not write zero elements!
- * if (plus,minus) is (+,-) then a positive version will be written.
- * if (plus,minus) is (-,+) then a negative version will be written.
- */
-
-PURE_INLINE void dSetCrossMatrixPlus(dReal *res, const dReal *a, unsigned skip)
-{
-  const dReal a_0 = a[0], a_1 = a[1], a_2 = a[2];
-  res[1] = -a_2;
-  res[2] = +a_1;
-  res[skip+0] = +a_2;
-  res[skip+2] = -a_0;
-  res[2*skip+0] = -a_1;
-  res[2*skip+1] = +a_0;
-}
-
-PURE_INLINE void dSetCrossMatrixMinus(dReal *res, const dReal *a, unsigned skip)
-{
-  const dReal a_0 = a[0], a_1 = a[1], a_2 = a[2];
-  res[1] = +a_2;
-  res[2] = -a_1;
-  res[skip+0] = -a_2;
-  res[skip+2] = +a_0;
-  res[2*skip+0] = +a_1;
-  res[2*skip+1] = -a_0;
-}
-
-
-/*
- * compute the distance between two 3D-vectors
- */
-
-PURE_INLINE dReal dCalcPointsDistance3(const dReal *a, const dReal *b)
-{
-  dReal res;
-  dReal tmp[3];
-  dSubtractVectors3(tmp, a, b);
-  res = dCalcVectorLength3(tmp);
-  return res;
-}
-
-/*
- * special case matrix multiplication, with operator selection
- */
-
-PURE_INLINE void dMultiplyHelper0_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = dCalcVectorDot3(a, b);
-  res_1 = dCalcVectorDot3(a + 4, b);
-  res_2 = dCalcVectorDot3(a + 8, b);
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dMultiplyHelper1_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = dCalcVectorDot3_41(a, b);
-  res_1 = dCalcVectorDot3_41(a + 1, b);
-  res_2 = dCalcVectorDot3_41(a + 2, b);
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-PURE_INLINE void dMultiplyHelper0_133(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper1_331(res, b, a);
-}
-
-PURE_INLINE void dMultiplyHelper1_133(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal res_0, res_1, res_2;
-  res_0 = dCalcVectorDot3_44(a, b);
-  res_1 = dCalcVectorDot3_44(a + 1, b);
-  res_2 = dCalcVectorDot3_44(a + 2, b);
-  // Only assign after all the calculations are over to avoid incurring memory aliasing
-  res[0] = res_0; res[1] = res_1; res[2] = res_2;
-}
-
-/* 
-Note: NEVER call any of these functions/macros with the same variable for A and C, 
-it is not equivalent to A*=B.
-*/
-
-PURE_INLINE void dMultiply0_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper0_331(res, a, b);
-}
-
-PURE_INLINE void dMultiply1_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper1_331(res, a, b);
-}
-
-PURE_INLINE void dMultiply0_133(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper0_133(res, a, b);
-}
-
-PURE_INLINE void dMultiply0_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper0_133(res + 0, a + 0, b);
-  dMultiplyHelper0_133(res + 4, a + 4, b);
-  dMultiplyHelper0_133(res + 8, a + 8, b);
-}
-
-PURE_INLINE void dMultiply1_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper1_133(res + 0, b, a + 0);
-  dMultiplyHelper1_133(res + 4, b, a + 1);
-  dMultiplyHelper1_133(res + 8, b, a + 2);
-}
-
-PURE_INLINE void dMultiply2_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dMultiplyHelper0_331(res + 0, b, a + 0);
-  dMultiplyHelper0_331(res + 4, b, a + 4);
-  dMultiplyHelper0_331(res + 8, b, a + 8);
-}
-
-PURE_INLINE void dMultiplyAdd0_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper0_331(tmp, a, b);
-  dAddVectors3(res, res, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd1_331(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper1_331(tmp, a, b);
-  dAddVectors3(res, res, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd0_133(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper0_133(tmp, a, b);
-  dAddVectors3(res, res, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd0_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper0_133(tmp, a + 0, b);
-  dAddVectors3(res+ 0, res + 0, tmp);
-  dMultiplyHelper0_133(tmp, a + 4, b);
-  dAddVectors3(res + 4, res + 4, tmp);
-  dMultiplyHelper0_133(tmp, a + 8, b);
-  dAddVectors3(res + 8, res + 8, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd1_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper1_133(tmp, b, a + 0);
-  dAddVectors3(res + 0, res + 0, tmp);
-  dMultiplyHelper1_133(tmp, b, a + 1);
-  dAddVectors3(res + 4, res + 4, tmp);
-  dMultiplyHelper1_133(tmp, b, a + 2);
-  dAddVectors3(res + 8, res + 8, tmp);
-}
-
-PURE_INLINE void dMultiplyAdd2_333(dReal *res, const dReal *a, const dReal *b)
-{
-  dReal tmp[3];
-  dMultiplyHelper0_331(tmp, b, a + 0);
-  dAddVectors3(res + 0, res + 0, tmp);
-  dMultiplyHelper0_331(tmp, b, a + 4);
-  dAddVectors3(res + 4, res + 4, tmp);
-  dMultiplyHelper0_331(tmp, b, a + 8);
-  dAddVectors3(res + 8, res + 8, tmp);
-}
-
-
-// Include legacy macros here
-#include <ode/odemath_legacy.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * normalize 3x1 and 4x1 vectors (i.e. scale them to unit length)
- */
-
-// For DLL export
-ODE_API int  dSafeNormalize3 (dVector3 a);
-ODE_API int  dSafeNormalize4 (dVector4 a);
-ODE_API void dNormalize3 (dVector3 a); // Potentially asserts on zero vec
-ODE_API void dNormalize4 (dVector4 a); // Potentially asserts on zero vec
-
-#if defined(__ODE__)
-
-int  _dSafeNormalize3 (dVector3 a);
-int  _dSafeNormalize4 (dVector4 a);
-
-PURE_INLINE void _dNormalize3(dVector3 a)
-{
-  int bNormalizationResult = _dSafeNormalize3(a);
-  dIVERIFY(bNormalizationResult);
-}
-
-PURE_INLINE void _dNormalize4(dVector4 a)
-{
-  int bNormalizationResult = _dSafeNormalize4(a);
-  dIVERIFY(bNormalizationResult);
-}
-
-// For internal use
-#define dSafeNormalize3(a) _dSafeNormalize3(a)
-#define dSafeNormalize4(a) _dSafeNormalize4(a)
-#define dNormalize3(a) _dNormalize3(a)
-#define dNormalize4(a) _dNormalize4(a)
-
-#endif // defined(__ODE__)
-
-/*
- * given a unit length "normal" vector n, generate vectors p and q vectors
- * that are an orthonormal basis for the plane space perpendicular to n.
- * i.e. this makes p,q such that n,p,q are all perpendicular to each other.
- * q will equal n x p. if n is not unit length then p will be unit length but
- * q wont be.
- */
-
-ODE_API void dPlaneSpace (const dVector3 n, dVector3 p, dVector3 q);
-/* Makes sure the matrix is a proper rotation */
-ODE_API void dOrthogonalizeR(dMatrix3 m);
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/odemath_legacy.h b/misc/builddeps/linux64/ode/include/ode/odemath_legacy.h
deleted file mode 100644 (file)
index b742638..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_ODEMATH_LEGACY_H_
-#define _ODE_ODEMATH_LEGACY_H_
-
-
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-/*
-*      These macros are not used any more inside of ODE
-*  They are kept for backward compatibility with external code that
-*  might still be using them.
-*/
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-
-/*
-* General purpose vector operations with other vectors or constants.
-*/
-
-#define dOP(a,op,b,c) do { \
-  (a)[0] = ((b)[0]) op ((c)[0]); \
-  (a)[1] = ((b)[1]) op ((c)[1]); \
-  (a)[2] = ((b)[2]) op ((c)[2]); \
-} while (0)
-#define dOPC(a,op,b,c) do { \
-  (a)[0] = ((b)[0]) op (c); \
-  (a)[1] = ((b)[1]) op (c); \
-  (a)[2] = ((b)[2]) op (c); \
-} while (0)
-#define dOPE(a,op,b) do {\
-  (a)[0] op ((b)[0]); \
-  (a)[1] op ((b)[1]); \
-  (a)[2] op ((b)[2]); \
-} while (0)
-#define dOPEC(a,op,c) do { \
-  (a)[0] op (c); \
-  (a)[1] op (c); \
-  (a)[2] op (c); \
-} while (0)
-
-/// Define an equation with operators
-/// For example this function can be used to replace
-/// <PRE>
-/// for (int i=0; i<3; ++i)
-///   a[i] += b[i] + c[i];
-/// </PRE>
-#define dOPE2(a,op1,b,op2,c) do { \
-  (a)[0] op1 ((b)[0]) op2 ((c)[0]); \
-  (a)[1] op1 ((b)[1]) op2 ((c)[1]); \
-  (a)[2] op1 ((b)[2]) op2 ((c)[2]); \
-} while (0)
-
-
-#define dLENGTHSQUARED(a) dCalcVectorLengthSquare3(a)
-#define dLENGTH(a) dCalcVectorLength3(a)
-#define dDISTANCE(a, b) dCalcPointsDistance3(a, b)
-
-
-#define dDOT(a, b) dCalcVectorDot3(a, b)
-#define dDOT13(a, b) dCalcVectorDot3_13(a, b)
-#define dDOT31(a, b) dCalcVectorDot3_31(a, b)
-#define dDOT33(a, b) dCalcVectorDot3_33(a, b)
-#define dDOT14(a, b) dCalcVectorDot3_14(a, b)
-#define dDOT41(a, b) dCalcVectorDot3_41(a, b)
-#define dDOT44(a, b) dCalcVectorDot3_44(a, b)
-
-
-/*
-* cross product, set a = b x c. dCROSSpqr means that elements of `a', `b'
-* and `c' are spaced p, q and r indexes apart respectively.
-* dCROSS() means dCROSS111. `op' is normally `=', but you can set it to
-* +=, -= etc to get other effects.
-*/
-
-#define dCROSS(a,op,b,c) \
-  do { \
-  (a)[0] op ((b)[1]*(c)[2] - (b)[2]*(c)[1]); \
-  (a)[1] op ((b)[2]*(c)[0] - (b)[0]*(c)[2]); \
-  (a)[2] op ((b)[0]*(c)[1] - (b)[1]*(c)[0]); \
-  } while(0)
-#define dCROSSpqr(a,op,b,c,p,q,r) \
-  do { \
-  (a)[  0] op ((b)[  q]*(c)[2*r] - (b)[2*q]*(c)[  r]); \
-  (a)[  p] op ((b)[2*q]*(c)[  0] - (b)[  0]*(c)[2*r]); \
-  (a)[2*p] op ((b)[  0]*(c)[  r] - (b)[  q]*(c)[  0]); \
-  } while(0)
-#define dCROSS114(a,op,b,c) dCROSSpqr(a,op,b,c,1,1,4)
-#define dCROSS141(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,1)
-#define dCROSS144(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,4)
-#define dCROSS411(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,1)
-#define dCROSS414(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,4)
-#define dCROSS441(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,1)
-#define dCROSS444(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,4)
-
-
-/*
-* set a 3x3 submatrix of A to a matrix such that submatrix(A)*b = a x b.
-* A is stored by rows, and has `skip' elements per row. the matrix is
-* assumed to be already zero, so this does not write zero elements!
-* if (plus,minus) is (+,-) then a positive version will be written.
-* if (plus,minus) is (-,+) then a negative version will be written.
-*/
-
-#define dCROSSMAT(A,a,skip,plus,minus) \
-  do { \
-  (A)[1] = minus (a)[2]; \
-  (A)[2] = plus (a)[1]; \
-  (A)[(skip)+0] = plus (a)[2]; \
-  (A)[(skip)+2] = minus (a)[0]; \
-  (A)[2*(skip)+0] = minus (a)[1]; \
-  (A)[2*(skip)+1] = plus (a)[0]; \
-  } while(0)
-
-
-
-
-/* 
-Note: NEVER call any of these functions/macros with the same variable for A and C, 
-it is not equivalent to A*=B.
-*/
-
-#define dMULTIPLY0_331(A, B, C) dMultiply0_331(A, B, C)
-#define dMULTIPLY1_331(A, B, C) dMultiply1_331(A, B, C)
-#define dMULTIPLY0_133(A, B, C) dMultiply0_133(A, B, C)
-#define dMULTIPLY0_333(A, B, C) dMultiply0_333(A, B, C)
-#define dMULTIPLY1_333(A, B, C) dMultiply1_333(A, B, C)
-#define dMULTIPLY2_333(A, B, C) dMultiply2_333(A, B, C)
-
-#define dMULTIPLYADD0_331(A, B, C) dMultiplyAdd0_331(A, B, C)
-#define dMULTIPLYADD1_331(A, B, C) dMultiplyAdd1_331(A, B, C)
-#define dMULTIPLYADD0_133(A, B, C) dMultiplyAdd0_133(A, B, C)
-#define dMULTIPLYADD0_333(A, B, C) dMultiplyAdd0_333(A, B, C)
-#define dMULTIPLYADD1_333(A, B, C) dMultiplyAdd1_333(A, B, C)
-#define dMULTIPLYADD2_333(A, B, C) dMultiplyAdd2_333(A, B, C)
-
-
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-/*
-*      These macros are not used any more inside of ODE
-*  They are kept for backward compatibility with external code that
-*  might still be using them.
-*/
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-
-
-#endif // #ifndef _ODE_ODEMATH_LEGACY_H_
diff --git a/misc/builddeps/linux64/ode/include/ode/rotation.h b/misc/builddeps/linux64/ode/include/ode/rotation.h
deleted file mode 100644 (file)
index a72be27..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_ROTATION_H_
-#define _ODE_ROTATION_H_
-
-#include <ode/common.h>
-#include <ode/compatibility.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-ODE_API void dRSetIdentity (dMatrix3 R);
-
-ODE_API void dRFromAxisAndAngle (dMatrix3 R, dReal ax, dReal ay, dReal az,
-                        dReal angle);
-
-ODE_API void dRFromEulerAngles (dMatrix3 R, dReal phi, dReal theta, dReal psi);
-
-ODE_API void dRFrom2Axes (dMatrix3 R, dReal ax, dReal ay, dReal az,
-                 dReal bx, dReal by, dReal bz);
-
-ODE_API void dRFromZAxis (dMatrix3 R, dReal ax, dReal ay, dReal az);
-
-ODE_API void dQSetIdentity (dQuaternion q);
-
-ODE_API void dQFromAxisAndAngle (dQuaternion q, dReal ax, dReal ay, dReal az,
-                        dReal angle);
-
-/* Quaternion multiplication, analogous to the matrix multiplication routines. */
-/* qa = rotate by qc, then qb */
-ODE_API void dQMultiply0 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
-/* qa = rotate by qc, then by inverse of qb */
-ODE_API void dQMultiply1 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
-/* qa = rotate by inverse of qc, then by qb */
-ODE_API void dQMultiply2 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
-/* qa = rotate by inverse of qc, then by inverse of qb */
-ODE_API void dQMultiply3 (dQuaternion qa, const dQuaternion qb, const dQuaternion qc);
-
-ODE_API void dRfromQ (dMatrix3 R, const dQuaternion q);
-ODE_API void dQfromR (dQuaternion q, const dMatrix3 R);
-ODE_API void dDQfromW (dReal dq[4], const dVector3 w, const dQuaternion q);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/include/ode/timer.h b/misc/builddeps/linux64/ode/include/ode/timer.h
deleted file mode 100644 (file)
index fe1483f..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*************************************************************************
- *                                                                       *
- * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
- * All rights reserved.  Email: russ@q12.org   Web: www.q12.org          *
- *                                                                       *
- * This library is free software; you can redistribute it and/or         *
- * modify it under the terms of EITHER:                                  *
- *   (1) The GNU Lesser General Public License as published by the Free  *
- *       Software Foundation; either version 2.1 of the License, or (at  *
- *       your option) any later version. The text of the GNU Lesser      *
- *       General Public License is included with this library in the     *
- *       file LICENSE.TXT.                                               *
- *   (2) The BSD-style license that is included with this library in     *
- *       the file LICENSE-BSD.TXT.                                       *
- *                                                                       *
- * This library is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details.                     *
- *                                                                       *
- *************************************************************************/
-
-#ifndef _ODE_TIMER_H_
-#define _ODE_TIMER_H_
-
-#include <ode/odeconfig.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* stop watch objects */
-
-typedef struct dStopwatch {
-  double time;                 /* total clock count */
-  unsigned long cc[2];         /* clock count since last `start' */
-} dStopwatch;
-
-ODE_API void dStopwatchReset (dStopwatch *);
-ODE_API void dStopwatchStart (dStopwatch *);
-ODE_API void dStopwatchStop  (dStopwatch *);
-ODE_API double dStopwatchTime (dStopwatch *);  /* returns total time in secs */
-
-
-/* code timers */
-
-ODE_API void dTimerStart (const char *description);    /* pass a static string here */
-ODE_API void dTimerNow (const char *description);      /* pass a static string here */
-ODE_API void dTimerEnd(void);
-
-/* print out a timer report. if `average' is nonzero, print out the average
- * time for each slot (this is only meaningful if the same start-now-end
- * calls are being made repeatedly.
- */
-ODE_API void dTimerReport (FILE *fout, int average);
-
-
-/* resolution */
-
-/* returns the timer ticks per second implied by the timing hardware or API.
- * the actual timer resolution may not be this great.
- */
-ODE_API double dTimerTicksPerSecond(void);
-
-/* returns an estimate of the actual timer resolution, in seconds. this may
- * be greater than 1/ticks_per_second.
- */
-ODE_API double dTimerResolution(void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/linux64/ode/lib/libode.a b/misc/builddeps/linux64/ode/lib/libode.a
deleted file mode 100644 (file)
index 7da69ea..0000000
Binary files a/misc/builddeps/linux64/ode/lib/libode.a and /dev/null differ
diff --git a/misc/builddeps/linux64/ode/lib/libode.la b/misc/builddeps/linux64/ode/lib/libode.la
deleted file mode 100755 (executable)
index 7cabb97..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libode.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.4
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libode.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -L/tmp/ode-0.12.deps/lib/ -lpthread'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libode.
-current=3
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/misc/builddeps/linux64/ode/lib/pkgconfig/ode.pc b/misc/builddeps/linux64/ode/lib/pkgconfig/ode.pc
deleted file mode 100644 (file)
index 7be9daa..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=/usr/local
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: ode
-Description: Open Dynamics Engine
-Version: 0.12
-Libs: -L${libdir} -lode
-Libs.private: -lstdc++ -lm
-Cflags: -I${includedir} -DdDOUBLE
diff --git a/misc/builddeps/osx/empty b/misc/builddeps/osx/empty
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/misc/builddeps/win32/dx/include/_mingw_dxhelper.h b/misc/builddeps/win32/dx/include/_mingw_dxhelper.h
deleted file mode 100644 (file)
index e13408c..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within this package.
- */
-
-#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
-#define NONAMELESSUNION                1
-#endif
-#if defined(NONAMELESSSTRUCT) && \
-   !defined(NONAMELESSUNION)
-#define NONAMELESSUNION                1
-#endif
-#if defined(NONAMELESSUNION)  && \
-   !defined(NONAMELESSSTRUCT)
-#define NONAMELESSSTRUCT       1
-#endif
-
-#ifndef __ANONYMOUS_DEFINED
-#define __ANONYMOUS_DEFINED
-#if defined(__GNUC__) || defined(__GNUG__)
-#define _ANONYMOUS_UNION       __extension__
-#define _ANONYMOUS_STRUCT      __extension__
-#else
-#define _ANONYMOUS_UNION
-#define _ANONYMOUS_STRUCT
-#endif
-#ifndef NONAMELESSUNION
-#define _UNION_NAME(x)
-#define _STRUCT_NAME(x)
-#else /* NONAMELESSUNION */
-#define _UNION_NAME(x)  x
-#define _STRUCT_NAME(x) x
-#endif
-#endif /* __ANONYMOUS_DEFINED */
-
-#ifndef DUMMYUNIONNAME
-# ifdef NONAMELESSUNION
-#  define DUMMYUNIONNAME  u
-#  define DUMMYUNIONNAME1 u1   /* Wine uses this variant */
-#  define DUMMYUNIONNAME2 u2
-#  define DUMMYUNIONNAME3 u3
-#  define DUMMYUNIONNAME4 u4
-#  define DUMMYUNIONNAME5 u5
-#  define DUMMYUNIONNAME6 u6
-#  define DUMMYUNIONNAME7 u7
-#  define DUMMYUNIONNAME8 u8
-#  define DUMMYUNIONNAME9 u9
-# else /* NONAMELESSUNION */
-#  define DUMMYUNIONNAME
-#  define DUMMYUNIONNAME1      /* Wine uses this variant */
-#  define DUMMYUNIONNAME2
-#  define DUMMYUNIONNAME3
-#  define DUMMYUNIONNAME4
-#  define DUMMYUNIONNAME5
-#  define DUMMYUNIONNAME6
-#  define DUMMYUNIONNAME7
-#  define DUMMYUNIONNAME8
-#  define DUMMYUNIONNAME9
-# endif
-#endif /* DUMMYUNIONNAME */
-
-#ifndef DUMMYSTRUCTNAME
-# ifdef NONAMELESSUNION
-#  define DUMMYSTRUCTNAME  s
-#  define DUMMYSTRUCTNAME1 s1  /* Wine uses this variant */
-#  define DUMMYSTRUCTNAME2 s2
-#  define DUMMYSTRUCTNAME3 s3
-#  define DUMMYSTRUCTNAME4 s4
-#  define DUMMYSTRUCTNAME5 s5
-# else
-#  define DUMMYSTRUCTNAME
-#  define DUMMYSTRUCTNAME1     /* Wine uses this variant */
-#  define DUMMYSTRUCTNAME2
-#  define DUMMYSTRUCTNAME3
-#  define DUMMYSTRUCTNAME4
-#  define DUMMYSTRUCTNAME5
-# endif
-#endif /* DUMMYSTRUCTNAME */
-
-/* These are for compatibility with the Wine source tree */
-
-#ifndef WINELIB_NAME_AW
-# ifdef __MINGW_NAME_AW
-#   define WINELIB_NAME_AW  __MINGW_NAME_AW
-# else
-#  ifdef UNICODE
-#   define WINELIB_NAME_AW(func) func##W
-#  else
-#   define WINELIB_NAME_AW(func) func##A
-#  endif
-# endif
-#endif /* WINELIB_NAME_AW */
-
-#ifndef DECL_WINELIB_TYPE_AW
-# ifdef __MINGW_TYPEDEF_AW
-#  define DECL_WINELIB_TYPE_AW  __MINGW_TYPEDEF_AW
-# else
-#  define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type;
-# endif
-#endif /* DECL_WINELIB_TYPE_AW */
-
diff --git a/misc/builddeps/win32/dx/include/d3d.h b/misc/builddeps/win32/dx/include/d3d.h
deleted file mode 100644 (file)
index 409be1b..0000000
+++ /dev/null
@@ -1,1531 +0,0 @@
-/*
- * Copyright (C) the Wine project
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D_H
-#define __WINE_D3D_H
-
-#include <stdlib.h>
-
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#include <d3dtypes.h> /* must precede d3dcaps.h */
-#include <d3dcaps.h>
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID(IID_IDirect3D,              0x3BBA0080,0x2421,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
-DEFINE_GUID(IID_IDirect3D2,             0x6aae1ec1,0x662a,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a);
-DEFINE_GUID(IID_IDirect3D3,             0xbb223240,0xe72b,0x11d0,0xa9,0xb4,0x00,0xaa,0x00,0xc0,0x99,0x3e);
-DEFINE_GUID(IID_IDirect3D7,             0xf5049e77,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-
-DEFINE_GUID(IID_IDirect3DRampDevice,   0xF2086B20,0x259F,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
-DEFINE_GUID(IID_IDirect3DRGBDevice,    0xA4665C60,0x2673,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
-DEFINE_GUID(IID_IDirect3DHALDevice,    0x84E63dE0,0x46AA,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-DEFINE_GUID(IID_IDirect3DMMXDevice,    0x881949a1,0xd6f3,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DRefDevice,     0x50936643,0x13e9,0x11d1,0x89,0xaa,0x00,0xa0,0xc9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DTnLHalDevice,  0xf5049e78,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-DEFINE_GUID(IID_IDirect3DNullDevice,    0x8767df22,0xbacc,0x11d1,0x89,0x69,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-
-DEFINE_GUID(IID_IDirect3DDevice,       0x64108800,0x957d,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DDevice2,      0x93281501,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DDevice3,       0xb0ab3b60,0x33d7,0x11d1,0xa9,0x81,0x00,0xc0,0x4f,0xd7,0xb1,0x74);
-DEFINE_GUID(IID_IDirect3DDevice7,       0xf5049e79,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-
-DEFINE_GUID(IID_IDirect3DTexture,      0x2CDCD9E0,0x25A0,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
-DEFINE_GUID(IID_IDirect3DTexture2,     0x93281502,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-
-DEFINE_GUID(IID_IDirect3DLight,                0x4417C142,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-
-DEFINE_GUID(IID_IDirect3DMaterial,     0x4417C144,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-DEFINE_GUID(IID_IDirect3DMaterial2,    0x93281503,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DMaterial3,     0xca9c46f4,0xd3c5,0x11d1,0xb7,0x5a,0x00,0x60,0x08,0x52,0xb3,0x12);
-
-DEFINE_GUID(IID_IDirect3DExecuteBuffer,        0x4417C145,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-
-DEFINE_GUID(IID_IDirect3DViewport,     0x4417C146,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-DEFINE_GUID(IID_IDirect3DViewport2,    0x93281500,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DViewport3,     0xb0ab3b61,0x33d7,0x11d1,0xa9,0x81,0x00,0xc0,0x4f,0xd7,0xb1,0x74);
-
-DEFINE_GUID(IID_IDirect3DVertexBuffer,  0x7a503555,0x4a83,0x11d1,0xa5,0xdb,0x00,0xa0,0xc9,0x03,0x67,0xf8);
-DEFINE_GUID(IID_IDirect3DVertexBuffer7, 0xf5049e7d,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-
-
-typedef struct IDirect3D *LPDIRECT3D;
-typedef struct IDirect3D2 *LPDIRECT3D2;
-typedef struct IDirect3D3 *LPDIRECT3D3;
-typedef struct IDirect3D7 *LPDIRECT3D7;
-
-typedef struct IDirect3DLight *LPDIRECT3DLIGHT;
-
-typedef struct IDirect3DDevice *LPDIRECT3DDEVICE;
-typedef struct IDirect3DDevice2 *LPDIRECT3DDEVICE2;
-typedef struct IDirect3DDevice3 *LPDIRECT3DDEVICE3;
-typedef struct IDirect3DDevice7 *LPDIRECT3DDEVICE7;
-
-typedef struct IDirect3DViewport *LPDIRECT3DVIEWPORT;
-typedef struct IDirect3DViewport2 *LPDIRECT3DVIEWPORT2;
-typedef struct IDirect3DViewport3 *LPDIRECT3DVIEWPORT3;
-
-typedef struct IDirect3DMaterial *LPDIRECT3DMATERIAL;
-typedef struct IDirect3DMaterial2 *LPDIRECT3DMATERIAL2;
-typedef struct IDirect3DMaterial3 *LPDIRECT3DMATERIAL3;
-
-typedef struct IDirect3DTexture *LPDIRECT3DTEXTURE;
-typedef struct IDirect3DTexture2 *LPDIRECT3DTEXTURE2;
-
-typedef struct IDirect3DExecuteBuffer *LPDIRECT3DEXECUTEBUFFER;
-
-typedef struct IDirect3DVertexBuffer *LPDIRECT3DVERTEXBUFFER;
-typedef struct IDirect3DVertexBuffer7 *LPDIRECT3DVERTEXBUFFER7;
-
-/* ********************************************************************
-   Error Codes
-   ******************************************************************** */
-#define D3D_OK                          DD_OK
-#define D3DERR_BADMAJORVERSION          MAKE_DDHRESULT(700)
-#define D3DERR_BADMINORVERSION          MAKE_DDHRESULT(701)
-#define D3DERR_INVALID_DEVICE           MAKE_DDHRESULT(705)
-#define D3DERR_INITFAILED               MAKE_DDHRESULT(706)
-#define D3DERR_DEVICEAGGREGATED         MAKE_DDHRESULT(707)
-#define D3DERR_EXECUTE_CREATE_FAILED    MAKE_DDHRESULT(710)
-#define D3DERR_EXECUTE_DESTROY_FAILED   MAKE_DDHRESULT(711)
-#define D3DERR_EXECUTE_LOCK_FAILED      MAKE_DDHRESULT(712)
-#define D3DERR_EXECUTE_UNLOCK_FAILED    MAKE_DDHRESULT(713)
-#define D3DERR_EXECUTE_LOCKED           MAKE_DDHRESULT(714)
-#define D3DERR_EXECUTE_NOT_LOCKED       MAKE_DDHRESULT(715)
-#define D3DERR_EXECUTE_FAILED           MAKE_DDHRESULT(716)
-#define D3DERR_EXECUTE_CLIPPED_FAILED   MAKE_DDHRESULT(717)
-#define D3DERR_TEXTURE_NO_SUPPORT       MAKE_DDHRESULT(720)
-#define D3DERR_TEXTURE_CREATE_FAILED    MAKE_DDHRESULT(721)
-#define D3DERR_TEXTURE_DESTROY_FAILED   MAKE_DDHRESULT(722)
-#define D3DERR_TEXTURE_LOCK_FAILED      MAKE_DDHRESULT(723)
-#define D3DERR_TEXTURE_UNLOCK_FAILED    MAKE_DDHRESULT(724)
-#define D3DERR_TEXTURE_LOAD_FAILED      MAKE_DDHRESULT(725)
-#define D3DERR_TEXTURE_SWAP_FAILED      MAKE_DDHRESULT(726)
-#define D3DERR_TEXTURE_LOCKED           MAKE_DDHRESULT(727)
-#define D3DERR_TEXTURE_NOT_LOCKED       MAKE_DDHRESULT(728)
-#define D3DERR_TEXTURE_GETSURF_FAILED   MAKE_DDHRESULT(729)
-#define D3DERR_MATRIX_CREATE_FAILED     MAKE_DDHRESULT(730)
-#define D3DERR_MATRIX_DESTROY_FAILED    MAKE_DDHRESULT(731)
-#define D3DERR_MATRIX_SETDATA_FAILED    MAKE_DDHRESULT(732)
-#define D3DERR_MATRIX_GETDATA_FAILED    MAKE_DDHRESULT(733)
-#define D3DERR_SETVIEWPORTDATA_FAILED   MAKE_DDHRESULT(734)
-#define D3DERR_INVALIDCURRENTVIEWPORT   MAKE_DDHRESULT(735)
-#define D3DERR_INVALIDPRIMITIVETYPE     MAKE_DDHRESULT(736)
-#define D3DERR_INVALIDVERTEXTYPE        MAKE_DDHRESULT(737)
-#define D3DERR_TEXTURE_BADSIZE          MAKE_DDHRESULT(738)
-#define D3DERR_INVALIDRAMPTEXTURE       MAKE_DDHRESULT(739)
-#define D3DERR_MATERIAL_CREATE_FAILED   MAKE_DDHRESULT(740)
-#define D3DERR_MATERIAL_DESTROY_FAILED  MAKE_DDHRESULT(741)
-#define D3DERR_MATERIAL_SETDATA_FAILED  MAKE_DDHRESULT(742)
-#define D3DERR_MATERIAL_GETDATA_FAILED  MAKE_DDHRESULT(743)
-#define D3DERR_INVALIDPALETTE           MAKE_DDHRESULT(744)
-#define D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY MAKE_DDHRESULT(745)
-#define D3DERR_ZBUFF_NEEDS_VIDEOMEMORY  MAKE_DDHRESULT(746)
-#define D3DERR_SURFACENOTINVIDMEM       MAKE_DDHRESULT(747)
-#define D3DERR_LIGHT_SET_FAILED         MAKE_DDHRESULT(750)
-#define D3DERR_LIGHTHASVIEWPORT         MAKE_DDHRESULT(751)
-#define D3DERR_LIGHTNOTINTHISVIEWPORT   MAKE_DDHRESULT(752)
-#define D3DERR_SCENE_IN_SCENE           MAKE_DDHRESULT(760)
-#define D3DERR_SCENE_NOT_IN_SCENE       MAKE_DDHRESULT(761)
-#define D3DERR_SCENE_BEGIN_FAILED       MAKE_DDHRESULT(762)
-#define D3DERR_SCENE_END_FAILED         MAKE_DDHRESULT(763)
-#define D3DERR_INBEGIN                  MAKE_DDHRESULT(770)
-#define D3DERR_NOTINBEGIN               MAKE_DDHRESULT(771)
-#define D3DERR_NOVIEWPORTS              MAKE_DDHRESULT(772)
-#define D3DERR_VIEWPORTDATANOTSET       MAKE_DDHRESULT(773)
-#define D3DERR_VIEWPORTHASNODEVICE      MAKE_DDHRESULT(774)
-#define D3DERR_NOCURRENTVIEWPORT        MAKE_DDHRESULT(775)
-#define D3DERR_INVALIDVERTEXFORMAT     MAKE_DDHRESULT(2048)
-#define D3DERR_COLORKEYATTACHED         MAKE_DDHRESULT(2050)
-#define D3DERR_VERTEXBUFFEROPTIMIZED   MAKE_DDHRESULT(2060)
-#define D3DERR_VBUF_CREATE_FAILED      MAKE_DDHRESULT(2061)
-#define D3DERR_VERTEXBUFFERLOCKED      MAKE_DDHRESULT(2062)
-#define D3DERR_VERTEXBUFFERUNLOCKFAILED        MAKE_DDHRESULT(2063)
-#define D3DERR_ZBUFFER_NOTPRESENT      MAKE_DDHRESULT(2070)
-#define D3DERR_STENCILBUFFER_NOTPRESENT        MAKE_DDHRESULT(2071)
-
-#define D3DERR_WRONGTEXTUREFORMAT              MAKE_DDHRESULT(2072)
-#define D3DERR_UNSUPPORTEDCOLOROPERATION       MAKE_DDHRESULT(2073)
-#define D3DERR_UNSUPPORTEDCOLORARG             MAKE_DDHRESULT(2074)
-#define D3DERR_UNSUPPORTEDALPHAOPERATION       MAKE_DDHRESULT(2075)
-#define D3DERR_UNSUPPORTEDALPHAARG             MAKE_DDHRESULT(2076)
-#define D3DERR_TOOMANYOPERATIONS               MAKE_DDHRESULT(2077)
-#define D3DERR_CONFLICTINGTEXTUREFILTER                MAKE_DDHRESULT(2078)
-#define D3DERR_UNSUPPORTEDFACTORVALUE          MAKE_DDHRESULT(2079)
-#define D3DERR_CONFLICTINGRENDERSTATE          MAKE_DDHRESULT(2081)
-#define D3DERR_UNSUPPORTEDTEXTUREFILTER                MAKE_DDHRESULT(2082)
-#define D3DERR_TOOMANYPRIMITIVES               MAKE_DDHRESULT(2083)
-#define D3DERR_INVALIDMATRIX                   MAKE_DDHRESULT(2084)
-#define D3DERR_TOOMANYVERTICES                 MAKE_DDHRESULT(2085)
-#define D3DERR_CONFLICTINGTEXTUREPALETTE       MAKE_DDHRESULT(2086)
-
-#define D3DERR_INVALIDSTATEBLOCK       MAKE_DDHRESULT(2100)
-#define D3DERR_INBEGINSTATEBLOCK       MAKE_DDHRESULT(2101)
-#define D3DERR_NOTINBEGINSTATEBLOCK    MAKE_DDHRESULT(2102)
-
-/* ********************************************************************
-   Enums
-   ******************************************************************** */
-#define D3DNEXT_NEXT 0x01l
-#define D3DNEXT_HEAD 0x02l
-#define D3DNEXT_TAIL 0x04l
-
-#define D3DDP_WAIT               0x00000001l
-#define D3DDP_OUTOFORDER         0x00000002l
-#define D3DDP_DONOTCLIP          0x00000004l
-#define D3DDP_DONOTUPDATEEXTENTS 0x00000008l
-#define D3DDP_DONOTLIGHT         0x00000010l
-
-/* ********************************************************************
-   Types and structures
-   ******************************************************************** */
-typedef DWORD D3DVIEWPORTHANDLE, *LPD3DVIEWPORTHANDLE;
-
-
-/*****************************************************************************
- * IDirect3D interface
- */
-#undef INTERFACE
-#define INTERFACE IDirect3D
-DECLARE_INTERFACE_(IDirect3D,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D methods ***/
-    STDMETHOD(Initialize)(THIS_ REFIID riid) PURE;
-    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
-    STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL *lplpDirect3DMaterial, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT *lplpD3DViewport, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lplpD3DDevice) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D methods ***/
-#define IDirect3D_Initialize(p,a)       (p)->lpVtbl->Initialize(p,a)
-#define IDirect3D_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevices(p,a,b)
-#define IDirect3D_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
-#define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
-#define IDirect3D_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D_AddRef(p)             (p)->AddRef()
-#define IDirect3D_Release(p)            (p)->Release()
-/*** IDirect3D methods ***/
-#define IDirect3D_Initialize(p,a)       (p)->Initialize(a)
-#define IDirect3D_EnumDevices(p,a,b)    (p)->EnumDevices(a,b)
-#define IDirect3D_CreateLight(p,a,b)    (p)->CreateLight(a,b)
-#define IDirect3D_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
-#define IDirect3D_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
-#define IDirect3D_FindDevice(p,a,b)     (p)->FindDevice(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirect3D2 interface
- */
-#define INTERFACE IDirect3D2
-DECLARE_INTERFACE_(IDirect3D2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D2 methods ***/
-    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
-    STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL2 *lplpDirect3DMaterial2, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT2 *lplpD3DViewport2, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lpD3DFDR) PURE;
-    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid, LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DDEVICE2 *lplpD3DDevice2) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D2 methods ***/
-#define IDirect3D2_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevices(p,a,b)
-#define IDirect3D2_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
-#define IDirect3D2_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3D2_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
-#define IDirect3D2_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
-#define IDirect3D2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D2_AddRef(p)             (p)->AddRef()
-#define IDirect3D2_Release(p)            (p)->Release()
-/*** IDirect3D2 methods ***/
-#define IDirect3D2_EnumDevices(p,a,b)    (p)->EnumDevices(a,b)
-#define IDirect3D2_CreateLight(p,a,b)    (p)->CreateLight(a,b)
-#define IDirect3D2_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
-#define IDirect3D2_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
-#define IDirect3D2_FindDevice(p,a,b)     (p)->FindDevice(a,b)
-#define IDirect3D2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
-#endif
-
-
-/*****************************************************************************
- * IDirect3D3 interface
- */
-#define INTERFACE IDirect3D3
-DECLARE_INTERFACE_(IDirect3D3,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D3 methods ***/
-    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
-    STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL3 *lplpDirect3DMaterial3, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT3 *lplpD3DViewport3, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lpD3DFDR) PURE;
-    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid,LPDIRECTDRAWSURFACE4 lpDDS, LPDIRECT3DDEVICE3 *lplpD3DDevice3,LPUNKNOWN lpUnk) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,LPDIRECT3DVERTEXBUFFER *lplpD3DVertBuf,DWORD dwFlags,LPUNKNOWN lpUnk) PURE;
-    STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID riidDevice,LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,LPVOID lpContext) PURE;
-    STDMETHOD(EvictManagedTextures)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D3_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D3_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D3 methods ***/
-#define IDirect3D3_EnumDevices(p,a,b)            (p)->lpVtbl->EnumDevices(p,a,b)
-#define IDirect3D3_CreateLight(p,a,b)            (p)->lpVtbl->CreateLight(p,a,b)
-#define IDirect3D3_CreateMaterial(p,a,b)         (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3D3_CreateViewport(p,a,b)         (p)->lpVtbl->CreateViewport(p,a,b)
-#define IDirect3D3_FindDevice(p,a,b)             (p)->lpVtbl->FindDevice(p,a,b)
-#define IDirect3D3_CreateDevice(p,a,b,c,d)       (p)->lpVtbl->CreateDevice(p,a,b,c,d)
-#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d)
-#define IDirect3D3_EnumZBufferFormats(p,a,b,c)   (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
-#define IDirect3D3_EvictManagedTextures(p)       (p)->lpVtbl->EvictManagedTextures(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D3_AddRef(p)             (p)->AddRef()
-#define IDirect3D3_Release(p)            (p)->Release()
-/*** IDirect3D3 methods ***/
-#define IDirect3D3_EnumDevices(p,a,b)            (p)->EnumDevices(a,b)
-#define IDirect3D3_CreateLight(p,a,b)            (p)->CreateLight(a,b)
-#define IDirect3D3_CreateMaterial(p,a,b)         (p)->CreateMaterial(a,b)
-#define IDirect3D3_CreateViewport(p,a,b)         (p)->CreateViewport(a,b)
-#define IDirect3D3_FindDevice(p,a,b)             (p)->FindDevice(a,b)
-#define IDirect3D3_CreateDevice(p,a,b,c,d)       (p)->CreateDevice(a,b,c,d)
-#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->CreateVertexBuffer(a,b,c,d)
-#define IDirect3D3_EnumZBufferFormats(p,a,b,c)   (p)->EnumZBufferFormats(a,b,c)
-#define IDirect3D3_EvictManagedTextures(p)       (p)->EvictManagedTextures()
-#endif
-
-/*****************************************************************************
- * IDirect3D7 interface
- */
-#define INTERFACE IDirect3D7
-DECLARE_INTERFACE_(IDirect3D7,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D7 methods ***/
-    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK7 lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
-    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid,LPDIRECTDRAWSURFACE7 lpDDS, LPDIRECT3DDEVICE7 *lplpD3DDevice) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,LPDIRECT3DVERTEXBUFFER7 *lplpD3DVertBuf,DWORD dwFlags) PURE;
-    STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID riidDevice,LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,LPVOID lpContext) PURE;
-    STDMETHOD(EvictManagedTextures)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D7_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D7_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D3 methods ***/
-#define IDirect3D7_EnumDevices(p,a,b)            (p)->lpVtbl->EnumDevices(p,a,b)
-#define IDirect3D7_CreateDevice(p,a,b,c)         (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirect3D7_CreateVertexBuffer(p,a,b,c)   (p)->lpVtbl->CreateVertexBuffer(p,a,b,c)
-#define IDirect3D7_EnumZBufferFormats(p,a,b,c)   (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
-#define IDirect3D7_EvictManagedTextures(p)       (p)->lpVtbl->EvictManagedTextures(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D7_AddRef(p)             (p)->AddRef()
-#define IDirect3D7_Release(p)            (p)->Release()
-/*** IDirect3D3 methods ***/
-#define IDirect3D7_EnumDevices(p,a,b)            (p)->EnumDevices(a,b)
-#define IDirect3D7_CreateDevice(p,a,b,c)         (p)->CreateDevice(a,b,c)
-#define IDirect3D7_CreateVertexBuffer(p,a,b,c)   (p)->CreateVertexBuffer(a,b,c)
-#define IDirect3D7_EnumZBufferFormats(p,a,b,c)   (p)->EnumZBufferFormats(a,b,c)
-#define IDirect3D7_EvictManagedTextures(p)       (p)->EvictManagedTextures()
-#endif
-
-
-/*****************************************************************************
- * IDirect3DLight interface
- */
-#define INTERFACE IDirect3DLight
-DECLARE_INTERFACE_(IDirect3DLight,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DLight methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(SetLight)(THIS_ LPD3DLIGHT lpLight) PURE;
-    STDMETHOD(GetLight)(THIS_ LPD3DLIGHT lpLight) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DLight_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DLight_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DLight_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DLight methods ***/
-#define IDirect3DLight_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DLight_SetLight(p,a)   (p)->lpVtbl->SetLight(p,a)
-#define IDirect3DLight_GetLight(p,a)   (p)->lpVtbl->GetLight(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DLight_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DLight_AddRef(p)             (p)->AddRef()
-#define IDirect3DLight_Release(p)            (p)->Release()
-/*** IDirect3DLight methods ***/
-#define IDirect3DLight_Initialize(p,a) (p)->Initialize(a)
-#define IDirect3DLight_SetLight(p,a)   (p)->SetLight(a)
-#define IDirect3DLight_GetLight(p,a)   (p)->GetLight(a)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DMaterial interface
- */
-#define INTERFACE IDirect3DMaterial
-DECLARE_INTERFACE_(IDirect3DMaterial,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DMaterial methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPD3DMATERIALHANDLE lpHandle) PURE;
-    STDMETHOD(Reserve)(THIS) PURE;
-    STDMETHOD(Unreserve)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DMaterial_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DMaterial_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DMaterial methods ***/
-#define IDirect3DMaterial_Initialize(p,a)  (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DMaterial_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DMaterial_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DMaterial_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
-#define IDirect3DMaterial_Reserve(p)       (p)->lpVtbl->Reserve(p)
-#define IDirect3DMaterial_Unreserve(p)     (p)->lpVtbl->Unreserve(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DMaterial_AddRef(p)             (p)->AddRef()
-#define IDirect3DMaterial_Release(p)            (p)->Release()
-/*** IDirect3DMaterial methods ***/
-#define IDirect3DMaterial_Initialize(p,a)  (p)->Initialize(a)
-#define IDirect3DMaterial_SetMaterial(p,a) (p)->SetMaterial(a)
-#define IDirect3DMaterial_GetMaterial(p,a) (p)->GetMaterial(a)
-#define IDirect3DMaterial_GetHandle(p,a,b) (p)->GetHandle(a,b)
-#define IDirect3DMaterial_Reserve(p)       (p)->Reserve()
-#define IDirect3DMaterial_Unreserve(p)     (p)->Unreserve()
-#endif
-
-
-/*****************************************************************************
- * IDirect3DMaterial2 interface
- */
-#define INTERFACE IDirect3DMaterial2
-DECLARE_INTERFACE_(IDirect3DMaterial2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DMaterial2 methods ***/
-    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE2 lpDirect3DDevice2, LPD3DMATERIALHANDLE lpHandle) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DMaterial2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DMaterial2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DMaterial2 methods ***/
-#define IDirect3DMaterial2_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DMaterial2_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DMaterial2_AddRef(p)             (p)->AddRef()
-#define IDirect3DMaterial2_Release(p)            (p)->Release()
-/*** IDirect3DMaterial2 methods ***/
-#define IDirect3DMaterial2_SetMaterial(p,a) (p)->SetMaterial(a)
-#define IDirect3DMaterial2_GetMaterial(p,a) (p)->GetMaterial(a)
-#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->GetHandle(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DMaterial3 interface
- */
-#define INTERFACE IDirect3DMaterial3
-DECLARE_INTERFACE_(IDirect3DMaterial3,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DMaterial3 methods ***/
-    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE3 lpDirect3DDevice3, LPD3DMATERIALHANDLE lpHandle) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DMaterial3_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DMaterial3_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DMaterial3 methods ***/
-#define IDirect3DMaterial3_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DMaterial3_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DMaterial3_AddRef(p)             (p)->AddRef()
-#define IDirect3DMaterial3_Release(p)            (p)->Release()
-/*** IDirect3DMaterial3 methods ***/
-#define IDirect3DMaterial3_SetMaterial(p,a) (p)->SetMaterial(a)
-#define IDirect3DMaterial3_GetMaterial(p,a) (p)->GetMaterial(a)
-#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->GetHandle(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DTexture interface
- */
-#define INTERFACE IDirect3DTexture
-DECLARE_INTERFACE_(IDirect3DTexture,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DTexture methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPDIRECTDRAWSURFACE lpDDSurface) PURE;
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPD3DTEXTUREHANDLE  lpHandle) PURE;
-    STDMETHOD(PaletteChanged)(THIS_ DWORD dwStart, DWORD dwCount) PURE;
-    STDMETHOD(Load)(THIS_ LPDIRECT3DTEXTURE lpD3DTexture) PURE;
-    STDMETHOD(Unload)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DTexture_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DTexture_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DTexture_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DTexture methods ***/
-#define IDirect3DTexture_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
-#define IDirect3DTexture_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
-#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
-#define IDirect3DTexture_Load(p,a) (p)->lpVtbl->Load(p,a)
-#define IDirect3DTexture_Unload(p) (p)->lpVtbl->Unload(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DTexture_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DTexture_AddRef(p)             (p)->AddRef()
-#define IDirect3DTexture_Release(p)            (p)->Release()
-/*** IDirect3DTexture methods ***/
-#define IDirect3DTexture_Initialize(p,a,b) (p)->Initialize(a,b)
-#define IDirect3DTexture_GetHandle(p,a,b) (p)->GetHandle(a,b)
-#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
-#define IDirect3DTexture_Load(p,a) (p)->Load(a)
-#define IDirect3DTexture_Unload(p) (p)->Unload()
-#endif
-
-
-/*****************************************************************************
- * IDirect3DTexture2 interface
- */
-#define INTERFACE IDirect3DTexture2
-DECLARE_INTERFACE_(IDirect3DTexture2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DTexture2 methods ***/
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE2 lpDirect3DDevice2, LPD3DTEXTUREHANDLE lpHandle) PURE;
-    STDMETHOD(PaletteChanged)(THIS_ DWORD dwStart, DWORD dwCount) PURE;
-    STDMETHOD(Load)(THIS_ LPDIRECT3DTEXTURE2 lpD3DTexture2) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DTexture2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DTexture2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DTexture2 methods ***/
-#define IDirect3DTexture2_GetHandle(p,a,b)      (p)->lpVtbl->GetHandle(p,a,b)
-#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
-#define IDirect3DTexture2_Load(p,a)             (p)->lpVtbl->Load(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DTexture2_AddRef(p)             (p)->AddRef()
-#define IDirect3DTexture2_Release(p)            (p)->Release()
-/*** IDirect3DTexture2 methods ***/
-#define IDirect3DTexture2_GetHandle(p,a,b)      (p)->GetHandle(a,b)
-#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
-#define IDirect3DTexture2_Load(p,a)             (p)->Load(a)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DViewport interface
- */
-#define INTERFACE IDirect3DViewport
-DECLARE_INTERFACE_(IDirect3DViewport,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DViewport methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(TransformVertices)(THIS_ DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffScreen) PURE;
-    STDMETHOD(LightElements)(THIS_ DWORD dwElementCount, LPD3DLIGHTDATA lpData) PURE;
-    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
-    STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE lphMat, LPBOOL lpValid) PURE;
-    STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface) PURE;
-    STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *lplpDDSurface, LPBOOL lpValid) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight, LPDIRECT3DLIGHT *lplpDirect3DLight, DWORD dwFlags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DViewport_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DViewport_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DViewport_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DViewport methods ***/
-#define IDirect3DViewport_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DViewport_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DViewport_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
-#define IDirect3DViewport_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
-#define IDirect3DViewport_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
-#define IDirect3DViewport_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
-#define IDirect3DViewport_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
-#define IDirect3DViewport_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
-#define IDirect3DViewport_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
-#define IDirect3DViewport_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DViewport_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DViewport_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DViewport_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DViewport_AddRef(p)             (p)->AddRef()
-#define IDirect3DViewport_Release(p)            (p)->Release()
-/*** IDirect3DViewport methods ***/
-#define IDirect3DViewport_Initialize(p,a)              (p)->Initialize(a)
-#define IDirect3DViewport_GetViewport(p,a)             (p)->GetViewport(a)
-#define IDirect3DViewport_SetViewport(p,a)             (p)->SetViewport(a)
-#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
-#define IDirect3DViewport_LightElements(p,a,b)         (p)->LightElements(a,b)
-#define IDirect3DViewport_SetBackground(p,a)           (p)->SetBackground(a)
-#define IDirect3DViewport_GetBackground(p,a,b)         (p)->GetBackground(a,b)
-#define IDirect3DViewport_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
-#define IDirect3DViewport_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
-#define IDirect3DViewport_Clear(p,a,b,c)               (p)->Clear(a,b,c)
-#define IDirect3DViewport_AddLight(p,a)                (p)->AddLight(a)
-#define IDirect3DViewport_DeleteLight(p,a)             (p)->DeleteLight(a)
-#define IDirect3DViewport_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DViewport2 interface
- */
-#define INTERFACE IDirect3DViewport2
-DECLARE_INTERFACE_(IDirect3DViewport2,IDirect3DViewport)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DViewport methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(TransformVertices)(THIS_ DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffScreen) PURE;
-    STDMETHOD(LightElements)(THIS_ DWORD dwElementCount, LPD3DLIGHTDATA lpData) PURE;
-    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
-    STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE lphMat, LPBOOL lpValid) PURE;
-    STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface) PURE;
-    STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *lplpDDSurface, LPBOOL lpValid) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight, LPDIRECT3DLIGHT *lplpDirect3DLight, DWORD dwFlags) PURE;
-    /*** IDirect3DViewport2 methods ***/
-    STDMETHOD(GetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
-    STDMETHOD(SetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DViewport2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DViewport2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3Viewport methods ***/
-#define IDirect3DViewport2_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DViewport2_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DViewport2_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
-#define IDirect3DViewport2_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
-#define IDirect3DViewport2_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
-#define IDirect3DViewport2_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
-#define IDirect3DViewport2_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
-#define IDirect3DViewport2_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
-#define IDirect3DViewport2_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
-#define IDirect3DViewport2_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DViewport2_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DViewport2_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
-/*** IDirect3DViewport2 methods ***/
-#define IDirect3DViewport2_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
-#define IDirect3DViewport2_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DViewport2_AddRef(p)             (p)->AddRef()
-#define IDirect3DViewport2_Release(p)            (p)->Release()
-/*** IDirect3Viewport methods ***/
-#define IDirect3DViewport2_Initialize(p,a)              (p)->Initialize(a)
-#define IDirect3DViewport2_GetViewport(p,a)             (p)->GetViewport(a)
-#define IDirect3DViewport2_SetViewport(p,a)             (p)->SetViewport(a)
-#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
-#define IDirect3DViewport2_LightElements(p,a,b)         (p)->LightElements(a,b)
-#define IDirect3DViewport2_SetBackground(p,a)           (p)->SetBackground(a)
-#define IDirect3DViewport2_GetBackground(p,a,b)         (p)->GetBackground(a,b)
-#define IDirect3DViewport2_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
-#define IDirect3DViewport2_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
-#define IDirect3DViewport2_Clear(p,a,b,c)               (p)->Clear(a,b,c)
-#define IDirect3DViewport2_AddLight(p,a)                (p)->AddLight(a)
-#define IDirect3DViewport2_DeleteLight(p,a)             (p)->DeleteLight(a)
-#define IDirect3DViewport2_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
-/*** IDirect3DViewport2 methods ***/
-#define IDirect3DViewport2_GetViewport2(p,a) (p)->GetViewport2(a)
-#define IDirect3DViewport2_SetViewport2(p,a) (p)->SetViewport2(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DViewport3 interface
- */
-#define INTERFACE IDirect3DViewport3
-DECLARE_INTERFACE_(IDirect3DViewport3,IDirect3DViewport2)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DViewport methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(TransformVertices)(THIS_ DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffScreen) PURE;
-    STDMETHOD(LightElements)(THIS_ DWORD dwElementCount, LPD3DLIGHTDATA lpData) PURE;
-    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
-    STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE lphMat, LPBOOL lpValid) PURE;
-    STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface) PURE;
-    STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *lplpDDSurface, LPBOOL lpValid) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight, LPDIRECT3DLIGHT *lplpDirect3DLight, DWORD dwFlags) PURE;
-    /*** IDirect3DViewport2 methods ***/
-    STDMETHOD(GetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
-    STDMETHOD(SetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
-    /*** IDirect3DViewport3 methods ***/
-    STDMETHOD(SetBackgroundDepth2)(THIS_ LPDIRECTDRAWSURFACE4 lpDDS) PURE;
-    STDMETHOD(GetBackgroundDepth2)(THIS_ LPDIRECTDRAWSURFACE4 *lplpDDS,LPBOOL lpValid) PURE;
-    STDMETHOD(Clear2)(THIS_ DWORD dwCount,LPD3DRECT lpRects,DWORD dwFlags,DWORD dwColor,D3DVALUE dvZ,DWORD dwStencil) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DViewport3_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DViewport3_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3Viewport methods ***/
-#define IDirect3DViewport3_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DViewport3_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DViewport3_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
-#define IDirect3DViewport3_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
-#define IDirect3DViewport3_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
-#define IDirect3DViewport3_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
-#define IDirect3DViewport3_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
-#define IDirect3DViewport3_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
-#define IDirect3DViewport3_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
-#define IDirect3DViewport3_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DViewport3_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DViewport3_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
-/*** IDirect3DViewport2 methods ***/
-#define IDirect3DViewport3_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
-#define IDirect3DViewport3_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
-/*** IDirect3DViewport3 methods ***/
-#define IDirect3DViewport3_SetBackgroundDepth2(p,a)   (p)->lpVtbl->SetBackgroundDepth2(p,a)
-#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->lpVtbl->GetBackgroundDepth2(p,a,b)
-#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f)      (p)->lpVtbl->Clear2(p,a,b,c,d,e,f)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DViewport3_AddRef(p)             (p)->AddRef()
-#define IDirect3DViewport3_Release(p)            (p)->Release()
-/*** IDirect3Viewport methods ***/
-#define IDirect3DViewport3_Initialize(p,a)              (p)->Initialize(a)
-#define IDirect3DViewport3_GetViewport(p,a)             (p)->GetViewport(a)
-#define IDirect3DViewport3_SetViewport(p,a)             (p)->SetViewport(a)
-#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
-#define IDirect3DViewport3_LightElements(p,a,b)         (p)->LightElements(a,b)
-#define IDirect3DViewport3_SetBackground(p,a)           (p)->SetBackground(a)
-#define IDirect3DViewport3_GetBackground(p,a,b)         (p)->GetBackground(a,b)
-#define IDirect3DViewport3_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
-#define IDirect3DViewport3_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
-#define IDirect3DViewport3_Clear(p,a,b,c)               (p)->Clear(a,b,c)
-#define IDirect3DViewport3_AddLight(p,a)                (p)->AddLight(a)
-#define IDirect3DViewport3_DeleteLight(p,a)             (p)->DeleteLight(a)
-#define IDirect3DViewport3_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
-/*** IDirect3DViewport2 methods ***/
-#define IDirect3DViewport3_GetViewport2(p,a) (p)->GetViewport2(a)
-#define IDirect3DViewport3_SetViewport2(p,a) (p)->SetViewport2(a)
-/*** IDirect3DViewport3 methods ***/
-#define IDirect3DViewport3_SetBackgroundDepth2(p,a)   (p)->SetBackgroundDepth2(a)
-#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->GetBackgroundDepth2(a,b)
-#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f)      (p)->Clear2(a,b,c,d,e,f)
-#endif
-
-
-
-/*****************************************************************************
- * IDirect3DExecuteBuffer interface
- */
-#define INTERFACE IDirect3DExecuteBuffer
-DECLARE_INTERFACE_(IDirect3DExecuteBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DExecuteBuffer methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPD3DEXECUTEBUFFERDESC lpDesc) PURE;
-    STDMETHOD(Lock)(THIS_ LPD3DEXECUTEBUFFERDESC lpDesc) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(SetExecuteData)(THIS_ LPD3DEXECUTEDATA lpData) PURE;
-    STDMETHOD(GetExecuteData)(THIS_ LPD3DEXECUTEDATA lpData) PURE;
-    STDMETHOD(Validate)(THIS_ LPDWORD lpdwOffset, LPD3DVALIDATECALLBACK lpFunc, LPVOID lpUserArg, DWORD dwReserved) PURE;
-    STDMETHOD(Optimize)(THIS_ DWORD dwDummy) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DExecuteBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DExecuteBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DExecuteBuffer methods ***/
-#define IDirect3DExecuteBuffer_Initialize(p,a,b)   (p)->lpVtbl->Initialize(p,a,b)
-#define IDirect3DExecuteBuffer_Lock(p,a)           (p)->lpVtbl->Lock(p,a)
-#define IDirect3DExecuteBuffer_Unlock(p)           (p)->lpVtbl->Unlock(p)
-#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->lpVtbl->SetExecuteData(p,a)
-#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->lpVtbl->GetExecuteData(p,a)
-#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->lpVtbl->Validate(p,a,b,c,d)
-#define IDirect3DExecuteBuffer_Optimize(p,a)       (p)->lpVtbl->Optimize(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DExecuteBuffer_AddRef(p)             (p)->AddRef()
-#define IDirect3DExecuteBuffer_Release(p)            (p)->Release()
-/*** IDirect3DExecuteBuffer methods ***/
-#define IDirect3DExecuteBuffer_Initialize(p,a,b)   (p)->Initialize(a,b)
-#define IDirect3DExecuteBuffer_Lock(p,a)           (p)->Lock(a)
-#define IDirect3DExecuteBuffer_Unlock(p)           (p)->Unlock()
-#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->SetExecuteData(a)
-#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->GetExecuteData(a)
-#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->Validate(a,b,c,d)
-#define IDirect3DExecuteBuffer_Optimize(p,a)       (p)->Optimize(a)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DDevice interface
- */
-#define INTERFACE IDirect3DDevice
-DECLARE_INTERFACE_(IDirect3DDevice,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D, LPGUID lpGUID, LPD3DDEVICEDESC lpD3DDVDesc) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DHELDevDesc) PURE;
-    STDMETHOD(SwapTextureHandles)(THIS_ LPDIRECT3DTEXTURE lpD3Dtex1, LPDIRECT3DTEXTURE lpD3DTex2) PURE;
-    STDMETHOD(CreateExecuteBuffer)(THIS_ LPD3DEXECUTEBUFFERDESC lpDesc, LPDIRECT3DEXECUTEBUFFER *lplpDirect3DExecuteBuffer, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE;
-    STDMETHOD(Execute)(THIS_ LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer, LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags) PURE;
-    STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport) PURE;
-    STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport) PURE;
-    STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport, LPDIRECT3DVIEWPORT *lplpDirect3DViewport, DWORD dwFlags) PURE;
-    STDMETHOD(Pick)(THIS_ LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer, LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags, LPD3DRECT lpRect) PURE;
-    STDMETHOD(GetPickRecords)(THIS_ LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec) PURE;
-    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc, LPVOID lpArg) PURE;
-    STDMETHOD(CreateMatrix)(THIS_ LPD3DMATRIXHANDLE lpD3DMatHandle) PURE;
-    STDMETHOD(SetMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(DeleteMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D *lplpDirect3D) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice methods ***/
-#define IDirect3DDevice_Initialize(p,a,b,c)          (p)->lpVtbl->Initialize(p,a,b,c)
-#define IDirect3DDevice_GetCaps(p,a,b)               (p)->lpVtbl->GetCaps(p,a,b)
-#define IDirect3DDevice_SwapTextureHandles(p,a,b)    (p)->lpVtbl->SwapTextureHandles(p,a,b)
-#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->lpVtbl->CreateExecuteBuffer(p,a,b,c)
-#define IDirect3DDevice_GetStats(p,a)                (p)->lpVtbl->GetStats(p,a)
-#define IDirect3DDevice_Execute(p,a,b,c)             (p)->lpVtbl->Execute(p,a,b,c)
-#define IDirect3DDevice_AddViewport(p,a)             (p)->lpVtbl->AddViewport(p,a)
-#define IDirect3DDevice_DeleteViewport(p,a)          (p)->lpVtbl->DeleteViewport(p,a)
-#define IDirect3DDevice_NextViewport(p,a,b,c)        (p)->lpVtbl->NextViewport(p,a,b,c)
-#define IDirect3DDevice_Pick(p,a,b,c,d)              (p)->lpVtbl->Pick(p,a,b,c,d)
-#define IDirect3DDevice_GetPickRecords(p,a,b)        (p)->lpVtbl->GetPickRecords(p,a,b)
-#define IDirect3DDevice_EnumTextureFormats(p,a,b)    (p)->lpVtbl->EnumTextureFormats(p,a,b)
-#define IDirect3DDevice_CreateMatrix(p,a)            (p)->lpVtbl->CreateMatrix(p,a)
-#define IDirect3DDevice_SetMatrix(p,a,b)             (p)->lpVtbl->SetMatrix(p,a,b)
-#define IDirect3DDevice_GetMatrix(p,a,b)             (p)->lpVtbl->GetMatrix(p,a,b)
-#define IDirect3DDevice_DeleteMatrix(p,a)            (p)->lpVtbl->DeleteMatrix(p,a)
-#define IDirect3DDevice_BeginScene(p)                (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice_EndScene(p)                  (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice_GetDirect3D(p,a)             (p)->lpVtbl->GetDirect3D(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice_Release(p)            (p)->Release()
-/*** IDirect3DDevice methods ***/
-#define IDirect3DDevice_Initialize(p,a,b,c)          (p)->Initialize(a,b,c)
-#define IDirect3DDevice_GetCaps(p,a,b)               (p)->GetCaps(a,b)
-#define IDirect3DDevice_SwapTextureHandles(p,a,b)    (p)->SwapTextureHandles(a,b)
-#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->CreateExecuteBuffer(a,b,c)
-#define IDirect3DDevice_GetStats(p,a)                (p)->GetStats(a)
-#define IDirect3DDevice_Execute(p,a,b,c)             (p)->Execute(a,b,c)
-#define IDirect3DDevice_AddViewport(p,a)             (p)->AddViewport(a)
-#define IDirect3DDevice_DeleteViewport(p,a)          (p)->DeleteViewport(a)
-#define IDirect3DDevice_NextViewport(p,a,b,c)        (p)->NextViewport(a,b,c)
-#define IDirect3DDevice_Pick(p,a,b,c,d)              (p)->Pick(a,b,c,d)
-#define IDirect3DDevice_GetPickRecords(p,a,b)        (p)->GetPickRecords(a,b)
-#define IDirect3DDevice_EnumTextureFormats(p,a,b)    (p)->EnumTextureFormats(a,b)
-#define IDirect3DDevice_CreateMatrix(p,a)            (p)->CreateMatrix(a)
-#define IDirect3DDevice_SetMatrix(p,a,b)             (p)->SetMatrix(a,b)
-#define IDirect3DDevice_GetMatrix(p,a,b)             (p)->GetMatrix(a,b)
-#define IDirect3DDevice_DeleteMatrix(p,a)            (p)->DeleteMatrix(a)
-#define IDirect3DDevice_BeginScene(p)                (p)->BeginScene()
-#define IDirect3DDevice_EndScene(p)                  (p)->EndScene()
-#define IDirect3DDevice_GetDirect3D(p,a)             (p)->GetDirect3D(a)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DDevice2 interface
- */
-#define INTERFACE IDirect3DDevice2
-DECLARE_INTERFACE_(IDirect3DDevice2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice2 methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DHELDevDesc) PURE;
-    STDMETHOD(SwapTextureHandles)(THIS_ LPDIRECT3DTEXTURE2 lpD3DTex1, LPDIRECT3DTEXTURE2 lpD3DTex2) PURE;
-    STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE;
-    STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2) PURE;
-    STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2) PURE;
-    STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2, LPDIRECT3DVIEWPORT2 *lplpDirect3DViewport2, DWORD dwFlags) PURE;
-    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc, LPVOID lpArg) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D2 *lplpDirect3D2) PURE;
-    /*** DrawPrimitive API ***/
-    STDMETHOD(SetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2) PURE;
-    STDMETHOD(GetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT2 *lplpDirect3DViewport2) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE lpNewRenderTarget, DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE *lplpRenderTarget) PURE;
-    STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE d3dpt,D3DVERTEXTYPE dwVertexTypeDesc,DWORD dwFlags) PURE;
-    STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwNumVertices, DWORD dwFlags) PURE;
-    STDMETHOD(Vertex)(THIS_ LPVOID lpVertexType) PURE;
-    STDMETHOD(Index)(THIS_ WORD wVertexIndex) PURE;
-    STDMETHOD(End)(THIS_ DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
-    STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, LPDWORD lpdwLightState) PURE;
-    STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, DWORD dwLightState) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice2 methods ***/
-#define IDirect3DDevice2_GetCaps(p,a,b)                        (p)->lpVtbl->GetCaps(p,a,b)
-#define IDirect3DDevice2_SwapTextureHandles(p,a,b)             (p)->lpVtbl->SwapTextureHandles(p,a,b)
-#define IDirect3DDevice2_GetStats(p,a)                         (p)->lpVtbl->GetStats(p,a)
-#define IDirect3DDevice2_AddViewport(p,a)                      (p)->lpVtbl->AddViewport(p,a)
-#define IDirect3DDevice2_DeleteViewport(p,a)                   (p)->lpVtbl->DeleteViewport(p,a)
-#define IDirect3DDevice2_NextViewport(p,a,b,c)                 (p)->lpVtbl->NextViewport(p,a,b,c)
-#define IDirect3DDevice2_EnumTextureFormats(p,a,b)             (p)->lpVtbl->EnumTextureFormats(p,a,b)
-#define IDirect3DDevice2_BeginScene(p)                         (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice2_EndScene(p)                           (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice2_GetDirect3D(p,a)                      (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice2_SetCurrentViewport(p,a)               (p)->lpVtbl->SetCurrentViewport(p,a)
-#define IDirect3DDevice2_GetCurrentViewport(p,a)               (p)->lpVtbl->GetCurrentViewport(p,a)
-#define IDirect3DDevice2_SetRenderTarget(p,a,b)                (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice2_GetRenderTarget(p,a)                  (p)->lpVtbl->GetRenderTarget(p,a)
-#define IDirect3DDevice2_Begin(p,a,b,c)                        (p)->lpVtbl->Begin(p,a,b,c)
-#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e)             (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
-#define IDirect3DDevice2_Vertex(p,a)                           (p)->lpVtbl->Vertex(p,a)
-#define IDirect3DDevice2_Index(p,a)                            (p)->lpVtbl->Index(p,a)
-#define IDirect3DDevice2_End(p,a)                              (p)->lpVtbl->End(p,a)
-#define IDirect3DDevice2_GetRenderState(p,a,b)                 (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice2_SetRenderState(p,a,b)                 (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice2_GetLightState(p,a,b)                  (p)->lpVtbl->GetLightState(p,a,b)
-#define IDirect3DDevice2_SetLightState(p,a,b)                  (p)->lpVtbl->SetLightState(p,a,b)
-#define IDirect3DDevice2_SetTransform(p,a,b)                   (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice2_GetTransform(p,a,b)                   (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice2_MultiplyTransform(p,a,b)              (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
-#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice2_SetClipStatus(p,a)                    (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice2_GetClipStatus(p,a)                    (p)->lpVtbl->GetClipStatus(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice2_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice2_Release(p)            (p)->Release()
-/*** IDirect3DDevice2 methods ***/
-#define IDirect3DDevice2_GetCaps(p,a,b)                        (p)->GetCaps(a,b)
-#define IDirect3DDevice2_SwapTextureHandles(p,a,b)             (p)->SwapTextureHandles(a,b)
-#define IDirect3DDevice2_GetStats(p,a)                         (p)->GetStats(a)
-#define IDirect3DDevice2_AddViewport(p,a)                      (p)->AddViewport(a)
-#define IDirect3DDevice2_DeleteViewport(p,a)                   (p)->DeleteViewport(a)
-#define IDirect3DDevice2_NextViewport(p,a,b,c)                 (p)->NextViewport(a,b,c)
-#define IDirect3DDevice2_EnumTextureFormats(p,a,b)             (p)->EnumTextureFormats(a,b)
-#define IDirect3DDevice2_BeginScene(p)                         (p)->BeginScene()
-#define IDirect3DDevice2_EndScene(p)                           (p)->EndScene()
-#define IDirect3DDevice2_GetDirect3D(p,a)                      (p)->GetDirect3D(a)
-#define IDirect3DDevice2_SetCurrentViewport(p,a)               (p)->SetCurrentViewport(a)
-#define IDirect3DDevice2_GetCurrentViewport(p,a)               (p)->GetCurrentViewport(a)
-#define IDirect3DDevice2_SetRenderTarget(p,a,b)                (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice2_GetRenderTarget(p,a)                  (p)->GetRenderTarget(a)
-#define IDirect3DDevice2_Begin(p,a,b,c)                        (p)->Begin(a,b,c)
-#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e)             (p)->BeginIndexed(a,b,c,d,e)
-#define IDirect3DDevice2_Vertex(p,a)                           (p)->Vertex(a)
-#define IDirect3DDevice2_Index(p,a)                            (p)->Index(a)
-#define IDirect3DDevice2_End(p,a)                              (p)->End(a)
-#define IDirect3DDevice2_GetRenderState(p,a,b)                 (p)->GetRenderState(a,b)
-#define IDirect3DDevice2_SetRenderState(p,a,b)                 (p)->SetRenderState(a,b)
-#define IDirect3DDevice2_GetLightState(p,a,b)                  (p)->GetLightState(a,b)
-#define IDirect3DDevice2_SetLightState(p,a,b)                  (p)->SetLightState(a,b)
-#define IDirect3DDevice2_SetTransform(p,a,b)                   (p)->SetTransform(a,b)
-#define IDirect3DDevice2_GetTransform(p,a,b)                   (p)->GetTransform(a,b)
-#define IDirect3DDevice2_MultiplyTransform(p,a,b)              (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e)            (p)->DrawPrimitive(a,b,c,d,e)
-#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
-#define IDirect3DDevice2_SetClipStatus(p,a)                    (p)->SetClipStatus(a)
-#define IDirect3DDevice2_GetClipStatus(p,a)                    (p)->GetClipStatus(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DDevice3 interface
- */
-#define INTERFACE IDirect3DDevice3
-DECLARE_INTERFACE_(IDirect3DDevice3,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice3 methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DHELDevDesc) PURE;
-    STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE;
-    STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3) PURE;
-    STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3) PURE;
-    STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3, LPDIRECT3DVIEWPORT3 *lplpDirect3DViewport3, DWORD dwFlags) PURE;
-    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc, LPVOID lpArg) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D3 *lplpDirect3D3) PURE;
-    /*** DrawPrimitive API ***/
-    STDMETHOD(SetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3) PURE;
-    STDMETHOD(GetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT3 *lplpDirect3DViewport3) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE4 lpNewRenderTarget, DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE4 *lplpRenderTarget) PURE;
-    STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexTypeDesc, DWORD dwFlags) PURE;
-    STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwNumVertices, DWORD dwFlags) PURE;
-    STDMETHOD(Vertex)(THIS_ LPVOID lpVertexType) PURE;
-    STDMETHOD(Index)(THIS_ WORD wVertexIndex) PURE;
-    STDMETHOD(End)(THIS_ DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
-    STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, LPDWORD lpdwLightState) PURE;
-    STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, DWORD dwLightState) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,LPWORD lpIndex,DWORD dwIndexCount,DWORD dwFlags) PURE;
-    STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,DWORD dwStartVertex,DWORD dwNumVertices,DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,LPWORD lpwIndices,DWORD dwIndexCount,DWORD dwFlags) PURE;
-    STDMETHOD(ComputeSphereVisibility)(THIS_ LPD3DVECTOR lpCenters,LPD3DVALUE lpRadii,DWORD dwNumSpheres,DWORD dwFlags,LPDWORD lpdwReturnValues) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD dwStage,LPDIRECT3DTEXTURE2 *lplpTexture2) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD dwStage,LPDIRECT3DTEXTURE2 lpTexture2) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,LPDWORD lpdwState) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,DWORD dwState) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ LPDWORD lpdwPasses) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice3_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice3_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice3 methods ***/
-#define IDirect3DDevice3_GetCaps(p,a,b)                        (p)->lpVtbl->GetCaps(p,a,b)
-#define IDirect3DDevice3_GetStats(p,a)                         (p)->lpVtbl->GetStats(p,a)
-#define IDirect3DDevice3_AddViewport(p,a)                      (p)->lpVtbl->AddViewport(p,a)
-#define IDirect3DDevice3_DeleteViewport(p,a)                   (p)->lpVtbl->DeleteViewport(p,a)
-#define IDirect3DDevice3_NextViewport(p,a,b,c)                 (p)->lpVtbl->NextViewport(p,a,b,c)
-#define IDirect3DDevice3_EnumTextureFormats(p,a,b)             (p)->lpVtbl->EnumTextureFormats(p,a,b)
-#define IDirect3DDevice3_BeginScene(p)                         (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice3_EndScene(p)                           (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice3_GetDirect3D(p,a)                      (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice3_SetCurrentViewport(p,a)               (p)->lpVtbl->SetCurrentViewport(p,a)
-#define IDirect3DDevice3_GetCurrentViewport(p,a)               (p)->lpVtbl->GetCurrentViewport(p,a)
-#define IDirect3DDevice3_SetRenderTarget(p,a,b)                (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice3_GetRenderTarget(p,a)                  (p)->lpVtbl->GetRenderTarget(p,a)
-#define IDirect3DDevice3_Begin(p,a,b,c)                        (p)->lpVtbl->Begin(p,a,b,c)
-#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e)             (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
-#define IDirect3DDevice3_Vertex(p,a)                           (p)->lpVtbl->Vertex(p,a)
-#define IDirect3DDevice3_Index(p,a)                            (p)->lpVtbl->Index(p,a)
-#define IDirect3DDevice3_End(p,a)                              (p)->lpVtbl->End(p,a)
-#define IDirect3DDevice3_GetRenderState(p,a,b)                 (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice3_SetRenderState(p,a,b)                 (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice3_GetLightState(p,a,b)                  (p)->lpVtbl->GetLightState(p,a,b)
-#define IDirect3DDevice3_SetLightState(p,a,b)                  (p)->lpVtbl->SetLightState(p,a,b)
-#define IDirect3DDevice3_SetTransform(p,a,b)                   (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice3_GetTransform(p,a,b)                   (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice3_MultiplyTransform(p,a,b)              (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice3_SetClipStatus(p,a)                    (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice3_GetClipStatus(p,a)                    (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e)     (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e)          (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e)   (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e)
-#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e)  (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
-#define IDirect3DDevice3_GetTexture(p,a,b)                     (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice3_SetTexture(p,a,b)                     (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice3_GetTextureStageState(p,a,b,c)         (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice3_SetTextureStageState(p,a,b,c)         (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice3_ValidateDevice(p,a)                   (p)->lpVtbl->ValidateDevice(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice3_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice3_Release(p)            (p)->Release()
-/*** IDirect3DDevice3 methods ***/
-#define IDirect3DDevice3_GetCaps(p,a,b)                        (p)->GetCaps(a,b)
-#define IDirect3DDevice3_GetStats(p,a)                         (p)->GetStats(a)
-#define IDirect3DDevice3_AddViewport(p,a)                      (p)->AddViewport(a)
-#define IDirect3DDevice3_DeleteViewport(p,a)                   (p)->DeleteViewport(a)
-#define IDirect3DDevice3_NextViewport(p,a,b,c)                 (p)->NextViewport(a,b,c)
-#define IDirect3DDevice3_EnumTextureFormats(p,a,b)             (p)->EnumTextureFormats(a,b)
-#define IDirect3DDevice3_BeginScene(p)                         (p)->BeginScene()
-#define IDirect3DDevice3_EndScene(p)                           (p)->EndScene()
-#define IDirect3DDevice3_GetDirect3D(p,a)                      (p)->GetDirect3D(a)
-#define IDirect3DDevice3_SetCurrentViewport(p,a)               (p)->SetCurrentViewport(a)
-#define IDirect3DDevice3_GetCurrentViewport(p,a)               (p)->GetCurrentViewport(a)
-#define IDirect3DDevice3_SetRenderTarget(p,a,b)                (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice3_GetRenderTarget(p,a)                  (p)->GetRenderTarget(a)
-#define IDirect3DDevice3_Begin(p,a,b,c)                        (p)->Begin(a,b,c)
-#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e)             (p)->BeginIndexed(a,b,c,d,e)
-#define IDirect3DDevice3_Vertex(p,a)                           (p)->Vertex(a)
-#define IDirect3DDevice3_Index(p,a)                            (p)->Index(a)
-#define IDirect3DDevice3_End(p,a)                              (p)->End(a)
-#define IDirect3DDevice3_GetRenderState(p,a,b)                 (p)->GetRenderState(a,b)
-#define IDirect3DDevice3_SetRenderState(p,a,b)                 (p)->SetRenderState(a,b)
-#define IDirect3DDevice3_GetLightState(p,a,b)                  (p)->GetLightState(a,b)
-#define IDirect3DDevice3_SetLightState(p,a,b)                  (p)->SetLightState(a,b)
-#define IDirect3DDevice3_SetTransform(p,a,b)                   (p)->SetTransform(a,b)
-#define IDirect3DDevice3_GetTransform(p,a,b)                   (p)->GetTransform(a,b)
-#define IDirect3DDevice3_MultiplyTransform(p,a,b)              (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e)            (p)->DrawPrimitive(a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
-#define IDirect3DDevice3_SetClipStatus(p,a)                    (p)->SetClipStatus(a)
-#define IDirect3DDevice3_GetClipStatus(p,a)                    (p)->GetClipStatus(a)
-#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e)     (p)->DrawPrimitiveStrided(a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
-#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e)          (p)->DrawPrimitiveVB(a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e)   (p)->DrawIndexedPrimitiveVB(a,b,c,d,e)
-#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e)  (p)->ComputeSphereVisibility(a,b,c,d,e)
-#define IDirect3DDevice3_GetTexture(p,a,b)                     (p)->GetTexture(a,b)
-#define IDirect3DDevice3_SetTexture(p,a,b)                     (p)->SetTexture(a,b)
-#define IDirect3DDevice3_GetTextureStageState(p,a,b,c)         (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice3_SetTextureStageState(p,a,b,c)         (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice3_ValidateDevice(p,a)                   (p)->ValidateDevice(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DDevice7 interface
- */
-#define INTERFACE IDirect3DDevice7
-DECLARE_INTERFACE_(IDirect3DDevice7,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice7 methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC7 lpD3DHELDevDesc) PURE;
-    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc, LPVOID lpArg) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D7 *lplpDirect3D3) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7 lpNewRenderTarget,DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7 *lplpRenderTarget) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD dwCount,LPD3DRECT lpRects,DWORD dwFlags,D3DCOLOR dwColor,D3DVALUE dvZ,DWORD dwStencil) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT7 lpData) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType,LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT7 lpData) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL7 lpMat) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL7 lpMat) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD dwLightIndex,LPD3DLIGHT7 lpLight) PURE;
-    STDMETHOD(GetLight)(THIS_ DWORD dwLightIndex,LPD3DLIGHT7 lpLight) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
-    STDMETHOD(BeginStateBlock)(THIS) PURE;
-    STDMETHOD(EndStateBlock)(THIS_ LPDWORD lpdwBlockHandle) PURE;
-    STDMETHOD(PreLoad)(THIS_ LPDIRECTDRAWSURFACE7 lpddsTexture) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,LPWORD lpIndex,DWORD dwIndexCount,DWORD dwFlags) PURE;
-    STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,DWORD dwStartVertex,DWORD dwNumVertices,DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,DWORD dwStartVertex,DWORD dwNumVertices,LPWORD lpwIndices,DWORD dwIndexCount,DWORD dwFlags) PURE;
-    STDMETHOD(ComputeSphereVisibility)(THIS_ LPD3DVECTOR lpCenters,LPD3DVALUE lpRadii,DWORD dwNumSpheres,DWORD dwFlags,LPDWORD lpdwReturnValues) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD dwStage,LPDIRECTDRAWSURFACE7 *lpTexture) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD dwStage,LPDIRECTDRAWSURFACE7 lpTexture) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,LPDWORD lpdwState) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,DWORD dwState) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ LPDWORD lpdwPasses) PURE;
-    STDMETHOD(ApplyStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
-    STDMETHOD(CaptureStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
-    STDMETHOD(DeleteStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
-    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE d3dsbType,LPDWORD lpdwBlockHandle) PURE;
-    STDMETHOD(Load)(THIS_ LPDIRECTDRAWSURFACE7 lpDestTex,LPPOINT lpDestPoint,LPDIRECTDRAWSURFACE7 lpSrcTex,LPRECT lprcSrcRect,DWORD dwFlags) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD dwLightIndex,BOOL bEnable) PURE;
-    STDMETHOD(GetLightEnable)(THIS_ DWORD dwLightIndex,BOOL *pbEnable) PURE;
-    STDMETHOD(SetClipPlane)(THIS_ DWORD dwIndex,D3DVALUE *pPlaneEquation) PURE;
-    STDMETHOD(GetClipPlane)(THIS_ DWORD dwIndex,D3DVALUE *pPlaneEquation) PURE;
-    STDMETHOD(GetInfo)(THIS_ DWORD dwDevInfoID,LPVOID pDevInfoStruct,DWORD dwSize) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice7_QueryInterface(p,a,b)                        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice7_AddRef(p)                                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice7_Release(p)                                   (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice7 methods ***/
-#define IDirect3DDevice7_GetCaps(p,a)                                 (p)->lpVtbl->GetCaps(p,a)
-#define IDirect3DDevice7_EnumTextureFormats(p,a,b)                    (p)->lpVtbl->EnumTextureFormats(p,a,b)
-#define IDirect3DDevice7_BeginScene(p)                                (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice7_EndScene(p)                                  (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice7_GetDirect3D(p,a)                             (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice7_SetRenderTarget(p,a,b)                       (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice7_GetRenderTarget(p,a)                         (p)->lpVtbl->GetRenderTarget(p,a)
-#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f)                         (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
-#define IDirect3DDevice7_SetTransform(p,a,b)                          (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice7_GetTransform(p,a,b)                          (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice7_SetViewport(p,a)                             (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DDevice7_MultiplyTransform(p,a,b)                     (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice7_GetViewport(p,a)                             (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DDevice7_SetMaterial(p,a)                             (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DDevice7_GetMaterial(p,a)                             (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DDevice7_SetLight(p,a,b)                              (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DDevice7_GetLight(p,a,b)                              (p)->lpVtbl->GetLight(p,a,b)
-#define IDirect3DDevice7_SetRenderState(p,a,b)                        (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice7_GetRenderState(p,a,b)                        (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice7_BeginStateBlock(p)                           (p)->lpVtbl->BeginStateBlock(p)
-#define IDirect3DDevice7_EndStateBlock(p,a)                           (p)->lpVtbl->EndStateBlock(p,a)
-#define IDirect3DDevice7_PreLoad(p,a)                                 (p)->lpVtbl->PreLoad(p,a)
-#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e)                   (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g)        (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice7_SetClipStatus(p,a)                           (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice7_GetClipStatus(p,a)                           (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e)                 (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)      (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e)         (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
-#define IDirect3DDevice7_GetTexture(p,a,b)                            (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice7_SetTexture(p,a,b)                            (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice7_GetTextureStageState(p,a,b,c)                (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice7_SetTextureStageState(p,a,b,c)                (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice7_ValidateDevice(p,a)                          (p)->lpVtbl->ValidateDevice(p,a)
-#define IDirect3DDevice7_ApplyStateBlock(p,a)                         (p)->lpVtbl->ApplyStateBlock(p,a)
-#define IDirect3DDevice7_CaptureStateBlock(p,a)                       (p)->lpVtbl->CaptureStateBlock(p,a)
-#define IDirect3DDevice7_DeleteStateBlock(p,a)                        (p)->lpVtbl->DeleteStateBlock(p,a)
-#define IDirect3DDevice7_CreateStateBlock(p,a,b)                      (p)->lpVtbl->CreateStateBlock(p,a,b)
-#define IDirect3DDevice7_Load(p,a,b,c,d,e)                            (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DDevice7_LightEnable(p,a,b)                           (p)->lpVtbl->LightEnable(p,a,b)
-#define IDirect3DDevice7_GetLightEnable(p,a,b)                        (p)->lpVtbl->GetLightEnable(p,a,b)
-#define IDirect3DDevice7_SetClipPlane(p,a,b)                          (p)->lpVtbl->SetClipPlane(p,a,b)
-#define IDirect3DDevice7_GetClipPlane(p,a,b)                          (p)->lpVtbl->GetClipPlane(p,a,b)
-#define IDirect3DDevice7_GetInfo(p,a,b,c)                             (p)->lpVtbl->GetInfo(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice7_QueryInterface(p,a,b)                        (p)->QueryInterface(a,b)
-#define IDirect3DDevice7_AddRef(p)                                    (p)->AddRef()
-#define IDirect3DDevice7_Release(p)                                   (p)->Release()
-/*** IDirect3DDevice7 methods ***/
-#define IDirect3DDevice7_GetCaps(p,a)                                 (p)->GetCaps(a)
-#define IDirect3DDevice7_EnumTextureFormats(p,a,b)                    (p)->EnumTextureFormats(a,b)
-#define IDirect3DDevice7_BeginScene(p)                                (p)->BeginScene()
-#define IDirect3DDevice7_EndScene(p)                                  (p)->EndScene()
-#define IDirect3DDevice7_GetDirect3D(p,a)                             (p)->GetDirect3D(a)
-#define IDirect3DDevice7_SetRenderTarget(p,a,b)                       (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice7_GetRenderTarget(p,a)                         (p)->GetRenderTarget(a)
-#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f)                         (p)->Clear(a,b,c,d,e,f)
-#define IDirect3DDevice7_SetTransform(p,a,b)                          (p)->SetTransform(a,b)
-#define IDirect3DDevice7_GetTransform(p,a,b)                          (p)->GetTransform(a,b)
-#define IDirect3DDevice7_SetViewport(p,a)                             (p)->SetViewport(a)
-#define IDirect3DDevice7_MultiplyTransform(p,a,b)                     (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice7_GetViewport(p,a)                             (p)->GetViewport(a)
-#define IDirect3DDevice7_SetMaterial(p,a)                             (p)->SetMaterial(a)
-#define IDirect3DDevice7_GetMaterial(p,a)                             (p)->GetMaterial(a)
-#define IDirect3DDevice7_SetLight(p,a,b)                              (p)->SetLight(a,b)
-#define IDirect3DDevice7_GetLight(p,a,b)                              (p)->GetLight(a,b)
-#define IDirect3DDevice7_SetRenderState(p,a,b)                        (p)->SetRenderState(a,b)
-#define IDirect3DDevice7_GetRenderState(p,a,b)                        (p)->GetRenderState(a,b)
-#define IDirect3DDevice7_BeginStateBlock(p)                           (p)->BeginStateBlock()
-#define IDirect3DDevice7_EndStateBlock(p,a)                           (p)->EndStateBlock(a)
-#define IDirect3DDevice7_PreLoad(p,a)                                 (p)->PreLoad(a)
-#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e)                   (p)->DrawPrimitive(a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g)        (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
-#define IDirect3DDevice7_SetClipStatus(p,a)                           (p)->SetClipStatus(a)
-#define IDirect3DDevice7_GetClipStatus(p,a)                           (p)->GetClipStatus(a)
-#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e)            (p)->DrawPrimitiveStrided(a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
-#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e)                 (p)->DrawPrimitiveVB(a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)      (p)->DrawIndexedPrimitiveVB(a,b,c,d,e,f,g)
-#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e)         (p)->ComputeSphereVisibility(a,b,c,d,e)
-#define IDirect3DDevice7_GetTexture(p,a,b)                            (p)->GetTexture(a,b)
-#define IDirect3DDevice7_SetTexture(p,a,b)                            (p)->SetTexture(a,b)
-#define IDirect3DDevice7_GetTextureStageState(p,a,b,c)                (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice7_SetTextureStageState(p,a,b,c)                (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice7_ValidateDevice(p,a)                          (p)->ValidateDevice(a)
-#define IDirect3DDevice7_ApplyStateBlock(p,a)                         (p)->ApplyStateBlock(a)
-#define IDirect3DDevice7_CaptureStateBlock(p,a)                       (p)->CaptureStateBlock(a)
-#define IDirect3DDevice7_DeleteStateBlock(p,a)                        (p)->DeleteStateBlock(a)
-#define IDirect3DDevice7_CreateStateBlock(p,a,b)                      (p)->CreateStateBlock(a,b)
-#define IDirect3DDevice7_Load(p,a,b,c,d,e)                            (p)->Load(a,b,c,d,e)
-#define IDirect3DDevice7_LightEnable(p,a,b)                           (p)->LightEnable(a,b)
-#define IDirect3DDevice7_GetLightEnable(p,a,b)                        (p)->GetLightEnable(a,b)
-#define IDirect3DDevice7_SetClipPlane(p,a,b)                          (p)->SetClipPlane(a,b)
-#define IDirect3DDevice7_GetClipPlane(p,a,b)                          (p)->GetClipPlane(a,b)
-#define IDirect3DDevice7_GetInfo(p,a,b,c)                             (p)->GetInfo(a,b,c)
-#endif
-
-
-
-/*****************************************************************************
- * IDirect3DVertexBuffer interface
- */
-#define INTERFACE IDirect3DVertexBuffer
-DECLARE_INTERFACE_(IDirect3DVertexBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVertexBuffer methods ***/
-    STDMETHOD(Lock)(THIS_ DWORD dwFlags,LPVOID *lplpData,LPDWORD lpdwSize) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPDIRECT3DVERTEXBUFFER lpSrcBuffer,DWORD dwSrcIndex,LPDIRECT3DDEVICE3 lpD3DDevice,DWORD dwFlags) PURE;
-    STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertexBufferDesc) PURE;
-    STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE3  lpD3DDevice,DWORD dwFlags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexBuffer methods ***/
-#define IDirect3DVertexBuffer_Lock(p,a,b,c)                    (p)->lpVtbl->Lock(p,a,b,c)
-#define IDirect3DVertexBuffer_Unlock(p)                        (p)->lpVtbl->Unlock(p)
-#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
-#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a)         (p)->lpVtbl->GetVertexBufferDesc(p,a)
-#define IDirect3DVertexBuffer_Optimize(p,a,b)                  (p)->lpVtbl->Optimize(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DVertexBuffer_AddRef(p)             (p)->AddRef()
-#define IDirect3DVertexBuffer_Release(p)            (p)->Release()
-/*** IDirect3DVertexBuffer methods ***/
-#define IDirect3DVertexBuffer_Lock(p,a,b,c)                    (p)->Lock(a,b,c)
-#define IDirect3DVertexBuffer_Unlock(p)                        (p)->Unlock()
-#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->ProcessVertices(a,b,c,d,e,f,g)
-#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a)         (p)->GetVertexBufferDesc(a)
-#define IDirect3DVertexBuffer_Optimize(p,a,b)                  (p)->Optimize(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexBuffer7 interface
- */
-#define INTERFACE IDirect3DVertexBuffer7
-DECLARE_INTERFACE_(IDirect3DVertexBuffer7,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVertexBuffer7 methods ***/
-    STDMETHOD(Lock)(THIS_ DWORD dwFlags,LPVOID *lplpData,LPDWORD lpdwSize) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPDIRECT3DVERTEXBUFFER7 lpSrcBuffer,DWORD dwSrcIndex,LPDIRECT3DDEVICE7 lpD3DDevice,DWORD dwFlags) PURE;
-    STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertexBufferDesc) PURE;
-    STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE7  lpD3DDevice,DWORD dwFlags) PURE;
-    STDMETHOD(ProcessVerticesStrided)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPD3DDRAWPRIMITIVESTRIDEDDATA lpStrideData,DWORD dwVertexTypeDesc,LPDIRECT3DDEVICE7 lpD3DDevice,DWORD dwFlags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer7_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexBuffer7_AddRef(p)                               (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexBuffer7_Release(p)                              (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexBuffer7 methods ***/
-#define IDirect3DVertexBuffer7_Lock(p,a,b,c)                           (p)->lpVtbl->Lock(p,a,b,c)
-#define IDirect3DVertexBuffer7_Unlock(p)                               (p)->lpVtbl->Unlock(p)
-#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g)        (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
-#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a)                (p)->lpVtbl->GetVertexBufferDesc(p,a)
-#define IDirect3DVertexBuffer7_Optimize(p,a,b)                         (p)->lpVtbl->Optimize(p,a,b)
-#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVerticesStrided(p,a,b,c,d,e,f,g)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer7_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
-#define IDirect3DVertexBuffer7_AddRef(p)                               (p)->AddRef()
-#define IDirect3DVertexBuffer7_Release(p)                              (p)->Release()
-/*** IDirect3DVertexBuffer7 methods ***/
-#define IDirect3DVertexBuffer7_Lock(p,a,b,c)                           (p)->Lock(a,b,c)
-#define IDirect3DVertexBuffer7_Unlock(p)                               (p)->Unlock()
-#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g)        (p)->ProcessVertices(a,b,c,d,e,f,g)
-#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a)                (p)->GetVertexBufferDesc(a)
-#define IDirect3DVertexBuffer7_Optimize(p,a,b)                         (p)->Optimize(a,b)
-#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->ProcessVerticesStrided(a,b,c,d,e,f,g)
-#endif
-
-#endif /* __WINE_D3D_H */
diff --git a/misc/builddeps/win32/dx/include/d3d10.h b/misc/builddeps/win32/dx/include/d3d10.h
deleted file mode 100644 (file)
index dd6ea6c..0000000
+++ /dev/null
@@ -1,5603 +0,0 @@
-/*** Autogenerated by WIDL 1.2-rc3 from d3d10.idl - Do not edit ***/
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifndef __WIDL_D3D10_H
-#define __WIDL_D3D10_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Headers for imported files */
-
-#include <oaidl.h>
-#include <ocidl.h>
-#include <dxgi.h>
-
-/* Forward declarations */
-
-#ifndef __ID3D10DeviceChild_FWD_DEFINED__
-#define __ID3D10DeviceChild_FWD_DEFINED__
-typedef interface ID3D10DeviceChild ID3D10DeviceChild;
-#endif
-
-#ifndef __ID3D10Resource_FWD_DEFINED__
-#define __ID3D10Resource_FWD_DEFINED__
-typedef interface ID3D10Resource ID3D10Resource;
-#endif
-
-#ifndef __ID3D10Buffer_FWD_DEFINED__
-#define __ID3D10Buffer_FWD_DEFINED__
-typedef interface ID3D10Buffer ID3D10Buffer;
-#endif
-
-#ifndef __ID3D10Texture1D_FWD_DEFINED__
-#define __ID3D10Texture1D_FWD_DEFINED__
-typedef interface ID3D10Texture1D ID3D10Texture1D;
-#endif
-
-#ifndef __ID3D10Texture2D_FWD_DEFINED__
-#define __ID3D10Texture2D_FWD_DEFINED__
-typedef interface ID3D10Texture2D ID3D10Texture2D;
-#endif
-
-#ifndef __ID3D10Texture3D_FWD_DEFINED__
-#define __ID3D10Texture3D_FWD_DEFINED__
-typedef interface ID3D10Texture3D ID3D10Texture3D;
-#endif
-
-#ifndef __ID3D10View_FWD_DEFINED__
-#define __ID3D10View_FWD_DEFINED__
-typedef interface ID3D10View ID3D10View;
-#endif
-
-#ifndef __ID3D10DepthStencilView_FWD_DEFINED__
-#define __ID3D10DepthStencilView_FWD_DEFINED__
-typedef interface ID3D10DepthStencilView ID3D10DepthStencilView;
-#endif
-
-#ifndef __ID3D10RenderTargetView_FWD_DEFINED__
-#define __ID3D10RenderTargetView_FWD_DEFINED__
-typedef interface ID3D10RenderTargetView ID3D10RenderTargetView;
-#endif
-
-#ifndef __ID3D10ShaderResourceView_FWD_DEFINED__
-#define __ID3D10ShaderResourceView_FWD_DEFINED__
-typedef interface ID3D10ShaderResourceView ID3D10ShaderResourceView;
-#endif
-
-#ifndef __ID3D10BlendState_FWD_DEFINED__
-#define __ID3D10BlendState_FWD_DEFINED__
-typedef interface ID3D10BlendState ID3D10BlendState;
-#endif
-
-#ifndef __ID3D10DepthStencilState_FWD_DEFINED__
-#define __ID3D10DepthStencilState_FWD_DEFINED__
-typedef interface ID3D10DepthStencilState ID3D10DepthStencilState;
-#endif
-
-#ifndef __ID3D10GeometryShader_FWD_DEFINED__
-#define __ID3D10GeometryShader_FWD_DEFINED__
-typedef interface ID3D10GeometryShader ID3D10GeometryShader;
-#endif
-
-#ifndef __ID3D10InputLayout_FWD_DEFINED__
-#define __ID3D10InputLayout_FWD_DEFINED__
-typedef interface ID3D10InputLayout ID3D10InputLayout;
-#endif
-
-#ifndef __ID3D10PixelShader_FWD_DEFINED__
-#define __ID3D10PixelShader_FWD_DEFINED__
-typedef interface ID3D10PixelShader ID3D10PixelShader;
-#endif
-
-#ifndef __ID3D10RasterizerState_FWD_DEFINED__
-#define __ID3D10RasterizerState_FWD_DEFINED__
-typedef interface ID3D10RasterizerState ID3D10RasterizerState;
-#endif
-
-#ifndef __ID3D10SamplerState_FWD_DEFINED__
-#define __ID3D10SamplerState_FWD_DEFINED__
-typedef interface ID3D10SamplerState ID3D10SamplerState;
-#endif
-
-#ifndef __ID3D10VertexShader_FWD_DEFINED__
-#define __ID3D10VertexShader_FWD_DEFINED__
-typedef interface ID3D10VertexShader ID3D10VertexShader;
-#endif
-
-#ifndef __ID3D10Asynchronous_FWD_DEFINED__
-#define __ID3D10Asynchronous_FWD_DEFINED__
-typedef interface ID3D10Asynchronous ID3D10Asynchronous;
-#endif
-
-#ifndef __ID3D10Counter_FWD_DEFINED__
-#define __ID3D10Counter_FWD_DEFINED__
-typedef interface ID3D10Counter ID3D10Counter;
-#endif
-
-#ifndef __ID3D10Query_FWD_DEFINED__
-#define __ID3D10Query_FWD_DEFINED__
-typedef interface ID3D10Query ID3D10Query;
-#endif
-
-#ifndef __ID3D10Predicate_FWD_DEFINED__
-#define __ID3D10Predicate_FWD_DEFINED__
-typedef interface ID3D10Predicate ID3D10Predicate;
-#endif
-
-#ifndef __ID3D10Device_FWD_DEFINED__
-#define __ID3D10Device_FWD_DEFINED__
-typedef interface ID3D10Device ID3D10Device;
-#endif
-
-#ifndef __ID3D10Multithread_FWD_DEFINED__
-#define __ID3D10Multithread_FWD_DEFINED__
-typedef interface ID3D10Multithread ID3D10Multithread;
-#endif
-
-
-#ifndef _D3D10_CONSTANTS
-#define _D3D10_CONSTANTS
-#define D3D10_DEFAULT_BLEND_FACTOR_ALPHA (1.00000000000000)
-
-#define D3D10_DEFAULT_BLEND_FACTOR_BLUE (1.00000000000000)
-
-#define D3D10_DEFAULT_BLEND_FACTOR_GREEN (1.00000000000000)
-
-#define D3D10_DEFAULT_BLEND_FACTOR_RED (1.00000000000000)
-
-#define D3D10_DEFAULT_BORDER_COLOR_COMPONENT (0.00000000000000)
-
-#define D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS (0.00000000000000)
-
-#define D3D10_DEFAULT_DEPTH_BIAS_CLAMP (0.00000000000000)
-
-#define D3D10_DEFAULT_MAX_ANISOTROPY (16.0000000000000)
-
-#define D3D10_DEFAULT_MIP_LOD_BIAS (0.00000000000000)
-
-#define D3D10_DEFAULT_VIEWPORT_MAX_DEPTH (0.00000000000000)
-
-#define D3D10_DEFAULT_VIEWPORT_MIN_DEPTH (0.00000000000000)
-
-#define D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP (0.600000000000000)
-
-#define D3D10_FLOAT32_MAX (3.40282346600000e+38)
-
-#define D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP (0.600000000000000)
-
-#define D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR (2.40000000000000)
-
-#define D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR (1.00000000000000)
-
-#define D3D10_FLOAT_TO_SRGB_OFFSET (0.0550000000000000)
-
-#define D3D10_FLOAT_TO_SRGB_SCALE_1 (12.9200000000000)
-
-#define D3D10_FLOAT_TO_SRGB_SCALE_2 (1.05500000000000)
-
-#define D3D10_FLOAT_TO_SRGB_THRESHOLD (0.00313080000000000)
-
-#define D3D10_FTOI_INSTRUCTION_MAX_INPUT (2147483647.99900)
-
-#define D3D10_FTOI_INSTRUCTION_MIN_INPUT (-2147483648.99900)
-
-#define D3D10_FTOU_INSTRUCTION_MAX_INPUT (4294967295.99900)
-
-#define D3D10_FTOU_INSTRUCTION_MIN_INPUT (0.00000000000000)
-
-#define D3D10_LINEAR_GAMMA (1.00000000000000)
-
-#define D3D10_MAX_BORDER_COLOR_COMPONENT (1.00000000000000)
-
-#define D3D10_MAX_DEPTH (1.00000000000000)
-
-#define D3D10_MAX_POSITION_VALUE (3.40282346600000e+34)
-
-#define D3D10_MIN_BORDER_COLOR_COMPONENT (0.00000000000000)
-
-#define D3D10_MIN_DEPTH (0.00000000000000)
-
-#define D3D10_MIP_LOD_BIAS_MAX (15.9900000000000)
-
-#define D3D10_MIP_LOD_BIAS_MIN (-16.0000000000000)
-
-#define D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT (0.500000000000000)
-
-#define D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH (1.40000000000000)
-
-#define D3D10_SRGB_GAMMA (2.20000000000000)
-
-#define D3D10_SRGB_TO_FLOAT_DENOMINATOR_1 (12.9200000000000)
-
-#define D3D10_SRGB_TO_FLOAT_DENOMINATOR_2 (1.05500000000000)
-
-#define D3D10_SRGB_TO_FLOAT_EXPONENT (2.40000000000000)
-
-#define D3D10_SRGB_TO_FLOAT_OFFSET (0.0550000000000000)
-
-#define D3D10_SRGB_TO_FLOAT_THRESHOLD (0.0404500000000000)
-
-#define D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP (0.500000000000000)
-
-#define D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT (0.00000000000000)
-
-#define D3D_SPEC_VERSION (1.05000500000000)
-
-#define D3D10_16BIT_INDEX_STRIP_CUT_VALUE (0xffff)
-
-#define D3D10_32BIT_INDEX_STRIP_CUT_VALUE (0xffffffff)
-
-#define D3D10_8BIT_INDEX_STRIP_CUT_VALUE (0xff)
-
-#define D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT (9)
-
-#define D3D10_CLIP_OR_CULL_DISTANCE_COUNT (8)
-
-#define D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT (2)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT (14)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS (4)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT (15)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS (4)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT (15)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST (1)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS (1)
-
-#define D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT (64)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS (4)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT (1)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST (1)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS (1)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS (1)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT (128)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST (1)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS (1)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT (128)
-
-#define D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS (1)
-
-#define D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT (16)
-
-#define D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST (1)
-
-#define D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS (1)
-
-#define D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT (16)
-
-#define D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT (32)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS (4)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_COUNT (4096)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST (3)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS (3)
-
-#define D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX (10)
-
-#define D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN (-10)
-
-#define D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE (-8)
-
-#define D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE (7)
-
-#define D3D10_DEFAULT_DEPTH_BIAS (0)
-
-#define D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX (0)
-
-#define D3D10_DEFAULT_SAMPLE_MASK (0xffffffff)
-
-#define D3D10_DEFAULT_SCISSOR_ENDX (0)
-
-#define D3D10_DEFAULT_SCISSOR_ENDY (0)
-
-#define D3D10_DEFAULT_SCISSOR_STARTX (0)
-
-#define D3D10_DEFAULT_SCISSOR_STARTY (0)
-
-#define D3D10_DEFAULT_STENCIL_READ_MASK (0xff)
-
-#define D3D10_DEFAULT_STENCIL_REFERENCE (0)
-
-#define D3D10_DEFAULT_STENCIL_WRITE_MASK (0xff)
-
-#define D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX (0)
-
-#define D3D10_DEFAULT_VIEWPORT_HEIGHT (0)
-
-#define D3D10_DEFAULT_VIEWPORT_TOPLEFTX (0)
-
-#define D3D10_DEFAULT_VIEWPORT_TOPLEFTY (0)
-
-#define D3D10_DEFAULT_VIEWPORT_WIDTH (0)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS (1)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT (1)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST (2)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS (1)
-
-#define D3D10_GS_INPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_GS_INPUT_REGISTER_COUNT (16)
-
-#define D3D10_GS_INPUT_REGISTER_READS_PER_INST (2)
-
-#define D3D10_GS_INPUT_REGISTER_READ_PORTS (1)
-
-#define D3D10_GS_INPUT_REGISTER_VERTICES (6)
-
-#define D3D10_GS_OUTPUT_ELEMENTS (32)
-
-#define D3D10_GS_OUTPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_GS_OUTPUT_REGISTER_COUNT (32)
-
-#define D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES (0)
-
-#define D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY (0)
-
-#define D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES (0)
-
-#define D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT (1)
-
-#define D3D10_IA_INSTANCE_ID_BIT_COUNT (32)
-
-#define D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT (32)
-
-#define D3D10_IA_PRIMITIVE_ID_BIT_COUNT (32)
-
-#define D3D10_IA_VERTEX_ID_BIT_COUNT (32)
-
-#define D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT (16)
-
-#define D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS (64)
-
-#define D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT (16)
-
-#define D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT (0xffffffff)
-
-#define D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER (0xffffffff)
-
-#define D3D10_MAX_MAXANISOTROPY (16)
-
-#define D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT (32)
-
-#define D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP (17)
-
-#define D3D10_MIN_MAXANISOTROPY (0)
-
-#define D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT (6)
-
-#define D3D10_MIP_LOD_RANGE_BIT_COUNT (8)
-
-#define D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT (0)
-
-#define D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT (13)
-
-#define D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT (15)
-
-#define D3D10_PS_FRONTFACING_DEFAULT_VALUE (0xffffffff)
-
-#define D3D10_PS_FRONTFACING_FALSE_VALUE (0)
-
-#define D3D10_PS_FRONTFACING_TRUE_VALUE (0xffffffff)
-
-#define D3D10_PS_INPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_PS_INPUT_REGISTER_COUNT (32)
-
-#define D3D10_PS_INPUT_REGISTER_READS_PER_INST (2)
-
-#define D3D10_PS_INPUT_REGISTER_READ_PORTS (1)
-
-#define D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS (1)
-
-#define D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT (1)
-
-#define D3D10_PS_OUTPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_PS_OUTPUT_REGISTER_COUNT (8)
-
-#define D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT (4096)
-
-#define D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP (27)
-
-#define D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT (4096)
-
-#define D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT (4096)
-
-#define D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP (32)
-
-#define D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP (32)
-
-#define D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION (8192)
-
-#define D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT (1024)
-
-#define D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT (4096)
-
-#define D3D10_REQ_MAXANISOTROPY (16)
-
-#define D3D10_REQ_MIP_LEVELS (14)
-
-#define D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES (2048)
-
-#define D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT (4096)
-
-#define D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH (8192)
-
-#define D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES (128)
-
-#define D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP (20)
-
-#define D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT (4096)
-
-#define D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION (512)
-
-#define D3D10_REQ_TEXTURE1D_U_DIMENSION (8192)
-
-#define D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION (512)
-
-#define D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION (8192)
-
-#define D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (2048)
-
-#define D3D10_REQ_TEXTURECUBE_DIMENSION (8192)
-
-#define D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL (0)
-
-#define D3D10_SHADER_MAJOR_VERSION (4)
-
-#define D3D10_SHADER_MINOR_VERSION (0)
-
-#define D3D10_SHIFT_INSTRUCTION_PAD_VALUE (0)
-
-#define D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT (5)
-
-#define D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT (8)
-
-#define D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES (2048)
-
-#define D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES (256)
-
-#define D3D10_SO_BUFFER_SLOT_COUNT (4)
-
-#define D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP (0xffffffff)
-
-#define D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER (1)
-
-#define D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT (64)
-
-#define D3D10_STANDARD_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED (64)
-
-#define D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE (4)
-
-#define D3D10_STANDARD_PIXEL_COMPONENT_COUNT (128)
-
-#define D3D10_STANDARD_PIXEL_ELEMENT_COUNT (32)
-
-#define D3D10_STANDARD_VECTOR_SIZE (4)
-
-#define D3D10_STANDARD_VERTEX_ELEMENT_COUNT (16)
-
-#define D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT (64)
-
-#define D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT (8)
-
-#define D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT (6)
-
-#define D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT (18)
-
-#define D3D10_UNBOUND_MEMORY_ACCESS_RESULT (0)
-
-#define D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX (15)
-
-#define D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE (16)
-
-#define D3D10_VIEWPORT_BOUNDS_MAX (16383)
-
-#define D3D10_VIEWPORT_BOUNDS_MIN (-16384)
-
-#define D3D10_VS_INPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_VS_INPUT_REGISTER_COUNT (16)
-
-#define D3D10_VS_INPUT_REGISTER_READS_PER_INST (2)
-
-#define D3D10_VS_INPUT_REGISTER_READ_PORTS (1)
-
-#define D3D10_VS_OUTPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_VS_OUTPUT_REGISTER_COUNT (16)
-
-#define D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT (10)
-
-#define D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP (25)
-
-#define D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP (25)
-
-#define D3D_MAJOR_VERSION (10)
-
-#define D3D_MINOR_VERSION (0)
-
-#define D3D_SPEC_DATE_DAY (8)
-
-#define D3D_SPEC_DATE_MONTH (8)
-
-#define D3D_SPEC_DATE_YEAR (2006)
-
-#endif
-#define D3D10_APPEND_ALIGNED_ELEMENT (0xffffffff)
-
-#define _FACD3D10 (0x87)
-
-#define _FACD3D10DEBUG (_FACD3D10 + 1)
-
-#define D3D10_FILTER_TYPE_MASK (0x3)
-
-#define D3D10_SDK_VERSION (29)
-
-#define MAKE_D3D10_HRESULT(code)                   MAKE_HRESULT( 1, _FACD3D10, code)
-#define MAKE_D3D10_STATUS(code)                    MAKE_HRESULT( 0, _FACD3D10, code)
-#define D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS  MAKE_D3D10_HRESULT(1)
-#define D3D10_ERROR_FILE_NOT_FOUND                 MAKE_D3D10_HRESULT(2)
-typedef enum D3D10_BLEND {
-    D3D10_BLEND_ZERO = 1,
-    D3D10_BLEND_ONE = 2,
-    D3D10_BLEND_SRC_COLOR = 3,
-    D3D10_BLEND_INV_SRC_COLOR = 4,
-    D3D10_BLEND_SRC_ALPHA = 5,
-    D3D10_BLEND_INV_SRC_ALPHA = 6,
-    D3D10_BLEND_DEST_ALPHA = 7,
-    D3D10_BLEND_INV_DEST_ALPHA = 8,
-    D3D10_BLEND_DEST_COLOR = 9,
-    D3D10_BLEND_INV_DEST_COLOR = 10,
-    D3D10_BLEND_SRC_ALPHA_SAT = 11,
-    D3D10_BLEND_BLEND_FACTOR = 14,
-    D3D10_BLEND_INV_BLEND_FACTOR = 15,
-    D3D10_BLEND_SRC1_COLOR = 16,
-    D3D10_BLEND_INV_SRC1_COLOR = 17,
-    D3D10_BLEND_SRC1_ALPHA = 18,
-    D3D10_BLEND_INV_SRC1_ALPHA = 19
-} D3D10_BLEND;
-typedef enum D3D10_BLEND_OP {
-    D3D10_BLEND_OP_ADD = 1,
-    D3D10_BLEND_OP_SUBTRACT = 2,
-    D3D10_BLEND_OP_REV_SUBTRACT = 3,
-    D3D10_BLEND_OP_MIN = 4,
-    D3D10_BLEND_OP_MAX = 5
-} D3D10_BLEND_OP;
-typedef struct D3D10_BLEND_DESC {
-    BOOL AlphaToCoverageEnable;
-    BOOL BlendEnable[8];
-    D3D10_BLEND SrcBlend;
-    D3D10_BLEND DestBlend;
-    D3D10_BLEND_OP BlendOp;
-    D3D10_BLEND SrcBlendAlpha;
-    D3D10_BLEND DestBlendAlpha;
-    D3D10_BLEND_OP BlendOpAlpha;
-    UINT8 RenderTargetWriteMask[8];
-} D3D10_BLEND_DESC;
-typedef enum D3D10_DEPTH_WRITE_MASK {
-    D3D10_DEPTH_WRITE_MASK_ZERO = 0,
-    D3D10_DEPTH_WRITE_MASK_ALL = 1
-} D3D10_DEPTH_WRITE_MASK;
-typedef enum D3D10_COMPARISON_FUNC {
-    D3D10_COMPARISON_NEVER = 1,
-    D3D10_COMPARISON_LESS = 2,
-    D3D10_COMPARISON_EQUAL = 3,
-    D3D10_COMPARISON_LESS_EQUAL = 4,
-    D3D10_COMPARISON_GREATER = 5,
-    D3D10_COMPARISON_NOT_EQUAL = 6,
-    D3D10_COMPARISON_GREATER_EQUAL = 7,
-    D3D10_COMPARISON_ALWAYS = 8
-} D3D10_COMPARISON_FUNC;
-typedef enum D3D10_STENCIL_OP {
-    D3D10_STENCIL_OP_KEEP = 1,
-    D3D10_STENCIL_OP_ZERO = 2,
-    D3D10_STENCIL_OP_REPLACE = 3,
-    D3D10_STENCIL_OP_INCR_SAT = 4,
-    D3D10_STENCIL_OP_DECR_SAT = 5,
-    D3D10_STENCIL_OP_INVERT = 6,
-    D3D10_STENCIL_OP_INCR = 7,
-    D3D10_STENCIL_OP_DECR = 8
-} D3D10_STENCIL_OP;
-typedef struct D3D10_DEPTH_STENCILOP_DESC {
-    D3D10_STENCIL_OP StencilFailOp;
-    D3D10_STENCIL_OP StencilDepthFailOp;
-    D3D10_STENCIL_OP StencilPassOp;
-    D3D10_COMPARISON_FUNC StencilFunc;
-} D3D10_DEPTH_STENCILOP_DESC;
-typedef struct D3D10_DEPTH_STENCIL_DESC {
-    BOOL DepthEnable;
-    D3D10_DEPTH_WRITE_MASK DepthWriteMask;
-    D3D10_COMPARISON_FUNC DepthFunc;
-    BOOL StencilEnable;
-    UINT8 StencilReadMask;
-    UINT8 StencilWriteMask;
-    D3D10_DEPTH_STENCILOP_DESC FrontFace;
-    D3D10_DEPTH_STENCILOP_DESC BackFace;
-} D3D10_DEPTH_STENCIL_DESC;
-typedef enum D3D10_FILL_MODE {
-    D3D10_FILL_WIREFRAME = 2,
-    D3D10_FILL_SOLID = 3
-} D3D10_FILL_MODE;
-typedef enum D3D10_CULL_MODE {
-    D3D10_CULL_NONE = 1,
-    D3D10_CULL_FRONT = 2,
-    D3D10_CULL_BACK = 3
-} D3D10_CULL_MODE;
-typedef struct D3D10_RASTERIZER_DESC {
-    D3D10_FILL_MODE FillMode;
-    D3D10_CULL_MODE CullMode;
-    BOOL FrontCounterClockwise;
-    INT DepthBias;
-    FLOAT DepthBiasClamp;
-    FLOAT SlopeScaledDepthBias;
-    BOOL DepthClipEnable;
-    BOOL ScissorEnable;
-    BOOL MultisampleEnable;
-    BOOL AntialiasedLineEnable;
-} D3D10_RASTERIZER_DESC;
-typedef enum D3D10_FILTER {
-    D3D10_FILTER_MIN_MAG_MIP_POINT = 0,
-    D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
-    D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
-    D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
-    D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
-    D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
-    D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
-    D3D10_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
-    D3D10_FILTER_ANISOTROPIC = 0x55,
-    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
-    D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
-    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
-    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
-    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
-    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
-    D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
-    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
-    D3D10_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
-    D3D10_FILTER_TEXT_1BIT = 0x80000000
-} D3D10_FILTER;
-typedef enum D3D10_TEXTURE_ADDRESS_MODE {
-    D3D10_TEXTURE_ADDRESS_WRAP = 1,
-    D3D10_TEXTURE_ADDRESS_MIRROR = 2,
-    D3D10_TEXTURE_ADDRESS_CLAMP = 3,
-    D3D10_TEXTURE_ADDRESS_BORDER = 4,
-    D3D10_TEXTURE_ADDRESS_MIRROR_ONCE = 5
-} D3D10_TEXTURE_ADDRESS_MODE;
-typedef struct D3D10_SAMPLER_DESC {
-    D3D10_FILTER Filter;
-    D3D10_TEXTURE_ADDRESS_MODE AddressU;
-    D3D10_TEXTURE_ADDRESS_MODE AddressV;
-    D3D10_TEXTURE_ADDRESS_MODE AddressW;
-    FLOAT MipLODBias;
-    UINT MaxAnisotropy;
-    D3D10_COMPARISON_FUNC ComparisonFunc;
-    FLOAT BorderColor[4];
-    FLOAT MinLOD;
-    FLOAT MaxLOD;
-} D3D10_SAMPLER_DESC;
-typedef enum D3D10_COUNTER {
-    D3D10_COUNTER_GPU_IDLE = 0,
-    D3D10_COUNTER_VERTEX_PROCESSING = 1,
-    D3D10_COUNTER_GEOMETRY_PROCESSING = 2,
-    D3D10_COUNTER_PIXEL_PROCESSING = 3,
-    D3D10_COUNTER_OTHER_GPU_PROCESSING = 4,
-    D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION = 5,
-    D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION = 6,
-    D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION = 7,
-    D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION = 8,
-    D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION = 9,
-    D3D10_COUNTER_VS_MEMORY_LIMITED = 10,
-    D3D10_COUNTER_VS_COMPUTATION_LIMITED = 11,
-    D3D10_COUNTER_GS_MEMORY_LIMITED = 12,
-    D3D10_COUNTER_GS_COMPUTATION_LIMITED = 13,
-    D3D10_COUNTER_PS_MEMORY_LIMITED = 14,
-    D3D10_COUNTER_PS_COMPUTATION_LIMITED = 15,
-    D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE = 16,
-    D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE = 17,
-    D3D10_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000
-} D3D10_COUNTER;
-typedef struct D3D10_COUNTER_DESC {
-    D3D10_COUNTER Counter;
-    UINT MiscFlags;
-} D3D10_COUNTER_DESC;
-typedef enum D3D10_COUNTER_TYPE {
-    D3D10_COUNTER_TYPE_FLOAT32 = 0,
-    D3D10_COUNTER_TYPE_UINT16 = 1,
-    D3D10_COUNTER_TYPE_UINT32 = 2,
-    D3D10_COUNTER_TYPE_UINT64 = 3
-} D3D10_COUNTER_TYPE;
-typedef struct D3D10_COUNTER_INFO {
-    D3D10_COUNTER LastDeviceDependentCounter;
-    UINT NumSimultaneousCounters;
-    UINT8 NumDetectableParallelUnits;
-} D3D10_COUNTER_INFO;
-typedef enum D3D10_RESOURCE_DIMENSION {
-    D3D10_RESOURCE_DIMENSION_UNKNOWN = 0,
-    D3D10_RESOURCE_DIMENSION_BUFFER = 1,
-    D3D10_RESOURCE_DIMENSION_TEXTURE1D = 2,
-    D3D10_RESOURCE_DIMENSION_TEXTURE2D = 3,
-    D3D10_RESOURCE_DIMENSION_TEXTURE3D = 4
-} D3D10_RESOURCE_DIMENSION;
-typedef enum D3D10_USAGE {
-    D3D10_USAGE_DEFAULT = 0,
-    D3D10_USAGE_IMMUTABLE = 1,
-    D3D10_USAGE_DYNAMIC = 2,
-    D3D10_USAGE_STAGING = 3
-} D3D10_USAGE;
-typedef struct D3D10_BUFFER_DESC {
-    UINT ByteWidth;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_BUFFER_DESC;
-typedef enum D3D10_MAP {
-    D3D10_MAP_READ = 1,
-    D3D10_MAP_WRITE = 2,
-    D3D10_MAP_READ_WRITE = 3,
-    D3D10_MAP_WRITE_DISCARD = 4,
-    D3D10_MAP_WRITE_NO_OVERWRITE = 5
-} D3D10_MAP;
-typedef struct D3D10_TEXTURE1D_DESC {
-    UINT Width;
-    UINT MipLevels;
-    UINT ArraySize;
-    DXGI_FORMAT Format;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE1D_DESC;
-typedef struct D3D10_TEXTURE2D_DESC {
-    UINT Width;
-    UINT Height;
-    UINT MipLevels;
-    UINT ArraySize;
-    DXGI_FORMAT Format;
-    DXGI_SAMPLE_DESC SampleDesc;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE2D_DESC;
-typedef struct D3D10_TEXTURE3D_DESC {
-    UINT Width;
-    UINT Height;
-    UINT Depth;
-    UINT MipLevels;
-    DXGI_FORMAT Format;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE3D_DESC;
-typedef enum D3D10_DSV_DIMENSION {
-    D3D10_DSV_DIMENSION_UNKNOWN = 0,
-    D3D10_DSV_DIMENSION_TEXTURE1D = 1,
-    D3D10_DSV_DIMENSION_TEXTURE1DARRAY = 2,
-    D3D10_DSV_DIMENSION_TEXTURE2D = 3,
-    D3D10_DSV_DIMENSION_TEXTURE2DARRAY = 4,
-    D3D10_DSV_DIMENSION_TEXTURE2DMS = 5,
-    D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
-} D3D10_DSV_DIMENSION;
-typedef struct D3D10_TEX1D_DSV {
-    UINT MipSlice;
-} D3D10_TEX1D_DSV;
-typedef struct D3D10_TEX1D_ARRAY_DSV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_DSV;
-typedef struct D3D10_TEX2D_DSV {
-    UINT MipSlice;
-} D3D10_TEX2D_DSV;
-typedef struct D3D10_TEX2D_ARRAY_DSV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_DSV;
-typedef struct D3D10_TEX2DMS_DSV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_DSV;
-typedef struct D3D10_TEX2DMS_ARRAY_DSV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_DSV;
-typedef struct D3D10_DEPTH_STENCIL_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_DSV_DIMENSION ViewDimension;
-    union {
-        D3D10_TEX1D_DSV Texture1D;
-        D3D10_TEX1D_ARRAY_DSV Texture1DArray;
-        D3D10_TEX2D_DSV Texture2D;
-        D3D10_TEX2D_ARRAY_DSV Texture2DArray;
-        D3D10_TEX2DMS_DSV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray;
-    } DUMMYUNIONNAME;
-} D3D10_DEPTH_STENCIL_VIEW_DESC;
-typedef enum D3D10_RTV_DIMENSION {
-    D3D10_RTV_DIMENSION_UNKNOWN = 0,
-    D3D10_RTV_DIMENSION_BUFFER = 1,
-    D3D10_RTV_DIMENSION_TEXTURE1D = 2,
-    D3D10_RTV_DIMENSION_TEXTURE1DARRAY = 3,
-    D3D10_RTV_DIMENSION_TEXTURE2D = 4,
-    D3D10_RTV_DIMENSION_TEXTURE2DARRAY = 5,
-    D3D10_RTV_DIMENSION_TEXTURE2DMS = 6,
-    D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
-    D3D10_RTV_DIMENSION_TEXTURE3D = 8
-} D3D10_RTV_DIMENSION;
-typedef struct D3D10_BUFFER_RTV {
-    UINT ElementOffset;
-    UINT ElementWidth;
-} D3D10_BUFFER_RTV;
-typedef struct D3D10_TEX1D_RTV {
-    UINT MipSlice;
-} D3D10_TEX1D_RTV;
-typedef struct D3D10_TEX1D_ARRAY_RTV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_RTV;
-typedef struct D3D10_TEX2D_RTV {
-    UINT MipSlice;
-} D3D10_TEX2D_RTV;
-typedef struct D3D10_TEX2D_ARRAY_RTV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_RTV;
-typedef struct D3D10_TEX2DMS_RTV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_RTV;
-typedef struct D3D10_TEX2DMS_ARRAY_RTV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_RTV;
-typedef struct D3D10_TEX3D_RTV {
-    UINT MipSlice;
-    UINT FirstWSlice;
-    UINT WSize;
-} D3D10_TEX3D_RTV;
-typedef struct D3D10_RENDER_TARGET_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_RTV_DIMENSION ViewDimension;
-    union {
-        D3D10_BUFFER_RTV Buffer;
-        D3D10_TEX1D_RTV Texture1D;
-        D3D10_TEX1D_ARRAY_RTV Texture1DArray;
-        D3D10_TEX2D_RTV Texture2D;
-        D3D10_TEX2D_ARRAY_RTV Texture2DArray;
-        D3D10_TEX2DMS_RTV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray;
-        D3D10_TEX3D_RTV Texture3D;
-    } DUMMYUNIONNAME;
-} D3D10_RENDER_TARGET_VIEW_DESC;
-typedef enum D3D10_SRV_DIMENSION {
-    D3D10_SRV_DIMENSION_UNKNOWN = 0,
-    D3D10_SRV_DIMENSION_BUFFER = 1,
-    D3D10_SRV_DIMENSION_TEXTURE1D = 2,
-    D3D10_SRV_DIMENSION_TEXTURE1DARRAY = 3,
-    D3D10_SRV_DIMENSION_TEXTURE2D = 4,
-    D3D10_SRV_DIMENSION_TEXTURE2DARRAY = 5,
-    D3D10_SRV_DIMENSION_TEXTURE2DMS = 6,
-    D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
-    D3D10_SRV_DIMENSION_TEXTURE3D = 8,
-    D3D10_SRV_DIMENSION_TEXTURECUBE = 9
-} D3D10_SRV_DIMENSION;
-typedef struct D3D10_BUFFER_SRV {
-    UINT ElementOffset;
-    UINT ElementWidth;
-} D3D10_BUFFER_SRV;
-typedef struct D3D10_TEX1D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX1D_SRV;
-typedef struct D3D10_TEX1D_ARRAY_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_SRV;
-typedef struct D3D10_TEX2D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX2D_SRV;
-typedef struct D3D10_TEX2D_ARRAY_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_SRV;
-typedef struct D3D10_TEX2DMS_SRV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_SRV;
-typedef struct D3D10_TEX2DMS_ARRAY_SRV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_SRV;
-typedef struct D3D10_TEX3D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX3D_SRV;
-typedef struct D3D10_TEXCUBE_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEXCUBE_SRV;
-typedef struct D3D10_SHADER_RESOURCE_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_SRV_DIMENSION ViewDimension;
-    union {
-        D3D10_BUFFER_SRV Buffer;
-        D3D10_TEX1D_SRV Texture1D;
-        D3D10_TEX1D_ARRAY_SRV Texture1DArray;
-        D3D10_TEX2D_SRV Texture2D;
-        D3D10_TEX2D_ARRAY_SRV Texture2DArray;
-        D3D10_TEX2DMS_SRV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
-        D3D10_TEX3D_SRV Texture3D;
-        D3D10_TEXCUBE_SRV TextureCube;
-    } DUMMYUNIONNAME;
-} D3D10_SHADER_RESOURCE_VIEW_DESC;
-typedef struct D3D10_BOX {
-    UINT left;
-    UINT top;
-    UINT front;
-    UINT right;
-    UINT bottom;
-    UINT back;
-} D3D10_BOX;
-typedef struct D3D10_SUBRESOURCE_DATA {
-    const void *pSysMem;
-    UINT SysMemPitch;
-    UINT SysMemSlicePitch;
-} D3D10_SUBRESOURCE_DATA;
-typedef struct D3D10_SO_DECLARATION_ENTRY {
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    BYTE StartComponent;
-    BYTE ComponentCount;
-    BYTE OutputSlot;
-} D3D10_SO_DECLARATION_ENTRY;
-typedef enum D3D10_INPUT_CLASSIFICATION {
-    D3D10_INPUT_PER_VERTEX_DATA = 0,
-    D3D10_INPUT_PER_INSTANCE_DATA = 1
-} D3D10_INPUT_CLASSIFICATION;
-typedef struct D3D10_INPUT_ELEMENT_DESC {
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    DXGI_FORMAT Format;
-    UINT InputSlot;
-    UINT AlignedByteOffset;
-    D3D10_INPUT_CLASSIFICATION InputSlotClass;
-    UINT InstanceDataStepRate;
-} D3D10_INPUT_ELEMENT_DESC;
-typedef enum D3D10_QUERY {
-    D3D10_QUERY_EVENT = 0,
-    D3D10_QUERY_OCCLUSION = 1,
-    D3D10_QUERY_TIMESTAMP = 2,
-    D3D10_QUERY_TIMESTAMP_DISJOINT = 3,
-    D3D10_QUERY_PIPELINE_STATISTICS = 4,
-    D3D10_QUERY_OCCLUSION_PREDICATE = 5,
-    D3D10_QUERY_SO_STATISTICS = 6,
-    D3D10_QUERY_SO_OVERFLOW_PREDICATE = 7
-} D3D10_QUERY;
-typedef struct D3D10_QUERY_DESC {
-    D3D10_QUERY Query;
-    UINT MiscFlags;
-} D3D10_QUERY_DESC;
-typedef enum D3D10_PRIMITIVE_TOPOLOGY {
-    D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
-    D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST = 2,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13
-} D3D10_PRIMITIVE_TOPOLOGY;
-typedef RECT D3D10_RECT;
-typedef struct D3D10_VIEWPORT {
-    INT TopLeftX;
-    INT TopLeftY;
-    UINT Width;
-    UINT Height;
-    FLOAT MinDepth;
-    FLOAT MaxDepth;
-} D3D10_VIEWPORT;
-typedef struct D3D10_MAPPED_TEXTURE2D {
-    void *pData;
-    UINT RowPitch;
-} D3D10_MAPPED_TEXTURE2D;
-typedef struct D3D10_MAPPED_TEXTURE3D {
-    void *pData;
-    UINT RowPitch;
-    UINT DepthPitch;
-} D3D10_MAPPED_TEXTURE3D;
-typedef enum D3D10_BIND_FLAG {
-    D3D10_BIND_VERTEX_BUFFER = 0x1,
-    D3D10_BIND_INDEX_BUFFER = 0x2,
-    D3D10_BIND_CONSTANT_BUFFER = 0x4,
-    D3D10_BIND_SHADER_RESOURCE = 0x8,
-    D3D10_BIND_STREAM_OUTPUT = 0x10,
-    D3D10_BIND_RENDER_TARGET = 0x20,
-    D3D10_BIND_DEPTH_STENCIL = 0x40
-} D3D10_BIND_FLAG;
-typedef enum D3D10_CPU_ACCESS_FLAG {
-    D3D10_CPU_ACCESS_WRITE = 0x10000,
-    D3D10_CPU_ACCESS_READ = 0x20000
-} D3D10_CPU_ACCESS_FLAG;
-typedef enum D3D10_RESOURCE_MISC_FLAG {
-    D3D10_RESOURCE_MISC_GENERATE_MIPS = 0x1,
-    D3D10_RESOURCE_MISC_SHARED = 0x2,
-    D3D10_RESOURCE_MISC_TEXTURECUBE = 0x4
-} D3D10_RESOURCE_MISC_FLAG;
-typedef enum D3D10_MAP_FLAG {
-    D3D10_MAP_FLAG_DO_NOT_WAIT = 0x100000
-} D3D10_MAP_FLAG;
-typedef enum D3D10_CLEAR_FLAG {
-    D3D10_CLEAR_DEPTH = 0x1,
-    D3D10_CLEAR_STENCIL = 0x2
-} D3D10_CLEAR_FLAG;
-typedef enum D3D10_COLOR_WRITE_ENABLE {
-    D3D10_COLOR_WRITE_ENABLE_RED = 0x1,
-    D3D10_COLOR_WRITE_ENABLE_GREEN = 0x2,
-    D3D10_COLOR_WRITE_ENABLE_BLUE = 0x4,
-    D3D10_COLOR_WRITE_ENABLE_ALPHA = 0x8,
-    D3D10_COLOR_WRITE_ENABLE_ALL = ((D3D10_COLOR_WRITE_ENABLE_RED | D3D10_COLOR_WRITE_ENABLE_GREEN) | D3D10_COLOR_WRITE_ENABLE_BLUE) | D3D10_COLOR_WRITE_ENABLE_ALPHA
-} D3D10_COLOR_WRITE_ENABLE;
-typedef enum D3D10_TEXTURECUBE_FACE {
-    D3D10_TEXTURECUBE_FACE_POSITIVE_X = 0,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_X = 1,
-    D3D10_TEXTURECUBE_FACE_POSITIVE_Y = 2,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_Y = 3,
-    D3D10_TEXTURECUBE_FACE_POSITIVE_Z = 4,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_Z = 5
-} D3D10_TEXTURECUBE_FACE;
-typedef enum D3D10_ASYNC_GETDATA_FLAG {
-    D3D10_ASYNC_GETDATA_DONOTFLUSH = 0x1
-} D3D10_ASYNC_GETDATA_FLAG;
-typedef enum D3D10_FILTER_TYPE {
-    D3D10_FILTER_TYPE_POINT = 0,
-    D3D10_FILTER_TYPE_LINEAR = 1
-} D3D10_FILTER_TYPE;
-typedef enum D3D10_QUERY_MISC_FLAG {
-    D3D10_QUERY_MISC_PREDICATEHINT = 0x1
-} D3D10_QUERY_MISC_FLAG;
-typedef struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT {
-    UINT64 Frequency;
-    BOOL Disjoint;
-} D3D10_QUERY_DATA_TIMESTAMP_DISJOINT;
-typedef struct D3D10_QUERY_DATA_PIPELINE_STATISTICS {
-    UINT64 IAVertices;
-    UINT64 IAPrimitives;
-    UINT64 VSInvocations;
-    UINT64 GSInvocations;
-    UINT64 GSPrimitives;
-    UINT64 CInvocations;
-    UINT64 CPrimitives;
-    UINT64 PSInvocations;
-} D3D10_QUERY_DATA_PIPELINE_STATISTICS;
-typedef struct D3D10_QUERY_DATA_SO_STATISTICS {
-    UINT64 NumPrimitivesWritten;
-    UINT64 PrimitivesStorageNeeded;
-} D3D10_QUERY_DATA_SO_STATISTICS;
-typedef enum D3D10_CREATE_DEVICE_FLAG {
-    D3D10_CREATE_DEVICE_SINGLETHREADED = 0x1,
-    D3D10_CREATE_DEVICE_DEBUG = 0x2,
-    D3D10_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
-    D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8
-} D3D10_CREATE_DEVICE_FLAG;
-#ifndef __ID3D10Device_FWD_DEFINED__
-#define __ID3D10Device_FWD_DEFINED__
-typedef interface ID3D10Device ID3D10Device;
-#endif
-
-/*****************************************************************************
- * ID3D10DeviceChild interface
- */
-#ifndef __ID3D10DeviceChild_INTERFACE_DEFINED__
-#define __ID3D10DeviceChild_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10DeviceChild, 0x9b7e4c00, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10DeviceChild : public IUnknown
-{
-    virtual void STDMETHODCALLTYPE GetDevice(
-        ID3D10Device **ppDevice) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
-        REFGUID guid,
-        const IUnknown *pData) = 0;
-
-};
-#else
-typedef struct ID3D10DeviceChildVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10DeviceChild* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10DeviceChild* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10DeviceChild* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10DeviceChild* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10DeviceChild* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10DeviceChild* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10DeviceChild* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10DeviceChildVtbl;
-interface ID3D10DeviceChild {
-    CONST_VTBL ID3D10DeviceChildVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10DeviceChild_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10DeviceChild_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10DeviceChild_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10DeviceChild_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10DeviceChild_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10DeviceChild_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10DeviceChild_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10DeviceChild_GetDevice_Proxy(
-    ID3D10DeviceChild* This,
-    ID3D10Device **ppDevice);
-void __RPC_STUB ID3D10DeviceChild_GetDevice_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10DeviceChild_GetPrivateData_Proxy(
-    ID3D10DeviceChild* This,
-    REFGUID guid,
-    UINT *pDataSize,
-    void *pData);
-void __RPC_STUB ID3D10DeviceChild_GetPrivateData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10DeviceChild_SetPrivateData_Proxy(
-    ID3D10DeviceChild* This,
-    REFGUID guid,
-    UINT DataSize,
-    const void *pData);
-void __RPC_STUB ID3D10DeviceChild_SetPrivateData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10DeviceChild_SetPrivateDataInterface_Proxy(
-    ID3D10DeviceChild* This,
-    REFGUID guid,
-    const IUnknown *pData);
-void __RPC_STUB ID3D10DeviceChild_SetPrivateDataInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10DeviceChild_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Resource interface
- */
-#ifndef __ID3D10Resource_INTERFACE_DEFINED__
-#define __ID3D10Resource_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Resource, 0x9b7e4c01, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Resource : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetType(
-        D3D10_RESOURCE_DIMENSION *rType) = 0;
-
-    virtual void STDMETHODCALLTYPE SetEvictionPriority(
-        UINT EvictionPriority) = 0;
-
-    virtual UINT STDMETHODCALLTYPE GetEvictionPriority(
-        ) = 0;
-
-};
-#else
-typedef struct ID3D10ResourceVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Resource* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Resource* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Resource* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Resource* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Resource* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Resource* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Resource* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Resource* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Resource* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Resource* This);
-
-    END_INTERFACE
-} ID3D10ResourceVtbl;
-interface ID3D10Resource {
-    CONST_VTBL ID3D10ResourceVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Resource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Resource_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Resource_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Resource_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Resource_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Resource_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Resource_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Resource_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Resource_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Resource_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Resource_GetType_Proxy(
-    ID3D10Resource* This,
-    D3D10_RESOURCE_DIMENSION *rType);
-void __RPC_STUB ID3D10Resource_GetType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Resource_SetEvictionPriority_Proxy(
-    ID3D10Resource* This,
-    UINT EvictionPriority);
-void __RPC_STUB ID3D10Resource_SetEvictionPriority_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-UINT STDMETHODCALLTYPE ID3D10Resource_GetEvictionPriority_Proxy(
-    ID3D10Resource* This);
-void __RPC_STUB ID3D10Resource_GetEvictionPriority_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Resource_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Buffer interface
- */
-#ifndef __ID3D10Buffer_INTERFACE_DEFINED__
-#define __ID3D10Buffer_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Buffer, 0x9b7e4c02, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Buffer : public ID3D10Resource
-{
-    virtual HRESULT STDMETHODCALLTYPE Map(
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        void **ppData) = 0;
-
-    virtual void STDMETHODCALLTYPE Unmap(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_BUFFER_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10BufferVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Buffer* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Buffer* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Buffer* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Buffer* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Buffer* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Buffer* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Buffer* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Buffer* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Buffer* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Buffer* This);
-
-    /*** ID3D10Buffer methods ***/
-    HRESULT (STDMETHODCALLTYPE *Map)(
-        ID3D10Buffer* This,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        void **ppData);
-
-    void (STDMETHODCALLTYPE *Unmap)(
-        ID3D10Buffer* This);
-
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Buffer* This,
-        D3D10_BUFFER_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10BufferVtbl;
-interface ID3D10Buffer {
-    CONST_VTBL ID3D10BufferVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Buffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Buffer_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Buffer_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Buffer_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Buffer_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Buffer_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Buffer_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Buffer_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Buffer_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Buffer_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-/*** ID3D10Buffer methods ***/
-#define ID3D10Buffer_Map(This,MapType,MapFlags,ppData) (This)->lpVtbl->Map(This,MapType,MapFlags,ppData)
-#define ID3D10Buffer_Unmap(This) (This)->lpVtbl->Unmap(This)
-#define ID3D10Buffer_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-HRESULT STDMETHODCALLTYPE ID3D10Buffer_Map_Proxy(
-    ID3D10Buffer* This,
-    D3D10_MAP MapType,
-    UINT MapFlags,
-    void **ppData);
-void __RPC_STUB ID3D10Buffer_Map_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Buffer_Unmap_Proxy(
-    ID3D10Buffer* This);
-void __RPC_STUB ID3D10Buffer_Unmap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Buffer_GetDesc_Proxy(
-    ID3D10Buffer* This,
-    D3D10_BUFFER_DESC *pDesc);
-void __RPC_STUB ID3D10Buffer_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Buffer_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Texture1D interface
- */
-#ifndef __ID3D10Texture1D_INTERFACE_DEFINED__
-#define __ID3D10Texture1D_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Texture1D, 0x9b7e4c03, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Texture1D : public ID3D10Resource
-{
-    virtual HRESULT STDMETHODCALLTYPE Map(
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        void **ppData) = 0;
-
-    virtual void STDMETHODCALLTYPE Unmap(
-        UINT Subresource) = 0;
-
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_TEXTURE1D_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10Texture1DVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Texture1D* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Texture1D* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Texture1D* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Texture1D* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Texture1D* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Texture1D* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Texture1D* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Texture1D* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Texture1D* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Texture1D* This);
-
-    /*** ID3D10Texture1D methods ***/
-    HRESULT (STDMETHODCALLTYPE *Map)(
-        ID3D10Texture1D* This,
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        void **ppData);
-
-    void (STDMETHODCALLTYPE *Unmap)(
-        ID3D10Texture1D* This,
-        UINT Subresource);
-
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Texture1D* This,
-        D3D10_TEXTURE1D_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10Texture1DVtbl;
-interface ID3D10Texture1D {
-    CONST_VTBL ID3D10Texture1DVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Texture1D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Texture1D_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Texture1D_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Texture1D_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Texture1D_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Texture1D_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Texture1D_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Texture1D_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Texture1D_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Texture1D_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-/*** ID3D10Texture1D methods ***/
-#define ID3D10Texture1D_Map(This,Subresource,MapType,MapFlags,ppData) (This)->lpVtbl->Map(This,Subresource,MapType,MapFlags,ppData)
-#define ID3D10Texture1D_Unmap(This,Subresource) (This)->lpVtbl->Unmap(This,Subresource)
-#define ID3D10Texture1D_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-HRESULT STDMETHODCALLTYPE ID3D10Texture1D_Map_Proxy(
-    ID3D10Texture1D* This,
-    UINT Subresource,
-    D3D10_MAP MapType,
-    UINT MapFlags,
-    void **ppData);
-void __RPC_STUB ID3D10Texture1D_Map_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture1D_Unmap_Proxy(
-    ID3D10Texture1D* This,
-    UINT Subresource);
-void __RPC_STUB ID3D10Texture1D_Unmap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture1D_GetDesc_Proxy(
-    ID3D10Texture1D* This,
-    D3D10_TEXTURE1D_DESC *pDesc);
-void __RPC_STUB ID3D10Texture1D_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Texture1D_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Texture2D interface
- */
-#ifndef __ID3D10Texture2D_INTERFACE_DEFINED__
-#define __ID3D10Texture2D_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Texture2D, 0x9b7e4c04, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Texture2D : public ID3D10Resource
-{
-    virtual HRESULT STDMETHODCALLTYPE Map(
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        D3D10_MAPPED_TEXTURE2D *pMappedTex2D) = 0;
-
-    virtual void STDMETHODCALLTYPE Unmap(
-        UINT Subresource) = 0;
-
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_TEXTURE2D_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10Texture2DVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Texture2D* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Texture2D* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Texture2D* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Texture2D* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Texture2D* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Texture2D* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Texture2D* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Texture2D* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Texture2D* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Texture2D* This);
-
-    /*** ID3D10Texture2D methods ***/
-    HRESULT (STDMETHODCALLTYPE *Map)(
-        ID3D10Texture2D* This,
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        D3D10_MAPPED_TEXTURE2D *pMappedTex2D);
-
-    void (STDMETHODCALLTYPE *Unmap)(
-        ID3D10Texture2D* This,
-        UINT Subresource);
-
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Texture2D* This,
-        D3D10_TEXTURE2D_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10Texture2DVtbl;
-interface ID3D10Texture2D {
-    CONST_VTBL ID3D10Texture2DVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Texture2D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Texture2D_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Texture2D_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Texture2D_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Texture2D_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Texture2D_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Texture2D_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Texture2D_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Texture2D_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Texture2D_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-/*** ID3D10Texture2D methods ***/
-#define ID3D10Texture2D_Map(This,Subresource,MapType,MapFlags,pMappedTex2D) (This)->lpVtbl->Map(This,Subresource,MapType,MapFlags,pMappedTex2D)
-#define ID3D10Texture2D_Unmap(This,Subresource) (This)->lpVtbl->Unmap(This,Subresource)
-#define ID3D10Texture2D_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-HRESULT STDMETHODCALLTYPE ID3D10Texture2D_Map_Proxy(
-    ID3D10Texture2D* This,
-    UINT Subresource,
-    D3D10_MAP MapType,
-    UINT MapFlags,
-    D3D10_MAPPED_TEXTURE2D *pMappedTex2D);
-void __RPC_STUB ID3D10Texture2D_Map_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture2D_Unmap_Proxy(
-    ID3D10Texture2D* This,
-    UINT Subresource);
-void __RPC_STUB ID3D10Texture2D_Unmap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture2D_GetDesc_Proxy(
-    ID3D10Texture2D* This,
-    D3D10_TEXTURE2D_DESC *pDesc);
-void __RPC_STUB ID3D10Texture2D_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Texture2D_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Texture3D interface
- */
-#ifndef __ID3D10Texture3D_INTERFACE_DEFINED__
-#define __ID3D10Texture3D_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Texture3D, 0x9b7e4c05, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Texture3D : public ID3D10Resource
-{
-    virtual HRESULT STDMETHODCALLTYPE Map(
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        D3D10_MAPPED_TEXTURE3D *pMappedTex3D) = 0;
-
-    virtual void STDMETHODCALLTYPE Unmap(
-        UINT Subresource) = 0;
-
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_TEXTURE3D_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10Texture3DVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Texture3D* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Texture3D* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Texture3D* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Texture3D* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Texture3D* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Texture3D* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Texture3D* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Texture3D* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Texture3D* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Texture3D* This);
-
-    /*** ID3D10Texture3D methods ***/
-    HRESULT (STDMETHODCALLTYPE *Map)(
-        ID3D10Texture3D* This,
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        D3D10_MAPPED_TEXTURE3D *pMappedTex3D);
-
-    void (STDMETHODCALLTYPE *Unmap)(
-        ID3D10Texture3D* This,
-        UINT Subresource);
-
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Texture3D* This,
-        D3D10_TEXTURE3D_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10Texture3DVtbl;
-interface ID3D10Texture3D {
-    CONST_VTBL ID3D10Texture3DVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Texture3D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Texture3D_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Texture3D_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Texture3D_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Texture3D_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Texture3D_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Texture3D_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Texture3D_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Texture3D_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Texture3D_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-/*** ID3D10Texture3D methods ***/
-#define ID3D10Texture3D_Map(This,Subresource,MapType,MapFlags,pMappedTex3D) (This)->lpVtbl->Map(This,Subresource,MapType,MapFlags,pMappedTex3D)
-#define ID3D10Texture3D_Unmap(This,Subresource) (This)->lpVtbl->Unmap(This,Subresource)
-#define ID3D10Texture3D_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-HRESULT STDMETHODCALLTYPE ID3D10Texture3D_Map_Proxy(
-    ID3D10Texture3D* This,
-    UINT Subresource,
-    D3D10_MAP MapType,
-    UINT MapFlags,
-    D3D10_MAPPED_TEXTURE3D *pMappedTex3D);
-void __RPC_STUB ID3D10Texture3D_Map_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture3D_Unmap_Proxy(
-    ID3D10Texture3D* This,
-    UINT Subresource);
-void __RPC_STUB ID3D10Texture3D_Unmap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture3D_GetDesc_Proxy(
-    ID3D10Texture3D* This,
-    D3D10_TEXTURE3D_DESC *pDesc);
-void __RPC_STUB ID3D10Texture3D_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Texture3D_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10View interface
- */
-#ifndef __ID3D10View_INTERFACE_DEFINED__
-#define __ID3D10View_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10View, 0xc902b03f, 0x60a7, 0x49ba, 0x99,0x36, 0x2a,0x3a,0xb3,0x7a,0x7e,0x33);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10View : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetResource(
-        ID3D10Resource **ppResource) = 0;
-
-};
-#else
-typedef struct ID3D10ViewVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10View* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10View* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10View* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10View* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10View* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10View* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10View* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10View methods ***/
-    void (STDMETHODCALLTYPE *GetResource)(
-        ID3D10View* This,
-        ID3D10Resource **ppResource);
-
-    END_INTERFACE
-} ID3D10ViewVtbl;
-interface ID3D10View {
-    CONST_VTBL ID3D10ViewVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10View_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10View_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10View_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10View_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10View_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10View_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10View_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10View methods ***/
-#define ID3D10View_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10View_GetResource_Proxy(
-    ID3D10View* This,
-    ID3D10Resource **ppResource);
-void __RPC_STUB ID3D10View_GetResource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10View_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10DepthStencilView interface
- */
-#ifndef __ID3D10DepthStencilView_INTERFACE_DEFINED__
-#define __ID3D10DepthStencilView_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10DepthStencilView, 0x9b7e4c09, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10DepthStencilView : public ID3D10View
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10DepthStencilViewVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10DepthStencilView* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10DepthStencilView* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10DepthStencilView* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10DepthStencilView* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10DepthStencilView* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10DepthStencilView* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10DepthStencilView* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10View methods ***/
-    void (STDMETHODCALLTYPE *GetResource)(
-        ID3D10DepthStencilView* This,
-        ID3D10Resource **ppResource);
-
-    /*** ID3D10DepthStencilView methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10DepthStencilView* This,
-        D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10DepthStencilViewVtbl;
-interface ID3D10DepthStencilView {
-    CONST_VTBL ID3D10DepthStencilViewVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10DepthStencilView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10DepthStencilView_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10DepthStencilView_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10DepthStencilView_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10DepthStencilView_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10DepthStencilView_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10DepthStencilView_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10View methods ***/
-#define ID3D10DepthStencilView_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
-/*** ID3D10DepthStencilView methods ***/
-#define ID3D10DepthStencilView_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10DepthStencilView_GetDesc_Proxy(
-    ID3D10DepthStencilView* This,
-    D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
-void __RPC_STUB ID3D10DepthStencilView_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10DepthStencilView_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10RenderTargetView interface
- */
-#ifndef __ID3D10RenderTargetView_INTERFACE_DEFINED__
-#define __ID3D10RenderTargetView_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10RenderTargetView, 0x9b7e4c08, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10RenderTargetView : public ID3D10View
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_RENDER_TARGET_VIEW_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10RenderTargetViewVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10RenderTargetView* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10RenderTargetView* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10RenderTargetView* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10RenderTargetView* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10RenderTargetView* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10RenderTargetView* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10RenderTargetView* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10View methods ***/
-    void (STDMETHODCALLTYPE *GetResource)(
-        ID3D10RenderTargetView* This,
-        ID3D10Resource **ppResource);
-
-    /*** ID3D10RenderTargetView methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10RenderTargetView* This,
-        D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10RenderTargetViewVtbl;
-interface ID3D10RenderTargetView {
-    CONST_VTBL ID3D10RenderTargetViewVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10RenderTargetView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10RenderTargetView_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10RenderTargetView_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10RenderTargetView_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10RenderTargetView_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10RenderTargetView_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10RenderTargetView_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10View methods ***/
-#define ID3D10RenderTargetView_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
-/*** ID3D10RenderTargetView methods ***/
-#define ID3D10RenderTargetView_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10RenderTargetView_GetDesc_Proxy(
-    ID3D10RenderTargetView* This,
-    D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
-void __RPC_STUB ID3D10RenderTargetView_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10RenderTargetView_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10ShaderResourceView interface
- */
-#ifndef __ID3D10ShaderResourceView_INTERFACE_DEFINED__
-#define __ID3D10ShaderResourceView_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10ShaderResourceView, 0x9b7e4c07, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10ShaderResourceView : public ID3D10View
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10ShaderResourceViewVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10ShaderResourceView* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10ShaderResourceView* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10ShaderResourceView* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10ShaderResourceView* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10ShaderResourceView* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10ShaderResourceView* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10ShaderResourceView* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10View methods ***/
-    void (STDMETHODCALLTYPE *GetResource)(
-        ID3D10ShaderResourceView* This,
-        ID3D10Resource **ppResource);
-
-    /*** ID3D10ShaderResourceView methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10ShaderResourceView* This,
-        D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10ShaderResourceViewVtbl;
-interface ID3D10ShaderResourceView {
-    CONST_VTBL ID3D10ShaderResourceViewVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10ShaderResourceView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10ShaderResourceView_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10ShaderResourceView_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10ShaderResourceView_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10ShaderResourceView_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10ShaderResourceView_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10ShaderResourceView_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10View methods ***/
-#define ID3D10ShaderResourceView_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
-/*** ID3D10ShaderResourceView methods ***/
-#define ID3D10ShaderResourceView_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10ShaderResourceView_GetDesc_Proxy(
-    ID3D10ShaderResourceView* This,
-    D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
-void __RPC_STUB ID3D10ShaderResourceView_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10ShaderResourceView_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10BlendState interface
- */
-#ifndef __ID3D10BlendState_INTERFACE_DEFINED__
-#define __ID3D10BlendState_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10BlendState, 0xedad8d19, 0x8a35, 0x4d6d, 0x85,0x66, 0x2e,0xa2,0x76,0xcd,0xe1,0x61);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10BlendState : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_BLEND_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10BlendStateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10BlendState* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10BlendState* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10BlendState* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10BlendState* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10BlendState* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10BlendState* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10BlendState* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10BlendState methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10BlendState* This,
-        D3D10_BLEND_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10BlendStateVtbl;
-interface ID3D10BlendState {
-    CONST_VTBL ID3D10BlendStateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10BlendState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10BlendState_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10BlendState_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10BlendState_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10BlendState_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10BlendState_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10BlendState_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10BlendState methods ***/
-#define ID3D10BlendState_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10BlendState_GetDesc_Proxy(
-    ID3D10BlendState* This,
-    D3D10_BLEND_DESC *pDesc);
-void __RPC_STUB ID3D10BlendState_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10BlendState_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10DepthStencilState interface
- */
-#ifndef __ID3D10DepthStencilState_INTERFACE_DEFINED__
-#define __ID3D10DepthStencilState_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10DepthStencilState, 0x2b4b1cc8, 0xa4ad, 0x41f8, 0x83,0x22, 0xca,0x86,0xfc,0x3e,0xc6,0x75);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10DepthStencilState : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_DEPTH_STENCIL_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10DepthStencilStateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10DepthStencilState* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10DepthStencilState* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10DepthStencilState* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10DepthStencilState* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10DepthStencilState* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10DepthStencilState* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10DepthStencilState* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10DepthStencilState methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10DepthStencilState* This,
-        D3D10_DEPTH_STENCIL_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10DepthStencilStateVtbl;
-interface ID3D10DepthStencilState {
-    CONST_VTBL ID3D10DepthStencilStateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10DepthStencilState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10DepthStencilState_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10DepthStencilState_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10DepthStencilState_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10DepthStencilState_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10DepthStencilState_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10DepthStencilState_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10DepthStencilState methods ***/
-#define ID3D10DepthStencilState_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10DepthStencilState_GetDesc_Proxy(
-    ID3D10DepthStencilState* This,
-    D3D10_DEPTH_STENCIL_DESC *pDesc);
-void __RPC_STUB ID3D10DepthStencilState_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10DepthStencilState_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10GeometryShader interface
- */
-#ifndef __ID3D10GeometryShader_INTERFACE_DEFINED__
-#define __ID3D10GeometryShader_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10GeometryShader, 0x6316be88, 0x54cd, 0x4040, 0xab,0x44, 0x20,0x46,0x1b,0xc8,0x1f,0x68);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10GeometryShader : public ID3D10DeviceChild
-{
-};
-#else
-typedef struct ID3D10GeometryShaderVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10GeometryShader* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10GeometryShader* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10GeometryShader* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10GeometryShader* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10GeometryShader* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10GeometryShader* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10GeometryShader* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10GeometryShaderVtbl;
-interface ID3D10GeometryShader {
-    CONST_VTBL ID3D10GeometryShaderVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10GeometryShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10GeometryShader_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10GeometryShader_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10GeometryShader_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10GeometryShader_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10GeometryShader_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10GeometryShader_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10GeometryShader_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10InputLayout interface
- */
-#ifndef __ID3D10InputLayout_INTERFACE_DEFINED__
-#define __ID3D10InputLayout_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10InputLayout, 0x9b7e4c0b, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10InputLayout : public ID3D10DeviceChild
-{
-};
-#else
-typedef struct ID3D10InputLayoutVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10InputLayout* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10InputLayout* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10InputLayout* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10InputLayout* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10InputLayout* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10InputLayout* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10InputLayout* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10InputLayoutVtbl;
-interface ID3D10InputLayout {
-    CONST_VTBL ID3D10InputLayoutVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10InputLayout_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10InputLayout_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10InputLayout_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10InputLayout_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10InputLayout_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10InputLayout_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10InputLayout_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10InputLayout_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10PixelShader interface
- */
-#ifndef __ID3D10PixelShader_INTERFACE_DEFINED__
-#define __ID3D10PixelShader_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10PixelShader, 0x4968b601, 0x9d00, 0x4cde, 0x83,0x46, 0x8e,0x7f,0x67,0x58,0x19,0xb6);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10PixelShader : public ID3D10DeviceChild
-{
-};
-#else
-typedef struct ID3D10PixelShaderVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10PixelShader* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10PixelShader* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10PixelShader* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10PixelShader* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10PixelShader* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10PixelShader* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10PixelShader* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10PixelShaderVtbl;
-interface ID3D10PixelShader {
-    CONST_VTBL ID3D10PixelShaderVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10PixelShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10PixelShader_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10PixelShader_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10PixelShader_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10PixelShader_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10PixelShader_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10PixelShader_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10PixelShader_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10RasterizerState interface
- */
-#ifndef __ID3D10RasterizerState_INTERFACE_DEFINED__
-#define __ID3D10RasterizerState_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10RasterizerState, 0xa2a07292, 0x89af, 0x4345, 0xbe,0x2e, 0xc5,0x3d,0x9f,0xbb,0x6e,0x9f);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10RasterizerState : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_RASTERIZER_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10RasterizerStateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10RasterizerState* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10RasterizerState* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10RasterizerState* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10RasterizerState* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10RasterizerState* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10RasterizerState* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10RasterizerState* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10RasterizerState methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10RasterizerState* This,
-        D3D10_RASTERIZER_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10RasterizerStateVtbl;
-interface ID3D10RasterizerState {
-    CONST_VTBL ID3D10RasterizerStateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10RasterizerState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10RasterizerState_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10RasterizerState_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10RasterizerState_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10RasterizerState_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10RasterizerState_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10RasterizerState_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10RasterizerState methods ***/
-#define ID3D10RasterizerState_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10RasterizerState_GetDesc_Proxy(
-    ID3D10RasterizerState* This,
-    D3D10_RASTERIZER_DESC *pDesc);
-void __RPC_STUB ID3D10RasterizerState_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10RasterizerState_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10SamplerState interface
- */
-#ifndef __ID3D10SamplerState_INTERFACE_DEFINED__
-#define __ID3D10SamplerState_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10SamplerState, 0x9b7e4c0c, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10SamplerState : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_SAMPLER_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10SamplerStateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10SamplerState* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10SamplerState* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10SamplerState* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10SamplerState* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10SamplerState* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10SamplerState* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10SamplerState* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10SamplerState methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10SamplerState* This,
-        D3D10_SAMPLER_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10SamplerStateVtbl;
-interface ID3D10SamplerState {
-    CONST_VTBL ID3D10SamplerStateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10SamplerState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10SamplerState_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10SamplerState_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10SamplerState_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10SamplerState_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10SamplerState_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10SamplerState_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10SamplerState methods ***/
-#define ID3D10SamplerState_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10SamplerState_GetDesc_Proxy(
-    ID3D10SamplerState* This,
-    D3D10_SAMPLER_DESC *pDesc);
-void __RPC_STUB ID3D10SamplerState_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10SamplerState_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10VertexShader interface
- */
-#ifndef __ID3D10VertexShader_INTERFACE_DEFINED__
-#define __ID3D10VertexShader_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10VertexShader, 0x9b7e4c0a, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10VertexShader : public ID3D10DeviceChild
-{
-};
-#else
-typedef struct ID3D10VertexShaderVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10VertexShader* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10VertexShader* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10VertexShader* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10VertexShader* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10VertexShader* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10VertexShader* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10VertexShader* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10VertexShaderVtbl;
-interface ID3D10VertexShader {
-    CONST_VTBL ID3D10VertexShaderVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10VertexShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10VertexShader_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10VertexShader_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10VertexShader_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10VertexShader_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10VertexShader_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10VertexShader_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10VertexShader_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Asynchronous interface
- */
-#ifndef __ID3D10Asynchronous_INTERFACE_DEFINED__
-#define __ID3D10Asynchronous_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Asynchronous, 0x9b7e4c0d, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Asynchronous : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE Begin(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE End(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE GetData(
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags) = 0;
-
-    virtual UINT STDMETHODCALLTYPE GetDataSize(
-        ) = 0;
-
-};
-#else
-typedef struct ID3D10AsynchronousVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Asynchronous* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Asynchronous* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Asynchronous* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Asynchronous* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Asynchronous* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Asynchronous* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Asynchronous* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Asynchronous methods ***/
-    void (STDMETHODCALLTYPE *Begin)(
-        ID3D10Asynchronous* This);
-
-    void (STDMETHODCALLTYPE *End)(
-        ID3D10Asynchronous* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetData)(
-        ID3D10Asynchronous* This,
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags);
-
-    UINT (STDMETHODCALLTYPE *GetDataSize)(
-        ID3D10Asynchronous* This);
-
-    END_INTERFACE
-} ID3D10AsynchronousVtbl;
-interface ID3D10Asynchronous {
-    CONST_VTBL ID3D10AsynchronousVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Asynchronous_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Asynchronous_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Asynchronous_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Asynchronous_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Asynchronous_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Asynchronous_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Asynchronous_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Asynchronous methods ***/
-#define ID3D10Asynchronous_Begin(This) (This)->lpVtbl->Begin(This)
-#define ID3D10Asynchronous_End(This) (This)->lpVtbl->End(This)
-#define ID3D10Asynchronous_GetData(This,pData,DataSize,GetDataFlags) (This)->lpVtbl->GetData(This,pData,DataSize,GetDataFlags)
-#define ID3D10Asynchronous_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Asynchronous_Begin_Proxy(
-    ID3D10Asynchronous* This);
-void __RPC_STUB ID3D10Asynchronous_Begin_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Asynchronous_End_Proxy(
-    ID3D10Asynchronous* This);
-void __RPC_STUB ID3D10Asynchronous_End_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Asynchronous_GetData_Proxy(
-    ID3D10Asynchronous* This,
-    void *pData,
-    UINT DataSize,
-    UINT GetDataFlags);
-void __RPC_STUB ID3D10Asynchronous_GetData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-UINT STDMETHODCALLTYPE ID3D10Asynchronous_GetDataSize_Proxy(
-    ID3D10Asynchronous* This);
-void __RPC_STUB ID3D10Asynchronous_GetDataSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Asynchronous_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Counter interface
- */
-#ifndef __ID3D10Counter_INTERFACE_DEFINED__
-#define __ID3D10Counter_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Counter, 0x9b7e4c11, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Counter : public ID3D10Asynchronous
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_COUNTER_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10CounterVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Counter* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Counter* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Counter* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Counter* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Counter* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Counter* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Counter* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Asynchronous methods ***/
-    void (STDMETHODCALLTYPE *Begin)(
-        ID3D10Counter* This);
-
-    void (STDMETHODCALLTYPE *End)(
-        ID3D10Counter* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetData)(
-        ID3D10Counter* This,
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags);
-
-    UINT (STDMETHODCALLTYPE *GetDataSize)(
-        ID3D10Counter* This);
-
-    /*** ID3D10Counter methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Counter* This,
-        D3D10_COUNTER_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10CounterVtbl;
-interface ID3D10Counter {
-    CONST_VTBL ID3D10CounterVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Counter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Counter_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Counter_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Counter_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Counter_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Counter_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Counter_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Asynchronous methods ***/
-#define ID3D10Counter_Begin(This) (This)->lpVtbl->Begin(This)
-#define ID3D10Counter_End(This) (This)->lpVtbl->End(This)
-#define ID3D10Counter_GetData(This,pData,DataSize,GetDataFlags) (This)->lpVtbl->GetData(This,pData,DataSize,GetDataFlags)
-#define ID3D10Counter_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
-/*** ID3D10Counter methods ***/
-#define ID3D10Counter_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Counter_GetDesc_Proxy(
-    ID3D10Counter* This,
-    D3D10_COUNTER_DESC *pDesc);
-void __RPC_STUB ID3D10Counter_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Counter_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Query interface
- */
-#ifndef __ID3D10Query_INTERFACE_DEFINED__
-#define __ID3D10Query_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Query, 0x9b7e4c0e, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Query : public ID3D10Asynchronous
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_QUERY_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10QueryVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Query* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Query* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Query* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Query* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Query* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Query* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Query* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Asynchronous methods ***/
-    void (STDMETHODCALLTYPE *Begin)(
-        ID3D10Query* This);
-
-    void (STDMETHODCALLTYPE *End)(
-        ID3D10Query* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetData)(
-        ID3D10Query* This,
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags);
-
-    UINT (STDMETHODCALLTYPE *GetDataSize)(
-        ID3D10Query* This);
-
-    /*** ID3D10Query methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Query* This,
-        D3D10_QUERY_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10QueryVtbl;
-interface ID3D10Query {
-    CONST_VTBL ID3D10QueryVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Query_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Query_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Query_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Query_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Query_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Query_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Query_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Asynchronous methods ***/
-#define ID3D10Query_Begin(This) (This)->lpVtbl->Begin(This)
-#define ID3D10Query_End(This) (This)->lpVtbl->End(This)
-#define ID3D10Query_GetData(This,pData,DataSize,GetDataFlags) (This)->lpVtbl->GetData(This,pData,DataSize,GetDataFlags)
-#define ID3D10Query_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
-/*** ID3D10Query methods ***/
-#define ID3D10Query_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Query_GetDesc_Proxy(
-    ID3D10Query* This,
-    D3D10_QUERY_DESC *pDesc);
-void __RPC_STUB ID3D10Query_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Query_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Predicate interface
- */
-#ifndef __ID3D10Predicate_INTERFACE_DEFINED__
-#define __ID3D10Predicate_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Predicate, 0x9b7e4c10, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Predicate : public ID3D10Query
-{
-};
-#else
-typedef struct ID3D10PredicateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Predicate* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Predicate* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Predicate* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Predicate* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Predicate* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Predicate* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Predicate* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Asynchronous methods ***/
-    void (STDMETHODCALLTYPE *Begin)(
-        ID3D10Predicate* This);
-
-    void (STDMETHODCALLTYPE *End)(
-        ID3D10Predicate* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetData)(
-        ID3D10Predicate* This,
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags);
-
-    UINT (STDMETHODCALLTYPE *GetDataSize)(
-        ID3D10Predicate* This);
-
-    /*** ID3D10Query methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Predicate* This,
-        D3D10_QUERY_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10PredicateVtbl;
-interface ID3D10Predicate {
-    CONST_VTBL ID3D10PredicateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Predicate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Predicate_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Predicate_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Predicate_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Predicate_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Predicate_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Predicate_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Asynchronous methods ***/
-#define ID3D10Predicate_Begin(This) (This)->lpVtbl->Begin(This)
-#define ID3D10Predicate_End(This) (This)->lpVtbl->End(This)
-#define ID3D10Predicate_GetData(This,pData,DataSize,GetDataFlags) (This)->lpVtbl->GetData(This,pData,DataSize,GetDataFlags)
-#define ID3D10Predicate_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
-/*** ID3D10Query methods ***/
-#define ID3D10Predicate_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10Predicate_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Device interface
- */
-#ifndef __ID3D10Device_INTERFACE_DEFINED__
-#define __ID3D10Device_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Device, 0x9b7e4c0f, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Device : public IUnknown
-{
-    virtual void STDMETHODCALLTYPE VSSetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE PSSetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE PSSetShader(
-        ID3D10PixelShader *pPixelShader) = 0;
-
-    virtual void STDMETHODCALLTYPE PSSetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE VSSetShader(
-        ID3D10VertexShader *pVertexShader) = 0;
-
-    virtual void STDMETHODCALLTYPE DrawIndexed(
-        UINT IndexCount,
-        UINT StartIndexLocation,
-        INT BaseVertexLocation) = 0;
-
-    virtual void STDMETHODCALLTYPE Draw(
-        UINT VertexCount,
-        UINT StartVertexLocation) = 0;
-
-    virtual void STDMETHODCALLTYPE PSSetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE IASetInputLayout(
-        ID3D10InputLayout *pInputLayout) = 0;
-
-    virtual void STDMETHODCALLTYPE IASetVertexBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppVertexBuffers,
-        const UINT *pStrides,
-        const UINT *pOffsets) = 0;
-
-    virtual void STDMETHODCALLTYPE IASetIndexBuffer(
-        ID3D10Buffer *pIndexBuffer,
-        DXGI_FORMAT Format,
-        UINT Offset) = 0;
-
-    virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
-        UINT IndexCountPerInstance,
-        UINT InstanceCount,
-        UINT StartIndexLocation,
-        INT BaseVertexLocation,
-        UINT StartInstanceLocation) = 0;
-
-    virtual void STDMETHODCALLTYPE DrawInstanced(
-        UINT VertexCountPerInstance,
-        UINT InstanceCount,
-        UINT StartVertexLocation,
-        UINT StartInstanceLocation) = 0;
-
-    virtual void STDMETHODCALLTYPE GSSetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE GSSetShader(
-        ID3D10GeometryShader *pShader) = 0;
-
-    virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
-        D3D10_PRIMITIVE_TOPOLOGY Topology) = 0;
-
-    virtual void STDMETHODCALLTYPE VSSetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE VSSetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE SetPredication(
-        ID3D10Predicate *pPredicate,
-        BOOL PredicateValue) = 0;
-
-    virtual void STDMETHODCALLTYPE GSSetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE GSSetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE OMSetRenderTargets(
-        UINT NumViews,
-        ID3D10RenderTargetView *const *ppRenderTargetViews,
-        ID3D10DepthStencilView *pDepthStencilView) = 0;
-
-    virtual void STDMETHODCALLTYPE OMSetBlendState(
-        ID3D10BlendState *pBlendState,
-        const FLOAT BlendFactor[4],
-        UINT SampleMask) = 0;
-
-    virtual void STDMETHODCALLTYPE OMSetDepthStencilState(
-        ID3D10DepthStencilState *pDepthStencilState,
-        UINT StencilRef) = 0;
-
-    virtual void STDMETHODCALLTYPE SOSetTargets(
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppSOTargets,
-        const UINT *pOffsets) = 0;
-
-    virtual void STDMETHODCALLTYPE DrawAuto(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE RSSetState(
-        ID3D10RasterizerState *pRasterizerState) = 0;
-
-    virtual void STDMETHODCALLTYPE RSSetViewports(
-        UINT NumViewports,
-        const D3D10_VIEWPORT *pViewports) = 0;
-
-    virtual void STDMETHODCALLTYPE RSSetScissorRects(
-        UINT NumRects,
-        const D3D10_RECT *pRects) = 0;
-
-    virtual void STDMETHODCALLTYPE CopySubresourceRegion(
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        UINT DstX,
-        UINT DstY,
-        UINT DstZ,
-        ID3D10Resource *pSrcResource,
-        UINT SrcSubresource,
-        const D3D10_BOX *pSrcBox) = 0;
-
-    virtual void STDMETHODCALLTYPE CopyResource(
-        ID3D10Resource *pDstResource,
-        ID3D10Resource *pSrcResource) = 0;
-
-    virtual void STDMETHODCALLTYPE UpdateSubresource(
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        const D3D10_BOX *pDstBox,
-        const void *pSrcData,
-        UINT SrcRowPitch,
-        UINT SrcDepthPitch) = 0;
-
-    virtual void STDMETHODCALLTYPE ClearRenderTargetView(
-        ID3D10RenderTargetView *pRenderTargetView,
-        const FLOAT ColorRGBA[4]) = 0;
-
-    virtual void STDMETHODCALLTYPE ClearDepthStencilView(
-        ID3D10DepthStencilView *pDepthStencilView,
-        UINT ClearFlags,
-        FLOAT Depth,
-        UINT8 Stencil) = 0;
-
-    virtual void STDMETHODCALLTYPE GenerateMips(
-        ID3D10ShaderResourceView *pShaderResourceView) = 0;
-
-    virtual void STDMETHODCALLTYPE ResolveSubresource(
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        ID3D10Resource *pSrcResource,
-        UINT SrcSubresource,
-        DXGI_FORMAT Format) = 0;
-
-    virtual void STDMETHODCALLTYPE VSGetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE PSGetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE PSGetShader(
-        ID3D10PixelShader **ppPixelShader) = 0;
-
-    virtual void STDMETHODCALLTYPE PSGetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE VSGetShader(
-        ID3D10VertexShader **ppVertexShader) = 0;
-
-    virtual void STDMETHODCALLTYPE PSGetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE IAGetInputLayout(
-        ID3D10InputLayout **ppInputLayout) = 0;
-
-    virtual void STDMETHODCALLTYPE IAGetVertexBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppVertexBuffers,
-        UINT *pStrides,
-        UINT *pOffsets) = 0;
-
-    virtual void STDMETHODCALLTYPE IAGetIndexBuffer(
-        ID3D10Buffer **pIndexBuffer,
-        DXGI_FORMAT *Format,
-        UINT *Offset) = 0;
-
-    virtual void STDMETHODCALLTYPE GSGetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE GSGetShader(
-        ID3D10GeometryShader **ppGeometryShader) = 0;
-
-    virtual void STDMETHODCALLTYPE IAGetPrimitiveTopology(
-        D3D10_PRIMITIVE_TOPOLOGY *pTopology) = 0;
-
-    virtual void STDMETHODCALLTYPE VSGetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE VSGetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE GetPredication(
-        ID3D10Predicate **ppPredicate,
-        BOOL *pPredicateValue) = 0;
-
-    virtual void STDMETHODCALLTYPE GSGetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE GSGetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE OMGetRenderTargets(
-        UINT NumViews,
-        ID3D10RenderTargetView **ppRenderTargetViews,
-        ID3D10DepthStencilView **ppDepthStencilView) = 0;
-
-    virtual void STDMETHODCALLTYPE OMGetBlendState(
-        ID3D10BlendState **ppBlendState,
-        FLOAT BlendFactor[4],
-        UINT *pSampleMask) = 0;
-
-    virtual void STDMETHODCALLTYPE OMGetDepthStencilState(
-        ID3D10DepthStencilState **ppDepthStencilState,
-        UINT *pStencilRef) = 0;
-
-    virtual void STDMETHODCALLTYPE SOGetTargets(
-        UINT NumBuffers,
-        ID3D10Buffer **ppSOTargets,
-        UINT *pOffsets) = 0;
-
-    virtual void STDMETHODCALLTYPE RSGetState(
-        ID3D10RasterizerState **ppRasterizerState) = 0;
-
-    virtual void STDMETHODCALLTYPE RSGetViewports(
-        UINT *NumViewports,
-        D3D10_VIEWPORT *pViewports) = 0;
-
-    virtual void STDMETHODCALLTYPE RSGetScissorRects(
-        UINT *NumRects,
-        D3D10_RECT *pRects) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetExceptionMode(
-        UINT RaiseFlags) = 0;
-
-    virtual UINT STDMETHODCALLTYPE GetExceptionMode(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
-        REFGUID guid,
-        const IUnknown *pData) = 0;
-
-    virtual void STDMETHODCALLTYPE ClearState(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE Flush(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateBuffer(
-        const D3D10_BUFFER_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Buffer **ppBuffer) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateTexture1D(
-        const D3D10_TEXTURE1D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture1D **ppTexture1D) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateTexture2D(
-        const D3D10_TEXTURE2D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture2D **ppTexture2D) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateTexture3D(
-        const D3D10_TEXTURE3D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture3D **ppTexture3D) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateShaderResourceView(
-        ID3D10Resource *pResource,
-        const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
-        ID3D10ShaderResourceView **ppSRView) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateRenderTargetView(
-        ID3D10Resource *pResource,
-        const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
-        ID3D10RenderTargetView **ppRTView) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilView(
-        ID3D10Resource *pResource,
-        const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
-        ID3D10DepthStencilView **ppDepthStencilView) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateInputLayout(
-        const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
-        UINT NumElements,
-        const void *pShaderBytecodeWithInputSignature,
-        SIZE_T BytecodeLength,
-        ID3D10InputLayout **ppInputLayout) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateVertexShader(
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10VertexShader **ppVertexShader) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateGeometryShader(
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10GeometryShader **ppGeometryShader) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateGeometryShaderWithStreamOutput(
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
-        UINT NumEntries,
-        UINT OutputStreamStride,
-        ID3D10GeometryShader **ppGeometryShader) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10PixelShader **ppPixelShader) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateBlendState(
-        const D3D10_BLEND_DESC *pBlendStateDesc,
-        ID3D10BlendState **ppBlendState) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilState(
-        const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
-        ID3D10DepthStencilState **ppDepthStencilState) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateRasterizerState(
-        const D3D10_RASTERIZER_DESC *pRasterizerDesc,
-        ID3D10RasterizerState **ppRasterizerState) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateSamplerState(
-        const D3D10_SAMPLER_DESC *pSamplerDesc,
-        ID3D10SamplerState **ppSamplerState) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateQuery(
-        const D3D10_QUERY_DESC *pQueryDesc,
-        ID3D10Query **ppQuery) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreatePredicate(
-        const D3D10_QUERY_DESC *pPredicateDesc,
-        ID3D10Predicate **ppPredicate) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateCounter(
-        const D3D10_COUNTER_DESC *pCounterDesc,
-        ID3D10Counter **ppCounter) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CheckFormatSupport(
-        DXGI_FORMAT Format,
-        UINT *pFormatSupport) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CheckMultisampleQualityLevels(
-        DXGI_FORMAT Format,
-        UINT SampleCount,
-        UINT *pNumQualityLevels) = 0;
-
-    virtual void STDMETHODCALLTYPE CheckCounterInfo(
-        D3D10_COUNTER_INFO *pCounterInfo) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CheckCounter(
-        const D3D10_COUNTER_DESC *pDesc,
-        D3D10_COUNTER_TYPE *pType,
-        UINT *pActiveCounters,
-        LPSTR szName,
-        UINT *pNameLength,
-        LPSTR szUnits,
-        UINT *pUnitsLength,
-        LPSTR szDescription,
-        UINT *pDescriptionLength) = 0;
-
-    virtual UINT STDMETHODCALLTYPE GetCreationFlags(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE OpenSharedResource(
-        HANDLE hResource,
-        REFIID ReturnedInterface,
-        void **ppResource) = 0;
-
-    virtual void STDMETHODCALLTYPE SetTextFilterSize(
-        UINT Width,
-        UINT Height) = 0;
-
-    virtual void STDMETHODCALLTYPE GetTextFilterSize(
-        UINT *pWidth,
-        UINT *pHeight) = 0;
-
-};
-#else
-typedef struct ID3D10DeviceVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Device* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Device* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Device* This);
-
-    /*** ID3D10Device methods ***/
-    void (STDMETHODCALLTYPE *VSSetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *PSSetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *PSSetShader)(
-        ID3D10Device* This,
-        ID3D10PixelShader *pPixelShader);
-
-    void (STDMETHODCALLTYPE *PSSetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers);
-
-    void (STDMETHODCALLTYPE *VSSetShader)(
-        ID3D10Device* This,
-        ID3D10VertexShader *pVertexShader);
-
-    void (STDMETHODCALLTYPE *DrawIndexed)(
-        ID3D10Device* This,
-        UINT IndexCount,
-        UINT StartIndexLocation,
-        INT BaseVertexLocation);
-
-    void (STDMETHODCALLTYPE *Draw)(
-        ID3D10Device* This,
-        UINT VertexCount,
-        UINT StartVertexLocation);
-
-    void (STDMETHODCALLTYPE *PSSetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *IASetInputLayout)(
-        ID3D10Device* This,
-        ID3D10InputLayout *pInputLayout);
-
-    void (STDMETHODCALLTYPE *IASetVertexBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppVertexBuffers,
-        const UINT *pStrides,
-        const UINT *pOffsets);
-
-    void (STDMETHODCALLTYPE *IASetIndexBuffer)(
-        ID3D10Device* This,
-        ID3D10Buffer *pIndexBuffer,
-        DXGI_FORMAT Format,
-        UINT Offset);
-
-    void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
-        ID3D10Device* This,
-        UINT IndexCountPerInstance,
-        UINT InstanceCount,
-        UINT StartIndexLocation,
-        INT BaseVertexLocation,
-        UINT StartInstanceLocation);
-
-    void (STDMETHODCALLTYPE *DrawInstanced)(
-        ID3D10Device* This,
-        UINT VertexCountPerInstance,
-        UINT InstanceCount,
-        UINT StartVertexLocation,
-        UINT StartInstanceLocation);
-
-    void (STDMETHODCALLTYPE *GSSetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *GSSetShader)(
-        ID3D10Device* This,
-        ID3D10GeometryShader *pShader);
-
-    void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
-        ID3D10Device* This,
-        D3D10_PRIMITIVE_TOPOLOGY Topology);
-
-    void (STDMETHODCALLTYPE *VSSetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *VSSetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers);
-
-    void (STDMETHODCALLTYPE *SetPredication)(
-        ID3D10Device* This,
-        ID3D10Predicate *pPredicate,
-        BOOL PredicateValue);
-
-    void (STDMETHODCALLTYPE *GSSetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *GSSetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers);
-
-    void (STDMETHODCALLTYPE *OMSetRenderTargets)(
-        ID3D10Device* This,
-        UINT NumViews,
-        ID3D10RenderTargetView *const *ppRenderTargetViews,
-        ID3D10DepthStencilView *pDepthStencilView);
-
-    void (STDMETHODCALLTYPE *OMSetBlendState)(
-        ID3D10Device* This,
-        ID3D10BlendState *pBlendState,
-        const FLOAT BlendFactor[4],
-        UINT SampleMask);
-
-    void (STDMETHODCALLTYPE *OMSetDepthStencilState)(
-        ID3D10Device* This,
-        ID3D10DepthStencilState *pDepthStencilState,
-        UINT StencilRef);
-
-    void (STDMETHODCALLTYPE *SOSetTargets)(
-        ID3D10Device* This,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppSOTargets,
-        const UINT *pOffsets);
-
-    void (STDMETHODCALLTYPE *DrawAuto)(
-        ID3D10Device* This);
-
-    void (STDMETHODCALLTYPE *RSSetState)(
-        ID3D10Device* This,
-        ID3D10RasterizerState *pRasterizerState);
-
-    void (STDMETHODCALLTYPE *RSSetViewports)(
-        ID3D10Device* This,
-        UINT NumViewports,
-        const D3D10_VIEWPORT *pViewports);
-
-    void (STDMETHODCALLTYPE *RSSetScissorRects)(
-        ID3D10Device* This,
-        UINT NumRects,
-        const D3D10_RECT *pRects);
-
-    void (STDMETHODCALLTYPE *CopySubresourceRegion)(
-        ID3D10Device* This,
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        UINT DstX,
-        UINT DstY,
-        UINT DstZ,
-        ID3D10Resource *pSrcResource,
-        UINT SrcSubresource,
-        const D3D10_BOX *pSrcBox);
-
-    void (STDMETHODCALLTYPE *CopyResource)(
-        ID3D10Device* This,
-        ID3D10Resource *pDstResource,
-        ID3D10Resource *pSrcResource);
-
-    void (STDMETHODCALLTYPE *UpdateSubresource)(
-        ID3D10Device* This,
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        const D3D10_BOX *pDstBox,
-        const void *pSrcData,
-        UINT SrcRowPitch,
-        UINT SrcDepthPitch);
-
-    void (STDMETHODCALLTYPE *ClearRenderTargetView)(
-        ID3D10Device* This,
-        ID3D10RenderTargetView *pRenderTargetView,
-        const FLOAT ColorRGBA[4]);
-
-    void (STDMETHODCALLTYPE *ClearDepthStencilView)(
-        ID3D10Device* This,
-        ID3D10DepthStencilView *pDepthStencilView,
-        UINT ClearFlags,
-        FLOAT Depth,
-        UINT8 Stencil);
-
-    void (STDMETHODCALLTYPE *GenerateMips)(
-        ID3D10Device* This,
-        ID3D10ShaderResourceView *pShaderResourceView);
-
-    void (STDMETHODCALLTYPE *ResolveSubresource)(
-        ID3D10Device* This,
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        ID3D10Resource *pSrcResource,
-        UINT SrcSubresource,
-        DXGI_FORMAT Format);
-
-    void (STDMETHODCALLTYPE *VSGetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *PSGetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *PSGetShader)(
-        ID3D10Device* This,
-        ID3D10PixelShader **ppPixelShader);
-
-    void (STDMETHODCALLTYPE *PSGetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers);
-
-    void (STDMETHODCALLTYPE *VSGetShader)(
-        ID3D10Device* This,
-        ID3D10VertexShader **ppVertexShader);
-
-    void (STDMETHODCALLTYPE *PSGetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *IAGetInputLayout)(
-        ID3D10Device* This,
-        ID3D10InputLayout **ppInputLayout);
-
-    void (STDMETHODCALLTYPE *IAGetVertexBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppVertexBuffers,
-        UINT *pStrides,
-        UINT *pOffsets);
-
-    void (STDMETHODCALLTYPE *IAGetIndexBuffer)(
-        ID3D10Device* This,
-        ID3D10Buffer **pIndexBuffer,
-        DXGI_FORMAT *Format,
-        UINT *Offset);
-
-    void (STDMETHODCALLTYPE *GSGetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *GSGetShader)(
-        ID3D10Device* This,
-        ID3D10GeometryShader **ppGeometryShader);
-
-    void (STDMETHODCALLTYPE *IAGetPrimitiveTopology)(
-        ID3D10Device* This,
-        D3D10_PRIMITIVE_TOPOLOGY *pTopology);
-
-    void (STDMETHODCALLTYPE *VSGetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *VSGetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers);
-
-    void (STDMETHODCALLTYPE *GetPredication)(
-        ID3D10Device* This,
-        ID3D10Predicate **ppPredicate,
-        BOOL *pPredicateValue);
-
-    void (STDMETHODCALLTYPE *GSGetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *GSGetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers);
-
-    void (STDMETHODCALLTYPE *OMGetRenderTargets)(
-        ID3D10Device* This,
-        UINT NumViews,
-        ID3D10RenderTargetView **ppRenderTargetViews,
-        ID3D10DepthStencilView **ppDepthStencilView);
-
-    void (STDMETHODCALLTYPE *OMGetBlendState)(
-        ID3D10Device* This,
-        ID3D10BlendState **ppBlendState,
-        FLOAT BlendFactor[4],
-        UINT *pSampleMask);
-
-    void (STDMETHODCALLTYPE *OMGetDepthStencilState)(
-        ID3D10Device* This,
-        ID3D10DepthStencilState **ppDepthStencilState,
-        UINT *pStencilRef);
-
-    void (STDMETHODCALLTYPE *SOGetTargets)(
-        ID3D10Device* This,
-        UINT NumBuffers,
-        ID3D10Buffer **ppSOTargets,
-        UINT *pOffsets);
-
-    void (STDMETHODCALLTYPE *RSGetState)(
-        ID3D10Device* This,
-        ID3D10RasterizerState **ppRasterizerState);
-
-    void (STDMETHODCALLTYPE *RSGetViewports)(
-        ID3D10Device* This,
-        UINT *NumViewports,
-        D3D10_VIEWPORT *pViewports);
-
-    void (STDMETHODCALLTYPE *RSGetScissorRects)(
-        ID3D10Device* This,
-        UINT *NumRects,
-        D3D10_RECT *pRects);
-
-    HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
-        ID3D10Device* This);
-
-    HRESULT (STDMETHODCALLTYPE *SetExceptionMode)(
-        ID3D10Device* This,
-        UINT RaiseFlags);
-
-    UINT (STDMETHODCALLTYPE *GetExceptionMode)(
-        ID3D10Device* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Device* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Device* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Device* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    void (STDMETHODCALLTYPE *ClearState)(
-        ID3D10Device* This);
-
-    void (STDMETHODCALLTYPE *Flush)(
-        ID3D10Device* This);
-
-    HRESULT (STDMETHODCALLTYPE *CreateBuffer)(
-        ID3D10Device* This,
-        const D3D10_BUFFER_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Buffer **ppBuffer);
-
-    HRESULT (STDMETHODCALLTYPE *CreateTexture1D)(
-        ID3D10Device* This,
-        const D3D10_TEXTURE1D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture1D **ppTexture1D);
-
-    HRESULT (STDMETHODCALLTYPE *CreateTexture2D)(
-        ID3D10Device* This,
-        const D3D10_TEXTURE2D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture2D **ppTexture2D);
-
-    HRESULT (STDMETHODCALLTYPE *CreateTexture3D)(
-        ID3D10Device* This,
-        const D3D10_TEXTURE3D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture3D **ppTexture3D);
-
-    HRESULT (STDMETHODCALLTYPE *CreateShaderResourceView)(
-        ID3D10Device* This,
-        ID3D10Resource *pResource,
-        const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
-        ID3D10ShaderResourceView **ppSRView);
-
-    HRESULT (STDMETHODCALLTYPE *CreateRenderTargetView)(
-        ID3D10Device* This,
-        ID3D10Resource *pResource,
-        const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
-        ID3D10RenderTargetView **ppRTView);
-
-    HRESULT (STDMETHODCALLTYPE *CreateDepthStencilView)(
-        ID3D10Device* This,
-        ID3D10Resource *pResource,
-        const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
-        ID3D10DepthStencilView **ppDepthStencilView);
-
-    HRESULT (STDMETHODCALLTYPE *CreateInputLayout)(
-        ID3D10Device* This,
-        const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
-        UINT NumElements,
-        const void *pShaderBytecodeWithInputSignature,
-        SIZE_T BytecodeLength,
-        ID3D10InputLayout **ppInputLayout);
-
-    HRESULT (STDMETHODCALLTYPE *CreateVertexShader)(
-        ID3D10Device* This,
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10VertexShader **ppVertexShader);
-
-    HRESULT (STDMETHODCALLTYPE *CreateGeometryShader)(
-        ID3D10Device* This,
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10GeometryShader **ppGeometryShader);
-
-    HRESULT (STDMETHODCALLTYPE *CreateGeometryShaderWithStreamOutput)(
-        ID3D10Device* This,
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
-        UINT NumEntries,
-        UINT OutputStreamStride,
-        ID3D10GeometryShader **ppGeometryShader);
-
-    HRESULT (STDMETHODCALLTYPE *CreatePixelShader)(
-        ID3D10Device* This,
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10PixelShader **ppPixelShader);
-
-    HRESULT (STDMETHODCALLTYPE *CreateBlendState)(
-        ID3D10Device* This,
-        const D3D10_BLEND_DESC *pBlendStateDesc,
-        ID3D10BlendState **ppBlendState);
-
-    HRESULT (STDMETHODCALLTYPE *CreateDepthStencilState)(
-        ID3D10Device* This,
-        const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
-        ID3D10DepthStencilState **ppDepthStencilState);
-
-    HRESULT (STDMETHODCALLTYPE *CreateRasterizerState)(
-        ID3D10Device* This,
-        const D3D10_RASTERIZER_DESC *pRasterizerDesc,
-        ID3D10RasterizerState **ppRasterizerState);
-
-    HRESULT (STDMETHODCALLTYPE *CreateSamplerState)(
-        ID3D10Device* This,
-        const D3D10_SAMPLER_DESC *pSamplerDesc,
-        ID3D10SamplerState **ppSamplerState);
-
-    HRESULT (STDMETHODCALLTYPE *CreateQuery)(
-        ID3D10Device* This,
-        const D3D10_QUERY_DESC *pQueryDesc,
-        ID3D10Query **ppQuery);
-
-    HRESULT (STDMETHODCALLTYPE *CreatePredicate)(
-        ID3D10Device* This,
-        const D3D10_QUERY_DESC *pPredicateDesc,
-        ID3D10Predicate **ppPredicate);
-
-    HRESULT (STDMETHODCALLTYPE *CreateCounter)(
-        ID3D10Device* This,
-        const D3D10_COUNTER_DESC *pCounterDesc,
-        ID3D10Counter **ppCounter);
-
-    HRESULT (STDMETHODCALLTYPE *CheckFormatSupport)(
-        ID3D10Device* This,
-        DXGI_FORMAT Format,
-        UINT *pFormatSupport);
-
-    HRESULT (STDMETHODCALLTYPE *CheckMultisampleQualityLevels)(
-        ID3D10Device* This,
-        DXGI_FORMAT Format,
-        UINT SampleCount,
-        UINT *pNumQualityLevels);
-
-    void (STDMETHODCALLTYPE *CheckCounterInfo)(
-        ID3D10Device* This,
-        D3D10_COUNTER_INFO *pCounterInfo);
-
-    HRESULT (STDMETHODCALLTYPE *CheckCounter)(
-        ID3D10Device* This,
-        const D3D10_COUNTER_DESC *pDesc,
-        D3D10_COUNTER_TYPE *pType,
-        UINT *pActiveCounters,
-        LPSTR szName,
-        UINT *pNameLength,
-        LPSTR szUnits,
-        UINT *pUnitsLength,
-        LPSTR szDescription,
-        UINT *pDescriptionLength);
-
-    UINT (STDMETHODCALLTYPE *GetCreationFlags)(
-        ID3D10Device* This);
-
-    HRESULT (STDMETHODCALLTYPE *OpenSharedResource)(
-        ID3D10Device* This,
-        HANDLE hResource,
-        REFIID ReturnedInterface,
-        void **ppResource);
-
-    void (STDMETHODCALLTYPE *SetTextFilterSize)(
-        ID3D10Device* This,
-        UINT Width,
-        UINT Height);
-
-    void (STDMETHODCALLTYPE *GetTextFilterSize)(
-        ID3D10Device* This,
-        UINT *pWidth,
-        UINT *pHeight);
-
-    END_INTERFACE
-} ID3D10DeviceVtbl;
-interface ID3D10Device {
-    CONST_VTBL ID3D10DeviceVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Device_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Device_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Device_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10Device methods ***/
-#define ID3D10Device_VSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->VSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_PSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->PSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_PSSetShader(This,pPixelShader) (This)->lpVtbl->PSSetShader(This,pPixelShader)
-#define ID3D10Device_PSSetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->PSSetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_VSSetShader(This,pVertexShader) (This)->lpVtbl->VSSetShader(This,pVertexShader)
-#define ID3D10Device_DrawIndexed(This,IndexCount,StartIndexLocation,BaseVertexLocation) (This)->lpVtbl->DrawIndexed(This,IndexCount,StartIndexLocation,BaseVertexLocation)
-#define ID3D10Device_Draw(This,VertexCount,StartVertexLocation) (This)->lpVtbl->Draw(This,VertexCount,StartVertexLocation)
-#define ID3D10Device_PSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->PSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_IASetInputLayout(This,pInputLayout) (This)->lpVtbl->IASetInputLayout(This,pInputLayout)
-#define ID3D10Device_IASetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets) (This)->lpVtbl->IASetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets)
-#define ID3D10Device_IASetIndexBuffer(This,pIndexBuffer,Format,Offset) (This)->lpVtbl->IASetIndexBuffer(This,pIndexBuffer,Format,Offset)
-#define ID3D10Device_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) (This)->lpVtbl->DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)
-#define ID3D10Device_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) (This)->lpVtbl->DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)
-#define ID3D10Device_GSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->GSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_GSSetShader(This,pShader) (This)->lpVtbl->GSSetShader(This,pShader)
-#define ID3D10Device_IASetPrimitiveTopology(This,Topology) (This)->lpVtbl->IASetPrimitiveTopology(This,Topology)
-#define ID3D10Device_VSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->VSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_VSSetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->VSSetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_SetPredication(This,pPredicate,PredicateValue) (This)->lpVtbl->SetPredication(This,pPredicate,PredicateValue)
-#define ID3D10Device_GSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->GSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_GSSetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->GSSetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_OMSetRenderTargets(This,NumViews,ppRenderTargetViews,pDepthStencilView) (This)->lpVtbl->OMSetRenderTargets(This,NumViews,ppRenderTargetViews,pDepthStencilView)
-#define ID3D10Device_OMSetBlendState(This,pBlendState,BlendFactor,SampleMask) (This)->lpVtbl->OMSetBlendState(This,pBlendState,BlendFactor,SampleMask)
-#define ID3D10Device_OMSetDepthStencilState(This,pDepthStencilState,StencilRef) (This)->lpVtbl->OMSetDepthStencilState(This,pDepthStencilState,StencilRef)
-#define ID3D10Device_SOSetTargets(This,NumBuffers,ppSOTargets,pOffsets) (This)->lpVtbl->SOSetTargets(This,NumBuffers,ppSOTargets,pOffsets)
-#define ID3D10Device_DrawAuto(This) (This)->lpVtbl->DrawAuto(This)
-#define ID3D10Device_RSSetState(This,pRasterizerState) (This)->lpVtbl->RSSetState(This,pRasterizerState)
-#define ID3D10Device_RSSetViewports(This,NumViewports,pViewports) (This)->lpVtbl->RSSetViewports(This,NumViewports,pViewports)
-#define ID3D10Device_RSSetScissorRects(This,NumRects,pRects) (This)->lpVtbl->RSSetScissorRects(This,NumRects,pRects)
-#define ID3D10Device_CopySubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) (This)->lpVtbl->CopySubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox)
-#define ID3D10Device_CopyResource(This,pDstResource,pSrcResource) (This)->lpVtbl->CopyResource(This,pDstResource,pSrcResource)
-#define ID3D10Device_UpdateSubresource(This,pDstResource,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) (This)->lpVtbl->UpdateSubresource(This,pDstResource,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch)
-#define ID3D10Device_ClearRenderTargetView(This,pRenderTargetView,ColorRGBA) (This)->lpVtbl->ClearRenderTargetView(This,pRenderTargetView,ColorRGBA)
-#define ID3D10Device_ClearDepthStencilView(This,pDepthStencilView,ClearFlags,Depth,Stencil) (This)->lpVtbl->ClearDepthStencilView(This,pDepthStencilView,ClearFlags,Depth,Stencil)
-#define ID3D10Device_GenerateMips(This,pShaderResourceView) (This)->lpVtbl->GenerateMips(This,pShaderResourceView)
-#define ID3D10Device_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) (This)->lpVtbl->ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)
-#define ID3D10Device_VSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->VSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_PSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->PSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_PSGetShader(This,ppPixelShader) (This)->lpVtbl->PSGetShader(This,ppPixelShader)
-#define ID3D10Device_PSGetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->PSGetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_VSGetShader(This,ppVertexShader) (This)->lpVtbl->VSGetShader(This,ppVertexShader)
-#define ID3D10Device_PSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->PSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_IAGetInputLayout(This,ppInputLayout) (This)->lpVtbl->IAGetInputLayout(This,ppInputLayout)
-#define ID3D10Device_IAGetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets) (This)->lpVtbl->IAGetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets)
-#define ID3D10Device_IAGetIndexBuffer(This,pIndexBuffer,Format,Offset) (This)->lpVtbl->IAGetIndexBuffer(This,pIndexBuffer,Format,Offset)
-#define ID3D10Device_GSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->GSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_GSGetShader(This,ppGeometryShader) (This)->lpVtbl->GSGetShader(This,ppGeometryShader)
-#define ID3D10Device_IAGetPrimitiveTopology(This,pTopology) (This)->lpVtbl->IAGetPrimitiveTopology(This,pTopology)
-#define ID3D10Device_VSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->VSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_VSGetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->VSGetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_GetPredication(This,ppPredicate,pPredicateValue) (This)->lpVtbl->GetPredication(This,ppPredicate,pPredicateValue)
-#define ID3D10Device_GSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->GSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_GSGetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->GSGetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_OMGetRenderTargets(This,NumViews,ppRenderTargetViews,ppDepthStencilView) (This)->lpVtbl->OMGetRenderTargets(This,NumViews,ppRenderTargetViews,ppDepthStencilView)
-#define ID3D10Device_OMGetBlendState(This,ppBlendState,BlendFactor,pSampleMask) (This)->lpVtbl->OMGetBlendState(This,ppBlendState,BlendFactor,pSampleMask)
-#define ID3D10Device_OMGetDepthStencilState(This,ppDepthStencilState,pStencilRef) (This)->lpVtbl->OMGetDepthStencilState(This,ppDepthStencilState,pStencilRef)
-#define ID3D10Device_SOGetTargets(This,NumBuffers,ppSOTargets,pOffsets) (This)->lpVtbl->SOGetTargets(This,NumBuffers,ppSOTargets,pOffsets)
-#define ID3D10Device_RSGetState(This,ppRasterizerState) (This)->lpVtbl->RSGetState(This,ppRasterizerState)
-#define ID3D10Device_RSGetViewports(This,NumViewports,pViewports) (This)->lpVtbl->RSGetViewports(This,NumViewports,pViewports)
-#define ID3D10Device_RSGetScissorRects(This,NumRects,pRects) (This)->lpVtbl->RSGetScissorRects(This,NumRects,pRects)
-#define ID3D10Device_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
-#define ID3D10Device_SetExceptionMode(This,RaiseFlags) (This)->lpVtbl->SetExceptionMode(This,RaiseFlags)
-#define ID3D10Device_GetExceptionMode(This) (This)->lpVtbl->GetExceptionMode(This)
-#define ID3D10Device_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Device_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Device_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#define ID3D10Device_ClearState(This) (This)->lpVtbl->ClearState(This)
-#define ID3D10Device_Flush(This) (This)->lpVtbl->Flush(This)
-#define ID3D10Device_CreateBuffer(This,pDesc,pInitialData,ppBuffer) (This)->lpVtbl->CreateBuffer(This,pDesc,pInitialData,ppBuffer)
-#define ID3D10Device_CreateTexture1D(This,pDesc,pInitialData,ppTexture1D) (This)->lpVtbl->CreateTexture1D(This,pDesc,pInitialData,ppTexture1D)
-#define ID3D10Device_CreateTexture2D(This,pDesc,pInitialData,ppTexture2D) (This)->lpVtbl->CreateTexture2D(This,pDesc,pInitialData,ppTexture2D)
-#define ID3D10Device_CreateTexture3D(This,pDesc,pInitialData,ppTexture3D) (This)->lpVtbl->CreateTexture3D(This,pDesc,pInitialData,ppTexture3D)
-#define ID3D10Device_CreateShaderResourceView(This,pResource,pDesc,ppSRView) (This)->lpVtbl->CreateShaderResourceView(This,pResource,pDesc,ppSRView)
-#define ID3D10Device_CreateRenderTargetView(This,pResource,pDesc,ppRTView) (This)->lpVtbl->CreateRenderTargetView(This,pResource,pDesc,ppRTView)
-#define ID3D10Device_CreateDepthStencilView(This,pResource,pDesc,ppDepthStencilView) (This)->lpVtbl->CreateDepthStencilView(This,pResource,pDesc,ppDepthStencilView)
-#define ID3D10Device_CreateInputLayout(This,pInputElementDescs,NumElements,pShaderBytecodeWithInputSignature,BytecodeLength,ppInputLayout) (This)->lpVtbl->CreateInputLayout(This,pInputElementDescs,NumElements,pShaderBytecodeWithInputSignature,BytecodeLength,ppInputLayout)
-#define ID3D10Device_CreateVertexShader(This,pShaderBytecode,BytecodeLength,ppVertexShader) (This)->lpVtbl->CreateVertexShader(This,pShaderBytecode,BytecodeLength,ppVertexShader)
-#define ID3D10Device_CreateGeometryShader(This,pShaderBytecode,BytecodeLength,ppGeometryShader) (This)->lpVtbl->CreateGeometryShader(This,pShaderBytecode,BytecodeLength,ppGeometryShader)
-#define ID3D10Device_CreateGeometryShaderWithStreamOutput(This,pShaderBytecode,BytecodeLength,pSODeclaration,NumEntries,OutputStreamStride,ppGeometryShader) (This)->lpVtbl->CreateGeometryShaderWithStreamOutput(This,pShaderBytecode,BytecodeLength,pSODeclaration,NumEntries,OutputStreamStride,ppGeometryShader)
-#define ID3D10Device_CreatePixelShader(This,pShaderBytecode,BytecodeLength,ppPixelShader) (This)->lpVtbl->CreatePixelShader(This,pShaderBytecode,BytecodeLength,ppPixelShader)
-#define ID3D10Device_CreateBlendState(This,pBlendStateDesc,ppBlendState) (This)->lpVtbl->CreateBlendState(This,pBlendStateDesc,ppBlendState)
-#define ID3D10Device_CreateDepthStencilState(This,pDepthStencilDesc,ppDepthStencilState) (This)->lpVtbl->CreateDepthStencilState(This,pDepthStencilDesc,ppDepthStencilState)
-#define ID3D10Device_CreateRasterizerState(This,pRasterizerDesc,ppRasterizerState) (This)->lpVtbl->CreateRasterizerState(This,pRasterizerDesc,ppRasterizerState)
-#define ID3D10Device_CreateSamplerState(This,pSamplerDesc,ppSamplerState) (This)->lpVtbl->CreateSamplerState(This,pSamplerDesc,ppSamplerState)
-#define ID3D10Device_CreateQuery(This,pQueryDesc,ppQuery) (This)->lpVtbl->CreateQuery(This,pQueryDesc,ppQuery)
-#define ID3D10Device_CreatePredicate(This,pPredicateDesc,ppPredicate) (This)->lpVtbl->CreatePredicate(This,pPredicateDesc,ppPredicate)
-#define ID3D10Device_CreateCounter(This,pCounterDesc,ppCounter) (This)->lpVtbl->CreateCounter(This,pCounterDesc,ppCounter)
-#define ID3D10Device_CheckFormatSupport(This,Format,pFormatSupport) (This)->lpVtbl->CheckFormatSupport(This,Format,pFormatSupport)
-#define ID3D10Device_CheckMultisampleQualityLevels(This,Format,SampleCount,pNumQualityLevels) (This)->lpVtbl->CheckMultisampleQualityLevels(This,Format,SampleCount,pNumQualityLevels)
-#define ID3D10Device_CheckCounterInfo(This,pCounterInfo) (This)->lpVtbl->CheckCounterInfo(This,pCounterInfo)
-#define ID3D10Device_CheckCounter(This,pDesc,pType,pActiveCounters,szName,pNameLength,szUnits,pUnitsLength,szDescription,pDescriptionLength) (This)->lpVtbl->CheckCounter(This,pDesc,pType,pActiveCounters,szName,pNameLength,szUnits,pUnitsLength,szDescription,pDescriptionLength)
-#define ID3D10Device_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
-#define ID3D10Device_OpenSharedResource(This,hResource,ReturnedInterface,ppResource) (This)->lpVtbl->OpenSharedResource(This,hResource,ReturnedInterface,ppResource)
-#define ID3D10Device_SetTextFilterSize(This,Width,Height) (This)->lpVtbl->SetTextFilterSize(This,Width,Height)
-#define ID3D10Device_GetTextFilterSize(This,pWidth,pHeight) (This)->lpVtbl->GetTextFilterSize(This,pWidth,pHeight)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Device_VSSetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppConstantBuffers);
-void __RPC_STUB ID3D10Device_VSSetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSSetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView *const *ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_PSSetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSSetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10PixelShader *pPixelShader);
-void __RPC_STUB ID3D10Device_PSSetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSSetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState *const *ppSamplers);
-void __RPC_STUB ID3D10Device_PSSetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSSetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10VertexShader *pVertexShader);
-void __RPC_STUB ID3D10Device_VSSetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_DrawIndexed_Proxy(
-    ID3D10Device* This,
-    UINT IndexCount,
-    UINT StartIndexLocation,
-    INT BaseVertexLocation);
-void __RPC_STUB ID3D10Device_DrawIndexed_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_Draw_Proxy(
-    ID3D10Device* This,
-    UINT VertexCount,
-    UINT StartVertexLocation);
-void __RPC_STUB ID3D10Device_Draw_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSSetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppConstantBuffers);
-void __RPC_STUB ID3D10Device_PSSetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IASetInputLayout_Proxy(
-    ID3D10Device* This,
-    ID3D10InputLayout *pInputLayout);
-void __RPC_STUB ID3D10Device_IASetInputLayout_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IASetVertexBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppVertexBuffers,
-    const UINT *pStrides,
-    const UINT *pOffsets);
-void __RPC_STUB ID3D10Device_IASetVertexBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IASetIndexBuffer_Proxy(
-    ID3D10Device* This,
-    ID3D10Buffer *pIndexBuffer,
-    DXGI_FORMAT Format,
-    UINT Offset);
-void __RPC_STUB ID3D10Device_IASetIndexBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_DrawIndexedInstanced_Proxy(
-    ID3D10Device* This,
-    UINT IndexCountPerInstance,
-    UINT InstanceCount,
-    UINT StartIndexLocation,
-    INT BaseVertexLocation,
-    UINT StartInstanceLocation);
-void __RPC_STUB ID3D10Device_DrawIndexedInstanced_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_DrawInstanced_Proxy(
-    ID3D10Device* This,
-    UINT VertexCountPerInstance,
-    UINT InstanceCount,
-    UINT StartVertexLocation,
-    UINT StartInstanceLocation);
-void __RPC_STUB ID3D10Device_DrawInstanced_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSSetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppConstantBuffers);
-void __RPC_STUB ID3D10Device_GSSetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSSetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10GeometryShader *pShader);
-void __RPC_STUB ID3D10Device_GSSetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IASetPrimitiveTopology_Proxy(
-    ID3D10Device* This,
-    D3D10_PRIMITIVE_TOPOLOGY Topology);
-void __RPC_STUB ID3D10Device_IASetPrimitiveTopology_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSSetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView *const *ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_VSSetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSSetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState *const *ppSamplers);
-void __RPC_STUB ID3D10Device_VSSetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_SetPredication_Proxy(
-    ID3D10Device* This,
-    ID3D10Predicate *pPredicate,
-    BOOL PredicateValue);
-void __RPC_STUB ID3D10Device_SetPredication_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSSetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView *const *ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_GSSetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSSetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState *const *ppSamplers);
-void __RPC_STUB ID3D10Device_GSSetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMSetRenderTargets_Proxy(
-    ID3D10Device* This,
-    UINT NumViews,
-    ID3D10RenderTargetView *const *ppRenderTargetViews,
-    ID3D10DepthStencilView *pDepthStencilView);
-void __RPC_STUB ID3D10Device_OMSetRenderTargets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMSetBlendState_Proxy(
-    ID3D10Device* This,
-    ID3D10BlendState *pBlendState,
-    const FLOAT BlendFactor[4],
-    UINT SampleMask);
-void __RPC_STUB ID3D10Device_OMSetBlendState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMSetDepthStencilState_Proxy(
-    ID3D10Device* This,
-    ID3D10DepthStencilState *pDepthStencilState,
-    UINT StencilRef);
-void __RPC_STUB ID3D10Device_OMSetDepthStencilState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_SOSetTargets_Proxy(
-    ID3D10Device* This,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppSOTargets,
-    const UINT *pOffsets);
-void __RPC_STUB ID3D10Device_SOSetTargets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_DrawAuto_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_DrawAuto_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSSetState_Proxy(
-    ID3D10Device* This,
-    ID3D10RasterizerState *pRasterizerState);
-void __RPC_STUB ID3D10Device_RSSetState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSSetViewports_Proxy(
-    ID3D10Device* This,
-    UINT NumViewports,
-    const D3D10_VIEWPORT *pViewports);
-void __RPC_STUB ID3D10Device_RSSetViewports_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSSetScissorRects_Proxy(
-    ID3D10Device* This,
-    UINT NumRects,
-    const D3D10_RECT *pRects);
-void __RPC_STUB ID3D10Device_RSSetScissorRects_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_CopySubresourceRegion_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pDstResource,
-    UINT DstSubresource,
-    UINT DstX,
-    UINT DstY,
-    UINT DstZ,
-    ID3D10Resource *pSrcResource,
-    UINT SrcSubresource,
-    const D3D10_BOX *pSrcBox);
-void __RPC_STUB ID3D10Device_CopySubresourceRegion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_CopyResource_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pDstResource,
-    ID3D10Resource *pSrcResource);
-void __RPC_STUB ID3D10Device_CopyResource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_UpdateSubresource_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pDstResource,
-    UINT DstSubresource,
-    const D3D10_BOX *pDstBox,
-    const void *pSrcData,
-    UINT SrcRowPitch,
-    UINT SrcDepthPitch);
-void __RPC_STUB ID3D10Device_UpdateSubresource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_ClearRenderTargetView_Proxy(
-    ID3D10Device* This,
-    ID3D10RenderTargetView *pRenderTargetView,
-    const FLOAT ColorRGBA[4]);
-void __RPC_STUB ID3D10Device_ClearRenderTargetView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_ClearDepthStencilView_Proxy(
-    ID3D10Device* This,
-    ID3D10DepthStencilView *pDepthStencilView,
-    UINT ClearFlags,
-    FLOAT Depth,
-    UINT8 Stencil);
-void __RPC_STUB ID3D10Device_ClearDepthStencilView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GenerateMips_Proxy(
-    ID3D10Device* This,
-    ID3D10ShaderResourceView *pShaderResourceView);
-void __RPC_STUB ID3D10Device_GenerateMips_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_ResolveSubresource_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pDstResource,
-    UINT DstSubresource,
-    ID3D10Resource *pSrcResource,
-    UINT SrcSubresource,
-    DXGI_FORMAT Format);
-void __RPC_STUB ID3D10Device_ResolveSubresource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSGetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer **ppConstantBuffers);
-void __RPC_STUB ID3D10Device_VSGetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSGetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView **ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_PSGetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSGetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10PixelShader **ppPixelShader);
-void __RPC_STUB ID3D10Device_PSGetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSGetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState **ppSamplers);
-void __RPC_STUB ID3D10Device_PSGetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSGetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10VertexShader **ppVertexShader);
-void __RPC_STUB ID3D10Device_VSGetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSGetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer **ppConstantBuffers);
-void __RPC_STUB ID3D10Device_PSGetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IAGetInputLayout_Proxy(
-    ID3D10Device* This,
-    ID3D10InputLayout **ppInputLayout);
-void __RPC_STUB ID3D10Device_IAGetInputLayout_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IAGetVertexBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer **ppVertexBuffers,
-    UINT *pStrides,
-    UINT *pOffsets);
-void __RPC_STUB ID3D10Device_IAGetVertexBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IAGetIndexBuffer_Proxy(
-    ID3D10Device* This,
-    ID3D10Buffer **pIndexBuffer,
-    DXGI_FORMAT *Format,
-    UINT *Offset);
-void __RPC_STUB ID3D10Device_IAGetIndexBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSGetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer **ppConstantBuffers);
-void __RPC_STUB ID3D10Device_GSGetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSGetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10GeometryShader **ppGeometryShader);
-void __RPC_STUB ID3D10Device_GSGetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IAGetPrimitiveTopology_Proxy(
-    ID3D10Device* This,
-    D3D10_PRIMITIVE_TOPOLOGY *pTopology);
-void __RPC_STUB ID3D10Device_IAGetPrimitiveTopology_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSGetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView **ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_VSGetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSGetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState **ppSamplers);
-void __RPC_STUB ID3D10Device_VSGetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GetPredication_Proxy(
-    ID3D10Device* This,
-    ID3D10Predicate **ppPredicate,
-    BOOL *pPredicateValue);
-void __RPC_STUB ID3D10Device_GetPredication_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSGetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView **ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_GSGetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSGetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState **ppSamplers);
-void __RPC_STUB ID3D10Device_GSGetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMGetRenderTargets_Proxy(
-    ID3D10Device* This,
-    UINT NumViews,
-    ID3D10RenderTargetView **ppRenderTargetViews,
-    ID3D10DepthStencilView **ppDepthStencilView);
-void __RPC_STUB ID3D10Device_OMGetRenderTargets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMGetBlendState_Proxy(
-    ID3D10Device* This,
-    ID3D10BlendState **ppBlendState,
-    FLOAT BlendFactor[4],
-    UINT *pSampleMask);
-void __RPC_STUB ID3D10Device_OMGetBlendState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMGetDepthStencilState_Proxy(
-    ID3D10Device* This,
-    ID3D10DepthStencilState **ppDepthStencilState,
-    UINT *pStencilRef);
-void __RPC_STUB ID3D10Device_OMGetDepthStencilState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_SOGetTargets_Proxy(
-    ID3D10Device* This,
-    UINT NumBuffers,
-    ID3D10Buffer **ppSOTargets,
-    UINT *pOffsets);
-void __RPC_STUB ID3D10Device_SOGetTargets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSGetState_Proxy(
-    ID3D10Device* This,
-    ID3D10RasterizerState **ppRasterizerState);
-void __RPC_STUB ID3D10Device_RSGetState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSGetViewports_Proxy(
-    ID3D10Device* This,
-    UINT *NumViewports,
-    D3D10_VIEWPORT *pViewports);
-void __RPC_STUB ID3D10Device_RSGetViewports_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSGetScissorRects_Proxy(
-    ID3D10Device* This,
-    UINT *NumRects,
-    D3D10_RECT *pRects);
-void __RPC_STUB ID3D10Device_RSGetScissorRects_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_GetDeviceRemovedReason_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_GetDeviceRemovedReason_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_SetExceptionMode_Proxy(
-    ID3D10Device* This,
-    UINT RaiseFlags);
-void __RPC_STUB ID3D10Device_SetExceptionMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-UINT STDMETHODCALLTYPE ID3D10Device_GetExceptionMode_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_GetExceptionMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_GetPrivateData_Proxy(
-    ID3D10Device* This,
-    REFGUID guid,
-    UINT *pDataSize,
-    void *pData);
-void __RPC_STUB ID3D10Device_GetPrivateData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_SetPrivateData_Proxy(
-    ID3D10Device* This,
-    REFGUID guid,
-    UINT DataSize,
-    const void *pData);
-void __RPC_STUB ID3D10Device_SetPrivateData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_SetPrivateDataInterface_Proxy(
-    ID3D10Device* This,
-    REFGUID guid,
-    const IUnknown *pData);
-void __RPC_STUB ID3D10Device_SetPrivateDataInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_ClearState_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_ClearState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_Flush_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_Flush_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateBuffer_Proxy(
-    ID3D10Device* This,
-    const D3D10_BUFFER_DESC *pDesc,
-    const D3D10_SUBRESOURCE_DATA *pInitialData,
-    ID3D10Buffer **ppBuffer);
-void __RPC_STUB ID3D10Device_CreateBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateTexture1D_Proxy(
-    ID3D10Device* This,
-    const D3D10_TEXTURE1D_DESC *pDesc,
-    const D3D10_SUBRESOURCE_DATA *pInitialData,
-    ID3D10Texture1D **ppTexture1D);
-void __RPC_STUB ID3D10Device_CreateTexture1D_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateTexture2D_Proxy(
-    ID3D10Device* This,
-    const D3D10_TEXTURE2D_DESC *pDesc,
-    const D3D10_SUBRESOURCE_DATA *pInitialData,
-    ID3D10Texture2D **ppTexture2D);
-void __RPC_STUB ID3D10Device_CreateTexture2D_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateTexture3D_Proxy(
-    ID3D10Device* This,
-    const D3D10_TEXTURE3D_DESC *pDesc,
-    const D3D10_SUBRESOURCE_DATA *pInitialData,
-    ID3D10Texture3D **ppTexture3D);
-void __RPC_STUB ID3D10Device_CreateTexture3D_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateShaderResourceView_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pResource,
-    const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
-    ID3D10ShaderResourceView **ppSRView);
-void __RPC_STUB ID3D10Device_CreateShaderResourceView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateRenderTargetView_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pResource,
-    const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
-    ID3D10RenderTargetView **ppRTView);
-void __RPC_STUB ID3D10Device_CreateRenderTargetView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateDepthStencilView_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pResource,
-    const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
-    ID3D10DepthStencilView **ppDepthStencilView);
-void __RPC_STUB ID3D10Device_CreateDepthStencilView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateInputLayout_Proxy(
-    ID3D10Device* This,
-    const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
-    UINT NumElements,
-    const void *pShaderBytecodeWithInputSignature,
-    SIZE_T BytecodeLength,
-    ID3D10InputLayout **ppInputLayout);
-void __RPC_STUB ID3D10Device_CreateInputLayout_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateVertexShader_Proxy(
-    ID3D10Device* This,
-    const void *pShaderBytecode,
-    SIZE_T BytecodeLength,
-    ID3D10VertexShader **ppVertexShader);
-void __RPC_STUB ID3D10Device_CreateVertexShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateGeometryShader_Proxy(
-    ID3D10Device* This,
-    const void *pShaderBytecode,
-    SIZE_T BytecodeLength,
-    ID3D10GeometryShader **ppGeometryShader);
-void __RPC_STUB ID3D10Device_CreateGeometryShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateGeometryShaderWithStreamOutput_Proxy(
-    ID3D10Device* This,
-    const void *pShaderBytecode,
-    SIZE_T BytecodeLength,
-    const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
-    UINT NumEntries,
-    UINT OutputStreamStride,
-    ID3D10GeometryShader **ppGeometryShader);
-void __RPC_STUB ID3D10Device_CreateGeometryShaderWithStreamOutput_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreatePixelShader_Proxy(
-    ID3D10Device* This,
-    const void *pShaderBytecode,
-    SIZE_T BytecodeLength,
-    ID3D10PixelShader **ppPixelShader);
-void __RPC_STUB ID3D10Device_CreatePixelShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateBlendState_Proxy(
-    ID3D10Device* This,
-    const D3D10_BLEND_DESC *pBlendStateDesc,
-    ID3D10BlendState **ppBlendState);
-void __RPC_STUB ID3D10Device_CreateBlendState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateDepthStencilState_Proxy(
-    ID3D10Device* This,
-    const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
-    ID3D10DepthStencilState **ppDepthStencilState);
-void __RPC_STUB ID3D10Device_CreateDepthStencilState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateRasterizerState_Proxy(
-    ID3D10Device* This,
-    const D3D10_RASTERIZER_DESC *pRasterizerDesc,
-    ID3D10RasterizerState **ppRasterizerState);
-void __RPC_STUB ID3D10Device_CreateRasterizerState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateSamplerState_Proxy(
-    ID3D10Device* This,
-    const D3D10_SAMPLER_DESC *pSamplerDesc,
-    ID3D10SamplerState **ppSamplerState);
-void __RPC_STUB ID3D10Device_CreateSamplerState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateQuery_Proxy(
-    ID3D10Device* This,
-    const D3D10_QUERY_DESC *pQueryDesc,
-    ID3D10Query **ppQuery);
-void __RPC_STUB ID3D10Device_CreateQuery_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreatePredicate_Proxy(
-    ID3D10Device* This,
-    const D3D10_QUERY_DESC *pPredicateDesc,
-    ID3D10Predicate **ppPredicate);
-void __RPC_STUB ID3D10Device_CreatePredicate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateCounter_Proxy(
-    ID3D10Device* This,
-    const D3D10_COUNTER_DESC *pCounterDesc,
-    ID3D10Counter **ppCounter);
-void __RPC_STUB ID3D10Device_CreateCounter_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CheckFormatSupport_Proxy(
-    ID3D10Device* This,
-    DXGI_FORMAT Format,
-    UINT *pFormatSupport);
-void __RPC_STUB ID3D10Device_CheckFormatSupport_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CheckMultisampleQualityLevels_Proxy(
-    ID3D10Device* This,
-    DXGI_FORMAT Format,
-    UINT SampleCount,
-    UINT *pNumQualityLevels);
-void __RPC_STUB ID3D10Device_CheckMultisampleQualityLevels_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_CheckCounterInfo_Proxy(
-    ID3D10Device* This,
-    D3D10_COUNTER_INFO *pCounterInfo);
-void __RPC_STUB ID3D10Device_CheckCounterInfo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CheckCounter_Proxy(
-    ID3D10Device* This,
-    const D3D10_COUNTER_DESC *pDesc,
-    D3D10_COUNTER_TYPE *pType,
-    UINT *pActiveCounters,
-    LPSTR szName,
-    UINT *pNameLength,
-    LPSTR szUnits,
-    UINT *pUnitsLength,
-    LPSTR szDescription,
-    UINT *pDescriptionLength);
-void __RPC_STUB ID3D10Device_CheckCounter_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-UINT STDMETHODCALLTYPE ID3D10Device_GetCreationFlags_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_GetCreationFlags_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_OpenSharedResource_Proxy(
-    ID3D10Device* This,
-    HANDLE hResource,
-    REFIID ReturnedInterface,
-    void **ppResource);
-void __RPC_STUB ID3D10Device_OpenSharedResource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_SetTextFilterSize_Proxy(
-    ID3D10Device* This,
-    UINT Width,
-    UINT Height);
-void __RPC_STUB ID3D10Device_SetTextFilterSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GetTextFilterSize_Proxy(
-    ID3D10Device* This,
-    UINT *pWidth,
-    UINT *pHeight);
-void __RPC_STUB ID3D10Device_GetTextFilterSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Device_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Multithread interface
- */
-#ifndef __ID3D10Multithread_INTERFACE_DEFINED__
-#define __ID3D10Multithread_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Multithread, 0x9b7e4e00, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Multithread : public IUnknown
-{
-    virtual void STDMETHODCALLTYPE Enter(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE Leave(
-        ) = 0;
-
-    virtual BOOL STDMETHODCALLTYPE SetMultithreadProtected(
-        BOOL bMTProtect) = 0;
-
-    virtual BOOL STDMETHODCALLTYPE GetMultithreadProtected(
-        ) = 0;
-
-};
-#else
-typedef struct ID3D10MultithreadVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Multithread* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Multithread* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Multithread* This);
-
-    /*** ID3D10Multithread methods ***/
-    void (STDMETHODCALLTYPE *Enter)(
-        ID3D10Multithread* This);
-
-    void (STDMETHODCALLTYPE *Leave)(
-        ID3D10Multithread* This);
-
-    BOOL (STDMETHODCALLTYPE *SetMultithreadProtected)(
-        ID3D10Multithread* This,
-        BOOL bMTProtect);
-
-    BOOL (STDMETHODCALLTYPE *GetMultithreadProtected)(
-        ID3D10Multithread* This);
-
-    END_INTERFACE
-} ID3D10MultithreadVtbl;
-interface ID3D10Multithread {
-    CONST_VTBL ID3D10MultithreadVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Multithread_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Multithread_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Multithread_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10Multithread methods ***/
-#define ID3D10Multithread_Enter(This) (This)->lpVtbl->Enter(This)
-#define ID3D10Multithread_Leave(This) (This)->lpVtbl->Leave(This)
-#define ID3D10Multithread_SetMultithreadProtected(This,bMTProtect) (This)->lpVtbl->SetMultithreadProtected(This,bMTProtect)
-#define ID3D10Multithread_GetMultithreadProtected(This) (This)->lpVtbl->GetMultithreadProtected(This)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Multithread_Enter_Proxy(
-    ID3D10Multithread* This);
-void __RPC_STUB ID3D10Multithread_Enter_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Multithread_Leave_Proxy(
-    ID3D10Multithread* This);
-void __RPC_STUB ID3D10Multithread_Leave_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-BOOL STDMETHODCALLTYPE ID3D10Multithread_SetMultithreadProtected_Proxy(
-    ID3D10Multithread* This,
-    BOOL bMTProtect);
-void __RPC_STUB ID3D10Multithread_SetMultithreadProtected_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-BOOL STDMETHODCALLTYPE ID3D10Multithread_GetMultithreadProtected_Proxy(
-    ID3D10Multithread* This);
-void __RPC_STUB ID3D10Multithread_GetMultithreadProtected_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Multithread_INTERFACE_DEFINED__ */
-
-#include "d3d10misc.h"
-#include "d3d10shader.h"
-#include "d3d10effect.h"
-/* Begin additional prototypes for all interfaces */
-
-
-/* End additional prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WIDL_D3D10_H */
diff --git a/misc/builddeps/win32/dx/include/d3d10.idl b/misc/builddeps/win32/dx/include/d3d10.idl
deleted file mode 100644 (file)
index 6205917..0000000
+++ /dev/null
@@ -1,1539 +0,0 @@
-/*
- * Copyright 2007 Andras Kovacs
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-import "oaidl.idl";
-import "ocidl.idl";
-import "dxgi.idl";
-
-cpp_quote("#ifndef _D3D10_CONSTANTS")
-cpp_quote("#define _D3D10_CONSTANTS")
-const float D3D10_DEFAULT_BLEND_FACTOR_ALPHA                                            = 1.0;
-const float D3D10_DEFAULT_BLEND_FACTOR_BLUE                                             = 1.0;
-const float D3D10_DEFAULT_BLEND_FACTOR_GREEN                                            = 1.0;
-const float D3D10_DEFAULT_BLEND_FACTOR_RED                                              = 1.0;
-const float D3D10_DEFAULT_BORDER_COLOR_COMPONENT                                        = 0.0;
-const float D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS                                       = 0.0;
-const float D3D10_DEFAULT_DEPTH_BIAS_CLAMP                                              = 0.0;
-const float D3D10_DEFAULT_MAX_ANISOTROPY                                                = 16.0;
-const float D3D10_DEFAULT_MIP_LOD_BIAS                                                  = 0.0;
-const float D3D10_DEFAULT_VIEWPORT_MAX_DEPTH                                            = 0.0;
-const float D3D10_DEFAULT_VIEWPORT_MIN_DEPTH                                            = 0.0;
-const float D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP                                        = 0.6;
-const float D3D10_FLOAT32_MAX                                                           = 3.402823466e+38;
-const float D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP                                   = 0.6;
-const float D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR                                    = 2.4;
-const float D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR                                      = 1.0;
-const float D3D10_FLOAT_TO_SRGB_OFFSET                                                  = 0.055;
-const float D3D10_FLOAT_TO_SRGB_SCALE_1                                                 = 12.92;
-const float D3D10_FLOAT_TO_SRGB_SCALE_2                                                 = 1.055;
-const float D3D10_FLOAT_TO_SRGB_THRESHOLD                                               = 0.0031308;
-const float D3D10_FTOI_INSTRUCTION_MAX_INPUT                                            = 2147483647.999;
-const float D3D10_FTOI_INSTRUCTION_MIN_INPUT                                            = -2147483648.999;
-const float D3D10_FTOU_INSTRUCTION_MAX_INPUT                                            = 4294967295.999;
-const float D3D10_FTOU_INSTRUCTION_MIN_INPUT                                            = 0.0;
-const float D3D10_LINEAR_GAMMA                                                          = 1.0;
-const float D3D10_MAX_BORDER_COLOR_COMPONENT                                            = 1.0;
-const float D3D10_MAX_DEPTH                                                             = 1.0;
-const float D3D10_MAX_POSITION_VALUE                                                    = 3.402823466e+34;
-const float D3D10_MIN_BORDER_COLOR_COMPONENT                                            = 0.0;
-const float D3D10_MIN_DEPTH                                                             = 0.0;
-const float D3D10_MIP_LOD_BIAS_MAX                                                      = 15.99;
-const float D3D10_MIP_LOD_BIAS_MIN                                                      = -16.0;
-const float D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT                                  = 0.5;
-const float D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH                                      = 1.4;
-const float D3D10_SRGB_GAMMA                                                            = 2.2;
-const float D3D10_SRGB_TO_FLOAT_DENOMINATOR_1                                           = 12.92;
-const float D3D10_SRGB_TO_FLOAT_DENOMINATOR_2                                           = 1.055;
-const float D3D10_SRGB_TO_FLOAT_EXPONENT                                                = 2.4;
-const float D3D10_SRGB_TO_FLOAT_OFFSET                                                  = 0.055;
-const float D3D10_SRGB_TO_FLOAT_THRESHOLD                                               = 0.04045;
-const float D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP                                        = 0.5;
-const float D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT                           = 0.0;
-const float D3D_SPEC_VERSION                                                            = 1.050005;
-const unsigned int D3D10_16BIT_INDEX_STRIP_CUT_VALUE                                    = 0xffff;
-const unsigned int D3D10_32BIT_INDEX_STRIP_CUT_VALUE                                    = 0xffffffff;
-const unsigned int D3D10_8BIT_INDEX_STRIP_CUT_VALUE                                     = 0xff;
-const unsigned int D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT                             = 9;
-const unsigned int D3D10_CLIP_OR_CULL_DISTANCE_COUNT                                    = 8;
-const unsigned int D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT                            = 2;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT                    = 14;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS                        = 4;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT               = 32;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT                     = 15;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS               = 4;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT                    = 15;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST           = 1;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS               = 1;
-const unsigned int D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT                         = 64;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS     = 4;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT          = 1;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS     = 1;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT               = 32;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS                = 1;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT                     = 128;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST            = 1;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS                = 1;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT                         = 128;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS                       = 1;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT                            = 16;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST                   = 1;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS                       = 1;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT                                = 16;
-const unsigned int D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT                          = 32;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS                          = 4;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT                 = 32;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_COUNT                               = 4096;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST                      = 3;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS                          = 3;
-const unsigned int D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX                      = 10;
-const int D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN                               = -10;
-const int D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE                                  = -8;
-const unsigned int D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE                         = 7;
-const unsigned int D3D10_DEFAULT_DEPTH_BIAS                                             = 0;
-const unsigned int D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX                              = 0;
-const unsigned int D3D10_DEFAULT_SAMPLE_MASK                                            = 0xffffffff;
-const unsigned int D3D10_DEFAULT_SCISSOR_ENDX                                           = 0;
-const unsigned int D3D10_DEFAULT_SCISSOR_ENDY                                           = 0;
-const unsigned int D3D10_DEFAULT_SCISSOR_STARTX                                         = 0;
-const unsigned int D3D10_DEFAULT_SCISSOR_STARTY                                         = 0;
-const unsigned int D3D10_DEFAULT_STENCIL_READ_MASK                                      = 0xff;
-const unsigned int D3D10_DEFAULT_STENCIL_REFERENCE                                      = 0;
-const unsigned int D3D10_DEFAULT_STENCIL_WRITE_MASK                                     = 0xff;
-const unsigned int D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX                         = 0;
-const unsigned int D3D10_DEFAULT_VIEWPORT_HEIGHT                                        = 0;
-const unsigned int D3D10_DEFAULT_VIEWPORT_TOPLEFTX                                      = 0;
-const unsigned int D3D10_DEFAULT_VIEWPORT_TOPLEFTY                                      = 0;
-const unsigned int D3D10_DEFAULT_VIEWPORT_WIDTH                                         = 0;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS                        = 1;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT               = 32;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT                             = 1;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST                    = 2;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS                        = 1;
-const unsigned int D3D10_GS_INPUT_REGISTER_COMPONENTS                                   = 4;
-const unsigned int D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT                          =32;
-const unsigned int D3D10_GS_INPUT_REGISTER_COUNT                                        = 16;
-const unsigned int D3D10_GS_INPUT_REGISTER_READS_PER_INST                               = 2;
-const unsigned int D3D10_GS_INPUT_REGISTER_READ_PORTS                                   = 1;
-const unsigned int D3D10_GS_INPUT_REGISTER_VERTICES                                     = 6;
-const unsigned int D3D10_GS_OUTPUT_ELEMENTS                                             = 32;
-const unsigned int D3D10_GS_OUTPUT_REGISTER_COMPONENTS                                  = 4;
-const unsigned int D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT                         = 32;
-const unsigned int D3D10_GS_OUTPUT_REGISTER_COUNT                                       = 32;
-const unsigned int D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES                        = 0;
-const unsigned int D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY                                  = 0;
-const unsigned int D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES                       = 0;
-const unsigned int D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT                             = 1;
-const unsigned int D3D10_IA_INSTANCE_ID_BIT_COUNT                                       = 32;
-const unsigned int D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT                                = 32;
-const unsigned int D3D10_IA_PRIMITIVE_ID_BIT_COUNT                                      = 32;
-const unsigned int D3D10_IA_VERTEX_ID_BIT_COUNT                                         = 32;
-const unsigned int D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT                            = 16;
-const unsigned int D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS                  = 64;
-const unsigned int D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT                        = 16;
-const unsigned int D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT                                = 0xffffffff;
-const unsigned int D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER                               = 0xffffffff;
-const unsigned int D3D10_MAX_MAXANISOTROPY                                              = 16;
-const unsigned int D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT                                   = 32;
-const unsigned int D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP                                 = 17;
-const unsigned int D3D10_MIN_MAXANISOTROPY                                              = 0;
-const unsigned int D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT                                   = 6;
-const unsigned int D3D10_MIP_LOD_RANGE_BIT_COUNT                                        = 8;
-const unsigned int D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT                     = 0;
-const unsigned int D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT                                  = 13;
-const unsigned int D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT                      = 15;
-const unsigned int D3D10_PS_FRONTFACING_DEFAULT_VALUE                                   = 0xffffffff;
-const unsigned int D3D10_PS_FRONTFACING_FALSE_VALUE                                     = 0;
-const unsigned int D3D10_PS_FRONTFACING_TRUE_VALUE                                      = 0xffffffff;
-const unsigned int D3D10_PS_INPUT_REGISTER_COMPONENTS                                   = 4;
-const unsigned int D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT                          = 32;
-const unsigned int D3D10_PS_INPUT_REGISTER_COUNT                                        = 32;
-const unsigned int D3D10_PS_INPUT_REGISTER_READS_PER_INST                               = 2;
-const unsigned int D3D10_PS_INPUT_REGISTER_READ_PORTS                                   = 1;
-const unsigned int D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS                            = 1;
-const unsigned int D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT                   = 32;
-const unsigned int D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT                                 = 1;
-const unsigned int D3D10_PS_OUTPUT_REGISTER_COMPONENTS                                  = 4;
-const unsigned int D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT                         = 32;
-const unsigned int D3D10_PS_OUTPUT_REGISTER_COUNT                                       = 8;
-const unsigned int D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT                             = 4096;
-const unsigned int D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP                       = 27;
-const unsigned int D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT                              = 4096;
-const unsigned int D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT                     = 4096;
-const unsigned int D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP                           = 32;
-const unsigned int D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP                                 = 32;
-const unsigned int D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION                = 8192;
-const unsigned int D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT                 = 1024;
-const unsigned int D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT                    = 4096;
-const unsigned int D3D10_REQ_MAXANISOTROPY                                              = 16;
-const unsigned int D3D10_REQ_MIP_LEVELS                                                 = 14;
-const unsigned int D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES                      = 2048;
-const unsigned int D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT                        = 4096;
-const unsigned int D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH                              = 8192;
-const unsigned int D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES                                 = 128;
-const unsigned int D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP                   = 20;
-const unsigned int D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT                           = 4096;
-const unsigned int D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION                             = 512;
-const unsigned int D3D10_REQ_TEXTURE1D_U_DIMENSION                                      = 8192;
-const unsigned int D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION                             = 512;
-const unsigned int D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION                                 = 8192;
-const unsigned int D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION                               = 2048;
-const unsigned int D3D10_REQ_TEXTURECUBE_DIMENSION                                      = 8192;
-const unsigned int D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL                   = 0;
-const unsigned int D3D10_SHADER_MAJOR_VERSION                                           = 4;
-const unsigned int D3D10_SHADER_MINOR_VERSION                                           = 0;
-const unsigned int D3D10_SHIFT_INSTRUCTION_PAD_VALUE                                    = 0;
-const unsigned int D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT                        = 5;
-const unsigned int D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT                               = 8;
-const unsigned int D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES                                  = 2048;
-const unsigned int D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES                            = 256;
-const unsigned int D3D10_SO_BUFFER_SLOT_COUNT                                           = 4;
-const unsigned int D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP                             = 0xffffffff;
-const unsigned int D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER                         = 1;
-const unsigned int D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT                               = 64;
-const unsigned int D3D10_STANDARD_COMPONENT_BIT_COUNT                                   = 32;
-const unsigned int D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED                           = 64;
-const unsigned int D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE               = 4;
-const unsigned int D3D10_STANDARD_PIXEL_COMPONENT_COUNT                                 = 128;
-const unsigned int D3D10_STANDARD_PIXEL_ELEMENT_COUNT                                   = 32;
-const unsigned int D3D10_STANDARD_VECTOR_SIZE                                           = 4;
-const unsigned int D3D10_STANDARD_VERTEX_ELEMENT_COUNT                                  = 16;
-const unsigned int D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT                          = 64;
-const unsigned int D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT                                  = 8;
-const unsigned int D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT                                  = 6;
-const unsigned int D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT                                  = 18;
-const unsigned int D3D10_UNBOUND_MEMORY_ACCESS_RESULT                                   = 0;
-const unsigned int D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX                             = 15;
-const unsigned int D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE             = 16;
-const unsigned int D3D10_VIEWPORT_BOUNDS_MAX                                            = 16383;
-const int D3D10_VIEWPORT_BOUNDS_MIN                                                     = -16384;
-const unsigned int D3D10_VS_INPUT_REGISTER_COMPONENTS                                   = 4;
-const unsigned int D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT                          = 32;
-const unsigned int D3D10_VS_INPUT_REGISTER_COUNT                                        = 16;
-const unsigned int D3D10_VS_INPUT_REGISTER_READS_PER_INST                               = 2;
-const unsigned int D3D10_VS_INPUT_REGISTER_READ_PORTS                                   = 1;
-const unsigned int D3D10_VS_OUTPUT_REGISTER_COMPONENTS                                  = 4;
-const unsigned int D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT                         = 32;
-const unsigned int D3D10_VS_OUTPUT_REGISTER_COUNT                                       = 16;
-const unsigned int D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT                          = 10;
-const unsigned int D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP                          = 25;
-const unsigned int D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP                                = 25;
-const unsigned int D3D_MAJOR_VERSION                                                    = 10;
-const unsigned int D3D_MINOR_VERSION                                                    = 0;
-const unsigned int D3D_SPEC_DATE_DAY                                                    = 8;
-const unsigned int D3D_SPEC_DATE_MONTH                                                  = 8;
-const unsigned int D3D_SPEC_DATE_YEAR                                                   = 2006;
-cpp_quote("#endif")
-
-const unsigned int D3D10_APPEND_ALIGNED_ELEMENT                                         = 0xffffffff;
-const unsigned int _FACD3D10                                                            = 0x87;
-const unsigned int _FACD3D10DEBUG                                                       = _FACD3D10 + 1;
-const unsigned int D3D10_FILTER_TYPE_MASK                                               = 0x3;
-const unsigned int D3D10_SDK_VERSION                                                    = 29;
-
-cpp_quote("#define MAKE_D3D10_HRESULT(code)                   MAKE_HRESULT( 1, _FACD3D10, code)")
-cpp_quote("#define MAKE_D3D10_STATUS(code)                    MAKE_HRESULT( 0, _FACD3D10, code)")
-cpp_quote("#define D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS  MAKE_D3D10_HRESULT(1)")
-cpp_quote("#define D3D10_ERROR_FILE_NOT_FOUND                 MAKE_D3D10_HRESULT(2)")
-
-typedef enum D3D10_BLEND {
-    D3D10_BLEND_ZERO             = 1,
-    D3D10_BLEND_ONE              = 2,
-    D3D10_BLEND_SRC_COLOR        = 3,
-    D3D10_BLEND_INV_SRC_COLOR    = 4,
-    D3D10_BLEND_SRC_ALPHA        = 5,
-    D3D10_BLEND_INV_SRC_ALPHA    = 6,
-    D3D10_BLEND_DEST_ALPHA       = 7,
-    D3D10_BLEND_INV_DEST_ALPHA   = 8,
-    D3D10_BLEND_DEST_COLOR       = 9,
-    D3D10_BLEND_INV_DEST_COLOR   = 10,
-    D3D10_BLEND_SRC_ALPHA_SAT    = 11,
-    D3D10_BLEND_BLEND_FACTOR     = 14,
-    D3D10_BLEND_INV_BLEND_FACTOR = 15,
-    D3D10_BLEND_SRC1_COLOR       = 16,
-    D3D10_BLEND_INV_SRC1_COLOR   = 17,
-    D3D10_BLEND_SRC1_ALPHA       = 18,
-    D3D10_BLEND_INV_SRC1_ALPHA   = 19
-} D3D10_BLEND;
-
-typedef enum D3D10_BLEND_OP {
-    D3D10_BLEND_OP_ADD = 1,
-    D3D10_BLEND_OP_SUBTRACT,
-    D3D10_BLEND_OP_REV_SUBTRACT,
-    D3D10_BLEND_OP_MIN,
-    D3D10_BLEND_OP_MAX,
-} D3D10_BLEND_OP;
-
-typedef struct D3D10_BLEND_DESC {
-    BOOL AlphaToCoverageEnable;
-    BOOL BlendEnable[8];
-    D3D10_BLEND SrcBlend;
-    D3D10_BLEND DestBlend;
-    D3D10_BLEND_OP BlendOp;
-    D3D10_BLEND SrcBlendAlpha;
-    D3D10_BLEND DestBlendAlpha;
-    D3D10_BLEND_OP BlendOpAlpha;
-    UINT8 RenderTargetWriteMask[8];
-} D3D10_BLEND_DESC;
-
-typedef enum D3D10_DEPTH_WRITE_MASK {
-    D3D10_DEPTH_WRITE_MASK_ZERO,
-    D3D10_DEPTH_WRITE_MASK_ALL,
-} D3D10_DEPTH_WRITE_MASK;
-
-typedef enum D3D10_COMPARISON_FUNC {
-    D3D10_COMPARISON_NEVER = 1,
-    D3D10_COMPARISON_LESS,
-    D3D10_COMPARISON_EQUAL,
-    D3D10_COMPARISON_LESS_EQUAL,
-    D3D10_COMPARISON_GREATER,
-    D3D10_COMPARISON_NOT_EQUAL,
-    D3D10_COMPARISON_GREATER_EQUAL,
-    D3D10_COMPARISON_ALWAYS,
-} D3D10_COMPARISON_FUNC;
-
-typedef enum D3D10_STENCIL_OP {
-    D3D10_STENCIL_OP_KEEP = 1,
-    D3D10_STENCIL_OP_ZERO,
-    D3D10_STENCIL_OP_REPLACE,
-    D3D10_STENCIL_OP_INCR_SAT,
-    D3D10_STENCIL_OP_DECR_SAT,
-    D3D10_STENCIL_OP_INVERT,
-    D3D10_STENCIL_OP_INCR,
-    D3D10_STENCIL_OP_DECR,
-} D3D10_STENCIL_OP;
-
-typedef struct D3D10_DEPTH_STENCILOP_DESC {
-    D3D10_STENCIL_OP StencilFailOp;
-    D3D10_STENCIL_OP StencilDepthFailOp;
-    D3D10_STENCIL_OP StencilPassOp;
-    D3D10_COMPARISON_FUNC StencilFunc;
-} D3D10_DEPTH_STENCILOP_DESC;
-
-typedef struct D3D10_DEPTH_STENCIL_DESC {
-    BOOL DepthEnable;
-    D3D10_DEPTH_WRITE_MASK DepthWriteMask;
-    D3D10_COMPARISON_FUNC DepthFunc;
-    BOOL StencilEnable;
-    UINT8 StencilReadMask;
-    UINT8 StencilWriteMask;
-    D3D10_DEPTH_STENCILOP_DESC FrontFace;
-    D3D10_DEPTH_STENCILOP_DESC BackFace;
-} D3D10_DEPTH_STENCIL_DESC;
-
-typedef enum D3D10_FILL_MODE {
-    D3D10_FILL_WIREFRAME = 2,
-    D3D10_FILL_SOLID,
-} D3D10_FILL_MODE;
-
-typedef enum D3D10_CULL_MODE {
-    D3D10_CULL_NONE = 1,
-    D3D10_CULL_FRONT,
-    D3D10_CULL_BACK,
-} D3D10_CULL_MODE;
-
-typedef struct D3D10_RASTERIZER_DESC {
-    D3D10_FILL_MODE FillMode;
-    D3D10_CULL_MODE CullMode;
-    BOOL FrontCounterClockwise;
-    INT DepthBias;
-    FLOAT DepthBiasClamp;
-    FLOAT SlopeScaledDepthBias;
-    BOOL DepthClipEnable;
-    BOOL ScissorEnable;
-    BOOL MultisampleEnable;
-    BOOL AntialiasedLineEnable;
-} D3D10_RASTERIZER_DESC;
-
-typedef enum D3D10_FILTER {
-    D3D10_FILTER_MIN_MAG_MIP_POINT                          = 0,
-    D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR                   = 0x1,
-    D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT             = 0x4,
-    D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR                   = 0x5,
-    D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT                   = 0x10,
-    D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR            = 0x11,
-    D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT                   = 0x14,
-    D3D10_FILTER_MIN_MAG_MIP_LINEAR                         = 0x15,
-    D3D10_FILTER_ANISOTROPIC                                = 0x55,
-    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT               = 0x80,
-    D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR        = 0x81,
-    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT  = 0x84,
-    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR        = 0x85,
-    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT        = 0x90,
-    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
-    D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT        = 0x94,
-    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR              = 0x95,
-    D3D10_FILTER_COMPARISON_ANISOTROPIC                     = 0xd5,
-    D3D10_FILTER_TEXT_1BIT                                  = 0x80000000
-} D3D10_FILTER;
-
-typedef enum D3D10_TEXTURE_ADDRESS_MODE {
-    D3D10_TEXTURE_ADDRESS_WRAP = 1,
-    D3D10_TEXTURE_ADDRESS_MIRROR,
-    D3D10_TEXTURE_ADDRESS_CLAMP,
-    D3D10_TEXTURE_ADDRESS_BORDER,
-    D3D10_TEXTURE_ADDRESS_MIRROR_ONCE,
-} D3D10_TEXTURE_ADDRESS_MODE;
-
-typedef struct D3D10_SAMPLER_DESC {
-    D3D10_FILTER Filter;
-    D3D10_TEXTURE_ADDRESS_MODE AddressU;
-    D3D10_TEXTURE_ADDRESS_MODE AddressV;
-    D3D10_TEXTURE_ADDRESS_MODE AddressW;
-    FLOAT MipLODBias;
-    UINT MaxAnisotropy;
-    D3D10_COMPARISON_FUNC ComparisonFunc;
-    FLOAT BorderColor[4];
-    FLOAT MinLOD;
-    FLOAT MaxLOD;
-} D3D10_SAMPLER_DESC;
-
-typedef enum D3D10_COUNTER {
-    D3D10_COUNTER_GPU_IDLE,
-    D3D10_COUNTER_VERTEX_PROCESSING,
-    D3D10_COUNTER_GEOMETRY_PROCESSING,
-    D3D10_COUNTER_PIXEL_PROCESSING,
-    D3D10_COUNTER_OTHER_GPU_PROCESSING,
-    D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION,
-    D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION,
-    D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION,
-    D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION,
-    D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION,
-    D3D10_COUNTER_VS_MEMORY_LIMITED,
-    D3D10_COUNTER_VS_COMPUTATION_LIMITED,
-    D3D10_COUNTER_GS_MEMORY_LIMITED,
-    D3D10_COUNTER_GS_COMPUTATION_LIMITED,
-    D3D10_COUNTER_PS_MEMORY_LIMITED,
-    D3D10_COUNTER_PS_COMPUTATION_LIMITED,
-    D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE,
-    D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE,
-    D3D10_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000
-} D3D10_COUNTER;
-
-typedef struct D3D10_COUNTER_DESC {
-    D3D10_COUNTER Counter;
-    UINT MiscFlags;
-} D3D10_COUNTER_DESC;
-
-typedef enum D3D10_COUNTER_TYPE {
-    D3D10_COUNTER_TYPE_FLOAT32,
-    D3D10_COUNTER_TYPE_UINT16,
-    D3D10_COUNTER_TYPE_UINT32,
-    D3D10_COUNTER_TYPE_UINT64,
-} D3D10_COUNTER_TYPE;
-
-typedef struct D3D10_COUNTER_INFO {
-    D3D10_COUNTER LastDeviceDependentCounter;
-    UINT NumSimultaneousCounters;
-    UINT8 NumDetectableParallelUnits;
-} D3D10_COUNTER_INFO;
-
-typedef enum D3D10_RESOURCE_DIMENSION {
-    D3D10_RESOURCE_DIMENSION_UNKNOWN,
-    D3D10_RESOURCE_DIMENSION_BUFFER,
-    D3D10_RESOURCE_DIMENSION_TEXTURE1D,
-    D3D10_RESOURCE_DIMENSION_TEXTURE2D,
-    D3D10_RESOURCE_DIMENSION_TEXTURE3D,
-} D3D10_RESOURCE_DIMENSION;
-
-typedef enum D3D10_USAGE {
-    D3D10_USAGE_DEFAULT,
-    D3D10_USAGE_IMMUTABLE,
-    D3D10_USAGE_DYNAMIC,
-    D3D10_USAGE_STAGING,
-} D3D10_USAGE;
-
-typedef struct D3D10_BUFFER_DESC {
-    UINT ByteWidth;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_BUFFER_DESC;
-
-typedef enum D3D10_MAP {
-    D3D10_MAP_READ = 1,
-    D3D10_MAP_WRITE,
-    D3D10_MAP_READ_WRITE,
-    D3D10_MAP_WRITE_DISCARD,
-    D3D10_MAP_WRITE_NO_OVERWRITE,
-} D3D10_MAP;
-
-typedef struct D3D10_TEXTURE1D_DESC {
-    UINT Width;
-    UINT MipLevels;
-    UINT ArraySize;
-    DXGI_FORMAT Format;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE1D_DESC;
-
-typedef struct D3D10_TEXTURE2D_DESC {
-    UINT Width;
-    UINT Height;
-    UINT MipLevels;
-    UINT ArraySize;
-    DXGI_FORMAT Format;
-    DXGI_SAMPLE_DESC SampleDesc;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE2D_DESC;
-
-typedef struct D3D10_TEXTURE3D_DESC {
-    UINT Width;
-    UINT Height;
-    UINT Depth;
-    UINT MipLevels;
-    DXGI_FORMAT Format;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE3D_DESC;
-
-typedef enum D3D10_DSV_DIMENSION
-{
-    D3D10_DSV_DIMENSION_UNKNOWN,
-    D3D10_DSV_DIMENSION_TEXTURE1D,
-    D3D10_DSV_DIMENSION_TEXTURE1DARRAY,
-    D3D10_DSV_DIMENSION_TEXTURE2D,
-    D3D10_DSV_DIMENSION_TEXTURE2DARRAY,
-    D3D10_DSV_DIMENSION_TEXTURE2DMS,
-    D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY,
-} D3D10_DSV_DIMENSION;
-
-typedef struct D3D10_TEX1D_DSV {
-    UINT MipSlice;
-} D3D10_TEX1D_DSV;
-
-typedef struct D3D10_TEX1D_ARRAY_DSV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_DSV;
-
-typedef struct D3D10_TEX2D_DSV {
-    UINT MipSlice;
-} D3D10_TEX2D_DSV;
-
-typedef struct D3D10_TEX2D_ARRAY_DSV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_DSV;
-
-typedef struct D3D10_TEX2DMS_DSV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_DSV;
-
-typedef struct D3D10_TEX2DMS_ARRAY_DSV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_DSV;
-
-typedef struct D3D10_DEPTH_STENCIL_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_DSV_DIMENSION ViewDimension;
-    union {
-        D3D10_TEX1D_DSV Texture1D;
-        D3D10_TEX1D_ARRAY_DSV Texture1DArray;
-        D3D10_TEX2D_DSV Texture2D;
-        D3D10_TEX2D_ARRAY_DSV Texture2DArray;
-        D3D10_TEX2DMS_DSV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray;
-    } DUMMYUNIONNAME;
-} D3D10_DEPTH_STENCIL_VIEW_DESC;
-
-typedef enum D3D10_RTV_DIMENSION {
-    D3D10_RTV_DIMENSION_UNKNOWN,
-    D3D10_RTV_DIMENSION_BUFFER,
-    D3D10_RTV_DIMENSION_TEXTURE1D,
-    D3D10_RTV_DIMENSION_TEXTURE1DARRAY,
-    D3D10_RTV_DIMENSION_TEXTURE2D,
-    D3D10_RTV_DIMENSION_TEXTURE2DARRAY,
-    D3D10_RTV_DIMENSION_TEXTURE2DMS,
-    D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY,
-    D3D10_RTV_DIMENSION_TEXTURE3D,
-} D3D10_RTV_DIMENSION;
-
-typedef struct D3D10_BUFFER_RTV {
-    UINT ElementOffset;
-    UINT ElementWidth;
-} D3D10_BUFFER_RTV;
-
-typedef struct D3D10_TEX1D_RTV {
-    UINT MipSlice;
-} D3D10_TEX1D_RTV;
-
-typedef struct D3D10_TEX1D_ARRAY_RTV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_RTV;
-
-typedef struct D3D10_TEX2D_RTV {
-    UINT MipSlice;
-} D3D10_TEX2D_RTV;
-
-typedef struct D3D10_TEX2D_ARRAY_RTV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_RTV;
-
-typedef struct D3D10_TEX2DMS_RTV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_RTV;
-
-typedef struct D3D10_TEX2DMS_ARRAY_RTV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_RTV;
-
-typedef struct D3D10_TEX3D_RTV {
-    UINT MipSlice;
-    UINT FirstWSlice;
-    UINT WSize;
-} D3D10_TEX3D_RTV;
-
-typedef struct D3D10_RENDER_TARGET_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_RTV_DIMENSION ViewDimension;
-    union {
-        D3D10_BUFFER_RTV Buffer;
-        D3D10_TEX1D_RTV Texture1D;
-        D3D10_TEX1D_ARRAY_RTV Texture1DArray;
-        D3D10_TEX2D_RTV Texture2D;
-        D3D10_TEX2D_ARRAY_RTV Texture2DArray;
-        D3D10_TEX2DMS_RTV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray;
-        D3D10_TEX3D_RTV Texture3D;
-    } DUMMYUNIONNAME;
-} D3D10_RENDER_TARGET_VIEW_DESC;
-
-typedef enum D3D10_SRV_DIMENSION {
-    D3D10_SRV_DIMENSION_UNKNOWN,
-    D3D10_SRV_DIMENSION_BUFFER,
-    D3D10_SRV_DIMENSION_TEXTURE1D,
-    D3D10_SRV_DIMENSION_TEXTURE1DARRAY,
-    D3D10_SRV_DIMENSION_TEXTURE2D,
-    D3D10_SRV_DIMENSION_TEXTURE2DARRAY,
-    D3D10_SRV_DIMENSION_TEXTURE2DMS,
-    D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY,
-    D3D10_SRV_DIMENSION_TEXTURE3D,
-    D3D10_SRV_DIMENSION_TEXTURECUBE,
-} D3D10_SRV_DIMENSION;
-
-typedef struct D3D10_BUFFER_SRV {
-    UINT ElementOffset;
-    UINT ElementWidth;
-} D3D10_BUFFER_SRV;
-
-typedef struct D3D10_TEX1D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX1D_SRV;
-
-typedef struct D3D10_TEX1D_ARRAY_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_SRV;
-
-typedef struct D3D10_TEX2D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX2D_SRV;
-
-typedef struct D3D10_TEX2D_ARRAY_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_SRV;
-
-typedef struct D3D10_TEX2DMS_SRV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_SRV;
-
-typedef struct D3D10_TEX2DMS_ARRAY_SRV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_SRV;
-
-typedef struct D3D10_TEX3D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX3D_SRV;
-
-typedef struct D3D10_TEXCUBE_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEXCUBE_SRV;
-
-typedef struct D3D10_SHADER_RESOURCE_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_SRV_DIMENSION ViewDimension;
-    union {
-        D3D10_BUFFER_SRV Buffer;
-        D3D10_TEX1D_SRV Texture1D;
-        D3D10_TEX1D_ARRAY_SRV Texture1DArray;
-        D3D10_TEX2D_SRV Texture2D;
-        D3D10_TEX2D_ARRAY_SRV Texture2DArray;
-        D3D10_TEX2DMS_SRV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
-        D3D10_TEX3D_SRV Texture3D;
-        D3D10_TEXCUBE_SRV TextureCube;
-    } DUMMYUNIONNAME;
-} D3D10_SHADER_RESOURCE_VIEW_DESC;
-
-typedef struct D3D10_BOX {
-    UINT left;
-    UINT top;
-    UINT front;
-    UINT right;
-    UINT bottom;
-    UINT back;
-} D3D10_BOX;
-
-typedef struct D3D10_SUBRESOURCE_DATA {
-    const void *pSysMem;
-    UINT SysMemPitch;
-    UINT SysMemSlicePitch;
-} D3D10_SUBRESOURCE_DATA;
-
-typedef struct D3D10_SO_DECLARATION_ENTRY {
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    BYTE StartComponent;
-    BYTE ComponentCount;
-    BYTE OutputSlot;
-} D3D10_SO_DECLARATION_ENTRY;
-
-typedef enum D3D10_INPUT_CLASSIFICATION {
-    D3D10_INPUT_PER_VERTEX_DATA,
-    D3D10_INPUT_PER_INSTANCE_DATA,
-} D3D10_INPUT_CLASSIFICATION;
-
-typedef struct D3D10_INPUT_ELEMENT_DESC {
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    DXGI_FORMAT Format;
-    UINT InputSlot;
-    UINT AlignedByteOffset;
-    D3D10_INPUT_CLASSIFICATION InputSlotClass;
-    UINT InstanceDataStepRate;
-} D3D10_INPUT_ELEMENT_DESC;
-
-typedef enum D3D10_QUERY {
-    D3D10_QUERY_EVENT,
-    D3D10_QUERY_OCCLUSION,
-    D3D10_QUERY_TIMESTAMP,
-    D3D10_QUERY_TIMESTAMP_DISJOINT,
-    D3D10_QUERY_PIPELINE_STATISTICS,
-    D3D10_QUERY_OCCLUSION_PREDICATE,
-    D3D10_QUERY_SO_STATISTICS,
-    D3D10_QUERY_SO_OVERFLOW_PREDICATE,
-} D3D10_QUERY;
-
-typedef struct D3D10_QUERY_DESC {
-    D3D10_QUERY Query;
-    UINT MiscFlags;
-} D3D10_QUERY_DESC;
-
-typedef enum D3D10_PRIMITIVE_TOPOLOGY {
-    D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED         = 0,
-    D3D10_PRIMITIVE_TOPOLOGY_POINTLIST         = 1,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST          = 2,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP         = 3,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST      = 4,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP     = 5,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ      = 10,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ     = 11,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ  = 12,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13
-} D3D10_PRIMITIVE_TOPOLOGY;
-
-typedef RECT D3D10_RECT;
-
-typedef struct D3D10_VIEWPORT {
-    INT TopLeftX;
-    INT TopLeftY;
-    UINT Width;
-    UINT Height;
-    FLOAT MinDepth;
-    FLOAT MaxDepth;
-} D3D10_VIEWPORT;
-
-typedef struct D3D10_MAPPED_TEXTURE2D {
-    void *pData;
-    UINT RowPitch;
-} D3D10_MAPPED_TEXTURE2D;
-
-typedef struct D3D10_MAPPED_TEXTURE3D {
-    void *pData;
-    UINT RowPitch;
-    UINT DepthPitch;
-} D3D10_MAPPED_TEXTURE3D;
-
-typedef enum D3D10_BIND_FLAG {
-    D3D10_BIND_VERTEX_BUFFER   = 0x1,
-    D3D10_BIND_INDEX_BUFFER    = 0x2,
-    D3D10_BIND_CONSTANT_BUFFER = 0x4,
-    D3D10_BIND_SHADER_RESOURCE = 0x8,
-    D3D10_BIND_STREAM_OUTPUT   = 0x10,
-    D3D10_BIND_RENDER_TARGET   = 0x20,
-    D3D10_BIND_DEPTH_STENCIL   = 0x40
-} D3D10_BIND_FLAG;
-
-typedef enum D3D10_CPU_ACCESS_FLAG {
-    D3D10_CPU_ACCESS_WRITE = 0x10000,
-    D3D10_CPU_ACCESS_READ  = 0x20000
-} D3D10_CPU_ACCESS_FLAG;
-
-typedef enum D3D10_RESOURCE_MISC_FLAG {
-    D3D10_RESOURCE_MISC_GENERATE_MIPS = 0x1,
-    D3D10_RESOURCE_MISC_SHARED        = 0x2,
-    D3D10_RESOURCE_MISC_TEXTURECUBE   = 0x4
-} D3D10_RESOURCE_MISC_FLAG;
-
-typedef enum D3D10_MAP_FLAG {
-    D3D10_MAP_FLAG_DO_NOT_WAIT = 0x100000,
-} D3D10_MAP_FLAG;
-
-typedef enum D3D10_CLEAR_FLAG {
-    D3D10_CLEAR_DEPTH   = 0x1,
-    D3D10_CLEAR_STENCIL = 0x2
-} D3D10_CLEAR_FLAG;
-
-typedef enum D3D10_COLOR_WRITE_ENABLE {
-    D3D10_COLOR_WRITE_ENABLE_RED   = 0x1,
-    D3D10_COLOR_WRITE_ENABLE_GREEN = 0x2,
-    D3D10_COLOR_WRITE_ENABLE_BLUE  = 0x4,
-    D3D10_COLOR_WRITE_ENABLE_ALPHA = 0x8,
-    D3D10_COLOR_WRITE_ENABLE_ALL   = (D3D10_COLOR_WRITE_ENABLE_RED  | D3D10_COLOR_WRITE_ENABLE_GREEN |
-                                      D3D10_COLOR_WRITE_ENABLE_BLUE | D3D10_COLOR_WRITE_ENABLE_ALPHA)
-} D3D10_COLOR_WRITE_ENABLE;
-
-typedef enum D3D10_TEXTURECUBE_FACE {
-    D3D10_TEXTURECUBE_FACE_POSITIVE_X,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_X,
-    D3D10_TEXTURECUBE_FACE_POSITIVE_Y,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_Y,
-    D3D10_TEXTURECUBE_FACE_POSITIVE_Z,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_Z,
-} D3D10_TEXTURECUBE_FACE;
-
-typedef enum D3D10_ASYNC_GETDATA_FLAG {
-    D3D10_ASYNC_GETDATA_DONOTFLUSH = 0x1,
-} D3D10_ASYNC_GETDATA_FLAG;
-
-typedef enum D3D10_FILTER_TYPE {
-    D3D10_FILTER_TYPE_POINT,
-    D3D10_FILTER_TYPE_LINEAR
-} D3D10_FILTER_TYPE;
-
-typedef enum D3D10_QUERY_MISC_FLAG {
-    D3D10_QUERY_MISC_PREDICATEHINT = 0x1
-} D3D10_QUERY_MISC_FLAG;
-
-typedef struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT {
-    UINT64 Frequency;
-    BOOL Disjoint;
-} D3D10_QUERY_DATA_TIMESTAMP_DISJOINT;
-
-typedef struct D3D10_QUERY_DATA_PIPELINE_STATISTICS {
-    UINT64 IAVertices;
-    UINT64 IAPrimitives;
-    UINT64 VSInvocations;
-    UINT64 GSInvocations;
-    UINT64 GSPrimitives;
-    UINT64 CInvocations;
-    UINT64 CPrimitives;
-    UINT64 PSInvocations;
-} D3D10_QUERY_DATA_PIPELINE_STATISTICS;
-
-typedef struct D3D10_QUERY_DATA_SO_STATISTICS {
-    UINT64 NumPrimitivesWritten;
-    UINT64 PrimitivesStorageNeeded;
-} D3D10_QUERY_DATA_SO_STATISTICS;
-
-typedef enum D3D10_CREATE_DEVICE_FLAG {
-    D3D10_CREATE_DEVICE_SINGLETHREADED                           = 0x1,
-    D3D10_CREATE_DEVICE_DEBUG                                    = 0x2,
-    D3D10_CREATE_DEVICE_SWITCH_TO_REF                            = 0x4,
-    D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8
-} D3D10_CREATE_DEVICE_FLAG;
-
-/* Core */
-
-interface ID3D10Device;
-
-[
-    object,
-    local,
-    uuid(9b7e4c00-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10DeviceChild : IUnknown
-{
-        void GetDevice(
-            [out] ID3D10Device **ppDevice);
-        HRESULT GetPrivateData(
-            [in] REFGUID guid,
-            [in, out] UINT *pDataSize,
-            [out] void *pData);
-        HRESULT SetPrivateData(
-            [in] REFGUID guid,
-            [in] UINT DataSize,
-            [in] const void *pData);
-        HRESULT SetPrivateDataInterface(
-            [in] REFGUID guid,
-            [in] const IUnknown *pData);
-}
-
-/* Resource */
-
-[
-    object,
-    local,
-    uuid(9b7e4c01-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Resource : ID3D10DeviceChild
-{
-        void GetType(
-            [out] D3D10_RESOURCE_DIMENSION *rType);
-        void SetEvictionPriority(
-            [in] UINT EvictionPriority);
-        UINT GetEvictionPriority();
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c02-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Buffer : ID3D10Resource
-{
-        HRESULT Map(
-            [in] D3D10_MAP MapType,
-            [in] UINT MapFlags,
-            [out] void **ppData);
-        void Unmap();
-        void GetDesc(
-            [out] D3D10_BUFFER_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c03-342c-4106-a19f-4f2704f689F0)
-]
-interface ID3D10Texture1D : ID3D10Resource
-{
-        HRESULT Map(
-            [in] UINT Subresource,
-            [in] D3D10_MAP MapType,
-            [in] UINT MapFlags,
-            [out] void **ppData);
-        void Unmap(
-            [in] UINT Subresource);
-        void GetDesc(
-            [out] D3D10_TEXTURE1D_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c04-342c-4106-a19f-4f2704f689F0)
-]
-interface ID3D10Texture2D : ID3D10Resource
-{
-        HRESULT Map(
-            [in] UINT Subresource,
-            [in] D3D10_MAP MapType,
-            [in] UINT MapFlags,
-            [out] D3D10_MAPPED_TEXTURE2D *pMappedTex2D);
-        void Unmap(
-            [in] UINT Subresource);
-        void GetDesc(
-            [out] D3D10_TEXTURE2D_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c05-342c-4106-a19f-4f2704f689F0)
-]
-interface ID3D10Texture3D : ID3D10Resource
-{
-        HRESULT Map(
-            [in] UINT Subresource,
-            [in] D3D10_MAP MapType,
-            [in] UINT MapFlags,
-            [out] D3D10_MAPPED_TEXTURE3D *pMappedTex3D);
-        void Unmap(
-            [in] UINT Subresource);
-        void GetDesc(
-            [out] D3D10_TEXTURE3D_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(c902b03f-60a7-49ba-9936-2a3ab37a7e33)
-]
-interface ID3D10View : ID3D10DeviceChild
-{
-        void GetResource(
-            [out] ID3D10Resource **ppResource);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c09-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10DepthStencilView : ID3D10View
-{
-        void GetDesc(
-            [out] D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
-}
-
-
-[
-    object,
-    local,
-    uuid(9b7e4c08-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10RenderTargetView : ID3D10View
-{
-        void GetDesc(
-            [out] D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c07-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10ShaderResourceView  : ID3D10View
-{
-        void GetDesc(
-            [out] D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
-}
-
-/* Resource End */
-
-[
-    object,
-    local,
-    uuid(edad8d19-8a35-4d6d-8566-2ea276cde161)
-]
-interface ID3D10BlendState : ID3D10DeviceChild
-{
-    void GetDesc(
-            [out] D3D10_BLEND_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(2b4b1cc8-a4ad-41f8-8322-ca86fc3ec675)
-]
-interface ID3D10DepthStencilState : ID3D10DeviceChild
-{
-    void GetDesc(
-            [out] D3D10_DEPTH_STENCIL_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(6316be88-54cd-4040-ab44-20461bc81f68)
-]
-interface ID3D10GeometryShader  : ID3D10DeviceChild
-{
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0b-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10InputLayout  : ID3D10DeviceChild
-{
-}
-
-[
-    object,
-    local,
-    uuid(4968b601-9d00-4cde-8346-8e7f675819b6)
-]
-interface ID3D10PixelShader  : ID3D10DeviceChild
-{
-}
-
-[
-    object,
-    local,
-    uuid(a2a07292-89af-4345-be2e-c53d9fbb6e9f)
-]
-interface ID3D10RasterizerState  : ID3D10DeviceChild
-{
-    void GetDesc(
-            [out] D3D10_RASTERIZER_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0c-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10SamplerState  : ID3D10DeviceChild
-{
-    void GetDesc(
-            [out] D3D10_SAMPLER_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0a-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10VertexShader  : ID3D10DeviceChild
-{
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0d-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Asynchronous  : ID3D10DeviceChild
-{
-    void Begin();
-    void End();
-    HRESULT GetData(
-            [out] void *pData,
-            [in] UINT DataSize,
-            [in] UINT GetDataFlags);
-    UINT GetDataSize();
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c11-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Counter  : ID3D10Asynchronous
-{
-    void GetDesc(
-            [out] D3D10_COUNTER_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4C0e-342C-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Query : ID3D10Asynchronous
-{
-    void GetDesc(
-            [out] D3D10_QUERY_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c10-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Predicate : ID3D10Query
-{
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0f-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Device : IUnknown
-{
-        void VSSetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppConstantBuffers);
-        void PSSetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [in] ID3D10ShaderResourceView *const *ppShaderResourceViews);
-        void PSSetShader(
-            [in] ID3D10PixelShader *pPixelShader);
-        void PSSetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [in]ID3D10SamplerState *const *ppSamplers);
-        void VSSetShader(
-            [in] ID3D10VertexShader *pVertexShader);
-        void DrawIndexed(
-            [in] UINT IndexCount,
-            [in] UINT StartIndexLocation,
-            [in] INT BaseVertexLocation);
-        void Draw(
-            [in] UINT VertexCount,
-            [in] UINT StartVertexLocation);
-        void PSSetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppConstantBuffers);
-        void IASetInputLayout(
-            [in] ID3D10InputLayout *pInputLayout);
-        void IASetVertexBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppVertexBuffers,
-            [in] const UINT *pStrides,
-            [in] const UINT *pOffsets);
-        void IASetIndexBuffer(
-            [in] ID3D10Buffer *pIndexBuffer,
-            [in] DXGI_FORMAT Format,
-            [in] UINT Offset);
-        void DrawIndexedInstanced(
-            [in] UINT IndexCountPerInstance,
-            [in] UINT InstanceCount,
-            [in] UINT StartIndexLocation,
-            [in] INT BaseVertexLocation,
-            [in] UINT StartInstanceLocation);
-        void DrawInstanced(
-            [in] UINT VertexCountPerInstance,
-            [in] UINT InstanceCount,
-            [in] UINT StartVertexLocation,
-            [in] UINT StartInstanceLocation);
-        void GSSetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppConstantBuffers);
-        void GSSetShader(
-            [in] ID3D10GeometryShader *pShader);
-        void IASetPrimitiveTopology(
-            [in] D3D10_PRIMITIVE_TOPOLOGY Topology);
-        void VSSetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [in] ID3D10ShaderResourceView *const *ppShaderResourceViews);
-        void VSSetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [in] ID3D10SamplerState *const *ppSamplers);
-        void SetPredication(
-            [in] ID3D10Predicate *pPredicate,
-            [in] BOOL PredicateValue);
-        void GSSetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [in] ID3D10ShaderResourceView * const *ppShaderResourceViews);
-        void GSSetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [in] ID3D10SamplerState *const *ppSamplers);
-        void OMSetRenderTargets(
-            [in] UINT NumViews,
-            [in] ID3D10RenderTargetView *const *ppRenderTargetViews,
-            [in] ID3D10DepthStencilView *pDepthStencilView);
-        void OMSetBlendState(
-            [in] ID3D10BlendState *pBlendState,
-            [in] const FLOAT BlendFactor[4],
-            [in] UINT SampleMask);
-        void OMSetDepthStencilState(
-            [in] ID3D10DepthStencilState *pDepthStencilState,
-            [in] UINT StencilRef);
-        void SOSetTargets(
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppSOTargets,
-            [in] const UINT *pOffsets);
-        void DrawAuto();
-        void RSSetState(
-            [in] ID3D10RasterizerState *pRasterizerState);
-        void RSSetViewports(
-            [in] UINT NumViewports,
-            [in] const D3D10_VIEWPORT *pViewports);
-        void RSSetScissorRects(
-            [in] UINT NumRects,
-            [in] const D3D10_RECT *pRects);
-        void CopySubresourceRegion(
-            [in] ID3D10Resource *pDstResource,
-            [in] UINT DstSubresource,
-            [in] UINT DstX,
-            [in] UINT DstY,
-            [in] UINT DstZ,
-            [in] ID3D10Resource *pSrcResource,
-            [in] UINT SrcSubresource,
-            [in] const D3D10_BOX *pSrcBox);
-        void CopyResource(
-            [in] ID3D10Resource *pDstResource,
-            [in] ID3D10Resource *pSrcResource);
-        void UpdateSubresource(
-            [in] ID3D10Resource *pDstResource,
-            [in] UINT DstSubresource,
-            [in] const D3D10_BOX *pDstBox,
-            [in] const void *pSrcData,
-            [in] UINT SrcRowPitch,
-            [in] UINT SrcDepthPitch);
-        void ClearRenderTargetView(
-            [in] ID3D10RenderTargetView *pRenderTargetView,
-            [in] const FLOAT ColorRGBA[4]);
-        void ClearDepthStencilView(
-            [in] ID3D10DepthStencilView *pDepthStencilView,
-            [in] UINT ClearFlags,
-            [in] FLOAT Depth,
-            [in] UINT8 Stencil);
-        void GenerateMips(
-            [in] ID3D10ShaderResourceView *pShaderResourceView);
-        void ResolveSubresource(
-            [in] ID3D10Resource *pDstResource,
-            [in] UINT DstSubresource,
-            [in] ID3D10Resource *pSrcResource,
-            [in] UINT SrcSubresource,
-            [in] DXGI_FORMAT Format);
-        void VSGetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppConstantBuffers);
-        void PSGetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [out] ID3D10ShaderResourceView **ppShaderResourceViews);
-        void PSGetShader(
-            [out] ID3D10PixelShader **ppPixelShader);
-        void PSGetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [out] ID3D10SamplerState **ppSamplers);
-        void VSGetShader(
-            [out] ID3D10VertexShader **ppVertexShader);
-        void PSGetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppConstantBuffers);
-        void IAGetInputLayout(
-            [out] ID3D10InputLayout **ppInputLayout);
-        void IAGetVertexBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppVertexBuffers,
-            [out] UINT *pStrides,
-            [out] UINT *pOffsets);
-        void IAGetIndexBuffer(
-            [out] ID3D10Buffer **pIndexBuffer,
-            [out] DXGI_FORMAT *Format,
-            [out] UINT *Offset);
-        void GSGetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppConstantBuffers);
-        void GSGetShader(
-            [out] ID3D10GeometryShader **ppGeometryShader);
-        void IAGetPrimitiveTopology(
-            [out] D3D10_PRIMITIVE_TOPOLOGY *pTopology);
-        void VSGetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [out] ID3D10ShaderResourceView **ppShaderResourceViews);
-        void VSGetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [out] ID3D10SamplerState **ppSamplers);
-        void GetPredication(
-            [out] ID3D10Predicate **ppPredicate,
-            [out] BOOL *pPredicateValue);
-        void GSGetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [out] ID3D10ShaderResourceView **ppShaderResourceViews);
-        void GSGetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [out] ID3D10SamplerState **ppSamplers);
-        void OMGetRenderTargets(
-            [in] UINT NumViews,
-            [out] ID3D10RenderTargetView **ppRenderTargetViews,
-            [out] ID3D10DepthStencilView **ppDepthStencilView);
-        void OMGetBlendState(
-            [out] ID3D10BlendState **ppBlendState,
-            [out] FLOAT BlendFactor[4],
-            [out] UINT *pSampleMask);
-        void OMGetDepthStencilState(
-            [out] ID3D10DepthStencilState **ppDepthStencilState,
-            [out] UINT *pStencilRef);
-        void SOGetTargets(
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppSOTargets,
-            [out] UINT *pOffsets);
-        void RSGetState(
-            [out] ID3D10RasterizerState **ppRasterizerState);
-        void RSGetViewports(
-            [in, out] UINT *NumViewports,
-            [out] D3D10_VIEWPORT *pViewports);
-        void RSGetScissorRects(
-            [in, out] UINT *NumRects,
-            [out] D3D10_RECT *pRects);
-        HRESULT GetDeviceRemovedReason();
-        HRESULT SetExceptionMode(
-            [in] UINT RaiseFlags);
-        UINT GetExceptionMode();
-        HRESULT GetPrivateData(
-            [in] REFGUID guid,
-            [in, out] UINT *pDataSize,
-            [out] void *pData);
-        HRESULT SetPrivateData(
-            [in] REFGUID guid,
-            [in] UINT DataSize,
-            [in] const void *pData);
-        HRESULT SetPrivateDataInterface(
-            [in] REFGUID guid,
-            [in] const IUnknown *pData);
-        void ClearState();
-        void Flush();
-        HRESULT CreateBuffer(
-            [in] const D3D10_BUFFER_DESC *pDesc,
-            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
-            [out] ID3D10Buffer **ppBuffer);
-        HRESULT CreateTexture1D(
-            [in] const D3D10_TEXTURE1D_DESC *pDesc,
-            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
-            [out] ID3D10Texture1D **ppTexture1D);
-        HRESULT CreateTexture2D(
-            [in] const D3D10_TEXTURE2D_DESC *pDesc,
-            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
-            [out] ID3D10Texture2D **ppTexture2D);
-        HRESULT CreateTexture3D(
-            [in] const D3D10_TEXTURE3D_DESC *pDesc,
-            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
-            [out] ID3D10Texture3D **ppTexture3D);
-        HRESULT CreateShaderResourceView(
-            [in] ID3D10Resource *pResource,
-            [in] const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
-            [out] ID3D10ShaderResourceView **ppSRView);
-        HRESULT CreateRenderTargetView(
-            [in] ID3D10Resource *pResource,
-            [in] const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
-            [out] ID3D10RenderTargetView **ppRTView);
-        HRESULT CreateDepthStencilView(
-            [in] ID3D10Resource *pResource,
-            [in] const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
-            [out] ID3D10DepthStencilView **ppDepthStencilView);
-        HRESULT CreateInputLayout(
-            [in] const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
-            [in] UINT NumElements,
-            [in] const void *pShaderBytecodeWithInputSignature,
-            [in] SIZE_T BytecodeLength,
-            [out] ID3D10InputLayout **ppInputLayout);
-        HRESULT CreateVertexShader(
-            [in] const void *pShaderBytecode,
-            [in] SIZE_T BytecodeLength,
-            [out] ID3D10VertexShader **ppVertexShader);
-        HRESULT CreateGeometryShader(
-            [in] const void *pShaderBytecode,
-            [in] SIZE_T BytecodeLength,
-            [out] ID3D10GeometryShader **ppGeometryShader);
-        HRESULT CreateGeometryShaderWithStreamOutput(
-            [in] const void *pShaderBytecode,
-            [in] SIZE_T BytecodeLength,
-            [in] const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
-            [in] UINT NumEntries,
-            [in] UINT OutputStreamStride,
-            [out] ID3D10GeometryShader **ppGeometryShader);
-        HRESULT CreatePixelShader(
-            [in] const void *pShaderBytecode,
-            [in] SIZE_T BytecodeLength,
-            [out] ID3D10PixelShader **ppPixelShader);
-        HRESULT CreateBlendState(
-            [in] const D3D10_BLEND_DESC *pBlendStateDesc,
-            [out] ID3D10BlendState **ppBlendState);
-        HRESULT CreateDepthStencilState(
-            [in] const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
-            [out] ID3D10DepthStencilState **ppDepthStencilState);
-        HRESULT CreateRasterizerState(
-            [in] const D3D10_RASTERIZER_DESC *pRasterizerDesc,
-            [out] ID3D10RasterizerState **ppRasterizerState);
-        HRESULT CreateSamplerState(
-            [in] const D3D10_SAMPLER_DESC *pSamplerDesc,
-            [out] ID3D10SamplerState **ppSamplerState);
-        HRESULT CreateQuery(
-            [in] const D3D10_QUERY_DESC *pQueryDesc,
-            [out] ID3D10Query **ppQuery);
-        HRESULT CreatePredicate(
-            [in] const D3D10_QUERY_DESC *pPredicateDesc,
-            [out] ID3D10Predicate **ppPredicate);
-        HRESULT CreateCounter(
-            [in] const D3D10_COUNTER_DESC *pCounterDesc,
-            [out] ID3D10Counter **ppCounter);
-        HRESULT CheckFormatSupport(
-            [in] DXGI_FORMAT Format,
-            [out] UINT *pFormatSupport);
-        HRESULT CheckMultisampleQualityLevels(
-            [in] DXGI_FORMAT Format,
-            [in] UINT SampleCount,
-            [out] UINT *pNumQualityLevels);
-        void CheckCounterInfo(
-            [out] D3D10_COUNTER_INFO *pCounterInfo);
-        HRESULT CheckCounter(
-            [in] const D3D10_COUNTER_DESC *pDesc,
-            [out] D3D10_COUNTER_TYPE *pType,
-            [out] UINT *pActiveCounters,
-            [out] LPSTR szName,
-            [in, out] UINT *pNameLength,
-            [out] LPSTR szUnits,
-            [in, out] UINT *pUnitsLength,
-            [out] LPSTR szDescription,
-            [in, out] UINT *pDescriptionLength);
-        UINT GetCreationFlags();
-        HRESULT OpenSharedResource(
-            [in] HANDLE hResource,
-            [in] REFIID ReturnedInterface,
-            [out] void **ppResource);
-        void SetTextFilterSize(
-            [in] UINT Width,
-            [in] UINT Height);
-        void GetTextFilterSize(
-            [out] UINT *pWidth,
-            [out] UINT *pHeight);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4e00-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Multithread : IUnknown
-{
-        void Enter();
-        void Leave();
-        BOOL SetMultithreadProtected(
-            [in] BOOL bMTProtect);
-        BOOL GetMultithreadProtected();
-}
-
-cpp_quote("#include \"d3d10misc.h\"")
-cpp_quote("#include \"d3d10shader.h\"")
-cpp_quote("#include \"d3d10effect.h\"")
-/* TODO: Include "d310sdklayers.h" as soon as it exists */
diff --git a/misc/builddeps/win32/dx/include/d3d10effect.h b/misc/builddeps/win32/dx/include/d3d10effect.h
deleted file mode 100644 (file)
index e020583..0000000
+++ /dev/null
@@ -1,788 +0,0 @@
-/*
- * Copyright 2009 Henri Verbeet for CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- */
-
-#ifndef __WINE_D3D10EFFECT_H
-#define __WINE_D3D10EFFECT_H
-
-#include "d3d10.h"
-
-#define D3D10_EFFECT_VARIABLE_POOLED                0x1
-#define D3D10_EFFECT_VARIABLE_ANNOTATION            0x2
-#define D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT   0x4
-
-#ifndef D3D10_BYTES_FROM_BITS
-#define D3D10_BYTES_FROM_BITS(x) (((x) + 7) >> 3)
-#endif
-
-typedef struct _D3D10_EFFECT_TYPE_DESC
-{
-    LPCSTR TypeName;
-    D3D10_SHADER_VARIABLE_CLASS Class;
-    D3D10_SHADER_VARIABLE_TYPE Type;
-    UINT Elements;
-    UINT Members;
-    UINT Rows;
-    UINT Columns;
-    UINT PackedSize;
-    UINT UnpackedSize;
-    UINT Stride;
-} D3D10_EFFECT_TYPE_DESC;
-
-typedef struct _D3D10_EFFECT_VARIABLE_DESC
-{
-    LPCSTR Name;
-    LPCSTR Semantic;
-    UINT Flags;
-    UINT Annotations;
-    UINT BufferOffset;
-    UINT ExplicitBindPoint;
-} D3D10_EFFECT_VARIABLE_DESC;
-
-typedef struct _D3D10_TECHNIQUE_DESC
-{
-    LPCSTR Name;
-    UINT Passes;
-    UINT Annotations;
-} D3D10_TECHNIQUE_DESC;
-
-typedef struct _D3D10_STATE_BLOCK_MASK
-{
-    BYTE VS;
-    BYTE VSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
-    BYTE VSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
-    BYTE VSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
-    BYTE GS;
-    BYTE GSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
-    BYTE GSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
-    BYTE GSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
-    BYTE PS;
-    BYTE PSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
-    BYTE PSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
-    BYTE PSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
-    BYTE IAVertexBuffers[D3D10_BYTES_FROM_BITS(D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT)];
-    BYTE IAIndexBuffer;
-    BYTE IAInputLayout;
-    BYTE IAPrimitiveTopology;
-    BYTE OMRenderTargets;
-    BYTE OMDepthStencilState;
-    BYTE OMBlendState;
-    BYTE RSViewports;
-    BYTE RSScissorRects;
-    BYTE RSRasterizerState;
-    BYTE SOBuffers;
-    BYTE Predication;
-} D3D10_STATE_BLOCK_MASK;
-
-typedef struct _D3D10_EFFECT_DESC
-{
-    BOOL IsChildEffect;
-    UINT ConstantBuffers;
-    UINT SharedConstantBuffers;
-    UINT GlobalVariables;
-    UINT SharedGlobalVariables;
-    UINT Techniques;
-} D3D10_EFFECT_DESC;
-
-typedef struct _D3D10_EFFECT_SHADER_DESC
-{
-    const BYTE *pInputSignature;
-    BOOL IsInline;
-    const BYTE *pBytecode;
-    UINT BytecodeLength;
-    LPCSTR SODecl;
-    UINT NumInputSignatureEntries;
-    UINT NumOutputSignatureEntries;
-} D3D10_EFFECT_SHADER_DESC;
-
-typedef struct _D3D10_PASS_DESC
-{
-    LPCSTR Name;
-    UINT Annotations;
-    BYTE *pIAInputSignature;
-    SIZE_T IAInputSignatureSize;
-    UINT StencilRef;
-    UINT SampleMask;
-    FLOAT BlendFactor[4];
-} D3D10_PASS_DESC;
-
-typedef struct _D3D10_PASS_SHADER_DESC
-{
-    struct ID3D10EffectShaderVariable *pShaderVariable;
-    UINT ShaderIndex;
-} D3D10_PASS_SHADER_DESC;
-
-DEFINE_GUID(IID_ID3D10EffectType, 0x4e9e1ddc, 0xcd9d, 0x4772, 0xa8, 0x37, 0x00, 0x18, 0x0b, 0x9b, 0x88, 0xfd);
-
-#define INTERFACE ID3D10EffectType
-DECLARE_INTERFACE(ID3D10EffectType)
-{
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_TYPE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetMemberTypeByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetMemberTypeByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetMemberTypeBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(LPCSTR, GetMemberName)(THIS_ UINT index) PURE;
-    STDMETHOD_(LPCSTR, GetMemberSemantic)(THIS_ UINT index) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectVariable, 0xae897105, 0x00e6, 0x45bf, 0xbb, 0x8e, 0x28, 0x1d, 0xd6, 0xdb, 0x8e, 0x1b);
-
-#define INTERFACE ID3D10EffectVariable
-DECLARE_INTERFACE(ID3D10EffectVariable)
-{
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectConstantBuffer, 0x56648f4d, 0xcc8b, 0x4444, 0xa5, 0xad, 0xb5, 0xa3, 0xd7, 0x6e, 0x91, 0xb3);
-
-#define INTERFACE ID3D10EffectConstantBuffer
-DECLARE_INTERFACE_(ID3D10EffectConstantBuffer, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectConstantBuffer methods */
-    STDMETHOD(SetConstantBuffer)(THIS_ ID3D10Buffer *buffer) PURE;
-    STDMETHOD(GetConstantBuffer)(THIS_ ID3D10Buffer **buffer) PURE;
-    STDMETHOD(SetTextureBuffer)(THIS_ ID3D10ShaderResourceView *view) PURE;
-    STDMETHOD(GetTextureBuffer)(THIS_ ID3D10ShaderResourceView **view) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectScalarVariable, 0x00e48f7b, 0xd2c8, 0x49e8, 0xa8, 0x6c, 0x02, 0x2d, 0xee, 0x53, 0x43, 0x1f);
-
-#define INTERFACE ID3D10EffectScalarVariable
-DECLARE_INTERFACE_(ID3D10EffectScalarVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectScalarVariable methods */
-    STDMETHOD(SetFloat)(THIS_ float value) PURE;
-    STDMETHOD(GetFloat)(THIS_ float *value) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ float *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetFloatArray)(THIS_ float *values, UINT offset, UINT count) PURE;
-    STDMETHOD(SetInt)(THIS_ int value) PURE;
-    STDMETHOD(GetInt)(THIS_ int *value) PURE;
-    STDMETHOD(SetIntArray)(THIS_ int *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetIntArray)(THIS_ int *values, UINT offset, UINT count) PURE;
-    STDMETHOD(SetBool)(THIS_ BOOL value) PURE;
-    STDMETHOD(GetBool)(THIS_ BOOL *value) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ BOOL *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetBoolArray)(THIS_ BOOL *values, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectVectorVariable, 0x62b98c44, 0x1f82, 0x4c67, 0xbc, 0xd0, 0x72, 0xcf, 0x8f, 0x21, 0x7e, 0x81);
-
-#define INTERFACE ID3D10EffectVectorVariable
-DECLARE_INTERFACE_(ID3D10EffectVectorVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectVectorVariable methods */
-    STDMETHOD(SetBoolVector)(THIS_ BOOL *value) PURE;
-    STDMETHOD(SetIntVector)(THIS_ int *value) PURE;
-    STDMETHOD(SetFloatVector)(THIS_ float *value) PURE;
-    STDMETHOD(GetBoolVector)(THIS_ BOOL *value) PURE;
-    STDMETHOD(GetIntVector)(THIS_ int *value) PURE;
-    STDMETHOD(GetFloatVector)(THIS_ float *value) PURE;
-    STDMETHOD(SetBoolVectorArray)(THIS_ BOOL *values, UINT offset, UINT count) PURE;
-    STDMETHOD(SetIntVectorArray)(THIS_ int *values, UINT offset, UINT count) PURE;
-    STDMETHOD(SetFloatVectorArray)(THIS_ float *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetBoolVectorArray)(THIS_ BOOL *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetIntVectorArray)(THIS_ int *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetFloatVectorArray)(THIS_ float *values, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectMatrixVariable, 0x50666c24, 0xb82f, 0x4eed, 0xa1, 0x72, 0x5b, 0x6e, 0x7e, 0x85, 0x22, 0xe0);
-
-#define INTERFACE ID3D10EffectMatrixVariable
-DECLARE_INTERFACE_(ID3D10EffectMatrixVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectMatrixVariable methods */
-    STDMETHOD(SetMatrix)(THIS_ float *data) PURE;
-    STDMETHOD(GetMatrix)(THIS_ float *data) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ float *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetMatrixArray)(THIS_ float *data, UINT offset, UINT count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ float *data) PURE;
-    STDMETHOD(GetMatrixTranspose)(THIS_ float *data) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ float *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposeArray)(THIS_ float *data, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectStringVariable, 0x71417501, 0x8df9, 0x4e0a, 0xa7, 0x8a, 0x25, 0x5f, 0x97, 0x56, 0xba, 0xff);
-
-#define INTERFACE ID3D10EffectStringVariable
-DECLARE_INTERFACE_(ID3D10EffectStringVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectStringVariable methods */
-    STDMETHOD(GetString)(THIS_ LPCSTR *str) PURE;
-    STDMETHOD(GetStringArray)(THIS_ LPCSTR *strs, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectShaderResourceVariable,
-        0xc0a7157b, 0xd872, 0x4b1d, 0x80, 0x73, 0xef, 0xc2, 0xac, 0xd4, 0xb1, 0xfc);
-
-#define INTERFACE ID3D10EffectShaderResourceVariable
-DECLARE_INTERFACE_(ID3D10EffectShaderResourceVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectShaderResourceVariable methods */
-    STDMETHOD(SetResource)(THIS_ ID3D10ShaderResourceView *resource) PURE;
-    STDMETHOD(GetResource)(THIS_ ID3D10ShaderResourceView **resource) PURE;
-    STDMETHOD(SetResourceArray)(THIS_ ID3D10ShaderResourceView **resources, UINT offset, UINT count) PURE;
-    STDMETHOD(GetResourceArray)(THIS_ ID3D10ShaderResourceView **resources, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectRenderTargetViewVariable,
-        0x28ca0cc3, 0xc2c9, 0x40bb, 0xb5, 0x7f, 0x67, 0xb7, 0x37, 0x12, 0x2b, 0x17);
-
-#define INTERFACE ID3D10EffectRenderTargetViewVariable
-DECLARE_INTERFACE_(ID3D10EffectRenderTargetViewVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectRenderTargetViewVariable methods */
-    STDMETHOD(SetRenderTarget)(THIS_ ID3D10RenderTargetView *view) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ ID3D10RenderTargetView **view) PURE;
-    STDMETHOD(SetRenderTargetArray)(THIS_ ID3D10RenderTargetView **views, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRenderTargetArray)(THIS_ ID3D10RenderTargetView **views, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectDepthStencilViewVariable,
-        0x3e02c918, 0xcc79, 0x4985, 0xb6, 0x22, 0x2d, 0x92, 0xad, 0x70, 0x16, 0x23);
-
-#define INTERFACE ID3D10EffectDepthStencilViewVariable
-DECLARE_INTERFACE_(ID3D10EffectDepthStencilViewVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectDepthStencilViewVariable methods */
-    STDMETHOD(SetDepthStencil)(THIS_ ID3D10DepthStencilView *view) PURE;
-    STDMETHOD(GetDepthStencil)(THIS_ ID3D10DepthStencilView **view) PURE;
-    STDMETHOD(SetDepthStencilArray)(THIS_ ID3D10DepthStencilView **views, UINT offset, UINT count) PURE;
-    STDMETHOD(GetDepthStencilArray)(THIS_ ID3D10DepthStencilView **views, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectShaderVariable, 0x80849279, 0xc799, 0x4797, 0x8c, 0x33, 0x04, 0x07, 0xa0, 0x7d, 0x9e, 0x06);
-
-#define INTERFACE ID3D10EffectShaderVariable
-DECLARE_INTERFACE_(ID3D10EffectShaderVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectShaderVariable methods */
-    STDMETHOD(GetShaderDesc)(THIS_ UINT index, D3D10_EFFECT_SHADER_DESC *desc) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ UINT index, ID3D10VertexShader **shader) PURE;
-    STDMETHOD(GetGeometryShader)(THIS_ UINT index, ID3D10GeometryShader **shader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ UINT index, ID3D10PixelShader **shader) PURE;
-    STDMETHOD(GetInputSignatureElementDesc)(THIS_ UINT shader_index, UINT element_index,
-            D3D10_SIGNATURE_PARAMETER_DESC *desc) PURE;
-    STDMETHOD(GetOutputSignatureElementDesc)(THIS_ UINT shader_index, UINT element_index,
-            D3D10_SIGNATURE_PARAMETER_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectBlendVariable, 0x1fcd2294, 0xdf6d, 0x4eae, 0x86, 0xb3, 0x0e, 0x91, 0x60, 0xcf, 0xb0, 0x7b);
-
-#define INTERFACE ID3D10EffectBlendVariable
-DECLARE_INTERFACE_(ID3D10EffectBlendVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectBlendVariable methods */
-    STDMETHOD(GetBlendState)(THIS_ UINT index, ID3D10BlendState **blend_state) PURE;
-    STDMETHOD(GetBackingStore)(THIS_ UINT index, D3D10_BLEND_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectDepthStencilVariable,
-        0xaf482368, 0x330a, 0x46a5, 0x9a, 0x5c, 0x01, 0xc7, 0x1a, 0xf2, 0x4c, 0x8d);
-
-#define INTERFACE ID3D10EffectDepthStencilVariable
-DECLARE_INTERFACE_(ID3D10EffectDepthStencilVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectDepthStencilVariable methods */
-    STDMETHOD(GetDepthStencilState)(THIS_ UINT index, ID3D10DepthStencilState **depth_stencil_state) PURE;
-    STDMETHOD(GetBackingStore)(THIS_ UINT index, D3D10_DEPTH_STENCIL_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectRasterizerVariable,
-        0x21af9f0e, 0x4d94, 0x4ea9, 0x97, 0x85, 0x2c, 0xb7, 0x6b, 0x8c, 0x0b, 0x34);
-
-#define INTERFACE ID3D10EffectRasterizerVariable
-DECLARE_INTERFACE_(ID3D10EffectRasterizerVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectRasterizerVariable methods */
-    STDMETHOD(GetRasterizerState)(THIS_ UINT index, ID3D10RasterizerState **rasterizer_state) PURE;
-    STDMETHOD(GetBackingStore)(THIS_ UINT index, D3D10_RASTERIZER_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectSamplerVariable,
-        0x6530d5c7, 0x07e9, 0x4271, 0xa4, 0x18, 0xe7, 0xce, 0x4b, 0xd1, 0xe4, 0x80);
-
-#define INTERFACE ID3D10EffectSamplerVariable
-DECLARE_INTERFACE_(ID3D10EffectSamplerVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectSamplerVariable methods */
-    STDMETHOD(GetSampler)(THIS_ UINT index, ID3D10SamplerState **sampler) PURE;
-    STDMETHOD(GetBackingStore)(THIS_ UINT index, D3D10_SAMPLER_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectTechnique, 0xdb122ce8, 0xd1c9, 0x4292, 0xb2, 0x37, 0x24, 0xed, 0x3d, 0xe8, 0xb1, 0x75);
-
-#define INTERFACE ID3D10EffectTechnique
-DECLARE_INTERFACE(ID3D10EffectTechnique)
-{
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_TECHNIQUE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectPass *, GetPassByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectPass *, GetPassByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD(ComputeStateBlockMask)(THIS_ D3D10_STATE_BLOCK_MASK *mask) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10Effect, 0x51b0ca8b, 0xec0b, 0x4519, 0x87, 0x0d, 0x8e, 0xe1, 0xcb, 0x50, 0x17, 0xc7);
-
-#define INTERFACE ID3D10Effect
-DECLARE_INTERFACE_(ID3D10Effect, IUnknown)
-{
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /* ID3D10Effect methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(BOOL, IsPool)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ ID3D10Device **device) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetConstantBufferByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetConstantBufferByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetVariableByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetVariableByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetVariableBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectTechnique *, GetTechniqueByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectTechnique *, GetTechniqueByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD(Optimize)(THIS) PURE;
-    STDMETHOD_(BOOL, IsOptimized)(THIS) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectPool, 0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
-
-#define INTERFACE ID3D10EffectPool
-DECLARE_INTERFACE_(ID3D10EffectPool, IUnknown)
-{
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /* ID3D10EffectPool methods */
-    STDMETHOD_(struct ID3D10Effect *, AsEffect)(THIS) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectPass, 0x5cfbeb89, 0x1a06, 0x46e0, 0xb2, 0x82, 0xe3, 0xf9, 0xbf, 0xa3, 0x6a, 0x54);
-
-#define INTERFACE ID3D10EffectPass
-DECLARE_INTERFACE(ID3D10EffectPass)
-{
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_PASS_DESC *desc) PURE;
-    STDMETHOD(GetVertexShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *desc) PURE;
-    STDMETHOD(GetGeometryShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *desc) PURE;
-    STDMETHOD(GetPixelShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD(Apply)(THIS_ UINT flags) PURE;
-    STDMETHOD(ComputeStateBlockMask)(THIS_ D3D10_STATE_BLOCK_MASK *mask) PURE;
-};
-#undef INTERFACE
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3D10CreateEffectFromMemory(void *data, SIZE_T data_size, UINT flags,
-        ID3D10Device *device, ID3D10EffectPool *effect_pool, ID3D10Effect **effect);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WINE_D3D10EFFECT_H */
diff --git a/misc/builddeps/win32/dx/include/d3d10misc.h b/misc/builddeps/win32/dx/include/d3d10misc.h
deleted file mode 100644 (file)
index 58a6d26..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2008 Henri Verbeet for CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3D10MISC_H__
-#define __D3D10MISC_H__
-
-#include "d3d10.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum D3D10_DRIVER_TYPE {
-    D3D10_DRIVER_TYPE_HARDWARE  = 0,
-    D3D10_DRIVER_TYPE_REFERENCE = 1,
-    D3D10_DRIVER_TYPE_NULL      = 2,
-    D3D10_DRIVER_TYPE_SOFTWARE  = 3,
-} D3D10_DRIVER_TYPE;
-
-HRESULT WINAPI D3D10CreateDevice(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
-        HMODULE swrast, UINT flags, UINT sdk_version, ID3D10Device **device);
-
-HRESULT WINAPI D3D10CreateDeviceAndSwapChain(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
-        HMODULE swrast, UINT flags, UINT sdk_version, DXGI_SWAP_CHAIN_DESC *swapchain_desc,
-        IDXGISwapChain **swapchain, ID3D10Device **device);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __D3D10MISC_H__ */
diff --git a/misc/builddeps/win32/dx/include/d3d10shader.h b/misc/builddeps/win32/dx/include/d3d10shader.h
deleted file mode 100644 (file)
index 99b123c..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2009 Henri Verbeet for CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- */
-
-#ifndef __WINE_D3D10SHADER_H
-#define __WINE_D3D10SHADER_H
-
-#include "d3d10.h"
-
-#define D3D10_SHADER_DEBUG                          0x0001
-#define D3D10_SHADER_SKIP_VALIDATION                0x0002
-#define D3D10_SHADER_SKIP_OPTIMIZATION              0x0004
-#define D3D10_SHADER_PACK_MATRIX_ROW_MAJOR          0x0008
-#define D3D10_SHADER_PACK_MATRIX_COLUMN_MAJOR       0x0010
-#define D3D10_SHADER_PARTIAL_PRECISION              0x0020
-#define D3D10_SHADER_FORCE_VS_SOFTWARE_NO_OPT       0x0040
-#define D3D10_SHADER_FORCE_PS_SOFTWARE_NO_OPT       0x0080
-#define D3D10_SHADER_NO_PRESHADER                   0x0100
-#define D3D10_SHADER_AVOID_FLOW_CONTROL             0x0200
-#define D3D10_SHADER_PREFER_FLOW_CONTROL            0x0400
-#define D3D10_SHADER_ENABLE_STRICTNESS              0x0800
-#define D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY 0x1000
-#define D3D10_SHADER_IEEE_STRICTNESS                0x2000
-
-typedef enum _D3D10_SHADER_VARIABLE_CLASS
-{
-    D3D10_SVC_SCALAR,
-    D3D10_SVC_VECTOR,
-    D3D10_SVC_MATRIX_ROWS,
-    D3D10_SVC_MATRIX_COLUMNS,
-    D3D10_SVC_OBJECT,
-    D3D10_SVC_STRUCT,
-    D3D10_SVC_FORCE_DWORD = 0x7fffffff
-} D3D10_SHADER_VARIABLE_CLASS, *LPD3D10_SHADER_VARIABLE_CLASS;
-
-typedef enum _D3D10_SHADER_VARIABLE_TYPE
-{
-    D3D10_SVT_VOID = 0,
-    D3D10_SVT_BOOL = 1,
-    D3D10_SVT_INT = 2,
-    D3D10_SVT_FLOAT = 3,
-    D3D10_SVT_STRING = 4,
-    D3D10_SVT_TEXTURE = 5,
-    D3D10_SVT_TEXTURE1D = 6,
-    D3D10_SVT_TEXTURE2D = 7,
-    D3D10_SVT_TEXTURE3D = 8,
-    D3D10_SVT_TEXTURECUBE = 9,
-    D3D10_SVT_SAMPLER = 10,
-    D3D10_SVT_PIXELSHADER = 15,
-    D3D10_SVT_VERTEXSHADER = 16,
-    D3D10_SVT_UINT = 19,
-    D3D10_SVT_UINT8 = 20,
-    D3D10_SVT_GEOMETRYSHADER = 21,
-    D3D10_SVT_RASTERIZER = 22,
-    D3D10_SVT_DEPTHSTENCIL = 23,
-    D3D10_SVT_BLEND = 24,
-    D3D10_SVT_BUFFER = 25,
-    D3D10_SVT_CBUFFER = 26,
-    D3D10_SVT_TBUFFER = 27,
-    D3D10_SVT_TEXTURE1DARRAY = 28,
-    D3D10_SVT_TEXTURE2DARRAY = 29,
-    D3D10_SVT_RENDERTARGETVIEW = 30,
-    D3D10_SVT_DEPTHSTENCILVIEW = 31,
-    D3D10_SVT_TEXTURE2DMS = 32,
-    D3D10_SVT_TEXTURE2DMSARRAY = 33,
-    D3D10_SVT_TEXTURECUBEARRAY = 34,
-    D3D10_SVT_FORCE_DWORD = 0x7fffffff
-} D3D10_SHADER_VARIABLE_TYPE, *LPD3D10_SHADER_VARIABLE_TYPE;
-
-typedef enum D3D10_CBUFFER_TYPE
-{
-    D3D10_CT_CBUFFER = 0,
-    D3D10_CT_TBUFFER = 1
-} D3D10_CBUFFER_TYPE, *LPD3D10_CBUFFER_TYPE;
-
-typedef enum D3D10_NAME
-{
-    D3D10_NAME_UNDEFINED = 0,
-    D3D10_NAME_POSITION = 1,
-    D3D10_NAME_CLIP_DISTANCE = 2,
-    D3D10_NAME_CULL_DISTANCE = 3,
-    D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
-    D3D10_NAME_VIEWPORT_ARRAY_INDEX = 5,
-    D3D10_NAME_VERTEX_ID = 6,
-    D3D10_NAME_PRIMITIVE_ID = 7,
-    D3D10_NAME_INSTANCE_ID = 8,
-    D3D10_NAME_IS_FRONT_FACE = 9,
-    D3D10_NAME_SAMPLE_INDEX = 10,
-    D3D10_NAME_TARGET = 64,
-    D3D10_NAME_DEPTH = 65,
-} D3D10_NAME;
-
-typedef enum D3D10_REGISTER_COMPONENT_TYPE
-{
-    D3D10_REGISTER_COMPONENT_UNKNOWN = 0,
-    D3D10_REGISTER_COMPONENT_UINT32 = 1,
-    D3D10_REGISTER_COMPONENT_SINT32 = 2,
-    D3D10_REGISTER_COMPONENT_FLOAT32 = 3,
-} D3D10_REGISTER_COMPONENT_TYPE;
-
-typedef struct _D3D10_SHADER_MACRO
-{
-    LPCSTR Name;
-    LPCSTR Definition;
-} D3D10_SHADER_MACRO, *LPD3D10_SHADER_MACRO;
-
-typedef struct _D3D10_SIGNATURE_PARAMETER_DESC
-{
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    UINT Register;
-    D3D10_NAME SystemValueType;
-    D3D10_REGISTER_COMPONENT_TYPE ComponentType;
-    BYTE Mask;
-    BYTE ReadWriteMask;
-} D3D10_SIGNATURE_PARAMETER_DESC;
-
-LPCSTR WINAPI D3D10GetVertexShaderProfile(ID3D10Device *device);
-LPCSTR WINAPI D3D10GetGeometryShaderProfile(ID3D10Device *device);
-LPCSTR WINAPI D3D10GetPixelShaderProfile(ID3D10Device *device);
-
-#endif /* __WINE_D3D10SHADER_H */
diff --git a/misc/builddeps/win32/dx/include/d3d8.h b/misc/builddeps/win32/dx/include/d3d8.h
deleted file mode 100644 (file)
index 46e0812..0000000
+++ /dev/null
@@ -1,1145 +0,0 @@
-/*
- * Copyright (C) 2002 Jason Edmeades
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D8_H
-#define __WINE_D3D8_H
-
-#ifndef DIRECT3D_VERSION
-#define DIRECT3D_VERSION  0x0800
-#endif
-
-#include <stdlib.h>
-
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-
-#ifndef __WINESRC__
-# include <windows.h>
-#endif
-
-#include <d3d8types.h>
-#include <d3d8caps.h>
-
-/*****************************************************************************
- * Behavior Flags for IDirect3D8::CreateDevice
- */
-#define D3DCREATE_FPU_PRESERVE                  0x00000002L
-#define D3DCREATE_MULTITHREADED                 0x00000004L
-#define D3DCREATE_PUREDEVICE                    0x00000010L
-#define D3DCREATE_SOFTWARE_VERTEXPROCESSING     0x00000020L
-#define D3DCREATE_HARDWARE_VERTEXPROCESSING     0x00000040L
-#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L
-
-/*****************************************************************************
- * Flags for SetPrivateData
- */
-#define D3DSPD_IUNKNOWN                         0x00000001L
-
-/*****************************************************************************
- * #defines and error codes
- */
-#define D3D_SDK_VERSION              220
-#define D3DADAPTER_DEFAULT           0
-#define D3DENUM_NO_WHQL_LEVEL        2
-
-#define _FACD3D  0x876
-#define MAKE_D3DHRESULT( code )  MAKE_HRESULT( 1, _FACD3D, code )
-
-/*
- * Direct3D Errors
- */
-#define D3D_OK                                  S_OK
-#define D3DERR_WRONGTEXTUREFORMAT               MAKE_D3DHRESULT(2072)
-#define D3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_D3DHRESULT(2073)
-#define D3DERR_UNSUPPORTEDCOLORARG              MAKE_D3DHRESULT(2074)
-#define D3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_D3DHRESULT(2075)
-#define D3DERR_UNSUPPORTEDALPHAARG              MAKE_D3DHRESULT(2076)
-#define D3DERR_TOOMANYOPERATIONS                MAKE_D3DHRESULT(2077)
-#define D3DERR_CONFLICTINGTEXTUREFILTER         MAKE_D3DHRESULT(2078)
-#define D3DERR_UNSUPPORTEDFACTORVALUE           MAKE_D3DHRESULT(2079)
-#define D3DERR_CONFLICTINGRENDERSTATE           MAKE_D3DHRESULT(2081)
-#define D3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_D3DHRESULT(2082)
-#define D3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_D3DHRESULT(2086)
-#define D3DERR_DRIVERINTERNALERROR              MAKE_D3DHRESULT(2087)
-
-#define D3DERR_NOTFOUND                         MAKE_D3DHRESULT(2150)
-#define D3DERR_MOREDATA                         MAKE_D3DHRESULT(2151)
-#define D3DERR_DEVICELOST                       MAKE_D3DHRESULT(2152)
-#define D3DERR_DEVICENOTRESET                   MAKE_D3DHRESULT(2153)
-#define D3DERR_NOTAVAILABLE                     MAKE_D3DHRESULT(2154)
-#define D3DERR_OUTOFVIDEOMEMORY                 MAKE_D3DHRESULT(380)
-#define D3DERR_INVALIDDEVICE                    MAKE_D3DHRESULT(2155)
-#define D3DERR_INVALIDCALL                      MAKE_D3DHRESULT(2156)
-#define D3DERR_DRIVERINVALIDCALL                MAKE_D3DHRESULT(2157)
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID(IID_IDirect3D8,              0x1DD9E8DA,0x1C77,0x4D40,0xB0,0xCF,0x98,0xFE,0xFD,0xFF,0x95,0x12);
-typedef struct IDirect3D8 *LPDIRECT3D8;
-
-DEFINE_GUID(IID_IDirect3DDevice8,        0x7385E5DF,0x8FE8,0x41D5,0x86,0xB6,0xD7,0xB4,0x85,0x47,0xB6,0xCF);
-typedef struct IDirect3DDevice8 *LPDIRECT3DDEVICE8;
-
-DEFINE_GUID(IID_IDirect3DResource8,      0x1B36BB7B,0x09B7,0x410A,0xB4,0x45,0x7D,0x14,0x30,0xD7,0xB3,0x3F);
-typedef struct IDirect3DResource8 *LPDIRECT3DRESOURCE8, *PDIRECT3DRESOURCE8;
-
-DEFINE_GUID(IID_IDirect3DVertexBuffer8,  0x8AEEEAC7,0x05F9,0x44D4,0xB5,0x91,0x00,0x0B,0x0D,0xF1,0xCB,0x95);
-typedef struct IDirect3DVertexBuffer8 *LPDIRECT3DVERTEXBUFFER8, *PDIRECT3DVERTEXBUFFER8;
-
-DEFINE_GUID(IID_IDirect3DVolume8,        0xBD7349F5,0x14F1,0x42E4,0x9C,0x79,0x97,0x23,0x80,0xDB,0x40,0xC0);
-typedef struct IDirect3DVolume8 *LPDIRECT3DVOLUME8, *PDIRECT3DVOLUME8;
-
-DEFINE_GUID(IID_IDirect3DSwapChain8,     0x928C088B,0x76B9,0x4C6B,0xA5,0x36,0xA5,0x90,0x85,0x38,0x76,0xCD);
-typedef struct IDirect3DSwapChain8 *LPDIRECT3DSWAPCHAIN8, *PDIRECT3DSWAPCHAIN8;
-
-DEFINE_GUID(IID_IDirect3DSurface8,       0xB96EEBCA,0xB326,0x4EA5,0x88,0x2F,0x2F,0xF5,0xBA,0xE0,0x21,0xDD);
-typedef struct IDirect3DSurface8 *LPDIRECT3DSURFACE8, *PDIRECT3DSURFACE8;
-
-DEFINE_GUID(IID_IDirect3DIndexBuffer8,   0x0E689C9A,0x053D,0x44A0,0x9D,0x92,0xDB,0x0E,0x3D,0x75,0x0F,0x86);
-typedef struct IDirect3DIndexBuffer8 *LPDIRECT3DINDEXBUFFER8, *PDIRECT3DINDEXBUFFER8;
-
-DEFINE_GUID(IID_IDirect3DBaseTexture8,   0xB4211CFA,0x51B9,0x4A9F,0xAB,0x78,0xDB,0x99,0xB2,0xBB,0x67,0x8E);
-typedef struct IDirect3DBaseTexture8 *LPDIRECT3DBASETEXTURE8, *PDIRECT3DBASETEXTURE8;
-
-DEFINE_GUID(IID_IDirect3DTexture8,       0xE4CDD575,0x2866,0x4F01,0xB1,0x2E,0x7E,0xEC,0xE1,0xEC,0x93,0x58);
-typedef struct IDirect3DTexture8 *LPDIRECT3DTEXTURE8, *PDIRECT3DTEXTURE8;
-
-DEFINE_GUID(IID_IDirect3DCubeTexture8,   0x3EE5B968,0x2ACA,0x4C34,0x8B,0xB5,0x7E,0x0C,0x3D,0x19,0xB7,0x50);
-typedef struct IDirect3DCubeTexture8 *LPDIRECT3DCUBETEXTURE8, *PDIRECT3DCUBETEXTURE8;
-
-DEFINE_GUID(IID_IDirect3DVolumeTexture8, 0x4B8AAAFA,0x140F,0x42BA,0x91,0x31,0x59,0x7E,0xAF,0xAA,0x2E,0xAD);
-typedef struct IDirect3DVolumeTexture8 *LPDIRECT3DVOLUMETEXTURE8, *PDIRECT3DVOLUMETEXTURE8;
-
-/*****************************************************************************
- * IDirect3D8 interface
- */
-#define INTERFACE IDirect3D8
-DECLARE_INTERFACE_(IDirect3D8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D8 methods ***/
-    STDMETHOD(RegisterSoftwareDevice)(THIS_ void * pInitializeFunction) PURE;
-    STDMETHOD_(UINT,GetAdapterCount             )(THIS) PURE;
-    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT  Adapter, DWORD  Flags, D3DADAPTER_IDENTIFIER8 * pIdentifier) PURE;
-    STDMETHOD_(UINT,GetAdapterModeCount)(THIS_ UINT  Adapter) PURE;
-    STDMETHOD(EnumAdapterModes)(THIS_ UINT  Adapter, UINT  Mode, D3DDISPLAYMODE * pMode) PURE;
-    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT  Adapter, D3DDISPLAYMODE * pMode) PURE;
-    STDMETHOD(CheckDeviceType)(THIS_ UINT  Adapter, D3DDEVTYPE  CheckType, D3DFORMAT  DisplayFormat, D3DFORMAT  BackBufferFormat, BOOL  Windowed) PURE;
-    STDMETHOD(CheckDeviceFormat)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  AdapterFormat, DWORD  Usage, D3DRESOURCETYPE  RType, D3DFORMAT  CheckFormat) PURE;
-    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  SurfaceFormat, BOOL  Windowed, D3DMULTISAMPLE_TYPE  MultiSampleType) PURE;
-    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  AdapterFormat, D3DFORMAT  RenderTargetFormat, D3DFORMAT  DepthStencilFormat) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DCAPS8 * pCaps) PURE;
-    STDMETHOD_(HMONITOR,GetAdapterMonitor)(THIS_ UINT  Adapter) PURE;
-    STDMETHOD(CreateDevice)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType,HWND  hFocusWindow, DWORD  BehaviorFlags, D3DPRESENT_PARAMETERS * pPresentationParameters, struct IDirect3DDevice8 ** ppReturnedDeviceInterface) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D8_QueryInterface(p,a,b)                    (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D8_AddRef(p)                                (p)->lpVtbl->AddRef(p)
-#define IDirect3D8_Release(p)                               (p)->lpVtbl->Release(p)
-/*** IDirect3D8 methods ***/
-#define IDirect3D8_RegisterSoftwareDevice(p,a)              (p)->lpVtbl->RegisterSoftwareDevice(p,a)
-#define IDirect3D8_GetAdapterCount(p)                       (p)->lpVtbl->GetAdapterCount(p)
-#define IDirect3D8_GetAdapterIdentifier(p,a,b,c)            (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
-#define IDirect3D8_GetAdapterModeCount(p,a)                 (p)->lpVtbl->GetAdapterModeCount(p,a)
-#define IDirect3D8_EnumAdapterModes(p,a,b,c)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c)
-#define IDirect3D8_GetAdapterDisplayMode(p,a,b)             (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
-#define IDirect3D8_CheckDeviceType(p,a,b,c,d,e)             (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
-#define IDirect3D8_CheckDeviceFormat(p,a,b,c,d,e,f)         (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
-#define IDirect3D8_CheckDeviceMultiSampleType(p,a,b,c,d,e)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e)
-#define IDirect3D8_CheckDepthStencilMatch(p,a,b,c,d,e)      (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
-#define IDirect3D8_GetDeviceCaps(p,a,b,c)                   (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
-#define IDirect3D8_GetAdapterMonitor(p,a)                   (p)->lpVtbl->GetAdapterMonitor(p,a)
-#define IDirect3D8_CreateDevice(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D8_QueryInterface(p,a,b)                    (p)->QueryInterface(a,b)
-#define IDirect3D8_AddRef(p)                                (p)->AddRef()
-#define IDirect3D8_Release(p)                               (p)->Release()
-/*** IDirect3D8 methods ***/
-#define IDirect3D8_RegisterSoftwareDevice(p,a)              (p)->RegisterSoftwareDevice(a)
-#define IDirect3D8_GetAdapterCount(p)                       (p)->GetAdapterCount()
-#define IDirect3D8_GetAdapterIdentifier(p,a,b,c)            (p)->GetAdapterIdentifier(a,b,c)
-#define IDirect3D8_GetAdapterModeCount(p,a)                 (p)->GetAdapterModeCount(a)
-#define IDirect3D8_EnumAdapterModes(p,a,b,c)                (p)->EnumAdapterModes(a,b,c)
-#define IDirect3D8_GetAdapterDisplayMode(p,a,b)             (p)->GetAdapterDisplayMode(a,b)
-#define IDirect3D8_CheckDeviceType(p,a,b,c,d,e)             (p)->CheckDeviceType(a,b,c,d,e)
-#define IDirect3D8_CheckDeviceFormat(p,a,b,c,d,e,f)         (p)->CheckDeviceFormat(a,b,c,d,e,f)
-#define IDirect3D8_CheckDeviceMultiSampleType(p,a,b,c,d,e)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e)
-#define IDirect3D8_CheckDepthStencilMatch(p,a,b,c,d,e)      (p)->CheckDepthStencilMatch(a,b,c,d,e)
-#define IDirect3D8_GetDeviceCaps(p,a,b,c)                   (p)->GetDeviceCaps(a,b,c)
-#define IDirect3D8_GetAdapterMonitor(p,a)                   (p)->GetAdapterMonitor(a)
-#define IDirect3D8_CreateDevice(p,a,b,c,d,e,f)              (p)->CreateDevice(a,b,c,d,e,f)
-#endif
-
-/*****************************************************************************
- * IDirect3DVolume8 interface
- */
-#define INTERFACE IDirect3DVolume8
-DECLARE_INTERFACE_(IDirect3DVolume8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVolume8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid,CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID   refguid,void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD(GetContainer)(THIS_ REFIID  riid, void ** ppContainer) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC * pDesc) PURE;
-    STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX * pLockedVolume,CONST D3DBOX * pBox, DWORD  Flags) PURE;
-    STDMETHOD(UnlockBox)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVolume8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVolume8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVolume8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVolume8 methods ***/
-#define IDirect3DVolume8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVolume8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVolume8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVolume8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVolume8_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
-#define IDirect3DVolume8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#define IDirect3DVolume8_LockBox(p,a,b,c)             (p)->lpVtbl->LockBox(p,a,b,c)
-#define IDirect3DVolume8_UnlockBox(p)                 (p)->lpVtbl->UnlockBox(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVolume8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVolume8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVolume8_Release(p)                   (p)->Release()
-/*** IDirect3DVolume8 methods ***/
-#define IDirect3DVolume8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVolume8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVolume8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVolume8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVolume8_GetContainer(p,a,b)          (p)->GetContainer(a,b)
-#define IDirect3DVolume8_GetDesc(p,a)                 (p)->GetDesc(a)
-#define IDirect3DVolume8_LockBox(p,a,b,c)             (p)->LockBox(a,b,c)
-#define IDirect3DVolume8_UnlockBox(p)                 (p)->UnlockBox()
-#endif
-
-/*****************************************************************************
- * IDirect3DSwapChain8 interface
- */
-#define INTERFACE IDirect3DSwapChain8
-DECLARE_INTERFACE_(IDirect3DSwapChain8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DSwapChain8 methods ***/
-    STDMETHOD(Present)(THIS_ CONST RECT * pSourceRect, CONST RECT * pDestRect, HWND  hDestWindowOverride,CONST RGNDATA * pDirtyRegion) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT  BackBuffer, D3DBACKBUFFER_TYPE  Type, struct IDirect3DSurface8 ** ppBackBuffer) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DSwapChain8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DSwapChain8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DSwapChain8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DSwapChain8 methods ***/
-#define IDirect3DSwapChain8_Present(p,a,b,c)             (p)->lpVtbl->Present(p,a,b,c)
-#define IDirect3DSwapChain8_GetBackBuffer(p,a,b,c)       (p)->lpVtbl->GetBackBuffer(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DSwapChain8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DSwapChain8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DSwapChain8_Release(p)                   (p)->Release()
-/*** IDirect3DSwapChain8 methods ***/
-#define IDirect3DSwapChain8_Present(p,a,b,c)             (p)->Present(a,b,c)
-#define IDirect3DSwapChain8_GetBackBuffer(p,a,b,c)       (p)->GetBackBuffer(a,b,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DSurface8 interface
- */
-#define INTERFACE IDirect3DSurface8
-DECLARE_INTERFACE_(IDirect3DSurface8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DSurface8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid,CONST void * pData,DWORD  SizeOfData,DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid,void * pData,DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD(GetContainer)(THIS_ REFIID  riid, void ** ppContainer) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC * pDesc) PURE;
-    STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT * pLockedRect, CONST RECT * pRect,DWORD  Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DSurface8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DSurface8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DSurface8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DSurface8 methods ***/
-#define IDirect3DSurface8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DSurface8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DSurface8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DSurface8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DSurface8_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
-#define IDirect3DSurface8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#define IDirect3DSurface8_LockRect(p,a,b,c)            (p)->lpVtbl->LockRect(p,a,b,c)
-#define IDirect3DSurface8_UnlockRect(p)                (p)->lpVtbl->UnlockRect(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DSurface8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DSurface8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DSurface8_Release(p)                   (p)->Release()
-/*** IDirect3DSurface8 methods ***/
-#define IDirect3DSurface8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DSurface8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DSurface8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DSurface8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DSurface8_GetContainer(p,a,b)          (p)->GetContainer(a,b)
-#define IDirect3DSurface8_GetDesc(p,a)                 (p)->GetDesc(a)
-#define IDirect3DSurface8_LockRect(p,a,b,c)            (p)->LockRect(a,b,c)
-#define IDirect3DSurface8_UnlockRect(p)                (p)->UnlockRect()
-#endif
-
-/*****************************************************************************
- * IDirect3DResource8 interface
- */
-#define INTERFACE IDirect3DResource8
-DECLARE_INTERFACE_(IDirect3DResource8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DResource8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DResource8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DResource8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DResource8 methods ***/
-#define IDirect3DResource8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DResource8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DResource8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DResource8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DResource8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DResource8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DResource8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DResource8_GetType(p)                   (p)->lpVtbl->GetType(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DResource8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DResource8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DResource8_Release(p)                   (p)->Release()
-/*** IDirect3DResource8 methods ***/
-#define IDirect3DResource8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DResource8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DResource8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DResource8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DResource8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DResource8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DResource8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DResource8_GetType(p)                   (p)->GetType()
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexBuffer8 interface
- */
-#define INTERFACE IDirect3DVertexBuffer8
-DECLARE_INTERFACE_(IDirect3DVertexBuffer8,IDirect3DResource8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DVertexBuffer8 methods ***/
-    STDMETHOD(Lock)(THIS_ UINT  OffsetToLock, UINT  SizeToLock, BYTE ** ppbData, DWORD  Flags) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC  * pDesc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexBuffer8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexBuffer8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexBuffer8 methods: IDirect3DResource8 ***/
-#define IDirect3DVertexBuffer8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVertexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVertexBuffer8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVertexBuffer8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVertexBuffer8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DVertexBuffer8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DVertexBuffer8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DVertexBuffer8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DVertexBuffer8 methods ***/
-#define IDirect3DVertexBuffer8_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirect3DVertexBuffer8_Unlock(p)                    (p)->lpVtbl->Unlock(p)
-#define IDirect3DVertexBuffer8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVertexBuffer8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVertexBuffer8_Release(p)                   (p)->Release()
-/*** IDirect3DVertexBuffer8 methods: IDirect3DResource8 ***/
-#define IDirect3DVertexBuffer8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVertexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVertexBuffer8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVertexBuffer8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVertexBuffer8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DVertexBuffer8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DVertexBuffer8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DVertexBuffer8_GetType(p)                   (p)->GetType()
-/*** IDirect3DVertexBuffer8 methods ***/
-#define IDirect3DVertexBuffer8_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirect3DVertexBuffer8_Unlock(p)                    (p)->Unlock()
-#define IDirect3DVertexBuffer8_GetDesc(p,a)                 (p)->GetDesc(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DIndexBuffer8 interface
- */
-#define INTERFACE IDirect3DIndexBuffer8
-DECLARE_INTERFACE_(IDirect3DIndexBuffer8,IDirect3DResource8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DIndexBuffer8 methods ***/
-    STDMETHOD(Lock)(THIS_ UINT  OffsetToLock, UINT  SizeToLock, BYTE ** ppbData, DWORD  Flags) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC * pDesc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DIndexBuffer8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DIndexBuffer8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DIndexBuffer8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DIndexBuffer8 methods: IDirect3DResource8 ***/
-#define IDirect3DIndexBuffer8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DIndexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DIndexBuffer8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DIndexBuffer8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DIndexBuffer8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DIndexBuffer8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DIndexBuffer8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DIndexBuffer8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DIndexBuffer8 methods ***/
-#define IDirect3DIndexBuffer8_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirect3DIndexBuffer8_Unlock(p)                    (p)->lpVtbl->Unlock(p)
-#define IDirect3DIndexBuffer8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DIndexBuffer8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DIndexBuffer8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DIndexBuffer8_Release(p)                   (p)->Release()
-/*** IDirect3DIndexBuffer8 methods: IDirect3DResource8 ***/
-#define IDirect3DIndexBuffer8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DIndexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DIndexBuffer8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DIndexBuffer8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DIndexBuffer8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DIndexBuffer8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DIndexBuffer8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DIndexBuffer8_GetType(p)                   (p)->GetType()
-/*** IDirect3DIndexBuffer8 methods ***/
-#define IDirect3DIndexBuffer8_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirect3DIndexBuffer8_Unlock(p)                    (p)->Unlock()
-#define IDirect3DIndexBuffer8_GetDesc(p,a)                 (p)->GetDesc(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DBaseTexture8 interface
- */
-#define INTERFACE IDirect3DBaseTexture8
-DECLARE_INTERFACE_(IDirect3DBaseTexture8,IDirect3DResource8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture8 methods ***/
-    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
-    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DBaseTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DBaseTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DBaseTexture8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DBaseTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DBaseTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DBaseTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DBaseTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DBaseTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DBaseTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DBaseTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DBaseTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DBaseTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DBaseTexture8 methods ***/
-#define IDirect3DBaseTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DBaseTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
-#define IDirect3DBaseTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DBaseTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DBaseTexture8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DBaseTexture8_Release(p)                   (p)->Release()
-/*** IDirect3DBaseTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DBaseTexture8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DBaseTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DBaseTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DBaseTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DBaseTexture8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DBaseTexture8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DBaseTexture8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DBaseTexture8_GetType(p)                   (p)->GetType()
-/*** IDirect3DBaseTexture8 methods ***/
-#define IDirect3DBaseTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
-#define IDirect3DBaseTexture8_GetLOD(p)                    (p)->GetLOD()
-#define IDirect3DBaseTexture8_GetLevelCount(p)             (p)->GetLevelCount()
-#endif
-
-/*****************************************************************************
- * IDirect3DCubeTexture8 interface
- */
-#define INTERFACE IDirect3DCubeTexture8
-DECLARE_INTERFACE_(IDirect3DCubeTexture8,IDirect3DBaseTexture8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture8 methods ***/
-    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
-    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
-    /*** IDirect3DCubeTexture8 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT  Level,D3DSURFACE_DESC * pDesc) PURE;
-    STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES  FaceType,UINT  Level,IDirect3DSurface8 ** ppCubeMapSurface) PURE;
-    STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES  FaceType,UINT  Level,D3DLOCKED_RECT * pLockedRect,CONST RECT * pRect,DWORD  Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES  FaceType,UINT  Level) PURE;
-    STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES  FaceType,CONST RECT * pDirtyRect) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DCubeTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DCubeTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DCubeTexture8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DCubeTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DCubeTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DCubeTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DCubeTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DCubeTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DCubeTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DCubeTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DCubeTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DCubeTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DCubeTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DCubeTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DCubeTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
-#define IDirect3DCubeTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
-/*** IDirect3DCubeTexture8 methods ***/
-#define IDirect3DCubeTexture8_GetLevelDesc(p,a,b)          (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DCubeTexture8_GetCubeMapSurface(p,a,b,c)   (p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
-#define IDirect3DCubeTexture8_LockRect(p,a,b,c,d,e)        (p)->lpVtbl->LockRect(p,a,b,c,d,e)
-#define IDirect3DCubeTexture8_UnlockRect(p,a,b)            (p)->lpVtbl->UnlockRect(p,a,b)
-#define IDirect3DCubeTexture8_AddDirtyRect(p,a,b)          (p)->lpVtbl->AddDirtyRect(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DCubeTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DCubeTexture8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DCubeTexture8_Release(p)                   (p)->Release()
-/*** IDirect3DCubeTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DCubeTexture8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DCubeTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DCubeTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DCubeTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DCubeTexture8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DCubeTexture8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DCubeTexture8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DCubeTexture8_GetType(p)                   (p)->GetType()
-/*** IDirect3DCubeTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DCubeTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
-#define IDirect3DCubeTexture8_GetLOD(p)                    (p)->GetLOD()
-#define IDirect3DCubeTexture8_GetLevelCount(p)             (p)->GetLevelCount()
-/*** IDirect3DCubeTexture8 methods ***/
-#define IDirect3DCubeTexture8_GetLevelDesc(p,a,b)          (p)->GetLevelDesc(a,b)
-#define IDirect3DCubeTexture8_GetCubeMapSurface(p,a,b,c)   (p)->GetCubeMapSurface(a,b,c)
-#define IDirect3DCubeTexture8_LockRect(p,a,b,c,d,e)        (p)->LockRect(a,b,c,d,e)
-#define IDirect3DCubeTexture8_UnlockRect(p,a,b)            (p)->UnlockRect(a,b)
-#define IDirect3DCubeTexture8_AddDirtyRect(p,a,b)          (p)->AddDirtyRect(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DTexture8 interface
- */
-#define INTERFACE IDirect3DTexture8
-DECLARE_INTERFACE_(IDirect3DTexture8,IDirect3DBaseTexture8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture8 methods ***/
-    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
-    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
-    /*** IDirect3DTexture8 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT  Level,D3DSURFACE_DESC * pDesc) PURE;
-    STDMETHOD(GetSurfaceLevel)(THIS_ UINT  Level,IDirect3DSurface8 ** ppSurfaceLevel) PURE;
-    STDMETHOD(LockRect)(THIS_ UINT  Level,D3DLOCKED_RECT * pLockedRect,CONST RECT * pRect,DWORD  Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS_ UINT  Level) PURE;
-    STDMETHOD(AddDirtyRect)(THIS_ CONST RECT * pDirtyRect) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DTexture8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
-#define IDirect3DTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
-/*** IDirect3DTexture8 methods ***/
-#define IDirect3DTexture8_GetLevelDesc(p,a,b)          (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DTexture8_GetSurfaceLevel(p,a,b)       (p)->lpVtbl->GetSurfaceLevel(p,a,b)
-#define IDirect3DTexture8_LockRect(p,a,b,c,d)          (p)->lpVtbl->LockRect(p,a,b,c,d)
-#define IDirect3DTexture8_UnlockRect(p,a)              (p)->lpVtbl->UnlockRect(p,a)
-#define IDirect3DTexture8_AddDirtyRect(p,a)            (p)->lpVtbl->AddDirtyRect(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DTexture8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DTexture8_Release(p)                   (p)->Release()
-/*** IDirect3DTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DTexture8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DTexture8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DTexture8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DTexture8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DTexture8_GetType(p)                   (p)->GetType()
-/*** IDirect3DTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
-#define IDirect3DTexture8_GetLOD(p)                    (p)->GetLOD()
-#define IDirect3DTexture8_GetLevelCount(p)             (p)->GetLevelCount()
-/*** IDirect3DTexture8 methods ***/
-#define IDirect3DTexture8_GetLevelDesc(p,a,b)          (p)->GetLevelDesc(a,b)
-#define IDirect3DTexture8_GetSurfaceLevel(p,a,b)       (p)->GetSurfaceLevel(a,b)
-#define IDirect3DTexture8_LockRect(p,a,b,c,d)          (p)->LockRect(a,b,c,d)
-#define IDirect3DTexture8_UnlockRect(p,a)              (p)->UnlockRect(a)
-#define IDirect3DTexture8_AddDirtyRect(p,a)            (p)->AddDirtyRect(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DVolumeTexture8 interface
- */
-#define INTERFACE IDirect3DVolumeTexture8
-DECLARE_INTERFACE_(IDirect3DVolumeTexture8,IDirect3DBaseTexture8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture8 methods ***/
-    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
-    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
-    /*** IDirect3DVolumeTexture8 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT  Level,D3DVOLUME_DESC * pDesc) PURE;
-    STDMETHOD(GetVolumeLevel)(THIS_ UINT  Level,IDirect3DVolume8 ** ppVolumeLevel) PURE;
-    STDMETHOD(LockBox)(THIS_ UINT  Level,D3DLOCKED_BOX * pLockedVolume,CONST D3DBOX * pBox,DWORD  Flags) PURE;
-    STDMETHOD(UnlockBox)(THIS_ UINT  Level) PURE;
-    STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX * pDirtyBox) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVolumeTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVolumeTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVolumeTexture8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVolumeTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DVolumeTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVolumeTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVolumeTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVolumeTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVolumeTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DVolumeTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DVolumeTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DVolumeTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DVolumeTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DVolumeTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DVolumeTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
-#define IDirect3DVolumeTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
-/*** IDirect3DVolumeTexture8 methods ***/
-#define IDirect3DVolumeTexture8_GetLevelDesc(p,a,b)          (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DVolumeTexture8_GetVolumeLevel(p,a,b)        (p)->lpVtbl->GetVolumeLevel(p,a,b)
-#define IDirect3DVolumeTexture8_LockBox(p,a,b,c,d)           (p)->lpVtbl->LockBox(p,a,b,c,d)
-#define IDirect3DVolumeTexture8_UnlockBox(p,a)               (p)->lpVtbl->UnlockBox(p,a)
-#define IDirect3DVolumeTexture8_AddDirtyBox(p,a)             (p)->lpVtbl->AddDirtyBox(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVolumeTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVolumeTexture8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVolumeTexture8_Release(p)                   (p)->Release()
-/*** IDirect3DVolumeTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DVolumeTexture8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVolumeTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVolumeTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVolumeTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVolumeTexture8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DVolumeTexture8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DVolumeTexture8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DVolumeTexture8_GetType(p)                   (p)->GetType()
-/*** IDirect3DVolumeTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DVolumeTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
-#define IDirect3DVolumeTexture8_GetLOD(p)                    (p)->GetLOD()
-#define IDirect3DVolumeTexture8_GetLevelCount(p)             (p)->GetLevelCount()
-/*** IDirect3DVolumeTexture8 methods ***/
-#define IDirect3DVolumeTexture8_GetLevelDesc(p,a,b)          (p)->GetLevelDesc(a,b)
-#define IDirect3DVolumeTexture8_GetVolumeLevel(p,a,b)        (p)->GetVolumeLevel(a,b)
-#define IDirect3DVolumeTexture8_LockBox(p,a,b,c,d)           (p)->LockBox(a,b,c,d)
-#define IDirect3DVolumeTexture8_UnlockBox(p,a)               (p)->UnlockBox(a)
-#define IDirect3DVolumeTexture8_AddDirtyBox(p,a)             (p)->AddDirtyBox(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DDevice8 interface
- */
-#define INTERFACE IDirect3DDevice8
-DECLARE_INTERFACE_(IDirect3DDevice8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice8 methods ***/
-    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
-    STDMETHOD_(UINT,GetAvailableTextureMem)(THIS) PURE;
-    STDMETHOD(ResourceManagerDiscardBytes)(THIS_ DWORD  Bytes) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ IDirect3D8 ** ppD3D8) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS8 * pCaps) PURE;
-    STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE * pMode) PURE;
-    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS  * pParameters) PURE;
-    STDMETHOD(SetCursorProperties)(THIS_ UINT  XHotSpot, UINT  YHotSpot, IDirect3DSurface8 * pCursorBitmap) PURE;
-    STDMETHOD_(void,SetCursorPosition)(THIS_ UINT  XScreenSpace, UINT  YScreenSpace,DWORD  Flags) PURE;
-    STDMETHOD_(BOOL,ShowCursor)(THIS_ BOOL  bShow) PURE;
-    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS * pPresentationParameters, IDirect3DSwapChain8 ** pSwapChain) PURE;
-    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS * pPresentationParameters) PURE;
-    STDMETHOD(Present)(THIS_ CONST RECT * pSourceRect,CONST RECT * pDestRect,HWND  hDestWindowOverride,CONST RGNDATA * pDirtyRegion) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT  BackBuffer,D3DBACKBUFFER_TYPE  Type,IDirect3DSurface8 ** ppBackBuffer) PURE;
-    STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS * pRasterStatus) PURE;
-    STDMETHOD_(void,SetGammaRamp)(THIS_ DWORD  Flags,CONST D3DGAMMARAMP * pRamp) PURE;
-    STDMETHOD_(void,GetGammaRamp)(THIS_ D3DGAMMARAMP * pRamp) PURE;
-    STDMETHOD(CreateTexture)(THIS_ UINT  Width,UINT  Height,UINT  Levels,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DTexture8 ** ppTexture) PURE;
-    STDMETHOD(CreateVolumeTexture)(THIS_ UINT  Width,UINT  Height,UINT  Depth,UINT  Levels,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DVolumeTexture8 ** ppVolumeTexture) PURE;
-    STDMETHOD(CreateCubeTexture)(THIS_ UINT  EdgeLength,UINT  Levels,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DCubeTexture8 ** ppCubeTexture) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ UINT  Length,DWORD  Usage,DWORD  FVF,D3DPOOL  Pool,IDirect3DVertexBuffer8 ** ppVertexBuffer) PURE;
-    STDMETHOD(CreateIndexBuffer)(THIS_ UINT  Length,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DIndexBuffer8 ** ppIndexBuffer) PURE;
-    STDMETHOD(CreateRenderTarget)(THIS_ UINT  Width,UINT  Height,D3DFORMAT  Format,D3DMULTISAMPLE_TYPE  MultiSample,BOOL  Lockable,IDirect3DSurface8 ** ppSurface) PURE;
-    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT  Width,UINT  Height,D3DFORMAT  Format,D3DMULTISAMPLE_TYPE  MultiSample,IDirect3DSurface8 ** ppSurface) PURE;
-    STDMETHOD(CreateImageSurface)(THIS_ UINT  Width,UINT  Height,D3DFORMAT  Format,IDirect3DSurface8 ** ppSurface) PURE;
-    STDMETHOD(CopyRects)(THIS_ IDirect3DSurface8 * pSourceSurface,CONST RECT * pSourceRectsArray,UINT  cRects,IDirect3DSurface8 * pDestinationSurface,CONST POINT * pDestPointsArray) PURE;
-    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture8 * pSourceTexture,IDirect3DBaseTexture8 * pDestinationTexture) PURE;
-    STDMETHOD(GetFrontBuffer)(THIS_ IDirect3DSurface8 * pDestSurface) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ IDirect3DSurface8 * pRenderTarget,IDirect3DSurface8 * pNewZStencil) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ IDirect3DSurface8 ** ppRenderTarget) PURE;
-    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface8 ** ppZStencilSurface) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD  Count,CONST D3DRECT * pRects,DWORD  Flags,D3DCOLOR  Color,float  Z,DWORD  Stencil) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE  State,CONST D3DMATRIX * pMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE  State,D3DMATRIX * pMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE  State, CONST D3DMATRIX * pMatrix) PURE;
-    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT8 * pViewport) PURE;
-    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT8 * pViewport) PURE;
-    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL8 * pMaterial) PURE;
-    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL8 *pMaterial) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD  Index,CONST D3DLIGHT8 * pLight) PURE;
-    STDMETHOD(GetLight)(THIS_ DWORD  Index,D3DLIGHT8 * pLight) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD  Index,BOOL  Enable) PURE;
-    STDMETHOD(GetLightEnable)(THIS_ DWORD  Index,BOOL * pEnable) PURE;
-    STDMETHOD(SetClipPlane)(THIS_ DWORD  Index,CONST float * pPlane) PURE;
-    STDMETHOD(GetClipPlane)(THIS_ DWORD  Index,float * pPlane) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE  State,DWORD  Value) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE  State,DWORD * pValue) PURE;
-    STDMETHOD(BeginStateBlock)(THIS) PURE;
-    STDMETHOD(EndStateBlock)(THIS_ DWORD * pToken) PURE;
-    STDMETHOD(ApplyStateBlock)(THIS_ DWORD  Token) PURE;
-    STDMETHOD(CaptureStateBlock)(THIS_ DWORD  Token) PURE;
-    STDMETHOD(DeleteStateBlock)(THIS_ DWORD  Token) PURE;
-    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE  Type,DWORD * pToken) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS8 * pClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS8 * pClipStatus) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD  Stage,IDirect3DBaseTexture8 ** ppTexture) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD  Stage,IDirect3DBaseTexture8 * pTexture) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD  Stage,D3DTEXTURESTAGESTATETYPE  Type,DWORD * pValue) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD  Stage,D3DTEXTURESTAGESTATETYPE  Type,DWORD  Value) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ DWORD * pNumPasses) PURE;
-    STDMETHOD(GetInfo)(THIS_ DWORD  DevInfoID,void * pDevInfoStruct,DWORD  DevInfoStructSize) PURE;
-    STDMETHOD(SetPaletteEntries)(THIS_ UINT  PaletteNumber,CONST PALETTEENTRY * pEntries) PURE;
-    STDMETHOD(GetPaletteEntries)(THIS_ UINT  PaletteNumber,PALETTEENTRY * pEntries) PURE;
-    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT  PaletteNumber) PURE;
-    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT  * PaletteNumber) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  StartVertex,UINT  PrimitiveCount) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  minIndex,UINT  NumVertices,UINT  startIndex,UINT  primCount) PURE;
-    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  PrimitiveCount,CONST void * pVertexStreamZeroData,UINT  VertexStreamZeroStride) PURE;
-    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  MinVertexIndex,UINT  NumVertexIndices,UINT  PrimitiveCount,CONST void * pIndexData,D3DFORMAT  IndexDataFormat,CONST void * pVertexStreamZeroData,UINT  VertexStreamZeroStride) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ UINT  SrcStartIndex,UINT  DestIndex,UINT  VertexCount,IDirect3DVertexBuffer8 * pDestBuffer,DWORD  Flags) PURE;
-    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD * pDeclaration,CONST DWORD * pFunction,DWORD * pHandle,DWORD  Usage) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ DWORD  Handle) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ DWORD * pHandle) PURE;
-    STDMETHOD(DeleteVertexShader)(THIS_ DWORD  Handle) PURE;
-    STDMETHOD(SetVertexShaderConstant)(THIS_ DWORD  Register,CONST void * pConstantData,DWORD  ConstantCount) PURE;
-    STDMETHOD(GetVertexShaderConstant)(THIS_ DWORD  Register,void * pConstantData,DWORD  ConstantCount) PURE;
-    STDMETHOD(GetVertexShaderDeclaration)(THIS_ DWORD  Handle,void * pData,DWORD * pSizeOfData) PURE;
-    STDMETHOD(GetVertexShaderFunction)(THIS_ DWORD  Handle,void * pData,DWORD * pSizeOfData) PURE;
-    STDMETHOD(SetStreamSource)(THIS_ UINT  StreamNumber,IDirect3DVertexBuffer8 * pStreamData,UINT  Stride) PURE;
-    STDMETHOD(GetStreamSource)(THIS_ UINT  StreamNumber,IDirect3DVertexBuffer8 ** ppStreamData,UINT * pStride) PURE;
-    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer8 * pIndexData,UINT  BaseVertexIndex) PURE;
-    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer8 ** ppIndexData,UINT * pBaseVertexIndex) PURE;
-    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD * pFunction,DWORD * pHandle) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ DWORD  Handle) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ DWORD * pHandle) PURE;
-    STDMETHOD(DeletePixelShader)(THIS_ DWORD  Handle) PURE;
-    STDMETHOD(SetPixelShaderConstant)(THIS_ DWORD  Register,CONST void * pConstantData,DWORD  ConstantCount) PURE;
-    STDMETHOD(GetPixelShaderConstant)(THIS_ DWORD  Register,void * pConstantData,DWORD  ConstantCount) PURE;
-    STDMETHOD(GetPixelShaderFunction)(THIS_ DWORD  Handle,void * pData,DWORD * pSizeOfData) PURE;
-    STDMETHOD(DrawRectPatch)(THIS_ UINT  Handle,CONST float * pNumSegs,CONST D3DRECTPATCH_INFO * pRectPatchInfo) PURE;
-    STDMETHOD(DrawTriPatch)(THIS_ UINT  Handle,CONST float * pNumSegs,CONST D3DTRIPATCH_INFO * pTriPatchInfo) PURE;
-    STDMETHOD(DeletePatch)(THIS_ UINT  Handle) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice8_QueryInterface(p,a,b)                     (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice8_AddRef(p)                                 (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice8_Release(p)                                (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice8 methods ***/
-#define IDirect3DDevice8_TestCooperativeLevel(p)                   (p)->lpVtbl->TestCooperativeLevel(p)
-#define IDirect3DDevice8_GetAvailableTextureMem(p)                 (p)->lpVtbl->GetAvailableTextureMem(p)
-#define IDirect3DDevice8_ResourceManagerDiscardBytes(p,a)          (p)->lpVtbl->ResourceManagerDiscardBytes(p,a)
-#define IDirect3DDevice8_GetDirect3D(p,a)                          (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice8_GetDeviceCaps(p,a)                        (p)->lpVtbl->GetDeviceCaps(p,a)
-#define IDirect3DDevice8_GetDisplayMode(p,a)                       (p)->lpVtbl->GetDisplayMode(p,a)
-#define IDirect3DDevice8_GetCreationParameters(p,a)                (p)->lpVtbl->GetCreationParameters(p,a)
-#define IDirect3DDevice8_SetCursorProperties(p,a,b,c)              (p)->lpVtbl->SetCursorProperties(p,a,b,c)
-#define IDirect3DDevice8_SetCursorPosition(p,a,b,c)                (p)->lpVtbl->SetCursorPosition(p,a,b,c)
-#define IDirect3DDevice8_ShowCursor(p,a)                           (p)->lpVtbl->ShowCursor(p,a)
-#define IDirect3DDevice8_CreateAdditionalSwapChain(p,a,b)          (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
-#define IDirect3DDevice8_Reset(p,a)                                (p)->lpVtbl->Reset(p,a)
-#define IDirect3DDevice8_Present(p,a,b,c,d)                        (p)->lpVtbl->Present(p,a,b,c,d)
-#define IDirect3DDevice8_GetBackBuffer(p,a,b,c)                    (p)->lpVtbl->GetBackBuffer(p,a,b,c)
-#define IDirect3DDevice8_GetRasterStatus(p,a)                      (p)->lpVtbl->GetRasterStatus(p,a)
-#define IDirect3DDevice8_SetGammaRamp(p,a,b)                       (p)->lpVtbl->SetGammaRamp(p,a,b)
-#define IDirect3DDevice8_GetGammaRamp(p,a)                         (p)->lpVtbl->GetGammaRamp(p,a)
-#define IDirect3DDevice8_CreateTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice8_CreateVolumeTexture(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice8_CreateCubeTexture(p,a,b,c,d,e,f)          (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f)
-#define IDirect3DDevice8_CreateVertexBuffer(p,a,b,c,d,e)           (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e)
-#define IDirect3DDevice8_CreateIndexBuffer(p,a,b,c,d,e)            (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e)
-#define IDirect3DDevice8_CreateRenderTarget(p,a,b,c,d,e,f)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f)
-#define IDirect3DDevice8_CreateDepthStencilSurface(p,a,b,c,d,e)    (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e)
-#define IDirect3DDevice8_CreateImageSurface(p,a,b,c,d)             (p)->lpVtbl->CreateImageSurface(p,a,b,c,d)
-#define IDirect3DDevice8_CopyRects(p,a,b,c,d,e)                    (p)->lpVtbl->CopyRects(p,a,b,c,d,e)
-#define IDirect3DDevice8_UpdateTexture(p,a,b)                      (p)->lpVtbl->UpdateTexture(p,a,b)
-#define IDirect3DDevice8_GetFrontBuffer(p,a)                       (p)->lpVtbl->GetFrontBuffer(p,a)
-#define IDirect3DDevice8_SetRenderTarget(p,a,b)                    (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice8_GetRenderTarget(p,a)                      (p)->lpVtbl->GetRenderTarget(p,a)
-#define IDirect3DDevice8_GetDepthStencilSurface(p,a)               (p)->lpVtbl->GetDepthStencilSurface(p,a)
-#define IDirect3DDevice8_BeginScene(p)                             (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice8_EndScene(p)                               (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice8_Clear(p,a,b,c,d,e,f)                      (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
-#define IDirect3DDevice8_SetTransform(p,a,b)                       (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice8_GetTransform(p,a,b)                       (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice8_MultiplyTransform(p,a,b)                  (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice8_SetViewport(p,a)                          (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DDevice8_GetViewport(p,a)                          (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DDevice8_SetMaterial(p,a)                          (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DDevice8_GetMaterial(p,a)                          (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DDevice8_SetLight(p,a,b)                           (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DDevice8_GetLight(p,a,b)                           (p)->lpVtbl->GetLight(p,a,b)
-#define IDirect3DDevice8_LightEnable(p,a,b)                        (p)->lpVtbl->LightEnable(p,a,b)
-#define IDirect3DDevice8_GetLightEnable(p,a,b)                     (p)->lpVtbl->GetLightEnable(p,a,b)
-#define IDirect3DDevice8_SetClipPlane(p,a,b)                       (p)->lpVtbl->SetClipPlane(p,a,b)
-#define IDirect3DDevice8_GetClipPlane(p,a,b)                       (p)->lpVtbl->GetClipPlane(p,a,b)
-#define IDirect3DDevice8_SetRenderState(p,a,b)                     (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice8_GetRenderState(p,a,b)                     (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice8_BeginStateBlock(p)                        (p)->lpVtbl->BeginStateBlock(p)
-#define IDirect3DDevice8_EndStateBlock(p,a)                        (p)->lpVtbl->EndStateBlock(p,a)
-#define IDirect3DDevice8_ApplyStateBlock(p,a)                      (p)->lpVtbl->ApplyStateBlock(p,a)
-#define IDirect3DDevice8_CaptureStateBlock(p,a)                    (p)->lpVtbl->CaptureStateBlock(p,a)
-#define IDirect3DDevice8_DeleteStateBlock(p,a)                     (p)->lpVtbl->DeleteStateBlock(p,a)
-#define IDirect3DDevice8_CreateStateBlock(p,a,b)                   (p)->lpVtbl->CreateStateBlock(p,a,b)
-#define IDirect3DDevice8_SetClipStatus(p,a)                        (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice8_GetClipStatus(p,a)                        (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice8_GetTexture(p,a,b)                         (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice8_SetTexture(p,a,b)                         (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice8_GetTextureStageState(p,a,b,c)             (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice8_SetTextureStageState(p,a,b,c)             (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice8_ValidateDevice(p,a)                       (p)->lpVtbl->ValidateDevice(p,a)
-#define IDirect3DDevice8_GetInfo(p,a,b,c)                          (p)->lpVtbl->GetInfo(p,a,b,c)
-#define IDirect3DDevice8_SetPaletteEntries(p,a,b)                  (p)->lpVtbl->SetPaletteEntries(p,a,b)
-#define IDirect3DDevice8_GetPaletteEntries(p,a,b)                  (p)->lpVtbl->GetPaletteEntries(p,a,b)
-#define IDirect3DDevice8_SetCurrentTexturePalette(p,a)             (p)->lpVtbl->SetCurrentTexturePalette(p,a)
-#define IDirect3DDevice8_GetCurrentTexturePalette(p,a)             (p)->lpVtbl->GetCurrentTexturePalette(p,a)
-#define IDirect3DDevice8_DrawPrimitive(p,a,b,c)                    (p)->lpVtbl->DrawPrimitive(p,a,b,c)
-#define IDirect3DDevice8_DrawIndexedPrimitive(p,a,b,c,d,e)         (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e)
-#define IDirect3DDevice8_DrawPrimitiveUP(p,a,b,c,d)                (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
-#define IDirect3DDevice8_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice8_ProcessVertices(p,a,b,c,d,e)              (p)->lpVtbl->processVertices(p,a,b,c,d,e)
-#define IDirect3DDevice8_CreateVertexShader(p,a,b,c,d)             (p)->lpVtbl->CreateVertexShader(p,a,b,c,d)
-#define IDirect3DDevice8_SetVertexShader(p,a)                      (p)->lpVtbl->SetVertexShader(p,a)
-#define IDirect3DDevice8_GetVertexShader(p,a)                      (p)->lpVtbl->GetVertexShader(p,a)
-#define IDirect3DDevice8_DeleteVertexShader(p,a)                   (p)->lpVtbl->DeleteVertexShader(p,a)
-#define IDirect3DDevice8_SetVertexShaderConstant(p,a,b,c)          (p)->lpVtbl->SetVertexShaderConstant(p,a,b,c)
-#define IDirect3DDevice8_GetVertexShaderConstant(p,a,b,c)          (p)->lpVtbl->GetVertexShaderConstant(p,a,b,c)
-#define IDirect3DDevice8_GetVertexShaderDeclaration(p,a,b,c)       (p)->lpVtbl->GetVertexShaderDeclaration(p,a,b,c)
-#define IDirect3DDevice8_GetVertexShaderFunction(p,a,b,c)          (p)->lpVtbl->GetVertexShaderFunction(p,a,b,c)
-#define IDirect3DDevice8_SetStreamSource(p,a,b,c)                  (p)->lpVtbl->SetStreamSource(p,a,b,c)
-#define IDirect3DDevice8_GetStreamSource(p,a,b,c)                  (p)->lpVtbl->GetStreamSource(p,a,b,c)
-#define IDirect3DDevice8_SetIndices(p,a,b)                         (p)->lpVtbl->SetIndices(p,a,b)
-#define IDirect3DDevice8_GetIndices(p,a,b)                         (p)->lpVtbl->GetIndices(p,a,b)
-#define IDirect3DDevice8_CreatePixelShader(p,a,b)                  (p)->lpVtbl->CreatePixelShader(p,a,b)
-#define IDirect3DDevice8_SetPixelShader(p,a)                       (p)->lpVtbl->SetPixelShader(p,a)
-#define IDirect3DDevice8_GetPixelShader(p,a)                       (p)->lpVtbl->GetPixelShader(p,a)
-#define IDirect3DDevice8_DeletePixelShader(p,a)                    (p)->lpVtbl->DeletePixelShader(p,a)
-#define IDirect3DDevice8_SetPixelShaderConstant(p,a,b,c)           (p)->lpVtbl->SetPixelShaderConstant(p,a,b,c)
-#define IDirect3DDevice8_GetPixelShaderConstant(p,a,b,c)           (p)->lpVtbl->GetPixelShaderConstant(p,a,b,c)
-#define IDirect3DDevice8_GetPixelShaderFunction(p,a,b,c)           (p)->lpVtbl->GetPixelShaderFunction(p,a,b,c)
-#define IDirect3DDevice8_DrawRectPatch(p,a,b,c)                    (p)->lpVtbl->DrawRectPatch(p,a,b,c)
-#define IDirect3DDevice8_DrawTriPatch(p,a,b,c)                     (p)->lpVtbl->DrawTriPatch(p,a,b,c)
-#define IDirect3DDevice8_DeletePatch(p,a)                          (p)->lpVtbl->DeletePatch(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice8_QueryInterface(p,a,b)                     (p)->QueryInterface(a,b)
-#define IDirect3DDevice8_AddRef(p)                                 (p)->AddRef()
-#define IDirect3DDevice8_Release(p)                                (p)->Release()
-/*** IDirect3DDevice8 methods ***/
-#define IDirect3DDevice8_TestCooperativeLevel(p)                   (p)->TestCooperativeLevel()
-#define IDirect3DDevice8_GetAvailableTextureMem(p)                 (p)->GetAvailableTextureMem()
-#define IDirect3DDevice8_ResourceManagerDiscardBytes(p,a)          (p)->ResourceManagerDiscardBytes(a)
-#define IDirect3DDevice8_GetDirect3D(p,a)                          (p)->GetDirect3D(a)
-#define IDirect3DDevice8_GetDeviceCaps(p,a)                        (p)->GetDeviceCaps(a)
-#define IDirect3DDevice8_GetDisplayMode(p,a)                       (p)->GetDisplayMode(a)
-#define IDirect3DDevice8_GetCreationParameters(p,a)                (p)->GetCreationParameters(a)
-#define IDirect3DDevice8_SetCursorProperties(p,a,b,c)              (p)->SetCursorProperties(a,b,c)
-#define IDirect3DDevice8_SetCursorPosition(p,a,b,c)                (p)->SetCursorPosition(a,b,c)
-#define IDirect3DDevice8_ShowCursor(p,a)                           (p)->ShowCursor(a)
-#define IDirect3DDevice8_CreateAdditionalSwapChain(p,a,b)          (p)->CreateAdditionalSwapChain(a,b)
-#define IDirect3DDevice8_Reset(p,a)                                (p)->Reset(a)
-#define IDirect3DDevice8_Present(p,a,b,c,d)                        (p)->Present(a,b,c,d)
-#define IDirect3DDevice8_GetBackBuffer(p,a,b,c)                    (p)->GetBackBuffer(a,b,c)
-#define IDirect3DDevice8_GetRasterStatus(p,a)                      (p)->GetRasterStatus(a)
-#define IDirect3DDevice8_SetGammaRamp(p,a,b)                       (p)->SetGammaRamp(a,b)
-#define IDirect3DDevice8_GetGammaRamp(p,a)                         (p)->GetGammaRamp(a)
-#define IDirect3DDevice8_CreateTexture(p,a,b,c,d,e,f,g)            (p)->CreateTexture(a,b,c,d,e,f,g)
-#define IDirect3DDevice8_CreateVolumeTexture(p,a,b,c,d,e,f,g,h)    (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice8_CreateCubeTexture(p,a,b,c,d,e,f)          (p)->CreateCubeTexture(a,b,c,d,e,f)
-#define IDirect3DDevice8_CreateVertexBuffer(p,a,b,c,d,e)           (p)->CreateVertexBuffer(a,b,c,d,e)
-#define IDirect3DDevice8_CreateIndexBuffer(p,a,b,c,d,e)            (p)->CreateIndexBuffer(a,b,c,d,e)
-#define IDirect3DDevice8_CreateRenderTarget(p,a,b,c,d,e,f)         (p)->CreateRenderTarget(a,b,c,d,e,f)
-#define IDirect3DDevice8_CreateDepthStencilSurface(p,a,b,c,d,e)    (p)->CreateDepthStencilSurface(a,b,c,d,e)
-#define IDirect3DDevice8_CreateImageSurface(p,a,b,c,d)             (p)->CreateImageSurface(a,b,c,d)
-#define IDirect3DDevice8_CopyRects(p,a,b,c,d,e)                    (p)->CopyRects(a,b,c,d,e)
-#define IDirect3DDevice8_UpdateTexture(p,a,b)                      (p)->UpdateTexture(a,b)
-#define IDirect3DDevice8_GetFrontBuffer(p,a)                       (p)->GetFrontBuffer(a)
-#define IDirect3DDevice8_SetRenderTarget(p,a,b)                    (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice8_GetRenderTarget(p,a)                      (p)->GetRenderTarget(a)
-#define IDirect3DDevice8_GetDepthStencilSurface(p,a)               (p)->GetDepthStencilSurface(a)
-#define IDirect3DDevice8_BeginScene(p)                             (p)->BeginScene()
-#define IDirect3DDevice8_EndScene(p)                               (p)->EndScene()
-#define IDirect3DDevice8_Clear(p,a,b,c,d,e,f)                      (p)->Clear(a,b,c,d,e,f)
-#define IDirect3DDevice8_SetTransform(p,a,b)                       (p)->SetTransform(a,b)
-#define IDirect3DDevice8_GetTransform(p,a,b)                       (p)->GetTransform(a,b)
-#define IDirect3DDevice8_MultiplyTransform(p,a,b)                  (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice8_SetViewport(p,a)                          (p)->SetViewport(a)
-#define IDirect3DDevice8_GetViewport(p,a)                          (p)->GetViewport(a)
-#define IDirect3DDevice8_SetMaterial(p,a)                          (p)->SetMaterial(a)
-#define IDirect3DDevice8_GetMaterial(p,a)                          (p)->GetMaterial(a)
-#define IDirect3DDevice8_SetLight(p,a,b)                           (p)->SetLight(a,b)
-#define IDirect3DDevice8_GetLight(p,a,b)                           (p)->GetLight(a,b)
-#define IDirect3DDevice8_LightEnable(p,a,b)                        (p)->LightEnable(a,b)
-#define IDirect3DDevice8_GetLightEnable(p,a,b)                     (p)->GetLightEnable(a,b)
-#define IDirect3DDevice8_SetClipPlane(p,a,b)                       (p)->SetClipPlane(a,b)
-#define IDirect3DDevice8_GetClipPlane(p,a,b)                       (p)->GetClipPlane(a,b)
-#define IDirect3DDevice8_SetRenderState(p,a,b)                     (p)->SetRenderState(a,b)
-#define IDirect3DDevice8_GetRenderState(p,a,b)                     (p)->GetRenderState(a,b)
-#define IDirect3DDevice8_BeginStateBlock(p)                        (p)->BeginStateBlock()
-#define IDirect3DDevice8_EndStateBlock(p,a)                        (p)->EndStateBlock(a)
-#define IDirect3DDevice8_ApplyStateBlock(p,a)                      (p)->ApplyStateBlock(a)
-#define IDirect3DDevice8_CaptureStateBlock(p,a)                    (p)->CaptureStateBlock(a)
-#define IDirect3DDevice8_DeleteStateBlock(p,a)                     (p)->DeleteStateBlock(a)
-#define IDirect3DDevice8_CreateStateBlock(p,a,b)                   (p)->CreateStateBlock(a,b)
-#define IDirect3DDevice8_SetClipStatus(p,a)                        (p)->SetClipStatus(a)
-#define IDirect3DDevice8_GetClipStatus(p,a)                        (p)->GetClipStatus(a)
-#define IDirect3DDevice8_GetTexture(p,a,b)                         (p)->GetTexture(a,b)
-#define IDirect3DDevice8_SetTexture(p,a,b)                         (p)->SetTexture(a,b)
-#define IDirect3DDevice8_GetTextureStageState(p,a,b,c)             (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice8_SetTextureStageState(p,a,b,c)             (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice8_ValidateDevice(p,a)                       (p)->ValidateDevice(a)
-#define IDirect3DDevice8_GetInfo(p,a,b,c)                          (p)->GetInfo(a,b,c)
-#define IDirect3DDevice8_SetPaletteEntries(p,a,b)                  (p)->SetPaletteEntries(a,b)
-#define IDirect3DDevice8_GetPaletteEntries(p,a,b)                  (p)->GetPaletteEntries(a,b)
-#define IDirect3DDevice8_SetCurrentTexturePalette(p,a)             (p)->SetCurrentTexturePalette(a)
-#define IDirect3DDevice8_GetCurrentTexturePalette(p,a)             (p)->GetCurrentTexturePalette(a)
-#define IDirect3DDevice8_DrawPrimitive(p,a,b,c)                    (p)->DrawPrimitive(a,b,c)
-#define IDirect3DDevice8_DrawIndexedPrimitive(p,a,b,c,d,e)         (p)->DrawIndexedPrimitive(a,b,c,d,e)
-#define IDirect3DDevice8_DrawPrimitiveUP(p,a,b,c,d)                (p)->DrawPrimitiveUP(a,b,c,d)
-#define IDirect3DDevice8_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h) (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice8_ProcessVertices(p,a,b,c,d,e)              (p)->processVertices(a,b,c,d,e)
-#define IDirect3DDevice8_CreateVertexShader(p,a,b,c,d)             (p)->CreateVertexShader(a,b,c,d)
-#define IDirect3DDevice8_SetVertexShader(p,a)                      (p)->SetVertexShader(a)
-#define IDirect3DDevice8_GetVertexShader(p,a)                      (p)->GetVertexShader(a)
-#define IDirect3DDevice8_DeleteVertexShader(p,a)                   (p)->DeleteVertexShader(a)
-#define IDirect3DDevice8_SetVertexShaderConstant(p,a,b,c)          (p)->SetVertexShaderConstant(a,b,c)
-#define IDirect3DDevice8_GetVertexShaderConstant(p,a,b,c)          (p)->GetVertexShaderConstant(a,b,c)
-#define IDirect3DDevice8_GetVertexShaderDeclaration(p,a,b,c)       (p)->GetVertexShaderDeclaration(a,b,c)
-#define IDirect3DDevice8_GetVertexShaderFunction(p,a,b,c)          (p)->GetVertexShaderFunction(a,b,c)
-#define IDirect3DDevice8_SetStreamSource(p,a,b,c)                  (p)->SetStreamSource(a,b,c)
-#define IDirect3DDevice8_GetStreamSource(p,a,b,c)                  (p)->GetStreamSource(a,b,c)
-#define IDirect3DDevice8_SetIndices(p,a,b)                         (p)->SetIndices(a,b)
-#define IDirect3DDevice8_GetIndices(p,a,b)                         (p)->GetIndices(a,b)
-#define IDirect3DDevice8_CreatePixelShader(p,a,b)                  (p)->CreatePixelShader(a,b)
-#define IDirect3DDevice8_SetPixelShader(p,a)                       (p)->SetPixelShader(a)
-#define IDirect3DDevice8_GetPixelShader(p,a)                       (p)->GetPixelShader(a)
-#define IDirect3DDevice8_DeletePixelShader(p,a)                    (p)->DeletePixelShader(a)
-#define IDirect3DDevice8_SetPixelShaderConstant(p,a,b,c)           (p)->SetPixelShaderConstant(a,b,c)
-#define IDirect3DDevice8_GetPixelShaderConstant(p,a,b,c)           (p)->GetPixelShaderConstant(a,b,c)
-#define IDirect3DDevice8_GetPixelShaderFunction(p,a,b,c)           (p)->GetPixelShaderFunction(a,b,c)
-#define IDirect3DDevice8_DrawRectPatch(p,a,b,c)                    (p)->DrawRectPatch(a,b,c)
-#define IDirect3DDevice8_DrawTriPatch(p,a,b,c)                     (p)->DrawTriPatch(a,b,c)
-#define IDirect3DDevice8_DeletePatch(p,a)                          (p)->DeletePatch(a)
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif  /* defined(__cplusplus) */
-
-/* Define the main entrypoint as well */
-IDirect3D8* WINAPI Direct3DCreate8(UINT SDKVersion);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __WINE_D3D8_H */
diff --git a/misc/builddeps/win32/dx/include/d3d8caps.h b/misc/builddeps/win32/dx/include/d3d8caps.h
deleted file mode 100644 (file)
index 019d346..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright (C) 2002 Jason Edmeades
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D8CAPS_H
-#define __WINE_D3D8CAPS_H
-
-/*
- * Definitions
- */
-
-#define D3DCAPS_READ_SCANLINE 0x20000
-
-#define D3DCURSORCAPS_COLOR   1
-#define D3DCURSORCAPS_LOWRES  2
-
-#define D3DDEVCAPS_EXECUTESYSTEMMEMORY     0x0000010
-#define D3DDEVCAPS_EXECUTEVIDEOMEMORY      0x0000020
-#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY    0x0000040
-#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY     0x0000080
-#define D3DDEVCAPS_TEXTURESYSTEMMEMORY     0x0000100
-#define D3DDEVCAPS_TEXTUREVIDEOMEMORY      0x0000200
-#define D3DDEVCAPS_DRAWPRIMTLVERTEX        0x0000400
-#define D3DDEVCAPS_CANRENDERAFTERFLIP      0x0000800
-#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM   0x0001000
-#define D3DDEVCAPS_DRAWPRIMITIVES2         0x0002000
-#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x0004000
-#define D3DDEVCAPS_DRAWPRIMITIVES2EX       0x0008000
-#define D3DDEVCAPS_HWTRANSFORMANDLIGHT     0x0010000
-#define D3DDEVCAPS_CANBLTSYSTONONLOCAL     0x0020000
-#define D3DDEVCAPS_HWRASTERIZATION         0x0080000
-#define D3DDEVCAPS_PUREDEVICE              0x0100000
-#define D3DDEVCAPS_QUINTICRTPATCHES        0x0200000
-#define D3DDEVCAPS_RTPATCHES               0x0400000
-#define D3DDEVCAPS_RTPATCHHANDLEZERO       0x0800000
-#define D3DDEVCAPS_NPATCHES                0x1000000
-
-#define D3DFVFCAPS_TEXCOORDCOUNTMASK  0x00FFFF
-#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x080000
-#define D3DFVFCAPS_PSIZE              0x100000
-
-#define D3DLINECAPS_TEXTURE           0x01
-#define D3DLINECAPS_ZTEST             0x02
-#define D3DLINECAPS_BLEND             0x04
-#define D3DLINECAPS_ALPHACMP          0x08
-#define D3DLINECAPS_FOG               0x10
-
-#define D3DPBLENDCAPS_ZERO            0x0001
-#define D3DPBLENDCAPS_ONE             0x0002
-#define D3DPBLENDCAPS_SRCCOLOR        0x0004
-#define D3DPBLENDCAPS_INVSRCCOLOR     0x0008
-#define D3DPBLENDCAPS_SRCALPHA        0x0010
-#define D3DPBLENDCAPS_INVSRCALPHA     0x0020
-#define D3DPBLENDCAPS_DESTALPHA       0x0040
-#define D3DPBLENDCAPS_INVDESTALPHA    0x0080
-#define D3DPBLENDCAPS_DESTCOLOR       0x0100
-#define D3DPBLENDCAPS_INVDESTCOLOR    0x0200
-#define D3DPBLENDCAPS_SRCALPHASAT     0x0400
-#define D3DPBLENDCAPS_BOTHSRCALPHA    0x0800
-#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x1000
-
-#define D3DPCMPCAPS_NEVER        0x01
-#define D3DPCMPCAPS_LESS         0x02
-#define D3DPCMPCAPS_EQUAL        0x04
-#define D3DPCMPCAPS_LESSEQUAL    0x08
-#define D3DPCMPCAPS_GREATER      0x10
-#define D3DPCMPCAPS_NOTEQUAL     0x20
-#define D3DPCMPCAPS_GREATEREQUAL 0x40
-#define D3DPCMPCAPS_ALWAYS       0x80
-
-#define D3DPMISCCAPS_MASKZ                 0x0002
-#define D3DPMISCCAPS_LINEPATTERNREP        0x0004
-#define D3DPMISCCAPS_CULLNONE              0x0010
-#define D3DPMISCCAPS_CULLCW                0x0020
-#define D3DPMISCCAPS_CULLCCW               0x0040
-#define D3DPMISCCAPS_COLORWRITEENABLE      0x0080
-#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS 0x0100
-#define D3DPMISCCAPS_CLIPTLVERTS           0x0200
-#define D3DPMISCCAPS_TSSARGTEMP            0x0400
-#define D3DPMISCCAPS_BLENDOP               0x0800
-
-#define D3DPRASTERCAPS_DITHER                     0x00000001
-#define D3DPRASTERCAPS_PAT                        0x00000008
-#define D3DPRASTERCAPS_ZTEST                      0x00000010
-#define D3DPRASTERCAPS_FOGVERTEX                  0x00000080
-#define D3DPRASTERCAPS_FOGTABLE                   0x00000100
-#define D3DPRASTERCAPS_ANTIALIASEDGES             0x00001000
-#define D3DPRASTERCAPS_MIPMAPLODBIAS              0x00002000
-#define D3DPRASTERCAPS_ZBIAS                      0x00004000
-#define D3DPRASTERCAPS_ZBUFFERLESSHSR             0x00008000
-#define D3DPRASTERCAPS_FOGRANGE                   0x00010000
-#define D3DPRASTERCAPS_ANISOTROPY                 0x00020000
-#define D3DPRASTERCAPS_WBUFFER                    0x00040000
-#define D3DPRASTERCAPS_WFOG                       0x00100000
-#define D3DPRASTERCAPS_ZFOG                       0x00200000
-#define D3DPRASTERCAPS_COLORPERSPECTIVE           0x00400000
-#define D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE      0x00800000
-
-#define D3DPRESENT_INTERVAL_DEFAULT               0x00000000
-#define D3DPRESENT_INTERVAL_ONE                   0x00000001
-#define D3DPRESENT_INTERVAL_TWO                   0x00000002
-#define D3DPRESENT_INTERVAL_THREE                 0x00000004
-#define D3DPRESENT_INTERVAL_FOUR                  0x00000008
-#define D3DPRESENT_INTERVAL_IMMEDIATE             0x80000000
-
-#define D3DPSHADECAPS_COLORGOURAUDRGB             0x00008
-#define D3DPSHADECAPS_SPECULARGOURAUDRGB          0x00200
-#define D3DPSHADECAPS_ALPHAGOURAUDBLEND           0x04000
-#define D3DPSHADECAPS_FOGGOURAUD                  0x80000
-
-#define D3DPTADDRESSCAPS_WRAP                     0x01
-#define D3DPTADDRESSCAPS_MIRROR                   0x02
-#define D3DPTADDRESSCAPS_CLAMP                    0x04
-#define D3DPTADDRESSCAPS_BORDER                   0x08
-#define D3DPTADDRESSCAPS_INDEPENDENTUV            0x10
-#define D3DPTADDRESSCAPS_MIRRORONCE               0x20
-
-#define D3DPTEXTURECAPS_PERSPECTIVE              0x00001
-#define D3DPTEXTURECAPS_POW2                     0x00002
-#define D3DPTEXTURECAPS_ALPHA                    0x00004
-#define D3DPTEXTURECAPS_SQUAREONLY               0x00020
-#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00040
-#define D3DPTEXTURECAPS_ALPHAPALETTE             0x00080
-#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL       0x00100
-#define D3DPTEXTURECAPS_PROJECTED                0x00400
-#define D3DPTEXTURECAPS_CUBEMAP                  0x00800
-#define D3DPTEXTURECAPS_VOLUMEMAP                0x02000
-#define D3DPTEXTURECAPS_MIPMAP                   0x04000
-#define D3DPTEXTURECAPS_MIPVOLUMEMAP             0x08000
-#define D3DPTEXTURECAPS_MIPCUBEMAP               0x10000
-#define D3DPTEXTURECAPS_CUBEMAP_POW2             0x20000
-#define D3DPTEXTURECAPS_VOLUMEMAP_POW2           0x40000
-
-#define D3DPTFILTERCAPS_MINFPOINT                0x00000100
-#define D3DPTFILTERCAPS_MINFLINEAR               0x00000200
-#define D3DPTFILTERCAPS_MINFANISOTROPIC          0x00000400
-#define D3DPTFILTERCAPS_MIPFPOINT                0x00010000
-#define D3DPTFILTERCAPS_MIPFLINEAR               0x00020000
-#define D3DPTFILTERCAPS_MAGFPOINT                0x01000000
-#define D3DPTFILTERCAPS_MAGFLINEAR               0x02000000
-#define D3DPTFILTERCAPS_MAGFANISOTROPIC          0x04000000
-#define D3DPTFILTERCAPS_MAGFAFLATCUBIC           0x08000000
-#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC        0x10000000
-
-#define D3DSTENCILCAPS_KEEP                      0x01
-#define D3DSTENCILCAPS_ZERO                      0x02
-#define D3DSTENCILCAPS_REPLACE                   0x04
-#define D3DSTENCILCAPS_INCRSAT                   0x08
-#define D3DSTENCILCAPS_DECRSAT                   0x10
-#define D3DSTENCILCAPS_INVERT                    0x20
-#define D3DSTENCILCAPS_INCR                      0x40
-#define D3DSTENCILCAPS_DECR                      0x80
-
-#define D3DTEXOPCAPS_DISABLE                     0x0000001
-#define D3DTEXOPCAPS_SELECTARG1                  0x0000002
-#define D3DTEXOPCAPS_SELECTARG2                  0x0000004
-#define D3DTEXOPCAPS_MODULATE                    0x0000008
-#define D3DTEXOPCAPS_MODULATE2X                  0x0000010
-#define D3DTEXOPCAPS_MODULATE4X                  0x0000020
-#define D3DTEXOPCAPS_ADD                         0x0000040
-#define D3DTEXOPCAPS_ADDSIGNED                   0x0000080
-#define D3DTEXOPCAPS_ADDSIGNED2X                 0x0000100
-#define D3DTEXOPCAPS_SUBTRACT                    0x0000200
-#define D3DTEXOPCAPS_ADDSMOOTH                   0x0000400
-#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA           0x0000800
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHA           0x0001000
-#define D3DTEXOPCAPS_BLENDFACTORALPHA            0x0002000
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM         0x0004000
-#define D3DTEXOPCAPS_BLENDCURRENTALPHA           0x0008000
-#define D3DTEXOPCAPS_PREMODULATE                 0x0010000
-#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR      0x0020000
-#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA      0x0040000
-#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR   0x0080000
-#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA   0x0100000
-#define D3DTEXOPCAPS_BUMPENVMAP                  0x0200000
-#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE         0x0400000
-#define D3DTEXOPCAPS_DOTPRODUCT3                 0x0800000
-#define D3DTEXOPCAPS_MULTIPLYADD                 0x1000000
-#define D3DTEXOPCAPS_LERP                        0x2000000
-
-#define D3DVTXPCAPS_TEXGEN                       0x01
-#define D3DVTXPCAPS_MATERIALSOURCE7              0x02
-#define D3DVTXPCAPS_DIRECTIONALLIGHTS            0x08
-#define D3DVTXPCAPS_POSITIONALLIGHTS             0x10
-#define D3DVTXPCAPS_LOCALVIEWER                  0x20
-#define D3DVTXPCAPS_TWEENING                     0x40
-
-#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD  0x00000020
-#define D3DCAPS3_RESERVED                          0x8000001f
-
-#define D3DCAPS2_CANCALIBRATEGAMMA                 0x0100000
-#define D3DCAPS2_CANRENDERWINDOWED                 0x0080000
-#define D3DCAPS2_CANMANAGERESOURCE                 0x10000000
-#define D3DCAPS2_DYNAMICTEXTURES                   0x20000000
-#define D3DCAPS2_FULLSCREENGAMMA                   0x0020000
-#define D3DCAPS2_NO2DDURING3DSCENE                 0x0000002
-#define D3DCAPS2_RESERVED                          0x2000000
-
-/*
- * The d3dcaps8 structure
- */
-typedef struct _D3DCAPS8 {
-    D3DDEVTYPE          DeviceType;
-    UINT                AdapterOrdinal;
-
-    DWORD               Caps;
-    DWORD               Caps2;
-    DWORD               Caps3;
-    DWORD               PresentationIntervals;
-
-    DWORD               CursorCaps;
-
-    DWORD               DevCaps;
-
-    DWORD               PrimitiveMiscCaps;
-    DWORD               RasterCaps;
-    DWORD               ZCmpCaps;
-    DWORD               SrcBlendCaps;
-    DWORD               DestBlendCaps;
-    DWORD               AlphaCmpCaps;
-    DWORD               ShadeCaps;
-    DWORD               TextureCaps;
-    DWORD               TextureFilterCaps;
-    DWORD               CubeTextureFilterCaps;
-    DWORD               VolumeTextureFilterCaps;
-    DWORD               TextureAddressCaps;
-    DWORD               VolumeTextureAddressCaps;
-
-    DWORD               LineCaps;
-
-    DWORD               MaxTextureWidth, MaxTextureHeight;
-    DWORD               MaxVolumeExtent;
-
-    DWORD               MaxTextureRepeat;
-    DWORD               MaxTextureAspectRatio;
-    DWORD               MaxAnisotropy;
-    float               MaxVertexW;
-
-    float               GuardBandLeft;
-    float               GuardBandTop;
-    float               GuardBandRight;
-    float               GuardBandBottom;
-
-    float               ExtentsAdjust;
-    DWORD               StencilCaps;
-
-    DWORD               FVFCaps;
-    DWORD               TextureOpCaps;
-    DWORD               MaxTextureBlendStages;
-    DWORD               MaxSimultaneousTextures;
-
-    DWORD               VertexProcessingCaps;
-    DWORD               MaxActiveLights;
-    DWORD               MaxUserClipPlanes;
-    DWORD               MaxVertexBlendMatrices;
-    DWORD               MaxVertexBlendMatrixIndex;
-
-    float               MaxPointSize;
-
-    DWORD               MaxPrimitiveCount;
-    DWORD               MaxVertexIndex;
-    DWORD               MaxStreams;
-    DWORD               MaxStreamStride;
-
-    DWORD               VertexShaderVersion;
-    DWORD               MaxVertexShaderConst;
-
-    DWORD               PixelShaderVersion;
-    float               MaxPixelShaderValue;
-} D3DCAPS8;
-
-#endif  /* __WINE_D3D8CAPS_H */
diff --git a/misc/builddeps/win32/dx/include/d3d8types.h b/misc/builddeps/win32/dx/include/d3d8types.h
deleted file mode 100644 (file)
index 7c24b73..0000000
+++ /dev/null
@@ -1,1221 +0,0 @@
-/*
- * Copyright (C) 2002 Jason Edmeades
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D8TYPES_H
-#define __WINE_D3D8TYPES_H
-
-#include <_mingw_dxhelper.h>
-
-/*****************************************************************************
- * Direct 3D v8 #defines
- */
-
-#ifndef D3DCLEAR_TARGET
-#define D3DCLEAR_TARGET   1
-#endif
-#ifndef D3DCLEAR_ZBUFFER
-#define D3DCLEAR_ZBUFFER  2
-#endif
-#ifndef D3DCLEAR_STENCIL
-#define D3DCLEAR_STENCIL  4
-#endif
-
-#define D3DCLIPPLANE0 (1 << 0)
-#define D3DCLIPPLANE1 (1 << 1)
-#define D3DCLIPPLANE2 (1 << 2)
-#define D3DCLIPPLANE3 (1 << 3)
-#define D3DCLIPPLANE4 (1 << 4)
-#define D3DCLIPPLANE5 (1 << 5)
-
-#define D3DCOLOR_ARGB(a,r,g,b)        ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
-#define D3DCOLOR_COLORVALUE(r,g,b,a)  D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
-#define D3DCOLOR_RGBA(r,g,b,a)        D3DCOLOR_ARGB(a,r,g,b)
-#define D3DCOLOR_XRGB(r,g,b)          D3DCOLOR_ARGB(0xff,r,g,b)
-
-#define D3DCS_LEFT                 0x001
-#define D3DCS_RIGHT                0x002
-#define D3DCS_TOP                  0x004
-#define D3DCS_BOTTOM               0x008
-#define D3DCS_FRONT                0x010
-#define D3DCS_BACK                 0x020
-#define D3DCS_PLANE0               0x040
-#define D3DCS_PLANE1               0x080
-#define D3DCS_PLANE2               0x100
-#define D3DCS_PLANE3               0x200
-#define D3DCS_PLANE4               0x400
-#define D3DCS_PLANE5               0x800
-#define D3DCS_ALL                  0xFFF
-
-#define D3DFVF_TEXTUREFORMAT1 3
-#define D3DFVF_TEXTUREFORMAT2 0
-#define D3DFVF_TEXTUREFORMAT3 1
-#define D3DFVF_TEXTUREFORMAT4 2
-#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
-#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
-
-#define D3DLOCK_READONLY           0x0010
-#define D3DLOCK_NOSYSLOCK          0x0800
-#define D3DLOCK_NOOVERWRITE        0x1000
-#define D3DLOCK_DISCARD            0x2000
-#define D3DLOCK_NO_DIRTY_UPDATE    0x8000
-
-#define D3DMAXUSERCLIPPLANES       32
-
-#define D3DRENDERSTATE_WRAPBIAS    0x80
-
-#define D3DTSS_TCI_PASSTHRU                       0x00000
-#define D3DTSS_TCI_CAMERASPACENORMAL              0x10000
-#define D3DTSS_TCI_CAMERASPACEPOSITION            0x20000
-#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR    0x30000
-
-
-#define D3DTS_WORLD  D3DTS_WORLDMATRIX(0)
-#define D3DTS_WORLD1 D3DTS_WORLDMATRIX(1)
-#define D3DTS_WORLD2 D3DTS_WORLDMATRIX(2)
-#define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3)
-#define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
-
-#define D3DUSAGE_RENDERTARGET       0x01
-#define D3DUSAGE_DEPTHSTENCIL       0x02
-#define D3DUSAGE_WRITEONLY          0x08
-#define D3DUSAGE_SOFTWAREPROCESSING 0x10
-#define D3DUSAGE_DONOTCLIP          0x20
-#define D3DUSAGE_POINTS             0x40
-#define D3DUSAGE_RTPATCHES          0x80
-#define D3DUSAGE_NPATCHES           0x100
-#define D3DUSAGE_DYNAMIC            0x200
-
-#define D3DWRAP_U        1
-#define D3DWRAP_V        2
-#define D3DWRAP_W        4
-#define D3DWRAPCOORD_0   1
-#define D3DWRAPCOORD_1   2
-#define D3DWRAPCOORD_2   4
-#define D3DWRAPCOORD_3   8
-
-#define MAX_DEVICE_IDENTIFIER_STRING        512
-
-#define D3DFVF_RESERVED0           0x0001
-#define D3DFVF_POSITION_MASK       0x000E
-#define D3DFVF_XYZ                 0x0002
-#define D3DFVF_XYZRHW              0x0004
-#define D3DFVF_XYZB1               0x0006
-#define D3DFVF_XYZB2               0x0008
-#define D3DFVF_XYZB3               0x000a
-#define D3DFVF_XYZB4               0x000c
-#define D3DFVF_XYZB5               0x000e
-#define D3DFVF_NORMAL              0x0010
-#define D3DFVF_PSIZE               0x0020
-#define D3DFVF_DIFFUSE             0x0040
-#define D3DFVF_SPECULAR            0x0080
-#define D3DFVF_TEXCOUNT_MASK       0x0f00
-#define D3DFVF_TEXCOUNT_SHIFT           8
-#define D3DFVF_TEX0                0x0000
-#define D3DFVF_TEX1                0x0100
-#define D3DFVF_TEX2                0x0200
-#define D3DFVF_TEX3                0x0300
-#define D3DFVF_TEX4                0x0400
-#define D3DFVF_TEX5                0x0500
-#define D3DFVF_TEX6                0x0600
-#define D3DFVF_TEX7                0x0700
-#define D3DFVF_TEX8                0x0800
-#define D3DFVF_LASTBETA_UBYTE4     0x1000
-#define D3DFVF_RESERVED2           0xE000
-
-#define D3DTA_SELECTMASK        0x0000000f
-#define D3DTA_DIFFUSE           0x00000000
-#define D3DTA_CURRENT           0x00000001
-#define D3DTA_TEXTURE           0x00000002
-#define D3DTA_TFACTOR           0x00000003
-#define D3DTA_SPECULAR          0x00000004
-#define D3DTA_COMPLEMENT        0x00000010
-#define D3DTA_ALPHAREPLICATE    0x00000020
-#define D3DTA_TEMP              0x00000005
-
-#define D3DCOLORWRITEENABLE_RED   (1L<<0)   
-#define D3DCOLORWRITEENABLE_GREEN (1L<<1)
-#define D3DCOLORWRITEENABLE_BLUE  (1L<<2)
-#define D3DCOLORWRITEENABLE_ALPHA (1L<<3)
-
-
-#ifndef MAKEFOURCC
-#define MAKEFOURCC(ch0, ch1, ch2, ch3)  \
-    ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |  \
-    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
-#endif /* MAKEFOURCC */
-
-
-/**************************** 
- * Vertex Shaders Declaration
- */
-
-typedef enum _D3DVSD_TOKENTYPE {
-  D3DVSD_TOKEN_NOP         = 0,
-  D3DVSD_TOKEN_STREAM      = 1,
-  D3DVSD_TOKEN_STREAMDATA  = 2,
-  D3DVSD_TOKEN_TESSELLATOR = 3,
-  D3DVSD_TOKEN_CONSTMEM    = 4,
-  D3DVSD_TOKEN_EXT         = 5,
-  /* RESERVED              = 6 */
-  D3DVSD_TOKEN_END         = 7,
-  D3DVSD_FORCE_DWORD       = 0x7FFFFFFF
-} D3DVSD_TOKENTYPE;
-
-/** input registers for vertex shaders functions */
-/*
-#define D3DVSDE_POSITION      0
-#define D3DVSDE_BLENDWEIGHT   1
-#define D3DVSDE_BLENDINDICES  2
-#define D3DVSDE_NORMAL        3
-#define D3DVSDE_PSIZE         4
-#define D3DVSDE_DIFFUSE       5
-#define D3DVSDE_SPECULAR      6
-#define D3DVSDE_TEXCOORD0     7
-#define D3DVSDE_TEXCOORD1     8
-#define D3DVSDE_TEXCOORD2     9
-#define D3DVSDE_TEXCOORD3    10
-#define D3DVSDE_TEXCOORD4    11
-#define D3DVSDE_TEXCOORD5    12
-#define D3DVSDE_TEXCOORD6    13
-#define D3DVSDE_TEXCOORD7    14
-#define D3DVSDE_POSITION2    15
-#define D3DVSDE_NORMAL2      16
-*/
-/** Address of the vertex register. 0 - 16 */
-typedef enum _D3DVSDE_REGISTER {
-  D3DVSDE_POSITION     =  0,
-  D3DVSDE_BLENDWEIGHT  =  1,
-  D3DVSDE_BLENDINDICES =  2,
-  D3DVSDE_NORMAL       =  3,
-  D3DVSDE_PSIZE        =  4,
-  D3DVSDE_DIFFUSE      =  5,
-  D3DVSDE_SPECULAR     =  6,
-  D3DVSDE_TEXCOORD0    =  7,
-  D3DVSDE_TEXCOORD1    =  8,
-  D3DVSDE_TEXCOORD2    =  9,
-  D3DVSDE_TEXCOORD3    = 10,
-  D3DVSDE_TEXCOORD4    = 11,
-  D3DVSDE_TEXCOORD5    = 12,
-  D3DVSDE_TEXCOORD6    = 13,
-  D3DVSDE_TEXCOORD7    = 14,
-  D3DVSDE_POSITION2    = 15,
-  D3DVSDE_NORMAL2      = 16
-} D3DVSDE_REGISTER;
-
-/** bit-field declaration for VertexRegister Type */
-/*
-#define D3DVSDT_FLOAT1      0x00
-#define D3DVSDT_FLOAT2      0x01
-#define D3DVSDT_FLOAT3      0x02
-#define D3DVSDT_FLOAT4      0x03
-#define D3DVSDT_D3DCOLOR    0x04
-#define D3DVSDT_UBYTE4      0x05
-#define D3DVSDT_SHORT2      0x06
-#define D3DVSDT_SHORT4      0x07
-*/
-typedef enum _D3DVSDT_TYPE {
-  D3DVSDT_FLOAT1   = 0x00,
-  D3DVSDT_FLOAT2   = 0x01,
-  D3DVSDT_FLOAT3   = 0x02,
-  D3DVSDT_FLOAT4   = 0x03,
-  D3DVSDT_D3DCOLOR = 0x04,
-  D3DVSDT_UBYTE4   = 0x05,
-  D3DVSDT_SHORT2   = 0x06,
-  D3DVSDT_SHORT4   = 0x07
-} D3DVSDT_TYPE;
-
-
-#define D3DVSD_CONSTADDRESSSHIFT  0
-#define D3DVSD_EXTINFOSHIFT       0
-#define D3DVSD_STREAMNUMBERSHIFT  0
-#define D3DVSD_VERTEXREGSHIFT     0
-#define D3DVSD_CONSTRSSHIFT      16
-#define D3DVSD_DATATYPESHIFT     16
-#define D3DVSD_SKIPCOUNTSHIFT    16
-#define D3DVSD_VERTEXREGINSHIFT  20
-#define D3DVSD_EXTCOUNTSHIFT     24
-#define D3DVSD_CONSTCOUNTSHIFT   25
-#define D3DVSD_DATALOADTYPESHIFT 28
-#define D3DVSD_STREAMTESSSHIFT   28
-#define D3DVSD_TOKENTYPESHIFT    29
-
-#define D3DVSD_CONSTADDRESSMASK  (0x7F     << D3DVSD_CONSTADDRESSSHIFT)
-#define D3DVSD_EXTINFOMASK       (0xFFFFFF << D3DVSD_EXTINFOSHIFT)
-#define D3DVSD_STREAMNUMBERMASK  (0xF      << D3DVSD_STREAMNUMBERSHIFT)
-#define D3DVSD_VERTEXREGMASK     (0x1F     << D3DVSD_VERTEXREGSHIFT)
-#define D3DVSD_CONSTRSMASK       (0x1FFF   << D3DVSD_CONSTRSSHIFT)
-#define D3DVSD_DATATYPEMASK      (0xF      << D3DVSD_DATATYPESHIFT)
-#define D3DVSD_SKIPCOUNTMASK     (0xF      << D3DVSD_SKIPCOUNTSHIFT)
-#define D3DVSD_EXTCOUNTMASK      (0x1F     << D3DVSD_EXTCOUNTSHIFT)
-#define D3DVSD_VERTEXREGINMASK   (0xF      << D3DVSD_VERTEXREGINSHIFT)
-#define D3DVSD_CONSTCOUNTMASK    (0xF      << D3DVSD_CONSTCOUNTSHIFT)
-#define D3DVSD_DATALOADTYPEMASK  (0x1      << D3DVSD_DATALOADTYPESHIFT)
-#define D3DVSD_STREAMTESSMASK    (0x1      << D3DVSD_STREAMTESSSHIFT)
-#define D3DVSD_TOKENTYPEMASK     (0x7      << D3DVSD_TOKENTYPESHIFT)
-
-
-#define D3DVSD_MAKETOKENTYPE(TokenType) \
-  ((TokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK)
-
-#define D3DVSD_CONST(ConstantAddress, Count) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_CONSTMEM) | ((Count) << D3DVSD_CONSTCOUNTSHIFT) | (ConstantAddress))
-
-#define D3DVSD_END() 0xFFFFFFFF
-
-#define D3DVSD_NOP() 0x00000000
-
-#define D3DVSD_REG(VertexRegister, Type) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | ((Type) << D3DVSD_DATATYPESHIFT) | (VertexRegister))
-
-#define D3DVSD_SKIP(Count) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | 0x10000000 | ((Count) << D3DVSD_SKIPCOUNTSHIFT))
-
-#define D3DVSD_STREAM(StreamNumber) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (StreamNumber))
-
-#define D3DVSD_STREAM_TESS() \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (D3DVSD_STREAMTESSMASK))
-
-#define D3DVSD_TESSNORMAL(RegisterIn, RegisterOut) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | ((RegisterIn) << D3DVSD_VERTEXREGINSHIFT) | ((0x02) << D3DVSD_DATATYPESHIFT) | (RegisterOut))
-
-#define D3DVSD_TESSUV(Register) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | 0x10000000 | ((0x01) << D3DVSD_DATATYPESHIFT) | (Register))
-
-
-/********************************
- * Pixel/Vertex Shaders Functions
- */
-
-/** Maximum number of supported texture coordinates sets operation */
-#define D3DDP_MAXTEXCOORD   8
-
-/** opcode token mask */
-#define D3DSI_OPCODE_MASK 0x0000FFFF
-
-/** opcodes types for PS and VS */
-typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE {
-  D3DSIO_NOP          =  0,
-  D3DSIO_MOV          =  1,
-  D3DSIO_ADD          =  2,
-  D3DSIO_SUB          =  3,
-  D3DSIO_MAD          =  4,
-  D3DSIO_MUL          =  5,
-  D3DSIO_RCP          =  6,
-  D3DSIO_RSQ          =  7,
-  D3DSIO_DP3          =  8,
-  D3DSIO_DP4          =  9,
-  D3DSIO_MIN          = 10,
-  D3DSIO_MAX          = 11,
-  D3DSIO_SLT          = 12,
-  D3DSIO_SGE          = 13,
-  D3DSIO_EXP          = 14,
-  D3DSIO_LOG          = 15,
-  D3DSIO_LIT          = 16,
-  D3DSIO_DST          = 17,
-  D3DSIO_LRP          = 18,
-  D3DSIO_FRC          = 19,
-  D3DSIO_M4x4         = 20,
-  D3DSIO_M4x3         = 21,
-  D3DSIO_M3x4         = 22,
-  D3DSIO_M3x3         = 23,
-  D3DSIO_M3x2         = 24,
-
-  D3DSIO_TEXCOORD     = 64,
-  D3DSIO_TEXKILL      = 65,
-  D3DSIO_TEX          = 66,
-  D3DSIO_TEXBEM       = 67,
-  D3DSIO_TEXBEML      = 68,
-  D3DSIO_TEXREG2AR    = 69,
-  D3DSIO_TEXREG2GB    = 70,
-  D3DSIO_TEXM3x2PAD   = 71,
-  D3DSIO_TEXM3x2TEX   = 72,
-  D3DSIO_TEXM3x3PAD   = 73,
-  D3DSIO_TEXM3x3TEX   = 74,
-  D3DSIO_TEXM3x3DIFF  = 75,
-  D3DSIO_TEXM3x3SPEC  = 76,
-  D3DSIO_TEXM3x3VSPEC = 77,
-  D3DSIO_EXPP         = 78,
-  D3DSIO_LOGP         = 79,
-  D3DSIO_CND          = 80,
-  D3DSIO_DEF          = 81,
-  D3DSIO_TEXREG2RGB   = 82,
-  D3DSIO_TEXDP3TEX    = 83,
-  D3DSIO_TEXM3x2DEPTH = 84,
-  D3DSIO_TEXDP3       = 85,
-  D3DSIO_TEXM3x3      = 86,
-  D3DSIO_TEXDEPTH     = 87,
-  D3DSIO_CMP          = 88,
-  D3DSIO_BEM          = 89,
-
-  D3DSIO_PHASE        = 0xFFFD,
-  D3DSIO_COMMENT      = 0xFFFE,
-  D3DSIO_END          = 0XFFFF,
-
-  D3DSIO_FORCE_DWORD  = 0X7FFFFFFF /** for 32-bit alignment */
-} D3DSHADER_INSTRUCTION_OPCODE_TYPE;
-
-/** for parallelism */
-#define D3DSI_COISSUE 0x40000000
-
-/** destination parameter modifiers (.xyzw) */
-#define D3DSP_WRITEMASK_0       0x00010000 /* .x r */
-#define D3DSP_WRITEMASK_1       0x00020000 /* .y g */
-#define D3DSP_WRITEMASK_2       0x00040000 /* .z b */
-#define D3DSP_WRITEMASK_3       0x00080000 /* .w a */
-#define D3DSP_WRITEMASK_ALL     0x000F0000 /* all */
-
-#define D3DSP_DSTMOD_SHIFT      20
-#define D3DSP_DSTMOD_MASK       (0xF << D3DSP_DSTMOD_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_DSTMOD_TYPE {
-  D3DSPDM_NONE         = 0 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_SATURATE     = 1 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_FORCE_DWORD  = 0X7FFFFFFF
-} D3DSHADER_PARAM_DSTMOD_TYPE;
-
-/** destination param */
-#define D3DSP_DSTSHIFT_SHIFT     24
-#define D3DSP_DSTSHIFT_MASK      (0xF << D3DSP_DSTSHIFT_SHIFT)
-
-/** destination/source reg type */
-#define D3DSP_REGTYPE_SHIFT      28
-#define D3DSP_REGTYPE_MASK       (0x7 << D3DSP_REGTYPE_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_REGISTER_TYPE {
-  D3DSPR_TEMP         = 0 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_INPUT        = 1 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_CONST        = 2 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_ADDR         = 3 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_TEXTURE      = 3 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_RASTOUT      = 4 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_ATTROUT      = 5 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_TEXCRDOUT    = 6 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_REGISTER_TYPE;
-
-typedef enum _D3DVS_RASTOUT_OFFSETS {
-  D3DSRO_POSITION     = 0,
-  D3DSRO_FOG          = 1,
-  D3DSRO_POINT_SIZE   = 2,
-  D3DSRO_FORCE_DWORD  = 0x7FFFFFFF
-} D3DVS_RASTOUT_OFFSETS;
-
-#define D3DVS_ADDRESSMODE_SHIFT  13
-#define D3DVS_ADDRESSMODE_MASK   (0x1 << D3DVS_ADDRESSMODE_SHIFT)
-
-typedef enum _D3DVS_ADDRESSMODE_TYPE {
-  D3DVS_ADDRMODE_ABSOLUTE     = 0 << D3DVS_ADDRESSMODE_SHIFT,
-  D3DVS_ADDRMODE_RELATIVE     = 1 << D3DVS_ADDRESSMODE_SHIFT,
-  D3DVS_ADDRMODE_FORCE_DWORD  = 0x7FFFFFFF
-} D3DVS_ADDRESSMODE_TYPE;
-
-#define D3DVS_SWIZZLE_SHIFT      16
-#define D3DVS_SWIZZLE_MASK       (0xFF << D3DVS_SWIZZLE_SHIFT)
-
-#define D3DSP_SWIZZLE_SHIFT      16
-#define D3DSP_SWIZZLE_MASK       (0xFF << D3DSP_SWIZZLE_SHIFT)
-
-#define D3DVS_X_X       (0 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_Y       (1 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_Z       (2 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_W       (3 << D3DVS_SWIZZLE_SHIFT)
-
-#define D3DVS_Y_X       (0 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_W       (3 << (D3DVS_SWIZZLE_SHIFT + 2))
-
-#define D3DVS_Z_X       (0 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_W       (3 << (D3DVS_SWIZZLE_SHIFT + 4))
-
-#define D3DVS_W_X       (0 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_W       (3 << (D3DVS_SWIZZLE_SHIFT + 6))
-
-#define D3DVS_NOSWIZZLE (D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W)
-
-#define D3DSP_NOSWIZZLE \
-    ((0 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
-
-#define D3DSP_SRCMOD_SHIFT      24
-#define D3DSP_SRCMOD_MASK       (0xF << D3DSP_SRCMOD_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE {
-  D3DSPSM_NONE         =  0 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_NEG          =  1 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_BIAS         =  2 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_BIASNEG      =  3 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_SIGN         =  4 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_SIGNNEG      =  5 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_COMP         =  6 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_X2           =  7 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_X2NEG        =  8 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_DZ           =  9 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_DW           = 10 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_SRCMOD_TYPE;
-
-#define D3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
-#define D3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
-#define D3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
-#define D3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
-
-#define D3DSI_COMMENTSIZE_SHIFT 16
-#define D3DSI_COMMENTSIZE_MASK (0x7FFF << D3DSI_COMMENTSIZE_SHIFT)
-
-#define D3DSHADER_COMMENT(commentSize) \
-  ((((commentSize) << D3DSI_COMMENTSIZE_SHIFT) & D3DSI_COMMENTSIZE_MASK) | D3DSIO_COMMENT)
-
-#define D3DPS_END() 0x0000FFFF
-#define D3DVS_END() 0x0000FFFF
-
-
-/*****************************************************************************
- * Direct 3D v8 enumerated types
- */
-typedef enum _D3DBACKBUFFER_TYPE {
-    D3DBACKBUFFER_TYPE_MONO         = 0,
-    D3DBACKBUFFER_TYPE_LEFT         = 1,
-    D3DBACKBUFFER_TYPE_RIGHT        = 2,
-
-    D3DBACKBUFFER_TYPE_FORCE_DWORD  = 0x7fffffff
-} D3DBACKBUFFER_TYPE;
-
-typedef enum _D3DBASISTYPE{
-   D3DBASIS_BEZIER        = 0,
-   D3DBASIS_BSPLINE       = 1,
-   D3DBASIS_INTERPOLATE   = 2,
-
-   D3DBASIS_FORCE_DWORD   = 0x7fffffff
-} D3DBASISTYPE;
-
-typedef enum _D3DBLEND {
-    D3DBLEND_ZERO               =  1,
-    D3DBLEND_ONE                =  2,
-    D3DBLEND_SRCCOLOR           =  3,
-    D3DBLEND_INVSRCCOLOR        =  4,
-    D3DBLEND_SRCALPHA           =  5,
-    D3DBLEND_INVSRCALPHA        =  6,
-    D3DBLEND_DESTALPHA          =  7,
-    D3DBLEND_INVDESTALPHA       =  8,
-    D3DBLEND_DESTCOLOR          =  9,
-    D3DBLEND_INVDESTCOLOR       = 10,
-    D3DBLEND_SRCALPHASAT        = 11,
-    D3DBLEND_BOTHSRCALPHA       = 12,
-    D3DBLEND_BOTHINVSRCALPHA    = 13,
-
-    D3DBLEND_FORCE_DWORD        = 0x7fffffff
-} D3DBLEND;
-
-typedef enum _D3DBLENDOP {
-    D3DBLENDOP_ADD              = 1,
-    D3DBLENDOP_SUBTRACT         = 2,
-    D3DBLENDOP_REVSUBTRACT      = 3,
-    D3DBLENDOP_MIN              = 4,
-    D3DBLENDOP_MAX              = 5,
-
-    D3DBLENDOP_FORCE_DWORD      = 0x7fffffff
-} D3DBLENDOP;
-
-typedef enum _D3DCMPFUNC {
-    D3DCMP_NEVER                = 1,
-    D3DCMP_LESS                 = 2,
-    D3DCMP_EQUAL                = 3,
-    D3DCMP_LESSEQUAL            = 4,
-    D3DCMP_GREATER              = 5,
-    D3DCMP_NOTEQUAL             = 6,
-    D3DCMP_GREATEREQUAL         = 7,
-    D3DCMP_ALWAYS               = 8,
-
-    D3DCMP_FORCE_DWORD          = 0x7fffffff
-} D3DCMPFUNC;
-
-typedef enum _D3DCUBEMAP_FACES {
-    D3DCUBEMAP_FACE_POSITIVE_X     = 0,
-    D3DCUBEMAP_FACE_NEGATIVE_X     = 1,
-    D3DCUBEMAP_FACE_POSITIVE_Y     = 2,
-    D3DCUBEMAP_FACE_NEGATIVE_Y     = 3,
-    D3DCUBEMAP_FACE_POSITIVE_Z     = 4,
-    D3DCUBEMAP_FACE_NEGATIVE_Z     = 5,
-
-    D3DCUBEMAP_FACE_FORCE_DWORD    = 0xffffffff
-} D3DCUBEMAP_FACES;
-
-typedef enum _D3DCULL {
-    D3DCULL_NONE                = 1,
-    D3DCULL_CW                  = 2,
-    D3DCULL_CCW                 = 3,
-
-    D3DCULL_FORCE_DWORD         = 0x7fffffff
-} D3DCULL;
-
-typedef enum _D3DDEBUGMONITORTOKENS {
-    D3DDMT_ENABLE          = 0,
-    D3DDMT_DISABLE         = 1,
-
-    D3DDMT_FORCE_DWORD     = 0x7fffffff
-} D3DDEBUGMONITORTOKENS;
-
-typedef enum _D3DDEVTYPE {
-    D3DDEVTYPE_HAL         = 1,
-    D3DDEVTYPE_REF         = 2,
-    D3DDEVTYPE_SW          = 3,
-
-    D3DDEVTYPE_FORCE_DWORD = 0xffffffff
-} D3DDEVTYPE;
-
-typedef enum _D3DFILLMODE {
-    D3DFILL_POINT               = 1,
-    D3DFILL_WIREFRAME           = 2,
-    D3DFILL_SOLID               = 3,
-
-    D3DFILL_FORCE_DWORD         = 0x7fffffff
-} D3DFILLMODE;
-
-typedef enum _D3DFOGMODE {
-    D3DFOG_NONE                 = 0,
-    D3DFOG_EXP                  = 1,
-    D3DFOG_EXP2                 = 2,
-    D3DFOG_LINEAR               = 3,
-
-    D3DFOG_FORCE_DWORD          = 0x7fffffff
-} D3DFOGMODE;
-
-typedef enum _D3DFORMAT {
-    D3DFMT_UNKNOWN              =   0,
-
-    D3DFMT_R8G8B8               =  20,
-    D3DFMT_A8R8G8B8             =  21,
-    D3DFMT_X8R8G8B8             =  22,
-    D3DFMT_R5G6B5               =  23,
-    D3DFMT_X1R5G5B5             =  24,
-    D3DFMT_A1R5G5B5             =  25,
-    D3DFMT_A4R4G4B4             =  26,
-    D3DFMT_R3G3B2               =  27,
-    D3DFMT_A8                   =  28,
-    D3DFMT_A8R3G3B2             =  29,
-    D3DFMT_X4R4G4B4             =  30,
-    D3DFMT_A2B10G10R10          =  31,
-    D3DFMT_G16R16               =  34,
-
-    D3DFMT_A8P8                 =  40,
-    D3DFMT_P8                   =  41,
-
-    D3DFMT_L8                   =  50,
-    D3DFMT_A8L8                 =  51,
-    D3DFMT_A4L4                 =  52,
-
-    D3DFMT_V8U8                 =  60,
-    D3DFMT_L6V5U5               =  61,
-    D3DFMT_X8L8V8U8             =  62,
-    D3DFMT_Q8W8V8U8             =  63,
-    D3DFMT_V16U16               =  64,
-    D3DFMT_W11V11U10            =  65,
-    D3DFMT_A2W10V10U10          =  67,
-
-    D3DFMT_UYVY                 =  MAKEFOURCC('U', 'Y', 'V', 'Y'),
-    D3DFMT_YUY2                 =  MAKEFOURCC('Y', 'U', 'Y', '2'),
-    D3DFMT_DXT1                 =  MAKEFOURCC('D', 'X', 'T', '1'),
-    D3DFMT_DXT2                 =  MAKEFOURCC('D', 'X', 'T', '2'),
-    D3DFMT_DXT3                 =  MAKEFOURCC('D', 'X', 'T', '3'),
-    D3DFMT_DXT4                 =  MAKEFOURCC('D', 'X', 'T', '4'),
-    D3DFMT_DXT5                 =  MAKEFOURCC('D', 'X', 'T', '5'),
-
-    D3DFMT_D16_LOCKABLE         =  70,
-    D3DFMT_D32                  =  71,
-    D3DFMT_D15S1                =  73,
-    D3DFMT_D24S8                =  75,
-    D3DFMT_D16                  =  80,
-    D3DFMT_D24X8                =  77,
-    D3DFMT_D24X4S4              =  79,
-
-    D3DFMT_VERTEXDATA           = 100,
-    D3DFMT_INDEX16              = 101,
-    D3DFMT_INDEX32              = 102,
-
-    D3DFMT_FORCE_DWORD          = 0xFFFFFFFF
-} D3DFORMAT;
-
-typedef enum _D3DLIGHTTYPE {
-    D3DLIGHT_POINT          = 1,
-    D3DLIGHT_SPOT           = 2,
-    D3DLIGHT_DIRECTIONAL    = 3,
-
-    D3DLIGHT_FORCE_DWORD    = 0x7fffffff
-} D3DLIGHTTYPE;
-
-typedef enum _D3DMATERIALCOLORSOURCE {
-    D3DMCS_MATERIAL         = 0,
-    D3DMCS_COLOR1           = 1,
-    D3DMCS_COLOR2           = 2,
-
-    D3DMCS_FORCE_DWORD      = 0x7fffffff
-} D3DMATERIALCOLORSOURCE;
-
-typedef enum _D3DMULTISAMPLE_TYPE {
-    D3DMULTISAMPLE_NONE            =  0,
-    D3DMULTISAMPLE_2_SAMPLES       =  2,
-    D3DMULTISAMPLE_3_SAMPLES       =  3,
-    D3DMULTISAMPLE_4_SAMPLES       =  4,
-    D3DMULTISAMPLE_5_SAMPLES       =  5,
-    D3DMULTISAMPLE_6_SAMPLES       =  6,
-    D3DMULTISAMPLE_7_SAMPLES       =  7,
-    D3DMULTISAMPLE_8_SAMPLES       =  8,
-    D3DMULTISAMPLE_9_SAMPLES       =  9,
-    D3DMULTISAMPLE_10_SAMPLES      = 10,
-    D3DMULTISAMPLE_11_SAMPLES      = 11,
-    D3DMULTISAMPLE_12_SAMPLES      = 12,
-    D3DMULTISAMPLE_13_SAMPLES      = 13,
-    D3DMULTISAMPLE_14_SAMPLES      = 14,
-    D3DMULTISAMPLE_15_SAMPLES      = 15,
-    D3DMULTISAMPLE_16_SAMPLES      = 16,
-
-    D3DMULTISAMPLE_FORCE_DWORD     = 0x7fffffff
-} D3DMULTISAMPLE_TYPE;
-
-typedef enum _D3DORDERTYPE {
-   D3DORDER_LINEAR      = 1,
-   D3DORDER_QUADRATIC   = 2,
-   D3DORDER_CUBIC       = 3,
-   D3DORDER_QUINTIC     = 5,
-
-   D3DORDER_FORCE_DWORD = 0x7fffffff
-} D3DORDERTYPE;
-
-typedef enum _D3DPATCHEDGESTYLE {
-   D3DPATCHEDGE_DISCRETE    = 0,
-   D3DPATCHEDGE_CONTINUOUS  = 1,
-
-   D3DPATCHEDGE_FORCE_DWORD = 0x7fffffff,
-} D3DPATCHEDGESTYLE;
-
-typedef enum _D3DPOOL {
-    D3DPOOL_DEFAULT                 = 0,
-    D3DPOOL_MANAGED                 = 1,
-    D3DPOOL_SYSTEMMEM               = 2,
-    D3DPOOL_SCRATCH                 = 3,
-
-    D3DPOOL_FORCE_DWORD             = 0x7fffffff
-} D3DPOOL;
-
-typedef enum _D3DPRIMITIVETYPE {
-    D3DPT_POINTLIST             = 1,
-    D3DPT_LINELIST              = 2,
-    D3DPT_LINESTRIP             = 3,
-    D3DPT_TRIANGLELIST          = 4,
-    D3DPT_TRIANGLESTRIP         = 5,
-    D3DPT_TRIANGLEFAN           = 6,
-
-    D3DPT_FORCE_DWORD           = 0x7fffffff
-} D3DPRIMITIVETYPE;
-
-typedef enum _D3DRENDERSTATETYPE {
-    D3DRS_ZENABLE                   =   7,
-    D3DRS_FILLMODE                  =   8,
-    D3DRS_SHADEMODE                 =   9,
-    D3DRS_LINEPATTERN               =  10,
-    D3DRS_ZWRITEENABLE              =  14,
-    D3DRS_ALPHATESTENABLE           =  15,
-    D3DRS_LASTPIXEL                 =  16,
-    D3DRS_SRCBLEND                  =  19,
-    D3DRS_DESTBLEND                 =  20,
-    D3DRS_CULLMODE                  =  22,
-    D3DRS_ZFUNC                     =  23,
-    D3DRS_ALPHAREF                  =  24,
-    D3DRS_ALPHAFUNC                 =  25,
-    D3DRS_DITHERENABLE              =  26,
-    D3DRS_ALPHABLENDENABLE          =  27,
-    D3DRS_FOGENABLE                 =  28,
-    D3DRS_SPECULARENABLE            =  29,
-    D3DRS_ZVISIBLE                  =  30,
-    D3DRS_FOGCOLOR                  =  34,
-    D3DRS_FOGTABLEMODE              =  35,
-    D3DRS_FOGSTART                  =  36,
-    D3DRS_FOGEND                    =  37,
-    D3DRS_FOGDENSITY                =  38,
-    D3DRS_EDGEANTIALIAS             =  40,
-    D3DRS_ZBIAS                     =  47,
-    D3DRS_RANGEFOGENABLE            =  48,
-    D3DRS_STENCILENABLE             =  52,
-    D3DRS_STENCILFAIL               =  53,
-    D3DRS_STENCILZFAIL              =  54,
-    D3DRS_STENCILPASS               =  55,
-    D3DRS_STENCILFUNC               =  56,
-    D3DRS_STENCILREF                =  57,
-    D3DRS_STENCILMASK               =  58,
-    D3DRS_STENCILWRITEMASK          =  59,
-    D3DRS_TEXTUREFACTOR             =  60,
-    D3DRS_WRAP0                     = 128,
-    D3DRS_WRAP1                     = 129,
-    D3DRS_WRAP2                     = 130,
-    D3DRS_WRAP3                     = 131,
-    D3DRS_WRAP4                     = 132,
-    D3DRS_WRAP5                     = 133,
-    D3DRS_WRAP6                     = 134,
-    D3DRS_WRAP7                     = 135,
-    D3DRS_CLIPPING                  = 136,
-    D3DRS_LIGHTING                  = 137,
-    D3DRS_AMBIENT                   = 139,
-    D3DRS_FOGVERTEXMODE             = 140,
-    D3DRS_COLORVERTEX               = 141,
-    D3DRS_LOCALVIEWER               = 142,
-    D3DRS_NORMALIZENORMALS          = 143,
-    D3DRS_DIFFUSEMATERIALSOURCE     = 145,
-    D3DRS_SPECULARMATERIALSOURCE    = 146,
-    D3DRS_AMBIENTMATERIALSOURCE     = 147,
-    D3DRS_EMISSIVEMATERIALSOURCE    = 148,
-    D3DRS_VERTEXBLEND               = 151,
-    D3DRS_CLIPPLANEENABLE           = 152,
-    D3DRS_SOFTWAREVERTEXPROCESSING  = 153,
-    D3DRS_POINTSIZE                 = 154,
-    D3DRS_POINTSIZE_MIN             = 155,
-    D3DRS_POINTSPRITEENABLE         = 156,
-    D3DRS_POINTSCALEENABLE          = 157,
-    D3DRS_POINTSCALE_A              = 158,
-    D3DRS_POINTSCALE_B              = 159,
-    D3DRS_POINTSCALE_C              = 160,
-    D3DRS_MULTISAMPLEANTIALIAS      = 161,
-    D3DRS_MULTISAMPLEMASK           = 162,
-    D3DRS_PATCHEDGESTYLE            = 163,
-    D3DRS_PATCHSEGMENTS             = 164,
-    D3DRS_DEBUGMONITORTOKEN         = 165,
-    D3DRS_POINTSIZE_MAX             = 166,
-    D3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
-    D3DRS_COLORWRITEENABLE          = 168,
-    D3DRS_TWEENFACTOR               = 170,
-    D3DRS_BLENDOP                   = 171,
-    D3DRS_POSITIONORDER             = 172,
-    D3DRS_NORMALORDER               = 173,
-
-    D3DRS_FORCE_DWORD               = 0x7fffffff
-} D3DRENDERSTATETYPE;
-
-typedef enum _D3DRESOURCETYPE {
-    D3DRTYPE_SURFACE                =  1,
-    D3DRTYPE_VOLUME                 =  2,
-    D3DRTYPE_TEXTURE                =  3,
-    D3DRTYPE_VOLUMETEXTURE          =  4,
-    D3DRTYPE_CUBETEXTURE            =  5,
-    D3DRTYPE_VERTEXBUFFER           =  6,
-    D3DRTYPE_INDEXBUFFER            =  7,
-
-    D3DRTYPE_FORCE_DWORD            = 0x7fffffff
-} D3DRESOURCETYPE;
-
-typedef enum _D3DSHADEMODE {
-    D3DSHADE_FLAT               = 1,
-    D3DSHADE_GOURAUD            = 2,
-    D3DSHADE_PHONG              = 3,
-
-    D3DSHADE_FORCE_DWORD        = 0x7fffffff
-} D3DSHADEMODE;
-
-typedef enum _D3DSTATEBLOCKTYPE {
-    D3DSBT_ALL           = 1,
-    D3DSBT_PIXELSTATE    = 2,
-    D3DSBT_VERTEXSTATE   = 3,
-
-    D3DSBT_FORCE_DWORD   = 0xffffffff
-} D3DSTATEBLOCKTYPE;
-
-typedef enum _D3DSTENCILOP {
-    D3DSTENCILOP_KEEP           = 1,
-    D3DSTENCILOP_ZERO           = 2,
-    D3DSTENCILOP_REPLACE        = 3,
-    D3DSTENCILOP_INCRSAT        = 4,
-    D3DSTENCILOP_DECRSAT        = 5,
-    D3DSTENCILOP_INVERT         = 6,
-    D3DSTENCILOP_INCR           = 7,
-    D3DSTENCILOP_DECR           = 8,
-
-    D3DSTENCILOP_FORCE_DWORD    = 0x7fffffff
-} D3DSTENCILOP;
-
-typedef enum _D3DSWAPEFFECT {
-    D3DSWAPEFFECT_DISCARD         = 1,
-    D3DSWAPEFFECT_FLIP            = 2,
-    D3DSWAPEFFECT_COPY            = 3,
-    D3DSWAPEFFECT_COPY_VSYNC      = 4,
-
-    D3DSWAPEFFECT_FORCE_DWORD     = 0xFFFFFFFF
-} D3DSWAPEFFECT;
-
-typedef enum _D3DTEXTUREADDRESS {
-    D3DTADDRESS_WRAP            = 1,
-    D3DTADDRESS_MIRROR          = 2,
-    D3DTADDRESS_CLAMP           = 3,
-    D3DTADDRESS_BORDER          = 4,
-    D3DTADDRESS_MIRRORONCE      = 5,
-
-    D3DTADDRESS_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTUREADDRESS;
-
-typedef enum _D3DTEXTUREFILTERTYPE {
-    D3DTEXF_NONE            = 0,
-    D3DTEXF_POINT           = 1,
-    D3DTEXF_LINEAR          = 2,
-    D3DTEXF_ANISOTROPIC     = 3,
-    D3DTEXF_FLATCUBIC       = 4,
-    D3DTEXF_GAUSSIANCUBIC   = 5,
-
-    D3DTEXF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTUREFILTERTYPE;
-
-typedef enum _D3DTEXTUREOP {
-    D3DTOP_DISABLE                   =  1,
-    D3DTOP_SELECTARG1                =  2,
-    D3DTOP_SELECTARG2                =  3,
-    D3DTOP_MODULATE                  =  4,
-    D3DTOP_MODULATE2X                =  5,
-    D3DTOP_MODULATE4X                =  6,
-    D3DTOP_ADD                       =  7,
-    D3DTOP_ADDSIGNED                 =  8,
-    D3DTOP_ADDSIGNED2X               =  9,
-    D3DTOP_SUBTRACT                  = 10,
-    D3DTOP_ADDSMOOTH                 = 11,
-    D3DTOP_BLENDDIFFUSEALPHA         = 12,
-    D3DTOP_BLENDTEXTUREALPHA         = 13,
-    D3DTOP_BLENDFACTORALPHA          = 14,
-    D3DTOP_BLENDTEXTUREALPHAPM       = 15,
-    D3DTOP_BLENDCURRENTALPHA         = 16,
-    D3DTOP_PREMODULATE               = 17,
-    D3DTOP_MODULATEALPHA_ADDCOLOR    = 18,
-    D3DTOP_MODULATECOLOR_ADDALPHA    = 19,
-    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
-    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
-    D3DTOP_BUMPENVMAP                = 22,
-    D3DTOP_BUMPENVMAPLUMINANCE       = 23,
-    D3DTOP_DOTPRODUCT3               = 24,
-    D3DTOP_MULTIPLYADD               = 25,
-    D3DTOP_LERP                      = 26,
-
-    D3DTOP_FORCE_DWORD               = 0x7fffffff,
-} D3DTEXTUREOP;
-
-typedef enum _D3DTEXTURESTAGESTATETYPE {
-    D3DTSS_COLOROP               =  1,
-    D3DTSS_COLORARG1             =  2,
-    D3DTSS_COLORARG2             =  3,
-    D3DTSS_ALPHAOP               =  4,
-    D3DTSS_ALPHAARG1             =  5,
-    D3DTSS_ALPHAARG2             =  6,
-    D3DTSS_BUMPENVMAT00          =  7,
-    D3DTSS_BUMPENVMAT01          =  8,
-    D3DTSS_BUMPENVMAT10          =  9,
-    D3DTSS_BUMPENVMAT11          = 10,
-    D3DTSS_TEXCOORDINDEX         = 11,
-    D3DTSS_ADDRESSU              = 13,
-    D3DTSS_ADDRESSV              = 14,
-    D3DTSS_BORDERCOLOR           = 15,
-    D3DTSS_MAGFILTER             = 16,
-    D3DTSS_MINFILTER             = 17,
-    D3DTSS_MIPFILTER             = 18,
-    D3DTSS_MIPMAPLODBIAS         = 19,
-    D3DTSS_MAXMIPLEVEL           = 20,
-    D3DTSS_MAXANISOTROPY         = 21,
-    D3DTSS_BUMPENVLSCALE         = 22,
-    D3DTSS_BUMPENVLOFFSET        = 23,
-    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
-    D3DTSS_ADDRESSW              = 25,
-    D3DTSS_COLORARG0             = 26,
-    D3DTSS_ALPHAARG0             = 27,
-    D3DTSS_RESULTARG             = 28,
-
-    D3DTSS_FORCE_DWORD           = 0x7fffffff
-} D3DTEXTURESTAGESTATETYPE;
-
-typedef enum _D3DTEXTURETRANSFORMFLAGS {
-    D3DTTFF_DISABLE         =   0,
-    D3DTTFF_COUNT1          =   1,
-    D3DTTFF_COUNT2          =   2,
-    D3DTTFF_COUNT3          =   3,
-    D3DTTFF_COUNT4          =   4,
-    D3DTTFF_PROJECTED       = 256,
-
-    D3DTTFF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTURETRANSFORMFLAGS;
-
-typedef enum _D3DTRANSFORMSTATETYPE {
-    D3DTS_VIEW            =  2,
-    D3DTS_PROJECTION      =  3,
-    D3DTS_TEXTURE0        = 16,
-    D3DTS_TEXTURE1        = 17,
-    D3DTS_TEXTURE2        = 18,
-    D3DTS_TEXTURE3        = 19,
-    D3DTS_TEXTURE4        = 20,
-    D3DTS_TEXTURE5        = 21,
-    D3DTS_TEXTURE6        = 22,
-    D3DTS_TEXTURE7        = 23,
-
-    D3DTS_FORCE_DWORD     = 0x7fffffff
-} D3DTRANSFORMSTATETYPE;
-
-typedef enum _D3DVERTEXBLENDFLAGS {
-    D3DVBF_DISABLE  =   0,
-    D3DVBF_1WEIGHTS =   1,
-    D3DVBF_2WEIGHTS =   2,
-    D3DVBF_3WEIGHTS =   3,
-    D3DVBF_TWEENING = 255,
-    D3DVBF_0WEIGHTS = 256
-} D3DVERTEXBLENDFLAGS;
-
-typedef enum _D3DZBUFFERTYPE {
-    D3DZB_FALSE                 = 0,
-    D3DZB_TRUE                  = 1,
-    D3DZB_USEW                  = 2,
-
-    D3DZB_FORCE_DWORD           = 0x7fffffff
-} D3DZBUFFERTYPE;
-
-
-/*****************************************************************************
- * Direct 3D v8 typedefs
- */
-typedef DWORD D3DCOLOR;
-
-/*****************************************************************************
- * Direct 3D v8 structures
- */
-typedef struct _D3DADAPTER_IDENTIFIER8 {
-    char            Driver[MAX_DEVICE_IDENTIFIER_STRING];
-    char            Description[MAX_DEVICE_IDENTIFIER_STRING];
-
-    LARGE_INTEGER   DriverVersion;
-    DWORD           VendorId;
-    DWORD           DeviceId;
-    DWORD           SubSysId;
-    DWORD           Revision;
-
-    GUID            DeviceIdentifier;
-
-    DWORD           WHQLLevel;
-} D3DADAPTER_IDENTIFIER8;
-
-typedef struct _D3DBOX {
-    UINT                Left;
-    UINT                Top;
-    UINT                Right;
-    UINT                Bottom;
-    UINT                Front;
-    UINT                Back;
-} D3DBOX;
-
-typedef struct _D3DCLIPSTATUS8 {
-   DWORD ClipUnion;
-   DWORD ClipIntersection;
-} D3DCLIPSTATUS8;
-
-typedef struct _D3DCOLORVALUE {
-    float r;
-    float g;
-    float b;
-    float a;
-} D3DCOLORVALUE;
-
-typedef struct _D3DDEVICE_CREATION_PARAMETERS {
-    UINT          AdapterOrdinal;
-    D3DDEVTYPE    DeviceType;
-    HWND          hFocusWindow;
-    DWORD         BehaviorFlags;
-} D3DDEVICE_CREATION_PARAMETERS;
-
-typedef struct _D3DDISPLAYMODE {
-    UINT            Width;
-    UINT            Height;
-    UINT            RefreshRate;
-    D3DFORMAT       Format;
-} D3DDISPLAYMODE;
-
-typedef struct _D3DGAMMARAMP {
-    WORD                red  [256];
-    WORD                green[256];
-    WORD                blue [256];
-} D3DGAMMARAMP;
-
-typedef struct _D3DINDEXBUFFER_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-} D3DINDEXBUFFER_DESC;
-
-#ifndef D3DVECTOR_DEFINED
-typedef struct _D3DVECTOR {
-    float x;
-    float y;
-    float z;
-} D3DVECTOR;
-#define D3DVECTOR_DEFINED
-#endif
-
-typedef struct _D3DLIGHT8 {
-    D3DLIGHTTYPE    Type;
-    D3DCOLORVALUE   Diffuse;
-    D3DCOLORVALUE   Specular;
-    D3DCOLORVALUE   Ambient;
-    D3DVECTOR       Position;
-    D3DVECTOR       Direction;
-    float           Range;
-    float           Falloff;
-    float           Attenuation0;
-    float           Attenuation1;
-    float           Attenuation2;
-    float           Theta;
-    float           Phi;
-} D3DLIGHT8;
-
-typedef struct _D3DLINEPATTERN {
-    WORD    wRepeatFactor;
-    WORD    wLinePattern;
-} D3DLINEPATTERN;
-
-typedef struct _D3DLOCKED_BOX {
-    INT                 RowPitch;
-    INT                 SlicePitch;
-    void*               pBits;
-} D3DLOCKED_BOX;
-
-typedef struct _D3DLOCKED_RECT {
-    INT                 Pitch;
-    void*               pBits;
-} D3DLOCKED_RECT;
-
-typedef struct _D3DMATERIAL8 {
-    D3DCOLORVALUE   Diffuse;
-    D3DCOLORVALUE   Ambient;
-    D3DCOLORVALUE   Specular;
-    D3DCOLORVALUE   Emissive;
-    float           Power;
-} D3DMATERIAL8;
-
-typedef struct _D3DMATRIX {
-    union {
-        struct {
-            float        _11, _12, _13, _14;
-            float        _21, _22, _23, _24;
-            float        _31, _32, _33, _34;
-            float        _41, _42, _43, _44;
-        } DUMMYSTRUCTNAME;
-        float m[4][4];
-    } DUMMYUNIONNAME;
-} D3DMATRIX;
-
-typedef struct _D3DPRESENT_PARAMETERS_ {
-    UINT                    BackBufferWidth;
-    UINT                    BackBufferHeight;
-    D3DFORMAT               BackBufferFormat;
-    UINT                    BackBufferCount;
-
-    D3DMULTISAMPLE_TYPE     MultiSampleType;
-
-    D3DSWAPEFFECT           SwapEffect;
-    HWND                    hDeviceWindow;
-    BOOL                    Windowed;
-    BOOL                    EnableAutoDepthStencil;
-    D3DFORMAT               AutoDepthStencilFormat;
-    DWORD                   Flags;
-
-    UINT                    FullScreen_RefreshRateInHz;
-    UINT                    FullScreen_PresentationInterval;
-
-} D3DPRESENT_PARAMETERS;
-
-#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER  0x00000001
-
-typedef struct _D3DRANGE {
-    UINT                Offset;
-    UINT                Size;
-} D3DRANGE;
-
-typedef struct _D3DRASTER_STATUS {
-    BOOL            InVBlank;
-    UINT            ScanLine;
-} D3DRASTER_STATUS;
-
-typedef struct _D3DRECT {
-    LONG x1;
-    LONG y1;
-    LONG x2;
-    LONG y2;
-} D3DRECT;
-
-typedef struct _D3DRECTPATCH_INFO {
-    UINT                StartVertexOffsetWidth;
-    UINT                StartVertexOffsetHeight;
-    UINT                Width;
-    UINT                Height;
-    UINT                Stride;
-    D3DBASISTYPE        Basis;
-    D3DORDERTYPE        Order;
-} D3DRECTPATCH_INFO;
-
-typedef struct _D3DSURFACE_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-    D3DMULTISAMPLE_TYPE MultiSampleType;
-    UINT                Width;
-    UINT                Height;
-} D3DSURFACE_DESC;
-
-typedef struct _D3DTRIPATCH_INFO {
-    UINT                StartVertexOffset;
-    UINT                NumVertices;
-    D3DBASISTYPE        Basis;
-    D3DORDERTYPE        Order;
-} D3DTRIPATCH_INFO;
-
-typedef struct _D3DVERTEXBUFFER_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-    DWORD               FVF;
-} D3DVERTEXBUFFER_DESC;
-
-typedef struct _D3DVIEWPORT8 {
-    DWORD       X;
-    DWORD       Y;
-    DWORD       Width;
-    DWORD       Height;
-    float       MinZ;
-    float       MaxZ;
-} D3DVIEWPORT8;
-
-typedef struct _D3DVOLUME_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-    UINT                Width;
-    UINT                Height;
-    UINT                Depth;
-} D3DVOLUME_DESC;
-
-#endif  /* __WINE_D3D8TYPES_H */
diff --git a/misc/builddeps/win32/dx/include/d3d9.h b/misc/builddeps/win32/dx/include/d3d9.h
deleted file mode 100644 (file)
index 3f9ebf2..0000000
+++ /dev/null
@@ -1,2031 +0,0 @@
-/*
- * Copyright (C) 2002-2003 Jason Edmeades
- *                         Raphael Junqueira
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D9_H
-#define __WINE_D3D9_H
-
-#ifndef DIRECT3D_VERSION
-#define DIRECT3D_VERSION  0x0900
-#endif
-
-#include <stdlib.h>
-
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-
-#ifndef __WINESRC__
-# include <windows.h>
-#endif
-
-#include <d3d9types.h>
-#include <d3d9caps.h>
-
-/*****************************************************************************
- * Behavior Flags for IDirect3D8::CreateDevice
- */
-#define D3DCREATE_FPU_PRESERVE                  0x00000002L
-#define D3DCREATE_MULTITHREADED                 0x00000004L
-#define D3DCREATE_PUREDEVICE                    0x00000010L
-#define D3DCREATE_SOFTWARE_VERTEXPROCESSING     0x00000020L
-#define D3DCREATE_HARDWARE_VERTEXPROCESSING     0x00000040L
-#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L
-#define D3DCREATE_DISABLE_DRIVER_MANAGEMENT     0x00000100L
-#define D3DCREATE_ADAPTERGROUP_DEVICE           0x00000200L
-
-/*****************************************************************************
- * Flags for SetPrivateData
- */
-#define D3DSPD_IUNKNOWN                         0x00000001L
-
-
-/*****************************************************************************
- * #defines and error codes
- */
-#define D3D_SDK_VERSION                         32
-#define D3DADAPTER_DEFAULT                      0
-#define D3DENUM_NO_WHQL_LEVEL                   0x00000002L
-#define D3DPRESENT_BACK_BUFFERS_MAX             3L
-#define D3DSGR_NO_CALIBRATION                   0x00000000L
-#define D3DSGR_CALIBRATE                        0x00000001L
-
-#define _FACD3D  0x876
-#define MAKE_D3DHRESULT( code )                 MAKE_HRESULT( 1, _FACD3D, code )
-#define MAKE_D3DSTATUS( code )                  MAKE_HRESULT( 0, _FACD3D, code )
-
-/*****************************************************************************
- * Direct3D Errors
- */
-#define D3D_OK                                  S_OK
-#define D3DERR_WRONGTEXTUREFORMAT               MAKE_D3DHRESULT(2072)
-#define D3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_D3DHRESULT(2073)
-#define D3DERR_UNSUPPORTEDCOLORARG              MAKE_D3DHRESULT(2074)
-#define D3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_D3DHRESULT(2075)
-#define D3DERR_UNSUPPORTEDALPHAARG              MAKE_D3DHRESULT(2076)
-#define D3DERR_TOOMANYOPERATIONS                MAKE_D3DHRESULT(2077)
-#define D3DERR_CONFLICTINGTEXTUREFILTER         MAKE_D3DHRESULT(2078)
-#define D3DERR_UNSUPPORTEDFACTORVALUE           MAKE_D3DHRESULT(2079)
-#define D3DERR_CONFLICTINGRENDERSTATE           MAKE_D3DHRESULT(2081)
-#define D3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_D3DHRESULT(2082)
-#define D3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_D3DHRESULT(2086)
-#define D3DERR_DRIVERINTERNALERROR              MAKE_D3DHRESULT(2087)
-#define D3DERR_NOTFOUND                         MAKE_D3DHRESULT(2150)
-#define D3DERR_MOREDATA                         MAKE_D3DHRESULT(2151)
-#define D3DERR_DEVICELOST                       MAKE_D3DHRESULT(2152)
-#define D3DERR_DEVICENOTRESET                   MAKE_D3DHRESULT(2153)
-#define D3DERR_NOTAVAILABLE                     MAKE_D3DHRESULT(2154)
-#define D3DERR_OUTOFVIDEOMEMORY                 MAKE_D3DHRESULT(380)
-#define D3DERR_INVALIDDEVICE                    MAKE_D3DHRESULT(2155)
-#define D3DERR_INVALIDCALL                      MAKE_D3DHRESULT(2156)
-#define D3DERR_DRIVERINVALIDCALL                MAKE_D3DHRESULT(2157)
-#define D3DERR_WASSTILLDRAWING                  MAKE_D3DHRESULT(540)
-#define D3DOK_NOAUTOGEN                         MAKE_D3DSTATUS(2159)
-
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID(IID_IDirect3D9,                   0x81BDCBCA, 0x64D4, 0x426D, 0xAE, 0x8D, 0xAD, 0x1, 0x47, 0xF4, 0x27, 0x5C);
-typedef struct IDirect3D9 *LPDIRECT3D9, *PDIRECT3D9;
-
-DEFINE_GUID(IID_IDirect3D9Ex,                 0x02177241, 0x69FC, 0x400C, 0x8F, 0xF1, 0x93, 0xA4, 0x4D, 0xF6, 0x86, 0x1D);
-typedef struct IDirect3D9Ex *LPDIRECT3D9EX, *PDIRECT3D9EX;
-
-DEFINE_GUID(IID_IDirect3DDevice9,             0xd0223b96, 0xbf7a, 0x43fd, 0x92, 0xbd, 0xa4, 0x3b, 0xd, 0x82, 0xb9, 0xeb);
-typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9;
-
-DEFINE_GUID(IID_IDirect3DDevice9Ex,           0xb18b10ce, 0x2649, 0x405a, 0x87, 0xf, 0x95, 0xf7, 0x77, 0xd4, 0x31, 0x3a);
-typedef struct IDirect3DDevice9Ex *LPDIRECT3DDEVICE9EX, *PDIRECT3DDEVICE9EX;
-
-DEFINE_GUID(IID_IDirect3DResource9,           0x5eec05d, 0x8f7d, 0x4362, 0xb9, 0x99, 0xd1, 0xba, 0xf3, 0x57, 0xc7, 0x4);
-typedef struct IDirect3DResource9 *LPDIRECT3DRESOURCE9, *PDIRECT3DRESOURCE9;
-
-DEFINE_GUID(IID_IDirect3DVertexBuffer9,       0xb64bb1b5, 0xfd70, 0x4df6, 0xbf, 0x91, 0x19, 0xd0, 0xa1, 0x24, 0x55, 0xe3);
-typedef struct IDirect3DVertexBuffer9 *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;
-
-DEFINE_GUID(IID_IDirect3DVolume9,             0x24f416e6, 0x1f67, 0x4aa7, 0xb8, 0x8e, 0xd3, 0x3f, 0x6f, 0x31, 0x28, 0xa1);
-typedef struct IDirect3DVolume9 *LPDIRECT3DVOLUME9, *PDIRECT3DVOLUME9;
-
-DEFINE_GUID(IID_IDirect3DSwapChain9,          0x794950f2, 0xadfc, 0x458a, 0x90, 0x5e, 0x10, 0xa1, 0xb, 0xb, 0x50, 0x3b);
-typedef struct IDirect3DSwapChain9 *LPDIRECT3DSWAPCHAIN9, *PDIRECT3DSWAPCHAIN9;
-
-DEFINE_GUID(IID_IDirect3DSwapChain9Ex,        0x91886caf, 0x1c3d, 0x4d2e, 0xa0, 0xab, 0x3e, 0x4c, 0x7d, 0x8d, 0x33, 0x3);
-typedef struct IDirect3DSwapChain9Ex *LPDIRECT3DSWAPCHAIN9EX, *PDIRECT3DSWAPCHAIN9EX;
-
-DEFINE_GUID(IID_IDirect3DSurface9,            0xcfbaf3a, 0x9ff6, 0x429a, 0x99, 0xb3, 0xa2, 0x79, 0x6a, 0xf8, 0xb8, 0x9b);
-typedef struct IDirect3DSurface9 *LPDIRECT3DSURFACE9, *PDIRECT3DSURFACE9;
-
-DEFINE_GUID(IID_IDirect3DIndexBuffer9,        0x7c9dd65e, 0xd3f7, 0x4529, 0xac, 0xee, 0x78, 0x58, 0x30, 0xac, 0xde, 0x35);
-typedef struct IDirect3DIndexBuffer9 *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;
-
-DEFINE_GUID(IID_IDirect3DBaseTexture9,        0x580ca87e, 0x1d3c, 0x4d54, 0x99, 0x1d, 0xb7, 0xd3, 0xe3, 0xc2, 0x98, 0xce);
-typedef struct IDirect3DBaseTexture9 *LPDIRECT3DBASETEXTURE9, *PDIRECT3DBASETEXTURE9;
-
-DEFINE_GUID(IID_IDirect3DTexture9,            0x85c31227, 0x3de5, 0x4f00, 0x9b, 0x3a, 0xf1, 0x1a, 0xc3, 0x8c, 0x18, 0xb5);
-typedef struct IDirect3DTexture9 *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;
-
-DEFINE_GUID(IID_IDirect3DCubeTexture9,        0xfff32f81, 0xd953, 0x473a, 0x92, 0x23, 0x93, 0xd6, 0x52, 0xab, 0xa9, 0x3f);
-typedef struct IDirect3DCubeTexture9 *LPDIRECT3DCUBETEXTURE9, *PDIRECT3DCUBETEXTURE9;
-
-DEFINE_GUID(IID_IDirect3DVolumeTexture9,      0x2518526c, 0xe789, 0x4111, 0xa7, 0xb9, 0x47, 0xef, 0x32, 0x8d, 0x13, 0xe6);
-typedef struct IDirect3DVolumeTexture9 *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;
-
-DEFINE_GUID(IID_IDirect3DVertexDeclaration9,  0xdd13c59c, 0x36fa, 0x4098, 0xa8, 0xfb, 0xc7, 0xed, 0x39, 0xdc, 0x85, 0x46);
-typedef struct IDirect3DVertexDeclaration9 *LPDIRECT3DVERTEXDECLARATION9;
-
-DEFINE_GUID(IID_IDirect3DVertexShader9,       0xefc5557e, 0x6265, 0x4613, 0x8a, 0x94, 0x43, 0x85, 0x78, 0x89, 0xeb, 0x36);
-typedef struct IDirect3DVertexShader9 *LPDIRECT3DVERTEXSHADER9;
-
-DEFINE_GUID(IID_IDirect3DPixelShader9,        0x6d3bdbdc, 0x5b02, 0x4415, 0xb8, 0x52, 0xce, 0x5e, 0x8b, 0xcc, 0xb2, 0x89);
-typedef struct IDirect3DPixelShader9 *LPDIRECT3DPIXELSHADER9;
-
-DEFINE_GUID(IID_IDirect3DStateBlock9,         0xb07c4fe5, 0x310d, 0x4ba8, 0xa2, 0x3c, 0x4f, 0xf, 0x20, 0x6f, 0x21, 0x8b);
-typedef struct IDirect3DStateBlock9 *LPDIRECT3DSTATEBLOCK9;
-
-DEFINE_GUID(IID_IDirect3DQuery9,              0xd9771460, 0xa695, 0x4f26, 0xbb, 0xd3, 0x27, 0xb8, 0x40, 0xb5, 0x41, 0xcc);
-typedef struct IDirect3DQuery9 *LPDIRECT3DQUERY9, *PDIRECT3DQUERY9;
-
-/*****************************************************************************
- * IDirect3D9 interface
- */
-#undef INTERFACE
-#define INTERFACE IDirect3D9
-DECLARE_INTERFACE_(IDirect3D9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D9 methods ***/
-    STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
-    STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
-    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) PURE;
-    STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter, D3DFORMAT Format) PURE;
-    STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(CheckDeviceType)(THIS_ UINT iAdapter, D3DDEVTYPE DevType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed) PURE;
-    STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) PURE;
-    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels) PURE;
-    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) PURE;
-    STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) PURE;
-    STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
-    STDMETHOD(CreateDevice)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, struct IDirect3DDevice9** ppReturnedDeviceInterface) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D9_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D9_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D9 methods ***/
-#define IDirect3D9_RegisterSoftwareDevice(p,a)                (p)->lpVtbl->RegisterSoftwareDevice(p,a)
-#define IDirect3D9_GetAdapterCount(p)                         (p)->lpVtbl->GetAdapterCount(p)
-#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)              (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
-#define IDirect3D9_GetAdapterModeCount(p,a,b)                 (p)->lpVtbl->GetAdapterModeCount(p,a,b)
-#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
-#define IDirect3D9_GetAdapterDisplayMode(p,a,b)               (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
-#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)               (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
-#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
-#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
-#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
-#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
-#define IDirect3D9_GetDeviceCaps(p,a,b,c)                     (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
-#define IDirect3D9_GetAdapterMonitor(p,a)                     (p)->lpVtbl->GetAdapterMonitor(p,a)
-#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)                (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D9_AddRef(p)             (p)->AddRef()
-#define IDirect3D9_Release(p)            (p)->Release()
-/*** IDirect3D9 methods ***/
-#define IDirect3D9_RegisterSoftwareDevice(p,a)                (p)->RegisterSoftwareDevice(a)
-#define IDirect3D9_GetAdapterCount(p)                         (p)->GetAdapterCount()
-#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)              (p)->GetAdapterIdentifier(a,b,c)
-#define IDirect3D9_GetAdapterModeCount(p,a,b)                 (p)->GetAdapterModeCount(a,b)
-#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)                (p)->EnumAdapterModes(a,b,c,d)
-#define IDirect3D9_GetAdapterDisplayMode(p,a,b)               (p)->GetAdapterDisplayMode(a,b)
-#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)               (p)->CheckDeviceType(a,b,c,d,e)
-#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->CheckDeviceFormat(a,b,c,d,e,f)
-#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
-#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->CheckDepthStencilMatch(a,b,c,d,e)
-#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->CheckDeviceFormatConversion(a,b,c,d)
-#define IDirect3D9_GetDeviceCaps(p,a,b,c)                     (p)->GetDeviceCaps(a,b,c)
-#define IDirect3D9_GetAdapterMonitor(p,a)                     (p)->GetAdapterMonitor(a)
-#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)                (p)->CreateDevice(a,b,c,d,e,f)
-#endif
-
-/*****************************************************************************
- * IDirect3D9Ex interface
- */
-#define INTERFACE IDirect3D9Ex
-DECLARE_INTERFACE_(IDirect3D9Ex,IDirect3D9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D9 methods ***/
-
-    /* Note: Microsoft's d3d9.h does not declare IDirect3D9Ex::RegisterSoftwareDevice . This would mean that
-     * the offsets of the other methods in the Vtable change too. This is wrong. In Microsoft's
-     * d3d9.dll, the offsets for the other functions are still compatible with IDirect3D9.
-     * This is probably because even in MS's header IDirect3D9Ex inherits from IDirect3D9, which makes the
-     * C++ inferface compatible, and nobody uses the C interface in Windows world.
-     */
-    STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
-
-    STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
-    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) PURE;
-    STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter, D3DFORMAT Format) PURE;
-    STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(CheckDeviceType)(THIS_ UINT iAdapter, D3DDEVTYPE DevType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed) PURE;
-    STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) PURE;
-    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels) PURE;
-    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) PURE;
-    STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) PURE;
-    STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
-    STDMETHOD(CreateDevice)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, struct IDirect3DDevice9** ppReturnedDeviceInterface) PURE;
-    /*** IDirect3D9Ex methods ***/
-    STDMETHOD_(UINT, GetAdapterModeCountEx)(THIS_ UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter) PURE;
-    STDMETHOD(EnumAdapterModesEx)(THIS_ UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter, UINT Mode, D3DDISPLAYMODEEX* pMode) PURE;
-    STDMETHOD(GetAdapterDisplayModeEx)(THIS_ UINT Adapter, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation);
-    STDMETHOD(CreateDeviceEx)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, D3DDISPLAYMODEEX* pFullscreenDisplayMode, struct IDirect3DDevice9Ex **ppReturnedDeviceInterface) PURE;
-    STDMETHOD(GetAdapterLUID)(THIS_ UINT Adatper, LUID *pLUID) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D9Ex_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D9Ex_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D9Ex_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D9 methods ***/
-#define IDirect3D9Ex_RegisterSoftwareDevice(p,a)                (p)->lpVtbl->RegisterSoftwareDevice(p,a)
-#define IDirect3D9Ex_GetAdapterCount(p)                         (p)->lpVtbl->GetAdapterCount(p)
-#define IDirect3D9Ex_GetAdapterIdentifier(p,a,b,c)              (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
-#define IDirect3D9Ex_GetAdapterModeCount(p,a,b)                 (p)->lpVtbl->GetAdapterModeCount(p,a,b)
-#define IDirect3D9Ex_EnumAdapterModes(p,a,b,c,d)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
-#define IDirect3D9Ex_GetAdapterDisplayMode(p,a,b)               (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
-#define IDirect3D9Ex_CheckDeviceType(p,a,b,c,d,e)               (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
-#define IDirect3D9Ex_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
-#define IDirect3D9Ex_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
-#define IDirect3D9Ex_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
-#define IDirect3D9Ex_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
-#define IDirect3D9Ex_GetDeviceCaps(p,a,b,c)                     (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
-#define IDirect3D9Ex_GetAdapterMonitor(p,a)                     (p)->lpVtbl->GetAdapterMonitor(p,a)
-#define IDirect3D9Ex_CreateDevice(p,a,b,c,d,e,f)                (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
-/*** IDirect3D9Ex methods ***/
-#define IDirect3D9Ex_GetAdapterModeCountEx(p,a,b)               (p)->lpVtbl->GetAdapterModeCountEx(p,a,b)
-#define IDirect3D9Ex_EnumAdapterModesEx(p,a,b,c,d)              (p)->lpVtbl->EnumAdapterModesEx(p,a,b,c,d)
-#define IDirect3D9Ex_GetAdapterDisplayModeEx(p,a,b,c)           (p)->lpVtbl->GetAdapterDisplayModeEx(p,a,b,c)
-#define IDirect3D9Ex_CreateDeviceEx(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d,e,f,g)
-#define IDirect3D9Ex_GetAdapterLUID(p,a,b)                      (p)->lpVtbl->GetAdapterLUID(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D9Ex_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D9Ex_AddRef(p)             (p)->AddRef()
-#define IDirect3D9Ex_Release(p)            (p)->Release()
-/*** IDirect3D9 methods ***/
-#define IDirect3D9Ex_RegisterSoftwareDevice(p,a)                (p)->RegisterSoftwareDevice(a)
-#define IDirect3D9Ex_GetAdapterCount(p)                         (p)->GetAdapterCount()
-#define IDirect3D9Ex_GetAdapterIdentifier(p,a,b,c)              (p)->GetAdapterIdentifier(a,b,c)
-#define IDirect3D9Ex_GetAdapterModeCount(p,a,b)                 (p)->GetAdapterModeCount(a,b)
-#define IDirect3D9Ex_EnumAdapterModes(p,a,b,c,d)                (p)->EnumAdapterModes(a,b,c,d)
-#define IDirect3D9Ex_GetAdapterDisplayMode(p,a,b)               (p)->GetAdapterDisplayMode(a,b)
-#define IDirect3D9Ex_CheckDeviceType(p,a,b,c,d,e)               (p)->CheckDeviceType(a,b,c,d,e)
-#define IDirect3D9Ex_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->CheckDeviceFormat(a,b,c,d,e,f)
-#define IDirect3D9Ex_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
-#define IDirect3D9Ex_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->CheckDepthStencilMatch(a,b,c,d,e)
-#define IDirect3D9Ex_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->CheckDeviceFormatConversion(a,b,c,d)
-#define IDirect3D9Ex_GetDeviceCaps(p,a,b,c)                     (p)->GetDeviceCaps(a,b,c)
-#define IDirect3D9Ex_GetAdapterMonitor(p,a)                     (p)->GetAdapterMonitor(a)
-#define IDirect3D9Ex_CreateDevice(p,a,b,c,d,e,f)                (p)->CreateDevice(a,b,c,d,e,f)
-#endif
-
-/*****************************************************************************
- * IDirect3DVolume9 interface
- */
-#define INTERFACE IDirect3DVolume9
-DECLARE_INTERFACE_(IDirect3DVolume9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVolume9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD(GetContainer)(THIS_ REFIID riid, void** ppContainer) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC* pDesc) PURE;
-    STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) PURE;
-    STDMETHOD(UnlockBox)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVolume9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVolume9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVolume9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVolume9 methods ***/
-#define IDirect3DVolume9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVolume9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVolume9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVolume9_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
-#define IDirect3DVolume9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#define IDirect3DVolume9_LockBox(p,a,b,c)             (p)->lpVtbl->LockBox(p,a,b,c)
-#define IDirect3DVolume9_UnlockBox(p)                 (p)->lpVtbl->UnlockBox(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVolume9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVolume9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVolume9_Release(p)                   (p)->Release()
-/*** IDirect3DVolume9 methods ***/
-#define IDirect3DVolume9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVolume9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVolume9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVolume9_GetContainer(p,a,b)          (p)->GetContainer(a,b)
-#define IDirect3DVolume9_GetDesc(p,a)                 (p)->GetDesc(a)
-#define IDirect3DVolume9_LockBox(p,a,b,c)             (p)->LockBox(a,b,c)
-#define IDirect3DVolume9_UnlockBox(p)                 (p)->UnlockBox()
-#endif
-
-/*****************************************************************************
- * IDirect3DSwapChain9 interface
- */
-#define INTERFACE IDirect3DSwapChain9
-DECLARE_INTERFACE_(IDirect3DSwapChain9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DSwapChain9 methods ***/
-    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion, DWORD dwFlags) PURE;
-    STDMETHOD(GetFrontBufferData)(THIS_ struct IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, struct IDirect3DSurface9** ppBackBuffer) PURE;
-    STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS* pRasterStatus) PURE;
-    STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(GetPresentParameters)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DSwapChain9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DSwapChain9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DSwapChain9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DSwapChain9 methods ***/
-#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)         (p)->lpVtbl->Present(p,a,b,c,d,e)
-#define IDirect3DSwapChain9_GetFrontBufferData(p,a)      (p)->lpVtbl->GetFrontBufferData(p,a)
-#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)       (p)->lpVtbl->GetBackBuffer(p,a,b,c)
-#define IDirect3DSwapChain9_GetRasterStatus(p,a)         (p)->lpVtbl->GetRasterStatus(p,a)
-#define IDirect3DSwapChain9_GetDisplayMode(p,a)          (p)->lpVtbl->GetDisplayMode(p,a)
-#define IDirect3DSwapChain9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->lpVtbl->GetPresentParameters(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DSwapChain9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DSwapChain9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DSwapChain9_Release(p)                   (p)->Release()
-/*** IDirect3DSwapChain9 methods ***/
-#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)         (p)->Present(a,b,c,d,e)
-#define IDirect3DSwapChain9_GetFrontBufferData(p,a)      (p)->GetFrontBufferData(a)
-#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)       (p)->GetBackBuffer(a,b,c)
-#define IDirect3DSwapChain9_GetRasterStatus(p,a)         (p)->GetRasterStatus(a)
-#define IDirect3DSwapChain9_GetDisplayMode(p,a)          (p)->GetDisplayMode(a)
-#define IDirect3DSwapChain9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->GetPresentParameters(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DResource9 interface
- */
-#define INTERFACE IDirect3DResource9
-DECLARE_INTERFACE_(IDirect3DResource9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DResource9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DResource9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DResource9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DResource9 methods ***/
-#define IDirect3DResource9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DResource9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DResource9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DResource9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DResource9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DResource9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DResource9_GetType(p)                   (p)->lpVtbl->GetType(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DResource9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DResource9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DResource9_Release(p)                   (p)->Release()
-/*** IDirect3DResource9 methods ***/
-#define IDirect3DResource9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DResource9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DResource9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DResource9_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DResource9_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DResource9_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DResource9_GetType(p)                   (p)->GetType()
-#endif
-
-/*****************************************************************************
- * IDirect3DSurface9 interface
- */
-#define INTERFACE IDirect3DSurface9
-DECLARE_INTERFACE_(IDirect3DSurface9,IDirect3DResource9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DSurface9 methods ***/
-    STDMETHOD(GetContainer)(THIS_ REFIID riid, void** ppContainer) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC* pDesc) PURE;
-    STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC* phdc) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC hdc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DSurface9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DSurface9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DSurface9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DSurface9 methods: IDirect3DResource9 ***/
-#define IDirect3DSurface9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DSurface9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DSurface9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DSurface9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DSurface9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DSurface9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DSurface9_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DSurface9 methods ***/
-#define IDirect3DSurface9_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
-#define IDirect3DSurface9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#define IDirect3DSurface9_LockRect(p,a,b,c)            (p)->lpVtbl->LockRect(p,a,b,c)
-#define IDirect3DSurface9_UnlockRect(p)                (p)->lpVtbl->UnlockRect(p)
-#define IDirect3DSurface9_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirect3DSurface9_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DSurface9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DSurface9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DSurface9_Release(p)                   (p)->Release()
-/*** IDirect3DSurface9 methods: IDirect3DResource9 ***/
-#define IDirect3DSurface9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DSurface9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DSurface9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DSurface9_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DSurface9_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DSurface9_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DSurface9_GetType(p)                   (p)->GetType()
-/*** IDirect3DSurface9 methods ***/
-#define IDirect3DSurface9_GetContainer(p,a,b)          (p)->GetContainer(a,b)
-#define IDirect3DSurface9_GetDesc(p,a)                 (p)->GetDesc(a)
-#define IDirect3DSurface9_LockRect(p,a,b,c)            (p)->LockRect(a,b,c)
-#define IDirect3DSurface9_UnlockRect(p)                (p)->UnlockRect()
-#define IDirect3DSurface9_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirect3DSurface9_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexBuffer9 interface
- */
-#define INTERFACE IDirect3DVertexBuffer9
-DECLARE_INTERFACE_(IDirect3DVertexBuffer9,IDirect3DResource9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DVertexBuffer9 methods ***/
-    STDMETHOD(Lock)(THIS_ UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC* pDesc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexBuffer9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexBuffer9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexBuffer9 methods: IDirect3DResource9 ***/
-#define IDirect3DVertexBuffer9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVertexBuffer9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVertexBuffer9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DVertexBuffer9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DVertexBuffer9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DVertexBuffer9_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DVertexBuffer9 methods ***/
-#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirect3DVertexBuffer9_Unlock(p)                    (p)->lpVtbl->Unlock(p)
-#define IDirect3DVertexBuffer9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVertexBuffer9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVertexBuffer9_Release(p)                   (p)->Release()
-/*** IDirect3DVertexBuffer9 methods: IDirect3DResource9 ***/
-#define IDirect3DVertexBuffer9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVertexBuffer9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVertexBuffer9_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DVertexBuffer9_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DVertexBuffer9_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DVertexBuffer9_GetType(p)                   (p)->GetType()
-/*** IDirect3DVertexBuffer9 methods ***/
-#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirect3DVertexBuffer9_Unlock(p)                    (p)->Unlock()
-#define IDirect3DVertexBuffer9_GetDesc(p,a)                 (p)->GetDesc(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DIndexBuffer9 interface
- */
-#define INTERFACE IDirect3DIndexBuffer9
-DECLARE_INTERFACE_(IDirect3DIndexBuffer9,IDirect3DResource9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DIndexBuffer9 methods ***/
-    STDMETHOD(Lock)(THIS_ UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC* pDesc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DIndexBuffer9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DIndexBuffer9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DIndexBuffer9 methods: IDirect3DResource9 ***/
-#define IDirect3DIndexBuffer9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DIndexBuffer9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DIndexBuffer9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DIndexBuffer9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DIndexBuffer9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DIndexBuffer9_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DIndexBuffer9 methods ***/
-#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirect3DIndexBuffer9_Unlock(p)                    (p)->lpVtbl->Unlock(p)
-#define IDirect3DIndexBuffer9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DIndexBuffer9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DIndexBuffer9_Release(p)                   (p)->Release()
-/*** IDirect3DIndexBuffer9 methods: IDirect3DResource9 ***/
-#define IDirect3DIndexBuffer9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DIndexBuffer9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DIndexBuffer9_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DIndexBuffer9_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DIndexBuffer9_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DIndexBuffer9_GetType(p)                   (p)->GetType()
-/*** IDirect3DIndexBuffer9 methods ***/
-#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirect3DIndexBuffer9_Unlock(p)                    (p)->Unlock()
-#define IDirect3DIndexBuffer9_GetDesc(p,a)                 (p)->GetDesc(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DBaseTexture9 interface
- */
-#define INTERFACE IDirect3DBaseTexture9
-DECLARE_INTERFACE_(IDirect3DBaseTexture9,IDirect3DResource9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture9 methods ***/
-    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
-    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
-    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
-    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
-    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DBaseTexture9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DBaseTexture9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DBaseTexture9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DBaseTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DBaseTexture9_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)  (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DBaseTexture9_FreePrivateData(p,a)       (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DBaseTexture9_SetPriority(p,a)           (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DBaseTexture9_GetPriority(p)             (p)->lpVtbl->GetPriority(p)
-#define IDirect3DBaseTexture9_PreLoad(p)                 (p)->lpVtbl->PreLoad(p)
-#define IDirect3DBaseTexture9_GetType(p)                 (p)->lpVtbl->GetType(p)
-/*** IDirect3DBaseTexture9 methods ***/
-#define IDirect3DBaseTexture9_SetLOD(p,a)                (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DBaseTexture9_GetLOD(p)                  (p)->lpVtbl->GetLOD(p)
-#define IDirect3DBaseTexture9_GetLevelCount(p)           (p)->lpVtbl->GetLevelCount(p)
-#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)  (p)->lpVtbl->SetAutoGenFilterType(p,a)
-#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
-#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DBaseTexture9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DBaseTexture9_AddRef(p)              (p)->AddRef()
-#define IDirect3DBaseTexture9_Release(p)             (p)->Release()
-/*** IDirect3DBaseTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DBaseTexture9_GetDevice(p,a)             (p)->GetDevice(a)
-#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)  (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
-#define IDirect3DBaseTexture9_FreePrivateData(p,a)       (p)->FreePrivateData(a)
-#define IDirect3DBaseTexture9_SetPriority(p,a)           (p)->SetPriority(a)
-#define IDirect3DBaseTexture9_GetPriority(p)             (p)->GetPriority()
-#define IDirect3DBaseTexture9_PreLoad(p)                 (p)->PreLoad()
-#define IDirect3DBaseTexture9_GetType(p)                 (p)->GetType()
-/*** IDirect3DBaseTexture9 methods ***/
-#define IDirect3DBaseTexture9_SetLOD(p,a)                (p)->SetLOD(a)
-#define IDirect3DBaseTexture9_GetLOD(p)                  (p)->GetLOD()
-#define IDirect3DBaseTexture9_GetLevelCount(p)           (p)->GetLevelCount()
-#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)  (p)->SetAutoGenFilterType(a)
-#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
-#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
-#endif
-
-/*****************************************************************************
- * IDirect3DCubeTexture9 interface
- */
-#define INTERFACE IDirect3DCubeTexture9
-DECLARE_INTERFACE_(IDirect3DCubeTexture9,IDirect3DBaseTexture9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture9 methods ***/
-    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
-    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
-    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
-    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
-    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
-    /*** IDirect3DCubeTexture9 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DSURFACE_DESC* pDesc) PURE;
-    STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level, IDirect3DSurface9** ppCubeMapSurface) PURE;
-    STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level) PURE;
-    STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES FaceType, CONST RECT* pDirtyRect) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DCubeTexture9_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DCubeTexture9_AddRef(p)                   (p)->lpVtbl->AddRef(p)
-#define IDirect3DCubeTexture9_Release(p)                  (p)->lpVtbl->Release(p)
-/*** IDirect3DCubeTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DCubeTexture9_GetDevice(p,a)              (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)   (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)     (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DCubeTexture9_FreePrivateData(p,a)        (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DCubeTexture9_SetPriority(p,a)            (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DCubeTexture9_GetPriority(p)              (p)->lpVtbl->GetPriority(p)
-#define IDirect3DCubeTexture9_PreLoad(p)                  (p)->lpVtbl->PreLoad(p)
-#define IDirect3DCubeTexture9_GetType(p)                  (p)->lpVtbl->GetType(p)
-/*** IDirect3DCubeTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DCubeTexture9_SetLOD(p,a)                 (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DCubeTexture9_GetLOD(p)                   (p)->lpVtbl->GetLOD(p)
-#define IDirect3DCubeTexture9_GetLevelCount(p)            (p)->lpVtbl->GetLevelCount(p)
-#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)   (p)->lpVtbl->SetAutoGenFilterType(p,a)
-#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)     (p)->lpVtbl->GetAutoGenFilterType(p)
-#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)     (p)->lpVtbl->GenerateMipSubLevels(p)
-/*** IDirect3DCubeTexture9 methods ***/
-#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)         (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)  (p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
-#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)       (p)->lpVtbl->LockRect(p,a,b,c,d,e)
-#define IDirect3DCubeTexture9_UnlockRect(p,a,b)           (p)->lpVtbl->UnlockRect(p,a,b)
-#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)         (p)->lpVtbl->AddDirtyRect(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DCubeTexture9_QueryInterface(p,a,b)       (p)->QueryInterface(a,b)
-#define IDirect3DCubeTexture9_AddRef(p)                   (p)->AddRef()
-#define IDirect3DCubeTexture9_Release(p)                  (p)->Release()
-/*** IDirect3DCubeTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DCubeTexture9_GetDevice(p,a)              (p)->GetDevice(a)
-#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)   (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)     (p)->GetPrivateData(a,b,c)
-#define IDirect3DCubeTexture9_FreePrivateData(p,a)        (p)->FreePrivateData(a)
-#define IDirect3DCubeTexture9_SetPriority(p,a)            (p)->SetPriority(a)
-#define IDirect3DCubeTexture9_GetPriority(p)              (p)->GetPriority()
-#define IDirect3DCubeTexture9_PreLoad(p)                  (p)->PreLoad()
-#define IDirect3DCubeTexture9_GetType(p)                  (p)->GetType()
-/*** IDirect3DCubeTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DCubeTexture9_SetLOD(p,a)                 (p)->SetLOD(a)
-#define IDirect3DCubeTexture9_GetLOD(p)                   (p)->GetLOD()
-#define IDirect3DCubeTexture9_GetLevelCount(p)            (p)->GetLevelCount()
-#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)   (p)->SetAutoGenFilterType(a)
-#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)     (p)->GetAutoGenFilterType()
-#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)     (p)->GenerateMipSubLevels()
-/*** IDirect3DCubeTexture9 methods ***/
-#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)         (p)->GetLevelDesc(a,b)
-#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)  (p)->GetCubeMapSurface(a,b,c)
-#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)       (p)->LockRect(a,b,c,d,e)
-#define IDirect3DCubeTexture9_UnlockRect(p,a,b)           (p)->UnlockRect(a,b)
-#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)         (p)->AddDirtyRect(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DTexture9 interface
- */
-#define INTERFACE IDirect3DTexture9
-DECLARE_INTERFACE_(IDirect3DTexture9,IDirect3DBaseTexture9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture9 methods ***/
-    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
-    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
-    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
-    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
-    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
-    /*** IDirect3DTexture9 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT Level, D3DSURFACE_DESC* pDesc) PURE;
-    STDMETHOD(GetSurfaceLevel)(THIS_ UINT Level, IDirect3DSurface9** ppSurfaceLevel) PURE;
-    STDMETHOD(LockRect)(THIS_ UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS_ UINT Level) PURE;
-    STDMETHOD(AddDirtyRect)(THIS_ CONST RECT* pDirtyRect) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DTexture9_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DTexture9_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IDirect3DTexture9_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IDirect3DTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DTexture9_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)  (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DTexture9_FreePrivateData(p,a)       (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DTexture9_SetPriority(p,a)           (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DTexture9_GetPriority(p)             (p)->lpVtbl->GetPriority(p)
-#define IDirect3DTexture9_PreLoad(p)                 (p)->lpVtbl->PreLoad(p)
-#define IDirect3DTexture9_GetType(p)                 (p)->lpVtbl->GetType(p)
-/*** IDirect3DTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DTexture9_SetLOD(p,a)                (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DTexture9_GetLOD(p)                  (p)->lpVtbl->GetLOD(p)
-#define IDirect3DTexture9_GetLevelCount(p)           (p)->lpVtbl->GetLevelCount(p)
-#define IDirect3DTexture9_SetAutoGenFilterType(p,a)  (p)->lpVtbl->SetAutoGenFilterType(p,a)
-#define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
-#define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
-/*** IDirect3DTexture9 methods ***/
-#define IDirect3DTexture9_GetLevelDesc(p,a,b)        (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)     (p)->lpVtbl->GetSurfaceLevel(p,a,b)
-#define IDirect3DTexture9_LockRect(p,a,b,c,d)        (p)->lpVtbl->LockRect(p,a,b,c,d)
-#define IDirect3DTexture9_UnlockRect(p,a)            (p)->lpVtbl->UnlockRect(p,a)
-#define IDirect3DTexture9_AddDirtyRect(p,a)          (p)->lpVtbl->AddDirtyRect(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DTexture9_QueryInterface(p,a,b)      (p)->QueryInterface(a,b)
-#define IDirect3DTexture9_AddRef(p)                  (p)->AddRef()
-#define IDirect3DTexture9_Release(p)                 (p)->Release()
-/*** IDirect3DTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DTexture9_GetDevice(p,a)             (p)->GetDevice(a)
-#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)  (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
-#define IDirect3DTexture9_FreePrivateData(p,a)       (p)->FreePrivateData(a)
-#define IDirect3DTexture9_SetPriority(p,a)           (p)->SetPriority(a)
-#define IDirect3DTexture9_GetPriority(p)             (p)->GetPriority()
-#define IDirect3DTexture9_PreLoad(p)                 (p)->PreLoad()
-#define IDirect3DTexture9_GetType(p)                 (p)->GetType()
-/*** IDirect3DTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DTexture9_SetLOD(p,a)                (p)->SetLOD(a)
-#define IDirect3DTexture9_GetLOD(p)                  (p)->GetLOD()
-#define IDirect3DTexture9_GetLevelCount(p)           (p)->GetLevelCount()
-#define IDirect3DTexture9_SetAutoGenFilterType(p,a)  (p)->SetAutoGenFilterType(a)
-#define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
-#define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
-/*** IDirect3DTexture9 methods ***/
-#define IDirect3DTexture9_GetLevelDesc(p,a,b)        (p)->GetLevelDesc(a,b)
-#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)     (p)->GetSurfaceLevel(a,b)
-#define IDirect3DTexture9_LockRect(p,a,b,c,d)        (p)->LockRect(a,b,c,d)
-#define IDirect3DTexture9_UnlockRect(p,a)            (p)->UnlockRect(a)
-#define IDirect3DTexture9_AddDirtyRect(p,a)          (p)->AddDirtyRect(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DVolumeTexture9 interface
- */
-#define INTERFACE IDirect3DVolumeTexture9
-DECLARE_INTERFACE_(IDirect3DVolumeTexture9,IDirect3DBaseTexture9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture9 methods ***/
-    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
-    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
-    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
-    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
-    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
-    /*** IDirect3DVolumeTexture9 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT Level, D3DVOLUME_DESC *pDesc) PURE;
-    STDMETHOD(GetVolumeLevel)(THIS_ UINT Level, IDirect3DVolume9** ppVolumeLevel) PURE;
-    STDMETHOD(LockBox)(THIS_ UINT Level, D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) PURE;
-    STDMETHOD(UnlockBox)(THIS_ UINT Level) PURE;
-    STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX* pDirtyBox) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVolumeTexture9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVolumeTexture9_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirect3DVolumeTexture9_Release(p) (p)->lpVtbl->Release(p)
-/*** IDirect3DVolumeTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DVolumeTexture9_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVolumeTexture9_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVolumeTexture9_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DVolumeTexture9_GetPriority(p) (p)->lpVtbl->GetPriority(p)
-#define IDirect3DVolumeTexture9_PreLoad(p) (p)->lpVtbl->PreLoad(p)
-#define IDirect3DVolumeTexture9_GetType(p) (p)->lpVtbl->GetType(p)
-/*** IDirect3DVolumeTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DVolumeTexture9_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DVolumeTexture9_GetLOD(p) (p)->lpVtbl->GetLOD(p)
-#define IDirect3DVolumeTexture9_GetLevelCount(p) (p)->lpVtbl->GetLevelCount(p)
-#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a) (p)->lpVtbl->SetAutoGenFilterType(p,a)
-#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p) (p)->lpVtbl->GetAutoGenFilterType(p)
-#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p) (p)->lpVtbl->GenerateMipSubLevels(p)
-/*** IDirect3DVolumeTexture9 methods ***/
-#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b) (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b) (p)->lpVtbl->GetVolumeLevel(p,a,b)
-#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d) (p)->lpVtbl->LockBox(p,a,b,c,d)
-#define IDirect3DVolumeTexture9_UnlockBox(p,a) (p)->lpVtbl->UnlockBox(p,a)
-#define IDirect3DVolumeTexture9_AddDirtyBox(p,a) (p)->lpVtbl->AddDirtyBox(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVolumeTexture9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DVolumeTexture9_AddRef(p) (p)->AddRef()
-#define IDirect3DVolumeTexture9_Release(p) (p)->Release()
-/*** IDirect3DVolumeTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DVolumeTexture9_GetDevice(p,a) (p)->GetDevice(a)
-#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
-#define IDirect3DVolumeTexture9_FreePrivateData(p,a) (p)->FreePrivateData(a)
-#define IDirect3DVolumeTexture9_SetPriority(p,a) (p)->SetPriority(a)
-#define IDirect3DVolumeTexture9_GetPriority(p) (p)->GetPriority()
-#define IDirect3DVolumeTexture9_PreLoad(p) (p)->PreLoad()
-#define IDirect3DVolumeTexture9_GetType(p) (p)->GetType()
-/*** IDirect3DVolumeTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DVolumeTexture9_SetLOD(p,a) (p)->SetLOD(a)
-#define IDirect3DVolumeTexture9_GetLOD(p) (p)->GetLOD()
-#define IDirect3DVolumeTexture9_GetLevelCount(p) (p)->GetLevelCount()
-#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a) (p)->SetAutoGenFilterType(a)
-#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p) (p)->GetAutoGenFilterType()
-#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p) (p)->GenerateMipSubLevels()
-/*** IDirect3DVolumeTexture9 methods ***/
-#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b) (p)->GetLevelDesc(a,b)
-#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b) (p)->GetVolumeLevel(a,b)
-#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d) (p)->LockBox(a,b,c,d)
-#define IDirect3DVolumeTexture9_UnlockBox(p,a) (p)->UnlockBox(a)
-#define IDirect3DVolumeTexture9_AddDirtyBox(p,a) (p)->AddDirtyBox(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexDeclaration9 interface
- */
-#define INTERFACE IDirect3DVertexDeclaration9
-DECLARE_INTERFACE_(IDirect3DVertexDeclaration9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVertexDeclaration9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9*, UINT* pNumElements) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexDeclaration9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexDeclaration9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexShader9 methods ***/
-#define IDirect3DVertexDeclaration9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)  (p)->lpVtbl->GetDeclaration(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DVertexDeclaration9_AddRef(p)              (p)->AddRef()
-#define IDirect3DVertexDeclaration9_Release(p)             (p)->Release()
-/*** IDirect3DVertexShader9 methods ***/
-#define IDirect3DVertexDeclaration9_GetDevice(p,a)         (p)->GetDevice(a)
-#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)  (p)->GetDeclaration(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexShader9 interface
- */
-#define INTERFACE IDirect3DVertexShader9
-DECLARE_INTERFACE_(IDirect3DVertexShader9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVertexShader9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexShader9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexShader9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexShader9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexShader9 methods ***/
-#define IDirect3DVertexShader9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVertexShader9_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexShader9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DVertexShader9_AddRef(p)              (p)->AddRef()
-#define IDirect3DVertexShader9_Release(p)             (p)->Release()
-/*** IDirect3DVertexShader9 methods ***/
-#define IDirect3DVertexShader9_GetDevice(p,a)         (p)->GetDevice(a)
-#define IDirect3DVertexShader9_GetFunction(p,a,b)     (p)->GetFunction(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DPixelShader9 interface
- */
-#define INTERFACE IDirect3DPixelShader9
-DECLARE_INTERFACE_(IDirect3DPixelShader9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DPixelShader9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DPixelShader9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DPixelShader9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DPixelShader9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DPixelShader9 methods ***/
-#define IDirect3DPixelShader9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DPixelShader9_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DPixelShader9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DPixelShader9_AddRef(p)              (p)->AddRef()
-#define IDirect3DPixelShader9_Release(p)             (p)->Release()
-/*** IDirect3DPixelShader9 methods ***/
-#define IDirect3DPixelShader9_GetDevice(p,a)         (p)->GetDevice(a)
-#define IDirect3DPixelShader9_GetFunction(p,a,b)     (p)->GetFunction(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DStateBlock9 interface
- */
-#define INTERFACE IDirect3DStateBlock9
-DECLARE_INTERFACE_(IDirect3DStateBlock9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DStateBlock9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(Capture)(THIS) PURE;
-    STDMETHOD(Apply)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DStateBlock9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DStateBlock9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DStateBlock9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DStateBlock9 methods ***/
-#define IDirect3DStateBlock9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DStateBlock9_Capture(p)             (p)->lpVtbl->Capture(p)
-#define IDirect3DStateBlock9_Apply(p)               (p)->lpVtbl->Apply(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DStateBlock9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DStateBlock9_AddRef(p)              (p)->AddRef()
-#define IDirect3DStateBlock9_Release(p)             (p)->Release()
-/*** IDirect3DStateBlock9 methods ***/
-#define IDirect3DStateBlock9_GetDevice(p,a)         (p)->GetDevice(a)
-#define IDirect3DStateBlock9_Capture(p)             (p)->Capture()
-#define IDirect3DStateBlock9_Apply(p)               (p)->Apply()
-#endif
-
-/*****************************************************************************
- * IDirect3DQuery9 interface
- */
-#define INTERFACE IDirect3DQuery9
-DECLARE_INTERFACE_(IDirect3DQuery9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DQuery9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD_(D3DQUERYTYPE, GetType)(THIS) PURE;
-    STDMETHOD_(DWORD, GetDataSize)(THIS) PURE;
-    STDMETHOD(Issue)(THIS_ DWORD dwIssueFlags) PURE;
-    STDMETHOD(GetData)(THIS_ void* pData, DWORD dwSize, DWORD dwGetDataFlags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DQuery9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DQuery9_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirect3DQuery9_Release(p) (p)->lpVtbl->Release(p)
-/*** IDirect3DQuery9 ***/
-#define IDirect3DQuery9_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DQuery9_GetType(p) (p)->lpVtbl->GetType(p)
-#define IDirect3DQuery9_GetDataSize(p) (p)->lpVtbl->GetDataSize(p)
-#define IDirect3DQuery9_Issue(p,a) (p)->lpVtbl->Issue(p,a)
-#define IDirect3DQuery9_GetData(p,a,b,c) (p)->lpVtbl->GetData(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DQuery9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DQuery9_AddRef(p) (p)->AddRef()
-#define IDirect3DQuery9_Release(p) (p)->Release()
-/*** IDirect3DQuery9 ***/
-#define IDirect3DQuery9_GetDevice(p,a) (p)->GetDevice(a)
-#define IDirect3DQuery9_GetType(p) (p)->GetType()
-#define IDirect3DQuery9_GetDataSize(p) (p)->GetDataSize()
-#define IDirect3DQuery9_Issue(p,a) (p)->Issue(a)
-#define IDirect3DQuery9_GetData(p,a,b,c) (p)->GetData(a,b,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DDevice9 interface
- */
-#define INTERFACE IDirect3DDevice9
-DECLARE_INTERFACE_(IDirect3DDevice9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice9 methods ***/
-    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
-    STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE;
-    STDMETHOD(EvictManagedResources)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ IDirect3D9** ppD3D9) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9* pCaps) PURE;
-    STDMETHOD(GetDisplayMode)(THIS_ UINT iSwapChain, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters) PURE;
-    STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) PURE;
-    STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y, DWORD Flags) PURE;
-    STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow) PURE;
-    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) PURE;
-    STDMETHOD(GetSwapChain)(THIS_ UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) PURE;
-    STDMETHOD_(UINT, GetNumberOfSwapChains)(THIS) PURE;
-    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
-    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) PURE;
-    STDMETHOD(GetRasterStatus)(THIS_ UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) PURE;
-    STDMETHOD(SetDialogBoxMode)(THIS_ BOOL bEnableDialogs) PURE;
-    STDMETHOD_(void, SetGammaRamp)(THIS_ UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp) PURE;
-    STDMETHOD_(void, GetGammaRamp)(THIS_ UINT iSwapChain, D3DGAMMARAMP* pRamp) PURE;
-    STDMETHOD(CreateTexture)(THIS_ UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateRenderTarget)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint) PURE;
-    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) PURE;
-    STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(GetFrontBufferData)(THIS_ UINT iSwapChain, IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter) PURE;
-    STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color) PURE;
-    STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget) PURE;
-    STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9* pNewZStencil) PURE;
-    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9** ppZStencilSurface) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE, CONST D3DMATRIX*) PURE;
-    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9* pViewport) PURE;
-    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9* pViewport) PURE;
-    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* pMaterial) PURE;
-    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9* pMaterial) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9*) PURE;
-    STDMETHOD(GetLight)(THIS_ DWORD Index, D3DLIGHT9*) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
-    STDMETHOD(GetLightEnable)(THIS_ DWORD Index, BOOL* pEnable) PURE;
-    STDMETHOD(SetClipPlane)(THIS_ DWORD Index, CONST float* pPlane) PURE;
-    STDMETHOD(GetClipPlane)(THIS_ DWORD Index, float* pPlane) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD* pValue) PURE;
-    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB) PURE;
-    STDMETHOD(BeginStateBlock)(THIS) PURE;
-    STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9** ppSB) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9* pClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9* pClipStatus) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9** ppTexture) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9* pTexture) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
-    STDMETHOD(GetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) PURE;
-    STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
-    STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber, CONST PALETTEENTRY* pEntries) PURE;
-    STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries) PURE;
-    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber) PURE;
-    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber) PURE;
-    STDMETHOD(SetScissorRect)(THIS_ CONST RECT* pRect) PURE;
-    STDMETHOD(GetScissorRect)(THIS_ RECT* pRect) PURE;
-    STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL bSoftware) PURE;
-    STDMETHOD_(BOOL, GetSoftwareVertexProcessing)(THIS) PURE;
-    STDMETHOD(SetNPatchMode)(THIS_ float nSegments) PURE;
-    STDMETHOD_(float, GetNPatchMode)(THIS) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) PURE;
-    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
-    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) PURE;
-    STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl) PURE;
-    STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9* pDecl) PURE;
-    STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9** ppDecl) PURE;
-    STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
-    STDMETHOD(GetFVF)(THIS_ DWORD* pFVF) PURE;
-    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9* pShader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9** ppShader) PURE;
-    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
-    STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
-    STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) PURE;
-    STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* OffsetInBytes, UINT* pStride) PURE;
-    STDMETHOD(SetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT Divider) PURE;
-    STDMETHOD(GetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT* Divider) PURE;
-    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9* pIndexData) PURE;
-    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9** ppIndexData) PURE;
-    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9* pShader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9** ppShader) PURE;
-    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
-    STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
-    STDMETHOD(DrawRectPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo) PURE;
-    STDMETHOD(DrawTriPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
-    STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
-    STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice9_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice9_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice9 methods ***/
-#define IDirect3DDevice9_TestCooperativeLevel(p)                       (p)->lpVtbl->TestCooperativeLevel(p)
-#define IDirect3DDevice9_GetAvailableTextureMem(p)                     (p)->lpVtbl->GetAvailableTextureMem(p)
-#define IDirect3DDevice9_EvictManagedResources(p)                      (p)->lpVtbl->EvictManagedResources(p)
-#define IDirect3DDevice9_GetDirect3D(p,a)                              (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice9_GetDeviceCaps(p,a)                            (p)->lpVtbl->GetDeviceCaps(p,a)
-#define IDirect3DDevice9_GetDisplayMode(p,a,b)                         (p)->lpVtbl->GetDisplayMode(p,a,b)
-#define IDirect3DDevice9_GetCreationParameters(p,a)                    (p)->lpVtbl->GetCreationParameters(p,a)
-#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)                  (p)->lpVtbl->SetCursorProperties(p,a,b,c)
-#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)                    (p)->lpVtbl->SetCursorPosition(p,a,b,c)
-#define IDirect3DDevice9_ShowCursor(p,a)                               (p)->lpVtbl->ShowCursor(p,a)
-#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)              (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
-#define IDirect3DDevice9_GetSwapChain(p,a,b)                           (p)->lpVtbl->GetSwapChain(p,a,b)
-#define IDirect3DDevice9_GetNumberOfSwapChains(p)                      (p)->lpVtbl->GetNumberOfSwapChains(p)
-#define IDirect3DDevice9_Reset(p,a)                                    (p)->lpVtbl->Reset(p,a)
-#define IDirect3DDevice9_Present(p,a,b,c,d)                            (p)->lpVtbl->Present(p,a,b,c,d)
-#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)                      (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
-#define IDirect3DDevice9_GetRasterStatus(p,a,b)                        (p)->lpVtbl->GetRasterStatus(p,a,b)
-#define IDirect3DDevice9_SetDialogBoxMode(p,a)                         (p)->lpVtbl->SetDialogBoxMode(p,a)
-#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)                         (p)->lpVtbl->SetGammaRamp(p,a,b,c)
-#define IDirect3DDevice9_GetGammaRamp(p,a,b)                           (p)->lpVtbl->GetGammaRamp(p,a,b)
-#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)                      (p)->lpVtbl->UpdateSurface(p,a,b,c,d)
-#define IDirect3DDevice9_UpdateTexture(p,a,b)                          (p)->lpVtbl->UpdateTexture(p,a,b)
-#define IDirect3DDevice9_GetRenderTargetData(p,a,b)                    (p)->lpVtbl->GetRenderTargetData(p,a,b)
-#define IDirect3DDevice9_GetFrontBufferData(p,a,b)                     (p)->lpVtbl->GetFrontBufferData(p,a,b)
-#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)                      (p)->lpVtbl->StretchRect(p,a,b,c,d,e)
-#define IDirect3DDevice9_ColorFill(p,a,b,c)                            (p)->lpVtbl->ColorFill(p,a,b,c)
-#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_SetRenderTarget(p,a,b)                        (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice9_GetRenderTarget(p,a,b)                        (p)->lpVtbl->GetRenderTarget(p,a,b)
-#define IDirect3DDevice9_SetDepthStencilSurface(p,a)                   (p)->lpVtbl->SetDepthStencilSurface(p,a)
-#define IDirect3DDevice9_GetDepthStencilSurface(p,a)                   (p)->lpVtbl->GetDepthStencilSurface(p,a)
-#define IDirect3DDevice9_BeginScene(p)                                 (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice9_EndScene(p)                                   (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)                          (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_SetTransform(p,a,b)                           (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice9_GetTransform(p,a,b)                           (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice9_MultiplyTransform(p,a,b)                      (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice9_SetViewport(p,a)                              (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DDevice9_GetViewport(p,a)                              (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DDevice9_SetMaterial(p,a)                              (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DDevice9_GetMaterial(p,a)                              (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DDevice9_SetLight(p,a,b)                               (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DDevice9_GetLight(p,a,b)                               (p)->lpVtbl->GetLight(p,a,b)
-#define IDirect3DDevice9_LightEnable(p,a,b)                            (p)->lpVtbl->LightEnable(p,a,b)
-#define IDirect3DDevice9_GetLightEnable(p,a,b)                         (p)->lpVtbl->GetLightEnable(p,a,b)
-#define IDirect3DDevice9_SetClipPlane(p,a,b)                           (p)->lpVtbl->SetClipPlane(p,a,b)
-#define IDirect3DDevice9_GetClipPlane(p,a,b)                           (p)->lpVtbl->GetClipPlane(p,a,b)
-#define IDirect3DDevice9_SetRenderState(p,a,b)                         (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice9_GetRenderState(p,a,b)                         (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice9_CreateStateBlock(p,a,b)                       (p)->lpVtbl->CreateStateBlock(p,a,b)
-#define IDirect3DDevice9_BeginStateBlock(p)                            (p)->lpVtbl->BeginStateBlock(p)
-#define IDirect3DDevice9_EndStateBlock(p,a)                            (p)->lpVtbl->EndStateBlock(p,a)
-#define IDirect3DDevice9_SetClipStatus(p,a)                            (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice9_GetClipStatus(p,a)                            (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice9_GetTexture(p,a,b)                             (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice9_SetTexture(p,a,b)                             (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)                 (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)                 (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice9_GetSamplerState(p,a,b,c)                      (p)->lpVtbl->GetSamplerState(p,a,b,c)
-#define IDirect3DDevice9_SetSamplerState(p,a,b,c)                      (p)->lpVtbl->SetSamplerState(p,a,b,c)
-#define IDirect3DDevice9_ValidateDevice(p,a)                           (p)->lpVtbl->ValidateDevice(p,a)
-#define IDirect3DDevice9_SetPaletteEntries(p,a,b)                      (p)->lpVtbl->SetPaletteEntries(p,a,b)
-#define IDirect3DDevice9_GetPaletteEntries(p,a,b)                      (p)->lpVtbl->GetPaletteEntries(p,a,b)
-#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)                 (p)->lpVtbl->SetCurrentTexturePalette(p,a)
-#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)                 (p)->lpVtbl->GetCurrentTexturePalette(p,a)
-#define IDirect3DDevice9_SetScissorRect(p,a)                           (p)->lpVtbl->SetScissorRect(p,a)
-#define IDirect3DDevice9_GetScissorRect(p,a)                           (p)->lpVtbl->GetScissorRect(p,a)
-#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)              (p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
-#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)                (p)->lpVtbl->GetSoftwareVertexProcessing(p)
-#define IDirect3DDevice9_SetNPatchMode(p,a)                            (p)->lpVtbl->SetNPatchMode(p,a)
-#define IDirect3DDevice9_GetNPatchMode(p)                              (p)->lpVtbl->GetNPatchMode(p)
-#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)                        (p)->lpVtbl->DrawPrimitive(p,a,b,c)
-#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)                    (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
-#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)                (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)                (p)->lpVtbl->CreateVertexDeclaration(p,a,b)
-#define IDirect3DDevice9_SetVertexDeclaration(p,a)                     (p)->lpVtbl->SetVertexDeclaration(p,a)
-#define IDirect3DDevice9_GetVertexDeclaration(p,a)                     (p)->lpVtbl->GetVertexDeclaration(p,a)
-#define IDirect3DDevice9_SetFVF(p,a)                                   (p)->lpVtbl->SetFVF(p,a)
-#define IDirect3DDevice9_GetFVF(p,a)                                   (p)->lpVtbl->GetFVF(p,a)
-#define IDirect3DDevice9_CreateVertexShader(p,a,b)                     (p)->lpVtbl->CreateVertexShader(p,a,b)
-#define IDirect3DDevice9_SetVertexShader(p,a)                          (p)->lpVtbl->SetVertexShader(p,a)
-#define IDirect3DDevice9_GetVertexShader(p,a)                          (p)->lpVtbl->GetVertexShader(p,a)
-#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
-#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
-#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->SetStreamSourceFreq(p,a,b)
-#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->GetStreamSourceFreq(p,a,b)
-#define IDirect3DDevice9_SetIndices(p,a)                               (p)->lpVtbl->SetIndices(p,a)
-#define IDirect3DDevice9_GetIndices(p,a)                               (p)->lpVtbl->GetIndices(p,a)
-#define IDirect3DDevice9_CreatePixelShader(p,a,b)                      (p)->lpVtbl->CreatePixelShader(p,a,b)
-#define IDirect3DDevice9_SetPixelShader(p,a)                           (p)->lpVtbl->SetPixelShader(p,a)
-#define IDirect3DDevice9_GetPixelShader(p,a)                           (p)->lpVtbl->GetPixelShader(p,a)
-#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)                        (p)->lpVtbl->DrawRectPatch(p,a,b,c)
-#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)                         (p)->lpVtbl->DrawTriPatch(p,a,b,c)
-#define IDirect3DDevice9_DeletePatch(p,a)                              (p)->lpVtbl->DeletePatch(p,a)
-#define IDirect3DDevice9_CreateQuery(p,a,b)                            (p)->lpVtbl->CreateQuery(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice9_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice9_Release(p)            (p)->Release()
-/*** IDirect3DDevice9 methods ***/
-#define IDirect3DDevice9_TestCooperativeLevel(p)                       (p)->TestCooperativeLevel()
-#define IDirect3DDevice9_GetAvailableTextureMem(p)                     (p)->GetAvailableTextureMem()
-#define IDirect3DDevice9_EvictManagedResources(p)                      (p)->EvictManagedResources()
-#define IDirect3DDevice9_GetDirect3D(p,a)                              (p)->GetDirect3D(a)
-#define IDirect3DDevice9_GetDeviceCaps(p,a)                            (p)->GetDeviceCaps(a)
-#define IDirect3DDevice9_GetDisplayMode(p,a,b)                         (p)->GetDisplayMode(a,b)
-#define IDirect3DDevice9_GetCreationParameters(p,a)                    (p)->GetCreationParameters(a)
-#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)                  (p)->SetCursorProperties(a,b,c)
-#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)                    (p)->SetCursorPosition(a,b,c)
-#define IDirect3DDevice9_ShowCursor(p,a)                               (p)->ShowCursor(a)
-#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)              (p)->CreateAdditionalSwapChain(a,b)
-#define IDirect3DDevice9_GetSwapChain(p,a,b)                           (p)->GetSwapChain(a,b)
-#define IDirect3DDevice9_GetNumberOfSwapChains(p)                      (p)->GetNumberOfSwapChains()
-#define IDirect3DDevice9_Reset(p,a)                                    (p)->Reset(a)
-#define IDirect3DDevice9_Present(p,a,b,c,d)                            (p)->Present(a,b,c,d)
-#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)                      (p)->GetBackBuffer(a,b,c,d)
-#define IDirect3DDevice9_GetRasterStatus(p,a,b)                        (p)->GetRasterStatus(a,b)
-#define IDirect3DDevice9_SetDialogBoxMode(p,a)                         (p)->SetDialogBoxMode(a)
-#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)                         (p)->SetGammaRamp(a,b,c)
-#define IDirect3DDevice9_GetGammaRamp(p,a,b)                           (p)->GetGammaRamp(a,b)
-#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->CreateTexture(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->CreateCubeTexture(a,b,c,d,e,f,g)
-#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->CreateVertexBuffer(a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->CreateIndexBuffer(a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)                      (p)->UpdateSurface(a,b,c,d)
-#define IDirect3DDevice9_UpdateTexture(p,a,b)                          (p)->UpdateTexture(a,b)
-#define IDirect3DDevice9_GetRenderTargetData(p,a,b)                    (p)->GetRenderTargetData(a,b)
-#define IDirect3DDevice9_GetFrontBufferData(p,a,b)                     (p)->GetFrontBufferData(a,b)
-#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)                      (p)->StretchRect(a,b,c,d,e)
-#define IDirect3DDevice9_ColorFill(p,a,b,c)                            (p)->ColorFill(a,b,c)
-#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
-#define IDirect3DDevice9_SetRenderTarget(p,a,b)                        (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice9_GetRenderTarget(p,a,b)                        (p)->GetRenderTarget(a,b)
-#define IDirect3DDevice9_SetDepthStencilSurface(p,a)                   (p)->SetDepthStencilSurface(a)
-#define IDirect3DDevice9_GetDepthStencilSurface(p,a)                   (p)->GetDepthStencilSurface(a)
-#define IDirect3DDevice9_BeginScene(p)                                 (p)->BeginScene()
-#define IDirect3DDevice9_EndScene(p)                                   (p)->EndScene()
-#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)                          (p)->Clear(a,b,c,d,e,f)
-#define IDirect3DDevice9_SetTransform(p,a,b)                           (p)->SetTransform(a,b)
-#define IDirect3DDevice9_GetTransform(p,a,b)                           (p)->GetTransform(a,b)
-#define IDirect3DDevice9_MultiplyTransform(p,a,b)                      (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice9_SetViewport(p,a)                              (p)->SetViewport(a)
-#define IDirect3DDevice9_GetViewport(p,a)                              (p)->GetViewport(a)
-#define IDirect3DDevice9_SetMaterial(p,a)                              (p)->SetMaterial(a)
-#define IDirect3DDevice9_GetMaterial(p,a)                              (p)->GetMaterial(a)
-#define IDirect3DDevice9_SetLight(p,a,b)                               (p)->SetLight(a,b)
-#define IDirect3DDevice9_GetLight(p,a,b)                               (p)->GetLight(a,b)
-#define IDirect3DDevice9_LightEnable(p,a,b)                            (p)->LightEnable(a,b)
-#define IDirect3DDevice9_GetLightEnable(p,a,b)                         (p)->GetLightEnable(a,b)
-#define IDirect3DDevice9_SetClipPlane(p,a,b)                           (p)->SetClipPlane(a,b)
-#define IDirect3DDevice9_GetClipPlane(p,a,b)                           (p)->GetClipPlane(a,b)
-#define IDirect3DDevice9_SetRenderState(p,a,b)                         (p)->SetRenderState(a,b)
-#define IDirect3DDevice9_GetRenderState(p,a,b)                         (p)->GetRenderState(a,b)
-#define IDirect3DDevice9_CreateStateBlock(p,a,b)                       (p)->CreateStateBlock(a,b)
-#define IDirect3DDevice9_BeginStateBlock(p)                            (p)->BeginStateBlock()
-#define IDirect3DDevice9_EndStateBlock(p,a)                            (p)->EndStateBlock(a)
-#define IDirect3DDevice9_SetClipStatus(p,a)                            (p)->SetClipStatus(a)
-#define IDirect3DDevice9_GetClipStatus(p,a)                            (p)->GetClipStatus(a)
-#define IDirect3DDevice9_GetTexture(p,a,b)                             (p)->GetTexture(a,b)
-#define IDirect3DDevice9_SetTexture(p,a,b)                             (p)->SetTexture(a,b)
-#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)                 (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)                 (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice9_GetSamplerState(p,a,b,c)                      (p)->GetSamplerState(a,b,c)
-#define IDirect3DDevice9_SetSamplerState(p,a,b,c)                      (p)->SetSamplerState(a,b,c)
-#define IDirect3DDevice9_ValidateDevice(p,a)                           (p)->ValidateDevice(a)
-#define IDirect3DDevice9_SetPaletteEntries(p,a,b)                      (p)->SetPaletteEntries(a,b)
-#define IDirect3DDevice9_GetPaletteEntries(p,a,b)                      (p)->GetPaletteEntries(a,b)
-#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)                 (p)->SetCurrentTexturePalette(a)
-#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)                 (p)->GetCurrentTexturePalette(a)
-#define IDirect3DDevice9_SetScissorRect(p,a)                           (p)->SetScissorRect(a)
-#define IDirect3DDevice9_GetScissorRect(p,a)                           (p)->GetScissorRect(a)
-#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)              (p)->SetSoftwareVertexProcessing(a)
-#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)                (p)->GetSoftwareVertexProcessing()
-#define IDirect3DDevice9_SetNPatchMode(p,a)                            (p)->SetNPatchMode(a)
-#define IDirect3DDevice9_GetNPatchMode(p)                              (p)->GetNPatchMode()
-#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)                        (p)->DrawPrimitive(a,b,c)
-#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->DrawIndexedPrimitive(a,b,c,d,e,f)
-#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)                    (p)->DrawPrimitiveUP(a,b,c,d)
-#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)                (p)->ProcessVertices(a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)                (p)->CreateVertexDeclaration(a,b)
-#define IDirect3DDevice9_SetVertexDeclaration(p,a)                     (p)->SetVertexDeclaration(a)
-#define IDirect3DDevice9_GetVertexDeclaration(p,a)                     (p)->GetVertexDeclaration(a)
-#define IDirect3DDevice9_SetFVF(p,a)                                   (p)->SetFVF(a)
-#define IDirect3DDevice9_GetFVF(p,a)                                   (p)->GetFVF(a)
-#define IDirect3DDevice9_CreateVertexShader(p,a,b)                     (p)->CreateVertexShader(a,b)
-#define IDirect3DDevice9_SetVertexShader(p,a)                          (p)->SetVertexShader(a)
-#define IDirect3DDevice9_GetVertexShader(p,a)                          (p)->GetVertexShader(a)
-#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)             (p)->SetVertexShaderConstantF(a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)             (p)->GetVertexShaderConstantF(a,b,c)
-#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)             (p)->SetVertexShaderConstantI(a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)             (p)->GetVertexShaderConstantI(a,b,c)
-#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)             (p)->SetVertexShaderConstantB(a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)             (p)->GetVertexShaderConstantB(a,b,c)
-#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)                    (p)->SetStreamSource(a,b,c,d)
-#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)                    (p)->GetStreamSource(a,b,c,d)
-#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)                    (p)->SetStreamSourceFreq(a,b)
-#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)                    (p)->GetStreamSourceFreq(a,b)
-#define IDirect3DDevice9_SetIndices(p,a)                               (p)->SetIndices(a)
-#define IDirect3DDevice9_GetIndices(p,a)                               (p)->GetIndices(a)
-#define IDirect3DDevice9_CreatePixelShader(p,a,b)                      (p)->CreatePixelShader(a,b)
-#define IDirect3DDevice9_SetPixelShader(p,a)                           (p)->SetPixelShader(a)
-#define IDirect3DDevice9_GetPixelShader(p,a)                           (p)->GetPixelShader(a)
-#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)              (p)->SetPixelShaderConstantF(a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)              (p)->GetPixelShaderConstantF(a,b,c)
-#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)              (p)->SetPixelShaderConstantI(a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)              (p)->GetPixelShaderConstantI(a,b,c)
-#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)              (p)->SetPixelShaderConstantB(a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)              (p)->GetPixelShaderConstantB(a,b,c)
-#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)                        (p)->DrawRectPatch(a,b,c)
-#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)                         (p)->DrawTriPatch(a,b,c)
-#define IDirect3DDevice9_DeletePatch(p,a)                              (p)->DeletePatch(a)
-#define IDirect3DDevice9_CreateQuery(p,a,b)                            (p)->CreateQuery(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DDevice9Ex interface
- */
-#define INTERFACE IDirect3DDevice9Ex
-DECLARE_INTERFACE_(IDirect3DDevice9Ex,IDirect3DDevice9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice9 methods ***/
-    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
-    STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE;
-    STDMETHOD(EvictManagedResources)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ IDirect3D9** ppD3D9) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9* pCaps) PURE;
-    STDMETHOD(GetDisplayMode)(THIS_ UINT iSwapChain, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters) PURE;
-    STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) PURE;
-    STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y, DWORD Flags) PURE;
-    STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow) PURE;
-    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) PURE;
-    STDMETHOD(GetSwapChain)(THIS_ UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) PURE;
-    STDMETHOD_(UINT, GetNumberOfSwapChains)(THIS) PURE;
-    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
-    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) PURE;
-    STDMETHOD(GetRasterStatus)(THIS_ UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) PURE;
-    STDMETHOD(SetDialogBoxMode)(THIS_ BOOL bEnableDialogs) PURE;
-    STDMETHOD_(void, SetGammaRamp)(THIS_ UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp) PURE;
-    STDMETHOD_(void, GetGammaRamp)(THIS_ UINT iSwapChain, D3DGAMMARAMP* pRamp) PURE;
-    STDMETHOD(CreateTexture)(THIS_ UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateRenderTarget)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint) PURE;
-    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) PURE;
-    STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(GetFrontBufferData)(THIS_ UINT iSwapChain, IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter) PURE;
-    STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color) PURE;
-    STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget) PURE;
-    STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9* pNewZStencil) PURE;
-    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9** ppZStencilSurface) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE, CONST D3DMATRIX*) PURE;
-    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9* pViewport) PURE;
-    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9* pViewport) PURE;
-    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* pMaterial) PURE;
-    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9* pMaterial) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9*) PURE;
-    STDMETHOD(GetLight)(THIS_ DWORD Index, D3DLIGHT9*) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
-    STDMETHOD(GetLightEnable)(THIS_ DWORD Index, BOOL* pEnable) PURE;
-    STDMETHOD(SetClipPlane)(THIS_ DWORD Index, CONST float* pPlane) PURE;
-    STDMETHOD(GetClipPlane)(THIS_ DWORD Index, float* pPlane) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD* pValue) PURE;
-    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB) PURE;
-    STDMETHOD(BeginStateBlock)(THIS) PURE;
-    STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9** ppSB) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9* pClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9* pClipStatus) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9** ppTexture) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9* pTexture) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
-    STDMETHOD(GetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) PURE;
-    STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
-    STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber, CONST PALETTEENTRY* pEntries) PURE;
-    STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries) PURE;
-    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber) PURE;
-    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber) PURE;
-    STDMETHOD(SetScissorRect)(THIS_ CONST RECT* pRect) PURE;
-    STDMETHOD(GetScissorRect)(THIS_ RECT* pRect) PURE;
-    STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL bSoftware) PURE;
-    STDMETHOD_(BOOL, GetSoftwareVertexProcessing)(THIS) PURE;
-    STDMETHOD(SetNPatchMode)(THIS_ float nSegments) PURE;
-    STDMETHOD_(float, GetNPatchMode)(THIS) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) PURE;
-    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
-    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) PURE;
-    STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl) PURE;
-    STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9* pDecl) PURE;
-    STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9** ppDecl) PURE;
-    STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
-    STDMETHOD(GetFVF)(THIS_ DWORD* pFVF) PURE;
-    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9* pShader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9** ppShader) PURE;
-    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
-    STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
-    STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) PURE;
-    STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* OffsetInBytes, UINT* pStride) PURE;
-    STDMETHOD(SetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT Divider) PURE;
-    STDMETHOD(GetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT* Divider) PURE;
-    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9* pIndexData) PURE;
-    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9** ppIndexData) PURE;
-    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9* pShader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9** ppShader) PURE;
-    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
-    STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
-    STDMETHOD(DrawRectPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo) PURE;
-    STDMETHOD(DrawTriPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
-    STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
-    STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) PURE;
-    /* IDirect3DDevice9Ex methods */
-    STDMETHOD(SetConvolutionMonoKernel)(THIS_ UINT width, UINT height, float *rows, float *columns) PURE;
-    STDMETHOD(ComposeRects)(THIS_ IDirect3DSurface9 *src_surface, IDirect3DSurface9 *dst_surface,
-            IDirect3DVertexBuffer9 *src_descs, UINT rect_count, IDirect3DVertexBuffer9 *dst_descs,
-            D3DCOMPOSERECTSOP operation, INT offset_x, INT offset_y) PURE;
-    STDMETHOD(PresentEx)(THIS_ CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion, DWORD dwFlags) PURE;
-    STDMETHOD(GetGPUThreadPriority)(THIS_ INT *pPriority) PURE;
-    STDMETHOD(SetGPUThreadPriority)(THIS_ INT Priority) PURE;
-    STDMETHOD(WaitForVBlank)(THIS_ UINT iSwapChain) PURE;
-    STDMETHOD(CheckResourceResidency)(THIS_ IDirect3DResource9 **resources, UINT32 resource_count) PURE;
-    STDMETHOD(SetMaximumFrameLatency)(THIS_ UINT MaxLatency) PURE;
-    STDMETHOD(GetMaximumFrameLatency)(THIS_ UINT *pMaxLatenxy) PURE;
-    STDMETHOD(CheckDeviceState)(THIS_ HWND dst_window) PURE;
-    STDMETHOD(CreateRenderTargetEx)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultiSampleQuality, BOOL Lockable, IDirect3DSurface9 ** ppSurface, HANDLE *pSharedHandle, DWORD Usage) PURE;
-    STDMETHOD(CreateOffscreenPlainSurfaceEx)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle, DWORD Usage) PURE;
-    STDMETHOD(CreateDepthStencilSurfaceEx)(THIS_ UINT width, UINT height, D3DFORMAT format,
-            D3DMULTISAMPLE_TYPE multisample_type, DWORD multisample_quality, BOOL discard,
-            IDirect3DSurface9 **surface, HANDLE *shared_handle, DWORD usage) PURE;
-    STDMETHOD(ResetEx)(THIS_ D3DPRESENT_PARAMETERS *pPresentationParameters, D3DDISPLAYMODEEX *pFullscreenDisplayMode) PURE;
-    STDMETHOD(GetDisplayModeEx)(THIS_ UINT iSwapChain, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice9Ex_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice9Ex_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice9Ex_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice9 methods ***/
-#define IDirect3DDevice9Ex_TestCooperativeLevel(p)                       (p)->lpVtbl->TestCooperativeLevel(p)
-#define IDirect3DDevice9Ex_GetAvailableTextureMem(p)                     (p)->lpVtbl->GetAvailableTextureMem(p)
-#define IDirect3DDevice9Ex_EvictManagedResources(p)                      (p)->lpVtbl->EvictManagedResources(p)
-#define IDirect3DDevice9Ex_GetDirect3D(p,a)                              (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice9Ex_GetDeviceCaps(p,a)                            (p)->lpVtbl->GetDeviceCaps(p,a)
-#define IDirect3DDevice9Ex_GetDisplayMode(p,a,b)                         (p)->lpVtbl->GetDisplayMode(p,a,b)
-#define IDirect3DDevice9Ex_GetCreationParameters(p,a)                    (p)->lpVtbl->GetCreationParameters(p,a)
-#define IDirect3DDevice9Ex_SetCursorProperties(p,a,b,c)                  (p)->lpVtbl->SetCursorProperties(p,a,b,c)
-#define IDirect3DDevice9Ex_SetCursorPosition(p,a,b,c)                    (p)->lpVtbl->SetCursorPosition(p,a,b,c)
-#define IDirect3DDevice9Ex_ShowCursor(p,a)                               (p)->lpVtbl->ShowCursor(p,a)
-#define IDirect3DDevice9Ex_CreateAdditionalSwapChain(p,a,b)              (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
-#define IDirect3DDevice9Ex_GetSwapChain(p,a,b)                           (p)->lpVtbl->GetSwapChain(p,a,b)
-#define IDirect3DDevice9Ex_GetNumberOfSwapChains(p)                      (p)->lpVtbl->GetNumberOfSwapChains(p)
-#define IDirect3DDevice9Ex_Reset(p,a)                                    (p)->lpVtbl->Reset(p,a)
-#define IDirect3DDevice9Ex_Present(p,a,b,c,d)                            (p)->lpVtbl->Present(p,a,b,c,d)
-#define IDirect3DDevice9Ex_GetBackBuffer(p,a,b,c,d)                      (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
-#define IDirect3DDevice9Ex_GetRasterStatus(p,a,b)                        (p)->lpVtbl->GetRasterStatus(p,a,b)
-#define IDirect3DDevice9Ex_SetDialogBoxMode(p,a)                         (p)->lpVtbl->SetDialogBoxMode(p,a)
-#define IDirect3DDevice9Ex_SetGammaRamp(p,a,b,c)                         (p)->lpVtbl->SetGammaRamp(p,a,b,c)
-#define IDirect3DDevice9Ex_GetGammaRamp(p,a,b)                           (p)->lpVtbl->GetGammaRamp(p,a,b)
-#define IDirect3DDevice9Ex_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice9Ex_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_UpdateSurface(p,a,b,c,d)                      (p)->lpVtbl->UpdateSurface(p,a,b,c,d)
-#define IDirect3DDevice9Ex_UpdateTexture(p,a,b)                          (p)->lpVtbl->UpdateTexture(p,a,b)
-#define IDirect3DDevice9Ex_GetRenderTargetData(p,a,b)                    (p)->lpVtbl->GetRenderTargetData(p,a,b)
-#define IDirect3DDevice9Ex_GetFrontBufferData(p,a,b)                     (p)->lpVtbl->GetFrontBufferData(p,a,b)
-#define IDirect3DDevice9Ex_StretchRect(p,a,b,c,d,e)                      (p)->lpVtbl->StretchRect(p,a,b,c,d,e)
-#define IDirect3DDevice9Ex_ColorFill(p,a,b,c)                            (p)->lpVtbl->ColorFill(p,a,b,c)
-#define IDirect3DDevice9Ex_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_SetRenderTarget(p,a,b)                        (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice9Ex_GetRenderTarget(p,a,b)                        (p)->lpVtbl->GetRenderTarget(p,a,b)
-#define IDirect3DDevice9Ex_SetDepthStencilSurface(p,a)                   (p)->lpVtbl->SetDepthStencilSurface(p,a)
-#define IDirect3DDevice9Ex_GetDepthStencilSurface(p,a)                   (p)->lpVtbl->GetDepthStencilSurface(p,a)
-#define IDirect3DDevice9Ex_BeginScene(p)                                 (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice9Ex_EndScene(p)                                   (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice9Ex_Clear(p,a,b,c,d,e,f)                          (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_SetTransform(p,a,b)                           (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice9Ex_GetTransform(p,a,b)                           (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice9Ex_MultiplyTransform(p,a,b)                      (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice9Ex_SetViewport(p,a)                              (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DDevice9Ex_GetViewport(p,a)                              (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DDevice9Ex_SetMaterial(p,a)                              (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DDevice9Ex_GetMaterial(p,a)                              (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DDevice9Ex_SetLight(p,a,b)                               (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DDevice9Ex_GetLight(p,a,b)                               (p)->lpVtbl->GetLight(p,a,b)
-#define IDirect3DDevice9Ex_LightEnable(p,a,b)                            (p)->lpVtbl->LightEnable(p,a,b)
-#define IDirect3DDevice9Ex_GetLightEnable(p,a,b)                         (p)->lpVtbl->GetLightEnable(p,a,b)
-#define IDirect3DDevice9Ex_SetClipPlane(p,a,b)                           (p)->lpVtbl->SetClipPlane(p,a,b)
-#define IDirect3DDevice9Ex_GetClipPlane(p,a,b)                           (p)->lpVtbl->GetClipPlane(p,a,b)
-#define IDirect3DDevice9Ex_SetRenderState(p,a,b)                         (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice9Ex_GetRenderState(p,a,b)                         (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice9Ex_CreateStateBlock(p,a,b)                       (p)->lpVtbl->CreateStateBlock(p,a,b)
-#define IDirect3DDevice9Ex_BeginStateBlock(p)                            (p)->lpVtbl->BeginStateBlock(p)
-#define IDirect3DDevice9Ex_EndStateBlock(p,a)                            (p)->lpVtbl->EndStateBlock(p,a)
-#define IDirect3DDevice9Ex_SetClipStatus(p,a)                            (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice9Ex_GetClipStatus(p,a)                            (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice9Ex_GetTexture(p,a,b)                             (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice9Ex_SetTexture(p,a,b)                             (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice9Ex_GetTextureStageState(p,a,b,c)                 (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice9Ex_SetTextureStageState(p,a,b,c)                 (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice9Ex_GetSamplerState(p,a,b,c)                      (p)->lpVtbl->GetSamplerState(p,a,b,c)
-#define IDirect3DDevice9Ex_SetSamplerState(p,a,b,c)                      (p)->lpVtbl->SetSamplerState(p,a,b,c)
-#define IDirect3DDevice9Ex_ValidateDevice(p,a)                           (p)->lpVtbl->ValidateDevice(p,a)
-#define IDirect3DDevice9Ex_SetPaletteEntries(p,a,b)                      (p)->lpVtbl->SetPaletteEntries(p,a,b)
-#define IDirect3DDevice9Ex_GetPaletteEntries(p,a,b)                      (p)->lpVtbl->GetPaletteEntries(p,a,b)
-#define IDirect3DDevice9Ex_SetCurrentTexturePalette(p,a)                 (p)->lpVtbl->SetCurrentTexturePalette(p,a)
-#define IDirect3DDevice9Ex_GetCurrentTexturePalette(p,a)                 (p)->lpVtbl->GetCurrentTexturePalette(p,a)
-#define IDirect3DDevice9Ex_SetScissorRect(p,a)                           (p)->lpVtbl->SetScissorRect(p,a)
-#define IDirect3DDevice9Ex_GetScissorRect(p,a)                           (p)->lpVtbl->GetScissorRect(p,a)
-#define IDirect3DDevice9Ex_SetSoftwareVertexProcessing(p,a)              (p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
-#define IDirect3DDevice9Ex_GetSoftwareVertexProcessing(p)                (p)->lpVtbl->GetSoftwareVertexProcessing(p)
-#define IDirect3DDevice9Ex_SetNPatchMode(p,a)                            (p)->lpVtbl->SetNPatchMode(p,a)
-#define IDirect3DDevice9Ex_GetNPatchMode(p)                              (p)->lpVtbl->GetNPatchMode(p)
-#define IDirect3DDevice9Ex_DrawPrimitive(p,a,b,c)                        (p)->lpVtbl->DrawPrimitive(p,a,b,c)
-#define IDirect3DDevice9Ex_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_DrawPrimitiveUP(p,a,b,c,d)                    (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
-#define IDirect3DDevice9Ex_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_ProcessVertices(p,a,b,c,d,e,f)                (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateVertexDeclaration(p,a,b)                (p)->lpVtbl->CreateVertexDeclaration(p,a,b)
-#define IDirect3DDevice9Ex_SetVertexDeclaration(p,a)                     (p)->lpVtbl->SetVertexDeclaration(p,a)
-#define IDirect3DDevice9Ex_GetVertexDeclaration(p,a)                     (p)->lpVtbl->GetVertexDeclaration(p,a)
-#define IDirect3DDevice9Ex_SetFVF(p,a)                                   (p)->lpVtbl->SetFVF(p,a)
-#define IDirect3DDevice9Ex_GetFVF(p,a)                                   (p)->lpVtbl->GetFVF(p,a)
-#define IDirect3DDevice9Ex_CreateVertexShader(p,a,b)                     (p)->lpVtbl->CreateVertexShader(p,a,b)
-#define IDirect3DDevice9Ex_SetVertexShader(p,a)                          (p)->lpVtbl->SetVertexShader(p,a)
-#define IDirect3DDevice9Ex_GetVertexShader(p,a)                          (p)->lpVtbl->GetVertexShader(p,a)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9Ex_SetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
-#define IDirect3DDevice9Ex_GetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
-#define IDirect3DDevice9Ex_SetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->SetStreamSourceFreq(p,a,b)
-#define IDirect3DDevice9Ex_GetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->GetStreamSourceFreq(p,a,b)
-#define IDirect3DDevice9Ex_SetIndices(p,a)                               (p)->lpVtbl->SetIndices(p,a)
-#define IDirect3DDevice9Ex_GetIndices(p,a)                               (p)->lpVtbl->GetIndices(p,a)
-#define IDirect3DDevice9Ex_CreatePixelShader(p,a,b)                      (p)->lpVtbl->CreatePixelShader(p,a,b)
-#define IDirect3DDevice9Ex_SetPixelShader(p,a)                           (p)->lpVtbl->SetPixelShader(p,a)
-#define IDirect3DDevice9Ex_GetPixelShader(p,a)                           (p)->lpVtbl->GetPixelShader(p,a)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9Ex_DrawRectPatch(p,a,b,c)                        (p)->lpVtbl->DrawRectPatch(p,a,b,c)
-#define IDirect3DDevice9Ex_DrawTriPatch(p,a,b,c)                         (p)->lpVtbl->DrawTriPatch(p,a,b,c)
-#define IDirect3DDevice9Ex_DeletePatch(p,a)                              (p)->lpVtbl->DeletePatch(p,a)
-#define IDirect3DDevice9Ex_CreateQuery(p,a,b)                            (p)->lpVtbl->CreateQuery(p,a,b)
-/* IDirect3DDevice9Ex */
-#define IDirect3DDevice9Ex_SetConvolutionMonoKernel(p,a,b,c,d)           (p)->lpVtbl->SetConvolutionMonoKernel(p,a,b,c,d)
-#define IDirect3DDevice9Ex_ComposeRects(p,a,b,c,d,e,f,g,h)               (p)->lpVtbl->ComposeRects(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_PresentEx(p,a,b,c,d,e)                        (p)->lpVtbl->PresentEx(p,a,b,c,d,e)
-#define IDirect3DDevice9Ex_GetGPUThreadPriority(p,a)                     (p)->lpVtbl->GetGPUThreadPriority(p,a)
-#define IDirect3DDevice9Ex_SetGPUThreadPriority(p,a)                     (p)->lpVtbl->SetGPUThreadPriority(p,a)
-#define IDirect3DDevice9Ex_WaitForVBlank(p,a)                            (p)->lpVtbl->WaitForVBlank(p,a)
-#define IDirect3DDevice9Ex_CheckResourceResidency(p,a,b)                 (p)->lpVtbl->CheckResourceResidency(p,a,b)
-#define IDirect3DDevice9Ex_SetMaximumFrameLatency(p,a)                   (p)->lpVtbl->SetMaximumFrameLatency(p,a)
-#define IDirect3DDevice9Ex_GetMaximumFrameLatency(p,a)                   (p)->lpVtbl->GetMaximumFrameLatency(p,a)
-#define IDirect3DDevice9Ex_CheckDeviceState(p,a)                         (p)->lpVtbl->CheckDeviceState(p,a)
-#define IDirect3DDevice9Ex_CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)     (p)->lpVtbl->CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)(p)->lpVtbl->CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice9Ex_CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)(p)->lpVtbl->CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_ResetEx(p,a,b)                                 (p)->lpVtbl->ResetEx(p,a,b)
-#define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c)                     (p)->lpVtbl->GetDisplayModeEx(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice9Ex_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice9Ex_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice9Ex_Release(p)            (p)->Release()
-/*** IDirect3DDevice9 methods ***/
-#define IDirect3DDevice9Ex_TestCooperativeLevel(p)                       (p)->TestCooperativeLevel()
-#define IDirect3DDevice9Ex_GetAvailableTextureMem(p)                     (p)->GetAvailableTextureMem()
-#define IDirect3DDevice9Ex_EvictManagedResources(p)                      (p)->EvictManagedResources()
-#define IDirect3DDevice9Ex_GetDirect3D(p,a)                              (p)->GetDirect3D(a)
-#define IDirect3DDevice9Ex_GetDeviceCaps(p,a)                            (p)->GetDeviceCaps(a)
-#define IDirect3DDevice9Ex_GetDisplayMode(p,a,b)                         (p)->GetDisplayMode(a,b)
-#define IDirect3DDevice9Ex_GetCreationParameters(p,a)                    (p)->GetCreationParameters(a)
-#define IDirect3DDevice9Ex_SetCursorProperties(p,a,b,c)                  (p)->SetCursorProperties(a,b,c)
-#define IDirect3DDevice9Ex_SetCursorPosition(p,a,b,c)                    (p)->SetCursorPosition(a,b,c)
-#define IDirect3DDevice9Ex_ShowCursor(p,a)                               (p)->ShowCursor(a)
-#define IDirect3DDevice9Ex_CreateAdditionalSwapChain(p,a,b)              (p)->CreateAdditionalSwapChain(a,b)
-#define IDirect3DDevice9Ex_GetSwapChain(p,a,b)                           (p)->GetSwapChain(a,b)
-#define IDirect3DDevice9Ex_GetNumberOfSwapChains(p)                      (p)->GetNumberOfSwapChains()
-#define IDirect3DDevice9Ex_Reset(p,a)                                    (p)->Reset(a)
-#define IDirect3DDevice9Ex_Present(p,a,b,c,d)                            (p)->Present(a,b,c,d)
-#define IDirect3DDevice9Ex_GetBackBuffer(p,a,b,c,d)                      (p)->GetBackBuffer(a,b,c,d)
-#define IDirect3DDevice9Ex_GetRasterStatus(p,a,b)                        (p)->GetRasterStatus(a,b)
-#define IDirect3DDevice9Ex_SetDialogBoxMode(p,a)                         (p)->SetDialogBoxMode(a)
-#define IDirect3DDevice9Ex_SetGammaRamp(p,a,b,c)                         (p)->SetGammaRamp(a,b,c)
-#define IDirect3DDevice9Ex_GetGammaRamp(p,a,b)                           (p)->GetGammaRamp(a,b)
-#define IDirect3DDevice9Ex_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->CreateTexture(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->CreateCubeTexture(a,b,c,d,e,f,g)
-#define IDirect3DDevice9Ex_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->CreateVertexBuffer(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->CreateIndexBuffer(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_UpdateSurface(p,a,b,c,d)                      (p)->UpdateSurface(a,b,c,d)
-#define IDirect3DDevice9Ex_UpdateTexture(p,a,b)                          (p)->UpdateTexture(a,b)
-#define IDirect3DDevice9Ex_GetRenderTargetData(p,a,b)                    (p)->GetRenderTargetData(a,b)
-#define IDirect3DDevice9Ex_GetFrontBufferData(p,a,b)                     (p)->GetFrontBufferData(a,b)
-#define IDirect3DDevice9Ex_StretchRect(p,a,b,c,d,e)                      (p)->StretchRect(a,b,c,d,e)
-#define IDirect3DDevice9Ex_ColorFill(p,a,b,c)                            (p)->ColorFill(a,b,c)
-#define IDirect3DDevice9Ex_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_SetRenderTarget(p,a,b)                        (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice9Ex_GetRenderTarget(p,a,b)                        (p)->GetRenderTarget(a,b)
-#define IDirect3DDevice9Ex_SetDepthStencilSurface(p,a)                   (p)->SetDepthStencilSurface(a)
-#define IDirect3DDevice9Ex_GetDepthStencilSurface(p,a)                   (p)->GetDepthStencilSurface(a)
-#define IDirect3DDevice9Ex_BeginScene(p)                                 (p)->BeginScene()
-#define IDirect3DDevice9Ex_EndScene(p)                                   (p)->EndScene()
-#define IDirect3DDevice9Ex_Clear(p,a,b,c,d,e,f)                          (p)->Clear(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_SetTransform(p,a,b)                           (p)->SetTransform(a,b)
-#define IDirect3DDevice9Ex_GetTransform(p,a,b)                           (p)->GetTransform(a,b)
-#define IDirect3DDevice9Ex_MultiplyTransform(p,a,b)                      (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice9Ex_SetViewport(p,a)                              (p)->SetViewport(a)
-#define IDirect3DDevice9Ex_GetViewport(p,a)                              (p)->GetViewport(a)
-#define IDirect3DDevice9Ex_SetMaterial(p,a)                              (p)->SetMaterial(a)
-#define IDirect3DDevice9Ex_GetMaterial(p,a)                              (p)->GetMaterial(a)
-#define IDirect3DDevice9Ex_SetLight(p,a,b)                               (p)->SetLight(a,b)
-#define IDirect3DDevice9Ex_GetLight(p,a,b)                               (p)->GetLight(a,b)
-#define IDirect3DDevice9Ex_LightEnable(p,a,b)                            (p)->LightEnable(a,b)
-#define IDirect3DDevice9Ex_GetLightEnable(p,a,b)                         (p)->GetLightEnable(a,b)
-#define IDirect3DDevice9Ex_SetClipPlane(p,a,b)                           (p)->SetClipPlane(a,b)
-#define IDirect3DDevice9Ex_GetClipPlane(p,a,b)                           (p)->GetClipPlane(a,b)
-#define IDirect3DDevice9Ex_SetRenderState(p,a,b)                         (p)->SetRenderState(a,b)
-#define IDirect3DDevice9Ex_GetRenderState(p,a,b)                         (p)->GetRenderState(a,b)
-#define IDirect3DDevice9Ex_CreateStateBlock(p,a,b)                       (p)->CreateStateBlock(a,b)
-#define IDirect3DDevice9Ex_BeginStateBlock(p)                            (p)->BeginStateBlock()
-#define IDirect3DDevice9Ex_EndStateBlock(p,a)                            (p)->EndStateBlock(a)
-#define IDirect3DDevice9Ex_SetClipStatus(p,a)                            (p)->SetClipStatus(a)
-#define IDirect3DDevice9Ex_GetClipStatus(p,a)                            (p)->GetClipStatus(a)
-#define IDirect3DDevice9Ex_GetTexture(p,a,b)                             (p)->GetTexture(a,b)
-#define IDirect3DDevice9Ex_SetTexture(p,a,b)                             (p)->SetTexture(a,b)
-#define IDirect3DDevice9Ex_GetTextureStageState(p,a,b,c)                 (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice9Ex_SetTextureStageState(p,a,b,c)                 (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice9Ex_GetSamplerState(p,a,b,c)                      (p)->GetSamplerState(a,b,c)
-#define IDirect3DDevice9Ex_SetSamplerState(p,a,b,c)                      (p)->SetSamplerState(a,b,c)
-#define IDirect3DDevice9Ex_ValidateDevice(p,a)                           (p)->ValidateDevice(a)
-#define IDirect3DDevice9Ex_SetPaletteEntries(p,a,b)                      (p)->SetPaletteEntries(a,b)
-#define IDirect3DDevice9Ex_GetPaletteEntries(p,a,b)                      (p)->GetPaletteEntries(a,b)
-#define IDirect3DDevice9Ex_SetCurrentTexturePalette(p,a)                 (p)->SetCurrentTexturePalette(a)
-#define IDirect3DDevice9Ex_GetCurrentTexturePalette(p,a)                 (p)->GetCurrentTexturePalette(a)
-#define IDirect3DDevice9Ex_SetScissorRect(p,a)                           (p)->SetScissorRect(a)
-#define IDirect3DDevice9Ex_GetScissorRect(p,a)                           (p)->GetScissorRect(a)
-#define IDirect3DDevice9Ex_SetSoftwareVertexProcessing(p,a)              (p)->SetSoftwareVertexProcessing(a)
-#define IDirect3DDevice9Ex_GetSoftwareVertexProcessing(p)                (p)->GetSoftwareVertexProcessing()
-#define IDirect3DDevice9Ex_SetNPatchMode(p,a)                            (p)->SetNPatchMode(a)
-#define IDirect3DDevice9Ex_GetNPatchMode(p)                              (p)->GetNPatchMode()
-#define IDirect3DDevice9Ex_DrawPrimitive(p,a,b,c)                        (p)->DrawPrimitive(a,b,c)
-#define IDirect3DDevice9Ex_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->DrawIndexedPrimitive(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_DrawPrimitiveUP(p,a,b,c,d)                    (p)->DrawPrimitiveUP(a,b,c,d)
-#define IDirect3DDevice9Ex_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_ProcessVertices(p,a,b,c,d,e,f)                (p)->ProcessVertices(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateVertexDeclaration(p,a,b)                (p)->CreateVertexDeclaration(a,b)
-#define IDirect3DDevice9Ex_SetVertexDeclaration(p,a)                     (p)->SetVertexDeclaration(a)
-#define IDirect3DDevice9Ex_GetVertexDeclaration(p,a)                     (p)->GetVertexDeclaration(a)
-#define IDirect3DDevice9Ex_SetFVF(p,a)                                   (p)->SetFVF(a)
-#define IDirect3DDevice9Ex_GetFVF(p,a)                                   (p)->GetFVF(a)
-#define IDirect3DDevice9Ex_CreateVertexShader(p,a,b)                     (p)->CreateVertexShader(a,b)
-#define IDirect3DDevice9Ex_SetVertexShader(p,a)                          (p)->SetVertexShader(a)
-#define IDirect3DDevice9Ex_GetVertexShader(p,a)                          (p)->GetVertexShader(a)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantF(p,a,b,c)             (p)->SetVertexShaderConstantF(a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantF(p,a,b,c)             (p)->GetVertexShaderConstantF(a,b,c)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantI(p,a,b,c)             (p)->SetVertexShaderConstantI(a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantI(p,a,b,c)             (p)->GetVertexShaderConstantI(a,b,c)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantB(p,a,b,c)             (p)->SetVertexShaderConstantB(a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantB(p,a,b,c)             (p)->GetVertexShaderConstantB(a,b,c)
-#define IDirect3DDevice9Ex_SetStreamSource(p,a,b,c,d)                    (p)->SetStreamSource(a,b,c,d)
-#define IDirect3DDevice9Ex_GetStreamSource(p,a,b,c,d)                    (p)->GetStreamSource(a,b,c,d)
-#define IDirect3DDevice9Ex_SetStreamSourceFreq(p,a,b)                    (p)->SetStreamSourceFreq(a,b)
-#define IDirect3DDevice9Ex_GetStreamSourceFreq(p,a,b)                    (p)->GetStreamSourceFreq(a,b)
-#define IDirect3DDevice9Ex_SetIndices(p,a)                               (p)->SetIndices(a)
-#define IDirect3DDevice9Ex_GetIndices(p,a)                               (p)->GetIndices(a)
-#define IDirect3DDevice9Ex_CreatePixelShader(p,a,b)                      (p)->CreatePixelShader(a,b)
-#define IDirect3DDevice9Ex_SetPixelShader(p,a)                           (p)->SetPixelShader(a)
-#define IDirect3DDevice9Ex_GetPixelShader(p,a)                           (p)->GetPixelShader(a)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantF(p,a,b,c)              (p)->SetPixelShaderConstantF(a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantF(p,a,b,c)              (p)->GetPixelShaderConstantF(a,b,c)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantI(p,a,b,c)              (p)->SetPixelShaderConstantI(a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantI(p,a,b,c)              (p)->GetPixelShaderConstantI(a,b,c)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantB(p,a,b,c)              (p)->SetPixelShaderConstantB(a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantB(p,a,b,c)              (p)->GetPixelShaderConstantB(a,b,c)
-#define IDirect3DDevice9Ex_DrawRectPatch(p,a,b,c)                        (p)->DrawRectPatch(a,b,c)
-#define IDirect3DDevice9Ex_DrawTriPatch(p,a,b,c)                         (p)->DrawTriPatch(a,b,c)
-#define IDirect3DDevice9Ex_DeletePatch(p,a)                              (p)->DeletePatch(a)
-#define IDirect3DDevice9Ex_CreateQuery(p,a,b)                            (p)->CreateQuery(a,b)
-/* IDirect3DDevice9Ex */
-#define IDirect3DDevice9Ex_SetConvolutionMonoKernel(p,a,b,c,d)           (p)->SetConvolutionMonoKernel(a,b,c,d)
-#define IDirect3DDevice9Ex_ComposeRects(p,a,b,c,d,e,f,g,h)               (p)->ComposeRects(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_PresentEx(p,a,b,c,d,e)                        (p)->PresentEx(a,b,c,d,e)
-#define IDirect3DDevice9Ex_GetGPUThreadPriority(p,a)                     (p)->GetGPUThreadPriority(a)
-#define IDirect3DDevice9Ex_SetGPUThreadPriority(p,a)                     (p)->SetGPUThreadPriority(a)
-#define IDirect3DDevice9Ex_WaitForVBlank(p,a)                            (p)->WaitForVBlank(a)
-#define IDirect3DDevice9Ex_CheckResourceResidency(p,a,b)                 (p)->CheckResourceResidency(a,b)
-#define IDirect3DDevice9Ex_SetMaximumFrameLatency(p,a)                   (p)->SetMaximumFrameLatency(a)
-#define IDirect3DDevice9Ex_GetMaximumFrameLatency(p,a)                   (p)->GetMaximumFrameLatency(a)
-#define IDirect3DDevice9Ex_CheckDeviceState(p,a)                         (p)->CheckDeviceState(a)
-#define IDirect3DDevice9Ex_CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)     (p)->CreateRenderTargetEx(a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)(p)->CreateOffscreenPlainSurfaceEx(a,b,c,d,e,f,g)
-#define IDirect3DDevice9Ex_CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)(p)->CreateDepthStencilSurfaceEx(a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_ResetEx(p,a,b)                                (p)->ResetEx(a,b)
-#define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c)                     (p)->GetDisplayModeEx(a,b,c)
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif  /* defined(__cplusplus) */
-
-int         WINAPI D3DPERF_BeginEvent(D3DCOLOR,LPCWSTR);
-int         WINAPI D3DPERF_EndEvent(void);
-DWORD       WINAPI D3DPERF_GetStatus(void);
-BOOL        WINAPI D3DPERF_QueryRepeatFrame(void);
-void        WINAPI D3DPERF_SetMarker(D3DCOLOR,LPCWSTR);
-void        WINAPI D3DPERF_SetOptions(DWORD);
-void        WINAPI D3DPERF_SetRegion(D3DCOLOR,LPCWSTR);
-
-/* Define the main entrypoint as well */
-IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-
-#endif /* __WINE_D3D9_H */
diff --git a/misc/builddeps/win32/dx/include/d3d9caps.h b/misc/builddeps/win32/dx/include/d3d9caps.h
deleted file mode 100644 (file)
index 8ed6598..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Copyright (C) 2002-2003 Jason Edmeades
- *                         Raphael Junqueira
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D9CAPS_H
-#define __WINE_D3D9CAPS_H
-
-/*
- * Definitions
- */
-#define D3DCAPS_READ_SCANLINE 0x20000
-
-#define D3DCURSORCAPS_COLOR   1
-#define D3DCURSORCAPS_LOWRES  2
-
-
-#define D3DDEVCAPS2_STREAMOFFSET                        0x00000001L
-#define D3DDEVCAPS2_DMAPNPATCH                          0x00000002L
-#define D3DDEVCAPS2_ADAPTIVETESSRTPATCH                 0x00000004L
-#define D3DDEVCAPS2_ADAPTIVETESSNPATCH                  0x00000008L
-#define D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES       0x00000010L
-#define D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH                0x00000020L
-#define D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET  0x00000040L
-
-#define D3DDEVCAPS_EXECUTESYSTEMMEMORY     0x0000010
-#define D3DDEVCAPS_EXECUTEVIDEOMEMORY      0x0000020
-#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY    0x0000040
-#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY     0x0000080
-#define D3DDEVCAPS_TEXTURESYSTEMMEMORY     0x0000100
-#define D3DDEVCAPS_TEXTUREVIDEOMEMORY      0x0000200
-#define D3DDEVCAPS_DRAWPRIMTLVERTEX        0x0000400
-#define D3DDEVCAPS_CANRENDERAFTERFLIP      0x0000800
-#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM   0x0001000
-#define D3DDEVCAPS_DRAWPRIMITIVES2         0x0002000
-#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x0004000
-#define D3DDEVCAPS_DRAWPRIMITIVES2EX       0x0008000
-#define D3DDEVCAPS_HWTRANSFORMANDLIGHT     0x0010000
-#define D3DDEVCAPS_CANBLTSYSTONONLOCAL     0x0020000
-#define D3DDEVCAPS_HWRASTERIZATION         0x0080000
-#define D3DDEVCAPS_PUREDEVICE              0x0100000
-#define D3DDEVCAPS_QUINTICRTPATCHES        0x0200000
-#define D3DDEVCAPS_RTPATCHES               0x0400000
-#define D3DDEVCAPS_RTPATCHHANDLEZERO       0x0800000
-#define D3DDEVCAPS_NPATCHES                0x1000000
-
-#define D3DFVFCAPS_TEXCOORDCOUNTMASK  0x00FFFF
-#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x080000
-#define D3DFVFCAPS_PSIZE              0x100000
-
-#define D3DLINECAPS_TEXTURE           0x01
-#define D3DLINECAPS_ZTEST             0x02
-#define D3DLINECAPS_BLEND             0x04
-#define D3DLINECAPS_ALPHACMP          0x08
-#define D3DLINECAPS_FOG               0x10
-#define D3DLINECAPS_ANTIALIAS         0x20
-
-#define D3DPBLENDCAPS_ZERO            0x00000001
-#define D3DPBLENDCAPS_ONE             0x00000002
-#define D3DPBLENDCAPS_SRCCOLOR        0x00000004
-#define D3DPBLENDCAPS_INVSRCCOLOR     0x00000008
-#define D3DPBLENDCAPS_SRCALPHA        0x00000010
-#define D3DPBLENDCAPS_INVSRCALPHA     0x00000020
-#define D3DPBLENDCAPS_DESTALPHA       0x00000040
-#define D3DPBLENDCAPS_INVDESTALPHA    0x00000080
-#define D3DPBLENDCAPS_DESTCOLOR       0x00000100
-#define D3DPBLENDCAPS_INVDESTCOLOR    0x00000200
-#define D3DPBLENDCAPS_SRCALPHASAT     0x00000400
-#define D3DPBLENDCAPS_BOTHSRCALPHA    0x00000800
-#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000
-#define D3DPBLENDCAPS_BLENDFACTOR     0x00002000
-
-#define D3DPCMPCAPS_NEVER        0x01
-#define D3DPCMPCAPS_LESS         0x02
-#define D3DPCMPCAPS_EQUAL        0x04
-#define D3DPCMPCAPS_LESSEQUAL    0x08
-#define D3DPCMPCAPS_GREATER      0x10
-#define D3DPCMPCAPS_NOTEQUAL     0x20
-#define D3DPCMPCAPS_GREATEREQUAL 0x40
-#define D3DPCMPCAPS_ALWAYS       0x80
-
-#define D3DPMISCCAPS_MASKZ                      0x00000002L
-#define D3DPMISCCAPS_LINEPATTERNREP             0x00000004L
-#define D3DPMISCCAPS_CULLNONE                   0x00000010L
-#define D3DPMISCCAPS_CULLCW                     0x00000020L
-#define D3DPMISCCAPS_CULLCCW                    0x00000040L
-#define D3DPMISCCAPS_COLORWRITEENABLE           0x00000080L
-#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS      0x00000100L
-#define D3DPMISCCAPS_CLIPTLVERTS                0x00000200L
-#define D3DPMISCCAPS_TSSARGTEMP                 0x00000400L
-#define D3DPMISCCAPS_BLENDOP                    0x00000800L
-#define D3DPMISCCAPS_NULLREFERENCE              0x00001000L
-#define D3DPMISCCAPS_INDEPENDENTWRITEMASKS      0x00004000L
-#define D3DPMISCCAPS_PERSTAGECONSTANT           0x00008000L
-#define D3DPMISCCAPS_FOGANDSPECULARALPHA        0x00010000L
-#define D3DPMISCCAPS_SEPARATEALPHABLEND         0x00020000L
-#define D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS    0x00040000L
-#define D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING 0x00080000L
-#define D3DPMISCCAPS_FOGVERTEXCLAMPED           0x00100000L
-
-
-#define D3DPRASTERCAPS_DITHER                     0x00000001L
-#define D3DPRASTERCAPS_PAT                        0x00000008L
-#define D3DPRASTERCAPS_ZTEST                      0x00000010L
-#define D3DPRASTERCAPS_FOGVERTEX                  0x00000080L
-#define D3DPRASTERCAPS_FOGTABLE                   0x00000100L
-#define D3DPRASTERCAPS_ANTIALIASEDGES             0x00001000L
-#define D3DPRASTERCAPS_MIPMAPLODBIAS              0x00002000L
-#define D3DPRASTERCAPS_ZBIAS                      0x00004000L
-#define D3DPRASTERCAPS_ZBUFFERLESSHSR             0x00008000L
-#define D3DPRASTERCAPS_FOGRANGE                   0x00010000L
-#define D3DPRASTERCAPS_ANISOTROPY                 0x00020000L
-#define D3DPRASTERCAPS_WBUFFER                    0x00040000L
-#define D3DPRASTERCAPS_WFOG                       0x00100000L
-#define D3DPRASTERCAPS_ZFOG                       0x00200000L
-#define D3DPRASTERCAPS_COLORPERSPECTIVE           0x00400000L
-#define D3DPRASTERCAPS_SCISSORTEST                0x01000000L
-#define D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS        0x02000000L
-#define D3DPRASTERCAPS_DEPTHBIAS                  0x04000000L 
-#define D3DPRASTERCAPS_MULTISAMPLE_TOGGLE         0x08000000L
-
-#define D3DPRESENT_INTERVAL_DEFAULT               0x00000000
-#define D3DPRESENT_INTERVAL_ONE                   0x00000001
-#define D3DPRESENT_INTERVAL_TWO                   0x00000002
-#define D3DPRESENT_INTERVAL_THREE                 0x00000004
-#define D3DPRESENT_INTERVAL_FOUR                  0x00000008
-#define D3DPRESENT_INTERVAL_IMMEDIATE             0x80000000
-
-#define D3DPSHADECAPS_COLORGOURAUDRGB             0x00008
-#define D3DPSHADECAPS_SPECULARGOURAUDRGB          0x00200
-#define D3DPSHADECAPS_ALPHAGOURAUDBLEND           0x04000
-#define D3DPSHADECAPS_FOGGOURAUD                  0x80000
-
-#define D3DPTADDRESSCAPS_WRAP                     0x01
-#define D3DPTADDRESSCAPS_MIRROR                   0x02
-#define D3DPTADDRESSCAPS_CLAMP                    0x04
-#define D3DPTADDRESSCAPS_BORDER                   0x08
-#define D3DPTADDRESSCAPS_INDEPENDENTUV            0x10
-#define D3DPTADDRESSCAPS_MIRRORONCE               0x20
-
-#define D3DPTEXTURECAPS_PERSPECTIVE              0x00000001L
-#define D3DPTEXTURECAPS_POW2                     0x00000002L
-#define D3DPTEXTURECAPS_ALPHA                    0x00000004L
-#define D3DPTEXTURECAPS_SQUAREONLY               0x00000020L
-#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L
-#define D3DPTEXTURECAPS_ALPHAPALETTE             0x00000080L
-#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL       0x00000100L
-#define D3DPTEXTURECAPS_PROJECTED                0x00000400L
-#define D3DPTEXTURECAPS_CUBEMAP                  0x00000800L
-#define D3DPTEXTURECAPS_VOLUMEMAP                0x00002000L
-#define D3DPTEXTURECAPS_MIPMAP                   0x00004000L
-#define D3DPTEXTURECAPS_MIPVOLUMEMAP             0x00008000L
-#define D3DPTEXTURECAPS_MIPCUBEMAP               0x00010000L
-#define D3DPTEXTURECAPS_CUBEMAP_POW2             0x00020000L
-#define D3DPTEXTURECAPS_VOLUMEMAP_POW2           0x00040000L
-#define D3DPTEXTURECAPS_NOPROJECTEDBUMPENV       0x00200000L
-
-#define D3DPTFILTERCAPS_MINFPOINT                0x00000100
-#define D3DPTFILTERCAPS_MINFLINEAR               0x00000200
-#define D3DPTFILTERCAPS_MINFANISOTROPIC          0x00000400
-#define D3DPTFILTERCAPS_MINFPYRAMIDALQUAD        0x00000800
-#define D3DPTFILTERCAPS_MINFGAUSSIANQUAD         0x00001000
-#define D3DPTFILTERCAPS_MIPFPOINT                0x00010000
-#define D3DPTFILTERCAPS_MIPFLINEAR               0x00020000
-#define D3DPTFILTERCAPS_MAGFPOINT                0x01000000
-#define D3DPTFILTERCAPS_MAGFLINEAR               0x02000000
-#define D3DPTFILTERCAPS_MAGFANISOTROPIC          0x04000000
-#define D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD        0x08000000
-#define D3DPTFILTERCAPS_MAGFGAUSSIANQUAD         0x10000000
-
-#define D3DSTENCILCAPS_KEEP                      0x01
-#define D3DSTENCILCAPS_ZERO                      0x02
-#define D3DSTENCILCAPS_REPLACE                   0x04
-#define D3DSTENCILCAPS_INCRSAT                   0x08
-#define D3DSTENCILCAPS_DECRSAT                   0x10
-#define D3DSTENCILCAPS_INVERT                    0x20
-#define D3DSTENCILCAPS_INCR                      0x40
-#define D3DSTENCILCAPS_DECR                      0x80
-#define D3DSTENCILCAPS_TWOSIDED                  0x100
-
-#define D3DTEXOPCAPS_DISABLE                     0x0000001
-#define D3DTEXOPCAPS_SELECTARG1                  0x0000002
-#define D3DTEXOPCAPS_SELECTARG2                  0x0000004
-#define D3DTEXOPCAPS_MODULATE                    0x0000008
-#define D3DTEXOPCAPS_MODULATE2X                  0x0000010
-#define D3DTEXOPCAPS_MODULATE4X                  0x0000020
-#define D3DTEXOPCAPS_ADD                         0x0000040
-#define D3DTEXOPCAPS_ADDSIGNED                   0x0000080
-#define D3DTEXOPCAPS_ADDSIGNED2X                 0x0000100
-#define D3DTEXOPCAPS_SUBTRACT                    0x0000200
-#define D3DTEXOPCAPS_ADDSMOOTH                   0x0000400
-#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA           0x0000800
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHA           0x0001000
-#define D3DTEXOPCAPS_BLENDFACTORALPHA            0x0002000
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM         0x0004000
-#define D3DTEXOPCAPS_BLENDCURRENTALPHA           0x0008000
-#define D3DTEXOPCAPS_PREMODULATE                 0x0010000
-#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR      0x0020000
-#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA      0x0040000
-#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR   0x0080000
-#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA   0x0100000
-#define D3DTEXOPCAPS_BUMPENVMAP                  0x0200000
-#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE         0x0400000
-#define D3DTEXOPCAPS_DOTPRODUCT3                 0x0800000
-#define D3DTEXOPCAPS_MULTIPLYADD                 0x1000000
-#define D3DTEXOPCAPS_LERP                        0x2000000
-
-#define D3DVTXPCAPS_TEXGEN                         0x00000001L
-#define D3DVTXPCAPS_MATERIALSOURCE7                0x00000002L
-#define D3DVTXPCAPS_DIRECTIONALLIGHTS              0x00000008L
-#define D3DVTXPCAPS_POSITIONALLIGHTS               0x00000010L
-#define D3DVTXPCAPS_LOCALVIEWER                    0x00000020L
-#define D3DVTXPCAPS_TWEENING                       0x00000040L
-#define D3DVTXPCAPS_TEXGEN_SPHEREMAP               0x00000100L
-#define D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER       0x00000200L
-
-#define D3DDTCAPS_UBYTE4                           0x00000001L
-#define D3DDTCAPS_UBYTE4N                          0x00000002L
-#define D3DDTCAPS_SHORT2N                          0x00000004L
-#define D3DDTCAPS_SHORT4N                          0x00000008L
-#define D3DDTCAPS_USHORT2N                         0x00000010L
-#define D3DDTCAPS_USHORT4N                         0x00000020L
-#define D3DDTCAPS_UDEC3                            0x00000040L
-#define D3DDTCAPS_DEC3N                            0x00000080L
-#define D3DDTCAPS_FLOAT16_2                        0x00000100L
-#define D3DDTCAPS_FLOAT16_4                        0x00000200L
-
-#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD  0x00000020L
-#define D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION       0x00000080L
-#define D3DCAPS3_COPY_TO_VIDMEM                    0x00000100L 
-#define D3DCAPS3_COPY_TO_SYSTEMMEM                 0x00000200L
-#define D3DCAPS3_RESERVED                          0x8000001FL
-
-#define D3DCAPS2_NO2DDURING3DSCENE                 0x00000002L
-#define D3DCAPS2_FULLSCREENGAMMA                   0x00020000L
-#define D3DCAPS2_CANRENDERWINDOWED                 0x00080000L
-#define D3DCAPS2_CANCALIBRATEGAMMA                 0x00100000L
-#define D3DCAPS2_RESERVED                          0x02000000L
-#define D3DCAPS2_CANMANAGERESOURCE                 0x10000000L
-#define D3DCAPS2_DYNAMICTEXTURES                   0x20000000L
-#define D3DCAPS2_CANAUTOGENMIPMAP                  0x40000000L
-
-
-#define D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH  24
-#define D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH  0
-#define D3DVS20_MAX_NUMTEMPS                 32
-#define D3DVS20_MIN_NUMTEMPS                 12
-#define D3DVS20_MAX_STATICFLOWCONTROLDEPTH   4
-#define D3DVS20_MIN_STATICFLOWCONTROLDEPTH   1
-
-#define D3DVS20CAPS_PREDICATION              (1 << 0)
-
-#define D3DPS20CAPS_ARBITRARYSWIZZLE         (1 << 0)
-#define D3DPS20CAPS_GRADIENTINSTRUCTIONS     (1 << 1)
-#define D3DPS20CAPS_PREDICATION              (1 << 2)
-#define D3DPS20CAPS_NODEPENDENTREADLIMIT     (1 << 3)
-#define D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT    (1 << 4)
-
-#define D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH  24
-#define D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH  0
-#define D3DPS20_MAX_NUMTEMPS                 32
-#define D3DPS20_MIN_NUMTEMPS                 12
-#define D3DPS20_MAX_STATICFLOWCONTROLDEPTH   4
-#define D3DPS20_MIN_STATICFLOWCONTROLDEPTH   0
-#define D3DPS20_MAX_NUMINSTRUCTIONSLOTS      512
-#define D3DPS20_MIN_NUMINSTRUCTIONSLOTS      96
-
-#define D3DMIN30SHADERINSTRUCTIONS          512
-#define D3DMAX30SHADERINSTRUCTIONS          32768
-
-
-typedef struct _D3DVSHADERCAPS2_0 {
-  DWORD  Caps;
-  INT    DynamicFlowControlDepth;
-  INT    NumTemps;
-  INT    StaticFlowControlDepth;
-} D3DVSHADERCAPS2_0;
-
-typedef struct _D3DPSHADERCAPS2_0 {
-  DWORD  Caps;
-  INT    DynamicFlowControlDepth;
-  INT    NumTemps;
-  INT    StaticFlowControlDepth;
-  INT    NumInstructionSlots;
-} D3DPSHADERCAPS2_0;
-
-/*
- * The d3dcaps9 structure
- */
-typedef struct _D3DCAPS9 {
-  D3DDEVTYPE          DeviceType;
-  UINT                AdapterOrdinal;
-  
-  DWORD               Caps;
-  DWORD               Caps2;
-  DWORD               Caps3;
-  DWORD               PresentationIntervals;
-  
-  DWORD               CursorCaps;
-  
-  DWORD               DevCaps;
-  
-  DWORD               PrimitiveMiscCaps;
-  DWORD               RasterCaps;
-  DWORD               ZCmpCaps;
-  DWORD               SrcBlendCaps;
-  DWORD               DestBlendCaps;
-  DWORD               AlphaCmpCaps;
-  DWORD               ShadeCaps;
-  DWORD               TextureCaps;
-  DWORD               TextureFilterCaps;
-  DWORD               CubeTextureFilterCaps;
-  DWORD               VolumeTextureFilterCaps;
-  DWORD               TextureAddressCaps;
-  DWORD               VolumeTextureAddressCaps;
-  
-  DWORD               LineCaps;
-  
-  DWORD               MaxTextureWidth, MaxTextureHeight;
-  DWORD               MaxVolumeExtent;
-  
-  DWORD               MaxTextureRepeat;
-  DWORD               MaxTextureAspectRatio;
-  DWORD               MaxAnisotropy;
-  float               MaxVertexW;
-  
-  float               GuardBandLeft;
-  float               GuardBandTop;
-  float               GuardBandRight;
-  float               GuardBandBottom;
-  
-  float               ExtentsAdjust;
-  DWORD               StencilCaps;
-  
-  DWORD               FVFCaps;
-  DWORD               TextureOpCaps;
-  DWORD               MaxTextureBlendStages;
-  DWORD               MaxSimultaneousTextures;
-  
-  DWORD               VertexProcessingCaps;
-  DWORD               MaxActiveLights;
-  DWORD               MaxUserClipPlanes;
-  DWORD               MaxVertexBlendMatrices;
-  DWORD               MaxVertexBlendMatrixIndex;
-  
-  float               MaxPointSize;
-  
-  DWORD               MaxPrimitiveCount;
-  DWORD               MaxVertexIndex;
-  DWORD               MaxStreams;
-  DWORD               MaxStreamStride;
-  
-  DWORD               VertexShaderVersion;
-  DWORD               MaxVertexShaderConst;
-  
-  DWORD               PixelShaderVersion;
-  float               PixelShader1xMaxValue;
-
-  /* DX 9 */
-  DWORD               DevCaps2;
-
-  float               MaxNpatchTessellationLevel;
-  DWORD               Reserved5;
-
-  UINT                MasterAdapterOrdinal;   
-  UINT                AdapterOrdinalInGroup;  
-  UINT                NumberOfAdaptersInGroup;
-  DWORD               DeclTypes;              
-  DWORD               NumSimultaneousRTs;     
-  DWORD               StretchRectFilterCaps;  
-  D3DVSHADERCAPS2_0   VS20Caps;
-  D3DPSHADERCAPS2_0   PS20Caps;
-  DWORD               VertexTextureFilterCaps;
-  DWORD               MaxVShaderInstructionsExecuted;
-  DWORD               MaxPShaderInstructionsExecuted;
-  DWORD               MaxVertexShader30InstructionSlots; 
-  DWORD               MaxPixelShader30InstructionSlots;
-
-} D3DCAPS9;
-
-#endif
diff --git a/misc/builddeps/win32/dx/include/d3d9types.h b/misc/builddeps/win32/dx/include/d3d9types.h
deleted file mode 100644 (file)
index e0e11df..0000000
+++ /dev/null
@@ -1,1582 +0,0 @@
-/*
- * Copyright (C) 2002-2003 Jason Edmeades 
- * Copyright (C) 2002-2003 Raphael Junqueira
- * Copyright (C) 2005 Oliver Stieber
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D9TYPES_H
-#define __WINE_D3D9TYPES_H
-
-#include <_mingw_dxhelper.h>
-
-/*****************************************************************************
- * Direct 3D v9 #defines
- */
-#ifndef D3DCLEAR_TARGET
-#define D3DCLEAR_TARGET   0x00000001L
-#endif
-#ifndef D3DCLEAR_ZBUFFER
-#define D3DCLEAR_ZBUFFER  0x00000002L
-#endif
-#ifndef D3DCLEAR_STENCIL
-#define D3DCLEAR_STENCIL  0x00000004L
-#endif
-
-#define D3DCLIPPLANE0 (1 << 0)
-#define D3DCLIPPLANE1 (1 << 1)
-#define D3DCLIPPLANE2 (1 << 2)
-#define D3DCLIPPLANE3 (1 << 3)
-#define D3DCLIPPLANE4 (1 << 4)
-#define D3DCLIPPLANE5 (1 << 5)
-
-#define D3DCOLOR_ARGB(a,r,g,b)       ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
-#define D3DCOLOR_COLORVALUE(r,g,b,a) D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
-#define D3DCOLOR_RGBA(r,g,b,a)       D3DCOLOR_ARGB(a,r,g,b)
-#define D3DCOLOR_XRGB(r,g,b)         D3DCOLOR_ARGB(0xff,r,g,b)
-#define D3DCOLOR_XYUV(y,u,v)         D3DCOLOR_ARGB(0xFF,y,u,v)
-#define D3DCOLOR_AYUV(a,y,u,v)       D3DCOLOR_ARGB(a,y,u,v)
-
-#define D3DCS_LEFT                   0x001L
-#define D3DCS_RIGHT                  0x002L
-#define D3DCS_TOP                    0x004L
-#define D3DCS_BOTTOM                 0x008L
-#define D3DCS_FRONT                  0x010L
-#define D3DCS_BACK                   0x020L
-#define D3DCS_PLANE0                 0x040L
-#define D3DCS_PLANE1                 0x080L
-#define D3DCS_PLANE2                 0x100L
-#define D3DCS_PLANE3                 0x200L
-#define D3DCS_PLANE4                 0x400L
-#define D3DCS_PLANE5                 0x800L
-#define D3DCS_ALL                    0xFFFL
-
-#define D3DFVF_TEXTUREFORMAT1 3
-#define D3DFVF_TEXTUREFORMAT2 0
-#define D3DFVF_TEXTUREFORMAT3 1
-#define D3DFVF_TEXTUREFORMAT4 2
-#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
-#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
-
-#define D3DLOCK_READONLY           0x0010
-#define D3DLOCK_NOSYSLOCK          0x0800
-#define D3DLOCK_NOOVERWRITE        0x1000
-#define D3DLOCK_DISCARD            0x2000
-#define D3DLOCK_DONOTWAIT          0x4000
-#define D3DLOCK_NO_DIRTY_UPDATE    0x8000
-
-#define D3DMAXUSERCLIPPLANES       32
-#define D3DCLIPPLANE0              (1 << 0)
-#define D3DCLIPPLANE1              (1 << 1)
-#define D3DCLIPPLANE2              (1 << 2)
-#define D3DCLIPPLANE3              (1 << 3)
-#define D3DCLIPPLANE4              (1 << 4)
-#define D3DCLIPPLANE5              (1 << 5)
-
-
-#define D3DRENDERSTATE_WRAPBIAS    128UL
-
-/* MSDN has this in d3d9caps.h, but it should be here */
-#define D3DTSS_TCI_PASSTHRU                       0x00000
-#define D3DTSS_TCI_CAMERASPACENORMAL              0x10000
-#define D3DTSS_TCI_CAMERASPACEPOSITION            0x20000
-#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR    0x30000
-#define D3DTSS_TCI_SPHEREMAP                      0x40000
-
-
-#define D3DTS_WORLD  D3DTS_WORLDMATRIX(0)
-#define D3DTS_WORLD1 D3DTS_WORLDMATRIX(1)
-#define D3DTS_WORLD2 D3DTS_WORLDMATRIX(2)
-#define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3)
-#define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
-
-#define D3DUSAGE_RENDERTARGET       0x00000001L
-#define D3DUSAGE_DEPTHSTENCIL       0x00000002L
-#define D3DUSAGE_WRITEONLY          0x00000008L
-#define D3DUSAGE_SOFTWAREPROCESSING 0x00000010L
-#define D3DUSAGE_DONOTCLIP          0x00000020L
-#define D3DUSAGE_POINTS             0x00000040L
-#define D3DUSAGE_RTPATCHES          0x00000080L
-#define D3DUSAGE_NPATCHES           0x00000100L
-#define D3DUSAGE_DYNAMIC            0x00000200L
-#define D3DUSAGE_AUTOGENMIPMAP      0x00000400L 
-#define D3DUSAGE_DMAP               0x00004000L
-
-#define D3DUSAGE_QUERY_FILTER                   0x00020000L
-#define D3DUSAGE_QUERY_LEGACYBUMPMAP            0x00008000L
-#define D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING 0x00080000L
-#define D3DUSAGE_QUERY_SRGBREAD                 0x00010000L
-#define D3DUSAGE_QUERY_SRGBWRITE                0x00040000L
-#define D3DUSAGE_QUERY_VERTEXTEXTURE            0x00100000L
-#define D3DUSAGE_QUERY_WRAPANDMIP               0x00200000L
-
-#define D3DWRAP_U        1
-#define D3DWRAP_V        2
-#define D3DWRAP_W        4
-#define D3DWRAPCOORD_0   1
-#define D3DWRAPCOORD_1   2
-#define D3DWRAPCOORD_2   4
-#define D3DWRAPCOORD_3   8
-
-#define MAX_DEVICE_IDENTIFIER_STRING        512
-
-#define D3DFVF_RESERVED0           0x0001
-#define D3DFVF_POSITION_MASK       0x400E
-#define D3DFVF_XYZ                 0x0002
-#define D3DFVF_XYZRHW              0x0004
-#define D3DFVF_XYZB1               0x0006
-#define D3DFVF_XYZB2               0x0008
-#define D3DFVF_XYZB3               0x000a
-#define D3DFVF_XYZB4               0x000c
-#define D3DFVF_XYZB5               0x000e
-#define D3DFVF_XYZW                0x4002
-#define D3DFVF_NORMAL              0x0010
-#define D3DFVF_PSIZE               0x0020
-#define D3DFVF_DIFFUSE             0x0040
-#define D3DFVF_SPECULAR            0x0080
-#define D3DFVF_TEXCOUNT_MASK       0x0f00
-#define D3DFVF_TEXCOUNT_SHIFT           8
-#define D3DFVF_TEX0                0x0000
-#define D3DFVF_TEX1                0x0100
-#define D3DFVF_TEX2                0x0200
-#define D3DFVF_TEX3                0x0300
-#define D3DFVF_TEX4                0x0400
-#define D3DFVF_TEX5                0x0500
-#define D3DFVF_TEX6                0x0600
-#define D3DFVF_TEX7                0x0700
-#define D3DFVF_TEX8                0x0800
-#define D3DFVF_LASTBETA_UBYTE4     0x1000
-#define D3DFVF_LASTBETA_D3DCOLOR   0x8000
-#define D3DFVF_RESERVED2           0x6000
-
-#define D3DTA_SELECTMASK        0x0000000f
-#define D3DTA_DIFFUSE           0x00000000
-#define D3DTA_CURRENT           0x00000001
-#define D3DTA_TEXTURE           0x00000002
-#define D3DTA_TFACTOR           0x00000003
-#define D3DTA_SPECULAR          0x00000004
-#define D3DTA_TEMP              0x00000005
-#define D3DTA_CONSTANT          0x00000006
-#define D3DTA_COMPLEMENT        0x00000010
-#define D3DTA_ALPHAREPLICATE    0x00000020
-
-#define D3DCOLORWRITEENABLE_RED   (1L<<0)   
-#define D3DCOLORWRITEENABLE_GREEN (1L<<1)
-#define D3DCOLORWRITEENABLE_BLUE  (1L<<2)
-#define D3DCOLORWRITEENABLE_ALPHA (1L<<3)
-
-#define D3DPV_DONOTCOPYDATA         (1 << 0)
-
-#define D3DSTREAMSOURCE_INDEXEDDATA  (1 << 30)
-#define D3DSTREAMSOURCE_INSTANCEDATA (2 << 30)
-
-#define D3D_MAX_SIMULTANEOUS_RENDERTARGETS 4
-
-#define MAXD3DDECLLENGTH         64 /* +end marker */
-#define MAXD3DDECLMETHOD         D3DDECLMETHOD_LOOKUPPRESAMPLED
-#define MAXD3DDECLTYPE           D3DDECLTYPE_UNUSED
-#define MAXD3DDECLUSAGE          D3DDECLUSAGE_SAMPLE
-#define MAXD3DDECLUSAGEINDEX     15
-
-#define D3DDMAPSAMPLER 256
-#define D3DVERTEXTEXTURESAMPLER0 (D3DDMAPSAMPLER+1)
-#define D3DVERTEXTEXTURESAMPLER1 (D3DDMAPSAMPLER+2)
-#define D3DVERTEXTEXTURESAMPLER2 (D3DDMAPSAMPLER+3)
-#define D3DVERTEXTEXTURESAMPLER3 (D3DDMAPSAMPLER+4)
-
-#ifndef MAKEFOURCC
-#define MAKEFOURCC(ch0, ch1, ch2, ch3)  \
-    ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |  \
-    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
-#endif /* MAKEFOURCC */
-
-/* Constants used by D3DPRESENT_PARAMETERS. when creating a device or swapchain */
-
-#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER  0x00000001 /* Create a lockable backbuffer */
-#define D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL 0x00000002 /* Discard Z buffer */
-#define D3DPRESENTFLAG_DEVICECLIP           0x00000004 /* Clip the window blited into the client area 2k + xp only */
-#define D3DPRESENTFLAG_VIDEO                0x00000010 /* backbuffer 'may' contain video data */
-#define D3DPRESENTFLAG_NOAUTOROTATE         0x00000020 /* d3d9ex, ignore display rotation */
-#define D3DPRESENTFLAG_UNPRUNEDMODE         0x00000040 /* d3d9ex, specify invalid display modes */
-
-#define D3DPRESENT_BACK_BUFFERS_MAX         3L
-#define D3DPRESENT_RATE_DEFAULT             0x00000000
-
-/**************************** 
- * Vertex Shaders Declaration
- */
-
-typedef enum _D3DDECLUSAGE {
-  D3DDECLUSAGE_POSITION     = 0,
-  D3DDECLUSAGE_BLENDWEIGHT  = 1,
-  D3DDECLUSAGE_BLENDINDICES = 2,
-  D3DDECLUSAGE_NORMAL       = 3,      
-  D3DDECLUSAGE_PSIZE        = 4,       
-  D3DDECLUSAGE_TEXCOORD     = 5,    
-  D3DDECLUSAGE_TANGENT      = 6,     
-  D3DDECLUSAGE_BINORMAL     = 7,    
-  D3DDECLUSAGE_TESSFACTOR   = 8,  
-  D3DDECLUSAGE_POSITIONT    = 9,   
-  D3DDECLUSAGE_COLOR        = 10,       
-  D3DDECLUSAGE_FOG          = 11,        
-  D3DDECLUSAGE_DEPTH        = 12,      
-  D3DDECLUSAGE_SAMPLE       = 13     
-} D3DDECLUSAGE;
-
-#define D3DMAXDECLUSAGE         D3DDECLUSAGE_SAMPLE
-#define D3DMAXDECLUSAGEINDEX    15
-#define D3DMAXDECLLENGTH        18
-#define D3DMAXDECLUSAGE_DX8     D3DDECLUSAGE_TEXCOORD
-
-typedef enum _D3DDECLMETHOD {
-  D3DDECLMETHOD_DEFAULT          = 0,
-  D3DDECLMETHOD_PARTIALU         = 1,
-  D3DDECLMETHOD_PARTIALV         = 2,
-  D3DDECLMETHOD_CROSSUV          = 3,
-  D3DDECLMETHOD_UV               = 4,
-  D3DDECLMETHOD_LOOKUP           = 5,
-  D3DDECLMETHOD_LOOKUPPRESAMPLED = 6
-} D3DDECLMETHOD;
-
-
-#define D3DMAXDECLMETHOD        D3DDECLMETHOD_LOOKUPPRESAMPLED
-
-typedef enum _D3DDECLTYPE {
-  D3DDECLTYPE_FLOAT1    =  0,
-  D3DDECLTYPE_FLOAT2    =  1,
-  D3DDECLTYPE_FLOAT3    =  2,
-  D3DDECLTYPE_FLOAT4    =  3,
-  D3DDECLTYPE_D3DCOLOR  =  4,
-  D3DDECLTYPE_UBYTE4    =  5,
-  D3DDECLTYPE_SHORT2    =  6,
-  D3DDECLTYPE_SHORT4    =  7,
-  /* VS 2.0 */
-  D3DDECLTYPE_UBYTE4N   =  8,
-  D3DDECLTYPE_SHORT2N   =  9,
-  D3DDECLTYPE_SHORT4N   = 10,
-  D3DDECLTYPE_USHORT2N  = 11,
-  D3DDECLTYPE_USHORT4N  = 12,
-  D3DDECLTYPE_UDEC3     = 13,
-  D3DDECLTYPE_DEC3N     = 14,
-  D3DDECLTYPE_FLOAT16_2 = 15,
-  D3DDECLTYPE_FLOAT16_4 = 16,
-  D3DDECLTYPE_UNUSED    = 17,
-} D3DDECLTYPE;
-
-#define D3DMAXDECLTYPE          D3DDECLTYPE_UNUSED
-
-typedef struct _D3DVERTEXELEMENT9 {
-  WORD    Stream;
-  WORD    Offset;
-  BYTE    Type;
-  BYTE    Method;
-  BYTE    Usage;
-  BYTE    UsageIndex;
-} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;
-
-
-typedef enum _D3DQUERYTYPE {
-    D3DQUERYTYPE_VCACHE = 4,
-    D3DQUERYTYPE_RESOURCEMANAGER = 5,
-    D3DQUERYTYPE_VERTEXSTATS = 6,
-    D3DQUERYTYPE_EVENT = 8,
-    D3DQUERYTYPE_OCCLUSION = 9,
-    D3DQUERYTYPE_TIMESTAMP = 10,
-    D3DQUERYTYPE_TIMESTAMPDISJOINT = 11,
-    D3DQUERYTYPE_TIMESTAMPFREQ = 12,
-    D3DQUERYTYPE_PIPELINETIMINGS = 13,
-    D3DQUERYTYPE_INTERFACETIMINGS = 14,
-    D3DQUERYTYPE_VERTEXTIMINGS = 15,
-    D3DQUERYTYPE_PIXELTIMINGS = 16,
-    D3DQUERYTYPE_BANDWIDTHTIMINGS = 17,
-    D3DQUERYTYPE_CACHEUTILIZATION = 18
-} D3DQUERYTYPE;
-
-#define D3DISSUE_BEGIN   (1 << 1)
-#define D3DISSUE_END     (1 << 0)
-#define D3DGETDATA_FLUSH (1 << 0)
-
-
-#define D3DDECL_END() {0xFF,0,D3DDECLTYPE_UNUSED,0,0,0}
-#define D3DDP_MAXTEXCOORD   8
-
-
-#define D3DVSD_MAKETOKENTYPE(TokenType) \
-  ((TokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK)
-
-#define D3DVSD_CONST(ConstantAddress, Count) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_CONSTMEM) | ((Count) << D3DVSD_CONSTCOUNTSHIFT) | (ConstantAddress))
-
-#define D3DVSD_END() 0xFFFFFFFF
-
-#define D3DVSD_NOP() 0x00000000
-
-#define D3DVSD_REG(VertexRegister, Type) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | ((Type) << D3DVSD_DATATYPESHIFT) | (VertexRegister))
-
-#define D3DVSD_SKIP(Count) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | 0x10000000 | ((Count) << D3DVSD_SKIPCOUNTSHIFT))
-
-#define D3DVSD_STREAM(StreamNumber) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (StreamNumber))
-
-#define D3DVSD_STREAM_TESS() \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (D3DVSD_STREAMTESSMASK))
-
-#define D3DVSD_TESSNORMAL(RegisterIn, RegisterOut) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | ((RegisterIn) << D3DVSD_VERTEXREGINSHIFT) | ((0x02) << D3DVSD_DATATYPESHIFT) | (RegisterOut))
-
-#define D3DVSD_TESSUV(Register) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | 0x10000000 | ((0x01) << D3DVSD_DATATYPESHIFT) | (Register))
-
-
-/********************************
- * Pixel/Vertex Shaders Functions
- */
-
-/** Maximum number of supported texture coordinates sets operation */
-#define D3DDP_MAXTEXCOORD   8
-
-/** opcode token mask */
-#define D3DSI_OPCODE_MASK       0x0000FFFF
-#define D3DSI_INSTLENGTH_MASK   0x0F000000
-#define D3DSI_INSTLENGTH_SHIFT  24
-
-/** opcodes types for PS and VS */
-typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE {
-  D3DSIO_NOP          =  0,
-  D3DSIO_MOV          =  1,
-  D3DSIO_ADD          =  2,
-  D3DSIO_SUB          =  3,
-  D3DSIO_MAD          =  4,
-  D3DSIO_MUL          =  5,
-  D3DSIO_RCP          =  6,
-  D3DSIO_RSQ          =  7,
-  D3DSIO_DP3          =  8,
-  D3DSIO_DP4          =  9,
-  D3DSIO_MIN          = 10,
-  D3DSIO_MAX          = 11,
-  D3DSIO_SLT          = 12,
-  D3DSIO_SGE          = 13,
-  D3DSIO_EXP          = 14,
-  D3DSIO_LOG          = 15,
-  D3DSIO_LIT          = 16,
-  D3DSIO_DST          = 17,
-  D3DSIO_LRP          = 18,
-  D3DSIO_FRC          = 19,
-  D3DSIO_M4x4         = 20,
-  D3DSIO_M4x3         = 21,
-  D3DSIO_M3x4         = 22,
-  D3DSIO_M3x3         = 23,
-  D3DSIO_M3x2         = 24,
-  D3DSIO_CALL         = 25,
-  D3DSIO_CALLNZ       = 26,
-  D3DSIO_LOOP         = 27,
-  D3DSIO_RET          = 28,
-  D3DSIO_ENDLOOP      = 29,
-  D3DSIO_LABEL        = 30,
-  D3DSIO_DCL          = 31,
-  D3DSIO_POW          = 32,
-  D3DSIO_CRS          = 33,
-  D3DSIO_SGN          = 34,
-  D3DSIO_ABS          = 35,
-  D3DSIO_NRM          = 36,
-  D3DSIO_SINCOS       = 37,
-  D3DSIO_REP          = 38,
-  D3DSIO_ENDREP       = 39,
-  D3DSIO_IF           = 40,
-  D3DSIO_IFC          = 41,
-  D3DSIO_ELSE         = 42,
-  D3DSIO_ENDIF        = 43,
-  D3DSIO_BREAK        = 44,
-  D3DSIO_BREAKC       = 45,
-  D3DSIO_MOVA         = 46,
-  D3DSIO_DEFB         = 47,
-  D3DSIO_DEFI         = 48,
-
-  D3DSIO_TEXCOORD     = 64,
-  D3DSIO_TEXKILL      = 65,
-  D3DSIO_TEX          = 66,
-  D3DSIO_TEXBEM       = 67,
-  D3DSIO_TEXBEML      = 68,
-  D3DSIO_TEXREG2AR    = 69,
-  D3DSIO_TEXREG2GB    = 70,
-  D3DSIO_TEXM3x2PAD   = 71,
-  D3DSIO_TEXM3x2TEX   = 72,
-  D3DSIO_TEXM3x3PAD   = 73,
-  D3DSIO_TEXM3x3TEX   = 74,
-  D3DSIO_TEXM3x3DIFF  = 75,
-  D3DSIO_TEXM3x3SPEC  = 76,
-  D3DSIO_TEXM3x3VSPEC = 77,
-  D3DSIO_EXPP         = 78,
-  D3DSIO_LOGP         = 79,
-  D3DSIO_CND          = 80,
-  D3DSIO_DEF          = 81,
-  D3DSIO_TEXREG2RGB   = 82,
-  D3DSIO_TEXDP3TEX    = 83,
-  D3DSIO_TEXM3x2DEPTH = 84,
-  D3DSIO_TEXDP3       = 85,
-  D3DSIO_TEXM3x3      = 86,
-  D3DSIO_TEXDEPTH     = 87,
-  D3DSIO_CMP          = 88,
-  D3DSIO_BEM          = 89,
-  D3DSIO_DP2ADD       = 90,
-  D3DSIO_DSX          = 91,
-  D3DSIO_DSY          = 92,
-  D3DSIO_TEXLDD       = 93,
-  D3DSIO_SETP         = 94,
-  D3DSIO_TEXLDL       = 95,
-  D3DSIO_BREAKP       = 96,
-  
-  D3DSIO_PHASE        = 0xFFFD,
-  D3DSIO_COMMENT      = 0xFFFE,
-  D3DSIO_END          = 0XFFFF,
-
-  D3DSIO_FORCE_DWORD  = 0X7FFFFFFF /** for 32-bit alignment */
-} D3DSHADER_INSTRUCTION_OPCODE_TYPE;
-
-#define D3DSINCOSCONST1   -1.5500992e-006f, -2.1701389e-005f,  0.0026041667f, 0.00026041668f
-#define D3DSINCOSCONST2   -0.020833334f,    -0.12500000f,      1.0f,          0.50000000f
-
-#define D3DSHADER_INSTRUCTION_PREDICATED    (1 << 28)
-
-#define D3DSI_TEXLD_PROJECT 0x00010000
-#define D3DSI_TEXLD_BIAS    0x00020000
-
-/** for parallelism */
-#define D3DSI_COISSUE 0x40000000
-
-#define D3DSP_DCL_USAGE_SHIFT 0
-#define D3DSP_DCL_USAGE_MASK  0x0000000f
-
-#define D3DSP_DCL_USAGEINDEX_SHIFT 16
-#define D3DSP_DCL_USAGEINDEX_MASK  0x000f0000
-
-#define D3DSP_TEXTURETYPE_SHIFT 27
-#define D3DSP_TEXTURETYPE_MASK  0x78000000
-
-typedef enum _D3DSAMPLER_TEXTURE_TYPE {
-  D3DSTT_UNKNOWN      = 0 << D3DSP_TEXTURETYPE_SHIFT,
-  D3DSTT_1D           = 1 << D3DSP_TEXTURETYPE_SHIFT,
-  D3DSTT_2D           = 2 << D3DSP_TEXTURETYPE_SHIFT,
-  D3DSTT_CUBE         = 3 << D3DSP_TEXTURETYPE_SHIFT,
-  D3DSTT_VOLUME       = 4 << D3DSP_TEXTURETYPE_SHIFT,
-
-  D3DSTT_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSAMPLER_TEXTURE_TYPE;
-
-#define D3DSP_REGNUM_MASK       0x000007FF
-
-/** destination parameter modifiers (.xyzw) */
-#define D3DSP_WRITEMASK_0       0x00010000 /* .x r */
-#define D3DSP_WRITEMASK_1       0x00020000 /* .y g */
-#define D3DSP_WRITEMASK_2       0x00040000 /* .z b */
-#define D3DSP_WRITEMASK_3       0x00080000 /* .w a */
-#define D3DSP_WRITEMASK_ALL     0x000F0000 /* all */
-
-#define D3DSP_DSTMOD_SHIFT      20
-#define D3DSP_DSTMOD_MASK       (0xF << D3DSP_DSTMOD_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_DSTMOD_TYPE {
-  D3DSPDM_NONE             = 0 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_SATURATE         = 1 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_PARTIALPRECISION = 2 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_MSAMPCENTROID    = 4 << D3DSP_DSTMOD_SHIFT,
-
-  D3DSPDM_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_DSTMOD_TYPE;
-
-/** destination param */
-#define D3DSP_DSTSHIFT_SHIFT     24
-#define D3DSP_DSTSHIFT_MASK      (0xF << D3DSP_DSTSHIFT_SHIFT)
-
-/** destination/source reg type */
-#define D3DSP_REGTYPE_SHIFT      28
-#define D3DSP_REGTYPE_SHIFT2     8
-#define D3DSP_REGTYPE_MASK       (0x7 << D3DSP_REGTYPE_SHIFT)
-#define D3DSP_REGTYPE_MASK2      0x00001800
-
-typedef enum _D3DSHADER_PARAM_REGISTER_TYPE {
-  D3DSPR_TEMP         =  0, 
-  D3DSPR_INPUT        =  1,
-  D3DSPR_CONST        =  2,
-  D3DSPR_ADDR         =  3,
-  D3DSPR_TEXTURE      =  3,
-  D3DSPR_RASTOUT      =  4,
-  D3DSPR_ATTROUT      =  5,
-  D3DSPR_TEXCRDOUT    =  6,
-  D3DSPR_OUTPUT       =  6,
-  D3DSPR_CONSTINT     =  7,
-  D3DSPR_COLOROUT     =  8,
-  D3DSPR_DEPTHOUT     =  9,
-  D3DSPR_SAMPLER      = 10,
-  D3DSPR_CONST2       = 11,
-  D3DSPR_CONST3       = 12,
-  D3DSPR_CONST4       = 13,
-  D3DSPR_CONSTBOOL    = 14,
-  D3DSPR_LOOP         = 15,
-  D3DSPR_TEMPFLOAT16  = 16,
-  D3DSPR_MISCTYPE     = 17,
-  D3DSPR_LABEL        = 18,
-  D3DSPR_PREDICATE    = 19,
-
-  D3DSPR_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_REGISTER_TYPE;
-
-typedef enum _D3DSHADER_MISCTYPE_OFFSETS {
-    D3DSMO_POSITION  = 0,
-    D3DSMO_FACE      = 1
-} D3DSHADER_MISCTYPE_OFFSETS;
-
-typedef enum _D3DVS_RASTOUT_OFFSETS {
-  D3DSRO_POSITION     = 0,
-  D3DSRO_FOG          = 1,
-  D3DSRO_POINT_SIZE   = 2,
-
-  D3DSRO_FORCE_DWORD  = 0x7FFFFFFF
-} D3DVS_RASTOUT_OFFSETS;
-
-#define D3DVS_ADDRESSMODE_SHIFT  13
-#define D3DVS_ADDRESSMODE_MASK   (0x1 << D3DVS_ADDRESSMODE_SHIFT)
-
-typedef enum _D3DVS_ADDRESSMODE_TYPE {
-  D3DVS_ADDRMODE_ABSOLUTE     = 0 << D3DVS_ADDRESSMODE_SHIFT,
-  D3DVS_ADDRMODE_RELATIVE     = 1 << D3DVS_ADDRESSMODE_SHIFT,
-
-  D3DVS_ADDRMODE_FORCE_DWORD  = 0x7FFFFFFF
-} D3DVS_ADDRESSMODE_TYPE;
-
-#define D3DSHADER_ADDRESSMODE_SHIFT 13
-#define D3DSHADER_ADDRESSMODE_MASK  (1 << D3DSHADER_ADDRESSMODE_SHIFT)
-
-typedef enum _D3DSHADER_ADDRESSMODE_TYPE {
-  D3DSHADER_ADDRMODE_ABSOLUTE    = 0 << D3DSHADER_ADDRESSMODE_SHIFT,
-  D3DSHADER_ADDRMODE_RELATIVE    = 1 << D3DSHADER_ADDRESSMODE_SHIFT,
-
-  D3DSHADER_ADDRMODE_FORCE_DWORD = 0x7FFFFFFF
-} D3DSHADER_ADDRESSMODE_TYPE;
-
-
-#define D3DVS_SWIZZLE_SHIFT      16
-#define D3DVS_SWIZZLE_MASK       (0xFF << D3DVS_SWIZZLE_SHIFT)
-
-#define D3DSP_SWIZZLE_SHIFT      16
-#define D3DSP_SWIZZLE_MASK       (0xFF << D3DSP_SWIZZLE_SHIFT)
-
-#define D3DVS_X_X       (0 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_Y       (1 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_Z       (2 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_W       (3 << D3DVS_SWIZZLE_SHIFT)
-
-#define D3DVS_Y_X       (0 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_W       (3 << (D3DVS_SWIZZLE_SHIFT + 2))
-
-#define D3DVS_Z_X       (0 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_W       (3 << (D3DVS_SWIZZLE_SHIFT + 4))
-
-#define D3DVS_W_X       (0 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_W       (3 << (D3DVS_SWIZZLE_SHIFT + 6))
-
-#define D3DVS_NOSWIZZLE (D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W)
-
-#define D3DSP_NOSWIZZLE \
-    ((0 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
-
-#define D3DSP_SRCMOD_SHIFT      24
-#define D3DSP_SRCMOD_MASK       (0xF << D3DSP_SRCMOD_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE {
-  D3DSPSM_NONE         =  0 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_NEG          =  1 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_BIAS         =  2 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_BIASNEG      =  3 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_SIGN         =  4 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_SIGNNEG      =  5 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_COMP         =  6 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_X2           =  7 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_X2NEG        =  8 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_DZ           =  9 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_DW           = 10 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_ABS          = 11 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_ABSNEG       = 12 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_NOT          = 13 << D3DSP_SRCMOD_SHIFT,
-
-  D3DSPSM_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_SRCMOD_TYPE;
-
-#define D3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
-#define D3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
-#define D3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
-#define D3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
-
-#define D3DSI_COMMENTSIZE_SHIFT 16
-#define D3DSI_COMMENTSIZE_MASK (0x7FFF << D3DSI_COMMENTSIZE_SHIFT)
-
-#define D3DSHADER_COMMENT(commentSize) \
-  ((((commentSize) << D3DSI_COMMENTSIZE_SHIFT) & D3DSI_COMMENTSIZE_MASK) | D3DSIO_COMMENT)
-
-#define D3DPS_END() 0x0000FFFF
-#define D3DVS_END() 0x0000FFFF
-
-
-/*****************************************************************************
- * Direct 3D v8 enumerated types
- */
-typedef enum _D3DBACKBUFFER_TYPE {
-    D3DBACKBUFFER_TYPE_MONO         = 0,
-    D3DBACKBUFFER_TYPE_LEFT         = 1,
-    D3DBACKBUFFER_TYPE_RIGHT        = 2,
-
-    D3DBACKBUFFER_TYPE_FORCE_DWORD  = 0x7fffffff
-} D3DBACKBUFFER_TYPE;
-
-#define D3DPRESENT_BACK_BUFFER_MAX 3L
-
-typedef enum _D3DBASISTYPE {
-   D3DBASIS_BEZIER        = 0,
-   D3DBASIS_BSPLINE       = 1,
-   D3DBASIS_INTERPOLATE   = 2,
-
-   D3DBASIS_FORCE_DWORD   = 0x7fffffff
-} D3DBASISTYPE;
-
-typedef enum _D3DBLEND {
-    D3DBLEND_ZERO               =  1,
-    D3DBLEND_ONE                =  2,
-    D3DBLEND_SRCCOLOR           =  3,
-    D3DBLEND_INVSRCCOLOR        =  4,
-    D3DBLEND_SRCALPHA           =  5,
-    D3DBLEND_INVSRCALPHA        =  6,
-    D3DBLEND_DESTALPHA          =  7,
-    D3DBLEND_INVDESTALPHA       =  8,
-    D3DBLEND_DESTCOLOR          =  9,
-    D3DBLEND_INVDESTCOLOR       = 10,
-    D3DBLEND_SRCALPHASAT        = 11,
-    D3DBLEND_BOTHSRCALPHA       = 12,
-    D3DBLEND_BOTHINVSRCALPHA    = 13,
-    D3DBLEND_BLENDFACTOR        = 14,
-    D3DBLEND_INVBLENDFACTOR     = 15,
-    D3DBLEND_FORCE_DWORD        = 0x7fffffff
-} D3DBLEND;
-
-typedef enum _D3DBLENDOP {
-    D3DBLENDOP_ADD              = 1,
-    D3DBLENDOP_SUBTRACT         = 2,
-    D3DBLENDOP_REVSUBTRACT      = 3,
-    D3DBLENDOP_MIN              = 4,
-    D3DBLENDOP_MAX              = 5,
-
-    D3DBLENDOP_FORCE_DWORD      = 0x7fffffff
-} D3DBLENDOP;
-
-typedef enum _D3DCMPFUNC {
-    D3DCMP_NEVER                = 1,
-    D3DCMP_LESS                 = 2,
-    D3DCMP_EQUAL                = 3,
-    D3DCMP_LESSEQUAL            = 4,
-    D3DCMP_GREATER              = 5,
-    D3DCMP_NOTEQUAL             = 6,
-    D3DCMP_GREATEREQUAL         = 7,
-    D3DCMP_ALWAYS               = 8,
-
-    D3DCMP_FORCE_DWORD          = 0x7fffffff
-} D3DCMPFUNC;
-
-typedef enum _D3DCUBEMAP_FACES {
-    D3DCUBEMAP_FACE_POSITIVE_X     = 0,
-    D3DCUBEMAP_FACE_NEGATIVE_X     = 1,
-    D3DCUBEMAP_FACE_POSITIVE_Y     = 2,
-    D3DCUBEMAP_FACE_NEGATIVE_Y     = 3,
-    D3DCUBEMAP_FACE_POSITIVE_Z     = 4,
-    D3DCUBEMAP_FACE_NEGATIVE_Z     = 5,
-
-    D3DCUBEMAP_FACE_FORCE_DWORD    = 0xffffffff
-} D3DCUBEMAP_FACES;
-
-typedef enum _D3DCULL {
-    D3DCULL_NONE                = 1,
-    D3DCULL_CW                  = 2,
-    D3DCULL_CCW                 = 3,
-
-    D3DCULL_FORCE_DWORD         = 0x7fffffff
-} D3DCULL;
-
-typedef enum _D3DDEBUGMONITORTOKENS {
-    D3DDMT_ENABLE          = 0,
-    D3DDMT_DISABLE         = 1,
-
-    D3DDMT_FORCE_DWORD     = 0x7fffffff
-} D3DDEBUGMONITORTOKENS;
-
-typedef enum _D3DDEGREETYPE {
-    D3DDEGREE_LINEAR      = 1,
-    D3DDEGREE_QUADRATIC   = 2,
-    D3DDEGREE_CUBIC       = 3,
-    D3DDEGREE_QUINTIC     = 5,
-    
-    D3DDEGREE_FORCE_DWORD   = 0x7fffffff
-} D3DDEGREETYPE;
-
-typedef enum _D3DDEVTYPE {
-    D3DDEVTYPE_HAL         = 1,
-    D3DDEVTYPE_REF         = 2,
-    D3DDEVTYPE_SW          = 3,
-    D3DDEVTYPE_NULLREF     = 4,
-
-    D3DDEVTYPE_FORCE_DWORD = 0xffffffff
-} D3DDEVTYPE;
-
-typedef enum _D3DFILLMODE {
-    D3DFILL_POINT               = 1,
-    D3DFILL_WIREFRAME           = 2,
-    D3DFILL_SOLID               = 3,
-
-    D3DFILL_FORCE_DWORD         = 0x7fffffff
-} D3DFILLMODE;
-
-typedef enum _D3DFOGMODE {
-    D3DFOG_NONE                 = 0,
-    D3DFOG_EXP                  = 1,
-    D3DFOG_EXP2                 = 2,
-    D3DFOG_LINEAR               = 3,
-
-    D3DFOG_FORCE_DWORD          = 0x7fffffff
-} D3DFOGMODE;
-
-typedef enum _D3DFORMAT {
-    D3DFMT_UNKNOWN              =   0,
-
-    D3DFMT_R8G8B8               =  20,
-    D3DFMT_A8R8G8B8             =  21,
-    D3DFMT_X8R8G8B8             =  22,
-    D3DFMT_R5G6B5               =  23,
-    D3DFMT_X1R5G5B5             =  24,
-    D3DFMT_A1R5G5B5             =  25,
-    D3DFMT_A4R4G4B4             =  26,
-    D3DFMT_R3G3B2               =  27,
-    D3DFMT_A8                   =  28,
-    D3DFMT_A8R3G3B2             =  29,
-    D3DFMT_X4R4G4B4             =  30,
-    D3DFMT_A2B10G10R10          =  31,
-    D3DFMT_A8B8G8R8             =  32,
-    D3DFMT_X8B8G8R8             =  33,
-    D3DFMT_G16R16               =  34,
-    D3DFMT_A2R10G10B10          =  35,
-    D3DFMT_A16B16G16R16         =  36,
-  
-
-    D3DFMT_A8P8                 =  40,
-    D3DFMT_P8                   =  41,
-
-    D3DFMT_L8                   =  50,
-    D3DFMT_A8L8                 =  51,
-    D3DFMT_A4L4                 =  52,
-
-    D3DFMT_V8U8                 =  60,
-    D3DFMT_L6V5U5               =  61,
-    D3DFMT_X8L8V8U8             =  62,
-    D3DFMT_Q8W8V8U8             =  63,
-    D3DFMT_V16U16               =  64,
-    D3DFMT_A2W10V10U10          =  67,
-
-    D3DFMT_UYVY                 =  MAKEFOURCC('U', 'Y', 'V', 'Y'),
-    D3DFMT_YUY2                 =  MAKEFOURCC('Y', 'U', 'Y', '2'),
-    D3DFMT_DXT1                 =  MAKEFOURCC('D', 'X', 'T', '1'),
-    D3DFMT_DXT2                 =  MAKEFOURCC('D', 'X', 'T', '2'),
-    D3DFMT_DXT3                 =  MAKEFOURCC('D', 'X', 'T', '3'),
-    D3DFMT_DXT4                 =  MAKEFOURCC('D', 'X', 'T', '4'),
-    D3DFMT_DXT5                 =  MAKEFOURCC('D', 'X', 'T', '5'),
-    D3DFMT_MULTI2_ARGB8         =  MAKEFOURCC('M', 'E', 'T', '1'),
-    D3DFMT_G8R8_G8B8            =  MAKEFOURCC('G', 'R', 'G', 'B'),
-    D3DFMT_R8G8_B8G8            =  MAKEFOURCC('R', 'G', 'B', 'G'),
-
-    D3DFMT_D16_LOCKABLE         =  70,
-    D3DFMT_D32                  =  71,
-    D3DFMT_D15S1                =  73,
-    D3DFMT_D24S8                =  75,
-    D3DFMT_D24X8                =  77,
-    D3DFMT_D24X4S4              =  79,
-    D3DFMT_D16                  =  80,
-    D3DFMT_L16                  =  81,
-    D3DFMT_D32F_LOCKABLE        =  82,
-    D3DFMT_D24FS8               =  83,
-
-    D3DFMT_VERTEXDATA           = 100,
-    D3DFMT_INDEX16              = 101,
-    D3DFMT_INDEX32              = 102,
-    D3DFMT_Q16W16V16U16         = 110,
-    /* Floating point formats */
-    D3DFMT_R16F                 = 111,
-    D3DFMT_G16R16F              = 112,
-    D3DFMT_A16B16G16R16F        = 113,
-    
-    /* IEEE formats */
-    D3DFMT_R32F                 = 114,
-    D3DFMT_G32R32F              = 115,
-    D3DFMT_A32B32G32R32F        = 116,
-    
-    D3DFMT_CxV8U8               = 117,
-
-
-    D3DFMT_FORCE_DWORD          = 0xFFFFFFFF
-} D3DFORMAT;
-
-typedef enum _D3DLIGHTTYPE {
-    D3DLIGHT_POINT          = 1,
-    D3DLIGHT_SPOT           = 2,
-    D3DLIGHT_DIRECTIONAL    = 3,
-
-    D3DLIGHT_FORCE_DWORD    = 0x7fffffff
-} D3DLIGHTTYPE;
-
-typedef enum _D3DMATERIALCOLORSOURCE {
-    D3DMCS_MATERIAL         = 0,
-    D3DMCS_COLOR1           = 1,
-    D3DMCS_COLOR2           = 2,
-
-    D3DMCS_FORCE_DWORD      = 0x7fffffff
-} D3DMATERIALCOLORSOURCE;
-
-typedef enum _D3DMULTISAMPLE_TYPE {
-    D3DMULTISAMPLE_NONE            =  0,
-    D3DMULTISAMPLE_NONMASKABLE     =  1,
-    D3DMULTISAMPLE_2_SAMPLES       =  2,
-    D3DMULTISAMPLE_3_SAMPLES       =  3,
-    D3DMULTISAMPLE_4_SAMPLES       =  4,
-    D3DMULTISAMPLE_5_SAMPLES       =  5,
-    D3DMULTISAMPLE_6_SAMPLES       =  6,
-    D3DMULTISAMPLE_7_SAMPLES       =  7,
-    D3DMULTISAMPLE_8_SAMPLES       =  8,
-    D3DMULTISAMPLE_9_SAMPLES       =  9,
-    D3DMULTISAMPLE_10_SAMPLES      = 10,
-    D3DMULTISAMPLE_11_SAMPLES      = 11,
-    D3DMULTISAMPLE_12_SAMPLES      = 12,
-    D3DMULTISAMPLE_13_SAMPLES      = 13,
-    D3DMULTISAMPLE_14_SAMPLES      = 14,
-    D3DMULTISAMPLE_15_SAMPLES      = 15,
-    D3DMULTISAMPLE_16_SAMPLES      = 16,
-
-    D3DMULTISAMPLE_FORCE_DWORD     = 0x7fffffff
-} D3DMULTISAMPLE_TYPE;
-
-#if 0
-typedef enum _D3DORDERTYPE {
-   D3DORDER_LINEAR      = 1,
-   D3DORDER_QUADRATIC   = 2,
-   D3DORDER_CUBIC       = 3,
-   D3DORDER_QUINTIC     = 5,
-
-   D3DORDER_FORCE_DWORD = 0x7fffffff
-} D3DORDERTYPE;
-#endif
-typedef enum _D3DPATCHEDGESTYLE {
-   D3DPATCHEDGE_DISCRETE    = 0,
-   D3DPATCHEDGE_CONTINUOUS  = 1,
-
-   D3DPATCHEDGE_FORCE_DWORD = 0x7fffffff,
-} D3DPATCHEDGESTYLE;
-
-typedef enum _D3DPOOL {
-    D3DPOOL_DEFAULT                 = 0,
-    D3DPOOL_MANAGED                 = 1,
-    D3DPOOL_SYSTEMMEM               = 2,
-    D3DPOOL_SCRATCH                 = 3,
-
-    D3DPOOL_FORCE_DWORD             = 0x7fffffff
-} D3DPOOL;
-
-typedef enum _D3DPRIMITIVETYPE {
-    D3DPT_POINTLIST             = 1,
-    D3DPT_LINELIST              = 2,
-    D3DPT_LINESTRIP             = 3,
-    D3DPT_TRIANGLELIST          = 4,
-    D3DPT_TRIANGLESTRIP         = 5,
-    D3DPT_TRIANGLEFAN           = 6,
-
-    D3DPT_FORCE_DWORD           = 0x7fffffff
-} D3DPRIMITIVETYPE;
-
-typedef enum _D3DRENDERSTATETYPE {
-    D3DRS_ZENABLE                   =   7,
-    D3DRS_FILLMODE                  =   8,
-    D3DRS_SHADEMODE                 =   9,
-    D3DRS_ZWRITEENABLE              =  14,
-    D3DRS_ALPHATESTENABLE           =  15,
-    D3DRS_LASTPIXEL                 =  16,
-    D3DRS_SRCBLEND                  =  19,
-    D3DRS_DESTBLEND                 =  20,
-    D3DRS_CULLMODE                  =  22,
-    D3DRS_ZFUNC                     =  23,
-    D3DRS_ALPHAREF                  =  24,
-    D3DRS_ALPHAFUNC                 =  25,
-    D3DRS_DITHERENABLE              =  26,
-    D3DRS_ALPHABLENDENABLE          =  27,
-    D3DRS_FOGENABLE                 =  28,
-    D3DRS_SPECULARENABLE            =  29,
-    D3DRS_FOGCOLOR                  =  34,
-    D3DRS_FOGTABLEMODE              =  35,
-    D3DRS_FOGSTART                  =  36,
-    D3DRS_FOGEND                    =  37,
-    D3DRS_FOGDENSITY                =  38,
-    D3DRS_RANGEFOGENABLE            =  48,
-    D3DRS_STENCILENABLE             =  52,
-    D3DRS_STENCILFAIL               =  53,
-    D3DRS_STENCILZFAIL              =  54,
-    D3DRS_STENCILPASS               =  55,
-    D3DRS_STENCILFUNC               =  56,
-    D3DRS_STENCILREF                =  57,
-    D3DRS_STENCILMASK               =  58,
-    D3DRS_STENCILWRITEMASK          =  59,
-    D3DRS_TEXTUREFACTOR             =  60,
-    D3DRS_WRAP0                     = 128,
-    D3DRS_WRAP1                     = 129,
-    D3DRS_WRAP2                     = 130,
-    D3DRS_WRAP3                     = 131,
-    D3DRS_WRAP4                     = 132,
-    D3DRS_WRAP5                     = 133,
-    D3DRS_WRAP6                     = 134,
-    D3DRS_WRAP7                     = 135,
-    D3DRS_CLIPPING                  = 136,
-    D3DRS_LIGHTING                  = 137,
-    D3DRS_AMBIENT                   = 139,
-    D3DRS_FOGVERTEXMODE             = 140,
-    D3DRS_COLORVERTEX               = 141,
-    D3DRS_LOCALVIEWER               = 142,
-    D3DRS_NORMALIZENORMALS          = 143,
-    D3DRS_DIFFUSEMATERIALSOURCE     = 145,
-    D3DRS_SPECULARMATERIALSOURCE    = 146,
-    D3DRS_AMBIENTMATERIALSOURCE     = 147,
-    D3DRS_EMISSIVEMATERIALSOURCE    = 148,
-    D3DRS_VERTEXBLEND               = 151,
-    D3DRS_CLIPPLANEENABLE           = 152,
-    D3DRS_POINTSIZE                 = 154,
-    D3DRS_POINTSIZE_MIN             = 155,
-    D3DRS_POINTSPRITEENABLE         = 156,
-    D3DRS_POINTSCALEENABLE          = 157,
-    D3DRS_POINTSCALE_A              = 158,
-    D3DRS_POINTSCALE_B              = 159,
-    D3DRS_POINTSCALE_C              = 160,
-    D3DRS_MULTISAMPLEANTIALIAS      = 161,
-    D3DRS_MULTISAMPLEMASK           = 162,
-    D3DRS_PATCHEDGESTYLE            = 163,
-    D3DRS_DEBUGMONITORTOKEN         = 165,
-    D3DRS_POINTSIZE_MAX             = 166,
-    D3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
-    D3DRS_COLORWRITEENABLE          = 168,
-    D3DRS_TWEENFACTOR               = 170,
-    D3DRS_BLENDOP                   = 171,
-    D3DRS_POSITIONDEGREE            = 172,
-    D3DRS_NORMALDEGREE              = 173,
-    D3DRS_SCISSORTESTENABLE         = 174,
-    D3DRS_SLOPESCALEDEPTHBIAS       = 175,
-    D3DRS_ANTIALIASEDLINEENABLE     = 176,
-    D3DRS_MINTESSELLATIONLEVEL      = 178,
-    D3DRS_MAXTESSELLATIONLEVEL      = 179,
-    D3DRS_ADAPTIVETESS_X            = 180,
-    D3DRS_ADAPTIVETESS_Y            = 181,
-    D3DRS_ADAPTIVETESS_Z            = 182,
-    D3DRS_ADAPTIVETESS_W            = 183,
-    D3DRS_ENABLEADAPTIVETESSELLATION= 184,
-    D3DRS_TWOSIDEDSTENCILMODE       = 185,
-    D3DRS_CCW_STENCILFAIL           = 186,
-    D3DRS_CCW_STENCILZFAIL          = 187,
-    D3DRS_CCW_STENCILPASS           = 188,
-    D3DRS_CCW_STENCILFUNC           = 189,
-    D3DRS_COLORWRITEENABLE1         = 190,
-    D3DRS_COLORWRITEENABLE2         = 191,
-    D3DRS_COLORWRITEENABLE3         = 192,
-    D3DRS_BLENDFACTOR               = 193,
-    D3DRS_SRGBWRITEENABLE           = 194,
-    D3DRS_DEPTHBIAS                 = 195,
-    D3DRS_WRAP8                     = 198,
-    D3DRS_WRAP9                     = 199,
-    D3DRS_WRAP10                    = 200,
-    D3DRS_WRAP11                    = 201,
-    D3DRS_WRAP12                    = 202,
-    D3DRS_WRAP13                    = 203,
-    D3DRS_WRAP14                    = 204,
-    D3DRS_WRAP15                    = 205,
-    D3DRS_SEPARATEALPHABLENDENABLE  = 206,
-    D3DRS_SRCBLENDALPHA             = 207,
-    D3DRS_DESTBLENDALPHA            = 208,
-    D3DRS_BLENDOPALPHA              = 209,
-
-    D3DRS_FORCE_DWORD               = 0x7fffffff
-} D3DRENDERSTATETYPE;
-
-typedef enum _D3DRESOURCETYPE {
-    D3DRTYPE_SURFACE                =  1,
-    D3DRTYPE_VOLUME                 =  2,
-    D3DRTYPE_TEXTURE                =  3,
-    D3DRTYPE_VOLUMETEXTURE          =  4,
-    D3DRTYPE_CUBETEXTURE            =  5,
-    D3DRTYPE_VERTEXBUFFER           =  6,
-    D3DRTYPE_INDEXBUFFER            =  7,
-
-    D3DRTYPE_FORCE_DWORD            = 0x7fffffff
-} D3DRESOURCETYPE;
-
-#define D3DRTYPECOUNT (D3DRTYPE_INDEXBUFFER+1)
-
-typedef enum _D3DSHADEMODE {
-    D3DSHADE_FLAT               = 1,
-    D3DSHADE_GOURAUD            = 2,
-    D3DSHADE_PHONG              = 3,
-
-    D3DSHADE_FORCE_DWORD        = 0x7fffffff
-} D3DSHADEMODE;
-
-typedef enum _D3DSTATEBLOCKTYPE {
-    D3DSBT_ALL           = 1,
-    D3DSBT_PIXELSTATE    = 2,
-    D3DSBT_VERTEXSTATE   = 3,
-
-    D3DSBT_FORCE_DWORD   = 0xffffffff
-} D3DSTATEBLOCKTYPE;
-
-typedef enum _D3DSTENCILOP {
-    D3DSTENCILOP_KEEP           = 1,
-    D3DSTENCILOP_ZERO           = 2,
-    D3DSTENCILOP_REPLACE        = 3,
-    D3DSTENCILOP_INCRSAT        = 4,
-    D3DSTENCILOP_DECRSAT        = 5,
-    D3DSTENCILOP_INVERT         = 6,
-    D3DSTENCILOP_INCR           = 7,
-    D3DSTENCILOP_DECR           = 8,
-
-    D3DSTENCILOP_FORCE_DWORD    = 0x7fffffff
-} D3DSTENCILOP;
-
-typedef enum _D3DSWAPEFFECT {
-    D3DSWAPEFFECT_DISCARD         = 1,
-    D3DSWAPEFFECT_FLIP            = 2,
-    D3DSWAPEFFECT_COPY            = 3,
-    D3DSWAPEFFECT_FORCE_DWORD     = 0xFFFFFFFF
-} D3DSWAPEFFECT;
-
-typedef enum _D3DTEXTUREADDRESS {
-    D3DTADDRESS_WRAP            = 1,
-    D3DTADDRESS_MIRROR          = 2,
-    D3DTADDRESS_CLAMP           = 3,
-    D3DTADDRESS_BORDER          = 4,
-    D3DTADDRESS_MIRRORONCE      = 5,
-
-    D3DTADDRESS_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTUREADDRESS;
-
-typedef enum _D3DTEXTUREFILTERTYPE {
-    D3DTEXF_NONE            = 0,
-    D3DTEXF_POINT           = 1,
-    D3DTEXF_LINEAR          = 2,
-    D3DTEXF_ANISOTROPIC     = 3,
-    D3DTEXF_FLATCUBIC       = 4,
-    D3DTEXF_GAUSSIANCUBIC   = 5,
-    D3DTEXF_PYRAMIDALQUAD   = 6,
-    D3DTEXF_GAUSSIANQUAD    = 7,
-    D3DTEXF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTUREFILTERTYPE;
-
-typedef enum _D3DTEXTUREOP {
-    D3DTOP_DISABLE                   =  1,
-    D3DTOP_SELECTARG1                =  2,
-    D3DTOP_SELECTARG2                =  3,
-    D3DTOP_MODULATE                  =  4,
-    D3DTOP_MODULATE2X                =  5,
-    D3DTOP_MODULATE4X                =  6,
-    D3DTOP_ADD                       =  7,
-    D3DTOP_ADDSIGNED                 =  8,
-    D3DTOP_ADDSIGNED2X               =  9,
-    D3DTOP_SUBTRACT                  = 10,
-    D3DTOP_ADDSMOOTH                 = 11,
-    D3DTOP_BLENDDIFFUSEALPHA         = 12,
-    D3DTOP_BLENDTEXTUREALPHA         = 13,
-    D3DTOP_BLENDFACTORALPHA          = 14,
-    D3DTOP_BLENDTEXTUREALPHAPM       = 15,
-    D3DTOP_BLENDCURRENTALPHA         = 16,
-    D3DTOP_PREMODULATE               = 17,
-    D3DTOP_MODULATEALPHA_ADDCOLOR    = 18,
-    D3DTOP_MODULATECOLOR_ADDALPHA    = 19,
-    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
-    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
-    D3DTOP_BUMPENVMAP                = 22,
-    D3DTOP_BUMPENVMAPLUMINANCE       = 23,
-    D3DTOP_DOTPRODUCT3               = 24,
-    D3DTOP_MULTIPLYADD               = 25,
-    D3DTOP_LERP                      = 26,
-
-    D3DTOP_FORCE_DWORD               = 0x7fffffff,
-} D3DTEXTUREOP;
-
-typedef enum _D3DTEXTURESTAGESTATETYPE {
-    D3DTSS_COLOROP               =  1,
-    D3DTSS_COLORARG1             =  2,
-    D3DTSS_COLORARG2             =  3,
-    D3DTSS_ALPHAOP               =  4,
-    D3DTSS_ALPHAARG1             =  5,
-    D3DTSS_ALPHAARG2             =  6,
-    D3DTSS_BUMPENVMAT00          =  7,
-    D3DTSS_BUMPENVMAT01          =  8,
-    D3DTSS_BUMPENVMAT10          =  9,
-    D3DTSS_BUMPENVMAT11          = 10,
-    D3DTSS_TEXCOORDINDEX         = 11,
-    D3DTSS_BUMPENVLSCALE         = 22,
-    D3DTSS_BUMPENVLOFFSET        = 23,
-    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
-    D3DTSS_COLORARG0             = 26,
-    D3DTSS_ALPHAARG0             = 27,
-    D3DTSS_RESULTARG             = 28,
-    D3DTSS_CONSTANT              = 32,
-
-    D3DTSS_FORCE_DWORD           = 0x7fffffff
-} D3DTEXTURESTAGESTATETYPE;
-
-typedef enum _D3DTEXTURETRANSFORMFLAGS {
-    D3DTTFF_DISABLE         =   0,
-    D3DTTFF_COUNT1          =   1,
-    D3DTTFF_COUNT2          =   2,
-    D3DTTFF_COUNT3          =   3,
-    D3DTTFF_COUNT4          =   4,
-    D3DTTFF_PROJECTED       = 256,
-
-    D3DTTFF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTURETRANSFORMFLAGS;
-
-typedef enum _D3DTRANSFORMSTATETYPE {
-    D3DTS_VIEW            =  2,
-    D3DTS_PROJECTION      =  3,
-    D3DTS_TEXTURE0        = 16,
-    D3DTS_TEXTURE1        = 17,
-    D3DTS_TEXTURE2        = 18,
-    D3DTS_TEXTURE3        = 19,
-    D3DTS_TEXTURE4        = 20,
-    D3DTS_TEXTURE5        = 21,
-    D3DTS_TEXTURE6        = 22,
-    D3DTS_TEXTURE7        = 23,
-
-    D3DTS_FORCE_DWORD     = 0x7fffffff
-} D3DTRANSFORMSTATETYPE;
-
-typedef enum _D3DVERTEXBLENDFLAGS {
-    D3DVBF_DISABLE  =   0,
-    D3DVBF_1WEIGHTS =   1,
-    D3DVBF_2WEIGHTS =   2,
-    D3DVBF_3WEIGHTS =   3,
-    D3DVBF_TWEENING = 255,
-    D3DVBF_0WEIGHTS = 256
-} D3DVERTEXBLENDFLAGS;
-
-typedef enum _D3DZBUFFERTYPE {
-    D3DZB_FALSE                 = 0,
-    D3DZB_TRUE                  = 1,
-    D3DZB_USEW                  = 2,
-
-    D3DZB_FORCE_DWORD           = 0x7fffffff
-} D3DZBUFFERTYPE;
-
-typedef enum _D3DSAMPLERSTATETYPE {
-    D3DSAMP_ADDRESSU       = 1,
-    D3DSAMP_ADDRESSV       = 2,
-    D3DSAMP_ADDRESSW       = 3,
-    D3DSAMP_BORDERCOLOR    = 4,
-    D3DSAMP_MAGFILTER      = 5,
-    D3DSAMP_MINFILTER      = 6,
-    D3DSAMP_MIPFILTER      = 7,
-    D3DSAMP_MIPMAPLODBIAS  = 8,
-    D3DSAMP_MAXMIPLEVEL    = 9,
-    D3DSAMP_MAXANISOTROPY  = 10,
-    D3DSAMP_SRGBTEXTURE    = 11,
-    D3DSAMP_ELEMENTINDEX   = 12,
-    D3DSAMP_DMAPOFFSET     = 13,
-                                
-    D3DSAMP_FORCE_DWORD   = 0x7fffffff,
-} D3DSAMPLERSTATETYPE;
-
-
-/*****************************************************************************
- * Direct 3D v9 typedefs
- */
-#ifndef D3DCOLOR_DEFINED
-typedef DWORD D3DCOLOR;
-#define D3DCOLOR_DEFINED
-#endif
-
-/*****************************************************************************
- * Direct 3D v9 structures
- */
-typedef struct _D3DADAPTER_IDENTIFIER9 {
-    char            Driver[MAX_DEVICE_IDENTIFIER_STRING];
-    char            Description[MAX_DEVICE_IDENTIFIER_STRING];
-    char            DeviceName[32];
-    LARGE_INTEGER   DriverVersion; 
-
-    DWORD           VendorId;
-    DWORD           DeviceId;
-    DWORD           SubSysId;
-    DWORD           Revision;
-
-    GUID            DeviceIdentifier;
-
-    DWORD           WHQLLevel;
-} D3DADAPTER_IDENTIFIER9;
-
-typedef struct _D3DBOX {
-    UINT                Left;
-    UINT                Top;
-    UINT                Right;
-    UINT                Bottom;
-    UINT                Front;
-    UINT                Back;
-} D3DBOX;
-
-typedef struct _D3DCLIPSTATUS9 {
-   DWORD ClipUnion;
-   DWORD ClipIntersection;
-} D3DCLIPSTATUS9;
-
-#ifndef D3DCOLORVALUE_DEFINED
-typedef struct _D3DCOLORVALUE {
-    float r;
-    float g;
-    float b;
-    float a;
-} D3DCOLORVALUE;
-#define D3DCOLORVALUE_DEFINED
-#endif
-
-typedef struct _D3DDEVICE_CREATION_PARAMETERS {
-    UINT          AdapterOrdinal;
-    D3DDEVTYPE    DeviceType;
-    HWND          hFocusWindow;
-    DWORD         BehaviorFlags;
-} D3DDEVICE_CREATION_PARAMETERS;
-
-typedef struct _D3DDEVINFO_D3D9BANDWIDTHTIMINGS {
-    float         MaxBandwidthUtilized;
-    float         FrontEndUploadMemoryUtilizedPercent;
-    float         VertexRateUtilizedPercent;
-    float         TriangleSetupRateUtilizedPercent;
-    float         FillRateUtilizedPercent;
-} D3DDEVINFO_D3D9BANDWIDTHTIMINGS;
-
-typedef struct _D3DDEVINFO_D3D9CACHEUTILIZATION {
-    float         TextureCacheHitRate;
-    float         PostTransformVertexCacheHitRate;
-} D3DDEVINFO_D3D9CACHEUTILIZATION;
-
-typedef struct _D3DDEVINFO_D3D9INTERFACETIMINGS {
-    float         WaitingForGPUToUseApplicationResourceTimePercent;
-    float         WaitingForGPUToAcceptMoreCommandsTimePercent;
-    float         WaitingForGPUToStayWithinLatencyTimePercent;
-    float         WaitingForGPUExclusiveResourceTimePercent;
-    float         WaitingForGPUOtherTimePercent;
-} D3DDEVINFO_D3D9INTERFACETIMINGS;
-
-typedef struct _D3DDEVINFO_D3D9PIPELINETIMINGS {
-    float         VertexProcessingTimePercent;
-    float         PixelProcessingTimePercent;
-    float         OtherGPUProcessingTimePercent;
-    float         GPUIdleTimePercent;
-} D3DDEVINFO_D3D9PIPELINETIMINGS;
-
-typedef struct _D3DDEVINFO_D3D9STAGETIMINGS {
-    float         MemoryProcessingPercent;
-    float         ComputationProcessingPercent;
-} D3DDEVINFO_D3D9STAGETIMINGS;
-
-
-/* Vertex cache optimization hints. */
-typedef struct D3DDEVINFO_VCACHE {
-    /* Must be a 4 char code FOURCC (e.g. CACH) */
-    DWORD         Pattern; 
-    /* 0 to get the longest  strips, 1 vertex cache */
-    DWORD         OptMethod; 
-     /* Cache size to use (only valid if OptMethod==1) */
-    DWORD         CacheSize;
-    /* internal for deciding when to restart strips, non user modifyable (only valid if OptMethod==1) */
-    DWORD         MagicNumber; 
-} D3DDEVINFO_VCACHE;
-
-typedef struct D3DRESOURCESTATS {
-    BOOL                bThrashing;
-    DWORD               ApproxBytesDownloaded;
-    DWORD               NumEvicts;
-    DWORD               NumVidCreates;
-    DWORD               LastPri;
-    DWORD               NumUsed;
-    DWORD               NumUsedInVidMem;
-    DWORD               WorkingSet;
-    DWORD               WorkingSetBytes;
-    DWORD               TotalManaged;
-    DWORD               TotalBytes;
-} D3DRESOURCESTATS;
-
-typedef struct _D3DDEVINFO_D3DRESOURCEMANAGER {
-    D3DRESOURCESTATS stats[D3DRTYPECOUNT];
-} D3DDEVINFO_D3DRESOURCEMANAGER;
-
-typedef struct _D3DDEVINFO_D3DVERTEXSTATS {
-    DWORD NumRenderedTriangles;
-    DWORD NumExtraClippingTriangles;
-} D3DDEVINFO_D3DVERTEXSTATS;
-
-typedef struct _D3DDISPLAYMODE {
-    UINT            Width;
-    UINT            Height;
-    UINT            RefreshRate;
-    D3DFORMAT       Format;
-} D3DDISPLAYMODE;
-
-typedef struct _D3DGAMMARAMP {
-    WORD                red  [256];
-    WORD                green[256];
-    WORD                blue [256];
-} D3DGAMMARAMP;
-
-typedef struct _D3DINDEXBUFFER_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-} D3DINDEXBUFFER_DESC;
-
-#ifndef D3DVECTOR_DEFINED
-typedef struct _D3DVECTOR {
-    float x;
-    float y;
-    float z;
-} D3DVECTOR;
-#define D3DVECTOR_DEFINED
-#endif
-
-typedef struct _D3DLIGHT9 {
-    D3DLIGHTTYPE    Type;
-    D3DCOLORVALUE   Diffuse;
-    D3DCOLORVALUE   Specular;
-    D3DCOLORVALUE   Ambient;
-    D3DVECTOR       Position;
-    D3DVECTOR       Direction;
-    float           Range;
-    float           Falloff;
-    float           Attenuation0;
-    float           Attenuation1;
-    float           Attenuation2;
-    float           Theta;
-    float           Phi;
-} D3DLIGHT9;
-
-typedef struct _D3DLINEPATTERN {
-    WORD    wRepeatFactor;
-    WORD    wLinePattern;
-} D3DLINEPATTERN;
-
-typedef struct _D3DLOCKED_BOX {
-    INT                 RowPitch;
-    INT                 SlicePitch;
-    void*               pBits;
-} D3DLOCKED_BOX;
-
-typedef struct _D3DLOCKED_RECT {
-    INT                 Pitch;
-    void*               pBits;
-} D3DLOCKED_RECT;
-
-typedef struct _D3DMATERIAL9 {
-    D3DCOLORVALUE   Diffuse;
-    D3DCOLORVALUE   Ambient;
-    D3DCOLORVALUE   Specular;
-    D3DCOLORVALUE   Emissive;
-    float           Power;
-} D3DMATERIAL9;
-
-#ifndef D3DMATRIX_DEFINED
-typedef struct _D3DMATRIX {
-    union {
-        struct {
-            float        _11, _12, _13, _14;
-            float        _21, _22, _23, _24;
-            float        _31, _32, _33, _34;
-            float        _41, _42, _43, _44;
-        } DUMMYSTRUCTNAME;
-        float m[4][4];
-    } DUMMYUNIONNAME;
-} D3DMATRIX;
-#define D3DMATRIX_DEFINED
-#endif
-
-typedef struct _D3DPRESENT_PARAMETERS_ {
-    UINT                    BackBufferWidth;
-    UINT                    BackBufferHeight;
-    D3DFORMAT               BackBufferFormat;
-    UINT                    BackBufferCount;
-
-    D3DMULTISAMPLE_TYPE     MultiSampleType;
-    DWORD                   MultiSampleQuality;
-
-    D3DSWAPEFFECT           SwapEffect;
-    HWND                    hDeviceWindow;
-    BOOL                    Windowed;
-    BOOL                    EnableAutoDepthStencil;
-    D3DFORMAT               AutoDepthStencilFormat;
-    DWORD                   Flags;
-
-    UINT                    FullScreen_RefreshRateInHz;
-    UINT                    PresentationInterval;
-
-} D3DPRESENT_PARAMETERS;
-
-typedef struct _D3DRANGE {
-    UINT                Offset;
-    UINT                Size;
-} D3DRANGE;
-
-typedef struct _D3DRASTER_STATUS {
-    BOOL            InVBlank;
-    UINT            ScanLine;
-} D3DRASTER_STATUS;
-
-#ifndef D3DRECT_DEFINED
-typedef struct _D3DRECT {
-    LONG x1;
-    LONG y1;
-    LONG x2;
-    LONG y2;
-} D3DRECT;
-#define D3DRECT_DEFINED
-#endif
-
-typedef struct _D3DRECTPATCH_INFO {
-    UINT                StartVertexOffsetWidth;
-    UINT                StartVertexOffsetHeight;
-    UINT                Width;
-    UINT                Height;
-    UINT                Stride;
-    D3DBASISTYPE        Basis;
-    D3DDEGREETYPE       Degree;
-} D3DRECTPATCH_INFO;
-
-typedef struct _D3DSURFACE_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    D3DMULTISAMPLE_TYPE MultiSampleType;
-    DWORD               MultiSampleQuality;
-    UINT                Width;
-    UINT                Height;
-} D3DSURFACE_DESC;
-
-typedef struct _D3DTRIPATCH_INFO {
-    UINT                StartVertexOffset;
-    UINT                NumVertices;
-    D3DBASISTYPE        Basis;
-    D3DDEGREETYPE       Degree;
-} D3DTRIPATCH_INFO;
-
-typedef struct _D3DVERTEXBUFFER_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-    DWORD               FVF;
-} D3DVERTEXBUFFER_DESC;
-
-typedef struct _D3DVIEWPORT9 {
-    DWORD       X;
-    DWORD       Y;
-    DWORD       Width;
-    DWORD       Height;
-    float       MinZ;
-    float       MaxZ;
-} D3DVIEWPORT9;
-
-typedef struct _D3DVOLUME_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-
-    UINT                Width;
-    UINT                Height;
-    UINT                Depth;
-} D3DVOLUME_DESC;
-
-/* Parts added with d3d9ex */
-#if !defined(D3D_DISABLE_9EX)
-typedef enum D3DSCANLINEORDERING
-{
-    D3DSCANLINEORDERING_UNKNOWN,
-    D3DSCANLINEORDERING_PROGRESSIVE,
-    D3DSCANLINEORDERING_INTERLACED,
-} D3DSCANLINEORDERING;
-
-
-typedef struct D3DDISPLAYMODEFILTER
-{
-    UINT                Size;
-    D3DFORMAT           Format;
-    D3DSCANLINEORDERING ScanLineOrdering;
-} D3DDISPLAYMODEFILTER;
-
-typedef struct D3DDISPLAYMODEEX
-{
-    UINT                Size;
-    UINT                Width;
-    UINT                Height;
-    UINT                RefreshRate;
-    D3DFORMAT           Format;
-    D3DSCANLINEORDERING ScanLineOrdering;
-} D3DDISPLAYMODEEX;
-
-typedef enum D3DDISPLAYROTATION
-{
-    D3DDISPLAYROTATION_IDENTITY = 1,
-    D3DDISPLAYROTATION_90,
-    D3DDISPLAYROTATION_180,
-    D3DDISPLAYROTATION_270
-} D3DDISPLAYROTATION;
-
-typedef enum _D3DCOMPOSERECTSOP{
-    D3DCOMPOSERECTS_COPY        = 1,
-    D3DCOMPOSERECTS_OR,
-    D3DCOMPOSERECTS_AND,
-    D3DCOMPOSERECTS_NEG,
-    D3DCOMPOSERECTS_FORCE_DWORD = 0x7fffffff
-} D3DCOMPOSERECTSOP;
-#endif /* D3D_DISABLE_9EX */
-
-typedef enum _D3DSHADER_COMPARISON
-{
-    D3DSPC_RESERVED0 = 0,
-    D3DSPC_GT,
-    D3DSPC_EQ,
-    D3DSPC_GE,
-    D3DSPC_LT,
-    D3DSPC_NE,
-    D3DSPC_LE,
-    D3DSPC_RESERVED1,
-} D3DSHADER_COMPARISON;
-
-#endif /* __WINE_D3D9TYPES_H */
diff --git a/misc/builddeps/win32/dx/include/d3dcaps.h b/misc/builddeps/win32/dx/include/d3dcaps.h
deleted file mode 100644 (file)
index b44c49d..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * Copyright (C) 2000 Peter Hunnisett
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3DCAPS_H
-#define __WINE_D3DCAPS_H
-
-#include <ddraw.h>
-
-typedef struct _D3DTRANSFORMCAPS {
-       DWORD dwSize;
-       DWORD dwCaps;
-} D3DTRANSFORMCAPS, *LPD3DTRANSFORMCAPS;
-
-#define D3DTRANSFORMCAPS_CLIP           0x00000001L
-
-typedef struct _D3DLIGHTINGCAPS {
-       DWORD dwSize;
-       DWORD dwCaps;
-       DWORD dwLightingModel;
-       DWORD dwNumLights;
-} D3DLIGHTINGCAPS, *LPD3DLIGHTINGCAPS;
-
-#define D3DLIGHTINGMODEL_RGB            0x00000001
-#define D3DLIGHTINGMODEL_MONO           0x00000002
-
-#define D3DLIGHTCAPS_POINT              0x00000001
-#define D3DLIGHTCAPS_SPOT               0x00000002
-#define D3DLIGHTCAPS_DIRECTIONAL        0x00000004
-#define D3DLIGHTCAPS_PARALLELPOINT      0x00000008
-#define D3DLIGHTCAPS_GLSPOT             0x00000010
-
-typedef struct _D3dPrimCaps {
-    DWORD dwSize;
-    DWORD dwMiscCaps;
-    DWORD dwRasterCaps;
-    DWORD dwZCmpCaps;
-    DWORD dwSrcBlendCaps;
-    DWORD dwDestBlendCaps;
-    DWORD dwAlphaCmpCaps;
-    DWORD dwShadeCaps;
-    DWORD dwTextureCaps;
-    DWORD dwTextureFilterCaps;
-    DWORD dwTextureBlendCaps;
-    DWORD dwTextureAddressCaps;
-    DWORD dwStippleWidth;
-    DWORD dwStippleHeight;
-} D3DPRIMCAPS, *LPD3DPRIMCAPS;
-
-#define D3DPMISCCAPS_MASKPLANES         0x00000001
-#define D3DPMISCCAPS_MASKZ              0x00000002
-#define D3DPMISCCAPS_LINEPATTERNREP     0x00000004
-#define D3DPMISCCAPS_CONFORMANT         0x00000008
-#define D3DPMISCCAPS_CULLNONE           0x00000010
-#define D3DPMISCCAPS_CULLCW             0x00000020
-#define D3DPMISCCAPS_CULLCCW            0x00000040
-
-#define D3DPRASTERCAPS_DITHER                     0x00000001
-#define D3DPRASTERCAPS_ROP2                       0x00000002
-#define D3DPRASTERCAPS_XOR                        0x00000004
-#define D3DPRASTERCAPS_PAT                        0x00000008
-#define D3DPRASTERCAPS_ZTEST                      0x00000010
-#define D3DPRASTERCAPS_SUBPIXEL                   0x00000020
-#define D3DPRASTERCAPS_SUBPIXELX                  0x00000040
-#define D3DPRASTERCAPS_FOGVERTEX                  0x00000080
-#define D3DPRASTERCAPS_FOGTABLE                   0x00000100
-#define D3DPRASTERCAPS_STIPPLE                    0x00000200
-#define D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT     0x00000400
-#define D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT   0x00000800
-#define D3DPRASTERCAPS_ANTIALIASEDGES             0x00001000
-#define D3DPRASTERCAPS_MIPMAPLODBIAS              0x00002000
-#define D3DPRASTERCAPS_ZBIAS                      0x00004000
-#define D3DPRASTERCAPS_ZBUFFERLESSHSR             0x00008000
-#define D3DPRASTERCAPS_FOGRANGE                   0x00010000
-#define D3DPRASTERCAPS_ANISOTROPY                 0x00020000
-#define D3DPRASTERCAPS_WBUFFER                    0x00040000
-#define D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT 0x00080000
-#define D3DPRASTERCAPS_WFOG                       0x00100000
-#define D3DPRASTERCAPS_ZFOG                       0x00200000
-
-#define D3DPCMPCAPS_NEVER               0x00000001
-#define D3DPCMPCAPS_LESS                0x00000002
-#define D3DPCMPCAPS_EQUAL               0x00000004
-#define D3DPCMPCAPS_LESSEQUAL           0x00000008
-#define D3DPCMPCAPS_GREATER             0x00000010
-#define D3DPCMPCAPS_NOTEQUAL            0x00000020
-#define D3DPCMPCAPS_GREATEREQUAL        0x00000040
-#define D3DPCMPCAPS_ALWAYS              0x00000080
-
-#define D3DPBLENDCAPS_ZERO              0x00000001
-#define D3DPBLENDCAPS_ONE               0x00000002
-#define D3DPBLENDCAPS_SRCCOLOR          0x00000004
-#define D3DPBLENDCAPS_INVSRCCOLOR       0x00000008
-#define D3DPBLENDCAPS_SRCALPHA          0x00000010
-#define D3DPBLENDCAPS_INVSRCALPHA       0x00000020
-#define D3DPBLENDCAPS_DESTALPHA         0x00000040
-#define D3DPBLENDCAPS_INVDESTALPHA      0x00000080
-#define D3DPBLENDCAPS_DESTCOLOR         0x00000100
-#define D3DPBLENDCAPS_INVDESTCOLOR      0x00000200
-#define D3DPBLENDCAPS_SRCALPHASAT       0x00000400
-#define D3DPBLENDCAPS_BOTHSRCALPHA      0x00000800
-#define D3DPBLENDCAPS_BOTHINVSRCALPHA   0x00001000
-
-#define D3DPSHADECAPS_COLORFLATMONO     0x00000001
-#define D3DPSHADECAPS_COLORFLATRGB      0x00000002
-#define D3DPSHADECAPS_COLORGOURAUDMONO  0x00000004
-#define D3DPSHADECAPS_COLORGOURAUDRGB   0x00000008
-#define D3DPSHADECAPS_COLORPHONGMONO    0x00000010
-#define D3DPSHADECAPS_COLORPHONGRGB     0x00000020
-
-#define D3DPSHADECAPS_SPECULARFLATMONO    0x00000040
-#define D3DPSHADECAPS_SPECULARFLATRGB     0x00000080
-#define D3DPSHADECAPS_SPECULARGOURAUDMONO 0x00000100
-#define D3DPSHADECAPS_SPECULARGOURAUDRGB  0x00000200
-#define D3DPSHADECAPS_SPECULARPHONGMONO   0x00000400
-#define D3DPSHADECAPS_SPECULARPHONGRGB    0x00000800
-
-#define D3DPSHADECAPS_ALPHAFLATBLEND       0x00001000
-#define D3DPSHADECAPS_ALPHAFLATSTIPPLED    0x00002000
-#define D3DPSHADECAPS_ALPHAGOURAUDBLEND    0x00004000
-#define D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED 0x00008000
-#define D3DPSHADECAPS_ALPHAPHONGBLEND      0x00010000
-#define D3DPSHADECAPS_ALPHAPHONGSTIPPLED   0x00020000
-
-#define D3DPSHADECAPS_FOGFLAT           0x00040000
-#define D3DPSHADECAPS_FOGGOURAUD        0x00080000
-#define D3DPSHADECAPS_FOGPHONG          0x00100000
-
-#define D3DPTEXTURECAPS_PERSPECTIVE              0x00000001
-#define D3DPTEXTURECAPS_POW2                     0x00000002
-#define D3DPTEXTURECAPS_ALPHA                    0x00000004
-#define D3DPTEXTURECAPS_TRANSPARENCY             0x00000008
-#define D3DPTEXTURECAPS_BORDER                   0x00000010
-#define D3DPTEXTURECAPS_SQUAREONLY               0x00000020
-#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040
-#define D3DPTEXTURECAPS_ALPHAPALETTE             0x00000080
-#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL  0x00000100L
-/* yes actually 0x00000200 is unused - or at least unreleased */
-#define D3DPTEXTURECAPS_PROJECTED                0x00000400
-#define D3DPTEXTURECAPS_CUBEMAP                  0x00000800
-#define D3DPTEXTURECAPS_COLORKEYBLEND            0x00001000
-
-#define D3DPTFILTERCAPS_NEAREST           0x00000001
-#define D3DPTFILTERCAPS_LINEAR            0x00000002
-#define D3DPTFILTERCAPS_MIPNEAREST        0x00000004
-#define D3DPTFILTERCAPS_MIPLINEAR         0x00000008
-#define D3DPTFILTERCAPS_LINEARMIPNEAREST  0x00000010
-#define D3DPTFILTERCAPS_LINEARMIPLINEAR   0x00000020
-/* yes - missing numbers */
-#define D3DPTFILTERCAPS_MINFPOINT         0x00000100
-#define D3DPTFILTERCAPS_MINFLINEAR        0x00000200
-#define D3DPTFILTERCAPS_MINFANISOTROPIC   0x00000400
-/* yes - missing numbers */
-#define D3DPTFILTERCAPS_MIPFPOINT         0x00010000
-#define D3DPTFILTERCAPS_MIPFLINEAR        0x00020000
-/* yes - missing numbers */
-#define D3DPTFILTERCAPS_MAGFPOINT         0x01000000
-#define D3DPTFILTERCAPS_MAGFLINEAR        0x02000000
-#define D3DPTFILTERCAPS_MAGFANISOTROPIC   0x04000000
-#define D3DPTFILTERCAPS_MAGFAFLATCUBIC    0x08000000
-#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000
-
-#define D3DPTBLENDCAPS_DECAL            0x00000001
-#define D3DPTBLENDCAPS_MODULATE         0x00000002
-#define D3DPTBLENDCAPS_DECALALPHA       0x00000004
-#define D3DPTBLENDCAPS_MODULATEALPHA    0x00000008
-#define D3DPTBLENDCAPS_DECALMASK        0x00000010
-#define D3DPTBLENDCAPS_MODULATEMASK     0x00000020
-#define D3DPTBLENDCAPS_COPY             0x00000040
-#define D3DPTBLENDCAPS_ADD              0x00000080
-
-#define D3DPTADDRESSCAPS_WRAP           0x00000001
-#define D3DPTADDRESSCAPS_MIRROR         0x00000002
-#define D3DPTADDRESSCAPS_CLAMP          0x00000004
-#define D3DPTADDRESSCAPS_BORDER         0x00000008
-#define D3DPTADDRESSCAPS_INDEPENDENTUV  0x00000010
-
-
-typedef struct _D3DDeviceDesc {
-        DWORD           dwSize;
-        DWORD           dwFlags;
-        D3DCOLORMODEL   dcmColorModel;
-        DWORD           dwDevCaps;
-        D3DTRANSFORMCAPS dtcTransformCaps;
-        BOOL            bClipping;
-        D3DLIGHTINGCAPS dlcLightingCaps;
-        D3DPRIMCAPS     dpcLineCaps;
-        D3DPRIMCAPS     dpcTriCaps;
-        DWORD           dwDeviceRenderBitDepth;
-        DWORD           dwDeviceZBufferBitDepth;
-        DWORD           dwMaxBufferSize;
-        DWORD           dwMaxVertexCount;
-
-        DWORD           dwMinTextureWidth,dwMinTextureHeight;
-        DWORD           dwMaxTextureWidth,dwMaxTextureHeight;
-        DWORD           dwMinStippleWidth,dwMaxStippleWidth;
-        DWORD           dwMinStippleHeight,dwMaxStippleHeight;
-
-        DWORD       dwMaxTextureRepeat;
-        DWORD       dwMaxTextureAspectRatio;
-        DWORD       dwMaxAnisotropy;
-
-        D3DVALUE    dvGuardBandLeft;
-        D3DVALUE    dvGuardBandTop;
-        D3DVALUE    dvGuardBandRight;
-        D3DVALUE    dvGuardBandBottom;
-
-        D3DVALUE    dvExtentsAdjust;
-        DWORD       dwStencilCaps;
-
-        DWORD       dwFVFCaps;
-        DWORD       dwTextureOpCaps;
-        WORD        wMaxTextureBlendStages;
-        WORD        wMaxSimultaneousTextures;
-} D3DDEVICEDESC,*LPD3DDEVICEDESC;
-#define D3DDEVICEDESCSIZE (sizeof(D3DDEVICEDESC))
-
-typedef struct _D3DDeviceDesc7 {
-        DWORD            dwDevCaps;
-        D3DPRIMCAPS      dpcLineCaps;
-        D3DPRIMCAPS      dpcTriCaps;
-        DWORD            dwDeviceRenderBitDepth;
-        DWORD            dwDeviceZBufferBitDepth;
-
-        DWORD       dwMinTextureWidth, dwMinTextureHeight;
-        DWORD       dwMaxTextureWidth, dwMaxTextureHeight;
-
-        DWORD       dwMaxTextureRepeat;
-        DWORD       dwMaxTextureAspectRatio;
-        DWORD       dwMaxAnisotropy;
-
-        D3DVALUE    dvGuardBandLeft;
-        D3DVALUE    dvGuardBandTop;
-        D3DVALUE    dvGuardBandRight;
-        D3DVALUE    dvGuardBandBottom;
-
-        D3DVALUE    dvExtentsAdjust;
-        DWORD       dwStencilCaps;
-        DWORD       dwFVFCaps;
-        DWORD       dwTextureOpCaps;
-        WORD        wMaxTextureBlendStages;
-        WORD        wMaxSimultaneousTextures;
-
-        DWORD       dwMaxActiveLights;
-        D3DVALUE    dvMaxVertexW;
-        GUID        deviceGUID;
-
-        WORD        wMaxUserClipPlanes;
-        WORD        wMaxVertexBlendMatrices;
-
-        DWORD       dwVertexProcessingCaps;
-
-        DWORD       dwReserved1;
-        DWORD       dwReserved2;
-        DWORD       dwReserved3;
-        DWORD       dwReserved4;
-} D3DDEVICEDESC7, *LPD3DDEVICEDESC7;
-#define D3DDEVICEDESC7SIZE (sizeof(D3DDEVICEDESC7))
-
-#define D3DDD_COLORMODEL                0x00000001
-#define D3DDD_DEVCAPS                   0x00000002
-#define D3DDD_TRANSFORMCAPS             0x00000004
-#define D3DDD_LIGHTINGCAPS              0x00000008
-#define D3DDD_BCLIPPING                 0x00000010
-#define D3DDD_LINECAPS                  0x00000020
-#define D3DDD_TRICAPS                   0x00000040
-#define D3DDD_DEVICERENDERBITDEPTH      0x00000080
-#define D3DDD_DEVICEZBUFFERBITDEPTH     0x00000100
-#define D3DDD_MAXBUFFERSIZE             0x00000200
-#define D3DDD_MAXVERTEXCOUNT            0x00000400
-
-#define D3DDEVCAPS_FLOATTLVERTEX           0x00000001
-#define D3DDEVCAPS_SORTINCREASINGZ         0x00000002
-#define D3DDEVCAPS_SORTDECREASINGZ         0X00000004
-#define D3DDEVCAPS_SORTEXACT               0x00000008
-#define D3DDEVCAPS_EXECUTESYSTEMMEMORY     0x00000010
-#define D3DDEVCAPS_EXECUTEVIDEOMEMORY      0x00000020
-#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY    0x00000040
-#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY     0x00000080
-#define D3DDEVCAPS_TEXTURESYSTEMMEMORY     0x00000100
-#define D3DDEVCAPS_TEXTUREVIDEOMEMORY      0x00000200
-#define D3DDEVCAPS_DRAWPRIMTLVERTEX        0x00000400
-#define D3DDEVCAPS_CANRENDERAFTERFLIP      0x00000800
-#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM   0x00001000
-#define D3DDEVCAPS_DRAWPRIMITIVES2         0x00002000
-#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000
-#define D3DDEVCAPS_DRAWPRIMITIVES2EX       0x00008000
-#define D3DDEVCAPS_HWTRANSFORMANDLIGHT     0x00010000
-#define D3DDEVCAPS_CANBLTSYSTONONLOCAL     0x00020000
-#define D3DDEVCAPS_HWRASTERIZATION         0x00080000
-
-#define D3DSTENCILCAPS_KEEP     0x00000001
-#define D3DSTENCILCAPS_ZERO     0x00000002
-#define D3DSTENCILCAPS_REPLACE  0x00000004
-#define D3DSTENCILCAPS_INCRSAT  0x00000008
-#define D3DSTENCILCAPS_DECRSAT  0x00000010
-#define D3DSTENCILCAPS_INVERT   0x00000020
-#define D3DSTENCILCAPS_INCR     0x00000040
-#define D3DSTENCILCAPS_DECR     0x00000080
-
-#define D3DTEXOPCAPS_DISABLE                    0x00000001
-#define D3DTEXOPCAPS_SELECTARG1                 0x00000002
-#define D3DTEXOPCAPS_SELECTARG2                 0x00000004
-#define D3DTEXOPCAPS_MODULATE                   0x00000008
-#define D3DTEXOPCAPS_MODULATE2X                 0x00000010
-#define D3DTEXOPCAPS_MODULATE4X                 0x00000020
-#define D3DTEXOPCAPS_ADD                        0x00000040
-#define D3DTEXOPCAPS_ADDSIGNED                  0x00000080
-#define D3DTEXOPCAPS_ADDSIGNED2X                0x00000100
-#define D3DTEXOPCAPS_SUBTRACT                   0x00000200
-#define D3DTEXOPCAPS_ADDSMOOTH                  0x00000400
-#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA          0x00000800
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHA          0x00001000
-#define D3DTEXOPCAPS_BLENDFACTORALPHA           0x00002000
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM        0x00004000
-#define D3DTEXOPCAPS_BLENDCURRENTALPHA          0x00008000
-#define D3DTEXOPCAPS_PREMODULATE                0x00010000
-#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR     0x00020000
-#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA     0x00040000
-#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR  0x00080000
-#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA  0x00100000
-#define D3DTEXOPCAPS_BUMPENVMAP                 0x00200000
-#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE        0x00400000
-#define D3DTEXOPCAPS_DOTPRODUCT3                0x00800000
-
-#define D3DFVFCAPS_TEXCOORDCOUNTMASK    0x0000FFFF
-#define D3DFVFCAPS_DONOTSTRIPELEMENTS   0x00080000
-
-#define D3DVTXPCAPS_TEXGEN              0x00000001
-#define D3DVTXPCAPS_MATERIALSOURCE7     0x00000002
-#define D3DVTXPCAPS_VERTEXFOG           0x00000004
-#define D3DVTXPCAPS_DIRECTIONALLIGHTS   0x00000008
-#define D3DVTXPCAPS_POSITIONALLIGHTS    0x00000010
-#define D3DVTXPCAPS_LOCALVIEWER         0x00000020
-
-typedef HRESULT (CALLBACK *LPD3DENUMDEVICESCALLBACK)(LPGUID lpGuid,LPSTR lpDeviceDescription,LPSTR lpDeviceName,LPD3DDEVICEDESC,LPD3DDEVICEDESC,LPVOID);
-typedef HRESULT (CALLBACK *LPD3DENUMDEVICESCALLBACK7)(LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC7, LPVOID);
-
-#define D3DFDS_COLORMODEL          0x00000001
-#define D3DFDS_GUID                0x00000002
-#define D3DFDS_HARDWARE            0x00000004
-#define D3DFDS_TRIANGLES           0x00000008
-#define D3DFDS_LINES               0x00000010
-#define D3DFDS_MISCCAPS            0x00000020
-#define D3DFDS_RASTERCAPS          0x00000040
-#define D3DFDS_ZCMPCAPS            0x00000080
-#define D3DFDS_ALPHACMPCAPS        0x00000100
-#define D3DFDS_SRCBLENDCAPS        0x00000200
-#define D3DFDS_DSTBLENDCAPS        0x00000400
-#define D3DFDS_SHADECAPS           0x00000800
-#define D3DFDS_TEXTURECAPS         0x00001000
-#define D3DFDS_TEXTUREFILTERCAPS   0x00002000
-#define D3DFDS_TEXTUREBLENDCAPS    0x00004000
-#define D3DFDS_TEXTUREADDRESSCAPS  0x00008000
-
-typedef struct _D3DFINDDEVICESEARCH {
-    DWORD               dwSize;
-    DWORD               dwFlags;
-    BOOL                bHardware;
-    D3DCOLORMODEL       dcmColorModel;
-    GUID                guid;
-    DWORD               dwCaps;
-    D3DPRIMCAPS         dpcPrimCaps;
-} D3DFINDDEVICESEARCH,*LPD3DFINDDEVICESEARCH;
-
-typedef struct _D3DFINDDEVICERESULT {
-    DWORD               dwSize;
-    GUID                guid;
-    D3DDEVICEDESC       ddHwDesc;
-    D3DDEVICEDESC       ddSwDesc;
-} D3DFINDDEVICERESULT,*LPD3DFINDDEVICERESULT;
-
-typedef struct _D3DExecuteBufferDesc {
-  DWORD  dwSize;
-  DWORD  dwFlags;
-  DWORD  dwCaps;
-  DWORD  dwBufferSize;
-  LPVOID lpData;
-} D3DEXECUTEBUFFERDESC, *LPD3DEXECUTEBUFFERDESC;
-
-#define D3DDEB_BUFSIZE          0x00000001
-#define D3DDEB_CAPS             0x00000002
-#define D3DDEB_LPDATA           0x00000004
-
-#define D3DDEBCAPS_SYSTEMMEMORY 0x00000001
-#define D3DDEBCAPS_VIDEOMEMORY  0x00000002
-#define D3DDEBCAPS_MEM          (D3DDEBCAPS_SYSTEMMEMORY|D3DDEBCAPS_VIDEOMEMORY) /* = 0x3 */
-
-typedef struct _D3DDEVINFO_TEXTUREMANAGER {
-       BOOL    bThrashing;
-       DWORD   dwApproxBytesDownloaded;
-       DWORD   dwNumEvicts;
-       DWORD   dwNumVidCreates;
-       DWORD   dwNumTexturesUsed;
-       DWORD   dwNumUsedTexInVid;
-       DWORD   dwWorkingSet;
-       DWORD   dwWorkingSetBytes;
-       DWORD   dwTotalManaged;
-       DWORD   dwTotalBytes;
-       DWORD   dwLastPri;
-} D3DDEVINFO_TEXTUREMANAGER, *LPD3DDEVINFO_TEXTUREMANAGER;
-
-typedef struct _D3DDEVINFO_TEXTURING {
-       DWORD   dwNumLoads;
-       DWORD   dwApproxBytesLoaded;
-       DWORD   dwNumPreLoads;
-       DWORD   dwNumSet;
-       DWORD   dwNumCreates;
-       DWORD   dwNumDestroys;
-       DWORD   dwNumSetPriorities;
-       DWORD   dwNumSetLODs;
-       DWORD   dwNumLocks;
-       DWORD   dwNumGetDCs;
-} D3DDEVINFO_TEXTURING, *LPD3DDEVINFO_TEXTURING;
-
-
-
-#endif
diff --git a/misc/builddeps/win32/dx/include/d3dhal.h b/misc/builddeps/win32/dx/include/d3dhal.h
deleted file mode 100644 (file)
index 806f299..0000000
+++ /dev/null
@@ -1,535 +0,0 @@
-/*
- * Direct3D driver interface
- * (DirectX 7 version)
- *
- * Copyright (C) 2001 Ove Kaaven
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef _D3DHAL_H_
-#define _D3DHAL_H_
-
-#include <_mingw_dxhelper.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <d3d.h>
-
-/*****************************************************************************
- * device info structures
- */
-typedef struct _D3DDeviceDesc_V1 {
-  DWORD                        dwSize;
-  DWORD                        dwFlags;
-  D3DCOLORMODEL                dcmColorModel;
-  DWORD                        dwDevCaps;
-  D3DTRANSFORMCAPS     dtcTransformCaps;
-  WINBOOL              bClipping;
-  D3DLIGHTINGCAPS      dlcLightingCaps;
-  D3DPRIMCAPS          dpcLineCaps;
-  D3DPRIMCAPS          dpcTriCaps;
-  DWORD                        dwDeviceRenderBitDepth;
-  DWORD                        dwDeviceZBufferBitDepth;
-  DWORD                        dwMaxBufferSize;
-  DWORD                        dwMaxVertexCount;
-} D3DDEVICEDESC_V1,*LPD3DDEVICEDESC_V1;
-
-/* this is to allow keeping the bulk of our OpenGL code out of x11drv */
-#define D3DDD_WINE_OPENGL_DEVICE 0x00008000
-
-typedef struct _D3DHAL_GLOBALDRIVERDATA {
-  DWORD                        dwSize;
-  D3DDEVICEDESC_V1     hwCaps;
-  DWORD                        dwNumVertices;
-  DWORD                        dwNumClipVertices;
-  DWORD                        dwNumTextureFormats;
-  LPDDSURFACEDESC      lpTextureFormats;
-} D3DHAL_GLOBALDRIVERDATA;
-
-#ifndef D3DHAL_GLOBALDRIVERDATA_DEFINED
-typedef D3DHAL_GLOBALDRIVERDATA *LPD3DHAL_GLOBALDRIVERDATA;
-#define D3DHAL_GLOBALDRIVERDATA_DEFINED
-#endif
-
-typedef struct _D3DHAL_D3DEXTENDEDCAPS {
-  DWORD                        dwSize;
-  /* DirectX 5 */
-  DWORD                        dwMinTextureWidth, dwMaxTextureWidth;
-  DWORD                        dwMinTextureHeight, dwMaxTextureHeight;
-  DWORD                        dwMinStippleWidth, dwMaxStippleWidth;
-  DWORD                        dwMinStippleHeight, dwMaxStippleHeight;
-  /* DirectX 6 */
-  DWORD                        dwMaxTextureRepeat;
-  DWORD                        dwMaxTextureAspectRatio;
-  DWORD                        dwMaxAnisotropy;
-  D3DVALUE             dvGuardBandLeft;
-  D3DVALUE             dvGuardBandTop;
-  D3DVALUE             dvGuardBandRight;
-  D3DVALUE             dvGuardBandBottom;
-  D3DVALUE             dvExtentsAdjust;
-  DWORD                        dwStencilCaps;
-  DWORD                        dwFVFCaps;
-  DWORD                        dwTextureOpCaps;
-  WORD                 wMaxTextureBlendStages;
-  WORD                 wMaxSimultaneousTextures;
-  /* DirectX 7 */
-  DWORD                        dwMaxActiveLights;
-  D3DVALUE             dvMaxVertexW;
-  WORD                 wMaxUserClipPlanes;
-  WORD                 wMaxVertexBlendMatrices;
-  DWORD                        dwVertexProcessingCaps;
-  DWORD                        dwReserved1;
-  DWORD                        dwReserved2;
-  DWORD                        dwReserved3;
-  DWORD                        dwReserved4;
-} D3DHAL_D3DEXTENDEDCAPS,*LPD3DHAL_D3DEXTENDEDCAPS;
-
-/*****************************************************************************
- * d3d->driver callbacks
- */
-typedef struct _D3DHAL_CONTEXTCREATEDATA       *LPD3DHAL_CONTEXTCREATEDATA;
-typedef struct _D3DHAL_CONTEXTDESTROYDATA      *LPD3DHAL_CONTEXTDESTROYDATA;
-typedef struct _D3DHAL_CONTEXTDESTROYALLDATA   *LPD3DHAL_CONTEXTDESTROYALLDATA;
-typedef struct _D3DHAL_SCENECAPTUREDATA                *LPD3DHAL_SCENECAPTUREDATA;
-typedef struct _D3DHAL_RENDERSTATEDATA         *LPD3DHAL_RENDERSTATEDATA;
-typedef struct _D3DHAL_RENDERPRIMITIVEDATA     *LPD3DHAL_RENDERPRIMITIVEDATA;
-typedef struct _D3DHAL_TEXTURECREATEDATA       *LPD3DHAL_TEXTURECREATEDATA;
-typedef struct _D3DHAL_TEXTUREDESTROYDATA      *LPD3DHAL_TEXTUREDESTROYDATA;
-typedef struct _D3DHAL_TEXTURESWAPDATA         *LPD3DHAL_TEXTURESWAPDATA;
-typedef struct _D3DHAL_TEXTUREGETSURFDATA      *LPD3DHAL_TEXTUREGETSURFDATA;
-typedef struct _D3DHAL_GETSTATEDATA            *LPD3DHAL_GETSTATEDATA;
-
-typedef DWORD (PASCAL *LPD3DHAL_CONTEXTCREATECB)    (LPD3DHAL_CONTEXTCREATEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYCB)   (LPD3DHAL_CONTEXTDESTROYDATA);
-typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYALLCB)(LPD3DHAL_CONTEXTDESTROYALLDATA);
-typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB)            (LPD3DHAL_SCENECAPTUREDATA);
-typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB)     (LPD3DHAL_RENDERSTATEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_RENDERPRIMITIVECB)  (LPD3DHAL_RENDERPRIMITIVEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_TEXTURECREATECB)    (LPD3DHAL_TEXTURECREATEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_TEXTUREDESTROYCB)   (LPD3DHAL_TEXTUREDESTROYDATA);
-typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB)     (LPD3DHAL_TEXTURESWAPDATA);
-typedef DWORD (PASCAL *LPD3DHAL_TEXTUREGETSURFCB)   (LPD3DHAL_TEXTUREGETSURFDATA);
-typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB)        (LPD3DHAL_GETSTATEDATA);
-
-typedef struct _D3DHAL_CALLBACKS {
-  DWORD                                dwSize;
-  LPD3DHAL_CONTEXTCREATECB     ContextCreate;
-  LPD3DHAL_CONTEXTDESTROYCB    ContextDestroy;
-  LPD3DHAL_CONTEXTDESTROYALLCB ContextDestroyAll;
-  LPD3DHAL_SCENECAPTURECB      SceneCapture;
-  LPVOID                       lpReserved10;
-  LPVOID                       lpReserved11;
-  LPD3DHAL_RENDERSTATECB       RenderState;
-  LPD3DHAL_RENDERPRIMITIVECB   RenderPrimitive;
-  DWORD                                dwReserved;
-  LPD3DHAL_TEXTURECREATECB     TextureCreate;
-  LPD3DHAL_TEXTUREDESTROYCB    TextureDestroy;
-  LPD3DHAL_TEXTURESWAPCB       TextureSwap;
-  LPD3DHAL_TEXTUREGETSURFCB    TextureGetSurf;
-  /* now why did MS create CALLBACKS2 and CALLBACKS3 structures if
-   * all these reserved fields were available? we may never know */
-  LPVOID                       lpReserved12;
-  LPVOID                       lpReserved13;
-  LPVOID                       lpReserved14;
-  LPVOID                       lpReserved15;
-  LPVOID                       lpReserved16;
-  LPVOID                       lpReserved17;
-  LPVOID                       lpReserved18;
-  LPVOID                       lpReserved19;
-  LPVOID                       lpReserved20;
-  LPVOID                       lpReserved21;
-  LPD3DHAL_GETSTATECB          GetState;
-  DWORD                                dwReserved0;
-  DWORD                                dwReserved1;
-  DWORD                                dwReserved2;
-  DWORD                                dwReserved3;
-  DWORD                                dwReserved4;
-  DWORD                                dwReserved5;
-  DWORD                                dwReserved6;
-  DWORD                                dwReserved7;
-  DWORD                                dwReserved8;
-  DWORD                                dwReserved9;
-} D3DHAL_CALLBACKS;
-
-#ifndef D3DHAL_CALLBACKS_DEFINED
-typedef D3DHAL_CALLBACKS *LPD3DHAL_CALLBACKS;
-#define D3DHAL_CALLBACKS_DEFINED
-#endif
-
-typedef struct _D3DHAL_SETRENDERTARGETDATA             *LPD3DHAL_SETRENDERTARGETDATA;
-typedef struct _D3DHAL_CLEARDATA                       *LPD3DHAL_CLEARDATA;
-typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA            *LPD3DHAL_DRAWONEPRIMITIVEDATA;
-typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA     *LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA;
-typedef struct _D3DHAL_DRAWPRIMITIVESDATA              *LPD3DHAL_DRAWPRIMITIVESDATA;
-
-typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB)       (LPD3DHAL_SETRENDERTARGETDATA);
-typedef DWORD (PASCAL *LPD3DHAL_CLEARCB)                 (LPD3DHAL_CLEARDATA);
-typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB)      (LPD3DHAL_DRAWONEPRIMITIVEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB)        (LPD3DHAL_DRAWPRIMITIVESDATA);
-
-typedef struct _D3DHAL_CALLBACKS2 {
-  DWORD                                        dwSize;
-  DWORD                                        dwFlags;
-  LPD3DHAL_SETRENDERTARGETCB           SetRenderTarget;
-  LPD3DHAL_CLEARCB                     Clear;
-  LPD3DHAL_DRAWONEPRIMITIVECB          DrawOnePrimitive;
-  LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB   DrawOneIndexedPrimitive;
-  LPD3DHAL_DRAWPRIMITIVESCB            DrawPrimitives;
-} D3DHAL_CALLBACKS2,*LPD3DHAL_CALLBACKS2;
-
-typedef struct _D3DHAL_CLEAR2DATA                      *LPD3DHAL_CLEAR2DATA;
-typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA   *LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA;
-typedef struct _D3DHAL_DRAWPRIMITIVES2DATA             *LPD3DHAL_DRAWPRIMITIVES2DATA;
-
-typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB)                (LPD3DHAL_CLEAR2DATA);
-typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB)       (LPD3DHAL_DRAWPRIMITIVES2DATA);
-
-typedef struct _D3DHAL_CALLBACKS3 {
-  DWORD                                        dwSize;
-  DWORD                                        dwFlags;
-  LPD3DHAL_CLEAR2CB                    Clear2;
-  LPVOID                               lpvReserved;
-  LPD3DHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState;
-  LPD3DHAL_DRAWPRIMITIVES2CB           DrawPrimitives2;
-} D3DHAL_CALLBACKS3,*LPD3DHAL_CALLBACKS3;
-
-/*****************************************************************************
- * parameter structures
- */
-typedef struct _D3DHAL_CONTEXTCREATEDATA {
-  union {
-    LPDDRAWI_DIRECTDRAW_GBL    lpDDGbl; /* pre-DirectX 7 */
-    LPDDRAWI_DIRECTDRAW_LCL    lpDDLcl; /* DirectX 7 */
-  } DUMMYUNIONNAME1;
-  union {
-    LPDIRECTDRAWSURFACE                lpDDS;
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDSLcl; /* DirectX 7 */
-  } DUMMYUNIONNAME2;
-  union {
-    LPDIRECTDRAWSURFACE                lpDDSZ;
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDSZLcl; /* DirectX 7 */
-  } DUMMYUNIONNAME3;
-  union {
-    DWORD                      dwPID;
-    ULONG_PTR                  dwrstates;
-  } DUMMYUNIONNAME4;
-  ULONG_PTR                    dwhContext;
-  HRESULT                      ddrval;
-} D3DHAL_CONTEXTCREATEDATA;
-
-typedef struct _D3DHAL_CONTEXTDESTROYDATA {
-  ULONG_PTR                    dwhContext;
-  HRESULT                      ddrval;
-} D3DHAL_CONTEXTDESTROYDATA;
-
-typedef struct _D3DHAL_CONTEXTDESTROYALLDATA {
-  DWORD                                dwPID;
-  HRESULT                      ddrval;
-} D3DHAL_CONTEXTDESTROYALLDATA;
-
-typedef struct _D3DHAL_SCENECAPTUREDATA {
-  ULONG_PTR                    dwhContext;
-  DWORD                                dwFlag;
-  HRESULT                      ddrval;
-} D3DHAL_SCENECAPTUREDATA;
-
-#define D3DHAL_SCENE_CAPTURE_START     0x00000000
-#define D3DHAL_SCENE_CAPTURE_END       0x00000001
-
-typedef struct _D3DHAL_SETRENDERTARGETDATA {
-  ULONG_PTR                    dwhContext;
-  union {
-    LPDIRECTDRAWSURFACE                lpDDS;
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDSLcl;
-  } DUMMYUNIONNAME1;
-  union {
-    LPDIRECTDRAWSURFACE                lpDDSZ;
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDSZLcl;
-  } DUMMYUNIONNAME2;
-  HRESULT                      ddrval;
-} D3DHAL_SETRENDERTARGETDATA;
-
-typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
-  ULONG_PTR                    dwhContext;
-  DWORD                                dwFlags;
-  DWORD                                dwVertexType;
-  LPDDRAWI_DDRAWSURFACE_LCL    lpDDCommands;
-  DWORD                                dwCommandOffset;
-  DWORD                                dwCommandLength;
-  union {
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDVertex;
-    LPVOID                     lpVertices;
-  } DUMMYUNIONNAME1;
-  DWORD                                dwVertexOffset;
-  DWORD                                dwVertexLength;
-  DWORD                                dwReqVertexBufSize;
-  DWORD                                dwReqCommandBufSize;
-  LPDWORD                      lpdwRStates;
-  union {
-    DWORD                      dwVertexSize;
-    HRESULT                    ddrval;
-  } DUMMYUNIONNAME2;
-  DWORD                                dwErrorOffset;
-} D3DHAL_DRAWPRIMITIVES2DATA;
-
-#define D3DHALDP2_USERMEMVERTICES      0x00000001
-#define D3DHALDP2_EXECUTEBUFFER                0x00000002
-#define D3DHALDP2_SWAPVERTEXBUFFER     0x00000004
-#define D3DHALDP2_SWAPCOMMANDBUFFER    0x00000008
-#define D3DHALDP2_REQVERTEXBUFSIZE     0x00000010
-#define D3DHALDP2_REQCOMMANDBUFSIZE    0x00000020
-#define D3DHALDP2_VIDMEMVERTEXBUF      0x00000040
-#define D3DHALDP2_VIDMEMCOMMANDBUF     0x00000080
-
-/*****************************************************************************
- * DrawPrimitives2 command structures
- */
-typedef struct _D3DHAL_DP2COMMAND {
-  BYTE bCommand;
-  BYTE bReserved;
-  union {
-    WORD wPrimitiveCount;
-    WORD wStateCount;
-  } DUMMYUNIONNAME;
-} D3DHAL_DP2COMMAND,*LPD3DHAL_DP2COMMAND;
-
-typedef enum _D3DHAL_DP2OPERATION {
-  D3DDP2OP_POINTS              = 1,
-  D3DDP2OP_INDEXEDLINELIST     = 2,
-  D3DDP2OP_INDEXEDTRIANGLELIST = 3,
-  D3DDP2OP_RENDERSTATE         = 8,
-  D3DDP2OP_LINELIST            = 15,
-  D3DDP2OP_LINESTRIP           = 16,
-  D3DDP2OP_INDEXEDLINESTRIP    = 17,
-  D3DDP2OP_TRIANGLELIST                = 18,
-  D3DDP2OP_TRIANGLESTRIP       = 19,
-  D3DDP2OP_INDEXEDTRIANGLESTRIP        = 20,
-  D3DDP2OP_TRIANGLEFAN         = 21,
-  D3DDP2OP_INDEXEDTRIANGLEFAN  = 22,
-  D3DDP2OP_TRIANGLEFAN_IMM     = 23,
-  D3DDP2OP_LINELIST_IMM                = 24,
-  D3DDP2OP_TEXTURESTAGESTATE   = 25,
-  D3DDP2OP_INDEXEDTRIANGLELIST2        = 26,
-  D3DDP2OP_INDEXEDLINELIST2    = 27,
-  D3DDP2OP_VIEWPORTINFO                = 28,
-  D3DDP2OP_WINFO               = 29,
-  /* pre-DirectX 7 interfaces */
-  D3DDP2OP_SETPALETTE          = 30,
-  D3DDP2OP_UPDATEPALETTE       = 31,
-  /* DirectX 7 interfaces */
-  D3DDP2OP_ZRANGE              = 32,
-  D3DDP2OP_SETMATERIAL         = 33,
-  D3DDP2OP_SETLIGHT            = 34,
-  D3DDP2OP_CREATELIGHT         = 35,
-  D3DDP2OP_SETTRANSFORM                = 36,
-  D3DDP2OP_TEXBLT              = 38,
-  D3DDP2OP_STATESET            = 39,
-  D3DDP2OP_SETPRIORITY         = 40,
-  /* all interfaces */
-  D3DDP2OP_SETRENDERTARGET     = 41,
-  D3DDP2OP_CLEAR               = 42,
-  /* DirectX 7 interfaces */
-  D3DDP2OP_SETTEXLOD           = 43,
-  D3DPP2OP_SETCLIPPLANE                = 44,
-} D3DHAL_DP2OPERATION;
-
-/* point primitives */
-
-typedef struct _D3DHAL_POINTS {
-  WORD wCount;
-  WORD wVStart;
-} D3DHAL_DP2POINTS,*LPD3DHAL_DP2POINTS;
-
-/* line primitives */
-
-typedef struct _D3DHAL_DP2STARTVERTEX {
-  WORD wVStart;
-} D3DHAL_DP2STARTVERTEX,*LPD3DHAL_DP2STARTVERTEX;
-
-typedef struct _D3DHAL_DP2LINELIST {
-  WORD wVStart;
-} D3DHAL_DP2LINELIST,*LPD3DHAL_DP2LINELIST;
-
-typedef struct _D3DHAL_DP2INDEXEDLINELIST {
-  WORD wV1;
-  WORD wV2;
-} D3DHAL_DP2INDEXEDLINELIST,*LPD3DHAL_DP2INDEXEDLINELIST;
-
-typedef struct _D3DHAL_DP2LINESTRIP {
-  WORD wVStart;
-} D3DHAL_DP2LINESTRIP,*LPD3DHAL_DP2LINESTRIP;
-
-typedef struct _D3DHAL_DP2INDEXEDLINESTRIP {
-  WORD wV[2];
-} D3DHAL_DP2INDEXEDLINESTRIP,*LPD3DHAL_DP2INDEXEDLINESTRIP;
-
-/* triangle primitives */
-
-typedef struct _D3DHAL_DP2TRIANGLELIST {
-  WORD wVStart;
-} D3DHAL_DP2TRIANGLELIST,*LPD3DHAL_DP2TRIANGLELIST;
-
-typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST {
-  WORD wV1;
-  WORD wV2;
-  WORD wV3;
-  WORD wFlags;
-} D3DHAL_DP2INDEXEDTRIANGLELIST,*LPD3DHAL_DP2INDEXEDTRIANGLELIST;
-
-typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2 {
-  WORD wV1;
-  WORD wV2;
-  WORD wV3;
-} D3DHAL_DP2INDEXEDTRIANGLELIST2,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2;
-
-typedef struct _D3DHAL_DP2TRIANGLESTRIP {
-  WORD wVStart;
-} D3DHAL_DP2TRIANGLESTRIP,*LPD3DHAL_DP2TRIANGLESTRIP;
-
-typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP {
-  WORD wV[3];
-} D3DHAL_DP2INDEXEDTRIANGLESTRIP,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP;
-
-typedef struct _D3DHAL_DP2TRIANGLEFAN {
-  WORD wVStart;
-} D3DHAL_DP2TRIANGLEFAN,*LPD3DHAL_DP2TRIANGLEFAN;
-
-typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN {
-  WORD wV[3];
-} D3DHAL_DP2INDEXEDTRIANGLEFAN,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN;
-
-typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM {
-  DWORD dwEdgeFlags;
-} D3DHAL_DP2TRIANGLEFAN_IMM,*LPD3DHAL_DP2TRIANGLEFAN_IMM;
-
-/* render states */
-typedef struct _D3DHAL_DP2RENDERSTATE {
-  D3DRENDERSTATETYPE   RenderState;
-  union {
-    D3DVALUE dvState;
-    DWORD dwState;
-  } DUMMYUNIONNAME;
-} D3DHAL_DP2RENDERSTATE,*LPD3DHAL_DP2RENDERSTATE;
-
-typedef struct _D3DHAL_DP2TEXTURESTAGESTATE {
-  WORD wStage;
-  WORD TSState;
-  DWORD dwValue;
-} D3DHAL_DP2TEXTURESTAGESTATE,*LPD3DHAL_DP2TEXTURESTAGESTATE;
-
-#define D3DTSS_TEXTUREMAP 0
-
-typedef struct _D3DHAL_DP2VIEWPORTINFO {
-  DWORD dwX;
-  DWORD dwY;
-  DWORD dwWidth;
-  DWORD dwHeight;
-} D3DHAL_DP2VIEWPORTINFO,*LPD3DHAL_DP2VIEWPORTINFO;
-
-typedef struct _D3DHAL_DP2WINFO {
-  D3DVALUE dwWNear;
-  D3DVALUE dwWFar;
-} D3DHAL_DP2WINFO,*LPD3DHAL_DP2WINFO;
-
-typedef struct _D3DHAL_DP2SETPALETTE {
-  DWORD dwPaletteHandle;
-  DWORD dwPaletteFlags;
-  DWORD dwSurfaceHandle;
-} D3DHAL_DP2SETPALETTE,*LPD3DHAL_DP2SETPALETTE;
-
-typedef struct _D3DHAL_DP2UPDATEPALETTE {
-  DWORD dwPaletteHandle;
-  WORD wStartIndex;
-  WORD wNumEntries;
-} D3DHAL_DP2UPDATEPALETTE,*LPD3DHAL_DP2UPDATEPALETTE;
-
-typedef struct _D3DHAL_DP2ZRANGE {
-  D3DVALUE dvMinZ;
-  D3DVALUE dvMaxZ;
-} D3DHAL_DP2ZRANGE,*LPD3DHAL_DP2ZRANGE;
-
-typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL,*LPD3DHAL_DP2SETMATERIAL;
-
-typedef struct _D3DHAL_DP2SETLIGHT {
-  DWORD dwIndex;
-  DWORD dwDataType;
-} D3DHAL_DP2SETLIGHT,*LPD3DHAL_DP2SETLIGHT;
-
-#define D3DHAL_SETLIGHT_ENABLE 0
-#define D3DHAL_SETLIGHT_DISABLE        1
-#define D3DHAL_SETLIGHT_DATA   2
-
-typedef struct _D3DHAL_DP2CREATELIGHT {
-  DWORD dwIndex;
-} D3DHAL_DP2CREATELIGHT,*LPD3DHAL_DP2CREATELIGHT;
-
-typedef struct _D3DHAL_DP2SETTRANSFORM {
-  D3DTRANSFORMSTATETYPE        xfrmType;
-  D3DMATRIX            matrix;
-} D3DHAL_DP2SETTRANSFORM,*LPD3DHAL_DP2SETTRANSFORM;
-
-typedef struct _D3DHAL_DP2TEXBLT {
-  DWORD dwDDDestSurface;
-  DWORD dwDDSrcSurface;
-  POINT pDest;
-  RECTL rSrc;
-  DWORD dwFlags;
-} D3DHAL_DP2TEXBLT,*LPD3DHAL_DP2TEXBLT;
-
-typedef struct _D3DHAL_DP2STATESET {
-  DWORD               dwOperation;
-  DWORD               dwParam;
-  D3DSTATEBLOCKTYPE   sbType;
-} D3DHAL_DP2STATESET,*LPD3DHAL_DP2STATESET;
-
-#define D3DHAL_STATESETBEGIN   0
-#define D3DHAL_STATESETEND     1
-#define D3DHAL_STATESETDELETE  2
-#define D3DHAL_STATESETEXECUTE 3
-#define D3DHAL_STATESETCAPTURE 4
-
-typedef struct _D3DHAL_DP2SETPRIORITY {
-  DWORD dwDDSurface;
-  DWORD dwPriority;
-} D3DHAL_DP2SETPRIORITY,*LPD3DHAL_DP2SETPRIORITY;
-
-typedef struct _D3DHAL_DP2SETRENDERTARGET {
-  DWORD hRenderTarget;
-  DWORD hZBuffer;
-} D3DHAL_DP2SETRENDERTARGET,*LPD3DHAL_DP2SETRENDERTARGET;
-
-typedef struct _D3DHAL_DP2CLEAR {
-  DWORD                dwFlags;
-  DWORD                dwFillColor;
-  D3DVALUE     dvFillDepth;
-  DWORD                dwFillStencil;
-  RECT         Rects[1];
-} D3DHAL_DP2CLEAR,*LPD3DHAL_DP2CLEAR;
-
-typedef struct _D3DHAL_DP2SETTEXLOD {
-  DWORD dwDDSurface;
-  DWORD dwLOD;
-} D3DHAL_DP2SETTEXLOD,*LPD3DHAL_DP2SETTEXLOD;
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* _D3DHAL_H_ */
diff --git a/misc/builddeps/win32/dx/include/d3drm.h b/misc/builddeps/win32/dx/include/d3drm.h
deleted file mode 100644 (file)
index 240014e..0000000
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
- * Copyright (C) 2005 Peter Berg Larsen
- * Copyright (C) 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DRM_H__
-#define __D3DRM_H__
-
-#include <ddraw.h>
-
-typedef struct IDirect3DRM *LPDIRECT3DRM;
-
-#include <d3drmobj.h>
-
-
-/* Direct3DRM Object CLSID */
-DEFINE_GUID(CLSID_CDirect3DRM,              0x4516ec41, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-
-/* Direct3DRM Interface GUIDs */
-DEFINE_GUID(IID_IDirect3DRM,                0x2bc49361, 0x8327, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRM2,               0x4516ecc8, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRM3,               0x4516ec83, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-
-HRESULT WINAPI Direct3DRMCreate(LPDIRECT3DRM* ppDirect3DRM);
-
-/*****************************************************************************
- * IDirect3DRMObject interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRM
-DECLARE_INTERFACE_(IDirect3DRM,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRM methods ***/
-    STDMETHOD(CreateObject)(THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(CreateFrame)(THIS_ LPDIRECT3DRMFRAME, LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH *) PURE;
-    STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER *) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE *) PURE;
-    STDMETHOD(CreateAnimation)(THIS_ LPDIRECT3DRMANIMATION *) PURE;
-    STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET *) PURE;
-    STDMETHOD(CreateTexture)(THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(CreateLight)(THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateLightRGB)(THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL *) PURE;
-    STDMETHOD(CreateDevice)(THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(CreateDeviceFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack,
-        LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(CreateDeviceFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev, LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(CreateDeviceFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height,
-        LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(CreateShadow)(THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMLIGHT, D3DVALUE px, D3DVALUE py, D3DVALUE pz,
-        D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, LPDIRECT3DRMVISUAL *) PURE;
-    STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE pDDS, LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DRMDEVICE, LPDIRECT3DRMFRAME, DWORD, DWORD, DWORD, DWORD,
-        LPDIRECT3DRMVIEWPORT *) PURE;
-    STDMETHOD(CreateWrap)(THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
-        D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov,
-        D3DVALUE su, D3DVALUE sv, LPDIRECT3DRMWRAP *) PURE;
-    STDMETHOD(CreateUserVisual)(THIS_ D3DRMUSERVISUALCALLBACK, LPVOID pArg, LPDIRECT3DRMUSERVISUAL *) PURE;
-    STDMETHOD(LoadTexture)(THIS_ const char *, LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(LoadTextureFromResource)(THIS_ HRSRC rs, LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(SetSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(AddSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetSearchPath)(THIS_ DWORD *size_return, LPSTR path_return) PURE;
-    STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
-    STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
-    STDMETHOD(GetDevices)(THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
-    STDMETHOD(GetNamedObject)(THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
-    STDMETHOD(EnumerateObjects)(THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS, D3DRMLOADCALLBACK, LPVOID,
-        D3DRMLOADTEXTURECALLBACK, LPVOID, LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(Tick)(THIS_ D3DVALUE) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRM_QueryInterface(p,a,b)                         (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRM_AddRef(p)                                     (p)->lpVtbl->AddRef(p)
-#define IDirect3DRM_Release(p)                                    (p)->lpVtbl->Release(p)
-/*** IDirect3DRM methods ***/
-#define IDirect3DRM_CreateObject(p,a,b,c,d)                       (p)->lpVtbl->CreateObject(p,a,b,d)
-#define IDirect3DRM_CreateFrame(p,a,b)                            (p)->lpVtbl->CreateFrame(p,a,b)
-#define IDirect3DRM_CreateMesh(p,a)                               (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRM_CreateMeshBuilder(p,a)                        (p)->lpVtbl->CreateMeshBuilder(p,a)
-#define IDirect3DRM_CreateFace(p,a)                               (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRM_CreateAnimation(p,a)                          (p)->lpVtbl->CreateAnimation(p,a)
-#define IDirect3DRM_CreateAnimationSet(p,a)                       (p)->lpVtbl->CreateAnimationSet(p,a)
-#define IDirect3DRM_CreateTexture(p,a,b)                          (p)->lpVtbl->CreateTexture(p,a,b)
-#define IDirect3DRM_CreateLight(p,a,b,c)                          (p)->lpVtbl->CreateLight(p,a,b,c)
-#define IDirect3DRM_CreateLightRGB(p,a,b,c,d,e)                   (p)->lpVtbl->CreateLightRGB(p,a,b,c,d,e)
-#define IDirect3DRM_CreateMaterial(p,a,b)                         (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3DRM_CreateDevice(p,a,b,c)                         (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirect3DRM_CreateDeviceFromSurface(p,a,b,c,d)            (p)->lpVtbl->CreateDeviceFromSurface(p,a,b,c,d)
-#define IDirect3DRM_CreateDeviceFromD3D(p,a,b,c)                  (p)->lpVtbl->CreateDeviceFromD3D(p,a,b,c)
-#define IDirect3DRM_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->lpVtbl->CreateDeviceFromClipper(p,a,b,c,d,e)
-#define IDirect3DRM_CreateTextureFromSurface(p,a,b)               (p)->lpVtbl->CreateTextureFromSurface(p,a,b)
-#define IDirect3DRM_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->lpVtbl->CreateShadow(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM_CreateViewport(p,a,b,c,d,e,f,g)               (p)->lpVtbl->CreateViewport(p,a,b,c,d,e,f,g)
-#define IDirect3DRM_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q) (p)->lpVtbl->CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q)
-#define IDirect3DRM_CreateUserVisual(p,a,b,c)                     (p)->lpVtbl->CreateUserVisual(p,a,b,c)
-#define IDirect3DRM_LoadTexture(p,a,b)                            (p)->lpVtbl->LoadTexture(p,a,b)
-#define IDirect3DRM_LoadTextureFromResource(p,a,b)                (p)->lpVtbl->LoadTextureFromResource(p,a,b)
-#define IDirect3DRM_SetSearchPath(p,a)                            (p)->lpVtbl->SetSearchPath(p,a)
-#define IDirect3DRM_AddSearchPath(p,a)                            (p)->lpVtbl->AddSearchPath(p,a)
-#define IDirect3DRM_GetSearchPath(p,a,b)                          (p)->lpVtbl->GetSearchPath(p,a,b)
-#define IDirect3DRM_SetDefaultTextureColors(p,a)                  (p)->lpVtbl->SetDefaultTextureColors(p,a)
-#define IDirect3DRM_SetDefaultTextureShades(p,a)                  (p)->lpVtbl->SetDefaultTextureShades(p,a)
-#define IDirect3DRM_GetDevices(p,a)                               (p)->lpVtbl->GetDevices(p,a)
-#define IDirect3DRM_GetNamedObject(p,a,b)                         (p)->lpVtbl->GetNamedObject(p,a,b)
-#define IDirect3DRM_EnumerateObjects(p,a,b)                       (p)->lpVtbl->EnumerateObjects(p,a,b)
-#define IDirect3DRM_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->lpVtbl->Load(p,a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM_Tick(p,a)                                     (p)->lpVtbl->Tick(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRM_QueryInterface(p,a,b)                         (p)->QueryInterface(a,b)
-#define IDirect3DRM_AddRef(p)                                     (p)->AddRef()
-#define IDirect3DRM_Release(p)                                    (p)->Release()
-/*** IDirect3DRM methods ***/
-#define IDirect3DRM_CreateObject(p,a,b,c,d)                       (p)->CreateObject(a,b,d)
-#define IDirect3DRM_CreateFrame(p,a,b)                            (p)->CreateFrame(a,b)
-#define IDirect3DRM_CreateMesh(p,a)                               (p)->CreateMesh(a)
-#define IDirect3DRM_CreateMeshBuilder(p,a)                        (p)->CreateMeshBuilder(a)
-#define IDirect3DRM_CreateFace(p,a)                               (p)->CreateFace(a)
-#define IDirect3DRM_CreateAnimation(p,a)                          (p)->CreateAnimation(a)
-#define IDirect3DRM_CreateAnimationSet(p,a)                       (p)->CreateAnimationSet(a)
-#define IDirect3DRM_CreateTexture(p,a,b)                          (p)->CreateTexture(a,b)
-#define IDirect3DRM_CreateLight(p,a,b,c)                          (p)->CreateLight(a,b,c)
-#define IDirect3DRM_CreateLightRGB(p,a,b,c,d,e)                   (p)->CreateLightRGB(a,b,c,d,e)
-#define IDirect3DRM_CreateMaterial(p,a,b)                         (p)->CreateMaterial(a,b)
-#define IDirect3DRM_CreateDevice(p,a,b,c)                         (p)->CreateDevice(a,b,c)
-#define IDirect3DRM_CreateDeviceFromSurface(p,a,b,c,d)            (p)->CreateDeviceFromSurface(a,b,c,d)
-#define IDirect3DRM_CreateDeviceFromD3D(p,a,b,c)                  (p)->CreateDeviceFromD3D(a,b,c)
-#define IDirect3DRM_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->CreateDeviceFromClipper(a,b,c,d,e)
-#define IDirect3DRM_CreateTextureFromSurface(p,a,b)               (p)->CreateTextureFromSurface(a,b)
-#define IDirect3DRM_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->CreateShadow(a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM_CreateViewport(p,a,b,c,d,e,f,g)               (p)->CreateViewport(a,b,c,d,e,f,g)
-#define IDirect3DRM_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (p)->CreateWrap(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
-#define IDirect3DRM_CreateUserVisual(p,a,b,c)                     (p)->CreateUserVisual(a,b,c)
-#define IDirect3DRM_LoadTexture(p,a,b)                            (p)->LoadTexture(a,b)
-#define IDirect3DRM_LoadTextureFromResource(p,a,b)                (p)->LoadTextureFromResource(a,b)
-#define IDirect3DRM_SetSearchPath(p,a)                            (p)->SetSearchPath(a)
-#define IDirect3DRM_AddSearchPath(p,a)                            (p)->AddSearchPath(a)
-#define IDirect3DRM_GetSearchPath(p,a,b)                          (p)->GetSearchPath(a,b)
-#define IDirect3DRM_SetDefaultTextureColors(p,a)                  (p)->SetDefaultTextureColors(a)
-#define IDirect3DRM_SetDefaultTextureShades(p,a)                  (p)->SetDefaultTextureShades(a)
-#define IDirect3DRM_GetDevices(p,a)                               (p)->GetDevices(a)
-#define IDirect3DRM_GetNamedObject(p,a,b)                         (p)->GetNamedObject(a,b)
-#define IDirect3DRM_EnumerateObjects(p,a,b)                       (p)->EnumerateObjects(a,b)
-#define IDirect3DRM_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->Load(a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM_Tick(p,a)                                     (p)->Tick(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRM2 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRM2
-DECLARE_INTERFACE_(IDirect3DRM2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRM2 methods ***/
-    STDMETHOD(CreateObject)(THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(CreateFrame)(THIS_ LPDIRECT3DRMFRAME, LPDIRECT3DRMFRAME2 *) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH *) PURE;
-    STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER2 *) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE *) PURE;
-    STDMETHOD(CreateAnimation)(THIS_ LPDIRECT3DRMANIMATION *) PURE;
-    STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET *) PURE;
-    STDMETHOD(CreateTexture)(THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE2 *) PURE;
-    STDMETHOD(CreateLight)(THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateLightRGB)(THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL *) PURE;
-    STDMETHOD(CreateDevice)(THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE2 *) PURE;
-    STDMETHOD(CreateDeviceFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack,
-        LPDIRECT3DRMDEVICE2 *) PURE;
-    STDMETHOD(CreateDeviceFromD3D)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev, LPDIRECT3DRMDEVICE2 *) PURE;
-    STDMETHOD(CreateDeviceFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height,
-        LPDIRECT3DRMDEVICE2 *) PURE;
-    STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE pDDS, LPDIRECT3DRMTEXTURE2 *) PURE;
-    STDMETHOD(CreateShadow)(THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMLIGHT, D3DVALUE px, D3DVALUE py, D3DVALUE pz,
-        D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, LPDIRECT3DRMVISUAL *) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DRMDEVICE, LPDIRECT3DRMFRAME, DWORD, DWORD, DWORD, DWORD,
-        LPDIRECT3DRMVIEWPORT *) PURE;
-    STDMETHOD(CreateWrap)(THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
-        D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov,
-        D3DVALUE su, D3DVALUE sv, LPDIRECT3DRMWRAP *) PURE;
-    STDMETHOD(CreateUserVisual)(THIS_ D3DRMUSERVISUALCALLBACK, LPVOID pArg, LPDIRECT3DRMUSERVISUAL *) PURE;
-    STDMETHOD(LoadTexture)(THIS_ const char *, LPDIRECT3DRMTEXTURE2 *) PURE;
-    STDMETHOD(LoadTextureFromResource)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR /* LPCTSTR */ strType, LPDIRECT3DRMTEXTURE2 *) PURE;
-    STDMETHOD(SetSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(AddSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetSearchPath)(THIS_ DWORD *size_return, LPSTR path_return) PURE;
-    STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
-    STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
-    STDMETHOD(GetDevices)(THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
-    STDMETHOD(GetNamedObject)(THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
-    STDMETHOD(EnumerateObjects)(THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS, D3DRMLOADCALLBACK, LPVOID,
-        D3DRMLOADTEXTURECALLBACK, LPVOID, LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(Tick)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRM2_QueryInterface(p,a,b)                         (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRM2_AddRef(p)                                     (p)->lpVtbl->AddRef(p)
-#define IDirect3DRM2_Release(p)                                    (p)->lpVtbl->Release(p)
-/*** IDirect3DRM2 methods ***/
-#define IDirect3DRM2_CreateObject(p,a,b,c,d)                       (p)->lpVtbl->CreateObject(p,a,b,d)
-#define IDirect3DRM2_CreateFrame(p,a,b)                            (p)->lpVtbl->CreateFrame(p,a,b)
-#define IDirect3DRM2_CreateMesh(p,a)                               (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRM2_CreateMeshBuilder(p,a)                        (p)->lpVtbl->CreateMeshBuilder(p,a)
-#define IDirect3DRM2_CreateFace(p,a)                               (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRM2_CreateAnimation(p,a)                          (p)->lpVtbl->CreateAnimation(p,a)
-#define IDirect3DRM2_CreateAnimationSet(p,a)                       (p)->lpVtbl->CreateAnimationSet(p,a)
-#define IDirect3DRM2_CreateTexture(p,a,b)                          (p)->lpVtbl->CreateTexture(p,a,b)
-#define IDirect3DRM2_CreateLight(p,a,b,c)                          (p)->lpVtbl->CreateLight(p,a,b,c)
-#define IDirect3DRM2_CreateLightRGB(p,a,b,c,d,e)                   (p)->lpVtbl->CreateLightRGB(p,a,b,c,d,e)
-#define IDirect3DRM2_CreateMaterial(p,a,b)                         (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3DRM2_CreateDevice(p,a,b,c)                         (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirect3DRM2_CreateDeviceFromSurface(p,a,b,c,d)            (p)->lpVtbl->CreateDeviceFromSurface(p,a,b,c,d)
-#define IDirect3DRM2_CreateDeviceFromD3D(p,a,b,c)                  (p)->lpVtbl->CreateDeviceFromD3D(p,a,b,c)
-#define IDirect3DRM2_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->lpVtbl->CreateDeviceFromClipper(p,a,b,c,d,e)
-#define IDirect3DRM2_CreateTextureFromSurface(p,a,b)               (p)->lpVtbl->CreateTextureFromSurface(p,a,b)
-#define IDirect3DRM2_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->lpVtbl->CreateShadow(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM2_CreateViewport(p,a,b,c,d,e,f,g)               (p)->lpVtbl->CreateViewport(p,a,b,c,d,e,f,g)
-#define IDirect3DRM2_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q) (p)->lpVtbl->CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q)
-#define IDirect3DRM2_CreateUserVisual(p,a,b,c)                     (p)->lpVtbl->CreateUserVisual(p,a,b,c)
-#define IDirect3DRM2_LoadTexture(p,a,b)                            (p)->lpVtbl->LoadTexture(p,a,b)
-#define IDirect3DRM2_LoadTextureFromResource(p,a,b,c,d)            (p)->lpVtbl->LoadTextureFromResource(p,a,b,c,d)
-#define IDirect3DRM2_SetSearchPath(p,a)                            (p)->lpVtbl->SetSearchPath(p,a)
-#define IDirect3DRM2_AddSearchPath(p,a)                            (p)->lpVtbl->AddSearchPath(p,a)
-#define IDirect3DRM2_GetSearchPath(p,a,b)                          (p)->lpVtbl->GetSearchPath(p,a,b)
-#define IDirect3DRM2_SetDefaultTextureColors(p,a)                  (p)->lpVtbl->SetDefaultTextureColors(p,a)
-#define IDirect3DRM2_SetDefaultTextureShades(p,a)                  (p)->lpVtbl->SetDefaultTextureShades(p,a)
-#define IDirect3DRM2_GetDevices(p,a)                               (p)->lpVtbl->GetDevices(p,a)
-#define IDirect3DRM2_GetNamedObject(p,a,b)                         (p)->lpVtbl->GetNamedObject(p,a,b)
-#define IDirect3DRM2_EnumerateObjects(p,a,b)                       (p)->lpVtbl->EnumerateObjects(p,a,b)
-#define IDirect3DRM2_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->lpVtbl->Load(p,a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM2_Tick(p,a)                                     (p)->lpVtbl->Tick(p,a)
-#define IDirect3DRM2_CreateProgressiveMesh(p,a)                    (p)->lpVtbl->CreateProgressiveMesh(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRM2_QueryInterface(p,a,b)                         (p)->QueryInterface(a,b)
-#define IDirect3DRM2_AddRef(p)                                     (p)->AddRef()
-#define IDirect3DRM2_Release(p)                                    (p)->Release()
-/*** IDirect3DRM2 methods ***/
-#define IDirect3DRM2_CreateObject(p,a,b,c,d)                       (p)->CreateObject(a,b,d)
-#define IDirect3DRM2_CreateFrame(p,a,b)                            (p)->CreateFrame(a,b)
-#define IDirect3DRM2_CreateMesh(p,a)                               (p)->CreateMesh(a)
-#define IDirect3DRM2_CreateMeshBuilder(p,a)                        (p)->CreateMeshBuilder(a)
-#define IDirect3DRM2_CreateFace(p,a)                               (p)->CreateFace(a)
-#define IDirect3DRM2_CreateAnimation(p,a)                          (p)->CreateAnimation(a)
-#define IDirect3DRM2_CreateAnimationSet(p,a)                       (p)->CreateAnimationSet(a)
-#define IDirect3DRM2_CreateTexture(p,a,b)                          (p)->CreateTexture(a,b)
-#define IDirect3DRM2_CreateLight(p,a,b,c)                          (p)->CreateLight(a,b,c)
-#define IDirect3DRM2_CreateLightRGB(p,a,b,c,d,e)                   (p)->CreateLightRGB(a,b,c,d,e)
-#define IDirect3DRM2_CreateMaterial(p,a,b)                         (p)->CreateMaterial(a,b)
-#define IDirect3DRM2_CreateDevice(p,a,b,c)                         (p)->CreateDevice(a,b,c)
-#define IDirect3DRM2_CreateDeviceFromSurface(p,a,b,c,d)            (p)->CreateDeviceFromSurface(a,b,c,d)
-#define IDirect3DRM2_CreateDeviceFromD3D(p,a,b,c)                  (p)->CreateDeviceFromD3D(a,b,c)
-#define IDirect3DRM2_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->CreateDeviceFromClipper(a,b,c,d,e)
-#define IDirect3DRM2_CreateTextureFromSurface(p,a,b)               (p)->CreateTextureFromSurface(a,b)
-#define IDirect3DRM2_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->CreateShadow(a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM2_CreateViewport(p,a,b,c,d,e,f,g)               (p)->CreateViewport(a,b,c,d,e,f,g)
-#define IDirect3DRM2_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (p)->CreateWrap(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
-#define IDirect3DRM2_CreateUserVisual(p,a,b,c)                     (p)->CreateUserVisual(a,b,c)
-#define IDirect3DRM2_LoadTexture(p,a,b)                            (p)->LoadTexture(a,b)
-#define IDirect3DRM2_LoadTextureFromResource(p,a,b)                (p)->LoadTextureFromResource(a,b)
-#define IDirect3DRM2_SetSearchPath(p,a)                            (p)->SetSearchPath(a)
-#define IDirect3DRM2_AddSearchPath(p,a)                            (p)->AddSearchPath(a)
-#define IDirect3DRM2_GetSearchPath(p,a,b)                          (p)->GetSearchPath(a,b)
-#define IDirect3DRM2_SetDefaultTextureColors(p,a)                  (p)->SetDefaultTextureColors(a)
-#define IDirect3DRM2_SetDefaultTextureShades(p,a)                  (p)->SetDefaultTextureShades(a)
-#define IDirect3DRM2_GetDevices(p,a)                               (p)->GetDevices(a)
-#define IDirect3DRM2_GetNamedObject(p,a,b)                         (p)->GetNamedObject(a,b)
-#define IDirect3DRM2_EnumerateObjects(p,a,b)                       (p)->EnumerateObjects(a,b)
-#define IDirect3DRM2_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->Load(a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM2_Tick(p,a)                                     (p)->Tick(a)
-#define IDirect3DRM2_CreateProgressiveMesh(p,a)                    (p)->CreateProgressiveMesh(p,a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRM3 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRM3
-DECLARE_INTERFACE_(IDirect3DRM3,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRM2 methods ***/
-    STDMETHOD(CreateObject)(THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(CreateFrame)(THIS_ LPDIRECT3DRMFRAME3, LPDIRECT3DRMFRAME3 *) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH *) PURE;
-    STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3 *) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE2 *) PURE;
-    STDMETHOD(CreateAnimation)(THIS_ LPDIRECT3DRMANIMATION2 *) PURE;
-    STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET2 *) PURE;
-    STDMETHOD(CreateTexture)(THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(CreateLight)(THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateLightRGB)(THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL2 *) PURE;
-    STDMETHOD(CreateDevice)(THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(CreateDeviceFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack,
-        LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(CreateDeviceFromD3D)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev, LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(CreateDeviceFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height,
-        LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE pDDS, LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(CreateShadow)(THIS_ LPUNKNOWN, LPDIRECT3DRMLIGHT, D3DVALUE px, D3DVALUE py, D3DVALUE pz,
-        D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, LPDIRECT3DRMSHADOW2 *) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DRMDEVICE3, LPDIRECT3DRMFRAME3, DWORD, DWORD, DWORD, DWORD,
-        LPDIRECT3DRMVIEWPORT2 *) PURE;
-    STDMETHOD(CreateWrap)(THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME3, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
-        D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov,
-        D3DVALUE su, D3DVALUE sv, LPDIRECT3DRMWRAP *) PURE;
-    STDMETHOD(CreateUserVisual)(THIS_ D3DRMUSERVISUALCALLBACK, LPVOID pArg, LPDIRECT3DRMUSERVISUAL *) PURE;
-    STDMETHOD(LoadTexture)(THIS_ const char *, LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(LoadTextureFromResource)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR  /* LPCTSTR */ strType, LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(SetSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(AddSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetSearchPath)(THIS_ DWORD *size_return, LPSTR path_return) PURE;
-    STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
-    STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
-    STDMETHOD(GetDevices)(THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
-    STDMETHOD(GetNamedObject)(THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
-    STDMETHOD(EnumerateObjects)(THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS, D3DRMLOADCALLBACK, LPVOID,
-        D3DRMLOADTEXTURECALLBACK, LPVOID, LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(Tick)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH) PURE;
-    STDMETHOD(RegisterClient)(THIS_ REFGUID rguid, LPDWORD lpdwID) PURE;
-    STDMETHOD(UnregisterClient)(THIS_ REFGUID rguid) PURE;
-    STDMETHOD(CreateClippedVisual)(THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMCLIPPEDVISUAL *) PURE;
-    STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOptions)(THIS_ LPDWORD) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRM3_QueryInterface(p,a,b)                         (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRM3_AddRef(p)                                     (p)->lpVtbl->AddRef(p)
-#define IDirect3DRM3_Release(p)                                    (p)->lpVtbl->Release(p)
-/*** IDirect3DRM3 methods ***/
-#define IDirect3DRM3_CreateObject(p,a,b,c,d)                       (p)->lpVtbl->CreateObject(p,a,b,d)
-#define IDirect3DRM3_CreateFrame(p,a,b)                            (p)->lpVtbl->CreateFrame(p,a,b)
-#define IDirect3DRM3_CreateMesh(p,a)                               (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRM3_CreateMeshBuilder(p,a)                        (p)->lpVtbl->CreateMeshBuilder(p,a)
-#define IDirect3DRM3_CreateFace(p,a)                               (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRM3_CreateAnimation(p,a)                          (p)->lpVtbl->CreateAnimation(p,a)
-#define IDirect3DRM3_CreateAnimationSet(p,a)                       (p)->lpVtbl->CreateAnimationSet(p,a)
-#define IDirect3DRM3_CreateTexture(p,a,b)                          (p)->lpVtbl->CreateTexture(p,a,b)
-#define IDirect3DRM3_CreateLight(p,a,b,c)                          (p)->lpVtbl->CreateLight(p,a,b,c)
-#define IDirect3DRM3_CreateLightRGB(p,a,b,c,d,e)                   (p)->lpVtbl->CreateLightRGB(p,a,b,c,d,e)
-#define IDirect3DRM3_CreateMaterial(p,a,b)                         (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3DRM3_CreateDevice(p,a,b,c)                         (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirect3DRM3_CreateDeviceFromSurface(p,a,b,c,d)            (p)->lpVtbl->CreateDeviceFromSurface(p,a,b,c,d)
-#define IDirect3DRM3_CreateDeviceFromD3D(p,a,b,c)                  (p)->lpVtbl->CreateDeviceFromD3D(p,a,b,c)
-#define IDirect3DRM3_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->lpVtbl->CreateDeviceFromClipper(p,a,b,c,d,e)
-#define IDirect3DRM3_CreateTextureFromSurface(p,a,b)               (p)->lpVtbl->CreateTextureFromSurface(p,a,b)
-#define IDirect3DRM3_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->lpVtbl->CreateShadow(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM3_CreateViewport(p,a,b,c,d,e,f,g)               (p)->lpVtbl->CreateViewport(p,a,b,c,d,e,f,g)
-#define IDirect3DRM3_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q) (p)->lpVtbl->CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q)
-#define IDirect3DRM3_CreateUserVisual(p,a,b,c)                     (p)->lpVtbl->CreateUserVisual(p,a,b,c)
-#define IDirect3DRM3_LoadTexture(p,a,b)                            (p)->lpVtbl->LoadTexture(p,a,b)
-#define IDirect3DRM3_LoadTextureFromResource(p,a,b,c,d)            (p)->lpVtbl->LoadTextureFromResource(p,a,b,c,d)
-#define IDirect3DRM3_SetSearchPath(p,a)                            (p)->lpVtbl->SetSearchPath(p,a)
-#define IDirect3DRM3_AddSearchPath(p,a)                            (p)->lpVtbl->AddSearchPath(p,a)
-#define IDirect3DRM3_GetSearchPath(p,a,b)                          (p)->lpVtbl->GetSearchPath(p,a,b)
-#define IDirect3DRM3_SetDefaultTextureColors(p,a)                  (p)->lpVtbl->SetDefaultTextureColors(p,a)
-#define IDirect3DRM3_SetDefaultTextureShades(p,a)                  (p)->lpVtbl->SetDefaultTextureShades(p,a)
-#define IDirect3DRM3_GetDevices(p,a)                               (p)->lpVtbl->GetDevices(p,a)
-#define IDirect3DRM3_GetNamedObject(p,a,b)                         (p)->lpVtbl->GetNamedObject(p,a,b)
-#define IDirect3DRM3_EnumerateObjects(p,a,b)                       (p)->lpVtbl->EnumerateObjects(p,a,b)
-#define IDirect3DRM3_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->lpVtbl->Load(p,a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM3_Tick(p,a)                                     (p)->lpVtbl->Tick(p,a)
-#define IDirect3DRM3_CreateProgressiveMesh(p,a)                    (p)->lpVtbl->CreateProgressiveMesh(p,a)
-#define IDirect3DRM3_RegisterClient(p,a,b)                         (p)->lpVtbl->RegisterClient(p,a,b)
-#define IDirect3DRM3_UnregisterClient(p,a)                         (p)->lpVtbl->UnregisterClient(p,a)
-#define IDirect3DRM3_CreateClippedVisual(p,ab)                     (p)->lpVtbl->CreateClippedVisual(p,a,b)
-#define IDirect3DRM3_SetOptions(p,a)                               (p)->lpVtbl->SetOptions(p,a)
-#define IDirect3DRM3_GetOptions(p,a)                               (p)->lpVtbl->GetOptions(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRM3_QueryInterface(p,a,b)                         (p)->QueryInterface(a,b)
-#define IDirect3DRM3_AddRef(p)                                     (p)->AddRef()
-#define IDirect3DRM3_Release(p)                                    (p)->Release()
-/*** IDirect3DRM3 methods ***/
-#define IDirect3DRM3_CreateObject(p,a,b,c,d)                       (p)->CreateObject(a,b,d)
-#define IDirect3DRM3_CreateFrame(p,a,b)                            (p)->CreateFrame(a,b)
-#define IDirect3DRM3_CreateMesh(p,a)                               (p)->CreateMesh(a)
-#define IDirect3DRM3_CreateMeshBuilder(p,a)                        (p)->CreateMeshBuilder(a)
-#define IDirect3DRM3_CreateFace(p,a)                               (p)->CreateFace(a)
-#define IDirect3DRM3_CreateAnimation(p,a)                          (p)->CreateAnimation(a)
-#define IDirect3DRM3_CreateAnimationSet(p,a)                       (p)->CreateAnimationSet(a)
-#define IDirect3DRM3_CreateTexture(p,a,b)                          (p)->CreateTexture(a,b)
-#define IDirect3DRM3_CreateLight(p,a,b,c)                          (p)->CreateLight(a,b,c)
-#define IDirect3DRM3_CreateLightRGB(p,a,b,c,d,e)                   (p)->CreateLightRGB(a,b,c,d,e)
-#define IDirect3DRM3_CreateMaterial(p,a,b)                         (p)->CreateMaterial(a,b)
-#define IDirect3DRM3_CreateDevice(p,a,b,c)                         (p)->CreateDevice(a,b,c)
-#define IDirect3DRM3_CreateDeviceFromSurface(p,a,b,c,d)            (p)->CreateDeviceFromSurface(a,b,c,d)
-#define IDirect3DRM3_CreateDeviceFromD3D(p,a,b,c)                  (p)->CreateDeviceFromD3D(a,b,c)
-#define IDirect3DRM3_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->CreateDeviceFromClipper(a,b,c,d,e)
-#define IDirect3DRM3_CreateTextureFromSurface(p,a,b)               (p)->CreateTextureFromSurface(a,b)
-#define IDirect3DRM3_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->CreateShadow(a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM3_CreateViewport(p,a,b,c,d,e,f,g)               (p)->CreateViewport(a,b,c,d,e,f,g)
-#define IDirect3DRM3_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (p)->CreateWrap(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
-#define IDirect3DRM3_CreateUserVisual(p,a,b,c)                     (p)->CreateUserVisual(a,b,c)
-#define IDirect3DRM3_LoadTexture(p,a,b)                            (p)->LoadTexture(a,b)
-#define IDirect3DRM3_LoadTextureFromResource(p,a,b,c,d)            (p)->LoadTextureFromResource(a,b,c,d)
-#define IDirect3DRM3_SetSearchPath(p,a)                            (p)->SetSearchPath(a)
-#define IDirect3DRM3_AddSearchPath(p,a)                            (p)->AddSearchPath(a)
-#define IDirect3DRM3_GetSearchPath(p,a,b)                          (p)->GetSearchPath(a,b)
-#define IDirect3DRM3_SetDefaultTextureColors(p,a)                  (p)->SetDefaultTextureColors(a)
-#define IDirect3DRM3_SetDefaultTextureShades(p,a)                  (p)->SetDefaultTextureShades(a)
-#define IDirect3DRM3_GetDevices(p,a)                               (p)->GetDevices(a)
-#define IDirect3DRM3_GetNamedObject(p,a,b)                         (p)->GetNamedObject(a,b)
-#define IDirect3DRM3_EnumerateObjects(p,a,b)                       (p)->EnumerateObjects(a,b)
-#define IDirect3DRM3_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->Load(a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM3_Tick(p,a)                                     (p)->Tick(a)
-#define IDirect3DRM3_CreateProgressiveMesh(p,a)                    (p)->CreateProgressiveMesh(p,a)
-#define IDirect3DRM3_RegisterClient(p,a,b)                         (p)->RegisterClient(p,a,b)
-#define IDirect3DRM3_UnregisterClient(p,a)                         (p)->UnregisterClient(p,a)
-#define IDirect3DRM3_CreateClippedVisual(p,ab)                     (p)->CreateClippedVisual(p,a,b)
-#define IDirect3DRM3_SetOptions(p,a)                               (p)->SetOptions(p,a)
-#define IDirect3DRM3_GetOptions(p,a)                               (p)->GetOptions(p,a)
-#endif
-
-#define D3DRM_OK                        DD_OK
-#define D3DRMERR_BADOBJECT              MAKE_DDHRESULT(781)
-#define D3DRMERR_BADTYPE                MAKE_DDHRESULT(782)
-#define D3DRMERR_BADALLOC               MAKE_DDHRESULT(783)
-#define D3DRMERR_FACEUSED               MAKE_DDHRESULT(784)
-#define D3DRMERR_NOTFOUND               MAKE_DDHRESULT(785)
-#define D3DRMERR_NOTDONEYET             MAKE_DDHRESULT(786)
-#define D3DRMERR_FILENOTFOUND           MAKE_DDHRESULT(787)
-#define D3DRMERR_BADFILE                MAKE_DDHRESULT(788)
-#define D3DRMERR_BADDEVICE              MAKE_DDHRESULT(789)
-#define D3DRMERR_BADVALUE               MAKE_DDHRESULT(790)
-#define D3DRMERR_BADMAJORVERSION        MAKE_DDHRESULT(791)
-#define D3DRMERR_BADMINORVERSION        MAKE_DDHRESULT(792)
-#define D3DRMERR_UNABLETOEXECUTE        MAKE_DDHRESULT(793)
-#define D3DRMERR_LIBRARYNOTFOUND        MAKE_DDHRESULT(794)
-#define D3DRMERR_INVALIDLIBRARY         MAKE_DDHRESULT(795)
-#define D3DRMERR_PENDING                MAKE_DDHRESULT(796)
-#define D3DRMERR_NOTENOUGHDATA          MAKE_DDHRESULT(797)
-#define D3DRMERR_REQUESTTOOLARGE        MAKE_DDHRESULT(798)
-#define D3DRMERR_REQUESTTOOSMALL        MAKE_DDHRESULT(799)
-#define D3DRMERR_CONNECTIONLOST         MAKE_DDHRESULT(800)
-#define D3DRMERR_LOADABORTED            MAKE_DDHRESULT(801)
-#define D3DRMERR_NOINTERNET             MAKE_DDHRESULT(802)
-#define D3DRMERR_BADCACHEFILE           MAKE_DDHRESULT(803)
-#define D3DRMERR_BOXNOTSET              MAKE_DDHRESULT(804)
-#define D3DRMERR_BADPMDATA              MAKE_DDHRESULT(805)
-#define D3DRMERR_CLIENTNOTREGISTERED    MAKE_DDHRESULT(806)
-#define D3DRMERR_NOTCREATEDFROMDDS      MAKE_DDHRESULT(807)
-#define D3DRMERR_NOSUCHKEY              MAKE_DDHRESULT(808)
-#define D3DRMERR_INCOMPATABLEKEY        MAKE_DDHRESULT(809)
-#define D3DRMERR_ELEMENTINUSE           MAKE_DDHRESULT(810)
-#define D3DRMERR_TEXTUREFORMATNOTFOUND  MAKE_DDHRESULT(811)
-#define D3DRMERR_NOTAGGREGATED          MAKE_DDHRESULT(812)
-
-#endif /* __D3DRM_H__ */
diff --git a/misc/builddeps/win32/dx/include/d3drmdef.h b/misc/builddeps/win32/dx/include/d3drmdef.h
deleted file mode 100644 (file)
index 80086dc..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright 2007 Vijay Kiran Kamuju
- * Copyright 2007 David ADAM
- * Copyright 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DRMDEFS_H__
-#define __D3DRMDEFS_H__
-
-#include <stddef.h>
-#include <d3dtypes.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef struct _D3DRMVECTOR4D
-{
-    D3DVALUE x;
-    D3DVALUE y;
-    D3DVALUE z;
-    D3DVALUE w;
-} D3DRMVECTOR4D, *LPD3DRMVECTOR4D;
-
-typedef D3DVALUE D3DRMMATRIX4D[4][4];
-
-typedef struct _D3DRMQUATERNION {
-    D3DVALUE s;
-    D3DVECTOR v;
-} D3DRMQUATERNION, *LPD3DRMQUATERNION;
-
-typedef struct _D3DRMRAY {
-    D3DVECTOR dvDir;
-    D3DVECTOR dvPos;
-} D3DRMRAY, *LPD3DRMRAY;
-
-typedef struct _D3DRMBOX {
-    D3DVECTOR min;
-    D3DVECTOR max;
-} D3DRMBOX, *LPD3DRMBOX;
-
-typedef enum _D3DRMLIGHTTYPE {
-    D3DRMLIGHT_AMBIENT,
-    D3DRMLIGHT_POINT,
-    D3DRMLIGHT_SPOT,
-    D3DRMLIGHT_DIRECTIONAL,
-    D3DRMLIGHT_PARALLELPOINT
-} D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE;
-
-typedef DWORD D3DRMRENDERQUALITY, *LPD3DRMRENDERQUALITY;
-
-typedef enum _D3DRMTEXTUREQUALITY {
-    D3DRMTEXTURE_NEAREST,
-    D3DRMTEXTURE_LINEAR,
-    D3DRMTEXTURE_MIPNEAREST,
-    D3DRMTEXTURE_MIPLINEAR,
-    D3DRMTEXTURE_LINEARMIPNEAREST,
-    D3DRMTEXTURE_LINEARMIPLINEAR
-} D3DRMTEXTUREQUALITY, *LPD3DRMTEXTUREQUALITY;
-
-typedef enum _D3DRMCOMBINETYPE {
-    D3DRMCOMBINE_REPLACE,
-    D3DRMCOMBINE_BEFORE,
-    D3DRMCOMBINE_AFTER
-} D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE;
-
-typedef struct _D3DRMPALETTEENTRY {
-    unsigned char red;
-    unsigned char green;
-    unsigned char blue;
-    unsigned char flags;
-} D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY;
-
-typedef struct _D3DRMIMAGE {
-    int width;
-    int height;
-    int aspectx;
-    int aspecty;
-    int depth;
-    int rgb;
-    int bytes_per_line;
-    void* buffer1;
-    void* buffer2;
-    unsigned long red_mask;
-    unsigned long green_mask;
-    unsigned long blue_mask;
-    unsigned long alpha_mask;
-    int palette_size;
-    D3DRMPALETTEENTRY* palette;
-} D3DRMIMAGE, *LPD3DRMIMAGE;
-
-typedef enum _D3DRMWRAPTYPE {
-    D3DRMWRAP_FLAT,
-    D3DRMWRAP_CYLINDER,
-    D3DRMWRAP_SPHERE,
-    D3DRMWRAP_CHROME,
-    D3DRMWRAP_SHEET,
-    D3DRMWRAP_BOX
-} D3DRMWRAPTYPE, *LPD3DRMWRAPTYPE;
-
-typedef enum _D3DRMPROJECTIONTYPE
-{
-    D3DRMPROJECT_PERSPECTIVE,
-    D3DRMPROJECT_ORTHOGRAPHIC,
-    D3DRMPROJECT_RIGHTHANDPERSPECTIVE,
-    D3DRMPROJECT_RIGHTHANDORTHOGRAPHIC
-} D3DRMPROJECTIONTYPE, *LPD3DRMPROJECTIONTYPE;
-
-typedef enum _D3DRMXOFFORMAT {
-    D3DRMXOF_BINARY,
-    D3DRMXOF_COMPRESSED,
-    D3DRMXOF_TEXT
-} D3DRMXOFFORMAT, *LPD3DRMXOFFORMAT;
-
-typedef DWORD D3DRMSAVEOPTIONS;
-
-typedef enum _D3DRMCOLORSOURCE {
-    D3DRMCOLOR_FROMFACE,
-    D3DRMCOLOR_FROMVERTEX
-} D3DRMCOLORSOURCE, *LPD3DRMCOLORSOURCE;
-
-typedef enum _D3DRMFRAMECONSTRAINT {
-    D3DRMCONSTRAIN_Z,
-    D3DRMCONSTRAIN_Y,
-    D3DRMCONSTRAIN_X
-} D3DRMFRAMECONSTRAINT, *LPD3DRMFRAMECONSTRAINT;
-
-typedef enum _D3DRMMATERIALMODE {
-    D3DRMMATERIAL_FROMMESH,
-    D3DRMMATERIAL_FROMPARENT,
-    D3DRMMATERIAL_FROMFRAME
-} D3DRMMATERIALMODE, *LPD3DRMMATERIALMODE;
-
-typedef enum _D3DRMFOGMODE {
-    D3DRMFOG_LINEAR,
-    D3DRMFOG_EXPONENTIAL,
-    D3DRMFOG_EXPONENTIALSQUARED
-} D3DRMFOGMODE, *LPD3DRMFOGMODE;
-
-typedef enum _D3DRMZBUFFERMODE {
-    D3DRMZBUFFER_FROMPARENT,
-    D3DRMZBUFFER_ENABLE,
-    D3DRMZBUFFER_DISABLE
-} D3DRMZBUFFERMODE, *LPD3DRMZBUFFERMODE;
-
-typedef enum _D3DRMSORTMODE {
-    D3DRMSORT_FROMPARENT,
-    D3DRMSORT_NONE,
-    D3DRMSORT_FRONTTOBACK,
-    D3DRMSORT_BACKTOFRONT
-} D3DRMSORTMODE, *LPD3DRMSORTMODE;
-
-typedef struct _D3DRMMATERIALOVERRIDE {
-    DWORD         dwSize;
-    DWORD         dwFlags;
-    D3DCOLORVALUE dcDiffuse;
-    D3DCOLORVALUE dcAmbient;
-    D3DCOLORVALUE dcEmissive;
-    D3DCOLORVALUE dcSpecular;
-    D3DVALUE      dvPower;
-    LPUNKNOWN     lpD3DRMTex;
-} D3DRMMATERIALOVERRIDE, *LPD3DRMMATERIALOVERRIDE;
-
-typedef DWORD D3DRMLOADOPTIONS;
-
-#define D3DRMLOAD_FROMFILE             0x000L
-#define D3DRMLOAD_FROMRESOURCE         0x001L
-#define D3DRMLOAD_FROMMEMORY           0x002L
-#define D3DRMLOAD_FROMSTREAM           0x004L
-#define D3DRMLOAD_FROMURL              0x008L
-
-#define D3DRMLOAD_BYNAME               0x010L
-#define D3DRMLOAD_BYPOSITION           0x020L
-#define D3DRMLOAD_BYGUID               0x040L
-#define D3DRMLOAD_FIRST                0x080L
-
-#define D3DRMLOAD_INSTANCEBYREFERENCE  0x100L
-#define D3DRMLOAD_INSTANCEBYCOPYING    0x200L
-
-#define D3DRMLOAD_ASYNCHRONOUS         0x400L
-
-typedef struct _D3DRMLOADRESOURCE {
-    HMODULE hModule;
-    LPCSTR /*LPCTSTR*/ lpName;
-    LPCSTR /*LPCTSTR*/ lpType;
-} D3DRMLOADRESOURCE, *LPD3DRMLOADRESOURCE;
-
-typedef struct _D3DRMLOADMEMORY {
-    LPVOID lpMemory;
-    DWORD dSize;
-} D3DRMLOADMEMORY, *LPD3DRMLOADMEMORY;
-
-typedef struct _D3DRMPMESHLOADSTATUS {
-    DWORD dwSize;
-    DWORD dwPMeshSize;
-    DWORD dwBaseMeshSize;
-    DWORD dwBytesLoaded;
-    DWORD dwVerticesLoaded;
-    DWORD dwFacesLoaded;
-    HRESULT dwLoadResult;
-    DWORD dwFlags;
-} D3DRMPMESHLOADSTATUS, *LPD3DRMPMESHLOADSTATUS;
-
-typedef enum _D3DRMUSERVISUALREASON {
-    D3DRMUSERVISUAL_CANSEE,
-    D3DRMUSERVISUAL_RENDER
-} D3DRMUSERVISUALREASON, *LPD3DRMUSERVISUALREASON;
-
-typedef DWORD D3DRMMAPPING;
-
-typedef struct _D3DRMVERTEX {
-    D3DVECTOR position;
-    D3DVECTOR normal;
-    D3DVALUE  tu;
-    D3DVALUE  tv;
-    D3DCOLOR  color;
-} D3DRMVERTEX, *LPD3DRMVERTEX;
-
-typedef LONG D3DRMGROUPINDEX;
-
-void WINAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D, LPD3DRMQUATERNION);
-
-LPD3DRMQUATERNION WINAPI D3DRMQuaternionFromRotation(LPD3DRMQUATERNION ,LPD3DVECTOR,D3DVALUE);
-LPD3DRMQUATERNION WINAPI D3DRMQuaternionMultiply(LPD3DRMQUATERNION, LPD3DRMQUATERNION, LPD3DRMQUATERNION);
-LPD3DRMQUATERNION WINAPI D3DRMQuaternionSlerp(LPD3DRMQUATERNION, LPD3DRMQUATERNION, LPD3DRMQUATERNION, D3DVALUE);
-
-LPD3DVECTOR WINAPI D3DRMVectorAdd(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorCrossProduct(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
-D3DVALUE WINAPI D3DRMVectorDotProduct(LPD3DVECTOR, LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorNormalize(LPD3DVECTOR);
-
-#define D3DRMVectorNormalise D3DRMVectorNormalize
-
-D3DVALUE WINAPI D3DRMVectorModulus(LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorRandom(LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorRotate(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR, D3DVALUE);
-LPD3DVECTOR WINAPI D3DRMVectorReflect(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorScale(LPD3DVECTOR, LPD3DVECTOR, D3DVALUE);
-LPD3DVECTOR WINAPI D3DRMVectorSubtract(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
-
-D3DCOLOR WINAPI D3DRMCreateColorRGB(D3DVALUE, D3DVALUE, D3DVALUE);
-D3DCOLOR WINAPI D3DRMCreateColorRGBA(D3DVALUE, D3DVALUE, D3DVALUE, D3DVALUE);
-D3DVALUE WINAPI D3DRMColorGetAlpha(D3DCOLOR);
-D3DVALUE WINAPI D3DRMColorGetBlue(D3DCOLOR);
-D3DVALUE WINAPI D3DRMColorGetGreen(D3DCOLOR);
-D3DVALUE WINAPI D3DRMColorGetRed(D3DCOLOR);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/win32/dx/include/d3drmobj.h b/misc/builddeps/win32/dx/include/d3drmobj.h
deleted file mode 100644 (file)
index bd22e89..0000000
+++ /dev/null
@@ -1,3033 +0,0 @@
-/*
- * Copyright (C) 2008 Vijay Kiran Kamuju
- * Copyright (C) 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DRMOBJ_H__
-#define __D3DRMOBJ_H__
-
-#include <objbase.h>
-#define VIRTUAL
-#include <d3drmdef.h>
-#include <d3d.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-
-DEFINE_GUID(IID_IDirect3DRMObject,          0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMObject2,         0x4516ec7c, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMDevice,          0xe9e19280, 0x6e05, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMDevice2,         0x4516ec78, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMDevice3,         0x549f498b, 0xbfeb, 0x11d1, 0x8e, 0xd8, 0x00, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
-DEFINE_GUID(IID_IDirect3DRMViewport,        0xeb16cb02, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMViewport2,       0x4a1b1be6, 0xbfed, 0x11d1, 0x8e, 0xd8, 0x00, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
-DEFINE_GUID(IID_IDirect3DRMFrame,           0xeb16cb03, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMFrame2,          0xc3dfbd60, 0x3988, 0x11d0, 0x9e, 0xc2, 0x00, 0x00, 0xc0, 0x29, 0x1a, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMFrame3,          0xff6b7f70, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMVisual,          0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMesh,            0xa3a80d01, 0x6e12, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMeshBuilder,     0xa3a80d02, 0x6e12, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMeshBuilder2,    0x4516ec77, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMMeshBuilder3,    0x4516ec82, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMFace,            0xeb16cb07, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMFace2,           0x4516ec81, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMLight,           0xeb16cb08, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMTexture,         0xeb16cb09, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMTexture2,        0x120f30c0, 0x1629, 0x11d0, 0x94, 0x1c, 0x00, 0x80, 0xc8, 0x0c, 0xfa, 0x7b);
-DEFINE_GUID(IID_IDirect3DRMTexture3,        0xff6b7f73, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMWrap,            0xeb16cb0a, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMaterial,        0xeb16cb0b, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMaterial2,       0xff6b7f75, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMAnimation,       0xeb16cb0d, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMAnimation2,      0xff6b7f77, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMAnimationSet,    0xeb16cb0e, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMAnimationSet2,   0xff6b7f79, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMObjectArray,     0x242f6bc2, 0x3849, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMDeviceArray,     0xeb16cb10, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMViewportArray,   0xeb16cb11, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMFrameArray,      0xeb16cb12, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMVisualArray,     0xeb16cb13, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMLightArray,      0xeb16cb14, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMPickedArray,     0xeb16cb16, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMFaceArray,       0xeb16cb17, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMAnimationArray,  0xd5f1cae0, 0x4bd7, 0x11d1, 0xb9, 0x74, 0x00, 0x60, 0x08, 0x3e, 0x45, 0xf3);
-DEFINE_GUID(IID_IDirect3DRMUserVisual,      0x59163de0, 0x6d43, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMShadow,          0xaf359780, 0x6ba3, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMShadow2,         0x86b44e25, 0x9c82, 0x11d1, 0xbb, 0x0b, 0x00, 0xa0, 0xc9, 0x81, 0xa0, 0xa6);
-DEFINE_GUID(IID_IDirect3DRMInterpolator,    0x242f6bc1, 0x3849, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMProgressiveMesh, 0x4516ec79, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMPicked2Array,    0x4516ec7b, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMClippedVisual,   0x5434e733, 0x6d66, 0x11d1, 0xbb, 0x0b, 0x00, 0x00, 0xf8, 0x75, 0x86, 0x5a);
-
-typedef struct IDirect3DRMObject          *LPDIRECT3DRMOBJECT, **LPLPDIRECT3DRMOBJECT;
-typedef struct IDirect3DRMObject2         *LPDIRECT3DRMOBJECT2, **LPLPDIRECT3DRMOBJECT2;
-typedef struct IDirect3DRMDevice          *LPDIRECT3DRMDEVICE, **LPLPDIRECT3DRMDEVICE;
-typedef struct IDirect3DRMDevice2         *LPDIRECT3DRMDEVICE2, **LPLPDIRECT3DRMDEVICE2;
-typedef struct IDirect3DRMDevice3         *LPDIRECT3DRMDEVICE3, **LPLPDIRECT3DRMDEVICE3;
-typedef struct IDirect3DRMViewport        *LPDIRECT3DRMVIEWPORT, **LPLPDIRECT3DRMVIEWPORT;
-typedef struct IDirect3DRMViewport2       *LPDIRECT3DRMVIEWPORT2, **LPLPDIRECT3DRMVIEWPORT2;
-typedef struct IDirect3DRMFrame           *LPDIRECT3DRMFRAME, **LPLPDIRECT3DRMFRAME;
-typedef struct IDirect3DRMFrame2          *LPDIRECT3DRMFRAME2, **LPLPDIRECT3DRMFRAME2;
-typedef struct IDirect3DRMFrame3          *LPDIRECT3DRMFRAME3, **LPLPDIRECT3DRMFRAME3;
-typedef struct IDirect3DRMVisual          *LPDIRECT3DRMVISUAL, **LPLPDIRECT3DRMVISUAL;
-typedef struct IDirect3DRMMesh            *LPDIRECT3DRMMESH, **LPLPDIRECT3DRMMESH;
-typedef struct IDirect3DRMMeshBuilder     *LPDIRECT3DRMMESHBUILDER, **LPLPDIRECT3DRMMESHBUILDER;
-typedef struct IDirect3DRMMeshBuilder2    *LPDIRECT3DRMMESHBUILDER2, **LPLPDIRECT3DRMMESHBUILDER2;
-typedef struct IDirect3DRMMeshBuilder3    *LPDIRECT3DRMMESHBUILDER3, **LPLPDIRECT3DRMMESHBUILDER3;
-typedef struct IDirect3DRMFace            *LPDIRECT3DRMFACE, **LPLPDIRECT3DRMFACE;
-typedef struct IDirect3DRMFace2           *LPDIRECT3DRMFACE2, **LPLPDIRECT3DRMFACE2;
-typedef struct IDirect3DRMLight           *LPDIRECT3DRMLIGHT, **LPLPDIRECT3DRMLIGHT;
-typedef struct IDirect3DRMTexture         *LPDIRECT3DRMTEXTURE, **LPLPDIRECT3DRMTEXTURE;
-typedef struct IDirect3DRMTexture2        *LPDIRECT3DRMTEXTURE2, **LPLPDIRECT3DRMTEXTURE2;
-typedef struct IDirect3DRMTexture3        *LPDIRECT3DRMTEXTURE3, **LPLPDIRECT3DRMTEXTURE3;
-typedef struct IDirect3DRMWrap            *LPDIRECT3DRMWRAP, **LPLPDIRECT3DRMWRAP;
-typedef struct IDirect3DRMMaterial        *LPDIRECT3DRMMATERIAL, **LPLPDIRECT3DRMMATERIAL;
-typedef struct IDirect3DRMMaterial2       *LPDIRECT3DRMMATERIAL2, **LPLPDIRECT3DRMMATERIAL2;
-typedef struct IDirect3DRMAnimation       *LPDIRECT3DRMANIMATION, **LPLPDIRECT3DRMANIMATION;
-typedef struct IDirect3DRMAnimation2      *LPDIRECT3DRMANIMATION2, **LPLPDIRECT3DRMANIMATION2;
-typedef struct IDirect3DRMAnimationSet    *LPDIRECT3DRMANIMATIONSET, **LPLPDIRECT3DRMANIMATIONSET;
-typedef struct IDirect3DRMAnimationSet2   *LPDIRECT3DRMANIMATIONSET2, **LPLPDIRECT3DRMANIMATIONSET2;
-typedef struct IDirect3DRMUserVisual      *LPDIRECT3DRMUSERVISUAL, **LPLPDIRECT3DRMUSERVISUAL;
-typedef struct IDirect3DRMShadow          *LPDIRECT3DRMSHADOW, **LPLPDIRECT3DRMSHADOW;
-typedef struct IDirect3DRMShadow2         *LPDIRECT3DRMSHADOW2, **LPLPDIRECT3DRMSHADOW2;
-typedef struct IDirect3DRMArray           *LPDIRECT3DRMARRAY, **LPLPDIRECT3DRMARRAY;
-typedef struct IDirect3DRMObjectArray     *LPDIRECT3DRMOBJECTARRAY, **LPLPDIRECT3DRMOBJECTARRAY;
-typedef struct IDirect3DRMDeviceArray     *LPDIRECT3DRMDEVICEARRAY, **LPLPDIRECT3DRMDEVICEARRAY;
-typedef struct IDirect3DRMFaceArray       *LPDIRECT3DRMFACEARRAY, **LPLPDIRECT3DRMFACEARRAY;
-typedef struct IDirect3DRMViewportArray   *LPDIRECT3DRMVIEWPORTARRAY, **LPLPDIRECT3DRMVIEWPORTARRAY;
-typedef struct IDirect3DRMFrameArray      *LPDIRECT3DRMFRAMEARRAY, **LPLPDIRECT3DRMFRAMEARRAY;
-typedef struct IDirect3DRMAnimationArray  *LPDIRECT3DRMANIMATIONARRAY, **LPLPDIRECT3DRMANIMATIONARRAY;
-typedef struct IDirect3DRMVisualArray     *LPDIRECT3DRMVISUALARRAY, **LPLPDIRECT3DRMVISUALARRAY;
-typedef struct IDirect3DRMPickedArray     *LPDIRECT3DRMPICKEDARRAY, **LPLPDIRECT3DRMPICKEDARRAY;
-typedef struct IDirect3DRMPicked2Array    *LPDIRECT3DRMPICKED2ARRAY, **LPLPDIRECT3DRMPICKED2ARRAY;
-typedef struct IDirect3DRMLightArray      *LPDIRECT3DRMLIGHTARRAY, **LPLPDIRECT3DRMLIGHTARRAY;
-typedef struct IDirect3DRMProgressiveMesh *LPDIRECT3DRMPROGRESSIVEMESH, **LPLPDIRECT3DRMPROGRESSIVEMESH;
-typedef struct IDirect3DRMClippedVisual   *LPDIRECT3DRMCLIPPEDVISUAL, **LPLPDIRECT3DRMCLIPPEDVISUAL;
-
-/* ********************************************************************
-   Types and structures
-   ******************************************************************** */
-
-typedef void (__cdecl *D3DRMOBJECTCALLBACK)(LPDIRECT3DRMOBJECT obj, LPVOID arg);
-typedef void (__cdecl *D3DRMFRAMEMOVECALLBACK)(LPDIRECT3DRMFRAME obj, LPVOID arg, D3DVALUE delta);
-typedef void (__cdecl *D3DRMFRAME3MOVECALLBACK)(LPDIRECT3DRMFRAME3 obj, LPVOID arg, D3DVALUE delta);
-typedef void (__cdecl *D3DRMUPDATECALLBACK)(LPDIRECT3DRMDEVICE obj, LPVOID arg, int, LPD3DRECT);
-typedef int (__cdecl *D3DRMUSERVISUALCALLBACK)(LPDIRECT3DRMUSERVISUAL obj, LPVOID arg,
-    D3DRMUSERVISUALREASON reason, LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMVIEWPORT view);
-typedef HRESULT (__cdecl *D3DRMLOADTEXTURECALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE *);
-typedef HRESULT (__cdecl *D3DRMLOADTEXTURE3CALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE3 *);
-typedef void (__cdecl *D3DRMLOADCALLBACK)(LPDIRECT3DRMOBJECT object, REFIID objectguid, LPVOID arg);
-
-typedef struct _D3DRMPICKDESC
-{
-    ULONG     ulFaceIdx;
-    LONG      lGroupIdx;
-    D3DVECTOR vPosition;
-} D3DRMPICKDESC, *LPD3DRMPICKDESC;
-
-typedef struct _D3DRMPICKDESC2
-{
-    ULONG     ulFaceIdx;
-    LONG      lGroupIdx;
-    D3DVECTOR vPosition;
-    D3DVALUE  tu;
-    D3DVALUE  tv;
-    D3DVECTOR dvNormal;
-    D3DCOLOR  dcColor;
-} D3DRMPICKDESC2, *LPD3DRMPICKDESC2;
-
-/*****************************************************************************
- * IDirect3DRMObject interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMObject
-DECLARE_INTERFACE_(IDirect3DRMObject,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMObject_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMObject_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMObject_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMObject_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMObject_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMObject_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMObject_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMObject_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMObject_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMObject_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMObject_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMObject_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMObject_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMObject_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMObject_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMObject_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMObject2 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMObject2
-DECLARE_INTERFACE_(IDirect3DRMObject2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject2 methods ***/
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(GetClientData)(THIS_ DWORD id, LPVOID* ppData) PURE;
-    STDMETHOD(GetDirect3DRM)(THIS_ LPDIRECT3DRM* ppDirect3DRM) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD pSize, LPSTR pName) PURE;
-    STDMETHOD(SetClientData)(THIS_ DWORD id, LPVOID pData, DWORD flags) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR pName) PURE;
-    STDMETHOD(GetAge)(THIS_ DWORD flags, LPDWORD pAge) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMObject2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMObject2_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject2 methods ***/
-#define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->lpVtbl->SetClientData(p,a,b)
-#define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->lpVtbl->GetDirect3DRM(p,a)
-#define IDirect3DRMObject2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->lpVtbl->SetClientData(p,a,b,c)
-#define IDirect3DRMObject2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMObject2_GetAge(p,a,b)                (p)->lpVtbl->GetAge(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMObject2_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMObject2_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject2 methods ***/
-#define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->SetClientData(a,b)
-#define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->GetDirect3DRM(a)
-#define IDirect3DRMObject2_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->SetClientData(a,b,c)
-#define IDirect3DRMObject2_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMObject2_GetAge(p,a,b)                (p)->GetAge(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMVisual interface
- */
-#define INTERFACE IDirect3DRMVisual
-DECLARE_INTERFACE_(IDirect3DRMVisual,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMVisual_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMVisual_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMVisual_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMVisual_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMVisual_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMVisual_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMVisual_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMVisual_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMVisual_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMVisual_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMVisual_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMVisual_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMDevice interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMDevice
-DECLARE_INTERFACE_(IDirect3DRMDevice,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMDevice methods ***/
-    STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
-    STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
-    STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
-    STDMETHOD(Update)(THIS) PURE;
-    STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
-    STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
-    STDMETHOD(SetDither)(THIS_ BOOL) PURE;
-    STDMETHOD(SetShades)(THIS_ DWORD) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
-    STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
-    STDMETHOD_(BOOL, GetDither)(THIS) PURE;
-    STDMETHOD_(DWORD, GetShades)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
-    STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMDevice_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMDevice_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMDevice_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMDevice_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMDevice_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMDevice_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
-#define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice_Update(p)                    (p)->lpVtbl->Update(p)
-#define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
-#define IDirect3DRMDevice_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
-#define IDirect3DRMDevice_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
-#define IDirect3DRMDevice_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
-#define IDirect3DRMDevice_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
-#define IDirect3DRMDevice_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
-#define IDirect3DRMDevice_GetDither(p)                 (p)->lpVtbl->GetDither(p)
-#define IDirect3DRMDevice_GetShades(p)                 (p)->lpVtbl->GetShades(p)
-#define IDirect3DRMDevice_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMDevice_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
-#define IDirect3DRMDevice_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMDevice_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
-#define IDirect3DRMDevice_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
-#define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMDevice_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMDevice_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMDevice_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMDevice_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMDevice_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMDevice_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice_Init(p,a,b)                  (p)->Init(p,a,b)
-#define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice_Update(p)                    (p)->Update(p)
-#define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->SetBufferCount(p,a)
-#define IDirect3DRMDevice_GetBufferCount(p)            (p)->GetBufferCount(p)
-#define IDirect3DRMDevice_SetDither(p,a)               (p)->SetDither(p,a)
-#define IDirect3DRMDevice_SetShades(p,a)               (p)->SetShades(p,a)
-#define IDirect3DRMDevice_SetQuality(p,a)              (p)->SetQuality(p,a)
-#define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->SetTextureQuality(p,a)
-#define IDirect3DRMDevice_GetViewports(p,a)            (p)->GetViewports(p,a)
-#define IDirect3DRMDevice_GetDither(p)                 (p)->GetDither(p)
-#define IDirect3DRMDevice_GetShades(p)                 (p)->GetShades(p)
-#define IDirect3DRMDevice_GetHeight(p)                 (p)->GetHeight(p)
-#define IDirect3DRMDevice_GetWidth(p)                  (p)->GetWidth(p)
-#define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->GetWireframeOptions(p)
-#define IDirect3DRMDevice_GetQuality(p)                (p)->GetQuality(p)
-#define IDirect3DRMDevice_GetColorModel(p)             (p)->GetColorModel(p)
-#define IDirect3DRMDevice_GetTextureQuality(p)         (p)->GetTextureQuality(p)
-#define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(p,a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMDevice2 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMDevice2
-DECLARE_INTERFACE_(IDirect3DRMDevice2,IDirect3DRMDevice)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMDevice methods ***/
-    STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
-    STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
-    STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
-    STDMETHOD(Update)(THIS) PURE;
-    STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
-    STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
-    STDMETHOD(SetDither)(THIS_ BOOL) PURE;
-    STDMETHOD(SetShades)(THIS_ DWORD) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
-    STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
-    STDMETHOD_(BOOL, GetDither)(THIS) PURE;
-    STDMETHOD_(DWORD, GetShades)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
-    STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
-    /*** IDirect3DRMDevice2 methods ***/
-    STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev) PURE;
-    STDMETHOD(InitFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack) PURE;
-    STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
-    STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMDevice2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMDevice2_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMDevice2_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMDevice2_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMDevice2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMDevice2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice2_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
-#define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice2_Update(p)                    (p)->lpVtbl->Update(p)
-#define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
-#define IDirect3DRMDevice2_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
-#define IDirect3DRMDevice2_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
-#define IDirect3DRMDevice2_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
-#define IDirect3DRMDevice2_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
-#define IDirect3DRMDevice2_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
-#define IDirect3DRMDevice2_GetDither(p)                 (p)->lpVtbl->GetDither(p)
-#define IDirect3DRMDevice2_GetShades(p)                 (p)->lpVtbl->GetShades(p)
-#define IDirect3DRMDevice2_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMDevice2_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
-#define IDirect3DRMDevice2_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMDevice2_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
-#define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
-#define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
-/*** IDirect3DRMDevice2 methods ***/
-#define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->lpVtbl->InitFromD3D2(p,a,b)
-#define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->lpVtbl->InitFromSurface(p,a,b,c)
-#define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->lpVtbl->SetRenderMode(p,a)
-#define IDirect3DRMDevice2_GetRenderMode(p)             (p)->lpVtbl->GetRenderMode(p)
-#define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->lpVtbl->GetDirect3DDevice2(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMDevice2_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMDevice2_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMDevice2_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMDevice2_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMDevice2_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMDevice2_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice2_Init(p,a,b)                  (p)->Init(p,a,b)
-#define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice2_Update(p)                    (p)->Update(p)
-#define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->SetBufferCount(p,a)
-#define IDirect3DRMDevice2_GetBufferCount(p)            (p)->GetBufferCount(p)
-#define IDirect3DRMDevice2_SetDither(p,a)               (p)->SetDither(p,a)
-#define IDirect3DRMDevice2_SetShades(p,a)               (p)->SetShades(p,a)
-#define IDirect3DRMDevice2_SetQuality(p,a)              (p)->SetQuality(p,a)
-#define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->SetTextureQuality(p,a)
-#define IDirect3DRMDevice2_GetViewports(p,a)            (p)->GetViewports(p,a)
-#define IDirect3DRMDevice2_GetDither(p)                 (p)->GetDither(p)
-#define IDirect3DRMDevice2_GetShades(p)                 (p)->GetShades(p)
-#define IDirect3DRMDevice2_GetHeight(p)                 (p)->GetHeight(p)
-#define IDirect3DRMDevice2_GetWidth(p)                  (p)->GetWidth(p)
-#define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->GetWireframeOptions(p)
-#define IDirect3DRMDevice2_GetQuality(p)                (p)->GetQuality(p)
-#define IDirect3DRMDevice2_GetColorModel(p)             (p)->GetColorModel(p)
-#define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->GetTextureQuality(p)
-#define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(p,a)
-/*** IDirect3DRMDevice2 methods ***/
-#define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->InitFromD3D2(a,b)
-#define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->InitFromSurface(a,b,c)
-#define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->SetRenderMode(a)
-#define IDirect3DRMDevice2_GetRenderMode(p)             (p)->GetRenderMode()
-#define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->GetDirect3DDevice2(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMDevice3 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMDevice3
-DECLARE_INTERFACE_(IDirect3DRMDevice3,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMDevice methods ***/
-    STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
-    STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
-    STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
-    STDMETHOD(Update)(THIS) PURE;
-    STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
-    STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
-    STDMETHOD(SetDither)(THIS_ BOOL) PURE;
-    STDMETHOD(SetShades)(THIS_ DWORD) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
-    STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
-    STDMETHOD_(BOOL, GetDither)(THIS) PURE;
-    STDMETHOD_(DWORD, GetShades)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
-    STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
-    /*** IDirect3DRMDevice2 methods ***/
-    STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev) PURE;
-    STDMETHOD(InitFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack) PURE;
-    STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
-    STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
-    /*** IDirect3DRMDevice3 methods ***/
-    STDMETHOD(FindPreferredTextureFormat)(THIS_ DWORD BitDepths, DWORD flags, LPDDPIXELFORMAT pDDPF) PURE;
-    STDMETHOD(RenderStateChange)(THIS_ D3DRENDERSTATETYPE drsType, DWORD val, DWORD flags) PURE;
-    STDMETHOD(LightStateChange)(THIS_ D3DLIGHTSTATETYPE drsType, DWORD val, DWORD flags) PURE;
-    STDMETHOD(GetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, LPDWORD pFlags) PURE;
-    STDMETHOD(SetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, DWORD flags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMDevice3_AddRef(p)                           (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMDevice3_Release(p)                          (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMDevice3_GetAppData(p)                       (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMDevice3_SetName(p,a)                        (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice3_Init(p,a,b)                         (p)->lpVtbl->Init(p,a,b)
-#define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->lpVtbl->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice3_Update(p)                           (p)->lpVtbl->Update(p)
-#define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->lpVtbl->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->lpVtbl->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->lpVtbl->SetBufferCount(p,a)
-#define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->lpVtbl->GetBufferCount(p)
-#define IDirect3DRMDevice3_SetDither(p,a)                      (p)->lpVtbl->SetDither(p,a)
-#define IDirect3DRMDevice3_SetShades(p,a)                      (p)->lpVtbl->SetShades(p,a)
-#define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->lpVtbl->SetTextureQuality(p,a)
-#define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->lpVtbl->GetViewports(p,a)
-#define IDirect3DRMDevice3_GetDither(p)                        (p)->lpVtbl->GetDither(p)
-#define IDirect3DRMDevice3_GetShades(p)                        (p)->lpVtbl->GetShades(p)
-#define IDirect3DRMDevice3_GetHeight(p)                        (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMDevice3_GetWidth(p)                         (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->lpVtbl->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->lpVtbl->GetWireframeOptions(p)
-#define IDirect3DRMDevice3_GetQuality(p)                       (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMDevice3_GetColorModel(p)                    (p)->lpVtbl->GetColorModel(p)
-#define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->lpVtbl->GetTextureQuality(p)
-#define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->lpVtbl->GetDirect3DDevice(p,a)
-/*** IDirect3DRMDevice2 methods ***/
-#define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->lpVtbl->InitFromD3D2(p,a,b)
-#define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->lpVtbl->InitFromSurface(p,a,b,c)
-#define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->lpVtbl->SetRenderMode(p,a)
-#define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->lpVtbl->GetRenderMode(p)
-#define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->lpVtbl->GetDirect3DDevice2(p,a)
-/*** IDirect3DRMDevice3 methods ***/
-#define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->lpVtbl->FindPreferredTextureFormat(p,a,b)
-#define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->lpVtbl->RenderStateChange(p,a,b)
-#define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->lpVtbl->LightStateChange(p,a,b)
-#define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->GetStateChangeOptions(p,a,b)
-#define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->SetStateChangeOptions(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->QueryInterface(a,b)
-#define IDirect3DRMDevice3_AddRef(p)                           (p)->AddRef()
-#define IDirect3DRMDevice3_Release(p)                          (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->Clone(a,b,c)
-#define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->SetAppData(a)
-#define IDirect3DRMDevice3_GetAppData(p)                       (p)->GetAppData()
-#define IDirect3DRMDevice3_SetName(p,a)                        (p)->SetName(a)
-#define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->GetName(a,b)
-#define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->GetClassName(a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice3_Init(p,a,b)                         (p)->Init(p,a,b)
-#define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice3_Update(p)                           (p)->Update(p)
-#define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->SetBufferCount(p,a)
-#define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->GetBufferCount(p)
-#define IDirect3DRMDevice3_SetDither(p,a)                      (p)->SetDither(p,a)
-#define IDirect3DRMDevice3_SetShades(p,a)                      (p)->SetShades(p,a)
-#define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->SetQuality(p,a)
-#define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->SetTextureQuality(p,a)
-#define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->GetViewports(p,a)
-#define IDirect3DRMDevice3_GetDither(p)                        (p)->GetDither(p)
-#define IDirect3DRMDevice3_GetShades(p)                        (p)->GetShades(p)
-#define IDirect3DRMDevice3_GetHeight(p)                        (p)->GetHeight(p)
-#define IDirect3DRMDevice3_GetWidth(p)                         (p)->GetWidth(p)
-#define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->GetWireframeOptions(p)
-#define IDirect3DRMDevice3_GetQuality(p)                       (p)->GetQuality(p)
-#define IDirect3DRMDevice3_GetColorModel(p)                    (p)->GetColorModel(p)
-#define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->GetTextureQuality(p)
-#define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->GetDirect3DDevice(p,a)
-/*** IDirect3DRMDevice2 methods ***/
-#define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->InitFromD3D2(a,b)
-#define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->InitFromSurface(a,b,c)
-#define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->SetRenderMode(a)
-#define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->GetRenderMode()
-#define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->GetDirect3DDevice2(a)
-/*** IDirect3DRMDevice3 methods ***/
-#define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->FindPreferredTextureFormat(a,b,c)
-#define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->RenderStateChange(a,b,c)
-#define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->LightStateChange(a,b,c)
-#define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->GetStateChangeOptions(a,b,c)
-#define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->SetStateChangeOptions(a,b,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMViewport interface
- */
-#define INTERFACE IDirect3DRMViewport
-DECLARE_INTERFACE_(IDirect3DRMViewport,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMViewport methods ***/
-    STDMETHOD(Init) (THIS_ LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMFRAME camera, DWORD xpos, DWORD ypos,
-        DWORD width, DWORD height) PURE;
-    STDMETHOD(Clear)(THIS) PURE;
-    STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
-    STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
-    STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
-    STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
-    STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
-    STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
-    STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
-    STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
-    STDMETHOD_(LONG, GetX)(THIS) PURE;
-    STDMETHOD_(LONG, GetY)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
-    STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
-    STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMViewport_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMViewport_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMViewport_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMViewport_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMViewport_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMViewport_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMViewport methods ***/
-#define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->lpVtbl->Init(p,a,b,c,d)
-#define IDirect3DRMViewport_Clear(p)                     (p)->lpVtbl->Clear(p)
-#define IDirect3DRMViewport_Render(p,a)                  (p)->lpVtbl->Render(p,a)
-#define IDirect3DRMViewport_SetFront(p,a)                (p)->lpVtbl->SetFront(p,a)
-#define IDirect3DRMViewport_SetBack(p,a)                 (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport_SetField(p,a)                (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->lpVtbl->SetUniformScaling(p,a)
-#define IDirect3DRMViewport_SetCamera(p,a)               (p)->lpVtbl->SetCamera(p,a)
-#define IDirect3DRMViewport_SetProjection(p,a)           (p)->lpVtbl->SetProjection(p,a)
-#define IDirect3DRMViewport_Transform(p,a,b)             (p)->lpVtbl->Transform(p,a,b)
-#define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->lpVtbl->(p,a,b)
-#define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->lpVtbl->Configure(p,a,b,c,d)
-#define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
-#define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->lpVtbl->SetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport_GetCamera(p,a)               (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->lpVtbl->GetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->lpVtbl->Pick(p,a,b,c)
-#define IDirect3DRMViewport_GetUniformScaling(p)         (p)->lpVtbl->GetUniformScaling(p)
-#define IDirect3DRMViewport_GetX(p)                      (p)->lpVtbl->GetX(p)
-#define IDirect3DRMViewport_GetY(p)                      (p)->lpVtbl->GetY(p)
-#define IDirect3DRMViewport_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMViewport_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMViewport_GetField(p)                  (p)->lpVtbl->GetField(p)
-#define IDirect3DRMViewport_GetBack(p)                   (p)->lpVtbl->GetBack(p)
-#define IDirect3DRMViewport_GetFront(p)                  (p)->lpVtbl->GetFront(p)
-#define IDirect3DRMViewport_GetProjection(p)             (p)->lpVtbl->GetProjection(p)
-#define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->lpVtbl->GetDirect3DViewport(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMViewport_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMViewport_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMViewport_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMViewport_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMViewport_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMViewport_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-/*** IDirect3DRMViewport methods ***/
-#define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->Init(p,a,b,c,d)
-#define IDirect3DRMViewport_Clear(p)                     (p)->Clear(p)
-#define IDirect3DRMViewport_Render(p,a)                  (p)->Render(p,a)
-#define IDirect3DRMViewport_SetFront(p,a)                (p)->SetFront(p,a)
-#define IDirect3DRMViewport_SetBack(p,a)                 (p)->(p,a)
-#define IDirect3DRMViewport_SetField(p,a)                (p)->(p,a)
-#define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->SetUniformScaling(p,a)
-#define IDirect3DRMViewport_SetCamera(p,a)               (p)->SetCamera(p,a)
-#define IDirect3DRMViewport_SetProjection(p,a)           (p)->SetProjection(p,a)
-#define IDirect3DRMViewport_Transform(p,a,b)             (p)->Transform(p,a,b)
-#define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->(p,a,b)
-#define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->Configure(p,a,b,c,d)
-#define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->ForceUpdate(p,a,b,c,d)
-#define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->SetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport_GetCamera(p,a)               (p)->GetCamera(p,a)
-#define IDirect3DRMViewport_GetDevice(p,a)               (p)->GetDevice(p,a)
-#define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->GetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->Pick(p,a,b,c)
-#define IDirect3DRMViewport_GetUniformScaling(p)         (p)->GetUniformScaling(p)
-#define IDirect3DRMViewport_GetX(p)                      (p)->GetX(p)
-#define IDirect3DRMViewport_GetY(p)                      (p)->GetY(p)
-#define IDirect3DRMViewport_GetWidth(p)                  (p)->GetWidth(p)
-#define IDirect3DRMViewport_GetHeight(p)                 (p)->GetHeight(p)
-#define IDirect3DRMViewport_GetField(p)                  (p)->GetField(p)
-#define IDirect3DRMViewport_GetBack(p)                   (p)->GetBack(p)
-#define IDirect3DRMViewport_GetFront(p)                  (p)->GetFront(p)
-#define IDirect3DRMViewport_GetProjection(p)             (p)->GetProjection(p)
-#define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->GetDirect3DViewport(p,a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMViewport2 interface
- */
-#define INTERFACE IDirect3DRMViewport2
-DECLARE_INTERFACE_(IDirect3DRMViewport2,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMViewport2 methods ***/
-    STDMETHOD(Init) (THIS_ LPDIRECT3DRMDEVICE3 dev, LPDIRECT3DRMFRAME3 camera, DWORD xpos, DWORD ypos,
-        DWORD width, DWORD height) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD flags) PURE;
-    STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
-    STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
-    STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
-    STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
-    STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
-    STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
-    STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
-    STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
-    STDMETHOD_(LONG, GetX)(THIS) PURE;
-    STDMETHOD_(LONG, GetY)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
-    STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
-    STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
-    STDMETHOD(TransformVectors)(THIS_ DWORD NumVectors, LPD3DRMVECTOR4D pDstVectors,
-        LPD3DVECTOR pSrcVectors) PURE;
-    STDMETHOD(InverseTransformVectors)(THIS_ DWORD NumVectors, LPD3DVECTOR pDstVectors,
-        LPD3DRMVECTOR4D pSrcVectors) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMViewport2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMViewport2_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMViewport_2Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMViewport2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMViewport2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMViewport2 methods ***/
-#define IDirect3DRMViewport2_Init(p,a,b,c,d,e,f)              (p)->lpVtbl->Init(p,a,b,c,d,e,f)
-#define IDirect3DRMViewport2_Clear(p,a)                       (p)->lpVtbl->Clear(p,a)
-#define IDirect3DRMViewport2_Render(p,a)                      (p)->lpVtbl->Render(p,a)
-#define IDirect3DRMViewport2_SetFront(p,a)                    (p)->lpVtbl->SetFront(p,a)
-#define IDirect3DRMViewport2_SetBack(p,a)                     (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport2_SetField(p,a)                    (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->lpVtbl->SetUniformScaling(p,a)
-#define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->lpVtbl->SetCamera(p,a)
-#define IDirect3DRMViewport2_SetProjection(p,a)               (p)->lpVtbl->SetProjection(p,a)
-#define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
-#define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->lpVtbl->(p,a,b)
-#define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->lpVtbl->Configure(p,a,b,c,d)
-#define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
-#define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->lpVtbl->SetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->lpVtbl->GetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->lpVtbl->Pick(p,a,b,c)
-#define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->lpVtbl->GetUniformScaling(p)
-#define IDirect3DRMViewport2_GetX(p)                          (p)->lpVtbl->GetX(p)
-#define IDirect3DRMViewport2_GetY(p)                          (p)->lpVtbl->GetY(p)
-#define IDirect3DRMViewport2_GetWidth(p)                      (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMViewport2_GetHeight(p)                     (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMViewport2_GetField(p)                      (p)->lpVtbl->GetField(p)
-#define IDirect3DRMViewport2_GetBack(p)                       (p)->lpVtbl->GetBack(p)
-#define IDirect3DRMViewport2_GetFront(p)                      (p)->lpVtbl->GetFront(p)
-#define IDirect3DRMViewport2_GetProjection(p)                 (p)->lpVtbl->GetProjection(p)
-#define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->lpVtbl->GetDirect3DViewport(p,a)
-#define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->lpVtbl->TransformVectors(p,a,b,c)
-#define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->lpVtbl->InverseTransformVectors(p,ab,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMViewport2_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMViewport2_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMViewport2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMViewport2_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMViewport2_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMViewport2 methods ***/
-#define IDirect3DRMViewport2_Init(p,a,b,c,d)                  (p)->Init(p,a,b,c,d)
-#define IDirect3DRMViewport2_Clear(p)                         (p)->Clear(p)
-#define IDirect3DRMViewport2_Render(p,a)                      (p)->Render(p,a)
-#define IDirect3DRMViewport2_SetFront(p,a)                    (p)->SetFront(p,a)
-#define IDirect3DRMViewport2_SetBack(p,a)                     (p)->(p,a)
-#define IDirect3DRMViewport2_SetField(p,a)                    (p)->(p,a)
-#define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->SetUniformScaling(p,a)
-#define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->SetCamera(p,a)
-#define IDirect3DRMViewport2_SetProjection(p,a)               (p)->SetProjection(p,a)
-#define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->Transform(p,a,b)
-#define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->(p,a,b)
-#define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->Configure(p,a,b,c,d)
-#define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->ForceUpdate(p,a,b,c,d)
-#define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->SetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->GetCamera(p,a)
-#define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->GetDevice(p,a)
-#define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->GetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->Pick(p,a,b,c)
-#define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->GetUniformScaling(p)
-#define IDirect3DRMViewport2_GetX(p)                          (p)->GetX(p)
-#define IDirect3DRMViewport2_GetY(p)                          (p)->GetY(p)
-#define IDirect3DRMViewport2_GetWidth(p)                      (p)->GetWidth(p)
-#define IDirect3DRMViewport2_GetHeight(p)                     (p)->GetHeight(p)
-#define IDirect3DRMViewport2_GetField(p)                      (p)->GetField(p)
-#define IDirect3DRMViewport2_GetBack(p)                       (p)->GetBack(p)
-#define IDirect3DRMViewport2_GetFront(p)                      (p)->GetFront(p)
-#define IDirect3DRMViewport2_GetProjection(p)                 (p)->GetProjection(p)
-#define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->GetDirect3DViewport(p,a)
-#define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->TransformVectors(a,b,c)
-#define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->InverseTransformVectors(ab,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFrame interface
- */
-#define INTERFACE IDirect3DRMFrame
-DECLARE_INTERFACE_(IDirect3DRMFrame,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFrame methods ***/
-    STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
-    STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
-    STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-    STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
-    STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
-    STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
-    STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
-    STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
-    STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
-    STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
-    STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
-        LPVOID pArg)PURE;
-    STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
-    STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
-    STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
-    STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
-    STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
-    STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
-    STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
-    STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
-    STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
-    STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
-    STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
-        D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
-    STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
-    STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFrame_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFrame_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFrame_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFrame_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFrame_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFrame_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFrame methods ***/
-#define IDirect3DRMFrame_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
-#define IDirect3DRMFrame_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
-#define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
-#define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
-#define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
-#define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
-#define IDirect3DRMFrame_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
-#define IDirect3DRMFrame_GetColor(p)                      (p)->lpVtbl->GetColor(p)
-#define IDirect3DRMFrame_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
-#define IDirect3DRMFrame_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
-#define IDirect3DRMFrame_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
-#define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
-#define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
-#define IDirect3DRMFrame_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
-#define IDirect3DRMFrame_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
-#define IDirect3DRMFrame_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFrame_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
-#define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
-#define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
-#define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
-#define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
-#define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
-#define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
-#define IDirect3DRMFrame_Move(p,a)                        (p)->lpVtbl->Move(p,a)
-#define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
-#define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
-#define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
-#define IDirect3DRMFrame_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
-#define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
-#define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
-#define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
-#define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
-#define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
-#define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
-#define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
-#define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
-#define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
-#define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFrame_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
-#define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
-#define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
-#define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
-#define IDirect3DRMFrame_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
-#define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
-#define IDirect3DRMFrame_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMFrame_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMFrame_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFrame_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMFrame_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMFrame_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMFrame_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMFrame methods ***/
-#define IDirect3DRMFrame_AddChild(p,a)                    (p)->AddChild(a)
-#define IDirect3DRMFrame_AddLight(p,a)                    (p)->AddLight(a)
-#define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
-#define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->AddTransform(a,b)
-#define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
-#define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
-#define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
-#define IDirect3DRMFrame_AddVisual(p,a)                   (p)->AddVisual(a)
-#define IDirect3DRMFrame_GetChildren(p,a)                 (p)->GetChildren(a)
-#define IDirect3DRMFrame_GetColor(p)                      (p)->GetColor()
-#define IDirect3DRMFrame_GetLights(p,a)                   (p)->GetLights(a)
-#define IDirect3DRMFrame_GetMaterialMode(p)               (p)->GetMaterialMode()
-#define IDirect3DRMFrame_GetParent(p,a)                   (p)->GetParent(a)
-#define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->GetPosition(a,b)
-#define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
-#define IDirect3DRMFrame_GetScene(p,a)                    (p)->GetScene(a)
-#define IDirect3DRMFrame_GetSortMode(p)                   (p)->GetSortMode()
-#define IDirect3DRMFrame_GetTexture(p,a)                  (p)->GetTexture(a)
-#define IDirect3DRMFrame_GetTransform(p,a)                (p)->GetTransform(a)
-#define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
-#define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
-#define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->GetVisuals(a)
-#define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
-#define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
-#define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
-#define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
-#define IDirect3DRMFrame_Move(p,a)                        (p)->Move(a)
-#define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->DeleteChild(a)
-#define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->DeleteLight(a)
-#define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
-#define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->DeleteVisual(a)
-#define IDirect3DRMFrame_GetSceneBackground(p)            (p)->GetSceneBackground()
-#define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->GetSceneFogColor()
-#define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
-#define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->GetSceneFogMode()
-#define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
-#define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
-#define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
-#define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
-#define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
-#define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
-#define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame_SetColor(p,a)                    (p)->SetColor(a)
-#define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFrame_GetZbufferMode(p)                (p)->GetZbufferMode()
-#define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
-#define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
-#define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
-#define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
-#define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->SetSortMode(a)
-#define IDirect3DRMFrame_SetTexture(p,a)                  (p)->SetTexture(a)
-#define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
-#define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
-#define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
-#define IDirect3DRMFrame_Transform(p,a,b)                 (p)->Transform(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFrame2 interface
- */
-#define INTERFACE IDirect3DRMFrame2
-DECLARE_INTERFACE_(IDirect3DRMFrame2,IDirect3DRMFrame)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFrame methods ***/
-    STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
-    STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
-    STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-    STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
-    STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
-    STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
-    STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
-    STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
-    STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
-    STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
-    STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
-        LPVOID pArg)PURE;
-    STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
-    STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
-    STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
-    STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
-    STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
-    STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
-    STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
-    STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
-    STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
-    STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
-    STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
-        D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
-    STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
-    STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    /*** IDirect3DRMFrame2 methods ***/
-    STDMETHOD(AddMoveCallback2)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg, DWORD flags) PURE;
-    STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
-    STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
-    STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
-    STDMETHOD_(BOOL, GetInheritAxes)(THIS);
-    STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
-    STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
-    STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME reference, D3DRMQUATERNION *q) PURE;
-    STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DRMRAY ray, DWORD flags,
-        LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
-    STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFrame2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFrame2_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFrame2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFrame2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFrame methods ***/
-#define IDirect3DRMFrame2_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
-#define IDirect3DRMFrame2_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
-#define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
-#define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
-#define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
-#define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
-#define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
-#define IDirect3DRMFrame2_GetColor(p)                      (p)->lpVtbl->GetColor(p)
-#define IDirect3DRMFrame2_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
-#define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
-#define IDirect3DRMFrame2_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
-#define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
-#define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
-#define IDirect3DRMFrame2_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
-#define IDirect3DRMFrame2_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
-#define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFrame2_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
-#define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
-#define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
-#define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
-#define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
-#define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
-#define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
-#define IDirect3DRMFrame2_Move(p,a)                        (p)->lpVtbl->Move(p,a)
-#define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
-#define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
-#define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
-#define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
-#define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
-#define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
-#define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
-#define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
-#define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
-#define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
-#define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
-#define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
-#define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
-#define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
-#define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
-#define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
-#define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
-#define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
-#define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
-#define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
-/*** IDirect3DRMFrame2 methods ***/
-#define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->lpVtbl->AddMoveCallback2(p,a,b,c)
-#define IDirect3DRMFrame2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->lpVtbl->GetBoxEnable(p)
-#define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->lpVtbl->GetAxes(p,a,b)
-#define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->lpVtbl->GetInheritAxes(p,a,b)
-#define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->lpVtbl->GetHierarchyBox(p,a)
-#define IDirect3DRMFrame2_SetBox(p,a)                      (p)->lpVtbl->SetBox(p,a)
-#define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->lpVtbl->SetBoxEnable(p,a)
-#define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
-#define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->lpVtbl->SetInheritAxes(p,a)
-#define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->lpVtbl->SetQuaternion(p,a,b)
-#define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->lpVtbl->RayPick(p,a,b,c,d)
-#define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMFrame2_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMFrame2_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMFrame2_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMFrame2_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMFrame methods ***/
-#define IDirect3DRMFrame2_AddChild(p,a)                    (p)->AddChild(a)
-#define IDirect3DRMFrame2_AddLight(p,a)                    (p)->AddLight(a)
-#define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
-#define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->AddTransform(a,b)
-#define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
-#define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
-#define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
-#define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->AddVisual(a)
-#define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->GetChildren(a)
-#define IDirect3DRMFrame2_GetColor(p)                      (p)->GetColor()
-#define IDirect3DRMFrame2_GetLights(p,a)                   (p)->GetLights(a)
-#define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->GetMaterialMode()
-#define IDirect3DRMFrame2_GetParent(p,a)                   (p)->GetParent(a)
-#define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->GetPosition(a,b)
-#define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
-#define IDirect3DRMFrame2_GetScene(p,a)                    (p)->GetScene(a)
-#define IDirect3DRMFrame2_GetSortMode(p)                   (p)->GetSortMode()
-#define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->GetTexture(a)
-#define IDirect3DRMFrame2_GetTransform(p,a)                (p)->GetTransform(a)
-#define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
-#define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
-#define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->GetVisuals(a)
-#define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
-#define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
-#define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
-#define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
-#define IDirect3DRMFrame2_Move(p,a)                        (p)->Move(a)
-#define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->DeleteChild(a)
-#define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->DeleteLight(a)
-#define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
-#define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->DeleteVisual(a)
-#define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->GetSceneBackground()
-#define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->GetSceneFogColor()
-#define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
-#define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->GetSceneFogMode()
-#define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
-#define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
-#define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
-#define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
-#define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
-#define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
-#define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame2_SetColor(p,a)                    (p)->SetColor(a)
-#define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->GetZbufferMode()
-#define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
-#define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
-#define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
-#define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
-#define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->SetSortMode(a)
-#define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->SetTexture(a)
-#define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
-#define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
-#define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
-#define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->Transform(a,b)
-/*** IDirect3DRMFrame2 methods ***/
-#define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->AddMoveCallback2(a,b,c)
-#define IDirect3DRMFrame2_GetBox(p,a)                      (p)->GetBox(a)
-#define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->GetBoxEnable()
-#define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->GetAxes(a,b)
-#define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->GetMaterial(a)
-#define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->GetInheritAxes(a,b)
-#define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->GetHierarchyBox(a)
-#define IDirect3DRMFrame2_SetBox(p,a)                      (p)->SetBox(a)
-#define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->SetBoxEnable(a)
-#define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->SetAxes(a,b,c,d,e,f)
-#define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->SetInheritAxes(a)
-#define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->SetMaterial(a)
-#define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->SetQuaternion(a,b)
-#define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->RayPick(a,b,c,d)
-#define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->Save(a,b,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFrame3 interface
- */
-#define INTERFACE IDirect3DRMFrame3
-DECLARE_INTERFACE_(IDirect3DRMFrame3,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFrame3 methods ***/
-    STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME3 child) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg, DWORD flags) PURE;
-    STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(AddVisual)(THIS_ LPUNKNOWN) PURE;
-    STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-    STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
-    STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
-    STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_position) PURE;
-    STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
-    STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
-    STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(GetTransform)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMMATRIX4D rmMatrix) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_velocity,
-        BOOL with_rotation) PURE;
-    STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
-    STDMETHOD(GetVisuals)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags,
-        D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
-    STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME3 target, LPDIRECT3DRMFRAME3 reference, D3DRMFRAMECONSTRAINT) PURE;
-    STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
-    STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(DeleteVisual)(THIS_ LPUNKNOWN) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
-    STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
-    STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
-    STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
-    STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end,
-        D3DVALUE *return_density) PURE;
-    STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
-    STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
-    STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
-    STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
-    STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
-        D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
-    STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
-        D3DVALUE theta) PURE;
-    STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
-    STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
-        BOOL with_rotation) PURE;
-    STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
-    STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
-    STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
-    STDMETHOD_(BOOL, GetInheritAxes)(THIS);
-    STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
-    STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
-    STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMQUATERNION *q) PURE;
-    STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DRMRAY ray, DWORD flags,
-        LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
-    STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
-    STDMETHOD(TransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
-        LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
-    STDMETHOD(InverseTransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
-        LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
-    STDMETHOD(SetTraversalOptions)(THIS_ DWORD flags) PURE;
-    STDMETHOD(GetTraversalOptions)(THIS_ LPDWORD pFlags) PURE;
-    STDMETHOD(SetSceneFogMethod)(THIS_ DWORD flags) PURE;
-    STDMETHOD(GetSceneFogMethod)(THIS_ LPDWORD pFlags) PURE;
-    STDMETHOD(SetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
-    STDMETHOD(GetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFrame3_AddRef(p)                          (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFrame3_Release(p)                         (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFrame3_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFrame3_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFrame3 methods ***/
-#define IDirect3DRMFrame3_AddChild(p,a)                      (p)->lpVtbl->AddChild(p,a)
-#define IDirect3DRMFrame3_AddLight(p,a)                      (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->lpVtbl->AddMoveCallback(p,a,b,c)
-#define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->lpVtbl->AddTransform(p,a,b)
-#define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->lpVtbl->AddTranslation(p,a,b,c,d)
-#define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->lpVtbl->AddScale(p,a,b,c,d)
-#define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->lpVtbl->AddVisual(p,a)
-#define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->lpVtbl->GetChildren(p,a)
-#define IDirect3DRMFrame3_GetColor(p)                        (p)->lpVtbl->GetColor(p)
-#define IDirect3DRMFrame3_GetLights(p,a)                     (p)->lpVtbl->GetLights(p,a)
-#define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->lpVtbl->GetMaterialMode(p)
-#define IDirect3DRMFrame3_GetParent(p,a)                     (p)->lpVtbl->GetParent(p,a)
-#define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->lpVtbl->GetPosition(p,a,b)
-#define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->lpVtbl->GetRotation(p,a,b,c)
-#define IDirect3DRMFrame3_GetScene(p,a)                      (p)->lpVtbl->GetScene(p,a)
-#define IDirect3DRMFrame3_GetSortMode(p)                     (p)->lpVtbl->GetSortMode(p)
-#define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->lpVtbl->GetVelocity(p,a,b,c)
-#define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->lpVtbl->GetOrientation(p,a,b,c)
-#define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->lpVtbl->GetVisuals(p,a,b)
-#define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->lpVtbl->InverseTransform(p,a,b)
-#define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->lpVtbl->LookAt(p,a,b,c)
-#define IDirect3DRMFrame3_Move(p,a)                          (p)->lpVtbl->Move(p,a)
-#define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->lpVtbl->DeleteChild(p,a)
-#define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->lpVtbl->DeleteMoveCallback(p,a,b)
-#define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->lpVtbl->DeleteVisual(p,a)
-#define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->lpVtbl->GetSceneBackground(p)
-#define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->lpVtbl->GetSceneFogColor(p)
-#define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->lpVtbl->GetSceneFogEnable(p)
-#define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->lpVtbl->GetSceneFogMode(p)
-#define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->lpVtbl->SetSceneBackground(p,a)
-#define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
-#define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->lpVtbl->SetSceneBackgroundImage(p,a)
-#define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->lpVtbl->SetSceneFogEnable(p,a)
-#define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->lpVtbl->SetSceneFogColor(p,a)
-#define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->lpVtbl->SetSceneFogMode(p,a)
-#define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame3_SetColor(p,a)                      (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->lpVtbl->GetZbufferMode(p)
-#define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->lpVtbl->SetMaterialMode(p,a)
-#define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
-#define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->lpVtbl->SetSortMode(p,a)
-#define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
-#define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->lpVtbl->SetZbufferMode(p,a)
-#define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->lpVtbl->Transform(p,a,b)
-#define IDirect3DRMFrame3_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->lpVtbl->GetBoxEnable(p)
-#define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->lpVtbl->GetAxes(p,a,b)
-#define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->lpVtbl->GetInheritAxes(p)
-#define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->lpVtbl->GetHierarchyBox(p,a)
-#define IDirect3DRMFrame3_SetBox(p,a)                        (p)->lpVtbl->SetBox(p,a)
-#define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->lpVtbl->SetBoxEnable(p,a)
-#define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
-#define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->lpVtbl->SetInheritAxes(p,a)
-#define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->lpVtbl->SetQuaternion(p,a,b)
-#define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->lpVtbl->RayPick(p,a,b,c,d)
-#define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->lpVtbl->Save(p,a,b,c)
-#define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->lpVtbl->TransformVectors(p,a,b,c,d)
-#define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->lpVtbl->InverseTransformVectors(p,a,b,c,d)
-#define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->lpVtbl->SetTraversalOptions(p,a)
-#define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->lpVtbl->GetTraversalOptions(p,a)
-#define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->lpVtbl->SetSceneFogMethod(p,a)
-#define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->lpVtbl->GetSceneFogMethod(p,a)
-#define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->lpVtbl->SetMaterialOverride(p,a)
-#define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->lpVtbl->GetMaterialOverride(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
-#define IDirect3DRMFrame3_AddRef(p)                          (p)->AddRef()
-#define IDirect3DRMFrame3_Release(p)                         (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
-#define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->SetAppData(a)
-#define IDirect3DRMFrame3_GetAppData(p)                      (p)->GetAppData()
-#define IDirect3DRMFrame3_SetName(p,a)                       (p)->SetName(a)
-#define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->GetName(a,b)
-#define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->GetClassName(a,b)
-/*** IDirect3DRMFrame3 methods ***/
-#define IDirect3DRMFrame3_AddChild(p,a)                      (p)->AddChild(a)
-#define IDirect3DRMFrame3_AddLight(p,a)                      (p)->AddLight(a)
-#define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->AddMoveCallback(a,b,c)
-#define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->AddTransform(a,b)
-#define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->AddTranslation(a,b,c,d)
-#define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->AddScale(a,b,c,d)
-#define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->AddRotation(a,b,c,d,e)
-#define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->AddVisual(a)
-#define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->GetChildren(a)
-#define IDirect3DRMFrame3_GetColor(p)                        (p)->GetColor()
-#define IDirect3DRMFrame3_GetLights(p,a)                     (p)->GetLights(a)
-#define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->GetMaterialMode()
-#define IDirect3DRMFrame3_GetParent(p,a)                     (p)->GetParent(a)
-#define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->GetPosition(a,b)
-#define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->GetRotation(a,b,c)
-#define IDirect3DRMFrame3_GetScene(p,a)                      (p)->GetScene(a)
-#define IDirect3DRMFrame3_GetSortMode(p)                     (p)->GetSortMode()
-#define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->GetTexture(a)
-#define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->GetTransform(a,b)
-#define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->GetVelocity(a,b,c)
-#define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->GetOrientation(a,b,c)
-#define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->GetVisuals(a,b)
-#define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->InverseTransform(a,b)
-#define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->Load(a,b,c,d,e)
-#define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->LookAt(a,b,c)
-#define IDirect3DRMFrame3_Move(p,a)                          (p)->Move(a)
-#define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->DeleteChild(a)
-#define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->DeleteLight(a)
-#define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->DeleteMoveCallback(a,b)
-#define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->DeleteVisual(a)
-#define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->GetSceneBackground()
-#define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->GetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->GetSceneFogColor()
-#define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->GetSceneFogEnable()
-#define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->GetSceneFogMode()
-#define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->GetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->SetSceneBackground(a)
-#define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->SetSceneBackgroundRGB(a,b,c)
-#define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->SetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->SetSceneBackgroundImage(a)
-#define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->SetSceneFogEnable(a)
-#define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->SetSceneFogColor(a)
-#define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->SetSceneFogMode(a)
-#define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->SetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame3_SetColor(p,a)                      (p)->SetColor(a)
-#define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->GetZbufferMode()
-#define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->SetMaterialMode(a)
-#define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->SetOrientation(a,b,c,d,e,f,g)
-#define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->SetPosition(a,b,c,d)
-#define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->SetRotation(a,b,c,d,e)
-#define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->SetSortMode(a)
-#define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->SetTexture(a)
-#define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->SetVelocity(a,b,c,d,e)
-#define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->SetZbufferMode(a)
-#define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->Transform(a,b)
-#define IDirect3DRMFrame3_GetBox(p,a)                        (p)->GetBox(a)
-#define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->GetBoxEnable()
-#define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->GetAxes(a,b)
-#define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->GetMaterial(a)
-#define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->GetInheritAxes()
-#define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->GetHierarchyBox(a)
-#define IDirect3DRMFrame3_SetBox(p,a)                        (p)->SetBox(a)
-#define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->SetBoxEnable(a)
-#define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->SetAxes(a,b,c,d,e,f)
-#define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->SetInheritAxes(a)
-#define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->SetMaterial(a)
-#define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->SetQuaternion(a,b)
-#define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->RayPick(a,b,c,d)
-#define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->Save(a,b,c)
-#define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->TransformVectors(a,b,c,d)
-#define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->InverseTransformVectors(a,b,c,d)
-#define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->SetTraversalOptions(a)
-#define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->GetTraversalOptions(a)
-#define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->SetSceneFogMethod(a)
-#define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->GetSceneFogMethod(a)
-#define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->SetMaterialOverride(a)
-#define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->GetMaterialOverride(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMMesh interface
- */
-#define INTERFACE IDirect3DRMMesh
-DECLARE_INTERFACE_(IDirect3DRMMesh,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMMesh methods ***/
-    STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
-    STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
-    STDMETHOD(AddGroup)(THIS_ unsigned vCount, unsigned fCount, unsigned vPerFace, unsigned *fData,
-        D3DRMGROUPINDEX *returnId) PURE;
-    STDMETHOD(SetVertices)(THIS_ D3DRMGROUPINDEX id, unsigned index, unsigned count,
-        D3DRMVERTEX *values) PURE;
-    STDMETHOD(SetGroupColor)(THIS_ D3DRMGROUPINDEX id, D3DCOLOR value) PURE;
-    STDMETHOD(SetGroupColorRGB)(THIS_ D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetGroupMapping)(THIS_ D3DRMGROUPINDEX id, D3DRMMAPPING value) PURE;
-    STDMETHOD(SetGroupQuality)(THIS_ D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value) PURE;
-    STDMETHOD(SetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL value) PURE;
-    STDMETHOD(SetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE value) PURE;
-    STDMETHOD_(unsigned, GetGroupCount)(THIS) PURE;
-    STDMETHOD(GetGroup)(THIS_ D3DRMGROUPINDEX id, unsigned *vCount, unsigned *fCount, unsigned *vPerFace,
-        DWORD *fDataSize, unsigned *fData) PURE;
-    STDMETHOD(GetVertices)(THIS_ D3DRMGROUPINDEX id, DWORD index, DWORD count, D3DRMVERTEX *returnPtr) PURE;
-    STDMETHOD_(D3DCOLOR, GetGroupColor)(THIS_ D3DRMGROUPINDEX id) PURE;
-    STDMETHOD_(D3DRMMAPPING, GetGroupMapping)(THIS_ D3DRMGROUPINDEX id) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetGroupQuality)(THIS_ D3DRMGROUPINDEX id) PURE;
-    STDMETHOD(GetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL *returnPtr) PURE;
-    STDMETHOD(GetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE *returnPtr) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMMesh_AddRef(p)                          (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMMesh_Release(p)                         (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMMesh_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMMesh_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMMesh_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMMesh_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMMesh methods ***/
-#define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->lpVtbl->Scale(p,a,b,c)
-#define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->lpVtbl->Translate(p,a,b,c)
-#define IDirect3DRMMesh_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->lpVtbl->AddGroup(p,a,b,c,d,e)
-#define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->lpVtbl->SetVertices(p,a,b,c,d)
-#define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->lpVtbl->SetGroupColor(p,a,b)
-#define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->lpVtbl->SetGroupColorRGB(p,a,b,c,d)
-#define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->lpVtbl->SetGroupMapping(p,a,b)
-#define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->lpVtbl->SetGroupQuality(p,a,b)
-#define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->lpVtbl->SetGroupMaterial(p,a,b)
-#define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->lpVtbl->SetGroupTexture(p,a,b)
-#define IDirect3DRMMesh_GetGroupCount(p)                   (p)->lpVtbl->GetGroupCount(p)
-#define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->lpVtbl->GetGroup(p,a,b,c,d,e,f)
-#define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->lpVtbl->GetVertices(p,a,b,c,d)
-#define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->lpVtbl->GetGroupColor(p,a)
-#define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->lpVtbl->GetGroupMapping(p,a)
-#define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->lpVtbl->GetGroupQuality(p,a)
-#define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->lpVtbl->GetGroupMaterial(p,a,b)
-#define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->lpVtbl->GetGroupTexture(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
-#define IDirect3DRMMesh_AddRef(p)                          (p)->AddRef()
-#define IDirect3DRMMesh_Release(p)                         (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
-#define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMMesh_SetAppData(p,a)                    (p)->SetAppData(a)
-#define IDirect3DRMMesh_GetAppData(p)                      (p)->GetAppData()
-#define IDirect3DRMMesh_SetName(p,a)                       (p)->SetName(a)
-#define IDirect3DRMMesh_GetName(p,a,b)                     (p)->GetName(a,b)
-#define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->GetClassName(a,b)
-/*** IDirect3DRMMesh methods ***/
-#define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->Scale(a,b,c)
-#define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->Translate(a,b,c)
-#define IDirect3DRMMesh_GetBox(p,a)                        (p)->GetBox(a)
-#define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->AddGroup(a,b,c,d,e)
-#define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->SetVertices(a,b,c,d)
-#define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->SetGroupColor(a,b)
-#define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->SetGroupColorRGB(a,b,c,d)
-#define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->SetGroupMapping(a,b)
-#define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->SetGroupQuality(a,b)
-#define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->SetGroupMaterial(a,b)
-#define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->SetGroupTexture(a,b)
-#define IDirect3DRMMesh_GetGroupCount(p)                   (p)->GetGroupCount()
-#define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->GetGroup(a,b,c,d,e,f)
-#define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->GetVertices(a,b,c,d)
-#define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->GetGroupColor(a)
-#define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->GetGroupMapping(a)
-#define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->GetGroupQuality(a)
-#define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->lpVtbl->GetGroupMaterial(a,b)
-#define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->lpVtbl->GetGroupTexture(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMProgressiveMesh interface
- */
-#define INTERFACE IDirect3DRMProgressiveMesh
-DECLARE_INTERFACE_(IDirect3DRMProgressiveMesh,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMProgressiveMesh methods ***/
-    STDMETHOD(Load) (THIS_ LPVOID pObjLocation, LPVOID pObjId, D3DRMLOADOPTIONS dloLoadflags,
-        D3DRMLOADTEXTURECALLBACK pCallback, LPVOID lpArg) PURE;
-    STDMETHOD(GetLoadStatus) (THIS_ LPD3DRMPMESHLOADSTATUS pStatus) PURE;
-    STDMETHOD(SetMinRenderDetail) (THIS_ D3DVALUE d3dVal) PURE;
-    STDMETHOD(Abort) (THIS_ DWORD flags) PURE;
-    STDMETHOD(GetFaceDetail) (THIS_ LPDWORD pCount) PURE;
-    STDMETHOD(GetVertexDetail) (THIS_ LPDWORD pCount) PURE;
-    STDMETHOD(SetFaceDetail) (THIS_ DWORD count) PURE;
-    STDMETHOD(SetVertexDetail) (THIS_ DWORD count) PURE;
-    STDMETHOD(GetFaceDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
-    STDMETHOD(GetVertexDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
-    STDMETHOD(GetDetail) (THIS_ D3DVALUE *pdvVal) PURE;
-    STDMETHOD(SetDetail) (THIS_ D3DVALUE d3dVal) PURE;
-    STDMETHOD(RegisterEvents) (THIS_ HANDLE event, DWORD flags, DWORD reserved) PURE;
-    STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *ppD3DRMMesh) PURE;
-    STDMETHOD(Duplicate) (THIS_ LPDIRECT3DRMPROGRESSIVEMESH *ppD3DRMPMesh) PURE;
-    STDMETHOD(GetBox) (THIS_ LPD3DRMBOX pBBox) PURE;
-    STDMETHOD(SetQuality) (THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(GetQuality) (THIS_ LPD3DRMRENDERQUALITY pQuality) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMProgressiveMesh_Release(p)                     (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMProgressiveMesh methods ***/
-#define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->lpVtbl->GetLoadStatus(p,a)
-#define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->lpVtbl->SetMinRenderDetail(p,a)
-#define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->lpVtbl->Abort(p,a)
-#define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->lpVtbl->GetFaceDetail(p,a)
-#define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->lpVtbl->GetVertexDetail(p,a)
-#define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->lpVtbl->SetFaceDetail(p,a)
-#define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->lpVtbl->SetVertexDetail(p,a)
-#define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->lpVtbl->GetFaceDetailRange(p,a,b)
-#define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->lpVtbl->GetVertexDetailRange(p,a,b)
-#define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->lpVtbl->GetDetail(p,a)
-#define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->lpVtbl->SetDetail(p,a)
-#define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->lpVtbl->RegisterEvents(p,a,b,c)
-#define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->lpVtbl->Duplicate(p,a)
-#define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->lpVtbl->GetQuality(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
-#define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->AddRef()
-#define IDirect3DRMProgressiveMesh_Release(p)                     (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
-#define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->SetAppData(a)
-#define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->GetAppData()
-#define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->SetName(a)
-#define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->GetName(a,b)
-#define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->GetClassName(a,b)
-/*** IDirect3DRMProgressiveMesh methods ***/
-#define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->Load(a,b,c,d,e)
-#define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->GetLoadStatus(a)
-#define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->SetMinRenderDetail(a)
-#define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->Abort(a)
-#define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->GetFaceDetail(a)
-#define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->GetVertexDetail(a)
-#define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->SetFaceDetail(a)
-#define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->SetVertexDetail(a)
-#define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->GetFaceDetailRange(a,b)
-#define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->GetVertexDetailRange(a,b)
-#define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->GetDetail(a)
-#define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->SetDetail(a)
-#define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->RegisterEvents(a,b,c)
-#define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->CreateMesh(a)
-#define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->Duplicate(a)
-#define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->GetBox(a)
-#define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->SetQuality(a)
-#define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->GetQuality(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMShadow interface
- */
-#define INTERFACE IDirect3DRMShadow
-DECLARE_INTERFACE_(IDirect3DRMShadow,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMShadow methods ***/
-    STDMETHOD(Init)(THIS_ LPDIRECT3DRMVISUAL visual, LPDIRECT3DRMLIGHT light,
-        D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMShadow_AddRef(p)                      (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMShadow_Release(p)                     (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMShadow_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMShadow_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMShadow_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMShadow_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMShadow methods ***/
-#define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Load(p,a,b,c,d,e,f,g)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
-#define IDirect3DRMShadow_AddRef(p)                      (p)->AddRef()
-#define IDirect3DRMShadow_Release(p)                     (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
-#define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMShadow_SetAppData(p,a)                (p)->SetAppData(a)
-#define IDirect3DRMShadow_GetAppData(p)                  (p)->GetAppData()
-#define IDirect3DRMShadow_SetName(p,a)                   (p)->SetName(a)
-#define IDirect3DRMShadow_GetName(p,a,b)                 (p)->GetName(a,b)
-#define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->GetClassName(a,b)
-/*** IDirect3DRMShadow methods ***/
-#define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->Load(a,b,c,d,e,f,g)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMShadow2 interface
- */
-#define INTERFACE IDirect3DRMShadow2
-DECLARE_INTERFACE_(IDirect3DRMShadow2,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMShadow methods ***/
-    STDMETHOD(Init)(THIS_ LPUNKNOWN pUNK, LPDIRECT3DRMLIGHT light,
-        D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
-    /*** IDirect3DRMShadow2 methods ***/
-    STDMETHOD(GetVisual)(THIS_ LPDIRECT3DRMVISUAL *) PURE;
-    STDMETHOD(SetVisual)(THIS_ LPUNKNOWN pUNK, DWORD) PURE;
-    STDMETHOD(GetLight)(THIS_ LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(SetLight)(THIS_ LPDIRECT3DRMLIGHT, DWORD) PURE;
-    STDMETHOD(GetPlane)(THIS_ LPD3DVALUE px, LPD3DVALUE py, LPD3DVALUE pz,
-        LPD3DVALUE nx, LPD3DVALUE ny, LPD3DVALUE nz) PURE;
-    STDMETHOD(SetPlane)(THIS_ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
-        D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, DWORD) PURE;
-    STDMETHOD(GetOptions)(THIS_ LPDWORD) PURE;
-    STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMShadow2_AddRef(p)                      (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMShadow2_Release(p)                     (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMShadow2_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMShadow2_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMShadow2_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMShadow methods ***/
-#define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Init(p,a,b,c,d,e,f,g)
-/*** IDirect3DRMShadow2 methods ***/
-#define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->lpVtbl->GetVisual(p,a)
-#define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->lpVtbl->SetVisual(p,a,b)
-#define IDirect3DRMShadow2_GetLight(p,a)                  (p)->lpVtbl->GetLight(p,a)
-#define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->GetPlane(p,a,b,c,d,e,f)
-#define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->SetPlane(p,a,b,c,d,e,f)
-#define IDirect3DRMShadow2_GetOptions(p,a)                (p)->lpVtbl->GetOptions(p,a)
-#define IDirect3DRMShadow2_SetOptions(p,a)                (p)->lpVtbl->SetOptions(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
-#define IDirect3DRMShadow2_AddRef(p)                      (p)->AddRef()
-#define IDirect3DRMShadow2_Release(p)                     (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
-#define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMShadow2_SetAppData(p,a)                (p)->SetAppData(a)
-#define IDirect3DRMShadow2_GetAppData(p)                  (p)->GetAppData()
-#define IDirect3DRMShadow2_SetName(p,a)                   (p)->SetName(a)
-#define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->GetName(a,b)
-#define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->GetClassName(a,b)
-/*** IDirect3DRMShadow methods ***/
-#define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->Init(a,b,c,d,e,f,g)
-/*** IDirect3DRMShadow2 methods ***/
-#define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->GetVisual(a)
-#define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->SetVisual(a,b)
-#define IDirect3DRMShadow2_GetLight(p,a)                  (p)->GetLight(a)
-#define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->SetLight(a,b)
-#define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->GetPlane(a,b,c,d,e,f)
-#define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->SetPlane(a,b,c,d,e,f)
-#define IDirect3DRMShadow2_GetOptions(p,a)                (p)->GetOptions(a)
-#define IDirect3DRMShadow2_SetOptions(p,a)                (p)->lpVtbl->SetOptions(p,a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFace interface
- */
-#define INTERFACE IDirect3DRMFace
-DECLARE_INTERFACE_(IDirect3DRMFace,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFace methods ***/
-    STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
-    STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
-    STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFace_AddRef(p)                         (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFace_Release(p)                        (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFace_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFace_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFace_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFace_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFace_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFace methods ***/
-#define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
-#define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFace_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFace_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMFace_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
-#define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
-#define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
-#define IDirect3DRMFace_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
-#define IDirect3DRMFace_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFace_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
-#define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
-#define IDirect3DRMFace_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
-#define IDirect3DRMFace_AddRef(p)                         (p)->AddRef()
-#define IDirect3DRMFace_Release(p)                        (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
-#define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFace_SetAppData(p,a)                   (p)->SetAppData(a)
-#define IDirect3DRMFace_GetAppData(p)                     (p)->GetAppData()
-#define IDirect3DRMFace_SetName(p,a)                      (p)->SetName(a)
-#define IDirect3DRMFace_GetName(p,a,b)                    (p)->GetName(a,b)
-#define IDirect3DRMFace_GetClassName(p,a,b)               (p)->GetClassName(a,b)
-/*** IDirect3DRMFace methods ***/
-#define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
-#define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
-#define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFace_SetColor(p,a)                     (p)->SetColor(a)
-#define IDirect3DRMFace_SetTexture(p,a)                   (p)->SetTexture(a)
-#define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMFace_SetMaterial(p,a)                  (p)->SetMaterial(a)
-#define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
-#define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
-#define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
-#define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
-#define IDirect3DRMFace_GetNormal(p,a)                    (p)->GetNormal(a)
-#define IDirect3DRMFace_GetTexture(p,a)                   (p)->GetTexture(a)
-#define IDirect3DRMFace_GetVertexCount(p)                 (p)->GetVertexCount()
-#define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
-#define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
-#define IDirect3DRMFace_GetColor(p,a)                     (p)->GetColor(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFace2 interface
- */
-#define INTERFACE IDirect3DRMFace2
-DECLARE_INTERFACE_(IDirect3DRMFace2,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFace methods ***/
-    STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
-    STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
-    STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFace2_AddRef(p)                         (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFace2_Release(p)                        (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFace2_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFace2_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFace2_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFace2_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFace methods ***/
-#define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
-#define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFace2_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFace2_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
-#define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
-#define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
-#define IDirect3DRMFace2_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
-#define IDirect3DRMFace2_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFace2_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
-#define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
-#define IDirect3DRMFace2_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
-#define IDirect3DRMFace2_AddRef(p)                         (p)->AddRef()
-#define IDirect3DRMFace2_Release(p)                        (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
-#define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFace2_SetAppData(p,a)                   (p)->SetAppData(a)
-#define IDirect3DRMFace2_GetAppData(p)                     (p)->GetAppData()
-#define IDirect3DRMFace2_SetName(p,a)                      (p)->SetName(a)
-#define IDirect3DRMFace2_GetName(p,a,b)                    (p)->GetName(a,b)
-#define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->GetClassName(a,b)
-/*** IDirect3DRMFace methods ***/
-#define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
-#define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
-#define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFace2_SetColor(p,a)                     (p)->SetColor(a)
-#define IDirect3DRMFace2_SetTexture(p,a)                   (p)->SetTexture(a)
-#define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->SetMaterial(a)
-#define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
-#define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
-#define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
-#define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
-#define IDirect3DRMFace2_GetNormal(p,a)                    (p)->GetNormal(a)
-#define IDirect3DRMFace2_GetTexture(p,a)                   (p)->GetTexture(a)
-#define IDirect3DRMFace2_GetVertexCount(p)                 (p)->GetVertexCount()
-#define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
-#define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
-#define IDirect3DRMFace2_GetColor(p,a)                     (p)->GetColor(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMMeshBuilder interface
- */
-#define INTERFACE IDirect3DRMMeshBuilder
-DECLARE_INTERFACE_(IDirect3DRMMeshBuilder,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMMeshBuilder methods ***/
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
-    STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
-    STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
-    STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
-    STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
-    STDMETHOD(GenerateNormals)(THIS) PURE;
-    STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
-    STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
-    STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
-    STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
-    STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
-        LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
-    STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
-    STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
-        DWORD *face_data_size, DWORD *face_data) PURE;
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
-    STDMETHOD_(int, GetFaceCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMMeshBuilder_Release(p)                        (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMMeshBuilder methods ***/
-#define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->lpVtbl->Save(p,a,b,c)
-#define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->lpVtbl->Scale(p,a,b,c)
-#define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->lpVtbl->Translate(p,a)
-#define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->lpVtbl->SetColorSource(p,a,b,c)
-#define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->lpVtbl->GenerateNormals(p)
-#define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->lpVtbl->GetColorSource(p)
-#define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)->lpVtbl->AddMesh(p,a)
-#define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->lpVtbl->AddMeshBuilder(p,a)
-#define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->lpVtbl->AddFrame(p,a)
-#define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->lpVtbl->AddFace(p,a)
-#define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->lpVtbl->ReserveSpace(p,a,b,c)
-#define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->lpVtbl->SetMateria(p,a)
-#define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->lpVtbl->SetPerspective(p,a)
-#define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->lpVtbl->SetVertex(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->lpVtbl->SetNormal(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->lpVtbl->SetVertexColor(p,a,b)
-#define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->lpVtbl->GetFaces(p,a)
-#define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->lpVtbl->AddNormal(p,a,b,c)
-#define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->lpVtbl->GetPerspective(p)
-#define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->lpVtbl->GetFaceCount(p)
-#define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->lpVtbl->GetVertexColor(p,a)
-#define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->lpVtbl->CreateMesh(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
-#define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->AddRef()
-#define IDirect3DRMMeshBuilder_Release(p)                        (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
-#define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->SetAppData(a)
-#define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->GetAppData()
-#define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->SetName(a)
-#define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->GetName(a,b)
-#define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->GetClassName(a,b)
-/*** IDirect3DRMMeshBuilder methods ***/
-#define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->Load(a,b,c,d,e)
-#define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->Save(a,b,c)
-#define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->Scale(a,b,c)
-#define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->Translate(a)
-#define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->SetColorSource(a,b,c)
-#define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->GetBox(a)
-#define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->GenerateNormals()
-#define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->GetColorSource()
-#define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)-->AddMesh(a)
-#define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->AddMeshBuilder(a)
-#define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->AddFrame(a)
-#define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->AddFace(a)
-#define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->AddFaces(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->ReserveSpace(a,b,c)
-#define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->SetColor(a)
-#define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->SetTexture(a)
-#define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->SetMateria(a)
-#define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
-#define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->SetQuality(a)
-#define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->SetPerspective(a)
-#define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->SetVertex(a,b,c,d)
-#define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->SetNormal(a,b,c,d)
-#define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->SetVertexColor(a,b)
-#define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->SetVertexColorRGB(a,b,c,d)
-#define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->GetFaces(a)
-#define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->GetVertices(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
-#define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->AddNormal(a,b,c)
-#define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->CreateFace(a)
-#define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->GetQuality()
-#define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->GetPerspective()
-#define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->GetFaceCount()
-#define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->GetVertexCount()
-#define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->GetVertexColor(a)
-#define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->CreateMesh(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMMeshBuilder2 interface
- */
-#define INTERFACE IDirect3DRMMeshBuilder2
-DECLARE_INTERFACE_(IDirect3DRMMeshBuilder2,IDirect3DRMMeshBuilder)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMMeshBuilder methods ***/
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
-    STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
-    STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
-    STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
-    STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
-    STDMETHOD(GenerateNormals)(THIS) PURE;
-    STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
-    STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
-    STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
-    STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
-    STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
-        LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
-    STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
-    STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
-        DWORD *face_data_size, DWORD *face_data) PURE;
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
-    STDMETHOD_(int, GetFaceCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
-    /*** IDirect3DRMMeshBuilder2 methods ***/
-    STDMETHOD(GenerateNormals2)(THIS_ D3DVALUE crease, DWORD flags) PURE;
-    STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE*) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMMeshBuilder2_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMMeshBuilder methods ***/
-#define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
-#define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->lpVtbl->GenerateNormals(p)
-#define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
-#define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
-#define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
-#define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
-#define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
-#define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
-#define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
-#define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
-#define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
-#define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
-#define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
-#define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
-#define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
-/*** IDirect3DRMMeshBuilder2 methods ***/
-#define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->lpVtbl->GenerateNormals2(p,a,b)
-#define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMMeshBuilder2_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMMeshBuilder methods ***/
-#define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
-#define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->Save(a,b,c)
-#define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
-#define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->Translate(a)
-#define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
-#define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->GetBox(a)
-#define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->GenerateNormals()
-#define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->GetColorSource()
-#define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)-->AddMesh(a)
-#define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
-#define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->AddFrame(a)
-#define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->AddFace(a)
-#define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
-#define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->SetColor(a)
-#define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->SetTexture(a)
-#define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->SetMateria(a)
-#define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
-#define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->SetQuality(a)
-#define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->SetPerspective(a)
-#define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
-#define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
-#define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
-#define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
-#define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->GetFaces(a)
-#define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->GetVertices(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
-#define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
-#define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->CreateFace(a)
-#define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->GetQuality()
-#define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->GetPerspective()
-#define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->GetFaceCount()
-#define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->GetVertexCount()
-#define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->GetVertexColor(a)
-#define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->CreateMesh(a)
-/*** IDirect3DRMMeshBuilder2 methods ***/
-#define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->GenerateNormals2(a,b)
-#define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->GetFace(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMMeshBuilder3 interface
- */
-#define INTERFACE IDirect3DRMMeshBuilder3
-DECLARE_INTERFACE_(IDirect3DRMMeshBuilder3,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMMeshBuilder3 methods ***/
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
-    STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
-    STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
-    STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
-    STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
-    STDMETHOD(GenerateNormals)(THIS_ D3DVALUE crease, DWORD flags) PURE;
-    STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
-    STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
-    STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3) PURE;
-    STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
-    STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
-        LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
-    STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
-    STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(GetGeometry)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
-        DWORD *face_data_size, DWORD *face_data) PURE;
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE2*) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
-    STDMETHOD_(int, GetFaceCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
-    STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE2 *) PURE;
-    STDMETHOD(GetVertex)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
-    STDMETHOD(GetNormal)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
-    STDMETHOD(DeleteVertices)(THIS_ DWORD IndexFirst, DWORD count) PURE;
-    STDMETHOD(DeleteNormals)(THIS_ DWORD IndexFirst, DWORD count) PURE;
-    STDMETHOD(DeleteFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
-    STDMETHOD(Empty)(THIS_ DWORD flags) PURE;
-    STDMETHOD(Optimize)(THIS_ DWORD flags) PURE;
-    STDMETHOD(AddFacesIndexed)(THIS_ DWORD flags, DWORD *pvIndices, DWORD *pIndexFirst, DWORD *pCount) PURE;
-    STDMETHOD(CreateSubMesh)(THIS_ LPUNKNOWN *) PURE;
-    STDMETHOD(GetParentMesh)(THIS_ DWORD, LPUNKNOWN *) PURE;
-    STDMETHOD(GetSubMeshes)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
-    STDMETHOD(DeleteSubMesh)(THIS_ LPUNKNOWN) PURE;
-    STDMETHOD(Enable)(THIS_ DWORD) PURE;
-    STDMETHOD(GetEnable)(THIS_ DWORD *) PURE;
-    STDMETHOD(AddTriangles)(THIS_ DWORD flags, DWORD format, DWORD VertexCount, LPVOID pvData) PURE;
-    STDMETHOD(SetVertices)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
-    STDMETHOD(SetNormals)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
-    STDMETHOD(GetNormals)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
-    STDMETHOD_(int, GetNormalCount)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMMeshBuilder3_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMMeshBuilder3 methods ***/
-#define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
-#define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->lpVtbl->GenerateNormals(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
-#define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
-#define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
-#define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
-#define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
-#define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
-#define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
-#define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
-#define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
-#define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->lpVtbl->GetGeometry(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
-#define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
-#define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
-#define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->lpVtbl->GetVertex(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->lpVtbl->GetNormal(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->lpVtbl->DeleteVertices(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->lpVtbl->DeleteNormals(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->lpVtbl->DeleteFace(p,a)
-#define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->lpVtbl->Empty(p,a)
-#define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->lpVtbl->Optimize(p,a)
-#define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->lpVtbl->AddFacesIndexed(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->lpVtbl->CreateSubMesh(p,a)
-#define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->lpVtbl->GetParentMesh(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->lpVtbl->GetSubMeshes(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->lpVtbl->DeleteSubMesh(p,a)
-#define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->lpVtbl->Enable(p,a)
-#define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->lpVtbl->AddTriangles(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->lpVtbl->SetVertices(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->lpVtbl->GetVertices(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->lpVtbl->SetNormals(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->lpVtbl->GetNormals(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->lpVtbl->GetNormalCount(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMMeshBuilder3_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMMeshBuilder3 methods ***/
-#define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
-#define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->Save(a,b,c)
-#define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
-#define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->Translate(a)
-#define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
-#define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->GetBox(a)
-#define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->GenerateNormals(a,b)
-#define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->GetColorSource()
-#define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)-->AddMesh(a)
-#define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
-#define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->AddFrame(a)
-#define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->AddFace(a)
-#define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
-#define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->SetColor(a)
-#define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->SetTexture(a)
-#define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->SetMateria(a)
-#define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
-#define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->SetQuality(a)
-#define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->SetPerspective(a)
-#define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
-#define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
-#define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->GetFaces(a)
-#define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->GetGeometry(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
-#define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
-#define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->CreateFace(a)
-#define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->GetQuality()
-#define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->GetPerspective()
-#define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->GetFaceCount()
-#define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->GetVertexCount()
-#define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->GetVertexColor(a)
-#define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->CreateMesh(a)
-#define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->GetFace(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->GetVertex(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->GetNormal(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->DeleteVertices(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->DeleteNormals(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->DeleteFace(p,a)
-#define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->Empty(p,a)
-#define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->Optimize(p,a)
-#define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->AddFacesIndexed(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->CreateSubMesh(p,a)
-#define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->GetParentMesh(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->GetSubMeshes(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->DeleteSubMesh(p,a)
-#define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->Enable(p,a)
-#define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->AddTriangles(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->SetVertices(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->GetVertices(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->SetNormals(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->GetNormals(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->GetNormalCount(p,a)
-#endif
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif /* __D3DRMOBJ_H__ */
diff --git a/misc/builddeps/win32/dx/include/d3dtypes.h b/misc/builddeps/win32/dx/include/d3dtypes.h
deleted file mode 100644 (file)
index 2ac2cff..0000000
+++ /dev/null
@@ -1,1374 +0,0 @@
-/*
- * Copyright (C) 2000 Peter Hunnisett
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-/* FIXME: Need to add C++ code for certain structs for headers - this is going to be a problem
-          if WINE continues to only use C code  - I suppose that we could always inline in
-          the header file to get around that little problem... */
-/* FIXME: We need to implement versioning on everything directx 5 and up if these headers
-          are going to be generically useful for directx stuff */
-
-#ifndef __WINE_D3DTYPES_H
-#define __WINE_D3DTYPES_H
-
-#include <_mingw_dxhelper.h>
-
-#ifndef __WINESRC__
-# include <windows.h>
-#endif
-
-#include <float.h>
-#include <ddraw.h>
-
-#define D3DVALP(val, prec)      ((float)(val))
-#define D3DVAL(val)             ((float)(val))
-#define D3DDivide(a, b)         (float)((double) (a) / (double) (b))
-#define D3DMultiply(a, b)       ((a) * (b))
-
-typedef LONG D3DFIXED;
-
-
-#ifndef RGB_MAKE
-#define CI_GETALPHA(ci)    ((ci) >> 24)
-#define CI_GETINDEX(ci)    (((ci) >> 8) & 0xffff)
-#define CI_GETFRACTION(ci) ((ci) & 0xff)
-#define CI_ROUNDINDEX(ci)  CI_GETINDEX((ci) + 0x80)
-#define CI_MASKALPHA(ci)   ((ci) & 0xffffff)
-#define CI_MAKE(a, i, f)    (((a) << 24) | ((i) << 8) | (f))
-
-#define RGBA_GETALPHA(rgb)      ((rgb) >> 24)
-#define RGBA_GETRED(rgb)        (((rgb) >> 16) & 0xff)
-#define RGBA_GETGREEN(rgb)      (((rgb) >> 8) & 0xff)
-#define RGBA_GETBLUE(rgb)       ((rgb) & 0xff)
-#define RGBA_MAKE(r, g, b, a)   ((D3DCOLOR) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
-
-#define D3DRGB(r, g, b) \
-    (0xff000000 | ( ((LONG)((r) * 255)) << 16) | (((LONG)((g) * 255)) << 8) | (LONG)((b) * 255))
-#define D3DRGBA(r, g, b, a) \
-    (   (((LONG)((a) * 255)) << 24) | (((LONG)((r) * 255)) << 16) \
-    |   (((LONG)((g) * 255)) << 8) | (LONG)((b) * 255) \
-    )
-
-#define RGB_GETRED(rgb)         (((rgb) >> 16) & 0xff)
-#define RGB_GETGREEN(rgb)       (((rgb) >> 8) & 0xff)
-#define RGB_GETBLUE(rgb)        ((rgb) & 0xff)
-#define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
-#define RGB_MAKE(r, g, b)       ((D3DCOLOR) (((r) << 16) | ((g) << 8) | (b)))
-#define RGBA_TORGB(rgba)       ((D3DCOLOR) ((rgba) & 0xffffff))
-#define RGB_TORGBA(rgb)        ((D3DCOLOR) ((rgb) | 0xff000000))
-
-#endif
-
-#define D3DENUMRET_CANCEL                        DDENUMRET_CANCEL
-#define D3DENUMRET_OK                            DDENUMRET_OK
-
-typedef HRESULT (CALLBACK *LPD3DVALIDATECALLBACK)(LPVOID lpUserArg, DWORD dwOffset);
-typedef HRESULT (CALLBACK *LPD3DENUMTEXTUREFORMATSCALLBACK)(LPDDSURFACEDESC lpDdsd, LPVOID lpContext);
-typedef HRESULT (CALLBACK *LPD3DENUMPIXELFORMATSCALLBACK)(LPDDPIXELFORMAT lpDDPixFmt, LPVOID lpContext);
-
-#ifndef DX_SHARED_DEFINES
-
-typedef float D3DVALUE,*LPD3DVALUE;
-
-#ifndef D3DCOLOR_DEFINED
-typedef DWORD D3DCOLOR, *LPD3DCOLOR;
-#define D3DCOLOR_DEFINED
-#endif
-
-#ifndef D3DVECTOR_DEFINED
-typedef struct _D3DVECTOR {
-  union {
-        D3DVALUE        x;
-    D3DVALUE dvX;
-  } DUMMYUNIONNAME1;
-  union {
-        D3DVALUE        y;
-    D3DVALUE dvY;
-  } DUMMYUNIONNAME2;
-  union {
-        D3DVALUE        z;
-    D3DVALUE dvZ;
-  } DUMMYUNIONNAME3;
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-  /* the definitions for these methods are in d3dvec.inl */
-public:
-  /*** constructors ***/
-  _D3DVECTOR() {}
-  _D3DVECTOR(D3DVALUE f);
-  _D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z);
-  _D3DVECTOR(const D3DVALUE f[3]);
-
-  /*** assignment operators ***/
-  _D3DVECTOR& operator += (const _D3DVECTOR& v);
-  _D3DVECTOR& operator -= (const _D3DVECTOR& v);
-  _D3DVECTOR& operator *= (const _D3DVECTOR& v);
-  _D3DVECTOR& operator /= (const _D3DVECTOR& v);
-  _D3DVECTOR& operator *= (D3DVALUE s);
-  _D3DVECTOR& operator /= (D3DVALUE s);
-
-  /*** unary operators ***/
-  friend _D3DVECTOR operator + (const _D3DVECTOR& v);
-  friend _D3DVECTOR operator - (const _D3DVECTOR& v);
-
-  /*** binary operators ***/
-  friend _D3DVECTOR operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
-  friend _D3DVECTOR operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
-
-  friend _D3DVECTOR operator * (const _D3DVECTOR& v, D3DVALUE s);
-  friend _D3DVECTOR operator * (D3DVALUE s, const _D3DVECTOR& v);
-  friend _D3DVECTOR operator / (const _D3DVECTOR& v, D3DVALUE s);
-
-  friend D3DVALUE SquareMagnitude(const _D3DVECTOR& v);
-  friend D3DVALUE Magnitude(const _D3DVECTOR& v);
-
-  friend _D3DVECTOR Normalize(const _D3DVECTOR& v);
-
-  friend D3DVALUE DotProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
-  friend _D3DVECTOR CrossProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
-#endif
-} D3DVECTOR;
-#define D3DVECTOR_DEFINED
-#endif
-
-#ifndef LPD3DVECTOR_DEFINED
-typedef D3DVECTOR *LPD3DVECTOR;
-#define LPD3DVECTOR_DEFINED
-#endif
-
-#define DX_SHARED_DEFINES
-#endif /* DX_SHARED_DEFINES */
-
-typedef DWORD D3DMATERIALHANDLE, *LPD3DMATERIALHANDLE;
-typedef DWORD D3DTEXTUREHANDLE,  *LPD3DTEXTUREHANDLE;
-typedef DWORD D3DMATRIXHANDLE,   *LPD3DMATRIXHANDLE;
-
-typedef struct _D3DCOLORVALUE {
-        union {
-                D3DVALUE r;
-                D3DVALUE dvR;
-        } DUMMYUNIONNAME1;
-        union {
-                D3DVALUE g;
-                D3DVALUE dvG;
-        } DUMMYUNIONNAME2;
-        union {
-                D3DVALUE b;
-                D3DVALUE dvB;
-        } DUMMYUNIONNAME3;
-        union {
-                D3DVALUE a;
-                D3DVALUE dvA;
-        } DUMMYUNIONNAME4;
-} D3DCOLORVALUE,*LPD3DCOLORVALUE;
-
-typedef struct _D3DRECT {
-  union {
-    LONG x1;
-    LONG lX1;
-  } DUMMYUNIONNAME1;
-  union {
-    LONG y1;
-    LONG lY1;
-  } DUMMYUNIONNAME2;
-  union {
-    LONG x2;
-    LONG lX2;
-  } DUMMYUNIONNAME3;
-  union {
-    LONG y2;
-    LONG lY2;
-  } DUMMYUNIONNAME4;
-} D3DRECT, *LPD3DRECT;
-
-typedef struct _D3DHVERTEX {
-    DWORD         dwFlags;
- union {
-    D3DVALUE    hx;
-    D3DVALUE    dvHX;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DVALUE    hy;
-    D3DVALUE    dvHY;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DVALUE    hz;
-    D3DVALUE    dvHZ;
-  } DUMMYUNIONNAME3;
-} D3DHVERTEX, *LPD3DHVERTEX;
-
-/*
- * Transformed/lit vertices
- */
-typedef struct _D3DTLVERTEX {
-  union {
-    D3DVALUE    sx;
-    D3DVALUE    dvSX;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DVALUE    sy;
-    D3DVALUE    dvSY;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DVALUE    sz;
-    D3DVALUE    dvSZ;
-  } DUMMYUNIONNAME3;
-  union {
-    D3DVALUE    rhw;
-    D3DVALUE    dvRHW;
-  } DUMMYUNIONNAME4;
-  union {
-    D3DCOLOR    color;
-    D3DCOLOR    dcColor;
-  } DUMMYUNIONNAME5;
-  union {
-    D3DCOLOR    specular;
-    D3DCOLOR    dcSpecular;
-  } DUMMYUNIONNAME6;
-  union {
-    D3DVALUE    tu;
-    D3DVALUE    dvTU;
-  } DUMMYUNIONNAME7;
-  union {
-    D3DVALUE    tv;
-    D3DVALUE    dvTV;
-  } DUMMYUNIONNAME8;
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-public:
-  _D3DTLVERTEX() {}
-  _D3DTLVERTEX(const D3DVECTOR& v, float _rhw, D3DCOLOR _color, D3DCOLOR _specular, float _tu, float _tv) {
-    sx = v.x; sy = v.y; sz = v.z; rhw = _rhw;
-    color = _color; specular = _specular;
-    tu = _tu; tv = _tv;
-  }
-#endif
-} D3DTLVERTEX, *LPD3DTLVERTEX;
-
-typedef struct _D3DLVERTEX {
-  union {
-    D3DVALUE x;
-    D3DVALUE dvX;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DVALUE y;
-    D3DVALUE dvY;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DVALUE z;
-    D3DVALUE dvZ;
-  } DUMMYUNIONNAME3;
-  DWORD            dwReserved;
-  union {
-    D3DCOLOR     color;
-    D3DCOLOR     dcColor;
-  } DUMMYUNIONNAME4;
-  union {
-    D3DCOLOR     specular;
-    D3DCOLOR     dcSpecular;
-  } DUMMYUNIONNAME5;
-  union {
-    D3DVALUE     tu;
-    D3DVALUE     dvTU;
-  } DUMMYUNIONNAME6;
-  union {
-    D3DVALUE     tv;
-    D3DVALUE     dvTV;
-  } DUMMYUNIONNAME7;
-} D3DLVERTEX, *LPD3DLVERTEX;
-
-typedef struct _D3DVERTEX {
-  union {
-    D3DVALUE     x;
-    D3DVALUE     dvX;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DVALUE     y;
-    D3DVALUE     dvY;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DVALUE     z;
-    D3DVALUE     dvZ;
-  } DUMMYUNIONNAME3;
-  union {
-    D3DVALUE     nx;
-    D3DVALUE     dvNX;
-  } DUMMYUNIONNAME4;
-  union {
-    D3DVALUE     ny;
-    D3DVALUE     dvNY;
-  } DUMMYUNIONNAME5;
-  union {
-    D3DVALUE     nz;
-    D3DVALUE     dvNZ;
-  } DUMMYUNIONNAME6;
-  union {
-    D3DVALUE     tu;
-    D3DVALUE     dvTU;
-  } DUMMYUNIONNAME7;
-  union {
-    D3DVALUE     tv;
-    D3DVALUE     dvTV;
-  } DUMMYUNIONNAME8;
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-public:
-  _D3DVERTEX() {}
-  _D3DVERTEX(const D3DVECTOR& v, const D3DVECTOR& n, float _tu, float _tv) {
-    x  = v.x; y  = v.y; z  = v.z;
-    nx = n.x; ny = n.y; nz = n.z;
-    tu = _tu; tv = _tv;
-  }
-#endif
-} D3DVERTEX, *LPD3DVERTEX;
-
-typedef struct _D3DMATRIX {
-  D3DVALUE        _11, _12, _13, _14;
-  D3DVALUE        _21, _22, _23, _24;
-  D3DVALUE        _31, _32, _33, _34;
-  D3DVALUE        _41, _42, _43, _44;
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-  _D3DMATRIX() { }
-
-    /* This is different from MS, but avoids anonymous structs. */
-    D3DVALUE &operator () (int r, int c)
-       { return ((D3DVALUE [4][4])&_11)[r][c]; }
-    const D3DVALUE &operator() (int r, int c) const
-       { return ((const D3DVALUE [4][4])&_11)[r][c]; }
-#endif
-} D3DMATRIX, *LPD3DMATRIX;
-
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-#include <d3dvec.inl>
-#endif
-
-typedef struct _D3DVIEWPORT {
-  DWORD       dwSize;
-  DWORD       dwX;
-  DWORD       dwY;
-  DWORD       dwWidth;
-  DWORD       dwHeight;
-  D3DVALUE    dvScaleX;
-  D3DVALUE    dvScaleY;
-  D3DVALUE    dvMaxX;
-  D3DVALUE    dvMaxY;
-  D3DVALUE    dvMinZ;
-  D3DVALUE    dvMaxZ;
-} D3DVIEWPORT, *LPD3DVIEWPORT;
-
-typedef struct _D3DVIEWPORT2 {
-  DWORD       dwSize;
-  DWORD       dwX;
-  DWORD       dwY;
-  DWORD       dwWidth;
-  DWORD       dwHeight;
-  D3DVALUE    dvClipX;
-  D3DVALUE    dvClipY;
-  D3DVALUE    dvClipWidth;
-  D3DVALUE    dvClipHeight;
-  D3DVALUE    dvMinZ;
-  D3DVALUE    dvMaxZ;
-} D3DVIEWPORT2, *LPD3DVIEWPORT2;
-
-typedef struct _D3DVIEWPORT7 {
-  DWORD       dwX;
-  DWORD       dwY;
-  DWORD       dwWidth;
-  DWORD       dwHeight;
-  D3DVALUE    dvMinZ;
-  D3DVALUE    dvMaxZ;
-} D3DVIEWPORT7, *LPD3DVIEWPORT7;
-
-#define D3DMAXUSERCLIPPLANES 32
-
-#define D3DCLIPPLANE0 (1 << 0)
-#define D3DCLIPPLANE1 (1 << 1)
-#define D3DCLIPPLANE2 (1 << 2)
-#define D3DCLIPPLANE3 (1 << 3)
-#define D3DCLIPPLANE4 (1 << 4)
-#define D3DCLIPPLANE5 (1 << 5)
-
-#define D3DCLIP_LEFT     0x00000001
-#define D3DCLIP_RIGHT    0x00000002
-#define D3DCLIP_TOP      0x00000004
-#define D3DCLIP_BOTTOM   0x00000008
-#define D3DCLIP_FRONT    0x00000010
-#define D3DCLIP_BACK     0x00000020
-#define D3DCLIP_GEN0     0x00000040
-#define D3DCLIP_GEN1     0x00000080
-#define D3DCLIP_GEN2     0x00000100
-#define D3DCLIP_GEN3     0x00000200
-#define D3DCLIP_GEN4     0x00000400
-#define D3DCLIP_GEN5     0x00000800
-
-#define D3DSTATUS_CLIPUNIONLEFT                 D3DCLIP_LEFT
-#define D3DSTATUS_CLIPUNIONRIGHT                D3DCLIP_RIGHT
-#define D3DSTATUS_CLIPUNIONTOP                  D3DCLIP_TOP
-#define D3DSTATUS_CLIPUNIONBOTTOM               D3DCLIP_BOTTOM
-#define D3DSTATUS_CLIPUNIONFRONT                D3DCLIP_FRONT
-#define D3DSTATUS_CLIPUNIONBACK                 D3DCLIP_BACK
-#define D3DSTATUS_CLIPUNIONGEN0                 D3DCLIP_GEN0
-#define D3DSTATUS_CLIPUNIONGEN1                 D3DCLIP_GEN1
-#define D3DSTATUS_CLIPUNIONGEN2                 D3DCLIP_GEN2
-#define D3DSTATUS_CLIPUNIONGEN3                 D3DCLIP_GEN3
-#define D3DSTATUS_CLIPUNIONGEN4                 D3DCLIP_GEN4
-#define D3DSTATUS_CLIPUNIONGEN5                 D3DCLIP_GEN5
-
-#define D3DSTATUS_CLIPINTERSECTIONLEFT          0x00001000
-#define D3DSTATUS_CLIPINTERSECTIONRIGHT         0x00002000
-#define D3DSTATUS_CLIPINTERSECTIONTOP           0x00004000
-#define D3DSTATUS_CLIPINTERSECTIONBOTTOM        0x00008000
-#define D3DSTATUS_CLIPINTERSECTIONFRONT         0x00010000
-#define D3DSTATUS_CLIPINTERSECTIONBACK          0x00020000
-#define D3DSTATUS_CLIPINTERSECTIONGEN0          0x00040000
-#define D3DSTATUS_CLIPINTERSECTIONGEN1          0x00080000
-#define D3DSTATUS_CLIPINTERSECTIONGEN2          0x00100000
-#define D3DSTATUS_CLIPINTERSECTIONGEN3          0x00200000
-#define D3DSTATUS_CLIPINTERSECTIONGEN4          0x00400000
-#define D3DSTATUS_CLIPINTERSECTIONGEN5          0x00800000
-#define D3DSTATUS_ZNOTVISIBLE                   0x01000000
-
-#define D3DSTATUS_CLIPUNIONALL  (               \
-            D3DSTATUS_CLIPUNIONLEFT     |       \
-            D3DSTATUS_CLIPUNIONRIGHT    |       \
-            D3DSTATUS_CLIPUNIONTOP      |       \
-            D3DSTATUS_CLIPUNIONBOTTOM   |       \
-            D3DSTATUS_CLIPUNIONFRONT    |       \
-            D3DSTATUS_CLIPUNIONBACK     |       \
-            D3DSTATUS_CLIPUNIONGEN0     |       \
-            D3DSTATUS_CLIPUNIONGEN1     |       \
-            D3DSTATUS_CLIPUNIONGEN2     |       \
-            D3DSTATUS_CLIPUNIONGEN3     |       \
-            D3DSTATUS_CLIPUNIONGEN4     |       \
-            D3DSTATUS_CLIPUNIONGEN5             \
-            )
-
-#define D3DSTATUS_CLIPINTERSECTIONALL   (               \
-            D3DSTATUS_CLIPINTERSECTIONLEFT      |       \
-            D3DSTATUS_CLIPINTERSECTIONRIGHT     |       \
-            D3DSTATUS_CLIPINTERSECTIONTOP       |       \
-            D3DSTATUS_CLIPINTERSECTIONBOTTOM    |       \
-            D3DSTATUS_CLIPINTERSECTIONFRONT     |       \
-            D3DSTATUS_CLIPINTERSECTIONBACK      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN0      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN1      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN2      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN3      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN4      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN5              \
-            )
-
-#define D3DSTATUS_DEFAULT       (                       \
-            D3DSTATUS_CLIPINTERSECTIONALL       |       \
-            D3DSTATUS_ZNOTVISIBLE)
-
-#define D3DTRANSFORM_CLIPPED       0x00000001
-#define D3DTRANSFORM_UNCLIPPED     0x00000002
-
-typedef struct _D3DTRANSFORMDATA {
-  DWORD           dwSize;
-  LPVOID          lpIn;
-  DWORD           dwInSize;
-  LPVOID          lpOut;
-  DWORD           dwOutSize;
-  LPD3DHVERTEX    lpHOut;
-  DWORD           dwClip;
-  DWORD           dwClipIntersection;
-  DWORD           dwClipUnion;
-  D3DRECT         drExtent;
-} D3DTRANSFORMDATA, *LPD3DTRANSFORMDATA;
-
-typedef struct _D3DLIGHTINGELEMENT {
-  D3DVECTOR dvPosition;
-  D3DVECTOR dvNormal;
-} D3DLIGHTINGELEMENT, *LPD3DLIGHTINGELEMENT;
-
-typedef struct _D3DMATERIAL {
-  DWORD               dwSize;
-  union {
-    D3DCOLORVALUE   diffuse;
-    D3DCOLORVALUE   dcvDiffuse;
-  } DUMMYUNIONNAME;
-  union {
-    D3DCOLORVALUE   ambient;
-    D3DCOLORVALUE   dcvAmbient;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DCOLORVALUE   specular;
-    D3DCOLORVALUE   dcvSpecular;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DCOLORVALUE   emissive;
-    D3DCOLORVALUE   dcvEmissive;
-  } DUMMYUNIONNAME3;
-  union {
-    D3DVALUE        power;
-    D3DVALUE        dvPower;
-  } DUMMYUNIONNAME4;
-  D3DTEXTUREHANDLE    hTexture;
-  DWORD               dwRampSize;
-} D3DMATERIAL, *LPD3DMATERIAL;
-
-typedef struct _D3DMATERIAL7 {
-  union {
-    D3DCOLORVALUE   diffuse;
-    D3DCOLORVALUE   dcvDiffuse;
-  } DUMMYUNIONNAME;
-  union {
-    D3DCOLORVALUE   ambient;
-    D3DCOLORVALUE   dcvAmbient;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DCOLORVALUE   specular;
-    D3DCOLORVALUE   dcvSpecular;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DCOLORVALUE   emissive;
-    D3DCOLORVALUE   dcvEmissive;
-  } DUMMYUNIONNAME3;
-  union {
-    D3DVALUE        power;
-    D3DVALUE        dvPower;
-  } DUMMYUNIONNAME4;
-} D3DMATERIAL7, *LPD3DMATERIAL7;
-
-typedef enum {
-  D3DLIGHT_POINT          = 1,
-  D3DLIGHT_SPOT           = 2,
-  D3DLIGHT_DIRECTIONAL    = 3,
-  D3DLIGHT_PARALLELPOINT  = 4,
-  D3DLIGHT_GLSPOT         = 5,
-  D3DLIGHT_FORCE_DWORD    = 0x7fffffff
-} D3DLIGHTTYPE;
-
-typedef struct _D3DLIGHT {
-    DWORD           dwSize;
-    D3DLIGHTTYPE    dltType;
-    D3DCOLORVALUE   dcvColor;
-    D3DVECTOR       dvPosition;
-    D3DVECTOR       dvDirection;
-    D3DVALUE        dvRange;
-    D3DVALUE        dvFalloff;
-    D3DVALUE        dvAttenuation0;
-    D3DVALUE        dvAttenuation1;
-    D3DVALUE        dvAttenuation2;
-    D3DVALUE        dvTheta;
-    D3DVALUE        dvPhi;
-} D3DLIGHT,*LPD3DLIGHT;
-
-typedef struct _D3DLIGHT7 {
-    D3DLIGHTTYPE    dltType;
-    D3DCOLORVALUE   dcvDiffuse;
-    D3DCOLORVALUE   dcvSpecular;
-    D3DCOLORVALUE   dcvAmbient;
-    D3DVECTOR       dvPosition;
-    D3DVECTOR       dvDirection;
-    D3DVALUE        dvRange;
-    D3DVALUE        dvFalloff;
-    D3DVALUE        dvAttenuation0;
-    D3DVALUE        dvAttenuation1;
-    D3DVALUE        dvAttenuation2;
-    D3DVALUE        dvTheta;
-    D3DVALUE        dvPhi;
-} D3DLIGHT7, *LPD3DLIGHT7;
-
-#define D3DLIGHT_ACTIVE         0x00000001
-#define D3DLIGHT_NO_SPECULAR    0x00000002
-#define D3DLIGHT_ALL (D3DLIGHT_ACTIVE | D3DLIGHT_NO_SPECULAR) /* 0x3 */
-
-#define D3DLIGHT_RANGE_MAX              ((float)sqrt(FLT_MAX))
-
-typedef struct _D3DLIGHT2 {
-  DWORD           dwSize;
-  D3DLIGHTTYPE    dltType;
-  D3DCOLORVALUE   dcvColor;
-  D3DVECTOR       dvPosition;
-  D3DVECTOR       dvDirection;
-  D3DVALUE        dvRange;
-  D3DVALUE        dvFalloff;
-  D3DVALUE        dvAttenuation0;
-  D3DVALUE        dvAttenuation1;
-  D3DVALUE        dvAttenuation2;
-  D3DVALUE        dvTheta;
-  D3DVALUE        dvPhi;
-  DWORD           dwFlags;
-} D3DLIGHT2, *LPD3DLIGHT2;
-
-typedef struct _D3DLIGHTDATA {
-  DWORD                dwSize;
-  LPD3DLIGHTINGELEMENT lpIn;
-  DWORD                dwInSize;
-  LPD3DTLVERTEX        lpOut;
-  DWORD                dwOutSize;
-} D3DLIGHTDATA, *LPD3DLIGHTDATA;
-
-#define D3DCOLOR_MONO   1
-#define D3DCOLOR_RGB    2
-
-typedef DWORD D3DCOLORMODEL;
-
-
-#ifndef D3DCLEAR_TARGET
-#define D3DCLEAR_TARGET   0x00000001
-#endif
-#ifndef D3DCLEAR_ZBUFFER
-#define D3DCLEAR_ZBUFFER  0x00000002
-#endif
-#ifndef D3DCLEAR_STENCIL
-#define D3DCLEAR_STENCIL  0x00000004
-#endif
-
-typedef enum _D3DOPCODE {
-  D3DOP_POINT           = 1,
-  D3DOP_LINE            = 2,
-  D3DOP_TRIANGLE        = 3,
-  D3DOP_MATRIXLOAD      = 4,
-  D3DOP_MATRIXMULTIPLY  = 5,
-  D3DOP_STATETRANSFORM  = 6,
-  D3DOP_STATELIGHT      = 7,
-  D3DOP_STATERENDER     = 8,
-  D3DOP_PROCESSVERTICES = 9,
-  D3DOP_TEXTURELOAD     = 10,
-  D3DOP_EXIT            = 11,
-  D3DOP_BRANCHFORWARD   = 12,
-  D3DOP_SPAN            = 13,
-  D3DOP_SETSTATUS       = 14,
-
-  D3DOP_FORCE_DWORD     = 0x7fffffff
-} D3DOPCODE;
-
-typedef struct _D3DINSTRUCTION {
-  BYTE bOpcode;
-  BYTE bSize;
-  WORD wCount;
-} D3DINSTRUCTION, *LPD3DINSTRUCTION;
-
-typedef struct _D3DTEXTURELOAD {
-  D3DTEXTUREHANDLE hDestTexture;
-  D3DTEXTUREHANDLE hSrcTexture;
-} D3DTEXTURELOAD, *LPD3DTEXTURELOAD;
-
-typedef struct _D3DPICKRECORD {
-  BYTE     bOpcode;
-  BYTE     bPad;
-  DWORD    dwOffset;
-  D3DVALUE dvZ;
-} D3DPICKRECORD, *LPD3DPICKRECORD;
-
-typedef enum {
-  D3DSHADE_FLAT         = 1,
-  D3DSHADE_GOURAUD      = 2,
-  D3DSHADE_PHONG        = 3,
-  D3DSHADE_FORCE_DWORD  = 0x7fffffff
-} D3DSHADEMODE;
-
-typedef enum {
-  D3DFILL_POINT         = 1,
-  D3DFILL_WIREFRAME     = 2,
-  D3DFILL_SOLID         = 3,
-  D3DFILL_FORCE_DWORD   = 0x7fffffff
-} D3DFILLMODE;
-
-typedef struct _D3DLINEPATTERN {
-  WORD    wRepeatFactor;
-  WORD    wLinePattern;
-} D3DLINEPATTERN;
-
-typedef enum {
-  D3DFILTER_NEAREST          = 1,
-  D3DFILTER_LINEAR           = 2,
-  D3DFILTER_MIPNEAREST       = 3,
-  D3DFILTER_MIPLINEAR        = 4,
-  D3DFILTER_LINEARMIPNEAREST = 5,
-  D3DFILTER_LINEARMIPLINEAR  = 6,
-  D3DFILTER_FORCE_DWORD      = 0x7fffffff
-} D3DTEXTUREFILTER;
-
-typedef enum {
-  D3DBLEND_ZERO            = 1,
-  D3DBLEND_ONE             = 2,
-  D3DBLEND_SRCCOLOR        = 3,
-  D3DBLEND_INVSRCCOLOR     = 4,
-  D3DBLEND_SRCALPHA        = 5,
-  D3DBLEND_INVSRCALPHA     = 6,
-  D3DBLEND_DESTALPHA       = 7,
-  D3DBLEND_INVDESTALPHA    = 8,
-  D3DBLEND_DESTCOLOR       = 9,
-  D3DBLEND_INVDESTCOLOR    = 10,
-  D3DBLEND_SRCALPHASAT     = 11,
-  D3DBLEND_BOTHSRCALPHA    = 12,
-  D3DBLEND_BOTHINVSRCALPHA = 13,
-  D3DBLEND_FORCE_DWORD     = 0x7fffffff
-} D3DBLEND;
-
-typedef enum {
-  D3DTBLEND_DECAL         = 1,
-  D3DTBLEND_MODULATE      = 2,
-  D3DTBLEND_DECALALPHA    = 3,
-  D3DTBLEND_MODULATEALPHA = 4,
-  D3DTBLEND_DECALMASK     = 5,
-  D3DTBLEND_MODULATEMASK  = 6,
-  D3DTBLEND_COPY          = 7,
-  D3DTBLEND_ADD           = 8,
-  D3DTBLEND_FORCE_DWORD   = 0x7fffffff
-} D3DTEXTUREBLEND;
-
-typedef enum _D3DTEXTUREADDRESS {
-    D3DTADDRESS_WRAP           = 1,
-    D3DTADDRESS_MIRROR         = 2,
-    D3DTADDRESS_CLAMP          = 3,
-    D3DTADDRESS_BORDER         = 4,
-    D3DTADDRESS_FORCE_DWORD    = 0x7fffffff
-} D3DTEXTUREADDRESS;
-
-typedef enum {
-  D3DCULL_NONE        = 1,
-  D3DCULL_CW          = 2,
-  D3DCULL_CCW         = 3,
-  D3DCULL_FORCE_DWORD = 0x7fffffff
-} D3DCULL;
-
-typedef enum {
-  D3DCMP_NEVER        = 1,
-  D3DCMP_LESS         = 2,
-  D3DCMP_EQUAL        = 3,
-  D3DCMP_LESSEQUAL    = 4,
-  D3DCMP_GREATER      = 5,
-  D3DCMP_NOTEQUAL     = 6,
-  D3DCMP_GREATEREQUAL = 7,
-  D3DCMP_ALWAYS       = 8,
-  D3DCMP_FORCE_DWORD  = 0x7fffffff
-} D3DCMPFUNC;
-
-typedef enum _D3DSTENCILOP {
-  D3DSTENCILOP_KEEP        = 1,
-  D3DSTENCILOP_ZERO        = 2,
-  D3DSTENCILOP_REPLACE     = 3,
-  D3DSTENCILOP_INCRSAT     = 4,
-  D3DSTENCILOP_DECRSAT     = 5,
-  D3DSTENCILOP_INVERT      = 6,
-  D3DSTENCILOP_INCR        = 7,
-  D3DSTENCILOP_DECR        = 8,
-  D3DSTENCILOP_FORCE_DWORD = 0x7fffffff
-} D3DSTENCILOP;
-
-typedef enum _D3DFOGMODE {
-  D3DFOG_NONE         = 0,
-  D3DFOG_EXP          = 1,
-  D3DFOG_EXP2         = 2,
-  D3DFOG_LINEAR       = 3,
-  D3DFOG_FORCE_DWORD  = 0x7fffffff
-} D3DFOGMODE;
-
-typedef enum _D3DZBUFFERTYPE {
-  D3DZB_FALSE        = 0,
-  D3DZB_TRUE         = 1,
-  D3DZB_USEW         = 2,
-  D3DZB_FORCE_DWORD  = 0x7fffffff
-} D3DZBUFFERTYPE;
-
-typedef enum _D3DANTIALIASMODE {
-  D3DANTIALIAS_NONE            = 0,
-  D3DANTIALIAS_SORTDEPENDENT   = 1,
-  D3DANTIALIAS_SORTINDEPENDENT = 2,
-  D3DANTIALIAS_FORCE_DWORD     = 0x7fffffff
-} D3DANTIALIASMODE;
-
-typedef enum {
-  D3DVT_VERTEX        = 1,
-  D3DVT_LVERTEX       = 2,
-  D3DVT_TLVERTEX      = 3,
-  D3DVT_FORCE_DWORD   = 0x7fffffff
-} D3DVERTEXTYPE;
-
-typedef enum {
-  D3DPT_POINTLIST     = 1,
-  D3DPT_LINELIST      = 2,
-  D3DPT_LINESTRIP     = 3,
-  D3DPT_TRIANGLELIST  = 4,
-  D3DPT_TRIANGLESTRIP = 5,
-  D3DPT_TRIANGLEFAN   = 6,
-  D3DPT_FORCE_DWORD   = 0x7fffffff
-} D3DPRIMITIVETYPE;
-
-#define D3DSTATE_OVERRIDE_BIAS      256
-
-#define D3DSTATE_OVERRIDE(type) (D3DRENDERSTATETYPE)(((DWORD) (type) + D3DSTATE_OVERRIDE_BIAS))
-
-typedef enum _D3DTRANSFORMSTATETYPE {
-    D3DTRANSFORMSTATE_WORLD         = 1,
-    D3DTRANSFORMSTATE_VIEW          = 2,
-    D3DTRANSFORMSTATE_PROJECTION    = 3,
-    D3DTRANSFORMSTATE_WORLD1        = 4,
-    D3DTRANSFORMSTATE_WORLD2        = 5,
-    D3DTRANSFORMSTATE_WORLD3        = 6,
-    D3DTRANSFORMSTATE_TEXTURE0      = 16,
-    D3DTRANSFORMSTATE_TEXTURE1      = 17,
-    D3DTRANSFORMSTATE_TEXTURE2      = 18,
-    D3DTRANSFORMSTATE_TEXTURE3      = 19,
-    D3DTRANSFORMSTATE_TEXTURE4      = 20,
-    D3DTRANSFORMSTATE_TEXTURE5      = 21,
-    D3DTRANSFORMSTATE_TEXTURE6      = 22,
-    D3DTRANSFORMSTATE_TEXTURE7      = 23,
-    D3DTRANSFORMSTATE_FORCE_DWORD   = 0x7fffffff
-} D3DTRANSFORMSTATETYPE;
-
-typedef enum {
-  D3DLIGHTSTATE_MATERIAL      = 1,
-  D3DLIGHTSTATE_AMBIENT       = 2,
-  D3DLIGHTSTATE_COLORMODEL    = 3,
-  D3DLIGHTSTATE_FOGMODE       = 4,
-  D3DLIGHTSTATE_FOGSTART      = 5,
-  D3DLIGHTSTATE_FOGEND        = 6,
-  D3DLIGHTSTATE_FOGDENSITY    = 7,
-  D3DLIGHTSTATE_COLORVERTEX   = 8,
-  D3DLIGHTSTATE_FORCE_DWORD   = 0x7fffffff
-} D3DLIGHTSTATETYPE;
-
-typedef enum {
-  D3DRENDERSTATE_TEXTUREHANDLE      = 1,
-  D3DRENDERSTATE_ANTIALIAS          = 2,
-  D3DRENDERSTATE_TEXTUREADDRESS     = 3,
-  D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4,
-  D3DRENDERSTATE_WRAPU              = 5,
-  D3DRENDERSTATE_WRAPV              = 6,
-  D3DRENDERSTATE_ZENABLE            = 7,
-  D3DRENDERSTATE_FILLMODE           = 8,
-  D3DRENDERSTATE_SHADEMODE          = 9,
-  D3DRENDERSTATE_LINEPATTERN        = 10,
-  D3DRENDERSTATE_MONOENABLE         = 11,
-  D3DRENDERSTATE_ROP2               = 12,
-  D3DRENDERSTATE_PLANEMASK          = 13,
-  D3DRENDERSTATE_ZWRITEENABLE       = 14,
-  D3DRENDERSTATE_ALPHATESTENABLE    = 15,
-  D3DRENDERSTATE_LASTPIXEL          = 16,
-  D3DRENDERSTATE_TEXTUREMAG         = 17,
-  D3DRENDERSTATE_TEXTUREMIN         = 18,
-  D3DRENDERSTATE_SRCBLEND           = 19,
-  D3DRENDERSTATE_DESTBLEND          = 20,
-  D3DRENDERSTATE_TEXTUREMAPBLEND    = 21,
-  D3DRENDERSTATE_CULLMODE           = 22,
-  D3DRENDERSTATE_ZFUNC              = 23,
-  D3DRENDERSTATE_ALPHAREF           = 24,
-  D3DRENDERSTATE_ALPHAFUNC          = 25,
-  D3DRENDERSTATE_DITHERENABLE       = 26,
-  D3DRENDERSTATE_ALPHABLENDENABLE   = 27,
-  D3DRENDERSTATE_FOGENABLE          = 28,
-  D3DRENDERSTATE_SPECULARENABLE     = 29,
-  D3DRENDERSTATE_ZVISIBLE           = 30,
-  D3DRENDERSTATE_SUBPIXEL           = 31,
-  D3DRENDERSTATE_SUBPIXELX          = 32,
-  D3DRENDERSTATE_STIPPLEDALPHA      = 33,
-  D3DRENDERSTATE_FOGCOLOR           = 34,
-  D3DRENDERSTATE_FOGTABLEMODE       = 35,
-  D3DRENDERSTATE_FOGTABLESTART      = 36,
-  D3DRENDERSTATE_FOGTABLEEND        = 37,
-  D3DRENDERSTATE_FOGTABLEDENSITY    = 38,
-  D3DRENDERSTATE_FOGSTART           = 36,
-  D3DRENDERSTATE_FOGEND             = 37,
-  D3DRENDERSTATE_FOGDENSITY         = 38,
-  D3DRENDERSTATE_STIPPLEENABLE      = 39,
-  D3DRENDERSTATE_EDGEANTIALIAS      = 40,
-  D3DRENDERSTATE_COLORKEYENABLE     = 41,
-  D3DRENDERSTATE_BORDERCOLOR        = 43,
-  D3DRENDERSTATE_TEXTUREADDRESSU    = 44,
-  D3DRENDERSTATE_TEXTUREADDRESSV    = 45,
-  D3DRENDERSTATE_MIPMAPLODBIAS      = 46,
-  D3DRENDERSTATE_ZBIAS              = 47,
-  D3DRENDERSTATE_RANGEFOGENABLE     = 48,
-  D3DRENDERSTATE_ANISOTROPY         = 49,
-  D3DRENDERSTATE_FLUSHBATCH         = 50,
-  D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT = 51,
-
-  D3DRENDERSTATE_STENCILENABLE      = 52,
-  D3DRENDERSTATE_STENCILFAIL        = 53,
-  D3DRENDERSTATE_STENCILZFAIL       = 54,
-  D3DRENDERSTATE_STENCILPASS        = 55,
-  D3DRENDERSTATE_STENCILFUNC        = 56,
-  D3DRENDERSTATE_STENCILREF         = 57,
-  D3DRENDERSTATE_STENCILMASK        = 58,
-  D3DRENDERSTATE_STENCILWRITEMASK   = 59,
-  D3DRENDERSTATE_TEXTUREFACTOR      = 60,
-
-  D3DRENDERSTATE_STIPPLEPATTERN00   = 64,
-  D3DRENDERSTATE_STIPPLEPATTERN01   = 65,
-  D3DRENDERSTATE_STIPPLEPATTERN02   = 66,
-  D3DRENDERSTATE_STIPPLEPATTERN03   = 67,
-  D3DRENDERSTATE_STIPPLEPATTERN04   = 68,
-  D3DRENDERSTATE_STIPPLEPATTERN05   = 69,
-  D3DRENDERSTATE_STIPPLEPATTERN06   = 70,
-  D3DRENDERSTATE_STIPPLEPATTERN07   = 71,
-  D3DRENDERSTATE_STIPPLEPATTERN08   = 72,
-  D3DRENDERSTATE_STIPPLEPATTERN09   = 73,
-  D3DRENDERSTATE_STIPPLEPATTERN10   = 74,
-  D3DRENDERSTATE_STIPPLEPATTERN11   = 75,
-  D3DRENDERSTATE_STIPPLEPATTERN12   = 76,
-  D3DRENDERSTATE_STIPPLEPATTERN13   = 77,
-  D3DRENDERSTATE_STIPPLEPATTERN14   = 78,
-  D3DRENDERSTATE_STIPPLEPATTERN15   = 79,
-  D3DRENDERSTATE_STIPPLEPATTERN16   = 80,
-  D3DRENDERSTATE_STIPPLEPATTERN17   = 81,
-  D3DRENDERSTATE_STIPPLEPATTERN18   = 82,
-  D3DRENDERSTATE_STIPPLEPATTERN19   = 83,
-  D3DRENDERSTATE_STIPPLEPATTERN20   = 84,
-  D3DRENDERSTATE_STIPPLEPATTERN21   = 85,
-  D3DRENDERSTATE_STIPPLEPATTERN22   = 86,
-  D3DRENDERSTATE_STIPPLEPATTERN23   = 87,
-  D3DRENDERSTATE_STIPPLEPATTERN24   = 88,
-  D3DRENDERSTATE_STIPPLEPATTERN25   = 89,
-  D3DRENDERSTATE_STIPPLEPATTERN26   = 90,
-  D3DRENDERSTATE_STIPPLEPATTERN27   = 91,
-  D3DRENDERSTATE_STIPPLEPATTERN28   = 92,
-  D3DRENDERSTATE_STIPPLEPATTERN29   = 93,
-  D3DRENDERSTATE_STIPPLEPATTERN30   = 94,
-  D3DRENDERSTATE_STIPPLEPATTERN31   = 95,
-
-  D3DRENDERSTATE_WRAP0              = 128,
-  D3DRENDERSTATE_WRAP1              = 129,
-  D3DRENDERSTATE_WRAP2              = 130,
-  D3DRENDERSTATE_WRAP3              = 131,
-  D3DRENDERSTATE_WRAP4              = 132,
-  D3DRENDERSTATE_WRAP5              = 133,
-  D3DRENDERSTATE_WRAP6              = 134,
-  D3DRENDERSTATE_WRAP7              = 135,
-  D3DRENDERSTATE_CLIPPING            = 136,
-  D3DRENDERSTATE_LIGHTING            = 137,
-  D3DRENDERSTATE_EXTENTS             = 138,
-  D3DRENDERSTATE_AMBIENT             = 139,
-  D3DRENDERSTATE_FOGVERTEXMODE       = 140,
-  D3DRENDERSTATE_COLORVERTEX         = 141,
-  D3DRENDERSTATE_LOCALVIEWER         = 142,
-  D3DRENDERSTATE_NORMALIZENORMALS    = 143,
-  D3DRENDERSTATE_COLORKEYBLENDENABLE = 144,
-  D3DRENDERSTATE_DIFFUSEMATERIALSOURCE    = 145,
-  D3DRENDERSTATE_SPECULARMATERIALSOURCE   = 146,
-  D3DRENDERSTATE_AMBIENTMATERIALSOURCE    = 147,
-  D3DRENDERSTATE_EMISSIVEMATERIALSOURCE   = 148,
-  D3DRENDERSTATE_VERTEXBLEND              = 151,
-  D3DRENDERSTATE_CLIPPLANEENABLE          = 152,
-
-  D3DRENDERSTATE_FORCE_DWORD        = 0x7fffffff
-
-  /* FIXME: We have some retired values that are being reused for DirectX 7 */
-} D3DRENDERSTATETYPE;
-
-typedef enum _D3DMATERIALCOLORSOURCE
-{
-    D3DMCS_MATERIAL = 0,
-    D3DMCS_COLOR1   = 1,
-    D3DMCS_COLOR2   = 2,
-    D3DMCS_FORCE_DWORD = 0x7fffffff
-} D3DMATERIALCOLORSOURCE;
-
-#define D3DRENDERSTATE_BLENDENABLE      D3DRENDERSTATE_ALPHABLENDENABLE
-#define D3DRENDERSTATE_WRAPBIAS                 128UL
-#define D3DWRAP_U   0x00000001L
-#define D3DWRAP_V   0x00000002L
-
-#define D3DWRAPCOORD_0   0x00000001L
-#define D3DWRAPCOORD_1   0x00000002L
-#define D3DWRAPCOORD_2   0x00000004L
-#define D3DWRAPCOORD_3   0x00000008L
-
-#define D3DRENDERSTATE_STIPPLEPATTERN(y) (D3DRENDERSTATE_STIPPLEPATTERN00 + (y))
-
-typedef struct _D3DSTATE {
-  union {
-    D3DTRANSFORMSTATETYPE dtstTransformStateType;
-    D3DLIGHTSTATETYPE     dlstLightStateType;
-    D3DRENDERSTATETYPE    drstRenderStateType;
-  } DUMMYUNIONNAME1;
-  union {
-    DWORD                 dwArg[1];
-    D3DVALUE              dvArg[1];
-  } DUMMYUNIONNAME2;
-} D3DSTATE, *LPD3DSTATE;
-
-typedef struct _D3DMATRIXLOAD {
-  D3DMATRIXHANDLE hDestMatrix;
-  D3DMATRIXHANDLE hSrcMatrix;
-} D3DMATRIXLOAD, *LPD3DMATRIXLOAD;
-
-typedef struct _D3DMATRIXMULTIPLY {
-  D3DMATRIXHANDLE hDestMatrix;
-  D3DMATRIXHANDLE hSrcMatrix1;
-  D3DMATRIXHANDLE hSrcMatrix2;
-} D3DMATRIXMULTIPLY, *LPD3DMATRIXMULTIPLY;
-
-typedef struct _D3DPROCESSVERTICES {
-  DWORD dwFlags;
-  WORD  wStart;
-  WORD  wDest;
-  DWORD dwCount;
-  DWORD dwReserved;
-} D3DPROCESSVERTICES, *LPD3DPROCESSVERTICES;
-
-#define D3DPROCESSVERTICES_TRANSFORMLIGHT       0x00000000L
-#define D3DPROCESSVERTICES_TRANSFORM            0x00000001L
-#define D3DPROCESSVERTICES_COPY                 0x00000002L
-#define D3DPROCESSVERTICES_OPMASK               0x00000007L
-
-#define D3DPROCESSVERTICES_UPDATEEXTENTS        0x00000008L
-#define D3DPROCESSVERTICES_NOCOLOR              0x00000010L
-
-typedef enum _D3DTEXTURESTAGESTATETYPE
-{
-    D3DTSS_COLOROP        =  1,
-    D3DTSS_COLORARG1      =  2,
-    D3DTSS_COLORARG2      =  3,
-    D3DTSS_ALPHAOP        =  4,
-    D3DTSS_ALPHAARG1      =  5,
-    D3DTSS_ALPHAARG2      =  6,
-    D3DTSS_BUMPENVMAT00   =  7,
-    D3DTSS_BUMPENVMAT01   =  8,
-    D3DTSS_BUMPENVMAT10   =  9,
-    D3DTSS_BUMPENVMAT11   = 10,
-    D3DTSS_TEXCOORDINDEX  = 11,
-    D3DTSS_ADDRESS        = 12,
-    D3DTSS_ADDRESSU       = 13,
-    D3DTSS_ADDRESSV       = 14,
-    D3DTSS_BORDERCOLOR    = 15,
-    D3DTSS_MAGFILTER      = 16,
-    D3DTSS_MINFILTER      = 17,
-    D3DTSS_MIPFILTER      = 18,
-    D3DTSS_MIPMAPLODBIAS  = 19,
-    D3DTSS_MAXMIPLEVEL    = 20,
-    D3DTSS_MAXANISOTROPY  = 21,
-    D3DTSS_BUMPENVLSCALE  = 22,
-    D3DTSS_BUMPENVLOFFSET = 23,
-    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
-    D3DTSS_FORCE_DWORD   = 0x7fffffff
-} D3DTEXTURESTAGESTATETYPE;
-
-#define D3DTSS_TCI_PASSTHRU                             0x00000000
-#define D3DTSS_TCI_CAMERASPACENORMAL                    0x00010000
-#define D3DTSS_TCI_CAMERASPACEPOSITION                  0x00020000
-#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR          0x00030000
-
-typedef enum _D3DTEXTUREOP
-{
-    D3DTOP_DISABLE    = 1,
-    D3DTOP_SELECTARG1 = 2,
-    D3DTOP_SELECTARG2 = 3,
-
-    D3DTOP_MODULATE   = 4,
-    D3DTOP_MODULATE2X = 5,
-    D3DTOP_MODULATE4X = 6,
-
-    D3DTOP_ADD          =  7,
-    D3DTOP_ADDSIGNED    =  8,
-    D3DTOP_ADDSIGNED2X  =  9,
-    D3DTOP_SUBTRACT     = 10,
-    D3DTOP_ADDSMOOTH    = 11,
-
-    D3DTOP_BLENDDIFFUSEALPHA    = 12,
-    D3DTOP_BLENDTEXTUREALPHA    = 13,
-    D3DTOP_BLENDFACTORALPHA     = 14,
-    D3DTOP_BLENDTEXTUREALPHAPM  = 15,
-    D3DTOP_BLENDCURRENTALPHA    = 16,
-
-    D3DTOP_PREMODULATE            = 17,
-    D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
-    D3DTOP_MODULATECOLOR_ADDALPHA = 19,
-    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
-    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
-
-    D3DTOP_BUMPENVMAP           = 22,
-    D3DTOP_BUMPENVMAPLUMINANCE  = 23,
-    D3DTOP_DOTPRODUCT3          = 24,
-
-    D3DTOP_FORCE_DWORD = 0x7fffffff
-} D3DTEXTUREOP;
-
-#define D3DTA_SELECTMASK        0x0000000f
-#define D3DTA_DIFFUSE           0x00000000
-#define D3DTA_CURRENT           0x00000001
-#define D3DTA_TEXTURE           0x00000002
-#define D3DTA_TFACTOR           0x00000003
-#define D3DTA_SPECULAR          0x00000004
-#define D3DTA_COMPLEMENT        0x00000010
-#define D3DTA_ALPHAREPLICATE    0x00000020
-
-typedef enum _D3DTEXTUREMAGFILTER
-{
-    D3DTFG_POINT        = 1,
-    D3DTFG_LINEAR       = 2,
-    D3DTFG_FLATCUBIC    = 3,
-    D3DTFG_GAUSSIANCUBIC = 4,
-    D3DTFG_ANISOTROPIC  = 5,
-    D3DTFG_FORCE_DWORD  = 0x7fffffff
-} D3DTEXTUREMAGFILTER;
-
-typedef enum _D3DTEXTUREMINFILTER
-{
-    D3DTFN_POINT        = 1,
-    D3DTFN_LINEAR       = 2,
-    D3DTFN_ANISOTROPIC  = 3,
-    D3DTFN_FORCE_DWORD  = 0x7fffffff
-} D3DTEXTUREMINFILTER;
-
-typedef enum _D3DTEXTUREMIPFILTER
-{
-    D3DTFP_NONE         = 1,
-    D3DTFP_POINT        = 2,
-    D3DTFP_LINEAR       = 3,
-    D3DTFP_FORCE_DWORD  = 0x7fffffff
-} D3DTEXTUREMIPFILTER;
-
-#define D3DTRIFLAG_START                        0x00000000L
-#define D3DTRIFLAG_STARTFLAT(len) (len)
-#define D3DTRIFLAG_ODD                          0x0000001eL
-#define D3DTRIFLAG_EVEN                         0x0000001fL
-
-#define D3DTRIFLAG_EDGEENABLE1                  0x00000100L
-#define D3DTRIFLAG_EDGEENABLE2                  0x00000200L
-#define D3DTRIFLAG_EDGEENABLE3                  0x00000400L
-#define D3DTRIFLAG_EDGEENABLETRIANGLE \
-        (D3DTRIFLAG_EDGEENABLE1 | D3DTRIFLAG_EDGEENABLE2 | D3DTRIFLAG_EDGEENABLE3)
-
-typedef struct _D3DTRIANGLE {
-  union {
-    WORD v1;
-    WORD wV1;
-  } DUMMYUNIONNAME1;
-  union {
-    WORD v2;
-    WORD wV2;
-  } DUMMYUNIONNAME2;
-  union {
-    WORD v3;
-    WORD wV3;
-  } DUMMYUNIONNAME3;
-  WORD     wFlags;
-} D3DTRIANGLE, *LPD3DTRIANGLE;
-
-typedef struct _D3DLINE {
-  union {
-    WORD v1;
-    WORD wV1;
-  } DUMMYUNIONNAME1;
-  union {
-    WORD v2;
-    WORD wV2;
-  } DUMMYUNIONNAME2;
-} D3DLINE, *LPD3DLINE;
-
-typedef struct _D3DSPAN {
-  WORD wCount;
-  WORD wFirst;
-} D3DSPAN, *LPD3DSPAN;
-
-typedef struct _D3DPOINT {
-  WORD wCount;
-  WORD wFirst;
-} D3DPOINT, *LPD3DPOINT;
-
-typedef struct _D3DBRANCH {
-  DWORD dwMask;
-  DWORD dwValue;
-  BOOL  bNegate;
-  DWORD dwOffset;
-} D3DBRANCH, *LPD3DBRANCH;
-
-typedef struct _D3DSTATUS {
-  DWORD   dwFlags;
-  DWORD   dwStatus;
-  D3DRECT drExtent;
-} D3DSTATUS, *LPD3DSTATUS;
-
-#define D3DSETSTATUS_STATUS   0x00000001L
-#define D3DSETSTATUS_EXTENTS  0x00000002L
-#define D3DSETSTATUS_ALL      (D3DSETSTATUS_STATUS | D3DSETSTATUS_EXTENTS)
-
-typedef struct _D3DCLIPSTATUS {
-  DWORD dwFlags;
-  DWORD dwStatus;
-  float minx, maxx;
-  float miny, maxy;
-  float minz, maxz;
-} D3DCLIPSTATUS, *LPD3DCLIPSTATUS;
-
-#define D3DCLIPSTATUS_STATUS        0x00000001L
-#define D3DCLIPSTATUS_EXTENTS2      0x00000002L
-#define D3DCLIPSTATUS_EXTENTS3      0x00000004L
-
-typedef struct {
-  DWORD        dwSize;
-  DWORD        dwTrianglesDrawn;
-  DWORD        dwLinesDrawn;
-  DWORD        dwPointsDrawn;
-  DWORD        dwSpansDrawn;
-  DWORD        dwVerticesProcessed;
-} D3DSTATS, *LPD3DSTATS;
-
-#define D3DEXECUTE_CLIPPED       0x00000001l
-#define D3DEXECUTE_UNCLIPPED     0x00000002l
-
-typedef struct _D3DEXECUTEDATA {
-  DWORD     dwSize;
-  DWORD     dwVertexOffset;
-  DWORD     dwVertexCount;
-  DWORD     dwInstructionOffset;
-  DWORD     dwInstructionLength;
-  DWORD     dwHVertexOffset;
-  D3DSTATUS dsStatus;
-} D3DEXECUTEDATA, *LPD3DEXECUTEDATA;
-
-#define D3DPAL_FREE 0x00
-#define D3DPAL_READONLY 0x40
-#define D3DPAL_RESERVED 0x80
-
-typedef struct _D3DVERTEXBUFFERDESC {
-  DWORD dwSize;
-  DWORD dwCaps;
-  DWORD dwFVF;
-  DWORD dwNumVertices;
-} D3DVERTEXBUFFERDESC, *LPD3DVERTEXBUFFERDESC;
-
-#define D3DVBCAPS_SYSTEMMEMORY      0x00000800l
-#define D3DVBCAPS_WRITEONLY         0x00010000l
-#define D3DVBCAPS_OPTIMIZED         0x80000000l
-#define D3DVBCAPS_DONOTCLIP         0x00000001l
-
-#define D3DVOP_LIGHT       (1 << 10)
-#define D3DVOP_TRANSFORM   (1 << 0)
-#define D3DVOP_CLIP        (1 << 2)
-#define D3DVOP_EXTENTS     (1 << 3)
-
-#define D3DMAXNUMVERTICES    ((1<<16) - 1)
-
-#define D3DMAXNUMPRIMITIVES  ((1<<16) - 1)
-
-#define D3DPV_DONOTCOPYDATA (1 << 0)
-
-#define D3DFVF_RESERVED0        0x001
-#define D3DFVF_POSITION_MASK    0x00E
-#define D3DFVF_XYZ              0x002
-#define D3DFVF_XYZRHW           0x004
-#define D3DFVF_XYZB1            0x006
-#define D3DFVF_XYZB2            0x008
-#define D3DFVF_XYZB3            0x00a
-#define D3DFVF_XYZB4            0x00c
-#define D3DFVF_XYZB5            0x00e
-
-#define D3DFVF_NORMAL           0x010
-#define D3DFVF_RESERVED1        0x020
-#define D3DFVF_DIFFUSE          0x040
-#define D3DFVF_SPECULAR         0x080
-#define D3DFVF_TEXCOUNT_MASK    0xf00
-#define D3DFVF_TEXCOUNT_SHIFT   8
-#define D3DFVF_TEX0             0x000
-#define D3DFVF_TEX1             0x100
-#define D3DFVF_TEX2             0x200
-#define D3DFVF_TEX3             0x300
-#define D3DFVF_TEX4             0x400
-#define D3DFVF_TEX5             0x500
-#define D3DFVF_TEX6             0x600
-#define D3DFVF_TEX7             0x700
-#define D3DFVF_TEX8             0x800
-
-#define D3DFVF_RESERVED2        0xf000
-
-#define D3DFVF_VERTEX ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 )
-#define D3DFVF_LVERTEX ( D3DFVF_XYZ | D3DFVF_RESERVED1 | D3DFVF_DIFFUSE | \
-                         D3DFVF_SPECULAR | D3DFVF_TEX1 )
-#define D3DFVF_TLVERTEX ( D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | \
-                          D3DFVF_TEX1 )
-
-typedef struct _D3DDP_PTRSTRIDE {
-  LPVOID lpvData;
-  DWORD  dwStride;
-} D3DDP_PTRSTRIDE;
-
-#define D3DDP_MAXTEXCOORD 8
-
-typedef struct _D3DDRAWPRIMITIVESTRIDEDDATA  {
-  D3DDP_PTRSTRIDE position;
-  D3DDP_PTRSTRIDE normal;
-  D3DDP_PTRSTRIDE diffuse;
-  D3DDP_PTRSTRIDE specular;
-  D3DDP_PTRSTRIDE textureCoords[D3DDP_MAXTEXCOORD];
-} D3DDRAWPRIMITIVESTRIDEDDATA ,*LPD3DDRAWPRIMITIVESTRIDEDDATA;
-
-#define D3DVIS_INSIDE_FRUSTUM       0
-#define D3DVIS_INTERSECT_FRUSTUM    1
-#define D3DVIS_OUTSIDE_FRUSTUM      2
-#define D3DVIS_INSIDE_LEFT          0
-#define D3DVIS_INTERSECT_LEFT       (1 << 2)
-#define D3DVIS_OUTSIDE_LEFT         (2 << 2)
-#define D3DVIS_INSIDE_RIGHT         0
-#define D3DVIS_INTERSECT_RIGHT      (1 << 4)
-#define D3DVIS_OUTSIDE_RIGHT        (2 << 4)
-#define D3DVIS_INSIDE_TOP           0
-#define D3DVIS_INTERSECT_TOP        (1 << 6)
-#define D3DVIS_OUTSIDE_TOP          (2 << 6)
-#define D3DVIS_INSIDE_BOTTOM        0
-#define D3DVIS_INTERSECT_BOTTOM     (1 << 8)
-#define D3DVIS_OUTSIDE_BOTTOM       (2 << 8)
-#define D3DVIS_INSIDE_NEAR          0
-#define D3DVIS_INTERSECT_NEAR       (1 << 10)
-#define D3DVIS_OUTSIDE_NEAR         (2 << 10)
-#define D3DVIS_INSIDE_FAR           0
-#define D3DVIS_INTERSECT_FAR        (1 << 12)
-#define D3DVIS_OUTSIDE_FAR          (2 << 12)
-
-#define D3DVIS_MASK_FRUSTUM         (3 << 0)
-#define D3DVIS_MASK_LEFT            (3 << 2)
-#define D3DVIS_MASK_RIGHT           (3 << 4)
-#define D3DVIS_MASK_TOP             (3 << 6)
-#define D3DVIS_MASK_BOTTOM          (3 << 8)
-#define D3DVIS_MASK_NEAR            (3 << 10)
-#define D3DVIS_MASK_FAR             (3 << 12)
-
-#define D3DDEVINFOID_TEXTUREMANAGER    1
-#define D3DDEVINFOID_D3DTEXTUREMANAGER 2
-#define D3DDEVINFOID_TEXTURING         3
-
-typedef enum _D3DSTATEBLOCKTYPE
-{
-    D3DSBT_ALL           = 1,
-    D3DSBT_PIXELSTATE    = 2,
-    D3DSBT_VERTEXSTATE   = 3,
-    D3DSBT_FORCE_DWORD   = 0xffffffff
-} D3DSTATEBLOCKTYPE;
-
-typedef enum _D3DVERTEXBLENDFLAGS
-{
-    D3DVBLEND_DISABLE  = 0,
-    D3DVBLEND_1WEIGHT  = 1,
-    D3DVBLEND_2WEIGHTS = 2,
-    D3DVBLEND_3WEIGHTS = 3,
-} D3DVERTEXBLENDFLAGS;
-
-typedef enum _D3DTEXTURETRANSFORMFLAGS {
-    D3DTTFF_DISABLE         = 0,
-    D3DTTFF_COUNT1          = 1,
-    D3DTTFF_COUNT2          = 2,
-    D3DTTFF_COUNT3          = 3,
-    D3DTTFF_COUNT4          = 4,
-    D3DTTFF_PROJECTED       = 256,
-    D3DTTFF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTURETRANSFORMFLAGS;
-
-#define D3DFVF_TEXTUREFORMAT2 0
-#define D3DFVF_TEXTUREFORMAT1 3
-#define D3DFVF_TEXTUREFORMAT3 1
-#define D3DFVF_TEXTUREFORMAT4 2
-
-#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
-#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
-
-#endif
diff --git a/misc/builddeps/win32/dx/include/d3dvec.inl b/misc/builddeps/win32/dx/include/d3dvec.inl
deleted file mode 100644 (file)
index 9418dd2..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2000 Ove Kaaven
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3DVEC_INL
-#define __WINE_D3DVEC_INL
-
-/*** constructors ***/
-
-inline _D3DVECTOR::_D3DVECTOR(D3DVALUE f)
-{
-  x = y = z = f;
-}
-
-inline _D3DVECTOR::_D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z)
-{
-  x = _x; y = _y; z = _z;
-}
-
-/*** assignment operators ***/
-
-inline _D3DVECTOR& _D3DVECTOR::operator += (const _D3DVECTOR& v)
-{
-  x += v.x; y += v.y; z += v.z;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator -= (const _D3DVECTOR& v)
-{
-  x -= v.x; y -= v.y; z -= v.z;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator *= (const _D3DVECTOR& v)
-{
-  x *= v.x; y *= v.y; z *= v.z;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator /= (const _D3DVECTOR& v)
-{
-  x /= v.x; y /= v.y; z /= v.z;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator *= (D3DVALUE s)
-{
-  x *= s; y *= s; z *= s;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator /= (D3DVALUE s)
-{
-  x /= s; y /= s; z /= s;
-  return *this;
-}
-
-/*** unary operators ***/
-
-inline _D3DVECTOR operator + (const _D3DVECTOR& v)
-{
-  return v;
-}
-
-inline _D3DVECTOR operator - (const _D3DVECTOR& v)
-{
-  return _D3DVECTOR(-v.x, -v.y, -v.z);
-}
-
-/*** binary operators ***/
-
-inline _D3DVECTOR operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
-{
-  return _D3DVECTOR(v1.x+v2.x, v1.y+v2.y, v1.z+v2.z);
-}
-
-inline _D3DVECTOR operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
-{
-  return _D3DVECTOR(v1.x-v2.x, v1.y-v2.y, v1.z-v2.z);
-}
-
-inline _D3DVECTOR operator * (const _D3DVECTOR& v, D3DVALUE s)
-{
-  return _D3DVECTOR(v.x*s, v.y*s, v.z*s);
-}
-
-inline _D3DVECTOR operator * (D3DVALUE s, const _D3DVECTOR& v)
-{
-  return _D3DVECTOR(v.x*s, v.y*s, v.z*s);
-}
-
-inline _D3DVECTOR operator / (const _D3DVECTOR& v, D3DVALUE s)
-{
-  return _D3DVECTOR(v.x/s, v.y/s, v.z/s);
-}
-
-inline D3DVALUE SquareMagnitude(const _D3DVECTOR& v)
-{
-  return v.x*v.x + v.y*v.y + v.z*v.z; /* DotProduct(v, v) */
-}
-
-inline D3DVALUE Magnitude(const _D3DVECTOR& v)
-{
-  return sqrt(SquareMagnitude(v));
-}
-
-inline _D3DVECTOR Normalize(const _D3DVECTOR& v)
-{
-  return v / Magnitude(v);
-}
-
-inline D3DVALUE DotProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2)
-{
-  return v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;
-}
-
-inline _D3DVECTOR CrossProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2)
-{
-  _D3DVECTOR res;
-  /* this is a left-handed cross product, right? */
-  res.x = v1.y * v2.z - v1.z * v2.y;
-  res.y = v1.z * v2.x - v1.x * v2.z;
-  res.z = v1.x * v2.y - v1.y * v2.x;
-  return res;
-}
-
-#endif
diff --git a/misc/builddeps/win32/dx/include/d3dx9.h b/misc/builddeps/win32/dx/include/d3dx9.h
deleted file mode 100644 (file)
index 09ae553..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2007 David Adam
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DX9_H__
-#define __D3DX9_H__
-
-#include <limits.h>
-
-#define D3DX_DEFAULT         ((UINT)-1)
-#define D3DX_DEFAULT_NONPOW2 ((UINT)-2)
-#define D3DX_DEFAULT_FLOAT   FLT_MAX
-#define D3DX_FROM_FILE       ((UINT)-3)
-#define D3DFMT_FROM_FILE     ((D3DFORMAT)-3)
-
-#include "d3d9.h"
-#include "d3dx9math.h"
-#include "d3dx9core.h"
-#include "d3dx9mesh.h"
-#include "d3dx9shader.h"
-#include "d3dx9effect.h"
-#include "d3dx9shape.h"
-#include "d3dx9tex.h"
-
-#define _FACDD 0x876
-#define MAKE_DDHRESULT(code) MAKE_HRESULT(1, _FACDD, code)
-
-enum _D3DXERR {
-    D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
-    D3DXERR_INVALIDMESH             = MAKE_DDHRESULT(2901),
-    D3DXERR_CANNOTATTRSORT          = MAKE_DDHRESULT(2902),
-    D3DXERR_SKINNINGNOTSUPPORTED    = MAKE_DDHRESULT(2903),
-    D3DXERR_TOOMANYINFLUENCES       = MAKE_DDHRESULT(2904),
-    D3DXERR_INVALIDDATA             = MAKE_DDHRESULT(2905),
-    D3DXERR_LOADEDMESHASNODATA      = MAKE_DDHRESULT(2906),
-    D3DXERR_DUPLICATENAMEDFRAGMENT  = MAKE_DDHRESULT(2907),
-    D3DXERR_CANNOTREMOVELASTITEM    = MAKE_DDHRESULT(2908),
-};
-
-#endif
diff --git a/misc/builddeps/win32/dx/include/d3dx9core.h b/misc/builddeps/win32/dx/include/d3dx9core.h
deleted file mode 100644 (file)
index c1b948e..0000000
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <_mingw_dxhelper.h>
-#include <d3dx9.h>
-
-#ifndef __WINE_D3DX9CORE_H
-#define __WINE_D3DX9CORE_H
-
-/**********************************************
- ***************** Definitions ****************
- **********************************************/
-/* D3DX_VERSION will be completely ignored since we are
-    implementing all dlls from d3dx9_24 to d3dx9_36 */
-#define D3DX_VERSION 0x0902
-#define D3DX_SDK_VERSION 36
-#define D3DXSPRITE_DONOTSAVESTATE           1
-#define D3DXSPRITE_DONOTMODIFY_RENDERSTATE  2
-#define D3DXSPRITE_OBJECTSPACE              4
-#define D3DXSPRITE_BILLBOARD                8
-#define D3DXSPRITE_ALPHABLEND              16
-#define D3DXSPRITE_SORT_TEXTURE            32
-#define D3DXSPRITE_SORT_DEPTH_FRONTTOBACK  64
-#define D3DXSPRITE_SORT_DEPTH_BACKTOFRONT 128
-#define D3DXSPRITE_DO_NOT_ADDREF_TEXTURE  256
-
-/**********************************************
- ******************** GUIDs *******************
- **********************************************/
-DEFINE_GUID(IID_ID3DXBuffer, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
-DEFINE_GUID(IID_ID3DXFont, 0xd79dbb70, 0x5f21, 0x4d36, 0xbb, 0xc2, 0xff, 0x52, 0x5c, 0x21, 0x3c, 0xdc);
-DEFINE_GUID(IID_ID3DXLine, 0xd379ba7f, 0x9042, 0x4ac4, 0x9f, 0x5e, 0x58, 0x19, 0x2a, 0x4c, 0x6b, 0xd8);
-DEFINE_GUID(IID_ID3DXRenderToEnvMap, 0x313f1b4b, 0xc7b0, 0x4fa2, 0x9d, 0x9d, 0x8d, 0x38, 0xb, 0x64, 0x38, 0x5e);
-DEFINE_GUID(IID_ID3DXRenderToSurface, 0x6985f346, 0x2c3d, 0x43b3, 0xbe, 0x8b, 0xda, 0xae, 0x8a, 0x3, 0xd8, 0x94);
-DEFINE_GUID(IID_ID3DXSprite, 0xba0b762d, 0x7d28, 0x43ec, 0xb9, 0xdc, 0x2f, 0x84, 0x44, 0x3b, 0x6, 0x14);
-
-/**********************************************
- ****************** typedefs ******************
- **********************************************/
-typedef struct ID3DXBuffer *LPD3DXBUFFER;
-typedef struct ID3DXFont *LPD3DXFONT;
-typedef struct ID3DXLine *LPD3DXLINE;
-typedef struct ID3DXRenderToEnvMap *LPD3DXRenderToEnvMap;
-typedef struct ID3DXRenderToSurface *LPD3DXRENDERTOSURFACE;
-typedef struct ID3DXSprite *LPD3DXSPRITE;
-
-/**********************************************
- *********** interface declarations ***********
- **********************************************/
-#define INTERFACE ID3DXBuffer
-DECLARE_INTERFACE_(ID3DXBuffer, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBuffer methods ***/
-    STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
-    STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define ID3DXBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** ID3DXBuffer methods ***/
-#define ID3DXBuffer_GetBufferPointer(p)   (p)->lpVtbl->GetBufferPointer(p)
-#define ID3DXBuffer_GetBufferSize(p)      (p)->lpVtbl->GetBufferSize(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define ID3DXBuffer_AddRef(p)             (p)->AddRef()
-#define ID3DXBuffer_Release(p)            (p)->Release()
-/*** ID3DXBuffer methods ***/
-#define ID3DXBuffer_GetBufferPointer(p)   (p)->GetBufferPointer()
-#define ID3DXBuffer_GetBufferSize(p)      (p)->GetBufferSize()
-#endif
-
-typedef struct _D3DXFONT_DESCA
-{
-    INT Height;
-    UINT Width;
-    UINT Weight;
-    UINT MipLevels;
-    BOOL Italic;
-    BYTE CharSet;
-    BYTE OutputPrecision;
-    BYTE Quality;
-    BYTE PitchAndFamily;
-    CHAR FaceName[LF_FACESIZE];
-} D3DXFONT_DESCA, *LPD3DXFONT_DESCA;
-
-typedef struct _D3DXFONT_DESCW
-{
-    INT Height;
-    UINT Width;
-    UINT Weight;
-    UINT MipLevels;
-    BOOL Italic;
-    BYTE CharSet;
-    BYTE OutputPrecision;
-    BYTE Quality;
-    BYTE PitchAndFamily;
-    WCHAR FaceName[LF_FACESIZE];
-} D3DXFONT_DESCW, *LPD3DXFONT_DESCW;
-
-DECL_WINELIB_TYPE_AW(D3DXFONT_DESC)
-DECL_WINELIB_TYPE_AW(LPD3DXFONT_DESC)
-
-#define INTERFACE ID3DXFont
-DECLARE_INTERFACE_(ID3DXFont, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXFont methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-    STDMETHOD(GetDescA)(THIS_ D3DXFONT_DESCA *desc) PURE;
-    STDMETHOD(GetDescW)(THIS_ D3DXFONT_DESCW *desc) PURE;
-    STDMETHOD_(BOOL, GetTextMetricsA)(THIS_ TEXTMETRICA *metrics) PURE;
-    STDMETHOD_(BOOL, GetTextMetricsW)(THIS_ TEXTMETRICW *metrics) PURE;
-
-    STDMETHOD_(HDC, GetDC)(THIS) PURE;
-    STDMETHOD(GetGlyphData)(THIS_ UINT glyph, LPDIRECT3DTEXTURE9 *texture, RECT *blackbox, POINT *cellinc) PURE;
-
-    STDMETHOD(PreloadCharacters)(THIS_ UINT first, UINT last) PURE;
-    STDMETHOD(PreloadGlyphs)(THIS_ UINT first, UINT last) PURE;
-    STDMETHOD(PreloadTextA)(THIS_ LPCSTR string, INT count) PURE;
-    STDMETHOD(PreloadTextW)(THIS_ LPCWSTR string, INT count) PURE;
-
-    STDMETHOD_(INT, DrawTextA)(THIS_ LPD3DXSPRITE sprite, LPCSTR string, INT count, LPRECT rect, DWORD format, D3DCOLOR color) PURE;
-    STDMETHOD_(INT, DrawTextW)(THIS_ LPD3DXSPRITE sprite, LPCWSTR string, INT count, LPRECT rect, DWORD format, D3DCOLOR color) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-
-/*** IUnknown methods ***/
-#define ID3DXFont_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXFont_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define ID3DXFont_Release(p)               (p)->lpVtbl->Release(p)
-/*** ID3DXFont methods ***/
-#define ID3DXFont_GetDevice(p,a)           (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXFont_GetDescA(p,a)            (p)->lpVtbl->GetDescA(p,a)
-#define ID3DXFont_GetDescW(p,a)            (p)->lpVtbl->GetDescW(p,a)
-#define ID3DXFont_GetTextMetricsA(p,a)     (p)->lpVtbl->GetTextMetricsA(p,a)
-#define ID3DXFont_GetTextMetricsW(p,a)     (p)->lpVtbl->GetTextMetricsW(p,a)
-#define ID3DXFont_GetDC(p)                 (p)->lpVtbl->GetDC(p)
-#define ID3DXFont_GetGlyphData(p,a,b,c,d)  (p)->lpVtbl->GetGlyphData(p,a,b,c,d)
-#define ID3DXFont_PreloadCharacters(p,a,b) (p)->lpVtbl->PreloadCharacters(p,a,b)
-#define ID3DXFont_PreloadGlyphs(p,a,b)     (p)->lpVtbl->PreloadGlyphs(p,a,b)
-#define ID3DXFont_PreloadTextA(p,a,b)      (p)->lpVtbl->PreloadTextA(p,a,b)
-#define ID3DXFont_PreloadTextW(p,a,b)      (p)->lpVtbl->PreloadTextW(p,a,b)
-#define ID3DXFont_DrawTextA(p,a,b,c,d,e,f) (p)->lpVtbl->DrawTextA(p,a,b,c,d,e,f)
-#define ID3DXFont_DrawTextW(p,a,b,c,d,e,f) (p)->lpVtbl->DrawTextW(p,a,b,c,d,e,f)
-#define ID3DXFont_OnLostDevice(p)          (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXFont_OnResetDevice(p)         (p)->lpVtbl->OnResetDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXFont_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define ID3DXFont_AddRef(p)                (p)->AddRef()
-#define ID3DXFont_Release(p)               (p)->Release()
-/*** ID3DXFont methods ***/
-#define ID3DXFont_GetDevice(p,a)           (p)->GetDevice(a)
-#define ID3DXFont_GetDescA(p,a)            (p)->GetDescA(a)
-#define ID3DXFont_GetDescW(p,a)            (p)->GetDescW(a)
-#define ID3DXFont_GetTextMetricsA(p,a)     (p)->GetTextMetricsA(a)
-#define ID3DXFont_GetTextMetricsW(p,a)     (p)->GetTextMetricsW(a)
-#define ID3DXFont_GetDC(p)                 (p)->GetDC()
-#define ID3DXFont_GetGlyphData(p,a,b,c,d)  (p)->GetGlyphData(a,b,c,d)
-#define ID3DXFont_PreloadCharacters(p,a,b) (p)->PreloadCharacters(a,b)
-#define ID3DXFont_PreloadGlyphs(p,a,b)     (p)->PreloadGlyphs(a,b)
-#define ID3DXFont_PreloadTextA(p,a,b)      (p)->PreloadTextA(a,b)
-#define ID3DXFont_PreloadTextW(p,a,b)      (p)->PreloadTextW(a,b)
-#define ID3DXFont_DrawTextA(p,a,b,c,d,e,f) (p)->DrawTextA(a,b,c,d,e,f)
-#define ID3DXFont_DrawTextW(p,a,b,c,d,e,f) (p)->DrawTextW(a,b,c,d,e,f)
-#define ID3DXFont_OnLostDevice(p)          (p)->OnLostDevice()
-#define ID3DXFont_OnResetDevice(p)         (p)->OnResetDevice()
-#endif
-#define ID3DXFont_DrawText       WINELIB_NAME_AW(ID3DXFont_DrawText)
-#define ID3DXFont_GetDesc        WINELIB_NAME_AW(ID3DXFont_GetDesc)
-#define ID3DXFont_GetTextMetrics WINELIB_NAME_AW(ID3DXFont_GetTextMetrics)
-#define ID3DXFont_PreloadText    WINELIB_NAME_AW(ID3DXFont_PreloadText)
-
-#define INTERFACE ID3DXLine
-DECLARE_INTERFACE_(ID3DXLine, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /*** ID3DXLine methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-
-    STDMETHOD(Begin)(THIS) PURE;
-    STDMETHOD(Draw)(THIS_ CONST D3DXVECTOR2 *vertexlist, DWORD vertexlistcount, D3DCOLOR color) PURE;
-    STDMETHOD(DrawTransform)(THIS_ CONST D3DXVECTOR3 *vertexlist, DWORD vertexlistcount,
-                             CONST D3DXMATRIX *transform, D3DCOLOR color) PURE;
-    STDMETHOD(SetPattern)(THIS_ DWORD pattern) PURE;
-    STDMETHOD_(DWORD, GetPattern)(THIS) PURE;
-    STDMETHOD(SetPatternScale)(THIS_ FLOAT scale) PURE;
-    STDMETHOD_(FLOAT, GetPatternScale)(THIS) PURE;
-    STDMETHOD(SetWidth)(THIS_ FLOAT width) PURE;
-    STDMETHOD_(FLOAT, GetWidth)(THIS) PURE;
-    STDMETHOD(SetAntialias)(THIS_ BOOL antialias) PURE;
-    STDMETHOD_(BOOL, GetAntialias)(THIS) PURE;
-    STDMETHOD(SetGLLines)(THIS_ BOOL gl_lines) PURE;
-    STDMETHOD_(BOOL, GetGLLines)(THIS) PURE;
-    STDMETHOD(End)(THIS) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXLine_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXLine_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define ID3DXLine_Release(p)               (p)->lpVtbl->Release(p)
-/*** ID3DXLine methods ***/
-#define ID3DXLine_GetDevice(p,a)           (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXLine_Begin(p)                 (p)->lpVtbl->Begin(p)
-#define ID3DXLine_Draw(p,a,b,c)            (p)->lpVtbl->Draw(p,a,b,c)
-#define ID3DXLine_DrawTransform(p,a,b,c,d) (p)->lpVtbl->DrawTransform(p,a,b,c,d)
-#define ID3DXLine_SetPattern(p,a)          (p)->lpVtbl->SetPattern(p,a)
-#define ID3DXLine_GetPattern(p)            (p)->lpVtbl->GetPattern(p)
-#define ID3DXLine_SetPatternScale(p,a)     (p)->lpVtbl->SetPatternScale(p,a)
-#define ID3DXLine_GetPatternScale(p)       (p)->lpVtbl->GetPatternScale(p)
-#define ID3DXLine_SetWidth(p,a)            (p)->lpVtbl->SetWidth(p,a)
-#define ID3DXLine_GetWidth(p)              (p)->lpVtbl->GetWidth(p)
-#define ID3DXLine_SetAntialias(p,a)        (p)->lpVtbl->SetAntialias(p,a)
-#define ID3DXLine_GetAntialias(p)          (p)->lpVtbl->GetAntialias(p)
-#define ID3DXLine_SetGLLines(p,a)          (p)->lpVtbl->SetGLLines(p,a)
-#define ID3DXLine_GetGLLines(p)            (p)->lpVtbl->GetGLLines(p)
-#define ID3DXLine_End(p)                   (p)->lpVtbl->End(p)
-#define ID3DXLine_OnLostDevice(p)          (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXLine_OnResetDevice(p)         (p)->lpVtbl->OnResetDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXLine_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define ID3DXLine_AddRef(p)                (p)->AddRef()
-#define ID3DXLine_Release(p)               (p)->Release()
-/*** ID3DXLine methods ***/
-#define ID3DXLine_GetDevice(p,a)           (p)->GetDevice(a)
-#define ID3DXLine_Begin(p)                 (p)->Begin()
-#define ID3DXLine_Draw(p,a,b,c)            (p)->Draw(a,b,c)
-#define ID3DXLine_DrawTransform(p,a,b,c,d) (p)->DrawTransform(a,b,c,d)
-#define ID3DXLine_SetPattern(p,a)          (p)->SetPattern(a)
-#define ID3DXLine_GetPattern(p)            (p)->GetPattern()
-#define ID3DXLine_SetPatternScale(p,a)     (p)->SetPatternScale(a)
-#define ID3DXLine_GetPatternScale(p)       (p)->GetPatternScale()
-#define ID3DXLine_SetWidth(p,a)            (p)->SetWidth(a)
-#define ID3DXLine_GetWidth(p)              (p)->GetWidth()
-#define ID3DXLine_SetAntialias(p,a)        (p)->SetAntialias(a)
-#define ID3DXLine_GetAntialias(p)          (p)->GetAntialias()
-#define ID3DXLine_SetGLLines(p,a)          (p)->SetGLLines(a)
-#define ID3DXLine_GetGLLines(p)            (p)->GetGLLines()
-#define ID3DXLine_End(p)                   (p)->End()
-#define ID3DXLine_OnLostDevice(p)          (p)->OnLostDevice()
-#define ID3DXLine_OnResetDevice(p)         (p)->OnResetDevice()
-#endif
-
-typedef struct _D3DXRTE_DESC
-{
-    UINT Size;
-    UINT MipLevels;
-    D3DFORMAT Format;
-    BOOL DepthStencil;
-    D3DFORMAT DepthStencilFormat;
-} D3DXRTE_DESC;
-
-#define INTERFACE ID3DXRenderToEnvMap
-DECLARE_INTERFACE_(ID3DXRenderToEnvMap, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /*** ID3DXRenderToEnvMap methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DXRTE_DESC *desc) PURE;
-
-    STDMETHOD(BeginCube)(THIS_ LPDIRECT3DCUBETEXTURE9 cubetex) PURE;
-    STDMETHOD(BeginSphere)(THIS_ LPDIRECT3DTEXTURE9 tex) PURE;
-    STDMETHOD(BeginHemisphere)(THIS_ LPDIRECT3DTEXTURE9 texzpos, LPDIRECT3DTEXTURE9 texzneg) PURE;
-    STDMETHOD(BeginParabolic)(THIS_ LPDIRECT3DTEXTURE9 texzpos, LPDIRECT3DTEXTURE9 texzneg) PURE;
-
-    STDMETHOD(Face)(THIS_ D3DCUBEMAP_FACES face, DWORD mipfilter) PURE;
-    STDMETHOD(End)(THIS_ DWORD mipfilter) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXRenderToEnvMap_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXRenderToEnvMap_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define ID3DXRenderToEnvMap_Release(p)             (p)->lpVtbl->Release(p)
-/*** ID3DXRenderToEnvMap methods ***/
-#define ID3DXRenderToEnvMap_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXRenderToEnvMap_GetDesc(p,a)           (p)->lpVtbl->GetDesc(p,a)
-#define ID3DXRenderToEnvMap_BeginCube(p,a)         (p)->lpVtbl->BeginCube(p,a)
-#define ID3DXRenderToEnvMap_BeginSphere(p,a)       (p)->lpVtbl->BeginSphere(p,a)
-#define ID3DXRenderToEnvMap_BeginHemisphere(p,a,b) (p)->lpVtbl->BeginHemisphere(p,a,b)
-#define ID3DXRenderToEnvMap_BeginParabolic(p,a,b)  (p)->lpVtbl->BeginParabolic(p,a,b)
-#define ID3DXRenderToEnvMap_Face(p,a,b)            (p)->lpVtbl->Face(p,a,b)
-#define ID3DXRenderToEnvMap_End(p,a)               (p)->lpVtbl->End(p,a)
-#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->lpVtbl->OnLostDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXRenderToEnvMap_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define ID3DXRenderToEnvMap_AddRef(p)              (p)->AddRef()
-#define ID3DXRenderToEnvMap_Release(p)             (p)->Release()
-/*** ID3DXRenderToEnvMap methods ***/
-#define ID3DXRenderToEnvMap_GetDevice(p,a)         (p)->GetDevice(a)
-#define ID3DXRenderToEnvMap_GetDesc(p,a)           (p)->GetDesc(a)
-#define ID3DXRenderToEnvMap_BeginCube(p,a)         (p)->BeginCube(a)
-#define ID3DXRenderToEnvMap_BeginSphere(p,a)       (p)->BeginSphere(a)
-#define ID3DXRenderToEnvMap_BeginHemisphere(p,a,b) (p)->BeginHemisphere(a,b)
-#define ID3DXRenderToEnvMap_BeginParabolic(p,a,b)  (p)->BeginParabolic(a,b)
-#define ID3DXRenderToEnvMap_Face(p,a,b)            (p)->Face(a,b)
-#define ID3DXRenderToEnvMap_End(p,a)               (p)->End(a)
-#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->OnLostDevice()
-#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->OnLostDevice()
-#endif
-
-typedef struct _D3DXRTS_DESC
-{
-    UINT Width;
-    UINT Height;
-    D3DFORMAT Format;
-    BOOL DepthStencil;
-    D3DFORMAT DepthStencilFormat;
-} D3DXRTS_DESC;
-
-#define INTERFACE ID3DXRenderToSurface
-DECLARE_INTERFACE_(ID3DXRenderToSurface, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXRenderToSurface methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DXRTS_DESC *desc) PURE;
-
-    STDMETHOD(BeginScene)(THIS_ LPDIRECT3DSURFACE9 surface, CONST D3DVIEWPORT9 *viewport) PURE;
-    STDMETHOD(EndScene)(THIS_ DWORD mipfilter) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXRenderToSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXRenderToSurface_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define ID3DXRenderToSurface_Release(p)            (p)->lpVtbl->Release(p)
-/*** ID3DXRenderToSurface methods ***/
-#define ID3DXRenderToSurface_GetDevice(p,a)        (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXRenderToSurface_GetDesc(p,a)          (p)->lpVtbl->GetDesc(p,a)
-#define ID3DXRenderToSurface_BeginScene(p,a,b)     (p)->lpVtbl->BeginScene(p,a,b)
-#define ID3DXRenderToSurface_EndScene(p,a)         (p)->lpVtbl->EndScene(p,a)
-#define ID3DXRenderToSurface_OnLostDevice(p)       (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXRenderToSurface_OnResetDevice(p)      (p)->lpVtbl->OnResetDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXRenderToSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define ID3DXRenderToSurface_AddRef(p)             (p)->AddRef()
-#define ID3DXRenderToSurface_Release(p)            (p)->Release()
-/*** ID3DXRenderToSurface methods ***/
-#define ID3DXRenderToSurface_GetDevice(p,a)        (p)->GetDevice(a)
-#define ID3DXRenderToSurface_GetDesc(p,a)          (p)->GetDesc(a)
-#define ID3DXRenderToSurface_BeginScene(p,a,b)     (p)->BeginScene(a,b)
-#define ID3DXRenderToSurface_EndScene(p,a)         (p)->EndScene(a)
-#define ID3DXRenderToSurface_OnLostDevice(p)       (p)->OnLostDevice()
-#define ID3DXRenderToSurface_OnResetDevice(p)      (p)->OnResetDevice()
-#endif
-
-#define INTERFACE ID3DXSprite
-DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXSprite methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-
-    STDMETHOD(GetTransform)(THIS_ D3DXMATRIX *transform) PURE;
-    STDMETHOD(SetTransform)(THIS_ CONST D3DXMATRIX *transform) PURE;
-    STDMETHOD(SetWorldViewRH)(THIS_ CONST D3DXMATRIX *world, CONST D3DXMATRIX *view) PURE;
-    STDMETHOD(SetWorldViewLH)(THIS_ CONST D3DXMATRIX *world, CONST D3DXMATRIX *view) PURE;
-
-    STDMETHOD(Begin)(THIS_ DWORD flags) PURE;
-    STDMETHOD(Draw)(THIS_ LPDIRECT3DTEXTURE9 texture, CONST RECT *rect, CONST D3DXVECTOR3 *center, CONST D3DXVECTOR3 *position, D3DCOLOR color) PURE;
-    STDMETHOD(Flush)(THIS) PURE;
-    STDMETHOD(End)(THIS) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXSprite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXSprite_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define ID3DXSprite_Release(p)            (p)->lpVtbl->Release(p)
-/*** ID3DXSprite methods ***/
-#define ID3DXSprite_GetDevice(p,a)        (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXSprite_GetTransform(p,a)     (p)->lpVtbl->GetTransform(p,a)
-#define ID3DXSprite_SetTransform(p,a)     (p)->lpVtbl->SetTransform(p,a)
-#define ID3DXSprite_SetWorldViewRH(p,a,b) (p)->lpVtbl->SetWorldViewRH(p,a,b)
-#define ID3DXSprite_SetWorldViewLH(p,a,b) (p)->lpVtbl->SetWorldViewLH(p,a,b)
-#define ID3DXSprite_Begin(p,a)            (p)->lpVtbl->Begin(p,a)
-#define ID3DXSprite_Draw(p,a,b,c,d,e)     (p)->lpVtbl->Draw(p,a,b,c,d,e)
-#define ID3DXSprite_Flush(p)              (p)->lpVtbl->Flush(p)
-#define ID3DXSprite_End(p)                (p)->lpVtbl->End(p)
-#define ID3DXSprite_OnLostDevice(p)       (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXSprite_OnResetDevice(p)      (p)->lpVtbl->OnResetDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXSprite_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define ID3DXSprite_AddRef(p)                (p)->AddRef()
-#define ID3DXSprite_Release(p)               (p)->Release()
-/*** ID3DXSprite methods ***/
-#define ID3DXSprite_GetDevice(p,a)        (p)->GetDevice(a)
-#define ID3DXSprite_GetTransform(p,a)     (p)->GetTransform(a)
-#define ID3DXSprite_SetTransform(p,a)     (p)->SetTransform(a)
-#define ID3DXSprite_SetWorldViewRH(p,a,b) (p)->SetWorldViewRH(a,b)
-#define ID3DXSprite_SetWorldViewLH(p,a,b) (p)->SetWorldViewLH(a,b)
-#define ID3DXSprite_Begin(p,a)            (p)->Begin(a)
-#define ID3DXSprite_Draw(p,a,b,c,d,e)     (p)->Draw(a,b,c,d,e)
-#define ID3DXSprite_Flush(p)              (p)->Flush()
-#define ID3DXSprite_End(p)                (p)->End()
-#define ID3DXSprite_OnLostDevice(p)       (p)->OnLostDevice()
-#define ID3DXSprite_OnResetDevice(p)      (p)->OnResetDevice()
-#endif
-
-/**********************************************
- ****************** functions *****************
- **********************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-BOOL    WINAPI D3DXCheckVersion(UINT d3dsdkvers, UINT d3dxsdkvers);
-HRESULT WINAPI D3DXCreateFontA(LPDIRECT3DDEVICE9 device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset,
-                               DWORD precision, DWORD quality, DWORD pitchandfamily, LPCSTR facename, LPD3DXFONT *font);
-HRESULT WINAPI D3DXCreateFontW(LPDIRECT3DDEVICE9 device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset,
-                               DWORD precision, DWORD quality, DWORD pitchandfamily, LPCWSTR facename, LPD3DXFONT *font);
-#define        D3DXCreateFont WINELIB_NAME_AW(D3DXCreateFont)
-HRESULT WINAPI D3DXCreateFontIndirectA(LPDIRECT3DDEVICE9 device, CONST D3DXFONT_DESCA *desc, LPD3DXFONT *font);
-HRESULT WINAPI D3DXCreateFontIndirectW(LPDIRECT3DDEVICE9 device, CONST D3DXFONT_DESCW *desc, LPD3DXFONT *font);
-#define        D3DXCreateFontIndirect WINELIB_NAME_AW(D3DXCreateFontIndirect)
-HRESULT WINAPI D3DXCreateLine(LPDIRECT3DDEVICE9 device, LPD3DXLINE *line);
-HRESULT WINAPI D3DXCreateRenderToEnvMap(LPDIRECT3DDEVICE9 device, UINT size, UINT miplevels, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, LPD3DXRenderToEnvMap *rtem);
-HRESULT WINAPI D3DXCreateRenderToSurface(LPDIRECT3DDEVICE9 device, UINT width, UINT height, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, LPD3DXRENDERTOSURFACE *rts);
-HRESULT WINAPI D3DXCreateSprite(LPDIRECT3DDEVICE9 device, LPD3DXSPRITE *sprite);
-BOOL    WINAPI D3DXDebugMute(BOOL mute);
-UINT    WINAPI D3DXGetDriverLevel(LPDIRECT3DDEVICE9 device);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WINE_D3DX9CORE_H */
diff --git a/misc/builddeps/win32/dx/include/d3dx9effect.h b/misc/builddeps/win32/dx/include/d3dx9effect.h
deleted file mode 100644 (file)
index 3bb2878..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * Copyright 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <d3dx9.h>
-
-#ifndef __D3DX9EFFECT_H__
-#define __D3DX9EFFECT_H__
-
-typedef struct _D3DXEFFECT_DESC {
-    LPCSTR Creator;
-    UINT Parameters;
-    UINT Techniques;
-    UINT Functions;
-} D3DXEFFECT_DESC;
-
-typedef struct _D3DXPARAMETER_DESC {
-    LPCSTR Name;
-    LPCSTR Semantic;
-    D3DXPARAMETER_CLASS Class;
-    D3DXPARAMETER_TYPE Type;
-    UINT Rows;
-    UINT Columns;
-    UINT Elements;
-    UINT Annotations;
-    UINT StructMembers;
-    DWORD Flags;
-    UINT Bytes;
-} D3DXPARAMETER_DESC;
-
-typedef struct _D3DXTECHNIQUE_DESC {
-    LPCSTR Name;
-    UINT Passes;
-    UINT Annotations;
-} D3DXTECHNIQUE_DESC;
-
-typedef struct _D3DXPASS_DESC {
-    LPCSTR Name;
-    UINT Annotations;
-    CONST DWORD *pVertexShaderFunction;
-    CONST DWORD *pPixelShaderFunction;
-} D3DXPASS_DESC;
-
-typedef struct _D3DXFUNCTION_DESC {
-    LPCSTR Name;
-    UINT Annotations;
-} D3DXFUNCTION_DESC;
-
-typedef struct ID3DXEffectPool *LPD3DXEFFECTPOOL;
-
-DEFINE_GUID(IID_ID3DXEffectPool, 0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
-
-#undef INTERFACE
-#define INTERFACE ID3DXEffectPool
-
-DECLARE_INTERFACE_(ID3DXEffectPool, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-};
-
-typedef struct ID3DXBaseEffect *LPD3DXBASEEFFECT;
-
-DEFINE_GUID(IID_ID3DXBaseEffect, 0x17c18ac, 0x103f, 0x4417, 0x8c, 0x51, 0x6b, 0xf6, 0xef, 0x1e, 0x56, 0xbe);
-
-#undef INTERFACE
-#define INTERFACE ID3DXBaseEffect
-
-DECLARE_INTERFACE_(ID3DXBaseEffect, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseEffect methods ***/
-    STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* desc) PURE;
-    STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE parameter, D3DXPARAMETER_DESC* desc) PURE;
-    STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE technique, D3DXTECHNIQUE_DESC* desc) PURE;
-    STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE pass, D3DXPASS_DESC* desc) PURE;
-    STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE shader, D3DXFUNCTION_DESC* desc) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE parameter, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE parameter, LPCSTR semantic) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE technique, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE technique, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT index);
-    STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR name);
-    STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE object, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE object, LPCSTR name) PURE;
-    STDMETHOD(SetValue)(THIS_ D3DXHANDLE parameter, LPCVOID data, UINT bytes) PURE;
-    STDMETHOD(GetValue)(THIS_ D3DXHANDLE parameter, LPVOID data, UINT bytes) PURE;
-    STDMETHOD(SetBool)(THIS_ D3DXHANDLE parameter, BOOL b) PURE;
-    STDMETHOD(GetBool)(THIS_ D3DXHANDLE parameter, BOOL* b) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE parameter, CONST BOOL* b, UINT count) PURE;
-    STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE parameter, BOOL* b, UINT count) PURE;
-    STDMETHOD(SetInt)(THIS_ D3DXHANDLE parameter, INT n) PURE;
-    STDMETHOD(GetInt)(THIS_ D3DXHANDLE parameter, INT* n) PURE;
-    STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE parameter, CONST INT* n, UINT count) PURE;
-    STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE parameter, INT* n, UINT count) PURE;
-    STDMETHOD(SetFloat)(THIS_ D3DXHANDLE parameter, FLOAT f) PURE;
-    STDMETHOD(GetFloat)(THIS_ D3DXHANDLE parameter, FLOAT* f) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE parameter, CONST FLOAT* f, UINT count) PURE;
-    STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE parameter, FLOAT* f, UINT count) PURE;
-    STDMETHOD(SetVector)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector) PURE;
-    STDMETHOD(GetVector)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector) PURE;
-    STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetString)(THIS_ D3DXHANDLE parameter, LPCSTR string) PURE;
-    STDMETHOD(GetString)(THIS_ D3DXHANDLE parameter, LPCSTR* string) PURE;
-    STDMETHOD(SetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9 texture) PURE;
-    STDMETHOD(GetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9* texture) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9 pshader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9* pshader) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9 vshader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9* vshader) PURE;
-    STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE parameter, UINT start, UINT end) PURE;
-};
-
-typedef struct ID3DXEffectStateManager *LPD3DXEFFECTSTATEMANAGER;
-
-DEFINE_GUID(IID_ID3DXEffectStateManager, 0x79aab587, 0x6dbc, 0x4fa7, 0x82, 0xde, 0x37, 0xfa, 0x17, 0x81, 0xc5, 0xce);
-
-#undef INTERFACE
-#define INTERFACE ID3DXEffectStateManager
-
-DECLARE_INTERFACE_(ID3DXEffectStateManager, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXEffectStateManager methods ***/
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE state, CONST D3DMATRIX* matrix) PURE;
-    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* material) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD index, CONST D3DLIGHT9* light) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD index, BOOL enable) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE state, DWORD value) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD stage, LPDIRECT3DBASETEXTURE9 texture) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD stage, D3DTEXTURESTAGESTATETYPE type, DWORD value) PURE;
-    STDMETHOD(SetSamplerState)(THIS_ DWORD sampler, D3DSAMPLERSTATETYPE type, DWORD value) PURE;
-    STDMETHOD(SetNPatchMode)(THIS_ FLOAT num_segments) PURE;
-    STDMETHOD(SetFVF)(THIS_ DWORD format) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ LPDIRECT3DVERTEXSHADER9 shader) PURE;
-    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT register_index, CONST FLOAT* constant_data, UINT register_count) PURE;
-    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT register_index, CONST INT* constant_data, UINT register_count) PURE;
-    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT register_index, CONST BOOL* constant_data, UINT register_count) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ LPDIRECT3DPIXELSHADER9 shader) PURE;
-    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT register_index, CONST FLOAT* constant_data, UINT register_count) PURE;
-    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT register_index, CONST INT * constant_data, UINT register_count) PURE;
-    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT register_index, CONST BOOL* constant_data, UINT register_count) PURE;
-};
-
-typedef struct ID3DXEffect *LPD3DXEFFECT;
-
-DEFINE_GUID(IID_ID3DXEffect, 0xf6ceb4b3, 0x4e4c, 0x40dd, 0xb8, 0x83, 0x8d, 0x8d, 0xe5, 0xea, 0xc, 0xd5);
-
-#undef INTERFACE
-#define INTERFACE ID3DXEffect
-
-DECLARE_INTERFACE_(ID3DXEffect, ID3DXBaseEffect)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseEffect methods ***/
-    STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* desc) PURE;
-    STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE parameter, D3DXPARAMETER_DESC* desc) PURE;
-    STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE technique, D3DXTECHNIQUE_DESC* desc) PURE;
-    STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE pass, D3DXPASS_DESC* desc) PURE;
-    STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE shader, D3DXFUNCTION_DESC* desc) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE parameter, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE parameter, LPCSTR semantic) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE technique, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE technique, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT index);
-    STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR name);
-    STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE object, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE object, LPCSTR name) PURE;
-    STDMETHOD(SetValue)(THIS_ D3DXHANDLE parameter, LPCVOID data, UINT bytes) PURE;
-    STDMETHOD(GetValue)(THIS_ D3DXHANDLE parameter, LPVOID data, UINT bytes) PURE;
-    STDMETHOD(SetBool)(THIS_ D3DXHANDLE parameter, BOOL b) PURE;
-    STDMETHOD(GetBool)(THIS_ D3DXHANDLE parameter, BOOL* b) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE parameter, CONST BOOL* b, UINT count) PURE;
-    STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE parameter, BOOL* b, UINT count) PURE;
-    STDMETHOD(SetInt)(THIS_ D3DXHANDLE parameter, INT n) PURE;
-    STDMETHOD(GetInt)(THIS_ D3DXHANDLE parameter, INT* n) PURE;
-    STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE parameter, CONST INT* n, UINT count) PURE;
-    STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE parameter, INT* n, UINT count) PURE;
-    STDMETHOD(SetFloat)(THIS_ D3DXHANDLE parameter, FLOAT f) PURE;
-    STDMETHOD(GetFloat)(THIS_ D3DXHANDLE parameter, FLOAT* f) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE parameter, CONST FLOAT* f, UINT count) PURE;
-    STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE parameter, FLOAT* f, UINT count) PURE;
-    STDMETHOD(SetVector)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector) PURE;
-    STDMETHOD(GetVector)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector) PURE;
-    STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetString)(THIS_ D3DXHANDLE parameter, LPCSTR string) PURE;
-    STDMETHOD(GetString)(THIS_ D3DXHANDLE parameter, LPCSTR* string) PURE;
-    STDMETHOD(SetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9 texture) PURE;
-    STDMETHOD(GetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9* texture) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9* pshader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9* vshader) PURE;
-    STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE parameter, UINT start, UINT end) PURE;
-    /*** ID3DXEffect methods ***/
-    STDMETHOD(GetPool)(THIS_ LPD3DXEFFECTPOOL* pool) PURE;
-    STDMETHOD(SetTechnique)(THIS_ D3DXHANDLE technique) PURE;
-    STDMETHOD_(D3DXHANDLE, GetCurrentTechnique)(THIS) PURE;
-    STDMETHOD(ValidateTechnique)(THIS_ D3DXHANDLE technique) PURE;
-    STDMETHOD(FindNextValidTechnique)(THIS_ D3DXHANDLE technique, D3DXHANDLE* next_technique) PURE;
-    STDMETHOD_(BOOL, IsParameterUsed)(THIS_ D3DXHANDLE parameter, D3DXHANDLE technique) PURE;
-    STDMETHOD(Begin)(THIS_ UINT *passes, DWORD flags) PURE;
-    STDMETHOD(BeginPass)(THIS_ UINT pass) PURE;
-    STDMETHOD(CommitChanges)(THIS) PURE;
-    STDMETHOD(EndPass)(THIS) PURE;
-    STDMETHOD(End)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-    STDMETHOD(SetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER manager) PURE;
-    STDMETHOD(GetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER* manager) PURE;
-    STDMETHOD(BeginParameterBlock)(THIS) PURE;
-    STDMETHOD_(D3DXHANDLE, EndParameterBlock)(THIS) PURE;
-    STDMETHOD(ApplyParameterBlock)(THIS_ D3DXHANDLE parameter_block) PURE;
-    STDMETHOD(DeleteParameterBlock)(THIS_ D3DXHANDLE parameter_block) PURE;
-    STDMETHOD(CloneEffect)(THIS_ LPDIRECT3DDEVICE9 device, LPD3DXEFFECT* effect) PURE;
-    STDMETHOD(SetRawValue)(THIS_ D3DXHANDLE parameter, LPCVOID data, UINT byte_offset, UINT bytes) PURE;
-};
-
-typedef struct ID3DXEffectCompiler *LPD3DXEFFECTCOMPILER;
-
-DEFINE_GUID(IID_ID3DXEffectCompiler, 0x51b8a949, 0x1a31, 0x47e6, 0xbe, 0xa0, 0x4b, 0x30, 0xdb, 0x53, 0xf1, 0xe0);
-
-#undef INTERFACE
-#define INTERFACE ID3DXEffectCompiler
-
-DECLARE_INTERFACE_(ID3DXEffectCompiler, ID3DXBaseEffect)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseEffect methods ***/
-    STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* desc) PURE;
-    STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE parameter, D3DXPARAMETER_DESC* desc) PURE;
-    STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE technique, D3DXTECHNIQUE_DESC* desc) PURE;
-    STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE pass, D3DXPASS_DESC* desc) PURE;
-    STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE shader, D3DXFUNCTION_DESC* desc) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE parameter, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE parameter, LPCSTR semantic) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE technique, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE technique, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT index);
-    STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR name);
-    STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE object, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE object, LPCSTR name) PURE;
-    STDMETHOD(SetValue)(THIS_ D3DXHANDLE parameter, LPCVOID data, UINT bytes) PURE;
-    STDMETHOD(GetValue)(THIS_ D3DXHANDLE parameter, LPVOID data, UINT bytes) PURE;
-    STDMETHOD(SetBool)(THIS_ D3DXHANDLE parameter, BOOL b) PURE;
-    STDMETHOD(GetBool)(THIS_ D3DXHANDLE parameter, BOOL* b) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE parameter, CONST BOOL* b, UINT count) PURE;
-    STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE parameter, BOOL* b, UINT count) PURE;
-    STDMETHOD(SetInt)(THIS_ D3DXHANDLE parameter, INT n) PURE;
-    STDMETHOD(GetInt)(THIS_ D3DXHANDLE parameter, INT* n) PURE;
-    STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE parameter, CONST INT* n, UINT count) PURE;
-    STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE parameter, INT* n, UINT count) PURE;
-    STDMETHOD(SetFloat)(THIS_ D3DXHANDLE parameter, FLOAT f) PURE;
-    STDMETHOD(GetFloat)(THIS_ D3DXHANDLE parameter, FLOAT* f) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE parameter, CONST FLOAT* f, UINT count) PURE;
-    STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE parameter, FLOAT* f, UINT count) PURE;
-    STDMETHOD(SetVector)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector) PURE;
-    STDMETHOD(GetVector)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector) PURE;
-    STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetString)(THIS_ D3DXHANDLE parameter, LPCSTR string) PURE;
-    STDMETHOD(GetString)(THIS_ D3DXHANDLE parameter, LPCSTR* string) PURE;
-    STDMETHOD(SetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9 texture) PURE;
-    STDMETHOD(GetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9* texture) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9 pshader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9* pshader) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9 vshader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9* vshader) PURE;
-    STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE parameter, UINT start, UINT end) PURE;
-    /*** ID3DXEffectCompiler methods ***/
-    STDMETHOD(SetLiteral)(THIS_ D3DXHANDLE parameter, BOOL literal) PURE;
-    STDMETHOD(GetLiteral)(THIS_ D3DXHANDLE parameter, BOOL* literal) PURE;
-    STDMETHOD(CompileEffect)(THIS_ DWORD flags, LPD3DXBUFFER* effect, LPD3DXBUFFER* error_msgs) PURE;
-    STDMETHOD(CompileShader)(THIS_ D3DXHANDLE function, LPCSTR target, DWORD flags, LPD3DXBUFFER* shader,
-        LPD3DXBUFFER* error_msgs, LPD3DXCONSTANTTABLE* constant_table) PURE;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3DXCreateEffectPool(LPD3DXEFFECTPOOL* pool);
-
-HRESULT WINAPI D3DXCreateEffect(LPDIRECT3DDEVICE9 device,
-                                LPCVOID srcdata,
-                                UINT srcdatalen,
-                                CONST D3DXMACRO* defines,
-                                LPD3DXINCLUDE include,
-                                DWORD flags,
-                                LPD3DXEFFECTPOOL pool,
-                                LPD3DXEFFECT* effect,
-                                LPD3DXBUFFER* compilation_errors);
-
-HRESULT WINAPI D3DXCreateEffectEx(LPDIRECT3DDEVICE9 device,
-                                  LPCVOID srcdata,
-                                  UINT srcdatalen,
-                                  CONST D3DXMACRO* defines,
-                                  LPD3DXINCLUDE include,
-                                  LPCSTR skip_constants,
-                                  DWORD flags,
-                                  LPD3DXEFFECTPOOL pool,
-                                  LPD3DXEFFECT* effect,
-                                  LPD3DXBUFFER* compilation_errors);
-
-HRESULT WINAPI D3DXCreateEffectCompiler(LPCSTR srcdata,
-                                        UINT srcdatalen,
-                                        CONST D3DXMACRO* defines,
-                                        LPD3DXINCLUDE include,
-                                        DWORD flags,
-                                        LPD3DXEFFECTCOMPILER* compiler,
-                                        LPD3DXBUFFER* parse_errors);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __D3DX9EFFECT_H__ */
diff --git a/misc/builddeps/win32/dx/include/d3dx9math.h b/misc/builddeps/win32/dx/include/d3dx9math.h
deleted file mode 100644 (file)
index f842e3e..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * Copyright (C) 2007 David Adam
- * Copyright (C) 2007 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <d3dx9.h>
-
-#ifndef __D3DX9MATH_H__
-#define __D3DX9MATH_H__
-
-#include <math.h>
-
-#define D3DX_PI    ((FLOAT)3.141592654)
-#define D3DX_1BYPI ((FLOAT)0.318309886)
-
-#define D3DXToRadian(degree) ((degree) * (D3DX_PI / 180.0f))
-#define D3DXToDegree(radian) ((radian) * (180.0f / D3DX_PI))
-
-
-
-typedef struct D3DXVECTOR2
-{
-#ifdef __cplusplus
-    D3DXVECTOR2();
-    D3DXVECTOR2(CONST FLOAT *pf);
-    D3DXVECTOR2(FLOAT fx, FLOAT fy);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXVECTOR2& operator += (CONST D3DXVECTOR2&);
-    D3DXVECTOR2& operator -= (CONST D3DXVECTOR2&);
-    D3DXVECTOR2& operator *= (FLOAT);
-    D3DXVECTOR2& operator /= (FLOAT);
-
-    D3DXVECTOR2 operator + () const;
-    D3DXVECTOR2 operator - () const;
-
-    D3DXVECTOR2 operator + (CONST D3DXVECTOR2&) const;
-    D3DXVECTOR2 operator - (CONST D3DXVECTOR2&) const;
-    D3DXVECTOR2 operator * (FLOAT) const;
-    D3DXVECTOR2 operator / (FLOAT) const;
-
-    friend D3DXVECTOR2 operator * (FLOAT, CONST D3DXVECTOR2&);
-
-    BOOL operator == (CONST D3DXVECTOR2&) const;
-    BOOL operator != (CONST D3DXVECTOR2&) const;
-#endif /* __cplusplus */
-    FLOAT x, y;
-} D3DXVECTOR2, *LPD3DXVECTOR2;
-
-#ifdef __cplusplus
-typedef struct D3DXVECTOR3 : public D3DVECTOR
-{
-    D3DXVECTOR3();
-    D3DXVECTOR3(CONST FLOAT *pf);
-    D3DXVECTOR3(CONST D3DVECTOR& v);
-    D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXVECTOR3& operator += (CONST D3DXVECTOR3&);
-    D3DXVECTOR3& operator -= (CONST D3DXVECTOR3&);
-    D3DXVECTOR3& operator *= (FLOAT);
-    D3DXVECTOR3& operator /= (FLOAT);
-
-    D3DXVECTOR3 operator + () const;
-    D3DXVECTOR3 operator - () const;
-
-    D3DXVECTOR3 operator + (CONST D3DXVECTOR3&) const;
-    D3DXVECTOR3 operator - (CONST D3DXVECTOR3&) const;
-    D3DXVECTOR3 operator * (FLOAT) const;
-    D3DXVECTOR3 operator / (FLOAT) const;
-
-    friend D3DXVECTOR3 operator * (FLOAT, CONST struct D3DXVECTOR3&);
-
-    BOOL operator == (CONST D3DXVECTOR3&) const;
-    BOOL operator != (CONST D3DXVECTOR3&) const;
-} D3DXVECTOR3, *LPD3DXVECTOR3;
-#else /* !__cplusplus */
-typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3;
-#endif /* !__cplusplus */
-
-typedef struct D3DXVECTOR4
-{
-#ifdef __cplusplus
-    D3DXVECTOR4();
-    D3DXVECTOR4(CONST FLOAT *pf);
-    D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXVECTOR4& operator += (CONST D3DXVECTOR4&);
-    D3DXVECTOR4& operator -= (CONST D3DXVECTOR4&);
-    D3DXVECTOR4& operator *= (FLOAT);
-    D3DXVECTOR4& operator /= (FLOAT);
-
-    D3DXVECTOR4 operator + () const;
-    D3DXVECTOR4 operator - () const;
-
-    D3DXVECTOR4 operator + (CONST D3DXVECTOR4&) const;
-    D3DXVECTOR4 operator - (CONST D3DXVECTOR4&) const;
-    D3DXVECTOR4 operator * (FLOAT) const;
-    D3DXVECTOR4 operator / (FLOAT) const;
-
-    friend D3DXVECTOR4 operator * (FLOAT, CONST D3DXVECTOR4&);
-
-    BOOL operator == (CONST D3DXVECTOR4&) const;
-    BOOL operator != (CONST D3DXVECTOR4&) const;
-#endif /* __cplusplus */
-    FLOAT x, y, z, w;
-} D3DXVECTOR4, *LPD3DXVECTOR4;
-
-#ifdef __cplusplus
-typedef struct D3DXMATRIX : public D3DMATRIX
-{
-    D3DXMATRIX();
-    D3DXMATRIX(CONST FLOAT *pf);
-    D3DXMATRIX(CONST D3DMATRIX& mat);
-    D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
-               FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
-               FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
-               FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44);
-
-    FLOAT& operator () (UINT row, UINT col);
-    FLOAT operator () (UINT row, UINT col) const;
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXMATRIX& operator *= (CONST D3DXMATRIX&);
-    D3DXMATRIX& operator += (CONST D3DXMATRIX&);
-    D3DXMATRIX& operator -= (CONST D3DXMATRIX&);
-    D3DXMATRIX& operator *= (FLOAT);
-    D3DXMATRIX& operator /= (FLOAT);
-
-    D3DXMATRIX operator + () const;
-    D3DXMATRIX operator - () const;
-
-    D3DXMATRIX operator * (CONST D3DXMATRIX&) const;
-    D3DXMATRIX operator + (CONST D3DXMATRIX&) const;
-    D3DXMATRIX operator - (CONST D3DXMATRIX&) const;
-    D3DXMATRIX operator * (FLOAT) const;
-    D3DXMATRIX operator / (FLOAT) const;
-
-    friend D3DXMATRIX operator * (FLOAT, CONST D3DXMATRIX&);
-
-    BOOL operator == (CONST D3DXMATRIX&) const;
-    BOOL operator != (CONST D3DXMATRIX&) const;
-} D3DXMATRIX, *LPD3DXMATRIX;
-#else /* !__cplusplus */
-typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX;
-#endif /* !__cplusplus */
-
-typedef struct D3DXQUATERNION
-{
-#ifdef __cplusplus
-    D3DXQUATERNION();
-    D3DXQUATERNION(CONST FLOAT *pf);
-    D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXQUATERNION& operator += (CONST D3DXQUATERNION&);
-    D3DXQUATERNION& operator -= (CONST D3DXQUATERNION&);
-    D3DXQUATERNION& operator *= (CONST D3DXQUATERNION&);
-    D3DXQUATERNION& operator *= (FLOAT);
-    D3DXQUATERNION& operator /= (FLOAT);
-
-    D3DXQUATERNION  operator + () const;
-    D3DXQUATERNION  operator - () const;
-
-    D3DXQUATERNION operator + (CONST D3DXQUATERNION&) const;
-    D3DXQUATERNION operator - (CONST D3DXQUATERNION&) const;
-    D3DXQUATERNION operator * (CONST D3DXQUATERNION&) const;
-    D3DXQUATERNION operator * (FLOAT) const;
-    D3DXQUATERNION operator / (FLOAT) const;
-
-    friend D3DXQUATERNION operator * (FLOAT, CONST D3DXQUATERNION&);
-
-    BOOL operator == (CONST D3DXQUATERNION&) const;
-    BOOL operator != (CONST D3DXQUATERNION&) const;
-#endif /* __cplusplus */
-    FLOAT x, y, z, w;
-} D3DXQUATERNION, *LPD3DXQUATERNION;
-
-typedef struct D3DXPLANE
-{
-#ifdef __cplusplus
-    D3DXPLANE();
-    D3DXPLANE(CONST FLOAT *pf);
-    D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXPLANE operator + () const;
-    D3DXPLANE operator - () const;
-
-    BOOL operator == (CONST D3DXPLANE&) const;
-    BOOL operator != (CONST D3DXPLANE&) const;
-#endif /* __cplusplus */
-    FLOAT a, b, c, d;
-} D3DXPLANE, *LPD3DXPLANE;
-
-typedef struct D3DXCOLOR
-{
-#ifdef __cplusplus
-    D3DXCOLOR();
-    D3DXCOLOR(DWORD col);
-    D3DXCOLOR(CONST FLOAT *pf);
-    D3DXCOLOR(CONST D3DCOLORVALUE& col);
-    D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa);
-
-    operator DWORD () const;
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    operator D3DCOLORVALUE* ();
-    operator CONST D3DCOLORVALUE* () const;
-
-    operator D3DCOLORVALUE& ();
-    operator CONST D3DCOLORVALUE& () const;
-
-    D3DXCOLOR& operator += (CONST D3DXCOLOR&);
-    D3DXCOLOR& operator -= (CONST D3DXCOLOR&);
-    D3DXCOLOR& operator *= (FLOAT);
-    D3DXCOLOR& operator /= (FLOAT);
-
-    D3DXCOLOR operator + () const;
-    D3DXCOLOR operator - () const;
-
-    D3DXCOLOR operator + (CONST D3DXCOLOR&) const;
-    D3DXCOLOR operator - (CONST D3DXCOLOR&) const;
-    D3DXCOLOR operator * (FLOAT) const;
-    D3DXCOLOR operator / (FLOAT) const;
-
-    friend D3DXCOLOR operator * (FLOAT, CONST D3DXCOLOR&);
-
-    BOOL operator == (CONST D3DXCOLOR&) const;
-    BOOL operator != (CONST D3DXCOLOR&) const;
-#endif /* __cplusplus */
-    FLOAT r, g, b, a;
-} D3DXCOLOR, *LPD3DXCOLOR;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-D3DXCOLOR* WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s);
-D3DXCOLOR* WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s);
-
-FLOAT WINAPI D3DXFresnelTerm(FLOAT costheta, FLOAT refractionindex);
-
-D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *pout, FLOAT scaling, CONST D3DXVECTOR3 *rotationcenter, CONST D3DXQUATERNION *rotation, CONST D3DXVECTOR3 *translation);
-D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *pout, FLOAT scaling, CONST D3DXVECTOR2 *protationcenter, FLOAT rotation, CONST D3DXVECTOR2 *ptranslation);
-HRESULT WINAPI D3DXMatrixDecompose(D3DXVECTOR3 *poutscale, D3DXQUATERNION *poutrotation, D3DXVECTOR3 *pouttranslation, CONST D3DXMATRIX *pm);
-FLOAT WINAPI D3DXMatrixDeterminant(CONST D3DXMATRIX *pm);
-D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, CONST D3DXMATRIX *pm);
-D3DXMATRIX* WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup);
-D3DXMATRIX* WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup);
-D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2);
-D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixReflect(D3DXMATRIX *pout, CONST D3DXPLANE *pplane);
-D3DXMATRIX* WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pv, FLOAT angle);
-D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pout, CONST D3DXQUATERNION *pq);
-D3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX *pout, FLOAT angle);
-D3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX *pout, FLOAT angle);
-D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
-D3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pout, FLOAT angle);
-D3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT sz);
-D3DXMATRIX* WINAPI D3DXMatrixShadow(D3DXMATRIX *pout, CONST D3DXVECTOR4 *plight, CONST D3DXPLANE *pPlane);
-D3DXMATRIX* WINAPI D3DXMatrixTransformation(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pscalingcenter, CONST D3DXQUATERNION *pscalingrotation, CONST D3DXVECTOR3 *pscaling, CONST D3DXVECTOR3 *protationcenter, CONST D3DXQUATERNION *protation, CONST D3DXVECTOR3 *ptranslation);
-D3DXMATRIX* WINAPI D3DXMatrixTransformation2D(D3DXMATRIX *pout, CONST D3DXVECTOR2 *pscalingcenter, FLOAT scalingrotation, CONST D3DXVECTOR2 *pscaling, CONST D3DXVECTOR2 *protationcenter, FLOAT rotation, CONST D3DXVECTOR2 *ptranslation);
-D3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLOAT z);
-D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm);
-
-D3DXPLANE* WINAPI D3DXPlaneFromPointNormal(D3DXPLANE *pout, CONST D3DXVECTOR3 *pvpoint, CONST D3DXVECTOR3 *pvnormal);
-D3DXPLANE* WINAPI D3DXPlaneFromPoints(D3DXPLANE *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3);
-D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine(D3DXVECTOR3 *pout, CONST D3DXPLANE *pp, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2);
-D3DXPLANE* WINAPI D3DXPlaneNormalize(D3DXPLANE *pout, CONST D3DXPLANE *pp);
-D3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, CONST D3DXPLANE *pplane, CONST D3DXMATRIX *pm);
-D3DXPLANE* WINAPI D3DXPlaneTransformArray(D3DXPLANE *pout, UINT outstride, CONST D3DXPLANE *pplane, UINT pstride, CONST D3DXMATRIX *pm, UINT n);
-
-D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, FLOAT f, FLOAT g);
-D3DXQUATERNION* WINAPI D3DXQuaternionExp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
-D3DXQUATERNION* WINAPI D3DXQuaternionInverse(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
-D3DXQUATERNION* WINAPI D3DXQuaternionLn(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
-D3DXQUATERNION* WINAPI D3DXQuaternionMultiply(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2);
-D3DXQUATERNION* WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
-D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis(D3DXQUATERNION *pout, CONST D3DXVECTOR3 *pv, FLOAT angle);
-D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *pout, CONST D3DXMATRIX *pm);
-D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
-D3DXQUATERNION* WINAPI D3DXQuaternionSlerp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, FLOAT t);
-D3DXQUATERNION* WINAPI D3DXQuaternionSquad(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, CONST D3DXQUATERNION *pq4, FLOAT t);
-void WINAPI D3DXQuaternionToAxisAngle(CONST D3DXQUATERNION *pq, D3DXVECTOR3 *paxis, FLOAT *pangle);
-
-D3DXVECTOR2* WINAPI D3DXVec2BaryCentric(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT f, FLOAT g);
-D3DXVECTOR2* WINAPI D3DXVec2CatmullRom(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv0, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT s);
-D3DXVECTOR2* WINAPI D3DXVec2Hermite(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pt1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pt2, FLOAT s);
-D3DXVECTOR2* WINAPI D3DXVec2Normalize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv);
-D3DXVECTOR4* WINAPI D3DXVec2Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR4* WINAPI D3DXVec2TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR2* WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR2* WINAPI D3DXVec2TransformCoordArray(D3DXVECTOR2 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR2* WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR2* WINAPI D3DXVec2TransformNormalArray(D3DXVECTOR2 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-
-D3DXVECTOR3* WINAPI D3DXVec3BaryCentric(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT f, FLOAT g);
-D3DXVECTOR3* WINAPI D3DXVec3CatmullRom( D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv0, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT s);
-D3DXVECTOR3* WINAPI D3DXVec3Hermite(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pt1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pt2, FLOAT s);
-D3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv);
-D3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld);
-D3DXVECTOR3* WINAPI D3DXVec3ProjectArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld, UINT n);
-D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR4* WINAPI D3DXVec3TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR3* WINAPI D3DXVec3TransformCoordArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR3* WINAPI D3DXVec3TransformNormalArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR3* WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld);
-D3DXVECTOR3* WINAPI D3DXVec3UnprojectArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld, UINT n);
-
-D3DXVECTOR4* WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT f, FLOAT g);
-D3DXVECTOR4* WINAPI D3DXVec4CatmullRom(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv0, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT s);
-D3DXVECTOR4* WINAPI D3DXVec4Cross(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3);
-D3DXVECTOR4* WINAPI D3DXVec4Hermite(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pt1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pt2, FLOAT s);
-D3DXVECTOR4* WINAPI D3DXVec4Normalize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv);
-D3DXVECTOR4* WINAPI D3DXVec4Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR4* WINAPI D3DXVec4TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR4 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-
-#ifdef __cplusplus
-}
-#endif
-
-typedef interface ID3DXMatrixStack *LPD3DXMATRIXSTACK;
-
-DEFINE_GUID(IID_ID3DXMatrixStack,
-0xc7885ba7, 0xf990, 0x4fe7, 0x92, 0x2d, 0x85, 0x15, 0xe4, 0x77, 0xdd, 0x85);
-
-#undef INTERFACE
-#define INTERFACE ID3DXMatrixStack
-
-DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown)
-{
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    STDMETHOD(Pop)(THIS) PURE;
-    STDMETHOD(Push)(THIS) PURE;
-    STDMETHOD(LoadIdentity)(THIS) PURE;
-    STDMETHOD(LoadMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
-    STDMETHOD(MultMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
-    STDMETHOD(MultMatrixLocal)(THIS_ CONST D3DXMATRIX* pM ) PURE;
-    STDMETHOD(RotateAxis)(THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
-    STDMETHOD(RotateAxisLocal)(THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
-    STDMETHOD(RotateYawPitchRoll)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
-    STDMETHOD(RotateYawPitchRollLocal)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
-    STDMETHOD(Scale)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
-    STDMETHOD(ScaleLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
-    STDMETHOD(Translate)(THIS_ FLOAT x, FLOAT y, FLOAT z ) PURE;
-    STDMETHOD(TranslateLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
-    STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE;
-};
-
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-
-#define ID3DXMatrixStack_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXMatrixStack_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define ID3DXMatrixStack_Release(p)                       (p)->lpVtbl->Release(p)
-#define ID3DXMatrixStack_Pop(p)                           (p)->lpVtbl->Pop(p)
-#define ID3DXMatrixStack_Push(p)                          (p)->lpVtbl->Push(p)
-#define ID3DXMatrixStack_LoadIdentity(p)                  (p)->lpVtbl->LoadIdentity(p)
-#define ID3DXMatrixStack_LoadMatrix(p,a)                  (p)->lpVtbl->LoadMatrix(p,a)
-#define ID3DXMatrixStack_MultMatrix(p,a)                  (p)->lpVtbl->MultMatrix(p,a)
-#define ID3DXMatrixStack_MultMatrixLocal(p,a)             (p)->lpVtbl->MultMatrixLocal(p,a)
-#define ID3DXMatrixStack_RotateAxis(p,a,b)                (p)->lpVtbl->RotateAxis(p,a,b)
-#define ID3DXMatrixStack_RotateAxisLocal(p,a,b)           (p)->lpVtbl->RotateAxisLocal(p,a,b)
-#define ID3DXMatrixStack_RotateYawPitchRoll(p,a,b,c)      (p)->lpVtbl->RotateYawPitchRoll(p,a,b,c)
-#define ID3DXMatrixStack_RotateYawPitchRollLocal(p,a,b,c) (p)->lpVtbl->RotateYawPitchRollLocal(p,a,b,c)
-#define ID3DXMatrixStack_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
-#define ID3DXMatrixStack_ScaleLocal(p,a,b,c)              (p)->lpVtbl->ScaleLocal(p,a,b,c)
-#define ID3DXMatrixStack_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a,b,c)
-#define ID3DXMatrixStack_TranslateLocal(p,a,b,c)          (p)->lpVtbl->TranslateLocal(p,a,b,c)
-#define ID3DXMatrixStack_GetTop(p)                        (p)->lpVtbl->GetTop(p)
-
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3DXCreateMatrixStack(DWORD flags, LPD3DXMATRIXSTACK* ppstack);
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <d3dx9math.inl>
-
-#endif /* __D3DX9MATH_H__ */
diff --git a/misc/builddeps/win32/dx/include/d3dx9math.inl b/misc/builddeps/win32/dx/include/d3dx9math.inl
deleted file mode 100644 (file)
index 3cd078a..0000000
+++ /dev/null
@@ -1,1268 +0,0 @@
-/*
- * Copyright (C) 2007 David Adam
- * Copyright (C) 2007 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DX9MATH_INL__
-#define __D3DX9MATH_INL__
-
-/* constructors & operators */
-#ifdef __cplusplus
-
-inline D3DXVECTOR2::D3DXVECTOR2()
-{
-}
-
-inline D3DXVECTOR2::D3DXVECTOR2(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    x = pf[0];
-    y = pf[1];
-}
-
-inline D3DXVECTOR2::D3DXVECTOR2(FLOAT fx, FLOAT fy)
-{
-    x = fx;
-    y = fy;
-}
-
-inline D3DXVECTOR2::operator FLOAT* ()
-{
-    return (FLOAT*)&x;
-}
-
-inline D3DXVECTOR2::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&x;
-}
-
-inline D3DXVECTOR2& D3DXVECTOR2::operator += (CONST D3DXVECTOR2& v)
-{
-    x += v.x;
-    y += v.y;
-    return *this;
-}
-
-inline D3DXVECTOR2& D3DXVECTOR2::operator -= (CONST D3DXVECTOR2& v)
-{
-    x -= v.x;
-    y -= v.y;
-    return *this;
-}
-
-inline D3DXVECTOR2& D3DXVECTOR2::operator *= (FLOAT f)
-{
-    x *= f;
-    y *= f;
-    return *this;
-}
-
-inline D3DXVECTOR2& D3DXVECTOR2::operator /= (FLOAT f)
-{
-    x /= f;
-    y /= f;
-    return *this;
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator + () const
-{
-    return *this;
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator - () const
-{
-    return D3DXVECTOR2(-x, -y);
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator + (CONST D3DXVECTOR2& v) const
-{
-    return D3DXVECTOR2(x + v.x, y + v.y);
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator - (CONST D3DXVECTOR2& v) const
-{
-    return D3DXVECTOR2(x - v.x, y - v.y);
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator * (FLOAT f) const
-{
-    return D3DXVECTOR2(x * f, y * f);
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator / (FLOAT f) const
-{
-    return D3DXVECTOR2(x / f, y / f);
-}
-
-inline D3DXVECTOR2 operator * (FLOAT f, CONST D3DXVECTOR2& v)
-{
-    return D3DXVECTOR2(f * v.x, f * v.y);
-}
-
-inline BOOL D3DXVECTOR2::operator == (CONST D3DXVECTOR2& v) const
-{
-    return x == v.x && y == v.y;
-}
-
-inline BOOL D3DXVECTOR2::operator != (CONST D3DXVECTOR2& v) const
-{
-    return x != v.x || y != v.y;
-}
-
-inline D3DXVECTOR3::D3DXVECTOR3()
-{
-}
-
-inline D3DXVECTOR3::D3DXVECTOR3(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    x = pf[0];
-    y = pf[1];
-    z = pf[2];
-}
-
-inline D3DXVECTOR3::D3DXVECTOR3(CONST D3DVECTOR& v)
-{
-    x = v.x;
-    y = v.y;
-    z = v.z;
-}
-
-inline D3DXVECTOR3::D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz)
-{
-    x = fx;
-    y = fy;
-    z = fz;
-}
-
-inline D3DXVECTOR3::operator FLOAT* ()
-{
-    return (FLOAT*)&x;
-}
-
-inline D3DXVECTOR3::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&x;
-}
-
-inline D3DXVECTOR3& D3DXVECTOR3::operator += (CONST D3DXVECTOR3& v)
-{
-    x += v.x;
-    y += v.y;
-    z += v.z;
-    return *this;
-}
-
-inline D3DXVECTOR3& D3DXVECTOR3::operator -= (CONST D3DXVECTOR3& v)
-{
-    x -= v.x;
-    y -= v.y;
-    z -= v.z;
-    return *this;
-}
-
-inline D3DXVECTOR3& D3DXVECTOR3::operator *= (FLOAT f)
-{
-    x *= f;
-    y *= f;
-    z *= f;
-    return *this;
-}
-
-inline D3DXVECTOR3& D3DXVECTOR3::operator /= (FLOAT f)
-{
-    x /= f;
-    y /= f;
-    z /= f;
-    return *this;
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator + () const
-{
-    return *this;
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator - () const
-{
-    return D3DXVECTOR3(-x, -y, -z);
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator + (CONST D3DXVECTOR3& v) const
-{
-    return D3DXVECTOR3(x + v.x, y + v.y, z + v.z);
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator - (CONST D3DXVECTOR3& v) const
-{
-    return D3DXVECTOR3(x - v.x, y - v.y, z - v.z);
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator * (FLOAT f) const
-{
-    return D3DXVECTOR3(x * f, y * f, z * f);
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator / (FLOAT f) const
-{
-    return D3DXVECTOR3(x / f, y / f, z / f);
-}
-
-inline D3DXVECTOR3 operator * (FLOAT f, CONST D3DXVECTOR3& v)
-{
-    return D3DXVECTOR3(f * v.x, f * v.y, f * v.z);
-}
-
-inline BOOL D3DXVECTOR3::operator == (CONST D3DXVECTOR3& v) const
-{
-    return x == v.x && y == v.y && z == v.z;
-}
-
-inline BOOL D3DXVECTOR3::operator != (CONST D3DXVECTOR3& v) const
-{
-    return x != v.x || y != v.y || z != v.z;
-}
-
-inline D3DXVECTOR4::D3DXVECTOR4()
-{
-}
-
-inline D3DXVECTOR4::D3DXVECTOR4(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    x = pf[0];
-    y = pf[1];
-    z = pf[2];
-    w = pf[3];
-}
-
-inline D3DXVECTOR4::D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
-{
-    x = fx;
-    y = fy;
-    z = fz;
-    w = fw;
-}
-
-inline D3DXVECTOR4::operator FLOAT* ()
-{
-    return (FLOAT*)&x;
-}
-
-inline D3DXVECTOR4::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&x;
-}
-
-inline D3DXVECTOR4& D3DXVECTOR4::operator += (CONST D3DXVECTOR4& v)
-{
-    x += v.x;
-    y += v.y;
-    z += v.z;
-    w += v.w;
-    return *this;
-}
-
-inline D3DXVECTOR4& D3DXVECTOR4::operator -= (CONST D3DXVECTOR4& v)
-{
-    x -= v.x;
-    y -= v.y;
-    z -= v.z;
-    w -= v.w;
-    return *this;
-}
-
-inline D3DXVECTOR4& D3DXVECTOR4::operator *= (FLOAT f)
-{
-    x *= f;
-    y *= f;
-    z *= f;
-    w *= f;
-    return *this;
-}
-
-inline D3DXVECTOR4& D3DXVECTOR4::operator /= (FLOAT f)
-{
-    x /= f;
-    y /= f;
-    z /= f;
-    w /= f;
-    return *this;
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator + () const
-{
-    return *this;
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator - () const
-{
-    return D3DXVECTOR4(-x, -y, -z, -w);
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator + (CONST D3DXVECTOR4& v) const
-{
-    return D3DXVECTOR4(x + v.x, y + v.y, z + v.z, w + v.w);
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator - (CONST D3DXVECTOR4& v) const
-{
-    return D3DXVECTOR4(x - v.x, y - v.y, z - v.z, w - v.w);
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator * (FLOAT f) const
-{
-    return D3DXVECTOR4(x * f, y * f, z * f, w * f);
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator / (FLOAT f) const
-{
-    return D3DXVECTOR4(x / f, y / f, z / f, w / f);
-}
-
-inline D3DXVECTOR4 operator * (FLOAT f, CONST D3DXVECTOR4& v)
-{
-    return D3DXVECTOR4(f * v.x, f * v.y, f * v.z, f * v.w);
-}
-
-inline BOOL D3DXVECTOR4::operator == (CONST D3DXVECTOR4& v) const
-{
-    return x == v.x && y == v.y && z == v.z && w == v.w;
-}
-
-inline BOOL D3DXVECTOR4::operator != (CONST D3DXVECTOR4& v) const
-{
-    return x != v.x || y != v.y || z != v.z || w != v.w;
-}
-
-inline D3DXMATRIX::D3DXMATRIX()
-{
-}
-
-inline D3DXMATRIX::D3DXMATRIX(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    memcpy(&_11, pf, sizeof(D3DXMATRIX));
-}
-
-inline D3DXMATRIX::D3DXMATRIX(CONST D3DMATRIX& mat)
-{
-    memcpy(&_11, &mat, sizeof(D3DXMATRIX));
-}
-
-inline D3DXMATRIX::D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
-                              FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
-                              FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
-                              FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44)
-{
-    _11 = f11; _12 = f12; _13 = f13; _14 = f14;
-    _21 = f21; _22 = f22; _23 = f23; _24 = f24;
-    _31 = f31; _32 = f32; _33 = f33; _34 = f34;
-    _41 = f41; _42 = f42; _43 = f43; _44 = f44;
-}
-
-inline FLOAT& D3DXMATRIX::operator () (UINT row, UINT col)
-{
-    return m[row][col];
-}
-
-inline FLOAT D3DXMATRIX::operator () (UINT row, UINT col) const
-{
-    return m[row][col];
-}
-
-inline D3DXMATRIX::operator FLOAT* ()
-{
-    return (FLOAT*)&_11;
-}
-
-inline D3DXMATRIX::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&_11;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator *= (CONST D3DXMATRIX& mat)
-{
-    D3DXMatrixMultiply(this, this, &mat);
-    return *this;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator += (CONST D3DXMATRIX& mat)
-{
-    _11 += mat._11; _12 += mat._12; _13 += mat._13; _14 += mat._14;
-    _21 += mat._21; _22 += mat._22; _23 += mat._23; _24 += mat._24;
-    _31 += mat._31; _32 += mat._32; _33 += mat._33; _34 += mat._34;
-    _41 += mat._41; _42 += mat._42; _43 += mat._43; _44 += mat._44;
-    return *this;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator -= (CONST D3DXMATRIX& mat)
-{
-    _11 -= mat._11; _12 -= mat._12; _13 -= mat._13; _14 -= mat._14;
-    _21 -= mat._21; _22 -= mat._22; _23 -= mat._23; _24 -= mat._24;
-    _31 -= mat._31; _32 -= mat._32; _33 -= mat._33; _34 -= mat._34;
-    _41 -= mat._41; _42 -= mat._42; _43 -= mat._43; _44 -= mat._44;
-    return *this;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator *= (FLOAT f)
-{
-    _11 *= f; _12 *= f; _13 *= f; _14 *= f;
-    _21 *= f; _22 *= f; _23 *= f; _24 *= f;
-    _31 *= f; _32 *= f; _33 *= f; _34 *= f;
-    _41 *= f; _42 *= f; _43 *= f; _44 *= f;
-    return *this;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator /= (FLOAT f)
-{
-    FLOAT inv = 1.0f / f;
-    _11 *= inv; _12 *= inv; _13 *= inv; _14 *= inv;
-    _21 *= inv; _22 *= inv; _23 *= inv; _24 *= inv;
-    _31 *= inv; _32 *= inv; _33 *= inv; _34 *= inv;
-    _41 *= inv; _42 *= inv; _43 *= inv; _44 *= inv;
-    return *this;
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator + () const
-{
-    return *this;
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator - () const
-{
-    return D3DXMATRIX(-_11, -_12, -_13, -_14,
-                      -_21, -_22, -_23, -_24,
-                      -_31, -_32, -_33, -_34,
-                      -_41, -_42, -_43, -_44);
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator * (CONST D3DXMATRIX& mat) const
-{
-    D3DXMATRIX buf;
-    D3DXMatrixMultiply(&buf, this, &mat);
-    return buf;
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator + (CONST D3DXMATRIX& mat) const
-{
-    return D3DXMATRIX(_11 + mat._11, _12 + mat._12, _13 + mat._13, _14 + mat._14,
-                      _21 + mat._21, _22 + mat._22, _23 + mat._23, _24 + mat._24,
-                      _31 + mat._31, _32 + mat._32, _33 + mat._33, _34 + mat._34,
-                      _41 + mat._41, _42 + mat._42, _43 + mat._43, _44 + mat._44);
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator - (CONST D3DXMATRIX& mat) const
-{
-    return D3DXMATRIX(_11 - mat._11, _12 - mat._12, _13 - mat._13, _14 - mat._14,
-                      _21 - mat._21, _22 - mat._22, _23 - mat._23, _24 - mat._24,
-                      _31 - mat._31, _32 - mat._32, _33 - mat._33, _34 - mat._34,
-                      _41 - mat._41, _42 - mat._42, _43 - mat._43, _44 - mat._44);
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator * (FLOAT f) const
-{
-    return D3DXMATRIX(_11 * f, _12 * f, _13 * f, _14 * f,
-                      _21 * f, _22 * f, _23 * f, _24 * f,
-                      _31 * f, _32 * f, _33 * f, _34 * f,
-                      _41 * f, _42 * f, _43 * f, _44 * f);
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator / (FLOAT f) const
-{
-    FLOAT inv = 1.0f / f;
-    return D3DXMATRIX(_11 * inv, _12 * inv, _13 * inv, _14 * inv,
-                      _21 * inv, _22 * inv, _23 * inv, _24 * inv,
-                      _31 * inv, _32 * inv, _33 * inv, _34 * inv,
-                      _41 * inv, _42 * inv, _43 * inv, _44 * inv);
-}
-
-inline D3DXMATRIX operator * (FLOAT f, CONST D3DXMATRIX& mat)
-{
-    return D3DXMATRIX(f * mat._11, f * mat._12, f * mat._13, f * mat._14,
-                      f * mat._21, f * mat._22, f * mat._23, f * mat._24,
-                      f * mat._31, f * mat._32, f * mat._33, f * mat._34,
-                      f * mat._41, f * mat._42, f * mat._43, f * mat._44);
-}
-
-inline BOOL D3DXMATRIX::operator == (CONST D3DXMATRIX& mat) const
-{
-    return (memcmp(this, &mat, sizeof(D3DXMATRIX)) == 0);
-}
-
-inline BOOL D3DXMATRIX::operator != (CONST D3DXMATRIX& mat) const
-{
-    return (memcmp(this, &mat, sizeof(D3DXMATRIX)) != 0);
-}
-
-inline D3DXQUATERNION::D3DXQUATERNION()
-{
-}
-
-inline D3DXQUATERNION::D3DXQUATERNION(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    x = pf[0];
-    y = pf[1];
-    z = pf[2];
-    w = pf[3];
-}
-
-inline D3DXQUATERNION::D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
-{
-    x = fx;
-    y = fy;
-    z = fz;
-    w = fw;
-}
-
-inline D3DXQUATERNION::operator FLOAT* ()
-{
-    return (FLOAT*)&x;
-}
-
-inline D3DXQUATERNION::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&x;
-}
-
-inline D3DXQUATERNION& D3DXQUATERNION::operator += (CONST D3DXQUATERNION& quat)
-{
-    x += quat.x;
-    y += quat.y;
-    z += quat.z;
-    w += quat.w;
-    return *this;
-}
-
-inline D3DXQUATERNION& D3DXQUATERNION::operator -= (CONST D3DXQUATERNION& quat)
-{
-    x -= quat.x;
-    y -= quat.y;
-    z -= quat.z;
-    w -= quat.w;
-    return *this;
-}
-
-/* TODO: uncomment this when D3DXQuaternionMultiply has been implemented
-inline D3DXQUATERNION& D3DXQUATERNION::operator *= (CONST D3DXQUATERNION& quat)
-{
-    D3DXQuaternionMultiply(this, this, &quat);
-    return *this;
-}
-*/
-
-inline D3DXQUATERNION& D3DXQUATERNION::operator *= (FLOAT f)
-{
-    x *= f;
-    y *= f;
-    z *= f;
-    w *= f;
-    return *this;
-}
-
-inline D3DXQUATERNION& D3DXQUATERNION::operator /= (FLOAT f)
-{
-    FLOAT inv = 1.0f / f;
-    x *= inv;
-    y *= inv;
-    z *= inv;
-    w *= inv;
-    return *this;
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator + () const
-{
-    return *this;
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator - () const
-{
-    return D3DXQUATERNION(-x, -y, -z, -w);
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator + (CONST D3DXQUATERNION& quat) const
-{
-    return D3DXQUATERNION(x + quat.x, y + quat.y, z + quat.z, w + quat.w);
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator - (CONST D3DXQUATERNION& quat) const
-{
-    return D3DXQUATERNION(x - quat.x, y - quat.y, z - quat.z, w - quat.w);
-}
-
-/* TODO: uncomment this when D3DXQuaternionMultiply has been implemented
-inline D3DXQUATERNION D3DXQUATERNION::operator * (CONST D3DXQUATERNION& quat) const
-{
-    D3DXQUATERNION buf;
-    D3DXQuaternionMultiply(&buf, this, &quat);
-    return buf;
-}
-*/
-
-inline D3DXQUATERNION D3DXQUATERNION::operator * (FLOAT f) const
-{
-    return D3DXQUATERNION(x * f, y * f, z * f, w * f);
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator / (FLOAT f) const
-{
-    FLOAT inv = 1.0f / f;
-    return D3DXQUATERNION(x * inv, y * inv, z * inv, w * inv);
-}
-
-inline D3DXQUATERNION operator * (FLOAT f, CONST D3DXQUATERNION& quat)
-{
-    return D3DXQUATERNION(f * quat.x, f * quat.y, f * quat.z, f * quat.w);
-}
-
-inline BOOL D3DXQUATERNION::operator == (CONST D3DXQUATERNION& quat) const
-{
-    return x == quat.x && y == quat.y && z == quat.z && w == quat.w;
-}
-
-inline BOOL D3DXQUATERNION::operator != (CONST D3DXQUATERNION& quat) const
-{
-    return x != quat.x || y != quat.y || z != quat.z || w != quat.w;
-}
-
-inline D3DXPLANE::D3DXPLANE()
-{
-}
-
-inline D3DXPLANE::D3DXPLANE(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    a = pf[0];
-    b = pf[1];
-    c = pf[2];
-    d = pf[3];
-}
-
-inline D3DXPLANE::D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd)
-{
-    a = fa;
-    b = fb;
-    c = fc;
-    d = fd;
-}
-
-inline D3DXPLANE::operator FLOAT* ()
-{
-    return (FLOAT*)&a;
-}
-
-inline D3DXPLANE::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&a;
-}
-
-inline D3DXPLANE D3DXPLANE::operator + () const
-{
-    return *this;
-}
-
-inline D3DXPLANE D3DXPLANE::operator - () const
-{
-    return D3DXPLANE(-a, -b, -c, -d);
-}
-
-inline BOOL D3DXPLANE::operator == (CONST D3DXPLANE& pl) const
-{
-    return a == pl.a && b == pl.b && c == pl.c && d == pl.d;
-}
-
-inline BOOL D3DXPLANE::operator != (CONST D3DXPLANE& pl) const
-{
-    return a != pl.a || b != pl.b || c != pl.c || d != pl.d;
-}
-
-inline D3DXCOLOR::D3DXCOLOR()
-{
-}
-
-inline D3DXCOLOR::D3DXCOLOR(DWORD col)
-{
-    CONST FLOAT f = 1.0f / 255.0f;
-    r = f * (FLOAT)(unsigned char)(col >> 16);
-    g = f * (FLOAT)(unsigned char)(col >>  8);
-    b = f * (FLOAT)(unsigned char)col;
-    a = f * (FLOAT)(unsigned char)(col >> 24);
-}
-
-inline D3DXCOLOR::D3DXCOLOR(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    r = pf[0];
-    g = pf[1];
-    b = pf[2];
-    a = pf[3];
-}
-
-inline D3DXCOLOR::D3DXCOLOR(CONST D3DCOLORVALUE& col)
-{
-    r = col.r;
-    g = col.g;
-    b = col.b;
-    a = col.a;
-}
-
-inline D3DXCOLOR::D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa)
-{
-    r = fr;
-    g = fg;
-    b = fb;
-    a = fa;
-}
-
-inline D3DXCOLOR::operator DWORD () const
-{
-    DWORD _r = r >= 1.0f ? 0xff : r <= 0.0f ? 0x00 : (DWORD)(r * 255.0f + 0.5f);
-    DWORD _g = g >= 1.0f ? 0xff : g <= 0.0f ? 0x00 : (DWORD)(g * 255.0f + 0.5f);
-    DWORD _b = b >= 1.0f ? 0xff : b <= 0.0f ? 0x00 : (DWORD)(b * 255.0f + 0.5f);
-    DWORD _a = a >= 1.0f ? 0xff : a <= 0.0f ? 0x00 : (DWORD)(a * 255.0f + 0.5f);
-
-    return (_a << 24) | (_r << 16) | (_g << 8) | _b;
-}
-
-inline D3DXCOLOR::operator FLOAT * ()
-{
-    return (FLOAT*)&r;
-}
-
-inline D3DXCOLOR::operator CONST FLOAT * () const
-{
-    return (CONST FLOAT*)&r;
-}
-
-inline D3DXCOLOR::operator D3DCOLORVALUE * ()
-{
-    return (D3DCOLORVALUE*)&r;
-}
-
-inline D3DXCOLOR::operator CONST D3DCOLORVALUE * () const
-{
-    return (CONST D3DCOLORVALUE*)&r;
-}
-
-inline D3DXCOLOR::operator D3DCOLORVALUE& ()
-{
-    return *((D3DCOLORVALUE*)&r);
-}
-
-inline D3DXCOLOR::operator CONST D3DCOLORVALUE& () const
-{
-    return *((CONST D3DCOLORVALUE*)&r);
-}
-
-inline D3DXCOLOR& D3DXCOLOR::operator += (CONST D3DXCOLOR& col)
-{
-    r += col.r;
-    g += col.g;
-    b += col.b;
-    a += col.a;
-    return *this;
-}
-
-inline D3DXCOLOR& D3DXCOLOR::operator -= (CONST D3DXCOLOR& col)
-{
-    r -= col.r;
-    g -= col.g;
-    b -= col.b;
-    a -= col.a;
-    return *this;
-}
-
-inline D3DXCOLOR& D3DXCOLOR::operator *= (FLOAT f)
-{
-    r *= f;
-    g *= f;
-    b *= f;
-    a *= f;
-    return *this;
-}
-
-inline D3DXCOLOR& D3DXCOLOR::operator /= (FLOAT f)
-{
-    FLOAT inv = 1.0f / f;
-    r *= inv;
-    g *= inv;
-    b *= inv;
-    a *= inv;
-    return *this;
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator + () const
-{
-    return *this;
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator - () const
-{
-    return D3DXCOLOR(-r, -g, -b, -a);
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator + (CONST D3DXCOLOR& col) const
-{
-    return D3DXCOLOR(r + col.r, g + col.g, b + col.b, a + col.a);
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator - (CONST D3DXCOLOR& col) const
-{
-    return D3DXCOLOR(r - col.r, g - col.g, b - col.b, a - col.a);
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator * (FLOAT f) const
-{
-    return D3DXCOLOR(r * f, g * f, b * f, a * f);
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator / (FLOAT f) const
-{
-    FLOAT inv = 1.0f / f;
-    return D3DXCOLOR(r * inv, g * inv, b * inv, a * inv);
-}
-
-inline D3DXCOLOR operator * (FLOAT f, CONST D3DXCOLOR& col)
-{
-    return D3DXCOLOR(f * col.r, f * col.g, f * col.b, f * col.a);
-}
-
-inline BOOL D3DXCOLOR::operator == (CONST D3DXCOLOR& col) const
-{
-    return r == col.r && g == col.g && b == col.b && a == col.a;
-}
-
-inline BOOL D3DXCOLOR::operator != (CONST D3DXCOLOR& col) const
-{
-    return r != col.r || g != col.g || b != col.b || a != col.a;
-}
-
-#endif /* __cplusplus */
-
-/*_______________D3DXCOLOR_____________________*/
-
-static inline D3DXCOLOR* D3DXColorAdd(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
-{
-    if ( !pout || !pc1 || !pc2 ) return NULL;
-    pout->r = (pc1->r) + (pc2->r);
-    pout->g = (pc1->g) + (pc2->g);
-    pout->b = (pc1->b) + (pc2->b);
-    pout->a = (pc1->a) + (pc2->a);
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorLerp(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2, FLOAT s)
-{
-    if ( !pout || !pc1 || !pc2 ) return NULL;
-    pout->r = (1-s) * (pc1->r) + s *(pc2->r);
-    pout->g = (1-s) * (pc1->g) + s *(pc2->g);
-    pout->b = (1-s) * (pc1->b) + s *(pc2->b);
-    pout->a = (1-s) * (pc1->a) + s *(pc2->a);
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorModulate(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
-{
-    if ( !pout || !pc1 || !pc2 ) return NULL;
-    pout->r = (pc1->r) * (pc2->r);
-    pout->g = (pc1->g) * (pc2->g);
-    pout->b = (pc1->b) * (pc2->b);
-    pout->a = (pc1->a) * (pc2->a);
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorNegative(D3DXCOLOR *pout, CONST D3DXCOLOR *pc)
-{
-    if ( !pout || !pc ) return NULL;
-    pout->r = 1.0f - pc->r;
-    pout->g = 1.0f - pc->g;
-    pout->b = 1.0f - pc->b;
-    pout->a = pc->a;
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorScale(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s)
-{
-    if ( !pout || !pc ) return NULL;
-    pout->r = s* (pc->r);
-    pout->g = s* (pc->g);
-    pout->b = s* (pc->b);
-    pout->a = s* (pc->a);
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorSubtract(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
-{
-    if ( !pout || !pc1 || !pc2 ) return NULL;
-    pout->r = (pc1->r) - (pc2->r);
-    pout->g = (pc1->g) - (pc2->g);
-    pout->b = (pc1->b) - (pc2->b);
-    pout->a = (pc1->a) - (pc2->a);
-    return pout;
-}
-
-/*_______________D3DXVECTOR2________________________*/
-
-static inline D3DXVECTOR2* D3DXVec2Add(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x + pv2->x;
-    pout->y = pv1->y + pv2->y;
-    return pout;
-}
-
-static inline FLOAT D3DXVec2CCW(CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pv1 || !pv2) return 0.0f;
-    return ( (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x) );
-}
-
-static inline FLOAT D3DXVec2Dot(CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pv1 || !pv2) return 0.0f;
-    return ( (pv1->x * pv2->x + pv1->y * pv2->y) );
-}
-
-static inline FLOAT D3DXVec2Length(CONST D3DXVECTOR2 *pv)
-{
-    if (!pv) return 0.0f;
-    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) );
-}
-
-static inline FLOAT D3DXVec2LengthSq(CONST D3DXVECTOR2 *pv)
-{
-    if (!pv) return 0.0f;
-    return( (pv->x) * (pv->x) + (pv->y) * (pv->y) );
-}
-
-static inline D3DXVECTOR2* D3DXVec2Lerp(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, FLOAT s)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
-    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
-    return pout;
-}
-
-static inline D3DXVECTOR2* D3DXVec2Maximize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = max(pv1->x , pv2->x);
-    pout->y = max(pv1->y , pv2->y);
-    return pout;
-}
-
-static inline D3DXVECTOR2* D3DXVec2Minimize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = min(pv1->x , pv2->x);
-    pout->y = min(pv1->y , pv2->y);
-    return pout;
-}
-
-static inline D3DXVECTOR2* D3DXVec2Scale(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, FLOAT s)
-{
-    if ( !pout || !pv) return NULL;
-    pout->x = s * (pv->x);
-    pout->y = s * (pv->y);
-    return pout;
-}
-
-static inline D3DXVECTOR2* D3DXVec2Subtract(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x - pv2->x;
-    pout->y = pv1->y - pv2->y;
-    return pout;
-}
-
-/*__________________D3DXVECTOR3_______________________*/
-
-static inline D3DXVECTOR3* D3DXVec3Add(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x + pv2->x;
-    pout->y = pv1->y + pv2->y;
-    pout->z = pv1->z + pv2->z;
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Cross(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = (pv1->y) * (pv2->z) - (pv1->z) * (pv2->y);
-    pout->y = (pv1->z) * (pv2->x) - (pv1->x) * (pv2->z);
-    pout->z = (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x);
-    return pout;
-}
-
-static inline FLOAT D3DXVec3Dot(CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pv1 || !pv2 ) return 0.0f;
-    return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z);
-}
-
-static inline FLOAT D3DXVec3Length(CONST D3DXVECTOR3 *pv)
-{
-    if (!pv) return 0.0f;
-    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) );
-}
-
-static inline FLOAT D3DXVec3LengthSq(CONST D3DXVECTOR3 *pv)
-{
-    if (!pv) return 0.0f;
-    return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z);
-}
-
-static inline D3DXVECTOR3* D3DXVec3Lerp(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, FLOAT s)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
-    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
-    pout->z = (1-s) * (pv1->z) + s * (pv2->z);
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Maximize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = max(pv1->x , pv2->x);
-    pout->y = max(pv1->y , pv2->y);
-    pout->z = max(pv1->z , pv2->z);
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Minimize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = min(pv1->x , pv2->x);
-    pout->y = min(pv1->y , pv2->y);
-    pout->z = min(pv1->z , pv2->z);
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Scale(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, FLOAT s)
-{
-    if ( !pout || !pv) return NULL;
-    pout->x = s * (pv->x);
-    pout->y = s * (pv->y);
-    pout->z = s * (pv->z);
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Subtract(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x - pv2->x;
-    pout->y = pv1->y - pv2->y;
-    pout->z = pv1->z - pv2->z;
-    return pout;
-}
-/*__________________D3DXVECTOR4_______________________*/
-
-static inline D3DXVECTOR4* D3DXVec4Add(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x + pv2->x;
-    pout->y = pv1->y + pv2->y;
-    pout->z = pv1->z + pv2->z;
-    pout->w = pv1->w + pv2->w;
-    return pout;
-}
-
-static inline FLOAT D3DXVec4Dot(CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if (!pv1 || !pv2 ) return 0.0f;
-    return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z) + (pv1->w) * (pv2->w);
-}
-
-static inline FLOAT D3DXVec4Length(CONST D3DXVECTOR4 *pv)
-{
-    if (!pv) return 0.0f;
-    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) + (pv->w) * (pv->w) );
-}
-
-static inline FLOAT D3DXVec4LengthSq(CONST D3DXVECTOR4 *pv)
-{
-    if (!pv) return 0.0f;
-    return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) + (pv->w) * (pv->w);
-}
-
-static inline D3DXVECTOR4* D3DXVec4Lerp(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, FLOAT s)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
-    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
-    pout->z = (1-s) * (pv1->z) + s * (pv2->z);
-    pout->w = (1-s) * (pv1->w) + s * (pv2->w);
-    return pout;
-}
-
-
-static inline D3DXVECTOR4* D3DXVec4Maximize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = max(pv1->x , pv2->x);
-    pout->y = max(pv1->y , pv2->y);
-    pout->z = max(pv1->z , pv2->z);
-    pout->w = max(pv1->w , pv2->w);
-    return pout;
-}
-
-static inline D3DXVECTOR4* D3DXVec4Minimize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = min(pv1->x , pv2->x);
-    pout->y = min(pv1->y , pv2->y);
-    pout->z = min(pv1->z , pv2->z);
-    pout->w = min(pv1->w , pv2->w);
-    return pout;
-}
-
-static inline D3DXVECTOR4* D3DXVec4Scale(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, FLOAT s)
-{
-    if ( !pout || !pv) return NULL;
-    pout->x = s * (pv->x);
-    pout->y = s * (pv->y);
-    pout->z = s * (pv->z);
-    pout->w = s * (pv->w);
-    return pout;
-}
-
-static inline D3DXVECTOR4* D3DXVec4Subtract(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x - pv2->x;
-    pout->y = pv1->y - pv2->y;
-    pout->z = pv1->z - pv2->z;
-    pout->w = pv1->w - pv2->w;
-    return pout;
-}
-
-/*__________________D3DXMatrix____________________*/
-#ifdef NONAMELESSUNION
-# define D3DX_U(x)  (x).u
-#else
-# define D3DX_U(x)  (x)
-#endif
-
-static inline D3DXMATRIX* D3DXMatrixIdentity(D3DXMATRIX *pout)
-{
-    if ( !pout ) return NULL;
-    D3DX_U(*pout).m[0][1] = 0.0f;
-    D3DX_U(*pout).m[0][2] = 0.0f;
-    D3DX_U(*pout).m[0][3] = 0.0f;
-    D3DX_U(*pout).m[1][0] = 0.0f;
-    D3DX_U(*pout).m[1][2] = 0.0f;
-    D3DX_U(*pout).m[1][3] = 0.0f;
-    D3DX_U(*pout).m[2][0] = 0.0f;
-    D3DX_U(*pout).m[2][1] = 0.0f;
-    D3DX_U(*pout).m[2][3] = 0.0f;
-    D3DX_U(*pout).m[3][0] = 0.0f;
-    D3DX_U(*pout).m[3][1] = 0.0f;
-    D3DX_U(*pout).m[3][2] = 0.0f;
-    D3DX_U(*pout).m[0][0] = 1.0f;
-    D3DX_U(*pout).m[1][1] = 1.0f;
-    D3DX_U(*pout).m[2][2] = 1.0f;
-    D3DX_U(*pout).m[3][3] = 1.0f;
-    return pout;
-}
-
-static inline BOOL D3DXMatrixIsIdentity(D3DXMATRIX *pm)
-{
-    int i,j;
-    D3DXMATRIX testmatrix;
-
-    if ( !pm ) return FALSE;
-    D3DXMatrixIdentity(&testmatrix);
-    for (i=0; i<4; i++)
-    {
-     for (j=0; j<4; j++)
-     {
-      if ( D3DX_U(*pm).m[i][j] != D3DX_U(testmatrix).m[i][j] ) return FALSE;
-     }
-    }
-    return TRUE;
-}
-#undef D3DX_U
-
-/*__________________D3DXPLANE____________________*/
-
-static inline FLOAT D3DXPlaneDot(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
-{
-    if ( !pp || !pv ) return 0.0f;
-    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) * (pv->w) );
-}
-
-static inline FLOAT D3DXPlaneDotCoord(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
-{
-    if ( !pp || !pv ) return 0.0f;
-    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) );
-}
-
-static inline FLOAT D3DXPlaneDotNormal(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
-{
-    if ( !pp || !pv ) return 0.0f;
-    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) );
-}
-
-/*__________________D3DXQUATERNION____________________*/
-
-static inline D3DXQUATERNION* D3DXQuaternionConjugate(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq)
-{
-    if ( !pout || !pq) return NULL;
-    pout->x = -pq->x;
-    pout->y = -pq->y;
-    pout->z = -pq->z;
-    pout->w = pq->w;
-    return pout;
-}
-
-static inline FLOAT D3DXQuaternionDot(CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2)
-{
-    if ( !pq1 || !pq2 ) return 0.0f;
-    return (pq1->x) * (pq2->x) + (pq1->y) * (pq2->y) + (pq1->z) * (pq2->z) + (pq1->w) * (pq2->w);
-}
-
-static inline D3DXQUATERNION* D3DXQuaternionIdentity(D3DXQUATERNION *pout)
-{
-    if ( !pout) return NULL;
-    pout->x = 0.0f;
-    pout->y = 0.0f;
-    pout->z = 0.0f;
-    pout->w = 1.0f;
-    return pout;
-}
-
-static inline BOOL D3DXQuaternionIsIdentity(D3DXQUATERNION *pq)
-{
-    if ( !pq) return FALSE;
-    return ( (pq->x == 0.0f) && (pq->y == 0.0f) && (pq->z == 0.0f) && (pq->w == 1.0f) );
-}
-
-static inline FLOAT D3DXQuaternionLength(CONST D3DXQUATERNION *pq)
-{
-    if (!pq) return 0.0f;
-    return sqrt( (pq->x) * (pq->x) + (pq->y) * (pq->y) + (pq->z) * (pq->z) + (pq->w) * (pq->w) );
-}
-
-static inline FLOAT D3DXQuaternionLengthSq(CONST D3DXQUATERNION *pq)
-{
-    if (!pq) return 0.0f;
-    return (pq->x) * (pq->x) + (pq->y) * (pq->y) + (pq->z) * (pq->z) + (pq->w) * (pq->w);
-}
-
-#endif
diff --git a/misc/builddeps/win32/dx/include/d3dx9mesh.h b/misc/builddeps/win32/dx/include/d3dx9mesh.h
deleted file mode 100644 (file)
index 5773d24..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2009 David Adam
- * Copyright (C) 2010 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <d3dx9.h>
-
-#ifndef __WINE_D3DX9MESH_H
-#define __WINE_D3DX9MESH_H
-
-DEFINE_GUID(IID_ID3DXBaseMesh, 0x7ed943dd, 0x52e8, 0x40b5, 0xa8, 0xd8, 0x76, 0x68, 0x5c, 0x40, 0x63, 0x30);
-DEFINE_GUID(IID_ID3DXMesh,     0x4020e5c2, 0x1403, 0x4929, 0x88, 0x3f, 0xe2, 0xe8, 0x49, 0xfa, 0xc1, 0x95);
-
-enum _MAX_FVF_DECL_SIZE
-{
-    MAX_FVF_DECL_SIZE = MAXD3DDECLLENGTH + 1
-};
-
-typedef struct ID3DXBaseMesh* LPD3DXBASEMESH;
-typedef struct ID3DXMesh* LPD3DXMESH;
-
-typedef struct _D3DXATTRIBUTERANGE {
-    DWORD AttribId;
-    DWORD FaceStart;
-    DWORD FaceCount;
-    DWORD VertexStart;
-    DWORD VertexCount;
-} D3DXATTRIBUTERANGE;
-
-typedef D3DXATTRIBUTERANGE* LPD3DXATTRIBUTERANGE;
-
-#undef INTERFACE
-#define INTERFACE ID3DXBaseMesh
-
-DECLARE_INTERFACE_(ID3DXBaseMesh, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseMesh ***/
-    STDMETHOD(DrawSubset)(THIS_ DWORD attrib_id) PURE;
-    STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
-    STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
-    STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
-    STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
-    STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
-    STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(CloneMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER9* vertex_buffer) PURE;
-    STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER9* index_buffer) PURE;
-    STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
-    STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
-    STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
-    STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
-    STDMETHOD(GetAttributeTable)(THIS_ D3DXATTRIBUTERANGE* attrib_table, DWORD* attrib_table_size) PURE;
-    STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* point_reps, DWORD* adjacency) PURE;
-    STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* adjacency, DWORD* point_reps) PURE;
-    STDMETHOD(GenerateAdjacency)(THIS_ FLOAT epsilon, DWORD* adjacency) PURE;
-    STDMETHOD(UpdateSemantics)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
-};
-
-
-#undef INTERFACE
-#define INTERFACE ID3DXMesh
-
-DECLARE_INTERFACE_(ID3DXMesh, ID3DXBaseMesh)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseMesh ***/
-    STDMETHOD(DrawSubset)(THIS_ DWORD attrib_id) PURE;
-    STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
-    STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
-    STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
-    STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
-    STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
-    STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(CloneMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER9* vertex_buffer) PURE;
-    STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER9* index_buffer) PURE;
-    STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
-    STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
-    STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
-    STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
-    STDMETHOD(GetAttributeTable)(THIS_ D3DXATTRIBUTERANGE* attrib_table, DWORD* attrib_table_size) PURE;
-    STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* point_reps, DWORD* adjacency) PURE;
-    STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* adjacency, DWORD* point_reps) PURE;
-    STDMETHOD(GenerateAdjacency)(THIS_ FLOAT epsilon, DWORD* adjacency) PURE;
-    STDMETHOD(UpdateSemantics)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
-    /*** ID3DXMesh ***/
-    STDMETHOD(LockAttributeBuffer)(THIS_ DWORD flags, DWORD** data) PURE;
-    STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
-    STDMETHOD(Optimize)(THIS_ DWORD flags, CONST DWORD* adjacency_in, DWORD* adjacency_out,
-        DWORD* face_remap, LPD3DXBUFFER* vertex_remap, LPD3DXMESH* opt_mesh) PURE;
-    STDMETHOD(OptimizeInplace)(THIS_ DWORD flags, CONST DWORD* adjacency_in, DWORD* adjacency_out,
-                     DWORD* face_remap, LPD3DXBUFFER* vertex_remap) PURE;
-    STDMETHOD(SetAttributeTable)(THIS_ CONST D3DXATTRIBUTERANGE* attrib_table, DWORD attrib_table_size) PURE;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3DXCreateBuffer(DWORD, LPD3DXBUFFER*);
-UINT    WINAPI D3DXGetDeclVertexSize(const D3DVERTEXELEMENT9 *decl, DWORD stream_idx);
-UINT    WINAPI D3DXGetFVFVertexSize(DWORD);
-BOOL    WINAPI D3DXBoxBoundProbe(CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *);
-BOOL    WINAPI D3DXSphereBoundProbe(CONST D3DXVECTOR3 *,FLOAT,CONST D3DXVECTOR3 *,CONST D3DXVECTOR3 *);
-HRESULT WINAPI D3DXComputeBoundingBox(CONST D3DXVECTOR3 *, DWORD, DWORD, D3DXVECTOR3 *, D3DXVECTOR3 *);
-HRESULT WINAPI D3DXComputeBoundingSphere(CONST D3DXVECTOR3 *, DWORD, DWORD, D3DXVECTOR3 *, FLOAT *);
-HRESULT WINAPI D3DXDeclaratorFromFVF(DWORD, D3DVERTEXELEMENT9[MAX_FVF_DECL_SIZE]);
-BOOL    WINAPI D3DXIntersectTri(CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3*, FLOAT *, FLOAT *, FLOAT *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WINE_D3DX9MESH_H */
diff --git a/misc/builddeps/win32/dx/include/d3dx9shader.h b/misc/builddeps/win32/dx/include/d3dx9shader.h
deleted file mode 100644 (file)
index c8380bc..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * Copyright 2008 Luis Busquets
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "d3dx9.h"
-
-#ifndef __D3DX9SHADER_H__
-#define __D3DX9SHADER_H__
-
-#define D3DXSHADER_DEBUG                          0x1
-#define D3DXSHADER_SKIPVALIDATION                 0x2
-#define D3DXSHADER_SKIPOPTIMIZATION               0x4
-#define D3DXSHADER_PACKMATRIX_ROWMAJOR            0x8
-#define D3DXSHADER_PACKMATRIX_COLUMNMAJOR         0x10
-#define D3DXSHADER_PARTIALPRECISION               0x20
-#define D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT        0x40
-#define D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT        0x80
-#define D3DXSHADER_NO_PRESHADER                   0x100
-#define D3DXSHADER_AVOID_FLOW_CONTROL             0x200
-#define D3DXSHADER_PREFER_FLOW_CONTROL            0x400
-#define D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY 0x1000
-#define D3DXSHADER_IEEE_STRICTNESS                0x2000
-
-#define D3DXSHADER_OPTIMIZATION_LEVEL0            0x4000
-#define D3DXSHADER_OPTIMIZATION_LEVEL1            0x0
-#define D3DXSHADER_OPTIMIZATION_LEVEL2            0xC000
-#define D3DXSHADER_OPTIMIZATION_LEVEL3            0x8000
-
-#define D3DXSHADER_USE_LEGACY_D3DX9_31_DLL        0x10000
-
-typedef LPCSTR D3DXHANDLE;
-
-typedef enum _D3DXREGISTER_SET
-{
-    D3DXRS_BOOL,
-    D3DXRS_INT4,
-    D3DXRS_FLOAT4,
-    D3DXRS_SAMPLER,
-    D3DXRS_FORCE_DWORD = 0x7fffffff
-} D3DXREGISTER_SET, *LPD3DXREGISTER_SET;
-
-typedef enum D3DXPARAMETER_CLASS
-{
-    D3DXPC_SCALAR,
-    D3DXPC_VECTOR,
-    D3DXPC_MATRIX_ROWS,
-    D3DXPC_MATRIX_COLUMNS,
-    D3DXPC_OBJECT,
-    D3DXPC_STRUCT,
-    D3DXPC_FORCE_DWORD = 0x7fffffff,
-} D3DXPARAMETER_CLASS, *LPD3DXPARAMETER_CLASS;
-
-typedef enum D3DXPARAMETER_TYPE
-{
-    D3DXPT_VOID,
-    D3DXPT_BOOL,
-    D3DXPT_INT,
-    D3DXPT_FLOAT,
-    D3DXPT_STRING,
-    D3DXPT_TEXTURE,
-    D3DXPT_TEXTURE1D,
-    D3DXPT_TEXTURE2D,
-    D3DXPT_TEXTURE3D,
-    D3DXPT_TEXTURECUBE,
-    D3DXPT_SAMPLER,
-    D3DXPT_SAMPLER1D,
-    D3DXPT_SAMPLER2D,
-    D3DXPT_SAMPLER3D,
-    D3DXPT_SAMPLERCUBE,
-    D3DXPT_PIXELSHADER,
-    D3DXPT_VERTEXSHADER,
-    D3DXPT_PIXELFRAGMENT,
-    D3DXPT_VERTEXFRAGMENT,
-    D3DXPT_UNSUPPORTED,
-    D3DXPT_FORCE_DWORD = 0x7fffffff,
-} D3DXPARAMETER_TYPE, *LPD3DXPARAMETER_TYPE;
-
-typedef struct _D3DXCONSTANTTABLE_DESC
-{
-    LPCSTR Creator;
-    DWORD Version;
-    UINT Constants;
-} D3DXCONSTANTTABLE_DESC, *LPD3DXCONSTANTTABLE_DESC;
-
-typedef struct _D3DXCONSTANT_DESC
-{
-    LPCSTR Name;
-    D3DXREGISTER_SET RegisterSet;
-    UINT RegisterIndex;
-    UINT RegisterCount;
-    D3DXPARAMETER_CLASS Class;
-    D3DXPARAMETER_TYPE Type;
-    UINT Rows;
-    UINT Columns;
-    UINT Elements;
-    UINT StructMembers;
-    UINT Bytes;
-    LPCVOID DefaultValue;
-} D3DXCONSTANT_DESC, *LPD3DXCONSTANT_DESC;
-
-DEFINE_GUID(IID_ID3DXConstantTable, 0x9dca3190, 0x38b9, 0x4fc3, 0x92, 0xe3, 0x39, 0xc6, 0xdd, 0xfb, 0x35, 0x8b);
-
-#undef INTERFACE
-#define INTERFACE ID3DXConstantTable
-
-DECLARE_INTERFACE_(ID3DXConstantTable, ID3DXBuffer)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBuffer methods ***/
-    STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
-    STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
-    /*** ID3DXConstantTable methods ***/
-    STDMETHOD(GetDesc)(THIS_ D3DXCONSTANTTABLE_DESC *pDesc) PURE;
-    STDMETHOD(GetConstantDesc)(THIS_ D3DXHANDLE hConstant, D3DXCONSTANT_DESC *pConstantDesc, UINT *pCount) PURE;
-    STDMETHOD_(UINT, GetSamplerIndex)(THIS_ D3DXHANDLE hConstant) PURE;
-    STDMETHOD_(D3DXHANDLE, GetConstant)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetConstantByName)(THIS_ D3DXHANDLE hConstant, LPCSTR pName) PURE;
-    STDMETHOD_(D3DXHANDLE, GetConstantElement)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
-    STDMETHOD(SetDefaults)(THIS_ LPDIRECT3DDEVICE9 pDevice) PURE;
-    STDMETHOD(SetValue)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, LPCVOID pData, UINT Bytes) PURE;
-    STDMETHOD(SetBool)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, BOOL b) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST BOOL* pb, UINT Count) PURE;
-    STDMETHOD(SetInt)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, INT n) PURE;
-    STDMETHOD(SetIntArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST INT* pn, UINT Count) PURE;
-    STDMETHOD(SetFloat)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, FLOAT f) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST FLOAT* pf, UINT Count) PURE;
-    STDMETHOD(SetVector)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector) PURE;
-    STDMETHOD(SetVectorArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
-    STDMETHOD(SetMatrix)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
-    STDMETHOD(SetMatrixPointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
-    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXConstantTable_QueryInterface(p,a,b)                      (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXConstantTable_AddRef(p)                                  (p)->lpVtbl->AddRef(p)
-#define ID3DXConstantTable_Release(p)                                 (p)->lpVtbl->Release(p)
-/*** ID3DXBuffer methods ***/
-#define ID3DXConstantTable_GetBufferPointer(p)                        (p)->lpVtbl->GetBufferPointer(p)
-#define ID3DXConstantTable_GetBufferSize(p)                           (p)->lpVtbl->GetBufferSize(p)
-/*** ID3DXConstantTable methods ***/
-#define ID3DXConstantTable_GetDesc(p,a)                               (p)->lpVtbl->GetDesc(p,a)
-#define ID3DXConstantTable_GetConstantDesc(p,a,b,c)                   (p)->lpVtbl->GetConstantDesc(p,a,b,c)
-#define ID3DXConstantTable_GetSamplerIndex(p,a)                       (p)->lpVtbl->GetSamplerIndex(p,a)
-#define ID3DXConstantTable_GetConstant(p,a,b)                         (p)->lpVtbl->GetConstant(p,a,b)
-#define ID3DXConstantTable_GetConstantByName(p,a,b)                   (p)->lpVtbl->GetConstantByName(p,a,b)
-#define ID3DXConstantTable_GetConstantElement(p,a,b)                  (p)->lpVtbl->GetConstantElement(p,a,b)
-#define ID3DXConstantTable_SetDefaults(p,a)                           (p)->lpVtbl->SetDefaults(p,a)
-#define ID3DXConstantTable_SetValue(p,a,b,c,d)                        (p)->lpVtbl->SetValue(p,a,b,c,d)
-#define ID3DXConstantTable_SetBool(p,a,b,c)                           (p)->lpVtbl->SetBool(p,a,b,c)
-#define ID3DXConstantTable_SetBoolArray(p,a,b,c,d)                    (p)->lpVtbl->SetBoolArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetInt(p,a,b,c)                            (p)->lpVtbl->SetInt(p,a,b,c)
-#define ID3DXConstantTable_SetIntArray(p,a,b,c,d)                     (p)->lpVtbl->SetIntArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetFloat(p,a,b,c)                          (p)->lpVtbl->SetFloat(p,a,b,c)
-#define ID3DXConstantTable_SetFloatArray(p,a,b,c,d)                   (p)->lpVtbl->SetFloatArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetVector(p,a,b,c)                         (p)->lpVtbl->SetVector(p,a,b,c)
-#define ID3DXConstantTable_SetVectorArray(p,a,b,c,d)                  (p)->lpVtbl->SetVectorArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetMatrix(p,a,b,c)                         (p)->lpVtbl->SetMatrix(p,a,b,c)
-#define ID3DXConstantTable_SetMatrixArray(p,a,b,c,d)                  (p)->lpVtbl->SetMatrixArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetMatrixPointerArray(p,a,b,c,d)           (p)->lpVtbl->SetMatrixPointerArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetMatrixTranspose(p,a,b,c)                (p)->lpVtbl->SetMatrixTranspose(p,a,b,c)
-#define ID3DXConstantTable_SetMatrixTransposeArray(p,a,b,c,d)         (p)->lpVtbl->SetMatrixTransposeArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetMatrixTransposePointerArray(p,a,b,c,d)  (p)->lpVtbl->SetMatrixTransposePointerArray(p,a,b,c,d)
-#else
-/*** IUnknown methods ***/
-#define ID3DXConstantTable_QueryInterface(p,a,b)                      (p)->QueryInterface(a,b)
-#define ID3DXConstantTable_AddRef(p)                                  (p)->AddRef()
-#define ID3DXConstantTable_Release(p)                                 (p)->Release()
-/*** ID3DXBuffer methods ***/
-#define ID3DXConstantTable_GetBufferPointer(p)                        (p)->GetBufferPointer()
-#define ID3DXConstantTable_GetBufferSize(p)                           (p)->GetBufferSize()
-/*** ID3DXConstantTable methods ***/
-#define ID3DXConstantTable_GetDesc(p,a)                               (p)->GetDesc(a)
-#define ID3DXConstantTable_GetConstantDesc(p,a,b,c)                   (p)->GetConstantDesc(a,b,c)
-#define ID3DXConstantTable_GetSamplerIndex(p,a)                       (p)->GetConstantDesc(a)
-#define ID3DXConstantTable_GetConstant(p,a,b)                         (p)->GetConstant(a,b)
-#define ID3DXConstantTable_GetConstantByName(p,a,b)                   (p)->GetConstantByName(a,b)
-#define ID3DXConstantTable_GetConstantElement(p,a,b)                  (p)->GetConstantElement(a,b)
-#define ID3DXConstantTable_SetDefaults(p,a)                           (p)->SetDefaults(a)
-#define ID3DXConstantTable_SetValue(p,a,b,c,d)                        (p)->SetValue(a,b,c,d)
-#define ID3DXConstantTable_SetBool(p,a,b,c)                           (p)->SetBool(a,b,c)
-#define ID3DXConstantTable_SetBoolArray(p,a,b,c,d)                    (p)->SetBoolArray(a,b,c,d)
-#define ID3DXConstantTable_SetInt(p,a,b,c)                            (p)->SetInt(a,b,c)
-#define ID3DXConstantTable_SetIntArray(p,a,b,c,d)                     (p)->SetIntArray(a,b,c,d)
-#define ID3DXConstantTable_SetFloat(p,a,b,c)                          (p)->SetFloat(a,b,c)
-#define ID3DXConstantTable_SetFloatArray(p,a,b,c,d)                   (p)->SetFloatArray(a,b,c,d)
-#define ID3DXConstantTable_SetVector(p,a,b,c)                         (p)->SetVector(a,b,c)
-#define ID3DXConstantTable_SetVectorArray(p,a,b,c,d)                  (p)->SetVectorArray(a,b,c,d)
-#define ID3DXConstantTable_SetMatrix(p,a,b,c)                         (p)->SetMatrix(a,b,c)
-#define ID3DXConstantTable_SetMatrixArray(p,a,b,c,d)                  (p)->SetMatrixArray(a,b,c,d)
-#define ID3DXConstantTable_SetMatrixPointerArray(p,a,b,c,d)           (p)->SetMatrixPointerArray(a,b,c,d)
-#define ID3DXConstantTable_SetMatrixTranspose(p,a,b,c)                (p)->SetMatrixTranspose(a,b,c)
-#define ID3DXConstantTable_SetMatrixTransposeArray(p,a,b,c,d)         (p)->SetMatrixTransposeArray(a,b,c,d)
-#define ID3DXConstantTable_SetMatrixTransposePointerArray(p,a,b,c,d)  (p)->SetMatrixTransposePointerArray(a,b,c,d)
-#endif
-
-typedef struct ID3DXConstantTable *LPD3DXCONSTANTTABLE;
-
-typedef struct _D3DXMACRO {
-    LPCSTR Name;
-    LPCSTR Definition;
-} D3DXMACRO, *LPD3DXMACRO;
-
-typedef struct _D3DXSEMANTIC {
-    UINT Usage;
-    UINT UsageIndex;
-} D3DXSEMANTIC, *LPD3DXSEMANTIC;
-
-typedef enum _D3DXINCLUDE_TYPE
-{
-    D3DXINC_LOCAL,
-    D3DXINC_SYSTEM,
-    D3DXINC_FORCE_DWORD = 0x7fffffff,
-} D3DXINCLUDE_TYPE, *LPD3DXINCLUDE_TYPE;
-
-#undef INTERFACE
-#define INTERFACE ID3DXInclude
-
-DECLARE_INTERFACE(ID3DXInclude)
-{
-    STDMETHOD(Open)(THIS_ D3DXINCLUDE_TYPE include_type, LPCSTR filename, LPCVOID parent_data, LPCVOID *data, UINT *bytes) PURE;
-    STDMETHOD(Close)(THIS_ LPCVOID data) PURE;
-};
-
-#define ID3DXInclude_Open(p,a,b,c,d,e)  (p)->lpVtbl->Open(p,a,b,c,d,e)
-#define ID3DXInclude_Close(p,a)         (p)->lpVtbl->Close(p,a)
-
-typedef struct ID3DXInclude *LPD3DXINCLUDE;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LPCSTR WINAPI D3DXGetPixelShaderProfile(LPDIRECT3DDEVICE9 device);
-UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code);
-DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code);
-LPCSTR WINAPI D3DXGetVertexShaderProfile(LPDIRECT3DDEVICE9 device);
-HRESULT WINAPI D3DXFindShaderComment(CONST DWORD* byte_code, DWORD fourcc, LPCVOID* data, UINT* size);
-
-HRESULT WINAPI D3DXAssembleShaderFromFileA(LPCSTR filename,
-                                           CONST D3DXMACRO* defines,
-                                           LPD3DXINCLUDE include,
-                                           DWORD flags,
-                                           LPD3DXBUFFER* shader,
-                                           LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXAssembleShaderFromFileW(LPCWSTR filename,
-                                           CONST D3DXMACRO* defines,
-                                           LPD3DXINCLUDE include,
-                                           DWORD flags,
-                                           LPD3DXBUFFER* shader,
-                                           LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE module,
-                                               LPCSTR resource,
-                                               CONST D3DXMACRO* defines,
-                                               LPD3DXINCLUDE include,
-                                               DWORD flags,
-                                               LPD3DXBUFFER* shader,
-                                               LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXAssembleShaderFromResourceW(HMODULE module,
-                                               LPCWSTR resource,
-                                               CONST D3DXMACRO* defines,
-                                               LPD3DXINCLUDE include,
-                                               DWORD flags,
-                                               LPD3DXBUFFER* shader,
-                                               LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXAssembleShader(LPCSTR data,
-                                  UINT data_len,
-                                  CONST D3DXMACRO* defines,
-                                  LPD3DXINCLUDE include,
-                                  DWORD flags,
-                                  LPD3DXBUFFER* shader,
-                                  LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXGetShaderConstantTableEx(CONST DWORD* byte_code,
-                                            DWORD flags,
-                                            LPD3DXCONSTANTTABLE* constant_table);
-
-HRESULT WINAPI D3DXGetShaderConstantTable(CONST DWORD* byte_code,
-                                          LPD3DXCONSTANTTABLE* constant_table);
-
-#ifdef __cplusplus
-}
-#endif
-
-typedef struct _D3DXSHADER_CONSTANTTABLE
-{
-    DWORD Size;
-    DWORD Creator;
-    DWORD Version;
-    DWORD Constants;
-    DWORD ConstantInfo;
-    DWORD Flags;
-    DWORD Target;
-} D3DXSHADER_CONSTANTTABLE, *LPD3DXSHADER_CONSTANTTABLE;
-
-typedef struct _D3DXSHADER_CONSTANTINFO
-{
-    DWORD Name;
-    WORD  RegisterSet;
-    WORD  RegisterIndex;
-    WORD  RegisterCount;
-    WORD  Reserved;
-    DWORD TypeInfo;
-    DWORD DefaultValue;
-} D3DXSHADER_CONSTANTINFO, *LPD3DXSHADER_CONSTANTINFO;
-
-typedef struct _D3DXSHADER_TYPEINFO
-{
-    WORD  Class;
-    WORD  Type;
-    WORD  Rows;
-    WORD  Columns;
-    WORD  Elements;
-    WORD  StructMembers;
-    DWORD StructMemberInfo;
-} D3DXSHADER_TYPEINFO, *LPD3DXSHADER_TYPEINFO;
-
-typedef struct _D3DXSHADER_STRUCTMEMBERINFO
-{
-    DWORD Name;
-    DWORD TypeInfo;
-} D3DXSHADER_STRUCTMEMBERINFO, *LPD3DXSHADER_STRUCTMEMBERINFO;
-
-#endif /* __D3DX9SHADER_H__ */
diff --git a/misc/builddeps/win32/dx/include/d3dx9shape.h b/misc/builddeps/win32/dx/include/d3dx9shape.h
deleted file mode 100644 (file)
index e1bf231..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "d3dx9.h"
-
-#ifndef __D3DX9SHAPE_H__
-#define __D3DX9SHAPE_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3DXCreateBox(LPDIRECT3DDEVICE9 device,
-                             FLOAT width,
-                             FLOAT height,
-                             FLOAT depth,
-                             LPD3DXMESH* mesh,
-                             LPD3DXBUFFER* adjacency);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __D3DX9SHAPE_H__ */
diff --git a/misc/builddeps/win32/dx/include/d3dx9tex.h b/misc/builddeps/win32/dx/include/d3dx9tex.h
deleted file mode 100644 (file)
index 019a4da..0000000
+++ /dev/null
@@ -1,698 +0,0 @@
-/*
- * Copyright (C) 2008 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <_mingw_dxhelper.h>
-#include <d3dx9.h>
-
-#ifndef __WINE_D3DX9TEX_H
-#define __WINE_D3DX9TEX_H
-
-/**********************************************
- ***************** Definitions ****************
- **********************************************/
-#define D3DX_FILTER_NONE                 0x00000001
-#define D3DX_FILTER_POINT                0x00000002
-#define D3DX_FILTER_LINEAR               0x00000003
-#define D3DX_FILTER_TRIANGLE             0x00000004
-#define D3DX_FILTER_BOX                  0x00000005
-#define D3DX_FILTER_MIRROR_U             0x00010000
-#define D3DX_FILTER_MIRROR_V             0x00020000
-#define D3DX_FILTER_MIRROR_W             0x00040000
-#define D3DX_FILTER_MIRROR               0x00070000
-#define D3DX_FILTER_DITHER               0x00080000
-#define D3DX_FILTER_DITHER_DIFFUSION     0x00100000
-#define D3DX_FILTER_SRGB_IN              0x00200000
-#define D3DX_FILTER_SRGB_OUT             0x00400000
-#define D3DX_FILTER_SRGB                 0x00600000
-
-#define D3DX_NORMALMAP_MIRROR_U          0x00010000
-#define D3DX_NORMALMAP_MIRROR_V          0x00020000
-#define D3DX_NORMALMAP_MIRROR            0x00030000
-#define D3DX_NORMALMAP_INVERTSIGN        0x00080000
-#define D3DX_NORMALMAP_COMPUTE_OCCLUSION 0x00100000
-
-#define D3DX_CHANNEL_RED                 0x00000001
-#define D3DX_CHANNEL_BLUE                0x00000002
-#define D3DX_CHANNEL_GREEN               0x00000004
-#define D3DX_CHANNEL_ALPHA               0x00000008
-#define D3DX_CHANNEL_LUMINANCE           0x00000010
-
-/**********************************************
- **************** Typedefs ****************
- **********************************************/
-typedef enum _D3DXIMAGE_FILEFORMAT
-{
-    D3DXIFF_BMP,
-    D3DXIFF_JPG,
-    D3DXIFF_TGA,
-    D3DXIFF_PNG,
-    D3DXIFF_DDS,
-    D3DXIFF_PPM,
-    D3DXIFF_DIB,
-    D3DXIFF_FORCE_DWORD = 0x7fffffff
-} D3DXIMAGE_FILEFORMAT;
-
-typedef struct _D3DXIMAGE_INFO
-{
-    UINT Width;
-    UINT Height;
-    UINT Depth;
-    UINT MipLevels;
-    D3DFORMAT Format;
-    D3DRESOURCETYPE ResourceType;
-    D3DXIMAGE_FILEFORMAT ImageFileFormat;
-} D3DXIMAGE_INFO;
-
-/**********************************************
- ****************** Functions *****************
- **********************************************/
-/* Typedefs for callback functions */
-typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *out, CONST D3DXVECTOR2 *texcoord, CONST D3DXVECTOR2 *texelsize, LPVOID data);
-typedef VOID (WINAPI *LPD3DXFILL3D)(D3DXVECTOR4 *out, CONST D3DXVECTOR3 *texcoord, CONST D3DXVECTOR3 *texelsize, LPVOID data);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Image Information */
-HRESULT WINAPI D3DXGetImageInfoFromFileA(LPCSTR file, D3DXIMAGE_INFO *info);
-HRESULT WINAPI D3DXGetImageInfoFromFileW(LPCWSTR file, D3DXIMAGE_INFO *info);
-#define        D3DXGetImageInfoFromFile WINELIB_NAME_AW(D3DXGetImageInfoFromFile)
-
-HRESULT WINAPI D3DXGetImageInfoFromResourceA(HMODULE module, LPCSTR resource, D3DXIMAGE_INFO *info);
-HRESULT WINAPI D3DXGetImageInfoFromResourceW(HMODULE module, LPCWSTR resource, D3DXIMAGE_INFO *info);
-#define        D3DXGetImageInfoFromResource WINELIB_NAME_AW(D3DXGetImageInfoFromResource)
-
-HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(LPCVOID data, UINT datasize, D3DXIMAGE_INFO *info);
-
-
-/* Surface Loading/Saving */
-HRESULT WINAPI D3DXLoadSurfaceFromFileA(       LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               LPCSTR srcfile,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadSurfaceFromFileW(       LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               LPCWSTR srcfile,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-#define        D3DXLoadSurfaceFromFile WINELIB_NAME_AW(D3DXLoadSurfaceFromFile)
-
-HRESULT WINAPI D3DXLoadSurfaceFromResourceA(   LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               HMODULE srcmodule,
-                                               LPCSTR resource,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadSurfaceFromResourceW(   LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               HMODULE srcmodule,
-                                               LPCWSTR resource,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-#define        D3DXLoadSurfaceFromResource WINELIB_NAME_AW(D3DXLoadSurfaceFromResource)
-
-HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT*destrect,
-                                               LPCVOID srcdata,
-                                               UINT srcdatasize,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadSurfaceFromSurface(     LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               LPDIRECT3DSURFACE9 srcsurface,
-                                               CONST PALETTEENTRY *srcpalette,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey);
-
-HRESULT WINAPI D3DXLoadSurfaceFromMemory(      LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               LPCVOID srcmemory,
-                                               D3DFORMAT srcformat,
-                                               UINT srcpitch,
-                                               CONST PALETTEENTRY *srcpalette,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey);
-
-HRESULT WINAPI D3DXSaveSurfaceToFileA(         LPCSTR destfile,
-                                               D3DXIMAGE_FILEFORMAT destformat,
-                                               LPDIRECT3DSURFACE9 srcsurface,
-                                               CONST PALETTEENTRY *srcpalette,
-                                               CONST RECT *srcrect);
-
-HRESULT WINAPI D3DXSaveSurfaceToFileW(         LPCWSTR destfile,
-                                               D3DXIMAGE_FILEFORMAT destformat,
-                                               LPDIRECT3DSURFACE9 srcsurface,
-                                               CONST PALETTEENTRY *srcpalette,
-                                               CONST RECT *srcrect);
-#define        D3DXSaveSurfaceToFile WINELIB_NAME_AW(D3DXSaveSurfaceToFile)
-
-
-/* Volume Loading/Saving */
-HRESULT WINAPI D3DXLoadVolumeFromFileA(       LPDIRECT3DVOLUME9 destvolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPCSTR srcfile,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadVolumeFromFileW(       LPDIRECT3DVOLUME9 destVolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPCWSTR srcfile,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-#define        D3DXLoadVolumeFromFile WINELIB_NAME_AW(D3DXLoadVolumeFromFile)
-
-HRESULT WINAPI D3DXLoadVolumeFromResourceA(   LPDIRECT3DVOLUME9 destVolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              HMODULE srcmodule,
-                                              LPCSTR resource,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadVolumeFromResourceW(   LPDIRECT3DVOLUME9 destVolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              HMODULE srcmodule,
-                                              LPCWSTR resource,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-#define        D3DXLoadVolumeFromResource WINELIB_NAME_AW(D3DXLoadVolumeFromResource)
-
-HRESULT WINAPI D3DXLoadVolumeFromFileInMemory(LPDIRECT3DVOLUME9 destvolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPCVOID srcdata,
-                                              UINT srcdatasize,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadVolumeFromVolume(      LPDIRECT3DVOLUME9 destvolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPDIRECT3DVOLUME9 srcvolume,
-                                              CONST PALETTEENTRY *srcpalette,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey);
-
-HRESULT WINAPI D3DXLoadVolumeFromMemory(      LPDIRECT3DVOLUME9 destvolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPCVOID srcmemory,
-                                              D3DFORMAT srcformat,
-                                              UINT srcrowpitch,
-                                              UINT srcslicepitch,
-                                              CONST PALETTEENTRY *srcpalette,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey);
-
-HRESULT WINAPI D3DXSaveVolumeToFileA(         LPCSTR destfile,
-                                              D3DXIMAGE_FILEFORMAT destformat,
-                                              LPDIRECT3DVOLUME9 srcvolume,
-                                              CONST PALETTEENTRY *srcpalette,
-                                              CONST D3DBOX *srcbox);
-
-HRESULT WINAPI D3DXSaveVolumeToFileW(         LPCWSTR destfile,
-                                              D3DXIMAGE_FILEFORMAT destformat,
-                                              LPDIRECT3DVOLUME9 srcvolume,
-                                              CONST PALETTEENTRY *srcpalette,
-                                              CONST D3DBOX *srcbox);
-#define        D3DXSaveVolumeToFile WINELIB_NAME_AW(D3DXSaveVolumeToFile)
-
-
-/* Texture, cube texture and volume texture creation */
-HRESULT WINAPI D3DXCheckTextureRequirements(      LPDIRECT3DDEVICE9 device,
-                                                  UINT *width,
-                                                  UINT *height,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool);
-HRESULT WINAPI D3DXCheckCubeTextureRequirements(  LPDIRECT3DDEVICE9 device,
-                                                  UINT *size,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool);
-
-HRESULT WINAPI D3DXCheckVolumeTextureRequirements(LPDIRECT3DDEVICE9 device,
-                                                  UINT *width,
-                                                  UINT *height,
-                                                  UINT *depth,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool);
-
-HRESULT WINAPI D3DXCreateTexture(      LPDIRECT3DDEVICE9 device,
-                                       UINT width,
-                                       UINT height,
-                                       UINT miplevels,
-                                       DWORD usage,
-                                       D3DFORMAT format,
-                                       D3DPOOL pool,
-                                       LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateCubeTexture(  LPDIRECT3DDEVICE9 device,
-                                       UINT size,
-                                       UINT miplevels,
-                                       DWORD usage,
-                                       D3DFORMAT format,
-                                       D3DPOOL pool,
-                                       LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateVolumeTexture(LPDIRECT3DDEVICE9 device,
-                                       UINT width,
-                                       UINT height,
-                                       UINT depth,
-                                       UINT miplevels,
-                                       DWORD usage,
-                                       D3DFORMAT format,
-                                       D3DPOOL pool,
-                                       LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateTextureFromFileA(      LPDIRECT3DDEVICE9 device,
-                                                LPCSTR srcfile,
-                                                LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateTextureFromFileW(      LPDIRECT3DDEVICE9 device,
-                                                LPCWSTR srcfile,
-                                                LPDIRECT3DTEXTURE9 *texture);
-#define        D3DXCreateTextureFromFile WINELIB_NAME_AW(D3DXCreateTextureFromFile)
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileA(  LPDIRECT3DDEVICE9 device,
-                                                LPCSTR srcfile,
-                                                LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileW(  LPDIRECT3DDEVICE9 device,
-                                                LPCWSTR srcfile,
-                                                LPDIRECT3DCUBETEXTURE9 *cube);
-#define        D3DXCreateCubeTextureFromFile WINELIB_NAME_AW(D3DXCreateCubeTextureFromFile)
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileA(LPDIRECT3DDEVICE9 device,
-                                                LPCSTR srcfile,
-                                                LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileW(LPDIRECT3DDEVICE9 device,
-                                                LPCWSTR srcfile,
-                                                LPDIRECT3DVOLUMETEXTURE9 *volume);
-#define        D3DXCreateVolumeTextureFromFile WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFile)
-
-HRESULT WINAPI D3DXCreateTextureFromResourceA(      LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCSTR resource,
-                                                    LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateTextureFromResourceW(      LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCWSTR resource,
-                                                    LPDIRECT3DTEXTURE9 *texture);
-#define        D3DXCreateTextureFromResource WINELIB_NAME_AW(D3DXCreateTextureFromResource)
-
-HRESULT WINAPI D3DXCreateCubeTextureFromResourceA(  LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCSTR resource,
-                                                    LPDIRECT3DCUBETEXTURE9 *cube);
-HRESULT WINAPI D3DXCreateCubeTextureFromResourceW(  LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCWSTR resource,
-                                                    LPDIRECT3DCUBETEXTURE9 *cube);
-#define        D3DXCreateCubeTextureFromResource WINELIB_NAME_AW(D3DXCreateCubeTextureFromResource)
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromResourceA(LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCSTR resource,
-                                                    LPDIRECT3DVOLUMETEXTURE9 *volume);
-HRESULT WINAPI D3DXCreateVolumeTextureFromResourceW(LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCWSTR resource,
-                                                    LPDIRECT3DVOLUMETEXTURE9 *volume);
-#define        D3DXCreateVolumeTextureFromResource WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResource)
-
-HRESULT WINAPI D3DXCreateTextureFromFileExA(      LPDIRECT3DDEVICE9 device,
-                                                  LPCSTR srcfile,
-                                                  UINT width,
-                                                  UINT height,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateTextureFromFileExW(      LPDIRECT3DDEVICE9 device,
-                                                  LPCWSTR srcfile,
-                                                  UINT width,
-                                                  UINT height,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DTEXTURE9 *texture);
-#define        D3DXCreateTextureFromFileEx WINELIB_NAME_AW(D3DXCreateTextureFromFileEx)
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileExA(  LPDIRECT3DDEVICE9 device,
-                                                  LPCSTR srcfile,
-                                                  UINT size,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileExW(  LPDIRECT3DDEVICE9 device,
-                                                  LPCWSTR srcfile,
-                                                  UINT size,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DCUBETEXTURE9 *cube);
-#define        D3DXCreateCubeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromFileEx)
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileExA(LPDIRECT3DDEVICE9 device,
-                                                  LPCSTR srcfile,
-                                                  UINT width,
-                                                  UINT height,
-                                                  UINT depth,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileExW(LPDIRECT3DDEVICE9 device,
-                                                  LPCWSTR srcfile,
-                                                  UINT width,
-                                                  UINT height,
-                                                  UINT depth,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DVOLUMETEXTURE9 *volume);
-#define        D3DXCreateVolumeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFileEx)
-
-HRESULT WINAPI D3DXCreateTextureFromResourceExA(      LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCSTR resource,
-                                                      UINT width,
-                                                      UINT height,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateTextureFromResourceExW(      LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCWSTR resource,
-                                                      UINT width,
-                                                      UINT height,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DTEXTURE9 *texture);
-#define        D3DXCreateTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateTextureFromResourceEx)
-
-HRESULT WINAPI D3DXCreateCubeTextureFromResourceExA(  LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCSTR resource,
-                                                      UINT size,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromResourceExW(  LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCWSTR resource,
-                                                      UINT size,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DCUBETEXTURE9 *cube);
-#define        D3DXCreateCubeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromResourceEx)
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExA(LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCSTR resource,
-                                                      UINT width,
-                                                      UINT height,
-                                                      UINT depth,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExW(LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCWSTR resource,
-                                                      UINT width,
-                                                      UINT height,
-                                                      UINT depth,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DVOLUMETEXTURE9 *volume);
-#define        D3DXCreateVolumeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResourceEx)
-
-HRESULT WINAPI D3DXCreateTextureFromFileInMemory(      LPDIRECT3DDEVICE9 device,
-                                                       LPCVOID srcdata,
-                                                       UINT srcdatasize,
-                                                       LPDIRECT3DTEXTURE9* texture);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemory(  LPDIRECT3DDEVICE9 device,
-                                                       LPCVOID srcdata,
-                                                       UINT srcdatasize,
-                                                       LPDIRECT3DCUBETEXTURE9* cube);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemory(LPDIRECT3DDEVICE9 device,
-                                                       LPCVOID srcdata,
-                                                       UINT srcdatasize,
-                                                       LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateTextureFromFileInMemoryEx(      LPDIRECT3DDEVICE9 device,
-                                                         LPCVOID srcdata,
-                                                         UINT srcdatasize,
-                                                         UINT width,
-                                                         UINT height,
-                                                         UINT miplevels,
-                                                         DWORD usage,
-                                                         D3DFORMAT format,
-                                                         D3DPOOL pool,
-                                                         DWORD filter,
-                                                         DWORD mipfilter,
-                                                         D3DCOLOR colorkey,
-                                                         D3DXIMAGE_INFO *srcinfo,
-                                                         PALETTEENTRY *palette,
-                                                         LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemoryEx(  LPDIRECT3DDEVICE9 device,
-                                                         LPCVOID srcdata,
-                                                         UINT srcdatasize,
-                                                         UINT size,
-                                                         UINT miplevels,
-                                                         DWORD usage,
-                                                         D3DFORMAT format,
-                                                         D3DPOOL pool,
-                                                         DWORD filter,
-                                                         DWORD mipfilter,
-                                                         D3DCOLOR colorkey,
-                                                         D3DXIMAGE_INFO *srcinfo,
-                                                         PALETTEENTRY *palette,
-                                                         LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemoryEx(LPDIRECT3DDEVICE9 device,
-                                                         LPCVOID srcdata,
-                                                         UINT srcdatasize,
-                                                         UINT width,
-                                                         UINT height,
-                                                         UINT depth,
-                                                         UINT miplevels,
-                                                         DWORD usage,
-                                                         D3DFORMAT format,
-                                                         D3DPOOL pool,
-                                                         DWORD filter,
-                                                         DWORD mipfilter,
-                                                         D3DCOLOR colorkey,
-                                                         D3DXIMAGE_INFO *srcinfo,
-                                                         PALETTEENTRY *palette,
-                                                         LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXSaveTextureToFileA(LPCSTR destfile,
-                                      D3DXIMAGE_FILEFORMAT destformat,
-                                      LPDIRECT3DBASETEXTURE9 srctexture,
-                                      CONST PALETTEENTRY *srcpalette);
-HRESULT WINAPI D3DXSaveTextureToFileW(LPCWSTR destfile,
-                                      D3DXIMAGE_FILEFORMAT destformat,
-                                      LPDIRECT3DBASETEXTURE9 srctexture,
-                                      CONST PALETTEENTRY *srcpalette);
-#define        D3DXSaveTextureToFile WINELIB_NAME_AW(D3DXSaveTextureToFile)
-
-
-/* Other functions */
-HRESULT WINAPI D3DXFilterTexture(      LPDIRECT3DBASETEXTURE9 texture,
-                                       CONST PALETTEENTRY *palette,
-                                       UINT srclevel,
-                                       DWORD filter);
-#define D3DXFilterCubeTexture D3DXFilterTexture
-#define D3DXFilterVolumeTexture D3DXFilterTexture
-
-HRESULT WINAPI D3DXFillTexture(        LPDIRECT3DTEXTURE9 texture,
-                                       LPD3DXFILL2D function,
-                                       LPVOID data);
-
-HRESULT WINAPI D3DXFillCubeTexture(    LPDIRECT3DCUBETEXTURE9 cube,
-                                       LPD3DXFILL3D function,
-                                       LPVOID data);
-
-HRESULT WINAPI D3DXFillVolumeTexture(  LPDIRECT3DVOLUMETEXTURE9 volume,
-                                       LPD3DXFILL3D function,
-                                       LPVOID data);
-
-HRESULT WINAPI D3DXFillTextureTX(      LPDIRECT3DTEXTURE9 texture,
-                                       CONST DWORD *function,
-                                       CONST D3DXVECTOR4 *constants,
-                                       UINT numconstants);
-
-HRESULT WINAPI D3DXFillCubeTextureTX(  LPDIRECT3DCUBETEXTURE9 cube,
-                                       CONST DWORD *function,
-                                       CONST D3DXVECTOR4 *constants,
-                                       UINT numconstants);
-
-HRESULT WINAPI D3DXFillVolumeTextureTX(LPDIRECT3DVOLUMETEXTURE9 volume,
-                                       CONST DWORD *function,
-                                       CONST D3DXVECTOR4 *constants,
-                                       UINT numconstants);
-
-HRESULT WINAPI D3DXComputeNormalMap(   LPDIRECT3DTEXTURE9 texture,
-                                       LPDIRECT3DTEXTURE9 srctexture,
-                                       CONST PALETTEENTRY *srcpalette,
-                                       DWORD flags,
-                                       DWORD channel,
-                                       FLOAT amplitude);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WINE_D3DX9TEX_H */
diff --git a/misc/builddeps/win32/dx/include/ddraw.h b/misc/builddeps/win32/dx/include/ddraw.h
deleted file mode 100644 (file)
index feaec69..0000000
+++ /dev/null
@@ -1,4844 +0,0 @@
-/*==========================================================================;
- *
- *  Copyright (C) 1994-1997 Microsoft Corporation.  All Rights Reserved.
- *
- *  File:      ddraw.h
- *  Content:   DirectDraw include file
- *
- ***************************************************************************/
-
-#ifndef __DDRAW_INCLUDED__
-#define __DDRAW_INCLUDED__
-
-/*
- * If you wish an application built against the newest version of DirectDraw
- * to run against an older DirectDraw run time then define DIRECTDRAW_VERSION
- * to be the earlies version of DirectDraw you wish to run against. For,
- * example if you wish an application to run against a DX 3 runtime define
- * DIRECTDRAW_VERSION to be 0x0300.
- */
-#ifndef   DIRECTDRAW_VERSION
-#define   DIRECTDRAW_VERSION 0x0600
-#endif /* DIRECTDRAW_VERSION */
-
-#if defined( _WIN32 )  && !defined( _NO_COM )
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#else
-#define IUnknown           void
-#if !defined( NT_BUILD_ENVIRONMENT ) && !defined(WINNT)
-       #define CO_E_NOTINITIALIZED 0x800401F0L
-#endif
-#endif
-
-#define _FACDD 0x876
-#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-//
-// For compilers that don't support nameless unions, do a
-//
-// #define NONAMELESSUNION
-//
-// before #include <ddraw.h>
-//
-#ifndef DUMMYUNIONNAMEN
-#if defined(__cplusplus) || !defined(NONAMELESSUNION)
-#define DUMMYUNIONNAMEN(n)
-#else
-#define DUMMYUNIONNAMEN(n)      u##n
-#endif
-#endif
-
-#ifndef MAKEFOURCC
-    #define MAKEFOURCC(ch0, ch1, ch2, ch3)                              \
-                ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |   \
-                ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
-#endif //defined(MAKEFOURCC)
-
-/*
- * FOURCC codes for DX compressed-texture pixel formats
- */
-#define FOURCC_DXT1  (MAKEFOURCC('D','X','T','1'))
-#define FOURCC_DXT2  (MAKEFOURCC('D','X','T','2'))
-#define FOURCC_DXT3  (MAKEFOURCC('D','X','T','3'))
-#define FOURCC_DXT4  (MAKEFOURCC('D','X','T','4'))
-#define FOURCC_DXT5  (MAKEFOURCC('D','X','T','5'))
-
-/*
- * GUIDS used by DirectDraw objects
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-
-DEFINE_GUID( CLSID_DirectDraw,                 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
-DEFINE_GUID( CLSID_DirectDrawClipper,           0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
-DEFINE_GUID( IID_IDirectDraw,                  0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDraw2,                  0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
-DEFINE_GUID( IID_IDirectDraw4,                  0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
-DEFINE_GUID( IID_IDirectDrawSurface,           0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDrawSurface2,          0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
-DEFINE_GUID( IID_IDirectDrawSurface3,           0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
-DEFINE_GUID( IID_IDirectDrawSurface4,           0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
-
-DEFINE_GUID( IID_IDirectDrawPalette,           0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDrawClipper,           0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDrawColorControl,      0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
-DEFINE_GUID( IID_IDirectDrawGammaControl,       0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
-
-#endif
-
-/*============================================================================
- *
- * DirectDraw Structures
- *
- * Various structures used to invoke DirectDraw.
- *
- *==========================================================================*/
-
-struct IDirectDraw;
-struct IDirectDrawSurface;
-struct IDirectDrawPalette;
-struct IDirectDrawClipper;
-
-typedef struct IDirectDraw              FAR *LPDIRECTDRAW;
-typedef struct IDirectDraw2             FAR *LPDIRECTDRAW2;
-typedef struct IDirectDraw4             FAR *LPDIRECTDRAW4;
-typedef struct IDirectDrawSurface       FAR *LPDIRECTDRAWSURFACE;
-typedef struct IDirectDrawSurface2      FAR *LPDIRECTDRAWSURFACE2;
-typedef struct IDirectDrawSurface3      FAR *LPDIRECTDRAWSURFACE3;
-typedef struct IDirectDrawSurface4      FAR *LPDIRECTDRAWSURFACE4;
-
-typedef struct IDirectDrawPalette              FAR *LPDIRECTDRAWPALETTE;
-typedef struct IDirectDrawClipper              FAR *LPDIRECTDRAWCLIPPER;
-typedef struct IDirectDrawColorControl         FAR *LPDIRECTDRAWCOLORCONTROL;
-typedef struct IDirectDrawGammaControl          FAR *LPDIRECTDRAWGAMMACONTROL;
-
-typedef struct _DDFXROP                        FAR *LPDDFXROP;
-typedef struct _DDSURFACEDESC          FAR *LPDDSURFACEDESC;
-typedef struct _DDSURFACEDESC2         FAR *LPDDSURFACEDESC2;
-typedef struct _DDCOLORCONTROL                 FAR *LPDDCOLORCONTROL;
-
-/*
- * API's
- */
-#if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM )
-//#if defined( _WIN32 ) && !defined( _NO_ENUM )
-    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
-    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
-    extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
-    extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
-    /*
-     * Protect against old SDKs
-     */
-    #ifndef SM_CMONITORS
-        #define HMONITOR    HANDLE
-    #endif
-    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
-    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
-    extern HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
-    extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
-    typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
-    typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
-
-    #ifdef UNICODE
-       typedef LPDDENUMCALLBACKW           LPDDENUMCALLBACK;
-       #define DirectDrawEnumerate         DirectDrawEnumerateW
-       typedef LPDDENUMCALLBACKEXW         LPDDENUMCALLBACKEX;
-       typedef LPDIRECTDRAWENUMERATEEXW        LPDIRECTDRAWENUMERATEEX;
-       #define DirectDrawEnumerateEx       DirectDrawEnumerateExW
-    #else
-       typedef LPDDENUMCALLBACKA           LPDDENUMCALLBACK;
-       #define DirectDrawEnumerate         DirectDrawEnumerateA
-       typedef LPDDENUMCALLBACKEXA         LPDDENUMCALLBACKEX;
-       typedef LPDIRECTDRAWENUMERATEEXA        LPDIRECTDRAWENUMERATEEX;
-        #define DirectDrawEnumerateEx      DirectDrawEnumerateExA
-    #endif
-    extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
-    extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
-#endif
-/*
- * Flags for DirectDrawEnumerateEx
- * DirectDrawEnumerateEx supercedes DirectDrawEnumerate. You must use GetProcAddress to
- * obtain a function pointer (of type LPDIRECTDRAWENUMERATEEX) to DirectDrawEnumerateEx.
- * By default, only the primary display device is enumerated.
- * DirectDrawEnumerate is equivalent to DirectDrawEnumerate(,,DDENUM_NONDISPLAYDEVICES)
- */
-
-/*
- * This flag causes enumeration of any GDI display devices which are part of
- * the Windows Desktop
- */
-#define DDENUM_ATTACHEDSECONDARYDEVICES     0x00000001L
-
-/*
- * This flag causes enumeration of any GDI display devices which are not
- * part of the Windows Desktop
- */
-#define DDENUM_DETACHEDSECONDARYDEVICES     0x00000002L
-
-/*
- * This flag causes enumeration of non-display devices
- */
-#define DDENUM_NONDISPLAYDEVICES            0x00000004L
-
-
-#define REGSTR_KEY_DDHW_DESCRIPTION    "Description"
-#define REGSTR_KEY_DDHW_DRIVERNAME     "DriverName"
-#define REGSTR_PATH_DDHW               "Hardware\\DirectDrawDrivers"
-
-#define DDCREATE_HARDWAREONLY          0x00000001l
-#define DDCREATE_EMULATIONONLY         0x00000002l
-
-#if defined(WINNT) || !defined(WIN32)
-typedef long HRESULT;
-#endif
-
-//#ifndef WINNT
-typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
-typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
-typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
-typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
-//#endif
-
-/*
- * Generic pixel format with 8-bit RGB and alpha components
- */
-typedef struct _DDRGBA
-{
-    BYTE red;
-    BYTE green;
-    BYTE blue;
-    BYTE alpha;
-} DDRGBA;
-
-typedef DDRGBA FAR *LPDDRGBA;
-
-/*
- * DDCOLORKEY
- */
-typedef struct _DDCOLORKEY
-{
-    DWORD      dwColorSpaceLowValue;   // low boundary of color space that is to
-                                       // be treated as Color Key, inclusive
-    DWORD      dwColorSpaceHighValue;  // high boundary of color space that is
-                                       // to be treated as Color Key, inclusive
-} DDCOLORKEY;
-
-typedef DDCOLORKEY FAR* LPDDCOLORKEY;
-
-/*
- * DDBLTFX
- * Used to pass override information to the DIRECTDRAWSURFACE callback Blt.
- */
-typedef struct _DDBLTFX
-{
-    DWORD      dwSize;                         // size of structure
-    DWORD      dwDDFX;                         // FX operations
-    DWORD      dwROP;                          // Win32 raster operations
-    DWORD      dwDDROP;                        // Raster operations new for DirectDraw
-    DWORD      dwRotationAngle;                // Rotation angle for blt
-    DWORD      dwZBufferOpCode;                // ZBuffer compares
-    DWORD      dwZBufferLow;                   // Low limit of Z buffer
-    DWORD      dwZBufferHigh;                  // High limit of Z buffer
-    DWORD      dwZBufferBaseDest;              // Destination base value
-    DWORD      dwZDestConstBitDepth;           // Bit depth used to specify Z constant for destination
-    union
-    {
-       DWORD   dwZDestConst;                   // Constant to use as Z buffer for dest
-       LPDIRECTDRAWSURFACE lpDDSZBufferDest;   // Surface to use as Z buffer for dest
-    } DUMMYUNIONNAMEN(1);
-    DWORD      dwZSrcConstBitDepth;            // Bit depth used to specify Z constant for source
-    union
-    {
-       DWORD   dwZSrcConst;                    // Constant to use as Z buffer for src
-       LPDIRECTDRAWSURFACE lpDDSZBufferSrc;    // Surface to use as Z buffer for src
-    } DUMMYUNIONNAMEN(2);
-    DWORD      dwAlphaEdgeBlendBitDepth;       // Bit depth used to specify constant for alpha edge blend
-    DWORD      dwAlphaEdgeBlend;               // Alpha for edge blending
-    DWORD      dwReserved;
-    DWORD      dwAlphaDestConstBitDepth;       // Bit depth used to specify alpha constant for destination
-    union
-    {
-       DWORD   dwAlphaDestConst;               // Constant to use as Alpha Channel
-       LPDIRECTDRAWSURFACE lpDDSAlphaDest;     // Surface to use as Alpha Channel
-    } DUMMYUNIONNAMEN(3);
-    DWORD      dwAlphaSrcConstBitDepth;        // Bit depth used to specify alpha constant for source
-    union
-    {
-       DWORD   dwAlphaSrcConst;                // Constant to use as Alpha Channel
-       LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      // Surface to use as Alpha Channel
-    } DUMMYUNIONNAMEN(4);
-    union
-    {
-       DWORD   dwFillColor;                    // color in RGB or Palettized
-       DWORD   dwFillDepth;                    // depth value for z-buffer
-       DWORD   dwFillPixel;                    // pixel value for RGBA or RGBZ
-       LPDIRECTDRAWSURFACE lpDDSPattern;       // Surface to use as pattern
-    } DUMMYUNIONNAMEN(5);
-    DDCOLORKEY ddckDestColorkey;               // DestColorkey override
-    DDCOLORKEY ddckSrcColorkey;                // SrcColorkey override
-} DDBLTFX;
-
-typedef DDBLTFX FAR* LPDDBLTFX;
-
-
-/*
- * DDSCAPS
- */
-typedef struct _DDSCAPS
-{
-    DWORD      dwCaps;         // capabilities of surface wanted
-} DDSCAPS;
-
-typedef DDSCAPS FAR* LPDDSCAPS;
-
-
-/*
- * DDOSCAPS
- */
-typedef struct _DDOSCAPS
-{
-    DWORD      dwCaps;         // capabilities of surface wanted
-} DDOSCAPS;
-
-typedef DDOSCAPS FAR* LPDDOSCAPS;
-
-/*
- * This structure is used internally by DirectDraw.
- */
-typedef struct _DDSCAPSEX
-{
-    DWORD       dwCaps2;
-    DWORD       dwCaps3;
-    DWORD       dwCaps4;
-} DDSCAPSEX, FAR * LPDDSCAPSEX;
-
-/*
- * DDSCAPS2
- */
-typedef struct _DDSCAPS2
-{
-    DWORD      dwCaps;         // capabilities of surface wanted
-    DWORD       dwCaps2;
-    DWORD       dwCaps3;
-    DWORD       dwCaps4;
-} DDSCAPS2;
-
-typedef DDSCAPS2 FAR* LPDDSCAPS2;
-
-/*
- * DDCAPS
- */
-#define DD_ROP_SPACE           (256/32)        // space required to store ROP array
-
-/*
- * This structure is the DDCAPS structure as it was in version 2 and 3 of Direct X.
- * It is present for back compatability.
- */
-typedef struct _DDCAPS_DX3
-{
-    DWORD      dwSize;                 // size of the DDDRIVERCAPS structure
-    DWORD      dwCaps;                 // driver specific capabilities
-    DWORD      dwCaps2;                // more driver specific capabilites
-    DWORD      dwCKeyCaps;             // color key capabilities of the surface
-    DWORD      dwFXCaps;               // driver specific stretching and effects capabilites
-    DWORD      dwFXAlphaCaps;          // alpha driver specific capabilities
-    DWORD      dwPalCaps;              // palette capabilities
-    DWORD      dwSVCaps;               // stereo vision capabilities
-    DWORD      dwAlphaBltConstBitDepths;       // DDBD_2,4,8
-    DWORD      dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
-    DWORD      dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
-    DWORD      dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
-    DWORD      dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
-    DWORD      dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
-    DWORD      dwZBufferBitDepths;             // DDBD_8,16,24,32
-    DWORD      dwVidMemTotal;          // total amount of video memory
-    DWORD      dwVidMemFree;           // amount of free video memory
-    DWORD      dwMaxVisibleOverlays;   // maximum number of visible overlays
-    DWORD      dwCurrVisibleOverlays;  // current number of visible overlays
-    DWORD      dwNumFourCCCodes;       // number of four cc codes
-    DWORD      dwAlignBoundarySrc;     // source rectangle alignment
-    DWORD      dwAlignSizeSrc;         // source rectangle byte size
-    DWORD      dwAlignBoundaryDest;    // dest rectangle alignment
-    DWORD      dwAlignSizeDest;        // dest rectangle byte size
-    DWORD      dwAlignStrideAlign;     // stride alignment
-    DWORD      dwRops[DD_ROP_SPACE];   // ROPS supported
-    DDSCAPS    ddsCaps;                // DDSCAPS structure has all the general capabilities
-    DWORD      dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwReserved1;            // reserved
-    DWORD      dwReserved2;            // reserved
-    DWORD      dwReserved3;            // reserved
-    DWORD      dwSVBCaps;              // driver specific capabilities for System->Vmem blts
-    DWORD      dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
-    DWORD      dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
-    DWORD      dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
-    DWORD      dwVSBCaps;              // driver specific capabilities for Vmem->System blts
-    DWORD      dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
-    DWORD      dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
-    DWORD      dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
-    DWORD      dwSSBCaps;              // driver specific capabilities for System->System blts
-    DWORD      dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
-    DWORD      dwSSBFXCaps;            // driver FX capabilities for System->System blts
-    DWORD      dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
-    DWORD      dwReserved4;            // reserved
-    DWORD      dwReserved5;            // reserved
-    DWORD      dwReserved6;            // reserved
-} DDCAPS_DX3;
-typedef DDCAPS_DX3 FAR* LPDDCAPS_DX3;
-
-/*
- * This structure is the DDCAPS structure as it was in version 5 of Direct X.
- * It is present for back compatability.
- */
-typedef struct _DDCAPS_DX5
-{
-/*  0*/ DWORD  dwSize;                 // size of the DDDRIVERCAPS structure
-/*  4*/ DWORD  dwCaps;                 // driver specific capabilities
-/*  8*/ DWORD  dwCaps2;                // more driver specific capabilites
-/*  c*/ DWORD  dwCKeyCaps;             // color key capabilities of the surface
-/* 10*/ DWORD  dwFXCaps;               // driver specific stretching and effects capabilites
-/* 14*/ DWORD  dwFXAlphaCaps;          // alpha driver specific capabilities
-/* 18*/ DWORD  dwPalCaps;              // palette capabilities
-/* 1c*/ DWORD  dwSVCaps;               // stereo vision capabilities
-/* 20*/ DWORD  dwAlphaBltConstBitDepths;       // DDBD_2,4,8
-/* 24*/ DWORD  dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
-/* 28*/ DWORD  dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
-/* 2c*/ DWORD  dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
-/* 30*/ DWORD  dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
-/* 34*/ DWORD  dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
-/* 38*/ DWORD  dwZBufferBitDepths;             // DDBD_8,16,24,32
-/* 3c*/ DWORD  dwVidMemTotal;          // total amount of video memory
-/* 40*/ DWORD  dwVidMemFree;           // amount of free video memory
-/* 44*/ DWORD  dwMaxVisibleOverlays;   // maximum number of visible overlays
-/* 48*/ DWORD  dwCurrVisibleOverlays;  // current number of visible overlays
-/* 4c*/ DWORD  dwNumFourCCCodes;       // number of four cc codes
-/* 50*/ DWORD  dwAlignBoundarySrc;     // source rectangle alignment
-/* 54*/ DWORD  dwAlignSizeSrc;         // source rectangle byte size
-/* 58*/ DWORD  dwAlignBoundaryDest;    // dest rectangle alignment
-/* 5c*/ DWORD  dwAlignSizeDest;        // dest rectangle byte size
-/* 60*/ DWORD  dwAlignStrideAlign;     // stride alignment
-/* 64*/ DWORD  dwRops[DD_ROP_SPACE];   // ROPS supported
-/* 84*/ DDSCAPS        ddsCaps;                // DDSCAPS structure has all the general capabilities
-/* 88*/ DWORD  dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 8c*/ DWORD  dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 90*/ DWORD  dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 94*/ DWORD  dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 98*/ DWORD  dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 9c*/ DWORD  dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* a0*/ DWORD  dwReserved1;            // reserved
-/* a4*/ DWORD  dwReserved2;            // reserved
-/* a8*/ DWORD  dwReserved3;            // reserved
-/* ac*/ DWORD  dwSVBCaps;              // driver specific capabilities for System->Vmem blts
-/* b0*/ DWORD  dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
-/* b4*/ DWORD  dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
-/* b8*/ DWORD  dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
-/* d8*/ DWORD  dwVSBCaps;              // driver specific capabilities for Vmem->System blts
-/* dc*/ DWORD  dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
-/* e0*/ DWORD  dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
-/* e4*/ DWORD  dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
-/*104*/ DWORD  dwSSBCaps;              // driver specific capabilities for System->System blts
-/*108*/ DWORD  dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
-/*10c*/ DWORD  dwSSBFXCaps;            // driver FX capabilities for System->System blts
-/*110*/ DWORD  dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
-// Members added for DX5:
-/*130*/ DWORD  dwMaxVideoPorts;        // maximum number of usable video ports
-/*134*/ DWORD  dwCurrVideoPorts;       // current number of video ports used
-/*138*/ DWORD  dwSVBCaps2;             // more driver specific capabilities for System->Vmem blts
-/*13c*/ DWORD  dwNLVBCaps;               // driver specific capabilities for non-local->local vidmem blts
-/*140*/ DWORD  dwNLVBCaps2;              // more driver specific capabilities non-local->local vidmem blts
-/*144*/ DWORD  dwNLVBCKeyCaps;           // driver color key capabilities for non-local->local vidmem blts
-/*148*/ DWORD  dwNLVBFXCaps;             // driver FX capabilities for non-local->local blts
-/*14c*/ DWORD  dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
-} DDCAPS_DX5;
-typedef DDCAPS_DX5 FAR* LPDDCAPS_DX5;
-
-typedef struct _DDCAPS_DX6
-{
-/*  0*/ DWORD  dwSize;                 // size of the DDDRIVERCAPS structure
-/*  4*/ DWORD  dwCaps;                 // driver specific capabilities
-/*  8*/ DWORD  dwCaps2;                // more driver specific capabilites
-/*  c*/ DWORD  dwCKeyCaps;             // color key capabilities of the surface
-/* 10*/ DWORD  dwFXCaps;               // driver specific stretching and effects capabilites
-/* 14*/ DWORD  dwFXAlphaCaps;          // alpha caps
-/* 18*/ DWORD  dwPalCaps;              // palette capabilities
-/* 1c*/ DWORD  dwSVCaps;               // stereo vision capabilities
-/* 20*/ DWORD  dwAlphaBltConstBitDepths;       // DDBD_2,4,8
-/* 24*/ DWORD  dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
-/* 28*/ DWORD  dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
-/* 2c*/ DWORD  dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
-/* 30*/ DWORD  dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
-/* 34*/ DWORD  dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
-/* 38*/ DWORD  dwZBufferBitDepths;             // DDBD_8,16,24,32
-/* 3c*/ DWORD  dwVidMemTotal;          // total amount of video memory
-/* 40*/ DWORD  dwVidMemFree;           // amount of free video memory
-/* 44*/ DWORD  dwMaxVisibleOverlays;   // maximum number of visible overlays
-/* 48*/ DWORD  dwCurrVisibleOverlays;  // current number of visible overlays
-/* 4c*/ DWORD  dwNumFourCCCodes;       // number of four cc codes
-/* 50*/ DWORD  dwAlignBoundarySrc;     // source rectangle alignment
-/* 54*/ DWORD  dwAlignSizeSrc;         // source rectangle byte size
-/* 58*/ DWORD  dwAlignBoundaryDest;    // dest rectangle alignment
-/* 5c*/ DWORD  dwAlignSizeDest;        // dest rectangle byte size
-/* 60*/ DWORD  dwAlignStrideAlign;     // stride alignment
-/* 64*/ DWORD  dwRops[DD_ROP_SPACE];   // ROPS supported
-/* 84*/ DDSCAPS        ddsOldCaps;             // Was DDSCAPS  ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
-/* 88*/ DWORD  dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 8c*/ DWORD  dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 90*/ DWORD  dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 94*/ DWORD  dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 98*/ DWORD  dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 9c*/ DWORD  dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* a0*/ DWORD  dwReserved1;            // reserved
-/* a4*/ DWORD  dwReserved2;            // reserved
-/* a8*/ DWORD  dwReserved3;            // reserved
-/* ac*/ DWORD  dwSVBCaps;              // driver specific capabilities for System->Vmem blts
-/* b0*/ DWORD  dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
-/* b4*/ DWORD  dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
-/* b8*/ DWORD  dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
-/* d8*/ DWORD  dwVSBCaps;              // driver specific capabilities for Vmem->System blts
-/* dc*/ DWORD  dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
-/* e0*/ DWORD  dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
-/* e4*/ DWORD  dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
-/*104*/ DWORD  dwSSBCaps;              // driver specific capabilities for System->System blts
-/*108*/ DWORD  dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
-/*10c*/ DWORD  dwSSBFXCaps;            // driver FX capabilities for System->System blts
-/*110*/ DWORD  dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
-/*130*/ DWORD  dwMaxVideoPorts;        // maximum number of usable video ports
-/*134*/ DWORD  dwCurrVideoPorts;       // current number of video ports used
-/*138*/ DWORD  dwSVBCaps2;             // more driver specific capabilities for System->Vmem blts
-/*13c*/ DWORD  dwNLVBCaps;               // driver specific capabilities for non-local->local vidmem blts
-/*140*/ DWORD  dwNLVBCaps2;              // more driver specific capabilities non-local->local vidmem blts
-/*144*/ DWORD  dwNLVBCKeyCaps;           // driver color key capabilities for non-local->local vidmem blts
-/*148*/ DWORD  dwNLVBFXCaps;             // driver FX capabilities for non-local->local blts
-/*14c*/ DWORD  dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
-// Members added for DX6 release
-/*16c*/ DDSCAPS2 ddsCaps;               // Surface Caps
-} DDCAPS_DX6;
-typedef DDCAPS_DX6 FAR* LPDDCAPS_DX6;
-
-
-#if DIRECTDRAW_VERSION <= 0x300
-    typedef DDCAPS_DX3 DDCAPS;
-#elif DIRECTDRAW_VERSION <= 0x500
-    typedef DDCAPS_DX5 DDCAPS;
-#else
-    typedef DDCAPS_DX6 DDCAPS;
-#endif
-
-typedef DDCAPS FAR* LPDDCAPS;
-
-
-
-/*
- * DDPIXELFORMAT
- */
-typedef struct _DDPIXELFORMAT
-{
-    DWORD      dwSize;                 // size of structure
-    DWORD      dwFlags;                // pixel format flags
-    DWORD      dwFourCC;               // (FOURCC code)
-    union
-    {
-       DWORD   dwRGBBitCount;          // how many bits per pixel
-       DWORD   dwYUVBitCount;          // how many bits per pixel
-       DWORD   dwZBufferBitDepth;      // how many total bits/pixel in z buffer (including any stencil bits)
-       DWORD   dwAlphaBitDepth;        // how many bits for alpha channels
-       DWORD   dwLuminanceBitCount;    // how many bits per pixel
-        DWORD   dwBumpBitCount;         // how many bits per "buxel", total
-    } DUMMYUNIONNAMEN(1);
-    union
-    {
-       DWORD   dwRBitMask;             // mask for red bit
-       DWORD   dwYBitMask;             // mask for Y bits
-       DWORD   dwStencilBitDepth;      // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits)
-       DWORD   dwLuminanceBitMask;     // mask for luminance bits
-        DWORD   dwBumpDuBitMask;        // mask for bump map U delta bits
-    } DUMMYUNIONNAMEN(2);
-    union
-    {
-       DWORD   dwGBitMask;             // mask for green bits
-       DWORD   dwUBitMask;             // mask for U bits
-       DWORD   dwZBitMask;             // mask for Z bits
-        DWORD   dwBumpDvBitMask;        // mask for bump map V delta bits
-    } DUMMYUNIONNAMEN(3);
-    union
-    {
-       DWORD   dwBBitMask;             // mask for blue bits
-       DWORD   dwVBitMask;             // mask for V bits
-       DWORD   dwStencilBitMask;       // mask for stencil bits
-        DWORD   dwBumpLuminanceBitMask; // mask for luminance in bump map
-    } DUMMYUNIONNAMEN(4);
-    union
-    {
-       DWORD   dwRGBAlphaBitMask;      // mask for alpha channel
-       DWORD   dwYUVAlphaBitMask;      // mask for alpha channel
-        DWORD   dwLuminanceAlphaBitMask;// mask for alpha channel
-       DWORD   dwRGBZBitMask;          // mask for Z channel
-       DWORD   dwYUVZBitMask;          // mask for Z channel
-    } DUMMYUNIONNAMEN(5);
-} DDPIXELFORMAT;
-
-typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT;
-
-/*
- * DDOVERLAYFX
- */
-typedef struct _DDOVERLAYFX
-{
-    DWORD      dwSize;                         // size of structure
-    DWORD      dwAlphaEdgeBlendBitDepth;       // Bit depth used to specify constant for alpha edge blend
-    DWORD      dwAlphaEdgeBlend;               // Constant to use as alpha for edge blend
-    DWORD      dwReserved;
-    DWORD      dwAlphaDestConstBitDepth;       // Bit depth used to specify alpha constant for destination
-    union
-    {
-       DWORD   dwAlphaDestConst;               // Constant to use as alpha channel for dest
-       LPDIRECTDRAWSURFACE lpDDSAlphaDest;     // Surface to use as alpha channel for dest
-    } DUMMYUNIONNAMEN(1);
-    DWORD      dwAlphaSrcConstBitDepth;        // Bit depth used to specify alpha constant for source
-    union
-    {
-       DWORD   dwAlphaSrcConst;                // Constant to use as alpha channel for src
-       LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      // Surface to use as alpha channel for src
-    } DUMMYUNIONNAMEN(2);
-    DDCOLORKEY dckDestColorkey;                // DestColorkey override
-    DDCOLORKEY dckSrcColorkey;                 // DestColorkey override
-    DWORD       dwDDFX;                         // Overlay FX
-    DWORD      dwFlags;                        // flags
-} DDOVERLAYFX;
-
-typedef DDOVERLAYFX FAR *LPDDOVERLAYFX;
-
-
-/*
- * DDBLTBATCH: BltBatch entry structure
- */
-typedef struct _DDBLTBATCH
-{
-    LPRECT             lprDest;
-    LPDIRECTDRAWSURFACE        lpDDSSrc;
-    LPRECT             lprSrc;
-    DWORD              dwFlags;
-    LPDDBLTFX          lpDDBltFx;
-} DDBLTBATCH;
-
-typedef DDBLTBATCH FAR * LPDDBLTBATCH;
-
-
-/*
- * DDGAMMARAMP
- */
-typedef struct _DDGAMMARAMP
-{
-    WORD                red[256];
-    WORD                green[256];
-    WORD                blue[256];
-} DDGAMMARAMP;
-typedef DDGAMMARAMP FAR * LPDDGAMMARAMP;
-
-/*
- *  This is the structure within which DirectDraw returns data about the current graphics driver and chipset
- */
-
-#define MAX_DDDEVICEID_STRING          512
-
-typedef struct tagDDDEVICEIDENTIFIER
-{
-    /*
-     * These elements are for presentation to the user only. They should not be used to identify particular
-     * drivers, since this is unreliable and many different strings may be associated with the same
-     * device, and the same driver from different vendors.
-     */
-    char    szDriver[MAX_DDDEVICEID_STRING];
-    char    szDescription[MAX_DDDEVICEID_STRING];
-
-    /*
-     * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
-     * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
-     * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
-     *
-     * This version has the form:
-     *  wProduct = HIWORD(liDriverVersion.HighPart)
-     *  wVersion = LOWORD(liDriverVersion.HighPart)
-     *  wSubVersion = HIWORD(liDriverVersion.LowPart)
-     *  wBuild = LOWORD(liDriverVersion.LowPart)
-     */
-#ifdef _WIN32
-    LARGE_INTEGER liDriverVersion;      /* Defined for applications and other 32 bit components */
-#else
-    DWORD   dwDriverVersionLowPart;     /* Defined for 16 bit driver components */
-    DWORD   dwDriverVersionHighPart;
-#endif
-
-
-    /*
-     * These elements can be used to identify particular chipsets. Use with extreme caution. 
-     *   dwVendorId     Identifies the manufacturer. May be zero if unknown.
-     *   dwDeviceId     Identifies the type of chipset. May be zero if unknown.
-     *   dwSubSysId     Identifies the subsystem, typically this means the particular board. May be zero if unknown.
-     *   dwRevision     Identifies the revision level of the chipset. May be zero if unknown.
-     */
-    DWORD   dwVendorId;
-    DWORD   dwDeviceId;
-    DWORD   dwSubSysId;
-    DWORD   dwRevision;
-
-    /*
-     * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
-     * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
-     * reprofile the graphics subsystem.
-     * This element can also be used to identify particular problematic drivers.
-     */
-    GUID    guidDeviceIdentifier;
-} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
-
-/*
- * Flags for the IDirectDraw4::GetDeviceIdentifier method
- */
-
-/*
- * This flag causes GetDeviceIdentifier to return information about the host (typically 2D) adapter in a system equipped
- * with a stacked secondary 3D adapter. Such an adapter appears to the application as if it were part of the
- * host adapter, but is typically physcially located on a separate card. The stacked secondary's information is
- * returned when GetDeviceIdentifier's dwFlags field is zero, since this most accurately reflects the qualities
- * of the DirectDraw object involved.
- */
-#define DDGDI_GETHOSTIDENTIFIER         0x00000001L
-
-
-
-/*
- * callbacks
- */
-typedef DWORD  (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
-#ifdef STREAMING
-typedef DWORD  (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD);
-#endif
-
-
-/*
- * INTERACES FOLLOW:
- *     IDirectDraw
- *     IDirectDrawClipper
- *     IDirectDrawPalette
- *     IDirectDrawSurface
- */
-
-/*
- * IDirectDraw
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDraw
-DECLARE_INTERFACE_( IDirectDraw, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDraw methods ***/
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
-    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
-    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
-    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
-    STDMETHOD(FlipToGDISurface)(THIS) PURE;
-    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
-    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
-    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
-    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
-    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
-    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
-    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
-    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDraw_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDraw_AddRef(p)                       (p)->lpVtbl->AddRef(p)
-#define IDirectDraw_Release(p)                      (p)->lpVtbl->Release(p)
-#define IDirectDraw_Compact(p)                      (p)->lpVtbl->Compact(p)
-#define IDirectDraw_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
-#define IDirectDraw_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
-#define IDirectDraw_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
-#define IDirectDraw_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
-#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
-#define IDirectDraw_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
-#define IDirectDraw_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
-#define IDirectDraw_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
-#define IDirectDraw_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
-#define IDirectDraw_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
-#define IDirectDraw_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
-#define IDirectDraw_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
-#define IDirectDraw_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
-#define IDirectDraw_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
-#define IDirectDraw_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
-#define IDirectDraw_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
-#define IDirectDraw_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
-#define IDirectDraw_SetDisplayMode(p, a, b, c)      (p)->lpVtbl->SetDisplayMode(p, a, b, c)
-#define IDirectDraw_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
-#else
-#define IDirectDraw_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
-#define IDirectDraw_AddRef(p)                       (p)->AddRef()
-#define IDirectDraw_Release(p)                      (p)->Release()
-#define IDirectDraw_Compact(p)                      (p)->Compact()
-#define IDirectDraw_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
-#define IDirectDraw_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
-#define IDirectDraw_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
-#define IDirectDraw_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
-#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
-#define IDirectDraw_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
-#define IDirectDraw_FlipToGDISurface(p)             (p)->FlipToGDISurface()
-#define IDirectDraw_GetCaps(p, a, b)                (p)->GetCaps(a, b)
-#define IDirectDraw_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
-#define IDirectDraw_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
-#define IDirectDraw_GetGDISurface(p, a)             (p)->GetGDISurface(a)
-#define IDirectDraw_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
-#define IDirectDraw_GetScanLine(p, a)               (p)->GetScanLine(a)
-#define IDirectDraw_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
-#define IDirectDraw_Initialize(p, a)                (p)->Initialize(a)
-#define IDirectDraw_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
-#define IDirectDraw_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
-#define IDirectDraw_SetDisplayMode(p, a, b, c)      (p)->SetDisplayMode(a, b, c)
-#define IDirectDraw_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
-#endif
-
-#endif
-
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDraw2
-DECLARE_INTERFACE_( IDirectDraw2, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDraw methods ***/
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
-    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
-    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
-    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
-    STDMETHOD(FlipToGDISurface)(THIS) PURE;
-    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
-    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
-    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
-    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
-    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
-    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
-    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
-    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
-};
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDraw2_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDraw2_AddRef(p)                       (p)->lpVtbl->AddRef(p)
-#define IDirectDraw2_Release(p)                      (p)->lpVtbl->Release(p)
-#define IDirectDraw2_Compact(p)                      (p)->lpVtbl->Compact(p)
-#define IDirectDraw2_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
-#define IDirectDraw2_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
-#define IDirectDraw2_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
-#define IDirectDraw2_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
-#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
-#define IDirectDraw2_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
-#define IDirectDraw2_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
-#define IDirectDraw2_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
-#define IDirectDraw2_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
-#define IDirectDraw2_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
-#define IDirectDraw2_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
-#define IDirectDraw2_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
-#define IDirectDraw2_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
-#define IDirectDraw2_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
-#define IDirectDraw2_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
-#define IDirectDraw2_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
-#define IDirectDraw2_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
-#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
-#define IDirectDraw2_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
-#define IDirectDraw2_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
-#else
-#define IDirectDraw2_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
-#define IDirectDraw2_AddRef(p)                       (p)->AddRef()
-#define IDirectDraw2_Release(p)                      (p)->Release()
-#define IDirectDraw2_Compact(p)                      (p)->Compact()
-#define IDirectDraw2_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
-#define IDirectDraw2_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
-#define IDirectDraw2_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
-#define IDirectDraw2_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
-#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
-#define IDirectDraw2_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
-#define IDirectDraw2_FlipToGDISurface(p)             (p)->FlipToGDISurface()
-#define IDirectDraw2_GetCaps(p, a, b)                (p)->GetCaps(a, b)
-#define IDirectDraw2_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
-#define IDirectDraw2_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
-#define IDirectDraw2_GetGDISurface(p, a)             (p)->GetGDISurface(a)
-#define IDirectDraw2_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
-#define IDirectDraw2_GetScanLine(p, a)               (p)->GetScanLine(a)
-#define IDirectDraw2_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
-#define IDirectDraw2_Initialize(p, a)                (p)->Initialize(a)
-#define IDirectDraw2_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
-#define IDirectDraw2_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
-#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
-#define IDirectDraw2_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
-#define IDirectDraw2_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
-#endif
-
-#endif
-
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDraw4
-DECLARE_INTERFACE_( IDirectDraw4, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDraw methods ***/
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 FAR *, IUnknown FAR *) PURE;
-    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 FAR * ) PURE;
-    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
-    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ) PURE;
-    STDMETHOD(FlipToGDISurface)(THIS) PURE;
-    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
-    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
-    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
-    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4 FAR *) PURE;
-    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
-    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
-    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
-    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
-    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
-    /*** Added in the V4 Interface ***/
-    STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE;
-    STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
-    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
-    STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER, DWORD ) PURE;
-};
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDraw4_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDraw4_AddRef(p)                       (p)->lpVtbl->AddRef(p)
-#define IDirectDraw4_Release(p)                      (p)->lpVtbl->Release(p)
-#define IDirectDraw4_Compact(p)                      (p)->lpVtbl->Compact(p)
-#define IDirectDraw4_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
-#define IDirectDraw4_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
-#define IDirectDraw4_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
-#define IDirectDraw4_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
-#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
-#define IDirectDraw4_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
-#define IDirectDraw4_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
-#define IDirectDraw4_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
-#define IDirectDraw4_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
-#define IDirectDraw4_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
-#define IDirectDraw4_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
-#define IDirectDraw4_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
-#define IDirectDraw4_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
-#define IDirectDraw4_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
-#define IDirectDraw4_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
-#define IDirectDraw4_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
-#define IDirectDraw4_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
-#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
-#define IDirectDraw4_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
-#define IDirectDraw4_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
-#define IDirectDraw4_GetSurfaceFromDC(p, a, b)       (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
-#define IDirectDraw4_RestoreAllSurfaces(p)           (p)->lpVtbl->RestoreAllSurfaces(p)
-#define IDirectDraw4_TestCooperativeLevel(p)         (p)->lpVtbl->TestCooperativeLevel(p)
-#define IDirectDraw4_GetDeviceIdentifier(p,a,b)      (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
-#else
-#define IDirectDraw4_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
-#define IDirectDraw4_AddRef(p)                       (p)->AddRef()
-#define IDirectDraw4_Release(p)                      (p)->Release()
-#define IDirectDraw4_Compact(p)                      (p)->Compact()
-#define IDirectDraw4_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
-#define IDirectDraw4_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
-#define IDirectDraw4_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
-#define IDirectDraw4_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
-#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
-#define IDirectDraw4_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
-#define IDirectDraw4_FlipToGDISurface(p)             (p)->FlipToGDISurface()
-#define IDirectDraw4_GetCaps(p, a, b)                (p)->GetCaps(a, b)
-#define IDirectDraw4_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
-#define IDirectDraw4_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
-#define IDirectDraw4_GetGDISurface(p, a)             (p)->GetGDISurface(a)
-#define IDirectDraw4_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
-#define IDirectDraw4_GetScanLine(p, a)               (p)->GetScanLine(a)
-#define IDirectDraw4_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
-#define IDirectDraw4_Initialize(p, a)                (p)->Initialize(a)
-#define IDirectDraw4_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
-#define IDirectDraw4_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
-#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
-#define IDirectDraw4_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
-#define IDirectDraw4_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
-#define IDirectDraw4_GetSurfaceFromDC(p, a, b)       (p)->GetSurfaceFromDC(a, b)
-#define IDirectDraw4_RestoreAllSurfaces(p)           (p)->RestoreAllSurfaces()
-#define IDirectDraw4_TestCooperativeLevel(p)         (p)->TestCooperativeLevel()
-#define IDirectDraw4_GetDeviceIdentifier(p,a,b)      (p)->GetDeviceIdentifier(a,b)
-#endif
-
-#endif
-
-
-/*
- * IDirectDrawPalette
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawPalette
-DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawPalette methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
-    STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawPalette_QueryInterface(p, a, b)      (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDrawPalette_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawPalette_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawPalette_GetCaps(p, a)                (p)->lpVtbl->GetCaps(p, a)
-#define IDirectDrawPalette_GetEntries(p, a, b, c, d)    (p)->lpVtbl->GetEntries(p, a, b, c, d)
-#define IDirectDrawPalette_Initialize(p, a, b, c)       (p)->lpVtbl->Initialize(p, a, b, c)
-#define IDirectDrawPalette_SetEntries(p, a, b, c, d)    (p)->lpVtbl->SetEntries(p, a, b, c, d)
-#else
-#define IDirectDrawPalette_QueryInterface(p, a, b)      (p)->QueryInterface(a, b)
-#define IDirectDrawPalette_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawPalette_Release(p)                   (p)->Release()
-#define IDirectDrawPalette_GetCaps(p, a)                (p)->GetCaps(a)
-#define IDirectDrawPalette_GetEntries(p, a, b, c, d)    (p)->GetEntries(a, b, c, d)
-#define IDirectDrawPalette_Initialize(p, a, b, c)       (p)->Initialize(a, b, c)
-#define IDirectDrawPalette_SetEntries(p, a, b, c, d)    (p)->SetEntries(a, b, c, d)
-#endif
-
-#endif
-
-
-
-/*
- * IDirectDrawClipper
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawClipper
-DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawClipper methods ***/
-    STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
-    STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE;
-    STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE;
-    STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE;
-    STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawClipper_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDrawClipper_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IDirectDrawClipper_Release(p)               (p)->lpVtbl->Release(p)
-#define IDirectDrawClipper_GetClipList(p, a, b, c)  (p)->lpVtbl->GetClipList(p, a, b, c)
-#define IDirectDrawClipper_GetHWnd(p, a)            (p)->lpVtbl->GetHWnd(p, a)
-#define IDirectDrawClipper_Initialize(p, a, b)      (p)->lpVtbl->Initialize(p, a, b)
-#define IDirectDrawClipper_IsClipListChanged(p, a)  (p)->lpVtbl->IsClipListChanged(p, a)
-#define IDirectDrawClipper_SetClipList(p, a, b)     (p)->lpVtbl->SetClipList(p, a, b)
-#define IDirectDrawClipper_SetHWnd(p, a, b)         (p)->lpVtbl->SetHWnd(p, a, b)
-#else
-#define IDirectDrawClipper_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
-#define IDirectDrawClipper_AddRef(p)                (p)->AddRef()
-#define IDirectDrawClipper_Release(p)               (p)->Release()
-#define IDirectDrawClipper_GetClipList(p, a, b, c)  (p)->GetClipList(a, b, c)
-#define IDirectDrawClipper_GetHWnd(p, a)            (p)->GetHWnd(a)
-#define IDirectDrawClipper_Initialize(p, a, b)      (p)->Initialize(a, b)
-#define IDirectDrawClipper_IsClipListChanged(p, a)  (p)->IsClipListChanged(a)
-#define IDirectDrawClipper_SetClipList(p, a, b)     (p)->SetClipList(a, b)
-#define IDirectDrawClipper_SetHWnd(p, a, b)         (p)->SetHWnd(a, b)
-#endif
-
-#endif
-
-/*
- * IDirectDrawSurface and related interfaces
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface
-DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawSurface methods ***/
-    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
-    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
-    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
-    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
-    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
-    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE;
-    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
-    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
-    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
-    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
-    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
-    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
-    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
-    STDMETHOD(IsLost)(THIS) PURE;
-    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
-    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
-    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
-    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
-    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
-    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawSurface_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectDrawSurface_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawSurface_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
-#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
-#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
-#define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
-#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
-#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
-#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
-#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
-#define IDirectDrawSurface_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
-#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
-#define IDirectDrawSurface_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
-#define IDirectDrawSurface_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
-#define IDirectDrawSurface_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
-#define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
-#define IDirectDrawSurface_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
-#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
-#define IDirectDrawSurface_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
-#define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
-#define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
-#define IDirectDrawSurface_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectDrawSurface_IsLost(p)                    (p)->lpVtbl->IsLost(p)
-#define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirectDrawSurface_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#define IDirectDrawSurface_Restore(p)                   (p)->lpVtbl->Restore(p)
-#define IDirectDrawSurface_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
-#define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
-#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
-#define IDirectDrawSurface_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
-#define IDirectDrawSurface_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
-#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
-#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
-#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
-#else
-#define IDirectDrawSurface_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectDrawSurface_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawSurface_Release(p)                   (p)->Release()
-#define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
-#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
-#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
-#define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
-#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
-#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
-#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
-#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
-#define IDirectDrawSurface_Flip(p,a,b)                  (p)->Flip(a,b)
-#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
-#define IDirectDrawSurface_GetBltStatus(p,a)            (p)->GetBltStatus(a)
-#define IDirectDrawSurface_GetCaps(p,b)                 (p)->GetCaps(b)
-#define IDirectDrawSurface_GetClipper(p,a)              (p)->GetClipper(a)
-#define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
-#define IDirectDrawSurface_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
-#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
-#define IDirectDrawSurface_GetPalette(p,a)              (p)->GetPalette(a)
-#define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
-#define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
-#define IDirectDrawSurface_Initialize(p,a,b)            (p)->Initialize(a,b)
-#define IDirectDrawSurface_IsLost(p)                    (p)->IsLost()
-#define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirectDrawSurface_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#define IDirectDrawSurface_Restore(p)                   (p)->Restore()
-#define IDirectDrawSurface_SetClipper(p,a)              (p)->SetClipper(a)
-#define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
-#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
-#define IDirectDrawSurface_SetPalette(p,a)              (p)->SetPalette(a)
-#define IDirectDrawSurface_Unlock(p,b)                  (p)->Unlock(b)
-#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
-#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
-#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
-#endif
-
-/*
- * IDirectDrawSurface2 and related interfaces
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface2
-DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawSurface methods ***/
-    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE;
-    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
-    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE;
-    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
-    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE;
-    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE;
-    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE;
-    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE;
-    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
-    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
-    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
-    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
-    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
-    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
-    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
-    STDMETHOD(IsLost)(THIS) PURE;
-    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
-    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
-    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
-    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
-    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
-    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
-    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
-    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawSurface2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectDrawSurface2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawSurface2_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
-#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
-#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
-#define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
-#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
-#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
-#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
-#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
-#define IDirectDrawSurface2_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
-#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
-#define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
-#define IDirectDrawSurface2_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
-#define IDirectDrawSurface2_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
-#define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
-#define IDirectDrawSurface2_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
-#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
-#define IDirectDrawSurface2_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
-#define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
-#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
-#define IDirectDrawSurface2_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectDrawSurface2_IsLost(p)                    (p)->lpVtbl->IsLost(p)
-#define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#define IDirectDrawSurface2_Restore(p)                   (p)->lpVtbl->Restore(p)
-#define IDirectDrawSurface2_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
-#define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
-#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
-#define IDirectDrawSurface2_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
-#define IDirectDrawSurface2_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
-#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
-#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
-#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
-#define IDirectDrawSurface2_GetDDInterface(p,a)                 (p)->lpVtbl->GetDDInterface(p,a)
-#define IDirectDrawSurface2_PageLock(p,a)               (p)->lpVtbl->PageLock(p,a)
-#define IDirectDrawSurface2_PageUnlock(p,a)             (p)->lpVtbl->PageUnlock(p,a)
-#else
-#define IDirectDrawSurface2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectDrawSurface2_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawSurface2_Release(p)                   (p)->Release()
-#define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
-#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
-#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
-#define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
-#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
-#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
-#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
-#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
-#define IDirectDrawSurface2_Flip(p,a,b)                  (p)->Flip(a,b)
-#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
-#define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->GetBltStatus(a)
-#define IDirectDrawSurface2_GetCaps(p,b)                 (p)->GetCaps(b)
-#define IDirectDrawSurface2_GetClipper(p,a)              (p)->GetClipper(a)
-#define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
-#define IDirectDrawSurface2_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
-#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
-#define IDirectDrawSurface2_GetPalette(p,a)              (p)->GetPalette(a)
-#define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
-#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
-#define IDirectDrawSurface2_Initialize(p,a,b)            (p)->Initialize(a,b)
-#define IDirectDrawSurface2_IsLost(p)                    (p)->IsLost()
-#define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#define IDirectDrawSurface2_Restore(p)                   (p)->Restore()
-#define IDirectDrawSurface2_SetClipper(p,a)              (p)->SetClipper(a)
-#define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
-#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
-#define IDirectDrawSurface2_SetPalette(p,a)              (p)->SetPalette(a)
-#define IDirectDrawSurface2_Unlock(p,b)                  (p)->Unlock(b)
-#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
-#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
-#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
-#define IDirectDrawSurface2_GetDDInterface(p,a)                 (p)->GetDDInterface(a)
-#define IDirectDrawSurface2_PageLock(p,a)               (p)->PageLock(a)
-#define IDirectDrawSurface2_PageUnlock(p,a)             (p)->PageUnlock(a)
-#endif
-
-/*
- * IDirectDrawSurface3 and related interfaces
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface3
-DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawSurface methods ***/
-    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE;
-    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
-    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE;
-    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
-    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE;
-    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE;
-    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE;
-    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE;
-    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
-    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
-    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
-    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
-    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
-    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
-    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
-    STDMETHOD(IsLost)(THIS) PURE;
-    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
-    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
-    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
-    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
-    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
-    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
-    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
-    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
-    /*** Added in the V3 interface ***/
-    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawSurface3_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectDrawSurface3_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawSurface3_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
-#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
-#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
-#define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
-#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
-#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
-#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
-#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
-#define IDirectDrawSurface3_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
-#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
-#define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
-#define IDirectDrawSurface3_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
-#define IDirectDrawSurface3_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
-#define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
-#define IDirectDrawSurface3_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
-#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
-#define IDirectDrawSurface3_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
-#define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
-#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
-#define IDirectDrawSurface3_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectDrawSurface3_IsLost(p)                    (p)->lpVtbl->IsLost(p)
-#define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#define IDirectDrawSurface3_Restore(p)                   (p)->lpVtbl->Restore(p)
-#define IDirectDrawSurface3_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
-#define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
-#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
-#define IDirectDrawSurface3_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
-#define IDirectDrawSurface3_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
-#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
-#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
-#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
-#define IDirectDrawSurface3_GetDDInterface(p,a)                 (p)->lpVtbl->GetDDInterface(p,a)
-#define IDirectDrawSurface3_PageLock(p,a)               (p)->lpVtbl->PageLock(p,a)
-#define IDirectDrawSurface3_PageUnlock(p,a)             (p)->lpVtbl->PageUnlock(p,a)
-#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b)       (p)->lpVtbl->SetSurfaceDesc(p,a,b)
-#else
-#define IDirectDrawSurface3_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectDrawSurface3_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawSurface3_Release(p)                   (p)->Release()
-#define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
-#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
-#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
-#define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
-#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
-#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
-#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
-#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
-#define IDirectDrawSurface3_Flip(p,a,b)                  (p)->Flip(a,b)
-#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
-#define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->GetBltStatus(a)
-#define IDirectDrawSurface3_GetCaps(p,b)                 (p)->GetCaps(b)
-#define IDirectDrawSurface3_GetClipper(p,a)              (p)->GetClipper(a)
-#define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
-#define IDirectDrawSurface3_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
-#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
-#define IDirectDrawSurface3_GetPalette(p,a)              (p)->GetPalette(a)
-#define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
-#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
-#define IDirectDrawSurface3_Initialize(p,a,b)            (p)->Initialize(a,b)
-#define IDirectDrawSurface3_IsLost(p)                    (p)->IsLost()
-#define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#define IDirectDrawSurface3_Restore(p)                   (p)->Restore()
-#define IDirectDrawSurface3_SetClipper(p,a)              (p)->SetClipper(a)
-#define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
-#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
-#define IDirectDrawSurface3_SetPalette(p,a)              (p)->SetPalette(a)
-#define IDirectDrawSurface3_Unlock(p,b)                  (p)->Unlock(b)
-#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
-#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
-#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
-#define IDirectDrawSurface3_GetDDInterface(p,a)                 (p)->GetDDInterface(a)
-#define IDirectDrawSurface3_PageLock(p,a)               (p)->PageLock(a)
-#define IDirectDrawSurface3_PageUnlock(p,a)             (p)->PageUnlock(a)
-#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b)       (p)->SetSurfaceDesc(a,b)
-#endif
-
-/*
- * IDirectDrawSurface4 and related interfaces
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface4
-DECLARE_INTERFACE_( IDirectDrawSurface4, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawSurface methods ***/
-    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4) PURE;
-    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
-    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX) PURE;
-    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
-    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD) PURE;
-    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE4) PURE;
-    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
-    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
-    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4, DWORD) PURE;
-    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE4 FAR *) PURE;
-    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
-    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
-    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
-    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
-    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
-    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
-    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
-    STDMETHOD(IsLost)(THIS) PURE;
-    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
-    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
-    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
-    STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
-    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
-    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
-    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE4) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
-    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
-    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
-    /*** Added in the v3 interface ***/
-    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
-    /*** Added in the v4 interface ***/
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
-    STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
-    STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawSurface4_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectDrawSurface4_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawSurface4_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
-#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
-#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
-#define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
-#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
-#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
-#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
-#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
-#define IDirectDrawSurface4_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
-#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
-#define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
-#define IDirectDrawSurface4_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
-#define IDirectDrawSurface4_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
-#define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
-#define IDirectDrawSurface4_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
-#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
-#define IDirectDrawSurface4_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
-#define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
-#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
-#define IDirectDrawSurface4_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectDrawSurface4_IsLost(p)                    (p)->lpVtbl->IsLost(p)
-#define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#define IDirectDrawSurface4_Restore(p)                   (p)->lpVtbl->Restore(p)
-#define IDirectDrawSurface4_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
-#define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
-#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
-#define IDirectDrawSurface4_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
-#define IDirectDrawSurface4_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
-#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
-#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
-#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
-#define IDirectDrawSurface4_GetDDInterface(p,a)                 (p)->lpVtbl->GetDDInterface(p,a)
-#define IDirectDrawSurface4_PageLock(p,a)               (p)->lpVtbl->PageLock(p,a)
-#define IDirectDrawSurface4_PageUnlock(p,a)             (p)->lpVtbl->PageUnlock(p,a)
-#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b)       (p)->lpVtbl->SetSurfaceDesc(p,a,b)
-#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d)   (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)     (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirectDrawSurface4_FreePrivateData(p,a)        (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirectDrawSurface4_GetUniquenessValue(p, a)     (p)->lpVtbl->GetUniquenessValue(p, a)
-#define IDirectDrawSurface4_ChangeUniquenessValue(p)     (p)->lpVtbl->ChangeUniquenessValue(p)
-#else
-#define IDirectDrawSurface4_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectDrawSurface4_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawSurface4_Release(p)                   (p)->Release()
-#define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
-#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
-#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
-#define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
-#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
-#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
-#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
-#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
-#define IDirectDrawSurface4_Flip(p,a,b)                  (p)->Flip(a,b)
-#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
-#define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->GetBltStatus(a)
-#define IDirectDrawSurface4_GetCaps(p,b)                 (p)->GetCaps(b)
-#define IDirectDrawSurface4_GetClipper(p,a)              (p)->GetClipper(a)
-#define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
-#define IDirectDrawSurface4_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
-#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
-#define IDirectDrawSurface4_GetPalette(p,a)              (p)->GetPalette(a)
-#define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
-#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
-#define IDirectDrawSurface4_Initialize(p,a,b)            (p)->Initialize(a,b)
-#define IDirectDrawSurface4_IsLost(p)                    (p)->IsLost()
-#define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#define IDirectDrawSurface4_Restore(p)                   (p)->Restore()
-#define IDirectDrawSurface4_SetClipper(p,a)              (p)->SetClipper(a)
-#define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
-#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
-#define IDirectDrawSurface4_SetPalette(p,a)              (p)->SetPalette(a)
-#define IDirectDrawSurface4_Unlock(p,b)                  (p)->Unlock(b)
-#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
-#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
-#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
-#define IDirectDrawSurface4_GetDDInterface(p,a)                 (p)->GetDDInterface(a)
-#define IDirectDrawSurface4_PageLock(p,a)               (p)->PageLock(a)
-#define IDirectDrawSurface4_PageUnlock(p,a)             (p)->PageUnlock(a)
-#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b)       (p)->SetSurfaceDesc(a,b)
-#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d)   (p)->SetPrivateData(a,b,c,d)
-#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)     (p)->GetPrivateData(a,b,c)
-#define IDirectDrawSurface4_FreePrivateData(p,a)        (p)->FreePrivateData(a)
-#define IDirectDrawSurface4_GetUniquenessValue(p, a)     (p)->GetUniquenessValue(a)
-#define IDirectDrawSurface4_ChangeUniquenessValue(p)     (p)->ChangeUniquenessValue()
-#endif
-
-
-
-/*
- * IDirectDrawColorControl
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawColorControl
-DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawColorControl methods ***/
-    STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
-    STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawColorControl_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDrawColorControl_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IDirectDrawColorControl_Release(p)               (p)->lpVtbl->Release(p)
-#define IDirectDrawColorControl_GetColorControls(p, a)   (p)->lpVtbl->GetColorControls(p, a)
-#define IDirectDrawColorControl_SetColorControls(p, a)   (p)->lpVtbl->SetColorControls(p, a)
-#else
-#define IDirectDrawColorControl_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
-#define IDirectDrawColorControl_AddRef(p)                (p)->AddRef()
-#define IDirectDrawColorControl_Release(p)               (p)->Release()
-#define IDirectDrawColorControl_GetColorControls(p, a)   (p)->GetColorControls(a)
-#define IDirectDrawColorControl_SetColorControls(p, a)   (p)->SetColorControls(a)
-#endif
-
-#endif
-
-
-/*
- * IDirectDrawGammaControl
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawGammaControl
-DECLARE_INTERFACE_( IDirectDrawGammaControl, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawColorControl methods ***/
-    STDMETHOD(GetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
-    STDMETHOD(SetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawGammaControl_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDrawGammaControl_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IDirectDrawGammaControl_Release(p)               (p)->lpVtbl->Release(p)
-#define IDirectDrawGammaControl_GetGammaRamp(p, a, b)    (p)->lpVtbl->GetGammaRamp(p, a, b)
-#define IDirectDrawGammaControl_SetGammaRamp(p, a, b)    (p)->lpVtbl->SetGammaRamp(p, a, b)
-#else
-#define IDirectDrawGammaControl_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
-#define IDirectDrawGammaControl_AddRef(p)                (p)->AddRef()
-#define IDirectDrawGammaControl_Release(p)               (p)->Release()
-#define IDirectDrawGammaControl_GetGammaRamp(p, a, b)    (p)->GetGammaRamp(a, b)
-#define IDirectDrawGammaControl_SetGammaRamp(p, a, b)    (p)->SetGammaRamp(a, b)
-#endif
-
-#endif
-
-
-
-#endif
-
-
-/*
- * DDSURFACEDESC
- */
-typedef struct _DDSURFACEDESC
-{
-    DWORD              dwSize;                 // size of the DDSURFACEDESC structure
-    DWORD              dwFlags;                // determines what fields are valid
-    DWORD              dwHeight;               // height of surface to be created
-    DWORD              dwWidth;                // width of input surface
-    union
-    {
-        LONG           lPitch;                 // distance to start of next line (return value only)
-        DWORD           dwLinearSize;           // Formless late-allocated optimized surface size
-    } DUMMYUNIONNAMEN(1);
-    DWORD              dwBackBufferCount;      // number of back buffers requested
-    union
-    {
-        DWORD           dwMipMapCount;          // number of mip-map levels requested
-       DWORD           dwZBufferBitDepth;      // depth of Z buffer requested
-       DWORD           dwRefreshRate;          // refresh rate (used when display mode is described)
-    } DUMMYUNIONNAMEN(2);
-    DWORD              dwAlphaBitDepth;        // depth of alpha buffer requested
-    DWORD              dwReserved;             // reserved
-    LPVOID             lpSurface;              // pointer to the associated surface memory
-    DDCOLORKEY         ddckCKDestOverlay;      // color key for destination overlay use
-    DDCOLORKEY         ddckCKDestBlt;          // color key for destination blt use
-    DDCOLORKEY         ddckCKSrcOverlay;       // color key for source overlay use
-    DDCOLORKEY         ddckCKSrcBlt;           // color key for source blt use
-    DDPIXELFORMAT      ddpfPixelFormat;        // pixel format description of the surface
-    DDSCAPS            ddsCaps;                // direct draw surface capabilities
-} DDSURFACEDESC;
-
-/*
- * DDSURFACEDESC2
- */
-typedef struct _DDSURFACEDESC2
-{
-    DWORD              dwSize;                 // size of the DDSURFACEDESC structure
-    DWORD              dwFlags;                // determines what fields are valid
-    DWORD              dwHeight;               // height of surface to be created
-    DWORD              dwWidth;                // width of input surface
-    union
-    {
-        LONG           lPitch;                 // distance to start of next line (return value only)
-        DWORD           dwLinearSize;           // Formless late-allocated optimized surface size
-    } DUMMYUNIONNAMEN(1);
-    DWORD              dwBackBufferCount;      // number of back buffers requested
-    union
-    {
-        DWORD           dwMipMapCount;          // number of mip-map levels requestde
-                                                // dwZBufferBitDepth removed, use ddpfPixelFormat one instead
-       DWORD           dwRefreshRate;          // refresh rate (used when display mode is described)
-    } DUMMYUNIONNAMEN(2);
-    DWORD              dwAlphaBitDepth;        // depth of alpha buffer requested
-    DWORD              dwReserved;             // reserved
-    LPVOID             lpSurface;              // pointer to the associated surface memory
-    DDCOLORKEY         ddckCKDestOverlay;      // color key for destination overlay use
-    DDCOLORKEY         ddckCKDestBlt;          // color key for destination blt use
-    DDCOLORKEY         ddckCKSrcOverlay;       // color key for source overlay use
-    DDCOLORKEY         ddckCKSrcBlt;           // color key for source blt use
-    DDPIXELFORMAT      ddpfPixelFormat;        // pixel format description of the surface
-    DDSCAPS2           ddsCaps;                // direct draw surface capabilities
-    DWORD               dwTextureStage;         // stage in multitexture cascade
-} DDSURFACEDESC2;
-
-/*
- * ddsCaps field is valid.
- */
-#define DDSD_CAPS              0x00000001l     // default
-
-/*
- * dwHeight field is valid.
- */
-#define DDSD_HEIGHT            0x00000002l
-
-/*
- * dwWidth field is valid.
- */
-#define DDSD_WIDTH             0x00000004l
-
-/*
- * lPitch is valid.
- */
-#define DDSD_PITCH             0x00000008l
-
-/*
- * dwBackBufferCount is valid.
- */
-#define DDSD_BACKBUFFERCOUNT   0x00000020l
-
-/*
- * dwZBufferBitDepth is valid.  (shouldnt be used in DDSURFACEDESC2)
- */
-#define DDSD_ZBUFFERBITDEPTH   0x00000040l
-
-/*
- * dwAlphaBitDepth is valid.
- */
-#define DDSD_ALPHABITDEPTH     0x00000080l
-
-
-/*
- * lpSurface is valid.
- */
-#define DDSD_LPSURFACE         0x00000800l
-
-/*
- * ddpfPixelFormat is valid.
- */
-#define DDSD_PIXELFORMAT       0x00001000l
-
-/*
- * ddckCKDestOverlay is valid.
- */
-#define DDSD_CKDESTOVERLAY     0x00002000l
-
-/*
- * ddckCKDestBlt is valid.
- */
-#define DDSD_CKDESTBLT         0x00004000l
-
-/*
- * ddckCKSrcOverlay is valid.
- */
-#define DDSD_CKSRCOVERLAY      0x00008000l
-
-/*
- * ddckCKSrcBlt is valid.
- */
-#define DDSD_CKSRCBLT          0x00010000l
-
-/*
- * dwMipMapCount is valid.
- */
-#define DDSD_MIPMAPCOUNT        0x00020000l
-
- /*
-  * dwRefreshRate is valid
-  */
-#define DDSD_REFRESHRATE       0x00040000l
-
-/*
- * dwLinearSize is valid
- */
-#define DDSD_LINEARSIZE                0x00080000l
-
-/*
- * dwTextureStage is valid
- */
-#define DDSD_TEXTURESTAGE       0x00100000l
-/*
- * All input fields are valid.
- */
-#define DDSD_ALL               0x001ff9eel
-
-
-/*
- * DDOPTSURFACEDESC
- */
-typedef struct _DDOPTSURFACEDESC
-{
-    DWORD       dwSize;             // size of the DDOPTSURFACEDESC structure
-    DWORD       dwFlags;            // determines what fields are valid
-    DDSCAPS2    ddSCaps;            // Common caps like: Memory type
-    DDOSCAPS    ddOSCaps;           // Common caps like: Memory type
-    GUID        guid;               // Compression technique GUID
-    DWORD       dwCompressionRatio; // Compression ratio
-} DDOPTSURFACEDESC;
-
-/*
- * guid field is valid.
- */
-#define DDOSD_GUID                  0x00000001l
-
-/*
- * dwCompressionRatio field is valid.
- */
-#define DDOSD_COMPRESSION_RATIO     0x00000002l
-
-/*
- * ddSCaps field is valid.
- */
-#define DDOSD_SCAPS                 0x00000004l
-
-/*
- * ddOSCaps field is valid.
- */
-#define DDOSD_OSCAPS                0x00000008l
-
-/*
- * All input fields are valid.
- */
-#define DDOSD_ALL                   0x0000000fl
-
-/*
- * The surface's optimized pixelformat is compressed
- */
-#define DDOSDCAPS_OPTCOMPRESSED                        0x00000001l
-
-/*
- * The surface's optimized pixelformat is reordered
- */
-#define DDOSDCAPS_OPTREORDERED                 0x00000002l
-
-/*
- * The opt surface is a monolithic mipmap
- */
-#define DDOSDCAPS_MONOLITHICMIPMAP             0x00000004l
-
-/*
- * The valid Surf caps:
- * #define DDSCAPS_SYSTEMMEMORY                        0x00000800l
- * #define DDSCAPS_VIDEOMEMORY         0x00004000l
- * #define DDSCAPS_LOCALVIDMEM          0x10000000l
- * #define DDSCAPS_NONLOCALVIDMEM       0x20000000l
- */
-#define DDOSDCAPS_VALIDSCAPS           0x30004800l
-
-/*
- * The valid OptSurf caps
- */
-#define DDOSDCAPS_VALIDOSCAPS          0x00000007l
-
-
-/*
- * DDCOLORCONTROL
- */
-typedef struct _DDCOLORCONTROL
-{
-    DWORD              dwSize;
-    DWORD              dwFlags;
-    LONG               lBrightness;
-    LONG               lContrast;
-    LONG               lHue;
-    LONG               lSaturation;
-    LONG               lSharpness;
-    LONG               lGamma;
-    LONG               lColorEnable;
-    DWORD              dwReserved1;
-} DDCOLORCONTROL;
-
-
-/*
- * lBrightness field is valid.
- */
-#define DDCOLOR_BRIGHTNESS             0x00000001l
-
-/*
- * lContrast field is valid.
- */
-#define DDCOLOR_CONTRAST               0x00000002l
-
-/*
- * lHue field is valid.
- */
-#define DDCOLOR_HUE                    0x00000004l
-
-/*
- * lSaturation field is valid.
- */
-#define DDCOLOR_SATURATION             0x00000008l
-
-/*
- * lSharpness field is valid.
- */
-#define DDCOLOR_SHARPNESS              0x00000010l
-
-/*
- * lGamma field is valid.
- */
-#define DDCOLOR_GAMMA                  0x00000020l
-
-/*
- * lColorEnable field is valid.
- */
-#define DDCOLOR_COLORENABLE            0x00000040l
-
-
-
-/*============================================================================
- *
- * Direct Draw Capability Flags
- *
- * These flags are used to describe the capabilities of a given Surface.
- * All flags are bit flags.
- *
- *==========================================================================*/
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * This bit is reserved. It should not be specified.
- */
-#define DDSCAPS_RESERVED1                      0x00000001l
-
-/*
- * Indicates that this surface contains alpha-only information.
- * (To determine if a surface is RGBA/YUVA, the pixel format must be
- * interrogated.)
- */
-#define DDSCAPS_ALPHA                          0x00000002l
-
-/*
- * Indicates that this surface is a backbuffer.         It is generally
- * set by CreateSurface when the DDSCAPS_FLIP capability bit is set.
- * It indicates that this surface is THE back buffer of a surface
- * flipping structure. DirectDraw supports N surfaces in a
- * surface flipping structure. Only the surface that immediately
- * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set.
- * The other surfaces are identified as back buffers by the presence
- * of the DDSCAPS_FLIP capability, their attachment order, and the
- * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER
- * capabilities.  The bit is sent to CreateSurface when a standalone
- * back buffer is being created.  This surface could be attached to
- * a front buffer and/or back buffers to form a flipping surface
- * structure after the CreateSurface call.  See AddAttachments for
- * a detailed description of the behaviors in this case.
- */
-#define DDSCAPS_BACKBUFFER                     0x00000004l
-
-/*
- * Indicates a complex surface structure is being described.  A
- * complex surface structure results in the creation of more than
- * one surface.         The additional surfaces are attached to the root
- * surface.  The complex structure can only be destroyed by
- * destroying the root.
- */
-#define DDSCAPS_COMPLEX                                0x00000008l
-
-/*
- * Indicates that this surface is a part of a surface flipping structure.
- * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and
- * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface
- * on the resulting creations. The dwBackBufferCount field in the
- * DDSURFACEDESC structure must be set to at least 1 in order for
- * the CreateSurface call to succeed.  The DDSCAPS_COMPLEX capability
- * must always be set with creating multiple surfaces through CreateSurface.
- */
-#define DDSCAPS_FLIP                           0x00000010l
-
-/*
- * Indicates that this surface is THE front buffer of a surface flipping
- * structure.  It is generally set by CreateSurface when the DDSCAPS_FLIP
- * capability bit is set.
- * If this capability is sent to CreateSurface then a standalonw front buffer
- * is created. This surface will not have the DDSCAPS_FLIP capability.
- * It can be attached to other back buffers to form a flipping structure.
- * See AddAttachments for a detailed description of the behaviors in this
- * case.
- */
-#define DDSCAPS_FRONTBUFFER                    0x00000020l
-
-/*
- * Indicates that this surface is any offscreen surface that is not an overlay,
- * texture, zbuffer, front buffer, back buffer, or alpha surface.  It is used
- * to identify plain vanilla surfaces.
- */
-#define DDSCAPS_OFFSCREENPLAIN                 0x00000040l
-
-/*
- * Indicates that this surface is an overlay.  It may or may not be directly visible
- * depending on whether or not it is currently being overlayed onto the primary
- * surface.  DDSCAPS_VISIBLE can be used to determine whether or not it is being
- * overlayed at the moment.
- */
-#define DDSCAPS_OVERLAY                                0x00000080l
-
-/*
- * Indicates that unique DirectDrawPalette objects can be created and
- * attached to this surface.
- */
-#define DDSCAPS_PALETTE                                0x00000100l
-
-/*
- * Indicates that this surface is the primary surface. The primary
- * surface represents what the user is seeing at the moment.
- */
-#define DDSCAPS_PRIMARYSURFACE                 0x00000200l
-
-/*
- * Indicates that this surface is the primary surface for the left eye.
- * The primary surface for the left eye represents what the user is seeing
- * at the moment with the users left eye.  When this surface is created the
- * DDSCAPS_PRIMARYSURFACE represents what the user is seeing with the users
- * right eye.
- */
-#define DDSCAPS_PRIMARYSURFACELEFT             0x00000400l
-
-/*
- * Indicates that this surface memory was allocated in system memory
- */
-#define DDSCAPS_SYSTEMMEMORY                   0x00000800l
-
-/*
- * Indicates that this surface can be used as a 3D texture.  It does not
- * indicate whether or not the surface is being used for that purpose.
- */
-#define DDSCAPS_TEXTURE                                0x00001000l
-
-/*
- * Indicates that a surface may be a destination for 3D rendering.  This
- * bit must be set in order to query for a Direct3D Device Interface
- * from this surface.
- */
-#define DDSCAPS_3DDEVICE                        0x00002000l
-
-/*
- * Indicates that this surface exists in video memory.
- */
-#define DDSCAPS_VIDEOMEMORY                    0x00004000l
-
-/*
- * Indicates that changes made to this surface are immediately visible.
- * It is always set for the primary surface and is set for overlays while
- * they are being overlayed and texture maps while they are being textured.
- */
-#define DDSCAPS_VISIBLE                                0x00008000l
-
-/*
- * Indicates that only writes are permitted to the surface.  Read accesses
- * from the surface may or may not generate a protection fault, but the
- * results of a read from this surface will not be meaningful. READ ONLY.
- */
-#define DDSCAPS_WRITEONLY                      0x00010000l
-
-/*
- * Indicates that this surface is a z buffer. A z buffer does not contain
- * displayable information.  Instead it contains bit depth information that is
- * used to determine which pixels are visible and which are obscured.
- */
-#define DDSCAPS_ZBUFFER                                0x00020000l
-
-/*
- * Indicates surface will have a DC associated long term
- */
-#define DDSCAPS_OWNDC                          0x00040000l
-
-/*
- * Indicates surface should be able to receive live video
- */
-#define DDSCAPS_LIVEVIDEO                      0x00080000l
-
-/*
- * Indicates surface should be able to have a stream decompressed
- * to it by the hardware.
- */
-#define DDSCAPS_HWCODEC                                0x00100000l
-
-/*
- * Surface is a ModeX surface.
- *
- */
-#define DDSCAPS_MODEX                          0x00200000l
-
-/*
- * Indicates surface is one level of a mip-map. This surface will
- * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map.
- * This can be done explicitly, by creating a number of surfaces and
- * attaching them with AddAttachedSurface or by implicitly by CreateSurface.
- * If this bit is set then DDSCAPS_TEXTURE must also be set.
- */
-#define DDSCAPS_MIPMAP                          0x00400000l
-
-/*
- * This bit is reserved. It should not be specified.
- */
-#define DDSCAPS_RESERVED2                       0x00800000l
-
-
-/*
- * Indicates that memory for the surface is not allocated until the surface
- * is loaded (via the Direct3D texture Load() function).
- */
-#define DDSCAPS_ALLOCONLOAD                     0x04000000l
-
-/*
- * Indicates that the surface will recieve data from a video port.
- */
-#define DDSCAPS_VIDEOPORT                      0x08000000l
-
-/*
- * Indicates that a video memory surface is resident in true, local video
- * memory rather than non-local video memory. If this flag is specified then
- * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
- * DDSCAPS_NONLOCALVIDMEM.
- */
-#define DDSCAPS_LOCALVIDMEM                     0x10000000l
-
-/*
- * Indicates that a video memory surface is resident in non-local video
- * memory rather than true, local video memory. If this flag is specified
- * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
- * DDSCAPS_LOCALVIDMEM.
- */
-#define DDSCAPS_NONLOCALVIDMEM                  0x20000000l
-
-/*
- * Indicates that this surface is a standard VGA mode surface, and not a
- * ModeX surface. (This flag will never be set in combination with the
- * DDSCAPS_MODEX flag).
- */
-#define DDSCAPS_STANDARDVGAMODE                 0x40000000l
-
-/*
- * Indicates that this surface will be an optimized surface. This flag is
- * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface
- * will be created without any underlying video memory until loaded.
- */
-#define DDSCAPS_OPTIMIZED                       0x80000000l
-
-
-
-
-/*
- * Indicates that this surface will receive data from a video port using
- * the de-interlacing hardware.  This allows the driver to allocate memory
- * for any extra buffers that may be required.  The DDSCAPS_VIDEOPORT and
- * DDSCAPS_OVERLAY flags must also be set.
- */
-#define DDSCAPS2_HARDWAREDEINTERLACE            0x00000002L
-
-/*
- * Indicates to the driver that this surface will be locked very frequently
- * (for procedural textures, dynamic lightmaps, etc). Surfaces with this cap
- * set must also have DDSCAPS_TEXTURE. This cap cannot be used with
- * DDSCAPS2_HINTSTATIC and DDSCAPS2_OPAQUE.
- */
-#define DDSCAPS2_HINTDYNAMIC                   0x00000004L
-
-/*
- * Indicates to the driver that this surface can be re-ordered/retiled on
- * load. This operation will not change the size of the texture. It is
- * relatively fast and symmetrical, since the application may lock these
- * bits (although it will take a performance hit when doing so). Surfaces
- * with this cap set must also have DDSCAPS_TEXTURE. This cap cannot be
- * used with DDSCAPS2_HINTDYNAMIC and DDSCAPS2_OPAQUE.
- */
-#define DDSCAPS2_HINTSTATIC                    0x00000008L
-
-/*
- * Indicates that the client would like this texture surface to be managed by the
- * DirectDraw/Direct3D runtime. Surfaces with this cap set must also have
- * DDSCAPS_TEXTURE set.
- */
-#define DDSCAPS2_TEXTUREMANAGE                  0x00000010L
-
-/*
- * These bits are reserved for internal use */
-#define DDSCAPS2_RESERVED1                      0x00000020L
-#define DDSCAPS2_RESERVED2                      0x00000040L
-
-/*
- * Indicates to the driver that this surface will never be locked again.
- * The driver is free to optimize this surface via retiling and actual compression.
- * All calls to Lock() or Blts from this surface will fail. Surfaces with this
- * cap set must also have DDSCAPS_TEXTURE. This cap cannot be used with
- * DDSCAPS2_HINTDYNAMIC and DDSCAPS2_HINTSTATIC.
- */
-#define DDSCAPS2_OPAQUE                         0x00000080L
-
-/*
- * Applications should set this bit at CreateSurface time to indicate that they
- * intend to use antialiasing. Only valid if DDSCAPS_3DDEVICE is also set.
- */
-#define DDSCAPS2_HINTANTIALIASING               0x00000100L
-
-
-
-
- /****************************************************************************
- *
- * DIRECTDRAW DRIVER CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Display hardware has 3D acceleration.
- */
-#define DDCAPS_3D                      0x00000001l
-
-/*
- * Indicates that DirectDraw will support only dest rectangles that are aligned
- * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
- * READ ONLY.
- */
-#define DDCAPS_ALIGNBOUNDARYDEST       0x00000002l
-
-/*
- * Indicates that DirectDraw will support only source rectangles  whose sizes in
- * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively.  READ ONLY.
- */
-#define DDCAPS_ALIGNSIZEDEST           0x00000004l
-/*
- * Indicates that DirectDraw will support only source rectangles that are aligned
- * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
- * READ ONLY.
- */
-#define DDCAPS_ALIGNBOUNDARYSRC                0x00000008l
-
-/*
- * Indicates that DirectDraw will support only source rectangles  whose sizes in
- * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively.  READ ONLY.
- */
-#define DDCAPS_ALIGNSIZESRC            0x00000010l
-
-/*
- * Indicates that DirectDraw will create video memory surfaces that have a stride
- * alignment equal to DIRECTDRAWCAPS.dwAlignStride.  READ ONLY.
- */
-#define DDCAPS_ALIGNSTRIDE             0x00000020l
-
-/*
- * Display hardware is capable of blt operations.
- */
-#define DDCAPS_BLT                     0x00000040l
-
-/*
- * Display hardware is capable of asynchronous blt operations.
- */
-#define DDCAPS_BLTQUEUE                        0x00000080l
-
-/*
- * Display hardware is capable of color space conversions during the blt operation.
- */
-#define DDCAPS_BLTFOURCC               0x00000100l
-
-/*
- * Display hardware is capable of stretching during blt operations.
- */
-#define DDCAPS_BLTSTRETCH              0x00000200l
-
-/*
- * Display hardware is shared with GDI.
- */
-#define DDCAPS_GDI                     0x00000400l
-
-/*
- * Display hardware can overlay.
- */
-#define DDCAPS_OVERLAY                 0x00000800l
-
-/*
- * Set if display hardware supports overlays but can not clip them.
- */
-#define DDCAPS_OVERLAYCANTCLIP         0x00001000l
-
-/*
- * Indicates that overlay hardware is capable of color space conversions during
- * the overlay operation.
- */
-#define DDCAPS_OVERLAYFOURCC           0x00002000l
-
-/*
- * Indicates that stretching can be done by the overlay hardware.
- */
-#define DDCAPS_OVERLAYSTRETCH          0x00004000l
-
-/*
- * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
- * other than the primary surface.
- */
-#define DDCAPS_PALETTE                 0x00008000l
-
-/*
- * Indicates that palette changes can be syncd with the veritcal refresh.
- */
-#define DDCAPS_PALETTEVSYNC            0x00010000l
-
-/*
- * Display hardware can return the current scan line.
- */
-#define DDCAPS_READSCANLINE            0x00020000l
-
-/*
- * Display hardware has stereo vision capabilities.  DDSCAPS_PRIMARYSURFACELEFT
- * can be created.
- */
-#define DDCAPS_STEREOVIEW              0x00040000l
-
-/*
- * Display hardware is capable of generating a vertical blank interrupt.
- */
-#define DDCAPS_VBI                     0x00080000l
-
-/*
- * Supports the use of z buffers with blt operations.
- */
-#define DDCAPS_ZBLTS                   0x00100000l
-
-/*
- * Supports Z Ordering of overlays.
- */
-#define DDCAPS_ZOVERLAYS               0x00200000l
-
-/*
- * Supports color key
- */
-#define DDCAPS_COLORKEY                        0x00400000l
-
-/*
- * Supports alpha surfaces
- */
-#define DDCAPS_ALPHA                   0x00800000l
-
-/*
- * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
- */
-#define DDCAPS_COLORKEYHWASSIST                0x01000000l
-
-/*
- * no hardware support at all
- */
-#define DDCAPS_NOHARDWARE              0x02000000l
-
-/*
- * Display hardware is capable of color fill with bltter
- */
-#define DDCAPS_BLTCOLORFILL            0x04000000l
-
-/*
- * Display hardware is bank switched, and potentially very slow at
- * random access to VRAM.
- */
-#define DDCAPS_BANKSWITCHED            0x08000000l
-
-/*
- * Display hardware is capable of depth filling Z-buffers with bltter
- */
-#define DDCAPS_BLTDEPTHFILL            0x10000000l
-
-/*
- * Display hardware is capable of clipping while bltting.
- */
-#define DDCAPS_CANCLIP                 0x20000000l
-
-/*
- * Display hardware is capable of clipping while stretch bltting.
- */
-#define DDCAPS_CANCLIPSTRETCHED                0x40000000l
-
-/*
- * Display hardware is capable of bltting to or from system memory
- */
-#define DDCAPS_CANBLTSYSMEM            0x80000000l
-
-
- /****************************************************************************
- *
- * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
- *
- ****************************************************************************/
-
-/*
- * Display hardware is certified
- */
-#define DDCAPS2_CERTIFIED              0x00000001l
-
-/*
- * Driver cannot interleave 2D operations (lock and blt) to surfaces with
- * Direct3D rendering operations between calls to BeginScene() and EndScene()
- */
-#define DDCAPS2_NO2DDURING3DSCENE       0x00000002l
-
-/*
- * Display hardware contains a video port
- */
-#define DDCAPS2_VIDEOPORT               0x00000004l
-
-/*
- * The overlay can be automatically flipped according to the video port
- * VSYNCs, providing automatic doubled buffered display of video port
- * data using an overlay
- */
-#define DDCAPS2_AUTOFLIPOVERLAY         0x00000008l
-
-/*
- * Overlay can display each field of interlaced data individually while
- * it is interleaved in memory without causing jittery artifacts.
- */
-#define DDCAPS2_CANBOBINTERLEAVED       0x00000010l
-
-/*
- * Overlay can display each field of interlaced data individually while
- * it is not interleaved in memory without causing jittery artifacts.
- */
-#define DDCAPS2_CANBOBNONINTERLEAVED    0x00000020l
-
-/*
- * The overlay surface contains color controls (brightness, sharpness, etc.)
- */
-#define DDCAPS2_COLORCONTROLOVERLAY     0x00000040l
-
-/*
- * The primary surface contains color controls (gamma, etc.)
- */
-#define DDCAPS2_COLORCONTROLPRIMARY     0x00000080l
-
-/*
- * RGBZ -> RGB supported for 16:16 RGB:Z
- */
-#define DDCAPS2_CANDROPZ16BIT           0x00000100l
-
-/*
- * Driver supports non-local video memory.
- */
-#define DDCAPS2_NONLOCALVIDMEM          0x00000200l
-
-/*
- * Dirver supports non-local video memory but has different capabilities for
- * non-local video memory surfaces. If this bit is set then so must
- * DDCAPS2_NONLOCALVIDMEM.
- */
-#define DDCAPS2_NONLOCALVIDMEMCAPS      0x00000400l
-
-/*
- * Driver neither requires nor prefers surfaces to be pagelocked when performing
- * blts involving system memory surfaces
- */
-#define DDCAPS2_NOPAGELOCKREQUIRED      0x00000800l
-
-/*
- * Driver can create surfaces which are wider than the primary surface
- */
-#define DDCAPS2_WIDESURFACES            0x00001000l
-
-/*
- * Driver supports bob without using a video port by handling the
- * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip.
- */
-#define DDCAPS2_CANFLIPODDEVEN          0x00002000l
-
-/*
- * Driver supports bob using hardware
- */
-#define DDCAPS2_CANBOBHARDWARE          0x00004000l
-
-/*
- * Driver supports bltting any FOURCC surface to another surface of the same FOURCC
- */
-#define DDCAPS2_COPYFOURCC              0x00008000l
-
-
-/*
- * Driver supports loadable gamma ramps for the primary surface
- */
-#define DDCAPS2_PRIMARYGAMMA            0x00020000l
-
-/*
- * Driver can render in windowed mode.
- */
-#define DDCAPS2_CANRENDERWINDOWED       0x00080000l
-
-/*
- * A calibrator is available to adjust the gamma ramp according to the
- * physical display properties so that the result will be identical on
- * all calibrated systems.
- */
-#define DDCAPS2_CANCALIBRATEGAMMA       0x00100000l
-
-/*
- * Indicates that the driver will respond to DDFLIP_INTERVALn flags
- */
-#define DDCAPS2_FLIPINTERVAL            0x00200000l
-
-/*
- * Indicates that the driver will respond to DDFLIP_NOVSYNC
- */
-#define DDCAPS2_FLIPNOVSYNC             0x00400000l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW FX ALPHA CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Supports alpha blending around the edge of a source color keyed surface.
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHAEDGEBLEND                0x00000001l
-
-/*
- * Supports alpha information in the pixel format.  The bit depth of alpha
- * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
- * more opaque as the alpha value increases.  (0 is transparent.)
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHAPIXELS           0x00000002l
-
-/*
- * Supports alpha information in the pixel format.  The bit depth of alpha
- * information in the pixel format can be 1,2,4, or 8. The alpha value
- * becomes more transparent as the alpha value increases.  (0 is opaque.)
- * This flag can only be set if DDCAPS_ALPHA is set.
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHAPIXELSNEG                0x00000004l
-
-/*
- * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
- * 1,2,4, or 8.         The alpha value becomes more opaque as the alpha value increases.
- * (0 is transparent.)
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHASURFACES         0x00000008l
-
-/*
- * The depth of the alpha channel data can range can be 1,2,4, or 8.
- * The NEG suffix indicates that this alpha channel becomes more transparent
- * as the alpha value increases. (0 is opaque.)         This flag can only be set if
- * DDCAPS_ALPHA is set.
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHASURFACESNEG      0x00000010l
-
-/*
- * Supports alpha blending around the edge of a source color keyed surface.
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND    0x00000020l
-
-/*
- * Supports alpha information in the pixel format.  The bit depth of alpha
- * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
- * more opaque as the alpha value increases.  (0 is transparent.)
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHAPIXELS       0x00000040l
-
-/*
- * Supports alpha information in the pixel format.  The bit depth of alpha
- * information in the pixel format can be 1,2,4, or 8. The alpha value
- * becomes more transparent as the alpha value increases.  (0 is opaque.)
- * This flag can only be set if DDCAPS_ALPHA is set.
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG    0x00000080l
-
-/*
- * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
- * 1,2,4, or 8.         The alpha value becomes more opaque as the alpha value increases.
- * (0 is transparent.)
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHASURFACES     0x00000100l
-
-/*
- * The depth of the alpha channel data can range can be 1,2,4, or 8.
- * The NEG suffix indicates that this alpha channel becomes more transparent
- * as the alpha value increases. (0 is opaque.)         This flag can only be set if
- * DDCAPS_ALPHA is set.
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG  0x00000200l
-
-#if DIRECTDRAW_VERSION < 0x0600
-#endif  //DIRECTDRAW_VERSION
-
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAW FX CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Uses arithmetic operations to stretch and shrink surfaces during blt
- * rather than pixel doubling techniques.  Along the Y axis.
- */
-#define DDFXCAPS_BLTARITHSTRETCHY      0x00000020l
-
-/*
- * Uses arithmetic operations to stretch during blt
- * rather than pixel doubling techniques.  Along the Y axis. Only
- * works for x1, x2, etc.
- */
-#define DDFXCAPS_BLTARITHSTRETCHYN     0x00000010l
-
-/*
- * Supports mirroring left to right in blt.
- */
-#define DDFXCAPS_BLTMIRRORLEFTRIGHT    0x00000040l
-
-/*
- * Supports mirroring top to bottom in blt.
- */
-#define DDFXCAPS_BLTMIRRORUPDOWN       0x00000080l
-
-/*
- * Supports arbitrary rotation for blts.
- */
-#define DDFXCAPS_BLTROTATION           0x00000100l
-
-/*
- * Supports 90 degree rotations for blts.
- */
-#define DDFXCAPS_BLTROTATION90         0x00000200l
-
-/*
- * DirectDraw supports arbitrary shrinking of a surface along the
- * x axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSHRINKX            0x00000400l
-
-/*
- * DirectDraw supports integer shrinking (1x,2x,) of a surface
- * along the x axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSHRINKXN           0x00000800l
-
-/*
- * DirectDraw supports arbitrary shrinking of a surface along the
- * y axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSHRINKY            0x00001000l
-
-/*
- * DirectDraw supports integer shrinking (1x,2x,) of a surface
- * along the y axis (vertical direction) for blts.
- */
-#define DDFXCAPS_BLTSHRINKYN           0x00002000l
-
-/*
- * DirectDraw supports arbitrary stretching of a surface along the
- * x axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSTRETCHX           0x00004000l
-
-/*
- * DirectDraw supports integer stretching (1x,2x,) of a surface
- * along the x axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSTRETCHXN          0x00008000l
-
-/*
- * DirectDraw supports arbitrary stretching of a surface along the
- * y axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSTRETCHY           0x00010000l
-
-/*
- * DirectDraw supports integer stretching (1x,2x,) of a surface
- * along the y axis (vertical direction) for blts.
- */
-#define DDFXCAPS_BLTSTRETCHYN          0x00020000l
-
-/*
- * Uses arithmetic operations to stretch and shrink surfaces during
- * overlay rather than pixel doubling techniques.  Along the Y axis
- * for overlays.
- */
-#define DDFXCAPS_OVERLAYARITHSTRETCHY  0x00040000l
-
-/*
- * Uses arithmetic operations to stretch surfaces during
- * overlay rather than pixel doubling techniques.  Along the Y axis
- * for overlays. Only works for x1, x2, etc.
- */
-#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l
-
-/*
- * DirectDraw supports arbitrary shrinking of a surface along the
- * x axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSHRINKX                0x00080000l
-
-/*
- * DirectDraw supports integer shrinking (1x,2x,) of a surface
- * along the x axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSHRINKXN       0x00100000l
-
-/*
- * DirectDraw supports arbitrary shrinking of a surface along the
- * y axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSHRINKY                0x00200000l
-
-/*
- * DirectDraw supports integer shrinking (1x,2x,) of a surface
- * along the y axis (vertical direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSHRINKYN       0x00400000l
-
-/*
- * DirectDraw supports arbitrary stretching of a surface along the
- * x axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSTRETCHX       0x00800000l
-
-/*
- * DirectDraw supports integer stretching (1x,2x,) of a surface
- * along the x axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSTRETCHXN      0x01000000l
-
-/*
- * DirectDraw supports arbitrary stretching of a surface along the
- * y axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSTRETCHY       0x02000000l
-
-/*
- * DirectDraw supports integer stretching (1x,2x,) of a surface
- * along the y axis (vertical direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSTRETCHYN      0x04000000l
-
-/*
- * DirectDraw supports mirroring of overlays across the vertical axis
- */
-#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT        0x08000000l
-
-/*
- * DirectDraw supports mirroring of overlays across the horizontal axis
- */
-#define DDFXCAPS_OVERLAYMIRRORUPDOWN   0x10000000l
-
-/*
- * Driver can do alpha blending for blits.
- */
-#define DDFXCAPS_BLTALPHA              0x00000001l
-
-/*
- * Driver can do geometric transformations (or warps) for blits.
- */
-#define DDFXCAPS_BLTTRANSFORM          0x00000002l
-
-/*
- * Driver can do surface-reconstruction filtering for warped blits.
- */
-#define DDFXCAPS_BLTFILTER             DDFXCAPS_BLTARITHSTRETCHY
-
-/*
- * Driver can do alpha blending for overlays.
- */
-#define DDFXCAPS_OVERLAYALPHA          0x00000004l
-
-/*
- * Driver can do geometric transformations (or warps) for overlays.
- */
-#define DDFXCAPS_OVERLAYTRANSFORM      0x20000000l
-
-/*
- * Driver can do surface-reconstruction filtering for warped overlays.
- */
-#define DDFXCAPS_OVERLAYFILTER                 DDFXCAPS_OVERLAYARITHSTRETCHY
-
-
-/****************************************************************************
- *
- * DIRECTDRAW STEREO VIEW CAPABILITIES
- *
- ****************************************************************************/
-
-/*
- * The stereo view is accomplished via enigma encoding.
- */
-#define DDSVCAPS_ENIGMA                        0x00000001l
-
-/*
- * The stereo view is accomplished via high frequency flickering.
- */
-#define DDSVCAPS_FLICKER               0x00000002l
-
-/*
- * The stereo view is accomplished via red and blue filters applied
- * to the left and right eyes. All images must adapt their colorspaces
- * for this process.
- */
-#define DDSVCAPS_REDBLUE               0x00000004l
-
-/*
- * The stereo view is accomplished with split screen technology.
- */
-#define DDSVCAPS_SPLIT                 0x00000008l
-
-/****************************************************************************
- *
- * DIRECTDRAWPALETTE CAPABILITIES
- *
- ****************************************************************************/
-
-/*
- * Index is 4 bits.  There are sixteen color entries in the palette table.
- */
-#define DDPCAPS_4BIT                   0x00000001l
-
-/*
- * Index is onto a 8 bit color index.  This field is only valid with the
- * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target
- * surface is in 8bpp. Each color entry is one byte long and is an index
- * into destination surface's 8bpp palette.
- */
-#define DDPCAPS_8BITENTRIES            0x00000002l
-
-/*
- * Index is 8 bits.  There are 256 color entries in the palette table.
- */
-#define DDPCAPS_8BIT                   0x00000004l
-
-/*
- * Indicates that this DIRECTDRAWPALETTE should use the palette color array
- * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE
- * object.
- */
-#define DDPCAPS_INITIALIZE             0x00000008l
-
-/*
- * This palette is the one attached to the primary surface.  Changing this
- * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified
- * and supported.
- */
-#define DDPCAPS_PRIMARYSURFACE         0x00000010l
-
-/*
- * This palette is the one attached to the primary surface left.  Changing
- * this table has immediate effect on the display for the left eye unless
- * DDPSETPAL_VSYNC is specified and supported.
- */
-#define DDPCAPS_PRIMARYSURFACELEFT     0x00000020l
-
-/*
- * This palette can have all 256 entries defined
- */
-#define DDPCAPS_ALLOW256               0x00000040l
-
-/*
- * This palette can have modifications to it synced with the monitors
- * refresh rate.
- */
-#define DDPCAPS_VSYNC                  0x00000080l
-
-/*
- * Index is 1 bit.  There are two color entries in the palette table.
- */
-#define DDPCAPS_1BIT                   0x00000100l
-
-/*
- * Index is 2 bit.  There are four color entries in the palette table.
- */
-#define DDPCAPS_2BIT                   0x00000200l
-
-/*
- * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value
- */
-#define DDPCAPS_ALPHA                  0x00000400l
-
-
-/****************************************************************************
- *
- * DIRECTDRAWPALETTE SETENTRY CONSTANTS
- *
- ****************************************************************************/
-
-
-/****************************************************************************
- *
- * DIRECTDRAWPALETTE GETENTRY CONSTANTS
- *
- ****************************************************************************/
-
-/* 0 is the only legal value */
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS
- *
- ****************************************************************************/
-
-/*
- * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData
- * must be set to sizeof(IUnknown*). DirectDraw will call AddRef through this
- * pointer and Release when the private data is destroyed. This includes when
- * the surface or palette is destroyed before such priovate data is destroyed.
- */
-#define DDSPD_IUNKNOWNPOINTER           0x00000001L
-
-/*
- * Private data is only valid for the current state of the object,
- * as determined by the uniqueness value.
- */
-#define DDSPD_VOLATILE                  0x00000002L
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE SETPALETTE CONSTANTS
- *
- ****************************************************************************/
-
-
-/****************************************************************************
- *
- * DIRECTDRAW BITDEPTH CONSTANTS
- *
- * NOTE:  These are only used to indicate supported bit depths.   These
- * are flags only, they are not to be used as an actual bit depth.   The
- * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual
- * bit depths in a surface or for changing the display mode.
- *
- ****************************************************************************/
-
-/*
- * 1 bit per pixel.
- */
-#define DDBD_1                 0x00004000l
-
-/*
- * 2 bits per pixel.
- */
-#define DDBD_2                 0x00002000l
-
-/*
- * 4 bits per pixel.
- */
-#define DDBD_4                 0x00001000l
-
-/*
- * 8 bits per pixel.
- */
-#define DDBD_8                 0x00000800l
-
-/*
- * 16 bits per pixel.
- */
-#define DDBD_16                        0x00000400l
-
-/*
- * 24 bits per pixel.
- */
-#define DDBD_24                        0X00000200l
-
-/*
- * 32 bits per pixel.
- */
-#define DDBD_32                        0x00000100l
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Set if the structure contains a color space.         Not set if the structure
- * contains a single color key.
- */
-#define DDCKEY_COLORSPACE      0x00000001l
-
-/*
- * Set if the structure specifies a color key or color space which is to be
- * used as a destination color key for blt operations.
- */
-#define DDCKEY_DESTBLT         0x00000002l
-
-/*
- * Set if the structure specifies a color key or color space which is to be
- * used as a destination color key for overlay operations.
- */
-#define DDCKEY_DESTOVERLAY     0x00000004l
-
-/*
- * Set if the structure specifies a color key or color space which is to be
- * used as a source color key for blt operations.
- */
-#define DDCKEY_SRCBLT          0x00000008l
-
-/*
- * Set if the structure specifies a color key or color space which is to be
- * used as a source color key for overlay operations.
- */
-#define DDCKEY_SRCOVERLAY      0x00000010l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW COLOR KEY CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Supports transparent blting using a color key to identify the replaceable
- * bits of the destination surface for RGB colors.
- */
-#define DDCKEYCAPS_DESTBLT                     0x00000001l
-
-/*
- * Supports transparent blting using a color space to identify the replaceable
- * bits of the destination surface for RGB colors.
- */
-#define DDCKEYCAPS_DESTBLTCLRSPACE             0x00000002l
-
-/*
- * Supports transparent blting using a color space to identify the replaceable
- * bits of the destination surface for YUV colors.
- */
-#define DDCKEYCAPS_DESTBLTCLRSPACEYUV          0x00000004l
-
-/*
- * Supports transparent blting using a color key to identify the replaceable
- * bits of the destination surface for YUV colors.
- */
-#define DDCKEYCAPS_DESTBLTYUV                  0x00000008l
-
-/*
- * Supports overlaying using colorkeying of the replaceable bits of the surface
- * being overlayed for RGB colors.
- */
-#define DDCKEYCAPS_DESTOVERLAY                 0x00000010l
-
-/*
- * Supports a color space as the color key for the destination for RGB colors.
- */
-#define DDCKEYCAPS_DESTOVERLAYCLRSPACE         0x00000020l
-
-/*
- * Supports a color space as the color key for the destination for YUV colors.
- */
-#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV      0x00000040l
-
-/*
- * Supports only one active destination color key value for visible overlay
- * surfaces.
- */
-#define DDCKEYCAPS_DESTOVERLAYONEACTIVE                0x00000080l
-
-/*
- * Supports overlaying using colorkeying of the replaceable bits of the
- * surface being overlayed for YUV colors.
- */
-#define DDCKEYCAPS_DESTOVERLAYYUV              0x00000100l
-
-/*
- * Supports transparent blting using the color key for the source with
- * this surface for RGB colors.
- */
-#define DDCKEYCAPS_SRCBLT                      0x00000200l
-
-/*
- * Supports transparent blting using a color space for the source with
- * this surface for RGB colors.
- */
-#define DDCKEYCAPS_SRCBLTCLRSPACE              0x00000400l
-
-/*
- * Supports transparent blting using a color space for the source with
- * this surface for YUV colors.
- */
-#define DDCKEYCAPS_SRCBLTCLRSPACEYUV           0x00000800l
-
-/*
- * Supports transparent blting using the color key for the source with
- * this surface for YUV colors.
- */
-#define DDCKEYCAPS_SRCBLTYUV                   0x00001000l
-
-/*
- * Supports overlays using the color key for the source with this
- * overlay surface for RGB colors.
- */
-#define DDCKEYCAPS_SRCOVERLAY                  0x00002000l
-
-/*
- * Supports overlays using a color space as the source color key for
- * the overlay surface for RGB colors.
- */
-#define DDCKEYCAPS_SRCOVERLAYCLRSPACE          0x00004000l
-
-/*
- * Supports overlays using a color space as the source color key for
- * the overlay surface for YUV colors.
- */
-#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV       0x00008000l
-
-/*
- * Supports only one active source color key value for visible
- * overlay surfaces.
- */
-#define DDCKEYCAPS_SRCOVERLAYONEACTIVE         0x00010000l
-
-/*
- * Supports overlays using the color key for the source with this
- * overlay surface for YUV colors.
- */
-#define DDCKEYCAPS_SRCOVERLAYYUV               0x00020000l
-
-/*
- * there are no bandwidth trade-offs for using colorkey with an overlay
- */
-#define DDCKEYCAPS_NOCOSTOVERLAY               0x00040000l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW PIXELFORMAT FLAGS
- *
- ****************************************************************************/
-
-/*
- * The surface has alpha channel information in the pixel format.
- */
-#define DDPF_ALPHAPIXELS                       0x00000001l
-
-/*
- * The pixel format contains alpha only information
- */
-#define DDPF_ALPHA                             0x00000002l
-
-/*
- * The FourCC code is valid.
- */
-#define DDPF_FOURCC                            0x00000004l
-
-/*
- * The surface is 4-bit color indexed.
- */
-#define DDPF_PALETTEINDEXED4                   0x00000008l
-
-/*
- * The surface is indexed into a palette which stores indices
- * into the destination surface's 8-bit palette.
- */
-#define DDPF_PALETTEINDEXEDTO8                 0x00000010l
-
-/*
- * The surface is 8-bit color indexed.
- */
-#define DDPF_PALETTEINDEXED8                   0x00000020l
-
-/*
- * The RGB data in the pixel format structure is valid.
- */
-#define DDPF_RGB                               0x00000040l
-
-/*
- * The surface will accept pixel data in the format specified
- * and compress it during the write.
- */
-#define DDPF_COMPRESSED                                0x00000080l
-
-/*
- * The surface will accept RGB data and translate it during
- * the write to YUV data.  The format of the data to be written
- * will be contained in the pixel format structure.  The DDPF_RGB
- * flag will be set.
- */
-#define DDPF_RGBTOYUV                          0x00000100l
-
-/*
- * pixel format is YUV - YUV data in pixel format struct is valid
- */
-#define DDPF_YUV                               0x00000200l
-
-/*
- * pixel format is a z buffer only surface
- */
-#define DDPF_ZBUFFER                           0x00000400l
-
-/*
- * The surface is 1-bit color indexed.
- */
-#define DDPF_PALETTEINDEXED1                   0x00000800l
-
-/*
- * The surface is 2-bit color indexed.
- */
-#define DDPF_PALETTEINDEXED2                   0x00001000l
-
-/*
- * The surface contains Z information in the pixels
- */
-#define DDPF_ZPIXELS                           0x00002000l
-
-/*
- * The surface contains stencil information along with Z
- */
-#define DDPF_STENCILBUFFER                     0x00004000l
-
-/*
- * Premultiplied alpha format -- the color components have been
- * premultiplied by the alpha component.
- */
-#define DDPF_ALPHAPREMULT                      0x00008000l
-
-
-/*
- * Luminance data in the pixel format is valid.
- * Use this flag for luminance-only or luminance+alpha surfaces,
- * the bit depth is then ddpf.dwLuminanceBitCount.
- */
-#define DDPF_LUMINANCE                          0x00020000l
-
-/*
- * Luminance data in the pixel format is valid.
- * Use this flag when hanging luminance off bumpmap surfaces,
- * the bit mask for the luminance portion of the pixel is then
- * ddpf.dwBumpLuminanceBitMask
- */
-#define DDPF_BUMPLUMINANCE                      0x00040000l
-
-/*
- * Bump map dUdV data in the pixel format is valid.
- */
-#define DDPF_BUMPDUDV                           0x00080000l
-
-/*===========================================================================
- *
- *
- * DIRECTDRAW CALLBACK FLAGS
- *
- *
- *==========================================================================*/
-
-/****************************************************************************
- *
- * DIRECTDRAW ENUMSURFACES FLAGS
- *
- ****************************************************************************/
-
-/*
- * Enumerate all of the surfaces that meet the search criterion.
- */
-#define DDENUMSURFACES_ALL                     0x00000001l
-
-/*
- * A search hit is a surface that matches the surface description.
- */
-#define DDENUMSURFACES_MATCH                   0x00000002l
-
-/*
- * A search hit is a surface that does not match the surface description.
- */
-#define DDENUMSURFACES_NOMATCH                 0x00000004l
-
-/*
- * Enumerate the first surface that can be created which meets the search criterion.
- */
-#define DDENUMSURFACES_CANBECREATED            0x00000008l
-
-/*
- * Enumerate the surfaces that already exist that meet the search criterion.
- */
-#define DDENUMSURFACES_DOESEXIST               0x00000010l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW SETDISPLAYMODE FLAGS
- *
- ****************************************************************************/
-
-/*
- * The desired mode is a standard VGA mode
- */
-#define DDSDM_STANDARDVGAMODE                   0x00000001l
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAW ENUMDISPLAYMODES FLAGS
- *
- ****************************************************************************/
-
-/*
- * Enumerate Modes with different refresh rates.  EnumDisplayModes guarantees
- * that a particular mode will be enumerated only once.  This flag specifies whether
- * the refresh rate is taken into account when determining if a mode is unique.
- */
-#define DDEDM_REFRESHRATES                     0x00000001l
-
-/*
- * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA
- * modes such as mode 0x13 in addition to the usual ModeX modes (which are always
- * enumerated if the application has previously called SetCooperativeLevel with the
- * DDSCL_ALLOWMODEX flag set).
- */
-#define DDEDM_STANDARDVGAMODES                  0x00000002L
-
-
-/****************************************************************************
- *
- * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
- *
- ****************************************************************************/
-
-/*
- * Exclusive mode owner will be responsible for the entire primary surface.
- * GDI can be ignored. used with DD
- */
-#define DDSCL_FULLSCREEN                       0x00000001l
-
-/*
- * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
- */
-#define DDSCL_ALLOWREBOOT                      0x00000002l
-
-/*
- * prevents DDRAW from modifying the application window.
- * prevents DDRAW from minimize/restore the application window on activation.
- */
-#define DDSCL_NOWINDOWCHANGES                  0x00000004l
-
-/*
- * app wants to work as a regular Windows application
- */
-#define DDSCL_NORMAL                           0x00000008l
-
-/*
- * app wants exclusive access
- */
-#define DDSCL_EXCLUSIVE                         0x00000010l
-
-
-/*
- * app can deal with non-windows display modes
- */
-#define DDSCL_ALLOWMODEX                        0x00000040l
-
-/*
- * this window will receive the focus messages
- */
-#define DDSCL_SETFOCUSWINDOW                    0x00000080l
-
-/*
- * this window is associated with the DDRAW object and will
- * cover the screen in fullscreen mode
- */
-#define DDSCL_SETDEVICEWINDOW                   0x00000100l
-
-/*
- * app wants DDRAW to create a window to be associated with the
- * DDRAW object
- */
-#define DDSCL_CREATEDEVICEWINDOW                0x00000200l
-
-/*
- * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D
- * take the global crtisec more frequently.
- */
-#define DDSCL_MULTITHREADED                     0x00000400l
-
-/*
- * App hints that it would like to keep the FPU set up for optimal Direct3D
- * performance (single precision and exceptions disabled) so Direct3D
- * does not need to explicitly set the FPU each time
- */
-#define DDSCL_FPUSETUP                          0x00000800l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW BLT FLAGS
- *
- ****************************************************************************/
-
-/*
- * Use the alpha information in the pixel format or the alpha channel surface
- * attached to the destination surface as the alpha channel for this blt.
- */
-#define DDBLT_ALPHADEST                                0x00000001l
-
-/*
- * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
- * for the destination surface for this blt.
- */
-#define DDBLT_ALPHADESTCONSTOVERRIDE           0x00000002l
-
-/*
- * The NEG suffix indicates that the destination surface becomes more
- * transparent as the alpha value increases. (0 is opaque)
- */
-#define DDBLT_ALPHADESTNEG                     0x00000004l
-
-/*
- * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
- * channel for the destination for this blt.
- */
-#define DDBLT_ALPHADESTSURFACEOVERRIDE         0x00000008l
-
-/*
- * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel
- * for the edges of the image that border the color key colors.
- */
-#define DDBLT_ALPHAEDGEBLEND                   0x00000010l
-
-/*
- * Use the alpha information in the pixel format or the alpha channel surface
- * attached to the source surface as the alpha channel for this blt.
- */
-#define DDBLT_ALPHASRC                         0x00000020l
-
-/*
- * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
- * for the source for this blt.
- */
-#define DDBLT_ALPHASRCCONSTOVERRIDE            0x00000040l
-
-/*
- * The NEG suffix indicates that the source surface becomes more transparent
- * as the alpha value increases. (0 is opaque)
- */
-#define DDBLT_ALPHASRCNEG                      0x00000080l
-
-/*
- * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
- * for the source for this blt.
- */
-#define DDBLT_ALPHASRCSURFACEOVERRIDE          0x00000100l
-
-/*
- * Do this blt asynchronously through the FIFO in the order received.  If
- * there is no room in the hardware FIFO fail the call.
- */
-#define DDBLT_ASYNC                            0x00000200l
-
-/*
- * Uses the dwFillColor field in the DDBLTFX structure as the RGB color
- * to fill the destination rectangle on the destination surface with.
- */
-#define DDBLT_COLORFILL                                0x00000400l
-
-/*
- * Uses the dwDDFX field in the DDBLTFX structure to specify the effects
- * to use for the blt.
- */
-#define DDBLT_DDFX                             0x00000800l
-
-/*
- * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
- * that are not part of the Win32 API.
- */
-#define DDBLT_DDROPS                           0x00001000l
-
-/*
- * Use the color key associated with the destination surface.
- */
-#define DDBLT_KEYDEST                          0x00002000l
-
-/*
- * Use the dckDestColorkey field in the DDBLTFX structure as the color key
- * for the destination surface.
- */
-#define DDBLT_KEYDESTOVERRIDE                  0x00004000l
-
-/*
- * Use the color key associated with the source surface.
- */
-#define DDBLT_KEYSRC                           0x00008000l
-
-/*
- * Use the dckSrcColorkey field in the DDBLTFX structure as the color key
- * for the source surface.
- */
-#define DDBLT_KEYSRCOVERRIDE                   0x00010000l
-
-/*
- * Use the dwROP field in the DDBLTFX structure for the raster operation
- * for this blt.  These ROPs are the same as the ones defined in the Win32 API.
- */
-#define DDBLT_ROP                              0x00020000l
-
-/*
- * Use the dwRotationAngle field in the DDBLTFX structure as the angle
- * (specified in 1/100th of a degree) to rotate the surface.
- */
-#define DDBLT_ROTATIONANGLE                    0x00040000l
-
-/*
- * Z-buffered blt using the z-buffers attached to the source and destination
- * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the
- * z-buffer opcode.
- */
-#define DDBLT_ZBUFFER                          0x00080000l
-
-/*
- * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field
- * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
- * for the destination.
- */
-#define DDBLT_ZBUFFERDESTCONSTOVERRIDE         0x00100000l
-
-/*
- * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode
- * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
- * respectively for the destination.
- */
-#define DDBLT_ZBUFFERDESTOVERRIDE              0x00200000l
-
-/*
- * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field
- * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
- * for the source.
- */
-#define DDBLT_ZBUFFERSRCCONSTOVERRIDE          0x00400000l
-
-/*
- * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode
- * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
- * respectively for the source.
- */
-#define DDBLT_ZBUFFERSRCOVERRIDE                0x00800000l
-
-/*
- * wait until the device is ready to handle the blt
- * this will cause blt to not return DDERR_WASSTILLDRAWING
- */
-#define DDBLT_WAIT                              0x01000000l
-
-/*
- * Uses the dwFillDepth field in the DDBLTFX structure as the depth value
- * to fill the destination rectangle on the destination Z-buffer surface
- * with.
- */
-#define DDBLT_DEPTHFILL                                0x02000000l
-
-
-/****************************************************************************
- *
- * BLTFAST FLAGS
- *
- ****************************************************************************/
-
-#define DDBLTFAST_NOCOLORKEY                    0x00000000
-#define DDBLTFAST_SRCCOLORKEY                   0x00000001
-#define DDBLTFAST_DESTCOLORKEY                  0x00000002
-#define DDBLTFAST_WAIT                          0x00000010
-
-
-
-
-/****************************************************************************
- *
- * FLIP FLAGS
- *
- ****************************************************************************/
-
-#define DDFLIP_WAIT                          0x00000001L
-
-/*
- * Indicates that the target surface contains the even field of video data.
- * This flag is only valid with an overlay surface.
- */
-#define DDFLIP_EVEN                          0x00000002L
-
-/*
- * Indicates that the target surface contains the odd field of video data.
- * This flag is only valid with an overlay surface.
- */
-#define DDFLIP_ODD                           0x00000004L
-
-/*
- * Causes DirectDraw to perform the physical flip immediately and return
- * to the application. Typically, what was the front buffer but is now the back
- * buffer will still be visible (depending on timing) until the next vertical 
- * retrace. Subsequent operations involving the two flipped surfaces will
- * not check to see if the physical flip has finished (i.e. will not return
- * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)).
- * This allows an application to perform Flips at a higher frequency than the
- * monitor refresh rate, but may introduce visible artifacts.
- * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set, 
- * DDFLIP_NOVSYNC has no effect.
- */
-#define DDFLIP_NOVSYNC                       0x00000008L
-
-
-/*
- * Flip Interval Flags. These flags indicate how many vertical retraces to wait between
- * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each
- * surface involved in the flip until the specified number of vertical retraces has
- * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set, 
- * DDFLIP_INTERVALn has no effect.
- */
-
-/*
- * DirectDraw will flip on every other vertical sync
- */
-#define DDFLIP_INTERVAL2                     0x02000000L
-
-
-/*
- * DirectDraw will flip on every third vertical sync
- */
-#define DDFLIP_INTERVAL3                     0x03000000L
-
-
-/*
- * DirectDraw will flip on every fourth vertical sync
- */
-#define DDFLIP_INTERVAL4                     0x04000000L
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAW SURFACE OVERLAY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Use the alpha information in the pixel format or the alpha channel surface
- * attached to the destination surface as the alpha channel for the
- * destination overlay.
- */
-#define DDOVER_ALPHADEST                       0x00000001l
-
-/*
- * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
- * destination alpha channel for this overlay.
- */
-#define DDOVER_ALPHADESTCONSTOVERRIDE          0x00000002l
-
-/*
- * The NEG suffix indicates that the destination surface becomes more
- * transparent as the alpha value increases.
- */
-#define DDOVER_ALPHADESTNEG                    0x00000004l
-
-/*
- * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
- * channel destination for this overlay.
- */
-#define DDOVER_ALPHADESTSURFACEOVERRIDE                0x00000008l
-
-/*
- * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha
- * channel for the edges of the image that border the color key colors.
- */
-#define DDOVER_ALPHAEDGEBLEND                  0x00000010l
-
-/*
- * Use the alpha information in the pixel format or the alpha channel surface
- * attached to the source surface as the source alpha channel for this overlay.
- */
-#define DDOVER_ALPHASRC                                0x00000020l
-
-/*
- * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
- * alpha channel for this overlay.
- */
-#define DDOVER_ALPHASRCCONSTOVERRIDE           0x00000040l
-
-/*
- * The NEG suffix indicates that the source surface becomes more transparent
- * as the alpha value increases.
- */
-#define DDOVER_ALPHASRCNEG                     0x00000080l
-
-/*
- * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
- * source for this overlay.
- */
-#define DDOVER_ALPHASRCSURFACEOVERRIDE         0x00000100l
-
-/*
- * Turn this overlay off.
- */
-#define DDOVER_HIDE                            0x00000200l
-
-/*
- * Use the color key associated with the destination surface.
- */
-#define DDOVER_KEYDEST                         0x00000400l
-
-/*
- * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
- * for the destination surface
- */
-#define DDOVER_KEYDESTOVERRIDE                 0x00000800l
-
-/*
- * Use the color key associated with the source surface.
- */
-#define DDOVER_KEYSRC                          0x00001000l
-
-/*
- * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
- * for the source surface.
- */
-#define DDOVER_KEYSRCOVERRIDE                  0x00002000l
-
-/*
- * Turn this overlay on.
- */
-#define DDOVER_SHOW                            0x00004000l
-
-/*
- * Add a dirty rect to an emulated overlayed surface.
- */
-#define DDOVER_ADDDIRTYRECT                     0x00008000l
-
-/*
- * Redraw all dirty rects on an emulated overlayed surface.
- */
-#define DDOVER_REFRESHDIRTYRECTS               0x00010000l
-
-/*
- * Redraw the entire surface on an emulated overlayed surface.
- */
-#define DDOVER_REFRESHALL                      0x00020000l
-
-
-/*
- * Use the overlay FX flags to define special overlay FX
- */
-#define DDOVER_DDFX                            0x00080000l
-
-/*
- * Autoflip the overlay when ever the video port autoflips
- */
-#define DDOVER_AUTOFLIP                        0x00100000l
-
-/*
- * Display each field of video port data individually without
- * causing any jittery artifacts
- */
-#define DDOVER_BOB                             0x00200000l
-
-/*
- * Indicates that bob/weave decisions should not be overridden by other
- * interfaces.
- */
-#define DDOVER_OVERRIDEBOBWEAVE                        0x00400000l
-
-/*
- * Indicates that the surface memory is composed of interleaved fields.
- */
-#define DDOVER_INTERLEAVED                     0x00800000l
-
-/*
- * Indicates that bob will be performed using hardware rather than
- * software or emulated.
- */
-#define DDOVER_BOBHARDWARE                     0x01000000l
-
-
-
-
-
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE LOCK FLAGS
- *
- ****************************************************************************/
-
-/*
- * The default.         Set to indicate that Lock should return a valid memory pointer
- * to the top of the specified rectangle.  If no rectangle is specified then a
- * pointer to the top of the surface is returned.
- */
-#define DDLOCK_SURFACEMEMORYPTR                        0x00000000L     // default
-
-/*
- * Set to indicate that Lock should wait until it can obtain a valid memory
- * pointer before returning.  If this bit is set, Lock will never return
- * DDERR_WASSTILLDRAWING.
- */
-#define DDLOCK_WAIT                            0x00000001L
-
-/*
- * Set if an event handle is being passed to Lock.  Lock will trigger the event
- * when it can return the surface memory pointer requested.
- */
-#define DDLOCK_EVENT                           0x00000002L
-
-/*
- * Indicates that the surface being locked will only be read from.
- */
-#define DDLOCK_READONLY                                0x00000010L
-
-/*
- * Indicates that the surface being locked will only be written to
- */
-#define DDLOCK_WRITEONLY                       0x00000020L
-
-
-/*
- * Indicates that a system wide lock should not be taken when this surface
- * is locked. This has several advantages (cursor responsiveness, ability
- * to call more Windows functions, easier debugging) when locking video
- * memory surfaces. However, an application specifying this flag must
- * comply with a number of conditions documented in the help file.
- * Furthermore, this flag cannot be specified when locking the primary.
- */
-#define DDLOCK_NOSYSLOCK                        0x00000800L
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE PAGELOCK FLAGS
- *
- ****************************************************************************/
-
-/*
- * No flags defined at present
- */
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS
- *
- ****************************************************************************/
-
-/*
- * No flags defined at present
- */
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE BLT FX FLAGS
- *
- ****************************************************************************/
-
-/*
- * If stretching, use arithmetic stretching along the Y axis for this blt.
- */
-#define DDBLTFX_ARITHSTRETCHY                  0x00000001l
-
-/*
- * Do this blt mirroring the surface left to right.  Spin the
- * surface around its y-axis.
- */
-#define DDBLTFX_MIRRORLEFTRIGHT                        0x00000002l
-
-/*
- * Do this blt mirroring the surface up and down.  Spin the surface
- * around its x-axis.
- */
-#define DDBLTFX_MIRRORUPDOWN                   0x00000004l
-
-/*
- * Schedule this blt to avoid tearing.
- */
-#define DDBLTFX_NOTEARING                      0x00000008l
-
-/*
- * Do this blt rotating the surface one hundred and eighty degrees.
- */
-#define DDBLTFX_ROTATE180                      0x00000010l
-
-/*
- * Do this blt rotating the surface two hundred and seventy degrees.
- */
-#define DDBLTFX_ROTATE270                      0x00000020l
-
-/*
- * Do this blt rotating the surface ninety degrees.
- */
-#define DDBLTFX_ROTATE90                       0x00000040l
-
-/*
- * Do this z blt using dwZBufferLow and dwZBufferHigh as  range values
- * specified to limit the bits copied from the source surface.
- */
-#define DDBLTFX_ZBUFFERRANGE                   0x00000080l
-
-/*
- * Do this z blt adding the dwZBufferBaseDest to each of the sources z values
- * before comparing it with the desting z values.
- */
-#define DDBLTFX_ZBUFFERBASEDEST                        0x00000100l
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE OVERLAY FX FLAGS
- *
- ****************************************************************************/
-
-/*
- * If stretching, use arithmetic stretching along the Y axis for this overlay.
- */
-#define DDOVERFX_ARITHSTRETCHY                 0x00000001l
-
-/*
- * Mirror the overlay across the vertical axis
- */
-#define DDOVERFX_MIRRORLEFTRIGHT               0x00000002l
-
-/*
- * Mirror the overlay across the horizontal axis
- */
-#define DDOVERFX_MIRRORUPDOWN                  0x00000004l
-
-/****************************************************************************
- *
- * Flags for dwDDFX member of DDSPRITEFX structure
- *
- ****************************************************************************/
-/*
- * Use affine transformation matrix in fTransform member.
- */
-#define DDSPRITEFX_AFFINETRANSFORM             0x00000001l
-
-/*
- * Use RGBA scaling factors in ddrgbaScaleFactors member.
- */
-#define DDSPRITEFX_RGBASCALING                 0x00000002l
-
-/*
- * Degrade RGBA scaling factors to accommodate driver's capabilities.
- */
-#define DDSPRITEFX_DEGRADERGBASCALING          0x00000004l
-
-/*
- * Do bilinear filtering of stretched or warped sprite.
- */
-#define DDSPRITEFX_BILINEARFILTER              0x00000008l
-
-/*
- * Do "blur" filtering of stretched or warped sprite.
- */
-#define DDSPRITEFX_BLURFILTER                  0x00000010l
-
-/*
- * Do "flat" filtering of stretched or warped sprite.
- */
-#define DDSPRITEFX_FLATFILTER                  0x00000020l
-
-/*
- * Degrade filtering operation to accommodate driver's capabilities.
- */
-#define DDSPRITEFX_DEGRADEFILTER               0x00000040l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW WAITFORVERTICALBLANK FLAGS
- *
- ****************************************************************************/
-
-/*
- * return when the vertical blank interval begins
- */
-#define DDWAITVB_BLOCKBEGIN                    0x00000001l
-
-/*
- * set up an event to trigger when the vertical blank begins
- */
-#define DDWAITVB_BLOCKBEGINEVENT               0x00000002l
-
-/*
- * return when the vertical blank interval ends and display begins
- */
-#define DDWAITVB_BLOCKEND                      0x00000004l
-
-/****************************************************************************
- *
- * DIRECTDRAW GETFLIPSTATUS FLAGS
- *
- ****************************************************************************/
-
-/*
- * is it OK to flip now?
- */
-#define DDGFS_CANFLIP                  0x00000001l
-
-/*
- * is the last flip finished?
- */
-#define DDGFS_ISFLIPDONE               0x00000002l
-
-/****************************************************************************
- *
- * DIRECTDRAW GETBLTSTATUS FLAGS
- *
- ****************************************************************************/
-
-/*
- * is it OK to blt now?
- */
-#define DDGBS_CANBLT                   0x00000001l
-
-/*
- * is the blt to the surface finished?
- */
-#define DDGBS_ISBLTDONE                        0x00000002l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW ENUMOVERLAYZORDER FLAGS
- *
- ****************************************************************************/
-
-/*
- * Enumerate overlays back to front.
- */
-#define DDENUMOVERLAYZ_BACKTOFRONT     0x00000000l
-
-/*
- * Enumerate overlays front to back
- */
-#define DDENUMOVERLAYZ_FRONTTOBACK     0x00000001l
-
-/****************************************************************************
- *
- * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
- *
- ****************************************************************************/
-
-/*
- * Send overlay to front
- */
-#define DDOVERZ_SENDTOFRONT            0x00000000l
-
-/*
- * Send overlay to back
- */
-#define DDOVERZ_SENDTOBACK             0x00000001l
-
-/*
- * Move Overlay forward
- */
-#define DDOVERZ_MOVEFORWARD            0x00000002l
-
-/*
- * Move Overlay backward
- */
-#define DDOVERZ_MOVEBACKWARD           0x00000003l
-
-/*
- * Move Overlay in front of relative surface
- */
-#define DDOVERZ_INSERTINFRONTOF                0x00000004l
-
-/*
- * Move Overlay in back of relative surface
- */
-#define DDOVERZ_INSERTINBACKOF         0x00000005l
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAW SETGAMMARAMP FLAGS
- *
- ****************************************************************************/
-
-/*
- * Request calibrator to adjust the gamma ramp according to the physical
- * properties of the display so that the result should appear identical
- * on all systems.
- */
-#define DDSGR_CALIBRATE                        0x00000001L
-
-
-/*===========================================================================
- *
- *
- * DIRECTDRAW RETURN CODES
- *
- * The return values from DirectDraw Commands and Surface that return an HRESULT
- * are codes from DirectDraw concerning the results of the action
- * requested by DirectDraw.
- *
- *==========================================================================*/
-
-/*
- * Status is OK
- *
- * Issued by: DirectDraw Commands and all callbacks
- */
-#define DD_OK                                  0
-#define DD_FALSE                                S_FALSE
-
-/****************************************************************************
- *
- * DIRECTDRAW ENUMCALLBACK RETURN VALUES
- *
- * EnumCallback returns are used to control the flow of the DIRECTDRAW and
- * DIRECTDRAWSURFACE object enumerations.   They can only be returned by
- * enumeration callback routines.
- *
- ****************************************************************************/
-
-/*
- * stop the enumeration
- */
-#define DDENUMRET_CANCEL                       0
-
-/*
- * continue the enumeration
- */
-#define DDENUMRET_OK                           1
-
-/****************************************************************************
- *
- * DIRECTDRAW ERRORS
- *
- * Errors are represented by negative values and cannot be combined.
- *
- ****************************************************************************/
-
-/*
- * This object is already initialized
- */
-#define DDERR_ALREADYINITIALIZED               MAKE_DDHRESULT( 5 )
-
-/*
- * This surface can not be attached to the requested surface.
- */
-#define DDERR_CANNOTATTACHSURFACE              MAKE_DDHRESULT( 10 )
-
-/*
- * This surface can not be detached from the requested surface.
- */
-#define DDERR_CANNOTDETACHSURFACE              MAKE_DDHRESULT( 20 )
-
-/*
- * Support is currently not available.
- */
-#define DDERR_CURRENTLYNOTAVAIL                        MAKE_DDHRESULT( 40 )
-
-/*
- * An exception was encountered while performing the requested operation
- */
-#define DDERR_EXCEPTION                                MAKE_DDHRESULT( 55 )
-
-/*
- * Generic failure.
- */
-#define DDERR_GENERIC                          E_FAIL
-
-/*
- * Height of rectangle provided is not a multiple of reqd alignment
- */
-#define DDERR_HEIGHTALIGN                      MAKE_DDHRESULT( 90 )
-
-/*
- * Unable to match primary surface creation request with existing
- * primary surface.
- */
-#define DDERR_INCOMPATIBLEPRIMARY              MAKE_DDHRESULT( 95 )
-
-/*
- * One or more of the caps bits passed to the callback are incorrect.
- */
-#define DDERR_INVALIDCAPS                      MAKE_DDHRESULT( 100 )
-
-/*
- * DirectDraw does not support provided Cliplist.
- */
-#define DDERR_INVALIDCLIPLIST                  MAKE_DDHRESULT( 110 )
-
-/*
- * DirectDraw does not support the requested mode
- */
-#define DDERR_INVALIDMODE                      MAKE_DDHRESULT( 120 )
-
-/*
- * DirectDraw received a pointer that was an invalid DIRECTDRAW object.
- */
-#define DDERR_INVALIDOBJECT                    MAKE_DDHRESULT( 130 )
-
-/*
- * One or more of the parameters passed to the callback function are
- * incorrect.
- */
-#define DDERR_INVALIDPARAMS                    E_INVALIDARG
-
-/*
- * pixel format was invalid as specified
- */
-#define DDERR_INVALIDPIXELFORMAT               MAKE_DDHRESULT( 145 )
-
-/*
- * Rectangle provided was invalid.
- */
-#define DDERR_INVALIDRECT                      MAKE_DDHRESULT( 150 )
-
-/*
- * Operation could not be carried out because one or more surfaces are locked
- */
-#define DDERR_LOCKEDSURFACES                   MAKE_DDHRESULT( 160 )
-
-/*
- * There is no 3D present.
- */
-#define DDERR_NO3D                             MAKE_DDHRESULT( 170 )
-
-/*
- * Operation could not be carried out because there is no alpha accleration
- * hardware present or available.
- */
-#define DDERR_NOALPHAHW                                MAKE_DDHRESULT( 180 )
-
-
-/*
- * no clip list available
- */
-#define DDERR_NOCLIPLIST                       MAKE_DDHRESULT( 205 )
-
-/*
- * Operation could not be carried out because there is no color conversion
- * hardware present or available.
- */
-#define DDERR_NOCOLORCONVHW                    MAKE_DDHRESULT( 210 )
-
-/*
- * Create function called without DirectDraw object method SetCooperativeLevel
- * being called.
- */
-#define DDERR_NOCOOPERATIVELEVELSET            MAKE_DDHRESULT( 212 )
-
-/*
- * Surface doesn't currently have a color key
- */
-#define DDERR_NOCOLORKEY                       MAKE_DDHRESULT( 215 )
-
-/*
- * Operation could not be carried out because there is no hardware support
- * of the dest color key.
- */
-#define DDERR_NOCOLORKEYHW                     MAKE_DDHRESULT( 220 )
-
-/*
- * No DirectDraw support possible with current display driver
- */
-#define DDERR_NODIRECTDRAWSUPPORT              MAKE_DDHRESULT( 222 )
-
-/*
- * Operation requires the application to have exclusive mode but the
- * application does not have exclusive mode.
- */
-#define DDERR_NOEXCLUSIVEMODE                  MAKE_DDHRESULT( 225 )
-
-/*
- * Flipping visible surfaces is not supported.
- */
-#define DDERR_NOFLIPHW                         MAKE_DDHRESULT( 230 )
-
-/*
- * There is no GDI present.
- */
-#define DDERR_NOGDI                            MAKE_DDHRESULT( 240 )
-
-/*
- * Operation could not be carried out because there is no hardware present
- * or available.
- */
-#define DDERR_NOMIRRORHW                       MAKE_DDHRESULT( 250 )
-
-/*
- * Requested item was not found
- */
-#define DDERR_NOTFOUND                         MAKE_DDHRESULT( 255 )
-
-/*
- * Operation could not be carried out because there is no overlay hardware
- * present or available.
- */
-#define DDERR_NOOVERLAYHW                      MAKE_DDHRESULT( 260 )
-
-/*
- * Operation could not be carried out because the source and destination
- * rectangles are on the same surface and overlap each other.
- */
-#define DDERR_OVERLAPPINGRECTS                 MAKE_DDHRESULT( 270 )
-
-/*
- * Operation could not be carried out because there is no appropriate raster
- * op hardware present or available.
- */
-#define DDERR_NORASTEROPHW                     MAKE_DDHRESULT( 280 )
-
-/*
- * Operation could not be carried out because there is no rotation hardware
- * present or available.
- */
-#define DDERR_NOROTATIONHW                     MAKE_DDHRESULT( 290 )
-
-/*
- * Operation could not be carried out because there is no hardware support
- * for stretching
- */
-#define DDERR_NOSTRETCHHW                      MAKE_DDHRESULT( 310 )
-
-/*
- * DirectDrawSurface is not in 4 bit color palette and the requested operation
- * requires 4 bit color palette.
- */
-#define DDERR_NOT4BITCOLOR                     MAKE_DDHRESULT( 316 )
-
-/*
- * DirectDrawSurface is not in 4 bit color index palette and the requested
- * operation requires 4 bit color index palette.
- */
-#define DDERR_NOT4BITCOLORINDEX                        MAKE_DDHRESULT( 317 )
-
-/*
- * DirectDraw Surface is not in 8 bit color mode and the requested operation
- * requires 8 bit color.
- */
-#define DDERR_NOT8BITCOLOR                     MAKE_DDHRESULT( 320 )
-
-/*
- * Operation could not be carried out because there is no texture mapping
- * hardware present or available.
- */
-#define DDERR_NOTEXTUREHW                      MAKE_DDHRESULT( 330 )
-
-/*
- * Operation could not be carried out because there is no hardware support
- * for vertical blank synchronized operations.
- */
-#define DDERR_NOVSYNCHW                                MAKE_DDHRESULT( 335 )
-
-/*
- * Operation could not be carried out because there is no hardware support
- * for zbuffer blting.
- */
-#define DDERR_NOZBUFFERHW                      MAKE_DDHRESULT( 340 )
-
-/*
- * Overlay surfaces could not be z layered based on their BltOrder because
- * the hardware does not support z layering of overlays.
- */
-#define DDERR_NOZOVERLAYHW                     MAKE_DDHRESULT( 350 )
-
-/*
- * The hardware needed for the requested operation has already been
- * allocated.
- */
-#define DDERR_OUTOFCAPS                                MAKE_DDHRESULT( 360 )
-
-/*
- * DirectDraw does not have enough memory to perform the operation.
- */
-#define DDERR_OUTOFMEMORY                      E_OUTOFMEMORY
-
-/*
- * DirectDraw does not have enough memory to perform the operation.
- */
-#define DDERR_OUTOFVIDEOMEMORY                 MAKE_DDHRESULT( 380 )
-
-/*
- * hardware does not support clipped overlays
- */
-#define DDERR_OVERLAYCANTCLIP                  MAKE_DDHRESULT( 382 )
-
-/*
- * Can only have ony color key active at one time for overlays
- */
-#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE     MAKE_DDHRESULT( 384 )
-
-/*
- * Access to this palette is being refused because the palette is already
- * locked by another thread.
- */
-#define DDERR_PALETTEBUSY                      MAKE_DDHRESULT( 387 )
-
-/*
- * No src color key specified for this operation.
- */
-#define DDERR_COLORKEYNOTSET                   MAKE_DDHRESULT( 400 )
-
-/*
- * This surface is already attached to the surface it is being attached to.
- */
-#define DDERR_SURFACEALREADYATTACHED           MAKE_DDHRESULT( 410 )
-
-/*
- * This surface is already a dependency of the surface it is being made a
- * dependency of.
- */
-#define DDERR_SURFACEALREADYDEPENDENT          MAKE_DDHRESULT( 420 )
-
-/*
- * Access to this surface is being refused because the surface is already
- * locked by another thread.
- */
-#define DDERR_SURFACEBUSY                      MAKE_DDHRESULT( 430 )
-
-/*
- * Access to this surface is being refused because no driver exists
- * which can supply a pointer to the surface.
- * This is most likely to happen when attempting to lock the primary
- * surface when no DCI provider is present.
- * Will also happen on attempts to lock an optimized surface.
- */
-#define DDERR_CANTLOCKSURFACE                   MAKE_DDHRESULT( 435 )
-
-/*
- * Access to Surface refused because Surface is obscured.
- */
-#define DDERR_SURFACEISOBSCURED                        MAKE_DDHRESULT( 440 )
-
-/*
- * Access to this surface is being refused because the surface is gone.
- * The DIRECTDRAWSURFACE object representing this surface should
- * have Restore called on it.
- */
-#define DDERR_SURFACELOST                      MAKE_DDHRESULT( 450 )
-
-/*
- * The requested surface is not attached.
- */
-#define DDERR_SURFACENOTATTACHED               MAKE_DDHRESULT( 460 )
-
-/*
- * Height requested by DirectDraw is too large.
- */
-#define DDERR_TOOBIGHEIGHT                     MAKE_DDHRESULT( 470 )
-
-/*
- * Size requested by DirectDraw is too large --         The individual height and
- * width are OK.
- */
-#define DDERR_TOOBIGSIZE                       MAKE_DDHRESULT( 480 )
-
-/*
- * Width requested by DirectDraw is too large.
- */
-#define DDERR_TOOBIGWIDTH                      MAKE_DDHRESULT( 490 )
-
-/*
- * Action not supported.
- */
-#define DDERR_UNSUPPORTED                      E_NOTIMPL
-
-/*
- * FOURCC format requested is unsupported by DirectDraw
- */
-#define DDERR_UNSUPPORTEDFORMAT                        MAKE_DDHRESULT( 510 )
-
-/*
- * Bitmask in the pixel format requested is unsupported by DirectDraw
- */
-#define DDERR_UNSUPPORTEDMASK                  MAKE_DDHRESULT( 520 )
-
-/*
- * The specified stream contains invalid data
- */
-#define DDERR_INVALIDSTREAM                     MAKE_DDHRESULT( 521 )
-
-/*
- * vertical blank is in progress
- */
-#define DDERR_VERTICALBLANKINPROGRESS          MAKE_DDHRESULT( 537 )
-
-/*
- * Informs DirectDraw that the previous Blt which is transfering information
- * to or from this Surface is incomplete.
- */
-#define DDERR_WASSTILLDRAWING                  MAKE_DDHRESULT( 540 )
-
-
-/*
- * Rectangle provided was not horizontally aligned on reqd. boundary
- */
-#define DDERR_XALIGN                           MAKE_DDHRESULT( 560 )
-
-/*
- * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver
- * identifier.
- */
-#define DDERR_INVALIDDIRECTDRAWGUID            MAKE_DDHRESULT( 561 )
-
-/*
- * A DirectDraw object representing this driver has already been created
- * for this process.
- */
-#define DDERR_DIRECTDRAWALREADYCREATED         MAKE_DDHRESULT( 562 )
-
-/*
- * A hardware only DirectDraw object creation was attempted but the driver
- * did not support any hardware.
- */
-#define DDERR_NODIRECTDRAWHW                   MAKE_DDHRESULT( 563 )
-
-/*
- * this process already has created a primary surface
- */
-#define DDERR_PRIMARYSURFACEALREADYEXISTS      MAKE_DDHRESULT( 564 )
-
-/*
- * software emulation not available.
- */
-#define DDERR_NOEMULATION                      MAKE_DDHRESULT( 565 )
-
-/*
- * region passed to Clipper::GetClipList is too small.
- */
-#define DDERR_REGIONTOOSMALL                   MAKE_DDHRESULT( 566 )
-
-/*
- * an attempt was made to set a clip list for a clipper objec that
- * is already monitoring an hwnd.
- */
-#define DDERR_CLIPPERISUSINGHWND               MAKE_DDHRESULT( 567 )
-
-/*
- * No clipper object attached to surface object
- */
-#define DDERR_NOCLIPPERATTACHED                        MAKE_DDHRESULT( 568 )
-
-/*
- * Clipper notification requires an HWND or
- * no HWND has previously been set as the CooperativeLevel HWND.
- */
-#define DDERR_NOHWND                           MAKE_DDHRESULT( 569 )
-
-/*
- * HWND used by DirectDraw CooperativeLevel has been subclassed,
- * this prevents DirectDraw from restoring state.
- */
-#define DDERR_HWNDSUBCLASSED                   MAKE_DDHRESULT( 570 )
-
-/*
- * The CooperativeLevel HWND has already been set.
- * It can not be reset while the process has surfaces or palettes created.
- */
-#define DDERR_HWNDALREADYSET                   MAKE_DDHRESULT( 571 )
-
-/*
- * No palette object attached to this surface.
- */
-#define DDERR_NOPALETTEATTACHED                        MAKE_DDHRESULT( 572 )
-
-/*
- * No hardware support for 16 or 256 color palettes.
- */
-#define DDERR_NOPALETTEHW                      MAKE_DDHRESULT( 573 )
-
-/*
- * If a clipper object is attached to the source surface passed into a
- * BltFast call.
- */
-#define DDERR_BLTFASTCANTCLIP                  MAKE_DDHRESULT( 574 )
-
-/*
- * No blter.
- */
-#define DDERR_NOBLTHW                          MAKE_DDHRESULT( 575 )
-
-/*
- * No DirectDraw ROP hardware.
- */
-#define DDERR_NODDROPSHW                       MAKE_DDHRESULT( 576 )
-
-/*
- * returned when GetOverlayPosition is called on a hidden overlay
- */
-#define DDERR_OVERLAYNOTVISIBLE                        MAKE_DDHRESULT( 577 )
-
-/*
- * returned when GetOverlayPosition is called on a overlay that UpdateOverlay
- * has never been called on to establish a destionation.
- */
-#define DDERR_NOOVERLAYDEST                    MAKE_DDHRESULT( 578 )
-
-/*
- * returned when the position of the overlay on the destionation is no longer
- * legal for that destionation.
- */
-#define DDERR_INVALIDPOSITION                  MAKE_DDHRESULT( 579 )
-
-/*
- * returned when an overlay member is called for a non-overlay surface
- */
-#define DDERR_NOTAOVERLAYSURFACE               MAKE_DDHRESULT( 580 )
-
-/*
- * An attempt was made to set the cooperative level when it was already
- * set to exclusive.
- */
-#define DDERR_EXCLUSIVEMODEALREADYSET          MAKE_DDHRESULT( 581 )
-
-/*
- * An attempt has been made to flip a surface that is not flippable.
- */
-#define DDERR_NOTFLIPPABLE                     MAKE_DDHRESULT( 582 )
-
-/*
- * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly
- * created.
- */
-#define DDERR_CANTDUPLICATE                    MAKE_DDHRESULT( 583 )
-
-/*
- * Surface was not locked.  An attempt to unlock a surface that was not
- * locked at all, or by this process, has been attempted.
- */
-#define DDERR_NOTLOCKED                                MAKE_DDHRESULT( 584 )
-
-/*
- * Windows can not create any more DCs, or a DC was requested for a paltte-indexed
- * surface when the surface had no palette AND the display mode was not palette-indexed
- * (in this case DirectDraw cannot select a proper palette into the DC)
- */
-#define DDERR_CANTCREATEDC                     MAKE_DDHRESULT( 585 )
-
-/*
- * No DC was ever created for this surface.
- */
-#define DDERR_NODC                             MAKE_DDHRESULT( 586 )
-
-/*
- * This surface can not be restored because it was created in a different
- * mode.
- */
-#define DDERR_WRONGMODE                                MAKE_DDHRESULT( 587 )
-
-/*
- * This surface can not be restored because it is an implicitly created
- * surface.
- */
-#define DDERR_IMPLICITLYCREATED                        MAKE_DDHRESULT( 588 )
-
-/*
- * The surface being used is not a palette-based surface
- */
-#define DDERR_NOTPALETTIZED                    MAKE_DDHRESULT( 589 )
-
-
-/*
- * The display is currently in an unsupported mode
- */
-#define DDERR_UNSUPPORTEDMODE                  MAKE_DDHRESULT( 590 )
-
-/*
- * Operation could not be carried out because there is no mip-map
- * texture mapping hardware present or available.
- */
-#define DDERR_NOMIPMAPHW                       MAKE_DDHRESULT( 591 )
-
-/*
- * The requested action could not be performed because the surface was of
- * the wrong type.
- */
-#define DDERR_INVALIDSURFACETYPE                MAKE_DDHRESULT( 592 )
-
-
-
-/*
- * Device does not support optimized surfaces, therefore no video memory optimized surfaces
- */
-#define DDERR_NOOPTIMIZEHW                      MAKE_DDHRESULT( 600 )
-
-/*
- * Surface is an optimized surface, but has not yet been allocated any memory
- */
-#define DDERR_NOTLOADED                         MAKE_DDHRESULT( 601 )
-
-/*
- * Attempt was made to create or set a device window without first setting
- * the focus window
- */
-#define DDERR_NOFOCUSWINDOW                     MAKE_DDHRESULT( 602 )
-
-/*
- * A DC has already been returned for this surface. Only one DC can be
- * retrieved per surface.
- */
-#define DDERR_DCALREADYCREATED                 MAKE_DDHRESULT( 620 )
-
-/*
- * An attempt was made to allocate non-local video memory from a device
- * that does not support non-local video memory.
- */
-#define DDERR_NONONLOCALVIDMEM                  MAKE_DDHRESULT( 630 )
-
-/*
- * The attempt to page lock a surface failed.
- */
-#define DDERR_CANTPAGELOCK                     MAKE_DDHRESULT( 640 )
-
-
-/*
- * The attempt to page unlock a surface failed.
- */
-#define DDERR_CANTPAGEUNLOCK                   MAKE_DDHRESULT( 660 )
-
-/*
- * An attempt was made to page unlock a surface with no outstanding page locks.
- */
-#define DDERR_NOTPAGELOCKED                    MAKE_DDHRESULT( 680 )
-
-/*
- * There is more data available than the specified buffer size could hold
- */
-#define DDERR_MOREDATA                                 MAKE_DDHRESULT( 690 )
-
-/*
- * The data has expired and is therefore no longer valid.
- */
-#define DDERR_EXPIRED                           MAKE_DDHRESULT( 691 )
-
-/*
- * The video port is not active
- */
-#define DDERR_VIDEONOTACTIVE                           MAKE_DDHRESULT( 695 )
-
-/*
- * Surfaces created by one direct draw device cannot be used directly by
- * another direct draw device.
- */
-#define DDERR_DEVICEDOESNTOWNSURFACE                   MAKE_DDHRESULT( 699 )
-
-
-/*
- * An attempt was made to invoke an interface member of a DirectDraw object
- * created by CoCreateInstance() before it was initialized.
- */
-#define DDERR_NOTINITIALIZED                    CO_E_NOTINITIALIZED
-
-
-/* Alpha bit depth constants */
-
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
-
diff --git a/misc/builddeps/win32/dx/include/dinput.h b/misc/builddeps/win32/dx/include/dinput.h
deleted file mode 100644 (file)
index 5bf9f5a..0000000
+++ /dev/null
@@ -1,1849 +0,0 @@
-/****************************************************************************
- *
- *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
- *
- *  File:       dinput.h
- *  Content:    DirectInput include file
- *
- ****************************************************************************/
-
-#ifndef __DINPUT_INCLUDED__
-#define __DINPUT_INCLUDED__
-
-#ifndef DIJ_RINGZERO
-
-#ifdef _WIN32
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef DIRECTINPUT_VERSION
-#define DIRECTINPUT_VERSION         0x0500
-#endif
-
-#ifndef DIJ_RINGZERO
-/****************************************************************************
- *
- *      Class IDs
- *
- ****************************************************************************/
-
-DEFINE_GUID(CLSID_DirectInput,      0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(CLSID_DirectInputDevice,0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-/****************************************************************************
- *
- *      Interfaces
- *
- ****************************************************************************/
-
-DEFINE_GUID(IID_IDirectInputA,     0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputW,     0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInput2A,    0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInput2W,    0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputDevice2A,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputDevice2W,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(IID_IDirectInputEffect,  0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-
-/****************************************************************************
- *
- *      Predefined object types
- *
- ****************************************************************************/
-
-DEFINE_GUID(GUID_XAxis,   0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_YAxis,   0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_ZAxis,   0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_RxAxis,  0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_RyAxis,  0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_RzAxis,  0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_Slider,  0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(GUID_Button,  0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_Key,     0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(GUID_POV,     0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(GUID_Unknown, 0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-/****************************************************************************
- *
- *      Predefined product GUIDs
- *
- ****************************************************************************/
-
-DEFINE_GUID(GUID_SysMouse,   0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_Joystick   ,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-/****************************************************************************
- *
- *      Predefined force feedback effects
- *
- ****************************************************************************/
-
-DEFINE_GUID(GUID_ConstantForce,0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_RampForce,    0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Square,       0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Sine,         0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Triangle,     0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_SawtoothUp,   0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Spring,       0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Damper,       0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Inertia,      0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Friction,     0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_CustomForce,  0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *      Interfaces and Structures...
- *
- ****************************************************************************/
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-
-/****************************************************************************
- *
- *      IDirectInputEffect
- *
- ****************************************************************************/
-
-#define DIEFT_ALL                   0x00000000
-
-#define DIEFT_CONSTANTFORCE         0x00000001
-#define DIEFT_RAMPFORCE             0x00000002
-#define DIEFT_PERIODIC              0x00000003
-#define DIEFT_CONDITION             0x00000004
-#define DIEFT_CUSTOMFORCE           0x00000005
-#define DIEFT_HARDWARE              0x000000FF
-
-#define DIEFT_FFATTACK              0x00000200
-#define DIEFT_FFFADE                0x00000400
-#define DIEFT_SATURATION            0x00000800
-#define DIEFT_POSNEGCOEFFICIENTS    0x00001000
-#define DIEFT_POSNEGSATURATION      0x00002000
-#define DIEFT_DEADBAND              0x00004000
-
-#define DIEFT_GETTYPE(n)            LOBYTE(n)
-
-#define DI_DEGREES                  100
-#define DI_FFNOMINALMAX             10000
-#define DI_SECONDS                  1000000
-
-typedef struct DICONSTANTFORCE {
-    LONG  lMagnitude;
-} DICONSTANTFORCE, *LPDICONSTANTFORCE;
-typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;
-
-typedef struct DIRAMPFORCE {
-    LONG  lStart;
-    LONG  lEnd;
-} DIRAMPFORCE, *LPDIRAMPFORCE;
-typedef const DIRAMPFORCE *LPCDIRAMPFORCE;
-
-typedef struct DIPERIODIC {
-    DWORD dwMagnitude;
-    LONG  lOffset;
-    DWORD dwPhase;
-    DWORD dwPeriod;
-} DIPERIODIC, *LPDIPERIODIC;
-typedef const DIPERIODIC *LPCDIPERIODIC;
-
-typedef struct DICONDITION {
-    LONG  lOffset;
-    LONG  lPositiveCoefficient;
-    LONG  lNegativeCoefficient;
-    DWORD dwPositiveSaturation;
-    DWORD dwNegativeSaturation;
-    LONG  lDeadBand;
-} DICONDITION, *LPDICONDITION;
-typedef const DICONDITION *LPCDICONDITION;
-
-typedef struct DICUSTOMFORCE {
-    DWORD cChannels;
-    DWORD dwSamplePeriod;
-    DWORD cSamples;
-    LPLONG rglForceData;
-} DICUSTOMFORCE, *LPDICUSTOMFORCE;
-typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;
-
-typedef struct DIENVELOPE {
-    DWORD dwSize;                   /* sizeof(DIENVELOPE)   */
-    DWORD dwAttackLevel;
-    DWORD dwAttackTime;             /* Microseconds         */
-    DWORD dwFadeLevel;
-    DWORD dwFadeTime;               /* Microseconds         */
-} DIENVELOPE, *LPDIENVELOPE;
-typedef const DIENVELOPE *LPCDIENVELOPE;
-
-typedef struct DIEFFECT {
-    DWORD dwSize;                   /* sizeof(DIEFFECT)     */
-    DWORD dwFlags;                  /* DIEFF_*              */
-    DWORD dwDuration;               /* Microseconds         */
-    DWORD dwSamplePeriod;           /* Microseconds         */
-    DWORD dwGain;
-    DWORD dwTriggerButton;          /* or DIEB_NOTRIGGER    */
-    DWORD dwTriggerRepeatInterval;  /* Microseconds         */
-    DWORD cAxes;                    /* Number of axes       */
-    LPDWORD rgdwAxes;               /* Array of axes        */
-    LPLONG rglDirection;            /* Array of directions  */
-    LPDIENVELOPE lpEnvelope;        /* Optional             */
-    DWORD cbTypeSpecificParams;     /* Size of params       */
-    LPVOID lpvTypeSpecificParams;   /* Pointer to params    */
-} DIEFFECT, *LPDIEFFECT;
-typedef const DIEFFECT *LPCDIEFFECT;
-
-#define DIEFF_OBJECTIDS             0x00000001
-#define DIEFF_OBJECTOFFSETS         0x00000002
-#define DIEFF_CARTESIAN             0x00000010
-#define DIEFF_POLAR                 0x00000020
-#define DIEFF_SPHERICAL             0x00000040
-
-#define DIEP_DURATION               0x00000001
-#define DIEP_SAMPLEPERIOD           0x00000002
-#define DIEP_GAIN                   0x00000004
-#define DIEP_TRIGGERBUTTON          0x00000008
-#define DIEP_TRIGGERREPEATINTERVAL  0x00000010
-#define DIEP_AXES                   0x00000020
-#define DIEP_DIRECTION              0x00000040
-#define DIEP_ENVELOPE               0x00000080
-#define DIEP_TYPESPECIFICPARAMS     0x00000100
-#define DIEP_ALLPARAMS              0x000001FF
-#define DIEP_START                  0x20000000
-#define DIEP_NORESTART              0x40000000
-#define DIEP_NODOWNLOAD             0x80000000
-#define DIEB_NOTRIGGER              0xFFFFFFFF
-
-#define DIES_SOLO                   0x00000001
-#define DIES_NODOWNLOAD             0x80000000
-
-#define DIEGES_PLAYING              0x00000001
-#define DIEGES_EMULATED             0x00000002
-
-typedef struct DIEFFESCAPE {
-    DWORD   dwSize;
-    DWORD   dwCommand;
-    LPVOID  lpvInBuffer;
-    DWORD   cbInBuffer;
-    LPVOID  lpvOutBuffer;
-    DWORD   cbOutBuffer;
-} DIEFFESCAPE, *LPDIEFFESCAPE;
-
-#ifndef DIJ_RINGZERO
-
-#undef INTERFACE
-#define INTERFACE IDirectInputEffect
-
-DECLARE_INTERFACE_(IDirectInputEffect, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputEffect methods ***/
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-    STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE;
-    STDMETHOD(GetParameters)(THIS_ LPDIEFFECT,DWORD) PURE;
-    STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT,DWORD) PURE;
-    STDMETHOD(Start)(THIS_ DWORD,DWORD) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE;
-    STDMETHOD(Download)(THIS) PURE;
-    STDMETHOD(Unload)(THIS) PURE;
-    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
-};
-
-typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
-#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a)
-#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b)
-#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b)
-#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b)
-#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p)
-#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a)
-#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p)
-#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p)
-#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a)
-#else
-#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInputEffect_AddRef(p) (p)->AddRef()
-#define IDirectInputEffect_Release(p) (p)->Release()
-#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
-#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a)
-#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b)
-#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b)
-#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b)
-#define IDirectInputEffect_Stop(p) (p)->Stop()
-#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a)
-#define IDirectInputEffect_Download(p) (p)->Download()
-#define IDirectInputEffect_Unload(p) (p)->Unload()
-#define IDirectInputEffect_Escape(p,a) (p)->Escape(a)
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-/****************************************************************************
- *
- *      IDirectInputDevice
- *
- ****************************************************************************/
-
-#define DIDEVTYPE_DEVICE    1
-#define DIDEVTYPE_MOUSE     2
-#define DIDEVTYPE_KEYBOARD  3
-#define DIDEVTYPE_JOYSTICK  4
-#define DIDEVTYPE_HID       0x00010000
-
-#define DIDEVTYPEMOUSE_UNKNOWN          1
-#define DIDEVTYPEMOUSE_TRADITIONAL      2
-#define DIDEVTYPEMOUSE_FINGERSTICK      3
-#define DIDEVTYPEMOUSE_TOUCHPAD         4
-#define DIDEVTYPEMOUSE_TRACKBALL        5
-
-#define DIDEVTYPEKEYBOARD_UNKNOWN       0
-#define DIDEVTYPEKEYBOARD_PCXT          1
-#define DIDEVTYPEKEYBOARD_OLIVETTI      2
-#define DIDEVTYPEKEYBOARD_PCAT          3
-#define DIDEVTYPEKEYBOARD_PCENH         4
-#define DIDEVTYPEKEYBOARD_NOKIA1050     5
-#define DIDEVTYPEKEYBOARD_NOKIA9140     6
-#define DIDEVTYPEKEYBOARD_NEC98         7
-#define DIDEVTYPEKEYBOARD_NEC98LAPTOP   8
-#define DIDEVTYPEKEYBOARD_NEC98106      9
-#define DIDEVTYPEKEYBOARD_JAPAN106     10
-#define DIDEVTYPEKEYBOARD_JAPANAX      11
-#define DIDEVTYPEKEYBOARD_J3100        12
-
-#define DIDEVTYPEJOYSTICK_UNKNOWN       1
-#define DIDEVTYPEJOYSTICK_TRADITIONAL   2
-#define DIDEVTYPEJOYSTICK_FLIGHTSTICK   3
-#define DIDEVTYPEJOYSTICK_GAMEPAD       4
-#define DIDEVTYPEJOYSTICK_RUDDER        5
-#define DIDEVTYPEJOYSTICK_WHEEL         6
-#define DIDEVTYPEJOYSTICK_HEADTRACKER   7
-
-#define GET_DIDEVICE_TYPE(dwDevType)    LOBYTE(dwDevType)
-#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-/* This structure is defined for DirectX 3.0 compatibility */
-
-typedef struct DIDEVCAPS_DX3 {
-    DWORD   dwSize;
-    DWORD   dwFlags;
-    DWORD   dwDevType;
-    DWORD   dwAxes;
-    DWORD   dwButtons;
-    DWORD   dwPOVs;
-} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIDEVCAPS {
-    DWORD   dwSize;
-    DWORD   dwFlags;
-    DWORD   dwDevType;
-    DWORD   dwAxes;
-    DWORD   dwButtons;
-    DWORD   dwPOVs;
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    DWORD   dwFFSamplePeriod;
-    DWORD   dwFFMinTimeResolution;
-    DWORD   dwFirmwareRevision;
-    DWORD   dwHardwareRevision;
-    DWORD   dwFFDriverVersion;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVCAPS, *LPDIDEVCAPS;
-
-#define DIDC_ATTACHED           0x00000001
-#define DIDC_POLLEDDEVICE       0x00000002
-#define DIDC_EMULATED           0x00000004
-#define DIDC_POLLEDDATAFORMAT   0x00000008
-#if(DIRECTINPUT_VERSION >= 0x0500)
-#define DIDC_FORCEFEEDBACK      0x00000100
-#define DIDC_FFATTACK           0x00000200
-#define DIDC_FFFADE             0x00000400
-#define DIDC_SATURATION         0x00000800
-#define DIDC_POSNEGCOEFFICIENTS 0x00001000
-#define DIDC_POSNEGSATURATION   0x00002000
-#define DIDC_DEADBAND           0x00004000
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-#define DIDFT_ALL           0x00000000
-
-#define DIDFT_RELAXIS       0x00000001
-#define DIDFT_ABSAXIS       0x00000002
-#define DIDFT_AXIS          0x00000003
-
-#define DIDFT_PSHBUTTON     0x00000004
-#define DIDFT_TGLBUTTON     0x00000008
-#define DIDFT_BUTTON        0x0000000C
-
-#define DIDFT_POV           0x00000010
-
-#define DIDFT_COLLECTION    0x00000040
-#define DIDFT_NODATA        0x00000080
-
-#define DIDFT_ANYINSTANCE   0x00FFFF00
-#define DIDFT_INSTANCEMASK  DIDFT_ANYINSTANCE
-#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8)
-#define DIDFT_GETTYPE(n)     LOBYTE(n)
-#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8)
-#define DIDFT_FFACTUATOR        0x01000000
-#define DIDFT_FFEFFECTTRIGGER   0x02000000
-
-#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)
-#define DIDFT_NOCOLLECTION      0x00FFFF00
-
-
-#ifndef DIJ_RINGZERO
-
-typedef struct _DIOBJECTDATAFORMAT {
-    const GUID *pguid;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;
-typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;
-
-typedef struct _DIDATAFORMAT {
-    DWORD   dwSize;
-    DWORD   dwObjSize;
-    DWORD   dwFlags;
-    DWORD   dwDataSize;
-    DWORD   dwNumObjs;
-    LPDIOBJECTDATAFORMAT rgodf;
-} DIDATAFORMAT, *LPDIDATAFORMAT;
-typedef const DIDATAFORMAT *LPCDIDATAFORMAT;
-
-#define DIDF_ABSAXIS            0x00000001
-#define DIDF_RELAXIS            0x00000002
-
-extern const DIDATAFORMAT c_dfDIMouse;
-extern const DIDATAFORMAT c_dfDIKeyboard;
-extern const DIDATAFORMAT c_dfDIJoystick;
-extern const DIDATAFORMAT c_dfDIJoystick2;
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-/* These structures are defined for DirectX 3.0 compatibility */
-
-typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    CHAR    tszName[MAX_PATH];
-} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A;
-typedef struct DIDEVICEOBJECTINSTANCE_DX3W {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    WCHAR   tszName[MAX_PATH];
-} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W;
-#ifdef UNICODE
-typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3;
-typedef LPDIDEVICEOBJECTINSTANCE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3;
-#else
-typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3;
-typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3;
-#endif // UNICODE
-typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;
-typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;
-typedef const DIDEVICEOBJECTINSTANCE_DX3  *LPCDIDEVICEOBJECTINSTANCE_DX3;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIDEVICEOBJECTINSTANCEA {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    CHAR    tszName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    DWORD   dwFFMaxForce;
-    DWORD   dwFFForceResolution;
-    WORD    wCollectionNumber;
-    WORD    wDesignatorIndex;
-    WORD    wUsagePage;
-    WORD    wUsage;
-    DWORD   dwDimension;
-    WORD    wExponent;
-    WORD    wReserved;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;
-typedef struct DIDEVICEOBJECTINSTANCEW {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    WCHAR   tszName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    DWORD   dwFFMaxForce;
-    DWORD   dwFFForceResolution;
-    WORD    wCollectionNumber;
-    WORD    wDesignatorIndex;
-    WORD    wUsagePage;
-    WORD    wUsage;
-    DWORD   dwDimension;
-    WORD    wExponent;
-    WORD    wReserved;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;
-#ifdef UNICODE
-typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE;
-typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE;
-#else
-typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE;
-typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE;
-#endif // UNICODE
-typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;
-typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;
-typedef const DIDEVICEOBJECTINSTANCE  *LPCDIDEVICEOBJECTINSTANCE;
-
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID);
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID);
-#ifdef UNICODE
-#define LPDIENUMDEVICEOBJECTSCALLBACK  LPDIENUMDEVICEOBJECTSCALLBACKW
-#else
-#define LPDIENUMDEVICEOBJECTSCALLBACK  LPDIENUMDEVICEOBJECTSCALLBACKA
-#endif // !UNICODE
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-#define DIDOI_FFACTUATOR        0x00000001
-#define DIDOI_FFEFFECTTRIGGER   0x00000002
-#define DIDOI_POLLED            0x00008000
-#define DIDOI_ASPECTPOSITION    0x00000100
-#define DIDOI_ASPECTVELOCITY    0x00000200
-#define DIDOI_ASPECTACCEL       0x00000300
-#define DIDOI_ASPECTFORCE       0x00000400
-#define DIDOI_ASPECTMASK        0x00000F00
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIPROPHEADER {
-    DWORD   dwSize;
-    DWORD   dwHeaderSize;
-    DWORD   dwObj;
-    DWORD   dwHow;
-} DIPROPHEADER, *LPDIPROPHEADER;
-typedef const DIPROPHEADER *LPCDIPROPHEADER;
-
-#define DIPH_DEVICE             0
-#define DIPH_BYOFFSET           1
-#define DIPH_BYID               2
-
-typedef struct DIPROPDWORD {
-    DIPROPHEADER diph;
-    DWORD   dwData;
-} DIPROPDWORD, *LPDIPROPDWORD;
-typedef const DIPROPDWORD *LPCDIPROPDWORD;
-
-typedef struct DIPROPRANGE {
-    DIPROPHEADER diph;
-    LONG    lMin;
-    LONG    lMax;
-} DIPROPRANGE, *LPDIPROPRANGE;
-typedef const DIPROPRANGE *LPCDIPROPRANGE;
-
-#define DIPROPRANGE_NOMIN       ((LONG)0x80000000)
-#define DIPROPRANGE_NOMAX       ((LONG)0x7FFFFFFF)
-
-#ifdef __cplusplus
-#define MAKEDIPROP(prop)    (*(const GUID *)(prop))
-#else
-#define MAKEDIPROP(prop)    ((REFGUID)(prop))
-#endif
-
-#define DIPROP_BUFFERSIZE       MAKEDIPROP(1)
-
-#define DIPROP_AXISMODE         MAKEDIPROP(2)
-
-#define DIPROPAXISMODE_ABS      0
-#define DIPROPAXISMODE_REL      1
-
-#define DIPROP_GRANULARITY      MAKEDIPROP(3)
-
-#define DIPROP_RANGE            MAKEDIPROP(4)
-
-#define DIPROP_DEADZONE         MAKEDIPROP(5)
-
-#define DIPROP_SATURATION       MAKEDIPROP(6)
-
-#define DIPROP_FFGAIN           MAKEDIPROP(7)
-
-#define DIPROP_FFLOAD           MAKEDIPROP(8)
-
-#define DIPROP_AUTOCENTER       MAKEDIPROP(9)
-
-#define DIPROPAUTOCENTER_OFF    0
-#define DIPROPAUTOCENTER_ON     1
-
-#define DIPROP_CALIBRATIONMODE  MAKEDIPROP(10)
-
-#define DIPROPCALIBRATIONMODE_COOKED    0
-#define DIPROPCALIBRATIONMODE_RAW       1
-
-typedef struct DIDEVICEOBJECTDATA {
-    DWORD   dwOfs;
-    DWORD   dwData;
-    DWORD   dwTimeStamp;
-    DWORD   dwSequence;
-} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;
-typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;
-
-#define DIGDD_PEEK          0x00000001
-
-#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \
-                        ((int)((dwSequence1) - (dwSequence2)) cmp 0)
-#define DISCL_EXCLUSIVE     0x00000001
-#define DISCL_NONEXCLUSIVE  0x00000002
-#define DISCL_FOREGROUND    0x00000004
-#define DISCL_BACKGROUND    0x00000008
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-/* These structures are defined for DirectX 3.0 compatibility */
-
-typedef struct DIDEVICEINSTANCE_DX3A {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    CHAR    tszInstanceName[MAX_PATH];
-    CHAR    tszProductName[MAX_PATH];
-} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A;
-typedef struct DIDEVICEINSTANCE_DX3W {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    WCHAR   tszInstanceName[MAX_PATH];
-    WCHAR   tszProductName[MAX_PATH];
-} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W;
-#ifdef UNICODE
-typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3;
-typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3;
-#else
-typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3;
-typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3;
-#endif // UNICODE
-typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;
-typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;
-typedef const DIDEVICEINSTANCE_DX3  *LPCDIDEVICEINSTANCE_DX3;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIDEVICEINSTANCEA {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    CHAR    tszInstanceName[MAX_PATH];
-    CHAR    tszProductName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    GUID    guidFFDriver;
-    WORD    wUsagePage;
-    WORD    wUsage;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA;
-typedef struct DIDEVICEINSTANCEW {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    WCHAR   tszInstanceName[MAX_PATH];
-    WCHAR   tszProductName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    GUID    guidFFDriver;
-    WORD    wUsagePage;
-    WORD    wUsage;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW;
-#ifdef UNICODE
-typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
-typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE;
-#else
-typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
-typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE;
-#endif // UNICODE
-typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;
-typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;
-typedef const DIDEVICEINSTANCE  *LPCDIDEVICEINSTANCE;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDeviceW
-
-DECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceW methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-};
-
-typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDeviceA
-
-DECLARE_INTERFACE_(IDirectInputDeviceA, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceA methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-};
-
-typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;
-
-#ifdef UNICODE
-#define IID_IDirectInputDevice IID_IDirectInputDeviceW
-#define IDirectInputDevice IDirectInputDeviceW
-#define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl
-#else
-#define IID_IDirectInputDevice IID_IDirectInputDeviceA
-#define IDirectInputDevice IDirectInputDeviceA
-#define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl
-#endif
-typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
-#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
-#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
-#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
-#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p)
-#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p)
-#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
-#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
-#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
-#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
-#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
-#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
-#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
-#else
-#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInputDevice_AddRef(p) (p)->AddRef()
-#define IDirectInputDevice_Release(p) (p)->Release()
-#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a)
-#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
-#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b)
-#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b)
-#define IDirectInputDevice_Acquire(p) (p)->Acquire()
-#define IDirectInputDevice_Unacquire(p) (p)->Unacquire()
-#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
-#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
-#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a)
-#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a)
-#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
-#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
-#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
-#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-
-#define DISFFC_RESET            0x00000001
-#define DISFFC_STOPALL          0x00000002
-#define DISFFC_PAUSE            0x00000004
-#define DISFFC_CONTINUE         0x00000008
-#define DISFFC_SETACTUATORSON   0x00000010
-#define DISFFC_SETACTUATORSOFF  0x00000020
-
-#define DIGFFS_EMPTY            0x00000001
-#define DIGFFS_STOPPED          0x00000002
-#define DIGFFS_PAUSED           0x00000004
-#define DIGFFS_ACTUATORSON      0x00000010
-#define DIGFFS_ACTUATORSOFF     0x00000020
-#define DIGFFS_POWERON          0x00000040
-#define DIGFFS_POWEROFF         0x00000080
-#define DIGFFS_SAFETYSWITCHON   0x00000100
-#define DIGFFS_SAFETYSWITCHOFF  0x00000200
-#define DIGFFS_USERFFSWITCHON   0x00000400
-#define DIGFFS_USERFFSWITCHOFF  0x00000800
-#define DIGFFS_DEVICELOST       0x80000000
-
-#ifndef DIJ_RINGZERO
-
-typedef struct DIEFFECTINFOA {
-    DWORD   dwSize;
-    GUID    guid;
-    DWORD   dwEffType;
-    DWORD   dwStaticParams;
-    DWORD   dwDynamicParams;
-    CHAR    tszName[MAX_PATH];
-} DIEFFECTINFOA, *LPDIEFFECTINFOA;
-typedef struct DIEFFECTINFOW {
-    DWORD   dwSize;
-    GUID    guid;
-    DWORD   dwEffType;
-    DWORD   dwStaticParams;
-    DWORD   dwDynamicParams;
-    WCHAR   tszName[MAX_PATH];
-} DIEFFECTINFOW, *LPDIEFFECTINFOW;
-#ifdef UNICODE
-typedef DIEFFECTINFOW DIEFFECTINFO;
-typedef LPDIEFFECTINFOW LPDIEFFECTINFO;
-#else
-typedef DIEFFECTINFOA DIEFFECTINFO;
-typedef LPDIEFFECTINFOA LPDIEFFECTINFO;
-#endif // UNICODE
-typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;
-typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;
-typedef const DIEFFECTINFO  *LPCDIEFFECTINFO;
-
-typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);
-typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);
-#ifdef UNICODE
-#define LPDIENUMEFFECTSCALLBACK  LPDIENUMEFFECTSCALLBACKW
-#else
-#define LPDIENUMEFFECTSCALLBACK  LPDIENUMEFFECTSCALLBACKA
-#endif // !UNICODE
-typedef BOOL (FAR PASCAL * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDevice2W
-
-DECLARE_INTERFACE_(IDirectInputDevice2W, IDirectInputDeviceW)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceW methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-
-    /*** IDirectInputDevice2W methods ***/
-    STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE;
-    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
-    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
-    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
-    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
-    STDMETHOD(Poll)(THIS) PURE;
-    STDMETHOD(SendDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-};
-
-typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDevice2A
-
-DECLARE_INTERFACE_(IDirectInputDevice2A, IDirectInputDeviceA)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceA methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-
-    /*** IDirectInputDevice2A methods ***/
-    STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
-    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
-    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
-    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
-    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
-    STDMETHOD(Poll)(THIS) PURE;
-    STDMETHOD(SendDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-};
-
-typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;
-
-#ifdef UNICODE
-#define IID_IDirectInputDevice2 IID_IDirectInputDevice2W
-#define IDirectInputDevice2 IDirectInputDevice2W
-#define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl
-#else
-#define IID_IDirectInputDevice2 IID_IDirectInputDevice2A
-#define IDirectInputDevice2 IDirectInputDevice2A
-#define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl
-#endif
-typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
-#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
-#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
-#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
-#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p)
-#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p)
-#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
-#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
-#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
-#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
-#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
-#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
-#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
-#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)
-#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)
-#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)
-#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)
-#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
-#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
-#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a)
-#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p)
-#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
-#else
-#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInputDevice2_AddRef(p) (p)->AddRef()
-#define IDirectInputDevice2_Release(p) (p)->Release()
-#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a)
-#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
-#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b)
-#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b)
-#define IDirectInputDevice2_Acquire(p) (p)->Acquire()
-#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire()
-#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
-#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
-#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a)
-#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a)
-#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
-#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
-#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
-#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
-#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)
-#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)
-#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)
-#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)
-#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)
-#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
-#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a)
-#define IDirectInputDevice2_Poll(p) (p)->Poll()
-#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-/****************************************************************************
- *
- *      Mouse
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-typedef struct _DIMOUSESTATE {
-    LONG    lX;
-    LONG    lY;
-    LONG    lZ;
-    BYTE    rgbButtons[4];
-} DIMOUSESTATE, *LPDIMOUSESTATE;
-
-#define DIMOFS_X        FIELD_OFFSET(DIMOUSESTATE, lX)
-#define DIMOFS_Y        FIELD_OFFSET(DIMOUSESTATE, lY)
-#define DIMOFS_Z        FIELD_OFFSET(DIMOUSESTATE, lZ)
-#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0)
-#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1)
-#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2)
-#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3)
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *      Keyboard
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-/****************************************************************************
- *
- *      DirectInput keyboard scan codes
- *
- ****************************************************************************/
-
-#define DIK_ESCAPE          0x01
-#define DIK_1               0x02
-#define DIK_2               0x03
-#define DIK_3               0x04
-#define DIK_4               0x05
-#define DIK_5               0x06
-#define DIK_6               0x07
-#define DIK_7               0x08
-#define DIK_8               0x09
-#define DIK_9               0x0A
-#define DIK_0               0x0B
-#define DIK_MINUS           0x0C    /* - on main keyboard */
-#define DIK_EQUALS          0x0D
-#define DIK_BACK            0x0E    /* backspace */
-#define DIK_TAB             0x0F
-#define DIK_Q               0x10
-#define DIK_W               0x11
-#define DIK_E               0x12
-#define DIK_R               0x13
-#define DIK_T               0x14
-#define DIK_Y               0x15
-#define DIK_U               0x16
-#define DIK_I               0x17
-#define DIK_O               0x18
-#define DIK_P               0x19
-#define DIK_LBRACKET        0x1A
-#define DIK_RBRACKET        0x1B
-#define DIK_RETURN          0x1C    /* Enter on main keyboard */
-#define DIK_LCONTROL        0x1D
-#define DIK_A               0x1E
-#define DIK_S               0x1F
-#define DIK_D               0x20
-#define DIK_F               0x21
-#define DIK_G               0x22
-#define DIK_H               0x23
-#define DIK_J               0x24
-#define DIK_K               0x25
-#define DIK_L               0x26
-#define DIK_SEMICOLON       0x27
-#define DIK_APOSTROPHE      0x28
-#define DIK_GRAVE           0x29    /* accent grave */
-#define DIK_LSHIFT          0x2A
-#define DIK_BACKSLASH       0x2B
-#define DIK_Z               0x2C
-#define DIK_X               0x2D
-#define DIK_C               0x2E
-#define DIK_V               0x2F
-#define DIK_B               0x30
-#define DIK_N               0x31
-#define DIK_M               0x32
-#define DIK_COMMA           0x33
-#define DIK_PERIOD          0x34    /* . on main keyboard */
-#define DIK_SLASH           0x35    /* / on main keyboard */
-#define DIK_RSHIFT          0x36
-#define DIK_MULTIPLY        0x37    /* * on numeric keypad */
-#define DIK_LMENU           0x38    /* left Alt */
-#define DIK_SPACE           0x39
-#define DIK_CAPITAL         0x3A
-#define DIK_F1              0x3B
-#define DIK_F2              0x3C
-#define DIK_F3              0x3D
-#define DIK_F4              0x3E
-#define DIK_F5              0x3F
-#define DIK_F6              0x40
-#define DIK_F7              0x41
-#define DIK_F8              0x42
-#define DIK_F9              0x43
-#define DIK_F10             0x44
-#define DIK_NUMLOCK         0x45
-#define DIK_SCROLL          0x46    /* Scroll Lock */
-#define DIK_NUMPAD7         0x47
-#define DIK_NUMPAD8         0x48
-#define DIK_NUMPAD9         0x49
-#define DIK_SUBTRACT        0x4A    /* - on numeric keypad */
-#define DIK_NUMPAD4         0x4B
-#define DIK_NUMPAD5         0x4C
-#define DIK_NUMPAD6         0x4D
-#define DIK_ADD             0x4E    /* + on numeric keypad */
-#define DIK_NUMPAD1         0x4F
-#define DIK_NUMPAD2         0x50
-#define DIK_NUMPAD3         0x51
-#define DIK_NUMPAD0         0x52
-#define DIK_DECIMAL         0x53    /* . on numeric keypad */
-#define DIK_F11             0x57
-#define DIK_F12             0x58
-
-#define DIK_F13             0x64    /*                     (NEC PC98) */
-#define DIK_F14             0x65    /*                     (NEC PC98) */
-#define DIK_F15             0x66    /*                     (NEC PC98) */
-
-#define DIK_KANA            0x70    /* (Japanese keyboard)            */
-#define DIK_CONVERT         0x79    /* (Japanese keyboard)            */
-#define DIK_NOCONVERT       0x7B    /* (Japanese keyboard)            */
-#define DIK_YEN             0x7D    /* (Japanese keyboard)            */
-#define DIK_NUMPADEQUALS    0x8D    /* = on numeric keypad (NEC PC98) */
-#define DIK_CIRCUMFLEX      0x90    /* (Japanese keyboard)            */
-#define DIK_AT              0x91    /*                     (NEC PC98) */
-#define DIK_COLON           0x92    /*                     (NEC PC98) */
-#define DIK_UNDERLINE       0x93    /*                     (NEC PC98) */
-#define DIK_KANJI           0x94    /* (Japanese keyboard)            */
-#define DIK_STOP            0x95    /*                     (NEC PC98) */
-#define DIK_AX              0x96    /*                     (Japan AX) */
-#define DIK_UNLABELED       0x97    /*                        (J3100) */
-#define DIK_NUMPADENTER     0x9C    /* Enter on numeric keypad */
-#define DIK_RCONTROL        0x9D
-#define DIK_NUMPADCOMMA     0xB3    /* , on numeric keypad (NEC PC98) */
-#define DIK_DIVIDE          0xB5    /* / on numeric keypad */
-#define DIK_SYSRQ           0xB7
-#define DIK_RMENU           0xB8    /* right Alt */
-#define DIK_HOME            0xC7    /* Home on arrow keypad */
-#define DIK_UP              0xC8    /* UpArrow on arrow keypad */
-#define DIK_PRIOR           0xC9    /* PgUp on arrow keypad */
-#define DIK_LEFT            0xCB    /* LeftArrow on arrow keypad */
-#define DIK_RIGHT           0xCD    /* RightArrow on arrow keypad */
-#define DIK_END             0xCF    /* End on arrow keypad */
-#define DIK_DOWN            0xD0    /* DownArrow on arrow keypad */
-#define DIK_NEXT            0xD1    /* PgDn on arrow keypad */
-#define DIK_INSERT          0xD2    /* Insert on arrow keypad */
-#define DIK_DELETE          0xD3    /* Delete on arrow keypad */
-#define DIK_LWIN            0xDB    /* Left Windows key */
-#define DIK_RWIN            0xDC    /* Right Windows key */
-#define DIK_APPS            0xDD    /* AppMenu key */
-
-/*
- *  Alternate names for keys, to facilitate transition from DOS.
- */
-#define DIK_BACKSPACE       DIK_BACK            /* backspace */
-#define DIK_NUMPADSTAR      DIK_MULTIPLY        /* * on numeric keypad */
-#define DIK_LALT            DIK_LMENU           /* left Alt */
-#define DIK_CAPSLOCK        DIK_CAPITAL         /* CapsLock */
-#define DIK_NUMPADMINUS     DIK_SUBTRACT        /* - on numeric keypad */
-#define DIK_NUMPADPLUS      DIK_ADD             /* + on numeric keypad */
-#define DIK_NUMPADPERIOD    DIK_DECIMAL         /* . on numeric keypad */
-#define DIK_NUMPADSLASH     DIK_DIVIDE          /* / on numeric keypad */
-#define DIK_RALT            DIK_RMENU           /* right Alt */
-#define DIK_UPARROW         DIK_UP              /* UpArrow on arrow keypad */
-#define DIK_PGUP            DIK_PRIOR           /* PgUp on arrow keypad */
-#define DIK_LEFTARROW       DIK_LEFT            /* LeftArrow on arrow keypad */
-#define DIK_RIGHTARROW      DIK_RIGHT           /* RightArrow on arrow keypad */
-#define DIK_DOWNARROW       DIK_DOWN            /* DownArrow on arrow keypad */
-#define DIK_PGDN            DIK_NEXT            /* PgDn on arrow keypad */
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *      Joystick
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-typedef struct DIJOYSTATE {
-    LONG    lX;                     /* x-axis position              */
-    LONG    lY;                     /* y-axis position              */
-    LONG    lZ;                     /* z-axis position              */
-    LONG    lRx;                    /* x-axis rotation              */
-    LONG    lRy;                    /* y-axis rotation              */
-    LONG    lRz;                    /* z-axis rotation              */
-    LONG    rglSlider[2];           /* extra axes positions         */
-    DWORD   rgdwPOV[4];             /* POV directions               */
-    BYTE    rgbButtons[32];         /* 32 buttons                   */
-} DIJOYSTATE, *LPDIJOYSTATE;
-
-typedef struct DIJOYSTATE2 {
-    LONG    lX;                     /* x-axis position              */
-    LONG    lY;                     /* y-axis position              */
-    LONG    lZ;                     /* z-axis position              */
-    LONG    lRx;                    /* x-axis rotation              */
-    LONG    lRy;                    /* y-axis rotation              */
-    LONG    lRz;                    /* z-axis rotation              */
-    LONG    rglSlider[2];           /* extra axes positions         */
-    DWORD   rgdwPOV[4];             /* POV directions               */
-    BYTE    rgbButtons[128];        /* 128 buttons                  */
-    LONG    lVX;                    /* x-axis velocity              */
-    LONG    lVY;                    /* y-axis velocity              */
-    LONG    lVZ;                    /* z-axis velocity              */
-    LONG    lVRx;                   /* x-axis angular velocity      */
-    LONG    lVRy;                   /* y-axis angular velocity      */
-    LONG    lVRz;                   /* z-axis angular velocity      */
-    LONG    rglVSlider[2];          /* extra axes velocities        */
-    LONG    lAX;                    /* x-axis acceleration          */
-    LONG    lAY;                    /* y-axis acceleration          */
-    LONG    lAZ;                    /* z-axis acceleration          */
-    LONG    lARx;                   /* x-axis angular acceleration  */
-    LONG    lARy;                   /* y-axis angular acceleration  */
-    LONG    lARz;                   /* z-axis angular acceleration  */
-    LONG    rglASlider[2];          /* extra axes accelerations     */
-    LONG    lFX;                    /* x-axis force                 */
-    LONG    lFY;                    /* y-axis force                 */
-    LONG    lFZ;                    /* z-axis force                 */
-    LONG    lFRx;                   /* x-axis torque                */
-    LONG    lFRy;                   /* y-axis torque                */
-    LONG    lFRz;                   /* z-axis torque                */
-    LONG    rglFSlider[2];          /* extra axes forces            */
-} DIJOYSTATE2, *LPDIJOYSTATE2;
-
-#define DIJOFS_X            FIELD_OFFSET(DIJOYSTATE, lX)
-#define DIJOFS_Y            FIELD_OFFSET(DIJOYSTATE, lY)
-#define DIJOFS_Z            FIELD_OFFSET(DIJOYSTATE, lZ)
-#define DIJOFS_RX           FIELD_OFFSET(DIJOYSTATE, lRx)
-#define DIJOFS_RY           FIELD_OFFSET(DIJOYSTATE, lRy)
-#define DIJOFS_RZ           FIELD_OFFSET(DIJOYSTATE, lRz)
-#define DIJOFS_SLIDER(n)   (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
-                                                        (n) * sizeof(LONG))
-#define DIJOFS_POV(n)      (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
-                                                        (n) * sizeof(DWORD))
-#define DIJOFS_BUTTON(n)   (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
-#define DIJOFS_BUTTON0      DIJOFS_BUTTON(0)
-#define DIJOFS_BUTTON1      DIJOFS_BUTTON(1)
-#define DIJOFS_BUTTON2      DIJOFS_BUTTON(2)
-#define DIJOFS_BUTTON3      DIJOFS_BUTTON(3)
-#define DIJOFS_BUTTON4      DIJOFS_BUTTON(4)
-#define DIJOFS_BUTTON5      DIJOFS_BUTTON(5)
-#define DIJOFS_BUTTON6      DIJOFS_BUTTON(6)
-#define DIJOFS_BUTTON7      DIJOFS_BUTTON(7)
-#define DIJOFS_BUTTON8      DIJOFS_BUTTON(8)
-#define DIJOFS_BUTTON9      DIJOFS_BUTTON(9)
-#define DIJOFS_BUTTON10     DIJOFS_BUTTON(10)
-#define DIJOFS_BUTTON11     DIJOFS_BUTTON(11)
-#define DIJOFS_BUTTON12     DIJOFS_BUTTON(12)
-#define DIJOFS_BUTTON13     DIJOFS_BUTTON(13)
-#define DIJOFS_BUTTON14     DIJOFS_BUTTON(14)
-#define DIJOFS_BUTTON15     DIJOFS_BUTTON(15)
-#define DIJOFS_BUTTON16     DIJOFS_BUTTON(16)
-#define DIJOFS_BUTTON17     DIJOFS_BUTTON(17)
-#define DIJOFS_BUTTON18     DIJOFS_BUTTON(18)
-#define DIJOFS_BUTTON19     DIJOFS_BUTTON(19)
-#define DIJOFS_BUTTON20     DIJOFS_BUTTON(20)
-#define DIJOFS_BUTTON21     DIJOFS_BUTTON(21)
-#define DIJOFS_BUTTON22     DIJOFS_BUTTON(22)
-#define DIJOFS_BUTTON23     DIJOFS_BUTTON(23)
-#define DIJOFS_BUTTON24     DIJOFS_BUTTON(24)
-#define DIJOFS_BUTTON25     DIJOFS_BUTTON(25)
-#define DIJOFS_BUTTON26     DIJOFS_BUTTON(26)
-#define DIJOFS_BUTTON27     DIJOFS_BUTTON(27)
-#define DIJOFS_BUTTON28     DIJOFS_BUTTON(28)
-#define DIJOFS_BUTTON29     DIJOFS_BUTTON(29)
-#define DIJOFS_BUTTON30     DIJOFS_BUTTON(30)
-#define DIJOFS_BUTTON31     DIJOFS_BUTTON(31)
-
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *  IDirectInput
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-#define DIENUM_STOP             0
-#define DIENUM_CONTINUE         1
-
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID);
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID);
-#ifdef UNICODE
-#define LPDIENUMDEVICESCALLBACK  LPDIENUMDEVICESCALLBACKW
-#else
-#define LPDIENUMDEVICESCALLBACK  LPDIENUMDEVICESCALLBACKA
-#endif // !UNICODE
-
-#define DIEDFL_ALLDEVICES       0x00000000
-#define DIEDFL_ATTACHEDONLY     0x00000001
-#if(DIRECTINPUT_VERSION >= 0x0500)
-#define DIEDFL_FORCEFEEDBACK    0x00000100
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-#undef INTERFACE
-#define INTERFACE IDirectInputW
-
-DECLARE_INTERFACE_(IDirectInputW, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputW methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-};
-
-typedef struct IDirectInputW *LPDIRECTINPUTW;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputA
-
-DECLARE_INTERFACE_(IDirectInputA, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputA methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-};
-
-typedef struct IDirectInputA *LPDIRECTINPUTA;
-
-#ifdef UNICODE
-#define IID_IDirectInput IID_IDirectInputW
-#define IDirectInput IDirectInputW
-#define IDirectInputVtbl IDirectInputWVtbl
-#else
-#define IID_IDirectInput IID_IDirectInputA
-#define IDirectInput IDirectInputA
-#define IDirectInputVtbl IDirectInputAVtbl
-#endif
-typedef struct IDirectInput *LPDIRECTINPUT;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInput_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
-#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
-#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
-#else
-#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInput_AddRef(p) (p)->AddRef()
-#define IDirectInput_Release(p) (p)->Release()
-#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
-#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
-#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
-#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b)
-#endif
-
-#undef INTERFACE
-#define INTERFACE IDirectInput2W
-
-DECLARE_INTERFACE_(IDirectInput2W, IDirectInputW)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputW methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-
-    /*** IDirectInput2W methods ***/
-    STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE;
-};
-
-typedef struct IDirectInput2W *LPDIRECTINPUT2W;
-
-#undef INTERFACE
-#define INTERFACE IDirectInput2A
-
-DECLARE_INTERFACE_(IDirectInput2A, IDirectInputA)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputA methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-
-    /*** IDirectInput2A methods ***/
-    STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE;
-};
-
-typedef struct IDirectInput2A *LPDIRECTINPUT2A;
-
-#ifdef UNICODE
-#define IID_IDirectInput2 IID_IDirectInput2W
-#define IDirectInput2 IDirectInput2W
-#define IDirectInput2Vtbl IDirectInput2WVtbl
-#else
-#define IID_IDirectInput2 IID_IDirectInput2A
-#define IDirectInput2 IDirectInput2A
-#define IDirectInput2Vtbl IDirectInput2AVtbl
-#endif
-typedef struct IDirectInput2 *LPDIRECTINPUT2;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
-#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
-#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)
-#else
-#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInput2_AddRef(p) (p)->AddRef()
-#define IDirectInput2_Release(p) (p)->Release()
-#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
-#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
-#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
-#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b)
-#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)
-#endif
-
-extern HRESULT WINAPI DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter);
-extern HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter);
-#ifdef UNICODE
-#define DirectInputCreate  DirectInputCreateW
-#else
-#define DirectInputCreate  DirectInputCreateA
-#endif // !UNICODE
-
-#endif /* DIJ_RINGZERO */
-
-
-/****************************************************************************
- *
- *  Return Codes
- *
- ****************************************************************************/
-
-/*
- *  The operation completed successfully.
- */
-#define DI_OK                           S_OK
-
-/*
- *  The device exists but is not currently attached.
- */
-#define DI_NOTATTACHED                  S_FALSE
-
-/*
- *  The device buffer overflowed.  Some input was lost.
- */
-#define DI_BUFFEROVERFLOW               S_FALSE
-
-/*
- *  The change in device properties had no effect.
- */
-#define DI_PROPNOEFFECT                 S_FALSE
-
-/*
- *  The operation had no effect.
- */
-#define DI_NOEFFECT                     S_FALSE
-
-/*
- *  The device is a polled device.  As a result, device buffering
- *  will not collect any data and event notifications will not be
- *  signalled until GetDeviceState is called.
- */
-#define DI_POLLEDDEVICE                 ((HRESULT)0x00000002L)
-
-/*
- *  The parameters of the effect were successfully updated by
- *  IDirectInputEffect::SetParameters, but the effect was not
- *  downloaded because the device is not exclusively acquired
- *  or because the DIEP_NODOWNLOAD flag was passed.
- */
-#define DI_DOWNLOADSKIPPED              ((HRESULT)0x00000003L)
-
-/*
- *  The parameters of the effect were successfully updated by
- *  IDirectInputEffect::SetParameters, but in order to change
- *  the parameters, the effect needed to be restarted.
- */
-#define DI_EFFECTRESTARTED              ((HRESULT)0x00000004L)
-
-/*
- *  The parameters of the effect were successfully updated by
- *  IDirectInputEffect::SetParameters, but some of them were
- *  beyond the capabilities of the device and were truncated.
- */
-#define DI_TRUNCATED                    ((HRESULT)0x00000008L)
-
-/*
- *  Equal to DI_EFFECTRESTARTED | DI_TRUNCATED.
- */
-#define DI_TRUNCATEDANDRESTARTED        ((HRESULT)0x0000000CL)
-
-/*
- *  The application requires a newer version of DirectInput.
- */
-#define DIERR_OLDDIRECTINPUTVERSION     \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION)
-
-/*
- *  The application was written for an unsupported prerelease version
- *  of DirectInput.
- */
-#define DIERR_BETADIRECTINPUTVERSION    \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP)
-
-/*
- *  The object could not be created due to an incompatible driver version
- *  or mismatched or incomplete driver components.
- */
-#define DIERR_BADDRIVERVER              \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL)
-
-/*
- * The device or device instance or effect is not registered with DirectInput.
- */
-#define DIERR_DEVICENOTREG              REGDB_E_CLASSNOTREG
-
-/*
- * The requested object does not exist.
- */
-#define DIERR_NOTFOUND                  \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
-
-/*
- * The requested object does not exist.
- */
-#define DIERR_OBJECTNOTFOUND            \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
-
-/*
- * An invalid parameter was passed to the returning function,
- * or the object was not in a state that admitted the function
- * to be called.
- */
-#define DIERR_INVALIDPARAM              E_INVALIDARG
-
-/*
- * The specified interface is not supported by the object
- */
-#define DIERR_NOINTERFACE               E_NOINTERFACE
-
-/*
- * An undetermined error occured inside the DInput subsystem
- */
-#define DIERR_GENERIC                   E_FAIL
-
-/*
- * The DInput subsystem couldn't allocate sufficient memory to complete the
- * caller's request.
- */
-#define DIERR_OUTOFMEMORY               E_OUTOFMEMORY
-
-/*
- * The function called is not supported at this time
- */
-#define DIERR_UNSUPPORTED               E_NOTIMPL
-
-/*
- * This object has not been initialized
- */
-#define DIERR_NOTINITIALIZED            \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY)
-
-/*
- * This object is already initialized
- */
-#define DIERR_ALREADYINITIALIZED        \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED)
-
-/*
- * This object does not support aggregation
- */
-#define DIERR_NOAGGREGATION             CLASS_E_NOAGGREGATION
-
-/*
- * Another app has a higher priority level, preventing this call from
- * succeeding.
- */
-#define DIERR_OTHERAPPHASPRIO           E_ACCESSDENIED
-
-/*
- * Access to the device has been lost.  It must be re-acquired.
- */
-#define DIERR_INPUTLOST                 \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT)
-
-/*
- * The operation cannot be performed while the device is acquired.
- */
-#define DIERR_ACQUIRED                  \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY)
-
-/*
- * The operation cannot be performed unless the device is acquired.
- */
-#define DIERR_NOTACQUIRED               \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS)
-
-/*
- * The specified property cannot be changed.
- */
-#define DIERR_READONLY                  E_ACCESSDENIED
-
-/*
- * The device already has an event notification associated with it.
- */
-#define DIERR_HANDLEEXISTS              E_ACCESSDENIED
-
-/*
- * Data is not yet available.
- */
-#ifndef E_PENDING
-#define E_PENDING                       0x80070007L
-#endif
-
-/*
- * Unable to IDirectInputJoyConfig_Acquire because the user
- * does not have sufficient privileges to change the joystick
- * configuration.
- */
-#define DIERR_INSUFFICIENTPRIVS         0x80040200L
-
-/*
- * The device is full.
- */
-#define DIERR_DEVICEFULL                0x80040201L
-
-/*
- * Not all the requested information fit into the buffer.
- */
-#define DIERR_MOREDATA                  0x80040202L
-
-/*
- * The effect is not downloaded.
- */
-#define DIERR_NOTDOWNLOADED             0x80040203L
-
-/*
- *  The device cannot be reinitialized because there are still effects
- *  attached to it.
- */
-#define DIERR_HASEFFECTS                0x80040204L
-
-/*
- *  The operation cannot be performed unless the device is acquired
- *  in DISCL_EXCLUSIVE mode.
- */
-#define DIERR_NOTEXCLUSIVEACQUIRED      0x80040205L
-
-/*
- *  The effect could not be downloaded because essential information
- *  is missing.  For example, no axes have been associated with the
- *  effect, or no type-specific information has been created.
- */
-#define DIERR_INCOMPLETEEFFECT          0x80040206L
-
-/*
- *  Attempted to read buffered device data from a device that is
- *  not buffered.
- */
-#define DIERR_NOTBUFFERED               0x80040207L
-
-/*
- *  An attempt was made to modify parameters of an effect while it is
- *  playing.  Not all hardware devices support altering the parameters
- *  of an effect while it is playing.
- */
-#define DIERR_EFFECTPLAYING             0x80040208L
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif  /* __DINPUT_INCLUDED__ */
-
-/****************************************************************************
- *
- *  Definitions for non-IDirectInput (VJoyD) features defined more recently
- *  than the current sdk files
- *
- ****************************************************************************/
-
-#ifdef _INC_MMSYSTEM
-#ifndef MMNOJOY
-
-#ifndef __VJOYDX_INCLUDED__
-#define __VJOYDX_INCLUDED__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure
- * contains mini-driver specific data to be passed by VJoyD to the mini-
- * driver instead of doing a poll.
- */
-#define JOY_PASSDRIVERDATA          0x10000000l
-
-/*
- * Informs the joystick driver that the configuration has been changed
- * and should be reloaded from the registery.
- * dwFlags is reserved and should be set to zero
- */
-WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags );
-
-/*
- * Hardware Setting indicating that the device is a headtracker
- */
-#define JOY_HWS_ISHEADTRACKER       0x02000000l
-
-/*
- * Hardware Setting indicating that the VxD is used to replace
- * the standard analog polling
- */
-#define JOY_HWS_ISGAMEPORTDRIVER    0x04000000l
-
-/*
- * Hardware Setting indicating that the driver needs a standard
- * gameport in order to communicate with the device.
- */
-#define JOY_HWS_ISANALOGPORTDRIVER  0x08000000l 
-
-/*
- * Hardware Setting indicating that VJoyD should not load this 
- * driver, it will be loaded externally and will register with
- * VJoyD of it's own accord.
- */
-#define JOY_HWS_AUTOLOAD            0x10000000l
-
-/*
- * Hardware Setting indicating that the driver acquires any 
- * resources needed without needing a devnode through VJoyD.
- */
-#define JOY_HWS_NODEVNODE           0x20000000l
-
-/*
- * Hardware Setting indicating that the VxD can be used as
- * a port 201h emulator.
- */
-#define JOY_HWS_ISGAMEPORTEMULATOR  0x40000000l
-
-
-/*
- * Usage Setting indicating that the settings are volatile and
- * should be removed if still present on a reboot.
- */
-#define JOY_US_VOLATILE             0x00000008L
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif  /* __VJOYDX_INCLUDED__ */
-
-#endif  /* not MMNOJOY */
-#endif  /* _INC_MMSYSTEM */
-
-/****************************************************************************
- *
- *  Definitions for non-IDirectInput (VJoyD) features defined more recently
- *  than the current ddk files
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-#ifdef _INC_MMDDK
-#ifndef MMNOJOYDEV
-
-#ifndef __VJOYDXD_INCLUDED__
-#define __VJOYDXD_INCLUDED__
-/*
- * Poll type in which the do_other field of the JOYOEMPOLLDATA
- * structure contains mini-driver specific data passed from an app.
- */
-#define JOY_OEMPOLL_PASSDRIVERDATA  7
-
-#endif  /* __VJOYDXD_INCLUDED__ */
-
-#endif  /* not MMNOJOYDEV */
-#endif  /* _INC_MMDDK */
-
-#endif /* DIJ_RINGZERO */
diff --git a/misc/builddeps/win32/dx/include/dsound.h b/misc/builddeps/win32/dx/include/dsound.h
deleted file mode 100644 (file)
index 599b80a..0000000
+++ /dev/null
@@ -1,1200 +0,0 @@
-/*
- * Copyright (C) the Wine project
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_DSOUND_H
-#define __WINE_DSOUND_H
-#define __DSOUND_INCLUDED__
-
-#include <_mingw_dxhelper.h>
-#ifndef DIRECTSOUND_VERSION
-#define DIRECTSOUND_VERSION 0x0900
-#endif
-
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#include <float.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-#ifndef DX_SHARED_DEFINES
-
-typedef float D3DVALUE, *LPD3DVALUE;
-
-#ifndef D3DCOLOR_DEFINED
-typedef DWORD D3DCOLOR, *LPD3DCOLOR;
-#define D3DCOLOR_DEFINED
-#endif
-
-#ifndef D3DVECTOR_DEFINED
-typedef struct _D3DVECTOR {
-    float x;
-    float y;
-    float z;
-} D3DVECTOR;
-#define D3DVECTOR_DEFINED
-#endif
-
-#ifndef LPD3DVECTOR_DEFINED
-typedef D3DVECTOR *LPD3DVECTOR;
-#define LPD3DVECTOR_DEFINED
-#endif
-
-#define DX_SHARED_DEFINES
-#endif /* DX_SHARED_DEFINES */
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID(CLSID_DirectSound,         0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
-DEFINE_GUID(CLSID_DirectSound8,                0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b);
-DEFINE_GUID(CLSID_DirectSoundCapture,  0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x08, 0x00, 0xa0, 0xc9, 0x25, 0xcd, 0x16);
-DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1);
-DEFINE_GUID(CLSID_DirectSoundFullDuplex,0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d);
-
-DEFINE_GUID(IID_IDirectSound,          0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
-typedef struct IDirectSound *LPDIRECTSOUND,**LPLPDIRECTSOUND;
-
-DEFINE_GUID(IID_IDirectSound8,         0xC50A7E93,0xF395,0x4834,0x9E,0xF6,0x7F,0xA9,0x9D,0xE5,0x09,0x66);
-typedef struct IDirectSound8 *LPDIRECTSOUND8,**LPLPDIRECTSOUND8;
-
-DEFINE_GUID(IID_IDirectSoundBuffer,    0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
-typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER,**LPLPDIRECTSOUNDBUFFER;
-
-DEFINE_GUID(IID_IDirectSoundBuffer8,   0x6825A449,0x7524,0x4D82,0x92,0x0F,0x50,0xE3,0x6A,0xB3,0xAB,0x1E);
-typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8,**LPLPDIRECTSOUNDBUFFER8;
-
-DEFINE_GUID(IID_IDirectSoundNotify,    0xB0210783,0x89cd,0x11d0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
-typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY,**LPLPDIRECTSOUNDNOTIFY;
-#define        IID_IDirectSoundNotify8         IID_IDirectSoundNotify
-
-DEFINE_GUID(IID_IDirectSound3DListener,        0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
-typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER,**LPLPDIRECTSOUND3DLISTENER;
-
-DEFINE_GUID(IID_IDirectSound3DBuffer,  0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
-typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER,**LPLPDIRECTSOUND3DBUFFER;
-
-DEFINE_GUID(IID_IDirectSoundCapture,   0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
-typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE,**LPLPDIRECTSOUNDCAPTURE;
-#define        IID_IDirectSoundCapture8        IID_IDirectSoundCapture
-typedef struct IDirectSoundCapture IDirectSoundCapture8,*LPDIRECTSOUNDCAPTURE8,**LPLPDIRECTSOUNDCAPTURE8;
-
-DEFINE_GUID(IID_IDirectSoundCaptureBuffer,0xB0210782,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
-typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER,**LPLPDIRECTSOUNDCAPTUREBUFFER;
-
-DEFINE_GUID(IID_IDirectSoundCaptureBuffer8,0x00990DF4,0x0DBB,0x4872,0x83,0x3E,0x6D,0x30,0x3E,0x80,0xAE,0xB6);
-typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8,**LPLPDIRECTSOUNDCAPTUREBUFFER8;
-
-DEFINE_GUID(IID_IDirectSoundFullDuplex,        0xEDCB4C7A,0xDAAB,0x4216,0xA4,0x2E,0x6C,0x50,0x59,0x6D,0xDC,0x1D);
-typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX,**LPLPDIRECTSOUNDFULLDUPLEX;
-#define        IID_IDirectSoundFullDuplex8     IID_IDirectSoundFullDuplex
-
-DEFINE_GUID(DSDEVID_DefaultPlayback,     0xDEF00000,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
-DEFINE_GUID(DSDEVID_DefaultCapture,      0xDEF00001,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
-DEFINE_GUID(DSDEVID_DefaultVoicePlayback,0xDEF00002,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
-DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xDEF00003,0x9C6D,0x47ED,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
-
-DEFINE_GUID(DSDEVID_WinePlayback,        0x40316A1D,0x605B,0xD611,0x87,0xC6,0x00,0x80,0xAD,0x00,0x02,0xFE);
-
-#define        _FACDS          0x878
-#define        MAKE_DSHRESULT(code)            MAKE_HRESULT(1,_FACDS,code)
-
-#define DS_OK                          0
-#define DS_NO_VIRTUALIZATION            MAKE_HRESULT(0, _FACDS, 10)
-#define DS_INCOMPLETE                   MAKE_HRESULT(0, _FACDS, 20)
-#define DSERR_ALLOCATED                        MAKE_DSHRESULT(10)
-#define DSERR_CONTROLUNAVAIL           MAKE_DSHRESULT(30)
-#define DSERR_INVALIDPARAM             E_INVALIDARG
-#define DSERR_INVALIDCALL              MAKE_DSHRESULT(50)
-#define DSERR_GENERIC                  E_FAIL
-#define DSERR_PRIOLEVELNEEDED          MAKE_DSHRESULT(70)
-#define DSERR_OUTOFMEMORY              E_OUTOFMEMORY
-#define DSERR_BADFORMAT                        MAKE_DSHRESULT(100)
-#define DSERR_UNSUPPORTED              E_NOTIMPL
-#define DSERR_NODRIVER                 MAKE_DSHRESULT(120)
-#define DSERR_ALREADYINITIALIZED       MAKE_DSHRESULT(130)
-#define DSERR_NOAGGREGATION            CLASS_E_NOAGGREGATION
-#define DSERR_BUFFERLOST               MAKE_DSHRESULT(150)
-#define DSERR_OTHERAPPHASPRIO          MAKE_DSHRESULT(160)
-#define DSERR_UNINITIALIZED            MAKE_DSHRESULT(170)
-#define DSERR_NOINTERFACE               E_NOINTERFACE
-#define DSERR_ACCESSDENIED              E_ACCESSDENIED
-#define DSERR_BUFFERTOOSMALL            MAKE_DSHRESULT(180)
-#define DSERR_DS8_REQUIRED              MAKE_DSHRESULT(190)
-#define DSERR_SENDLOOP                  MAKE_DSHRESULT(200)
-#define DSERR_BADSENDBUFFERGUID         MAKE_DSHRESULT(210)
-#define DSERR_FXUNAVAILABLE             MAKE_DSHRESULT(220)
-#define DSERR_OBJECTNOTFOUND            MAKE_DSHRESULT(4449)
-
-#define DSCAPS_PRIMARYMONO          0x00000001
-#define DSCAPS_PRIMARYSTEREO        0x00000002
-#define DSCAPS_PRIMARY8BIT          0x00000004
-#define DSCAPS_PRIMARY16BIT         0x00000008
-#define DSCAPS_CONTINUOUSRATE       0x00000010
-#define DSCAPS_EMULDRIVER           0x00000020
-#define DSCAPS_CERTIFIED            0x00000040
-#define DSCAPS_SECONDARYMONO        0x00000100
-#define DSCAPS_SECONDARYSTEREO      0x00000200
-#define DSCAPS_SECONDARY8BIT        0x00000400
-#define DSCAPS_SECONDARY16BIT       0x00000800
-
-#define        DSSCL_NORMAL            1
-#define        DSSCL_PRIORITY          2
-#define        DSSCL_EXCLUSIVE         3
-#define        DSSCL_WRITEPRIMARY      4
-
-typedef struct _DSCAPS
-{
-    DWORD      dwSize;
-    DWORD      dwFlags;
-    DWORD      dwMinSecondarySampleRate;
-    DWORD      dwMaxSecondarySampleRate;
-    DWORD      dwPrimaryBuffers;
-    DWORD      dwMaxHwMixingAllBuffers;
-    DWORD      dwMaxHwMixingStaticBuffers;
-    DWORD      dwMaxHwMixingStreamingBuffers;
-    DWORD      dwFreeHwMixingAllBuffers;
-    DWORD      dwFreeHwMixingStaticBuffers;
-    DWORD      dwFreeHwMixingStreamingBuffers;
-    DWORD      dwMaxHw3DAllBuffers;
-    DWORD      dwMaxHw3DStaticBuffers;
-    DWORD      dwMaxHw3DStreamingBuffers;
-    DWORD      dwFreeHw3DAllBuffers;
-    DWORD      dwFreeHw3DStaticBuffers;
-    DWORD      dwFreeHw3DStreamingBuffers;
-    DWORD      dwTotalHwMemBytes;
-    DWORD      dwFreeHwMemBytes;
-    DWORD      dwMaxContigFreeHwMemBytes;
-    DWORD      dwUnlockTransferRateHwBuffers;
-    DWORD      dwPlayCpuOverheadSwBuffers;
-    DWORD      dwReserved1;
-    DWORD      dwReserved2;
-} DSCAPS,*LPDSCAPS;
-typedef const DSCAPS *LPCDSCAPS;
-
-#define DSBPLAY_LOOPING             0x00000001
-#define DSBPLAY_LOCHARDWARE         0x00000002
-#define DSBPLAY_LOCSOFTWARE         0x00000004
-#define DSBPLAY_TERMINATEBY_TIME    0x00000008
-#define DSBPLAY_TERMINATEBY_DISTANCE    0x000000010
-#define DSBPLAY_TERMINATEBY_PRIORITY    0x000000020
-
-#define DSBSTATUS_PLAYING           0x00000001
-#define DSBSTATUS_BUFFERLOST        0x00000002
-#define DSBSTATUS_LOOPING           0x00000004
-#define DSBSTATUS_LOCHARDWARE       0x00000008
-#define DSBSTATUS_LOCSOFTWARE       0x00000010
-#define DSBSTATUS_TERMINATED        0x00000020
-
-#define DSBLOCK_FROMWRITECURSOR     0x00000001
-#define DSBLOCK_ENTIREBUFFER        0x00000002
-
-#define DSBCAPS_PRIMARYBUFFER       0x00000001
-#define DSBCAPS_STATIC              0x00000002
-#define DSBCAPS_LOCHARDWARE         0x00000004
-#define DSBCAPS_LOCSOFTWARE         0x00000008
-#define DSBCAPS_CTRL3D              0x00000010
-#define DSBCAPS_CTRLFREQUENCY       0x00000020
-#define DSBCAPS_CTRLPAN             0x00000040
-#define DSBCAPS_CTRLVOLUME          0x00000080
-#define DSBCAPS_CTRLDEFAULT         0x000000E0  /* Pan + volume + frequency. */
-#define DSBCAPS_CTRLPOSITIONNOTIFY  0x00000100
-#define DSBCAPS_CTRLFX              0x00000200
-#define DSBCAPS_CTRLALL             0x000001F0  /* All control capabilities */
-#define DSBCAPS_STICKYFOCUS         0x00004000
-#define DSBCAPS_GLOBALFOCUS         0x00008000
-#define DSBCAPS_GETCURRENTPOSITION2 0x00010000  /* More accurate play cursor under emulation*/
-#define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000
-#define DSBCAPS_LOCDEFER            0x00040000
-
-#define DSBSIZE_MIN                 4
-#define DSBSIZE_MAX                 0xFFFFFFF
-#define DSBPAN_LEFT                 -10000
-#define DSBPAN_CENTER               0
-#define DSBPAN_RIGHT                 10000
-#define DSBVOLUME_MAX                    0
-#define DSBVOLUME_MIN               -10000
-#define DSBFREQUENCY_MIN            100
-#define DSBFREQUENCY_MAX            200000
-#define DSBFREQUENCY_ORIGINAL       0
-
-typedef struct _DSBCAPS
-{
-    DWORD      dwSize;
-    DWORD      dwFlags;
-    DWORD      dwBufferBytes;
-    DWORD      dwUnlockTransferRate;
-    DWORD      dwPlayCpuOverhead;
-} DSBCAPS,*LPDSBCAPS;
-typedef const DSBCAPS *LPCDSBCAPS;
-
-#define DSSCL_NORMAL                1
-#define DSSCL_PRIORITY              2
-#define DSSCL_EXCLUSIVE             3
-#define DSSCL_WRITEPRIMARY          4
-
-typedef struct _DSEFFECTDESC
-{
-    DWORD      dwSize;
-    DWORD      dwFlags;
-    GUID       guidDSFXClass;
-    DWORD_PTR  dwReserved1;
-    DWORD_PTR  dwReserved2;
-} DSEFFECTDESC,*LPDSEFFECTDESC;
-typedef const DSEFFECTDESC *LPCDSEFFECTDESC;
-
-#define DSFX_LOCHARDWARE    0x00000001
-#define DSFX_LOCSOFTWARE    0x00000002
-
-enum
-{
-    DSFXR_PRESENT,
-    DSFXR_LOCHARDWARE,
-    DSFXR_LOCSOFTWARE,
-    DSFXR_UNALLOCATED,
-    DSFXR_FAILED,
-    DSFXR_UNKNOWN,
-    DSFXR_SENDLOOP
-};
-
-typedef struct _DSBUFFERDESC1
-{
-    DWORD              dwSize;
-    DWORD              dwFlags;
-    DWORD              dwBufferBytes;
-    DWORD              dwReserved;
-    LPWAVEFORMATEX     lpwfxFormat;
-} DSBUFFERDESC1,*LPDSBUFFERDESC1;
-typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1;
-
-typedef struct _DSBUFFERDESC
-{
-    DWORD              dwSize;
-    DWORD              dwFlags;
-    DWORD              dwBufferBytes;
-    DWORD              dwReserved;
-    LPWAVEFORMATEX     lpwfxFormat;
-    GUID               guid3DAlgorithm;
-} DSBUFFERDESC,*LPDSBUFFERDESC;
-typedef const DSBUFFERDESC *LPCDSBUFFERDESC;
-
-typedef struct _DSBPOSITIONNOTIFY
-{
-    DWORD      dwOffset;
-    HANDLE     hEventNotify;
-} DSBPOSITIONNOTIFY,*LPDSBPOSITIONNOTIFY;
-typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
-
-#define DSSPEAKER_HEADPHONE     1
-#define DSSPEAKER_MONO          2
-#define DSSPEAKER_QUAD          3
-#define DSSPEAKER_STEREO        4
-#define DSSPEAKER_SURROUND      5
-#define DSSPEAKER_5POINT1       6
-#define DSSPEAKER_7POINT1       7
-
-#define DSSPEAKER_GEOMETRY_MIN      0x00000005  /* 5 degrees */
-#define DSSPEAKER_GEOMETRY_NARROW   0x0000000A  /* 10 degrees */
-#define DSSPEAKER_GEOMETRY_WIDE     0x00000014  /* 20 degrees */
-#define DSSPEAKER_GEOMETRY_MAX      0x000000B4  /* 180 degrees */
-
-#define DSSPEAKER_COMBINED(c, g)    ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16))
-#define DSSPEAKER_CONFIG(a)         ((BYTE)(a))
-#define DSSPEAKER_GEOMETRY(a)       ((BYTE)(((DWORD)(a) >> 16) & 0x00FF))
-
-#define DS_CERTIFIED                0x00000000
-#define DS_UNCERTIFIED              0x00000001
-
-typedef struct _DSCEFFECTDESC
-{
-    DWORD       dwSize;
-    DWORD       dwFlags;
-    GUID        guidDSCFXClass;
-    GUID        guidDSCFXInstance;
-    DWORD       dwReserved1;
-    DWORD       dwReserved2;
-} DSCEFFECTDESC, *LPDSCEFFECTDESC;
-typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC;
-
-#define DSCFX_LOCHARDWARE   0x00000001
-#define DSCFX_LOCSOFTWARE   0x00000002
-
-#define DSCFXR_LOCHARDWARE  0x00000010
-#define DSCFXR_LOCSOFTWARE  0x00000020
-
-typedef struct _DSCBUFFERDESC1
-{
-  DWORD           dwSize;
-  DWORD           dwFlags;
-  DWORD           dwBufferBytes;
-  DWORD           dwReserved;
-  LPWAVEFORMATEX  lpwfxFormat;
-} DSCBUFFERDESC1, *LPDSCBUFFERDESC1;
-
-typedef struct _DSCBUFFERDESC
-{
-  DWORD           dwSize;
-  DWORD           dwFlags;
-  DWORD           dwBufferBytes;
-  DWORD           dwReserved;
-  LPWAVEFORMATEX  lpwfxFormat;
-  DWORD           dwFXCount;
-  LPDSCEFFECTDESC lpDSCFXDesc;
-} DSCBUFFERDESC, *LPDSCBUFFERDESC;
-typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC;
-
-typedef struct _DSCCAPS
-{
-  DWORD dwSize;
-  DWORD dwFlags;
-  DWORD dwFormats;
-  DWORD dwChannels;
-} DSCCAPS, *LPDSCCAPS;
-typedef const DSCCAPS *LPCDSCCAPS;
-
-typedef struct _DSCBCAPS
-{
-  DWORD dwSize;
-  DWORD dwFlags;
-  DWORD dwBufferBytes;
-  DWORD dwReserved;
-} DSCBCAPS, *LPDSCBCAPS;
-typedef const DSCBCAPS *LPCDSCBCAPS;
-
-#define DSCCAPS_EMULDRIVER          DSCAPS_EMULDRIVER
-#define DSCCAPS_CERTIFIED           DSCAPS_CERTIFIED
-#define DSCCAPS_MULTIPLECAPTURE     0x00000001
-
-#define DSCBCAPS_WAVEMAPPED         0x80000000
-#define DSCBCAPS_CTRLFX             0x00000200
-
-#define DSCBLOCK_ENTIREBUFFER       0x00000001
-#define DSCBSTART_LOOPING           0x00000001
-#define DSCBPN_OFFSET_STOP          0xffffffff
-
-#define DSCBSTATUS_CAPTURING        0x00000001
-#define DSCBSTATUS_LOOPING          0x00000002
-
-#ifndef __LPCGUID_DEFINED__
-#define __LPCGUID_DEFINED__
-typedef const GUID *LPCGUID;
-#endif
-
-typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID,LPCWSTR,LPCWSTR,LPVOID);
-typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID,LPCSTR,LPCSTR,LPVOID);
-DECL_WINELIB_TYPE_AW(LPDSENUMCALLBACK)
-
-extern HRESULT WINAPI DirectSoundCreate(LPCGUID lpGUID,LPDIRECTSOUND *ppDS,LPUNKNOWN pUnkOuter);
-extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA, LPVOID);
-extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW, LPVOID);
-#define DirectSoundEnumerate WINELIB_NAME_AW(DirectSoundEnumerate)
-extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter);
-extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA, LPVOID);
-extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW, LPVOID);
-#define DirectSoundCaptureEnumerate WINELIB_NAME_AW(DirectSoundCaptureEnumerate)
-
-extern HRESULT WINAPI DirectSoundCreate8(LPCGUID lpGUID,LPDIRECTSOUND8 *ppDS8,LPUNKNOWN pUnkOuter);
-extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter);
-extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice,
-    LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, DWORD dwLevel,
-    LPDIRECTSOUNDFULLDUPLEX *ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter);
-#define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate
-extern HRESULT WINAPI GetDeviceID(LPCGUID lpGuidSrc, LPGUID lpGuidDest);
-
-
-/*****************************************************************************
- * IDirectSound interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectSound
-DECLARE_INTERFACE_(IDirectSound,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSound methods ***/
-    STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
-    STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
-    STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
-    STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSound_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSound_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSound_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSound methods ***/
-#define IDirectSound_CreateSoundBuffer(p,a,b,c)  (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
-#define IDirectSound_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
-#define IDirectSound_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectSound_Compact(p)                  (p)->lpVtbl->Compact(p)
-#define IDirectSound_GetSpeakerConfig(p,a)       (p)->lpVtbl->GetSpeakerConfig(p,a)
-#define IDirectSound_SetSpeakerConfig(p,a)       (p)->lpVtbl->SetSpeakerConfig(p,a)
-#define IDirectSound_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirectSound_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSound_AddRef(p)             (p)->AddRef()
-#define IDirectSound_Release(p)            (p)->Release()
-/*** IDirectSound methods ***/
-#define IDirectSound_CreateSoundBuffer(p,a,b,c)  (p)->CreateSoundBuffer(a,b,c)
-#define IDirectSound_GetCaps(p,a)                (p)->GetCaps(a)
-#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b)
-#define IDirectSound_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
-#define IDirectSound_Compact(p)                  (p)->Compact()
-#define IDirectSound_GetSpeakerConfig(p,a)       (p)->GetSpeakerConfig(a)
-#define IDirectSound_SetSpeakerConfig(p,a)       (p)->SetSpeakerConfig(a)
-#define IDirectSound_Initialize(p,a)             (p)->Initialize(a)
-#endif
-
-
-/*****************************************************************************
- * IDirectSound8 interface
- */
-#define INTERFACE IDirectSound8
-DECLARE_INTERFACE_(IDirectSound8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSound8 methods ***/
-    STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
-    STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
-    STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
-    STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
-    STDMETHOD(VerifyCertification)(THIS_ LPDWORD pdwCertified) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSound8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSound8_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSound8_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSound methods ***/
-#define IDirectSound8_CreateSoundBuffer(p,a,b,c)  (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
-#define IDirectSound8_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
-#define IDirectSound8_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectSound8_Compact(p)                  (p)->lpVtbl->Compact(p)
-#define IDirectSound8_GetSpeakerConfig(p,a)       (p)->lpVtbl->GetSpeakerConfig(p,a)
-#define IDirectSound8_SetSpeakerConfig(p,a)       (p)->lpVtbl->SetSpeakerConfig(p,a)
-#define IDirectSound8_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
-/*** IDirectSound8 methods ***/
-#define IDirectSound8_VerifyCertification(p,a)    (p)->lpVtbl->VerifyCertification(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirectSound8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSound8_AddRef(p)             (p)->AddRef()
-#define IDirectSound8_Release(p)            (p)->Release()
-/*** IDirectSound methods ***/
-#define IDirectSound8_CreateSoundBuffer(p,a,b,c)  (p)->CreateSoundBuffer(a,b,c)
-#define IDirectSound8_GetCaps(p,a)                (p)->GetCaps(a)
-#define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b)
-#define IDirectSound8_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
-#define IDirectSound8_Compact(p)                  (p)->Compact()
-#define IDirectSound8_GetSpeakerConfig(p,a)       (p)->GetSpeakerConfig(a)
-#define IDirectSound8_SetSpeakerConfig(p,a)       (p)->SetSpeakerConfig(a)
-#define IDirectSound8_Initialize(p,a)             (p)->Initialize(a)
-/*** IDirectSound8 methods ***/
-#define IDirectSound8_VerifyCertification(p,a)    (p)->VerifyCertification(a)
-#endif
-
-
-/*****************************************************************************
- * IDirectSoundBuffer interface
- */
-#define INTERFACE IDirectSoundBuffer
-DECLARE_INTERFACE_(IDirectSoundBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundBuffer methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE;
-    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE;
-    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
-    STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE;
-    STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE;
-    STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
-    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE;
-    STDMETHOD(Lock)(THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE;
-    STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE;
-    STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE;
-    STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE;
-    STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE;
-    STDMETHOD(SetPan)(THIS_ LONG lPan) PURE;
-    STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioPtr2) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSoundBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSoundBuffer methods ***/
-#define IDirectSoundBuffer_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundBuffer_GetCurrentPosition(p,a,b)   (p)->lpVtbl->GetCurrentPosition(p,a,b)
-#define IDirectSoundBuffer_GetFormat(p,a,b,c)          (p)->lpVtbl->GetFormat(p,a,b,c)
-#define IDirectSoundBuffer_GetVolume(p,a)              (p)->lpVtbl->GetVolume(p,a)
-#define IDirectSoundBuffer_GetPan(p,a)                 (p)->lpVtbl->GetPan(p,a)
-#define IDirectSoundBuffer_GetFrequency(p,a)           (p)->lpVtbl->GetFrequency(p,a)
-#define IDirectSoundBuffer_GetStatus(p,a)              (p)->lpVtbl->GetStatus(p,a)
-#define IDirectSoundBuffer_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g)       (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
-#define IDirectSoundBuffer_Play(p,a,b,c)               (p)->lpVtbl->Play(p,a,b,c)
-#define IDirectSoundBuffer_SetCurrentPosition(p,a)     (p)->lpVtbl->SetCurrentPosition(p,a)
-#define IDirectSoundBuffer_SetFormat(p,a)              (p)->lpVtbl->SetFormat(p,a)
-#define IDirectSoundBuffer_SetVolume(p,a)              (p)->lpVtbl->SetVolume(p,a)
-#define IDirectSoundBuffer_SetPan(p,a)                 (p)->lpVtbl->SetPan(p,a)
-#define IDirectSoundBuffer_SetFrequency(p,a)           (p)->lpVtbl->SetFrequency(p,a)
-#define IDirectSoundBuffer_Stop(p)                     (p)->lpVtbl->Stop(p)
-#define IDirectSoundBuffer_Unlock(p,a,b,c,d)           (p)->lpVtbl->Unlock(p,a,b,c,d)
-#define IDirectSoundBuffer_Restore(p)                  (p)->lpVtbl->Restore(p)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSoundBuffer_AddRef(p)             (p)->AddRef()
-#define IDirectSoundBuffer_Release(p)            (p)->Release()
-/*** IDirectSoundBuffer methods ***/
-#define IDirectSoundBuffer_GetCaps(p,a)                (p)->GetCaps(a)
-#define IDirectSoundBuffer_GetCurrentPosition(p,a,b)   (p)->GetCurrentPosition(a,b)
-#define IDirectSoundBuffer_GetFormat(p,a,b,c)          (p)->GetFormat(a,b,c)
-#define IDirectSoundBuffer_GetVolume(p,a)              (p)->GetVolume(a)
-#define IDirectSoundBuffer_GetPan(p,a)                 (p)->GetPan(a)
-#define IDirectSoundBuffer_GetFrequency(p,a)           (p)->GetFrequency(a)
-#define IDirectSoundBuffer_GetStatus(p,a)              (p)->GetStatus(a)
-#define IDirectSoundBuffer_Initialize(p,a,b)           (p)->Initialize(a,b)
-#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g)       (p)->Lock(a,b,c,d,e,f,g)
-#define IDirectSoundBuffer_Play(p,a,b,c)               (p)->Play(a,b,c)
-#define IDirectSoundBuffer_SetCurrentPosition(p,a)     (p)->SetCurrentPosition(a)
-#define IDirectSoundBuffer_SetFormat(p,a)              (p)->SetFormat(a)
-#define IDirectSoundBuffer_SetVolume(p,a)              (p)->SetVolume(a)
-#define IDirectSoundBuffer_SetPan(p,a)                 (p)->SetPan(a)
-#define IDirectSoundBuffer_SetFrequency(p,a)           (p)->SetFrequency(a)
-#define IDirectSoundBuffer_Stop(p)                     (p)->Stop()
-#define IDirectSoundBuffer_Unlock(p,a,b,c,d)           (p)->Unlock(a,b,c,d)
-#define IDirectSoundBuffer_Restore(p)                  (p)->Restore()
-#endif
-
-
-/*****************************************************************************
- * IDirectSoundBuffer8 interface
- */
-#define INTERFACE IDirectSoundBuffer8
-DECLARE_INTERFACE_(IDirectSoundBuffer8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundBuffer8 methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE;
-    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE;
-    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
-    STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE;
-    STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE;
-    STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
-    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE;
-    STDMETHOD(Lock)(THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE;
-    STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE;
-    STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE;
-    STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE;
-    STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE;
-    STDMETHOD(SetPan)(THIS_ LONG lPan) PURE;
-    STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioPtr2) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetFX)(THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE;
-    STDMETHOD(AcquireResources)(THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE;
-    STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundBuffer8_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSoundBuffer8_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSoundBuffer methods ***/
-#define IDirectSoundBuffer8_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b)   (p)->lpVtbl->GetCurrentPosition(p,a,b)
-#define IDirectSoundBuffer8_GetFormat(p,a,b,c)          (p)->lpVtbl->GetFormat(p,a,b,c)
-#define IDirectSoundBuffer8_GetVolume(p,a)              (p)->lpVtbl->GetVolume(p,a)
-#define IDirectSoundBuffer8_GetPan(p,a)                 (p)->lpVtbl->GetPan(p,a)
-#define IDirectSoundBuffer8_GetFrequency(p,a)           (p)->lpVtbl->GetFrequency(p,a)
-#define IDirectSoundBuffer8_GetStatus(p,a)              (p)->lpVtbl->GetStatus(p,a)
-#define IDirectSoundBuffer8_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g)       (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
-#define IDirectSoundBuffer8_Play(p,a,b,c)               (p)->lpVtbl->Play(p,a,b,c)
-#define IDirectSoundBuffer8_SetCurrentPosition(p,a)     (p)->lpVtbl->SetCurrentPosition(p,a)
-#define IDirectSoundBuffer8_SetFormat(p,a)              (p)->lpVtbl->SetFormat(p,a)
-#define IDirectSoundBuffer8_SetVolume(p,a)              (p)->lpVtbl->SetVolume(p,a)
-#define IDirectSoundBuffer8_SetPan(p,a)                 (p)->lpVtbl->SetPan(p,a)
-#define IDirectSoundBuffer8_SetFrequency(p,a)           (p)->lpVtbl->SetFrequency(p,a)
-#define IDirectSoundBuffer8_Stop(p)                     (p)->lpVtbl->Stop(p)
-#define IDirectSoundBuffer8_Unlock(p,a,b,c,d)           (p)->lpVtbl->Unlock(p,a,b,c,d)
-#define IDirectSoundBuffer8_Restore(p)                  (p)->lpVtbl->Restore(p)
-/*** IDirectSoundBuffer8 methods ***/
-#define IDirectSoundBuffer8_SetFX(p,a,b,c)              (p)->lpVtbl->SetFX(p,a,b,c)
-#define IDirectSoundBuffer8_AcquireResources(p,a,b,c)   (p)->lpVtbl->AcquireResources(p,a,b,c)
-#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d)  (p)->lpVtbl->GetObjectInPath(p,a,b,c,d)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSoundBuffer8_AddRef(p)             (p)->AddRef()
-#define IDirectSoundBuffer8_Release(p)            (p)->Release()
-/*** IDirectSoundBuffer methods ***/
-#define IDirectSoundBuffer8_GetCaps(p,a)                (p)->GetCaps(a)
-#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b)   (p)->GetCurrentPosition(a,b)
-#define IDirectSoundBuffer8_GetFormat(p,a,b,c)          (p)->GetFormat(a,b,c)
-#define IDirectSoundBuffer8_GetVolume(p,a)              (p)->GetVolume(a)
-#define IDirectSoundBuffer8_GetPan(p,a)                 (p)->GetPan(a)
-#define IDirectSoundBuffer8_GetFrequency(p,a)           (p)->GetFrequency(a)
-#define IDirectSoundBuffer8_GetStatus(p,a)              (p)->GetStatus(a)
-#define IDirectSoundBuffer8_Initialize(p,a,b)           (p)->Initialize(a,b)
-#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g)       (p)->Lock(a,b,c,d,e,f,g)
-#define IDirectSoundBuffer8_Play(p,a,b,c)               (p)->Play(a,b,c)
-#define IDirectSoundBuffer8_SetCurrentPosition(p,a)     (p)->SetCurrentPosition(a)
-#define IDirectSoundBuffer8_SetFormat(p,a)              (p)->SetFormat(a)
-#define IDirectSoundBuffer8_SetVolume(p,a)              (p)->SetVolume(a)
-#define IDirectSoundBuffer8_SetPan(p,a)                 (p)->SetPan(a)
-#define IDirectSoundBuffer8_SetFrequency(p,a)           (p)->SetFrequency(a)
-#define IDirectSoundBuffer8_Stop(p)                     (p)->Stop()
-#define IDirectSoundBuffer8_Unlock(p,a,b,c,d)           (p)->Unlock(a,b,c,d)
-#define IDirectSoundBuffer8_Restore(p)                  (p)->Restore()
-/*** IDirectSoundBuffer8 methods ***/
-#define IDirectSoundBuffer8_SetFX(p,a,b,c)              (p)->SetFX(a,b,c)
-#define IDirectSoundBuffer8_AcquireResources(p,a,b,c)   (p)->AcquireResources(a,b,c)
-#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d)  (p)->GetObjectInPath(a,b,c,d)
-#endif
-
-
-/*****************************************************************************
- * IDirectSoundCapture interface
- */
-#define INTERFACE IDirectSoundCapture
-DECLARE_INTERFACE_(IDirectSoundCapture,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundCapture methods ***/
-    STDMETHOD(CreateCaptureBuffer)(THIS_ LPCDSCBUFFERDESC lpcDSCBufferDesc,LPDIRECTSOUNDCAPTUREBUFFER *lplpDSCaptureBuffer, LPUNKNOWN pUnk) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDSCCAPS lpDSCCaps) PURE;
-    STDMETHOD(Initialize)(THIS_ LPCGUID lpcGUID) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundCapture_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundCapture_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectSoundCapture_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirectSoundCapture methods ***/
-#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c)
-#define IDirectSoundCapture_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundCapture_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundCapture_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectSoundCapture_AddRef(p)                    (p)->AddRef()
-#define IDirectSoundCapture_Release(p)                   (p)->Release()
-/*** IDirectSoundCapture methods ***/
-#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c)
-#define IDirectSoundCapture_GetCaps(p,a)                 (p)->GetCaps(a)
-#define IDirectSoundCapture_Initialize(p,a)              (p)->Initialize(a)
-#endif
-
-/*****************************************************************************
- * IDirectSoundCaptureBuffer interface
- */
-#define INTERFACE IDirectSoundCaptureBuffer
-DECLARE_INTERFACE_(IDirectSoundCaptureBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundCaptureBuffer methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE;
-    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE;
-    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
-    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE;
-    STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
-    STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b)     (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundCaptureBuffer_AddRef(p)                 (p)->lpVtbl->AddRef(p)
-#define IDirectSoundCaptureBuffer_Release(p)                (p)->lpVtbl->Release(p)
-/*** IDirectSoundCaptureBuffer methods ***/
-#define IDirectSoundCaptureBuffer_GetCaps(p,a)              (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b)
-#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c)        (p)->lpVtbl->GetFormat(p,a,b,c)
-#define IDirectSoundCaptureBuffer_GetStatus(p,a)            (p)->lpVtbl->GetStatus(p,a)
-#define IDirectSoundCaptureBuffer_Initialize(p,a,b)         (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g)     (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
-#define IDirectSoundCaptureBuffer_Start(p,a)                (p)->lpVtbl->Start(p,a)
-#define IDirectSoundCaptureBuffer_Stop(p)                   (p)->lpVtbl->Stop(p)
-#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d)         (p)->lpVtbl->Unlock(p,a,b,c,d)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b)     (p)->QueryInterface(a,b)
-#define IDirectSoundCaptureBuffer_AddRef(p)                 (p)->AddRef()
-#define IDirectSoundCaptureBuffer_Release(p)                (p)->Release()
-/*** IDirectSoundCaptureBuffer methods ***/
-#define IDirectSoundCaptureBuffer_GetCaps(p,a)              (p)->GetCaps(a)
-#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b)
-#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c)        (p)->GetFormat(a,b,c)
-#define IDirectSoundCaptureBuffer_GetStatus(p,a)            (p)->GetStatus(a)
-#define IDirectSoundCaptureBuffer_Initialize(p,a,b)         (p)->Initialize(a,b)
-#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g)     (p)->Lock(a,b,c,d,e,f,g)
-#define IDirectSoundCaptureBuffer_Start(p,a)                (p)->Start(a)
-#define IDirectSoundCaptureBuffer_Stop(p)                   (p)->Stop()
-#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d)         (p)->Unlock(a,b,c,d)
-#endif
-
-/*****************************************************************************
- * IDirectSoundCaptureBuffer8 interface
- */
-#define INTERFACE IDirectSoundCaptureBuffer8
-DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8,IDirectSoundCaptureBuffer)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundCaptureBuffer methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE;
-    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE;
-    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
-    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE;
-    STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
-    STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE;
-    /*** IDirectSoundCaptureBuffer8 methods ***/
-    STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE;
-    STDMETHOD(GetFXStatus)(THIS_ DWORD dwFXCount, LPDWORD pdwFXStatus) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundCaptureBuffer8_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IDirectSoundCaptureBuffer8_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IDirectSoundCaptureBuffer methods ***/
-#define IDirectSoundCaptureBuffer8_GetCaps(p,a)               (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b)  (p)->lpVtbl->GetCurrentPosition(p,a,b)
-#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c)         (p)->lpVtbl->GetFormat(p,a,b,c)
-#define IDirectSoundCaptureBuffer8_GetStatus(p,a)             (p)->lpVtbl->GetStatus(p,a)
-#define IDirectSoundCaptureBuffer8_Initialize(p,a,b)          (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g)      (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
-#define IDirectSoundCaptureBuffer8_Start(p,a)                 (p)->lpVtbl->Start(p,a)
-#define IDirectSoundCaptureBuffer8_Stop(p)                    (p)->lpVtbl->Stop(p)
-#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d)          (p)->lpVtbl->Unlock(p,a,b,c,d)
-/*** IDirectSoundCaptureBuffer8 methods ***/
-#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d)
-#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b)         (p)->lpVtbl->GetFXStatus(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b)      (p)->QueryInterface(a,b)
-#define IDirectSoundCaptureBuffer8_AddRef(p)                  (p)->AddRef()
-#define IDirectSoundCaptureBuffer8_Release(p)                 (p)->Release()
-/*** IDirectSoundCaptureBuffer methods ***/
-#define IDirectSoundCaptureBuffer8_GetCaps(p,a)               (p)->GetCaps(a)
-#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b)  (p)->GetCurrentPosition(a,b)
-#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c)         (p)->GetFormat(a,b,c)
-#define IDirectSoundCaptureBuffer8_GetStatus(p,a)             (p)->GetStatus(a)
-#define IDirectSoundCaptureBuffer8_Initialize(p,a,b)          (p)->Initialize(a,b)
-#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g)      (p)->Lock(a,b,c,d,e,f,g)
-#define IDirectSoundCaptureBuffer8_Start(p,a)                 (p)->Start(a)
-#define IDirectSoundCaptureBuffer8_Stop(p)                    (p)->Stop()
-#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d)          (p)->Unlock(a,b,c,d)
-/*** IDirectSoundCaptureBuffer8 methods ***/
-#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d)
-#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b)         (p)->GetFXStatus(a,b)
-#endif
-
-/*****************************************************************************
- * IDirectSoundNotify interface
- */
-#define WINE_NOBUFFER                   0x80000000
-
-#define DSBPN_OFFSETSTOP               -1
-
-#define DSBNOTIFICATIONS_MAX           100000UL
-
-#define INTERFACE IDirectSoundNotify
-DECLARE_INTERFACE_(IDirectSoundNotify,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundNotify methods ***/
-    STDMETHOD(SetNotificationPositions)(THIS_ DWORD cPositionNotifies, LPCDSBPOSITIONNOTIFY lpcPositionNotifies) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundNotify_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSoundNotify_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSoundNotify methods ***/
-#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundNotify_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSoundNotify_AddRef(p)             (p)->AddRef()
-#define IDirectSoundNotify_Release(p)            (p)->Release()
-/*** IDirectSoundNotify methods ***/
-#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirectSound3DListener interface
- */
-#define DS3DMODE_NORMAL             0x00000000
-#define DS3DMODE_HEADRELATIVE       0x00000001
-#define DS3DMODE_DISABLE            0x00000002
-
-#define DS3D_IMMEDIATE              0x00000000
-#define DS3D_DEFERRED               0x00000001
-
-#define DS3D_MINDISTANCEFACTOR      FLT_MIN
-#define DS3D_MAXDISTANCEFACTOR      FLT_MAX
-#define DS3D_DEFAULTDISTANCEFACTOR  1.0f
-
-#define DS3D_MINROLLOFFFACTOR       0.0f
-#define DS3D_MAXROLLOFFFACTOR       10.0f
-#define DS3D_DEFAULTROLLOFFFACTOR   1.0f
-
-#define DS3D_MINDOPPLERFACTOR       0.0f
-#define DS3D_MAXDOPPLERFACTOR       10.0f
-#define DS3D_DEFAULTDOPPLERFACTOR   1.0f
-
-#define DS3D_DEFAULTMINDISTANCE     1.0f
-#define DS3D_DEFAULTMAXDISTANCE     1000000000.0f
-
-#define DS3D_MINCONEANGLE           0
-#define DS3D_MAXCONEANGLE           360
-#define DS3D_DEFAULTCONEANGLE       360
-
-#define DS3D_DEFAULTCONEOUTSIDEVOLUME   DSBVOLUME_MAX
-
-typedef struct _DS3DLISTENER {
-       DWORD                           dwSize;
-       D3DVECTOR                       vPosition;
-       D3DVECTOR                       vVelocity;
-       D3DVECTOR                       vOrientFront;
-       D3DVECTOR                       vOrientTop;
-       D3DVALUE                        flDistanceFactor;
-       D3DVALUE                        flRolloffFactor;
-       D3DVALUE                        flDopplerFactor;
-} DS3DLISTENER, *LPDS3DLISTENER;
-
-typedef const DS3DLISTENER *LPCDS3DLISTENER;
-
-#define INTERFACE IDirectSound3DListener
-DECLARE_INTERFACE_(IDirectSound3DListener,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSound3DListener methods ***/
-    STDMETHOD(GetAllParameters)(THIS_ LPDS3DLISTENER lpListener) PURE;
-    STDMETHOD(GetDistanceFactor)(THIS_ LPD3DVALUE lpflDistanceFactor) PURE;
-    STDMETHOD(GetDopplerFactor)(THIS_ LPD3DVALUE lpflDopplerFactor) PURE;
-    STDMETHOD(GetOrientation)(THIS_ LPD3DVECTOR lpvOrientFront, LPD3DVECTOR lpvOrientTop) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE;
-    STDMETHOD(GetRolloffFactor)(THIS_ LPD3DVALUE lpflRolloffFactor) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE;
-    STDMETHOD(SetAllParameters)(THIS_ LPCDS3DLISTENER lpcListener, DWORD dwApply) PURE;
-    STDMETHOD(SetDistanceFactor)(THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE;
-    STDMETHOD(SetDopplerFactor)(THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE;
-    STDMETHOD(SetOrientation)(THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE;
-    STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-    STDMETHOD(SetRolloffFactor)(THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE;
-    STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-    STDMETHOD(CommitDeferredSettings)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSound3DListener_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSound3DListener_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSound3DListener_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSound3DListener methods ***/
-#define IDirectSound3DListener_GetAllParameters(p,a)           (p)->lpVtbl->GetAllParameters(p,a)
-#define IDirectSound3DListener_GetDistanceFactor(p,a)          (p)->lpVtbl->GetDistanceFactor(p,a)
-#define IDirectSound3DListener_GetDopplerFactor(p,a)           (p)->lpVtbl->GetDopplerFactor(p,a)
-#define IDirectSound3DListener_GetOrientation(p,a,b)           (p)->lpVtbl->GetOrientation(p,a,b)
-#define IDirectSound3DListener_GetPosition(p,a)                (p)->lpVtbl->GetPosition(p,a)
-#define IDirectSound3DListener_GetRolloffFactor(p,a)           (p)->lpVtbl->GetRolloffFactor(p,a)
-#define IDirectSound3DListener_GetVelocity(p,a)                (p)->lpVtbl->GetVelocity(p,a)
-#define IDirectSound3DListener_SetAllParameters(p,a,b)         (p)->lpVtbl->SetAllParameters(p,a,b)
-#define IDirectSound3DListener_SetDistanceFactor(p,a,b)        (p)->lpVtbl->SetDistanceFactor(p,a,b)
-#define IDirectSound3DListener_SetDopplerFactor(p,a,b)         (p)->lpVtbl->SetDopplerFactor(p,a,b)
-#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
-#define IDirectSound3DListener_SetPosition(p,a,b,c,d)          (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirectSound3DListener_SetRolloffFactor(p,a,b)         (p)->lpVtbl->SetRolloffFactor(p,a,b)
-#define IDirectSound3DListener_SetVelocity(p,a,b,c,d)          (p)->lpVtbl->SetVelocity(p,a,b,c,d)
-#define IDirectSound3DListener_CommitDeferredSettings(p)       (p)->lpVtbl->CommitDeferredSettings(p)
-#else
-/*** IUnknown methods ***/
-#define IDirectSound3DListener_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSound3DListener_AddRef(p)             (p)->AddRef()
-#define IDirectSound3DListener_Release(p)            (p)->Release()
-/*** IDirectSound3DListener methods ***/
-#define IDirectSound3DListener_GetAllParameters(p,a)           (p)->GetAllParameters(a)
-#define IDirectSound3DListener_GetDistanceFactor(p,a)          (p)->GetDistanceFactor(a)
-#define IDirectSound3DListener_GetDopplerFactor(p,a)           (p)->GetDopplerFactor(a)
-#define IDirectSound3DListener_GetOrientation(p,a,b)           (p)->GetOrientation(a,b)
-#define IDirectSound3DListener_GetPosition(p,a)                (p)->GetPosition(a)
-#define IDirectSound3DListener_GetRolloffFactor(p,a)           (p)->GetRolloffFactor(a)
-#define IDirectSound3DListener_GetVelocity(p,a)                (p)->GetVelocity(a)
-#define IDirectSound3DListener_SetAllParameters(p,a,b)         (p)->SetAllParameters(a,b)
-#define IDirectSound3DListener_SetDistanceFactor(p,a,b)        (p)->SetDistanceFactor(a,b)
-#define IDirectSound3DListener_SetDopplerFactor(p,a,b)         (p)->SetDopplerFactor(a,b)
-#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g)
-#define IDirectSound3DListener_SetPosition(p,a,b,c,d)          (p)->SetPosition(a,b,c,d)
-#define IDirectSound3DListener_SetRolloffFactor(p,a,b)         (p)->SetRolloffFactor(a,b)
-#define IDirectSound3DListener_SetVelocity(p,a,b,c,d)          (p)->SetVelocity(a,b,c,d)
-#define IDirectSound3DListener_CommitDeferredSettings(p)       (p)->CommitDeferredSettings()
-#endif
-
-
-/*****************************************************************************
- * IDirectSound3DBuffer interface
- */
-typedef struct  _DS3DBUFFER {
-       DWORD                           dwSize;
-       D3DVECTOR                       vPosition;
-       D3DVECTOR                       vVelocity;
-       DWORD                           dwInsideConeAngle;
-       DWORD                           dwOutsideConeAngle;
-       D3DVECTOR                       vConeOrientation;
-       LONG                            lConeOutsideVolume;
-       D3DVALUE                        flMinDistance;
-       D3DVALUE                        flMaxDistance;
-       DWORD                           dwMode;
-} DS3DBUFFER, *LPDS3DBUFFER;
-
-typedef const DS3DBUFFER *LPCDS3DBUFFER;
-
-#define INTERFACE IDirectSound3DBuffer
-DECLARE_INTERFACE_(IDirectSound3DBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSound3DBuffer methods ***/
-    STDMETHOD(GetAllParameters)(THIS_ LPDS3DBUFFER lpDs3dBuffer) PURE;
-    STDMETHOD(GetConeAngles)(THIS_ LPDWORD lpdwInsideConeAngle, LPDWORD lpdwOutsideConeAngle) PURE;
-    STDMETHOD(GetConeOrientation)(THIS_ LPD3DVECTOR lpvOrientation) PURE;
-    STDMETHOD(GetConeOutsideVolume)(THIS_ LPLONG lplConeOutsideVolume) PURE;
-    STDMETHOD(GetMaxDistance)(THIS_ LPD3DVALUE lpflMaxDistance) PURE;
-    STDMETHOD(GetMinDistance)(THIS_ LPD3DVALUE lpflMinDistance) PURE;
-    STDMETHOD(GetMode)(THIS_ LPDWORD lpwdMode) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE;
-    STDMETHOD(SetAllParameters)(THIS_ LPCDS3DBUFFER lpcDs3dBuffer, DWORD dwApply) PURE;
-    STDMETHOD(SetConeAngles)(THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE;
-    STDMETHOD(SetConeOrientation)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-    STDMETHOD(SetConeOutsideVolume)(THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE;
-    STDMETHOD(SetMaxDistance)(THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE;
-    STDMETHOD(SetMinDistance)(THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE;
-    STDMETHOD(SetMode)(THIS_ DWORD dwMode, DWORD dwApply) PURE;
-    STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-    STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSound3DBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSound3DBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSound3DBuffer methods ***/
-#define IDirectSound3DBuffer_GetAllParameters(p,a)         (p)->lpVtbl->GetAllParameters(p,a)
-#define IDirectSound3DBuffer_GetConeAngles(p,a,b)          (p)->lpVtbl->GetConeAngles(p,a,b)
-#define IDirectSound3DBuffer_GetConeOrientation(p,a)       (p)->lpVtbl->GetConeOrientation(p,a)
-#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a)     (p)->lpVtbl->GetConeOutsideVolume(p,a)
-#define IDirectSound3DBuffer_GetMaxDistance(p,a)           (p)->lpVtbl->GetMaxDistance(p,a)
-#define IDirectSound3DBuffer_GetMinDistance(p,a)           (p)->lpVtbl->GetMinDistance(p,a)
-#define IDirectSound3DBuffer_GetMode(p,a)                  (p)->lpVtbl->GetMode(p,a)
-#define IDirectSound3DBuffer_GetPosition(p,a)              (p)->lpVtbl->GetPosition(p,a)
-#define IDirectSound3DBuffer_GetVelocity(p,a)              (p)->lpVtbl->GetVelocity(p,a)
-#define IDirectSound3DBuffer_SetAllParameters(p,a,b)       (p)->lpVtbl->SetAllParameters(p,a,b)
-#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c)        (p)->lpVtbl->SetConeAngles(p,a,b,c)
-#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d)
-#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b)   (p)->lpVtbl->SetConeOutsideVolume(p,a,b)
-#define IDirectSound3DBuffer_SetMaxDistance(p,a,b)         (p)->lpVtbl->SetMaxDistance(p,a,b)
-#define IDirectSound3DBuffer_SetMinDistance(p,a,b)         (p)->lpVtbl->SetMinDistance(p,a,b)
-#define IDirectSound3DBuffer_SetMode(p,a,b)                (p)->lpVtbl->SetMode(p,a,b)
-#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d)        (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d)        (p)->lpVtbl->SetVelocity(p,a,b,c,d)
-#else
-/*** IUnknown methods ***/
-#define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSound3DBuffer_AddRef(p)             (p)->AddRef()
-#define IDirectSound3DBuffer_Release(p)            (p)->Release()
-/*** IDirectSound3DBuffer methods ***/
-#define IDirectSound3DBuffer_GetAllParameters(p,a)         (p)->GetAllParameters(a)
-#define IDirectSound3DBuffer_GetConeAngles(p,a,b)          (p)->GetConeAngles(a,b)
-#define IDirectSound3DBuffer_GetConeOrientation(p,a)       (p)->GetConeOrientation(a)
-#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a)     (p)->GetConeOutsideVolume(a)
-#define IDirectSound3DBuffer_GetMaxDistance(p,a)           (p)->GetMaxDistance(a)
-#define IDirectSound3DBuffer_GetMinDistance(p,a)           (p)->GetMinDistance(a)
-#define IDirectSound3DBuffer_GetMode(p,a)                  (p)->GetMode(a)
-#define IDirectSound3DBuffer_GetPosition(p,a)              (p)->GetPosition(a)
-#define IDirectSound3DBuffer_GetVelocity(p,a)              (p)->GetVelocity(a)
-#define IDirectSound3DBuffer_SetAllParameters(p,a,b)       (p)->SetAllParameters(a,b)
-#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c)        (p)->SetConeAngles(a,b,c)
-#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d)
-#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b)   (p)->SetConeOutsideVolume(a,b)
-#define IDirectSound3DBuffer_SetMaxDistance(p,a,b)         (p)->SetMaxDistance(a,b)
-#define IDirectSound3DBuffer_SetMinDistance(p,a,b)         (p)->SetMinDistance(a,b)
-#define IDirectSound3DBuffer_SetMode(p,a,b)                (p)->SetMode(a,b)
-#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d)        (p)->SetPosition(a,b,c,d)
-#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d)        (p)->SetVelocity(a,b,c,d)
-#endif
-
-/*****************************************************************************
- * IKsPropertySet interface
- */
-#ifndef _IKsPropertySet_
-#define _IKsPropertySet_
-
-typedef struct IKsPropertySet *LPKSPROPERTYSET;
-
-DEFINE_GUID(IID_IKsPropertySet,0x31EFAC30,0x515C,0x11D0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93);
-
-#define KSPROPERTY_SUPPORT_GET 1
-#define KSPROPERTY_SUPPORT_SET 2
-
-#define INTERFACE IKsPropertySet
-DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IKsPropertySet methods ***/
-    STDMETHOD(Get)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3,ULONG *px4) PURE;
-    STDMETHOD(Set)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3) PURE;
-    STDMETHOD(QuerySupport)(THIS_ REFGUID rgid,ULONG x1,ULONG *px2) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IKsPropertySet_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
-#define IKsPropertySet_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IKsPropertySet_Release(p)               (p)->lpVtbl->Release(p)
-/*** IKsPropertySet methods ***/
-#define IKsPropertySet_Get(p,a,b,c,d,e,f,g)     (p)->lpVtbl->Get(p,a,b,c,d,e,f,g)
-#define IKsPropertySet_Set(p,a,b,c,d,e,f)       (p)->lpVtbl->Set(p,a,b,c,d,e,f)
-#define IKsPropertySet_QuerySupport(p,a,b,c)    (p)->lpVtbl->QuerySupport(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IKsPropertySet_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define IKsPropertySet_AddRef(p)                (p)->AddRef()
-#define IKsPropertySet_Release(p)               (p)->Release()
-/*** IKsPropertySet methods ***/
-#define IKsPropertySet_Get(p,a,b,c,d,e,f,g)     (p)->Get(a,b,c,d,e,f,g)
-#define IKsPropertySet_Set(p,a,b,c,d,e,f)       (p)->Set(a,b,c,d,e,f)
-#define IKsPropertySet_QuerySupport(p,a,b,c)    (p)->QuerySupport(a,b,c)
-#endif
-
-#endif /* _IKsPropertySet_ */
-
-/*****************************************************************************
- * IDirectSoundFullDuplex interface
- */
-#define INTERFACE IDirectSoundFullDuplex
-DECLARE_INTERFACE_(IDirectSoundFullDuplex,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundFullDuplex methods ***/
-    STDMETHOD(Initialize)(THIS_ LPCGUID pCaptureGuid,LPCGUID pRendererGuid,LPCDSCBUFFERDESC lpDscBufferDesc,LPCDSBUFFERDESC lpDsBufferDesc,HWND hWnd,DWORD dwLevel,LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8,LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundFullDuplex_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundFullDuplex_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IDirectSoundFullDuplex_Release(p)               (p)->lpVtbl->Release(p)
-/*** IDirectSoundFullDuplex methods ***/
-#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundFullDuplex_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define IDirectSoundFullDuplex_AddRef(p)                (p)->AddRef()
-#define IDirectSoundFullDuplex_Release(p)               (p)->Release()
-/*** IDirectSoundFullDuplex methods ***/
-#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h)    (p)->Initialize(a,b,c,d,e,f,g,h)
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __WINE_DSOUND_H */
diff --git a/misc/builddeps/win32/dx/include/wspiapi.h b/misc/builddeps/win32/dx/include/wspiapi.h
deleted file mode 100644 (file)
index a14be51..0000000
+++ /dev/null
@@ -1,1061 +0,0 @@
-/*++
-
-Copyright (c) Microsoft Corporation. All rights reserved.
-
-Module Name:
-    wspiapi.h
-
-Abstract:
-    The file contains protocol independent API functions.
-
-Revision History:
-    Wed Jul 12 10:50:31 2000, Created
-
---*/
-
-#ifndef _WSPIAPI_H_
-#define _WSPIAPI_H_
-
-#pragma once
-
-#if (NTDDI_VERSION >= NTDDI_WIN2K)
-
-#include <stdio.h>              // sprintf()
-#include <stdlib.h>             // calloc(), strtoul()
-#include <malloc.h>             // calloc()
-#include <string.h>             // strlen(), strcmp(), strstr()
-
-#if defined(__GOT_SECURE_LIB__) && __GOT_SECURE_LIB__ >= 200402L
-
-#define _WSPIAPI_STRCPY_S strcpy_s
-#define _WSPIAPI_STRCAT_S strcat_s
-#define _WSPIAPI_STRNCPY_S strncpy_s
-#define _WSPIAPI_SPRINTF_S_1 sprintf_s
-
-#else
-
-#define _WSPIAPI_STRCPY_S(_Dst, _Size, _Src) strcpy((_Dst), (_Src))
-#define _WSPIAPI_STRCAT_S(_Dst, _Size, _Src) strcat((_Dst), (_Src))
-#define _WSPIAPI_STRNCPY_S(_Dst, _Size, _Src, _Count) strncpy((_Dst), (_Src), (_Count)); (_Dst)[(_Size) - 1] = 0
-#define _WSPIAPI_SPRINTF_S_1(_Dst, _Size, _Format, _Arg1) sprintf((_Dst), (_Format), (_Arg1))
-
-#endif // defined(__GOT_SECURE_LIB__) && __GOT_SECURE_LIB__ >= 200402L
-
-#if !defined(_WSPIAPI_COUNTOF)
-#if !defined(__cplusplus)
-#define _WSPIAPI_COUNTOF(_Array) (sizeof(_Array) / sizeof(_Array[0]))
-#else
-template <typename __CountofType, size_t _N>
-char (&__wspiapi_countof_helper(__CountofType (&_Array)[_N]))[_N];
-#define _WSPIAPI_COUNTOF(_Array) sizeof(__wspiapi_countof_helper(_Array))
-#endif
-#endif
-
-#define WspiapiMalloc(tSize)    calloc(1, (tSize))
-#define WspiapiFree(p)          free(p)
-#define WspiapiSwap(a, b, c)    { (c) = (a); (a) = (b); (b) = (c); }
-#define getaddrinfo             WspiapiGetAddrInfo
-#define getnameinfo             WspiapiGetNameInfo
-#define freeaddrinfo            WspiapiFreeAddrInfo
-
-//
-// These function pointers are also within the #if (NTDDI_VERSION >= WIN2K)
-// because they are used by the other functions defined in this file available
-// only on win2k and above.
-//
-typedef int (WINAPI *WSPIAPI_PGETADDRINFO) (
-    IN  const char                      *nodename,
-    IN  const char                      *servname,
-    IN  const struct addrinfo           *hints,
-    OUT struct addrinfo                 **res);
-
-typedef int (WINAPI *WSPIAPI_PGETNAMEINFO) (
-    IN  const struct sockaddr           *sa,
-    IN  socklen_t                       salen,
-    OUT char                            *host,
-    IN  size_t                          hostlen,
-    OUT char                            *serv,
-    IN  size_t                          servlen,
-    IN  int                             flags);
-
-typedef void (WINAPI *WSPIAPI_PFREEADDRINFO) (
-    IN  struct addrinfo                 *ai);
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-////////////////////////////////////////////////////////////
-// v4 only versions of getaddrinfo and friends.
-// NOTE: gai_strerror is inlined in ws2tcpip.h
-////////////////////////////////////////////////////////////
-
-__inline    
-char *
-WINAPI
-WspiapiStrdup (
-        IN  const char *                    pszString)
-/*++
-
-Routine Description
-    allocates enough storage via calloc() for a copy of the string,
-    copies the string into the new memory, and returns a pointer to it.
-
-Arguments
-    pszString       string to copy into new memory
-
-Return Value
-    a pointer to the newly allocated storage with the string in it.
-    NULL if enough memory could not be allocated, or string was NULL.
-
---*/    
-{
-    char    *pszMemory;
-    size_t  cchMemory;
-
-    if (!pszString)
-        return(NULL);
-
-    cchMemory = strlen(pszString) + 1;
-    pszMemory = (char *) WspiapiMalloc(cchMemory);
-    if (!pszMemory)
-        return(NULL);
-
-    _WSPIAPI_STRCPY_S(pszMemory, cchMemory, pszString);
-    return pszMemory;
-}
-
-    
-    
-__inline
-BOOL
-WINAPI
-WspiapiParseV4Address (
-    IN  const char *                    pszAddress,
-    OUT PDWORD                          pdwAddress)
-/*++
-
-Routine Description
-    get the IPv4 address (in network byte order) from its string
-    representation.  the syntax should be a.b.c.d.
-    
-Arguments
-    pszArgument         string representation of the IPv4 address
-    ptAddress           pointer to the resulting IPv4 address
-
-Return Value
-    Returns FALSE if there is an error, TRUE for success.
-    
---*/
-{
-    DWORD       dwAddress   = 0;
-    const char  *pcNext     = NULL;
-    int         iCount      = 0;
-
-    // ensure there are 3 '.' (periods)
-    for (pcNext = pszAddress; *pcNext != '\0'; pcNext++)
-        if (*pcNext == '.')
-            iCount++;
-    if (iCount != 3)
-        return FALSE;
-
-    // return an error if dwAddress is INADDR_NONE (255.255.255.255)
-    // since this is never a valid argument to getaddrinfo.
-    dwAddress = inet_addr(pszAddress);
-    if (dwAddress == INADDR_NONE)
-        return FALSE;
-
-    *pdwAddress = dwAddress;
-    return TRUE;
-}
-
-
-
-__inline
-struct addrinfo *
-WINAPI
-WspiapiNewAddrInfo (
-    IN  int                             iSocketType,
-    IN  int                             iProtocol,
-    IN  WORD                            wPort,
-    IN  DWORD                           dwAddress)
-/*++
-
-Routine Description
-    allocate an addrinfo structure and populate fields.
-    IPv4 specific internal function, not exported.
-    
-Arguments
-    iSocketType         SOCK_*.  can be wildcarded (zero).
-    iProtocol           IPPROTO_*.  can be wildcarded (zero).
-    wPort               port number of service (in network order).
-    dwAddress           IPv4 address (in network order).
-    
-Return Value
-    returns an addrinfo struct, or NULL if out of memory.
-
---*/    
-{
-    struct addrinfo     *ptNew;
-    struct sockaddr_in  *ptAddress;
-
-    // allocate a new addrinfo structure.
-    ptNew       =
-        (struct addrinfo *) WspiapiMalloc(sizeof(struct addrinfo));
-    if (!ptNew)
-        return NULL;
-
-    ptAddress   =
-        (struct sockaddr_in *) WspiapiMalloc(sizeof(struct sockaddr_in));
-    if (!ptAddress)
-    {
-        WspiapiFree(ptNew);
-        return NULL;
-    }
-    ptAddress->sin_family       = AF_INET;
-    ptAddress->sin_port         = wPort;
-    ptAddress->sin_addr.s_addr  = dwAddress;
-    
-    // fill in the fields...
-    ptNew->ai_family            = PF_INET;
-    ptNew->ai_socktype          = iSocketType;
-    ptNew->ai_protocol          = iProtocol;
-    ptNew->ai_addrlen           = sizeof(struct sockaddr_in);
-    ptNew->ai_addr              = (struct sockaddr *) ptAddress;
-
-    return ptNew;
-}
-
-
-
-__inline
-int
-WINAPI
-WspiapiQueryDNS(
-    IN  const char                      *pszNodeName,
-    IN  int                             iSocketType,
-    IN  int                             iProtocol,  
-    IN  WORD                            wPort,      
-    OUT char                            pszAlias[NI_MAXHOST],
-    OUT struct addrinfo                 **pptResult)
-/*++
-
-Routine Description
-    helper routine for WspiapiLookupNode.
-    performs name resolution by querying the DNS for A records.
-    *pptResult would need to be freed if an error is returned.
-    
-Arguments
-    pszNodeName         name of node to resolve.
-    iSocketType         SOCK_*.  can be wildcarded (zero).
-    iProtocol           IPPROTO_*.  can be wildcarded (zero).
-    wPort               port number of service (in network order).
-    pszAlias            where to return the alias.  must be of size NI_MAXHOST.
-    pptResult           where to return the result.
-    
-Return Value
-    Returns 0 on success, an EAI_* style error value otherwise.
-
---*/    
-{
-    struct addrinfo **pptNext   = pptResult;
-    struct hostent  *ptHost     = NULL;
-    char            **ppAddresses;
-
-    *pptNext    = NULL;
-    pszAlias[0] = '\0';
-
-    ptHost = gethostbyname(pszNodeName);
-    if (ptHost)
-    {
-        if ((ptHost->h_addrtype == AF_INET)     &&
-            (ptHost->h_length   == sizeof(struct in_addr)))
-        {
-            for (ppAddresses    = ptHost->h_addr_list;
-                 *ppAddresses   != NULL;
-                 ppAddresses++)
-            {
-                // create an addrinfo structure...
-                *pptNext = WspiapiNewAddrInfo(
-                    iSocketType,
-                    iProtocol,
-                    wPort,
-                    ((struct in_addr *) *ppAddresses)->s_addr);
-                if (!*pptNext)
-                    return EAI_MEMORY;
-
-                pptNext = &((*pptNext)->ai_next);
-            }
-        }
-
-        // pick up the canonical name.
-        _WSPIAPI_STRNCPY_S(pszAlias, NI_MAXHOST, ptHost->h_name, NI_MAXHOST - 1);
-        
-        return 0;
-    }
-    
-    switch (WSAGetLastError())
-    {
-        case WSAHOST_NOT_FOUND: return EAI_NONAME;
-        case WSATRY_AGAIN:      return EAI_AGAIN;
-        case WSANO_RECOVERY:    return EAI_FAIL;
-        case WSANO_DATA:        return EAI_NODATA;
-        default:                return EAI_NONAME;
-    }
-}
-
-
-
-__inline
-int
-WINAPI
-WspiapiLookupNode(
-    IN  const char                      *pszNodeName,
-    IN  int                             iSocketType,
-    IN  int                             iProtocol,  
-    IN  WORD                            wPort,      
-    IN  BOOL                            bAI_CANONNAME,
-    OUT struct addrinfo                 **pptResult)
-/*++
-
-Routine Description
-    resolve a nodename and return a list of addrinfo structures.
-    IPv4 specific internal function, not exported.
-    *pptResult would need to be freed if an error is returned.
-    
-    NOTE: if bAI_CANONNAME is true, the canonical name should be
-          returned in the first addrinfo structure.
-    
-Arguments
-    pszNodeName         name of node to resolve.
-    iSocketType         SOCK_*.  can be wildcarded (zero).
-    iProtocol           IPPROTO_*.  can be wildcarded (zero).
-    wPort               port number of service (in network order).
-    bAI_CANONNAME       whether the AI_CANONNAME flag is set.
-    pptResult           where to return result.
-    
-Return Value
-    Returns 0 on success, an EAI_* style error value otherwise.
-
---*/
-{
-    int     iError              = 0;
-    int     iAliasCount         = 0;
-
-    char    szFQDN1[NI_MAXHOST] = "";
-    char    szFQDN2[NI_MAXHOST] = "";
-    char    *pszName            = szFQDN1;
-    char    *pszAlias           = szFQDN2;
-    char    *pszScratch         = NULL;
-    _WSPIAPI_STRNCPY_S(pszName, NI_MAXHOST, pszNodeName, NI_MAXHOST - 1);
-    
-    for (;;)
-    {
-        iError = WspiapiQueryDNS(pszNodeName,
-                                 iSocketType,
-                                 iProtocol,
-                                 wPort,
-                                 pszAlias,
-                                 pptResult);
-        if (iError)
-            break;
-
-        // if we found addresses, then we are done.
-        if (*pptResult)
-            break;
-
-        // stop infinite loops due to DNS misconfiguration.  there appears
-        // to be no particular recommended limit in RFCs 1034 and 1035.
-        if ((!strlen(pszAlias))             ||
-            (!strcmp(pszName, pszAlias))    ||
-            (++iAliasCount == 16))
-        {
-            iError = EAI_FAIL;
-            break;
-        }
-
-        // there was a new CNAME, look again.
-        WspiapiSwap(pszName, pszAlias, pszScratch);
-    }
-
-    if (!iError && bAI_CANONNAME)
-    {
-        (*pptResult)->ai_canonname = WspiapiStrdup(pszAlias);
-        if (!(*pptResult)->ai_canonname)
-            iError = EAI_MEMORY;
-    }
-
-    return iError;
-}
-
-
-
-__inline
-int
-WINAPI
-WspiapiClone (
-    IN  WORD                            wPort,      
-    IN  struct addrinfo                 *ptResult)
-/*++
-
-Routine Description
-    clone every addrinfo structure in ptResult for the UDP service.
-    ptResult would need to be freed if an error is returned.
-    
-Arguments
-    wPort               port number of UDP service.
-    ptResult            list of addrinfo structures, each
-                        of whose node needs to be cloned.
-
-Return Value
-    Returns 0 on success, an EAI_MEMORY on allocation failure.
-
---*/
-{
-    struct addrinfo *ptNext = NULL;
-    struct addrinfo *ptNew  = NULL;
-
-    for (ptNext = ptResult; ptNext != NULL; )
-    {
-        // create an addrinfo structure...
-        ptNew = WspiapiNewAddrInfo(
-            SOCK_DGRAM,
-            ptNext->ai_protocol,
-            wPort,
-            ((struct sockaddr_in *) ptNext->ai_addr)->sin_addr.s_addr);
-        if (!ptNew)
-            break;
-
-        // link the cloned addrinfo
-        ptNew->ai_next  = ptNext->ai_next;
-        ptNext->ai_next = ptNew;
-        ptNext          = ptNew->ai_next;
-    }
-
-    if (ptNext != NULL)
-        return EAI_MEMORY;
-    
-    return 0;
-}
-
-
-
-__inline
-void
-WINAPI
-WspiapiLegacyFreeAddrInfo (
-    IN  struct addrinfo                 *ptHead)
-/*++
-
-Routine Description
-    Free an addrinfo structure (or chain of structures).
-    As specified in RFC 2553, Section 6.4.
-    
-Arguments
-    ptHead              structure (chain) to free
-    
---*/    
-{
-    struct addrinfo *ptNext;    // next strcture to free
-
-    for (ptNext = ptHead; ptNext != NULL; ptNext = ptHead)
-    {
-        if (ptNext->ai_canonname)
-            WspiapiFree(ptNext->ai_canonname);
-        
-        if (ptNext->ai_addr)
-            WspiapiFree(ptNext->ai_addr);
-
-        ptHead = ptNext->ai_next;
-        WspiapiFree(ptNext);
-    }
-}
-
-
-
-__inline
-int
-WINAPI
-WspiapiLegacyGetAddrInfo(
-    IN const char                       *pszNodeName,
-    IN const char                       *pszServiceName,
-    IN const struct addrinfo            *ptHints,
-    OUT struct addrinfo                 **pptResult)
-/*++
-
-Routine Description
-    Protocol-independent name-to-address translation.
-    As specified in RFC 2553, Section 6.4.
-    This is the hacked version that only supports IPv4.
-    
-Arguments
-    pszNodeName         node name to lookup.
-    pszServiceName      service name to lookup.
-    ptHints             hints about how to process request.
-    pptResult           where to return result.
-    
-Return Value
-    returns zero if successful, an EAI_* error code if not.
-
---*/    
-{
-    int                 iError      = 0;
-    int                 iFlags      = 0;
-    int                 iFamily     = PF_UNSPEC;
-    int                 iSocketType = 0;
-    int                 iProtocol   = 0;
-    WORD                wPort       = 0;
-    DWORD               dwAddress   = 0;
-
-    struct servent      *ptService  = NULL;
-    char                *pc         = NULL;
-    BOOL                bClone      = FALSE;
-    WORD                wTcpPort    = 0;
-    WORD                wUdpPort    = 0;
-    
-    
-    // initialize pptResult with default return value.
-    *pptResult  = NULL;
-
-
-    ////////////////////////////////////////
-    // validate arguments...
-    //
-    
-    // both the node name and the service name can't be NULL.
-    if ((!pszNodeName) && (!pszServiceName))
-        return EAI_NONAME;
-
-    // validate hints.
-    if (ptHints)
-    {
-        // all members other than ai_flags, ai_family, ai_socktype
-        // and ai_protocol must be zero or a null pointer.
-        if ((ptHints->ai_addrlen    != 0)       ||
-            (ptHints->ai_canonname  != NULL)    ||
-            (ptHints->ai_addr       != NULL)    ||
-            (ptHints->ai_next       != NULL))
-        {
-            return EAI_FAIL;
-        }
-        
-        // the spec has the "bad flags" error code, so presumably we
-        // should check something here.  insisting that there aren't
-        // any unspecified flags set would break forward compatibility,
-        // however.  so we just check for non-sensical combinations.
-        //
-        // we cannot come up with a canonical name given a null node name.
-        iFlags      = ptHints->ai_flags;
-        if ((iFlags & AI_CANONNAME) && !pszNodeName)
-            return EAI_BADFLAGS;
-
-        // we only support a limited number of protocol families.
-        iFamily     = ptHints->ai_family;
-        if ((iFamily != PF_UNSPEC) && (iFamily != PF_INET))
-            return EAI_FAMILY;
-
-        // we only support only these socket types.
-        iSocketType = ptHints->ai_socktype;
-        if ((iSocketType != 0)                  &&
-            (iSocketType != SOCK_STREAM)        &&
-            (iSocketType != SOCK_DGRAM)         &&
-            (iSocketType != SOCK_RAW))
-            return EAI_SOCKTYPE;
-
-        // REVIEW: What if ai_socktype and ai_protocol are at odds?
-        iProtocol   = ptHints->ai_protocol;
-    }
-
-
-    ////////////////////////////////////////
-    // do service lookup...
-
-    if (pszServiceName)
-    {
-        wPort = (WORD) strtoul(pszServiceName, &pc, 10);
-        if (*pc == '\0')        // numeric port string
-        {
-            wPort = wTcpPort = wUdpPort = htons(wPort);
-            if (iSocketType == 0)
-            {
-                bClone      = TRUE;
-                iSocketType = SOCK_STREAM;
-            }
-        }
-        else                    // non numeric port string
-        {
-            if ((iSocketType == 0) || (iSocketType == SOCK_DGRAM))
-            {
-                ptService = getservbyname(pszServiceName, "udp");
-                if (ptService)
-                    wPort = wUdpPort = ptService->s_port;
-            }
-
-            if ((iSocketType == 0) || (iSocketType == SOCK_STREAM))
-            {
-                ptService = getservbyname(pszServiceName, "tcp");
-                if (ptService)
-                    wPort = wTcpPort = ptService->s_port;
-            }
-            
-            // assumes 0 is an invalid service port...
-            if (wPort == 0)     // no service exists
-                return (iSocketType ? EAI_SERVICE : EAI_NONAME);
-
-            if (iSocketType == 0)
-            {
-                // if both tcp and udp, process tcp now & clone udp later.
-                iSocketType = (wTcpPort) ? SOCK_STREAM : SOCK_DGRAM;
-                bClone      = (wTcpPort && wUdpPort); 
-            }
-        }
-    }
-    
-
-
-    ////////////////////////////////////////
-    // do node name lookup...
-
-    // if we weren't given a node name,
-    // return the wildcard or loopback address (depending on AI_PASSIVE).
-    //
-    // if we have a numeric host address string,
-    // return the binary address.
-    //
-    if ((!pszNodeName) || (WspiapiParseV4Address(pszNodeName, &dwAddress)))
-    {
-        if (!pszNodeName)
-        {
-            dwAddress = htonl((iFlags & AI_PASSIVE)
-                              ? INADDR_ANY
-                              : INADDR_LOOPBACK);
-        }
-        
-        // create an addrinfo structure...
-        *pptResult =
-            WspiapiNewAddrInfo(iSocketType, iProtocol, wPort, dwAddress);
-        if (!(*pptResult))
-            iError = EAI_MEMORY;
-        
-        if (!iError && pszNodeName)
-        {
-            // implementation specific behavior: set AI_NUMERICHOST
-            // to indicate that we got a numeric host address string.
-            (*pptResult)->ai_flags |= AI_NUMERICHOST;
-            
-            // return the numeric address string as the canonical name
-            if (iFlags & AI_CANONNAME)
-            {
-                (*pptResult)->ai_canonname =
-                    WspiapiStrdup(inet_ntoa(*((struct in_addr *) &dwAddress)));
-                if (!(*pptResult)->ai_canonname)        
-                    iError = EAI_MEMORY;
-            }
-        }
-    }
-
-
-    // if we do not have a numeric host address string and
-    // AI_NUMERICHOST flag is set, return an error!
-    else if (iFlags & AI_NUMERICHOST)
-    {
-        iError = EAI_NONAME;
-    }
-    
-
-    // since we have a non-numeric node name,
-    // we have to do a regular node name lookup.
-    else
-    {
-        iError = WspiapiLookupNode(pszNodeName,
-                                   iSocketType,
-                                   iProtocol,
-                                   wPort,
-                                   (iFlags & AI_CANONNAME),
-                                   pptResult);
-    }
-
-    if (!iError && bClone)
-    {
-        iError = WspiapiClone(wUdpPort, *pptResult);
-    }
-
-    if (iError)
-    {
-        WspiapiLegacyFreeAddrInfo(*pptResult);
-        *pptResult  = NULL;        
-    }
-
-    return (iError);
-}
-
-
-
-__inline
-int
-WINAPI
-WspiapiLegacyGetNameInfo(
-    IN  const struct sockaddr           *ptSocketAddress,
-    IN  socklen_t                       tSocketLength,
-    OUT char                            *pszNodeName,
-    IN  size_t                          tNodeLength,
-    OUT char                            *pszServiceName,
-    IN  size_t                          tServiceLength,
-    IN  int                             iFlags)
-/*++
-
-Routine Description
-    protocol-independent address-to-name translation.
-    as specified in RFC 2553, Section 6.5.
-    this is the hacked version that only supports IPv4.
-    
-Arguments
-    ptSocketAddress     socket address to translate.
-    tSocketLength       length of above socket address.
-    pszNodeName         where to return the node name.
-    tNodeLength         size of above buffer.
-    pszServiceName      where to return the service name.
-    tServiceLength      size of above buffer.
-    iFlags              flags of type NI_*.
-    
-Return Value
-    returns zero if successful, an EAI_* error code if not.
-
---*/    
-{
-    struct servent  *ptService;
-    WORD            wPort;    
-    char            szBuffer[]  = "65535";
-    char            *pszService = szBuffer;
-
-    struct hostent  *ptHost;
-    struct in_addr  tAddress;
-    char            *pszNode    = NULL;
-    char            *pc         = NULL;
-    
-
-    // sanity check ptSocketAddress and tSocketLength.
-    if ((!ptSocketAddress) || (tSocketLength < sizeof(struct sockaddr)))
-        return EAI_FAIL;
-    
-    if (ptSocketAddress->sa_family != AF_INET)
-        return EAI_FAMILY;
-
-    if (tSocketLength < sizeof(struct sockaddr_in))
-        return EAI_FAIL;
-    
-    if (!(pszNodeName && tNodeLength) &&
-        !(pszServiceName && tServiceLength))
-    {
-        return EAI_NONAME;    
-    }
-
-    // the draft has the "bad flags" error code, so presumably we
-    // should check something here.  insisting that there aren't
-    // any unspecified flags set would break forward compatibility,
-    // however.  so we just check for non-sensical combinations.
-    if ((iFlags & NI_NUMERICHOST) && (iFlags & NI_NAMEREQD))
-    {                                                                       
-        return EAI_BADFLAGS;
-    }
-        
-    // translate the port to a service name (if requested).
-    if (pszServiceName && tServiceLength)
-    {
-        wPort = ((struct sockaddr_in *) ptSocketAddress)->sin_port;
-        
-        if (iFlags & NI_NUMERICSERV)
-        {
-            // return numeric form of the address.
-            _WSPIAPI_SPRINTF_S_1(szBuffer, _WSPIAPI_COUNTOF(szBuffer), "%u", ntohs(wPort));
-        }
-        else
-        {
-            // return service name corresponding to port.
-            ptService = getservbyport(wPort,
-                                      (iFlags & NI_DGRAM) ? "udp" : NULL);
-            if (ptService && ptService->s_name)
-            {
-                // lookup successful.
-                pszService = ptService->s_name;
-            }
-            else
-            {
-                // DRAFT: return numeric form of the port!
-                _WSPIAPI_SPRINTF_S_1(szBuffer, _WSPIAPI_COUNTOF(szBuffer), "%u", ntohs(wPort));
-            }
-        }
-        
-        
-        if (tServiceLength > strlen(pszService))
-            _WSPIAPI_STRCPY_S(pszServiceName, tServiceLength, pszService);
-        else
-            return EAI_FAIL;
-    }
-
-    
-    // translate the address to a node name (if requested).
-    if (pszNodeName && tNodeLength)
-    {    
-        // this is the IPv4-only version, so we have an IPv4 address.
-        tAddress = ((struct sockaddr_in *) ptSocketAddress)->sin_addr;
-
-        if (iFlags & NI_NUMERICHOST)
-        {
-            // return numeric form of the address.
-            pszNode  = inet_ntoa(tAddress);
-        }
-        else
-        {
-            // return node name corresponding to address.
-            ptHost = gethostbyaddr((char *) &tAddress,
-                                   sizeof(struct in_addr),
-                                   AF_INET);
-            if (ptHost && ptHost->h_name)
-            {
-                // DNS lookup successful.
-                // stop copying at a "." if NI_NOFQDN is specified.
-                pszNode = ptHost->h_name;
-                if ((iFlags & NI_NOFQDN) &&
-                    ((pc = strchr(pszNode, '.')) != NULL))
-                    *pc = '\0';
-            }
-            else
-            {
-                // DNS lookup failed.  return numeric form of the address.
-                if (iFlags & NI_NAMEREQD)
-                {
-                    switch (WSAGetLastError())
-                    {
-                        case WSAHOST_NOT_FOUND: return EAI_NONAME;
-                        case WSATRY_AGAIN:      return EAI_AGAIN;
-                        case WSANO_RECOVERY:    return EAI_FAIL;
-                        default:                return EAI_NONAME;
-                    }
-                }
-                else
-                    pszNode  = inet_ntoa(tAddress);
-            }
-        }
-
-        if (tNodeLength > strlen(pszNode))
-            _WSPIAPI_STRCPY_S(pszNodeName, tNodeLength, pszNode);
-        else
-            return EAI_FAIL;
-    }
-
-    return 0;
-}
-
-
-
-typedef struct 
-{
-    char const          *pszName;
-    FARPROC             pfAddress;
-} WSPIAPI_FUNCTION;
-
-#define WSPIAPI_FUNCTION_ARRAY                                  \
-{                                                               \
-    "getaddrinfo",      (FARPROC) WspiapiLegacyGetAddrInfo,     \
-    "getnameinfo",      (FARPROC) WspiapiLegacyGetNameInfo,     \
-    "freeaddrinfo",     (FARPROC) WspiapiLegacyFreeAddrInfo,    \
-}
-
-
-
-__inline
-FARPROC
-WINAPI
-WspiapiLoad(
-    IN  WORD                            wFunction)
-/*++
-
-Routine Description
-    try to locate the address family independent name resolution routines
-    (i.e. getaddrinfo, getnameinfo, freeaddrinfo, gai_strerror).
-    
-Locks
-    this function call is not synchronized.  hence the library containing
-    the routines might be loaded multiple times.  another option is to
-    synchronize through a spin lock using a static local variable and the
-    InterlockedExchange operation.  
-
-    
-Arguments
-    wFunction           ordinal # of the function to get the pointer to
-                        0   getaddrinfo
-                        1   getnameinfo
-                        2   freeaddrinfo
-    
-Return Value
-    address of the library/legacy routine
-
---*/
-{
-    HMODULE                 hLibrary        = NULL;
-
-    // these static variables store state across calls, across threads.
-    static BOOL             bInitialized    = FALSE;
-    static WSPIAPI_FUNCTION rgtGlobal[]     = WSPIAPI_FUNCTION_ARRAY;
-    static const int        iNumGlobal      = (sizeof(rgtGlobal) /
-                                               sizeof(WSPIAPI_FUNCTION));
-    
-    // we overwrite rgtGlobal only if all routines exist in library.
-    WSPIAPI_FUNCTION        rgtLocal[]      = WSPIAPI_FUNCTION_ARRAY;
-    FARPROC                 fScratch        = NULL;
-    int                     i               = 0;
-    
-    
-    if (bInitialized)           // WspiapiLoad has already been called once
-        return (rgtGlobal[wFunction].pfAddress);
-
-    for (;;)                    // breakout loop
-    {
-        CHAR SystemDir[MAX_PATH + 1];
-        CHAR Path[MAX_PATH + 8];
-
-        if (GetSystemDirectoryA(SystemDir, MAX_PATH) == 0) 
-        {
-            break;
-        }
-
-        // in Whistler and beyond...
-        // the routines are present in the WinSock 2 library (ws2_32.dll).
-        // printf("Looking in ws2_32 for getaddrinfo...\n");
-        _WSPIAPI_STRCPY_S(Path, _WSPIAPI_COUNTOF(Path), SystemDir);
-        _WSPIAPI_STRCAT_S(Path, _WSPIAPI_COUNTOF(Path), "\\ws2_32");
-        hLibrary = LoadLibraryA(Path);
-        if (hLibrary != NULL)
-        {
-            fScratch = GetProcAddress(hLibrary, "getaddrinfo");
-            if (fScratch == NULL)
-            {
-                FreeLibrary(hLibrary);
-                hLibrary = NULL;
-            }
-        }
-        if (hLibrary != NULL)
-            break;
-        
-
-        // in the IPv6 Technology Preview...        
-        // the routines are present in the IPv6 WinSock library (wship6.dll).
-        // printf("Looking in wship6 for getaddrinfo...\n");
-        _WSPIAPI_STRCPY_S(Path, _WSPIAPI_COUNTOF(Path), SystemDir);
-        _WSPIAPI_STRCAT_S(Path, _WSPIAPI_COUNTOF(Path), "\\wship6");
-        hLibrary = LoadLibraryA(Path);
-        if (hLibrary != NULL)
-        {
-            fScratch = GetProcAddress(hLibrary, "getaddrinfo");
-            if (fScratch == NULL)
-            {
-                FreeLibrary(hLibrary);
-                hLibrary = NULL;
-            }
-        }
-
-        break;
-    }
-
-
-    if (hLibrary != NULL)
-    {
-        // use routines from this library...
-        // since getaddrinfo is here, we expect all routines to be here,
-        // but will fall back to IPv4-only if any of them is missing.
-        for (i = 0; i < iNumGlobal; i++)
-        {
-            rgtLocal[i].pfAddress
-                = GetProcAddress(hLibrary, rgtLocal[i].pszName);
-            if (rgtLocal[i].pfAddress == NULL)
-            {
-                FreeLibrary(hLibrary);
-                hLibrary = NULL;
-                break;
-            }
-        }
-
-        if (hLibrary != NULL)
-        {
-            // printf("found!\n");
-            for (i = 0; i < iNumGlobal; i++)
-                rgtGlobal[i].pfAddress = rgtLocal[i].pfAddress;
-        }
-    }
-    
-    bInitialized = TRUE;
-    return (rgtGlobal[wFunction].pfAddress);
-}
-
-
-
-__inline
-int
-WINAPI
-WspiapiGetAddrInfo(
-    IN const char                       *nodename,
-    IN const char                       *servname,
-    IN const struct addrinfo            *hints,
-    OUT struct addrinfo                 **res)
-{
-    int                             iError;
-    static WSPIAPI_PGETADDRINFO     pfGetAddrInfo   = NULL;
-    
-    if (!pfGetAddrInfo)
-        pfGetAddrInfo   = (WSPIAPI_PGETADDRINFO) WspiapiLoad(0);
-
-    iError = (*pfGetAddrInfo)(nodename, servname, hints, res);
-    WSASetLastError(iError);
-    return iError;
-}
-
-
-
-__inline
-int
-WINAPI
-WspiapiGetNameInfo (
-    IN  const struct sockaddr           *sa,
-    IN  socklen_t                       salen,
-    OUT char                            *host,
-    IN  size_t                          hostlen,
-    OUT char                            *serv,
-    IN  size_t                          servlen,
-    IN  int                             flags)
-{
-    int                             iError;
-    static WSPIAPI_PGETNAMEINFO     pfGetNameInfo   = NULL;
-    
-    if (!pfGetNameInfo)
-        pfGetNameInfo   = (WSPIAPI_PGETNAMEINFO) WspiapiLoad(1);
-
-    iError = (*pfGetNameInfo)(sa, salen, host, hostlen, serv, servlen, flags);
-    WSASetLastError(iError);
-    return iError;
-}
-
-
-
-__inline
-void
-WINAPI
-WspiapiFreeAddrInfo (
-    IN  struct addrinfo                 *ai)
-{
-    static WSPIAPI_PFREEADDRINFO    pfFreeAddrInfo   = NULL;
-
-    if (!pfFreeAddrInfo)
-        pfFreeAddrInfo  = (WSPIAPI_PFREEADDRINFO) WspiapiLoad(2);
-    (*pfFreeAddrInfo)(ai);
-}
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif // if (NTDDI_VERSION >= WIN2K)
-#endif // _WSPIAPI_H_
-
diff --git a/misc/builddeps/win32/dx/include/zconf.h b/misc/builddeps/win32/dx/include/zconf.h
deleted file mode 100644 (file)
index 51c80ac..0000000
+++ /dev/null
@@ -1,466 +0,0 @@
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2011 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#ifndef ZCONF_H
-#define ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- * Even better than compiling with -DZ_PREFIX would be to use configure to set
- * this permanently in zconf.h using "./configure --zprefix".
- */
-#ifdef Z_PREFIX     /* may be set to #if 1 by ./configure */
-#  define Z_PREFIX_SET
-
-/* all linked symbols */
-#  define _dist_code            z__dist_code
-#  define _length_code          z__length_code
-#  define _tr_align             z__tr_align
-#  define _tr_flush_block       z__tr_flush_block
-#  define _tr_init              z__tr_init
-#  define _tr_stored_block      z__tr_stored_block
-#  define _tr_tally             z__tr_tally
-#  define adler32               z_adler32
-#  define adler32_combine       z_adler32_combine
-#  define adler32_combine64     z_adler32_combine64
-#  ifndef Z_SOLO
-#    define compress              z_compress
-#    define compress2             z_compress2
-#    define compressBound         z_compressBound
-#  endif
-#  define crc32                 z_crc32
-#  define crc32_combine         z_crc32_combine
-#  define crc32_combine64       z_crc32_combine64
-#  define deflate               z_deflate
-#  define deflateBound          z_deflateBound
-#  define deflateCopy           z_deflateCopy
-#  define deflateEnd            z_deflateEnd
-#  define deflateInit2_         z_deflateInit2_
-#  define deflateInit_          z_deflateInit_
-#  define deflateParams         z_deflateParams
-#  define deflatePending        z_deflatePending
-#  define deflatePrime          z_deflatePrime
-#  define deflateReset          z_deflateReset
-#  define deflateResetKeep      z_deflateResetKeep
-#  define deflateSetDictionary  z_deflateSetDictionary
-#  define deflateSetHeader      z_deflateSetHeader
-#  define deflateTune           z_deflateTune
-#  define deflate_copyright     z_deflate_copyright
-#  define get_crc_table         z_get_crc_table
-#  ifndef Z_SOLO
-#    define gz_error              z_gz_error
-#    define gz_intmax             z_gz_intmax
-#    define gz_strwinerror        z_gz_strwinerror
-#    define gzbuffer              z_gzbuffer
-#    define gzclearerr            z_gzclearerr
-#    define gzclose               z_gzclose
-#    define gzclose_r             z_gzclose_r
-#    define gzclose_w             z_gzclose_w
-#    define gzdirect              z_gzdirect
-#    define gzdopen               z_gzdopen
-#    define gzeof                 z_gzeof
-#    define gzerror               z_gzerror
-#    define gzflags               z_gzflags
-#    define gzflush               z_gzflush
-#    define gzgetc                z_gzgetc
-#    define gzgetc_               z_gzgetc_
-#    define gzgets                z_gzgets
-#    define gzoffset              z_gzoffset
-#    define gzoffset64            z_gzoffset64
-#    define gzopen                z_gzopen
-#    define gzopen64              z_gzopen64
-#    define gzprintf              z_gzprintf
-#    define gzputc                z_gzputc
-#    define gzputs                z_gzputs
-#    define gzread                z_gzread
-#    define gzrewind              z_gzrewind
-#    define gzseek                z_gzseek
-#    define gzseek64              z_gzseek64
-#    define gzsetparams           z_gzsetparams
-#    define gztell                z_gztell
-#    define gztell64              z_gztell64
-#    define gzungetc              z_gzungetc
-#    define gzwrite               z_gzwrite
-#  endif
-#  define inflate               z_inflate
-#  define inflateBack           z_inflateBack
-#  define inflateBackEnd        z_inflateBackEnd
-#  define inflateBackInit_      z_inflateBackInit_
-#  define inflateCopy           z_inflateCopy
-#  define inflateEnd            z_inflateEnd
-#  define inflateGetHeader      z_inflateGetHeader
-#  define inflateInit2_         z_inflateInit2_
-#  define inflateInit_          z_inflateInit_
-#  define inflateMark           z_inflateMark
-#  define inflatePrime          z_inflatePrime
-#  define inflateReset          z_inflateReset
-#  define inflateReset2         z_inflateReset2
-#  define inflateSetDictionary  z_inflateSetDictionary
-#  define inflateSync           z_inflateSync
-#  define inflateSyncPoint      z_inflateSyncPoint
-#  define inflateUndermine      z_inflateUndermine
-#  define inflateResetKeep      z_inflateResetKeep
-#  define inflate_copyright     z_inflate_copyright
-#  define inflate_fast          z_inflate_fast
-#  define inflate_table         z_inflate_table
-#  ifndef Z_SOLO
-#    define uncompress            z_uncompress
-#  endif
-#  define zError                z_zError
-#  ifndef Z_SOLO
-#    define zcalloc               z_zcalloc
-#    define zcfree                z_zcfree
-#  endif
-#  define zlibCompileFlags      z_zlibCompileFlags
-#  define zlibVersion           z_zlibVersion
-
-/* all zlib typedefs in zlib.h and zconf.h */
-#  define Byte                  z_Byte
-#  define Bytef                 z_Bytef
-#  define alloc_func            z_alloc_func
-#  define charf                 z_charf
-#  define free_func             z_free_func
-#  ifndef Z_SOLO
-#    define gzFile                z_gzFile
-#    define gz_header             z_gz_header
-#    define gz_headerp            z_gz_headerp
-#  endif
-#  define in_func               z_in_func
-#  define intf                  z_intf
-#  define out_func              z_out_func
-#  define uInt                  z_uInt
-#  define uIntf                 z_uIntf
-#  define uLong                 z_uLong
-#  define uLongf                z_uLongf
-#  define voidp                 z_voidp
-#  define voidpc                z_voidpc
-#  define voidpf                z_voidpf
-
-/* all zlib structs in zlib.h and zconf.h */
-#  ifndef Z_SOLO
-#    define gz_header_s           z_gz_header_s
-#  endif
-#  define internal_state        z_internal_state
-
-#endif
-
-#if defined(__MSDOS__) && !defined(MSDOS)
-#  define MSDOS
-#endif
-#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
-#  define OS2
-#endif
-#if defined(_WINDOWS) && !defined(WINDOWS)
-#  define WINDOWS
-#endif
-#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
-#  ifndef WIN32
-#    define WIN32
-#  endif
-#endif
-#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
-#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
-#    ifndef SYS16BIT
-#      define SYS16BIT
-#    endif
-#  endif
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#ifdef SYS16BIT
-#  define MAXSEG_64K
-#endif
-#ifdef MSDOS
-#  define UNALIGNED_OK
-#endif
-
-#ifdef __STDC_VERSION__
-#  ifndef STDC
-#    define STDC
-#  endif
-#  if __STDC_VERSION__ >= 199901L
-#    ifndef STDC99
-#      define STDC99
-#    endif
-#  endif
-#endif
-#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
-#  define STDC
-#endif
-
-#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
-#  define STDC
-#endif
-
-#ifndef STDC
-#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-#    define const       /* note: need a more gentle solution here */
-#  endif
-#endif
-
-#if defined(ZLIB_CONST) && !defined(z_const)
-#  define z_const const
-#else
-#  define z_const
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
-#  define NO_DUMMY_DECL
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-#  ifdef MAXSEG_64K
-#    define MAX_MEM_LEVEL 8
-#  else
-#    define MAX_MEM_LEVEL 9
-#  endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2.
- * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
- * created by gzip. (Files created by minigzip can still be extracted by
- * gzip.)
- */
-#ifndef MAX_WBITS
-#  define MAX_WBITS   15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
-            (1 << (windowBits+2)) +  (1 << (memLevel+9))
- that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
-     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
-   The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
-                        /* Type declarations */
-
-#ifndef OF /* function prototypes */
-#  ifdef STDC
-#    define OF(args)  args
-#  else
-#    define OF(args)  ()
-#  endif
-#endif
-
-#ifndef Z_ARG /* function prototypes for stdarg */
-#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
-#    define Z_ARG(args)  args
-#  else
-#    define Z_ARG(args)  ()
-#  endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#ifdef SYS16BIT
-#  if defined(M_I86SM) || defined(M_I86MM)
-     /* MSC small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef _MSC_VER
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#  if (defined(__SMALL__) || defined(__MEDIUM__))
-     /* Turbo C small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef __BORLANDC__
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#endif
-
-#if defined(WINDOWS) || defined(WIN32)
-   /* If building or using zlib as a DLL, define ZLIB_DLL.
-    * This is not mandatory, but it offers a little performance increase.
-    */
-#  ifdef ZLIB_DLL
-#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
-#      ifdef ZLIB_INTERNAL
-#        define ZEXTERN extern __declspec(dllexport)
-#      else
-#        define ZEXTERN extern __declspec(dllimport)
-#      endif
-#    endif
-#  endif  /* ZLIB_DLL */
-   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
-    * define ZLIB_WINAPI.
-    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
-    */
-#  ifdef ZLIB_WINAPI
-#    ifdef FAR
-#      undef FAR
-#    endif
-#    include <windows.h>
-     /* No need for _export, use ZLIB.DEF instead. */
-     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
-#    define ZEXPORT WINAPI
-#    ifdef WIN32
-#      define ZEXPORTVA WINAPIV
-#    else
-#      define ZEXPORTVA FAR CDECL
-#    endif
-#  endif
-#endif
-
-#if defined (__BEOS__)
-#  ifdef ZLIB_DLL
-#    ifdef ZLIB_INTERNAL
-#      define ZEXPORT   __declspec(dllexport)
-#      define ZEXPORTVA __declspec(dllexport)
-#    else
-#      define ZEXPORT   __declspec(dllimport)
-#      define ZEXPORTVA __declspec(dllimport)
-#    endif
-#  endif
-#endif
-
-#ifndef ZEXTERN
-#  define ZEXTERN extern
-#endif
-#ifndef ZEXPORT
-#  define ZEXPORT
-#endif
-#ifndef ZEXPORTVA
-#  define ZEXPORTVA
-#endif
-
-#ifndef FAR
-#  define FAR
-#endif
-
-#if !defined(__MACTYPES__)
-typedef unsigned char  Byte;  /* 8 bits */
-#endif
-typedef unsigned int   uInt;  /* 16 bits or more */
-typedef unsigned long  uLong; /* 32 bits or more */
-
-#ifdef SMALL_MEDIUM
-   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
-#  define Bytef Byte FAR
-#else
-   typedef Byte  FAR Bytef;
-#endif
-typedef char  FAR charf;
-typedef int   FAR intf;
-typedef uInt  FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
-   typedef void const *voidpc;
-   typedef void FAR   *voidpf;
-   typedef void       *voidp;
-#else
-   typedef Byte const *voidpc;
-   typedef Byte FAR   *voidpf;
-   typedef Byte       *voidp;
-#endif
-
-#ifdef HAVE_UNISTD_H    /* may be set to #if 1 by ./configure */
-#  define Z_HAVE_UNISTD_H
-#endif
-
-#ifdef HAVE_STDARG_H    /* may be set to #if 1 by ./configure */
-#  define Z_HAVE_STDARG_H
-#endif
-
-#ifdef STDC
-#  ifndef Z_SOLO
-#    include <sys/types.h>      /* for off_t */
-#  endif
-#endif
-
-/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
- * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
- * though the former does not conform to the LFS document), but considering
- * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
- * equivalently requesting no 64-bit operations
- */
-#if -_LARGEFILE64_SOURCE - -1 == 1
-#  undef _LARGEFILE64_SOURCE
-#endif
-
-#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
-#  define Z_LARGE
-#endif
-
-#if (defined(Z_HAVE_UNISTD_H) || defined(Z_LARGE)) && !defined(Z_SOLO)
-#  include <unistd.h>       /* for SEEK_* and off_t */
-#  ifdef VMS
-#    include <unixio.h>     /* for off_t */
-#  endif
-#  ifndef z_off_t
-#    define z_off_t off_t
-#  endif
-#endif
-
-#if !defined(SEEK_SET) && !defined(Z_SOLO)
-#  define SEEK_SET        0       /* Seek from beginning of file.  */
-#  define SEEK_CUR        1       /* Seek from current position.  */
-#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
-#endif
-
-#ifndef z_off_t
-#  define z_off_t long
-#endif
-
-#if !defined(_WIN32) && (defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0)
-#  define z_off64_t off64_t
-#else
-#  if defined(_WIN32)
-#    define z_off64_t __int64
-#  else
-#  define z_off64_t z_off_t
-#endif
-#endif
-
-/* MVS linker does not support external names larger than 8 bytes */
-#if defined(__MVS__)
-  #pragma map(deflateInit_,"DEIN")
-  #pragma map(deflateInit2_,"DEIN2")
-  #pragma map(deflateEnd,"DEEND")
-  #pragma map(deflateBound,"DEBND")
-  #pragma map(inflateInit_,"ININ")
-  #pragma map(inflateInit2_,"ININ2")
-  #pragma map(inflateEnd,"INEND")
-  #pragma map(inflateSync,"INSY")
-  #pragma map(inflateSetDictionary,"INSEDI")
-  #pragma map(compressBound,"CMBND")
-  #pragma map(inflate_table,"INTABL")
-  #pragma map(inflate_fast,"INFA")
-  #pragma map(inflate_copyright,"INCOPY")
-#endif
-
-#endif /* ZCONF_H */
diff --git a/misc/builddeps/win32/gmp/bin/libgmp-10.dll b/misc/builddeps/win32/gmp/bin/libgmp-10.dll
deleted file mode 100755 (executable)
index 33b5eb8..0000000
Binary files a/misc/builddeps/win32/gmp/bin/libgmp-10.dll and /dev/null differ
diff --git a/misc/builddeps/win32/gmp/include/gmp.h b/misc/builddeps/win32/gmp/include/gmp.h
deleted file mode 100644 (file)
index ee3afc0..0000000
+++ /dev/null
@@ -1,2280 +0,0 @@
-/* Definitions for GNU multiple precision functions.   -*- mode: c -*-
-
-Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-The GNU MP Library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
-
-#ifndef __GMP_H__
-
-#if defined (__cplusplus)
-#include <iosfwd>   /* for std::istream, std::ostream, std::string */
-#include <cstdio>
-#endif
-
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-#define __GMP_HAVE_HOST_CPU_FAMILY_power   0
-#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0
-#define GMP_LIMB_BITS                      32
-#define GMP_NAIL_BITS                      0
-#endif
-#define GMP_NUMB_BITS     (GMP_LIMB_BITS - GMP_NAIL_BITS)
-#define GMP_NUMB_MASK     ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)
-#define GMP_NUMB_MAX      GMP_NUMB_MASK
-#define GMP_NAIL_MASK     (~ GMP_NUMB_MASK)
-
-
-/* The following (everything under ifndef __GNU_MP__) must be identical in
-   gmp.h and mp.h to allow both to be included in an application or during
-   the library build.  */
-#ifndef __GNU_MP__
-#define __GNU_MP__ 5
-
-#define __need_size_t  /* tell gcc stddef.h we only want size_t */
-#if defined (__cplusplus)
-#include <cstddef>     /* for size_t */
-#else
-#include <stddef.h>    /* for size_t */
-#endif
-#undef __need_size_t
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-/* #undef _LONG_LONG_LIMB */
-#define __GMP_LIBGMP_DLL  1
-#endif
-
-
-/* __STDC__ - some ANSI compilers define this only to 0, hence the use of
-       "defined" and not "__STDC__-0".  In particular Sun workshop C 5.0
-       sets __STDC__ to 0, but requires "##" for token pasting.
-
-   _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but
-       don't always define __STDC__.
-
-   __DECC - current versions of DEC C (5.9 for instance) for alpha are ANSI,
-       but don't define __STDC__ in their default mode.  Don't know if old
-       versions might have been K&R, but let's not worry about that unless
-       someone is still using one.
-
-   _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4
-       mode, but doesn't define __STDC__.
-
-   _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za
-       option is given (in which case it's 1).
-
-   _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that
-      all w32 compilers are ansi.
-
-   Note: This same set of tests is used by gen-psqr.c and
-   demos/expr/expr-impl.h, so if anything needs adding, then be sure to
-   update those too.  */
-
-#if  defined (__STDC__)                                 \
-  || defined (__cplusplus)                              \
-  || defined (_AIX)                                     \
-  || defined (__DECC)                                   \
-  || (defined (__mips) && defined (_SYSTYPE_SVR4))      \
-  || defined (_MSC_VER)                                 \
-  || defined (_WIN32)
-#define __GMP_HAVE_CONST        1
-#define __GMP_HAVE_PROTOTYPES   1
-#define __GMP_HAVE_TOKEN_PASTE  1
-#else
-#define __GMP_HAVE_CONST        0
-#define __GMP_HAVE_PROTOTYPES   0
-#define __GMP_HAVE_TOKEN_PASTE  0
-#endif
-
-
-#if __GMP_HAVE_CONST
-#define __gmp_const   const
-#define __gmp_signed  signed
-#else
-#define __gmp_const
-#define __gmp_signed
-#endif
-
-
-/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in
-   all other circumstances.
-
-   When compiling objects for libgmp, __GMP_DECLSPEC is an export directive,
-   or when compiling for an application it's an import directive.  The two
-   cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles
-   (and not defined from an application).
-
-   __GMP_DECLSPEC_XX is similarly used for libgmpxx.  __GMP_WITHIN_GMPXX
-   indicates when building libgmpxx, and in that case libgmpxx functions are
-   exports, but libgmp functions which might get called are imports.
-
-   libmp.la uses __GMP_DECLSPEC, just as if it were libgmp.la.  libgmp and
-   libmp don't call each other, so there's no conflict or confusion.
-
-   Libtool DLL_EXPORT define is not used.
-
-   There's no attempt to support GMP built both static and DLL.  Doing so
-   would mean applications would have to tell us which of the two is going
-   to be used when linking, and that seems very tedious and error prone if
-   using GMP by hand, and equally tedious from a package since autoconf and
-   automake don't give much help.
-
-   __GMP_DECLSPEC is required on all documented global functions and
-   variables, the various internals in gmp-impl.h etc can be left unadorned.
-   But internals used by the test programs or speed measuring programs
-   should have __GMP_DECLSPEC, and certainly constants or variables must
-   have it or the wrong address will be resolved.
-
-   In gcc __declspec can go at either the start or end of a prototype.
-
-   In Microsoft C __declspec must go at the start, or after the type like
-   void __declspec(...) *foo()".  There's no __dllexport or anything to
-   guard against someone foolish #defining dllexport.  _export used to be
-   available, but no longer.
-
-   In Borland C _export still exists, but needs to go after the type, like
-   "void _export foo();".  Would have to change the __GMP_DECLSPEC syntax to
-   make use of that.  Probably more trouble than it's worth.  */
-
-#if defined (__GNUC__)
-#define __GMP_DECLSPEC_EXPORT  __declspec(__dllexport__)
-#define __GMP_DECLSPEC_IMPORT  __declspec(__dllimport__)
-#endif
-#if defined (_MSC_VER) || defined (__BORLANDC__)
-#define __GMP_DECLSPEC_EXPORT  __declspec(dllexport)
-#define __GMP_DECLSPEC_IMPORT  __declspec(dllimport)
-#endif
-#ifdef __WATCOMC__
-#define __GMP_DECLSPEC_EXPORT  __export
-#define __GMP_DECLSPEC_IMPORT  __import
-#endif
-#ifdef __IBMC__
-#define __GMP_DECLSPEC_EXPORT  _Export
-#define __GMP_DECLSPEC_IMPORT  _Import
-#endif
-
-#if __GMP_LIBGMP_DLL
-#if __GMP_WITHIN_GMP
-/* compiling to go into a DLL libgmp */
-#define __GMP_DECLSPEC  __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into an application which will link to a DLL libgmp */
-#define __GMP_DECLSPEC  __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC
-#endif
-
-
-#ifdef __GMP_SHORT_LIMB
-typedef unsigned int           mp_limb_t;
-typedef int                    mp_limb_signed_t;
-#else
-#ifdef _LONG_LONG_LIMB
-typedef unsigned long long int mp_limb_t;
-typedef long long int          mp_limb_signed_t;
-#else
-typedef unsigned long int      mp_limb_t;
-typedef long int               mp_limb_signed_t;
-#endif
-#endif
-typedef unsigned long int      mp_bitcnt_t;
-
-/* For reference, note that the name __mpz_struct gets into C++ mangled
-   function names, which means although the "__" suggests an internal, we
-   must leave this name for binary compatibility.  */
-typedef struct
-{
-  int _mp_alloc;               /* Number of *limbs* allocated and pointed
-                                  to by the _mp_d field.  */
-  int _mp_size;                        /* abs(_mp_size) is the number of limbs the
-                                  last field points to.  If _mp_size is
-                                  negative this is a negative number.  */
-  mp_limb_t *_mp_d;            /* Pointer to the limbs.  */
-} __mpz_struct;
-
-#endif /* __GNU_MP__ */
-
-
-typedef __mpz_struct MP_INT;    /* gmp 1 source compatibility */
-typedef __mpz_struct mpz_t[1];
-
-typedef mp_limb_t *            mp_ptr;
-typedef __gmp_const mp_limb_t *        mp_srcptr;
-#if defined (_CRAY) && ! defined (_CRAYMPP)
-/* plain `int' is much faster (48 bits) */
-#define __GMP_MP_SIZE_T_INT     1
-typedef int                    mp_size_t;
-typedef int                    mp_exp_t;
-#else
-#define __GMP_MP_SIZE_T_INT     0
-typedef long int               mp_size_t;
-typedef long int               mp_exp_t;
-#endif
-
-typedef struct
-{
-  __mpz_struct _mp_num;
-  __mpz_struct _mp_den;
-} __mpq_struct;
-
-typedef __mpq_struct MP_RAT;    /* gmp 1 source compatibility */
-typedef __mpq_struct mpq_t[1];
-
-typedef struct
-{
-  int _mp_prec;                        /* Max precision, in number of `mp_limb_t's.
-                                  Set by mpf_init and modified by
-                                  mpf_set_prec.  The area pointed to by the
-                                  _mp_d field contains `prec' + 1 limbs.  */
-  int _mp_size;                        /* abs(_mp_size) is the number of limbs the
-                                  last field points to.  If _mp_size is
-                                  negative this is a negative number.  */
-  mp_exp_t _mp_exp;            /* Exponent, in the base of `mp_limb_t'.  */
-  mp_limb_t *_mp_d;            /* Pointer to the limbs.  */
-} __mpf_struct;
-
-/* typedef __mpf_struct MP_FLOAT; */
-typedef __mpf_struct mpf_t[1];
-
-/* Available random number generation algorithms.  */
-typedef enum
-{
-  GMP_RAND_ALG_DEFAULT = 0,
-  GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential.  */
-} gmp_randalg_t;
-
-/* Random state struct.  */
-typedef struct
-{
-  mpz_t _mp_seed;        /* _mp_d member points to state of the generator. */
-  gmp_randalg_t _mp_alg;  /* Currently unused. */
-  union {
-    void *_mp_lc;         /* Pointer to function pointers structure.  */
-  } _mp_algdata;
-} __gmp_randstate_struct;
-typedef __gmp_randstate_struct gmp_randstate_t[1];
-
-/* Types for function declarations in gmp files.  */
-/* ??? Should not pollute user name space with these ??? */
-typedef __gmp_const __mpz_struct *mpz_srcptr;
-typedef __mpz_struct *mpz_ptr;
-typedef __gmp_const __mpf_struct *mpf_srcptr;
-typedef __mpf_struct *mpf_ptr;
-typedef __gmp_const __mpq_struct *mpq_srcptr;
-typedef __mpq_struct *mpq_ptr;
-
-
-/* This is not wanted in mp.h, so put it outside the __GNU_MP__ common
-   section. */
-#if __GMP_LIBGMP_DLL
-#if __GMP_WITHIN_GMPXX
-/* compiling to go into a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into a application which will link to a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC_XX
-#endif
-
-
-#if __GMP_HAVE_PROTOTYPES
-#define __GMP_PROTO(x) x
-#else
-#define __GMP_PROTO(x) ()
-#endif
-
-#ifndef __MPN
-#if __GMP_HAVE_TOKEN_PASTE
-#define __MPN(x) __gmpn_##x
-#else
-#define __MPN(x) __gmpn_/**/x
-#endif
-#endif
-
-/* For reference, "defined(EOF)" cannot be used here.  In g++ 2.95.4,
-   <iostream> defines EOF but not FILE.  */
-#if defined (FILE)                                              \
-  || defined (H_STDIO)                                          \
-  || defined (_H_STDIO)               /* AIX */                 \
-  || defined (_STDIO_H)               /* glibc, Sun, SCO */     \
-  || defined (_STDIO_H_)              /* BSD, OSF */            \
-  || defined (__STDIO_H)              /* Borland */             \
-  || defined (__STDIO_H__)            /* IRIX */                \
-  || defined (_STDIO_INCLUDED)        /* HPUX */                \
-  || defined (__dj_include_stdio_h_)  /* DJGPP */               \
-  || defined (_FILE_DEFINED)          /* Microsoft */           \
-  || defined (__STDIO__)              /* Apple MPW MrC */       \
-  || defined (_MSL_STDIO_H)           /* Metrowerks */          \
-  || defined (_STDIO_H_INCLUDED)      /* QNX4 */               \
-  || defined (_ISO_STDIO_ISO_H)       /* Sun C++ */
-#define _GMP_H_HAVE_FILE 1
-#endif
-
-/* In ISO C, if a prototype involving "struct obstack *" is given without
-   that structure defined, then the struct is scoped down to just the
-   prototype, causing a conflict if it's subsequently defined for real.  So
-   only give prototypes if we've got obstack.h.  */
-#if defined (_OBSTACK_H)   /* glibc <obstack.h> */
-#define _GMP_H_HAVE_OBSTACK 1
-#endif
-
-/* The prototypes for gmp_vprintf etc are provided only if va_list is
-   available, via an application having included <stdarg.h> or <varargs.h>.
-   Usually va_list is a typedef so can't be tested directly, but C99
-   specifies that va_start is a macro (and it was normally a macro on past
-   systems too), so look for that.
-
-   <stdio.h> will define some sort of va_list for vprintf and vfprintf, but
-   let's not bother trying to use that since it's not standard and since
-   application uses for gmp_vprintf etc will almost certainly require the
-   whole <stdarg.h> or <varargs.h> anyway.  */
-
-#ifdef va_start
-#define _GMP_H_HAVE_VA_LIST 1
-#endif
-
-/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
-#if defined (__GNUC__) && defined (__GNUC_MINOR__)
-#define __GMP_GNUC_PREREQ(maj, min) \
-  ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-#else
-#define __GMP_GNUC_PREREQ(maj, min)  0
-#endif
-
-/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes".  Basically
-   it means a function does nothing but examine its arguments and memory
-   (global or via arguments) to generate a return value, but changes nothing
-   and has no side-effects.  __GMP_NO_ATTRIBUTE_CONST_PURE lets
-   tune/common.c etc turn this off when trying to write timing loops.  */
-#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE)
-#define __GMP_ATTRIBUTE_PURE   __attribute__ ((__pure__))
-#else
-#define __GMP_ATTRIBUTE_PURE
-#endif
-
-
-/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean
-   to "g++ -Wold-style-cast".
-
-   Casts in "extern inline" code within an extern "C" block don't induce
-   these warnings, so __GMP_CAST only needs to be used on documented
-   macros.  */
-
-#ifdef __cplusplus
-#define __GMP_CAST(type, expr)  (static_cast<type> (expr))
-#else
-#define __GMP_CAST(type, expr)  ((type) (expr))
-#endif
-
-
-/* An empty "throw ()" means the function doesn't throw any C++ exceptions,
-   this can save some stack frame info in applications.
-
-   Currently it's given only on functions which never divide-by-zero etc,
-   don't allocate memory, and are expected to never need to allocate memory.
-   This leaves open the possibility of a C++ throw from a future GMP
-   exceptions scheme.
-
-   mpz_set_ui etc are omitted to leave open the lazy allocation scheme
-   described in doc/tasks.html.  mpz_get_d etc are omitted to leave open
-   exceptions for float overflows.
-
-   Note that __GMP_NOTHROW must be given on any inlines the same as on their
-   prototypes (for g++ at least, where they're used together).  Note also
-   that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like
-   __GMP_ATTRIBUTE_PURE.  */
-
-#if defined (__cplusplus)
-#define __GMP_NOTHROW  throw ()
-#else
-#define __GMP_NOTHROW
-#endif
-
-
-/* PORTME: What other compilers have a useful "extern inline"?  "static
-   inline" would be an acceptable substitute if the compiler (or linker)
-   discards unused statics.  */
-
- /* gcc has __inline__ in all modes, including strict ansi.  Give a prototype
-    for an inline too, so as to correctly specify "dllimport" on windows, in
-    case the function is called rather than inlined.
-    GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
-    inline semantics, unless -fgnu89-inline is used.  */
-#ifdef __GNUC__
-#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2)
-#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
-#else
-#define __GMP_EXTERN_INLINE      extern __inline__
-#endif
-#define __GMP_INLINE_PROTOTYPES  1
-#endif
-
-/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1
-   strict ANSI mode.  Inlining is done even when not optimizing (ie. -O0
-   mode, which is the default), but an unnecessary local copy of foo is
-   emitted unless -O is used.  "extern __inline" is accepted, but the
-   "extern" appears to be ignored, ie. it becomes a plain global function
-   but which is inlined within its file.  Don't know if all old versions of
-   DEC C supported __inline, but as a start let's do the right thing for
-   current versions.  */
-#ifdef __DECC
-#define __GMP_EXTERN_INLINE  static __inline
-#endif
-
-/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict
-   ANSI mode (__STDC__ is 1 in that mode).  Inlining only actually takes
-   place under -O.  Without -O "foo" seems to be emitted whether it's used
-   or not, which is wasteful.  "extern inline foo()" isn't useful, the
-   "extern" is apparently ignored, so foo is inlined if possible but also
-   emitted as a global, which causes multiple definition errors when
-   building a shared libgmp.  */
-#ifdef __SCO_VERSION__
-#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  static inline
-#endif
-#endif
-
-/* Microsoft's C compiler accepts __inline */
-#ifdef _MSC_VER
-#define __GMP_EXTERN_INLINE  __inline
-#endif
-
-/* Recent enough Sun C compilers want "inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  inline
-#endif
-
-/* Somewhat older Sun C compilers want "static inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  static inline
-#endif
-
-
-/* C++ always has "inline" and since it's a normal feature the linker should
-   discard duplicate non-inlined copies, or if it doesn't then that's a
-   problem for everyone, not just GMP.  */
-#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  inline
-#endif
-
-/* Don't do any inlining within a configure run, since if the compiler ends
-   up emitting copies of the code into the object file it can end up
-   demanding the various support routines (like mpn_popcount) for linking,
-   making the "alloca" test and perhaps others fail.  And on hppa ia64 a
-   pre-release gcc 3.2 was seen not respecting the "extern" in "extern
-   __inline__", triggering this problem too.  */
-#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE
-#undef __GMP_EXTERN_INLINE
-#endif
-
-/* By default, don't give a prototype when there's going to be an inline
-   version.  Note in particular that Cray C++ objects to the combination of
-   prototype and inline.  */
-#ifdef __GMP_EXTERN_INLINE
-#ifndef __GMP_INLINE_PROTOTYPES
-#define __GMP_INLINE_PROTOTYPES  0
-#endif
-#else
-#define __GMP_INLINE_PROTOTYPES  1
-#endif
-
-
-#define __GMP_ABS(x)   ((x) >= 0 ? (x) : -(x))
-#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i))
-
-/* __GMP_USHRT_MAX is not "~ (unsigned short) 0" because short is promoted
-   to int by "~".  */
-#define __GMP_UINT_MAX   (~ (unsigned) 0)
-#define __GMP_ULONG_MAX  (~ (unsigned long) 0)
-#define __GMP_USHRT_MAX  ((unsigned short) ~0)
-
-
-/* __builtin_expect is in gcc 3.0, and not in 2.95. */
-#if __GMP_GNUC_PREREQ (3,0)
-#define __GMP_LIKELY(cond)    __builtin_expect ((cond) != 0, 1)
-#define __GMP_UNLIKELY(cond)  __builtin_expect ((cond) != 0, 0)
-#else
-#define __GMP_LIKELY(cond)    (cond)
-#define __GMP_UNLIKELY(cond)  (cond)
-#endif
-
-#ifdef _CRAY
-#define __GMP_CRAY_Pragma(str)  _Pragma (str)
-#else
-#define __GMP_CRAY_Pragma(str)
-#endif
-
-
-/* Allow direct user access to numerator and denominator of a mpq_t object.  */
-#define mpq_numref(Q) (&((Q)->_mp_num))
-#define mpq_denref(Q) (&((Q)->_mp_den))
-
-
-#if defined (__cplusplus)
-extern "C" {
-using std::FILE;
-#endif
-
-#define mp_set_memory_functions __gmp_set_memory_functions
-__GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t),
-                                     void *(*) (void *, size_t, size_t),
-                                     void (*) (void *, size_t))) __GMP_NOTHROW;
-
-#define mp_get_memory_functions __gmp_get_memory_functions
-__GMP_DECLSPEC void mp_get_memory_functions __GMP_PROTO ((void *(**) (size_t),
-                                      void *(**) (void *, size_t, size_t),
-                                      void (**) (void *, size_t))) __GMP_NOTHROW;
-
-#define mp_bits_per_limb __gmp_bits_per_limb
-__GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb;
-
-#define gmp_errno __gmp_errno
-__GMP_DECLSPEC extern int gmp_errno;
-
-#define gmp_version __gmp_version
-__GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version;
-
-
-/**************** Random number routines.  ****************/
-
-/* obsolete */
-#define gmp_randinit __gmp_randinit
-__GMP_DECLSPEC void gmp_randinit __GMP_PROTO ((gmp_randstate_t, gmp_randalg_t, ...));
-
-#define gmp_randinit_default __gmp_randinit_default
-__GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp
-__GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t,
-                                                      mpz_srcptr, unsigned long int,
-                                                      mp_bitcnt_t));
-
-#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size
-__GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, mp_bitcnt_t));
-
-#define gmp_randinit_mt __gmp_randinit_mt
-__GMP_DECLSPEC void gmp_randinit_mt __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_randinit_set __gmp_randinit_set
-__GMP_DECLSPEC void gmp_randinit_set __GMP_PROTO ((gmp_randstate_t, __gmp_const __gmp_randstate_struct *));
-
-#define gmp_randseed __gmp_randseed
-__GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr));
-
-#define gmp_randseed_ui __gmp_randseed_ui
-__GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, unsigned long int));
-
-#define gmp_randclear __gmp_randclear
-__GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_urandomb_ui __gmp_urandomb_ui
-__GMP_DECLSPEC unsigned long gmp_urandomb_ui __GMP_PROTO ((gmp_randstate_t, unsigned long));
-
-#define gmp_urandomm_ui __gmp_urandomm_ui
-__GMP_DECLSPEC unsigned long gmp_urandomm_ui __GMP_PROTO ((gmp_randstate_t, unsigned long));
-
-
-/**************** Formatted output routines.  ****************/
-
-#define gmp_asprintf __gmp_asprintf
-__GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, __gmp_const char *, ...));
-
-#define gmp_fprintf __gmp_fprintf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, __gmp_const char *, ...));
-#endif
-
-#define gmp_obstack_printf __gmp_obstack_printf
-#if defined (_GMP_H_HAVE_OBSTACK)
-__GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, __gmp_const char *, ...));
-#endif
-
-#define gmp_obstack_vprintf __gmp_obstack_vprintf
-#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_printf __gmp_printf
-__GMP_DECLSPEC int gmp_printf __GMP_PROTO ((__gmp_const char *, ...));
-
-#define gmp_snprintf __gmp_snprintf
-__GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, ...));
-
-#define gmp_sprintf __gmp_sprintf
-__GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, __gmp_const char *, ...));
-
-#define gmp_vasprintf __gmp_vasprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vfprintf __gmp_vfprintf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vprintf __gmp_vprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((__gmp_const char *, va_list));
-#endif
-
-#define gmp_vsnprintf __gmp_vsnprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vsprintf __gmp_vsprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, __gmp_const char *, va_list));
-#endif
-
-
-/**************** Formatted input routines.  ****************/
-
-#define gmp_fscanf __gmp_fscanf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, __gmp_const char *, ...));
-#endif
-
-#define gmp_scanf __gmp_scanf
-__GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((__gmp_const char *, ...));
-
-#define gmp_sscanf __gmp_sscanf
-__GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, ...));
-
-#define gmp_vfscanf __gmp_vfscanf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vscanf __gmp_vscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((__gmp_const char *, va_list));
-#endif
-
-#define gmp_vsscanf __gmp_vsscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, va_list));
-#endif
-
-
-/**************** Integer (i.e. Z) routines.  ****************/
-
-#define _mpz_realloc __gmpz_realloc
-#define mpz_realloc __gmpz_realloc
-__GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_abs __gmpz_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)
-__GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-#endif
-
-#define mpz_add __gmpz_add
-__GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_add_ui __gmpz_add_ui
-__GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_addmul __gmpz_addmul
-__GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_addmul_ui __gmpz_addmul_ui
-__GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_and __gmpz_and
-__GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_array_init __gmpz_array_init
-__GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t));
-
-#define mpz_bin_ui __gmpz_bin_ui
-__GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_bin_uiui __gmpz_bin_uiui
-__GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int));
-
-#define mpz_cdiv_q __gmpz_cdiv_q
-__GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp
-__GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_qr __gmpz_cdiv_qr
-__GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_r __gmpz_cdiv_r
-__GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp
-__GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_ui __gmpz_cdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_clear __gmpz_clear
-__GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr));
-
-#define mpz_clears __gmpz_clears
-__GMP_DECLSPEC void mpz_clears __GMP_PROTO ((mpz_ptr, ...));
-
-#define mpz_clrbit __gmpz_clrbit
-__GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_cmp __gmpz_cmp
-__GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmp_d __gmpz_cmp_d
-__GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_si __gmpz_cmp_si
-__GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_ui __gmpz_cmp_ui
-__GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs __gmpz_cmpabs
-__GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_d __gmpz_cmpabs_d
-__GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_ui __gmpz_cmpabs_ui
-__GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_com __gmpz_com
-__GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_combit __gmpz_combit
-__GMP_DECLSPEC void mpz_combit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_congruent_p __gmpz_congruent_p
-__GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p
-__GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_ui_p __gmpz_congruent_ui_p
-__GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divexact __gmpz_divexact
-__GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_divexact_ui __gmpz_divexact_ui
-__GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_divisible_p __gmpz_divisible_p
-__GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_ui_p __gmpz_divisible_ui_p
-__GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p
-__GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_dump __gmpz_dump
-__GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr));
-
-#define mpz_export __gmpz_export
-__GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr));
-
-#define mpz_fac_ui __gmpz_fac_ui
-__GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_fdiv_q __gmpz_fdiv_q
-__GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
-__GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_qr __gmpz_fdiv_qr
-__GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_r __gmpz_fdiv_r
-__GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
-__GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_ui __gmpz_fdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fib_ui __gmpz_fib_ui
-__GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_fib2_ui __gmpz_fib2_ui
-__GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int));
-
-#define mpz_fits_sint_p __gmpz_fits_sint_p
-__GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_slong_p __gmpz_fits_slong_p
-__GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_sshort_p __gmpz_fits_sshort_p
-__GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_uint_p __gmpz_fits_uint_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ulong_p __gmpz_fits_ulong_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ushort_p __gmpz_fits_ushort_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_gcd __gmpz_gcd
-__GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_gcd_ui __gmpz_gcd_ui
-__GMP_DECLSPEC unsigned long int mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_gcdext __gmpz_gcdext
-__GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_get_d __gmpz_get_d
-__GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_d_2exp __gmpz_get_d_2exp
-__GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((signed long int *, mpz_srcptr));
-
-#define mpz_get_si __gmpz_get_si
-__GMP_DECLSPEC /* signed */ long int mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_str __gmpz_get_str
-__GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr));
-
-#define mpz_get_ui __gmpz_get_ui
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)
-__GMP_DECLSPEC unsigned long int mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_getlimbn __gmpz_getlimbn
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_hamdist __gmpz_hamdist
-__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_import __gmpz_import
-__GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, __gmp_const void *));
-
-#define mpz_init __gmpz_init
-__GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr));
-
-#define mpz_init2 __gmpz_init2
-__GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_inits __gmpz_inits
-__GMP_DECLSPEC void mpz_inits __GMP_PROTO ((mpz_ptr, ...));
-
-#define mpz_init_set __gmpz_init_set
-__GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_init_set_d __gmpz_init_set_d
-__GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double));
-
-#define mpz_init_set_si __gmpz_init_set_si
-__GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, signed long int));
-
-#define mpz_init_set_str __gmpz_init_set_str
-__GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int));
-
-#define mpz_init_set_ui __gmpz_init_set_ui
-__GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_inp_raw __gmpz_inp_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *));
-#endif
-
-#define mpz_inp_str __gmpz_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int));
-#endif
-
-#define mpz_invert __gmpz_invert
-__GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_ior __gmpz_ior
-__GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_jacobi __gmpz_jacobi
-__GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker mpz_jacobi  /* alias */
-
-#define mpz_kronecker_si __gmpz_kronecker_si
-__GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker_ui __gmpz_kronecker_ui
-__GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_si_kronecker __gmpz_si_kronecker
-__GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_kronecker __gmpz_ui_kronecker
-__GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((unsigned long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_lcm __gmpz_lcm
-__GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_lcm_ui __gmpz_lcm_ui
-__GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_legendre mpz_jacobi  /* alias */
-
-#define mpz_lucnum_ui __gmpz_lucnum_ui
-__GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_lucnum2_ui __gmpz_lucnum2_ui
-__GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int));
-
-#define mpz_millerrabin __gmpz_millerrabin
-__GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_mod __gmpz_mod
-__GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */
-
-#define mpz_mul __gmpz_mul
-__GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_mul_2exp __gmpz_mul_2exp
-__GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_mul_si __gmpz_mul_si
-__GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, long int));
-
-#define mpz_mul_ui __gmpz_mul_ui
-__GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_neg __gmpz_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)
-__GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-#endif
-
-#define mpz_nextprime __gmpz_nextprime
-__GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_out_raw __gmpz_out_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr));
-#endif
-
-#define mpz_out_str __gmpz_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr));
-#endif
-
-#define mpz_perfect_power_p __gmpz_perfect_power_p
-__GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_perfect_square_p __gmpz_perfect_square_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_popcount __gmpz_popcount
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_pow_ui __gmpz_pow_ui
-__GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_powm __gmpz_powm
-__GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_powm_sec __gmpz_powm_sec
-__GMP_DECLSPEC void mpz_powm_sec __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_powm_ui __gmpz_powm_ui
-__GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr));
-
-#define mpz_probab_prime_p __gmpz_probab_prime_p
-__GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_random __gmpz_random
-__GMP_DECLSPEC void mpz_random __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_random2 __gmpz_random2
-__GMP_DECLSPEC void mpz_random2 __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_realloc2 __gmpz_realloc2
-__GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_remove __gmpz_remove
-__GMP_DECLSPEC unsigned long int mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_root __gmpz_root
-__GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_rootrem __gmpz_rootrem
-__GMP_DECLSPEC void mpz_rootrem __GMP_PROTO ((mpz_ptr,mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_rrandomb __gmpz_rrandomb
-__GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
-
-#define mpz_scan0 __gmpz_scan0
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_scan1 __gmpz_scan1
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_set __gmpz_set
-__GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_set_d __gmpz_set_d
-__GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double));
-
-#define mpz_set_f __gmpz_set_f
-__GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr));
-
-#define mpz_set_q __gmpz_set_q
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)
-__GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-#endif
-
-#define mpz_set_si __gmpz_set_si
-__GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, signed long int));
-
-#define mpz_set_str __gmpz_set_str
-__GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int));
-
-#define mpz_set_ui __gmpz_set_ui
-__GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_setbit __gmpz_setbit
-__GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_size __gmpz_size
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)
-__GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_sizeinbase __gmpz_sizeinbase
-__GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_sqrt __gmpz_sqrt
-__GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_sqrtrem __gmpz_sqrtrem
-__GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr));
-
-#define mpz_sub __gmpz_sub
-__GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_sub_ui __gmpz_sub_ui
-__GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_ui_sub __gmpz_ui_sub
-__GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, unsigned long int, mpz_srcptr));
-
-#define mpz_submul __gmpz_submul
-__GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_submul_ui __gmpz_submul_ui
-__GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_swap __gmpz_swap
-__GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW;
-
-#define mpz_tdiv_ui __gmpz_tdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_tdiv_q __gmpz_tdiv_q
-__GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
-__GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tdiv_qr __gmpz_tdiv_qr
-__GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tdiv_r __gmpz_tdiv_r
-__GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
-__GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tstbit __gmpz_tstbit
-__GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_pow_ui __gmpz_ui_pow_ui
-__GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int));
-
-#define mpz_urandomb __gmpz_urandomb
-__GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
-
-#define mpz_urandomm __gmpz_urandomm
-__GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr));
-
-#define mpz_xor __gmpz_xor
-#define mpz_eor __gmpz_xor
-__GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-
-/**************** Rational (i.e. Q) routines.  ****************/
-
-#define mpq_abs __gmpq_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)
-__GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-#endif
-
-#define mpq_add __gmpq_add
-__GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_canonicalize __gmpq_canonicalize
-__GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr));
-
-#define mpq_clear __gmpq_clear
-__GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr));
-
-#define mpq_clears __gmpq_clears
-__GMP_DECLSPEC void mpq_clears __GMP_PROTO ((mpq_ptr, ...));
-
-#define mpq_cmp __gmpq_cmp
-__GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_si __gmpq_cmp_si
-__GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, long, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_ui __gmpq_cmp_ui
-__GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, unsigned long int, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_div __gmpq_div
-__GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_div_2exp __gmpq_div_2exp
-__GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t));
-
-#define mpq_equal __gmpq_equal
-__GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_num __gmpq_get_num
-__GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-
-#define mpq_get_den __gmpq_get_den
-__GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-
-#define mpq_get_d __gmpq_get_d
-__GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_str __gmpq_get_str
-__GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr));
-
-#define mpq_init __gmpq_init
-__GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr));
-
-#define mpq_inits __gmpq_inits
-__GMP_DECLSPEC void mpq_inits __GMP_PROTO ((mpq_ptr, ...));
-
-#define mpq_inp_str __gmpq_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int));
-#endif
-
-#define mpq_inv __gmpq_inv
-__GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-
-#define mpq_mul __gmpq_mul
-__GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_mul_2exp __gmpq_mul_2exp
-__GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t));
-
-#define mpq_neg __gmpq_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)
-__GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-#endif
-
-#define mpq_out_str __gmpq_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr));
-#endif
-
-#define mpq_set __gmpq_set
-__GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-
-#define mpq_set_d __gmpq_set_d
-__GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double));
-
-#define mpq_set_den __gmpq_set_den
-__GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_set_f __gmpq_set_f
-__GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr));
-
-#define mpq_set_num __gmpq_set_num
-__GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_set_si __gmpq_set_si
-__GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, signed long int, unsigned long int));
-
-#define mpq_set_str __gmpq_set_str
-__GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, __gmp_const char *, int));
-
-#define mpq_set_ui __gmpq_set_ui
-__GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, unsigned long int, unsigned long int));
-
-#define mpq_set_z __gmpq_set_z
-__GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_sub __gmpq_sub
-__GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_swap __gmpq_swap
-__GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW;
-
-
-/**************** Float (i.e. F) routines.  ****************/
-
-#define mpf_abs __gmpf_abs
-__GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_add __gmpf_add
-__GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_add_ui __gmpf_add_ui
-__GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-#define mpf_ceil __gmpf_ceil
-__GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_clear __gmpf_clear
-__GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr));
-
-#define mpf_clears __gmpf_clears
-__GMP_DECLSPEC void mpf_clears __GMP_PROTO ((mpf_ptr, ...));
-
-#define mpf_cmp __gmpf_cmp
-__GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_d __gmpf_cmp_d
-__GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_si __gmpf_cmp_si
-__GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_ui __gmpf_cmp_ui
-__GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_div __gmpf_div
-__GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_div_2exp __gmpf_div_2exp
-__GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t));
-
-#define mpf_div_ui __gmpf_div_ui
-__GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_dump __gmpf_dump
-__GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr));
-
-#define mpf_eq __gmpf_eq
-__GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sint_p __gmpf_fits_sint_p
-__GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_slong_p __gmpf_fits_slong_p
-__GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sshort_p __gmpf_fits_sshort_p
-__GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_uint_p __gmpf_fits_uint_p
-__GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ulong_p __gmpf_fits_ulong_p
-__GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ushort_p __gmpf_fits_ushort_p
-__GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_floor __gmpf_floor
-__GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_get_d __gmpf_get_d
-__GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_d_2exp __gmpf_get_d_2exp
-__GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((signed long int *, mpf_srcptr));
-
-#define mpf_get_default_prec __gmpf_get_default_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_prec __gmpf_get_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_si __gmpf_get_si
-__GMP_DECLSPEC long mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_str __gmpf_get_str
-__GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr));
-
-#define mpf_get_ui __gmpf_get_ui
-__GMP_DECLSPEC unsigned long mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_init __gmpf_init
-__GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr));
-
-#define mpf_init2 __gmpf_init2
-__GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, mp_bitcnt_t));
-
-#define mpf_inits __gmpf_inits
-__GMP_DECLSPEC void mpf_inits __GMP_PROTO ((mpf_ptr, ...));
-
-#define mpf_init_set __gmpf_init_set
-__GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_init_set_d __gmpf_init_set_d
-__GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double));
-
-#define mpf_init_set_si __gmpf_init_set_si
-__GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, signed long int));
-
-#define mpf_init_set_str __gmpf_init_set_str
-__GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int));
-
-#define mpf_init_set_ui __gmpf_init_set_ui
-__GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_inp_str __gmpf_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int));
-#endif
-
-#define mpf_integer_p __gmpf_integer_p
-__GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_mul __gmpf_mul
-__GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_mul_2exp __gmpf_mul_2exp
-__GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t));
-
-#define mpf_mul_ui __gmpf_mul_ui
-__GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_neg __gmpf_neg
-__GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_out_str __gmpf_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr));
-#endif
-
-#define mpf_pow_ui __gmpf_pow_ui
-__GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_random2 __gmpf_random2
-__GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t));
-
-#define mpf_reldiff __gmpf_reldiff
-__GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_set __gmpf_set
-__GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_set_d __gmpf_set_d
-__GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double));
-
-#define mpf_set_default_prec __gmpf_set_default_prec
-__GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((mp_bitcnt_t)) __GMP_NOTHROW;
-
-#define mpf_set_prec __gmpf_set_prec
-__GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, mp_bitcnt_t));
-
-#define mpf_set_prec_raw __gmpf_set_prec_raw
-__GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)) __GMP_NOTHROW;
-
-#define mpf_set_q __gmpf_set_q
-__GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr));
-
-#define mpf_set_si __gmpf_set_si
-__GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, signed long int));
-
-#define mpf_set_str __gmpf_set_str
-__GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int));
-
-#define mpf_set_ui __gmpf_set_ui
-__GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_set_z __gmpf_set_z
-__GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr));
-
-#define mpf_size __gmpf_size
-__GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_sqrt __gmpf_sqrt
-__GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_sqrt_ui __gmpf_sqrt_ui
-__GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_sub __gmpf_sub
-__GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_sub_ui __gmpf_sub_ui
-__GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_swap __gmpf_swap
-__GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW;
-
-#define mpf_trunc __gmpf_trunc
-__GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_ui_div __gmpf_ui_div
-__GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-
-#define mpf_ui_sub __gmpf_ui_sub
-__GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-
-#define mpf_urandomb __gmpf_urandomb
-__GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, mp_bitcnt_t));
-
-
-/************ Low level positive-integer (i.e. N) routines.  ************/
-
-/* This is ugly, but we need to make user calls reach the prefixed function. */
-
-#define mpn_add __MPN(add)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)
-__GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-#endif
-
-#define mpn_add_1 __MPN(add_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)
-__GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW;
-#endif
-
-#define mpn_add_n __MPN(add_n)
-__GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_addmul_1 __MPN(addmul_1)
-__GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_cmp __MPN(cmp)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)
-__GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpn_divexact_by3(dst,src,size) \
-  mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))
-
-#define mpn_divexact_by3c __MPN(divexact_by3c)
-__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_divmod_1(qp,np,nsize,dlimb) \
-  mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)
-
-#define mpn_divrem __MPN(divrem)
-__GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_divrem_1 __MPN(divrem_1)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_divrem_2 __MPN(divrem_2)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr));
-
-#define mpn_gcd __MPN(gcd)
-__GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-
-#define mpn_gcd_1 __MPN(gcd_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_gcdext_1 __MPN(gcdext_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 __GMP_PROTO ((mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t));
-
-#define mpn_gcdext __MPN(gcdext)
-__GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-
-#define mpn_get_str __MPN(get_str)
-__GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t));
-
-#define mpn_hamdist __MPN(hamdist)
-__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_lshift __MPN(lshift)
-__GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-
-#define mpn_mod_1 __MPN(mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_mul __MPN(mul)
-__GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_mul_1 __MPN(mul_1)
-__GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_mul_n __MPN(mul_n)
-__GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_sqr __MPN(sqr)
-__GMP_DECLSPEC void mpn_sqr __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-
-#define mpn_neg __MPN(neg)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)
-__GMP_DECLSPEC mp_limb_t mpn_neg __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#endif
-
-#define mpn_com __MPN(com)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_com)
-__GMP_DECLSPEC void mpn_com __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#endif
-
-#define mpn_perfect_square_p __MPN(perfect_square_p)
-__GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_perfect_power_p __MPN(perfect_power_p)
-__GMP_DECLSPEC int mpn_perfect_power_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_popcount __MPN(popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_pow_1 __MPN(pow_1)
-__GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr));
-
-/* undocumented now, but retained here for upward compatibility */
-#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_random __MPN(random)
-__GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t));
-
-#define mpn_random2 __MPN(random2)
-__GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t));
-
-#define mpn_rshift __MPN(rshift)
-__GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-
-#define mpn_scan0 __MPN(scan0)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_scan1 __MPN(scan1)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_set_str __MPN(set_str)
-__GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int));
-
-#define mpn_sqrtrem __MPN(sqrtrem)
-__GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t));
-
-#define mpn_sub __MPN(sub)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)
-__GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-#endif
-
-#define mpn_sub_1 __MPN(sub_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)
-__GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW;
-#endif
-
-#define mpn_sub_n __MPN(sub_n)
-__GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_submul_1 __MPN(submul_1)
-__GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_tdiv_qr __MPN(tdiv_qr)
-__GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_and_n __MPN(and_n)
-__GMP_DECLSPEC void mpn_and_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_andn_n __MPN(andn_n)
-__GMP_DECLSPEC void mpn_andn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nand_n __MPN(nand_n)
-__GMP_DECLSPEC void mpn_nand_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_ior_n __MPN(ior_n)
-__GMP_DECLSPEC void mpn_ior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_iorn_n __MPN(iorn_n)
-__GMP_DECLSPEC void mpn_iorn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nior_n __MPN(nior_n)
-__GMP_DECLSPEC void mpn_nior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xor_n __MPN(xor_n)
-__GMP_DECLSPEC void mpn_xor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xnor_n __MPN(xnor_n)
-__GMP_DECLSPEC void mpn_xnor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_copyi __MPN(copyi)
-__GMP_DECLSPEC void mpn_copyi __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_copyd __MPN(copyd)
-__GMP_DECLSPEC void mpn_copyd __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_zero __MPN(zero)
-__GMP_DECLSPEC void mpn_zero __GMP_PROTO ((mp_ptr, mp_size_t));
-
-/**************** mpz inlines ****************/
-
-/* The following are provided as inlines where possible, but always exist as
-   library functions too, for binary compatibility.
-
-   Within gmp itself this inlining generally isn't relied on, since it
-   doesn't get done for all compilers, whereas if something is worth
-   inlining then it's worth arranging always.
-
-   There are two styles of inlining here.  When the same bit of code is
-   wanted for the inline as for the library version, then __GMP_FORCE_foo
-   arranges for that code to be emitted and the __GMP_EXTERN_INLINE
-   directive suppressed, eg. mpz_fits_uint_p.  When a different bit of code
-   is wanted for the inline than for the library version, then
-   __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs.  */
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs)
-__GMP_EXTERN_INLINE void
-mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpz_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size);
-}
-#endif
-
-#if GMP_NAIL_BITS == 0
-#define __GMPZ_FITS_UTYPE_P(z,maxval)                                  \
-  mp_size_t  __gmp_n = z->_mp_size;                                    \
-  mp_ptr  __gmp_p = z->_mp_d;                                          \
-  return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval));
-#else
-#define __GMPZ_FITS_UTYPE_P(z,maxval)                                  \
-  mp_size_t  __gmp_n = z->_mp_size;                                    \
-  mp_ptr  __gmp_p = z->_mp_d;                                          \
-  return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)       \
-         || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS)));
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p)
-#if ! defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui)
-#if ! defined (__GMP_FORCE_mpz_get_ui)
-__GMP_EXTERN_INLINE
-#endif
-unsigned long
-mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  mp_ptr __gmp_p = __gmp_z->_mp_d;
-  mp_size_t __gmp_n = __gmp_z->_mp_size;
-  mp_limb_t __gmp_l = __gmp_p[0];
-  /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings
-     about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland
-     C++ 6.0 warnings about condition always true for something like
-     "__GMP_ULONG_MAX < GMP_NUMB_MASK".  */
-#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB)
-  /* limb==long and no nails, or limb==longlong, one limb is enough */
-  return (__gmp_n != 0 ? __gmp_l : 0);
-#else
-  /* limb==long and nails, need two limbs when available */
-  __gmp_n = __GMP_ABS (__gmp_n);
-  if (__gmp_n <= 1)
-    return (__gmp_n != 0 ? __gmp_l : 0);
-  else
-    return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS);
-#endif
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn)
-#if ! defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_result = 0;
-  if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size)))
-    __gmp_result = __gmp_z->_mp_d[__gmp_n];
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg)
-__GMP_EXTERN_INLINE void
-mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpz_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_size = - __gmp_w->_mp_size;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p)
-#if ! defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_perfect_square_p (mpz_srcptr __gmp_a)
-{
-  mp_size_t __gmp_asize;
-  int       __gmp_result;
-
-  __gmp_asize = __gmp_a->_mp_size;
-  __gmp_result = (__gmp_asize >= 0);  /* zero is a square, negatives are not */
-  if (__GMP_LIKELY (__gmp_asize > 0))
-    __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount)
-#if ! defined (__GMP_FORCE_mpz_popcount)
-__GMP_EXTERN_INLINE
-#endif
-mp_bitcnt_t
-mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW
-{
-  mp_size_t      __gmp_usize;
-  mp_bitcnt_t    __gmp_result;
-
-  __gmp_usize = __gmp_u->_mp_size;
-  __gmp_result = (__gmp_usize < 0 ? __GMP_ULONG_MAX : 0);
-  if (__GMP_LIKELY (__gmp_usize > 0))
-    __gmp_result =  mpn_popcount (__gmp_u->_mp_d, __gmp_usize);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q)
-#if ! defined (__GMP_FORCE_mpz_set_q)
-__GMP_EXTERN_INLINE
-#endif
-void
-mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u));
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size)
-#if ! defined (__GMP_FORCE_mpz_size)
-__GMP_EXTERN_INLINE
-#endif
-size_t
-mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  return __GMP_ABS (__gmp_z->_mp_size);
-}
-#endif
-
-
-/**************** mpq inlines ****************/
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs)
-__GMP_EXTERN_INLINE void
-mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpq_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg)
-__GMP_EXTERN_INLINE void
-mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpq_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
-}
-#endif
-
-
-/**************** mpn inlines ****************/
-
-/* The comments with __GMPN_ADD_1 below apply here too.
-
-   The test for FUNCTION returning 0 should predict well.  If it's assumed
-   {yp,ysize} will usually have a random number of bits then the high limb
-   won't be full and a carry out will occur a good deal less than 50% of the
-   time.
-
-   ysize==0 isn't a documented feature, but is used internally in a few
-   places.
-
-   Producing cout last stops it using up a register during the main part of
-   the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))"
-   doesn't seem able to move the true and false legs of the conditional up
-   to the two places cout is generated.  */
-
-#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST)     \
-  do {                                                                  \
-    mp_size_t  __gmp_i;                                                 \
-    mp_limb_t  __gmp_x;                                                 \
-                                                                        \
-    /* ASSERT ((ysize) >= 0); */                                        \
-    /* ASSERT ((xsize) >= (ysize)); */                                  \
-    /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */      \
-    /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */      \
-                                                                        \
-    __gmp_i = (ysize);                                                  \
-    if (__gmp_i != 0)                                                   \
-      {                                                                 \
-        if (FUNCTION (wp, xp, yp, __gmp_i))                             \
-          {                                                             \
-            do                                                          \
-              {                                                         \
-                if (__gmp_i >= (xsize))                                 \
-                  {                                                     \
-                    (cout) = 1;                                         \
-                    goto __gmp_done;                                    \
-                  }                                                     \
-                __gmp_x = (xp)[__gmp_i];                                \
-              }                                                         \
-            while (TEST);                                               \
-          }                                                             \
-      }                                                                 \
-    if ((wp) != (xp))                                                   \
-      __GMPN_COPY_REST (wp, xp, xsize, __gmp_i);                        \
-    (cout) = 0;                                                         \
-  __gmp_done:                                                           \
-    ;                                                                   \
-  } while (0)
-
-#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize)              \
-  __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n,       \
-               (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0))
-#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize)              \
-  __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n,       \
-               (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0))
-
-
-/* The use of __gmp_i indexing is designed to ensure a compile time src==dst
-   remains nice and clear to the compiler, so that __GMPN_COPY_REST can
-   disappear, and the load/add/store gets a chance to become a
-   read-modify-write on CISC CPUs.
-
-   Alternatives:
-
-   Using a pair of pointers instead of indexing would be possible, but gcc
-   isn't able to recognise compile-time src==dst in that case, even when the
-   pointers are incremented more or less together.  Other compilers would
-   very likely have similar difficulty.
-
-   gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or
-   similar to detect a compile-time src==dst.  This works nicely on gcc
-   2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems
-   to be always false, for a pointer p.  But the current code form seems
-   good enough for src==dst anyway.
-
-   gcc on x86 as usual doesn't give particularly good flags handling for the
-   carry/borrow detection.  It's tempting to want some multi instruction asm
-   blocks to help it, and this was tried, but in truth there's only a few
-   instructions to save and any gain is all too easily lost by register
-   juggling setting up for the asm.  */
-
-#if GMP_NAIL_BITS == 0
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)            \
-  do {                                                         \
-    mp_size_t  __gmp_i;                                                \
-    mp_limb_t  __gmp_x, __gmp_r;                                \
-                                                               \
-    /* ASSERT ((n) >= 1); */                                   \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */       \
-                                                               \
-    __gmp_x = (src)[0];                                                \
-    __gmp_r = __gmp_x OP (v);                                   \
-    (dst)[0] = __gmp_r;                                                \
-    if (CB (__gmp_r, __gmp_x, (v)))                             \
-      {                                                                \
-       (cout) = 1;                                             \
-       for (__gmp_i = 1; __gmp_i < (n);)                       \
-         {                                                     \
-           __gmp_x = (src)[__gmp_i];                           \
-           __gmp_r = __gmp_x OP 1;                             \
-           (dst)[__gmp_i] = __gmp_r;                           \
-           ++__gmp_i;                                          \
-           if (!CB (__gmp_r, __gmp_x, 1))                      \
-             {                                                 \
-               if ((src) != (dst))                             \
-                 __GMPN_COPY_REST (dst, src, n, __gmp_i);      \
-               (cout) = 0;                                     \
-               break;                                          \
-             }                                                 \
-         }                                                     \
-      }                                                                \
-    else                                                       \
-      {                                                                \
-       if ((src) != (dst))                                     \
-         __GMPN_COPY_REST (dst, src, n, 1);                    \
-       (cout) = 0;                                             \
-      }                                                                \
-  } while (0)
-#endif
-
-#if GMP_NAIL_BITS >= 1
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)            \
-  do {                                                         \
-    mp_size_t  __gmp_i;                                                \
-    mp_limb_t  __gmp_x, __gmp_r;                               \
-                                                               \
-    /* ASSERT ((n) >= 1); */                                   \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */       \
-                                                               \
-    __gmp_x = (src)[0];                                                \
-    __gmp_r = __gmp_x OP (v);                                  \
-    (dst)[0] = __gmp_r & GMP_NUMB_MASK;                                \
-    if (__gmp_r >> GMP_NUMB_BITS != 0)                         \
-      {                                                                \
-       (cout) = 1;                                             \
-       for (__gmp_i = 1; __gmp_i < (n);)                       \
-         {                                                     \
-           __gmp_x = (src)[__gmp_i];                           \
-           __gmp_r = __gmp_x OP 1;                             \
-           (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK;           \
-           ++__gmp_i;                                          \
-           if (__gmp_r >> GMP_NUMB_BITS == 0)                  \
-             {                                                 \
-               if ((src) != (dst))                             \
-                 __GMPN_COPY_REST (dst, src, n, __gmp_i);      \
-               (cout) = 0;                                     \
-               break;                                          \
-             }                                                 \
-         }                                                     \
-      }                                                                \
-    else                                                       \
-      {                                                                \
-       if ((src) != (dst))                                     \
-         __GMPN_COPY_REST (dst, src, n, 1);                    \
-       (cout) = 0;                                             \
-      }                                                                \
-  } while (0)
-#endif
-
-#define __GMPN_ADDCB(r,x,y) ((r) < (y))
-#define __GMPN_SUBCB(r,x,y) ((x) < (y))
-
-#define __GMPN_ADD_1(cout, dst, src, n, v)          \
-  __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB)
-#define __GMPN_SUB_1(cout, dst, src, n, v)          \
-  __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB)
-
-
-/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or
-   negative.  size==0 is allowed.  On random data usually only one limb will
-   need to be examined to get a result, so it's worth having it inline.  */
-#define __GMPN_CMP(result, xp, yp, size)                                \
-  do {                                                                  \
-    mp_size_t  __gmp_i;                                                 \
-    mp_limb_t  __gmp_x, __gmp_y;                                        \
-                                                                        \
-    /* ASSERT ((size) >= 0); */                                         \
-                                                                        \
-    (result) = 0;                                                       \
-    __gmp_i = (size);                                                   \
-    while (--__gmp_i >= 0)                                              \
-      {                                                                 \
-        __gmp_x = (xp)[__gmp_i];                                        \
-        __gmp_y = (yp)[__gmp_i];                                        \
-        if (__gmp_x != __gmp_y)                                         \
-          {                                                             \
-            /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */   \
-            (result) = (__gmp_x > __gmp_y ? 1 : -1);                    \
-            break;                                                      \
-          }                                                             \
-      }                                                                 \
-  } while (0)
-
-
-#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start)                 \
-  do {                                                          \
-    /* ASSERT ((start) >= 0); */                                \
-    /* ASSERT ((start) <= (size)); */                           \
-    __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \
-  } while (0)
-#endif
-
-/* Copy {src,size} to {dst,size}, starting at "start".  This is designed to
-   keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1,
-   __GMPN_ADD, etc.  */
-#if ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start)                 \
-  do {                                                          \
-    mp_size_t __gmp_j;                                          \
-    /* ASSERT ((size) >= 0); */                                 \
-    /* ASSERT ((start) >= 0); */                                \
-    /* ASSERT ((start) <= (size)); */                           \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */     \
-    __GMP_CRAY_Pragma ("_CRI ivdep");                           \
-    for (__gmp_j = (start); __gmp_j < (size); __gmp_j++)        \
-      (dst)[__gmp_j] = (src)[__gmp_j];                          \
-  } while (0)
-#endif
-
-/* Enhancement: Use some of the smarter code from gmp-impl.h.  Maybe use
-   mpn_copyi if there's a native version, and if we don't mind demanding
-   binary compatibility for it (on targets which use it).  */
-
-#if ! defined (__GMPN_COPY)
-#define __GMPN_COPY(dst, src, size)   __GMPN_COPY_REST (dst, src, size, 0)
-#endif
-
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add)
-#if ! defined (__GMP_FORCE_mpn_add)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1)
-#if ! defined (__GMP_FORCE_mpn_add_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp)
-#if ! defined (__GMP_FORCE_mpn_cmp)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW
-{
-  int __gmp_result;
-  __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub)
-#if ! defined (__GMP_FORCE_mpn_sub)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1)
-#if ! defined (__GMP_FORCE_mpn_sub_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg)
-#if ! defined (__GMP_FORCE_mpn_neg)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
-{
-  mp_limb_t __gmp_ul, __gmp_cy;
-  __gmp_cy = 0;
-  do {
-      __gmp_ul = *__gmp_up++;
-      *__gmp_rp++ = -__gmp_ul - __gmp_cy;
-      __gmp_cy |= __gmp_ul != 0;
-  } while (--__gmp_n != 0);
-  return __gmp_cy;
-}
-#endif
-
-#if defined (__cplusplus)
-}
-#endif
-
-
-/* Allow faster testing for negative, zero, and positive.  */
-#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)
-#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)
-#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)
-
-/* When using GCC, optimize certain common comparisons.  */
-#if defined (__GNUC__) && __GNUC__ >= 2
-#define mpz_cmp_ui(Z,UI) \
-  (__builtin_constant_p (UI) && (UI) == 0                              \
-   ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))
-#define mpz_cmp_si(Z,SI) \
-  (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z)                        \
-   : __builtin_constant_p (SI) && (SI) > 0                             \
-    ? _mpz_cmp_ui (Z, __GMP_CAST (unsigned long int, SI))              \
-   : _mpz_cmp_si (Z,SI))
-#define mpq_cmp_ui(Q,NUI,DUI) \
-  (__builtin_constant_p (NUI) && (NUI) == 0                            \
-   ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI))
-#define mpq_cmp_si(q,n,d)                       \
-  (__builtin_constant_p ((n) >= 0) && (n) >= 0  \
-   ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \
-   : _mpq_cmp_si (q, n, d))
-#else
-#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI)
-#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI)
-#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI)
-#define mpq_cmp_si(q,n,d)  _mpq_cmp_si(q,n,d)
-#endif
-
-
-/* Using "&" rather than "&&" means these can come out branch-free.  Every
-   mpz_t has at least one limb allocated, so fetching the low limb is always
-   allowed.  */
-#define mpz_odd_p(z)   (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0]))
-#define mpz_even_p(z)  (! mpz_odd_p (z))
-
-
-/**************** C++ routines ****************/
-
-#ifdef __cplusplus
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);
-#endif
-
-
-/* Source-level compatibility with GMP 2 and earlier. */
-#define mpn_divmod(qp,np,nsize,dp,dsize) \
-  mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize)
-
-/* Source-level compatibility with GMP 1.  */
-#define mpz_mdiv       mpz_fdiv_q
-#define mpz_mdivmod    mpz_fdiv_qr
-#define mpz_mmod       mpz_fdiv_r
-#define mpz_mdiv_ui    mpz_fdiv_q_ui
-#define mpz_mdivmod_ui(q,r,n,d) \
-  (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))
-#define mpz_mmod_ui(r,n,d) \
-  (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))
-
-/* Useful synonyms, but not quite compatible with GMP 1.  */
-#define mpz_div                mpz_fdiv_q
-#define mpz_divmod     mpz_fdiv_qr
-#define mpz_div_ui     mpz_fdiv_q_ui
-#define mpz_divmod_ui  mpz_fdiv_qr_ui
-#define mpz_div_2exp   mpz_fdiv_q_2exp
-#define mpz_mod_2exp   mpz_fdiv_r_2exp
-
-enum
-{
-  GMP_ERROR_NONE = 0,
-  GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
-  GMP_ERROR_DIVISION_BY_ZERO = 2,
-  GMP_ERROR_SQRT_OF_NEGATIVE = 4,
-  GMP_ERROR_INVALID_ARGUMENT = 8
-};
-
-/* Define CC and CFLAGS which were used to build this version of GMP */
-#define __GMP_CC "i586-mingw32msvc-gcc -std=gnu99"
-#define __GMP_CFLAGS "-m32 -O2 -pedantic -fomit-frame-pointer -mtune=pentium -march=pentium -mno-cygwin"
-
-/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */
-#define __GNU_MP_VERSION 5
-#define __GNU_MP_VERSION_MINOR 0
-#define __GNU_MP_VERSION_PATCHLEVEL 1
-#define __GMP_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)
-
-#define __GMP_H__
-#endif /* __GMP_H__ */
diff --git a/misc/builddeps/win32/gmp/lib/libgmp.a b/misc/builddeps/win32/gmp/lib/libgmp.a
deleted file mode 100644 (file)
index cbc1137..0000000
Binary files a/misc/builddeps/win32/gmp/lib/libgmp.a and /dev/null differ
diff --git a/misc/builddeps/win32/gmp/lib/libgmp.dll.a b/misc/builddeps/win32/gmp/lib/libgmp.dll.a
deleted file mode 100755 (executable)
index ee72da1..0000000
Binary files a/misc/builddeps/win32/gmp/lib/libgmp.dll.a and /dev/null differ
diff --git a/misc/builddeps/win32/gmp/lib/libgmp.la b/misc/builddeps/win32/gmp/lib/libgmp.la
deleted file mode 100755 (executable)
index f256529..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libgmp.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='../bin/libgmp-10.dll'
-
-# Names of this library.
-library_names='libgmp.dll.a'
-
-# The name of the static archive.
-old_library=''
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -L/home/rpolzer/Games/Xonotic/misc/builddeps/dp.win32/lib'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libgmp.
-current=10
-age=0
-revision=1
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/misc/builddeps/win32/gmp/share/info/gmp.info b/misc/builddeps/win32/gmp/share/info/gmp.info
deleted file mode 100644 (file)
index d65ab79..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-Indirect:
-gmp.info-1: 981
-gmp.info-2: 300864
-\1f
-Tag Table:
-(Indirect)
-Node: Top\7f981
-Node: Copying\7f3211
-Node: Introduction to GMP\7f5062
-Node: Installing GMP\7f7773
-Node: Build Options\7f8505
-Node: ABI and ISA\7f24573
-Node: Notes for Package Builds\7f34251
-Node: Notes for Particular Systems\7f37338
-Node: Known Build Problems\7f43895
-Node: Performance optimization\7f47429
-Node: GMP Basics\7f48563
-Node: Headers and Libraries\7f49211
-Node: Nomenclature and Types\7f50635
-Node: Function Classes\7f52632
-Node: Variable Conventions\7f54325
-Node: Parameter Conventions\7f55934
-Node: Memory Management\7f57990
-Node: Reentrancy\7f59118
-Node: Useful Macros and Constants\7f60991
-Node: Compatibility with older versions\7f61989
-Node: Demonstration Programs\7f62950
-Node: Efficiency\7f64815
-Node: Debugging\7f72439
-Node: Profiling\7f78997
-Node: Autoconf\7f82988
-Node: Emacs\7f84767
-Node: Reporting Bugs\7f85373
-Node: Integer Functions\7f87916
-Node: Initializing Integers\7f88692
-Node: Assigning Integers\7f90839
-Node: Simultaneous Integer Init & Assign\7f92426
-Node: Converting Integers\7f94051
-Node: Integer Arithmetic\7f96973
-Node: Integer Division\7f98559
-Node: Integer Exponentiation\7f104869
-Node: Integer Roots\7f106309
-Node: Number Theoretic Functions\7f107983
-Node: Integer Comparisons\7f114126
-Node: Integer Logic and Bit Fiddling\7f115504
-Node: I/O of Integers\7f118051
-Node: Integer Random Numbers\7f120935
-Node: Integer Import and Export\7f123546
-Node: Miscellaneous Integer Functions\7f127556
-Node: Integer Special Functions\7f129416
-Node: Rational Number Functions\7f132503
-Node: Initializing Rationals\7f133696
-Node: Rational Conversions\7f136157
-Node: Rational Arithmetic\7f137888
-Node: Comparing Rationals\7f139192
-Node: Applying Integer Functions\7f140559
-Node: I/O of Rationals\7f142042
-Node: Floating-point Functions\7f143902
-Node: Initializing Floats\7f146787
-Node: Assigning Floats\7f150874
-Node: Simultaneous Float Init & Assign\7f153441
-Node: Converting Floats\7f154969
-Node: Float Arithmetic\7f158217
-Node: Float Comparison\7f160230
-Node: I/O of Floats\7f161811
-Node: Miscellaneous Float Functions\7f164409
-Node: Low-level Functions\7f166303
-Node: Random Number Functions\7f190437
-Node: Random State Initialization\7f191505
-Node: Random State Seeding\7f194363
-Node: Random State Miscellaneous\7f195752
-Node: Formatted Output\7f196393
-Node: Formatted Output Strings\7f196638
-Node: Formatted Output Functions\7f201852
-Node: C++ Formatted Output\7f205927
-Node: Formatted Input\7f208609
-Node: Formatted Input Strings\7f208845
-Node: Formatted Input Functions\7f213497
-Node: C++ Formatted Input\7f216466
-Node: C++ Class Interface\7f218369
-Node: C++ Interface General\7f219370
-Node: C++ Interface Integers\7f222440
-Node: C++ Interface Rationals\7f225871
-Node: C++ Interface Floats\7f229548
-Node: C++ Interface Random Numbers\7f234830
-Node: C++ Interface Limitations\7f237236
-Node: BSD Compatible Functions\7f240056
-Node: Custom Allocation\7f244767
-Node: Language Bindings\7f249085
-Node: Algorithms\7f253038
-Node: Multiplication Algorithms\7f253738
-Node: Basecase Multiplication\7f254710
-Node: Karatsuba Multiplication\7f256618
-Node: Toom 3-Way Multiplication\7f260243
-Node: Toom 4-Way Multiplication\7f266657
-Node: FFT Multiplication\7f268029
-Node: Other Multiplication\7f273365
-Node: Unbalanced Multiplication\7f275839
-Node: Division Algorithms\7f276627
-Node: Single Limb Division\7f277006
-Node: Basecase Division\7f279897
-Node: Divide and Conquer Division\7f281100
-Node: Block-Wise Barrett Division\7f283169
-Node: Exact Division\7f283821
-Node: Exact Remainder\7f286986
-Node: Small Quotient Division\7f289213
-Node: Greatest Common Divisor Algorithms\7f290811
-Node: Binary GCD\7f291108
-Node: Lehmer's Algorithm\7f293957
-Node: Subquadratic GCD\7f296177
-Node: Extended GCD\7f298636
-Node: Jacobi Symbol\7f299948
-Node: Powering Algorithms\7f300864
-Node: Normal Powering Algorithm\7f301127
-Node: Modular Powering Algorithm\7f301655
-Node: Root Extraction Algorithms\7f302435
-Node: Square Root Algorithm\7f302750
-Node: Nth Root Algorithm\7f304891
-Node: Perfect Square Algorithm\7f305676
-Node: Perfect Power Algorithm\7f307762
-Node: Radix Conversion Algorithms\7f308383
-Node: Binary to Radix\7f308759
-Node: Radix to Binary\7f312688
-Node: Other Algorithms\7f314776
-Node: Prime Testing Algorithm\7f315128
-Node: Factorial Algorithm\7f316312
-Node: Binomial Coefficients Algorithm\7f317715
-Node: Fibonacci Numbers Algorithm\7f318609
-Node: Lucas Numbers Algorithm\7f321083
-Node: Random Number Algorithms\7f321804
-Node: Assembly Coding\7f323925
-Node: Assembly Code Organisation\7f324885
-Node: Assembly Basics\7f325852
-Node: Assembly Carry Propagation\7f327002
-Node: Assembly Cache Handling\7f328833
-Node: Assembly Functional Units\7f330994
-Node: Assembly Floating Point\7f332607
-Node: Assembly SIMD Instructions\7f336385
-Node: Assembly Software Pipelining\7f337367
-Node: Assembly Loop Unrolling\7f338429
-Node: Assembly Writing Guide\7f340644
-Node: Internals\7f343409
-Node: Integer Internals\7f343921
-Node: Rational Internals\7f346177
-Node: Float Internals\7f347415
-Node: Raw Output Internals\7f354829
-Node: C++ Interface Internals\7f356023
-Node: Contributors\7f359309
-Node: References\7f364267
-Node: GNU Free Documentation License\7f369925
-Node: Concept Index\7f395094
-Node: Function Index\7f441276
-\1f
-End Tag Table
diff --git a/misc/builddeps/win32/gmp/share/info/gmp.info-1 b/misc/builddeps/win32/gmp/share/info/gmp.info-1
deleted file mode 100644 (file)
index d136059..0000000
+++ /dev/null
@@ -1,7084 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-File: gmp.info,  Node: Top,  Next: Copying,  Prev: (dir),  Up: (dir)
-
-GNU MP
-******
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-
-* Menu:
-
-* Copying::                    GMP Copying Conditions (LGPL).
-* Introduction to GMP::        Brief introduction to GNU MP.
-* Installing GMP::             How to configure and compile the GMP library.
-* GMP Basics::                 What every GMP user should know.
-* Reporting Bugs::             How to usefully report bugs.
-* Integer Functions::          Functions for arithmetic on signed integers.
-* Rational Number Functions::  Functions for arithmetic on rational numbers.
-* Floating-point Functions::   Functions for arithmetic on floats.
-* Low-level Functions::        Fast functions for natural numbers.
-* Random Number Functions::    Functions for generating random numbers.
-* Formatted Output::           `printf' style output.
-* Formatted Input::            `scanf' style input.
-* C++ Class Interface::        Class wrappers around GMP types.
-* BSD Compatible Functions::   All functions found in BSD MP.
-* Custom Allocation::          How to customize the internal allocation.
-* Language Bindings::          Using GMP from other languages.
-* Algorithms::                 What happens behind the scenes.
-* Internals::                  How values are represented behind the scenes.
-
-* Contributors::               Who brings you this library?
-* References::                 Some useful papers and books to read.
-* GNU Free Documentation License::
-* Concept Index::
-* Function Index::
-
-\1f
-File: gmp.info,  Node: Copying,  Next: Introduction to GMP,  Prev: Top,  Up: Top
-
-GNU MP Copying Conditions
-*************************
-
-This library is "free"; this means that everyone is free to use it and
-free to redistribute it on a free basis.  The library is not in the
-public domain; it is copyrighted and there are restrictions on its
-distribution, but these restrictions are designed to permit everything
-that a good cooperating citizen would want to do.  What is not allowed
-is to try to prevent others from further sharing any version of this
-library that they might get from you.
-
-   Specifically, we want to make sure that you have the right to give
-away copies of the library, that you receive source code or else can
-get it if you want it, that you can change this library or use pieces
-of it in new free programs, and that you know you can do these things.
-
-   To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights.  For example, if you distribute
-copies of the GNU MP library, you must give the recipients all the
-rights that you have.  You must make sure that they, too, receive or
-can get the source code.  And you must tell them their rights.
-
-   Also, for our own protection, we must make certain that everyone
-finds out that there is no warranty for the GNU MP library.  If it is
-modified by someone else and passed on, we want their recipients to
-know that what they have is not what we distributed, so that any
-problems introduced by others will not reflect on our reputation.
-
-   The precise conditions of the license for the GNU MP library are
-found in the Lesser General Public License version 3 that accompanies
-the source code, see `COPYING.LIB'.  Certain demonstration programs are
-provided under the terms of the plain General Public License version 3,
-see `COPYING'.
-
-\1f
-File: gmp.info,  Node: Introduction to GMP,  Next: Installing GMP,  Prev: Copying,  Up: Top
-
-1 Introduction to GNU MP
-************************
-
-GNU MP is a portable library written in C for arbitrary precision
-arithmetic on integers, rational numbers, and floating-point numbers.
-It aims to provide the fastest possible arithmetic for all applications
-that need higher precision than is directly supported by the basic C
-types.
-
-   Many applications use just a few hundred bits of precision; but some
-applications may need thousands or even millions of bits.  GMP is
-designed to give good performance for both, by choosing algorithms
-based on the sizes of the operands, and by carefully keeping the
-overhead at a minimum.
-
-   The speed of GMP is achieved by using fullwords as the basic
-arithmetic type, by using sophisticated algorithms, by including
-carefully optimized assembly code for the most common inner loops for
-many different CPUs, and by a general emphasis on speed (as opposed to
-simplicity or elegance).
-
-   There is assembly code for these CPUs: ARM, DEC Alpha 21064, 21164,
-and 21264, AMD 29000, AMD K6, K6-2, Athlon, and Athlon64, Hitachi
-SuperH and SH-2, HPPA 1.0, 1.1 and 2.0, Intel Pentium, Pentium
-Pro/II/III, Pentium 4, generic x86, Intel IA-64, i960, Motorola
-MC68000, MC68020, MC88100, and MC88110, Motorola/IBM PowerPC 32 and 64,
-National NS32000, IBM POWER, MIPS R3000, R4000, SPARCv7, SuperSPARC,
-generic SPARCv8, UltraSPARC, DEC VAX, and Zilog Z8000.  Some
-optimizations also for Cray vector systems, Clipper, IBM ROMP (RT), and
-Pyramid AP/XP.
-
-For up-to-date information on GMP, please see the GMP web pages at
-
-     `http://gmplib.org/'
-
-The latest version of the library is available at
-
-     `ftp://ftp.gnu.org/gnu/gmp/'
-
-   Many sites around the world mirror `ftp.gnu.org', please use a mirror
-near you, see `http://www.gnu.org/order/ftp.html' for a full list.
-
-   There are three public mailing lists of interest.  One for release
-announcements, one for general questions and discussions about usage of
-the GMP library and one for bug reports.  For more information, see
-
-     `http://gmplib.org/mailman/listinfo/'.
-
-   The proper place for bug reports is <gmp-bugs@gmplib.org>.  See
-*Note Reporting Bugs:: for information about reporting bugs.
-
-
-1.1 How to use this Manual
-==========================
-
-Everyone should read *Note GMP Basics::.  If you need to install the
-library yourself, then read *Note Installing GMP::.  If you have a
-system with multiple ABIs, then read *Note ABI and ISA::, for the
-compiler options that must be used on applications.
-
-   The rest of the manual can be used for later reference, although it
-is probably a good idea to glance through it.
-
-\1f
-File: gmp.info,  Node: Installing GMP,  Next: GMP Basics,  Prev: Introduction to GMP,  Up: Top
-
-2 Installing GMP
-****************
-
-GMP has an autoconf/automake/libtool based configuration system.  On a
-Unix-like system a basic build can be done with
-
-     ./configure
-     make
-
-Some self-tests can be run with
-
-     make check
-
-And you can install (under `/usr/local' by default) with
-
-     make install
-
-   If you experience problems, please report them to
-<gmp-bugs@gmplib.org>.  See *Note Reporting Bugs::, for information on
-what to include in useful bug reports.
-
-* Menu:
-
-* Build Options::
-* ABI and ISA::
-* Notes for Package Builds::
-* Notes for Particular Systems::
-* Known Build Problems::
-* Performance optimization::
-
-\1f
-File: gmp.info,  Node: Build Options,  Next: ABI and ISA,  Prev: Installing GMP,  Up: Installing GMP
-
-2.1 Build Options
-=================
-
-All the usual autoconf configure options are available, run `./configure
---help' for a summary.  The file `INSTALL.autoconf' has some generic
-installation information too.
-
-Tools
-     `configure' requires various Unix-like tools.  See *Note Notes for
-     Particular Systems::, for some options on non-Unix systems.
-
-     It might be possible to build without the help of `configure',
-     certainly all the code is there, but unfortunately you'll be on
-     your own.
-
-Build Directory
-     To compile in a separate build directory, `cd' to that directory,
-     and prefix the configure command with the path to the GMP source
-     directory.  For example
-
-          cd /my/build/dir
-          /my/sources/gmp-5.0.1/configure
-
-     Not all `make' programs have the necessary features (`VPATH') to
-     support this.  In particular, SunOS and Slowaris `make' have bugs
-     that make them unable to build in a separate directory.  Use GNU
-     `make' instead.
-
-`--prefix' and `--exec-prefix'
-     The `--prefix' option can be used in the normal way to direct GMP
-     to install under a particular tree.  The default is `/usr/local'.
-
-     `--exec-prefix' can be used to direct architecture-dependent files
-     like `libgmp.a' to a different location.  This can be used to share
-     architecture-independent parts like the documentation, but
-     separate the dependent parts.  Note however that `gmp.h' and
-     `mp.h' are architecture-dependent since they encode certain
-     aspects of `libgmp', so it will be necessary to ensure both
-     `$prefix/include' and `$exec_prefix/include' are available to the
-     compiler.
-
-`--disable-shared', `--disable-static'
-     By default both shared and static libraries are built (where
-     possible), but one or other can be disabled.  Shared libraries
-     result in smaller executables and permit code sharing between
-     separate running processes, but on some CPUs are slightly slower,
-     having a small cost on each function call.
-
-Native Compilation, `--build=CPU-VENDOR-OS'
-     For normal native compilation, the system can be specified with
-     `--build'.  By default `./configure' uses the output from running
-     `./config.guess'.  On some systems `./config.guess' can determine
-     the exact CPU type, on others it will be necessary to give it
-     explicitly.  For example,
-
-          ./configure --build=ultrasparc-sun-solaris2.7
-
-     In all cases the `OS' part is important, since it controls how
-     libtool generates shared libraries.  Running `./config.guess' is
-     the simplest way to see what it should be, if you don't know
-     already.
-
-Cross Compilation, `--host=CPU-VENDOR-OS'
-     When cross-compiling, the system used for compiling is given by
-     `--build' and the system where the library will run is given by
-     `--host'.  For example when using a FreeBSD Athlon system to build
-     GNU/Linux m68k binaries,
-
-          ./configure --build=athlon-pc-freebsd3.5 --host=m68k-mac-linux-gnu
-
-     Compiler tools are sought first with the host system type as a
-     prefix.  For example `m68k-mac-linux-gnu-ranlib' is tried, then
-     plain `ranlib'.  This makes it possible for a set of
-     cross-compiling tools to co-exist with native tools.  The prefix
-     is the argument to `--host', and this can be an alias, such as
-     `m68k-linux'.  But note that tools don't have to be setup this
-     way, it's enough to just have a `PATH' with a suitable
-     cross-compiling `cc' etc.
-
-     Compiling for a different CPU in the same family as the build
-     system is a form of cross-compilation, though very possibly this
-     would merely be special options on a native compiler.  In any case
-     `./configure' avoids depending on being able to run code on the
-     build system, which is important when creating binaries for a
-     newer CPU since they very possibly won't run on the build system.
-
-     In all cases the compiler must be able to produce an executable
-     (of whatever format) from a standard C `main'.  Although only
-     object files will go to make up `libgmp', `./configure' uses
-     linking tests for various purposes, such as determining what
-     functions are available on the host system.
-
-     Currently a warning is given unless an explicit `--build' is used
-     when cross-compiling, because it may not be possible to correctly
-     guess the build system type if the `PATH' has only a
-     cross-compiling `cc'.
-
-     Note that the `--target' option is not appropriate for GMP.  It's
-     for use when building compiler tools, with `--host' being where
-     they will run, and `--target' what they'll produce code for.
-     Ordinary programs or libraries like GMP are only interested in the
-     `--host' part, being where they'll run.  (Some past versions of
-     GMP used `--target' incorrectly.)
-
-CPU types
-     In general, if you want a library that runs as fast as possible,
-     you should configure GMP for the exact CPU type your system uses.
-     However, this may mean the binaries won't run on older members of
-     the family, and might run slower on other members, older or newer.
-     The best idea is always to build GMP for the exact machine type
-     you intend to run it on.
-
-     The following CPUs have specific support.  See `configure.in' for
-     details of what code and compiler options they select.
-
-        * Alpha: alpha, alphaev5, alphaev56, alphapca56, alphapca57,
-          alphaev6, alphaev67, alphaev68 alphaev7
-
-        * Cray: c90, j90, t90, sv1
-
-        * HPPA: hppa1.0, hppa1.1, hppa2.0, hppa2.0n, hppa2.0w, hppa64
-
-        * IA-64: ia64, itanium, itanium2
-
-        * MIPS: mips, mips3, mips64
-
-        * Motorola: m68k, m68000, m68010, m68020, m68030, m68040,
-          m68060, m68302, m68360, m88k, m88110
-
-        * POWER: power, power1, power2, power2sc
-
-        * PowerPC: powerpc, powerpc64, powerpc401, powerpc403,
-          powerpc405, powerpc505, powerpc601, powerpc602, powerpc603,
-          powerpc603e, powerpc604, powerpc604e, powerpc620, powerpc630,
-          powerpc740, powerpc7400, powerpc7450, powerpc750, powerpc801,
-          powerpc821, powerpc823, powerpc860, powerpc970
-
-        * SPARC: sparc, sparcv8, microsparc, supersparc, sparcv9,
-          ultrasparc, ultrasparc2, ultrasparc2i, ultrasparc3, sparc64
-
-        * x86 family: i386, i486, i586, pentium, pentiummmx, pentiumpro,
-          pentium2, pentium3, pentium4, k6, k62, k63, athlon, amd64,
-          viac3, viac32
-
-        * Other: a29k, arm, clipper, i960, ns32k, pyramid, sh, sh2, vax,
-          z8k
-
-     CPUs not listed will use generic C code.
-
-Generic C Build
-     If some of the assembly code causes problems, or if otherwise
-     desired, the generic C code can be selected with CPU `none'.  For
-     example,
-
-          ./configure --host=none-unknown-freebsd3.5
-
-     Note that this will run quite slowly, but it should be portable
-     and should at least make it possible to get something running if
-     all else fails.
-
-Fat binary, `--enable-fat'
-     Using `--enable-fat' selects a "fat binary" build on x86, where
-     optimized low level subroutines are chosen at runtime according to
-     the CPU detected.  This means more code, but gives good
-     performance on all x86 chips.  (This option might become available
-     for more architectures in the future.)
-
-`ABI'
-     On some systems GMP supports multiple ABIs (application binary
-     interfaces), meaning data type sizes and calling conventions.  By
-     default GMP chooses the best ABI available, but a particular ABI
-     can be selected.  For example
-
-          ./configure --host=mips64-sgi-irix6 ABI=n32
-
-     See *Note ABI and ISA::, for the available choices on relevant
-     CPUs, and what applications need to do.
-
-`CC', `CFLAGS'
-     By default the C compiler used is chosen from among some likely
-     candidates, with `gcc' normally preferred if it's present.  The
-     usual `CC=whatever' can be passed to `./configure' to choose
-     something different.
-
-     For various systems, default compiler flags are set based on the
-     CPU and compiler.  The usual `CFLAGS="-whatever"' can be passed to
-     `./configure' to use something different or to set good flags for
-     systems GMP doesn't otherwise know.
-
-     The `CC' and `CFLAGS' used are printed during `./configure', and
-     can be found in each generated `Makefile'.  This is the easiest way
-     to check the defaults when considering changing or adding
-     something.
-
-     Note that when `CC' and `CFLAGS' are specified on a system
-     supporting multiple ABIs it's important to give an explicit
-     `ABI=whatever', since GMP can't determine the ABI just from the
-     flags and won't be able to select the correct assembly code.
-
-     If just `CC' is selected then normal default `CFLAGS' for that
-     compiler will be used (if GMP recognises it).  For example
-     `CC=gcc' can be used to force the use of GCC, with default flags
-     (and default ABI).
-
-`CPPFLAGS'
-     Any flags like `-D' defines or `-I' includes required by the
-     preprocessor should be set in `CPPFLAGS' rather than `CFLAGS'.
-     Compiling is done with both `CPPFLAGS' and `CFLAGS', but
-     preprocessing uses just `CPPFLAGS'.  This distinction is because
-     most preprocessors won't accept all the flags the compiler does.
-     Preprocessing is done separately in some configure tests, and in
-     the `ansi2knr' support for K&R compilers.
-
-`CC_FOR_BUILD'
-     Some build-time programs are compiled and run to generate
-     host-specific data tables.  `CC_FOR_BUILD' is the compiler used
-     for this.  It doesn't need to be in any particular ABI or mode, it
-     merely needs to generate executables that can run.  The default is
-     to try the selected `CC' and some likely candidates such as `cc'
-     and `gcc', looking for something that works.
-
-     No flags are used with `CC_FOR_BUILD' because a simple invocation
-     like `cc foo.c' should be enough.  If some particular options are
-     required they can be included as for instance `CC_FOR_BUILD="cc
-     -whatever"'.
-
-C++ Support, `--enable-cxx'
-     C++ support in GMP can be enabled with `--enable-cxx', in which
-     case a C++ compiler will be required.  As a convenience
-     `--enable-cxx=detect' can be used to enable C++ support only if a
-     compiler can be found.  The C++ support consists of a library
-     `libgmpxx.la' and header file `gmpxx.h' (*note Headers and
-     Libraries::).
-
-     A separate `libgmpxx.la' has been adopted rather than having C++
-     objects within `libgmp.la' in order to ensure dynamic linked C
-     programs aren't bloated by a dependency on the C++ standard
-     library, and to avoid any chance that the C++ compiler could be
-     required when linking plain C programs.
-
-     `libgmpxx.la' will use certain internals from `libgmp.la' and can
-     only be expected to work with `libgmp.la' from the same GMP
-     version.  Future changes to the relevant internals will be
-     accompanied by renaming, so a mismatch will cause unresolved
-     symbols rather than perhaps mysterious misbehaviour.
-
-     In general `libgmpxx.la' will be usable only with the C++ compiler
-     that built it, since name mangling and runtime support are usually
-     incompatible between different compilers.
-
-`CXX', `CXXFLAGS'
-     When C++ support is enabled, the C++ compiler and its flags can be
-     set with variables `CXX' and `CXXFLAGS' in the usual way.  The
-     default for `CXX' is the first compiler that works from a list of
-     likely candidates, with `g++' normally preferred when available.
-     The default for `CXXFLAGS' is to try `CFLAGS', `CFLAGS' without
-     `-g', then for `g++' either `-g -O2' or `-O2', or for other
-     compilers `-g' or nothing.  Trying `CFLAGS' this way is convenient
-     when using `gcc' and `g++' together, since the flags for `gcc' will
-     usually suit `g++'.
-
-     It's important that the C and C++ compilers match, meaning their
-     startup and runtime support routines are compatible and that they
-     generate code in the same ABI (if there's a choice of ABIs on the
-     system).  `./configure' isn't currently able to check these things
-     very well itself, so for that reason `--disable-cxx' is the
-     default, to avoid a build failure due to a compiler mismatch.
-     Perhaps this will change in the future.
-
-     Incidentally, it's normally not good enough to set `CXX' to the
-     same as `CC'.  Although `gcc' for instance recognises `foo.cc' as
-     C++ code, only `g++' will invoke the linker the right way when
-     building an executable or shared library from C++ object files.
-
-Temporary Memory, `--enable-alloca=<choice>'
-     GMP allocates temporary workspace using one of the following three
-     methods, which can be selected with for instance
-     `--enable-alloca=malloc-reentrant'.
-
-        * `alloca' - C library or compiler builtin.
-
-        * `malloc-reentrant' - the heap, in a re-entrant fashion.
-
-        * `malloc-notreentrant' - the heap, with global variables.
-
-     For convenience, the following choices are also available.
-     `--disable-alloca' is the same as `no'.
-
-        * `yes' - a synonym for `alloca'.
-
-        * `no' - a synonym for `malloc-reentrant'.
-
-        * `reentrant' - `alloca' if available, otherwise
-          `malloc-reentrant'.  This is the default.
-
-        * `notreentrant' - `alloca' if available, otherwise
-          `malloc-notreentrant'.
-
-     `alloca' is reentrant and fast, and is recommended.  It actually
-     allocates just small blocks on the stack; larger ones use
-     malloc-reentrant.
-
-     `malloc-reentrant' is, as the name suggests, reentrant and thread
-     safe, but `malloc-notreentrant' is faster and should be used if
-     reentrancy is not required.
-
-     The two malloc methods in fact use the memory allocation functions
-     selected by `mp_set_memory_functions', these being `malloc' and
-     friends by default.  *Note Custom Allocation::.
-
-     An additional choice `--enable-alloca=debug' is available, to help
-     when debugging memory related problems (*note Debugging::).
-
-FFT Multiplication, `--disable-fft'
-     By default multiplications are done using Karatsuba, 3-way Toom,
-     and Fermat FFT.  The FFT is only used on large to very large
-     operands and can be disabled to save code size if desired.
-
-Berkeley MP, `--enable-mpbsd'
-     The Berkeley MP compatibility library (`libmp') and header file
-     (`mp.h') are built and installed only if `--enable-mpbsd' is used.
-     *Note BSD Compatible Functions::.
-
-Assertion Checking, `--enable-assert'
-     This option enables some consistency checking within the library.
-     This can be of use while debugging, *note Debugging::.
-
-Execution Profiling, `--enable-profiling=prof/gprof/instrument'
-     Enable profiling support, in one of various styles, *note
-     Profiling::.
-
-`MPN_PATH'
-     Various assembly versions of each mpn subroutines are provided.
-     For a given CPU, a search is made though a path to choose a
-     version of each.  For example `sparcv8' has
-
-          MPN_PATH="sparc32/v8 sparc32 generic"
-
-     which means look first for v8 code, then plain sparc32 (which is
-     v7), and finally fall back on generic C.  Knowledgeable users with
-     special requirements can specify a different path.  Normally this
-     is completely unnecessary.
-
-Documentation
-     The source for the document you're now reading is `doc/gmp.texi',
-     in Texinfo format, see *Note Texinfo: (texinfo)Top.
-
-     Info format `doc/gmp.info' is included in the distribution.  The
-     usual automake targets are available to make PostScript, DVI, PDF
-     and HTML (these will require various TeX and Texinfo tools).
-
-     DocBook and XML can be generated by the Texinfo `makeinfo' program
-     too, see *Note Options for `makeinfo': (texinfo)makeinfo options.
-
-     Some supplementary notes can also be found in the `doc'
-     subdirectory.
-
-
-\1f
-File: gmp.info,  Node: ABI and ISA,  Next: Notes for Package Builds,  Prev: Build Options,  Up: Installing GMP
-
-2.2 ABI and ISA
-===============
-
-ABI (Application Binary Interface) refers to the calling conventions
-between functions, meaning what registers are used and what sizes the
-various C data types are.  ISA (Instruction Set Architecture) refers to
-the instructions and registers a CPU has available.
-
-   Some 64-bit ISA CPUs have both a 64-bit ABI and a 32-bit ABI
-defined, the latter for compatibility with older CPUs in the family.
-GMP supports some CPUs like this in both ABIs.  In fact within GMP
-`ABI' means a combination of chip ABI, plus how GMP chooses to use it.
-For example in some 32-bit ABIs, GMP may support a limb as either a
-32-bit `long' or a 64-bit `long long'.
-
-   By default GMP chooses the best ABI available for a given system,
-and this generally gives significantly greater speed.  But an ABI can
-be chosen explicitly to make GMP compatible with other libraries, or
-particular application requirements.  For example,
-
-     ./configure ABI=32
-
-   In all cases it's vital that all object code used in a given program
-is compiled for the same ABI.
-
-   Usually a limb is implemented as a `long'.  When a `long long' limb
-is used this is encoded in the generated `gmp.h'.  This is convenient
-for applications, but it does mean that `gmp.h' will vary, and can't be
-just copied around.  `gmp.h' remains compiler independent though, since
-all compilers for a particular ABI will be expected to use the same
-limb type.
-
-   Currently no attempt is made to follow whatever conventions a system
-has for installing library or header files built for a particular ABI.
-This will probably only matter when installing multiple builds of GMP,
-and it might be as simple as configuring with a special `libdir', or it
-might require more than that.  Note that builds for different ABIs need
-to done separately, with a fresh `./configure' and `make' each.
-
-
-AMD64 (`x86_64')
-     On AMD64 systems supporting both 32-bit and 64-bit modes for
-     applications, the following ABI choices are available.
-
-    `ABI=64'
-          The 64-bit ABI uses 64-bit limbs and pointers and makes full
-          use of the chip architecture.  This is the default.
-          Applications will usually not need special compiler flags,
-          but for reference the option is
-
-               gcc  -m64
-
-    `ABI=32'
-          The 32-bit ABI is the usual i386 conventions.  This will be
-          slower, and is not recommended except for inter-operating
-          with other code not yet 64-bit capable.  Applications must be
-          compiled with
-
-               gcc  -m32
-
-          (In GCC 2.95 and earlier there's no `-m32' option, it's the
-          only mode.)
-
-
-HPPA 2.0 (`hppa2.0*', `hppa64')
-
-    `ABI=2.0w'
-          The 2.0w ABI uses 64-bit limbs and pointers and is available
-          on HP-UX 11 or up.  Applications must be compiled with
-
-               gcc [built for 2.0w]
-               cc  +DD64
-
-    `ABI=2.0n'
-          The 2.0n ABI means the 32-bit HPPA 1.0 ABI and all its normal
-          calling conventions, but with 64-bit instructions permitted
-          within functions.  GMP uses a 64-bit `long long' for a limb.
-          This ABI is available on hppa64 GNU/Linux and on HP-UX 10 or
-          higher.  Applications must be compiled with
-
-               gcc [built for 2.0n]
-               cc  +DA2.0 +e
-
-          Note that current versions of GCC (eg. 3.2) don't generate
-          64-bit instructions for `long long' operations and so may be
-          slower than for 2.0w.  (The GMP assembly code is the same
-          though.)
-
-    `ABI=1.0'
-          HPPA 2.0 CPUs can run all HPPA 1.0 and 1.1 code in the 32-bit
-          HPPA 1.0 ABI.  No special compiler options are needed for
-          applications.
-
-     All three ABIs are available for CPU types `hppa2.0w', `hppa2.0'
-     and `hppa64', but for CPU type `hppa2.0n' only 2.0n or 1.0 are
-     considered.
-
-     Note that GCC on HP-UX has no options to choose between 2.0n and
-     2.0w modes, unlike HP `cc'.  Instead it must be built for one or
-     the other ABI.  GMP will detect how it was built, and skip to the
-     corresponding `ABI'.
-
-
-IA-64 under HP-UX (`ia64*-*-hpux*', `itanium*-*-hpux*')
-     HP-UX supports two ABIs for IA-64.  GMP performance is the same in
-     both.
-
-    `ABI=32'
-          In the 32-bit ABI, pointers, `int's and `long's are 32 bits
-          and GMP uses a 64 bit `long long' for a limb.  Applications
-          can be compiled without any special flags since this ABI is
-          the default in both HP C and GCC, but for reference the flags
-          are
-
-               gcc  -milp32
-               cc   +DD32
-
-    `ABI=64'
-          In the 64-bit ABI, `long's and pointers are 64 bits and GMP
-          uses a `long' for a limb.  Applications must be compiled with
-
-               gcc  -mlp64
-               cc   +DD64
-
-     On other IA-64 systems, GNU/Linux for instance, `ABI=64' is the
-     only choice.
-
-
-MIPS under IRIX 6 (`mips*-*-irix[6789]')
-     IRIX 6 always has a 64-bit MIPS 3 or better CPU, and supports ABIs
-     o32, n32, and 64.  n32 or 64 are recommended, and GMP performance
-     will be the same in each.  The default is n32.
-
-    `ABI=o32'
-          The o32 ABI is 32-bit pointers and integers, and no 64-bit
-          operations.  GMP will be slower than in n32 or 64, this
-          option only exists to support old compilers, eg. GCC 2.7.2.
-          Applications can be compiled with no special flags on an old
-          compiler, or on a newer compiler with
-
-               gcc  -mabi=32
-               cc   -32
-
-    `ABI=n32'
-          The n32 ABI is 32-bit pointers and integers, but with a
-          64-bit limb using a `long long'.  Applications must be
-          compiled with
-
-               gcc  -mabi=n32
-               cc   -n32
-
-    `ABI=64'
-          The 64-bit ABI is 64-bit pointers and integers.  Applications
-          must be compiled with
-
-               gcc  -mabi=64
-               cc   -64
-
-     Note that MIPS GNU/Linux, as of kernel version 2.2, doesn't have
-     the necessary support for n32 or 64 and so only gets a 32-bit limb
-     and the MIPS 2 code.
-
-
-PowerPC 64 (`powerpc64', `powerpc620', `powerpc630', `powerpc970', `power4', `power5')
-
-    `ABI=aix64'
-          The AIX 64 ABI uses 64-bit limbs and pointers and is the
-          default on PowerPC 64 `*-*-aix*' systems.  Applications must
-          be compiled with
-
-               gcc  -maix64
-               xlc  -q64
-
-    `ABI=mode64'
-          The `mode64' ABI uses 64-bit limbs and pointers, and is the
-          default on 64-bit GNU/Linux, BSD, and Mac OS X/Darwin
-          systems.  Applications must be compiled with
-
-               gcc  -m64
-
-    `ABI=mode32'
-          The `mode32' ABI uses a 64-bit `long long' limb but with the
-          chip still in 32-bit mode and using 32-bit calling
-          conventions.  This is the default on for systems where the
-          true 64-bit ABIs are unavailable.  No special compiler
-          options are needed for applications.
-
-    `ABI=32'
-          This is the basic 32-bit PowerPC ABI, with a 32-bit limb.  No
-          special compiler options are needed for applications.
-
-     GMP speed is greatest in `aix64' and `mode32'.  In `ABI=32' only
-     the 32-bit ISA is used and this doesn't make full use of a 64-bit
-     chip.  On a suitable system we could perhaps use more of the ISA,
-     but there are no plans to do so.
-
-
-Sparc V9 (`sparc64', `sparcv9', `ultrasparc*')
-
-    `ABI=64'
-          The 64-bit V9 ABI is available on the various BSD sparc64
-          ports, recent versions of Sparc64 GNU/Linux, and Solaris 2.7
-          and up (when the kernel is in 64-bit mode).  GCC 3.2 or
-          higher, or Sun `cc' is required.  On GNU/Linux, depending on
-          the default `gcc' mode, applications must be compiled with
-
-               gcc  -m64
-
-          On Solaris applications must be compiled with
-
-               gcc  -m64 -mptr64 -Wa,-xarch=v9 -mcpu=v9
-               cc   -xarch=v9
-
-          On the BSD sparc64 systems no special options are required,
-          since 64-bits is the only ABI available.
-
-    `ABI=32'
-          For the basic 32-bit ABI, GMP still uses as much of the V9
-          ISA as it can.  In the Sun documentation this combination is
-          known as "v8plus".  On GNU/Linux, depending on the default
-          `gcc' mode, applications may need to be compiled with
-
-               gcc  -m32
-
-          On Solaris, no special compiler options are required for
-          applications, though using something like the following is
-          recommended.  (`gcc' 2.8 and earlier only support `-mv8'
-          though.)
-
-               gcc  -mv8plus
-               cc   -xarch=v8plus
-
-     GMP speed is greatest in `ABI=64', so it's the default where
-     available.  The speed is partly because there are extra registers
-     available and partly because 64-bits is considered the more
-     important case and has therefore had better code written for it.
-
-     Don't be confused by the names of the `-m' and `-x' compiler
-     options, they're called `arch' but effectively control both ABI
-     and ISA.
-
-     On Solaris 2.6 and earlier, only `ABI=32' is available since the
-     kernel doesn't save all registers.
-
-     On Solaris 2.7 with the kernel in 32-bit mode, a normal native
-     build will reject `ABI=64' because the resulting executables won't
-     run.  `ABI=64' can still be built if desired by making it look
-     like a cross-compile, for example
-
-          ./configure --build=none --host=sparcv9-sun-solaris2.7 ABI=64
-
-\1f
-File: gmp.info,  Node: Notes for Package Builds,  Next: Notes for Particular Systems,  Prev: ABI and ISA,  Up: Installing GMP
-
-2.3 Notes for Package Builds
-============================
-
-GMP should present no great difficulties for packaging in a binary
-distribution.
-
-   Libtool is used to build the library and `-version-info' is set
-appropriately, having started from `3:0:0' in GMP 3.0 (*note Library
-interface versions: (libtool)Versioning.).
-
-   The GMP 4 series will be upwardly binary compatible in each release
-and will be upwardly binary compatible with all of the GMP 3 series.
-Additional function interfaces may be added in each release, so on
-systems where libtool versioning is not fully checked by the loader an
-auxiliary mechanism may be needed to express that a dynamic linked
-application depends on a new enough GMP.
-
-   An auxiliary mechanism may also be needed to express that
-`libgmpxx.la' (from `--enable-cxx', *note Build Options::) requires
-`libgmp.la' from the same GMP version, since this is not done by the
-libtool versioning, nor otherwise.  A mismatch will result in
-unresolved symbols from the linker, or perhaps the loader.
-
-   When building a package for a CPU family, care should be taken to use
-`--host' (or `--build') to choose the least common denominator among
-the CPUs which might use the package.  For example this might mean plain
-`sparc' (meaning V7) for SPARCs.
-
-   For x86s, `--enable-fat' sets things up for a fat binary build,
-making a runtime selection of optimized low level routines.  This is a
-good choice for packaging to run on a range of x86 chips.
-
-   Users who care about speed will want GMP built for their exact CPU
-type, to make best use of the available optimizations.  Providing a way
-to suitably rebuild a package may be useful.  This could be as simple
-as making it possible for a user to omit `--build' (and `--host') so
-`./config.guess' will detect the CPU.  But a way to manually specify a
-`--build' will be wanted for systems where `./config.guess' is inexact.
-
-   On systems with multiple ABIs, a packaged build will need to decide
-which among the choices is to be provided, see *Note ABI and ISA::.  A
-given run of `./configure' etc will only build one ABI.  If a second
-ABI is also required then a second run of `./configure' etc must be
-made, starting from a clean directory tree (`make distclean').
-
-   As noted under "ABI and ISA", currently no attempt is made to follow
-system conventions for install locations that vary with ABI, such as
-`/usr/lib/sparcv9' for `ABI=64' as opposed to `/usr/lib' for `ABI=32'.
-A package build can override `libdir' and other standard variables as
-necessary.
-
-   Note that `gmp.h' is a generated file, and will be architecture and
-ABI dependent.  When attempting to install two ABIs simultaneously it
-will be important that an application compile gets the correct `gmp.h'
-for its desired ABI.  If compiler include paths don't vary with ABI
-options then it might be necessary to create a `/usr/include/gmp.h'
-which tests preprocessor symbols and chooses the correct actual `gmp.h'.
-
-\1f
-File: gmp.info,  Node: Notes for Particular Systems,  Next: Known Build Problems,  Prev: Notes for Package Builds,  Up: Installing GMP
-
-2.4 Notes for Particular Systems
-================================
-
-AIX 3 and 4
-     On systems `*-*-aix[34]*' shared libraries are disabled by
-     default, since some versions of the native `ar' fail on the
-     convenience libraries used.  A shared build can be attempted with
-
-          ./configure --enable-shared --disable-static
-
-     Note that the `--disable-static' is necessary because in a shared
-     build libtool makes `libgmp.a' a symlink to `libgmp.so',
-     apparently for the benefit of old versions of `ld' which only
-     recognise `.a', but unfortunately this is done even if a fully
-     functional `ld' is available.
-
-ARM
-     On systems `arm*-*-*', versions of GCC up to and including 2.95.3
-     have a bug in unsigned division, giving wrong results for some
-     operands.  GMP `./configure' will demand GCC 2.95.4 or later.
-
-Compaq C++
-     Compaq C++ on OSF 5.1 has two flavours of `iostream', a standard
-     one and an old pre-standard one (see `man iostream_intro').  GMP
-     can only use the standard one, which unfortunately is not the
-     default but must be selected by defining `__USE_STD_IOSTREAM'.
-     Configure with for instance
-
-          ./configure --enable-cxx CPPFLAGS=-D__USE_STD_IOSTREAM
-
-Floating Point Mode
-     On some systems, the hardware floating point has a control mode
-     which can set all operations to be done in a particular precision,
-     for instance single, double or extended on x86 systems (x87
-     floating point).  The GMP functions involving a `double' cannot be
-     expected to operate to their full precision when the hardware is
-     in single precision mode.  Of course this affects all code,
-     including application code, not just GMP.
-
-MS-DOS and MS Windows
-     On an MS-DOS system DJGPP can be used to build GMP, and on an MS
-     Windows system Cygwin, DJGPP and MINGW can be used.  All three are
-     excellent ports of GCC and the various GNU tools.
-
-          `http://www.cygwin.com/'
-          `http://www.delorie.com/djgpp/'
-          `http://www.mingw.org/'
-
-     Microsoft also publishes an Interix "Services for Unix" which can
-     be used to build GMP on Windows (with a normal `./configure'), but
-     it's not free software.
-
-MS Windows DLLs
-     On systems `*-*-cygwin*', `*-*-mingw*' and `*-*-pw32*' by default
-     GMP builds only a static library, but a DLL can be built instead
-     using
-
-          ./configure --disable-static --enable-shared
-
-     Static and DLL libraries can't both be built, since certain export
-     directives in `gmp.h' must be different.
-
-     A MINGW DLL build of GMP can be used with Microsoft C.  Libtool
-     doesn't install a `.lib' format import library, but it can be
-     created with MS `lib' as follows, and copied to the install
-     directory.  Similarly for `libmp' and `libgmpxx'.
-
-          cd .libs
-          lib /def:libgmp-3.dll.def /out:libgmp-3.lib
-
-     MINGW uses the C runtime library `msvcrt.dll' for I/O, so
-     applications wanting to use the GMP I/O routines must be compiled
-     with `cl /MD' to do the same.  If one of the other C runtime
-     library choices provided by MS C is desired then the suggestion is
-     to use the GMP string functions and confine I/O to the application.
-
-Motorola 68k CPU Types
-     `m68k' is taken to mean 68000.  `m68020' or higher will give a
-     performance boost on applicable CPUs.  `m68360' can be used for
-     CPU32 series chips.  `m68302' can be used for "Dragonball" series
-     chips, though this is merely a synonym for `m68000'.
-
-OpenBSD 2.6
-     `m4' in this release of OpenBSD has a bug in `eval' that makes it
-     unsuitable for `.asm' file processing.  `./configure' will detect
-     the problem and either abort or choose another m4 in the `PATH'.
-     The bug is fixed in OpenBSD 2.7, so either upgrade or use GNU m4.
-
-Power CPU Types
-     In GMP, CPU types `power*' and `powerpc*' will each use
-     instructions not available on the other, so it's important to
-     choose the right one for the CPU that will be used.  Currently GMP
-     has no assembly code support for using just the common instruction
-     subset.  To get executables that run on both, the current
-     suggestion is to use the generic C code (CPU `none'), possibly
-     with appropriate compiler options (like `-mcpu=common' for `gcc').
-     CPU `rs6000' (which is not a CPU but a family of workstations) is
-     accepted by `config.sub', but is currently equivalent to `none'.
-
-Sparc CPU Types
-     `sparcv8' or `supersparc' on relevant systems will give a
-     significant performance increase over the V7 code selected by plain
-     `sparc'.
-
-Sparc App Regs
-     The GMP assembly code for both 32-bit and 64-bit Sparc clobbers the
-     "application registers" `g2', `g3' and `g4', the same way that the
-     GCC default `-mapp-regs' does (*note SPARC Options: (gcc)SPARC
-     Options.).
-
-     This makes that code unsuitable for use with the special V9
-     `-mcmodel=embmedany' (which uses `g4' as a data segment pointer),
-     and for applications wanting to use those registers for special
-     purposes.  In these cases the only suggestion currently is to
-     build GMP with CPU `none' to avoid the assembly code.
-
-SunOS 4
-     `/usr/bin/m4' lacks various features needed to process `.asm'
-     files, and instead `./configure' will automatically use
-     `/usr/5bin/m4', which we believe is always available (if not then
-     use GNU m4).
-
-x86 CPU Types
-     `i586', `pentium' or `pentiummmx' code is good for its intended P5
-     Pentium chips, but quite slow when run on Intel P6 class chips
-     (PPro, P-II, P-III).  `i386' is a better choice when making
-     binaries that must run on both.
-
-x86 MMX and SSE2 Code
-     If the CPU selected has MMX code but the assembler doesn't support
-     it, a warning is given and non-MMX code is used instead.  This
-     will be an inferior build, since the MMX code that's present is
-     there because it's faster than the corresponding plain integer
-     code.  The same applies to SSE2.
-
-     Old versions of `gas' don't support MMX instructions, in particular
-     version 1.92.3 that comes with FreeBSD 2.2.8 or the more recent
-     OpenBSD 3.1 doesn't.
-
-     Solaris 2.6 and 2.7 `as' generate incorrect object code for
-     register to register `movq' instructions, and so can't be used for
-     MMX code.  Install a recent `gas' if MMX code is wanted on these
-     systems.
-
-\1f
-File: gmp.info,  Node: Known Build Problems,  Next: Performance optimization,  Prev: Notes for Particular Systems,  Up: Installing GMP
-
-2.5 Known Build Problems
-========================
-
-You might find more up-to-date information at `http://gmplib.org/'.
-
-Compiler link options
-     The version of libtool currently in use rather aggressively strips
-     compiler options when linking a shared library.  This will
-     hopefully be relaxed in the future, but for now if this is a
-     problem the suggestion is to create a little script to hide them,
-     and for instance configure with
-
-          ./configure CC=gcc-with-my-options
-
-DJGPP (`*-*-msdosdjgpp*')
-     The DJGPP port of `bash' 2.03 is unable to run the `configure'
-     script, it exits silently, having died writing a preamble to
-     `config.log'.  Use `bash' 2.04 or higher.
-
-     `make all' was found to run out of memory during the final
-     `libgmp.la' link on one system tested, despite having 64Mb
-     available.  Running `make libgmp.la' directly helped, perhaps
-     recursing into the various subdirectories uses up memory.
-
-GNU binutils `strip' prior to 2.12
-     `strip' from GNU binutils 2.11 and earlier should not be used on
-     the static libraries `libgmp.a' and `libmp.a' since it will
-     discard all but the last of multiple archive members with the same
-     name, like the three versions of `init.o' in `libgmp.a'.  Binutils
-     2.12 or higher can be used successfully.
-
-     The shared libraries `libgmp.so' and `libmp.so' are not affected by
-     this and any version of `strip' can be used on them.
-
-`make' syntax error
-     On certain versions of SCO OpenServer 5 and IRIX 6.5 the native
-     `make' is unable to handle the long dependencies list for
-     `libgmp.la'.  The symptom is a "syntax error" on the following
-     line of the top-level `Makefile'.
-
-          libgmp.la: $(libgmp_la_OBJECTS) $(libgmp_la_DEPENDENCIES)
-
-     Either use GNU Make, or as a workaround remove
-     `$(libgmp_la_DEPENDENCIES)' from that line (which will make the
-     initial build work, but if any recompiling is done `libgmp.la'
-     might not be rebuilt).
-
-MacOS X (`*-*-darwin*')
-     Libtool currently only knows how to create shared libraries on
-     MacOS X using the native `cc' (which is a modified GCC), not a
-     plain GCC.  A static-only build should work though
-     (`--disable-shared').
-
-NeXT prior to 3.3
-     The system compiler on old versions of NeXT was a massacred and
-     old GCC, even if it called itself `cc'.  This compiler cannot be
-     used to build GMP, you need to get a real GCC, and install that.
-     (NeXT may have fixed this in release 3.3 of their system.)
-
-POWER and PowerPC
-     Bugs in GCC 2.7.2 (and 2.6.3) mean it can't be used to compile GMP
-     on POWER or PowerPC.  If you want to use GCC for these machines,
-     get GCC 2.7.2.1 (or later).
-
-Sequent Symmetry
-     Use the GNU assembler instead of the system assembler, since the
-     latter has serious bugs.
-
-Solaris 2.6
-     The system `sed' prints an error "Output line too long" when
-     libtool builds `libgmp.la'.  This doesn't seem to cause any
-     obvious ill effects, but GNU `sed' is recommended, to avoid any
-     doubt.
-
-Sparc Solaris 2.7 with gcc 2.95.2 in `ABI=32'
-     A shared library build of GMP seems to fail in this combination,
-     it builds but then fails the tests, apparently due to some
-     incorrect data relocations within `gmp_randinit_lc_2exp_size'.
-     The exact cause is unknown, `--disable-shared' is recommended.
-
-\1f
-File: gmp.info,  Node: Performance optimization,  Prev: Known Build Problems,  Up: Installing GMP
-
-2.6 Performance optimization
-============================
-
-For optimal performance, build GMP for the exact CPU type of the target
-computer, see *Note Build Options::.
-
-   Unlike what is the case for most other programs, the compiler
-typically doesn't matter much, since GMP uses assembly language for the
-most critical operation.
-
-   In particular for long-running GMP applications, and applications
-demanding extremely large numbers, building and running the `tuneup'
-program in the `tune' subdirectory, can be important.  For example,
-
-     cd tune
-     make tuneup
-     ./tuneup
-
-   will generate better contents for the `gmp-mparam.h' parameter file.
-
-   To use the results, put the output in the file file indicated in the
-`Parameters for ...' header.  Then recompile from scratch.
-
-   The `tuneup' program takes one useful parameter, `-f NNN', which
-instructs the program how long to check FFT multiply parameters.  If
-you're going to use GMP for extremely large numbers, you may want to
-run `tuneup' with a large NNN value.
-
-\1f
-File: gmp.info,  Node: GMP Basics,  Next: Reporting Bugs,  Prev: Installing GMP,  Up: Top
-
-3 GMP Basics
-************
-
-*Using functions, macros, data types, etc. not documented in this
-manual is strongly discouraged.  If you do so your application is
-guaranteed to be incompatible with future versions of GMP.*
-
-* Menu:
-
-* Headers and Libraries::
-* Nomenclature and Types::
-* Function Classes::
-* Variable Conventions::
-* Parameter Conventions::
-* Memory Management::
-* Reentrancy::
-* Useful Macros and Constants::
-* Compatibility with older versions::
-* Demonstration Programs::
-* Efficiency::
-* Debugging::
-* Profiling::
-* Autoconf::
-* Emacs::
-
-\1f
-File: gmp.info,  Node: Headers and Libraries,  Next: Nomenclature and Types,  Prev: GMP Basics,  Up: GMP Basics
-
-3.1 Headers and Libraries
-=========================
-
-All declarations needed to use GMP are collected in the include file
-`gmp.h'.  It is designed to work with both C and C++ compilers.
-
-     #include <gmp.h>
-
-   Note however that prototypes for GMP functions with `FILE *'
-parameters are only provided if `<stdio.h>' is included too.
-
-     #include <stdio.h>
-     #include <gmp.h>
-
-   Likewise `<stdarg.h>' (or `<varargs.h>') is required for prototypes
-with `va_list' parameters, such as `gmp_vprintf'.  And `<obstack.h>'
-for prototypes with `struct obstack' parameters, such as
-`gmp_obstack_printf', when available.
-
-   All programs using GMP must link against the `libgmp' library.  On a
-typical Unix-like system this can be done with `-lgmp', for example
-
-     gcc myprogram.c -lgmp
-
-   GMP C++ functions are in a separate `libgmpxx' library.  This is
-built and installed if C++ support has been enabled (*note Build
-Options::).  For example,
-
-     g++ mycxxprog.cc -lgmpxx -lgmp
-
-   GMP is built using Libtool and an application can use that to link
-if desired, *note GNU Libtool: (libtool)Top.
-
-   If GMP has been installed to a non-standard location then it may be
-necessary to use `-I' and `-L' compiler options to point to the right
-directories, and some sort of run-time path for a shared library.
-
-\1f
-File: gmp.info,  Node: Nomenclature and Types,  Next: Function Classes,  Prev: Headers and Libraries,  Up: GMP Basics
-
-3.2 Nomenclature and Types
-==========================
-
-In this manual, "integer" usually means a multiple precision integer, as
-defined by the GMP library.  The C data type for such integers is
-`mpz_t'.  Here are some examples of how to declare such integers:
-
-     mpz_t sum;
-
-     struct foo { mpz_t x, y; };
-
-     mpz_t vec[20];
-
-   "Rational number" means a multiple precision fraction.  The C data
-type for these fractions is `mpq_t'.  For example:
-
-     mpq_t quotient;
-
-   "Floating point number" or "Float" for short, is an arbitrary
-precision mantissa with a limited precision exponent.  The C data type
-for such objects is `mpf_t'.  For example:
-
-     mpf_t fp;
-
-   The floating point functions accept and return exponents in the C
-type `mp_exp_t'.  Currently this is usually a `long', but on some
-systems it's an `int' for efficiency.
-
-   A "limb" means the part of a multi-precision number that fits in a
-single machine word.  (We chose this word because a limb of the human
-body is analogous to a digit, only larger, and containing several
-digits.)  Normally a limb is 32 or 64 bits.  The C data type for a limb
-is `mp_limb_t'.
-
-   Counts of limbs of a multi-precision number represented in the C type
-`mp_size_t'.  Currently this is normally a `long', but on some systems
-it's an `int' for efficiency, and on some systems it will be `long
-long' in the future.
-
-   Counts of bits of a multi-precision number are represented in the C
-type `mp_bitcnt_t'.  Currently this is always an `unsigned long', but on
-some systems it will be an `unsigned long long' in the future .
-
-   "Random state" means an algorithm selection and current state data.
-The C data type for such objects is `gmp_randstate_t'.  For example:
-
-     gmp_randstate_t rstate;
-
-   Also, in general `mp_bitcnt_t' is used for bit counts and ranges, and
-`size_t' is used for byte or character counts.
-
-\1f
-File: gmp.info,  Node: Function Classes,  Next: Variable Conventions,  Prev: Nomenclature and Types,  Up: GMP Basics
-
-3.3 Function Classes
-====================
-
-There are six classes of functions in the GMP library:
-
-  1. Functions for signed integer arithmetic, with names beginning with
-     `mpz_'.  The associated type is `mpz_t'.  There are about 150
-     functions in this class.  (*note Integer Functions::)
-
-  2. Functions for rational number arithmetic, with names beginning with
-     `mpq_'.  The associated type is `mpq_t'.  There are about 40
-     functions in this class, but the integer functions can be used for
-     arithmetic on the numerator and denominator separately.  (*note
-     Rational Number Functions::)
-
-  3. Functions for floating-point arithmetic, with names beginning with
-     `mpf_'.  The associated type is `mpf_t'.  There are about 60
-     functions is this class.  (*note Floating-point Functions::)
-
-  4. Functions compatible with Berkeley MP, such as `itom', `madd', and
-     `mult'.  The associated type is `MINT'.  (*note BSD Compatible
-     Functions::)
-
-  5. Fast low-level functions that operate on natural numbers.  These
-     are used by the functions in the preceding groups, and you can
-     also call them directly from very time-critical user programs.
-     These functions' names begin with `mpn_'.  The associated type is
-     array of `mp_limb_t'.  There are about 30 (hard-to-use) functions
-     in this class.  (*note Low-level Functions::)
-
-  6. Miscellaneous functions.  Functions for setting up custom
-     allocation and functions for generating random numbers.  (*note
-     Custom Allocation::, and *note Random Number Functions::)
-
-\1f
-File: gmp.info,  Node: Variable Conventions,  Next: Parameter Conventions,  Prev: Function Classes,  Up: GMP Basics
-
-3.4 Variable Conventions
-========================
-
-GMP functions generally have output arguments before input arguments.
-This notation is by analogy with the assignment operator.  The BSD MP
-compatibility functions are exceptions, having the output arguments
-last.
-
-   GMP lets you use the same variable for both input and output in one
-call.  For example, the main function for integer multiplication,
-`mpz_mul', can be used to square `x' and put the result back in `x' with
-
-     mpz_mul (x, x, x);
-
-   Before you can assign to a GMP variable, you need to initialize it
-by calling one of the special initialization functions.  When you're
-done with a variable, you need to clear it out, using one of the
-functions for that purpose.  Which function to use depends on the type
-of variable.  See the chapters on integer functions, rational number
-functions, and floating-point functions for details.
-
-   A variable should only be initialized once, or at least cleared
-between each initialization.  After a variable has been initialized, it
-may be assigned to any number of times.
-
-   For efficiency reasons, avoid excessive initializing and clearing.
-In general, initialize near the start of a function and clear near the
-end.  For example,
-
-     void
-     foo (void)
-     {
-       mpz_t  n;
-       int    i;
-       mpz_init (n);
-       for (i = 1; i < 100; i++)
-         {
-           mpz_mul (n, ...);
-           mpz_fdiv_q (n, ...);
-           ...
-         }
-       mpz_clear (n);
-     }
-
-\1f
-File: gmp.info,  Node: Parameter Conventions,  Next: Memory Management,  Prev: Variable Conventions,  Up: GMP Basics
-
-3.5 Parameter Conventions
-=========================
-
-When a GMP variable is used as a function parameter, it's effectively a
-call-by-reference, meaning if the function stores a value there it will
-change the original in the caller.  Parameters which are input-only can
-be designated `const' to provoke a compiler error or warning on
-attempting to modify them.
-
-   When a function is going to return a GMP result, it should designate
-a parameter that it sets, like the library functions do.  More than one
-value can be returned by having more than one output parameter, again
-like the library functions.  A `return' of an `mpz_t' etc doesn't
-return the object, only a pointer, and this is almost certainly not
-what's wanted.
-
-   Here's an example accepting an `mpz_t' parameter, doing a
-calculation, and storing the result to the indicated parameter.
-
-     void
-     foo (mpz_t result, const mpz_t param, unsigned long n)
-     {
-       unsigned long  i;
-       mpz_mul_ui (result, param, n);
-       for (i = 1; i < n; i++)
-         mpz_add_ui (result, result, i*7);
-     }
-
-     int
-     main (void)
-     {
-       mpz_t  r, n;
-       mpz_init (r);
-       mpz_init_set_str (n, "123456", 0);
-       foo (r, n, 20L);
-       gmp_printf ("%Zd\n", r);
-       return 0;
-     }
-
-   `foo' works even if the mainline passes the same variable for
-`param' and `result', just like the library functions.  But sometimes
-it's tricky to make that work, and an application might not want to
-bother supporting that sort of thing.
-
-   For interest, the GMP types `mpz_t' etc are implemented as
-one-element arrays of certain structures.  This is why declaring a
-variable creates an object with the fields GMP needs, but then using it
-as a parameter passes a pointer to the object.  Note that the actual
-fields in each `mpz_t' etc are for internal use only and should not be
-accessed directly by code that expects to be compatible with future GMP
-releases.
-
-\1f
-File: gmp.info,  Node: Memory Management,  Next: Reentrancy,  Prev: Parameter Conventions,  Up: GMP Basics
-
-3.6 Memory Management
-=====================
-
-The GMP types like `mpz_t' are small, containing only a couple of sizes,
-and pointers to allocated data.  Once a variable is initialized, GMP
-takes care of all space allocation.  Additional space is allocated
-whenever a variable doesn't have enough.
-
-   `mpz_t' and `mpq_t' variables never reduce their allocated space.
-Normally this is the best policy, since it avoids frequent reallocation.
-Applications that need to return memory to the heap at some particular
-point can use `mpz_realloc2', or clear variables no longer needed.
-
-   `mpf_t' variables, in the current implementation, use a fixed amount
-of space, determined by the chosen precision and allocated at
-initialization, so their size doesn't change.
-
-   All memory is allocated using `malloc' and friends by default, but
-this can be changed, see *Note Custom Allocation::.  Temporary memory
-on the stack is also used (via `alloca'), but this can be changed at
-build-time if desired, see *Note Build Options::.
-
-\1f
-File: gmp.info,  Node: Reentrancy,  Next: Useful Macros and Constants,  Prev: Memory Management,  Up: GMP Basics
-
-3.7 Reentrancy
-==============
-
-GMP is reentrant and thread-safe, with some exceptions:
-
-   * If configured with `--enable-alloca=malloc-notreentrant' (or with
-     `--enable-alloca=notreentrant' when `alloca' is not available),
-     then naturally GMP is not reentrant.
-
-   * `mpf_set_default_prec' and `mpf_init' use a global variable for the
-     selected precision.  `mpf_init2' can be used instead, and in the
-     C++ interface an explicit precision to the `mpf_class' constructor.
-
-   * `mpz_random' and the other old random number functions use a global
-     random state and are hence not reentrant.  The newer random number
-     functions that accept a `gmp_randstate_t' parameter can be used
-     instead.
-
-   * `gmp_randinit' (obsolete) returns an error indication through a
-     global variable, which is not thread safe.  Applications are
-     advised to use `gmp_randinit_default' or `gmp_randinit_lc_2exp'
-     instead.
-
-   * `mp_set_memory_functions' uses global variables to store the
-     selected memory allocation functions.
-
-   * If the memory allocation functions set by a call to
-     `mp_set_memory_functions' (or `malloc' and friends by default) are
-     not reentrant, then GMP will not be reentrant either.
-
-   * If the standard I/O functions such as `fwrite' are not reentrant
-     then the GMP I/O functions using them will not be reentrant either.
-
-   * It's safe for two threads to read from the same GMP variable
-     simultaneously, but it's not safe for one to read while the
-     another might be writing, nor for two threads to write
-     simultaneously.  It's not safe for two threads to generate a
-     random number from the same `gmp_randstate_t' simultaneously,
-     since this involves an update of that variable.
-
-\1f
-File: gmp.info,  Node: Useful Macros and Constants,  Next: Compatibility with older versions,  Prev: Reentrancy,  Up: GMP Basics
-
-3.8 Useful Macros and Constants
-===============================
-
- -- Global Constant: const int mp_bits_per_limb
-     The number of bits per limb.
-
- -- Macro: __GNU_MP_VERSION
- -- Macro: __GNU_MP_VERSION_MINOR
- -- Macro: __GNU_MP_VERSION_PATCHLEVEL
-     The major and minor GMP version, and patch level, respectively, as
-     integers.  For GMP i.j, these numbers will be i, j, and 0,
-     respectively.  For GMP i.j.k, these numbers will be i, j, and k,
-     respectively.
-
- -- Global Constant: const char * const gmp_version
-     The GMP version number, as a null-terminated string, in the form
-     "i.j.k".  This release is "5.0.1".  Note that the format "i.j" was
-     used when k was zero was used before version 4.3.0.
-
- -- Macro: __GMP_CC
- -- Macro: __GMP_CFLAGS
-     The compiler and compiler flags, respectively, used when compiling
-     GMP, as strings.
-
-\1f
-File: gmp.info,  Node: Compatibility with older versions,  Next: Demonstration Programs,  Prev: Useful Macros and Constants,  Up: GMP Basics
-
-3.9 Compatibility with older versions
-=====================================
-
-This version of GMP is upwardly binary compatible with all 4.x and 3.x
-versions, and upwardly compatible at the source level with all 2.x
-versions, with the following exceptions.
-
-   * `mpn_gcd' had its source arguments swapped as of GMP 3.0, for
-     consistency with other `mpn' functions.
-
-   * `mpf_get_prec' counted precision slightly differently in GMP 3.0
-     and 3.0.1, but in 3.1 reverted to the 2.x style.
-
-   There are a number of compatibility issues between GMP 1 and GMP 2
-that of course also apply when porting applications from GMP 1 to GMP
-4.  Please see the GMP 2 manual for details.
-
-   The Berkeley MP compatibility library (*note BSD Compatible
-Functions::) is source and binary compatible with the standard `libmp'.
-
-\1f
-File: gmp.info,  Node: Demonstration Programs,  Next: Efficiency,  Prev: Compatibility with older versions,  Up: GMP Basics
-
-3.10 Demonstration programs
-===========================
-
-The `demos' subdirectory has some sample programs using GMP.  These
-aren't built or installed, but there's a `Makefile' with rules for them.
-For instance,
-
-     make pexpr
-     ./pexpr 68^975+10
-
-The following programs are provided
-
-   * `pexpr' is an expression evaluator, the program used on the GMP
-     web page.
-
-   * The `calc' subdirectory has a similar but simpler evaluator using
-     `lex' and `yacc'.
-
-   * The `expr' subdirectory is yet another expression evaluator, a
-     library designed for ease of use within a C program.  See
-     `demos/expr/README' for more information.
-
-   * `factorize' is a Pollard-Rho factorization program.
-
-   * `isprime' is a command-line interface to the `mpz_probab_prime_p'
-     function.
-
-   * `primes' counts or lists primes in an interval, using a sieve.
-
-   * `qcn' is an example use of `mpz_kronecker_ui' to estimate quadratic
-     class numbers.
-
-   * The `perl' subdirectory is a comprehensive perl interface to GMP.
-     See `demos/perl/INSTALL' for more information.  Documentation is
-     in POD format in `demos/perl/GMP.pm'.
-
-   As an aside, consideration has been given at various times to some
-sort of expression evaluation within the main GMP library.  Going
-beyond something minimal quickly leads to matters like user-defined
-functions, looping, fixnums for control variables, etc, which are
-considered outside the scope of GMP (much closer to language
-interpreters or compilers, *Note Language Bindings::.)  Something
-simple for program input convenience may yet be a possibility, a
-combination of the `expr' demo and the `pexpr' tree back-end perhaps.
-But for now the above evaluators are offered as illustrations.
-
-\1f
-File: gmp.info,  Node: Efficiency,  Next: Debugging,  Prev: Demonstration Programs,  Up: GMP Basics
-
-3.11 Efficiency
-===============
-
-Small Operands
-     On small operands, the time for function call overheads and memory
-     allocation can be significant in comparison to actual calculation.
-     This is unavoidable in a general purpose variable precision
-     library, although GMP attempts to be as efficient as it can on
-     both large and small operands.
-
-Static Linking
-     On some CPUs, in particular the x86s, the static `libgmp.a' should
-     be used for maximum speed, since the PIC code in the shared
-     `libgmp.so' will have a small overhead on each function call and
-     global data address.  For many programs this will be
-     insignificant, but for long calculations there's a gain to be had.
-
-Initializing and Clearing
-     Avoid excessive initializing and clearing of variables, since this
-     can be quite time consuming, especially in comparison to otherwise
-     fast operations like addition.
-
-     A language interpreter might want to keep a free list or stack of
-     initialized variables ready for use.  It should be possible to
-     integrate something like that with a garbage collector too.
-
-Reallocations
-     An `mpz_t' or `mpq_t' variable used to hold successively increasing
-     values will have its memory repeatedly `realloc'ed, which could be
-     quite slow or could fragment memory, depending on the C library.
-     If an application can estimate the final size then `mpz_init2' or
-     `mpz_realloc2' can be called to allocate the necessary space from
-     the beginning (*note Initializing Integers::).
-
-     It doesn't matter if a size set with `mpz_init2' or `mpz_realloc2'
-     is too small, since all functions will do a further reallocation
-     if necessary.  Badly overestimating memory required will waste
-     space though.
-
-`2exp' Functions
-     It's up to an application to call functions like `mpz_mul_2exp'
-     when appropriate.  General purpose functions like `mpz_mul' make
-     no attempt to identify powers of two or other special forms,
-     because such inputs will usually be very rare and testing every
-     time would be wasteful.
-
-`ui' and `si' Functions
-     The `ui' functions and the small number of `si' functions exist for
-     convenience and should be used where applicable.  But if for
-     example an `mpz_t' contains a value that fits in an `unsigned
-     long' there's no need extract it and call a `ui' function, just
-     use the regular `mpz' function.
-
-In-Place Operations
-     `mpz_abs', `mpq_abs', `mpf_abs', `mpz_neg', `mpq_neg' and
-     `mpf_neg' are fast when used for in-place operations like
-     `mpz_abs(x,x)', since in the current implementation only a single
-     field of `x' needs changing.  On suitable compilers (GCC for
-     instance) this is inlined too.
-
-     `mpz_add_ui', `mpz_sub_ui', `mpf_add_ui' and `mpf_sub_ui' benefit
-     from an in-place operation like `mpz_add_ui(x,x,y)', since usually
-     only one or two limbs of `x' will need to be changed.  The same
-     applies to the full precision `mpz_add' etc if `y' is small.  If
-     `y' is big then cache locality may be helped, but that's all.
-
-     `mpz_mul' is currently the opposite, a separate destination is
-     slightly better.  A call like `mpz_mul(x,x,y)' will, unless `y' is
-     only one limb, make a temporary copy of `x' before forming the
-     result.  Normally that copying will only be a tiny fraction of the
-     time for the multiply, so this is not a particularly important
-     consideration.
-
-     `mpz_set', `mpq_set', `mpq_set_num', `mpf_set', etc, make no
-     attempt to recognise a copy of something to itself, so a call like
-     `mpz_set(x,x)' will be wasteful.  Naturally that would never be
-     written deliberately, but if it might arise from two pointers to
-     the same object then a test to avoid it might be desirable.
-
-          if (x != y)
-            mpz_set (x, y);
-
-     Note that it's never worth introducing extra `mpz_set' calls just
-     to get in-place operations.  If a result should go to a particular
-     variable then just direct it there and let GMP take care of data
-     movement.
-
-Divisibility Testing (Small Integers)
-     `mpz_divisible_ui_p' and `mpz_congruent_ui_p' are the best
-     functions for testing whether an `mpz_t' is divisible by an
-     individual small integer.  They use an algorithm which is faster
-     than `mpz_tdiv_ui', but which gives no useful information about
-     the actual remainder, only whether it's zero (or a particular
-     value).
-
-     However when testing divisibility by several small integers, it's
-     best to take a remainder modulo their product, to save
-     multi-precision operations.  For instance to test whether a number
-     is divisible by any of 23, 29 or 31 take a remainder modulo
-     23*29*31 = 20677 and then test that.
-
-     The division functions like `mpz_tdiv_q_ui' which give a quotient
-     as well as a remainder are generally a little slower than the
-     remainder-only functions like `mpz_tdiv_ui'.  If the quotient is
-     only rarely wanted then it's probably best to just take a
-     remainder and then go back and calculate the quotient if and when
-     it's wanted (`mpz_divexact_ui' can be used if the remainder is
-     zero).
-
-Rational Arithmetic
-     The `mpq' functions operate on `mpq_t' values with no common
-     factors in the numerator and denominator.  Common factors are
-     checked-for and cast out as necessary.  In general, cancelling
-     factors every time is the best approach since it minimizes the
-     sizes for subsequent operations.
-
-     However, applications that know something about the factorization
-     of the values they're working with might be able to avoid some of
-     the GCDs used for canonicalization, or swap them for divisions.
-     For example when multiplying by a prime it's enough to check for
-     factors of it in the denominator instead of doing a full GCD.  Or
-     when forming a big product it might be known that very little
-     cancellation will be possible, and so canonicalization can be left
-     to the end.
-
-     The `mpq_numref' and `mpq_denref' macros give access to the
-     numerator and denominator to do things outside the scope of the
-     supplied `mpq' functions.  *Note Applying Integer Functions::.
-
-     The canonical form for rationals allows mixed-type `mpq_t' and
-     integer additions or subtractions to be done directly with
-     multiples of the denominator.  This will be somewhat faster than
-     `mpq_add'.  For example,
-
-          /* mpq increment */
-          mpz_add (mpq_numref(q), mpq_numref(q), mpq_denref(q));
-
-          /* mpq += unsigned long */
-          mpz_addmul_ui (mpq_numref(q), mpq_denref(q), 123UL);
-
-          /* mpq -= mpz */
-          mpz_submul (mpq_numref(q), mpq_denref(q), z);
-
-Number Sequences
-     Functions like `mpz_fac_ui', `mpz_fib_ui' and `mpz_bin_uiui' are
-     designed for calculating isolated values.  If a range of values is
-     wanted it's probably best to call to get a starting point and
-     iterate from there.
-
-Text Input/Output
-     Hexadecimal or octal are suggested for input or output in text
-     form.  Power-of-2 bases like these can be converted much more
-     efficiently than other bases, like decimal.  For big numbers
-     there's usually nothing of particular interest to be seen in the
-     digits, so the base doesn't matter much.
-
-     Maybe we can hope octal will one day become the normal base for
-     everyday use, as proposed by King Charles XII of Sweden and later
-     reformers.
-
-\1f
-File: gmp.info,  Node: Debugging,  Next: Profiling,  Prev: Efficiency,  Up: GMP Basics
-
-3.12 Debugging
-==============
-
-Stack Overflow
-     Depending on the system, a segmentation violation or bus error
-     might be the only indication of stack overflow.  See
-     `--enable-alloca' choices in *Note Build Options::, for how to
-     address this.
-
-     In new enough versions of GCC, `-fstack-check' may be able to
-     ensure an overflow is recognised by the system before too much
-     damage is done, or `-fstack-limit-symbol' or
-     `-fstack-limit-register' may be able to add checking if the system
-     itself doesn't do any (*note Options for Code Generation:
-     (gcc)Code Gen Options.).  These options must be added to the
-     `CFLAGS' used in the GMP build (*note Build Options::), adding
-     them just to an application will have no effect.  Note also
-     they're a slowdown, adding overhead to each function call and each
-     stack allocation.
-
-Heap Problems
-     The most likely cause of application problems with GMP is heap
-     corruption.  Failing to `init' GMP variables will have
-     unpredictable effects, and corruption arising elsewhere in a
-     program may well affect GMP.  Initializing GMP variables more than
-     once or failing to clear them will cause memory leaks.
-
-     In all such cases a `malloc' debugger is recommended.  On a GNU or
-     BSD system the standard C library `malloc' has some diagnostic
-     facilities, see *Note Allocation Debugging: (libc)Allocation
-     Debugging, or `man 3 malloc'.  Other possibilities, in no
-     particular order, include
-
-          `http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/'
-          `http://dmalloc.com/'
-          `http://www.perens.com/FreeSoftware/'  (electric fence)
-          `http://packages.debian.org/stable/devel/fda'
-          `http://www.gnupdate.org/components/leakbug/'
-          `http://people.redhat.com/~otaylor/memprof/'
-          `http://www.cbmamiga.demon.co.uk/mpatrol/'
-
-     The GMP default allocation routines in `memory.c' also have a
-     simple sentinel scheme which can be enabled with `#define DEBUG'
-     in that file.  This is mainly designed for detecting buffer
-     overruns during GMP development, but might find other uses.
-
-Stack Backtraces
-     On some systems the compiler options GMP uses by default can
-     interfere with debugging.  In particular on x86 and 68k systems
-     `-fomit-frame-pointer' is used and this generally inhibits stack
-     backtracing.  Recompiling without such options may help while
-     debugging, though the usual caveats about it potentially moving a
-     memory problem or hiding a compiler bug will apply.
-
-GDB, the GNU Debugger
-     A sample `.gdbinit' is included in the distribution, showing how
-     to call some undocumented dump functions to print GMP variables
-     from within GDB.  Note that these functions shouldn't be used in
-     final application code since they're undocumented and may be
-     subject to incompatible changes in future versions of GMP.
-
-Source File Paths
-     GMP has multiple source files with the same name, in different
-     directories.  For example `mpz', `mpq' and `mpf' each have an
-     `init.c'.  If the debugger can't already determine the right one
-     it may help to build with absolute paths on each C file.  One way
-     to do that is to use a separate object directory with an absolute
-     path to the source directory.
-
-          cd /my/build/dir
-          /my/source/dir/gmp-5.0.1/configure
-
-     This works via `VPATH', and might require GNU `make'.  Alternately
-     it might be possible to change the `.c.lo' rules appropriately.
-
-Assertion Checking
-     The build option `--enable-assert' is available to add some
-     consistency checks to the library (see *Note Build Options::).
-     These are likely to be of limited value to most applications.
-     Assertion failures are just as likely to indicate memory
-     corruption as a library or compiler bug.
-
-     Applications using the low-level `mpn' functions, however, will
-     benefit from `--enable-assert' since it adds checks on the
-     parameters of most such functions, many of which have subtle
-     restrictions on their usage.  Note however that only the generic C
-     code has checks, not the assembly code, so CPU `none' should be
-     used for maximum checking.
-
-Temporary Memory Checking
-     The build option `--enable-alloca=debug' arranges that each block
-     of temporary memory in GMP is allocated with a separate call to
-     `malloc' (or the allocation function set with
-     `mp_set_memory_functions').
-
-     This can help a malloc debugger detect accesses outside the
-     intended bounds, or detect memory not released.  In a normal
-     build, on the other hand, temporary memory is allocated in blocks
-     which GMP divides up for its own use, or may be allocated with a
-     compiler builtin `alloca' which will go nowhere near any malloc
-     debugger hooks.
-
-Maximum Debuggability
-     To summarize the above, a GMP build for maximum debuggability
-     would be
-
-          ./configure --disable-shared --enable-assert \
-            --enable-alloca=debug --host=none CFLAGS=-g
-
-     For C++, add `--enable-cxx CXXFLAGS=-g'.
-
-Checker
-     The GCC checker (`http://savannah.nongnu.org/projects/checker/')
-     can be used with GMP.  It contains a stub library which means GMP
-     applications compiled with checker can use a normal GMP build.
-
-     A build of GMP with checking within GMP itself can be made.  This
-     will run very very slowly.  On GNU/Linux for example,
-
-          ./configure --host=none-pc-linux-gnu CC=checkergcc
-
-     `--host=none' must be used, since the GMP assembly code doesn't
-     support the checking scheme.  The GMP C++ features cannot be used,
-     since current versions of checker (0.9.9.1) don't yet support the
-     standard C++ library.
-
-Valgrind
-     The valgrind program (`http://valgrind.org/') is a memory checker
-     for x86s.  It translates and emulates machine instructions to do
-     strong checks for uninitialized data (at the level of individual
-     bits), memory accesses through bad pointers, and memory leaks.
-
-     Recent versions of Valgrind are getting support for MMX and
-     SSE/SSE2 instructions, for past versions GMP will need to be
-     configured not to use those, ie. for an x86 without them (for
-     instance plain `i486').
-
-Other Problems
-     Any suspected bug in GMP itself should be isolated to make sure
-     it's not an application problem, see *Note Reporting Bugs::.
-
-\1f
-File: gmp.info,  Node: Profiling,  Next: Autoconf,  Prev: Debugging,  Up: GMP Basics
-
-3.13 Profiling
-==============
-
-Running a program under a profiler is a good way to find where it's
-spending most time and where improvements can be best sought.  The
-profiling choices for a GMP build are as follows.
-
-`--disable-profiling'
-     The default is to add nothing special for profiling.
-
-     It should be possible to just compile the mainline of a program
-     with `-p' and use `prof' to get a profile consisting of
-     timer-based sampling of the program counter.  Most of the GMP
-     assembly code has the necessary symbol information.
-
-     This approach has the advantage of minimizing interference with
-     normal program operation, but on most systems the resolution of
-     the sampling is quite low (10 milliseconds for instance),
-     requiring long runs to get accurate information.
-
-`--enable-profiling=prof'
-     Build with support for the system `prof', which means `-p' added
-     to the `CFLAGS'.
-
-     This provides call counting in addition to program counter
-     sampling, which allows the most frequently called routines to be
-     identified, and an average time spent in each routine to be
-     determined.
-
-     The x86 assembly code has support for this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-p' and therefore won't appear in the call counts.
-
-     On some systems, such as GNU/Linux, `-p' in fact means `-pg' and in
-     this case `--enable-profiling=gprof' described below should be used
-     instead.
-
-`--enable-profiling=gprof'
-     Build with support for `gprof', which means `-pg' added to the
-     `CFLAGS'.
-
-     This provides call graph construction in addition to call counting
-     and program counter sampling, which makes it possible to count
-     calls coming from different locations.  For example the number of
-     calls to `mpn_mul' from `mpz_mul' versus the number from
-     `mpf_mul'.  The program counter sampling is still flat though, so
-     only a total time in `mpn_mul' would be accumulated, not a
-     separate amount for each call site.
-
-     The x86 assembly code has support for this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-pg' and therefore not be included in the call counts.
-
-     On x86 and m68k systems `-pg' and `-fomit-frame-pointer' are
-     incompatible, so the latter is omitted from the default flags in
-     that case, which might result in poorer code generation.
-
-     Incidentally, it should be possible to use the `gprof' program
-     with a plain `--enable-profiling=prof' build.  But in that case
-     only the `gprof -p' flat profile and call counts can be expected
-     to be valid, not the `gprof -q' call graph.
-
-`--enable-profiling=instrument'
-     Build with the GCC option `-finstrument-functions' added to the
-     `CFLAGS' (*note Options for Code Generation: (gcc)Code Gen
-     Options.).
-
-     This inserts special instrumenting calls at the start and end of
-     each function, allowing exact timing and full call graph
-     construction.
-
-     This instrumenting is not normally a standard system feature and
-     will require support from an external library, such as
-
-          `http://sourceforge.net/projects/fnccheck/'
-
-     This should be included in `LIBS' during the GMP configure so that
-     test programs will link.  For example,
-
-          ./configure --enable-profiling=instrument LIBS=-lfc
-
-     On a GNU system the C library provides dummy instrumenting
-     functions, so programs compiled with this option will link.  In
-     this case it's only necessary to ensure the correct library is
-     added when linking an application.
-
-     The x86 assembly code supports this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-finstrument-functions' meaning time spent in them will
-     effectively be attributed to their caller.
-
-\1f
-File: gmp.info,  Node: Autoconf,  Next: Emacs,  Prev: Profiling,  Up: GMP Basics
-
-3.14 Autoconf
-=============
-
-Autoconf based applications can easily check whether GMP is installed.
-The only thing to be noted is that GMP library symbols from version 3
-onwards have prefixes like `__gmpz'.  The following therefore would be
-a simple test,
-
-     AC_CHECK_LIB(gmp, __gmpz_init)
-
-   This just uses the default `AC_CHECK_LIB' actions for found or not
-found, but an application that must have GMP would want to generate an
-error if not found.  For example,
-
-     AC_CHECK_LIB(gmp, __gmpz_init, ,
-       [AC_MSG_ERROR([GNU MP not found, see http://gmplib.org/])])
-
-   If functions added in some particular version of GMP are required,
-then one of those can be used when checking.  For example `mpz_mul_si'
-was added in GMP 3.1,
-
-     AC_CHECK_LIB(gmp, __gmpz_mul_si, ,
-       [AC_MSG_ERROR(
-       [GNU MP not found, or not 3.1 or up, see http://gmplib.org/])])
-
-   An alternative would be to test the version number in `gmp.h' using
-say `AC_EGREP_CPP'.  That would make it possible to test the exact
-version, if some particular sub-minor release is known to be necessary.
-
-   In general it's recommended that applications should simply demand a
-new enough GMP rather than trying to provide supplements for features
-not available in past versions.
-
-   Occasionally an application will need or want to know the size of a
-type at configuration or preprocessing time, not just with `sizeof' in
-the code.  This can be done in the normal way with `mp_limb_t' etc, but
-GMP 4.0 or up is best for this, since prior versions needed certain
-`-D' defines on systems using a `long long' limb.  The following would
-suit Autoconf 2.50 or up,
-
-     AC_CHECK_SIZEOF(mp_limb_t, , [#include <gmp.h>])
-
-\1f
-File: gmp.info,  Node: Emacs,  Prev: Autoconf,  Up: GMP Basics
-
-3.15 Emacs
-==========
-
-<C-h C-i> (`info-lookup-symbol') is a good way to find documentation on
-C functions while editing (*note Info Documentation Lookup: (emacs)Info
-Lookup.).
-
-   The GMP manual can be included in such lookups by putting the
-following in your `.emacs',
-
-     (eval-after-load "info-look"
-       '(let ((mode-value (assoc 'c-mode (assoc 'symbol info-lookup-alist))))
-          (setcar (nthcdr 3 mode-value)
-                  (cons '("(gmp)Function Index" nil "^ -.* " "\\>")
-                        (nth 3 mode-value)))))
-
-\1f
-File: gmp.info,  Node: Reporting Bugs,  Next: Integer Functions,  Prev: GMP Basics,  Up: Top
-
-4 Reporting Bugs
-****************
-
-If you think you have found a bug in the GMP library, please
-investigate it and report it.  We have made this library available to
-you, and it is not too much to ask you to report the bugs you find.
-
-   Before you report a bug, check it's not already addressed in *Note
-Known Build Problems::, or perhaps *Note Notes for Particular
-Systems::.  You may also want to check `http://gmplib.org/' for patches
-for this release.
-
-   Please include the following in any report,
-
-   * The GMP version number, and if pre-packaged or patched then say so.
-
-   * A test program that makes it possible for us to reproduce the bug.
-     Include instructions on how to run the program.
-
-   * A description of what is wrong.  If the results are incorrect, in
-     what way.  If you get a crash, say so.
-
-   * If you get a crash, include a stack backtrace from the debugger if
-     it's informative (`where' in `gdb', or `$C' in `adb').
-
-   * Please do not send core dumps, executables or `strace's.
-
-   * The configuration options you used when building GMP, if any.
-
-   * The name of the compiler and its version.  For `gcc', get the
-     version with `gcc -v', otherwise perhaps `what `which cc`', or
-     similar.
-
-   * The output from running `uname -a'.
-
-   * The output from running `./config.guess', and from running
-     `./configfsf.guess' (might be the same).
-
-   * If the bug is related to `configure', then the compressed contents
-     of `config.log'.
-
-   * If the bug is related to an `asm' file not assembling, then the
-     contents of `config.m4' and the offending line or lines from the
-     temporary `mpn/tmp-<file>.s'.
-
-   Please make an effort to produce a self-contained report, with
-something definite that can be tested or debugged.  Vague queries or
-piecemeal messages are difficult to act on and don't help the
-development effort.
-
-   It is not uncommon that an observed problem is actually due to a bug
-in the compiler; the GMP code tends to explore interesting corners in
-compilers.
-
-   If your bug report is good, we will do our best to help you get a
-corrected version of the library; if the bug report is poor, we won't
-do anything about it (except maybe ask you to send a better report).
-
-   Send your report to: <gmp-bugs@gmplib.org>.
-
-   If you think something in this manual is unclear, or downright
-incorrect, or if the language needs to be improved, please send a note
-to the same address.
-
-\1f
-File: gmp.info,  Node: Integer Functions,  Next: Rational Number Functions,  Prev: Reporting Bugs,  Up: Top
-
-5 Integer Functions
-*******************
-
-This chapter describes the GMP functions for performing integer
-arithmetic.  These functions start with the prefix `mpz_'.
-
-   GMP integers are stored in objects of type `mpz_t'.
-
-* Menu:
-
-* Initializing Integers::
-* Assigning Integers::
-* Simultaneous Integer Init & Assign::
-* Converting Integers::
-* Integer Arithmetic::
-* Integer Division::
-* Integer Exponentiation::
-* Integer Roots::
-* Number Theoretic Functions::
-* Integer Comparisons::
-* Integer Logic and Bit Fiddling::
-* I/O of Integers::
-* Integer Random Numbers::
-* Integer Import and Export::
-* Miscellaneous Integer Functions::
-* Integer Special Functions::
-
-\1f
-File: gmp.info,  Node: Initializing Integers,  Next: Assigning Integers,  Prev: Integer Functions,  Up: Integer Functions
-
-5.1 Initialization Functions
-============================
-
-The functions for integer arithmetic assume that all integer objects are
-initialized.  You do that by calling the function `mpz_init'.  For
-example,
-
-     {
-       mpz_t integ;
-       mpz_init (integ);
-       ...
-       mpz_add (integ, ...);
-       ...
-       mpz_sub (integ, ...);
-
-       /* Unless the program is about to exit, do ... */
-       mpz_clear (integ);
-     }
-
-   As you can see, you can store new values any number of times, once an
-object is initialized.
-
- -- Function: void mpz_init (mpz_t X)
-     Initialize X, and set its value to 0.
-
- -- Function: void mpz_inits (mpz_t X, ...)
-     Initialize a NULL-terminated list of `mpz_t' variables, and set
-     their values to 0.
-
- -- Function: void mpz_init2 (mpz_t X, mp_bitcnt_t N)
-     Initialize X, with space for N-bit numbers, and set its value to 0.
-     Calling this function instead of `mpz_init' or `mpz_inits' is never
-     necessary; reallocation is handled automatically by GMP when
-     needed.
-
-     N is only the initial space, X will grow automatically in the
-     normal way, if necessary, for subsequent values stored.
-     `mpz_init2' makes it possible to avoid such reallocations if a
-     maximum size is known in advance.
-
- -- Function: void mpz_clear (mpz_t X)
-     Free the space occupied by X.  Call this function for all `mpz_t'
-     variables when you are done with them.
-
- -- Function: void mpz_clears (mpz_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpz_t'
-     variables.
-
- -- Function: void mpz_realloc2 (mpz_t X, mp_bitcnt_t N)
-     Change the space allocated for X to N bits.  The value in X is
-     preserved if it fits, or is set to 0 if not.
-
-     Calling this function is never necessary; reallocation is handled
-     automatically by GMP when needed.  But this function can be used
-     to increase the space for a variable in order to avoid repeated
-     automatic reallocations, or to decrease it to give memory back to
-     the heap.
-
-\1f
-File: gmp.info,  Node: Assigning Integers,  Next: Simultaneous Integer Init & Assign,  Prev: Initializing Integers,  Up: Integer Functions
-
-5.2 Assignment Functions
-========================
-
-These functions assign new values to already initialized integers
-(*note Initializing Integers::).
-
- -- Function: void mpz_set (mpz_t ROP, mpz_t OP)
- -- Function: void mpz_set_ui (mpz_t ROP, unsigned long int OP)
- -- Function: void mpz_set_si (mpz_t ROP, signed long int OP)
- -- Function: void mpz_set_d (mpz_t ROP, double OP)
- -- Function: void mpz_set_q (mpz_t ROP, mpq_t OP)
- -- Function: void mpz_set_f (mpz_t ROP, mpf_t OP)
-     Set the value of ROP from OP.
-
-     `mpz_set_d', `mpz_set_q' and `mpz_set_f' truncate OP to make it an
-     integer.
-
- -- Function: int mpz_set_str (mpz_t ROP, char *STR, int BASE)
-     Set the value of ROP from STR, a null-terminated C string in base
-     BASE.  White space is allowed in the string, and is simply ignored.
-
-     The BASE may vary from 2 to 62, or if BASE is 0, then the leading
-     characters are used: `0x' and `0X' for hexadecimal, `0b' and `0B'
-     for binary, `0' for octal, or decimal otherwise.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value.  For bases 37 to 62, upper-case
-     letter represent the usual 10..35 while lower-case letter
-     represent 36..61.
-
-     This function returns 0 if the entire string is a valid number in
-     base BASE.  Otherwise it returns -1.
-
- -- Function: void mpz_swap (mpz_t ROP1, mpz_t ROP2)
-     Swap the values ROP1 and ROP2 efficiently.
-
-\1f
-File: gmp.info,  Node: Simultaneous Integer Init & Assign,  Next: Converting Integers,  Prev: Assigning Integers,  Up: Integer Functions
-
-5.3 Combined Initialization and Assignment Functions
-====================================================
-
-For convenience, GMP provides a parallel series of initialize-and-set
-functions which initialize the output and then store the value there.
-These functions' names have the form `mpz_init_set...'
-
-   Here is an example of using one:
-
-     {
-       mpz_t pie;
-       mpz_init_set_str (pie, "3141592653589793238462643383279502884", 10);
-       ...
-       mpz_sub (pie, ...);
-       ...
-       mpz_clear (pie);
-     }
-
-Once the integer has been initialized by any of the `mpz_init_set...'
-functions, it can be used as the source or destination operand for the
-ordinary integer functions.  Don't use an initialize-and-set function
-on a variable already initialized!
-
- -- Function: void mpz_init_set (mpz_t ROP, mpz_t OP)
- -- Function: void mpz_init_set_ui (mpz_t ROP, unsigned long int OP)
- -- Function: void mpz_init_set_si (mpz_t ROP, signed long int OP)
- -- Function: void mpz_init_set_d (mpz_t ROP, double OP)
-     Initialize ROP with limb space and set the initial numeric value
-     from OP.
-
- -- Function: int mpz_init_set_str (mpz_t ROP, char *STR, int BASE)
-     Initialize ROP and set its value like `mpz_set_str' (see its
-     documentation above for details).
-
-     If the string is a correct base BASE number, the function returns
-     0; if an error occurs it returns -1.  ROP is initialized even if
-     an error occurs.  (I.e., you have to call `mpz_clear' for it.)
-
-\1f
-File: gmp.info,  Node: Converting Integers,  Next: Integer Arithmetic,  Prev: Simultaneous Integer Init & Assign,  Up: Integer Functions
-
-5.4 Conversion Functions
-========================
-
-This section describes functions for converting GMP integers to
-standard C types.  Functions for converting _to_ GMP integers are
-described in *Note Assigning Integers:: and *Note I/O of Integers::.
-
- -- Function: unsigned long int mpz_get_ui (mpz_t OP)
-     Return the value of OP as an `unsigned long'.
-
-     If OP is too big to fit an `unsigned long' then just the least
-     significant bits that do fit are returned.  The sign of OP is
-     ignored, only the absolute value is used.
-
- -- Function: signed long int mpz_get_si (mpz_t OP)
-     If OP fits into a `signed long int' return the value of OP.
-     Otherwise return the least significant part of OP, with the same
-     sign as OP.
-
-     If OP is too big to fit in a `signed long int', the returned
-     result is probably not very useful.  To find out if the value will
-     fit, use the function `mpz_fits_slong_p'.
-
- -- Function: double mpz_get_d (mpz_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent from the conversion is too big, the result is
-     system dependent.  An infinity is returned where available.  A
-     hardware overflow trap may or may not occur.
-
- -- Function: double mpz_get_d_2exp (signed long int *EXP, mpz_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero), and returning the exponent separately.
-
-     The return value is in the range 0.5<=abs(D)<1 and the exponent is
-     stored to `*EXP'.  D * 2^EXP is the (truncated) OP value.  If OP
-     is zero, the return is 0.0 and 0 is stored to `*EXP'.
-
-     This is similar to the standard C `frexp' function (*note
-     Normalization Functions: (libc)Normalization Functions.).
-
- -- Function: char * mpz_get_str (char *STR, int BASE, mpz_t OP)
-     Convert OP to a string of digits in base BASE.  The base argument
-     may vary from 2 to 62 or from -2 to -36.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of storage large
-     enough for the result, that being `mpz_sizeinbase (OP, BASE) + 2'.
-     The two extra bytes are for a possible minus sign, and the
-     null-terminator.
-
-     A pointer to the result string is returned, being either the
-     allocated block, or the given STR.
-
-\1f
-File: gmp.info,  Node: Integer Arithmetic,  Next: Integer Division,  Prev: Converting Integers,  Up: Integer Functions
-
-5.5 Arithmetic Functions
-========================
-
- -- Function: void mpz_add (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_add_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 + OP2.
-
- -- Function: void mpz_sub (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_sub_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
- -- Function: void mpz_ui_sub (mpz_t ROP, unsigned long int OP1, mpz_t
-          OP2)
-     Set ROP to OP1 - OP2.
-
- -- Function: void mpz_mul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_mul_si (mpz_t ROP, mpz_t OP1, long int OP2)
- -- Function: void mpz_mul_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 times OP2.
-
- -- Function: void mpz_addmul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_addmul_ui (mpz_t ROP, mpz_t OP1, unsigned long
-          int OP2)
-     Set ROP to ROP + OP1 times OP2.
-
- -- Function: void mpz_submul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_submul_ui (mpz_t ROP, mpz_t OP1, unsigned long
-          int OP2)
-     Set ROP to ROP - OP1 times OP2.
-
- -- Function: void mpz_mul_2exp (mpz_t ROP, mpz_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.  This operation can also be
-     defined as a left shift by OP2 bits.
-
- -- Function: void mpz_neg (mpz_t ROP, mpz_t OP)
-     Set ROP to -OP.
-
- -- Function: void mpz_abs (mpz_t ROP, mpz_t OP)
-     Set ROP to the absolute value of OP.
-
-\1f
-File: gmp.info,  Node: Integer Division,  Next: Integer Exponentiation,  Prev: Integer Arithmetic,  Up: Integer Functions
-
-5.6 Division Functions
-======================
-
-Division is undefined if the divisor is zero.  Passing a zero divisor
-to the division or modulo functions (including the modular powering
-functions `mpz_powm' and `mpz_powm_ui'), will cause an intentional
-division by zero.  This lets a program handle arithmetic exceptions in
-these functions the same way as for normal C `int' arithmetic.
-
- -- Function: void mpz_cdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_cdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_cdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_cdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_cdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_cdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
- -- Function: void mpz_fdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_fdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_fdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_fdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_fdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_fdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
- -- Function: void mpz_tdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_tdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_tdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_tdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_tdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_tdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
-     Divide N by D, forming a quotient Q and/or remainder R.  For the
-     `2exp' functions, D=2^B.  The rounding is in three styles, each
-     suiting different applications.
-
-        * `cdiv' rounds Q up towards +infinity, and R will have the
-          opposite sign to D.  The `c' stands for "ceil".
-
-        * `fdiv' rounds Q down towards -infinity, and R will have the
-          same sign as D.  The `f' stands for "floor".
-
-        * `tdiv' rounds Q towards zero, and R will have the same sign
-          as N.  The `t' stands for "truncate".
-
-     In all cases Q and R will satisfy N=Q*D+R, and R will satisfy
-     0<=abs(R)<abs(D).
-
-     The `q' functions calculate only the quotient, the `r' functions
-     only the remainder, and the `qr' functions calculate both.  Note
-     that for `qr' the same variable cannot be passed for both Q and R,
-     or results will be unpredictable.
-
-     For the `ui' variants the return value is the remainder, and in
-     fact returning the remainder is all the `div_ui' functions do.  For
-     `tdiv' and `cdiv' the remainder can be negative, so for those the
-     return value is the absolute value of the remainder.
-
-     For the `2exp' variants the divisor is 2^B.  These functions are
-     implemented as right shifts and bit masks, but of course they
-     round the same as the other functions.
-
-     For positive N both `mpz_fdiv_q_2exp' and `mpz_tdiv_q_2exp' are
-     simple bitwise right shifts.  For negative N, `mpz_fdiv_q_2exp' is
-     effectively an arithmetic right shift treating N as twos complement
-     the same as the bitwise logical functions do, whereas
-     `mpz_tdiv_q_2exp' effectively treats N as sign and magnitude.
-
- -- Function: void mpz_mod (mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_mod_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
-     Set R to N `mod' D.  The sign of the divisor is ignored; the
-     result is always non-negative.
-
-     `mpz_mod_ui' is identical to `mpz_fdiv_r_ui' above, returning the
-     remainder as well as setting R.  See `mpz_fdiv_ui' above if only
-     the return value is wanted.
-
- -- Function: void mpz_divexact (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_divexact_ui (mpz_t Q, mpz_t N, unsigned long D)
-     Set Q to N/D.  These functions produce correct results only when
-     it is known in advance that D divides N.
-
-     These routines are much faster than the other division functions,
-     and are the best choice when exact division is known to occur, for
-     example reducing a rational to lowest terms.
-
- -- Function: int mpz_divisible_p (mpz_t N, mpz_t D)
- -- Function: int mpz_divisible_ui_p (mpz_t N, unsigned long int D)
- -- Function: int mpz_divisible_2exp_p (mpz_t N, mp_bitcnt_t B)
-     Return non-zero if N is exactly divisible by D, or in the case of
-     `mpz_divisible_2exp_p' by 2^B.
-
-     N is divisible by D if there exists an integer Q satisfying N =
-     Q*D.  Unlike the other division functions, D=0 is accepted and
-     following the rule it can be seen that only 0 is considered
-     divisible by 0.
-
- -- Function: int mpz_congruent_p (mpz_t N, mpz_t C, mpz_t D)
- -- Function: int mpz_congruent_ui_p (mpz_t N, unsigned long int C,
-          unsigned long int D)
- -- Function: int mpz_congruent_2exp_p (mpz_t N, mpz_t C, mp_bitcnt_t B)
-     Return non-zero if N is congruent to C modulo D, or in the case of
-     `mpz_congruent_2exp_p' modulo 2^B.
-
-     N is congruent to C mod D if there exists an integer Q satisfying
-     N = C + Q*D.  Unlike the other division functions, D=0 is accepted
-     and following the rule it can be seen that N and C are considered
-     congruent mod 0 only when exactly equal.
-
-\1f
-File: gmp.info,  Node: Integer Exponentiation,  Next: Integer Roots,  Prev: Integer Division,  Up: Integer Functions
-
-5.7 Exponentiation Functions
-============================
-
- -- Function: void mpz_powm (mpz_t ROP, mpz_t BASE, mpz_t EXP, mpz_t
-          MOD)
- -- Function: void mpz_powm_ui (mpz_t ROP, mpz_t BASE, unsigned long
-          int EXP, mpz_t MOD)
-     Set ROP to (BASE raised to EXP) modulo MOD.
-
-     Negative EXP is supported if an inverse BASE^-1 mod MOD exists
-     (see `mpz_invert' in *Note Number Theoretic Functions::).  If an
-     inverse doesn't exist then a divide by zero is raised.
-
- -- Function: void mpz_powm_sec (mpz_t ROP, mpz_t BASE, mpz_t EXP,
-          mpz_t MOD)
-     Set ROP to (BASE raised to EXP) modulo MOD.
-
-     It is required that EXP > 0 and that MOD is odd.
-
-     This function is designed to take the same time and have the same
-     cache access patterns for any two same-size arguments, assuming
-     that function arguments are placed at the same position and that
-     the machine state is identical upon function entry.  This function
-     is intended for cryptographic purposes, where resilience to
-     side-channel attacks is desired.
-
- -- Function: void mpz_pow_ui (mpz_t ROP, mpz_t BASE, unsigned long int
-          EXP)
- -- Function: void mpz_ui_pow_ui (mpz_t ROP, unsigned long int BASE,
-          unsigned long int EXP)
-     Set ROP to BASE raised to EXP.  The case 0^0 yields 1.
-
-\1f
-File: gmp.info,  Node: Integer Roots,  Next: Number Theoretic Functions,  Prev: Integer Exponentiation,  Up: Integer Functions
-
-5.8 Root Extraction Functions
-=============================
-
- -- Function: int mpz_root (mpz_t ROP, mpz_t OP, unsigned long int N)
-     Set ROP to  the truncated integer part of the Nth root of OP.
-     Return non-zero if the computation was exact, i.e., if OP is ROP
-     to the Nth power.
-
- -- Function: void mpz_rootrem (mpz_t ROOT, mpz_t REM, mpz_t U,
-          unsigned long int N)
-     Set ROOT to  the truncated integer part of the Nth root of U.  Set
-     REM to the remainder, U-ROOT**N.
-
- -- Function: void mpz_sqrt (mpz_t ROP, mpz_t OP)
-     Set ROP to  the truncated integer part of the square root of OP.
-
- -- Function: void mpz_sqrtrem (mpz_t ROP1, mpz_t ROP2, mpz_t OP)
-     Set ROP1 to the truncated integer part of the square root of OP,
-     like `mpz_sqrt'.  Set ROP2 to the remainder OP-ROP1*ROP1, which
-     will be zero if OP is a perfect square.
-
-     If ROP1 and ROP2 are the same variable, the results are undefined.
-
- -- Function: int mpz_perfect_power_p (mpz_t OP)
-     Return non-zero if OP is a perfect power, i.e., if there exist
-     integers A and B, with B>1, such that OP equals A raised to the
-     power B.
-
-     Under this definition both 0 and 1 are considered to be perfect
-     powers.  Negative values of OP are accepted, but of course can
-     only be odd perfect powers.
-
- -- Function: int mpz_perfect_square_p (mpz_t OP)
-     Return non-zero if OP is a perfect square, i.e., if the square
-     root of OP is an integer.  Under this definition both 0 and 1 are
-     considered to be perfect squares.
-
-\1f
-File: gmp.info,  Node: Number Theoretic Functions,  Next: Integer Comparisons,  Prev: Integer Roots,  Up: Integer Functions
-
-5.9 Number Theoretic Functions
-==============================
-
- -- Function: int mpz_probab_prime_p (mpz_t N, int REPS)
-     Determine whether N is prime.  Return 2 if N is definitely prime,
-     return 1 if N is probably prime (without being certain), or return
-     0 if N is definitely composite.
-
-     This function does some trial divisions, then some Miller-Rabin
-     probabilistic primality tests.  REPS controls how many such tests
-     are done, 5 to 10 is a reasonable number, more will reduce the
-     chances of a composite being returned as "probably prime".
-
-     Miller-Rabin and similar tests can be more properly called
-     compositeness tests.  Numbers which fail are known to be composite
-     but those which pass might be prime or might be composite.  Only a
-     few composites pass, hence those which pass are considered
-     probably prime.
-
- -- Function: void mpz_nextprime (mpz_t ROP, mpz_t OP)
-     Set ROP to the next prime greater than OP.
-
-     This function uses a probabilistic algorithm to identify primes.
-     For practical purposes it's adequate, the chance of a composite
-     passing will be extremely small.
-
- -- Function: void mpz_gcd (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to the greatest common divisor of OP1 and OP2.  The result
-     is always positive even if one or both input operands are negative.
-
- -- Function: unsigned long int mpz_gcd_ui (mpz_t ROP, mpz_t OP1,
-          unsigned long int OP2)
-     Compute the greatest common divisor of OP1 and OP2.  If ROP is not
-     `NULL', store the result there.
-
-     If the result is small enough to fit in an `unsigned long int', it
-     is returned.  If the result does not fit, 0 is returned, and the
-     result is equal to the argument OP1.  Note that the result will
-     always fit if OP2 is non-zero.
-
- -- Function: void mpz_gcdext (mpz_t G, mpz_t S, mpz_t T, mpz_t A,
-          mpz_t B)
-     Set G to the greatest common divisor of A and B, and in addition
-     set S and T to coefficients satisfying A*S + B*T = G.  The value
-     in G is always positive, even if one or both of A and B are
-     negative.  The values in S and T are chosen such that abs(S) <=
-     abs(B) and abs(T) <= abs(A).
-
-     If T is `NULL' then that value is not computed.
-
- -- Function: void mpz_lcm (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_lcm_ui (mpz_t ROP, mpz_t OP1, unsigned long OP2)
-     Set ROP to the least common multiple of OP1 and OP2.  ROP is
-     always positive, irrespective of the signs of OP1 and OP2.  ROP
-     will be zero if either OP1 or OP2 is zero.
-
- -- Function: int mpz_invert (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Compute the inverse of OP1 modulo OP2 and put the result in ROP.
-     If the inverse exists, the return value is non-zero and ROP will
-     satisfy 0 <= ROP < OP2.  If an inverse doesn't exist the return
-     value is zero and ROP is undefined.
-
- -- Function: int mpz_jacobi (mpz_t A, mpz_t B)
-     Calculate the Jacobi symbol (A/B).  This is defined only for B odd.
-
- -- Function: int mpz_legendre (mpz_t A, mpz_t P)
-     Calculate the Legendre symbol (A/P).  This is defined only for P
-     an odd positive prime, and for such P it's identical to the Jacobi
-     symbol.
-
- -- Function: int mpz_kronecker (mpz_t A, mpz_t B)
- -- Function: int mpz_kronecker_si (mpz_t A, long B)
- -- Function: int mpz_kronecker_ui (mpz_t A, unsigned long B)
- -- Function: int mpz_si_kronecker (long A, mpz_t B)
- -- Function: int mpz_ui_kronecker (unsigned long A, mpz_t B)
-     Calculate the Jacobi symbol (A/B) with the Kronecker extension
-     (a/2)=(2/a) when a odd, or (a/2)=0 when a even.
-
-     When B is odd the Jacobi symbol and Kronecker symbol are
-     identical, so `mpz_kronecker_ui' etc can be used for mixed
-     precision Jacobi symbols too.
-
-     For more information see Henri Cohen section 1.4.2 (*note
-     References::), or any number theory textbook.  See also the
-     example program `demos/qcn.c' which uses `mpz_kronecker_ui'.
-
- -- Function: mp_bitcnt_t mpz_remove (mpz_t ROP, mpz_t OP, mpz_t F)
-     Remove all occurrences of the factor F from OP and store the
-     result in ROP.  The return value is how many such occurrences were
-     removed.
-
- -- Function: void mpz_fac_ui (mpz_t ROP, unsigned long int OP)
-     Set ROP to OP!, the factorial of OP.
-
- -- Function: void mpz_bin_ui (mpz_t ROP, mpz_t N, unsigned long int K)
- -- Function: void mpz_bin_uiui (mpz_t ROP, unsigned long int N,
-          unsigned long int K)
-     Compute the binomial coefficient N over K and store the result in
-     ROP.  Negative values of N are supported by `mpz_bin_ui', using
-     the identity bin(-n,k) = (-1)^k * bin(n+k-1,k), see Knuth volume 1
-     section 1.2.6 part G.
-
- -- Function: void mpz_fib_ui (mpz_t FN, unsigned long int N)
- -- Function: void mpz_fib2_ui (mpz_t FN, mpz_t FNSUB1, unsigned long
-          int N)
-     `mpz_fib_ui' sets FN to to F[n], the N'th Fibonacci number.
-     `mpz_fib2_ui' sets FN to F[n], and FNSUB1 to F[n-1].
-
-     These functions are designed for calculating isolated Fibonacci
-     numbers.  When a sequence of values is wanted it's best to start
-     with `mpz_fib2_ui' and iterate the defining F[n+1]=F[n]+F[n-1] or
-     similar.
-
- -- Function: void mpz_lucnum_ui (mpz_t LN, unsigned long int N)
- -- Function: void mpz_lucnum2_ui (mpz_t LN, mpz_t LNSUB1, unsigned
-          long int N)
-     `mpz_lucnum_ui' sets LN to to L[n], the N'th Lucas number.
-     `mpz_lucnum2_ui' sets LN to L[n], and LNSUB1 to L[n-1].
-
-     These functions are designed for calculating isolated Lucas
-     numbers.  When a sequence of values is wanted it's best to start
-     with `mpz_lucnum2_ui' and iterate the defining L[n+1]=L[n]+L[n-1]
-     or similar.
-
-     The Fibonacci numbers and Lucas numbers are related sequences, so
-     it's never necessary to call both `mpz_fib2_ui' and
-     `mpz_lucnum2_ui'.  The formulas for going from Fibonacci to Lucas
-     can be found in *Note Lucas Numbers Algorithm::, the reverse is
-     straightforward too.
-
-\1f
-File: gmp.info,  Node: Integer Comparisons,  Next: Integer Logic and Bit Fiddling,  Prev: Number Theoretic Functions,  Up: Integer Functions
-
-5.10 Comparison Functions
-=========================
-
- -- Function: int mpz_cmp (mpz_t OP1, mpz_t OP2)
- -- Function: int mpz_cmp_d (mpz_t OP1, double OP2)
- -- Macro: int mpz_cmp_si (mpz_t OP1, signed long int OP2)
- -- Macro: int mpz_cmp_ui (mpz_t OP1, unsigned long int OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, or a negative value if OP1 < OP2.
-
-     `mpz_cmp_ui' and `mpz_cmp_si' are macros and will evaluate their
-     arguments more than once.  `mpz_cmp_d' can be called with an
-     infinity, but results are undefined for a NaN.
-
- -- Function: int mpz_cmpabs (mpz_t OP1, mpz_t OP2)
- -- Function: int mpz_cmpabs_d (mpz_t OP1, double OP2)
- -- Function: int mpz_cmpabs_ui (mpz_t OP1, unsigned long int OP2)
-     Compare the absolute values of OP1 and OP2.  Return a positive
-     value if abs(OP1) > abs(OP2), zero if abs(OP1) = abs(OP2), or a
-     negative value if abs(OP1) < abs(OP2).
-
-     `mpz_cmpabs_d' can be called with an infinity, but results are
-     undefined for a NaN.
-
- -- Macro: int mpz_sgn (mpz_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates
-     its argument multiple times.
-
-\1f
-File: gmp.info,  Node: Integer Logic and Bit Fiddling,  Next: I/O of Integers,  Prev: Integer Comparisons,  Up: Integer Functions
-
-5.11 Logical and Bit Manipulation Functions
-===========================================
-
-These functions behave as if twos complement arithmetic were used
-(although sign-magnitude is the actual implementation).  The least
-significant bit is number 0.
-
- -- Function: void mpz_and (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise-and OP2.
-
- -- Function: void mpz_ior (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise inclusive-or OP2.
-
- -- Function: void mpz_xor (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise exclusive-or OP2.
-
- -- Function: void mpz_com (mpz_t ROP, mpz_t OP)
-     Set ROP to the one's complement of OP.
-
- -- Function: mp_bitcnt_t mpz_popcount (mpz_t OP)
-     If OP>=0, return the population count of OP, which is the number
-     of 1 bits in the binary representation.  If OP<0, the number of 1s
-     is infinite, and the return value is the largest possible
-     `mp_bitcnt_t'.
-
- -- Function: mp_bitcnt_t mpz_hamdist (mpz_t OP1, mpz_t OP2)
-     If OP1 and OP2 are both >=0 or both <0, return the hamming
-     distance between the two operands, which is the number of bit
-     positions where OP1 and OP2 have different bit values.  If one
-     operand is >=0 and the other <0 then the number of bits different
-     is infinite, and the return value is the largest possible
-     `mp_bitcnt_t'.
-
- -- Function: mp_bitcnt_t mpz_scan0 (mpz_t OP, mp_bitcnt_t STARTING_BIT)
- -- Function: mp_bitcnt_t mpz_scan1 (mpz_t OP, mp_bitcnt_t STARTING_BIT)
-     Scan OP, starting from bit STARTING_BIT, towards more significant
-     bits, until the first 0 or 1 bit (respectively) is found.  Return
-     the index of the found bit.
-
-     If the bit at STARTING_BIT is already what's sought, then
-     STARTING_BIT is returned.
-
-     If there's no bit found, then the largest possible `mp_bitcnt_t' is
-     returned.  This will happen in `mpz_scan0' past the end of a
-     negative number, or `mpz_scan1' past the end of a nonnegative
-     number.
-
- -- Function: void mpz_setbit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Set bit BIT_INDEX in ROP.
-
- -- Function: void mpz_clrbit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Clear bit BIT_INDEX in ROP.
-
- -- Function: void mpz_combit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Complement bit BIT_INDEX in ROP.
-
- -- Function: int mpz_tstbit (mpz_t OP, mp_bitcnt_t BIT_INDEX)
-     Test bit BIT_INDEX in OP and return 0 or 1 accordingly.
-
-\1f
-File: gmp.info,  Node: I/O of Integers,  Next: Integer Random Numbers,  Prev: Integer Logic and Bit Fiddling,  Up: Integer Functions
-
-5.12 Input and Output Functions
-===============================
-
-Functions that perform input from a stdio stream, and functions that
-output to a stdio stream.  Passing a `NULL' pointer for a STREAM
-argument to any of these functions will make them read from `stdin' and
-write to `stdout', respectively.
-
-   When using any of these functions, it is a good idea to include
-`stdio.h' before `gmp.h', since that will allow `gmp.h' to define
-prototypes for these functions.
-
- -- Function: size_t mpz_out_str (FILE *STREAM, int BASE, mpz_t OP)
-     Output OP on stdio stream STREAM, as a string of digits in base
-     BASE.  The base argument may vary from 2 to 62 or from -2 to -36.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
- -- Function: size_t mpz_inp_str (mpz_t ROP, FILE *STREAM, int BASE)
-     Input a possibly white-space preceded string in base BASE from
-     stdio stream STREAM, and put the read integer in ROP.
-
-     The BASE may vary from 2 to 62, or if BASE is 0, then the leading
-     characters are used: `0x' and `0X' for hexadecimal, `0b' and `0B'
-     for binary, `0' for octal, or decimal otherwise.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value.  For bases 37 to 62, upper-case
-     letter represent the usual 10..35 while lower-case letter
-     represent 36..61.
-
-     Return the number of bytes read, or if an error occurred, return 0.
-
- -- Function: size_t mpz_out_raw (FILE *STREAM, mpz_t OP)
-     Output OP on stdio stream STREAM, in raw binary format.  The
-     integer is written in a portable format, with 4 bytes of size
-     information, and that many bytes of limbs.  Both the size and the
-     limbs are written in decreasing significance order (i.e., in
-     big-endian).
-
-     The output can be read with `mpz_inp_raw'.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
-     The output of this can not be read by `mpz_inp_raw' from GMP 1,
-     because of changes necessary for compatibility between 32-bit and
-     64-bit machines.
-
- -- Function: size_t mpz_inp_raw (mpz_t ROP, FILE *STREAM)
-     Input from stdio stream STREAM in the format written by
-     `mpz_out_raw', and put the result in ROP.  Return the number of
-     bytes read, or if an error occurred, return 0.
-
-     This routine can read the output from `mpz_out_raw' also from GMP
-     1, in spite of changes necessary for compatibility between 32-bit
-     and 64-bit machines.
-
-\1f
-File: gmp.info,  Node: Integer Random Numbers,  Next: Integer Import and Export,  Prev: I/O of Integers,  Up: Integer Functions
-
-5.13 Random Number Functions
-============================
-
-The random number functions of GMP come in two groups; older function
-that rely on a global state, and newer functions that accept a state
-parameter that is read and modified.  Please see the *Note Random
-Number Functions:: for more information on how to use and not to use
-random number functions.
-
- -- Function: void mpz_urandomb (mpz_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t N)
-     Generate a uniformly distributed random integer in the range 0 to
-     2^N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_urandomm (mpz_t ROP, gmp_randstate_t STATE,
-          mpz_t N)
-     Generate a uniform random integer in the range 0 to N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_rrandomb (mpz_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t N)
-     Generate a random integer with long strings of zeros and ones in
-     the binary representation.  Useful for testing functions and
-     algorithms, since this kind of random numbers have proven to be
-     more likely to trigger corner-case bugs.  The random number will
-     be in the range 0 to 2^N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_random (mpz_t ROP, mp_size_t MAX_SIZE)
-     Generate a random integer of at most MAX_SIZE limbs.  The generated
-     random number doesn't satisfy any particular requirements of
-     randomness.  Negative random numbers are generated when MAX_SIZE
-     is negative.
-
-     This function is obsolete.  Use `mpz_urandomb' or `mpz_urandomm'
-     instead.
-
- -- Function: void mpz_random2 (mpz_t ROP, mp_size_t MAX_SIZE)
-     Generate a random integer of at most MAX_SIZE limbs, with long
-     strings of zeros and ones in the binary representation.  Useful
-     for testing functions and algorithms, since this kind of random
-     numbers have proven to be more likely to trigger corner-case bugs.
-     Negative random numbers are generated when MAX_SIZE is negative.
-
-     This function is obsolete.  Use `mpz_rrandomb' instead.
-
-\1f
-File: gmp.info,  Node: Integer Import and Export,  Next: Miscellaneous Integer Functions,  Prev: Integer Random Numbers,  Up: Integer Functions
-
-5.14 Integer Import and Export
-==============================
-
-`mpz_t' variables can be converted to and from arbitrary words of binary
-data with the following functions.
-
- -- Function: void mpz_import (mpz_t ROP, size_t COUNT, int ORDER,
-          size_t SIZE, int ENDIAN, size_t NAILS, const void *OP)
-     Set ROP from an array of word data at OP.
-
-     The parameters specify the format of the data.  COUNT many words
-     are read, each SIZE bytes.  ORDER can be 1 for most significant
-     word first or -1 for least significant first.  Within each word
-     ENDIAN can be 1 for most significant byte first, -1 for least
-     significant first, or 0 for the native endianness of the host CPU.
-     The most significant NAILS bits of each word are skipped, this
-     can be 0 to use the full words.
-
-     There is no sign taken from the data, ROP will simply be a positive
-     integer.  An application can handle any sign itself, and apply it
-     for instance with `mpz_neg'.
-
-     There are no data alignment restrictions on OP, any address is
-     allowed.
-
-     Here's an example converting an array of `unsigned long' data, most
-     significant element first, and host byte order within each value.
-
-          unsigned long  a[20];
-          /* Initialize Z and A */
-          mpz_import (z, 20, 1, sizeof(a[0]), 0, 0, a);
-
-     This example assumes the full `sizeof' bytes are used for data in
-     the given type, which is usually true, and certainly true for
-     `unsigned long' everywhere we know of.  However on Cray vector
-     systems it may be noted that `short' and `int' are always stored
-     in 8 bytes (and with `sizeof' indicating that) but use only 32 or
-     46 bits.  The NAILS feature can account for this, by passing for
-     instance `8*sizeof(int)-INT_BIT'.
-
- -- Function: void * mpz_export (void *ROP, size_t *COUNTP, int ORDER,
-          size_t SIZE, int ENDIAN, size_t NAILS, mpz_t OP)
-     Fill ROP with word data from OP.
-
-     The parameters specify the format of the data produced.  Each word
-     will be SIZE bytes and ORDER can be 1 for most significant word
-     first or -1 for least significant first.  Within each word ENDIAN
-     can be 1 for most significant byte first, -1 for least significant
-     first, or 0 for the native endianness of the host CPU.  The most
-     significant NAILS bits of each word are unused and set to zero,
-     this can be 0 to produce full words.
-
-     The number of words produced is written to `*COUNTP', or COUNTP
-     can be `NULL' to discard the count.  ROP must have enough space
-     for the data, or if ROP is `NULL' then a result array of the
-     necessary size is allocated using the current GMP allocation
-     function (*note Custom Allocation::).  In either case the return
-     value is the destination used, either ROP or the allocated block.
-
-     If OP is non-zero then the most significant word produced will be
-     non-zero.  If OP is zero then the count returned will be zero and
-     nothing written to ROP.  If ROP is `NULL' in this case, no block
-     is allocated, just `NULL' is returned.
-
-     The sign of OP is ignored, just the absolute value is exported.  An
-     application can use `mpz_sgn' to get the sign and handle it as
-     desired.  (*note Integer Comparisons::)
-
-     There are no data alignment restrictions on ROP, any address is
-     allowed.
-
-     When an application is allocating space itself the required size
-     can be determined with a calculation like the following.  Since
-     `mpz_sizeinbase' always returns at least 1, `count' here will be
-     at least one, which avoids any portability problems with
-     `malloc(0)', though if `z' is zero no space at all is actually
-     needed (or written).
-
-          numb = 8*size - nail;
-          count = (mpz_sizeinbase (z, 2) + numb-1) / numb;
-          p = malloc (count * size);
-
-\1f
-File: gmp.info,  Node: Miscellaneous Integer Functions,  Next: Integer Special Functions,  Prev: Integer Import and Export,  Up: Integer Functions
-
-5.15 Miscellaneous Functions
-============================
-
- -- Function: int mpz_fits_ulong_p (mpz_t OP)
- -- Function: int mpz_fits_slong_p (mpz_t OP)
- -- Function: int mpz_fits_uint_p (mpz_t OP)
- -- Function: int mpz_fits_sint_p (mpz_t OP)
- -- Function: int mpz_fits_ushort_p (mpz_t OP)
- -- Function: int mpz_fits_sshort_p (mpz_t OP)
-     Return non-zero iff the value of OP fits in an `unsigned long int',
-     `signed long int', `unsigned int', `signed int', `unsigned short
-     int', or `signed short int', respectively.  Otherwise, return zero.
-
- -- Macro: int mpz_odd_p (mpz_t OP)
- -- Macro: int mpz_even_p (mpz_t OP)
-     Determine whether OP is odd or even, respectively.  Return
-     non-zero if yes, zero if no.  These macros evaluate their argument
-     more than once.
-
- -- Function: size_t mpz_sizeinbase (mpz_t OP, int BASE)
-     Return the size of OP measured in number of digits in the given
-     BASE.  BASE can vary from 2 to 62.  The sign of OP is ignored,
-     just the absolute value is used.  The result will be either exact
-     or 1 too big.  If BASE is a power of 2, the result is always
-     exact.  If OP is zero the return value is always 1.
-
-     This function can be used to determine the space required when
-     converting OP to a string.  The right amount of allocation is
-     normally two more than the value returned by `mpz_sizeinbase', one
-     extra for a minus sign and one for the null-terminator.
-
-     It will be noted that `mpz_sizeinbase(OP,2)' can be used to locate
-     the most significant 1 bit in OP, counting from 1.  (Unlike the
-     bitwise functions which start from 0, *Note Logical and Bit
-     Manipulation Functions: Integer Logic and Bit Fiddling.)
-
-\1f
-File: gmp.info,  Node: Integer Special Functions,  Prev: Miscellaneous Integer Functions,  Up: Integer Functions
-
-5.16 Special Functions
-======================
-
-The functions in this section are for various special purposes.  Most
-applications will not need them.
-
- -- Function: void mpz_array_init (mpz_t INTEGER_ARRAY, mp_size_t
-          ARRAY_SIZE, mp_size_t FIXED_NUM_BITS)
-     This is a special type of initialization.  *Fixed* space of
-     FIXED_NUM_BITS is allocated to each of the ARRAY_SIZE integers in
-     INTEGER_ARRAY.  There is no way to free the storage allocated by
-     this function.  Don't call `mpz_clear'!
-
-     The INTEGER_ARRAY parameter is the first `mpz_t' in the array.  For
-     example,
-
-          mpz_t  arr[20000];
-          mpz_array_init (arr[0], 20000, 512);
-
-     This function is only intended for programs that create a large
-     number of integers and need to reduce memory usage by avoiding the
-     overheads of allocating and reallocating lots of small blocks.  In
-     normal programs this function is not recommended.
-
-     The space allocated to each integer by this function will not be
-     automatically increased, unlike the normal `mpz_init', so an
-     application must ensure it is sufficient for any value stored.
-     The following space requirements apply to various routines,
-
-        * `mpz_abs', `mpz_neg', `mpz_set', `mpz_set_si' and
-          `mpz_set_ui' need room for the value they store.
-
-        * `mpz_add', `mpz_add_ui', `mpz_sub' and `mpz_sub_ui' need room
-          for the larger of the two operands, plus an extra
-          `mp_bits_per_limb'.
-
-        * `mpz_mul', `mpz_mul_ui' and `mpz_mul_ui' need room for the sum
-          of the number of bits in their operands, but each rounded up
-          to a multiple of `mp_bits_per_limb'.
-
-        * `mpz_swap' can be used between two array variables, but not
-          between an array and a normal variable.
-
-     For other functions, or if in doubt, the suggestion is to
-     calculate in a regular `mpz_init' variable and copy the result to
-     an array variable with `mpz_set'.
-
- -- Function: void * _mpz_realloc (mpz_t INTEGER, mp_size_t NEW_ALLOC)
-     Change the space for INTEGER to NEW_ALLOC limbs.  The value in
-     INTEGER is preserved if it fits, or is set to 0 if not.  The return
-     value is not useful to applications and should be ignored.
-
-     `mpz_realloc2' is the preferred way to accomplish allocation
-     changes like this.  `mpz_realloc2' and `_mpz_realloc' are the same
-     except that `_mpz_realloc' takes its size in limbs.
-
- -- Function: mp_limb_t mpz_getlimbn (mpz_t OP, mp_size_t N)
-     Return limb number N from OP.  The sign of OP is ignored, just the
-     absolute value is used.  The least significant limb is number 0.
-
-     `mpz_size' can be used to find how many limbs make up OP.
-     `mpz_getlimbn' returns zero if N is outside the range 0 to
-     `mpz_size(OP)-1'.
-
- -- Function: size_t mpz_size (mpz_t OP)
-     Return the size of OP measured in number of limbs.  If OP is zero,
-     the returned value will be zero.
-
-\1f
-File: gmp.info,  Node: Rational Number Functions,  Next: Floating-point Functions,  Prev: Integer Functions,  Up: Top
-
-6 Rational Number Functions
-***************************
-
-This chapter describes the GMP functions for performing arithmetic on
-rational numbers.  These functions start with the prefix `mpq_'.
-
-   Rational numbers are stored in objects of type `mpq_t'.
-
-   All rational arithmetic functions assume operands have a canonical
-form, and canonicalize their result.  The canonical from means that the
-denominator and the numerator have no common factors, and that the
-denominator is positive.  Zero has the unique representation 0/1.
-
-   Pure assignment functions do not canonicalize the assigned variable.
-It is the responsibility of the user to canonicalize the assigned
-variable before any arithmetic operations are performed on that
-variable.
-
- -- Function: void mpq_canonicalize (mpq_t OP)
-     Remove any factors that are common to the numerator and
-     denominator of OP, and make the denominator positive.
-
-* Menu:
-
-* Initializing Rationals::
-* Rational Conversions::
-* Rational Arithmetic::
-* Comparing Rationals::
-* Applying Integer Functions::
-* I/O of Rationals::
-
-\1f
-File: gmp.info,  Node: Initializing Rationals,  Next: Rational Conversions,  Prev: Rational Number Functions,  Up: Rational Number Functions
-
-6.1 Initialization and Assignment Functions
-===========================================
-
- -- Function: void mpq_init (mpq_t X)
-     Initialize X and set it to 0/1.  Each variable should normally
-     only be initialized once, or at least cleared out (using the
-     function `mpq_clear') between each initialization.
-
- -- Function: void mpq_inits (mpq_t X, ...)
-     Initialize a NULL-terminated list of `mpq_t' variables, and set
-     their values to 0/1.
-
- -- Function: void mpq_clear (mpq_t X)
-     Free the space occupied by X.  Make sure to call this function for
-     all `mpq_t' variables when you are done with them.
-
- -- Function: void mpq_clears (mpq_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpq_t'
-     variables.
-
- -- Function: void mpq_set (mpq_t ROP, mpq_t OP)
- -- Function: void mpq_set_z (mpq_t ROP, mpz_t OP)
-     Assign ROP from OP.
-
- -- Function: void mpq_set_ui (mpq_t ROP, unsigned long int OP1,
-          unsigned long int OP2)
- -- Function: void mpq_set_si (mpq_t ROP, signed long int OP1, unsigned
-          long int OP2)
-     Set the value of ROP to OP1/OP2.  Note that if OP1 and OP2 have
-     common factors, ROP has to be passed to `mpq_canonicalize' before
-     any operations are performed on ROP.
-
- -- Function: int mpq_set_str (mpq_t ROP, char *STR, int BASE)
-     Set ROP from a null-terminated string STR in the given BASE.
-
-     The string can be an integer like "41" or a fraction like
-     "41/152".  The fraction must be in canonical form (*note Rational
-     Number Functions::), or if not then `mpq_canonicalize' must be
-     called.
-
-     The numerator and optional denominator are parsed the same as in
-     `mpz_set_str' (*note Assigning Integers::).  White space is
-     allowed in the string, and is simply ignored.  The BASE can vary
-     from 2 to 62, or if BASE is 0 then the leading characters are
-     used: `0x' or `0X' for hex, `0b' or `0B' for binary, `0' for
-     octal, or decimal otherwise.  Note that this is done separately
-     for the numerator and denominator, so for instance `0xEF/100' is
-     239/100, whereas `0xEF/0x100' is 239/256.
-
-     The return value is 0 if the entire string is a valid number, or
-     -1 if not.
-
- -- Function: void mpq_swap (mpq_t ROP1, mpq_t ROP2)
-     Swap the values ROP1 and ROP2 efficiently.
-
-\1f
-File: gmp.info,  Node: Rational Conversions,  Next: Rational Arithmetic,  Prev: Initializing Rationals,  Up: Rational Number Functions
-
-6.2 Conversion Functions
-========================
-
- -- Function: double mpq_get_d (mpq_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent from the conversion is too big or too small to fit
-     a `double' then the result is system dependent.  For too big an
-     infinity is returned when available.  For too small 0.0 is
-     normally returned.  Hardware overflow, underflow and denorm traps
-     may or may not occur.
-
- -- Function: void mpq_set_d (mpq_t ROP, double OP)
- -- Function: void mpq_set_f (mpq_t ROP, mpf_t OP)
-     Set ROP to the value of OP.  There is no rounding, this conversion
-     is exact.
-
- -- Function: char * mpq_get_str (char *STR, int BASE, mpq_t OP)
-     Convert OP to a string of digits in base BASE.  The base may vary
-     from 2 to 36.  The string will be of the form `num/den', or if the
-     denominator is 1 then just `num'.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of storage large
-     enough for the result, that being
-
-          mpz_sizeinbase (mpq_numref(OP), BASE)
-          + mpz_sizeinbase (mpq_denref(OP), BASE) + 3
-
-     The three extra bytes are for a possible minus sign, possible
-     slash, and the null-terminator.
-
-     A pointer to the result string is returned, being either the
-     allocated block, or the given STR.
-
-\1f
-File: gmp.info,  Node: Rational Arithmetic,  Next: Comparing Rationals,  Prev: Rational Conversions,  Up: Rational Number Functions
-
-6.3 Arithmetic Functions
-========================
-
- -- Function: void mpq_add (mpq_t SUM, mpq_t ADDEND1, mpq_t ADDEND2)
-     Set SUM to ADDEND1 + ADDEND2.
-
- -- Function: void mpq_sub (mpq_t DIFFERENCE, mpq_t MINUEND, mpq_t
-          SUBTRAHEND)
-     Set DIFFERENCE to MINUEND - SUBTRAHEND.
-
- -- Function: void mpq_mul (mpq_t PRODUCT, mpq_t MULTIPLIER, mpq_t
-          MULTIPLICAND)
-     Set PRODUCT to MULTIPLIER times MULTIPLICAND.
-
- -- Function: void mpq_mul_2exp (mpq_t ROP, mpq_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.
-
- -- Function: void mpq_div (mpq_t QUOTIENT, mpq_t DIVIDEND, mpq_t
-          DIVISOR)
-     Set QUOTIENT to DIVIDEND/DIVISOR.
-
- -- Function: void mpq_div_2exp (mpq_t ROP, mpq_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 divided by 2 raised to OP2.
-
- -- Function: void mpq_neg (mpq_t NEGATED_OPERAND, mpq_t OPERAND)
-     Set NEGATED_OPERAND to -OPERAND.
-
- -- Function: void mpq_abs (mpq_t ROP, mpq_t OP)
-     Set ROP to the absolute value of OP.
-
- -- Function: void mpq_inv (mpq_t INVERTED_NUMBER, mpq_t NUMBER)
-     Set INVERTED_NUMBER to 1/NUMBER.  If the new denominator is zero,
-     this routine will divide by zero.
-
-\1f
-File: gmp.info,  Node: Comparing Rationals,  Next: Applying Integer Functions,  Prev: Rational Arithmetic,  Up: Rational Number Functions
-
-6.4 Comparison Functions
-========================
-
- -- Function: int mpq_cmp (mpq_t OP1, mpq_t OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
-     To determine if two rationals are equal, `mpq_equal' is faster than
-     `mpq_cmp'.
-
- -- Macro: int mpq_cmp_ui (mpq_t OP1, unsigned long int NUM2, unsigned
-          long int DEN2)
- -- Macro: int mpq_cmp_si (mpq_t OP1, long int NUM2, unsigned long int
-          DEN2)
-     Compare OP1 and NUM2/DEN2.  Return a positive value if OP1 >
-     NUM2/DEN2, zero if OP1 = NUM2/DEN2, and a negative value if OP1 <
-     NUM2/DEN2.
-
-     NUM2 and DEN2 are allowed to have common factors.
-
-     These functions are implemented as a macros and evaluate their
-     arguments multiple times.
-
- -- Macro: int mpq_sgn (mpq_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates its
-     arguments multiple times.
-
- -- Function: int mpq_equal (mpq_t OP1, mpq_t OP2)
-     Return non-zero if OP1 and OP2 are equal, zero if they are
-     non-equal.  Although `mpq_cmp' can be used for the same purpose,
-     this function is much faster.
-
-\1f
-File: gmp.info,  Node: Applying Integer Functions,  Next: I/O of Rationals,  Prev: Comparing Rationals,  Up: Rational Number Functions
-
-6.5 Applying Integer Functions to Rationals
-===========================================
-
-The set of `mpq' functions is quite small.  In particular, there are few
-functions for either input or output.  The following functions give
-direct access to the numerator and denominator of an `mpq_t'.
-
-   Note that if an assignment to the numerator and/or denominator could
-take an `mpq_t' out of the canonical form described at the start of
-this chapter (*note Rational Number Functions::) then
-`mpq_canonicalize' must be called before any other `mpq' functions are
-applied to that `mpq_t'.
-
- -- Macro: mpz_t mpq_numref (mpq_t OP)
- -- Macro: mpz_t mpq_denref (mpq_t OP)
-     Return a reference to the numerator and denominator of OP,
-     respectively.  The `mpz' functions can be used on the result of
-     these macros.
-
- -- Function: void mpq_get_num (mpz_t NUMERATOR, mpq_t RATIONAL)
- -- Function: void mpq_get_den (mpz_t DENOMINATOR, mpq_t RATIONAL)
- -- Function: void mpq_set_num (mpq_t RATIONAL, mpz_t NUMERATOR)
- -- Function: void mpq_set_den (mpq_t RATIONAL, mpz_t DENOMINATOR)
-     Get or set the numerator or denominator of a rational.  These
-     functions are equivalent to calling `mpz_set' with an appropriate
-     `mpq_numref' or `mpq_denref'.  Direct use of `mpq_numref' or
-     `mpq_denref' is recommended instead of these functions.
-
-\1f
-File: gmp.info,  Node: I/O of Rationals,  Prev: Applying Integer Functions,  Up: Rational Number Functions
-
-6.6 Input and Output Functions
-==============================
-
-When using any of these functions, it's a good idea to include `stdio.h'
-before `gmp.h', since that will allow `gmp.h' to define prototypes for
-these functions.
-
-   Passing a `NULL' pointer for a STREAM argument to any of these
-functions will make them read from `stdin' and write to `stdout',
-respectively.
-
- -- Function: size_t mpq_out_str (FILE *STREAM, int BASE, mpq_t OP)
-     Output OP on stdio stream STREAM, as a string of digits in base
-     BASE.  The base may vary from 2 to 36.  Output is in the form
-     `num/den' or if the denominator is 1 then just `num'.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
- -- Function: size_t mpq_inp_str (mpq_t ROP, FILE *STREAM, int BASE)
-     Read a string of digits from STREAM and convert them to a rational
-     in ROP.  Any initial white-space characters are read and
-     discarded.  Return the number of characters read (including white
-     space), or 0 if a rational could not be read.
-
-     The input can be a fraction like `17/63' or just an integer like
-     `123'.  Reading stops at the first character not in this form, and
-     white space is not permitted within the string.  If the input
-     might not be in canonical form, then `mpq_canonicalize' must be
-     called (*note Rational Number Functions::).
-
-     The BASE can be between 2 and 36, or can be 0 in which case the
-     leading characters of the string determine the base, `0x' or `0X'
-     for hexadecimal, `0' for octal, or decimal otherwise.  The leading
-     characters are examined separately for the numerator and
-     denominator of a fraction, so for instance `0x10/11' is 16/11,
-     whereas `0x10/0x11' is 16/17.
-
-\1f
-File: gmp.info,  Node: Floating-point Functions,  Next: Low-level Functions,  Prev: Rational Number Functions,  Up: Top
-
-7 Floating-point Functions
-**************************
-
-GMP floating point numbers are stored in objects of type `mpf_t' and
-functions operating on them have an `mpf_' prefix.
-
-   The mantissa of each float has a user-selectable precision, limited
-only by available memory.  Each variable has its own precision, and
-that can be increased or decreased at any time.
-
-   The exponent of each float is a fixed precision, one machine word on
-most systems.  In the current implementation the exponent is a count of
-limbs, so for example on a 32-bit system this means a range of roughly
-2^-68719476768 to 2^68719476736, or on a 64-bit system this will be
-greater.  Note however `mpf_get_str' can only return an exponent which
-fits an `mp_exp_t' and currently `mpf_set_str' doesn't accept exponents
-bigger than a `long'.
-
-   Each variable keeps a size for the mantissa data actually in use.
-This means that if a float is exactly represented in only a few bits
-then only those bits will be used in a calculation, even if the
-selected precision is high.
-
-   All calculations are performed to the precision of the destination
-variable.  Each function is defined to calculate with "infinite
-precision" followed by a truncation to the destination precision, but
-of course the work done is only what's needed to determine a result
-under that definition.
-
-   The precision selected for a variable is a minimum value, GMP may
-increase it a little to facilitate efficient calculation.  Currently
-this means rounding up to a whole limb, and then sometimes having a
-further partial limb, depending on the high limb of the mantissa.  But
-applications shouldn't be concerned by such details.
-
-   The mantissa in stored in binary, as might be imagined from the fact
-precisions are expressed in bits.  One consequence of this is that
-decimal fractions like 0.1 cannot be represented exactly.  The same is
-true of plain IEEE `double' floats.  This makes both highly unsuitable
-for calculations involving money or other values that should be exact
-decimal fractions.  (Suitably scaled integers, or perhaps rationals,
-are better choices.)
-
-   `mpf' functions and variables have no special notion of infinity or
-not-a-number, and applications must take care not to overflow the
-exponent or results will be unpredictable.  This might change in a
-future release.
-
-   Note that the `mpf' functions are _not_ intended as a smooth
-extension to IEEE P754 arithmetic.  In particular results obtained on
-one computer often differ from the results on a computer with a
-different word size.
-
-* Menu:
-
-* Initializing Floats::
-* Assigning Floats::
-* Simultaneous Float Init & Assign::
-* Converting Floats::
-* Float Arithmetic::
-* Float Comparison::
-* I/O of Floats::
-* Miscellaneous Float Functions::
-
-\1f
-File: gmp.info,  Node: Initializing Floats,  Next: Assigning Floats,  Prev: Floating-point Functions,  Up: Floating-point Functions
-
-7.1 Initialization Functions
-============================
-
- -- Function: void mpf_set_default_prec (mp_bitcnt_t PREC)
-     Set the default precision to be *at least* PREC bits.  All
-     subsequent calls to `mpf_init' will use this precision, but
-     previously initialized variables are unaffected.
-
- -- Function: mp_bitcnt_t mpf_get_default_prec (void)
-     Return the default precision actually used.
-
-   An `mpf_t' object must be initialized before storing the first value
-in it.  The functions `mpf_init' and `mpf_init2' are used for that
-purpose.
-
- -- Function: void mpf_init (mpf_t X)
-     Initialize X to 0.  Normally, a variable should be initialized
-     once only or at least be cleared, using `mpf_clear', between
-     initializations.  The precision of X is undefined unless a default
-     precision has already been established by a call to
-     `mpf_set_default_prec'.
-
- -- Function: void mpf_init2 (mpf_t X, mp_bitcnt_t PREC)
-     Initialize X to 0 and set its precision to be *at least* PREC
-     bits.  Normally, a variable should be initialized once only or at
-     least be cleared, using `mpf_clear', between initializations.
-
- -- Function: void mpf_inits (mpf_t X, ...)
-     Initialize a NULL-terminated list of `mpf_t' variables, and set
-     their values to 0.  The precision of the initialized variables is
-     undefined unless a default precision has already been established
-     by a call to `mpf_set_default_prec'.
-
- -- Function: void mpf_clear (mpf_t X)
-     Free the space occupied by X.  Make sure to call this function for
-     all `mpf_t' variables when you are done with them.
-
- -- Function: void mpf_clears (mpf_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpf_t'
-     variables.
-
-   Here is an example on how to initialize floating-point variables:
-     {
-       mpf_t x, y;
-       mpf_init (x);           /* use default precision */
-       mpf_init2 (y, 256);     /* precision _at least_ 256 bits */
-       ...
-       /* Unless the program is about to exit, do ... */
-       mpf_clear (x);
-       mpf_clear (y);
-     }
-
-   The following three functions are useful for changing the precision
-during a calculation.  A typical use would be for adjusting the
-precision gradually in iterative algorithms like Newton-Raphson, making
-the computation precision closely match the actual accurate part of the
-numbers.
-
- -- Function: mp_bitcnt_t mpf_get_prec (mpf_t OP)
-     Return the current precision of OP, in bits.
-
- -- Function: void mpf_set_prec (mpf_t ROP, mp_bitcnt_t PREC)
-     Set the precision of ROP to be *at least* PREC bits.  The value in
-     ROP will be truncated to the new precision.
-
-     This function requires a call to `realloc', and so should not be
-     used in a tight loop.
-
- -- Function: void mpf_set_prec_raw (mpf_t ROP, mp_bitcnt_t PREC)
-     Set the precision of ROP to be *at least* PREC bits, without
-     changing the memory allocated.
-
-     PREC must be no more than the allocated precision for ROP, that
-     being the precision when ROP was initialized, or in the most recent
-     `mpf_set_prec'.
-
-     The value in ROP is unchanged, and in particular if it had a higher
-     precision than PREC it will retain that higher precision.  New
-     values written to ROP will use the new PREC.
-
-     Before calling `mpf_clear' or the full `mpf_set_prec', another
-     `mpf_set_prec_raw' call must be made to restore ROP to its original
-     allocated precision.  Failing to do so will have unpredictable
-     results.
-
-     `mpf_get_prec' can be used before `mpf_set_prec_raw' to get the
-     original allocated precision.  After `mpf_set_prec_raw' it
-     reflects the PREC value set.
-
-     `mpf_set_prec_raw' is an efficient way to use an `mpf_t' variable
-     at different precisions during a calculation, perhaps to gradually
-     increase precision in an iteration, or just to use various
-     different precisions for different purposes during a calculation.
-
-\1f
-File: gmp.info,  Node: Assigning Floats,  Next: Simultaneous Float Init & Assign,  Prev: Initializing Floats,  Up: Floating-point Functions
-
-7.2 Assignment Functions
-========================
-
-These functions assign new values to already initialized floats (*note
-Initializing Floats::).
-
- -- Function: void mpf_set (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_set_ui (mpf_t ROP, unsigned long int OP)
- -- Function: void mpf_set_si (mpf_t ROP, signed long int OP)
- -- Function: void mpf_set_d (mpf_t ROP, double OP)
- -- Function: void mpf_set_z (mpf_t ROP, mpz_t OP)
- -- Function: void mpf_set_q (mpf_t ROP, mpq_t OP)
-     Set the value of ROP from OP.
-
- -- Function: int mpf_set_str (mpf_t ROP, char *STR, int BASE)
-     Set the value of ROP from the string in STR.  The string is of the
-     form `M@N' or, if the base is 10 or less, alternatively `MeN'.
-     `M' is the mantissa and `N' is the exponent.  The mantissa is
-     always in the specified base.  The exponent is either in the
-     specified base or, if BASE is negative, in decimal.  The decimal
-     point expected is taken from the current locale, on systems
-     providing `localeconv'.
-
-     The argument BASE may be in the ranges 2 to 62, or -62 to -2.
-     Negative values are used to specify that the exponent is in
-     decimal.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value; for bases 37 to 62, upper-case letter
-     represent the usual 10..35 while lower-case letter represent
-     36..61.
-
-     Unlike the corresponding `mpz' function, the base will not be
-     determined from the leading characters of the string if BASE is 0.
-     This is so that numbers like `0.23' are not interpreted as octal.
-
-     White space is allowed in the string, and is simply ignored.
-     [This is not really true; white-space is ignored in the beginning
-     of the string and within the mantissa, but not in other places,
-     such as after a minus sign or in the exponent.  We are considering
-     changing the definition of this function, making it fail when
-     there is any white-space in the input, since that makes a lot of
-     sense.  Please tell us your opinion about this change.  Do you
-     really want it to accept "3 14" as meaning 314 as it does now?]
-
-     This function returns 0 if the entire string is a valid number in
-     base BASE.  Otherwise it returns -1.
-
- -- Function: void mpf_swap (mpf_t ROP1, mpf_t ROP2)
-     Swap ROP1 and ROP2 efficiently.  Both the values and the
-     precisions of the two variables are swapped.
-
-\1f
-File: gmp.info,  Node: Simultaneous Float Init & Assign,  Next: Converting Floats,  Prev: Assigning Floats,  Up: Floating-point Functions
-
-7.3 Combined Initialization and Assignment Functions
-====================================================
-
-For convenience, GMP provides a parallel series of initialize-and-set
-functions which initialize the output and then store the value there.
-These functions' names have the form `mpf_init_set...'
-
-   Once the float has been initialized by any of the `mpf_init_set...'
-functions, it can be used as the source or destination operand for the
-ordinary float functions.  Don't use an initialize-and-set function on
-a variable already initialized!
-
- -- Function: void mpf_init_set (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_init_set_ui (mpf_t ROP, unsigned long int OP)
- -- Function: void mpf_init_set_si (mpf_t ROP, signed long int OP)
- -- Function: void mpf_init_set_d (mpf_t ROP, double OP)
-     Initialize ROP and set its value from OP.
-
-     The precision of ROP will be taken from the active default
-     precision, as set by `mpf_set_default_prec'.
-
- -- Function: int mpf_init_set_str (mpf_t ROP, char *STR, int BASE)
-     Initialize ROP and set its value from the string in STR.  See
-     `mpf_set_str' above for details on the assignment operation.
-
-     Note that ROP is initialized even if an error occurs.  (I.e., you
-     have to call `mpf_clear' for it.)
-
-     The precision of ROP will be taken from the active default
-     precision, as set by `mpf_set_default_prec'.
-
-\1f
-File: gmp.info,  Node: Converting Floats,  Next: Float Arithmetic,  Prev: Simultaneous Float Init & Assign,  Up: Floating-point Functions
-
-7.4 Conversion Functions
-========================
-
- -- Function: double mpf_get_d (mpf_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent in OP is too big or too small to fit a `double'
-     then the result is system dependent.  For too big an infinity is
-     returned when available.  For too small 0.0 is normally returned.
-     Hardware overflow, underflow and denorm traps may or may not occur.
-
- -- Function: double mpf_get_d_2exp (signed long int *EXP, mpf_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero), and with an exponent returned separately.
-
-     The return value is in the range 0.5<=abs(D)<1 and the exponent is
-     stored to `*EXP'.  D * 2^EXP is the (truncated) OP value.  If OP
-     is zero, the return is 0.0 and 0 is stored to `*EXP'.
-
-     This is similar to the standard C `frexp' function (*note
-     Normalization Functions: (libc)Normalization Functions.).
-
- -- Function: long mpf_get_si (mpf_t OP)
- -- Function: unsigned long mpf_get_ui (mpf_t OP)
-     Convert OP to a `long' or `unsigned long', truncating any fraction
-     part.  If OP is too big for the return type, the result is
-     undefined.
-
-     See also `mpf_fits_slong_p' and `mpf_fits_ulong_p' (*note
-     Miscellaneous Float Functions::).
-
- -- Function: char * mpf_get_str (char *STR, mp_exp_t *EXPPTR, int
-          BASE, size_t N_DIGITS, mpf_t OP)
-     Convert OP to a string of digits in base BASE.  The base argument
-     may vary from 2 to 62 or from -2 to -36.  Up to N_DIGITS digits
-     will be generated.  Trailing zeros are not returned.  No more
-     digits than can be accurately represented by OP are ever
-     generated.  If N_DIGITS is 0 then that accurate maximum number of
-     digits are generated.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of N_DIGITS + 2
-     bytes, that being enough for the mantissa, a possible minus sign,
-     and a null-terminator.  When N_DIGITS is 0 to get all significant
-     digits, an application won't be able to know the space required,
-     and STR should be `NULL' in that case.
-
-     The generated string is a fraction, with an implicit radix point
-     immediately to the left of the first digit.  The applicable
-     exponent is written through the EXPPTR pointer.  For example, the
-     number 3.1416 would be returned as string "31416" and exponent 1.
-
-     When OP is zero, an empty string is produced and the exponent
-     returned is 0.
-
-     A pointer to the result string is returned, being either the
-     allocated block or the given STR.
-
-\1f
-File: gmp.info,  Node: Float Arithmetic,  Next: Float Comparison,  Prev: Converting Floats,  Up: Floating-point Functions
-
-7.5 Arithmetic Functions
-========================
-
- -- Function: void mpf_add (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_add_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 + OP2.
-
- -- Function: void mpf_sub (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_ui_sub (mpf_t ROP, unsigned long int OP1, mpf_t
-          OP2)
- -- Function: void mpf_sub_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 - OP2.
-
- -- Function: void mpf_mul (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_mul_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 times OP2.
-
-   Division is undefined if the divisor is zero, and passing a zero
-divisor to the divide functions will make these functions intentionally
-divide by zero.  This lets the user handle arithmetic exceptions in
-these functions in the same manner as other arithmetic exceptions.
-
- -- Function: void mpf_div (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_ui_div (mpf_t ROP, unsigned long int OP1, mpf_t
-          OP2)
- -- Function: void mpf_div_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1/OP2.
-
- -- Function: void mpf_sqrt (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_sqrt_ui (mpf_t ROP, unsigned long int OP)
-     Set ROP to the square root of OP.
-
- -- Function: void mpf_pow_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 raised to the power OP2.
-
- -- Function: void mpf_neg (mpf_t ROP, mpf_t OP)
-     Set ROP to -OP.
-
- -- Function: void mpf_abs (mpf_t ROP, mpf_t OP)
-     Set ROP to the absolute value of OP.
-
- -- Function: void mpf_mul_2exp (mpf_t ROP, mpf_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.
-
- -- Function: void mpf_div_2exp (mpf_t ROP, mpf_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 divided by 2 raised to OP2.
-
-\1f
-File: gmp.info,  Node: Float Comparison,  Next: I/O of Floats,  Prev: Float Arithmetic,  Up: Floating-point Functions
-
-7.6 Comparison Functions
-========================
-
- -- Function: int mpf_cmp (mpf_t OP1, mpf_t OP2)
- -- Function: int mpf_cmp_d (mpf_t OP1, double OP2)
- -- Function: int mpf_cmp_ui (mpf_t OP1, unsigned long int OP2)
- -- Function: int mpf_cmp_si (mpf_t OP1, signed long int OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
-     `mpf_cmp_d' can be called with an infinity, but results are
-     undefined for a NaN.
-
- -- Function: int mpf_eq (mpf_t OP1, mpf_t OP2, mp_bitcnt_t op3)
-     Return non-zero if the first OP3 bits of OP1 and OP2 are equal,
-     zero otherwise.  I.e., test if OP1 and OP2 are approximately equal.
-
-     Caution 1: All version of GMP up to version 4.2.4 compared just
-     whole limbs, meaning sometimes more than OP3 bits, sometimes fewer.
-
-     Caution 2: This function will consider XXX11...111 and XX100...000
-     different, even if ... is replaced by a semi-infinite number of
-     bits.  Such numbers are really just one ulp off, and should be
-     considered equal.
-
- -- Function: void mpf_reldiff (mpf_t ROP, mpf_t OP1, mpf_t OP2)
-     Compute the relative difference between OP1 and OP2 and store the
-     result in ROP.  This is abs(OP1-OP2)/OP1.
-
- -- Macro: int mpf_sgn (mpf_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates
-     its arguments multiple times.
-
-\1f
-File: gmp.info,  Node: I/O of Floats,  Next: Miscellaneous Float Functions,  Prev: Float Comparison,  Up: Floating-point Functions
-
-7.7 Input and Output Functions
-==============================
-
-Functions that perform input from a stdio stream, and functions that
-output to a stdio stream.  Passing a `NULL' pointer for a STREAM
-argument to any of these functions will make them read from `stdin' and
-write to `stdout', respectively.
-
-   When using any of these functions, it is a good idea to include
-`stdio.h' before `gmp.h', since that will allow `gmp.h' to define
-prototypes for these functions.
-
- -- Function: size_t mpf_out_str (FILE *STREAM, int BASE, size_t
-          N_DIGITS, mpf_t OP)
-     Print OP to STREAM, as a string of digits.  Return the number of
-     bytes written, or if an error occurred, return 0.
-
-     The mantissa is prefixed with an `0.' and is in the given BASE,
-     which may vary from 2 to 62 or from -2 to -36.  An exponent is
-     then printed, separated by an `e', or if the base is greater than
-     10 then by an `@'.  The exponent is always in decimal.  The
-     decimal point follows the current locale, on systems providing
-     `localeconv'.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     Up to N_DIGITS will be printed from the mantissa, except that no
-     more digits than are accurately representable by OP will be
-     printed.  N_DIGITS can be 0 to select that accurate maximum.
-
- -- Function: size_t mpf_inp_str (mpf_t ROP, FILE *STREAM, int BASE)
-     Read a string in base BASE from STREAM, and put the read float in
-     ROP.  The string is of the form `M@N' or, if the base is 10 or
-     less, alternatively `MeN'.  `M' is the mantissa and `N' is the
-     exponent.  The mantissa is always in the specified base.  The
-     exponent is either in the specified base or, if BASE is negative,
-     in decimal.  The decimal point expected is taken from the current
-     locale, on systems providing `localeconv'.
-
-     The argument BASE may be in the ranges 2 to 36, or -36 to -2.
-     Negative values are used to specify that the exponent is in
-     decimal.
-
-     Unlike the corresponding `mpz' function, the base will not be
-     determined from the leading characters of the string if BASE is 0.
-     This is so that numbers like `0.23' are not interpreted as octal.
-
-     Return the number of bytes read, or if an error occurred, return 0.
-
-\1f
-File: gmp.info,  Node: Miscellaneous Float Functions,  Prev: I/O of Floats,  Up: Floating-point Functions
-
-7.8 Miscellaneous Functions
-===========================
-
- -- Function: void mpf_ceil (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_floor (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_trunc (mpf_t ROP, mpf_t OP)
-     Set ROP to OP rounded to an integer.  `mpf_ceil' rounds to the
-     next higher integer, `mpf_floor' to the next lower, and `mpf_trunc'
-     to the integer towards zero.
-
- -- Function: int mpf_integer_p (mpf_t OP)
-     Return non-zero if OP is an integer.
-
- -- Function: int mpf_fits_ulong_p (mpf_t OP)
- -- Function: int mpf_fits_slong_p (mpf_t OP)
- -- Function: int mpf_fits_uint_p (mpf_t OP)
- -- Function: int mpf_fits_sint_p (mpf_t OP)
- -- Function: int mpf_fits_ushort_p (mpf_t OP)
- -- Function: int mpf_fits_sshort_p (mpf_t OP)
-     Return non-zero if OP would fit in the respective C data type, when
-     truncated to an integer.
-
- -- Function: void mpf_urandomb (mpf_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t NBITS)
-     Generate a uniformly distributed random float in ROP, such that 0
-     <= ROP < 1, with NBITS significant bits in the mantissa.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpf_random2 (mpf_t ROP, mp_size_t MAX_SIZE, mp_exp_t
-          EXP)
-     Generate a random float of at most MAX_SIZE limbs, with long
-     strings of zeros and ones in the binary representation.  The
-     exponent of the number is in the interval -EXP to EXP (in limbs).
-     This function is useful for testing functions and algorithms,
-     since these kind of random numbers have proven to be more likely
-     to trigger corner-case bugs.  Negative random numbers are
-     generated when MAX_SIZE is negative.
-
-\1f
-File: gmp.info,  Node: Low-level Functions,  Next: Random Number Functions,  Prev: Floating-point Functions,  Up: Top
-
-8 Low-level Functions
-*********************
-
-This chapter describes low-level GMP functions, used to implement the
-high-level GMP functions, but also intended for time-critical user code.
-
-   These functions start with the prefix `mpn_'.
-
-   The `mpn' functions are designed to be as fast as possible, *not* to
-provide a coherent calling interface.  The different functions have
-somewhat similar interfaces, but there are variations that make them
-hard to use.  These functions do as little as possible apart from the
-real multiple precision computation, so that no time is spent on things
-that not all callers need.
-
-   A source operand is specified by a pointer to the least significant
-limb and a limb count.  A destination operand is specified by just a
-pointer.  It is the responsibility of the caller to ensure that the
-destination has enough space for storing the result.
-
-   With this way of specifying operands, it is possible to perform
-computations on subranges of an argument, and store the result into a
-subrange of a destination.
-
-   A common requirement for all functions is that each source area
-needs at least one limb.  No size argument may be zero.  Unless
-otherwise stated, in-place operations are allowed where source and
-destination are the same, but not where they only partly overlap.
-
-   The `mpn' functions are the base for the implementation of the
-`mpz_', `mpf_', and `mpq_' functions.
-
-   This example adds the number beginning at S1P and the number
-beginning at S2P and writes the sum at DESTP.  All areas have N limbs.
-
-     cy = mpn_add_n (destp, s1p, s2p, n)
-
-   It should be noted that the `mpn' functions make no attempt to
-identify high or low zero limbs on their operands, or other special
-forms.  On random data such cases will be unlikely and it'd be wasteful
-for every function to check every time.  An application knowing
-something about its data can take steps to trim or perhaps split its
-calculations.
-
-
-In the notation used below, a source operand is identified by the
-pointer to the least significant limb, and the limb count in braces.
-For example, {S1P, S1N}.
-
- -- Function: mp_limb_t mpn_add_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Add {S1P, N} and {S2P, N}, and write the N least significant limbs
-     of the result to RP.  Return carry, either 0 or 1.
-
-     This is the lowest-level function for addition.  It is the
-     preferred function for addition, since it is written in assembly
-     for most CPUs.  For addition of a variable to itself (i.e., S1P
-     equals S2P) use `mpn_lshift' with a count of 1 for optimal speed.
-
- -- Function: mp_limb_t mpn_add_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Add {S1P, N} and S2LIMB, and write the N least significant limbs
-     of the result to RP.  Return carry, either 0 or 1.
-
- -- Function: mp_limb_t mpn_add (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Add {S1P, S1N} and {S2P, S2N}, and write the S1N least significant
-     limbs of the result to RP.  Return carry, either 0 or 1.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: mp_limb_t mpn_sub_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Subtract {S2P, N} from {S1P, N}, and write the N least significant
-     limbs of the result to RP.  Return borrow, either 0 or 1.
-
-     This is the lowest-level function for subtraction.  It is the
-     preferred function for subtraction, since it is written in
-     assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_sub_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Subtract S2LIMB from {S1P, N}, and write the N least significant
-     limbs of the result to RP.  Return borrow, either 0 or 1.
-
- -- Function: mp_limb_t mpn_sub (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Subtract {S2P, S2N} from {S1P, S1N}, and write the S1N least
-     significant limbs of the result to RP.  Return borrow, either 0 or
-     1.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: void mpn_neg (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N)
-     Perform the negation of {SP, N}, and write the result to {RP, N}.
-     Return carry-out.
-
- -- Function: void mpn_mul_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Multiply {S1P, N} and {S2P, N}, and write the 2*N-limb result to
-     RP.
-
-     The destination has to have space for 2*N limbs, even if the
-     product's most significant limb is zero.  No overlap is permitted
-     between the destination and either source.
-
-     If the two input operands are the same, use `mpn_sqr'.
-
- -- Function: mp_limb_t mpn_mul (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Multiply {S1P, S1N} and {S2P, S2N}, and write the (S1N+S2N)-limb
-     result to RP.  Return the most significant limb of the result.
-
-     The destination has to have space for S1N + S2N limbs, even if the
-     product's most significant limb is zero.  No overlap is permitted
-     between the destination and either source.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: void mpn_sqr (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Compute the square of {S1P, N} and write the 2*N-limb result to RP.
-
-     The destination has to have space for 2*N limbs, even if the
-     result's most significant limb is zero.  No overlap is permitted
-     between the destination and the source.
-
- -- Function: mp_limb_t mpn_mul_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} by S2LIMB, and write the N least significant
-     limbs of the product to RP.  Return the most significant limb of
-     the product.  {S1P, N} and {RP, N} are allowed to overlap provided
-     RP <= S1P.
-
-     This is a low-level function that is a building block for general
-     multiplication as well as other operations in GMP.  It is written
-     in assembly for most CPUs.
-
-     Don't call this function if S2LIMB is a power of 2; use
-     `mpn_lshift' with a count equal to the logarithm of S2LIMB
-     instead, for optimal speed.
-
- -- Function: mp_limb_t mpn_addmul_1 (mp_limb_t *RP, const mp_limb_t
-          *S1P, mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} and S2LIMB, and add the N least significant
-     limbs of the product to {RP, N} and write the result to RP.
-     Return the most significant limb of the product, plus carry-out
-     from the addition.
-
-     This is a low-level function that is a building block for general
-     multiplication as well as other operations in GMP.  It is written
-     in assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_submul_1 (mp_limb_t *RP, const mp_limb_t
-          *S1P, mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} and S2LIMB, and subtract the N least significant
-     limbs of the product from {RP, N} and write the result to RP.
-     Return the most significant limb of the product, plus borrow-out
-     from the subtraction.
-
-     This is a low-level function that is a building block for general
-     multiplication and division as well as other operations in GMP.
-     It is written in assembly for most CPUs.
-
- -- Function: void mpn_tdiv_qr (mp_limb_t *QP, mp_limb_t *RP, mp_size_t
-          QXN, const mp_limb_t *NP, mp_size_t NN, const mp_limb_t *DP,
-          mp_size_t DN)
-     Divide {NP, NN} by {DP, DN} and put the quotient at {QP, NN-DN+1}
-     and the remainder at {RP, DN}.  The quotient is rounded towards 0.
-
-     No overlap is permitted between arguments, except that NP might
-     equal RP.  The dividend size NN must be greater than or equal to
-     divisor size DN.  The most significant limb of the divisor must be
-     non-zero.  The QXN operand must be zero.
-
- -- Function: mp_limb_t mpn_divrem (mp_limb_t *R1P, mp_size_t QXN,
-          mp_limb_t *RS2P, mp_size_t RS2N, const mp_limb_t *S3P,
-          mp_size_t S3N)
-     [This function is obsolete.  Please call `mpn_tdiv_qr' instead for
-     best performance.]
-
-     Divide {RS2P, RS2N} by {S3P, S3N}, and write the quotient at R1P,
-     with the exception of the most significant limb, which is
-     returned.  The remainder replaces the dividend at RS2P; it will be
-     S3N limbs long (i.e., as many limbs as the divisor).
-
-     In addition to an integer quotient, QXN fraction limbs are
-     developed, and stored after the integral limbs.  For most usages,
-     QXN will be zero.
-
-     It is required that RS2N is greater than or equal to S3N.  It is
-     required that the most significant bit of the divisor is set.
-
-     If the quotient is not needed, pass RS2P + S3N as R1P.  Aside from
-     that special case, no overlap between arguments is permitted.
-
-     Return the most significant limb of the quotient, either 0 or 1.
-
-     The area at R1P needs to be RS2N - S3N + QXN limbs large.
-
- -- Function: mp_limb_t mpn_divrem_1 (mp_limb_t *R1P, mp_size_t QXN,
-          mp_limb_t *S2P, mp_size_t S2N, mp_limb_t S3LIMB)
- -- Macro: mp_limb_t mpn_divmod_1 (mp_limb_t *R1P, mp_limb_t *S2P,
-          mp_size_t S2N, mp_limb_t S3LIMB)
-     Divide {S2P, S2N} by S3LIMB, and write the quotient at R1P.
-     Return the remainder.
-
-     The integer quotient is written to {R1P+QXN, S2N} and in addition
-     QXN fraction limbs are developed and written to {R1P, QXN}.
-     Either or both S2N and QXN can be zero.  For most usages, QXN will
-     be zero.
-
-     `mpn_divmod_1' exists for upward source compatibility and is
-     simply a macro calling `mpn_divrem_1' with a QXN of 0.
-
-     The areas at R1P and S2P have to be identical or completely
-     separate, not partially overlapping.
-
- -- Function: mp_limb_t mpn_divmod (mp_limb_t *R1P, mp_limb_t *RS2P,
-          mp_size_t RS2N, const mp_limb_t *S3P, mp_size_t S3N)
-     [This function is obsolete.  Please call `mpn_tdiv_qr' instead for
-     best performance.]
-
- -- Macro: mp_limb_t mpn_divexact_by3 (mp_limb_t *RP, mp_limb_t *SP,
-          mp_size_t N)
- -- Function: mp_limb_t mpn_divexact_by3c (mp_limb_t *RP, mp_limb_t
-          *SP, mp_size_t N, mp_limb_t CARRY)
-     Divide {SP, N} by 3, expecting it to divide exactly, and writing
-     the result to {RP, N}.  If 3 divides exactly, the return value is
-     zero and the result is the quotient.  If not, the return value is
-     non-zero and the result won't be anything useful.
-
-     `mpn_divexact_by3c' takes an initial carry parameter, which can be
-     the return value from a previous call, so a large calculation can
-     be done piece by piece from low to high.  `mpn_divexact_by3' is
-     simply a macro calling `mpn_divexact_by3c' with a 0 carry
-     parameter.
-
-     These routines use a multiply-by-inverse and will be faster than
-     `mpn_divrem_1' on CPUs with fast multiplication but slow division.
-
-     The source a, result q, size n, initial carry i, and return value
-     c satisfy c*b^n + a-i = 3*q, where b=2^GMP_NUMB_BITS.  The return
-     c is always 0, 1 or 2, and the initial carry i must also be 0, 1
-     or 2 (these are both borrows really).  When c=0 clearly q=(a-i)/3.
-     When c!=0, the remainder (a-i) mod 3 is given by 3-c, because b
-     == 1 mod 3 (when `mp_bits_per_limb' is even, which is always so
-     currently).
-
- -- Function: mp_limb_t mpn_mod_1 (mp_limb_t *S1P, mp_size_t S1N,
-          mp_limb_t S2LIMB)
-     Divide {S1P, S1N} by S2LIMB, and return the remainder.  S1N can be
-     zero.
-
- -- Function: mp_limb_t mpn_lshift (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N, unsigned int COUNT)
-     Shift {SP, N} left by COUNT bits, and write the result to {RP, N}.
-     The bits shifted out at the left are returned in the least
-     significant COUNT bits of the return value (the rest of the return
-     value is zero).
-
-     COUNT must be in the range 1 to mp_bits_per_limb-1.  The regions
-     {SP, N} and {RP, N} may overlap, provided RP >= SP.
-
-     This function is written in assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_rshift (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N, unsigned int COUNT)
-     Shift {SP, N} right by COUNT bits, and write the result to {RP,
-     N}.  The bits shifted out at the right are returned in the most
-     significant COUNT bits of the return value (the rest of the return
-     value is zero).
-
-     COUNT must be in the range 1 to mp_bits_per_limb-1.  The regions
-     {SP, N} and {RP, N} may overlap, provided RP <= SP.
-
-     This function is written in assembly for most CPUs.
-
- -- Function: int mpn_cmp (const mp_limb_t *S1P, const mp_limb_t *S2P,
-          mp_size_t N)
-     Compare {S1P, N} and {S2P, N} and return a positive value if S1 >
-     S2, 0 if they are equal, or a negative value if S1 < S2.
-
- -- Function: mp_size_t mpn_gcd (mp_limb_t *RP, mp_limb_t *XP,
-          mp_size_t XN, mp_limb_t *YP, mp_size_t YN)
-     Set {RP, RETVAL} to the greatest common divisor of {XP, XN} and
-     {YP, YN}.  The result can be up to YN limbs, the return value is
-     the actual number produced.  Both source operands are destroyed.
-
-     {XP, XN} must have at least as many bits as {YP, YN}.  {YP, YN}
-     must be odd.  Both operands must have non-zero most significant
-     limbs.  No overlap is permitted between {XP, XN} and {YP, YN}.
-
- -- Function: mp_limb_t mpn_gcd_1 (const mp_limb_t *XP, mp_size_t XN,
-          mp_limb_t YLIMB)
-     Return the greatest common divisor of {XP, XN} and YLIMB.  Both
-     operands must be non-zero.
-
- -- Function: mp_size_t mpn_gcdext (mp_limb_t *GP, mp_limb_t *SP,
-          mp_size_t *SN, mp_limb_t *XP, mp_size_t XN, mp_limb_t *YP,
-          mp_size_t YN)
-     Let U be defined by {XP, XN} and let V be defined by {YP, YN}.
-
-     Compute the greatest common divisor G of U and V.  Compute a
-     cofactor S such that G = US + VT.  The second cofactor T is not
-     computed but can easily be obtained from (G - U*S) / V (the
-     division will be exact).  It is required that U >= V > 0.
-
-     S satisfies S = 1 or abs(S) < V / (2 G). S = 0 if and only if V
-     divides U (i.e., G = V).
-
-     Store G at GP and let the return value define its limb count.
-     Store S at SP and let |*SN| define its limb count.  S can be
-     negative; when this happens *SN will be negative.  The areas at GP
-     and SP should each have room for XN+1 limbs.
-
-     The areas {XP, XN+1} and {YP, YN+1} are destroyed (i.e. the input
-     operands plus an extra limb past the end of each).
-
-     Compatibility note: GMP 4.3.0 and 4.3.1 defined S less strictly.
-     Earlier as well as later GMP releases define S as described here.
-
- -- Function: mp_size_t mpn_sqrtrem (mp_limb_t *R1P, mp_limb_t *R2P,
-          const mp_limb_t *SP, mp_size_t N)
-     Compute the square root of {SP, N} and put the result at {R1P,
-     ceil(N/2)} and the remainder at {R2P, RETVAL}.  R2P needs space
-     for N limbs, but the return value indicates how many are produced.
-
-     The most significant limb of {SP, N} must be non-zero.  The areas
-     {R1P, ceil(N/2)} and {SP, N} must be completely separate.  The
-     areas {R2P, N} and {SP, N} must be either identical or completely
-     separate.
-
-     If the remainder is not wanted then R2P can be `NULL', and in this
-     case the return value is zero or non-zero according to whether the
-     remainder would have been zero or non-zero.
-
-     A return value of zero indicates a perfect square.  See also
-     `mpz_perfect_square_p'.
-
- -- Function: mp_size_t mpn_get_str (unsigned char *STR, int BASE,
-          mp_limb_t *S1P, mp_size_t S1N)
-     Convert {S1P, S1N} to a raw unsigned char array at STR in base
-     BASE, and return the number of characters produced.  There may be
-     leading zeros in the string.  The string is not in ASCII; to
-     convert it to printable format, add the ASCII codes for `0' or
-     `A', depending on the base and range.  BASE can vary from 2 to 256.
-
-     The most significant limb of the input {S1P, S1N} must be
-     non-zero.  The input {S1P, S1N} is clobbered, except when BASE is
-     a power of 2, in which case it's unchanged.
-
-     The area at STR has to have space for the largest possible number
-     represented by a S1N long limb array, plus one extra character.
-
- -- Function: mp_size_t mpn_set_str (mp_limb_t *RP, const unsigned char
-          *STR, size_t STRSIZE, int BASE)
-     Convert bytes {STR,STRSIZE} in the given BASE to limbs at RP.
-
-     STR[0] is the most significant byte and STR[STRSIZE-1] is the
-     least significant.  Each byte should be a value in the range 0 to
-     BASE-1, not an ASCII character.  BASE can vary from 2 to 256.
-
-     The return value is the number of limbs written to RP.  If the most
-     significant input byte is non-zero then the high limb at RP will be
-     non-zero, and only that exact number of limbs will be required
-     there.
-
-     If the most significant input byte is zero then there may be high
-     zero limbs written to RP and included in the return value.
-
-     STRSIZE must be at least 1, and no overlap is permitted between
-     {STR,STRSIZE} and the result at RP.
-
- -- Function: mp_bitcnt_t mpn_scan0 (const mp_limb_t *S1P, mp_bitcnt_t
-          BIT)
-     Scan S1P from bit position BIT for the next clear bit.
-
-     It is required that there be a clear bit within the area at S1P at
-     or beyond bit position BIT, so that the function has something to
-     return.
-
- -- Function: mp_bitcnt_t mpn_scan1 (const mp_limb_t *S1P, mp_bitcnt_t
-          BIT)
-     Scan S1P from bit position BIT for the next set bit.
-
-     It is required that there be a set bit within the area at S1P at or
-     beyond bit position BIT, so that the function has something to
-     return.
-
- -- Function: void mpn_random (mp_limb_t *R1P, mp_size_t R1N)
- -- Function: void mpn_random2 (mp_limb_t *R1P, mp_size_t R1N)
-     Generate a random number of length R1N and store it at R1P.  The
-     most significant limb is always non-zero.  `mpn_random' generates
-     uniformly distributed limb data, `mpn_random2' generates long
-     strings of zeros and ones in the binary representation.
-
-     `mpn_random2' is intended for testing the correctness of the `mpn'
-     routines.
-
- -- Function: mp_bitcnt_t mpn_popcount (const mp_limb_t *S1P, mp_size_t
-          N)
-     Count the number of set bits in {S1P, N}.
-
- -- Function: mp_bitcnt_t mpn_hamdist (const mp_limb_t *S1P, const
-          mp_limb_t *S2P, mp_size_t N)
-     Compute the hamming distance between {S1P, N} and {S2P, N}, which
-     is the number of bit positions where the two operands have
-     different bit values.
-
- -- Function: int mpn_perfect_square_p (const mp_limb_t *S1P, mp_size_t
-          N)
-     Return non-zero iff {S1P, N} is a perfect square.
-
- -- Function: void mpn_and_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and {S2P, N}, and
-     write the result to {RP, N}.
-
- -- Function: void mpn_ior_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and {S2P, N},
-     and write the result to {RP, N}.
-
- -- Function: void mpn_xor_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical exclusive or of {S1P, N} and {S2P, N},
-     and write the result to {RP, N}.
-
- -- Function: void mpn_andn_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and the bitwise
-     complement of {S2P, N}, and write the result to {RP, N}.
-
- -- Function: void mpn_iorn_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and the
-     bitwise complement of {S2P, N}, and write the result to {RP, N}.
-
- -- Function: void mpn_nand_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and {S2P, N}, and
-     write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_nior_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and {S2P, N},
-     and write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_xnor_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical exclusive or of {S1P, N} and {S2P, N},
-     and write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_com (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N)
-     Perform the bitwise complement of {SP, N}, and write the result to
-     {RP, N}.
-
- -- Function: void mpn_copyi (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Copy from {S1P, N} to {RP, N}, increasingly.
-
- -- Function: void mpn_copyd (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Copy from {S1P, N} to {RP, N}, decreasingly.
-
- -- Function: void mpn_zero (mp_limb_t *RP, mp_size_t N)
-     Zero {RP, N}.
-
-
-8.1 Nails
-=========
-
-*Everything in this section is highly experimental and may disappear or
-be subject to incompatible changes in a future version of GMP.*
-
-   Nails are an experimental feature whereby a few bits are left unused
-at the top of each `mp_limb_t'.  This can significantly improve carry
-handling on some processors.
-
-   All the `mpn' functions accepting limb data will expect the nail
-bits to be zero on entry, and will return data with the nails similarly
-all zero.  This applies both to limb vectors and to single limb
-arguments.
-
-   Nails can be enabled by configuring with `--enable-nails'.  By
-default the number of bits will be chosen according to what suits the
-host processor, but a particular number can be selected with
-`--enable-nails=N'.
-
-   At the mpn level, a nail build is neither source nor binary
-compatible with a non-nail build, strictly speaking.  But programs
-acting on limbs only through the mpn functions are likely to work
-equally well with either build, and judicious use of the definitions
-below should make any program compatible with either build, at the
-source level.
-
-   For the higher level routines, meaning `mpz' etc, a nail build
-should be fully source and binary compatible with a non-nail build.
-
- -- Macro: GMP_NAIL_BITS
- -- Macro: GMP_NUMB_BITS
- -- Macro: GMP_LIMB_BITS
-     `GMP_NAIL_BITS' is the number of nail bits, or 0 when nails are
-     not in use.  `GMP_NUMB_BITS' is the number of data bits in a limb.
-     `GMP_LIMB_BITS' is the total number of bits in an `mp_limb_t'.  In
-     all cases
-
-          GMP_LIMB_BITS == GMP_NAIL_BITS + GMP_NUMB_BITS
-
- -- Macro: GMP_NAIL_MASK
- -- Macro: GMP_NUMB_MASK
-     Bit masks for the nail and number parts of a limb.
-     `GMP_NAIL_MASK' is 0 when nails are not in use.
-
-     `GMP_NAIL_MASK' is not often needed, since the nail part can be
-     obtained with `x >> GMP_NUMB_BITS', and that means one less large
-     constant, which can help various RISC chips.
-
- -- Macro: GMP_NUMB_MAX
-     The maximum value that can be stored in the number part of a limb.
-     This is the same as `GMP_NUMB_MASK', but can be used for clarity
-     when doing comparisons rather than bit-wise operations.
-
-   The term "nails" comes from finger or toe nails, which are at the
-ends of a limb (arm or leg).  "numb" is short for number, but is also
-how the developers felt after trying for a long time to come up with
-sensible names for these things.
-
-   In the future (the distant future most likely) a non-zero nail might
-be permitted, giving non-unique representations for numbers in a limb
-vector.  This would help vector processors since carries would only
-ever need to propagate one or two limbs.
-
-\1f
-File: gmp.info,  Node: Random Number Functions,  Next: Formatted Output,  Prev: Low-level Functions,  Up: Top
-
-9 Random Number Functions
-*************************
-
-Sequences of pseudo-random numbers in GMP are generated using a
-variable of type `gmp_randstate_t', which holds an algorithm selection
-and a current state.  Such a variable must be initialized by a call to
-one of the `gmp_randinit' functions, and can be seeded with one of the
-`gmp_randseed' functions.
-
-   The functions actually generating random numbers are described in
-*Note Integer Random Numbers::, and *Note Miscellaneous Float
-Functions::.
-
-   The older style random number functions don't accept a
-`gmp_randstate_t' parameter but instead share a global variable of that
-type.  They use a default algorithm and are currently not seeded
-(though perhaps that will change in the future).  The new functions
-accepting a `gmp_randstate_t' are recommended for applications that
-care about randomness.
-
-* Menu:
-
-* Random State Initialization::
-* Random State Seeding::
-* Random State Miscellaneous::
-
-\1f
-File: gmp.info,  Node: Random State Initialization,  Next: Random State Seeding,  Prev: Random Number Functions,  Up: Random Number Functions
-
-9.1 Random State Initialization
-===============================
-
- -- Function: void gmp_randinit_default (gmp_randstate_t STATE)
-     Initialize STATE with a default algorithm.  This will be a
-     compromise between speed and randomness, and is recommended for
-     applications with no special requirements.  Currently this is
-     `gmp_randinit_mt'.
-
- -- Function: void gmp_randinit_mt (gmp_randstate_t STATE)
-     Initialize STATE for a Mersenne Twister algorithm.  This algorithm
-     is fast and has good randomness properties.
-
- -- Function: void gmp_randinit_lc_2exp (gmp_randstate_t STATE, mpz_t
-          A, unsigned long C, mp_bitcnt_t M2EXP)
-     Initialize STATE with a linear congruential algorithm X = (A*X +
-     C) mod 2^M2EXP.
-
-     The low bits of X in this algorithm are not very random.  The least
-     significant bit will have a period no more than 2, and the second
-     bit no more than 4, etc.  For this reason only the high half of
-     each X is actually used.
-
-     When a random number of more than M2EXP/2 bits is to be generated,
-     multiple iterations of the recurrence are used and the results
-     concatenated.
-
- -- Function: int gmp_randinit_lc_2exp_size (gmp_randstate_t STATE,
-          mp_bitcnt_t SIZE)
-     Initialize STATE for a linear congruential algorithm as per
-     `gmp_randinit_lc_2exp'.  A, C and M2EXP are selected from a table,
-     chosen so that SIZE bits (or more) of each X will be used, ie.
-     M2EXP/2 >= SIZE.
-
-     If successful the return value is non-zero.  If SIZE is bigger
-     than the table data provides then the return value is zero.  The
-     maximum SIZE currently supported is 128.
-
- -- Function: void gmp_randinit_set (gmp_randstate_t ROP,
-          gmp_randstate_t OP)
-     Initialize ROP with a copy of the algorithm and state from OP.
-
- -- Function: void gmp_randinit (gmp_randstate_t STATE,
-          gmp_randalg_t ALG, ...)
-     *This function is obsolete.*
-
-     Initialize STATE with an algorithm selected by ALG.  The only
-     choice is `GMP_RAND_ALG_LC', which is `gmp_randinit_lc_2exp_size'
-     described above.  A third parameter of type `unsigned long' is
-     required, this is the SIZE for that function.
-     `GMP_RAND_ALG_DEFAULT' or 0 are the same as `GMP_RAND_ALG_LC'.
-
-     `gmp_randinit' sets bits in the global variable `gmp_errno' to
-     indicate an error.  `GMP_ERROR_UNSUPPORTED_ARGUMENT' if ALG is
-     unsupported, or `GMP_ERROR_INVALID_ARGUMENT' if the SIZE parameter
-     is too big.  It may be noted this error reporting is not thread
-     safe (a good reason to use `gmp_randinit_lc_2exp_size' instead).
-
- -- Function: void gmp_randclear (gmp_randstate_t STATE)
-     Free all memory occupied by STATE.
-
-\1f
-File: gmp.info,  Node: Random State Seeding,  Next: Random State Miscellaneous,  Prev: Random State Initialization,  Up: Random Number Functions
-
-9.2 Random State Seeding
-========================
-
- -- Function: void gmp_randseed (gmp_randstate_t STATE, mpz_t SEED)
- -- Function: void gmp_randseed_ui (gmp_randstate_t STATE,
-          unsigned long int SEED)
-     Set an initial seed value into STATE.
-
-     The size of a seed determines how many different sequences of
-     random numbers that it's possible to generate.  The "quality" of
-     the seed is the randomness of a given seed compared to the
-     previous seed used, and this affects the randomness of separate
-     number sequences.  The method for choosing a seed is critical if
-     the generated numbers are to be used for important applications,
-     such as generating cryptographic keys.
-
-     Traditionally the system time has been used to seed, but care
-     needs to be taken with this.  If an application seeds often and
-     the resolution of the system clock is low, then the same sequence
-     of numbers might be repeated.  Also, the system time is quite easy
-     to guess, so if unpredictability is required then it should
-     definitely not be the only source for the seed value.  On some
-     systems there's a special device `/dev/random' which provides
-     random data better suited for use as a seed.
-
-\1f
-File: gmp.info,  Node: Random State Miscellaneous,  Prev: Random State Seeding,  Up: Random Number Functions
-
-9.3 Random State Miscellaneous
-==============================
-
- -- Function: unsigned long gmp_urandomb_ui (gmp_randstate_t STATE,
-          unsigned long N)
-     Return a uniformly distributed random number of N bits, ie. in the
-     range 0 to 2^N-1 inclusive.  N must be less than or equal to the
-     number of bits in an `unsigned long'.
-
- -- Function: unsigned long gmp_urandomm_ui (gmp_randstate_t STATE,
-          unsigned long N)
-     Return a uniformly distributed random number in the range 0 to
-     N-1, inclusive.
-
-\1f
-File: gmp.info,  Node: Formatted Output,  Next: Formatted Input,  Prev: Random Number Functions,  Up: Top
-
-10 Formatted Output
-*******************
-
-* Menu:
-
-* Formatted Output Strings::
-* Formatted Output Functions::
-* C++ Formatted Output::
-
-\1f
-File: gmp.info,  Node: Formatted Output Strings,  Next: Formatted Output Functions,  Prev: Formatted Output,  Up: Formatted Output
-
-10.1 Format Strings
-===================
-
-`gmp_printf' and friends accept format strings similar to the standard C
-`printf' (*note Formatted Output: (libc)Formatted Output.).  A format
-specification is of the form
-
-     % [flags] [width] [.[precision]] [type] conv
-
-   GMP adds types `Z', `Q' and `F' for `mpz_t', `mpq_t' and `mpf_t'
-respectively, `M' for `mp_limb_t', and `N' for an `mp_limb_t' array.
-`Z', `Q', `M' and `N' behave like integers.  `Q' will print a `/' and a
-denominator, if needed.  `F' behaves like a float.  For example,
-
-     mpz_t z;
-     gmp_printf ("%s is an mpz %Zd\n", "here", z);
-
-     mpq_t q;
-     gmp_printf ("a hex rational: %#40Qx\n", q);
-
-     mpf_t f;
-     int   n;
-     gmp_printf ("fixed point mpf %.*Ff with %d digits\n", n, f, n);
-
-     mp_limb_t l;
-     gmp_printf ("limb %Mu\n", l);
-
-     const mp_limb_t *ptr;
-     mp_size_t       size;
-     gmp_printf ("limb array %Nx\n", ptr, size);
-
-   For `N' the limbs are expected least significant first, as per the
-`mpn' functions (*note Low-level Functions::).  A negative size can be
-given to print the value as a negative.
-
-   All the standard C `printf' types behave the same as the C library
-`printf', and can be freely intermixed with the GMP extensions.  In the
-current implementation the standard parts of the format string are
-simply handed to `printf' and only the GMP extensions handled directly.
-
-   The flags accepted are as follows.  GLIBC style ' is only for the
-standard C types (not the GMP types), and only if the C library
-supports it.
-
-     0         pad with zeros (rather than spaces)
-     #         show the base with `0x', `0X' or `0'
-     +         always show a sign
-     (space)   show a space or a `-' sign
-     '         group digits, GLIBC style (not GMP types)
-
-   The optional width and precision can be given as a number within the
-format string, or as a `*' to take an extra parameter of type `int', the
-same as the standard `printf'.
-
-   The standard types accepted are as follows.  `h' and `l' are
-portable, the rest will depend on the compiler (or include files) for
-the type and the C library for the output.
-
-     h         short
-     hh        char
-     j         intmax_t or uintmax_t
-     l         long or wchar_t
-     ll        long long
-     L         long double
-     q         quad_t or u_quad_t
-     t         ptrdiff_t
-     z         size_t
-
-The GMP types are
-
-     F         mpf_t, float conversions
-     Q         mpq_t, integer conversions
-     M         mp_limb_t, integer conversions
-     N         mp_limb_t array, integer conversions
-     Z         mpz_t, integer conversions
-
-   The conversions accepted are as follows.  `a' and `A' are always
-supported for `mpf_t' but depend on the C library for standard C float
-types.  `m' and `p' depend on the C library.
-
-     a A       hex floats, C99 style
-     c         character
-     d         decimal integer
-     e E       scientific format float
-     f         fixed point float
-     i         same as d
-     g G       fixed or scientific float
-     m         `strerror' string, GLIBC style
-     n         store characters written so far
-     o         octal integer
-     p         pointer
-     s         string
-     u         unsigned integer
-     x X       hex integer
-
-   `o', `x' and `X' are unsigned for the standard C types, but for
-types `Z', `Q' and `N' they are signed.  `u' is not meaningful for `Z',
-`Q' and `N'.
-
-   `M' is a proxy for the C library `l' or `L', according to the size
-of `mp_limb_t'.  Unsigned conversions will be usual, but a signed
-conversion can be used and will interpret the value as a twos complement
-negative.
-
-   `n' can be used with any type, even the GMP types.
-
-   Other types or conversions that might be accepted by the C library
-`printf' cannot be used through `gmp_printf', this includes for
-instance extensions registered with GLIBC `register_printf_function'.
-Also currently there's no support for POSIX `$' style numbered arguments
-(perhaps this will be added in the future).
-
-   The precision field has it's usual meaning for integer `Z' and float
-`F' types, but is currently undefined for `Q' and should not be used
-with that.
-
-   `mpf_t' conversions only ever generate as many digits as can be
-accurately represented by the operand, the same as `mpf_get_str' does.
-Zeros will be used if necessary to pad to the requested precision.  This
-happens even for an `f' conversion of an `mpf_t' which is an integer,
-for instance 2^1024 in an `mpf_t' of 128 bits precision will only
-produce about 40 digits, then pad with zeros to the decimal point.  An
-empty precision field like `%.Fe' or `%.Ff' can be used to specifically
-request just the significant digits.
-
-   The decimal point character (or string) is taken from the current
-locale settings on systems which provide `localeconv' (*note Locales
-and Internationalization: (libc)Locales.).  The C library will normally
-do the same for standard float output.
-
-   The format string is only interpreted as plain `char's, multibyte
-characters are not recognised.  Perhaps this will change in the future.
-
-\1f
-File: gmp.info,  Node: Formatted Output Functions,  Next: C++ Formatted Output,  Prev: Formatted Output Strings,  Up: Formatted Output
-
-10.2 Functions
-==============
-
-Each of the following functions is similar to the corresponding C
-library function.  The basic `printf' forms take a variable argument
-list.  The `vprintf' forms take an argument pointer, see *Note Variadic
-Functions: (libc)Variadic Functions, or `man 3 va_start'.
-
-   It should be emphasised that if a format string is invalid, or the
-arguments don't match what the format specifies, then the behaviour of
-any of these functions will be unpredictable.  GCC format string
-checking is not available, since it doesn't recognise the GMP
-extensions.
-
-   The file based functions `gmp_printf' and `gmp_fprintf' will return
--1 to indicate a write error.  Output is not "atomic", so partial
-output may be produced if a write error occurs.  All the functions can
-return -1 if the C library `printf' variant in use returns -1, but this
-shouldn't normally occur.
-
- -- Function: int gmp_printf (const char *FMT, ...)
- -- Function: int gmp_vprintf (const char *FMT, va_list AP)
-     Print to the standard output `stdout'.  Return the number of
-     characters written, or -1 if an error occurred.
-
- -- Function: int gmp_fprintf (FILE *FP, const char *FMT, ...)
- -- Function: int gmp_vfprintf (FILE *FP, const char *FMT, va_list AP)
-     Print to the stream FP.  Return the number of characters written,
-     or -1 if an error occurred.
-
- -- Function: int gmp_sprintf (char *BUF, const char *FMT, ...)
- -- Function: int gmp_vsprintf (char *BUF, const char *FMT, va_list AP)
-     Form a null-terminated string in BUF.  Return the number of
-     characters written, excluding the terminating null.
-
-     No overlap is permitted between the space at BUF and the string
-     FMT.
-
-     These functions are not recommended, since there's no protection
-     against exceeding the space available at BUF.
-
- -- Function: int gmp_snprintf (char *BUF, size_t SIZE, const char
-          *FMT, ...)
- -- Function: int gmp_vsnprintf (char *BUF, size_t SIZE, const char
-          *FMT, va_list AP)
-     Form a null-terminated string in BUF.  No more than SIZE bytes
-     will be written.  To get the full output, SIZE must be enough for
-     the string and null-terminator.
-
-     The return value is the total number of characters which ought to
-     have been produced, excluding the terminating null.  If RETVAL >=
-     SIZE then the actual output has been truncated to the first SIZE-1
-     characters, and a null appended.
-
-     No overlap is permitted between the region {BUF,SIZE} and the FMT
-     string.
-
-     Notice the return value is in ISO C99 `snprintf' style.  This is
-     so even if the C library `vsnprintf' is the older GLIBC 2.0.x
-     style.
-
- -- Function: int gmp_asprintf (char **PP, const char *FMT, ...)
- -- Function: int gmp_vasprintf (char **PP, const char *FMT, va_list AP)
-     Form a null-terminated string in a block of memory obtained from
-     the current memory allocation function (*note Custom
-     Allocation::).  The block will be the size of the string and
-     null-terminator.  The address of the block in stored to *PP.  The
-     return value is the number of characters produced, excluding the
-     null-terminator.
-
-     Unlike the C library `asprintf', `gmp_asprintf' doesn't return -1
-     if there's no more memory available, it lets the current allocation
-     function handle that.
-
- -- Function: int gmp_obstack_printf (struct obstack *OB, const char
-          *FMT, ...)
- -- Function: int gmp_obstack_vprintf (struct obstack *OB, const char
-          *FMT, va_list AP)
-     Append to the current object in OB.  The return value is the
-     number of characters written.  A null-terminator is not written.
-
-     FMT cannot be within the current object in OB, since that object
-     might move as it grows.
-
-     These functions are available only when the C library provides the
-     obstack feature, which probably means only on GNU systems, see
-     *Note Obstacks: (libc)Obstacks.
-
-\1f
-File: gmp.info,  Node: C++ Formatted Output,  Prev: Formatted Output Functions,  Up: Formatted Output
-
-10.3 C++ Formatted Output
-=========================
-
-The following functions are provided in `libgmpxx' (*note Headers and
-Libraries::), which is built if C++ support is enabled (*note Build
-Options::).  Prototypes are available from `<gmp.h>'.
-
- -- Function: ostream& operator<< (ostream& STREAM, mpz_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     In hex or octal, OP is printed as a signed number, the same as for
-     decimal.  This is unlike the standard `operator<<' routines on
-     `int' etc, which instead give twos complement.
-
- -- Function: ostream& operator<< (ostream& STREAM, mpq_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     Output will be a fraction like `5/9', or if the denominator is 1
-     then just a plain integer like `123'.
-
-     In hex or octal, OP is printed as a signed value, the same as for
-     decimal.  If `ios::showbase' is set then a base indicator is shown
-     on both the numerator and denominator (if the denominator is
-     required).
-
- -- Function: ostream& operator<< (ostream& STREAM, mpf_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     The decimal point follows the standard library float `operator<<',
-     which on recent systems means the `std::locale' imbued on STREAM.
-
-     Hex and octal are supported, unlike the standard `operator<<' on
-     `double'.  The mantissa will be in hex or octal, the exponent will
-     be in decimal.  For hex the exponent delimiter is an `@'.  This is
-     as per `mpf_out_str'.
-
-     `ios::showbase' is supported, and will put a base on the mantissa,
-     for example hex `0x1.8' or `0x0.8', or octal `01.4' or `00.4'.
-     This last form is slightly strange, but at least differentiates
-     itself from decimal.
-
-   These operators mean that GMP types can be printed in the usual C++
-way, for example,
-
-     mpz_t  z;
-     int    n;
-     ...
-     cout << "iteration " << n << " value " << z << "\n";
-
-   But note that `ostream' output (and `istream' input, *note C++
-Formatted Input::) is the only overloading available for the GMP types
-and that for instance using `+' with an `mpz_t' will have unpredictable
-results.  For classes with overloading, see *Note C++ Class Interface::.
-
-\1f
-File: gmp.info,  Node: Formatted Input,  Next: C++ Class Interface,  Prev: Formatted Output,  Up: Top
-
-11 Formatted Input
-******************
-
-* Menu:
-
-* Formatted Input Strings::
-* Formatted Input Functions::
-* C++ Formatted Input::
-
-\1f
-File: gmp.info,  Node: Formatted Input Strings,  Next: Formatted Input Functions,  Prev: Formatted Input,  Up: Formatted Input
-
-11.1 Formatted Input Strings
-============================
-
-`gmp_scanf' and friends accept format strings similar to the standard C
-`scanf' (*note Formatted Input: (libc)Formatted Input.).  A format
-specification is of the form
-
-     % [flags] [width] [type] conv
-
-   GMP adds types `Z', `Q' and `F' for `mpz_t', `mpq_t' and `mpf_t'
-respectively.  `Z' and `Q' behave like integers.  `Q' will read a `/'
-and a denominator, if present.  `F' behaves like a float.
-
-   GMP variables don't require an `&' when passed to `gmp_scanf', since
-they're already "call-by-reference".  For example,
-
-     /* to read say "a(5) = 1234" */
-     int   n;
-     mpz_t z;
-     gmp_scanf ("a(%d) = %Zd\n", &n, z);
-
-     mpq_t q1, q2;
-     gmp_sscanf ("0377 + 0x10/0x11", "%Qi + %Qi", q1, q2);
-
-     /* to read say "topleft (1.55,-2.66)" */
-     mpf_t x, y;
-     char  buf[32];
-     gmp_scanf ("%31s (%Ff,%Ff)", buf, x, y);
-
-   All the standard C `scanf' types behave the same as in the C library
-`scanf', and can be freely intermixed with the GMP extensions.  In the
-current implementation the standard parts of the format string are
-simply handed to `scanf' and only the GMP extensions handled directly.
-
-   The flags accepted are as follows.  `a' and `'' will depend on
-support from the C library, and `'' cannot be used with GMP types.
-
-     *         read but don't store
-     a         allocate a buffer (string conversions)
-     '         grouped digits, GLIBC style (not GMP
-               types)
-
-   The standard types accepted are as follows.  `h' and `l' are
-portable, the rest will depend on the compiler (or include files) for
-the type and the C library for the input.
-
-     h         short
-     hh        char
-     j         intmax_t or uintmax_t
-     l         long int, double or wchar_t
-     ll        long long
-     L         long double
-     q         quad_t or u_quad_t
-     t         ptrdiff_t
-     z         size_t
-
-The GMP types are
-
-     F         mpf_t, float conversions
-     Q         mpq_t, integer conversions
-     Z         mpz_t, integer conversions
-
-   The conversions accepted are as follows.  `p' and `[' will depend on
-support from the C library, the rest are standard.
-
-     c         character or characters
-     d         decimal integer
-     e E f g G float
-     i         integer with base indicator
-     n         characters read so far
-     o         octal integer
-     p         pointer
-     s         string of non-whitespace characters
-     u         decimal integer
-     x X       hex integer
-     [         string of characters in a set
-
-   `e', `E', `f', `g' and `G' are identical, they all read either fixed
-point or scientific format, and either upper or lower case `e' for the
-exponent in scientific format.
-
-   C99 style hex float format (`printf %a', *note Formatted Output
-Strings::) is always accepted for `mpf_t', but for the standard float
-types it will depend on the C library.
-
-   `x' and `X' are identical, both accept both upper and lower case
-hexadecimal.
-
-   `o', `u', `x' and `X' all read positive or negative values.  For the
-standard C types these are described as "unsigned" conversions, but
-that merely affects certain overflow handling, negatives are still
-allowed (per `strtoul', *note Parsing of Integers: (libc)Parsing of
-Integers.).  For GMP types there are no overflows, so `d' and `u' are
-identical.
-
-   `Q' type reads the numerator and (optional) denominator as given.
-If the value might not be in canonical form then `mpq_canonicalize'
-must be called before using it in any calculations (*note Rational
-Number Functions::).
-
-   `Qi' will read a base specification separately for the numerator and
-denominator.  For example `0x10/11' would be 16/11, whereas `0x10/0x11'
-would be 16/17.
-
-   `n' can be used with any of the types above, even the GMP types.
-`*' to suppress assignment is allowed, though in that case it would do
-nothing at all.
-
-   Other conversions or types that might be accepted by the C library
-`scanf' cannot be used through `gmp_scanf'.
-
-   Whitespace is read and discarded before a field, except for `c' and
-`[' conversions.
-
-   For float conversions, the decimal point character (or string)
-expected is taken from the current locale settings on systems which
-provide `localeconv' (*note Locales and Internationalization:
-(libc)Locales.).  The C library will normally do the same for standard
-float input.
-
-   The format string is only interpreted as plain `char's, multibyte
-characters are not recognised.  Perhaps this will change in the future.
-
-\1f
-File: gmp.info,  Node: Formatted Input Functions,  Next: C++ Formatted Input,  Prev: Formatted Input Strings,  Up: Formatted Input
-
-11.2 Formatted Input Functions
-==============================
-
-Each of the following functions is similar to the corresponding C
-library function.  The plain `scanf' forms take a variable argument
-list.  The `vscanf' forms take an argument pointer, see *Note Variadic
-Functions: (libc)Variadic Functions, or `man 3 va_start'.
-
-   It should be emphasised that if a format string is invalid, or the
-arguments don't match what the format specifies, then the behaviour of
-any of these functions will be unpredictable.  GCC format string
-checking is not available, since it doesn't recognise the GMP
-extensions.
-
-   No overlap is permitted between the FMT string and any of the results
-produced.
-
- -- Function: int gmp_scanf (const char *FMT, ...)
- -- Function: int gmp_vscanf (const char *FMT, va_list AP)
-     Read from the standard input `stdin'.
-
- -- Function: int gmp_fscanf (FILE *FP, const char *FMT, ...)
- -- Function: int gmp_vfscanf (FILE *FP, const char *FMT, va_list AP)
-     Read from the stream FP.
-
- -- Function: int gmp_sscanf (const char *S, const char *FMT, ...)
- -- Function: int gmp_vsscanf (const char *S, const char *FMT, va_list
-          AP)
-     Read from a null-terminated string S.
-
-   The return value from each of these functions is the same as the
-standard C99 `scanf', namely the number of fields successfully parsed
-and stored.  `%n' fields and fields read but suppressed by `*' don't
-count towards the return value.
-
-   If end of input (or a file error) is reached before a character for
-a field or a literal, and if no previous non-suppressed fields have
-matched, then the return value is `EOF' instead of 0.  A whitespace
-character in the format string is only an optional match and doesn't
-induce an `EOF' in this fashion.  Leading whitespace read and discarded
-for a field don't count as characters for that field.
-
-   For the GMP types, input parsing follows C99 rules, namely one
-character of lookahead is used and characters are read while they
-continue to meet the format requirements.  If this doesn't provide a
-complete number then the function terminates, with that field not
-stored nor counted towards the return value.  For instance with `mpf_t'
-an input `1.23e-XYZ' would be read up to the `X' and that character
-pushed back since it's not a digit.  The string `1.23e-' would then be
-considered invalid since an `e' must be followed by at least one digit.
-
-   For the standard C types, in the current implementation GMP calls
-the C library `scanf' functions, which might have looser rules about
-what constitutes a valid input.
-
-   Note that `gmp_sscanf' is the same as `gmp_fscanf' and only does one
-character of lookahead when parsing.  Although clearly it could look at
-its entire input, it is deliberately made identical to `gmp_fscanf',
-the same way C99 `sscanf' is the same as `fscanf'.
-
-\1f
-File: gmp.info,  Node: C++ Formatted Input,  Prev: Formatted Input Functions,  Up: Formatted Input
-
-11.3 C++ Formatted Input
-========================
-
-The following functions are provided in `libgmpxx' (*note Headers and
-Libraries::), which is built only if C++ support is enabled (*note
-Build Options::).  Prototypes are available from `<gmp.h>'.
-
- -- Function: istream& operator>> (istream& STREAM, mpz_t ROP)
-     Read ROP from STREAM, using its `ios' formatting settings.
-
- -- Function: istream& operator>> (istream& STREAM, mpq_t ROP)
-     An integer like `123' will be read, or a fraction like `5/9'.  No
-     whitespace is allowed around the `/'.  If the fraction is not in
-     canonical form then `mpq_canonicalize' must be called (*note
-     Rational Number Functions::) before operating on it.
-
-     As per integer input, an `0' or `0x' base indicator is read when
-     none of `ios::dec', `ios::oct' or `ios::hex' are set.  This is
-     done separately for numerator and denominator, so that for instance
-     `0x10/11' is 16/11 and `0x10/0x11' is 16/17.
-
- -- Function: istream& operator>> (istream& STREAM, mpf_t ROP)
-     Read ROP from STREAM, using its `ios' formatting settings.
-
-     Hex or octal floats are not supported, but might be in the future,
-     or perhaps it's best to accept only what the standard float
-     `operator>>' does.
-
-   Note that digit grouping specified by the `istream' locale is
-currently not accepted.  Perhaps this will change in the future.
-
-
-   These operators mean that GMP types can be read in the usual C++
-way, for example,
-
-     mpz_t  z;
-     ...
-     cin >> z;
-
-   But note that `istream' input (and `ostream' output, *note C++
-Formatted Output::) is the only overloading available for the GMP types
-and that for instance using `+' with an `mpz_t' will have unpredictable
-results.  For classes with overloading, see *Note C++ Class Interface::.
-
-\1f
-File: gmp.info,  Node: C++ Class Interface,  Next: BSD Compatible Functions,  Prev: Formatted Input,  Up: Top
-
-12 C++ Class Interface
-**********************
-
-This chapter describes the C++ class based interface to GMP.
-
-   All GMP C language types and functions can be used in C++ programs,
-since `gmp.h' has `extern "C"' qualifiers, but the class interface
-offers overloaded functions and operators which may be more convenient.
-
-   Due to the implementation of this interface, a reasonably recent C++
-compiler is required, one supporting namespaces, partial specialization
-of templates and member templates.  For GCC this means version 2.91 or
-later.
-
-   *Everything described in this chapter is to be considered preliminary
-and might be subject to incompatible changes if some unforeseen
-difficulty reveals itself.*
-
-* Menu:
-
-* C++ Interface General::
-* C++ Interface Integers::
-* C++ Interface Rationals::
-* C++ Interface Floats::
-* C++ Interface Random Numbers::
-* C++ Interface Limitations::
-
-\1f
-File: gmp.info,  Node: C++ Interface General,  Next: C++ Interface Integers,  Prev: C++ Class Interface,  Up: C++ Class Interface
-
-12.1 C++ Interface General
-==========================
-
-All the C++ classes and functions are available with
-
-     #include <gmpxx.h>
-
-   Programs should be linked with the `libgmpxx' and `libgmp'
-libraries.  For example,
-
-     g++ mycxxprog.cc -lgmpxx -lgmp
-
-The classes defined are
-
- -- Class: mpz_class
- -- Class: mpq_class
- -- Class: mpf_class
-
-   The standard operators and various standard functions are overloaded
-to allow arithmetic with these classes.  For example,
-
-     int
-     main (void)
-     {
-       mpz_class a, b, c;
-
-       a = 1234;
-       b = "-5678";
-       c = a+b;
-       cout << "sum is " << c << "\n";
-       cout << "absolute value is " << abs(c) << "\n";
-
-       return 0;
-     }
-
-   An important feature of the implementation is that an expression like
-`a=b+c' results in a single call to the corresponding `mpz_add',
-without using a temporary for the `b+c' part.  Expressions which by
-their nature imply intermediate values, like `a=b*c+d*e', still use
-temporaries though.
-
-   The classes can be freely intermixed in expressions, as can the
-classes and the standard types `long', `unsigned long' and `double'.
-Smaller types like `int' or `float' can also be intermixed, since C++
-will promote them.
-
-   Note that `bool' is not accepted directly, but must be explicitly
-cast to an `int' first.  This is because C++ will automatically convert
-any pointer to a `bool', so if GMP accepted `bool' it would make all
-sorts of invalid class and pointer combinations compile but almost
-certainly not do anything sensible.
-
-   Conversions back from the classes to standard C++ types aren't done
-automatically, instead member functions like `get_si' are provided (see
-the following sections for details).
-
-   Also there are no automatic conversions from the classes to the
-corresponding GMP C types, instead a reference to the underlying C
-object can be obtained with the following functions,
-
- -- Function: mpz_t mpz_class::get_mpz_t ()
- -- Function: mpq_t mpq_class::get_mpq_t ()
- -- Function: mpf_t mpf_class::get_mpf_t ()
-
-   These can be used to call a C function which doesn't have a C++ class
-interface.  For example to set `a' to the GCD of `b' and `c',
-
-     mpz_class a, b, c;
-     ...
-     mpz_gcd (a.get_mpz_t(), b.get_mpz_t(), c.get_mpz_t());
-
-   In the other direction, a class can be initialized from the
-corresponding GMP C type, or assigned to if an explicit constructor is
-used.  In both cases this makes a copy of the value, it doesn't create
-any sort of association.  For example,
-
-     mpz_t z;
-     // ... init and calculate z ...
-     mpz_class x(z);
-     mpz_class y;
-     y = mpz_class (z);
-
-   There are no namespace setups in `gmpxx.h', all types and functions
-are simply put into the global namespace.  This is what `gmp.h' has
-done in the past, and continues to do for compatibility.  The extras
-provided by `gmpxx.h' follow GMP naming conventions and are unlikely to
-clash with anything.
-
-\1f
-File: gmp.info,  Node: C++ Interface Integers,  Next: C++ Interface Rationals,  Prev: C++ Interface General,  Up: C++ Class Interface
-
-12.2 C++ Interface Integers
-===========================
-
- -- Function: void mpz_class::mpz_class (type N)
-     Construct an `mpz_class'.  All the standard C++ types may be used,
-     except `long long' and `long double', and all the GMP C++ classes
-     can be used.  Any necessary conversion follows the corresponding C
-     function, for example `double' follows `mpz_set_d' (*note
-     Assigning Integers::).
-
- -- Function: void mpz_class::mpz_class (mpz_t Z)
-     Construct an `mpz_class' from an `mpz_t'.  The value in Z is
-     copied into the new `mpz_class', there won't be any permanent
-     association between it and Z.
-
- -- Function: void mpz_class::mpz_class (const char *S)
- -- Function: void mpz_class::mpz_class (const char *S, int BASE = 0)
- -- Function: void mpz_class::mpz_class (const string& S)
- -- Function: void mpz_class::mpz_class (const string& S, int BASE = 0)
-     Construct an `mpz_class' converted from a string using
-     `mpz_set_str' (*note Assigning Integers::).
-
-     If the string is not a valid integer, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: mpz_class operator/ (mpz_class A, mpz_class D)
- -- Function: mpz_class operator% (mpz_class A, mpz_class D)
-     Divisions involving `mpz_class' round towards zero, as per the
-     `mpz_tdiv_q' and `mpz_tdiv_r' functions (*note Integer Division::).
-     This is the same as the C99 `/' and `%' operators.
-
-     The `mpz_fdiv...' or `mpz_cdiv...' functions can always be called
-     directly if desired.  For example,
-
-          mpz_class q, a, d;
-          ...
-          mpz_fdiv_q (q.get_mpz_t(), a.get_mpz_t(), d.get_mpz_t());
-
- -- Function: mpz_class abs (mpz_class OP1)
- -- Function: int cmp (mpz_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpz_class OP2)
- -- Function: bool mpz_class::fits_sint_p (void)
- -- Function: bool mpz_class::fits_slong_p (void)
- -- Function: bool mpz_class::fits_sshort_p (void)
- -- Function: bool mpz_class::fits_uint_p (void)
- -- Function: bool mpz_class::fits_ulong_p (void)
- -- Function: bool mpz_class::fits_ushort_p (void)
- -- Function: double mpz_class::get_d (void)
- -- Function: long mpz_class::get_si (void)
- -- Function: string mpz_class::get_str (int BASE = 10)
- -- Function: unsigned long mpz_class::get_ui (void)
- -- Function: int mpz_class::set_str (const char *STR, int BASE)
- -- Function: int mpz_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpz_class OP)
- -- Function: mpz_class sqrt (mpz_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
-
-   Overloaded operators for combinations of `mpz_class' and `double'
-are provided for completeness, but it should be noted that if the given
-`double' is not an integer then the way any rounding is done is
-currently unspecified.  The rounding might take place at the start, in
-the middle, or at the end of the operation, and it might change in the
-future.
-
-   Conversions between `mpz_class' and `double', however, are defined
-to follow the corresponding C functions `mpz_get_d' and `mpz_set_d'.
-And comparisons are always made exactly, as per `mpz_cmp_d'.
-
-\1f
-File: gmp.info,  Node: C++ Interface Rationals,  Next: C++ Interface Floats,  Prev: C++ Interface Integers,  Up: C++ Class Interface
-
-12.3 C++ Interface Rationals
-============================
-
-In all the following constructors, if a fraction is given then it
-should be in canonical form, or if not then `mpq_class::canonicalize'
-called.
-
- -- Function: void mpq_class::mpq_class (type OP)
- -- Function: void mpq_class::mpq_class (integer NUM, integer DEN)
-     Construct an `mpq_class'.  The initial value can be a single value
-     of any type, or a pair of integers (`mpz_class' or standard C++
-     integer types) representing a fraction, except that `long long'
-     and `long double' are not supported.  For example,
-
-          mpq_class q (99);
-          mpq_class q (1.75);
-          mpq_class q (1, 3);
-
- -- Function: void mpq_class::mpq_class (mpq_t Q)
-     Construct an `mpq_class' from an `mpq_t'.  The value in Q is
-     copied into the new `mpq_class', there won't be any permanent
-     association between it and Q.
-
- -- Function: void mpq_class::mpq_class (const char *S)
- -- Function: void mpq_class::mpq_class (const char *S, int BASE = 0)
- -- Function: void mpq_class::mpq_class (const string& S)
- -- Function: void mpq_class::mpq_class (const string& S, int BASE = 0)
-     Construct an `mpq_class' converted from a string using
-     `mpq_set_str' (*note Initializing Rationals::).
-
-     If the string is not a valid rational, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: void mpq_class::canonicalize ()
-     Put an `mpq_class' into canonical form, as per *Note Rational
-     Number Functions::.  All arithmetic operators require their
-     operands in canonical form, and will return results in canonical
-     form.
-
- -- Function: mpq_class abs (mpq_class OP)
- -- Function: int cmp (mpq_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpq_class OP2)
- -- Function: double mpq_class::get_d (void)
- -- Function: string mpq_class::get_str (int BASE = 10)
- -- Function: int mpq_class::set_str (const char *STR, int BASE)
- -- Function: int mpq_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpq_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
- -- Function: mpz_class& mpq_class::get_num ()
- -- Function: mpz_class& mpq_class::get_den ()
-     Get a reference to an `mpz_class' which is the numerator or
-     denominator of an `mpq_class'.  This can be used both for read and
-     write access.  If the object returned is modified, it modifies the
-     original `mpq_class'.
-
-     If direct manipulation might produce a non-canonical value, then
-     `mpq_class::canonicalize' must be called before further operations.
-
- -- Function: mpz_t mpq_class::get_num_mpz_t ()
- -- Function: mpz_t mpq_class::get_den_mpz_t ()
-     Get a reference to the underlying `mpz_t' numerator or denominator
-     of an `mpq_class'.  This can be passed to C functions expecting an
-     `mpz_t'.  Any modifications made to the `mpz_t' will modify the
-     original `mpq_class'.
-
-     If direct manipulation might produce a non-canonical value, then
-     `mpq_class::canonicalize' must be called before further operations.
-
- -- Function: istream& operator>> (istream& STREAM, mpq_class& ROP);
-     Read ROP from STREAM, using its `ios' formatting settings, the
-     same as `mpq_t operator>>' (*note C++ Formatted Input::).
-
-     If the ROP read might not be in canonical form then
-     `mpq_class::canonicalize' must be called.
-
-\1f
-File: gmp.info,  Node: C++ Interface Floats,  Next: C++ Interface Random Numbers,  Prev: C++ Interface Rationals,  Up: C++ Class Interface
-
-12.4 C++ Interface Floats
-=========================
-
-When an expression requires the use of temporary intermediate
-`mpf_class' values, like `f=g*h+x*y', those temporaries will have the
-same precision as the destination `f'.  Explicit constructors can be
-used if this doesn't suit.
-
- -- Function:  mpf_class::mpf_class (type OP)
- -- Function:  mpf_class::mpf_class (type OP, unsigned long PREC)
-     Construct an `mpf_class'.  Any standard C++ type can be used,
-     except `long long' and `long double', and any of the GMP C++
-     classes can be used.
-
-     If PREC is given, the initial precision is that value, in bits.  If
-     PREC is not given, then the initial precision is determined by the
-     type of OP given.  An `mpz_class', `mpq_class', or C++ builtin
-     type will give the default `mpf' precision (*note Initializing
-     Floats::).  An `mpf_class' or expression will give the precision
-     of that value.  The precision of a binary expression is the higher
-     of the two operands.
-
-          mpf_class f(1.5);        // default precision
-          mpf_class f(1.5, 500);   // 500 bits (at least)
-          mpf_class f(x);          // precision of x
-          mpf_class f(abs(x));     // precision of x
-          mpf_class f(-g, 1000);   // 1000 bits (at least)
-          mpf_class f(x+y);        // greater of precisions of x and y
-
- -- Function: void mpf_class::mpf_class (const char *S)
- -- Function: void mpf_class::mpf_class (const char *S, unsigned long
-          PREC, int BASE = 0)
- -- Function: void mpf_class::mpf_class (const string& S)
- -- Function: void mpf_class::mpf_class (const string& S, unsigned long
-          PREC, int BASE = 0)
-     Construct an `mpf_class' converted from a string using
-     `mpf_set_str' (*note Assigning Floats::).  If PREC is given, the
-     initial precision is that value, in bits.  If not, the default
-     `mpf' precision (*note Initializing Floats::) is used.
-
-     If the string is not a valid float, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: mpf_class& mpf_class::operator= (type OP)
-     Convert and store the given OP value to an `mpf_class' object.  The
-     same types are accepted as for the constructors above.
-
-     Note that `operator=' only stores a new value, it doesn't copy or
-     change the precision of the destination, instead the value is
-     truncated if necessary.  This is the same as `mpf_set' etc.  Note
-     in particular this means for `mpf_class' a copy constructor is not
-     the same as a default constructor plus assignment.
-
-          mpf_class x (y);   // x created with precision of y
-
-          mpf_class x;       // x created with default precision
-          x = y;             // value truncated to that precision
-
-     Applications using templated code may need to be careful about the
-     assumptions the code makes in this area, when working with
-     `mpf_class' values of various different or non-default precisions.
-     For instance implementations of the standard `complex' template
-     have been seen in both styles above, though of course `complex' is
-     normally only actually specified for use with the builtin float
-     types.
-
- -- Function: mpf_class abs (mpf_class OP)
- -- Function: mpf_class ceil (mpf_class OP)
- -- Function: int cmp (mpf_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpf_class OP2)
- -- Function: bool mpf_class::fits_sint_p (void)
- -- Function: bool mpf_class::fits_slong_p (void)
- -- Function: bool mpf_class::fits_sshort_p (void)
- -- Function: bool mpf_class::fits_uint_p (void)
- -- Function: bool mpf_class::fits_ulong_p (void)
- -- Function: bool mpf_class::fits_ushort_p (void)
- -- Function: mpf_class floor (mpf_class OP)
- -- Function: mpf_class hypot (mpf_class OP1, mpf_class OP2)
- -- Function: double mpf_class::get_d (void)
- -- Function: long mpf_class::get_si (void)
- -- Function: string mpf_class::get_str (mp_exp_t& EXP, int BASE = 10,
-          size_t DIGITS = 0)
- -- Function: unsigned long mpf_class::get_ui (void)
- -- Function: int mpf_class::set_str (const char *STR, int BASE)
- -- Function: int mpf_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpf_class OP)
- -- Function: mpf_class sqrt (mpf_class OP)
- -- Function: mpf_class trunc (mpf_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
-     The accuracy provided by `hypot' is not currently guaranteed.
-
- -- Function: mp_bitcnt_t mpf_class::get_prec ()
- -- Function: void mpf_class::set_prec (mp_bitcnt_t PREC)
- -- Function: void mpf_class::set_prec_raw (mp_bitcnt_t PREC)
-     Get or set the current precision of an `mpf_class'.
-
-     The restrictions described for `mpf_set_prec_raw' (*note
-     Initializing Floats::) apply to `mpf_class::set_prec_raw'.  Note
-     in particular that the `mpf_class' must be restored to it's
-     allocated precision before being destroyed.  This must be done by
-     application code, there's no automatic mechanism for it.
-
-\1f
-File: gmp.info,  Node: C++ Interface Random Numbers,  Next: C++ Interface Limitations,  Prev: C++ Interface Floats,  Up: C++ Class Interface
-
-12.5 C++ Interface Random Numbers
-=================================
-
- -- Class: gmp_randclass
-     The C++ class interface to the GMP random number functions uses
-     `gmp_randclass' to hold an algorithm selection and current state,
-     as per `gmp_randstate_t'.
-
- -- Function:  gmp_randclass::gmp_randclass (void (*RANDINIT)
-          (gmp_randstate_t, ...), ...)
-     Construct a `gmp_randclass', using a call to the given RANDINIT
-     function (*note Random State Initialization::).  The arguments
-     expected are the same as RANDINIT, but with `mpz_class' instead of
-     `mpz_t'.  For example,
-
-          gmp_randclass r1 (gmp_randinit_default);
-          gmp_randclass r2 (gmp_randinit_lc_2exp_size, 32);
-          gmp_randclass r3 (gmp_randinit_lc_2exp, a, c, m2exp);
-          gmp_randclass r4 (gmp_randinit_mt);
-
-     `gmp_randinit_lc_2exp_size' will fail if the size requested is too
-     big, an `std::length_error' exception is thrown in that case.
-
- -- Function:  gmp_randclass::gmp_randclass (gmp_randalg_t ALG, ...)
-     Construct a `gmp_randclass' using the same parameters as
-     `gmp_randinit' (*note Random State Initialization::).  This
-     function is obsolete and the above RANDINIT style should be
-     preferred.
-
- -- Function: void gmp_randclass::seed (unsigned long int S)
- -- Function: void gmp_randclass::seed (mpz_class S)
-     Seed a random number generator.  See *note Random Number
-     Functions::, for how to choose a good seed.
-
- -- Function: mpz_class gmp_randclass::get_z_bits (unsigned long BITS)
- -- Function: mpz_class gmp_randclass::get_z_bits (mpz_class BITS)
-     Generate a random integer with a specified number of bits.
-
- -- Function: mpz_class gmp_randclass::get_z_range (mpz_class N)
-     Generate a random integer in the range 0 to N-1 inclusive.
-
- -- Function: mpf_class gmp_randclass::get_f ()
- -- Function: mpf_class gmp_randclass::get_f (unsigned long PREC)
-     Generate a random float F in the range 0 <= F < 1.  F will be to
-     PREC bits precision, or if PREC is not given then to the precision
-     of the destination.  For example,
-
-          gmp_randclass  r;
-          ...
-          mpf_class  f (0, 512);   // 512 bits precision
-          f = r.get_f();           // random number, 512 bits
-
-\1f
-File: gmp.info,  Node: C++ Interface Limitations,  Prev: C++ Interface Random Numbers,  Up: C++ Class Interface
-
-12.6 C++ Interface Limitations
-==============================
-
-`mpq_class' and Templated Reading
-     A generic piece of template code probably won't know that
-     `mpq_class' requires a `canonicalize' call if inputs read with
-     `operator>>' might be non-canonical.  This can lead to incorrect
-     results.
-
-     `operator>>' behaves as it does for reasons of efficiency.  A
-     canonicalize can be quite time consuming on large operands, and is
-     best avoided if it's not necessary.
-
-     But this potential difficulty reduces the usefulness of
-     `mpq_class'.  Perhaps a mechanism to tell `operator>>' what to do
-     will be adopted in the future, maybe a preprocessor define, a
-     global flag, or an `ios' flag pressed into service.  Or maybe, at
-     the risk of inconsistency, the `mpq_class' `operator>>' could
-     canonicalize and leave `mpq_t' `operator>>' not doing so, for use
-     on those occasions when that's acceptable.  Send feedback or
-     alternate ideas to <gmp-bugs@gmplib.org>.
-
-Subclassing
-     Subclassing the GMP C++ classes works, but is not currently
-     recommended.
-
-     Expressions involving subclasses resolve correctly (or seem to),
-     but in normal C++ fashion the subclass doesn't inherit
-     constructors and assignments.  There's many of those in the GMP
-     classes, and a good way to reestablish them in a subclass is not
-     yet provided.
-
-Templated Expressions
-     A subtle difficulty exists when using expressions together with
-     application-defined template functions.  Consider the following,
-     with `T' intended to be some numeric type,
-
-          template <class T>
-          T fun (const T &, const T &);
-
-     When used with, say, plain `mpz_class' variables, it works fine:
-     `T' is resolved as `mpz_class'.
-
-          mpz_class f(1), g(2);
-          fun (f, g);    // Good
-
-     But when one of the arguments is an expression, it doesn't work.
-
-          mpz_class f(1), g(2), h(3);
-          fun (f, g+h);  // Bad
-
-     This is because `g+h' ends up being a certain expression template
-     type internal to `gmpxx.h', which the C++ template resolution
-     rules are unable to automatically convert to `mpz_class'.  The
-     workaround is simply to add an explicit cast.
-
-          mpz_class f(1), g(2), h(3);
-          fun (f, mpz_class(g+h));  // Good
-
-     Similarly, within `fun' it may be necessary to cast an expression
-     to type `T' when calling a templated `fun2'.
-
-          template <class T>
-          void fun (T f, T g)
-          {
-            fun2 (f, f+g);     // Bad
-          }
-
-          template <class T>
-          void fun (T f, T g)
-          {
-            fun2 (f, T(f+g));  // Good
-          }
-
-\1f
-File: gmp.info,  Node: BSD Compatible Functions,  Next: Custom Allocation,  Prev: C++ Class Interface,  Up: Top
-
-13 Berkeley MP Compatible Functions
-***********************************
-
-These functions are intended to be fully compatible with the Berkeley MP
-library which is available on many BSD derived U*ix systems.  The
-`--enable-mpbsd' option must be used when building GNU MP to make these
-available (*note Installing GMP::).
-
-   The original Berkeley MP library has a usage restriction: you cannot
-use the same variable as both source and destination in a single
-function call.  The compatible functions in GNU MP do not share this
-restriction--inputs and outputs may overlap.
-
-   It is not recommended that new programs are written using these
-functions.  Apart from the incomplete set of functions, the interface
-for initializing `MINT' objects is more error prone, and the `pow'
-function collides with `pow' in `libm.a'.
-
-   Include the header `mp.h' to get the definition of the necessary
-types and functions.  If you are on a BSD derived system, make sure to
-include GNU `mp.h' if you are going to link the GNU `libmp.a' to your
-program.  This means that you probably need to give the `-I<dir>'
-option to the compiler, where `<dir>' is the directory where you have
-GNU `mp.h'.
-
- -- Function: MINT * itom (signed short int INITIAL_VALUE)
-     Allocate an integer consisting of a `MINT' object and dynamic limb
-     space.  Initialize the integer to INITIAL_VALUE.  Return a pointer
-     to the `MINT' object.
-
- -- Function: MINT * xtom (char *INITIAL_VALUE)
-     Allocate an integer consisting of a `MINT' object and dynamic limb
-     space.  Initialize the integer from INITIAL_VALUE, a hexadecimal,
-     null-terminated C string.  Return a pointer to the `MINT' object.
-
- -- Function: void move (MINT *SRC, MINT *DEST)
-     Set DEST to SRC by copying.  Both variables must be previously
-     initialized.
-
- -- Function: void madd (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Add SRC_1 and SRC_2 and put the sum in DESTINATION.
-
- -- Function: void msub (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Subtract SRC_2 from SRC_1 and put the difference in DESTINATION.
-
- -- Function: void mult (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Multiply SRC_1 and SRC_2 and put the product in DESTINATION.
-
- -- Function: void mdiv (MINT *DIVIDEND, MINT *DIVISOR, MINT *QUOTIENT,
-          MINT *REMAINDER)
- -- Function: void sdiv (MINT *DIVIDEND, signed short int DIVISOR, MINT
-          *QUOTIENT, signed short int *REMAINDER)
-     Set QUOTIENT to DIVIDEND/DIVISOR, and REMAINDER to DIVIDEND mod
-     DIVISOR.  The quotient is rounded towards zero; the remainder has
-     the same sign as the dividend unless it is zero.
-
-     Some implementations of these functions work differently--or not
-     at all--for negative arguments.
-
- -- Function: void msqrt (MINT *OP, MINT *ROOT, MINT *REMAINDER)
-     Set ROOT to the truncated integer part of the square root of OP,
-     like `mpz_sqrt'.  Set REMAINDER to OP-ROOT*ROOT, i.e.  zero if OP
-     is a perfect square.
-
-     If ROOT and REMAINDER are the same variable, the results are
-     undefined.
-
- -- Function: void pow (MINT *BASE, MINT *EXP, MINT *MOD, MINT *DEST)
-     Set DEST to (BASE raised to EXP) modulo MOD.
-
-     Note that the name `pow' clashes with `pow' from the standard C
-     math library (*note Exponentiation and Logarithms: (libc)Exponents
-     and Logarithms.).  An application will only be able to use one or
-     the other.
-
- -- Function: void rpow (MINT *BASE, signed short int EXP, MINT *DEST)
-     Set DEST to BASE raised to EXP.
-
- -- Function: void gcd (MINT *OP1, MINT *OP2, MINT *RES)
-     Set RES to the greatest common divisor of OP1 and OP2.
-
- -- Function: int mcmp (MINT *OP1, MINT *OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
- -- Function: void min (MINT *DEST)
-     Input a decimal string from `stdin', and put the read integer in
-     DEST.  SPC and TAB are allowed in the number string, and are
-     ignored.
-
- -- Function: void mout (MINT *SRC)
-     Output SRC to `stdout', as a decimal string.  Also output a
-     newline.
-
- -- Function: char * mtox (MINT *OP)
-     Convert OP to a hexadecimal string, and return a pointer to the
-     string.  The returned string is allocated using the default memory
-     allocation function, `malloc' by default.  It will be
-     `strlen(str)+1' bytes, that being exactly enough for the string
-     and null-terminator.
-
- -- Function: void mfree (MINT *OP)
-     De-allocate, the space used by OP.  *This function should only be
-     passed a value returned by `itom' or `xtom'.*
-
-\1f
-File: gmp.info,  Node: Custom Allocation,  Next: Language Bindings,  Prev: BSD Compatible Functions,  Up: Top
-
-14 Custom Allocation
-********************
-
-By default GMP uses `malloc', `realloc' and `free' for memory
-allocation, and if they fail GMP prints a message to the standard error
-output and terminates the program.
-
-   Alternate functions can be specified, to allocate memory in a
-different way or to have a different error action on running out of
-memory.
-
-   This feature is available in the Berkeley compatibility library
-(*note BSD Compatible Functions::) as well as the main GMP library.
-
- -- Function: void mp_set_memory_functions (
-          void *(*ALLOC_FUNC_PTR) (size_t),
-          void *(*REALLOC_FUNC_PTR) (void *, size_t, size_t),
-          void (*FREE_FUNC_PTR) (void *, size_t))
-     Replace the current allocation functions from the arguments.  If
-     an argument is `NULL', the corresponding default function is used.
-
-     These functions will be used for all memory allocation done by
-     GMP, apart from temporary space from `alloca' if that function is
-     available and GMP is configured to use it (*note Build Options::).
-
-     *Be sure to call `mp_set_memory_functions' only when there are no
-     active GMP objects allocated using the previous memory functions!
-     Usually that means calling it before any other GMP function.*
-
-   The functions supplied should fit the following declarations:
-
- -- Function: void * allocate_function (size_t ALLOC_SIZE)
-     Return a pointer to newly allocated space with at least ALLOC_SIZE
-     bytes.
-
- -- Function: void * reallocate_function (void *PTR, size_t OLD_SIZE,
-          size_t NEW_SIZE)
-     Resize a previously allocated block PTR of OLD_SIZE bytes to be
-     NEW_SIZE bytes.
-
-     The block may be moved if necessary or if desired, and in that
-     case the smaller of OLD_SIZE and NEW_SIZE bytes must be copied to
-     the new location.  The return value is a pointer to the resized
-     block, that being the new location if moved or just PTR if not.
-
-     PTR is never `NULL', it's always a previously allocated block.
-     NEW_SIZE may be bigger or smaller than OLD_SIZE.
-
- -- Function: void free_function (void *PTR, size_t SIZE)
-     De-allocate the space pointed to by PTR.
-
-     PTR is never `NULL', it's always a previously allocated block of
-     SIZE bytes.
-
-   A "byte" here means the unit used by the `sizeof' operator.
-
-   The OLD_SIZE parameters to REALLOCATE_FUNCTION and FREE_FUNCTION are
-passed for convenience, but of course can be ignored if not needed.
-The default functions using `malloc' and friends for instance don't use
-them.
-
-   No error return is allowed from any of these functions, if they
-return then they must have performed the specified operation.  In
-particular note that ALLOCATE_FUNCTION or REALLOCATE_FUNCTION mustn't
-return `NULL'.
-
-   Getting a different fatal error action is a good use for custom
-allocation functions, for example giving a graphical dialog rather than
-the default print to `stderr'.  How much is possible when genuinely out
-of memory is another question though.
-
-   There's currently no defined way for the allocation functions to
-recover from an error such as out of memory, they must terminate
-program execution.  A `longjmp' or throwing a C++ exception will have
-undefined results.  This may change in the future.
-
-   GMP may use allocated blocks to hold pointers to other allocated
-blocks.  This will limit the assumptions a conservative garbage
-collection scheme can make.
-
-   Since the default GMP allocation uses `malloc' and friends, those
-functions will be linked in even if the first thing a program does is an
-`mp_set_memory_functions'.  It's necessary to change the GMP sources if
-this is a problem.
-
-
- -- Function: void mp_get_memory_functions (
-          void *(**ALLOC_FUNC_PTR) (size_t),
-          void *(**REALLOC_FUNC_PTR) (void *, size_t, size_t),
-          void (**FREE_FUNC_PTR) (void *, size_t))
-     Get the current allocation functions, storing function pointers to
-     the locations given by the arguments.  If an argument is `NULL',
-     that function pointer is not stored.
-
-     For example, to get just the current free function,
-
-          void (*freefunc) (void *, size_t);
-
-          mp_get_memory_functions (NULL, NULL, &freefunc);
-
-\1f
-File: gmp.info,  Node: Language Bindings,  Next: Algorithms,  Prev: Custom Allocation,  Up: Top
-
-15 Language Bindings
-********************
-
-The following packages and projects offer access to GMP from languages
-other than C, though perhaps with varying levels of functionality and
-efficiency.
-
-
-C++
-        * GMP C++ class interface, *note C++ Class Interface::
-          Straightforward interface, expression templates to eliminate
-          temporaries.
-
-        * ALP `http://www-sop.inria.fr/saga/logiciels/ALP/'
-          Linear algebra and polynomials using templates.
-
-        * Arithmos `http://www.win.ua.ac.be/~cant/arithmos/'
-          Rationals with infinities and square roots.
-
-        * CLN `http://www.ginac.de/CLN/'
-          High level classes for arithmetic.
-
-        * LiDIA `http://www.cdc.informatik.tu-darmstadt.de/TI/LiDIA/'
-          A C++ library for computational number theory.
-
-        * Linbox `http://www.linalg.org/'
-          Sparse vectors and matrices.
-
-        * NTL `http://www.shoup.net/ntl/'
-          A C++ number theory library.
-
-Fortran
-        * Omni F77 `http://phase.hpcc.jp/Omni/home.html'
-          Arbitrary precision floats.
-
-Haskell
-        * Glasgow Haskell Compiler `http://www.haskell.org/ghc/'
-
-Java
-        * Kaffe `http://www.kaffe.org/'
-
-        * Kissme `http://kissme.sourceforge.net/'
-
-Lisp
-        * GNU Common Lisp `http://www.gnu.org/software/gcl/gcl.html'
-
-        * Librep `http://librep.sourceforge.net/'
-
-        * XEmacs (21.5.18 beta and up) `http://www.xemacs.org'
-          Optional big integers, rationals and floats using GMP.
-
-M4
-        * GNU m4 betas `http://www.seindal.dk/rene/gnu/'
-          Optionally provides an arbitrary precision `mpeval'.
-
-ML
-        * MLton compiler `http://mlton.org/'
-
-Objective Caml
-        * MLGMP `http://www.di.ens.fr/~monniaux/programmes.html.en'
-
-        * Numerix `http://pauillac.inria.fr/~quercia/'
-          Optionally using GMP.
-
-Oz
-        * Mozart `http://www.mozart-oz.org/'
-
-Pascal
-        * GNU Pascal Compiler `http://www.gnu-pascal.de/'
-          GMP unit.
-
-        * Numerix `http://pauillac.inria.fr/~quercia/'
-          For Free Pascal, optionally using GMP.
-
-Perl
-        * GMP module, see `demos/perl' in the GMP sources (*note
-          Demonstration Programs::).
-
-        * Math::GMP `http://www.cpan.org/'
-          Compatible with Math::BigInt, but not as many functions as
-          the GMP module above.
-
-        * Math::BigInt::GMP `http://www.cpan.org/'
-          Plug Math::GMP into normal Math::BigInt operations.
-
-Pike
-        * mpz module in the standard distribution,
-          `http://pike.ida.liu.se/'
-
-Prolog
-        * SWI Prolog `http://www.swi-prolog.org/'
-          Arbitrary precision floats.
-
-Python
-        * mpz module in the standard distribution,
-          `http://www.python.org/'
-
-        * GMPY `http://gmpy.sourceforge.net/'
-
-Scheme
-        * GNU Guile (upcoming 1.8)
-          `http://www.gnu.org/software/guile/guile.html'
-
-        * RScheme `http://www.rscheme.org/'
-
-        * STklos `http://www.stklos.org/'
-
-Smalltalk
-        * GNU Smalltalk
-          `http://www.smalltalk.org/versions/GNUSmalltalk.html'
-
-Other
-        * Axiom `http://savannah.nongnu.org/projects/axiom'
-          Computer algebra using GCL.
-
-        * DrGenius `http://drgenius.seul.org/'
-          Geometry system and mathematical programming language.
-
-        * GiNaC `http://www.ginac.de/'
-          C++ computer algebra using CLN.
-
-        * GOO `http://www.googoogaga.org/'
-          Dynamic object oriented language.
-
-        * Maxima `http://www.ma.utexas.edu/users/wfs/maxima.html'
-          Macsyma computer algebra using GCL.
-
-        * Q `http://q-lang.sourceforge.net/'
-          Equational programming system.
-
-        * Regina `http://regina.sourceforge.net/'
-          Topological calculator.
-
-        * Yacas `http://www.xs4all.nl/~apinkus/yacas.html'
-          Yet another computer algebra system.
-
-
-\1f
-File: gmp.info,  Node: Algorithms,  Next: Internals,  Prev: Language Bindings,  Up: Top
-
-16 Algorithms
-*************
-
-This chapter is an introduction to some of the algorithms used for
-various GMP operations.  The code is likely to be hard to understand
-without knowing something about the algorithms.
-
-   Some GMP internals are mentioned, but applications that expect to be
-compatible with future GMP releases should take care to use only the
-documented functions.
-
-* Menu:
-
-* Multiplication Algorithms::
-* Division Algorithms::
-* Greatest Common Divisor Algorithms::
-* Powering Algorithms::
-* Root Extraction Algorithms::
-* Radix Conversion Algorithms::
-* Other Algorithms::
-* Assembly Coding::
-
-\1f
-File: gmp.info,  Node: Multiplication Algorithms,  Next: Division Algorithms,  Prev: Algorithms,  Up: Algorithms
-
-16.1 Multiplication
-===================
-
-NxN limb multiplications and squares are done using one of five
-algorithms, as the size N increases.
-
-     Algorithm      Threshold
-     Basecase       (none)
-     Karatsuba      `MUL_TOOM22_THRESHOLD'
-     Toom-3         `MUL_TOOM33_THRESHOLD'
-     Toom-4         `MUL_TOOM44_THRESHOLD'
-     FFT            `MUL_FFT_THRESHOLD'
-
-   Similarly for squaring, with the `SQR' thresholds.
-
-   NxM multiplications of operands with different sizes above
-`MUL_TOOM22_THRESHOLD' are currently done by special Toom-inspired
-algorithms or directly with FFT, depending on operand size (*note
-Unbalanced Multiplication::).
-
-* Menu:
-
-* Basecase Multiplication::
-* Karatsuba Multiplication::
-* Toom 3-Way Multiplication::
-* Toom 4-Way Multiplication::
-* FFT Multiplication::
-* Other Multiplication::
-* Unbalanced Multiplication::
-
-\1f
-File: gmp.info,  Node: Basecase Multiplication,  Next: Karatsuba Multiplication,  Prev: Multiplication Algorithms,  Up: Multiplication Algorithms
-
-16.1.1 Basecase Multiplication
-------------------------------
-
-Basecase NxM multiplication is a straightforward rectangular set of
-cross-products, the same as long multiplication done by hand and for
-that reason sometimes known as the schoolbook or grammar school method.
-This is an O(N*M) algorithm.  See Knuth section 4.3.1 algorithm M
-(*note References::), and the `mpn/generic/mul_basecase.c' code.
-
-   Assembly implementations of `mpn_mul_basecase' are essentially the
-same as the generic C code, but have all the usual assembly tricks and
-obscurities introduced for speed.
-
-   A square can be done in roughly half the time of a multiply, by
-using the fact that the cross products above and below the diagonal are
-the same.  A triangle of products below the diagonal is formed, doubled
-(left shift by one bit), and then the products on the diagonal added.
-This can be seen in `mpn/generic/sqr_basecase.c'.  Again the assembly
-implementations take essentially the same approach.
-
-          u0  u1  u2  u3  u4
-        +---+---+---+---+---+
-     u0 | d |   |   |   |   |
-        +---+---+---+---+---+
-     u1 |   | d |   |   |   |
-        +---+---+---+---+---+
-     u2 |   |   | d |   |   |
-        +---+---+---+---+---+
-     u3 |   |   |   | d |   |
-        +---+---+---+---+---+
-     u4 |   |   |   |   | d |
-        +---+---+---+---+---+
-
-   In practice squaring isn't a full 2x faster than multiplying, it's
-usually around 1.5x.  Less than 1.5x probably indicates
-`mpn_sqr_basecase' wants improving on that CPU.
-
-   On some CPUs `mpn_mul_basecase' can be faster than the generic C
-`mpn_sqr_basecase' on some small sizes.  `SQR_BASECASE_THRESHOLD' is
-the size at which to use `mpn_sqr_basecase', this will be zero if that
-routine should be used always.
-
-\1f
-File: gmp.info,  Node: Karatsuba Multiplication,  Next: Toom 3-Way Multiplication,  Prev: Basecase Multiplication,  Up: Multiplication Algorithms
-
-16.1.2 Karatsuba Multiplication
--------------------------------
-
-The Karatsuba multiplication algorithm is described in Knuth section
-4.3.3 part A, and various other textbooks.  A brief description is
-given here.
-
-   The inputs x and y are treated as each split into two parts of equal
-length (or the most significant part one limb shorter if N is odd).
-
-      high              low
-     +----------+----------+
-     |    x1    |    x0    |
-     +----------+----------+
-
-     +----------+----------+
-     |    y1    |    y0    |
-     +----------+----------+
-
-   Let b be the power of 2 where the split occurs, ie. if x0 is k limbs
-(y0 the same) then b=2^(k*mp_bits_per_limb).  With that x=x1*b+x0 and
-y=y1*b+y0, and the following holds,
-
-     x*y = (b^2+b)*x1*y1 - b*(x1-x0)*(y1-y0) + (b+1)*x0*y0
-
-   This formula means doing only three multiplies of (N/2)x(N/2) limbs,
-whereas a basecase multiply of NxN limbs is equivalent to four
-multiplies of (N/2)x(N/2).  The factors (b^2+b) etc represent the
-positions where the three products must be added.
-
-      high                              low
-     +--------+--------+ +--------+--------+
-     |      x1*y1      | |      x0*y0      |
-     +--------+--------+ +--------+--------+
-               +--------+--------+
-           add |      x1*y1      |
-               +--------+--------+
-               +--------+--------+
-           add |      x0*y0      |
-               +--------+--------+
-               +--------+--------+
-           sub | (x1-x0)*(y1-y0) |
-               +--------+--------+
-
-   The term (x1-x0)*(y1-y0) is best calculated as an absolute value,
-and the sign used to choose to add or subtract.  Notice the sum
-high(x0*y0)+low(x1*y1) occurs twice, so it's possible to do 5*k limb
-additions, rather than 6*k, but in GMP extra function call overheads
-outweigh the saving.
-
-   Squaring is similar to multiplying, but with x=y the formula reduces
-to an equivalent with three squares,
-
-     x^2 = (b^2+b)*x1^2 - b*(x1-x0)^2 + (b+1)*x0^2
-
-   The final result is accumulated from those three squares the same
-way as for the three multiplies above.  The middle term (x1-x0)^2 is now
-always positive.
-
-   A similar formula for both multiplying and squaring can be
-constructed with a middle term (x1+x0)*(y1+y0).  But those sums can
-exceed k limbs, leading to more carry handling and additions than the
-form above.
-
-   Karatsuba multiplication is asymptotically an O(N^1.585) algorithm,
-the exponent being log(3)/log(2), representing 3 multiplies each 1/2
-the size of the inputs.  This is a big improvement over the basecase
-multiply at O(N^2) and the advantage soon overcomes the extra additions
-Karatsuba performs.  `MUL_TOOM22_THRESHOLD' can be as little as 10
-limbs.  The `SQR' threshold is usually about twice the `MUL'.
-
-   The basecase algorithm will take a time of the form M(N) = a*N^2 +
-b*N + c and the Karatsuba algorithm K(N) = 3*M(N/2) + d*N + e, which
-expands to K(N) = 3/4*a*N^2 + 3/2*b*N + 3*c + d*N + e.  The factor 3/4
-for a means per-crossproduct speedups in the basecase code will
-increase the threshold since they benefit M(N) more than K(N).  And
-conversely the 3/2 for b means linear style speedups of b will increase
-the threshold since they benefit K(N) more than M(N).  The latter can
-be seen for instance when adding an optimized `mpn_sqr_diagonal' to
-`mpn_sqr_basecase'.  Of course all speedups reduce total time, and in
-that sense the algorithm thresholds are merely of academic interest.
-
-\1f
-File: gmp.info,  Node: Toom 3-Way Multiplication,  Next: Toom 4-Way Multiplication,  Prev: Karatsuba Multiplication,  Up: Multiplication Algorithms
-
-16.1.3 Toom 3-Way Multiplication
---------------------------------
-
-The Karatsuba formula is the simplest case of a general approach to
-splitting inputs that leads to both Toom and FFT algorithms.  A
-description of Toom can be found in Knuth section 4.3.3, with an
-example 3-way calculation after Theorem A.  The 3-way form used in GMP
-is described here.
-
-   The operands are each considered split into 3 pieces of equal length
-(or the most significant part 1 or 2 limbs shorter than the other two).
-
-      high                         low
-     +----------+----------+----------+
-     |    x2    |    x1    |    x0    |
-     +----------+----------+----------+
-
-     +----------+----------+----------+
-     |    y2    |    y1    |    y0    |
-     +----------+----------+----------+
-
-These parts are treated as the coefficients of two polynomials
-
-     X(t) = x2*t^2 + x1*t + x0
-     Y(t) = y2*t^2 + y1*t + y0
-
-   Let b equal the power of 2 which is the size of the x0, x1, y0 and
-y1 pieces, ie. if they're k limbs each then b=2^(k*mp_bits_per_limb).
-With this x=X(b) and y=Y(b).
-
-   Let a polynomial W(t)=X(t)*Y(t) and suppose its coefficients are
-
-     W(t) = w4*t^4 + w3*t^3 + w2*t^2 + w1*t + w0
-
-   The w[i] are going to be determined, and when they are they'll give
-the final result using w=W(b), since x*y=X(b)*Y(b)=W(b).  The
-coefficients will be roughly b^2 each, and the final W(b) will be an
-addition like,
-
-      high                                        low
-     +-------+-------+
-     |       w4      |
-     +-------+-------+
-            +--------+-------+
-            |        w3      |
-            +--------+-------+
-                    +--------+-------+
-                    |        w2      |
-                    +--------+-------+
-                            +--------+-------+
-                            |        w1      |
-                            +--------+-------+
-                                     +-------+-------+
-                                     |       w0      |
-                                     +-------+-------+
-
-   The w[i] coefficients could be formed by a simple set of cross
-products, like w4=x2*y2, w3=x2*y1+x1*y2, w2=x2*y0+x1*y1+x0*y2 etc, but
-this would need all nine x[i]*y[j] for i,j=0,1,2, and would be
-equivalent merely to a basecase multiply.  Instead the following
-approach is used.
-
-   X(t) and Y(t) are evaluated and multiplied at 5 points, giving
-values of W(t) at those points.  In GMP the following points are used,
-
-     Point    Value
-     t=0      x0 * y0, which gives w0 immediately
-     t=1      (x2+x1+x0) * (y2+y1+y0)
-     t=-1     (x2-x1+x0) * (y2-y1+y0)
-     t=2      (4*x2+2*x1+x0) * (4*y2+2*y1+y0)
-     t=inf    x2 * y2, which gives w4 immediately
-
-   At t=-1 the values can be negative and that's handled using the
-absolute values and tracking the sign separately.  At t=inf the value
-is actually X(t)*Y(t)/t^4 in the limit as t approaches infinity, but
-it's much easier to think of as simply x2*y2 giving w4 immediately
-(much like x0*y0 at t=0 gives w0 immediately).
-
-   Each of the points substituted into W(t)=w4*t^4+...+w0 gives a
-linear combination of the w[i] coefficients, and the value of those
-combinations has just been calculated.
-
-     W(0)   =                              w0
-     W(1)   =    w4 +   w3 +   w2 +   w1 + w0
-     W(-1)  =    w4 -   w3 +   w2 -   w1 + w0
-     W(2)   = 16*w4 + 8*w3 + 4*w2 + 2*w1 + w0
-     W(inf) =    w4
-
-   This is a set of five equations in five unknowns, and some
-elementary linear algebra quickly isolates each w[i].  This involves
-adding or subtracting one W(t) value from another, and a couple of
-divisions by powers of 2 and one division by 3, the latter using the
-special `mpn_divexact_by3' (*note Exact Division::).
-
-   The conversion of W(t) values to the coefficients is interpolation.
-A polynomial of degree 4 like W(t) is uniquely determined by values
-known at 5 different points.  The points are arbitrary and can be
-chosen to make the linear equations come out with a convenient set of
-steps for quickly isolating the w[i].
-
-   Squaring follows the same procedure as multiplication, but there's
-only one X(t) and it's evaluated at the 5 points, and those values
-squared to give values of W(t).  The interpolation is then identical,
-and in fact the same `toom3_interpolate' subroutine is used for both
-squaring and multiplying.
-
-   Toom-3 is asymptotically O(N^1.465), the exponent being
-log(5)/log(3), representing 5 recursive multiplies of 1/3 the original
-size each.  This is an improvement over Karatsuba at O(N^1.585), though
-Toom does more work in the evaluation and interpolation and so it only
-realizes its advantage above a certain size.
-
-   Near the crossover between Toom-3 and Karatsuba there's generally a
-range of sizes where the difference between the two is small.
-`MUL_TOOM33_THRESHOLD' is a somewhat arbitrary point in that range and
-successive runs of the tune program can give different values due to
-small variations in measuring.  A graph of time versus size for the two
-shows the effect, see `tune/README'.
-
-   At the fairly small sizes where the Toom-3 thresholds occur it's
-worth remembering that the asymptotic behaviour for Karatsuba and
-Toom-3 can't be expected to make accurate predictions, due of course to
-the big influence of all sorts of overheads, and the fact that only a
-few recursions of each are being performed.  Even at large sizes
-there's a good chance machine dependent effects like cache architecture
-will mean actual performance deviates from what might be predicted.
-
-   The formula given for the Karatsuba algorithm (*note Karatsuba
-Multiplication::) has an equivalent for Toom-3 involving only five
-multiplies, but this would be complicated and unenlightening.
-
-   An alternate view of Toom-3 can be found in Zuras (*note
-References::), using a vector to represent the x and y splits and a
-matrix multiplication for the evaluation and interpolation stages.  The
-matrix inverses are not meant to be actually used, and they have
-elements with values much greater than in fact arise in the
-interpolation steps.  The diagram shown for the 3-way is attractive,
-but again doesn't have to be implemented that way and for example with
-a bit of rearrangement just one division by 6 can be done.
-
-\1f
-File: gmp.info,  Node: Toom 4-Way Multiplication,  Next: FFT Multiplication,  Prev: Toom 3-Way Multiplication,  Up: Multiplication Algorithms
-
-16.1.4 Toom 4-Way Multiplication
---------------------------------
-
-Karatsuba and Toom-3 split the operands into 2 and 3 coefficients,
-respectively.  Toom-4 analogously splits the operands into 4
-coefficients.  Using the notation from the section on Toom-3
-multiplication, we form two polynomials:
-
-     X(t) = x3*t^3 + x2*t^2 + x1*t + x0
-     Y(t) = y3*t^3 + y2*t^2 + y1*t + y0
-
-   X(t) and Y(t) are evaluated and multiplied at 7 points, giving
-values of W(t) at those points.  In GMP the following points are used,
-
-     Point    Value
-     t=0      x0 * y0, which gives w0 immediately
-     t=1/2    (x3+2*x2+4*x1+8*x0) * (y3+2*y2+4*y1+8*y0)
-     t=-1/2   (-x3+2*x2-4*x1+8*x0) * (-y3+2*y2-4*y1+8*y0)
-     t=1      (x3+x2+x1+x0) * (y3+y2+y1+y0)
-     t=-1     (-x3+x2-x1+x0) * (-y3+y2-y1+y0)
-     t=2      (8*x3+4*x2+2*x1+x0) * (8*y3+4*y2+2*y1+y0)
-     t=inf    x3 * y3, which gives w6 immediately
-
-   The number of additions and subtractions for Toom-4 is much larger
-than for Toom-3.  But several subexpressions occur multiple times, for
-example x2+x0, occurs for both t=1 and t=-1.
-
-   Toom-4 is asymptotically O(N^1.404), the exponent being
-log(7)/log(4), representing 7 recursive multiplies of 1/4 the original
-size each.
-
-\1f
-File: gmp.info,  Node: FFT Multiplication,  Next: Other Multiplication,  Prev: Toom 4-Way Multiplication,  Up: Multiplication Algorithms
-
-16.1.5 FFT Multiplication
--------------------------
-
-At large to very large sizes a Fermat style FFT multiplication is used,
-following Scho"nhage and Strassen (*note References::).  Descriptions
-of FFTs in various forms can be found in many textbooks, for instance
-Knuth section 4.3.3 part C or Lipson chapter IX.  A brief description
-of the form used in GMP is given here.
-
-   The multiplication done is x*y mod 2^N+1, for a given N.  A full
-product x*y is obtained by choosing N>=bits(x)+bits(y) and padding x
-and y with high zero limbs.  The modular product is the native form for
-the algorithm, so padding to get a full product is unavoidable.
-
-   The algorithm follows a split, evaluate, pointwise multiply,
-interpolate and combine similar to that described above for Karatsuba
-and Toom-3.  A k parameter controls the split, with an FFT-k splitting
-into 2^k pieces of M=N/2^k bits each.  N must be a multiple of
-(2^k)*mp_bits_per_limb so the split falls on limb boundaries, avoiding
-bit shifts in the split and combine stages.
-
-   The evaluations, pointwise multiplications, and interpolation, are
-all done modulo 2^N'+1 where N' is 2M+k+3 rounded up to a multiple of
-2^k and of `mp_bits_per_limb'.  The results of interpolation will be
-the following negacyclic convolution of the input pieces, and the
-choice of N' ensures these sums aren't truncated.
-
-                ---
-                \         b
-     w[n] =     /     (-1) * x[i] * y[j]
-                ---
-            i+j==b*2^k+n
-               b=0,1
-
-   The points used for the evaluation are g^i for i=0 to 2^k-1 where
-g=2^(2N'/2^k).  g is a 2^k'th root of unity mod 2^N'+1, which produces
-necessary cancellations at the interpolation stage, and it's also a
-power of 2 so the fast Fourier transforms used for the evaluation and
-interpolation do only shifts, adds and negations.
-
-   The pointwise multiplications are done modulo 2^N'+1 and either
-recurse into a further FFT or use a plain multiplication (Toom-3,
-Karatsuba or basecase), whichever is optimal at the size N'.  The
-interpolation is an inverse fast Fourier transform.  The resulting set
-of sums of x[i]*y[j] are added at appropriate offsets to give the final
-result.
-
-   Squaring is the same, but x is the only input so it's one transform
-at the evaluate stage and the pointwise multiplies are squares.  The
-interpolation is the same.
-
-   For a mod 2^N+1 product, an FFT-k is an O(N^(k/(k-1))) algorithm,
-the exponent representing 2^k recursed modular multiplies each
-1/2^(k-1) the size of the original.  Each successive k is an asymptotic
-improvement, but overheads mean each is only faster at bigger and
-bigger sizes.  In the code, `MUL_FFT_TABLE' and `SQR_FFT_TABLE' are the
-thresholds where each k is used.  Each new k effectively swaps some
-multiplying for some shifts, adds and overheads.
-
-   A mod 2^N+1 product can be formed with a normal NxN->2N bit multiply
-plus a subtraction, so an FFT and Toom-3 etc can be compared directly.
-A k=4 FFT at O(N^1.333) can be expected to be the first faster than
-Toom-3 at O(N^1.465).  In practice this is what's found, with
-`MUL_FFT_MODF_THRESHOLD' and `SQR_FFT_MODF_THRESHOLD' being between 300
-and 1000 limbs, depending on the CPU.  So far it's been found that only
-very large FFTs recurse into pointwise multiplies above these sizes.
-
-   When an FFT is to give a full product, the change of N to 2N doesn't
-alter the theoretical complexity for a given k, but for the purposes of
-considering where an FFT might be first used it can be assumed that the
-FFT is recursing into a normal multiply and that on that basis it's
-doing 2^k recursed multiplies each 1/2^(k-2) the size of the inputs,
-making it O(N^(k/(k-2))).  This would mean k=7 at O(N^1.4) would be the
-first FFT faster than Toom-3.  In practice `MUL_FFT_THRESHOLD' and
-`SQR_FFT_THRESHOLD' have been found to be in the k=8 range, somewhere
-between 3000 and 10000 limbs.
-
-   The way N is split into 2^k pieces and then 2M+k+3 is rounded up to
-a multiple of 2^k and `mp_bits_per_limb' means that when
-2^k>=mp_bits_per_limb the effective N is a multiple of 2^(2k-1) bits.
-The +k+3 means some values of N just under such a multiple will be
-rounded to the next.  The complexity calculations above assume that a
-favourable size is used, meaning one which isn't padded through
-rounding, and it's also assumed that the extra +k+3 bits are negligible
-at typical FFT sizes.
-
-   The practical effect of the 2^(2k-1) constraint is to introduce a
-step-effect into measured speeds.  For example k=8 will round N up to a
-multiple of 32768 bits, so for a 32-bit limb there'll be 512 limb
-groups of sizes for which `mpn_mul_n' runs at the same speed.  Or for
-k=9 groups of 2048 limbs, k=10 groups of 8192 limbs, etc.  In practice
-it's been found each k is used at quite small multiples of its size
-constraint and so the step effect is quite noticeable in a time versus
-size graph.
-
-   The threshold determinations currently measure at the mid-points of
-size steps, but this is sub-optimal since at the start of a new step it
-can happen that it's better to go back to the previous k for a while.
-Something more sophisticated for `MUL_FFT_TABLE' and `SQR_FFT_TABLE'
-will be needed.
-
-\1f
-File: gmp.info,  Node: Other Multiplication,  Next: Unbalanced Multiplication,  Prev: FFT Multiplication,  Up: Multiplication Algorithms
-
-16.1.6 Other Multiplication
----------------------------
-
-The Toom algorithms described above (*note Toom 3-Way Multiplication::,
-*note Toom 4-Way Multiplication::) generalizes to split into an
-arbitrary number of pieces, as per Knuth section 4.3.3 algorithm C.
-This is not currently used.  The notes here are merely for interest.
-
-   In general a split into r+1 pieces is made, and evaluations and
-pointwise multiplications done at 2*r+1 points.  A 4-way split does 7
-pointwise multiplies, 5-way does 9, etc.  Asymptotically an (r+1)-way
-algorithm is O(N^(log(2*r+1)/log(r+1))).  Only the pointwise
-multiplications count towards big-O complexity, but the time spent in
-the evaluate and interpolate stages grows with r and has a significant
-practical impact, with the asymptotic advantage of each r realized only
-at bigger and bigger sizes.  The overheads grow as O(N*r), whereas in
-an r=2^k FFT they grow only as O(N*log(r)).
-
-   Knuth algorithm C evaluates at points 0,1,2,...,2*r, but exercise 4
-uses -r,...,0,...,r and the latter saves some small multiplies in the
-evaluate stage (or rather trades them for additions), and has a further
-saving of nearly half the interpolate steps.  The idea is to separate
-odd and even final coefficients and then perform algorithm C steps C7
-and C8 on them separately.  The divisors at step C7 become j^2 and the
-multipliers at C8 become 2*t*j-j^2.
-
-   Splitting odd and even parts through positive and negative points
-can be thought of as using -1 as a square root of unity.  If a 4th root
-of unity was available then a further split and speedup would be
-possible, but no such root exists for plain integers.  Going to complex
-integers with i=sqrt(-1) doesn't help, essentially because in Cartesian
-form it takes three real multiplies to do a complex multiply.  The
-existence of 2^k'th roots of unity in a suitable ring or field lets the
-fast Fourier transform keep splitting and get to O(N*log(r)).
-
-   Floating point FFTs use complex numbers approximating Nth roots of
-unity.  Some processors have special support for such FFTs.  But these
-are not used in GMP since it's very difficult to guarantee an exact
-result (to some number of bits).  An occasional difference of 1 in the
-last bit might not matter to a typical signal processing algorithm, but
-is of course of vital importance to GMP.
-
-\1f
-File: gmp.info,  Node: Unbalanced Multiplication,  Prev: Other Multiplication,  Up: Multiplication Algorithms
-
-16.1.7 Unbalanced Multiplication
---------------------------------
-
-Multiplication of operands with different sizes, both below
-`MUL_TOOM22_THRESHOLD' are done with plain schoolbook multiplication
-(*note Basecase Multiplication::).
-
-   For really large operands, we invoke FFT directly.
-
-   For operands between these sizes, we use Toom inspired algorithms
-suggested by Alberto Zanoni and Marco Bodrato.  The idea is to split
-the operands into polynomials of different degree.  GMP currently
-splits the smaller operand onto 2 coefficients, i.e., a polynomial of
-degree 1, but the larger operand can be split into 2, 3, or 4
-coefficients, i.e., a polynomial of degree 1 to 3.
-
-\1f
-File: gmp.info,  Node: Division Algorithms,  Next: Greatest Common Divisor Algorithms,  Prev: Multiplication Algorithms,  Up: Algorithms
-
-16.2 Division Algorithms
-========================
-
-* Menu:
-
-* Single Limb Division::
-* Basecase Division::
-* Divide and Conquer Division::
-* Block-Wise Barrett Division::
-* Exact Division::
-* Exact Remainder::
-* Small Quotient Division::
-
-\1f
-File: gmp.info,  Node: Single Limb Division,  Next: Basecase Division,  Prev: Division Algorithms,  Up: Division Algorithms
-
-16.2.1 Single Limb Division
----------------------------
-
-Nx1 division is implemented using repeated 2x1 divisions from high to
-low, either with a hardware divide instruction or a multiplication by
-inverse, whichever is best on a given CPU.
-
-   The multiply by inverse follows "Improved division by invariant
-integers" by Mo"ller and Granlund (*note References::) and is
-implemented as `udiv_qrnnd_preinv' in `gmp-impl.h'.  The idea is to
-have a fixed-point approximation to 1/d (see `invert_limb') and then
-multiply by the high limb (plus one bit) of the dividend to get a
-quotient q.  With d normalized (high bit set), q is no more than 1 too
-small.  Subtracting q*d from the dividend gives a remainder, and
-reveals whether q or q-1 is correct.
-
-   The result is a division done with two multiplications and four or
-five arithmetic operations.  On CPUs with low latency multipliers this
-can be much faster than a hardware divide, though the cost of
-calculating the inverse at the start may mean it's only better on
-inputs bigger than say 4 or 5 limbs.
-
-   When a divisor must be normalized, either for the generic C
-`__udiv_qrnnd_c' or the multiply by inverse, the division performed is
-actually a*2^k by d*2^k where a is the dividend and k is the power
-necessary to have the high bit of d*2^k set.  The bit shifts for the
-dividend are usually accomplished "on the fly" meaning by extracting
-the appropriate bits at each step.  Done this way the quotient limbs
-come out aligned ready to store.  When only the remainder is wanted, an
-alternative is to take the dividend limbs unshifted and calculate r = a
-mod d*2^k followed by an extra final step r*2^k mod d*2^k.  This can
-help on CPUs with poor bit shifts or few registers.
-
-   The multiply by inverse can be done two limbs at a time.  The
-calculation is basically the same, but the inverse is two limbs and the
-divisor treated as if padded with a low zero limb.  This means more
-work, since the inverse will need a 2x2 multiply, but the four 1x1s to
-do that are independent and can therefore be done partly or wholly in
-parallel.  Likewise for a 2x1 calculating q*d.  The net effect is to
-process two limbs with roughly the same two multiplies worth of latency
-that one limb at a time gives.  This extends to 3 or 4 limbs at a time,
-though the extra work to apply the inverse will almost certainly soon
-reach the limits of multiplier throughput.
-
-   A similar approach in reverse can be taken to process just half a
-limb at a time if the divisor is only a half limb.  In this case the
-1x1 multiply for the inverse effectively becomes two (1/2)x1 for each
-limb, which can be a saving on CPUs with a fast half limb multiply, or
-in fact if the only multiply is a half limb, and especially if it's not
-pipelined.
-
-\1f
-File: gmp.info,  Node: Basecase Division,  Next: Divide and Conquer Division,  Prev: Single Limb Division,  Up: Division Algorithms
-
-16.2.2 Basecase Division
-------------------------
-
-Basecase NxM division is like long division done by hand, but in base
-2^mp_bits_per_limb.  See Knuth section 4.3.1 algorithm D, and
-`mpn/generic/sb_divrem_mn.c'.
-
-   Briefly stated, while the dividend remains larger than the divisor,
-a high quotient limb is formed and the Nx1 product q*d subtracted at
-the top end of the dividend.  With a normalized divisor (most
-significant bit set), each quotient limb can be formed with a 2x1
-division and a 1x1 multiplication plus some subtractions.  The 2x1
-division is by the high limb of the divisor and is done either with a
-hardware divide or a multiply by inverse (the same as in *Note Single
-Limb Division::) whichever is faster.  Such a quotient is sometimes one
-too big, requiring an addback of the divisor, but that happens rarely.
-
-   With Q=N-M being the number of quotient limbs, this is an O(Q*M)
-algorithm and will run at a speed similar to a basecase QxM
-multiplication, differing in fact only in the extra multiply and divide
-for each of the Q quotient limbs.
-
-\1f
-File: gmp.info,  Node: Divide and Conquer Division,  Next: Block-Wise Barrett Division,  Prev: Basecase Division,  Up: Division Algorithms
-
-16.2.3 Divide and Conquer Division
-----------------------------------
-
-For divisors larger than `DC_DIV_QR_THRESHOLD', division is done by
-dividing.  Or to be precise by a recursive divide and conquer algorithm
-based on work by Moenck and Borodin, Jebelean, and Burnikel and Ziegler
-(*note References::).
-
-   The algorithm consists essentially of recognising that a 2NxN
-division can be done with the basecase division algorithm (*note
-Basecase Division::), but using N/2 limbs as a base, not just a single
-limb.  This way the multiplications that arise are (N/2)x(N/2) and can
-take advantage of Karatsuba and higher multiplication algorithms (*note
-Multiplication Algorithms::).  The two "digits" of the quotient are
-formed by recursive Nx(N/2) divisions.
-
-   If the (N/2)x(N/2) multiplies are done with a basecase multiplication
-then the work is about the same as a basecase division, but with more
-function call overheads and with some subtractions separated from the
-multiplies.  These overheads mean that it's only when N/2 is above
-`MUL_TOOM22_THRESHOLD' that divide and conquer is of use.
-
-   `DC_DIV_QR_THRESHOLD' is based on the divisor size N, so it will be
-somewhere above twice `MUL_TOOM22_THRESHOLD', but how much above
-depends on the CPU.  An optimized `mpn_mul_basecase' can lower
-`DC_DIV_QR_THRESHOLD' a little by offering a ready-made advantage over
-repeated `mpn_submul_1' calls.
-
-   Divide and conquer is asymptotically O(M(N)*log(N)) where M(N) is
-the time for an NxN multiplication done with FFTs.  The actual time is
-a sum over multiplications of the recursed sizes, as can be seen near
-the end of section 2.2 of Burnikel and Ziegler.  For example, within
-the Toom-3 range, divide and conquer is 2.63*M(N).  With higher
-algorithms the M(N) term improves and the multiplier tends to log(N).
-In practice, at moderate to large sizes, a 2NxN division is about 2 to
-4 times slower than an NxN multiplication.
-
-\1f
-File: gmp.info,  Node: Block-Wise Barrett Division,  Next: Exact Division,  Prev: Divide and Conquer Division,  Up: Division Algorithms
-
-16.2.4 Block-Wise Barrett Division
-----------------------------------
-
-For the largest divisions, a block-wise Barrett division algorithm is
-used.  Here, the divisor is inverted to a precision determined by the
-relative size of the dividend and divisor.  Blocks of quotient limbs
-are then generated by multiplying blocks from the dividend by the
-inverse.
-
-   Our block-wise algorithm computes a smaller inverse than in the
-plain Barrett algorithm.  For a 2n/n division, the inverse will be just
-ceil(n/2) limbs.
-
-\1f
-File: gmp.info,  Node: Exact Division,  Next: Exact Remainder,  Prev: Block-Wise Barrett Division,  Up: Division Algorithms
-
-16.2.5 Exact Division
----------------------
-
-A so-called exact division is when the dividend is known to be an exact
-multiple of the divisor.  Jebelean's exact division algorithm uses this
-knowledge to make some significant optimizations (*note References::).
-
-   The idea can be illustrated in decimal for example with 368154
-divided by 543.  Because the low digit of the dividend is 4, the low
-digit of the quotient must be 8.  This is arrived at from 4*7 mod 10,
-using the fact 7 is the modular inverse of 3 (the low digit of the
-divisor), since 3*7 == 1 mod 10.  So 8*543=4344 can be subtracted from
-the dividend leaving 363810.  Notice the low digit has become zero.
-
-   The procedure is repeated at the second digit, with the next
-quotient digit 7 (7 == 1*7 mod 10), subtracting 7*543=3801, leaving
-325800.  And finally at the third digit with quotient digit 6 (8*7 mod
-10), subtracting 6*543=3258 leaving 0.  So the quotient is 678.
-
-   Notice however that the multiplies and subtractions don't need to
-extend past the low three digits of the dividend, since that's enough
-to determine the three quotient digits.  For the last quotient digit no
-subtraction is needed at all.  On a 2NxN division like this one, only
-about half the work of a normal basecase division is necessary.
-
-   For an NxM exact division producing Q=N-M quotient limbs, the saving
-over a normal basecase division is in two parts.  Firstly, each of the
-Q quotient limbs needs only one multiply, not a 2x1 divide and
-multiply.  Secondly, the crossproducts are reduced when Q>M to
-Q*M-M*(M+1)/2, or when Q<=M to Q*(Q-1)/2.  Notice the savings are
-complementary.  If Q is big then many divisions are saved, or if Q is
-small then the crossproducts reduce to a small number.
-
-   The modular inverse used is calculated efficiently by `binvert_limb'
-in `gmp-impl.h'.  This does four multiplies for a 32-bit limb, or six
-for a 64-bit limb.  `tune/modlinv.c' has some alternate implementations
-that might suit processors better at bit twiddling than multiplying.
-
-   The sub-quadratic exact division described by Jebelean in "Exact
-Division with Karatsuba Complexity" is not currently implemented.  It
-uses a rearrangement similar to the divide and conquer for normal
-division (*note Divide and Conquer Division::), but operating from low
-to high.  A further possibility not currently implemented is
-"Bidirectional Exact Integer Division" by Krandick and Jebelean which
-forms quotient limbs from both the high and low ends of the dividend,
-and can halve once more the number of crossproducts needed in a 2NxN
-division.
-
-   A special case exact division by 3 exists in `mpn_divexact_by3',
-supporting Toom-3 multiplication and `mpq' canonicalizations.  It forms
-quotient digits with a multiply by the modular inverse of 3 (which is
-`0xAA..AAB') and uses two comparisons to determine a borrow for the next
-limb.  The multiplications don't need to be on the dependent chain, as
-long as the effect of the borrows is applied, which can help chips with
-pipelined multipliers.
-
-\1f
-File: gmp.info,  Node: Exact Remainder,  Next: Small Quotient Division,  Prev: Exact Division,  Up: Division Algorithms
-
-16.2.6 Exact Remainder
-----------------------
-
-If the exact division algorithm is done with a full subtraction at each
-stage and the dividend isn't a multiple of the divisor, then low zero
-limbs are produced but with a remainder in the high limbs.  For
-dividend a, divisor d, quotient q, and b = 2^mp_bits_per_limb, this
-remainder r is of the form
-
-     a = q*d + r*b^n
-
-   n represents the number of zero limbs produced by the subtractions,
-that being the number of limbs produced for q.  r will be in the range
-0<=r<d and can be viewed as a remainder, but one shifted up by a factor
-of b^n.
-
-   Carrying out full subtractions at each stage means the same number
-of cross products must be done as a normal division, but there's still
-some single limb divisions saved.  When d is a single limb some
-simplifications arise, providing good speedups on a number of
-processors.
-
-   `mpn_divexact_by3', `mpn_modexact_1_odd' and the `mpn_redc_X'
-functions differ subtly in how they return r, leading to some negations
-in the above formula, but all are essentially the same.
-
-   Clearly r is zero when a is a multiple of d, and this leads to
-divisibility or congruence tests which are potentially more efficient
-than a normal division.
-
-   The factor of b^n on r can be ignored in a GCD when d is odd, hence
-the use of `mpn_modexact_1_odd' by `mpn_gcd_1' and `mpz_kronecker_ui'
-etc (*note Greatest Common Divisor Algorithms::).
-
-   Montgomery's REDC method for modular multiplications uses operands
-of the form of x*b^-n and y*b^-n and on calculating (x*b^-n)*(y*b^-n)
-uses the factor of b^n in the exact remainder to reach a product in the
-same form (x*y)*b^-n (*note Modular Powering Algorithm::).
-
-   Notice that r generally gives no useful information about the
-ordinary remainder a mod d since b^n mod d could be anything.  If
-however b^n == 1 mod d, then r is the negative of the ordinary
-remainder.  This occurs whenever d is a factor of b^n-1, as for example
-with 3 in `mpn_divexact_by3'.  For a 32 or 64 bit limb other such
-factors include 5, 17 and 257, but no particular use has been found for
-this.
-
-\1f
-File: gmp.info,  Node: Small Quotient Division,  Prev: Exact Remainder,  Up: Division Algorithms
-
-16.2.7 Small Quotient Division
-------------------------------
-
-An NxM division where the number of quotient limbs Q=N-M is small can
-be optimized somewhat.
-
-   An ordinary basecase division normalizes the divisor by shifting it
-to make the high bit set, shifting the dividend accordingly, and
-shifting the remainder back down at the end of the calculation.  This
-is wasteful if only a few quotient limbs are to be formed.  Instead a
-division of just the top 2*Q limbs of the dividend by the top Q limbs
-of the divisor can be used to form a trial quotient.  This requires
-only those limbs normalized, not the whole of the divisor and dividend.
-
-   A multiply and subtract then applies the trial quotient to the M-Q
-unused limbs of the divisor and N-Q dividend limbs (which includes Q
-limbs remaining from the trial quotient division).  The starting trial
-quotient can be 1 or 2 too big, but all cases of 2 too big and most
-cases of 1 too big are detected by first comparing the most significant
-limbs that will arise from the subtraction.  An addback is done if the
-quotient still turns out to be 1 too big.
-
-   This whole procedure is essentially the same as one step of the
-basecase algorithm done in a Q limb base, though with the trial
-quotient test done only with the high limbs, not an entire Q limb
-"digit" product.  The correctness of this weaker test can be
-established by following the argument of Knuth section 4.3.1 exercise
-20 but with the v2*q>b*r+u2 condition appropriately relaxed.
-
-\1f
-File: gmp.info,  Node: Greatest Common Divisor Algorithms,  Next: Powering Algorithms,  Prev: Division Algorithms,  Up: Algorithms
-
-16.3 Greatest Common Divisor
-============================
-
-* Menu:
-
-* Binary GCD::
-* Lehmer's Algorithm::
-* Subquadratic GCD::
-* Extended GCD::
-* Jacobi Symbol::
-
-\1f
-File: gmp.info,  Node: Binary GCD,  Next: Lehmer's Algorithm,  Prev: Greatest Common Divisor Algorithms,  Up: Greatest Common Divisor Algorithms
-
-16.3.1 Binary GCD
------------------
-
-At small sizes GMP uses an O(N^2) binary style GCD.  This is described
-in many textbooks, for example Knuth section 4.5.2 algorithm B.  It
-simply consists of successively reducing odd operands a and b using
-
-     a,b = abs(a-b),min(a,b)
-     strip factors of 2 from a
-
-   The Euclidean GCD algorithm, as per Knuth algorithms E and A,
-repeatedly computes the quotient q = floor(a/b) and replaces a,b by v,
-u - q v. The binary algorithm has so far been found to be faster than
-the Euclidean algorithm everywhere.  One reason the binary method does
-well is that the implied quotient at each step is usually small, so
-often only one or two subtractions are needed to get the same effect as
-a division.  Quotients 1, 2 and 3 for example occur 67.7% of the time,
-see Knuth section 4.5.3 Theorem E.
-
-   When the implied quotient is large, meaning b is much smaller than
-a, then a division is worthwhile.  This is the basis for the initial a
-mod b reductions in `mpn_gcd' and `mpn_gcd_1' (the latter for both Nx1
-and 1x1 cases).  But after that initial reduction, big quotients occur
-too rarely to make it worth checking for them.
-
-
-   The final 1x1 GCD in `mpn_gcd_1' is done in the generic C code as
-described above.  For two N-bit operands, the algorithm takes about
-0.68 iterations per bit.  For optimum performance some attention needs
-to be paid to the way the factors of 2 are stripped from a.
-
-   Firstly it may be noted that in twos complement the number of low
-zero bits on a-b is the same as b-a, so counting or testing can begin on
-a-b without waiting for abs(a-b) to be determined.
-
-   A loop stripping low zero bits tends not to branch predict well,
-since the condition is data dependent.  But on average there's only a
-few low zeros, so an option is to strip one or two bits arithmetically
-then loop for more (as done for AMD K6).  Or use a lookup table to get
-a count for several bits then loop for more (as done for AMD K7).  An
-alternative approach is to keep just one of a or b odd and iterate
-
-     a,b = abs(a-b), min(a,b)
-     a = a/2 if even
-     b = b/2 if even
-
-   This requires about 1.25 iterations per bit, but stripping of a
-single bit at each step avoids any branching.  Repeating the bit strip
-reduces to about 0.9 iterations per bit, which may be a worthwhile
-tradeoff.
-
-   Generally with the above approaches a speed of perhaps 6 cycles per
-bit can be achieved, which is still not terribly fast with for instance
-a 64-bit GCD taking nearly 400 cycles.  It's this sort of time which
-means it's not usually advantageous to combine a set of divisibility
-tests into a GCD.
-
-   Currently, the binary algorithm is used for GCD only when N < 3.
-
-\1f
-File: gmp.info,  Node: Lehmer's Algorithm,  Next: Subquadratic GCD,  Prev: Binary GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.2 Lehmer's algorithm
--------------------------
-
-Lehmer's improvement of the Euclidean algorithms is based on the
-observation that the initial part of the quotient sequence depends only
-on the most significant parts of the inputs. The variant of Lehmer's
-algorithm used in GMP splits off the most significant two limbs, as
-suggested, e.g., in "A Double-Digit Lehmer-Euclid Algorithm" by
-Jebelean (*note References::). The quotients of two double-limb inputs
-are collected as a 2 by 2 matrix with single-limb elements. This is
-done by the function `mpn_hgcd2'. The resulting matrix is applied to
-the inputs using `mpn_mul_1' and `mpn_submul_1'. Each iteration usually
-reduces the inputs by almost one limb. In the rare case of a large
-quotient, no progress can be made by examining just the most
-significant two limbs, and the quotient is computing using plain
-division.
-
-   The resulting algorithm is asymptotically O(N^2), just as the
-Euclidean algorithm and the binary algorithm. The quadratic part of the
-work are the calls to `mpn_mul_1' and `mpn_submul_1'. For small sizes,
-the linear work is also significant. There are roughly N calls to the
-`mpn_hgcd2' function. This function uses a couple of important
-optimizations:
-
-   * It uses the same relaxed notion of correctness as `mpn_hgcd' (see
-     next section). This means that when called with the most
-     significant two limbs of two large numbers, the returned matrix
-     does not always correspond exactly to the initial quotient
-     sequence for the two large numbers; the final quotient may
-     sometimes be one off.
-
-   * It takes advantage of the fact the quotients are usually small.
-     The division operator is not used, since the corresponding
-     assembler instruction is very slow on most architectures. (This
-     code could probably be improved further, it uses many branches
-     that are unfriendly to prediction).
-
-   * It switches from double-limb calculations to single-limb
-     calculations half-way through, when the input numbers have been
-     reduced in size from two limbs to one and a half.
-
-
-\1f
-File: gmp.info,  Node: Subquadratic GCD,  Next: Extended GCD,  Prev: Lehmer's Algorithm,  Up: Greatest Common Divisor Algorithms
-
-16.3.3 Subquadratic GCD
------------------------
-
-For inputs larger than `GCD_DC_THRESHOLD', GCD is computed via the HGCD
-(Half GCD) function, as a generalization to Lehmer's algorithm.
-
-   Let the inputs a,b be of size N limbs each. Put S = floor(N/2) + 1.
-Then HGCD(a,b) returns a transformation matrix T with non-negative
-elements, and reduced numbers (c;d) = T^-1 (a;b). The reduced numbers
-c,d must be larger than S limbs, while their difference abs(c-d) must
-fit in S limbs. The matrix elements will also be of size roughly N/2.
-
-   The HGCD base case uses Lehmer's algorithm, but with the above stop
-condition that returns reduced numbers and the corresponding
-transformation matrix half-way through. For inputs larger than
-`HGCD_THRESHOLD', HGCD is computed recursively, using the divide and
-conquer algorithm in "On Scho"nhage's algorithm and subquadratic
-integer GCD computation" by Mo"ller (*note References::). The recursive
-algorithm consists of these main steps.
-
-   * Call HGCD recursively, on the most significant N/2 limbs. Apply the
-     resulting matrix T_1 to the full numbers, reducing them to a size
-     just above 3N/2.
-
-   * Perform a small number of division or subtraction steps to reduce
-     the numbers to size below 3N/2. This is essential mainly for the
-     unlikely case of large quotients.
-
-   * Call HGCD recursively, on the most significant N/2 limbs of the
-     reduced numbers. Apply the resulting matrix T_2 to the full
-     numbers, reducing them to a size just above N/2.
-
-   * Compute T = T_1 T_2.
-
-   * Perform a small number of division and subtraction steps to
-     satisfy the requirements, and return.
-
-   GCD is then implemented as a loop around HGCD, similarly to Lehmer's
-algorithm. Where Lehmer repeatedly chops off the top two limbs, calls
-`mpn_hgcd2', and applies the resulting matrix to the full numbers, the
-subquadratic GCD chops off the most significant third of the limbs (the
-proportion is a tuning parameter, and 1/3 seems to be more efficient
-than, e.g, 1/2), calls `mpn_hgcd', and applies the resulting matrix.
-Once the input numbers are reduced to size below `GCD_DC_THRESHOLD',
-Lehmer's algorithm is used for the rest of the work.
-
-   The asymptotic running time of both HGCD and GCD is O(M(N)*log(N)),
-where M(N) is the time for multiplying two N-limb numbers.
-
-\1f
-File: gmp.info,  Node: Extended GCD,  Next: Jacobi Symbol,  Prev: Subquadratic GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.4 Extended GCD
--------------------
-
-The extended GCD function, or GCDEXT, calculates gcd(a,b) and also
-cofactors x and y satisfying a*x+b*y=gcd(a,b). All the algorithms used
-for plain GCD are extended to handle this case. The binary algorithm is
-used only for single-limb GCDEXT.  Lehmer's algorithm is used for sizes
-up to `GCDEXT_DC_THRESHOLD'. Above this threshold, GCDEXT is
-implemented as a loop around HGCD, but with more book-keeping to keep
-track of the cofactors. This gives the same asymptotic running time as
-for GCD and HGCD, O(M(N)*log(N))
-
-   One difference to plain GCD is that while the inputs a and b are
-reduced as the algorithm proceeds, the cofactors x and y grow in size.
-This makes the tuning of the chopping-point more difficult. The current
-code chops off the most significant half of the inputs for the call to
-HGCD in the first iteration, and the most significant two thirds for
-the remaining calls. This strategy could surely be improved. Also the
-stop condition for the loop, where Lehmer's algorithm is invoked once
-the inputs are reduced below `GCDEXT_DC_THRESHOLD', could maybe be
-improved by taking into account the current size of the cofactors.
-
-\1f
-File: gmp.info,  Node: Jacobi Symbol,  Prev: Extended GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.5 Jacobi Symbol
---------------------
-
-`mpz_jacobi' and `mpz_kronecker' are currently implemented with a
-simple binary algorithm similar to that described for the GCDs (*note
-Binary GCD::).  They're not very fast when both inputs are large.
-Lehmer's multi-step improvement or a binary based multi-step algorithm
-is likely to be better.
-
-   When one operand fits a single limb, and that includes
-`mpz_kronecker_ui' and friends, an initial reduction is done with
-either `mpn_mod_1' or `mpn_modexact_1_odd', followed by the binary
-algorithm on a single limb.  The binary algorithm is well suited to a
-single limb, and the whole calculation in this case is quite efficient.
-
-   In all the routines sign changes for the result are accumulated
-using some bit twiddling, avoiding table lookups or conditional jumps.
-
diff --git a/misc/builddeps/win32/gmp/share/info/gmp.info-2 b/misc/builddeps/win32/gmp/share/info/gmp.info-2
deleted file mode 100644 (file)
index 4584623..0000000
+++ /dev/null
@@ -1,3489 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-File: gmp.info,  Node: Powering Algorithms,  Next: Root Extraction Algorithms,  Prev: Greatest Common Divisor Algorithms,  Up: Algorithms
-
-16.4 Powering Algorithms
-========================
-
-* Menu:
-
-* Normal Powering Algorithm::
-* Modular Powering Algorithm::
-
-\1f
-File: gmp.info,  Node: Normal Powering Algorithm,  Next: Modular Powering Algorithm,  Prev: Powering Algorithms,  Up: Powering Algorithms
-
-16.4.1 Normal Powering
-----------------------
-
-Normal `mpz' or `mpf' powering uses a simple binary algorithm,
-successively squaring and then multiplying by the base when a 1 bit is
-seen in the exponent, as per Knuth section 4.6.3.  The "left to right"
-variant described there is used rather than algorithm A, since it's
-just as easy and can be done with somewhat less temporary memory.
-
-\1f
-File: gmp.info,  Node: Modular Powering Algorithm,  Prev: Normal Powering Algorithm,  Up: Powering Algorithms
-
-16.4.2 Modular Powering
------------------------
-
-Modular powering is implemented using a 2^k-ary sliding window
-algorithm, as per "Handbook of Applied Cryptography" algorithm 14.85
-(*note References::).  k is chosen according to the size of the
-exponent.  Larger exponents use larger values of k, the choice being
-made to minimize the average number of multiplications that must
-supplement the squaring.
-
-   The modular multiplies and squares use either a simple division or
-the REDC method by Montgomery (*note References::).  REDC is a little
-faster, essentially saving N single limb divisions in a fashion similar
-to an exact remainder (*note Exact Remainder::).
-
-\1f
-File: gmp.info,  Node: Root Extraction Algorithms,  Next: Radix Conversion Algorithms,  Prev: Powering Algorithms,  Up: Algorithms
-
-16.5 Root Extraction Algorithms
-===============================
-
-* Menu:
-
-* Square Root Algorithm::
-* Nth Root Algorithm::
-* Perfect Square Algorithm::
-* Perfect Power Algorithm::
-
-\1f
-File: gmp.info,  Node: Square Root Algorithm,  Next: Nth Root Algorithm,  Prev: Root Extraction Algorithms,  Up: Root Extraction Algorithms
-
-16.5.1 Square Root
-------------------
-
-Square roots are taken using the "Karatsuba Square Root" algorithm by
-Paul Zimmermann (*note References::).
-
-   An input n is split into four parts of k bits each, so with b=2^k we
-have n = a3*b^3 + a2*b^2 + a1*b + a0.  Part a3 must be "normalized" so
-that either the high or second highest bit is set.  In GMP, k is kept
-on a limb boundary and the input is left shifted (by an even number of
-bits) to normalize.
-
-   The square root of the high two parts is taken, by recursive
-application of the algorithm (bottoming out in a one-limb Newton's
-method),
-
-     s1,r1 = sqrtrem (a3*b + a2)
-
-   This is an approximation to the desired root and is extended by a
-division to give s,r,
-
-     q,u = divrem (r1*b + a1, 2*s1)
-     s = s1*b + q
-     r = u*b + a0 - q^2
-
-   The normalization requirement on a3 means at this point s is either
-correct or 1 too big.  r is negative in the latter case, so
-
-     if r < 0 then
-       r = r + 2*s - 1
-       s = s - 1
-
-   The algorithm is expressed in a divide and conquer form, but as
-noted in the paper it can also be viewed as a discrete variant of
-Newton's method, or as a variation on the schoolboy method (no longer
-taught) for square roots two digits at a time.
-
-   If the remainder r is not required then usually only a few high limbs
-of r and u need to be calculated to determine whether an adjustment to
-s is required.  This optimization is not currently implemented.
-
-   In the Karatsuba multiplication range this algorithm is
-O(1.5*M(N/2)), where M(n) is the time to multiply two numbers of n
-limbs.  In the FFT multiplication range this grows to a bound of
-O(6*M(N/2)).  In practice a factor of about 1.5 to 1.8 is found in the
-Karatsuba and Toom-3 ranges, growing to 2 or 3 in the FFT range.
-
-   The algorithm does all its calculations in integers and the resulting
-`mpn_sqrtrem' is used for both `mpz_sqrt' and `mpf_sqrt'.  The extended
-precision given by `mpf_sqrt_ui' is obtained by padding with zero limbs.
-
-\1f
-File: gmp.info,  Node: Nth Root Algorithm,  Next: Perfect Square Algorithm,  Prev: Square Root Algorithm,  Up: Root Extraction Algorithms
-
-16.5.2 Nth Root
----------------
-
-Integer Nth roots are taken using Newton's method with the following
-iteration, where A is the input and n is the root to be taken.
-
-              1         A
-     a[i+1] = - * ( --------- + (n-1)*a[i] )
-              n     a[i]^(n-1)
-
-   The initial approximation a[1] is generated bitwise by successively
-powering a trial root with or without new 1 bits, aiming to be just
-above the true root.  The iteration converges quadratically when
-started from a good approximation.  When n is large more initial bits
-are needed to get good convergence.  The current implementation is not
-particularly well optimized.
-
-\1f
-File: gmp.info,  Node: Perfect Square Algorithm,  Next: Perfect Power Algorithm,  Prev: Nth Root Algorithm,  Up: Root Extraction Algorithms
-
-16.5.3 Perfect Square
----------------------
-
-A significant fraction of non-squares can be quickly identified by
-checking whether the input is a quadratic residue modulo small integers.
-
-   `mpz_perfect_square_p' first tests the input mod 256, which means
-just examining the low byte.  Only 44 different values occur for
-squares mod 256, so 82.8% of inputs can be immediately identified as
-non-squares.
-
-   On a 32-bit system similar tests are done mod 9, 5, 7, 13 and 17,
-for a total 99.25% of inputs identified as non-squares.  On a 64-bit
-system 97 is tested too, for a total 99.62%.
-
-   These moduli are chosen because they're factors of 2^24-1 (or 2^48-1
-for 64-bits), and such a remainder can be quickly taken just using
-additions (see `mpn_mod_34lsub1').
-
-   When nails are in use moduli are instead selected by the `gen-psqr.c'
-program and applied with an `mpn_mod_1'.  The same 2^24-1 or 2^48-1
-could be done with nails using some extra bit shifts, but this is not
-currently implemented.
-
-   In any case each modulus is applied to the `mpn_mod_34lsub1' or
-`mpn_mod_1' remainder and a table lookup identifies non-squares.  By
-using a "modexact" style calculation, and suitably permuted tables,
-just one multiply each is required, see the code for details.  Moduli
-are also combined to save operations, so long as the lookup tables
-don't become too big.  `gen-psqr.c' does all the pre-calculations.
-
-   A square root must still be taken for any value that passes these
-tests, to verify it's really a square and not one of the small fraction
-of non-squares that get through (ie. a pseudo-square to all the tested
-bases).
-
-   Clearly more residue tests could be done, `mpz_perfect_square_p' only
-uses a compact and efficient set.  Big inputs would probably benefit
-from more residue testing, small inputs might be better off with less.
-The assumed distribution of squares versus non-squares in the input
-would affect such considerations.
-
-\1f
-File: gmp.info,  Node: Perfect Power Algorithm,  Prev: Perfect Square Algorithm,  Up: Root Extraction Algorithms
-
-16.5.4 Perfect Power
---------------------
-
-Detecting perfect powers is required by some factorization algorithms.
-Currently `mpz_perfect_power_p' is implemented using repeated Nth root
-extractions, though naturally only prime roots need to be considered.
-(*Note Nth Root Algorithm::.)
-
-   If a prime divisor p with multiplicity e can be found, then only
-roots which are divisors of e need to be considered, much reducing the
-work necessary.  To this end divisibility by a set of small primes is
-checked.
-
-\1f
-File: gmp.info,  Node: Radix Conversion Algorithms,  Next: Other Algorithms,  Prev: Root Extraction Algorithms,  Up: Algorithms
-
-16.6 Radix Conversion
-=====================
-
-Radix conversions are less important than other algorithms.  A program
-dominated by conversions should probably use a different data
-representation.
-
-* Menu:
-
-* Binary to Radix::
-* Radix to Binary::
-
-\1f
-File: gmp.info,  Node: Binary to Radix,  Next: Radix to Binary,  Prev: Radix Conversion Algorithms,  Up: Radix Conversion Algorithms
-
-16.6.1 Binary to Radix
-----------------------
-
-Conversions from binary to a power-of-2 radix use a simple and fast
-O(N) bit extraction algorithm.
-
-   Conversions from binary to other radices use one of two algorithms.
-Sizes below `GET_STR_PRECOMPUTE_THRESHOLD' use a basic O(N^2) method.
-Repeated divisions by b^n are made, where b is the radix and n is the
-biggest power that fits in a limb.  But instead of simply using the
-remainder r from such divisions, an extra divide step is done to give a
-fractional limb representing r/b^n.  The digits of r can then be
-extracted using multiplications by b rather than divisions.  Special
-case code is provided for decimal, allowing multiplications by 10 to
-optimize to shifts and adds.
-
-   Above `GET_STR_PRECOMPUTE_THRESHOLD' a sub-quadratic algorithm is
-used.  For an input t, powers b^(n*2^i) of the radix are calculated,
-until a power between t and sqrt(t) is reached.  t is then divided by
-that largest power, giving a quotient which is the digits above that
-power, and a remainder which is those below.  These two parts are in
-turn divided by the second highest power, and so on recursively.  When
-a piece has been divided down to less than `GET_STR_DC_THRESHOLD'
-limbs, the basecase algorithm described above is used.
-
-   The advantage of this algorithm is that big divisions can make use
-of the sub-quadratic divide and conquer division (*note Divide and
-Conquer Division::), and big divisions tend to have less overheads than
-lots of separate single limb divisions anyway.  But in any case the
-cost of calculating the powers b^(n*2^i) must first be overcome.
-
-   `GET_STR_PRECOMPUTE_THRESHOLD' and `GET_STR_DC_THRESHOLD' represent
-the same basic thing, the point where it becomes worth doing a big
-division to cut the input in half.  `GET_STR_PRECOMPUTE_THRESHOLD'
-includes the cost of calculating the radix power required, whereas
-`GET_STR_DC_THRESHOLD' assumes that's already available, which is the
-case when recursing.
-
-   Since the base case produces digits from least to most significant
-but they want to be stored from most to least, it's necessary to
-calculate in advance how many digits there will be, or at least be sure
-not to underestimate that.  For GMP the number of input bits is
-multiplied by `chars_per_bit_exactly' from `mp_bases', rounding up.
-The result is either correct or one too big.
-
-   Examining some of the high bits of the input could increase the
-chance of getting the exact number of digits, but an exact result every
-time would not be practical, since in general the difference between
-numbers 100... and 99... is only in the last few bits and the work to
-identify 99...  might well be almost as much as a full conversion.
-
-   `mpf_get_str' doesn't currently use the algorithm described here, it
-multiplies or divides by a power of b to move the radix point to the
-just above the highest non-zero digit (or at worst one above that
-location), then multiplies by b^n to bring out digits.  This is O(N^2)
-and is certainly not optimal.
-
-   The r/b^n scheme described above for using multiplications to bring
-out digits might be useful for more than a single limb.  Some brief
-experiments with it on the base case when recursing didn't give a
-noticeable improvement, but perhaps that was only due to the
-implementation.  Something similar would work for the sub-quadratic
-divisions too, though there would be the cost of calculating a bigger
-radix power.
-
-   Another possible improvement for the sub-quadratic part would be to
-arrange for radix powers that balanced the sizes of quotient and
-remainder produced, ie. the highest power would be an b^(n*k)
-approximately equal to sqrt(t), not restricted to a 2^i factor.  That
-ought to smooth out a graph of times against sizes, but may or may not
-be a net speedup.
-
-\1f
-File: gmp.info,  Node: Radix to Binary,  Prev: Binary to Radix,  Up: Radix Conversion Algorithms
-
-16.6.2 Radix to Binary
-----------------------
-
-*This section needs to be rewritten, it currently describes the
-algorithms used before GMP 4.3.*
-
-   Conversions from a power-of-2 radix into binary use a simple and fast
-O(N) bitwise concatenation algorithm.
-
-   Conversions from other radices use one of two algorithms.  Sizes
-below `SET_STR_PRECOMPUTE_THRESHOLD' use a basic O(N^2) method.  Groups
-of n digits are converted to limbs, where n is the biggest power of the
-base b which will fit in a limb, then those groups are accumulated into
-the result by multiplying by b^n and adding.  This saves
-multi-precision operations, as per Knuth section 4.4 part E (*note
-References::).  Some special case code is provided for decimal, giving
-the compiler a chance to optimize multiplications by 10.
-
-   Above `SET_STR_PRECOMPUTE_THRESHOLD' a sub-quadratic algorithm is
-used.  First groups of n digits are converted into limbs.  Then adjacent
-limbs are combined into limb pairs with x*b^n+y, where x and y are the
-limbs.  Adjacent limb pairs are combined into quads similarly with
-x*b^(2n)+y.  This continues until a single block remains, that being
-the result.
-
-   The advantage of this method is that the multiplications for each x
-are big blocks, allowing Karatsuba and higher algorithms to be used.
-But the cost of calculating the powers b^(n*2^i) must be overcome.
-`SET_STR_PRECOMPUTE_THRESHOLD' usually ends up quite big, around 5000
-digits, and on some processors much bigger still.
-
-   `SET_STR_PRECOMPUTE_THRESHOLD' is based on the input digits (and
-tuned for decimal), though it might be better based on a limb count, so
-as to be independent of the base.  But that sort of count isn't used by
-the base case and so would need some sort of initial calculation or
-estimate.
-
-   The main reason `SET_STR_PRECOMPUTE_THRESHOLD' is so much bigger
-than the corresponding `GET_STR_PRECOMPUTE_THRESHOLD' is that
-`mpn_mul_1' is much faster than `mpn_divrem_1' (often by a factor of 5,
-or more).
-
-\1f
-File: gmp.info,  Node: Other Algorithms,  Next: Assembly Coding,  Prev: Radix Conversion Algorithms,  Up: Algorithms
-
-16.7 Other Algorithms
-=====================
-
-* Menu:
-
-* Prime Testing Algorithm::
-* Factorial Algorithm::
-* Binomial Coefficients Algorithm::
-* Fibonacci Numbers Algorithm::
-* Lucas Numbers Algorithm::
-* Random Number Algorithms::
-
-\1f
-File: gmp.info,  Node: Prime Testing Algorithm,  Next: Factorial Algorithm,  Prev: Other Algorithms,  Up: Other Algorithms
-
-16.7.1 Prime Testing
---------------------
-
-The primality testing in `mpz_probab_prime_p' (*note Number Theoretic
-Functions::) first does some trial division by small factors and then
-uses the Miller-Rabin probabilistic primality testing algorithm, as
-described in Knuth section 4.5.4 algorithm P (*note References::).
-
-   For an odd input n, and with n = q*2^k+1 where q is odd, this
-algorithm selects a random base x and tests whether x^q mod n is 1 or
--1, or an x^(q*2^j) mod n is 1, for 1<=j<=k.  If so then n is probably
-prime, if not then n is definitely composite.
-
-   Any prime n will pass the test, but some composites do too.  Such
-composites are known as strong pseudoprimes to base x.  No n is a
-strong pseudoprime to more than 1/4 of all bases (see Knuth exercise
-22), hence with x chosen at random there's no more than a 1/4 chance a
-"probable prime" will in fact be composite.
-
-   In fact strong pseudoprimes are quite rare, making the test much more
-powerful than this analysis would suggest, but 1/4 is all that's proven
-for an arbitrary n.
-
-\1f
-File: gmp.info,  Node: Factorial Algorithm,  Next: Binomial Coefficients Algorithm,  Prev: Prime Testing Algorithm,  Up: Other Algorithms
-
-16.7.2 Factorial
-----------------
-
-Factorials are calculated by a combination of removal of twos,
-powering, and binary splitting.  The procedure can be best illustrated
-with an example,
-
-     23! = 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23
-
-has factors of two removed,
-
-     23! = 2^19.1.1.3.1.5.3.7.1.9.5.11.3.13.7.15.1.17.9.19.5.21.11.23
-
-and the resulting terms collected up according to their multiplicity,
-
-     23! = 2^19.(3.5)^3.(7.9.11)^2.(13.15.17.19.21.23)
-
-   Each sequence such as 13.15.17.19.21.23 is evaluated by splitting
-into every second term, as for instance (13.17.21).(15.19.23), and the
-same recursively on each half.  This is implemented iteratively using
-some bit twiddling.
-
-   Such splitting is more efficient than repeated Nx1 multiplies since
-it forms big multiplies, allowing Karatsuba and higher algorithms to be
-used.  And even below the Karatsuba threshold a big block of work can
-be more efficient for the basecase algorithm.
-
-   Splitting into subsequences of every second term keeps the resulting
-products more nearly equal in size than would the simpler approach of
-say taking the first half and second half of the sequence.  Nearly
-equal products are more efficient for the current multiply
-implementation.
-
-\1f
-File: gmp.info,  Node: Binomial Coefficients Algorithm,  Next: Fibonacci Numbers Algorithm,  Prev: Factorial Algorithm,  Up: Other Algorithms
-
-16.7.3 Binomial Coefficients
-----------------------------
-
-Binomial coefficients C(n,k) are calculated by first arranging k <= n/2
-using C(n,k) = C(n,n-k) if necessary, and then evaluating the following
-product simply from i=2 to i=k.
-
-                           k  (n-k+i)
-     C(n,k) =  (n-k+1) * prod -------
-                          i=2    i
-
-   It's easy to show that each denominator i will divide the product so
-far, so the exact division algorithm is used (*note Exact Division::).
-
-   The numerators n-k+i and denominators i are first accumulated into
-as many fit a limb, to save multi-precision operations, though for
-`mpz_bin_ui' this applies only to the divisors, since n is an `mpz_t'
-and n-k+i in general won't fit in a limb at all.
-
-\1f
-File: gmp.info,  Node: Fibonacci Numbers Algorithm,  Next: Lucas Numbers Algorithm,  Prev: Binomial Coefficients Algorithm,  Up: Other Algorithms
-
-16.7.4 Fibonacci Numbers
-------------------------
-
-The Fibonacci functions `mpz_fib_ui' and `mpz_fib2_ui' are designed for
-calculating isolated F[n] or F[n],F[n-1] values efficiently.
-
-   For small n, a table of single limb values in `__gmp_fib_table' is
-used.  On a 32-bit limb this goes up to F[47], or on a 64-bit limb up
-to F[93].  For convenience the table starts at F[-1].
-
-   Beyond the table, values are generated with a binary powering
-algorithm, calculating a pair F[n] and F[n-1] working from high to low
-across the bits of n.  The formulas used are
-
-     F[2k+1] = 4*F[k]^2 - F[k-1]^2 + 2*(-1)^k
-     F[2k-1] =   F[k]^2 + F[k-1]^2
-
-     F[2k] = F[2k+1] - F[2k-1]
-
-   At each step, k is the high b bits of n.  If the next bit of n is 0
-then F[2k],F[2k-1] is used, or if it's a 1 then F[2k+1],F[2k] is used,
-and the process repeated until all bits of n are incorporated.  Notice
-these formulas require just two squares per bit of n.
-
-   It'd be possible to handle the first few n above the single limb
-table with simple additions, using the defining Fibonacci recurrence
-F[k+1]=F[k]+F[k-1], but this is not done since it usually turns out to
-be faster for only about 10 or 20 values of n, and including a block of
-code for just those doesn't seem worthwhile.  If they really mattered
-it'd be better to extend the data table.
-
-   Using a table avoids lots of calculations on small numbers, and
-makes small n go fast.  A bigger table would make more small n go fast,
-it's just a question of balancing size against desired speed.  For GMP
-the code is kept compact, with the emphasis primarily on a good
-powering algorithm.
-
-   `mpz_fib2_ui' returns both F[n] and F[n-1], but `mpz_fib_ui' is only
-interested in F[n].  In this case the last step of the algorithm can
-become one multiply instead of two squares.  One of the following two
-formulas is used, according as n is odd or even.
-
-     F[2k]   = F[k]*(F[k]+2F[k-1])
-
-     F[2k+1] = (2F[k]+F[k-1])*(2F[k]-F[k-1]) + 2*(-1)^k
-
-   F[2k+1] here is the same as above, just rearranged to be a multiply.
-For interest, the 2*(-1)^k term both here and above can be applied
-just to the low limb of the calculation, without a carry or borrow into
-further limbs, which saves some code size.  See comments with
-`mpz_fib_ui' and the internal `mpn_fib2_ui' for how this is done.
-
-\1f
-File: gmp.info,  Node: Lucas Numbers Algorithm,  Next: Random Number Algorithms,  Prev: Fibonacci Numbers Algorithm,  Up: Other Algorithms
-
-16.7.5 Lucas Numbers
---------------------
-
-`mpz_lucnum2_ui' derives a pair of Lucas numbers from a pair of
-Fibonacci numbers with the following simple formulas.
-
-     L[k]   =   F[k] + 2*F[k-1]
-     L[k-1] = 2*F[k] -   F[k-1]
-
-   `mpz_lucnum_ui' is only interested in L[n], and some work can be
-saved.  Trailing zero bits on n can be handled with a single square
-each.
-
-     L[2k] = L[k]^2 - 2*(-1)^k
-
-   And the lowest 1 bit can be handled with one multiply of a pair of
-Fibonacci numbers, similar to what `mpz_fib_ui' does.
-
-     L[2k+1] = 5*F[k-1]*(2*F[k]+F[k-1]) - 4*(-1)^k
-
-\1f
-File: gmp.info,  Node: Random Number Algorithms,  Prev: Lucas Numbers Algorithm,  Up: Other Algorithms
-
-16.7.6 Random Numbers
----------------------
-
-For the `urandomb' functions, random numbers are generated simply by
-concatenating bits produced by the generator.  As long as the generator
-has good randomness properties this will produce well-distributed N bit
-numbers.
-
-   For the `urandomm' functions, random numbers in a range 0<=R<N are
-generated by taking values R of ceil(log2(N)) bits each until one
-satisfies R<N.  This will normally require only one or two attempts,
-but the attempts are limited in case the generator is somehow
-degenerate and produces only 1 bits or similar.
-
-   The Mersenne Twister generator is by Matsumoto and Nishimura (*note
-References::).  It has a non-repeating period of 2^19937-1, which is a
-Mersenne prime, hence the name of the generator.  The state is 624
-words of 32-bits each, which is iterated with one XOR and shift for each
-32-bit word generated, making the algorithm very fast.  Randomness
-properties are also very good and this is the default algorithm used by
-GMP.
-
-   Linear congruential generators are described in many text books, for
-instance Knuth volume 2 (*note References::).  With a modulus M and
-parameters A and C, a integer state S is iterated by the formula S <-
-A*S+C mod M.  At each step the new state is a linear function of the
-previous, mod M, hence the name of the generator.
-
-   In GMP only moduli of the form 2^N are supported, and the current
-implementation is not as well optimized as it could be.  Overheads are
-significant when N is small, and when N is large clearly the multiply
-at each step will become slow.  This is not a big concern, since the
-Mersenne Twister generator is better in every respect and is therefore
-recommended for all normal applications.
-
-   For both generators the current state can be deduced by observing
-enough output and applying some linear algebra (over GF(2) in the case
-of the Mersenne Twister).  This generally means raw output is
-unsuitable for cryptographic applications without further hashing or
-the like.
-
-\1f
-File: gmp.info,  Node: Assembly Coding,  Prev: Other Algorithms,  Up: Algorithms
-
-16.8 Assembly Coding
-====================
-
-The assembly subroutines in GMP are the most significant source of
-speed at small to moderate sizes.  At larger sizes algorithm selection
-becomes more important, but of course speedups in low level routines
-will still speed up everything proportionally.
-
-   Carry handling and widening multiplies that are important for GMP
-can't be easily expressed in C.  GCC `asm' blocks help a lot and are
-provided in `longlong.h', but hand coding low level routines invariably
-offers a speedup over generic C by a factor of anything from 2 to 10.
-
-* Menu:
-
-* Assembly Code Organisation::
-* Assembly Basics::
-* Assembly Carry Propagation::
-* Assembly Cache Handling::
-* Assembly Functional Units::
-* Assembly Floating Point::
-* Assembly SIMD Instructions::
-* Assembly Software Pipelining::
-* Assembly Loop Unrolling::
-* Assembly Writing Guide::
-
-\1f
-File: gmp.info,  Node: Assembly Code Organisation,  Next: Assembly Basics,  Prev: Assembly Coding,  Up: Assembly Coding
-
-16.8.1 Code Organisation
-------------------------
-
-The various `mpn' subdirectories contain machine-dependent code, written
-in C or assembly.  The `mpn/generic' subdirectory contains default code,
-used when there's no machine-specific version of a particular file.
-
-   Each `mpn' subdirectory is for an ISA family.  Generally 32-bit and
-64-bit variants in a family cannot share code and have separate
-directories.  Within a family further subdirectories may exist for CPU
-variants.
-
-   In each directory a `nails' subdirectory may exist, holding code with
-nails support for that CPU variant.  A `NAILS_SUPPORT' directive in each
-file indicates the nails values the code handles.  Nails code only
-exists where it's faster, or promises to be faster, than plain code.
-There's no effort put into nails if they're not going to enhance a
-given CPU.
-
-\1f
-File: gmp.info,  Node: Assembly Basics,  Next: Assembly Carry Propagation,  Prev: Assembly Code Organisation,  Up: Assembly Coding
-
-16.8.2 Assembly Basics
-----------------------
-
-`mpn_addmul_1' and `mpn_submul_1' are the most important routines for
-overall GMP performance.  All multiplications and divisions come down to
-repeated calls to these.  `mpn_add_n', `mpn_sub_n', `mpn_lshift' and
-`mpn_rshift' are next most important.
-
-   On some CPUs assembly versions of the internal functions
-`mpn_mul_basecase' and `mpn_sqr_basecase' give significant speedups,
-mainly through avoiding function call overheads.  They can also
-potentially make better use of a wide superscalar processor, as can
-bigger primitives like `mpn_addmul_2' or `mpn_addmul_4'.
-
-   The restrictions on overlaps between sources and destinations (*note
-Low-level Functions::) are designed to facilitate a variety of
-implementations.  For example, knowing `mpn_add_n' won't have partly
-overlapping sources and destination means reading can be done far ahead
-of writing on superscalar processors, and loops can be vectorized on a
-vector processor, depending on the carry handling.
-
-\1f
-File: gmp.info,  Node: Assembly Carry Propagation,  Next: Assembly Cache Handling,  Prev: Assembly Basics,  Up: Assembly Coding
-
-16.8.3 Carry Propagation
-------------------------
-
-The problem that presents most challenges in GMP is propagating carries
-from one limb to the next.  In functions like `mpn_addmul_1' and
-`mpn_add_n', carries are the only dependencies between limb operations.
-
-   On processors with carry flags, a straightforward CISC style `adc' is
-generally best.  AMD K6 `mpn_addmul_1' however is an example of an
-unusual set of circumstances where a branch works out better.
-
-   On RISC processors generally an add and compare for overflow is
-used.  This sort of thing can be seen in `mpn/generic/aors_n.c'.  Some
-carry propagation schemes require 4 instructions, meaning at least 4
-cycles per limb, but other schemes may use just 1 or 2.  On wide
-superscalar processors performance may be completely determined by the
-number of dependent instructions between carry-in and carry-out for
-each limb.
-
-   On vector processors good use can be made of the fact that a carry
-bit only very rarely propagates more than one limb.  When adding a
-single bit to a limb, there's only a carry out if that limb was
-`0xFF...FF' which on random data will be only 1 in 2^mp_bits_per_limb.
-`mpn/cray/add_n.c' is an example of this, it adds all limbs in
-parallel, adds one set of carry bits in parallel and then only rarely
-needs to fall through to a loop propagating further carries.
-
-   On the x86s, GCC (as of version 2.95.2) doesn't generate
-particularly good code for the RISC style idioms that are necessary to
-handle carry bits in C.  Often conditional jumps are generated where
-`adc' or `sbb' forms would be better.  And so unfortunately almost any
-loop involving carry bits needs to be coded in assembly for best
-results.
-
-\1f
-File: gmp.info,  Node: Assembly Cache Handling,  Next: Assembly Functional Units,  Prev: Assembly Carry Propagation,  Up: Assembly Coding
-
-16.8.4 Cache Handling
----------------------
-
-GMP aims to perform well both on operands that fit entirely in L1 cache
-and those which don't.
-
-   Basic routines like `mpn_add_n' or `mpn_lshift' are often used on
-large operands, so L2 and main memory performance is important for them.
-`mpn_mul_1' and `mpn_addmul_1' are mostly used for multiply and square
-basecases, so L1 performance matters most for them, unless assembly
-versions of `mpn_mul_basecase' and `mpn_sqr_basecase' exist, in which
-case the remaining uses are mostly for larger operands.
-
-   For L2 or main memory operands, memory access times will almost
-certainly be more than the calculation time.  The aim therefore is to
-maximize memory throughput, by starting a load of the next cache line
-while processing the contents of the previous one.  Clearly this is
-only possible if the chip has a lock-up free cache or some sort of
-prefetch instruction.  Most current chips have both these features.
-
-   Prefetching sources combines well with loop unrolling, since a
-prefetch can be initiated once per unrolled loop (or more than once if
-the loop covers more than one cache line).
-
-   On CPUs without write-allocate caches, prefetching destinations will
-ensure individual stores don't go further down the cache hierarchy,
-limiting bandwidth.  Of course for calculations which are slow anyway,
-like `mpn_divrem_1', write-throughs might be fine.
-
-   The distance ahead to prefetch will be determined by memory latency
-versus throughput.  The aim of course is to have data arriving
-continuously, at peak throughput.  Some CPUs have limits on the number
-of fetches or prefetches in progress.
-
-   If a special prefetch instruction doesn't exist then a plain load
-can be used, but in that case care must be taken not to attempt to read
-past the end of an operand, since that might produce a segmentation
-violation.
-
-   Some CPUs or systems have hardware that detects sequential memory
-accesses and initiates suitable cache movements automatically, making
-life easy.
-
-\1f
-File: gmp.info,  Node: Assembly Functional Units,  Next: Assembly Floating Point,  Prev: Assembly Cache Handling,  Up: Assembly Coding
-
-16.8.5 Functional Units
------------------------
-
-When choosing an approach for an assembly loop, consideration is given
-to what operations can execute simultaneously and what throughput can
-thereby be achieved.  In some cases an algorithm can be tweaked to
-accommodate available resources.
-
-   Loop control will generally require a counter and pointer updates,
-costing as much as 5 instructions, plus any delays a branch introduces.
-CPU addressing modes might reduce pointer updates, perhaps by allowing
-just one updating pointer and others expressed as offsets from it, or
-on CISC chips with all addressing done with the loop counter as a
-scaled index.
-
-   The final loop control cost can be amortised by processing several
-limbs in each iteration (*note Assembly Loop Unrolling::).  This at
-least ensures loop control isn't a big fraction the work done.
-
-   Memory throughput is always a limit.  If perhaps only one load or
-one store can be done per cycle then 3 cycles/limb will the top speed
-for "binary" operations like `mpn_add_n', and any code achieving that
-is optimal.
-
-   Integer resources can be freed up by having the loop counter in a
-float register, or by pressing the float units into use for some
-multiplying, perhaps doing every second limb on the float side (*note
-Assembly Floating Point::).
-
-   Float resources can be freed up by doing carry propagation on the
-integer side, or even by doing integer to float conversions in integers
-using bit twiddling.
-
-\1f
-File: gmp.info,  Node: Assembly Floating Point,  Next: Assembly SIMD Instructions,  Prev: Assembly Functional Units,  Up: Assembly Coding
-
-16.8.6 Floating Point
----------------------
-
-Floating point arithmetic is used in GMP for multiplications on CPUs
-with poor integer multipliers.  It's mostly useful for `mpn_mul_1',
-`mpn_addmul_1' and `mpn_submul_1' on 64-bit machines, and
-`mpn_mul_basecase' on both 32-bit and 64-bit machines.
-
-   With IEEE 53-bit double precision floats, integer multiplications
-producing up to 53 bits will give exact results.  Breaking a 64x64
-multiplication into eight 16x32->48 bit pieces is convenient.  With
-some care though six 21x32->53 bit products can be used, if one of the
-lower two 21-bit pieces also uses the sign bit.
-
-   For the `mpn_mul_1' family of functions on a 64-bit machine, the
-invariant single limb is split at the start, into 3 or 4 pieces.
-Inside the loop, the bignum operand is split into 32-bit pieces.  Fast
-conversion of these unsigned 32-bit pieces to floating point is highly
-machine-dependent.  In some cases, reading the data into the integer
-unit, zero-extending to 64-bits, then transferring to the floating
-point unit back via memory is the only option.
-
-   Converting partial products back to 64-bit limbs is usually best
-done as a signed conversion.  Since all values are smaller than 2^53,
-signed and unsigned are the same, but most processors lack unsigned
-conversions.
-
-
-
-   Here is a diagram showing 16x32 bit products for an `mpn_mul_1' or
-`mpn_addmul_1' with a 64-bit limb.  The single limb operand V is split
-into four 16-bit parts.  The multi-limb operand U is split in the loop
-into two 32-bit parts.
-
-                     +---+---+---+---+
-                     |v48|v32|v16|v00|    V operand
-                     +---+---+---+---+
-
-                     +-------+---+---+
-                 x   |  u32  |  u00  |    U operand (one limb)
-                     +---------------+
-
-     ---------------------------------
-
-                         +-----------+
-                         | u00 x v00 |    p00    48-bit products
-                         +-----------+
-                     +-----------+
-                     | u00 x v16 |        p16
-                     +-----------+
-                 +-----------+
-                 | u00 x v32 |            p32
-                 +-----------+
-             +-----------+
-             | u00 x v48 |                p48
-             +-----------+
-                 +-----------+
-                 | u32 x v00 |            r32
-                 +-----------+
-             +-----------+
-             | u32 x v16 |                r48
-             +-----------+
-         +-----------+
-         | u32 x v32 |                    r64
-         +-----------+
-     +-----------+
-     | u32 x v48 |                        r80
-     +-----------+
-
-   p32 and r32 can be summed using floating-point addition, and
-likewise p48 and r48.  p00 and p16 can be summed with r64 and r80 from
-the previous iteration.
-
-   For each loop then, four 49-bit quantities are transferred to the
-integer unit, aligned as follows,
-
-     |-----64bits----|-----64bits----|
-                        +------------+
-                        | p00 + r64' |    i00
-                        +------------+
-                    +------------+
-                    | p16 + r80' |        i16
-                    +------------+
-                +------------+
-                | p32 + r32  |            i32
-                +------------+
-            +------------+
-            | p48 + r48  |                i48
-            +------------+
-
-   The challenge then is to sum these efficiently and add in a carry
-limb, generating a low 64-bit result limb and a high 33-bit carry limb
-(i48 extends 33 bits into the high half).
-
-\1f
-File: gmp.info,  Node: Assembly SIMD Instructions,  Next: Assembly Software Pipelining,  Prev: Assembly Floating Point,  Up: Assembly Coding
-
-16.8.7 SIMD Instructions
-------------------------
-
-The single-instruction multiple-data support in current microprocessors
-is aimed at signal processing algorithms where each data point can be
-treated more or less independently.  There's generally not much support
-for propagating the sort of carries that arise in GMP.
-
-   SIMD multiplications of say four 16x16 bit multiplies only do as much
-work as one 32x32 from GMP's point of view, and need some shifts and
-adds besides.  But of course if say the SIMD form is fully pipelined
-and uses less instruction decoding then it may still be worthwhile.
-
-   On the x86 chips, MMX has so far found a use in `mpn_rshift' and
-`mpn_lshift', and is used in a special case for 16-bit multipliers in
-the P55 `mpn_mul_1'.  SSE2 is used for Pentium 4 `mpn_mul_1',
-`mpn_addmul_1', and `mpn_submul_1'.
-
-\1f
-File: gmp.info,  Node: Assembly Software Pipelining,  Next: Assembly Loop Unrolling,  Prev: Assembly SIMD Instructions,  Up: Assembly Coding
-
-16.8.8 Software Pipelining
---------------------------
-
-Software pipelining consists of scheduling instructions around the
-branch point in a loop.  For example a loop might issue a load not for
-use in the present iteration but the next, thereby allowing extra
-cycles for the data to arrive from memory.
-
-   Naturally this is wanted only when doing things like loads or
-multiplies that take several cycles to complete, and only where a CPU
-has multiple functional units so that other work can be done in the
-meantime.
-
-   A pipeline with several stages will have a data value in progress at
-each stage and each loop iteration moves them along one stage.  This is
-like juggling.
-
-   If the latency of some instruction is greater than the loop time
-then it will be necessary to unroll, so one register has a result ready
-to use while another (or multiple others) are still in progress.
-(*note Assembly Loop Unrolling::).
-
-\1f
-File: gmp.info,  Node: Assembly Loop Unrolling,  Next: Assembly Writing Guide,  Prev: Assembly Software Pipelining,  Up: Assembly Coding
-
-16.8.9 Loop Unrolling
----------------------
-
-Loop unrolling consists of replicating code so that several limbs are
-processed in each loop.  At a minimum this reduces loop overheads by a
-corresponding factor, but it can also allow better register usage, for
-example alternately using one register combination and then another.
-Judicious use of `m4' macros can help avoid lots of duplication in the
-source code.
-
-   Any amount of unrolling can be handled with a loop counter that's
-decremented by N each time, stopping when the remaining count is less
-than the further N the loop will process.  Or by subtracting N at the
-start, the termination condition becomes when the counter C is less
-than 0 (and the count of remaining limbs is C+N).
-
-   Alternately for a power of 2 unroll the loop count and remainder can
-be established with a shift and mask.  This is convenient if also
-making a computed jump into the middle of a large loop.
-
-   The limbs not a multiple of the unrolling can be handled in various
-ways, for example
-
-   * A simple loop at the end (or the start) to process the excess.
-     Care will be wanted that it isn't too much slower than the
-     unrolled part.
-
-   * A set of binary tests, for example after an 8-limb unrolling, test
-     for 4 more limbs to process, then a further 2 more or not, and
-     finally 1 more or not.  This will probably take more code space
-     than a simple loop.
-
-   * A `switch' statement, providing separate code for each possible
-     excess, for example an 8-limb unrolling would have separate code
-     for 0 remaining, 1 remaining, etc, up to 7 remaining.  This might
-     take a lot of code, but may be the best way to optimize all cases
-     in combination with a deep pipelined loop.
-
-   * A computed jump into the middle of the loop, thus making the first
-     iteration handle the excess.  This should make times smoothly
-     increase with size, which is attractive, but setups for the jump
-     and adjustments for pointers can be tricky and could become quite
-     difficult in combination with deep pipelining.
-
-\1f
-File: gmp.info,  Node: Assembly Writing Guide,  Prev: Assembly Loop Unrolling,  Up: Assembly Coding
-
-16.8.10 Writing Guide
----------------------
-
-This is a guide to writing software pipelined loops for processing limb
-vectors in assembly.
-
-   First determine the algorithm and which instructions are needed.
-Code it without unrolling or scheduling, to make sure it works.  On a
-3-operand CPU try to write each new value to a new register, this will
-greatly simplify later steps.
-
-   Then note for each instruction the functional unit and/or issue port
-requirements.  If an instruction can use either of two units, like U0
-or U1 then make a category "U0/U1".  Count the total using each unit
-(or combined unit), and count all instructions.
-
-   Figure out from those counts the best possible loop time.  The goal
-will be to find a perfect schedule where instruction latencies are
-completely hidden.  The total instruction count might be the limiting
-factor, or perhaps a particular functional unit.  It might be possible
-to tweak the instructions to help the limiting factor.
-
-   Suppose the loop time is N, then make N issue buckets, with the
-final loop branch at the end of the last.  Now fill the buckets with
-dummy instructions using the functional units desired.  Run this to
-make sure the intended speed is reached.
-
-   Now replace the dummy instructions with the real instructions from
-the slow but correct loop you started with.  The first will typically
-be a load instruction.  Then the instruction using that value is placed
-in a bucket an appropriate distance down.  Run the loop again, to check
-it still runs at target speed.
-
-   Keep placing instructions, frequently measuring the loop.  After a
-few you will need to wrap around from the last bucket back to the top
-of the loop.  If you used the new-register for new-value strategy above
-then there will be no register conflicts.  If not then take care not to
-clobber something already in use.  Changing registers at this time is
-very error prone.
-
-   The loop will overlap two or more of the original loop iterations,
-and the computation of one vector element result will be started in one
-iteration of the new loop, and completed one or several iterations
-later.
-
-   The final step is to create feed-in and wind-down code for the loop.
-A good way to do this is to make a copy (or copies) of the loop at the
-start and delete those instructions which don't have valid antecedents,
-and at the end replicate and delete those whose results are unwanted
-(including any further loads).
-
-   The loop will have a minimum number of limbs loaded and processed,
-so the feed-in code must test if the request size is smaller and skip
-either to a suitable part of the wind-down or to special code for small
-sizes.
-
-\1f
-File: gmp.info,  Node: Internals,  Next: Contributors,  Prev: Algorithms,  Up: Top
-
-17 Internals
-************
-
-*This chapter is provided only for informational purposes and the
-various internals described here may change in future GMP releases.
-Applications expecting to be compatible with future releases should use
-only the documented interfaces described in previous chapters.*
-
-* Menu:
-
-* Integer Internals::
-* Rational Internals::
-* Float Internals::
-* Raw Output Internals::
-* C++ Interface Internals::
-
-\1f
-File: gmp.info,  Node: Integer Internals,  Next: Rational Internals,  Prev: Internals,  Up: Internals
-
-17.1 Integer Internals
-======================
-
-`mpz_t' variables represent integers using sign and magnitude, in space
-dynamically allocated and reallocated.  The fields are as follows.
-
-`_mp_size'
-     The number of limbs, or the negative of that when representing a
-     negative integer.  Zero is represented by `_mp_size' set to zero,
-     in which case the `_mp_d' data is unused.
-
-`_mp_d'
-     A pointer to an array of limbs which is the magnitude.  These are
-     stored "little endian" as per the `mpn' functions, so `_mp_d[0]'
-     is the least significant limb and `_mp_d[ABS(_mp_size)-1]' is the
-     most significant.  Whenever `_mp_size' is non-zero, the most
-     significant limb is non-zero.
-
-     Currently there's always at least one limb allocated, so for
-     instance `mpz_set_ui' never needs to reallocate, and `mpz_get_ui'
-     can fetch `_mp_d[0]' unconditionally (though its value is then
-     only wanted if `_mp_size' is non-zero).
-
-`_mp_alloc'
-     `_mp_alloc' is the number of limbs currently allocated at `_mp_d',
-     and naturally `_mp_alloc >= ABS(_mp_size)'.  When an `mpz' routine
-     is about to (or might be about to) increase `_mp_size', it checks
-     `_mp_alloc' to see whether there's enough space, and reallocates
-     if not.  `MPZ_REALLOC' is generally used for this.
-
-   The various bitwise logical functions like `mpz_and' behave as if
-negative values were twos complement.  But sign and magnitude is always
-used internally, and necessary adjustments are made during the
-calculations.  Sometimes this isn't pretty, but sign and magnitude are
-best for other routines.
-
-   Some internal temporary variables are setup with `MPZ_TMP_INIT' and
-these have `_mp_d' space obtained from `TMP_ALLOC' rather than the
-memory allocation functions.  Care is taken to ensure that these are
-big enough that no reallocation is necessary (since it would have
-unpredictable consequences).
-
-   `_mp_size' and `_mp_alloc' are `int', although `mp_size_t' is
-usually a `long'.  This is done to make the fields just 32 bits on some
-64 bits systems, thereby saving a few bytes of data space but still
-providing plenty of range.
-
-\1f
-File: gmp.info,  Node: Rational Internals,  Next: Float Internals,  Prev: Integer Internals,  Up: Internals
-
-17.2 Rational Internals
-=======================
-
-`mpq_t' variables represent rationals using an `mpz_t' numerator and
-denominator (*note Integer Internals::).
-
-   The canonical form adopted is denominator positive (and non-zero),
-no common factors between numerator and denominator, and zero uniquely
-represented as 0/1.
-
-   It's believed that casting out common factors at each stage of a
-calculation is best in general.  A GCD is an O(N^2) operation so it's
-better to do a few small ones immediately than to delay and have to do
-a big one later.  Knowing the numerator and denominator have no common
-factors can be used for example in `mpq_mul' to make only two cross
-GCDs necessary, not four.
-
-   This general approach to common factors is badly sub-optimal in the
-presence of simple factorizations or little prospect for cancellation,
-but GMP has no way to know when this will occur.  As per *Note
-Efficiency::, that's left to applications.  The `mpq_t' framework might
-still suit, with `mpq_numref' and `mpq_denref' for direct access to the
-numerator and denominator, or of course `mpz_t' variables can be used
-directly.
-
-\1f
-File: gmp.info,  Node: Float Internals,  Next: Raw Output Internals,  Prev: Rational Internals,  Up: Internals
-
-17.3 Float Internals
-====================
-
-Efficient calculation is the primary aim of GMP floats and the use of
-whole limbs and simple rounding facilitates this.
-
-   `mpf_t' floats have a variable precision mantissa and a single
-machine word signed exponent.  The mantissa is represented using sign
-and magnitude.
-
-        most                   least
-     significant            significant
-        limb                   limb
-
-                                 _mp_d
-      |---- _mp_exp --->           |
-       _____ _____ _____ _____ _____
-      |_____|_____|_____|_____|_____|
-                        . <------------ radix point
-
-       <-------- _mp_size --------->
-
-The fields are as follows.
-
-`_mp_size'
-     The number of limbs currently in use, or the negative of that when
-     representing a negative value.  Zero is represented by `_mp_size'
-     and `_mp_exp' both set to zero, and in that case the `_mp_d' data
-     is unused.  (In the future `_mp_exp' might be undefined when
-     representing zero.)
-
-`_mp_prec'
-     The precision of the mantissa, in limbs.  In any calculation the
-     aim is to produce `_mp_prec' limbs of result (the most significant
-     being non-zero).
-
-`_mp_d'
-     A pointer to the array of limbs which is the absolute value of the
-     mantissa.  These are stored "little endian" as per the `mpn'
-     functions, so `_mp_d[0]' is the least significant limb and
-     `_mp_d[ABS(_mp_size)-1]' the most significant.
-
-     The most significant limb is always non-zero, but there are no
-     other restrictions on its value, in particular the highest 1 bit
-     can be anywhere within the limb.
-
-     `_mp_prec+1' limbs are allocated to `_mp_d', the extra limb being
-     for convenience (see below).  There are no reallocations during a
-     calculation, only in a change of precision with `mpf_set_prec'.
-
-`_mp_exp'
-     The exponent, in limbs, determining the location of the implied
-     radix point.  Zero means the radix point is just above the most
-     significant limb.  Positive values mean a radix point offset
-     towards the lower limbs and hence a value >= 1, as for example in
-     the diagram above.  Negative exponents mean a radix point further
-     above the highest limb.
-
-     Naturally the exponent can be any value, it doesn't have to fall
-     within the limbs as the diagram shows, it can be a long way above
-     or a long way below.  Limbs other than those included in the
-     `{_mp_d,_mp_size}' data are treated as zero.
-
-   The `_mp_size' and `_mp_prec' fields are `int', although the
-`mp_size_t' type is usually a `long'.  The `_mp_exp' field is usually
-`long'.  This is done to make some fields just 32 bits on some 64 bits
-systems, thereby saving a few bytes of data space but still providing
-plenty of precision and a very large range.
-
-
-The following various points should be noted.
-
-Low Zeros
-     The least significant limbs `_mp_d[0]' etc can be zero, though
-     such low zeros can always be ignored.  Routines likely to produce
-     low zeros check and avoid them to save time in subsequent
-     calculations, but for most routines they're quite unlikely and
-     aren't checked.
-
-Mantissa Size Range
-     The `_mp_size' count of limbs in use can be less than `_mp_prec' if
-     the value can be represented in less.  This means low precision
-     values or small integers stored in a high precision `mpf_t' can
-     still be operated on efficiently.
-
-     `_mp_size' can also be greater than `_mp_prec'.  Firstly a value is
-     allowed to use all of the `_mp_prec+1' limbs available at `_mp_d',
-     and secondly when `mpf_set_prec_raw' lowers `_mp_prec' it leaves
-     `_mp_size' unchanged and so the size can be arbitrarily bigger than
-     `_mp_prec'.
-
-Rounding
-     All rounding is done on limb boundaries.  Calculating `_mp_prec'
-     limbs with the high non-zero will ensure the application requested
-     minimum precision is obtained.
-
-     The use of simple "trunc" rounding towards zero is efficient,
-     since there's no need to examine extra limbs and increment or
-     decrement.
-
-Bit Shifts
-     Since the exponent is in limbs, there are no bit shifts in basic
-     operations like `mpf_add' and `mpf_mul'.  When differing exponents
-     are encountered all that's needed is to adjust pointers to line up
-     the relevant limbs.
-
-     Of course `mpf_mul_2exp' and `mpf_div_2exp' will require bit
-     shifts, but the choice is between an exponent in limbs which
-     requires shifts there, or one in bits which requires them almost
-     everywhere else.
-
-Use of `_mp_prec+1' Limbs
-     The extra limb on `_mp_d' (`_mp_prec+1' rather than just
-     `_mp_prec') helps when an `mpf' routine might get a carry from its
-     operation.  `mpf_add' for instance will do an `mpn_add' of
-     `_mp_prec' limbs.  If there's no carry then that's the result, but
-     if there is a carry then it's stored in the extra limb of space and
-     `_mp_size' becomes `_mp_prec+1'.
-
-     Whenever `_mp_prec+1' limbs are held in a variable, the low limb
-     is not needed for the intended precision, only the `_mp_prec' high
-     limbs.  But zeroing it out or moving the rest down is unnecessary.
-     Subsequent routines reading the value will simply take the high
-     limbs they need, and this will be `_mp_prec' if their target has
-     that same precision.  This is no more than a pointer adjustment,
-     and must be checked anyway since the destination precision can be
-     different from the sources.
-
-     Copy functions like `mpf_set' will retain a full `_mp_prec+1' limbs
-     if available.  This ensures that a variable which has `_mp_size'
-     equal to `_mp_prec+1' will get its full exact value copied.
-     Strictly speaking this is unnecessary since only `_mp_prec' limbs
-     are needed for the application's requested precision, but it's
-     considered that an `mpf_set' from one variable into another of the
-     same precision ought to produce an exact copy.
-
-Application Precisions
-     `__GMPF_BITS_TO_PREC' converts an application requested precision
-     to an `_mp_prec'.  The value in bits is rounded up to a whole limb
-     then an extra limb is added since the most significant limb of
-     `_mp_d' is only non-zero and therefore might contain only one bit.
-
-     `__GMPF_PREC_TO_BITS' does the reverse conversion, and removes the
-     extra limb from `_mp_prec' before converting to bits.  The net
-     effect of reading back with `mpf_get_prec' is simply the precision
-     rounded up to a multiple of `mp_bits_per_limb'.
-
-     Note that the extra limb added here for the high only being
-     non-zero is in addition to the extra limb allocated to `_mp_d'.
-     For example with a 32-bit limb, an application request for 250
-     bits will be rounded up to 8 limbs, then an extra added for the
-     high being only non-zero, giving an `_mp_prec' of 9.  `_mp_d' then
-     gets 10 limbs allocated.  Reading back with `mpf_get_prec' will
-     take `_mp_prec' subtract 1 limb and multiply by 32, giving 256
-     bits.
-
-     Strictly speaking, the fact the high limb has at least one bit
-     means that a float with, say, 3 limbs of 32-bits each will be
-     holding at least 65 bits, but for the purposes of `mpf_t' it's
-     considered simply to be 64 bits, a nice multiple of the limb size.
-
-\1f
-File: gmp.info,  Node: Raw Output Internals,  Next: C++ Interface Internals,  Prev: Float Internals,  Up: Internals
-
-17.4 Raw Output Internals
-=========================
-
-`mpz_out_raw' uses the following format.
-
-     +------+------------------------+
-     | size |       data bytes       |
-     +------+------------------------+
-
-   The size is 4 bytes written most significant byte first, being the
-number of subsequent data bytes, or the twos complement negative of
-that when a negative integer is represented.  The data bytes are the
-absolute value of the integer, written most significant byte first.
-
-   The most significant data byte is always non-zero, so the output is
-the same on all systems, irrespective of limb size.
-
-   In GMP 1, leading zero bytes were written to pad the data bytes to a
-multiple of the limb size.  `mpz_inp_raw' will still accept this, for
-compatibility.
-
-   The use of "big endian" for both the size and data fields is
-deliberate, it makes the data easy to read in a hex dump of a file.
-Unfortunately it also means that the limb data must be reversed when
-reading or writing, so neither a big endian nor little endian system
-can just read and write `_mp_d'.
-
-\1f
-File: gmp.info,  Node: C++ Interface Internals,  Prev: Raw Output Internals,  Up: Internals
-
-17.5 C++ Interface Internals
-============================
-
-A system of expression templates is used to ensure something like
-`a=b+c' turns into a simple call to `mpz_add' etc.  For `mpf_class' the
-scheme also ensures the precision of the final destination is used for
-any temporaries within a statement like `f=w*x+y*z'.  These are
-important features which a naive implementation cannot provide.
-
-   A simplified description of the scheme follows.  The true scheme is
-complicated by the fact that expressions have different return types.
-For detailed information, refer to the source code.
-
-   To perform an operation, say, addition, we first define a "function
-object" evaluating it,
-
-     struct __gmp_binary_plus
-     {
-       static void eval(mpf_t f, mpf_t g, mpf_t h) { mpf_add(f, g, h); }
-     };
-
-And an "additive expression" object,
-
-     __gmp_expr<__gmp_binary_expr<mpf_class, mpf_class, __gmp_binary_plus> >
-     operator+(const mpf_class &f, const mpf_class &g)
-     {
-       return __gmp_expr
-         <__gmp_binary_expr<mpf_class, mpf_class, __gmp_binary_plus> >(f, g);
-     }
-
-   The seemingly redundant `__gmp_expr<__gmp_binary_expr<...>>' is used
-to encapsulate any possible kind of expression into a single template
-type.  In fact even `mpf_class' etc are `typedef' specializations of
-`__gmp_expr'.
-
-   Next we define assignment of `__gmp_expr' to `mpf_class'.
-
-     template <class T>
-     mpf_class & mpf_class::operator=(const __gmp_expr<T> &expr)
-     {
-       expr.eval(this->get_mpf_t(), this->precision());
-       return *this;
-     }
-
-     template <class Op>
-     void __gmp_expr<__gmp_binary_expr<mpf_class, mpf_class, Op> >::eval
-     (mpf_t f, mp_bitcnt_t precision)
-     {
-       Op::eval(f, expr.val1.get_mpf_t(), expr.val2.get_mpf_t());
-     }
-
-   where `expr.val1' and `expr.val2' are references to the expression's
-operands (here `expr' is the `__gmp_binary_expr' stored within the
-`__gmp_expr').
-
-   This way, the expression is actually evaluated only at the time of
-assignment, when the required precision (that of `f') is known.
-Furthermore the target `mpf_t' is now available, thus we can call
-`mpf_add' directly with `f' as the output argument.
-
-   Compound expressions are handled by defining operators taking
-subexpressions as their arguments, like this:
-
-     template <class T, class U>
-     __gmp_expr
-     <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, __gmp_binary_plus> >
-     operator+(const __gmp_expr<T> &expr1, const __gmp_expr<U> &expr2)
-     {
-       return __gmp_expr
-         <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, __gmp_binary_plus> >
-         (expr1, expr2);
-     }
-
-   And the corresponding specializations of `__gmp_expr::eval':
-
-     template <class T, class U, class Op>
-     void __gmp_expr
-     <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, Op> >::eval
-     (mpf_t f, mp_bitcnt_t precision)
-     {
-       // declare two temporaries
-       mpf_class temp1(expr.val1, precision), temp2(expr.val2, precision);
-       Op::eval(f, temp1.get_mpf_t(), temp2.get_mpf_t());
-     }
-
-   The expression is thus recursively evaluated to any level of
-complexity and all subexpressions are evaluated to the precision of `f'.
-
-\1f
-File: gmp.info,  Node: Contributors,  Next: References,  Prev: Internals,  Up: Top
-
-Appendix A Contributors
-***********************
-
-Torbjo"rn Granlund wrote the original GMP library and is still the main
-developer.  Code not explicitly attributed to others, was contributed by
-Torbjo"rn.  Several other individuals and organizations have contributed
-GMP.  Here is a list in chronological order on first contribution:
-
-   Gunnar Sjo"din and Hans Riesel helped with mathematical problems in
-early versions of the library.
-
-   Richard Stallman helped with the interface design and revised the
-first version of this manual.
-
-   Brian Beuning and Doug Lea helped with testing of early versions of
-the library and made creative suggestions.
-
-   John Amanatides of York University in Canada contributed the function
-`mpz_probab_prime_p'.
-
-   Paul Zimmermann wrote the REDC-based mpz_powm code, the
-Scho"nhage-Strassen FFT multiply code, and the Karatsuba square root
-code.  He also improved the Toom3 code for GMP 4.2.  Paul sparked the
-development of GMP 2, with his comparisons between bignum packages.
-The ECMNET project Paul is organizing was a driving force behind many
-of the optimizations in GMP 3.  Paul also wrote the new GMP 4.3 nth
-root code (with Torbjo"rn).
-
-   Ken Weber (Kent State University, Universidade Federal do Rio Grande
-do Sul) contributed now defunct versions of `mpz_gcd', `mpz_divexact',
-`mpn_gcd', and `mpn_bdivmod', partially supported by CNPq (Brazil)
-grant 301314194-2.
-
-   Per Bothner of Cygnus Support helped to set up GMP to use Cygnus'
-configure.  He has also made valuable suggestions and tested numerous
-intermediary releases.
-
-   Joachim Hollman was involved in the design of the `mpf' interface,
-and in the `mpz' design revisions for version 2.
-
-   Bennet Yee contributed the initial versions of `mpz_jacobi' and
-`mpz_legendre'.
-
-   Andreas Schwab contributed the files `mpn/m68k/lshift.S' and
-`mpn/m68k/rshift.S' (now in `.asm' form).
-
-   Robert Harley of Inria, France and David Seal of ARM, England,
-suggested clever improvements for population count.  Robert also wrote
-highly optimized Karatsuba and 3-way Toom multiplication functions for
-GMP 3, and contributed the ARM assembly code.
-
-   Torsten Ekedahl of the Mathematical department of Stockholm
-University provided significant inspiration during several phases of
-the GMP development.  His mathematical expertise helped improve several
-algorithms.
-
-   Linus Nordberg wrote the new configure system based on autoconf and
-implemented the new random functions.
-
-   Kevin Ryde worked on a large number of things: optimized x86 code,
-m4 asm macros, parameter tuning, speed measuring, the configure system,
-function inlining, divisibility tests, bit scanning, Jacobi symbols,
-Fibonacci and Lucas number functions, printf and scanf functions, perl
-interface, demo expression parser, the algorithms chapter in the
-manual, `gmpasm-mode.el', and various miscellaneous improvements
-elsewhere.
-
-   Kent Boortz made the Mac OS 9 port.
-
-   Steve Root helped write the optimized alpha 21264 assembly code.
-
-   Gerardo Ballabio wrote the `gmpxx.h' C++ class interface and the C++
-`istream' input routines.
-
-   Jason Moxham rewrote `mpz_fac_ui'.
-
-   Pedro Gimeno implemented the Mersenne Twister and made other random
-number improvements.
-
-   Niels Mo"ller wrote the sub-quadratic GCD and extended GCD code, the
-quadratic Hensel division code, and (with Torbjo"rn) the new divide and
-conquer division code for GMP 4.3.  Niels also helped implement the new
-Toom multiply code for GMP 4.3 and implemented helper functions to
-simplify Toom evaluations for GMP 5.0.  He wrote the original version
-of mpn_mulmod_bnm1.
-
-   Alberto Zanoni and Marco Bodrato suggested the unbalanced multiply
-strategy, and found the optimal strategies for evaluation and
-interpolation in Toom multiplication.
-
-   Marco Bodrato helped implement the new Toom multiply code for GMP
-4.3 and implemented most of the new Toom multiply and squaring code for
-5.0.  He is the main author of the current mpn_mulmod_bnm1 and
-mpn_mullo_n.  Marco also wrote the functions mpn_invert and
-mpn_invertappr.
-
-   David Harvey suggested the internal function `mpn_bdiv_dbm1',
-implementing division relevant to Toom multiplication.  He also worked
-on fast assembly sequences, in particular on a fast AMD64
-`mpn_mul_basecase'.
-
-   Martin Boij wrote `mpn_perfect_power_p'.
-
-   (This list is chronological, not ordered after significance.  If you
-have contributed to GMP but are not listed above, please tell
-<gmp-devel@gmplib.org> about the omission!)
-
-   The development of floating point functions of GNU MP 2, were
-supported in part by the ESPRIT-BRA (Basic Research Activities) 6846
-project POSSO (POlynomial System SOlving).
-
-   The development of GMP 2, 3, and 4 was supported in part by the IDA
-Center for Computing Sciences.
-
-   Thanks go to Hans Thorsen for donating an SGI system for the GMP
-test system environment.
-
-\1f
-File: gmp.info,  Node: References,  Next: GNU Free Documentation License,  Prev: Contributors,  Up: Top
-
-Appendix B References
-*********************
-
-B.1 Books
-=========
-
-   * Jonathan M. Borwein and Peter B. Borwein, "Pi and the AGM: A Study
-     in Analytic Number Theory and Computational Complexity", Wiley,
-     1998.
-
-   * Richard Crandall and Carl Pomerance, "Prime Numbers: A
-     Computational Perspective", 2nd edition, Springer-Verlag, 2005.
-     `http://math.dartmouth.edu/~carlp/'
-
-   * Henri Cohen, "A Course in Computational Algebraic Number Theory",
-     Graduate Texts in Mathematics number 138, Springer-Verlag, 1993.
-     `http://www.math.u-bordeaux.fr/~cohen/'
-
-   * Donald E. Knuth, "The Art of Computer Programming", volume 2,
-     "Seminumerical Algorithms", 3rd edition, Addison-Wesley, 1998.
-     `http://www-cs-faculty.stanford.edu/~knuth/taocp.html'
-
-   * John D. Lipson, "Elements of Algebra and Algebraic Computing", The
-     Benjamin Cummings Publishing Company Inc, 1981.
-
-   * Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone,
-     "Handbook of Applied Cryptography",
-     `http://www.cacr.math.uwaterloo.ca/hac/'
-
-   * Richard M. Stallman and the GCC Developer Community, "Using the
-     GNU Compiler Collection", Free Software Foundation, 2008,
-     available online `http://gcc.gnu.org/onlinedocs/', and in the GCC
-     package `ftp://ftp.gnu.org/gnu/gcc/'
-
-B.2 Papers
-==========
-
-   * Yves Bertot, Nicolas Magaud and Paul Zimmermann, "A Proof of GMP
-     Square Root", Journal of Automated Reasoning, volume 29, 2002, pp.
-     225-252.  Also available online as INRIA Research Report 4475,
-     June 2001, `http://www.inria.fr/rrrt/rr-4475.html'
-
-   * Christoph Burnikel and Joachim Ziegler, "Fast Recursive Division",
-     Max-Planck-Institut fuer Informatik Research Report MPI-I-98-1-022,
-     `http://data.mpi-sb.mpg.de/internet/reports.nsf/NumberView/1998-1-022'
-
-   * Torbjo"rn Granlund and Peter L. Montgomery, "Division by Invariant
-     Integers using Multiplication", in Proceedings of the SIGPLAN
-     PLDI'94 Conference, June 1994.  Also available
-     `ftp://ftp.cwi.nl/pub/pmontgom/divcnst.psa4.gz' (and .psl.gz).
-
-   * Niels Mo"ller and Torbjo"rn Granlund, "Improved division by
-     invariant integers", to appear.
-
-   * Torbjo"rn Granlund and Niels Mo"ller, "Division of integers large
-     and small", to appear.
-
-   * Tudor Jebelean, "An algorithm for exact division", Journal of
-     Symbolic Computation, volume 15, 1993, pp. 169-180.  Research
-     report version available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1992/92-35.ps.gz'
-
-   * Tudor Jebelean, "Exact Division with Karatsuba Complexity -
-     Extended Abstract", RISC-Linz technical report 96-31,
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1996/96-31.ps.gz'
-
-   * Tudor Jebelean, "Practical Integer Division with Karatsuba
-     Complexity", ISSAC 97, pp. 339-341.  Technical report available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1996/96-29.ps.gz'
-
-   * Tudor Jebelean, "A Generalization of the Binary GCD Algorithm",
-     ISSAC 93, pp. 111-116.  Technical report version available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1993/93-01.ps.gz'
-
-   * Tudor Jebelean, "A Double-Digit Lehmer-Euclid Algorithm for
-     Finding the GCD of Long Integers", Journal of Symbolic
-     Computation, volume 19, 1995, pp. 145-157.  Technical report
-     version also available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1992/92-69.ps.gz'
-
-   * Werner Krandick and Tudor Jebelean, "Bidirectional Exact Integer
-     Division", Journal of Symbolic Computation, volume 21, 1996, pp.
-     441-455.  Early technical report version also available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1994/94-50.ps.gz'
-
-   * Makoto Matsumoto and Takuji Nishimura, "Mersenne Twister: A
-     623-dimensionally equidistributed uniform pseudorandom number
-     generator", ACM Transactions on Modelling and Computer Simulation,
-     volume 8, January 1998, pp. 3-30.  Available online
-     `http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/mt.ps.gz'
-     (or .pdf)
-
-   * R. Moenck and A. Borodin, "Fast Modular Transforms via Division",
-     Proceedings of the 13th Annual IEEE Symposium on Switching and
-     Automata Theory, October 1972, pp. 90-96.  Reprinted as "Fast
-     Modular Transforms", Journal of Computer and System Sciences,
-     volume 8, number 3, June 1974, pp. 366-386.
-
-   * Niels Mo"ller, "On Scho"nhage's algorithm and subquadratic integer
-     GCD   computation", in Mathematics of Computation, volume 77,
-     January 2008, pp.    589-607.
-
-   * Peter L. Montgomery, "Modular Multiplication Without Trial
-     Division", in Mathematics of Computation, volume 44, number 170,
-     April 1985.
-
-   * Arnold Scho"nhage and Volker Strassen, "Schnelle Multiplikation
-     grosser Zahlen", Computing 7, 1971, pp. 281-292.
-
-   * Kenneth Weber, "The accelerated integer GCD algorithm", ACM
-     Transactions on Mathematical Software, volume 21, number 1, March
-     1995, pp. 111-122.
-
-   * Paul Zimmermann, "Karatsuba Square Root", INRIA Research Report
-     3805, November 1999, `http://www.inria.fr/rrrt/rr-3805.html'
-
-   * Paul Zimmermann, "A Proof of GMP Fast Division and Square Root
-     Implementations",
-     `http://www.loria.fr/~zimmerma/papers/proof-div-sqrt.ps.gz'
-
-   * Dan Zuras, "On Squaring and Multiplying Large Integers", ARITH-11:
-     IEEE Symposium on Computer Arithmetic, 1993, pp. 260 to 271.
-     Reprinted as "More on Multiplying and Squaring Large Integers",
-     IEEE Transactions on Computers, volume 43, number 8, August 1994,
-     pp. 899-908.
-
-\1f
-File: gmp.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: References,  Up: Top
-
-Appendix C GNU Free Documentation License
-*****************************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     `http://fsf.org/'
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.
-     We recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it
-     can be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You
-     accept the license if you copy, modify or distribute the work in a
-     way requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in
-     the notice that says that the Document is released under this
-     License.  If a section does not fit the above definition of
-     Secondary then it is not allowed to be designated as Invariant.
-     The Document may contain zero Invariant Sections.  If the Document
-     does not identify any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images
-     composed of pixels) generic paint programs or (for drawings) some
-     widely available drawing editor, and that is suitable for input to
-     text formatters or for automatic translation to a variety of
-     formats suitable for input to text formatters.  A copy made in an
-     otherwise Transparent file format whose markup, or absence of
-     markup, has been arranged to thwart or discourage subsequent
-     modification by readers is not Transparent.  An image format is
-     not Transparent if used for any substantial amount of text.  A
-     copy that is not "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and
-     standard-conforming simple HTML, PostScript or PDF designed for
-     human modification.  Examples of transparent image formats include
-     PNG, XCF and JPG.  Opaque formats include proprietary formats that
-     can be read and edited only by proprietary word processors, SGML or
-     XML for which the DTD and/or processing tools are not generally
-     available, and the machine-generated HTML, PostScript or PDF
-     produced by some word processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow
-     the conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the
-     title equally prominent and visible.  You may add other material
-     on the covers in addition.  Copying with changes limited to the
-     covers, as long as they preserve the title of the Document and
-     satisfy these conditions, can be treated as verbatim copying in
-     other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a
-     machine-readable Transparent copy along with each Opaque copy, or
-     state in or with each Opaque copy a computer-network location from
-     which the general network-using public has access to download
-     using public-standard network protocols a complete Transparent
-     copy of the Document, free of added material.  If you use the
-     latter option, you must take reasonably prudent steps, when you
-     begin distribution of Opaque copies in quantity, to ensure that
-     this Transparent copy will remain thus accessible at the stated
-     location until at least one year after the last time you
-     distribute an Opaque copy (directly or through your agents or
-     retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of
-     copies, to give them a chance to provide you with an updated
-     version of the Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with
-     the Modified Version filling the role of the Document, thus
-     licensing distribution and modification of the Modified Version to
-     whoever possesses a copy of it.  In addition, you must do these
-     things in the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of
-          previous versions (which should, if there were any, be listed
-          in the History section of the Document).  You may use the
-          same title as a previous version if the original publisher of
-          that version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on
-          the Title Page.  If there is no section Entitled "History" in
-          the Document, create one stating the title, year, authors,
-          and publisher of the Document as given on its Title Page,
-          then add an item describing the Modified Version as stated in
-          the previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in
-          the "History" section.  You may omit a network location for a
-          work that was published at least four years before the
-          Document itself, or if the original publisher of the version
-          it refers to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the
-          section all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document,
-          unaltered in their text and in their titles.  Section numbers
-          or the equivalent are not considered part of the section
-          titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option
-     designate some or all of these sections as invariant.  To do this,
-     add their titles to the list of Invariant Sections in the Modified
-     Version's license notice.  These titles must be distinct from any
-     other section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end
-     of the list of Cover Texts in the Modified Version.  Only one
-     passage of Front-Cover Text and one of Back-Cover Text may be
-     added by (or through arrangements made by) any one entity.  If the
-     Document already includes a cover text for the same cover,
-     previously added by you or by arrangement made by the same entity
-     you are acting on behalf of, you may not add another; but you may
-     replace the old one, on explicit permission from the previous
-     publisher that added the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination
-     all of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the
-     documents in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow
-     this License in all other respects regarding verbatim copying of
-     that document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of
-     a storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly
-     and finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from
-     you under this License.  If your rights have been terminated and
-     not permanently reinstated, receipt of a copy of some or all of
-     the same material does not give you any rights to use it.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     `http://www.gnu.org/copyleft/'.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If
-     the Document does not specify a version number of this License,
-     you may choose any version ever published (not as a draft) by the
-     Free Software Foundation.  If the Document specifies that a proxy
-     can decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
- 11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts." line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License, to
-permit their use in free software.
-
-\1f
-File: gmp.info,  Node: Concept Index,  Next: Function Index,  Prev: GNU Free Documentation License,  Up: Top
-
-Concept Index
-*************
-
-\0\b[index\0\b]
-* Menu:
-
-* #include:                              Headers and Libraries.
-                                                              (line   6)
-* --build:                               Build Options.       (line  52)
-* --disable-fft:                         Build Options.       (line 317)
-* --disable-shared:                      Build Options.       (line  45)
-* --disable-static:                      Build Options.       (line  45)
-* --enable-alloca:                       Build Options.       (line 278)
-* --enable-assert:                       Build Options.       (line 327)
-* --enable-cxx:                          Build Options.       (line 230)
-* --enable-fat:                          Build Options.       (line 164)
-* --enable-mpbsd:                        Build Options.       (line 322)
-* --enable-profiling <1>:                Profiling.           (line   6)
-* --enable-profiling:                    Build Options.       (line 331)
-* --exec-prefix:                         Build Options.       (line  32)
-* --host:                                Build Options.       (line  66)
-* --prefix:                              Build Options.       (line  32)
-* -finstrument-functions:                Profiling.           (line  66)
-* 2exp functions:                        Efficiency.          (line  43)
-* 68000:                                 Notes for Particular Systems.
-                                                              (line  80)
-* 80x86:                                 Notes for Particular Systems.
-                                                              (line 126)
-* ABI <1>:                               Build Options.       (line 171)
-* ABI:                                   ABI and ISA.         (line   6)
-* About this manual:                     Introduction to GMP. (line  58)
-* AC_CHECK_LIB:                          Autoconf.            (line  11)
-* AIX <1>:                               ABI and ISA.         (line 184)
-* AIX <2>:                               Notes for Particular Systems.
-                                                              (line   7)
-* AIX:                                   ABI and ISA.         (line 169)
-* Algorithms:                            Algorithms.          (line   6)
-* alloca:                                Build Options.       (line 278)
-* Allocation of memory:                  Custom Allocation.   (line   6)
-* AMD64:                                 ABI and ISA.         (line  44)
-* Anonymous FTP of latest version:       Introduction to GMP. (line  38)
-* Application Binary Interface:          ABI and ISA.         (line   6)
-* Arithmetic functions <1>:              Float Arithmetic.    (line   6)
-* Arithmetic functions <2>:              Integer Arithmetic.  (line   6)
-* Arithmetic functions:                  Rational Arithmetic. (line   6)
-* ARM:                                   Notes for Particular Systems.
-                                                              (line  20)
-* Assembly cache handling:               Assembly Cache Handling.
-                                                              (line   6)
-* Assembly carry propagation:            Assembly Carry Propagation.
-                                                              (line   6)
-* Assembly code organisation:            Assembly Code Organisation.
-                                                              (line   6)
-* Assembly coding:                       Assembly Coding.     (line   6)
-* Assembly floating Point:               Assembly Floating Point.
-                                                              (line   6)
-* Assembly loop unrolling:               Assembly Loop Unrolling.
-                                                              (line   6)
-* Assembly SIMD:                         Assembly SIMD Instructions.
-                                                              (line   6)
-* Assembly software pipelining:          Assembly Software Pipelining.
-                                                              (line   6)
-* Assembly writing guide:                Assembly Writing Guide.
-                                                              (line   6)
-* Assertion checking <1>:                Debugging.           (line  79)
-* Assertion checking:                    Build Options.       (line 327)
-* Assignment functions <1>:              Assigning Floats.    (line   6)
-* Assignment functions <2>:              Initializing Rationals.
-                                                              (line   6)
-* Assignment functions <3>:              Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Assignment functions <4>:              Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Assignment functions:                  Assigning Integers.  (line   6)
-* Autoconf:                              Autoconf.            (line   6)
-* Basics:                                GMP Basics.          (line   6)
-* Berkeley MP compatible functions <1>:  Build Options.       (line 322)
-* Berkeley MP compatible functions:      BSD Compatible Functions.
-                                                              (line   6)
-* Binomial coefficient algorithm:        Binomial Coefficients Algorithm.
-                                                              (line   6)
-* Binomial coefficient functions:        Number Theoretic Functions.
-                                                              (line 100)
-* Binutils strip:                        Known Build Problems.
-                                                              (line  28)
-* Bit manipulation functions:            Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Bit scanning functions:                Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* Bit shift left:                        Integer Arithmetic.  (line  35)
-* Bit shift right:                       Integer Division.    (line  53)
-* Bits per limb:                         Useful Macros and Constants.
-                                                              (line   7)
-* BSD MP compatible functions <1>:       Build Options.       (line 322)
-* BSD MP compatible functions:           BSD Compatible Functions.
-                                                              (line   6)
-* Bug reporting:                         Reporting Bugs.      (line   6)
-* Build directory:                       Build Options.       (line  19)
-* Build notes for binary packaging:      Notes for Package Builds.
-                                                              (line   6)
-* Build notes for particular systems:    Notes for Particular Systems.
-                                                              (line   6)
-* Build options:                         Build Options.       (line   6)
-* Build problems known:                  Known Build Problems.
-                                                              (line   6)
-* Build system:                          Build Options.       (line  52)
-* Building GMP:                          Installing GMP.      (line   6)
-* Bus error:                             Debugging.           (line   7)
-* C compiler:                            Build Options.       (line 182)
-* C++ compiler:                          Build Options.       (line 254)
-* C++ interface:                         C++ Class Interface. (line   6)
-* C++ interface internals:               C++ Interface Internals.
-                                                              (line   6)
-* C++ istream input:                     C++ Formatted Input. (line   6)
-* C++ ostream output:                    C++ Formatted Output.
-                                                              (line   6)
-* C++ support:                           Build Options.       (line 230)
-* CC:                                    Build Options.       (line 182)
-* CC_FOR_BUILD:                          Build Options.       (line 217)
-* CFLAGS:                                Build Options.       (line 182)
-* Checker:                               Debugging.           (line 115)
-* checkergcc:                            Debugging.           (line 122)
-* Code organisation:                     Assembly Code Organisation.
-                                                              (line   6)
-* Compaq C++:                            Notes for Particular Systems.
-                                                              (line  25)
-* Comparison functions <1>:              Integer Comparisons. (line   6)
-* Comparison functions <2>:              Comparing Rationals. (line   6)
-* Comparison functions:                  Float Comparison.    (line   6)
-* Compatibility with older versions:     Compatibility with older versions.
-                                                              (line   6)
-* Conditions for copying GNU MP:         Copying.             (line   6)
-* Configuring GMP:                       Installing GMP.      (line   6)
-* Congruence algorithm:                  Exact Remainder.     (line  29)
-* Congruence functions:                  Integer Division.    (line 124)
-* Constants:                             Useful Macros and Constants.
-                                                              (line   6)
-* Contributors:                          Contributors.        (line   6)
-* Conventions for parameters:            Parameter Conventions.
-                                                              (line   6)
-* Conventions for variables:             Variable Conventions.
-                                                              (line   6)
-* Conversion functions <1>:              Converting Integers. (line   6)
-* Conversion functions <2>:              Converting Floats.   (line   6)
-* Conversion functions:                  Rational Conversions.
-                                                              (line   6)
-* Copying conditions:                    Copying.             (line   6)
-* CPPFLAGS:                              Build Options.       (line 208)
-* CPU types <1>:                         Introduction to GMP. (line  24)
-* CPU types:                             Build Options.       (line 108)
-* Cross compiling:                       Build Options.       (line  66)
-* Custom allocation:                     Custom Allocation.   (line   6)
-* CXX:                                   Build Options.       (line 254)
-* CXXFLAGS:                              Build Options.       (line 254)
-* Cygwin:                                Notes for Particular Systems.
-                                                              (line  43)
-* Darwin:                                Known Build Problems.
-                                                              (line  51)
-* Debugging:                             Debugging.           (line   6)
-* Demonstration programs:                Demonstration Programs.
-                                                              (line   6)
-* Digits in an integer:                  Miscellaneous Integer Functions.
-                                                              (line  23)
-* Divisibility algorithm:                Exact Remainder.     (line  29)
-* Divisibility functions:                Integer Division.    (line 124)
-* Divisibility testing:                  Efficiency.          (line  91)
-* Division algorithms:                   Division Algorithms. (line   6)
-* Division functions <1>:                Rational Arithmetic. (line  22)
-* Division functions <2>:                Integer Division.    (line   6)
-* Division functions:                    Float Arithmetic.    (line  33)
-* DJGPP <1>:                             Notes for Particular Systems.
-                                                              (line  43)
-* DJGPP:                                 Known Build Problems.
-                                                              (line  18)
-* DLLs:                                  Notes for Particular Systems.
-                                                              (line  56)
-* DocBook:                               Build Options.       (line 354)
-* Documentation formats:                 Build Options.       (line 347)
-* Documentation license:                 GNU Free Documentation License.
-                                                              (line   6)
-* DVI:                                   Build Options.       (line 350)
-* Efficiency:                            Efficiency.          (line   6)
-* Emacs:                                 Emacs.               (line   6)
-* Exact division functions:              Integer Division.    (line 102)
-* Exact remainder:                       Exact Remainder.     (line   6)
-* Example programs:                      Demonstration Programs.
-                                                              (line   6)
-* Exec prefix:                           Build Options.       (line  32)
-* Execution profiling <1>:               Profiling.           (line   6)
-* Execution profiling:                   Build Options.       (line 331)
-* Exponentiation functions <1>:          Integer Exponentiation.
-                                                              (line   6)
-* Exponentiation functions:              Float Arithmetic.    (line  41)
-* Export:                                Integer Import and Export.
-                                                              (line  45)
-* Expression parsing demo:               Demonstration Programs.
-                                                              (line  18)
-* Extended GCD:                          Number Theoretic Functions.
-                                                              (line  45)
-* Factor removal functions:              Number Theoretic Functions.
-                                                              (line  90)
-* Factorial algorithm:                   Factorial Algorithm. (line   6)
-* Factorial functions:                   Number Theoretic Functions.
-                                                              (line  95)
-* Factorization demo:                    Demonstration Programs.
-                                                              (line  25)
-* Fast Fourier Transform:                FFT Multiplication.  (line   6)
-* Fat binary:                            Build Options.       (line 164)
-* FFT multiplication <1>:                FFT Multiplication.  (line   6)
-* FFT multiplication:                    Build Options.       (line 317)
-* Fibonacci number algorithm:            Fibonacci Numbers Algorithm.
-                                                              (line   6)
-* Fibonacci sequence functions:          Number Theoretic Functions.
-                                                              (line 108)
-* Float arithmetic functions:            Float Arithmetic.    (line   6)
-* Float assignment functions <1>:        Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Float assignment functions:            Assigning Floats.    (line   6)
-* Float comparison functions:            Float Comparison.    (line   6)
-* Float conversion functions:            Converting Floats.   (line   6)
-* Float functions:                       Floating-point Functions.
-                                                              (line   6)
-* Float initialization functions <1>:    Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Float initialization functions:        Initializing Floats. (line   6)
-* Float input and output functions:      I/O of Floats.       (line   6)
-* Float internals:                       Float Internals.     (line   6)
-* Float miscellaneous functions:         Miscellaneous Float Functions.
-                                                              (line   6)
-* Float random number functions:         Miscellaneous Float Functions.
-                                                              (line  27)
-* Float rounding functions:              Miscellaneous Float Functions.
-                                                              (line   9)
-* Float sign tests:                      Float Comparison.    (line  33)
-* Floating point mode:                   Notes for Particular Systems.
-                                                              (line  34)
-* Floating-point functions:              Floating-point Functions.
-                                                              (line   6)
-* Floating-point number:                 Nomenclature and Types.
-                                                              (line  21)
-* fnccheck:                              Profiling.           (line  77)
-* Formatted input:                       Formatted Input.     (line   6)
-* Formatted output:                      Formatted Output.    (line   6)
-* Free Documentation License:            GNU Free Documentation License.
-                                                              (line   6)
-* frexp <1>:                             Converting Floats.   (line  23)
-* frexp:                                 Converting Integers. (line  42)
-* FTP of latest version:                 Introduction to GMP. (line  38)
-* Function classes:                      Function Classes.    (line   6)
-* FunctionCheck:                         Profiling.           (line  77)
-* GCC Checker:                           Debugging.           (line 115)
-* GCD algorithms:                        Greatest Common Divisor Algorithms.
-                                                              (line   6)
-* GCD extended:                          Number Theoretic Functions.
-                                                              (line  45)
-* GCD functions:                         Number Theoretic Functions.
-                                                              (line  30)
-* GDB:                                   Debugging.           (line  58)
-* Generic C:                             Build Options.       (line 153)
-* GMP Perl module:                       Demonstration Programs.
-                                                              (line  35)
-* GMP version number:                    Useful Macros and Constants.
-                                                              (line  12)
-* gmp.h:                                 Headers and Libraries.
-                                                              (line   6)
-* gmpxx.h:                               C++ Interface General.
-                                                              (line   8)
-* GNU Debugger:                          Debugging.           (line  58)
-* GNU Free Documentation License:        GNU Free Documentation License.
-                                                              (line   6)
-* GNU strip:                             Known Build Problems.
-                                                              (line  28)
-* gprof:                                 Profiling.           (line  41)
-* Greatest common divisor algorithms:    Greatest Common Divisor Algorithms.
-                                                              (line   6)
-* Greatest common divisor functions:     Number Theoretic Functions.
-                                                              (line  30)
-* Hardware floating point mode:          Notes for Particular Systems.
-                                                              (line  34)
-* Headers:                               Headers and Libraries.
-                                                              (line   6)
-* Heap problems:                         Debugging.           (line  24)
-* Home page:                             Introduction to GMP. (line  34)
-* Host system:                           Build Options.       (line  66)
-* HP-UX:                                 ABI and ISA.         (line 107)
-* HPPA:                                  ABI and ISA.         (line  68)
-* I/O functions <1>:                     I/O of Integers.     (line   6)
-* I/O functions <2>:                     I/O of Rationals.    (line   6)
-* I/O functions:                         I/O of Floats.       (line   6)
-* i386:                                  Notes for Particular Systems.
-                                                              (line 126)
-* IA-64:                                 ABI and ISA.         (line 107)
-* Import:                                Integer Import and Export.
-                                                              (line  11)
-* In-place operations:                   Efficiency.          (line  57)
-* Include files:                         Headers and Libraries.
-                                                              (line   6)
-* info-lookup-symbol:                    Emacs.               (line   6)
-* Initialization functions <1>:          Initializing Integers.
-                                                              (line   6)
-* Initialization functions <2>:          Initializing Rationals.
-                                                              (line   6)
-* Initialization functions <3>:          Random State Initialization.
-                                                              (line   6)
-* Initialization functions <4>:          Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Initialization functions <5>:          Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Initialization functions:              Initializing Floats. (line   6)
-* Initializing and clearing:             Efficiency.          (line  21)
-* Input functions <1>:                   I/O of Integers.     (line   6)
-* Input functions <2>:                   I/O of Rationals.    (line   6)
-* Input functions <3>:                   I/O of Floats.       (line   6)
-* Input functions:                       Formatted Input Functions.
-                                                              (line   6)
-* Install prefix:                        Build Options.       (line  32)
-* Installing GMP:                        Installing GMP.      (line   6)
-* Instruction Set Architecture:          ABI and ISA.         (line   6)
-* instrument-functions:                  Profiling.           (line  66)
-* Integer:                               Nomenclature and Types.
-                                                              (line   6)
-* Integer arithmetic functions:          Integer Arithmetic.  (line   6)
-* Integer assignment functions <1>:      Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Integer assignment functions:          Assigning Integers.  (line   6)
-* Integer bit manipulation functions:    Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Integer comparison functions:          Integer Comparisons. (line   6)
-* Integer conversion functions:          Converting Integers. (line   6)
-* Integer division functions:            Integer Division.    (line   6)
-* Integer exponentiation functions:      Integer Exponentiation.
-                                                              (line   6)
-* Integer export:                        Integer Import and Export.
-                                                              (line  45)
-* Integer functions:                     Integer Functions.   (line   6)
-* Integer import:                        Integer Import and Export.
-                                                              (line  11)
-* Integer initialization functions <1>:  Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Integer initialization functions:      Initializing Integers.
-                                                              (line   6)
-* Integer input and output functions:    I/O of Integers.     (line   6)
-* Integer internals:                     Integer Internals.   (line   6)
-* Integer logical functions:             Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Integer miscellaneous functions:       Miscellaneous Integer Functions.
-                                                              (line   6)
-* Integer random number functions:       Integer Random Numbers.
-                                                              (line   6)
-* Integer root functions:                Integer Roots.       (line   6)
-* Integer sign tests:                    Integer Comparisons. (line  28)
-* Integer special functions:             Integer Special Functions.
-                                                              (line   6)
-* Interix:                               Notes for Particular Systems.
-                                                              (line  51)
-* Internals:                             Internals.           (line   6)
-* Introduction:                          Introduction to GMP. (line   6)
-* Inverse modulo functions:              Number Theoretic Functions.
-                                                              (line  60)
-* IRIX <1>:                              Known Build Problems.
-                                                              (line  38)
-* IRIX:                                  ABI and ISA.         (line 132)
-* ISA:                                   ABI and ISA.         (line   6)
-* istream input:                         C++ Formatted Input. (line   6)
-* Jacobi symbol algorithm:               Jacobi Symbol.       (line   6)
-* Jacobi symbol functions:               Number Theoretic Functions.
-                                                              (line  66)
-* Karatsuba multiplication:              Karatsuba Multiplication.
-                                                              (line   6)
-* Karatsuba square root algorithm:       Square Root Algorithm.
-                                                              (line   6)
-* Kronecker symbol functions:            Number Theoretic Functions.
-                                                              (line  78)
-* Language bindings:                     Language Bindings.   (line   6)
-* Latest version of GMP:                 Introduction to GMP. (line  38)
-* LCM functions:                         Number Theoretic Functions.
-                                                              (line  55)
-* Least common multiple functions:       Number Theoretic Functions.
-                                                              (line  55)
-* Legendre symbol functions:             Number Theoretic Functions.
-                                                              (line  69)
-* libgmp:                                Headers and Libraries.
-                                                              (line  22)
-* libgmpxx:                              Headers and Libraries.
-                                                              (line  27)
-* Libraries:                             Headers and Libraries.
-                                                              (line  22)
-* Libtool:                               Headers and Libraries.
-                                                              (line  33)
-* Libtool versioning:                    Notes for Package Builds.
-                                                              (line   9)
-* License conditions:                    Copying.             (line   6)
-* Limb:                                  Nomenclature and Types.
-                                                              (line  31)
-* Limb size:                             Useful Macros and Constants.
-                                                              (line   7)
-* Linear congruential algorithm:         Random Number Algorithms.
-                                                              (line  25)
-* Linear congruential random numbers:    Random State Initialization.
-                                                              (line  32)
-* Linking:                               Headers and Libraries.
-                                                              (line  22)
-* Logical functions:                     Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Low-level functions:                   Low-level Functions. (line   6)
-* Lucas number algorithm:                Lucas Numbers Algorithm.
-                                                              (line   6)
-* Lucas number functions:                Number Theoretic Functions.
-                                                              (line 119)
-* MacOS X:                               Known Build Problems.
-                                                              (line  51)
-* Mailing lists:                         Introduction to GMP. (line  45)
-* Malloc debugger:                       Debugging.           (line  30)
-* Malloc problems:                       Debugging.           (line  24)
-* Memory allocation:                     Custom Allocation.   (line   6)
-* Memory management:                     Memory Management.   (line   6)
-* Mersenne twister algorithm:            Random Number Algorithms.
-                                                              (line  17)
-* Mersenne twister random numbers:       Random State Initialization.
-                                                              (line  13)
-* MINGW:                                 Notes for Particular Systems.
-                                                              (line  43)
-* MIPS:                                  ABI and ISA.         (line 132)
-* Miscellaneous float functions:         Miscellaneous Float Functions.
-                                                              (line   6)
-* Miscellaneous integer functions:       Miscellaneous Integer Functions.
-                                                              (line   6)
-* MMX:                                   Notes for Particular Systems.
-                                                              (line 132)
-* Modular inverse functions:             Number Theoretic Functions.
-                                                              (line  60)
-* Most significant bit:                  Miscellaneous Integer Functions.
-                                                              (line  34)
-* mp.h:                                  BSD Compatible Functions.
-                                                              (line  21)
-* MPN_PATH:                              Build Options.       (line 335)
-* MS Windows:                            Notes for Particular Systems.
-                                                              (line  56)
-* MS-DOS:                                Notes for Particular Systems.
-                                                              (line  43)
-* Multi-threading:                       Reentrancy.          (line   6)
-* Multiplication algorithms:             Multiplication Algorithms.
-                                                              (line   6)
-* Nails:                                 Low-level Functions. (line 478)
-* Native compilation:                    Build Options.       (line  52)
-* NeXT:                                  Known Build Problems.
-                                                              (line  57)
-* Next prime function:                   Number Theoretic Functions.
-                                                              (line  23)
-* Nomenclature:                          Nomenclature and Types.
-                                                              (line   6)
-* Non-Unix systems:                      Build Options.       (line  11)
-* Nth root algorithm:                    Nth Root Algorithm.  (line   6)
-* Number sequences:                      Efficiency.          (line 147)
-* Number theoretic functions:            Number Theoretic Functions.
-                                                              (line   6)
-* Numerator and denominator:             Applying Integer Functions.
-                                                              (line   6)
-* obstack output:                        Formatted Output Functions.
-                                                              (line  81)
-* OpenBSD:                               Notes for Particular Systems.
-                                                              (line  86)
-* Optimizing performance:                Performance optimization.
-                                                              (line   6)
-* ostream output:                        C++ Formatted Output.
-                                                              (line   6)
-* Other languages:                       Language Bindings.   (line   6)
-* Output functions <1>:                  I/O of Floats.       (line   6)
-* Output functions <2>:                  I/O of Rationals.    (line   6)
-* Output functions <3>:                  Formatted Output Functions.
-                                                              (line   6)
-* Output functions:                      I/O of Integers.     (line   6)
-* Packaged builds:                       Notes for Package Builds.
-                                                              (line   6)
-* Parameter conventions:                 Parameter Conventions.
-                                                              (line   6)
-* Parsing expressions demo:              Demonstration Programs.
-                                                              (line  21)
-* Particular systems:                    Notes for Particular Systems.
-                                                              (line   6)
-* Past GMP versions:                     Compatibility with older versions.
-                                                              (line   6)
-* PDF:                                   Build Options.       (line 350)
-* Perfect power algorithm:               Perfect Power Algorithm.
-                                                              (line   6)
-* Perfect power functions:               Integer Roots.       (line  27)
-* Perfect square algorithm:              Perfect Square Algorithm.
-                                                              (line   6)
-* Perfect square functions:              Integer Roots.       (line  36)
-* perl:                                  Demonstration Programs.
-                                                              (line  35)
-* Perl module:                           Demonstration Programs.
-                                                              (line  35)
-* Postscript:                            Build Options.       (line 350)
-* Power/PowerPC <1>:                     Known Build Problems.
-                                                              (line  63)
-* Power/PowerPC:                         Notes for Particular Systems.
-                                                              (line  92)
-* Powering algorithms:                   Powering Algorithms. (line   6)
-* Powering functions <1>:                Float Arithmetic.    (line  41)
-* Powering functions:                    Integer Exponentiation.
-                                                              (line   6)
-* PowerPC:                               ABI and ISA.         (line 167)
-* Precision of floats:                   Floating-point Functions.
-                                                              (line   6)
-* Precision of hardware floating point:  Notes for Particular Systems.
-                                                              (line  34)
-* Prefix:                                Build Options.       (line  32)
-* Prime testing algorithms:              Prime Testing Algorithm.
-                                                              (line   6)
-* Prime testing functions:               Number Theoretic Functions.
-                                                              (line   7)
-* printf formatted output:               Formatted Output.    (line   6)
-* Probable prime testing functions:      Number Theoretic Functions.
-                                                              (line   7)
-* prof:                                  Profiling.           (line  24)
-* Profiling:                             Profiling.           (line   6)
-* Radix conversion algorithms:           Radix Conversion Algorithms.
-                                                              (line   6)
-* Random number algorithms:              Random Number Algorithms.
-                                                              (line   6)
-* Random number functions <1>:           Integer Random Numbers.
-                                                              (line   6)
-* Random number functions <2>:           Miscellaneous Float Functions.
-                                                              (line  27)
-* Random number functions:               Random Number Functions.
-                                                              (line   6)
-* Random number seeding:                 Random State Seeding.
-                                                              (line   6)
-* Random number state:                   Random State Initialization.
-                                                              (line   6)
-* Random state:                          Nomenclature and Types.
-                                                              (line  46)
-* Rational arithmetic:                   Efficiency.          (line 113)
-* Rational arithmetic functions:         Rational Arithmetic. (line   6)
-* Rational assignment functions:         Initializing Rationals.
-                                                              (line   6)
-* Rational comparison functions:         Comparing Rationals. (line   6)
-* Rational conversion functions:         Rational Conversions.
-                                                              (line   6)
-* Rational initialization functions:     Initializing Rationals.
-                                                              (line   6)
-* Rational input and output functions:   I/O of Rationals.    (line   6)
-* Rational internals:                    Rational Internals.  (line   6)
-* Rational number:                       Nomenclature and Types.
-                                                              (line  16)
-* Rational number functions:             Rational Number Functions.
-                                                              (line   6)
-* Rational numerator and denominator:    Applying Integer Functions.
-                                                              (line   6)
-* Rational sign tests:                   Comparing Rationals. (line  27)
-* Raw output internals:                  Raw Output Internals.
-                                                              (line   6)
-* Reallocations:                         Efficiency.          (line  30)
-* Reentrancy:                            Reentrancy.          (line   6)
-* References:                            References.          (line   6)
-* Remove factor functions:               Number Theoretic Functions.
-                                                              (line  90)
-* Reporting bugs:                        Reporting Bugs.      (line   6)
-* Root extraction algorithm:             Nth Root Algorithm.  (line   6)
-* Root extraction algorithms:            Root Extraction Algorithms.
-                                                              (line   6)
-* Root extraction functions <1>:         Float Arithmetic.    (line  37)
-* Root extraction functions:             Integer Roots.       (line   6)
-* Root testing functions:                Integer Roots.       (line  36)
-* Rounding functions:                    Miscellaneous Float Functions.
-                                                              (line   9)
-* Sample programs:                       Demonstration Programs.
-                                                              (line   6)
-* Scan bit functions:                    Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* scanf formatted input:                 Formatted Input.     (line   6)
-* SCO:                                   Known Build Problems.
-                                                              (line  38)
-* Seeding random numbers:                Random State Seeding.
-                                                              (line   6)
-* Segmentation violation:                Debugging.           (line   7)
-* Sequent Symmetry:                      Known Build Problems.
-                                                              (line  68)
-* Services for Unix:                     Notes for Particular Systems.
-                                                              (line  51)
-* Shared library versioning:             Notes for Package Builds.
-                                                              (line   9)
-* Sign tests <1>:                        Float Comparison.    (line  33)
-* Sign tests <2>:                        Integer Comparisons. (line  28)
-* Sign tests:                            Comparing Rationals. (line  27)
-* Size in digits:                        Miscellaneous Integer Functions.
-                                                              (line  23)
-* Small operands:                        Efficiency.          (line   7)
-* Solaris <1>:                           ABI and ISA.         (line 201)
-* Solaris:                               Known Build Problems.
-                                                              (line  78)
-* Sparc:                                 Notes for Particular Systems.
-                                                              (line 108)
-* Sparc V9:                              ABI and ISA.         (line 201)
-* Special integer functions:             Integer Special Functions.
-                                                              (line   6)
-* Square root algorithm:                 Square Root Algorithm.
-                                                              (line   6)
-* SSE2:                                  Notes for Particular Systems.
-                                                              (line 132)
-* Stack backtrace:                       Debugging.           (line  50)
-* Stack overflow <1>:                    Debugging.           (line   7)
-* Stack overflow:                        Build Options.       (line 278)
-* Static linking:                        Efficiency.          (line  14)
-* stdarg.h:                              Headers and Libraries.
-                                                              (line  17)
-* stdio.h:                               Headers and Libraries.
-                                                              (line  11)
-* Stripped libraries:                    Known Build Problems.
-                                                              (line  28)
-* Sun:                                   ABI and ISA.         (line 201)
-* SunOS:                                 Notes for Particular Systems.
-                                                              (line 120)
-* Systems:                               Notes for Particular Systems.
-                                                              (line   6)
-* Temporary memory:                      Build Options.       (line 278)
-* Texinfo:                               Build Options.       (line 347)
-* Text input/output:                     Efficiency.          (line 153)
-* Thread safety:                         Reentrancy.          (line   6)
-* Toom multiplication <1>:               Other Multiplication.
-                                                              (line   6)
-* Toom multiplication <2>:               Toom 4-Way Multiplication.
-                                                              (line   6)
-* Toom multiplication:                   Toom 3-Way Multiplication.
-                                                              (line   6)
-* Types:                                 Nomenclature and Types.
-                                                              (line   6)
-* ui and si functions:                   Efficiency.          (line  50)
-* Unbalanced multiplication:             Unbalanced Multiplication.
-                                                              (line   6)
-* Upward compatibility:                  Compatibility with older versions.
-                                                              (line   6)
-* Useful macros and constants:           Useful Macros and Constants.
-                                                              (line   6)
-* User-defined precision:                Floating-point Functions.
-                                                              (line   6)
-* Valgrind:                              Debugging.           (line 130)
-* Variable conventions:                  Variable Conventions.
-                                                              (line   6)
-* Version number:                        Useful Macros and Constants.
-                                                              (line  12)
-* Web page:                              Introduction to GMP. (line  34)
-* Windows:                               Notes for Particular Systems.
-                                                              (line  56)
-* x86:                                   Notes for Particular Systems.
-                                                              (line 126)
-* x87:                                   Notes for Particular Systems.
-                                                              (line  34)
-* XML:                                   Build Options.       (line 354)
-
-\1f
-File: gmp.info,  Node: Function Index,  Prev: Concept Index,  Up: Top
-
-Function and Type Index
-***********************
-
-\0\b[index\0\b]
-* Menu:
-
-* __GMP_CC:                              Useful Macros and Constants.
-                                                              (line  23)
-* __GMP_CFLAGS:                          Useful Macros and Constants.
-                                                              (line  24)
-* __GNU_MP_VERSION:                      Useful Macros and Constants.
-                                                              (line  10)
-* __GNU_MP_VERSION_MINOR:                Useful Macros and Constants.
-                                                              (line  11)
-* __GNU_MP_VERSION_PATCHLEVEL:           Useful Macros and Constants.
-                                                              (line  12)
-* _mpz_realloc:                          Integer Special Functions.
-                                                              (line  51)
-* abs <1>:                               C++ Interface Rationals.
-                                                              (line  43)
-* abs <2>:                               C++ Interface Integers.
-                                                              (line  42)
-* abs:                                   C++ Interface Floats.
-                                                              (line  70)
-* ceil:                                  C++ Interface Floats.
-                                                              (line  71)
-* cmp <1>:                               C++ Interface Floats.
-                                                              (line  72)
-* cmp <2>:                               C++ Interface Rationals.
-                                                              (line  44)
-* cmp <3>:                               C++ Interface Integers.
-                                                              (line  44)
-* cmp:                                   C++ Interface Rationals.
-                                                              (line  45)
-* floor:                                 C++ Interface Floats.
-                                                              (line  80)
-* gcd:                                   BSD Compatible Functions.
-                                                              (line  82)
-* gmp_asprintf:                          Formatted Output Functions.
-                                                              (line  65)
-* gmp_errno:                             Random State Initialization.
-                                                              (line  55)
-* GMP_ERROR_INVALID_ARGUMENT:            Random State Initialization.
-                                                              (line  55)
-* GMP_ERROR_UNSUPPORTED_ARGUMENT:        Random State Initialization.
-                                                              (line  55)
-* gmp_fprintf:                           Formatted Output Functions.
-                                                              (line  29)
-* gmp_fscanf:                            Formatted Input Functions.
-                                                              (line  25)
-* GMP_LIMB_BITS:                         Low-level Functions. (line 508)
-* GMP_NAIL_BITS:                         Low-level Functions. (line 506)
-* GMP_NAIL_MASK:                         Low-level Functions. (line 516)
-* GMP_NUMB_BITS:                         Low-level Functions. (line 507)
-* GMP_NUMB_MASK:                         Low-level Functions. (line 517)
-* GMP_NUMB_MAX:                          Low-level Functions. (line 525)
-* gmp_obstack_printf:                    Formatted Output Functions.
-                                                              (line  79)
-* gmp_obstack_vprintf:                   Formatted Output Functions.
-                                                              (line  81)
-* gmp_printf:                            Formatted Output Functions.
-                                                              (line  24)
-* GMP_RAND_ALG_DEFAULT:                  Random State Initialization.
-                                                              (line  49)
-* GMP_RAND_ALG_LC:                       Random State Initialization.
-                                                              (line  49)
-* gmp_randclass:                         C++ Interface Random Numbers.
-                                                              (line   7)
-* gmp_randclass::get_f:                  C++ Interface Random Numbers.
-                                                              (line  45)
-* gmp_randclass::get_z_bits:             C++ Interface Random Numbers.
-                                                              (line  39)
-* gmp_randclass::get_z_range:            C++ Interface Random Numbers.
-                                                              (line  42)
-* gmp_randclass::gmp_randclass:          C++ Interface Random Numbers.
-                                                              (line  13)
-* gmp_randclass::seed:                   C++ Interface Random Numbers.
-                                                              (line  33)
-* gmp_randclear:                         Random State Initialization.
-                                                              (line  62)
-* gmp_randinit:                          Random State Initialization.
-                                                              (line  47)
-* gmp_randinit_default:                  Random State Initialization.
-                                                              (line   7)
-* gmp_randinit_lc_2exp:                  Random State Initialization.
-                                                              (line  18)
-* gmp_randinit_lc_2exp_size:             Random State Initialization.
-                                                              (line  32)
-* gmp_randinit_mt:                       Random State Initialization.
-                                                              (line  13)
-* gmp_randinit_set:                      Random State Initialization.
-                                                              (line  43)
-* gmp_randseed:                          Random State Seeding.
-                                                              (line   7)
-* gmp_randseed_ui:                       Random State Seeding.
-                                                              (line   9)
-* gmp_randstate_t:                       Nomenclature and Types.
-                                                              (line  46)
-* gmp_scanf:                             Formatted Input Functions.
-                                                              (line  21)
-* gmp_snprintf:                          Formatted Output Functions.
-                                                              (line  46)
-* gmp_sprintf:                           Formatted Output Functions.
-                                                              (line  34)
-* gmp_sscanf:                            Formatted Input Functions.
-                                                              (line  29)
-* gmp_urandomb_ui:                       Random State Miscellaneous.
-                                                              (line   8)
-* gmp_urandomm_ui:                       Random State Miscellaneous.
-                                                              (line  14)
-* gmp_vasprintf:                         Formatted Output Functions.
-                                                              (line  66)
-* gmp_version:                           Useful Macros and Constants.
-                                                              (line  18)
-* gmp_vfprintf:                          Formatted Output Functions.
-                                                              (line  30)
-* gmp_vfscanf:                           Formatted Input Functions.
-                                                              (line  26)
-* gmp_vprintf:                           Formatted Output Functions.
-                                                              (line  25)
-* gmp_vscanf:                            Formatted Input Functions.
-                                                              (line  22)
-* gmp_vsnprintf:                         Formatted Output Functions.
-                                                              (line  48)
-* gmp_vsprintf:                          Formatted Output Functions.
-                                                              (line  35)
-* gmp_vsscanf:                           Formatted Input Functions.
-                                                              (line  31)
-* hypot:                                 C++ Interface Floats.
-                                                              (line  81)
-* itom:                                  BSD Compatible Functions.
-                                                              (line  29)
-* madd:                                  BSD Compatible Functions.
-                                                              (line  43)
-* mcmp:                                  BSD Compatible Functions.
-                                                              (line  85)
-* mdiv:                                  BSD Compatible Functions.
-                                                              (line  53)
-* mfree:                                 BSD Compatible Functions.
-                                                              (line 105)
-* min:                                   BSD Compatible Functions.
-                                                              (line  89)
-* MINT:                                  BSD Compatible Functions.
-                                                              (line  21)
-* mout:                                  BSD Compatible Functions.
-                                                              (line  94)
-* move:                                  BSD Compatible Functions.
-                                                              (line  39)
-* mp_bitcnt_t:                           Nomenclature and Types.
-                                                              (line  42)
-* mp_bits_per_limb:                      Useful Macros and Constants.
-                                                              (line   7)
-* mp_exp_t:                              Nomenclature and Types.
-                                                              (line  27)
-* mp_get_memory_functions:               Custom Allocation.   (line  93)
-* mp_limb_t:                             Nomenclature and Types.
-                                                              (line  31)
-* mp_set_memory_functions:               Custom Allocation.   (line  21)
-* mp_size_t:                             Nomenclature and Types.
-                                                              (line  37)
-* mpf_abs:                               Float Arithmetic.    (line  47)
-* mpf_add:                               Float Arithmetic.    (line   7)
-* mpf_add_ui:                            Float Arithmetic.    (line   9)
-* mpf_ceil:                              Miscellaneous Float Functions.
-                                                              (line   7)
-* mpf_class:                             C++ Interface General.
-                                                              (line  20)
-* mpf_class::fits_sint_p:                C++ Interface Floats.
-                                                              (line  74)
-* mpf_class::fits_slong_p:               C++ Interface Floats.
-                                                              (line  75)
-* mpf_class::fits_sshort_p:              C++ Interface Floats.
-                                                              (line  76)
-* mpf_class::fits_uint_p:                C++ Interface Floats.
-                                                              (line  77)
-* mpf_class::fits_ulong_p:               C++ Interface Floats.
-                                                              (line  78)
-* mpf_class::fits_ushort_p:              C++ Interface Floats.
-                                                              (line  79)
-* mpf_class::get_d:                      C++ Interface Floats.
-                                                              (line  82)
-* mpf_class::get_mpf_t:                  C++ Interface General.
-                                                              (line  66)
-* mpf_class::get_prec:                   C++ Interface Floats.
-                                                              (line 100)
-* mpf_class::get_si:                     C++ Interface Floats.
-                                                              (line  83)
-* mpf_class::get_str:                    C++ Interface Floats.
-                                                              (line  85)
-* mpf_class::get_ui:                     C++ Interface Floats.
-                                                              (line  86)
-* mpf_class::mpf_class:                  C++ Interface Floats.
-                                                              (line  38)
-* mpf_class::operator=:                  C++ Interface Floats.
-                                                              (line  47)
-* mpf_class::set_prec:                   C++ Interface Floats.
-                                                              (line 101)
-* mpf_class::set_prec_raw:               C++ Interface Floats.
-                                                              (line 102)
-* mpf_class::set_str:                    C++ Interface Floats.
-                                                              (line  88)
-* mpf_clear:                             Initializing Floats. (line  37)
-* mpf_clears:                            Initializing Floats. (line  41)
-* mpf_cmp:                               Float Comparison.    (line   7)
-* mpf_cmp_d:                             Float Comparison.    (line   8)
-* mpf_cmp_si:                            Float Comparison.    (line  10)
-* mpf_cmp_ui:                            Float Comparison.    (line   9)
-* mpf_div:                               Float Arithmetic.    (line  29)
-* mpf_div_2exp:                          Float Arithmetic.    (line  53)
-* mpf_div_ui:                            Float Arithmetic.    (line  33)
-* mpf_eq:                                Float Comparison.    (line  17)
-* mpf_fits_sint_p:                       Miscellaneous Float Functions.
-                                                              (line  20)
-* mpf_fits_slong_p:                      Miscellaneous Float Functions.
-                                                              (line  18)
-* mpf_fits_sshort_p:                     Miscellaneous Float Functions.
-                                                              (line  22)
-* mpf_fits_uint_p:                       Miscellaneous Float Functions.
-                                                              (line  19)
-* mpf_fits_ulong_p:                      Miscellaneous Float Functions.
-                                                              (line  17)
-* mpf_fits_ushort_p:                     Miscellaneous Float Functions.
-                                                              (line  21)
-* mpf_floor:                             Miscellaneous Float Functions.
-                                                              (line   8)
-* mpf_get_d:                             Converting Floats.   (line   7)
-* mpf_get_d_2exp:                        Converting Floats.   (line  16)
-* mpf_get_default_prec:                  Initializing Floats. (line  12)
-* mpf_get_prec:                          Initializing Floats. (line  62)
-* mpf_get_si:                            Converting Floats.   (line  27)
-* mpf_get_str:                           Converting Floats.   (line  37)
-* mpf_get_ui:                            Converting Floats.   (line  28)
-* mpf_init:                              Initializing Floats. (line  19)
-* mpf_init2:                             Initializing Floats. (line  26)
-* mpf_init_set:                          Simultaneous Float Init & Assign.
-                                                              (line  16)
-* mpf_init_set_d:                        Simultaneous Float Init & Assign.
-                                                              (line  19)
-* mpf_init_set_si:                       Simultaneous Float Init & Assign.
-                                                              (line  18)
-* mpf_init_set_str:                      Simultaneous Float Init & Assign.
-                                                              (line  25)
-* mpf_init_set_ui:                       Simultaneous Float Init & Assign.
-                                                              (line  17)
-* mpf_inits:                             Initializing Floats. (line  31)
-* mpf_inp_str:                           I/O of Floats.       (line  37)
-* mpf_integer_p:                         Miscellaneous Float Functions.
-                                                              (line  14)
-* mpf_mul:                               Float Arithmetic.    (line  19)
-* mpf_mul_2exp:                          Float Arithmetic.    (line  50)
-* mpf_mul_ui:                            Float Arithmetic.    (line  21)
-* mpf_neg:                               Float Arithmetic.    (line  44)
-* mpf_out_str:                           I/O of Floats.       (line  17)
-* mpf_pow_ui:                            Float Arithmetic.    (line  41)
-* mpf_random2:                           Miscellaneous Float Functions.
-                                                              (line  36)
-* mpf_reldiff:                           Float Comparison.    (line  29)
-* mpf_set:                               Assigning Floats.    (line  10)
-* mpf_set_d:                             Assigning Floats.    (line  13)
-* mpf_set_default_prec:                  Initializing Floats. (line   7)
-* mpf_set_prec:                          Initializing Floats. (line  65)
-* mpf_set_prec_raw:                      Initializing Floats. (line  72)
-* mpf_set_q:                             Assigning Floats.    (line  15)
-* mpf_set_si:                            Assigning Floats.    (line  12)
-* mpf_set_str:                           Assigning Floats.    (line  18)
-* mpf_set_ui:                            Assigning Floats.    (line  11)
-* mpf_set_z:                             Assigning Floats.    (line  14)
-* mpf_sgn:                               Float Comparison.    (line  33)
-* mpf_sqrt:                              Float Arithmetic.    (line  36)
-* mpf_sqrt_ui:                           Float Arithmetic.    (line  37)
-* mpf_sub:                               Float Arithmetic.    (line  12)
-* mpf_sub_ui:                            Float Arithmetic.    (line  16)
-* mpf_swap:                              Assigning Floats.    (line  52)
-* mpf_t:                                 Nomenclature and Types.
-                                                              (line  21)
-* mpf_trunc:                             Miscellaneous Float Functions.
-                                                              (line   9)
-* mpf_ui_div:                            Float Arithmetic.    (line  31)
-* mpf_ui_sub:                            Float Arithmetic.    (line  14)
-* mpf_urandomb:                          Miscellaneous Float Functions.
-                                                              (line  27)
-* mpn_add:                               Low-level Functions. (line  69)
-* mpn_add_1:                             Low-level Functions. (line  64)
-* mpn_add_n:                             Low-level Functions. (line  54)
-* mpn_addmul_1:                          Low-level Functions. (line 148)
-* mpn_and_n:                             Low-level Functions. (line 420)
-* mpn_andn_n:                            Low-level Functions. (line 435)
-* mpn_cmp:                               Low-level Functions. (line 284)
-* mpn_com:                               Low-level Functions. (line 460)
-* mpn_copyd:                             Low-level Functions. (line 469)
-* mpn_copyi:                             Low-level Functions. (line 465)
-* mpn_divexact_by3:                      Low-level Functions. (line 229)
-* mpn_divexact_by3c:                     Low-level Functions. (line 231)
-* mpn_divmod:                            Low-level Functions. (line 224)
-* mpn_divmod_1:                          Low-level Functions. (line 208)
-* mpn_divrem:                            Low-level Functions. (line 182)
-* mpn_divrem_1:                          Low-level Functions. (line 206)
-* mpn_gcd:                               Low-level Functions. (line 289)
-* mpn_gcd_1:                             Low-level Functions. (line 299)
-* mpn_gcdext:                            Low-level Functions. (line 305)
-* mpn_get_str:                           Low-level Functions. (line 346)
-* mpn_hamdist:                           Low-level Functions. (line 410)
-* mpn_ior_n:                             Low-level Functions. (line 425)
-* mpn_iorn_n:                            Low-level Functions. (line 440)
-* mpn_lshift:                            Low-level Functions. (line 260)
-* mpn_mod_1:                             Low-level Functions. (line 255)
-* mpn_mul:                               Low-level Functions. (line 114)
-* mpn_mul_1:                             Low-level Functions. (line 133)
-* mpn_mul_n:                             Low-level Functions. (line 103)
-* mpn_nand_n:                            Low-level Functions. (line 445)
-* mpn_neg:                               Low-level Functions. (line  98)
-* mpn_nior_n:                            Low-level Functions. (line 450)
-* mpn_perfect_square_p:                  Low-level Functions. (line 416)
-* mpn_popcount:                          Low-level Functions. (line 406)
-* mpn_random:                            Low-level Functions. (line 395)
-* mpn_random2:                           Low-level Functions. (line 396)
-* mpn_rshift:                            Low-level Functions. (line 272)
-* mpn_scan0:                             Low-level Functions. (line 380)
-* mpn_scan1:                             Low-level Functions. (line 388)
-* mpn_set_str:                           Low-level Functions. (line 361)
-* mpn_sqr:                               Low-level Functions. (line 125)
-* mpn_sqrtrem:                           Low-level Functions. (line 328)
-* mpn_sub:                               Low-level Functions. (line  90)
-* mpn_sub_1:                             Low-level Functions. (line  85)
-* mpn_sub_n:                             Low-level Functions. (line  76)
-* mpn_submul_1:                          Low-level Functions. (line 159)
-* mpn_tdiv_qr:                           Low-level Functions. (line 171)
-* mpn_xnor_n:                            Low-level Functions. (line 455)
-* mpn_xor_n:                             Low-level Functions. (line 430)
-* mpn_zero:                              Low-level Functions. (line 472)
-* mpq_abs:                               Rational Arithmetic. (line  31)
-* mpq_add:                               Rational Arithmetic. (line   7)
-* mpq_canonicalize:                      Rational Number Functions.
-                                                              (line  22)
-* mpq_class:                             C++ Interface General.
-                                                              (line  19)
-* mpq_class::canonicalize:               C++ Interface Rationals.
-                                                              (line  37)
-* mpq_class::get_d:                      C++ Interface Rationals.
-                                                              (line  46)
-* mpq_class::get_den:                    C++ Interface Rationals.
-                                                              (line  58)
-* mpq_class::get_den_mpz_t:              C++ Interface Rationals.
-                                                              (line  68)
-* mpq_class::get_mpq_t:                  C++ Interface General.
-                                                              (line  65)
-* mpq_class::get_num:                    C++ Interface Rationals.
-                                                              (line  57)
-* mpq_class::get_num_mpz_t:              C++ Interface Rationals.
-                                                              (line  67)
-* mpq_class::get_str:                    C++ Interface Rationals.
-                                                              (line  47)
-* mpq_class::mpq_class:                  C++ Interface Rationals.
-                                                              (line  22)
-* mpq_class::set_str:                    C++ Interface Rationals.
-                                                              (line  49)
-* mpq_clear:                             Initializing Rationals.
-                                                              (line  16)
-* mpq_clears:                            Initializing Rationals.
-                                                              (line  20)
-* mpq_cmp:                               Comparing Rationals. (line   7)
-* mpq_cmp_si:                            Comparing Rationals. (line  17)
-* mpq_cmp_ui:                            Comparing Rationals. (line  15)
-* mpq_denref:                            Applying Integer Functions.
-                                                              (line  18)
-* mpq_div:                               Rational Arithmetic. (line  22)
-* mpq_div_2exp:                          Rational Arithmetic. (line  25)
-* mpq_equal:                             Comparing Rationals. (line  33)
-* mpq_get_d:                             Rational Conversions.
-                                                              (line   7)
-* mpq_get_den:                           Applying Integer Functions.
-                                                              (line  24)
-* mpq_get_num:                           Applying Integer Functions.
-                                                              (line  23)
-* mpq_get_str:                           Rational Conversions.
-                                                              (line  22)
-* mpq_init:                              Initializing Rationals.
-                                                              (line   7)
-* mpq_inits:                             Initializing Rationals.
-                                                              (line  12)
-* mpq_inp_str:                           I/O of Rationals.    (line  23)
-* mpq_inv:                               Rational Arithmetic. (line  34)
-* mpq_mul:                               Rational Arithmetic. (line  15)
-* mpq_mul_2exp:                          Rational Arithmetic. (line  18)
-* mpq_neg:                               Rational Arithmetic. (line  28)
-* mpq_numref:                            Applying Integer Functions.
-                                                              (line  17)
-* mpq_out_str:                           I/O of Rationals.    (line  15)
-* mpq_set:                               Initializing Rationals.
-                                                              (line  24)
-* mpq_set_d:                             Rational Conversions.
-                                                              (line  17)
-* mpq_set_den:                           Applying Integer Functions.
-                                                              (line  26)
-* mpq_set_f:                             Rational Conversions.
-                                                              (line  18)
-* mpq_set_num:                           Applying Integer Functions.
-                                                              (line  25)
-* mpq_set_si:                            Initializing Rationals.
-                                                              (line  31)
-* mpq_set_str:                           Initializing Rationals.
-                                                              (line  36)
-* mpq_set_ui:                            Initializing Rationals.
-                                                              (line  29)
-* mpq_set_z:                             Initializing Rationals.
-                                                              (line  25)
-* mpq_sgn:                               Comparing Rationals. (line  27)
-* mpq_sub:                               Rational Arithmetic. (line  11)
-* mpq_swap:                              Initializing Rationals.
-                                                              (line  56)
-* mpq_t:                                 Nomenclature and Types.
-                                                              (line  16)
-* mpz_abs:                               Integer Arithmetic.  (line  42)
-* mpz_add:                               Integer Arithmetic.  (line   7)
-* mpz_add_ui:                            Integer Arithmetic.  (line   9)
-* mpz_addmul:                            Integer Arithmetic.  (line  25)
-* mpz_addmul_ui:                         Integer Arithmetic.  (line  27)
-* mpz_and:                               Integer Logic and Bit Fiddling.
-                                                              (line  11)
-* mpz_array_init:                        Integer Special Functions.
-                                                              (line  11)
-* mpz_bin_ui:                            Number Theoretic Functions.
-                                                              (line  98)
-* mpz_bin_uiui:                          Number Theoretic Functions.
-                                                              (line 100)
-* mpz_cdiv_q:                            Integer Division.    (line  13)
-* mpz_cdiv_q_2exp:                       Integer Division.    (line  24)
-* mpz_cdiv_q_ui:                         Integer Division.    (line  17)
-* mpz_cdiv_qr:                           Integer Division.    (line  15)
-* mpz_cdiv_qr_ui:                        Integer Division.    (line  21)
-* mpz_cdiv_r:                            Integer Division.    (line  14)
-* mpz_cdiv_r_2exp:                       Integer Division.    (line  25)
-* mpz_cdiv_r_ui:                         Integer Division.    (line  19)
-* mpz_cdiv_ui:                           Integer Division.    (line  23)
-* mpz_class:                             C++ Interface General.
-                                                              (line  18)
-* mpz_class::fits_sint_p:                C++ Interface Integers.
-                                                              (line  45)
-* mpz_class::fits_slong_p:               C++ Interface Integers.
-                                                              (line  46)
-* mpz_class::fits_sshort_p:              C++ Interface Integers.
-                                                              (line  47)
-* mpz_class::fits_uint_p:                C++ Interface Integers.
-                                                              (line  48)
-* mpz_class::fits_ulong_p:               C++ Interface Integers.
-                                                              (line  49)
-* mpz_class::fits_ushort_p:              C++ Interface Integers.
-                                                              (line  50)
-* mpz_class::get_d:                      C++ Interface Integers.
-                                                              (line  51)
-* mpz_class::get_mpz_t:                  C++ Interface General.
-                                                              (line  64)
-* mpz_class::get_si:                     C++ Interface Integers.
-                                                              (line  52)
-* mpz_class::get_str:                    C++ Interface Integers.
-                                                              (line  53)
-* mpz_class::get_ui:                     C++ Interface Integers.
-                                                              (line  54)
-* mpz_class::mpz_class:                  C++ Interface Integers.
-                                                              (line   7)
-* mpz_class::set_str:                    C++ Interface Integers.
-                                                              (line  56)
-* mpz_clear:                             Initializing Integers.
-                                                              (line  44)
-* mpz_clears:                            Initializing Integers.
-                                                              (line  48)
-* mpz_clrbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  54)
-* mpz_cmp:                               Integer Comparisons. (line   7)
-* mpz_cmp_d:                             Integer Comparisons. (line   8)
-* mpz_cmp_si:                            Integer Comparisons. (line   9)
-* mpz_cmp_ui:                            Integer Comparisons. (line  10)
-* mpz_cmpabs:                            Integer Comparisons. (line  18)
-* mpz_cmpabs_d:                          Integer Comparisons. (line  19)
-* mpz_cmpabs_ui:                         Integer Comparisons. (line  20)
-* mpz_com:                               Integer Logic and Bit Fiddling.
-                                                              (line  20)
-* mpz_combit:                            Integer Logic and Bit Fiddling.
-                                                              (line  57)
-* mpz_congruent_2exp_p:                  Integer Division.    (line 124)
-* mpz_congruent_p:                       Integer Division.    (line 121)
-* mpz_congruent_ui_p:                    Integer Division.    (line 123)
-* mpz_divexact:                          Integer Division.    (line 101)
-* mpz_divexact_ui:                       Integer Division.    (line 102)
-* mpz_divisible_2exp_p:                  Integer Division.    (line 112)
-* mpz_divisible_p:                       Integer Division.    (line 110)
-* mpz_divisible_ui_p:                    Integer Division.    (line 111)
-* mpz_even_p:                            Miscellaneous Integer Functions.
-                                                              (line  18)
-* mpz_export:                            Integer Import and Export.
-                                                              (line  45)
-* mpz_fac_ui:                            Number Theoretic Functions.
-                                                              (line  95)
-* mpz_fdiv_q:                            Integer Division.    (line  27)
-* mpz_fdiv_q_2exp:                       Integer Division.    (line  38)
-* mpz_fdiv_q_ui:                         Integer Division.    (line  31)
-* mpz_fdiv_qr:                           Integer Division.    (line  29)
-* mpz_fdiv_qr_ui:                        Integer Division.    (line  35)
-* mpz_fdiv_r:                            Integer Division.    (line  28)
-* mpz_fdiv_r_2exp:                       Integer Division.    (line  39)
-* mpz_fdiv_r_ui:                         Integer Division.    (line  33)
-* mpz_fdiv_ui:                           Integer Division.    (line  37)
-* mpz_fib2_ui:                           Number Theoretic Functions.
-                                                              (line 108)
-* mpz_fib_ui:                            Number Theoretic Functions.
-                                                              (line 106)
-* mpz_fits_sint_p:                       Miscellaneous Integer Functions.
-                                                              (line  10)
-* mpz_fits_slong_p:                      Miscellaneous Integer Functions.
-                                                              (line   8)
-* mpz_fits_sshort_p:                     Miscellaneous Integer Functions.
-                                                              (line  12)
-* mpz_fits_uint_p:                       Miscellaneous Integer Functions.
-                                                              (line   9)
-* mpz_fits_ulong_p:                      Miscellaneous Integer Functions.
-                                                              (line   7)
-* mpz_fits_ushort_p:                     Miscellaneous Integer Functions.
-                                                              (line  11)
-* mpz_gcd:                               Number Theoretic Functions.
-                                                              (line  30)
-* mpz_gcd_ui:                            Number Theoretic Functions.
-                                                              (line  35)
-* mpz_gcdext:                            Number Theoretic Functions.
-                                                              (line  45)
-* mpz_get_d:                             Converting Integers. (line  27)
-* mpz_get_d_2exp:                        Converting Integers. (line  35)
-* mpz_get_si:                            Converting Integers. (line  18)
-* mpz_get_str:                           Converting Integers. (line  46)
-* mpz_get_ui:                            Converting Integers. (line  11)
-* mpz_getlimbn:                          Integer Special Functions.
-                                                              (line  60)
-* mpz_hamdist:                           Integer Logic and Bit Fiddling.
-                                                              (line  29)
-* mpz_import:                            Integer Import and Export.
-                                                              (line  11)
-* mpz_init:                              Initializing Integers.
-                                                              (line  26)
-* mpz_init2:                             Initializing Integers.
-                                                              (line  33)
-* mpz_init_set:                          Simultaneous Integer Init & Assign.
-                                                              (line  27)
-* mpz_init_set_d:                        Simultaneous Integer Init & Assign.
-                                                              (line  30)
-* mpz_init_set_si:                       Simultaneous Integer Init & Assign.
-                                                              (line  29)
-* mpz_init_set_str:                      Simultaneous Integer Init & Assign.
-                                                              (line  34)
-* mpz_init_set_ui:                       Simultaneous Integer Init & Assign.
-                                                              (line  28)
-* mpz_inits:                             Initializing Integers.
-                                                              (line  29)
-* mpz_inp_raw:                           I/O of Integers.     (line  59)
-* mpz_inp_str:                           I/O of Integers.     (line  28)
-* mpz_invert:                            Number Theoretic Functions.
-                                                              (line  60)
-* mpz_ior:                               Integer Logic and Bit Fiddling.
-                                                              (line  14)
-* mpz_jacobi:                            Number Theoretic Functions.
-                                                              (line  66)
-* mpz_kronecker:                         Number Theoretic Functions.
-                                                              (line  74)
-* mpz_kronecker_si:                      Number Theoretic Functions.
-                                                              (line  75)
-* mpz_kronecker_ui:                      Number Theoretic Functions.
-                                                              (line  76)
-* mpz_lcm:                               Number Theoretic Functions.
-                                                              (line  54)
-* mpz_lcm_ui:                            Number Theoretic Functions.
-                                                              (line  55)
-* mpz_legendre:                          Number Theoretic Functions.
-                                                              (line  69)
-* mpz_lucnum2_ui:                        Number Theoretic Functions.
-                                                              (line 119)
-* mpz_lucnum_ui:                         Number Theoretic Functions.
-                                                              (line 117)
-* mpz_mod:                               Integer Division.    (line  91)
-* mpz_mod_ui:                            Integer Division.    (line  93)
-* mpz_mul:                               Integer Arithmetic.  (line  19)
-* mpz_mul_2exp:                          Integer Arithmetic.  (line  35)
-* mpz_mul_si:                            Integer Arithmetic.  (line  20)
-* mpz_mul_ui:                            Integer Arithmetic.  (line  22)
-* mpz_neg:                               Integer Arithmetic.  (line  39)
-* mpz_nextprime:                         Number Theoretic Functions.
-                                                              (line  23)
-* mpz_odd_p:                             Miscellaneous Integer Functions.
-                                                              (line  17)
-* mpz_out_raw:                           I/O of Integers.     (line  43)
-* mpz_out_str:                           I/O of Integers.     (line  16)
-* mpz_perfect_power_p:                   Integer Roots.       (line  27)
-* mpz_perfect_square_p:                  Integer Roots.       (line  36)
-* mpz_popcount:                          Integer Logic and Bit Fiddling.
-                                                              (line  23)
-* mpz_pow_ui:                            Integer Exponentiation.
-                                                              (line  31)
-* mpz_powm:                              Integer Exponentiation.
-                                                              (line   8)
-* mpz_powm_sec:                          Integer Exponentiation.
-                                                              (line  18)
-* mpz_powm_ui:                           Integer Exponentiation.
-                                                              (line  10)
-* mpz_probab_prime_p:                    Number Theoretic Functions.
-                                                              (line   7)
-* mpz_random:                            Integer Random Numbers.
-                                                              (line  42)
-* mpz_random2:                           Integer Random Numbers.
-                                                              (line  51)
-* mpz_realloc2:                          Initializing Integers.
-                                                              (line  52)
-* mpz_remove:                            Number Theoretic Functions.
-                                                              (line  90)
-* mpz_root:                              Integer Roots.       (line   7)
-* mpz_rootrem:                           Integer Roots.       (line  13)
-* mpz_rrandomb:                          Integer Random Numbers.
-                                                              (line  31)
-* mpz_scan0:                             Integer Logic and Bit Fiddling.
-                                                              (line  37)
-* mpz_scan1:                             Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* mpz_set:                               Assigning Integers.  (line  10)
-* mpz_set_d:                             Assigning Integers.  (line  13)
-* mpz_set_f:                             Assigning Integers.  (line  15)
-* mpz_set_q:                             Assigning Integers.  (line  14)
-* mpz_set_si:                            Assigning Integers.  (line  12)
-* mpz_set_str:                           Assigning Integers.  (line  21)
-* mpz_set_ui:                            Assigning Integers.  (line  11)
-* mpz_setbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  51)
-* mpz_sgn:                               Integer Comparisons. (line  28)
-* mpz_si_kronecker:                      Number Theoretic Functions.
-                                                              (line  77)
-* mpz_size:                              Integer Special Functions.
-                                                              (line  68)
-* mpz_sizeinbase:                        Miscellaneous Integer Functions.
-                                                              (line  23)
-* mpz_sqrt:                              Integer Roots.       (line  17)
-* mpz_sqrtrem:                           Integer Roots.       (line  20)
-* mpz_sub:                               Integer Arithmetic.  (line  12)
-* mpz_sub_ui:                            Integer Arithmetic.  (line  14)
-* mpz_submul:                            Integer Arithmetic.  (line  30)
-* mpz_submul_ui:                         Integer Arithmetic.  (line  32)
-* mpz_swap:                              Assigning Integers.  (line  37)
-* mpz_t:                                 Nomenclature and Types.
-                                                              (line   6)
-* mpz_tdiv_q:                            Integer Division.    (line  41)
-* mpz_tdiv_q_2exp:                       Integer Division.    (line  52)
-* mpz_tdiv_q_ui:                         Integer Division.    (line  45)
-* mpz_tdiv_qr:                           Integer Division.    (line  43)
-* mpz_tdiv_qr_ui:                        Integer Division.    (line  49)
-* mpz_tdiv_r:                            Integer Division.    (line  42)
-* mpz_tdiv_r_2exp:                       Integer Division.    (line  53)
-* mpz_tdiv_r_ui:                         Integer Division.    (line  47)
-* mpz_tdiv_ui:                           Integer Division.    (line  51)
-* mpz_tstbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  60)
-* mpz_ui_kronecker:                      Number Theoretic Functions.
-                                                              (line  78)
-* mpz_ui_pow_ui:                         Integer Exponentiation.
-                                                              (line  33)
-* mpz_ui_sub:                            Integer Arithmetic.  (line  16)
-* mpz_urandomb:                          Integer Random Numbers.
-                                                              (line  14)
-* mpz_urandomm:                          Integer Random Numbers.
-                                                              (line  23)
-* mpz_xor:                               Integer Logic and Bit Fiddling.
-                                                              (line  17)
-* msqrt:                                 BSD Compatible Functions.
-                                                              (line  63)
-* msub:                                  BSD Compatible Functions.
-                                                              (line  46)
-* mtox:                                  BSD Compatible Functions.
-                                                              (line  98)
-* mult:                                  BSD Compatible Functions.
-                                                              (line  49)
-* operator%:                             C++ Interface Integers.
-                                                              (line  30)
-* operator/:                             C++ Interface Integers.
-                                                              (line  29)
-* operator<<:                            C++ Formatted Output.
-                                                              (line  20)
-* operator>> <1>:                        C++ Formatted Input. (line  11)
-* operator>>:                            C++ Interface Rationals.
-                                                              (line  77)
-* pow:                                   BSD Compatible Functions.
-                                                              (line  71)
-* rpow:                                  BSD Compatible Functions.
-                                                              (line  79)
-* sdiv:                                  BSD Compatible Functions.
-                                                              (line  55)
-* sgn <1>:                               C++ Interface Rationals.
-                                                              (line  50)
-* sgn <2>:                               C++ Interface Integers.
-                                                              (line  57)
-* sgn:                                   C++ Interface Floats.
-                                                              (line  89)
-* sqrt <1>:                              C++ Interface Integers.
-                                                              (line  58)
-* sqrt:                                  C++ Interface Floats.
-                                                              (line  90)
-* trunc:                                 C++ Interface Floats.
-                                                              (line  91)
-* xtom:                                  BSD Compatible Functions.
-                                                              (line  34)
-
-
diff --git a/misc/builddeps/win32/sdl/bin/sdl2-config b/misc/builddeps/win32/sdl/bin/sdl2-config
deleted file mode 100755 (executable)
index 24d5792..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/sh
-
-prefix=${0%/bin/sdl2-config}
-exec_prefix=${prefix}
-exec_prefix_set=no
-libdir=${exec_prefix}/lib
-
-#usage="\
-#Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]"
-usage="\
-Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs] [--static-libs]"
-
-if test $# -eq 0; then
-      echo "${usage}" 1>&2
-      exit 1
-fi
-
-while test $# -gt 0; do
-  case "$1" in
-  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) optarg= ;;
-  esac
-
-  case $1 in
-    --prefix=*)
-      prefix=$optarg
-      if test $exec_prefix_set = no ; then
-        exec_prefix=$optarg
-      fi
-      ;;
-    --prefix)
-      echo $prefix
-      ;;
-    --exec-prefix=*)
-      exec_prefix=$optarg
-      exec_prefix_set=yes
-      ;;
-    --exec-prefix)
-      echo $exec_prefix
-      ;;
-    --version)
-      echo 2.0.10
-      ;;
-    --cflags)
-      echo -I${prefix}/include/SDL2  -Dmain=SDL_main
-      ;;
-#    --libs)
-#      echo -L${exec_prefix}/lib  -lmingw32 -lSDL2main -lSDL2 -mwindows
-#      ;;
-#    --static-libs)
-    --libs|--static-libs)
-      echo -L${exec_prefix}/lib  -lmingw32 -lSDL2main -lSDL2 -mwindows  -Wl,--no-undefined -Wl,--dynamicbase -Wl,--nxcompat -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid -static-libgcc
-      ;;
-    *)
-      echo "${usage}" 1>&2
-      exit 1
-      ;;
-  esac
-  shift
-done
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL.h b/misc/builddeps/win32/sdl/include/SDL2/SDL.h
deleted file mode 100644 (file)
index 88dce0c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL.h
- *
- *  Main include header for the SDL library
- */
-
-
-#ifndef SDL_h_
-#define SDL_h_
-
-#include "SDL_main.h"
-#include "SDL_stdinc.h"
-#include "SDL_assert.h"
-#include "SDL_atomic.h"
-#include "SDL_audio.h"
-#include "SDL_clipboard.h"
-#include "SDL_cpuinfo.h"
-#include "SDL_endian.h"
-#include "SDL_error.h"
-#include "SDL_events.h"
-#include "SDL_filesystem.h"
-#include "SDL_gamecontroller.h"
-#include "SDL_haptic.h"
-#include "SDL_hints.h"
-#include "SDL_joystick.h"
-#include "SDL_loadso.h"
-#include "SDL_log.h"
-#include "SDL_messagebox.h"
-#include "SDL_mutex.h"
-#include "SDL_power.h"
-#include "SDL_render.h"
-#include "SDL_rwops.h"
-#include "SDL_sensor.h"
-#include "SDL_shape.h"
-#include "SDL_system.h"
-#include "SDL_thread.h"
-#include "SDL_timer.h"
-#include "SDL_version.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* As of version 0.5, SDL is loaded dynamically into the application */
-
-/**
- *  \name SDL_INIT_*
- *
- *  These are the flags which may be passed to SDL_Init().  You should
- *  specify the subsystems which you will be using in your application.
- */
-/* @{ */
-#define SDL_INIT_TIMER          0x00000001u
-#define SDL_INIT_AUDIO          0x00000010u
-#define SDL_INIT_VIDEO          0x00000020u  /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
-#define SDL_INIT_JOYSTICK       0x00000200u  /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
-#define SDL_INIT_HAPTIC         0x00001000u
-#define SDL_INIT_GAMECONTROLLER 0x00002000u  /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
-#define SDL_INIT_EVENTS         0x00004000u
-#define SDL_INIT_SENSOR         0x00008000u
-#define SDL_INIT_NOPARACHUTE    0x00100000u  /**< compatibility; this flag is ignored. */
-#define SDL_INIT_EVERYTHING ( \
-                SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
-                SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \
-            )
-/* @} */
-
-/**
- *  This function initializes  the subsystems specified by \c flags
- */
-extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
-
-/**
- *  This function initializes specific SDL subsystems
- *
- *  Subsystem initialization is ref-counted, you must call
- *  SDL_QuitSubSystem() for each SDL_InitSubSystem() to correctly
- *  shutdown a subsystem manually (or call SDL_Quit() to force shutdown).
- *  If a subsystem is already loaded then this call will
- *  increase the ref-count and return.
- */
-extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);
-
-/**
- *  This function cleans up specific SDL subsystems
- */
-extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
-
-/**
- *  This function returns a mask of the specified subsystems which have
- *  previously been initialized.
- *
- *  If \c flags is 0, it returns a mask of all initialized subsystems.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);
-
-/**
- *  This function cleans up all initialized subsystems. You should
- *  call it upon all exit conditions.
- */
-extern DECLSPEC void SDLCALL SDL_Quit(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_assert.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_assert.h
deleted file mode 100644 (file)
index 8baecb6..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_assert_h_
-#define SDL_assert_h_
-
-#include "SDL_config.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef SDL_ASSERT_LEVEL
-#ifdef SDL_DEFAULT_ASSERT_LEVEL
-#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL
-#elif defined(_DEBUG) || defined(DEBUG) || \
-      (defined(__GNUC__) && !defined(__OPTIMIZE__))
-#define SDL_ASSERT_LEVEL 2
-#else
-#define SDL_ASSERT_LEVEL 1
-#endif
-#endif /* SDL_ASSERT_LEVEL */
-
-/*
-These are macros and not first class functions so that the debugger breaks
-on the assertion line and not in some random guts of SDL, and so each
-assert can have unique static variables associated with it.
-*/
-
-#if defined(_MSC_VER)
-/* Don't include intrin.h here because it contains C++ code */
-    extern void __cdecl __debugbreak(void);
-    #define SDL_TriggerBreakpoint() __debugbreak()
-#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) )
-    #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" )
-#elif defined(__386__) && defined(__WATCOMC__)
-    #define SDL_TriggerBreakpoint() { _asm { int 0x03 } }
-#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__)
-    #include <signal.h>
-    #define SDL_TriggerBreakpoint() raise(SIGTRAP)
-#else
-    /* How do we trigger breakpoints on this platform? */
-    #define SDL_TriggerBreakpoint()
-#endif
-
-#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
-#   define SDL_FUNCTION __func__
-#elif ((__GNUC__ >= 2) || defined(_MSC_VER) || defined (__WATCOMC__))
-#   define SDL_FUNCTION __FUNCTION__
-#else
-#   define SDL_FUNCTION "???"
-#endif
-#define SDL_FILE    __FILE__
-#define SDL_LINE    __LINE__
-
-/*
-sizeof (x) makes the compiler still parse the expression even without
-assertions enabled, so the code is always checked at compile time, but
-doesn't actually generate code for it, so there are no side effects or
-expensive checks at run time, just the constant size of what x WOULD be,
-which presumably gets optimized out as unused.
-This also solves the problem of...
-
-    int somevalue = blah();
-    SDL_assert(somevalue == 1);
-
-...which would cause compiles to complain that somevalue is unused if we
-disable assertions.
-*/
-
-/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking
-    this condition isn't constant. And looks like an owl's face! */
-#ifdef _MSC_VER  /* stupid /W4 warnings. */
-#define SDL_NULL_WHILE_LOOP_CONDITION (0,0)
-#else
-#define SDL_NULL_WHILE_LOOP_CONDITION (0)
-#endif
-
-#define SDL_disabled_assert(condition) \
-    do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)
-
-typedef enum
-{
-    SDL_ASSERTION_RETRY,  /**< Retry the assert immediately. */
-    SDL_ASSERTION_BREAK,  /**< Make the debugger trigger a breakpoint. */
-    SDL_ASSERTION_ABORT,  /**< Terminate the program. */
-    SDL_ASSERTION_IGNORE,  /**< Ignore the assert. */
-    SDL_ASSERTION_ALWAYS_IGNORE  /**< Ignore the assert from now on. */
-} SDL_AssertState;
-
-typedef struct SDL_AssertData
-{
-    int always_ignore;
-    unsigned int trigger_count;
-    const char *condition;
-    const char *filename;
-    int linenum;
-    const char *function;
-    const struct SDL_AssertData *next;
-} SDL_AssertData;
-
-#if (SDL_ASSERT_LEVEL > 0)
-
-/* Never call this directly. Use the SDL_assert* macros. */
-extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
-                                                             const char *,
-                                                             const char *, int)
-#if defined(__clang__)
-#if __has_feature(attribute_analyzer_noreturn)
-/* this tells Clang's static analysis that we're a custom assert function,
-   and that the analyzer should assume the condition was always true past this
-   SDL_assert test. */
-   __attribute__((analyzer_noreturn))
-#endif
-#endif
-;
-
-/* the do {} while(0) avoids dangling else problems:
-    if (x) SDL_assert(y); else blah();
-       ... without the do/while, the "else" could attach to this macro's "if".
-   We try to handle just the minimum we need here in a macro...the loop,
-   the static vars, and break points. The heavy lifting is handled in
-   SDL_ReportAssertion(), in SDL_assert.c.
-*/
-#define SDL_enabled_assert(condition) \
-    do { \
-        while ( !(condition) ) { \
-            static struct SDL_AssertData sdl_assert_data = { \
-                0, 0, #condition, 0, 0, 0, 0 \
-            }; \
-            const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \
-            if (sdl_assert_state == SDL_ASSERTION_RETRY) { \
-                continue; /* go again. */ \
-            } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \
-                SDL_TriggerBreakpoint(); \
-            } \
-            break; /* not retrying. */ \
-        } \
-    } while (SDL_NULL_WHILE_LOOP_CONDITION)
-
-#endif  /* enabled assertions support code */
-
-/* Enable various levels of assertions. */
-#if SDL_ASSERT_LEVEL == 0   /* assertions disabled */
-#   define SDL_assert(condition) SDL_disabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_disabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 1  /* release settings. */
-#   define SDL_assert(condition) SDL_disabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 2  /* normal settings. */
-#   define SDL_assert(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 3  /* paranoid settings. */
-#   define SDL_assert(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)
-#else
-#   error Unknown assertion level.
-#endif
-
-/* this assertion is never disabled at any level. */
-#define SDL_assert_always(condition) SDL_enabled_assert(condition)
-
-
-typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
-                                 const SDL_AssertData* data, void* userdata);
-
-/**
- *  \brief Set an application-defined assertion handler.
- *
- *  This allows an app to show its own assertion UI and/or force the
- *  response to an assertion failure. If the app doesn't provide this, SDL
- *  will try to do the right thing, popping up a system-specific GUI dialog,
- *  and probably minimizing any fullscreen windows.
- *
- *  This callback may fire from any thread, but it runs wrapped in a mutex, so
- *  it will only fire from one thread at a time.
- *
- *  Setting the callback to NULL restores SDL's original internal handler.
- *
- *  This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
- *
- *  Return SDL_AssertState value of how to handle the assertion failure.
- *
- *  \param handler Callback function, called when an assertion fails.
- *  \param userdata A pointer passed to the callback as-is.
- */
-extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
-                                            SDL_AssertionHandler handler,
-                                            void *userdata);
-
-/**
- *  \brief Get the default assertion handler.
- *
- *  This returns the function pointer that is called by default when an
- *   assertion is triggered. This is an internal function provided by SDL,
- *   that is used for assertions when SDL_SetAssertionHandler() hasn't been
- *   used to provide a different function.
- *
- *  \return The default SDL_AssertionHandler that is called when an assert triggers.
- */
-extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);
-
-/**
- *  \brief Get the current assertion handler.
- *
- *  This returns the function pointer that is called when an assertion is
- *   triggered. This is either the value last passed to
- *   SDL_SetAssertionHandler(), or if no application-specified function is
- *   set, is equivalent to calling SDL_GetDefaultAssertionHandler().
- *
- *   \param puserdata Pointer to a void*, which will store the "userdata"
- *                    pointer that was passed to SDL_SetAssertionHandler().
- *                    This value will always be NULL for the default handler.
- *                    If you don't care about this data, it is safe to pass
- *                    a NULL pointer to this function to ignore it.
- *  \return The SDL_AssertionHandler that is called when an assert triggers.
- */
-extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);
-
-/**
- *  \brief Get a list of all assertion failures.
- *
- *  Get all assertions triggered since last call to SDL_ResetAssertionReport(),
- *  or the start of the program.
- *
- *  The proper way to examine this data looks something like this:
- *
- *  <code>
- *  const SDL_AssertData *item = SDL_GetAssertionReport();
- *  while (item) {
- *      printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n",
- *             item->condition, item->function, item->filename,
- *             item->linenum, item->trigger_count,
- *             item->always_ignore ? "yes" : "no");
- *      item = item->next;
- *  }
- *  </code>
- *
- *  \return List of all assertions.
- *  \sa SDL_ResetAssertionReport
- */
-extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void);
-
-/**
- *  \brief Reset the list of all assertion failures.
- *
- *  Reset list of all assertions triggered.
- *
- *  \sa SDL_GetAssertionReport
- */
-extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);
-
-
-/* these had wrong naming conventions until 2.0.4. Please update your app! */
-#define SDL_assert_state SDL_AssertState
-#define SDL_assert_data SDL_AssertData
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_assert_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_atomic.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_atomic.h
deleted file mode 100644 (file)
index deee35f..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_atomic.h
- *
- * Atomic operations.
- *
- * IMPORTANT:
- * If you are not an expert in concurrent lockless programming, you should
- * only be using the atomic lock and reference counting functions in this
- * file.  In all other cases you should be protecting your data structures
- * with full mutexes.
- *
- * The list of "safe" functions to use are:
- *  SDL_AtomicLock()
- *  SDL_AtomicUnlock()
- *  SDL_AtomicIncRef()
- *  SDL_AtomicDecRef()
- *
- * Seriously, here be dragons!
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- *
- * You can find out a little more about lockless programming and the
- * subtle issues that can arise here:
- * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx
- *
- * There's also lots of good information here:
- * http://www.1024cores.net/home/lock-free-algorithms
- * http://preshing.com/
- *
- * These operations may or may not actually be implemented using
- * processor specific atomic operations. When possible they are
- * implemented as true processor specific atomic operations. When that
- * is not possible the are implemented using locks that *do* use the
- * available atomic operations.
- *
- * All of the atomic operations that modify memory are full memory barriers.
- */
-
-#ifndef SDL_atomic_h_
-#define SDL_atomic_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_platform.h"
-
-#include "begin_code.h"
-
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \name SDL AtomicLock
- *
- * The atomic locks are efficient spinlocks using CPU instructions,
- * but are vulnerable to starvation and can spin forever if a thread
- * holding a lock has been terminated.  For this reason you should
- * minimize the code executed inside an atomic lock and never do
- * expensive things like API or system calls while holding them.
- *
- * The atomic locks are not safe to lock recursively.
- *
- * Porting Note:
- * The spin lock functions and type are required and can not be
- * emulated because they are used in the atomic emulation code.
- */
-/* @{ */
-
-typedef int SDL_SpinLock;
-
-/**
- * \brief Try to lock a spin lock by setting it to a non-zero value.
- *
- * \param lock Points to the lock.
- *
- * \return SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already held.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock);
-
-/**
- * \brief Lock a spin lock by setting it to a non-zero value.
- *
- * \param lock Points to the lock.
- */
-extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock);
-
-/**
- * \brief Unlock a spin lock by setting it to 0. Always returns immediately
- *
- * \param lock Points to the lock.
- */
-extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock);
-
-/* @} *//* SDL AtomicLock */
-
-
-/**
- * The compiler barrier prevents the compiler from reordering
- * reads and writes to globally visible variables across the call.
- */
-#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__)
-void _ReadWriteBarrier(void);
-#pragma intrinsic(_ReadWriteBarrier)
-#define SDL_CompilerBarrier()   _ReadWriteBarrier()
-#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
-/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */
-#define SDL_CompilerBarrier()   __asm__ __volatile__ ("" : : : "memory")
-#elif defined(__WATCOMC__)
-extern _inline void SDL_CompilerBarrier (void);
-#pragma aux SDL_CompilerBarrier = "" parm [] modify exact [];
-#else
-#define SDL_CompilerBarrier()   \
-{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); }
-#endif
-
-/**
- * Memory barriers are designed to prevent reads and writes from being
- * reordered by the compiler and being seen out of order on multi-core CPUs.
- *
- * A typical pattern would be for thread A to write some data and a flag,
- * and for thread B to read the flag and get the data. In this case you
- * would insert a release barrier between writing the data and the flag,
- * guaranteeing that the data write completes no later than the flag is
- * written, and you would insert an acquire barrier between reading the
- * flag and reading the data, to ensure that all the reads associated
- * with the flag have completed.
- *
- * In this pattern you should always see a release barrier paired with
- * an acquire barrier and you should gate the data reads/writes with a
- * single flag variable.
- *
- * For more information on these semantics, take a look at the blog post:
- * http://preshing.com/20120913/acquire-and-release-semantics
- */
-extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void);
-extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
-
-#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("lwsync" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("lwsync" : : : "memory")
-#elif defined(__GNUC__) && defined(__aarch64__)
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#elif defined(__GNUC__) && defined(__arm__)
-#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */
-/* Information from:
-   https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19
-
-   The Linux kernel provides a helper function which provides the right code for a memory barrier,
-   hard-coded at address 0xffff0fa0
-*/
-typedef void (*SDL_KernelMemoryBarrierFunc)();
-#define SDL_MemoryBarrierRelease()     ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
-#define SDL_MemoryBarrierAcquire()     ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
-#elif 0 /* defined(__QNXNTO__) */
-#include <sys/cpuinline.h>
-
-#define SDL_MemoryBarrierRelease()   __cpu_membarrier()
-#define SDL_MemoryBarrierAcquire()   __cpu_membarrier()
-#else
-#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__)
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__)
-#ifdef __thumb__
-/* The mcr instruction isn't available in thumb mode, use real functions */
-#define SDL_MEMORY_BARRIER_USES_FUNCTION
-#define SDL_MemoryBarrierRelease()   SDL_MemoryBarrierReleaseFunction()
-#define SDL_MemoryBarrierAcquire()   SDL_MemoryBarrierAcquireFunction()
-#else
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
-#endif /* __thumb__ */
-#else
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("" : : : "memory")
-#endif /* __LINUX__ || __ANDROID__ */
-#endif /* __GNUC__ && __arm__ */
-#else
-#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
-/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */
-#include <mbarrier.h>
-#define SDL_MemoryBarrierRelease()  __machine_rel_barrier()
-#define SDL_MemoryBarrierAcquire()  __machine_acq_barrier()
-#else
-/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */
-#define SDL_MemoryBarrierRelease()  SDL_CompilerBarrier()
-#define SDL_MemoryBarrierAcquire()  SDL_CompilerBarrier()
-#endif
-#endif
-
-/**
- * \brief A type representing an atomic integer value.  It is a struct
- *        so people don't accidentally use numeric operations on it.
- */
-typedef struct { int value; } SDL_atomic_t;
-
-/**
- * \brief Set an atomic variable to a new value if it is currently an old value.
- *
- * \return SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.
- *
- * \note If you don't know what this function is for, you shouldn't use it!
-*/
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval);
-
-/**
- * \brief Set an atomic variable to a value.
- *
- * \return The previous value of the atomic variable.
- */
-extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);
-
-/**
- * \brief Get the value of an atomic variable
- */
-extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);
-
-/**
- * \brief Add to an atomic variable.
- *
- * \return The previous value of the atomic variable.
- *
- * \note This same style can be used for any number operation
- */
-extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
-
-/**
- * \brief Increment an atomic variable used as a reference count.
- */
-#ifndef SDL_AtomicIncRef
-#define SDL_AtomicIncRef(a)    SDL_AtomicAdd(a, 1)
-#endif
-
-/**
- * \brief Decrement an atomic variable used as a reference count.
- *
- * \return SDL_TRUE if the variable reached zero after decrementing,
- *         SDL_FALSE otherwise
- */
-#ifndef SDL_AtomicDecRef
-#define SDL_AtomicDecRef(a)    (SDL_AtomicAdd(a, -1) == 1)
-#endif
-
-/**
- * \brief Set a pointer to a new value if it is currently an old value.
- *
- * \return SDL_TRUE if the pointer was set, SDL_FALSE otherwise.
- *
- * \note If you don't know what this function is for, you shouldn't use it!
-*/
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval);
-
-/**
- * \brief Set a pointer to a value atomically.
- *
- * \return The previous value of the pointer.
- */
-extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);
-
-/**
- * \brief Get the value of a pointer atomically.
- */
-extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-
-#include "close_code.h"
-
-#endif /* SDL_atomic_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_audio.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_audio.h
deleted file mode 100644 (file)
index 305c01a..0000000
+++ /dev/null
@@ -1,859 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_audio.h
- *
- *  Access to the raw audio mixing buffer for the SDL library.
- */
-
-#ifndef SDL_audio_h_
-#define SDL_audio_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_endian.h"
-#include "SDL_mutex.h"
-#include "SDL_thread.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Audio format flags.
- *
- *  These are what the 16 bits in SDL_AudioFormat currently mean...
- *  (Unspecified bits are always zero).
- *
- *  \verbatim
-    ++-----------------------sample is signed if set
-    ||
-    ||       ++-----------sample is bigendian if set
-    ||       ||
-    ||       ||          ++---sample is float if set
-    ||       ||          ||
-    ||       ||          || +---sample bit size---+
-    ||       ||          || |                     |
-    15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
-    \endverbatim
- *
- *  There are macros in SDL 2.0 and later to query these bits.
- */
-typedef Uint16 SDL_AudioFormat;
-
-/**
- *  \name Audio flags
- */
-/* @{ */
-
-#define SDL_AUDIO_MASK_BITSIZE       (0xFF)
-#define SDL_AUDIO_MASK_DATATYPE      (1<<8)
-#define SDL_AUDIO_MASK_ENDIAN        (1<<12)
-#define SDL_AUDIO_MASK_SIGNED        (1<<15)
-#define SDL_AUDIO_BITSIZE(x)         (x & SDL_AUDIO_MASK_BITSIZE)
-#define SDL_AUDIO_ISFLOAT(x)         (x & SDL_AUDIO_MASK_DATATYPE)
-#define SDL_AUDIO_ISBIGENDIAN(x)     (x & SDL_AUDIO_MASK_ENDIAN)
-#define SDL_AUDIO_ISSIGNED(x)        (x & SDL_AUDIO_MASK_SIGNED)
-#define SDL_AUDIO_ISINT(x)           (!SDL_AUDIO_ISFLOAT(x))
-#define SDL_AUDIO_ISLITTLEENDIAN(x)  (!SDL_AUDIO_ISBIGENDIAN(x))
-#define SDL_AUDIO_ISUNSIGNED(x)      (!SDL_AUDIO_ISSIGNED(x))
-
-/**
- *  \name Audio format flags
- *
- *  Defaults to LSB byte order.
- */
-/* @{ */
-#define AUDIO_U8        0x0008  /**< Unsigned 8-bit samples */
-#define AUDIO_S8        0x8008  /**< Signed 8-bit samples */
-#define AUDIO_U16LSB    0x0010  /**< Unsigned 16-bit samples */
-#define AUDIO_S16LSB    0x8010  /**< Signed 16-bit samples */
-#define AUDIO_U16MSB    0x1010  /**< As above, but big-endian byte order */
-#define AUDIO_S16MSB    0x9010  /**< As above, but big-endian byte order */
-#define AUDIO_U16       AUDIO_U16LSB
-#define AUDIO_S16       AUDIO_S16LSB
-/* @} */
-
-/**
- *  \name int32 support
- */
-/* @{ */
-#define AUDIO_S32LSB    0x8020  /**< 32-bit integer samples */
-#define AUDIO_S32MSB    0x9020  /**< As above, but big-endian byte order */
-#define AUDIO_S32       AUDIO_S32LSB
-/* @} */
-
-/**
- *  \name float32 support
- */
-/* @{ */
-#define AUDIO_F32LSB    0x8120  /**< 32-bit floating point samples */
-#define AUDIO_F32MSB    0x9120  /**< As above, but big-endian byte order */
-#define AUDIO_F32       AUDIO_F32LSB
-/* @} */
-
-/**
- *  \name Native audio byte ordering
- */
-/* @{ */
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-#define AUDIO_U16SYS    AUDIO_U16LSB
-#define AUDIO_S16SYS    AUDIO_S16LSB
-#define AUDIO_S32SYS    AUDIO_S32LSB
-#define AUDIO_F32SYS    AUDIO_F32LSB
-#else
-#define AUDIO_U16SYS    AUDIO_U16MSB
-#define AUDIO_S16SYS    AUDIO_S16MSB
-#define AUDIO_S32SYS    AUDIO_S32MSB
-#define AUDIO_F32SYS    AUDIO_F32MSB
-#endif
-/* @} */
-
-/**
- *  \name Allow change flags
- *
- *  Which audio format changes are allowed when opening a device.
- */
-/* @{ */
-#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE    0x00000001
-#define SDL_AUDIO_ALLOW_FORMAT_CHANGE       0x00000002
-#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE     0x00000004
-#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE      0x00000008
-#define SDL_AUDIO_ALLOW_ANY_CHANGE          (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE)
-/* @} */
-
-/* @} *//* Audio flags */
-
-/**
- *  This function is called when the audio device needs more data.
- *
- *  \param userdata An application-specific parameter saved in
- *                  the SDL_AudioSpec structure
- *  \param stream A pointer to the audio data buffer.
- *  \param len    The length of that buffer in bytes.
- *
- *  Once the callback returns, the buffer will no longer be valid.
- *  Stereo samples are stored in a LRLRLR ordering.
- *
- *  You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
- *  you like. Just open your audio device with a NULL callback.
- */
-typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
-                                            int len);
-
-/**
- *  The calculated values in this structure are calculated by SDL_OpenAudio().
- *
- *  For multi-channel audio, the default SDL channel mapping is:
- *  2:  FL FR                       (stereo)
- *  3:  FL FR LFE                   (2.1 surround)
- *  4:  FL FR BL BR                 (quad)
- *  5:  FL FR FC BL BR              (quad + center)
- *  6:  FL FR FC LFE SL SR          (5.1 surround - last two can also be BL BR)
- *  7:  FL FR FC LFE BC SL SR       (6.1 surround)
- *  8:  FL FR FC LFE BL BR SL SR    (7.1 surround)
- */
-typedef struct SDL_AudioSpec
-{
-    int freq;                   /**< DSP frequency -- samples per second */
-    SDL_AudioFormat format;     /**< Audio data format */
-    Uint8 channels;             /**< Number of channels: 1 mono, 2 stereo */
-    Uint8 silence;              /**< Audio buffer silence value (calculated) */
-    Uint16 samples;             /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */
-    Uint16 padding;             /**< Necessary for some compile environments */
-    Uint32 size;                /**< Audio buffer size in bytes (calculated) */
-    SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
-    void *userdata;             /**< Userdata passed to callback (ignored for NULL callbacks). */
-} SDL_AudioSpec;
-
-
-struct SDL_AudioCVT;
-typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
-                                          SDL_AudioFormat format);
-
-/**
- *  \brief Upper limit of filters in SDL_AudioCVT
- *
- *  The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is
- *  currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers,
- *  one of which is the terminating NULL pointer.
- */
-#define SDL_AUDIOCVT_MAX_FILTERS 9
-
-/**
- *  \struct SDL_AudioCVT
- *  \brief A structure to hold a set of audio conversion filters and buffers.
- *
- *  Note that various parts of the conversion pipeline can take advantage
- *  of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require
- *  you to pass it aligned data, but can possibly run much faster if you
- *  set both its (buf) field to a pointer that is aligned to 16 bytes, and its
- *  (len) field to something that's a multiple of 16, if possible.
- */
-#ifdef __GNUC__
-/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't
-   pad it out to 88 bytes to guarantee ABI compatibility between compilers.
-   vvv
-   The next time we rev the ABI, make sure to size the ints and add padding.
-*/
-#define SDL_AUDIOCVT_PACKED __attribute__((packed))
-#else
-#define SDL_AUDIOCVT_PACKED
-#endif
-/* */
-typedef struct SDL_AudioCVT
-{
-    int needed;                 /**< Set to 1 if conversion possible */
-    SDL_AudioFormat src_format; /**< Source audio format */
-    SDL_AudioFormat dst_format; /**< Target audio format */
-    double rate_incr;           /**< Rate conversion increment */
-    Uint8 *buf;                 /**< Buffer to hold entire audio data */
-    int len;                    /**< Length of original audio buffer */
-    int len_cvt;                /**< Length of converted audio buffer */
-    int len_mult;               /**< buffer must be len*len_mult big */
-    double len_ratio;           /**< Given len, final size is len*len_ratio */
-    SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */
-    int filter_index;           /**< Current audio conversion function */
-} SDL_AUDIOCVT_PACKED SDL_AudioCVT;
-
-
-/* Function prototypes */
-
-/**
- *  \name Driver discovery functions
- *
- *  These functions return the list of built in audio drivers, in the
- *  order that they are normally initialized by default.
- */
-/* @{ */
-extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
-extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
-/* @} */
-
-/**
- *  \name Initialization and cleanup
- *
- *  \internal These functions are used internally, and should not be used unless
- *            you have a specific need to specify the audio driver you want to
- *            use.  You should normally use SDL_Init() or SDL_InitSubSystem().
- */
-/* @{ */
-extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);
-extern DECLSPEC void SDLCALL SDL_AudioQuit(void);
-/* @} */
-
-/**
- *  This function returns the name of the current audio driver, or NULL
- *  if no driver has been initialized.
- */
-extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
-
-/**
- *  This function opens the audio device with the desired parameters, and
- *  returns 0 if successful, placing the actual hardware parameters in the
- *  structure pointed to by \c obtained.  If \c obtained is NULL, the audio
- *  data passed to the callback function will be guaranteed to be in the
- *  requested format, and will be automatically converted to the hardware
- *  audio format if necessary.  This function returns -1 if it failed
- *  to open the audio device, or couldn't set up the audio thread.
- *
- *  When filling in the desired audio spec structure,
- *    - \c desired->freq should be the desired audio frequency in samples-per-
- *      second.
- *    - \c desired->format should be the desired audio format.
- *    - \c desired->samples is the desired size of the audio buffer, in
- *      samples.  This number should be a power of two, and may be adjusted by
- *      the audio driver to a value more suitable for the hardware.  Good values
- *      seem to range between 512 and 8096 inclusive, depending on the
- *      application and CPU speed.  Smaller values yield faster response time,
- *      but can lead to underflow if the application is doing heavy processing
- *      and cannot fill the audio buffer in time.  A stereo sample consists of
- *      both right and left channels in LR ordering.
- *      Note that the number of samples is directly related to time by the
- *      following formula:  \code ms = (samples*1000)/freq \endcode
- *    - \c desired->size is the size in bytes of the audio buffer, and is
- *      calculated by SDL_OpenAudio().
- *    - \c desired->silence is the value used to set the buffer to silence,
- *      and is calculated by SDL_OpenAudio().
- *    - \c desired->callback should be set to a function that will be called
- *      when the audio device is ready for more data.  It is passed a pointer
- *      to the audio buffer, and the length in bytes of the audio buffer.
- *      This function usually runs in a separate thread, and so you should
- *      protect data structures that it accesses by calling SDL_LockAudio()
- *      and SDL_UnlockAudio() in your code. Alternately, you may pass a NULL
- *      pointer here, and call SDL_QueueAudio() with some frequency, to queue
- *      more audio samples to be played (or for capture devices, call
- *      SDL_DequeueAudio() with some frequency, to obtain audio samples).
- *    - \c desired->userdata is passed as the first parameter to your callback
- *      function. If you passed a NULL callback, this value is ignored.
- *
- *  The audio device starts out playing silence when it's opened, and should
- *  be enabled for playing by calling \c SDL_PauseAudio(0) when you are ready
- *  for your audio callback function to be called.  Since the audio driver
- *  may modify the requested size of the audio buffer, you should allocate
- *  any local mixing buffers after you open the audio device.
- */
-extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
-                                          SDL_AudioSpec * obtained);
-
-/**
- *  SDL Audio Device IDs.
- *
- *  A successful call to SDL_OpenAudio() is always device id 1, and legacy
- *  SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
- *  always returns devices >= 2 on success. The legacy calls are good both
- *  for backwards compatibility and when you don't care about multiple,
- *  specific, or capture devices.
- */
-typedef Uint32 SDL_AudioDeviceID;
-
-/**
- *  Get the number of available devices exposed by the current driver.
- *  Only valid after a successfully initializing the audio subsystem.
- *  Returns -1 if an explicit list of devices can't be determined; this is
- *  not an error. For example, if SDL is set up to talk to a remote audio
- *  server, it can't list every one available on the Internet, but it will
- *  still allow a specific host to be specified to SDL_OpenAudioDevice().
- *
- *  In many common cases, when this function returns a value <= 0, it can still
- *  successfully open the default device (NULL for first argument of
- *  SDL_OpenAudioDevice()).
- */
-extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);
-
-/**
- *  Get the human-readable name of a specific audio device.
- *  Must be a value between 0 and (number of audio devices-1).
- *  Only valid after a successfully initializing the audio subsystem.
- *  The values returned by this function reflect the latest call to
- *  SDL_GetNumAudioDevices(); recall that function to redetect available
- *  hardware.
- *
- *  The string returned by this function is UTF-8 encoded, read-only, and
- *  managed internally. You are not to free it. If you need to keep the
- *  string for any length of time, you should make your own copy of it, as it
- *  will be invalid next time any of several other SDL functions is called.
- */
-extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
-                                                           int iscapture);
-
-
-/**
- *  Open a specific audio device. Passing in a device name of NULL requests
- *  the most reasonable default (and is equivalent to calling SDL_OpenAudio()).
- *
- *  The device name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
- *  some drivers allow arbitrary and driver-specific strings, such as a
- *  hostname/IP address for a remote audio server, or a filename in the
- *  diskaudio driver.
- *
- *  \return 0 on error, a valid device ID that is >= 2 on success.
- *
- *  SDL_OpenAudio(), unlike this function, always acts on device ID 1.
- */
-extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(const char
-                                                              *device,
-                                                              int iscapture,
-                                                              const
-                                                              SDL_AudioSpec *
-                                                              desired,
-                                                              SDL_AudioSpec *
-                                                              obtained,
-                                                              int
-                                                              allowed_changes);
-
-
-
-/**
- *  \name Audio state
- *
- *  Get the current audio state.
- */
-/* @{ */
-typedef enum
-{
-    SDL_AUDIO_STOPPED = 0,
-    SDL_AUDIO_PLAYING,
-    SDL_AUDIO_PAUSED
-} SDL_AudioStatus;
-extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
-
-extern DECLSPEC SDL_AudioStatus SDLCALL
-SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
-/* @} *//* Audio State */
-
-/**
- *  \name Pause audio functions
- *
- *  These functions pause and unpause the audio callback processing.
- *  They should be called with a parameter of 0 after opening the audio
- *  device to start playing sound.  This is so you can safely initialize
- *  data for your callback function after opening the audio device.
- *  Silence will be written to the audio device during the pause.
- */
-/* @{ */
-extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
-extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
-                                                  int pause_on);
-/* @} *//* Pause audio functions */
-
-/**
- *  \brief Load the audio data of a WAVE file into memory
- *
- *  Loading a WAVE file requires \c src, \c spec, \c audio_buf and \c audio_len
- *  to be valid pointers. The entire data portion of the file is then loaded
- *  into memory and decoded if necessary.
- *
- *  If \c freesrc is non-zero, the data source gets automatically closed and
- *  freed before the function returns.
- *
- *  Supported are RIFF WAVE files with the formats PCM (8, 16, 24, and 32 bits),
- *  IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and A-law and
- *  Âµ-law (8 bits). Other formats are currently unsupported and cause an error.
- *
- *  If this function succeeds, the pointer returned by it is equal to \c spec
- *  and the pointer to the audio data allocated by the function is written to
- *  \c audio_buf and its length in bytes to \c audio_len. The \ref SDL_AudioSpec
- *  members \c freq, \c channels, and \c format are set to the values of the
- *  audio data in the buffer. The \c samples member is set to a sane default and
- *  all others are set to zero.
- *
- *  It's necessary to use SDL_FreeWAV() to free the audio data returned in
- *  \c audio_buf when it is no longer used.
- *
- *  Because of the underspecification of the Waveform format, there are many
- *  problematic files in the wild that cause issues with strict decoders. To
- *  provide compatibility with these files, this decoder is lenient in regards
- *  to the truncation of the file, the fact chunk, and the size of the RIFF
- *  chunk. The hints SDL_HINT_WAVE_RIFF_CHUNK_SIZE, SDL_HINT_WAVE_TRUNCATION,
- *  and SDL_HINT_WAVE_FACT_CHUNK can be used to tune the behavior of the
- *  loading process.
- *
- *  Any file that is invalid (due to truncation, corruption, or wrong values in
- *  the headers), too big, or unsupported causes an error. Additionally, any
- *  critical I/O error from the data source will terminate the loading process
- *  with an error. The function returns NULL on error and in all cases (with the
- *  exception of \c src being NULL), an appropriate error message will be set.
- *
- *  It is required that the data source supports seeking.
- *
- *  Example:
- *  \code
- *      SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...);
- *  \endcode
- *
- *  \param src The data source with the WAVE data
- *  \param freesrc A integer value that makes the function close the data source if non-zero
- *  \param spec A pointer filled with the audio format of the audio data
- *  \param audio_buf A pointer filled with the audio data allocated by the function
- *  \param audio_len A pointer filled with the length of the audio data buffer in bytes
- *  \return NULL on error, or non-NULL on success.
- */
-extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
-                                                      int freesrc,
-                                                      SDL_AudioSpec * spec,
-                                                      Uint8 ** audio_buf,
-                                                      Uint32 * audio_len);
-
-/**
- *  Loads a WAV from a file.
- *  Compatibility convenience function.
- */
-#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
-    SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
-
-/**
- *  This function frees data previously allocated with SDL_LoadWAV_RW()
- */
-extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
-
-/**
- *  This function takes a source format and rate and a destination format
- *  and rate, and initializes the \c cvt structure with information needed
- *  by SDL_ConvertAudio() to convert a buffer of audio data from one format
- *  to the other. An unsupported format causes an error and -1 will be returned.
- *
- *  \return 0 if no conversion is needed, 1 if the audio filter is set up,
- *  or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
-                                              SDL_AudioFormat src_format,
-                                              Uint8 src_channels,
-                                              int src_rate,
-                                              SDL_AudioFormat dst_format,
-                                              Uint8 dst_channels,
-                                              int dst_rate);
-
-/**
- *  Once you have initialized the \c cvt structure using SDL_BuildAudioCVT(),
- *  created an audio buffer \c cvt->buf, and filled it with \c cvt->len bytes of
- *  audio data in the source format, this function will convert it in-place
- *  to the desired format.
- *
- *  The data conversion may expand the size of the audio data, so the buffer
- *  \c cvt->buf should be allocated after the \c cvt structure is initialized by
- *  SDL_BuildAudioCVT(), and should be \c cvt->len*cvt->len_mult bytes long.
- *
- *  \return 0 on success or -1 if \c cvt->buf is NULL.
- */
-extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
-
-/* SDL_AudioStream is a new audio conversion interface.
-   The benefits vs SDL_AudioCVT:
-    - it can handle resampling data in chunks without generating
-      artifacts, when it doesn't have the complete buffer available.
-    - it can handle incoming data in any variable size.
-    - You push data as you have it, and pull it when you need it
- */
-/* this is opaque to the outside world. */
-struct _SDL_AudioStream;
-typedef struct _SDL_AudioStream SDL_AudioStream;
-
-/**
- *  Create a new audio stream
- *
- *  \param src_format The format of the source audio
- *  \param src_channels The number of channels of the source audio
- *  \param src_rate The sampling rate of the source audio
- *  \param dst_format The format of the desired audio output
- *  \param dst_channels The number of channels of the desired audio output
- *  \param dst_rate The sampling rate of the desired audio output
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format,
-                                           const Uint8 src_channels,
-                                           const int src_rate,
-                                           const SDL_AudioFormat dst_format,
-                                           const Uint8 dst_channels,
-                                           const int dst_rate);
-
-/**
- *  Add data to be converted/resampled to the stream
- *
- *  \param stream The stream the audio data is being added to
- *  \param buf A pointer to the audio data to add
- *  \param len The number of bytes to write to the stream
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len);
-
-/**
- *  Get converted/resampled data from the stream
- *
- *  \param stream The stream the audio is being requested from
- *  \param buf A buffer to fill with audio data
- *  \param len The maximum number of bytes to fill
- *  \return The number of bytes read from the stream, or -1 on error
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len);
-
-/**
- * Get the number of converted/resampled bytes available. The stream may be
- *  buffering data behind the scenes until it has enough to resample
- *  correctly, so this number might be lower than what you expect, or even
- *  be zero. Add more data or flush the stream if you need the data now.
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream);
-
-/**
- * Tell the stream that you're done sending data, and anything being buffered
- *  should be converted/resampled and made available immediately.
- *
- * It is legal to add more data to a stream after flushing, but there will
- *  be audio gaps in the output. Generally this is intended to signal the
- *  end of input, so the complete output becomes available.
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream);
-
-/**
- *  Clear any pending data in the stream without converting it
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream);
-
-/**
- * Free an audio stream
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- */
-extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream);
-
-#define SDL_MIX_MAXVOLUME 128
-/**
- *  This takes two audio buffers of the playing audio format and mixes
- *  them, performing addition, volume adjustment, and overflow clipping.
- *  The volume ranges from 0 - 128, and should be set to ::SDL_MIX_MAXVOLUME
- *  for full audio volume.  Note this does not change hardware volume.
- *  This is provided for convenience -- you can mix your own audio data.
- */
-extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
-                                          Uint32 len, int volume);
-
-/**
- *  This works like SDL_MixAudio(), but you specify the audio format instead of
- *  using the format of audio device 1. Thus it can be used when no audio
- *  device is open at all.
- */
-extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
-                                                const Uint8 * src,
-                                                SDL_AudioFormat format,
-                                                Uint32 len, int volume);
-
-/**
- *  Queue more audio on non-callback devices.
- *
- *  (If you are looking to retrieve queued audio from a non-callback capture
- *  device, you want SDL_DequeueAudio() instead. This will return -1 to
- *  signify an error if you use it with capture devices.)
- *
- *  SDL offers two ways to feed audio to the device: you can either supply a
- *  callback that SDL triggers with some frequency to obtain more audio
- *  (pull method), or you can supply no callback, and then SDL will expect
- *  you to supply data at regular intervals (push method) with this function.
- *
- *  There are no limits on the amount of data you can queue, short of
- *  exhaustion of address space. Queued data will drain to the device as
- *  necessary without further intervention from you. If the device needs
- *  audio but there is not enough queued, it will play silence to make up
- *  the difference. This means you will have skips in your audio playback
- *  if you aren't routinely queueing sufficient data.
- *
- *  This function copies the supplied data, so you are safe to free it when
- *  the function returns. This function is thread-safe, but queueing to the
- *  same device from two threads at once does not promise which buffer will
- *  be queued first.
- *
- *  You may not queue audio on a device that is using an application-supplied
- *  callback; doing so returns an error. You have to use the audio callback
- *  or queue audio with this function, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before queueing; SDL
- *  handles locking internally for this function.
- *
- *  \param dev The device ID to which we will queue audio.
- *  \param data The data to queue to the device for later playback.
- *  \param len The number of bytes (not samples!) to which (data) points.
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_GetQueuedAudioSize
- *  \sa SDL_ClearQueuedAudio
- */
-extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
-
-/**
- *  Dequeue more audio on non-callback devices.
- *
- *  (If you are looking to queue audio for output on a non-callback playback
- *  device, you want SDL_QueueAudio() instead. This will always return 0
- *  if you use it with playback devices.)
- *
- *  SDL offers two ways to retrieve audio from a capture device: you can
- *  either supply a callback that SDL triggers with some frequency as the
- *  device records more audio data, (push method), or you can supply no
- *  callback, and then SDL will expect you to retrieve data at regular
- *  intervals (pull method) with this function.
- *
- *  There are no limits on the amount of data you can queue, short of
- *  exhaustion of address space. Data from the device will keep queuing as
- *  necessary without further intervention from you. This means you will
- *  eventually run out of memory if you aren't routinely dequeueing data.
- *
- *  Capture devices will not queue data when paused; if you are expecting
- *  to not need captured audio for some length of time, use
- *  SDL_PauseAudioDevice() to stop the capture device from queueing more
- *  data. This can be useful during, say, level loading times. When
- *  unpaused, capture devices will start queueing data from that point,
- *  having flushed any capturable data available while paused.
- *
- *  This function is thread-safe, but dequeueing from the same device from
- *  two threads at once does not promise which thread will dequeued data
- *  first.
- *
- *  You may not dequeue audio from a device that is using an
- *  application-supplied callback; doing so returns an error. You have to use
- *  the audio callback, or dequeue audio with this function, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before queueing; SDL
- *  handles locking internally for this function.
- *
- *  \param dev The device ID from which we will dequeue audio.
- *  \param data A pointer into where audio data should be copied.
- *  \param len The number of bytes (not samples!) to which (data) points.
- *  \return number of bytes dequeued, which could be less than requested.
- *
- *  \sa SDL_GetQueuedAudioSize
- *  \sa SDL_ClearQueuedAudio
- */
-extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len);
-
-/**
- *  Get the number of bytes of still-queued audio.
- *
- *  For playback device:
- *
- *    This is the number of bytes that have been queued for playback with
- *    SDL_QueueAudio(), but have not yet been sent to the hardware. This
- *    number may shrink at any time, so this only informs of pending data.
- *
- *    Once we've sent it to the hardware, this function can not decide the
- *    exact byte boundary of what has been played. It's possible that we just
- *    gave the hardware several kilobytes right before you called this
- *    function, but it hasn't played any of it yet, or maybe half of it, etc.
- *
- *  For capture devices:
- *
- *    This is the number of bytes that have been captured by the device and
- *    are waiting for you to dequeue. This number may grow at any time, so
- *    this only informs of the lower-bound of available data.
- *
- *  You may not queue audio on a device that is using an application-supplied
- *  callback; calling this function on such a device always returns 0.
- *  You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use
- *  the audio callback, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before querying; SDL
- *  handles locking internally for this function.
- *
- *  \param dev The device ID of which we will query queued audio size.
- *  \return Number of bytes (not samples!) of queued audio.
- *
- *  \sa SDL_QueueAudio
- *  \sa SDL_ClearQueuedAudio
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
-
-/**
- *  Drop any queued audio data. For playback devices, this is any queued data
- *  still waiting to be submitted to the hardware. For capture devices, this
- *  is any data that was queued by the device that hasn't yet been dequeued by
- *  the application.
- *
- *  Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For
- *  playback devices, the hardware will start playing silence if more audio
- *  isn't queued. Unpaused capture devices will start filling the queue again
- *  as soon as they have more data available (which, depending on the state
- *  of the hardware and the thread, could be before this function call
- *  returns!).
- *
- *  This will not prevent playback of queued audio that's already been sent
- *  to the hardware, as we can not undo that, so expect there to be some
- *  fraction of a second of audio that might still be heard. This can be
- *  useful if you want to, say, drop any pending music during a level change
- *  in your game.
- *
- *  You may not queue audio on a device that is using an application-supplied
- *  callback; calling this function on such a device is always a no-op.
- *  You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use
- *  the audio callback, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before clearing the
- *  queue; SDL handles locking internally for this function.
- *
- *  This function always succeeds and thus returns void.
- *
- *  \param dev The device ID of which to clear the audio queue.
- *
- *  \sa SDL_QueueAudio
- *  \sa SDL_GetQueuedAudioSize
- */
-extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
-
-
-/**
- *  \name Audio lock functions
- *
- *  The lock manipulated by these functions protects the callback function.
- *  During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that
- *  the callback function is not running.  Do not call these from the callback
- *  function or you will cause deadlock.
- */
-/* @{ */
-extern DECLSPEC void SDLCALL SDL_LockAudio(void);
-extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
-extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
-extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
-/* @} *//* Audio lock functions */
-
-/**
- *  This function shuts down audio processing and closes the audio device.
- */
-extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
-extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_audio_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_bits.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_bits.h
deleted file mode 100644 (file)
index b116cc8..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_bits.h
- *
- *  Functions for fiddling with bits and bitmasks.
- */
-
-#ifndef SDL_bits_h_
-#define SDL_bits_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_bits.h
- */
-
-/**
- *  Get the index of the most significant bit. Result is undefined when called
- *  with 0. This operation can also be stated as "count leading zeroes" and
- *  "log base 2".
- *
- *  \return Index of the most significant bit, or -1 if the value is 0.
- */
-#if defined(__WATCOMC__) && defined(__386__)
-extern _inline int _SDL_clz_watcom (Uint32);
-#pragma aux _SDL_clz_watcom = \
-    "bsr eax, eax" \
-    "xor eax, 31" \
-    parm [eax] nomemory \
-    value [eax] \
-    modify exact [eax] nomemory;
-#endif
-
-SDL_FORCE_INLINE int
-SDL_MostSignificantBitIndex32(Uint32 x)
-{
-#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-    /* Count Leading Zeroes builtin in GCC.
-     * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html
-     */
-    if (x == 0) {
-        return -1;
-    }
-    return 31 - __builtin_clz(x);
-#elif defined(__WATCOMC__) && defined(__386__)
-    if (x == 0) {
-        return -1;
-    }
-    return 31 - _SDL_clz_watcom(x);
-#else
-    /* Based off of Bit Twiddling Hacks by Sean Eron Anderson
-     * <seander@cs.stanford.edu>, released in the public domain.
-     * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
-     */
-    const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
-    const int    S[] = {1, 2, 4, 8, 16};
-
-    int msbIndex = 0;
-    int i;
-
-    if (x == 0) {
-        return -1;
-    }
-
-    for (i = 4; i >= 0; i--)
-    {
-        if (x & b[i])
-        {
-            x >>= S[i];
-            msbIndex |= S[i];
-        }
-    }
-
-    return msbIndex;
-#endif
-}
-
-SDL_FORCE_INLINE SDL_bool
-SDL_HasExactlyOneBitSet32(Uint32 x)
-{
-    if (x && !(x & (x - 1))) {
-        return SDL_TRUE;
-    }
-    return SDL_FALSE;
-}
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_bits_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_blendmode.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_blendmode.h
deleted file mode 100644 (file)
index 6f0a22b..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_blendmode.h
- *
- *  Header file declaring the SDL_BlendMode enumeration
- */
-
-#ifndef SDL_blendmode_h_
-#define SDL_blendmode_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief The blend mode used in SDL_RenderCopy() and drawing operations.
- */
-typedef enum
-{
-    SDL_BLENDMODE_NONE = 0x00000000,     /**< no blending
-                                              dstRGBA = srcRGBA */
-    SDL_BLENDMODE_BLEND = 0x00000001,    /**< alpha blending
-                                              dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))
-                                              dstA = srcA + (dstA * (1-srcA)) */
-    SDL_BLENDMODE_ADD = 0x00000002,      /**< additive blending
-                                              dstRGB = (srcRGB * srcA) + dstRGB
-                                              dstA = dstA */
-    SDL_BLENDMODE_MOD = 0x00000004,      /**< color modulate
-                                              dstRGB = srcRGB * dstRGB
-                                              dstA = dstA */
-    SDL_BLENDMODE_INVALID = 0x7FFFFFFF
-
-    /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */
-
-} SDL_BlendMode;
-
-/**
- *  \brief The blend operation used when combining source and destination pixel components
- */
-typedef enum
-{
-    SDL_BLENDOPERATION_ADD              = 0x1,  /**< dst + src: supported by all renderers */
-    SDL_BLENDOPERATION_SUBTRACT         = 0x2,  /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
-    SDL_BLENDOPERATION_REV_SUBTRACT     = 0x3,  /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
-    SDL_BLENDOPERATION_MINIMUM          = 0x4,  /**< min(dst, src) : supported by D3D11 */
-    SDL_BLENDOPERATION_MAXIMUM          = 0x5   /**< max(dst, src) : supported by D3D11 */
-
-} SDL_BlendOperation;
-
-/**
- *  \brief The normalized factor used to multiply pixel components
- */
-typedef enum
-{
-    SDL_BLENDFACTOR_ZERO                = 0x1,  /**< 0, 0, 0, 0 */
-    SDL_BLENDFACTOR_ONE                 = 0x2,  /**< 1, 1, 1, 1 */
-    SDL_BLENDFACTOR_SRC_COLOR           = 0x3,  /**< srcR, srcG, srcB, srcA */
-    SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4,  /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */
-    SDL_BLENDFACTOR_SRC_ALPHA           = 0x5,  /**< srcA, srcA, srcA, srcA */
-    SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6,  /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */
-    SDL_BLENDFACTOR_DST_COLOR           = 0x7,  /**< dstR, dstG, dstB, dstA */
-    SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8,  /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */
-    SDL_BLENDFACTOR_DST_ALPHA           = 0x9,  /**< dstA, dstA, dstA, dstA */
-    SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA   /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */
-
-} SDL_BlendFactor;
-
-/**
- *  \brief Create a custom blend mode, which may or may not be supported by a given renderer
- *
- *  \param srcColorFactor source color factor
- *  \param dstColorFactor destination color factor
- *  \param colorOperation color operation
- *  \param srcAlphaFactor source alpha factor
- *  \param dstAlphaFactor destination alpha factor
- *  \param alphaOperation alpha operation
- *
- *  The result of the blend mode operation will be:
- *      dstRGB = dstRGB * dstColorFactor colorOperation srcRGB * srcColorFactor
- *  and
- *      dstA = dstA * dstAlphaFactor alphaOperation srcA * srcAlphaFactor
- */
-extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor,
-                                                                 SDL_BlendFactor dstColorFactor,
-                                                                 SDL_BlendOperation colorOperation,
-                                                                 SDL_BlendFactor srcAlphaFactor,
-                                                                 SDL_BlendFactor dstAlphaFactor,
-                                                                 SDL_BlendOperation alphaOperation);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_blendmode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_clipboard.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_clipboard.h
deleted file mode 100644 (file)
index c4f8766..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_clipboard.h
- *
- * Include file for SDL clipboard handling
- */
-
-#ifndef SDL_clipboard_h_
-#define SDL_clipboard_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-/**
- * \brief Put UTF-8 text into the clipboard
- *
- * \sa SDL_GetClipboardText()
- */
-extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text);
-
-/**
- * \brief Get UTF-8 text from the clipboard, which must be freed with SDL_free()
- *
- * \sa SDL_SetClipboardText()
- */
-extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void);
-
-/**
- * \brief Returns a flag indicating whether the clipboard exists and contains a text string that is non-empty
- *
- * \sa SDL_GetClipboardText()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_clipboard_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_config.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_config.h
deleted file mode 100644 (file)
index 395ad7c..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_config_windows_h_
-#define SDL_config_windows_h_
-#define SDL_config_h_
-
-#include "SDL_platform.h"
-
-/* This is a set of defines to configure the SDL features */
-
-#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
-#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
-#define HAVE_STDINT_H   1
-#elif defined(_MSC_VER)
-typedef signed __int8 int8_t;
-typedef unsigned __int8 uint8_t;
-typedef signed __int16 int16_t;
-typedef unsigned __int16 uint16_t;
-typedef signed __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef signed __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#ifndef _UINTPTR_T_DEFINED
-#ifdef  _WIN64
-typedef unsigned __int64 uintptr_t;
-#else
-typedef unsigned int uintptr_t;
-#endif
-#define _UINTPTR_T_DEFINED
-#endif
-/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
-#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
-#define DWORD_PTR DWORD
-#endif
-#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
-#define LONG_PTR LONG
-#endif
-#else /* !__GNUC__ && !_MSC_VER */
-typedef signed char int8_t;
-typedef unsigned char uint8_t;
-typedef signed short int16_t;
-typedef unsigned short uint16_t;
-typedef signed int int32_t;
-typedef unsigned int uint32_t;
-typedef signed long long int64_t;
-typedef unsigned long long uint64_t;
-#ifndef _SIZE_T_DEFINED_
-#define _SIZE_T_DEFINED_
-typedef unsigned int size_t;
-#endif
-typedef unsigned int uintptr_t;
-#endif /* __GNUC__ || _MSC_VER */
-#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
-
-#ifdef _WIN64
-# define SIZEOF_VOIDP 8
-#else
-# define SIZEOF_VOIDP 4
-#endif
-
-#define HAVE_DDRAW_H 1
-#define HAVE_DINPUT_H 1
-#define HAVE_DSOUND_H 1
-#define HAVE_DXGI_H 1
-#define HAVE_XINPUT_H 1
-#define HAVE_MMDEVICEAPI_H 1
-#define HAVE_AUDIOCLIENT_H 1
-#define HAVE_ENDPOINTVOLUME_H 1
-
-/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
-#ifdef HAVE_LIBC
-/* Useful headers */
-#define STDC_HEADERS 1
-#define HAVE_CTYPE_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_MATH_H 1
-#define HAVE_SIGNAL_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_STRING_H 1
-
-/* C library functions */
-#define HAVE_MALLOC 1
-#define HAVE_CALLOC 1
-#define HAVE_REALLOC 1
-#define HAVE_FREE 1
-#define HAVE_ALLOCA 1
-#define HAVE_QSORT 1
-#define HAVE_ABS 1
-#define HAVE_MEMSET 1
-#define HAVE_MEMCPY 1
-#define HAVE_MEMMOVE 1
-#define HAVE_MEMCMP 1
-#define HAVE_STRLEN 1
-#define HAVE__STRREV 1
-/* These functions have security warnings, so we won't use them */
-/* #undef HAVE__STRUPR */
-/* #undef HAVE__STRLWR */
-#define HAVE_STRCHR 1
-#define HAVE_STRRCHR 1
-#define HAVE_STRSTR 1
-/* These functions have security warnings, so we won't use them */
-/* #undef HAVE__LTOA */
-/* #undef HAVE__ULTOA */
-#define HAVE_STRTOL 1
-#define HAVE_STRTOUL 1
-#define HAVE_STRTOD 1
-#define HAVE_ATOI 1
-#define HAVE_ATOF 1
-#define HAVE_STRCMP 1
-#define HAVE_STRNCMP 1
-#define HAVE__STRICMP 1
-#define HAVE__STRNICMP 1
-#define HAVE_ACOS   1
-#define HAVE_ACOSF  1
-#define HAVE_ASIN   1
-#define HAVE_ASINF  1
-#define HAVE_ATAN   1
-#define HAVE_ATANF  1
-#define HAVE_ATAN2  1
-#define HAVE_ATAN2F 1
-#define HAVE_CEILF  1
-#define HAVE__COPYSIGN  1
-#define HAVE_COS    1
-#define HAVE_COSF   1
-#define HAVE_EXP    1
-#define HAVE_EXPF   1
-#define HAVE_FABS   1
-#define HAVE_FABSF  1
-#define HAVE_FLOOR  1
-#define HAVE_FLOORF 1
-#define HAVE_FMOD   1
-#define HAVE_FMODF  1
-#define HAVE_LOG    1
-#define HAVE_LOGF   1
-#define HAVE_LOG10  1
-#define HAVE_LOG10F 1
-#define HAVE_POW    1
-#define HAVE_POWF   1
-#define HAVE_SIN    1
-#define HAVE_SINF   1
-#define HAVE_SQRT   1
-#define HAVE_SQRTF  1
-#define HAVE_TAN    1
-#define HAVE_TANF   1
-#if defined(_MSC_VER)
-/* These functions were added with the VC++ 2013 C runtime library */
-#if _MSC_VER >= 1800
-#define HAVE_STRTOLL 1
-#define HAVE_VSSCANF 1
-#define HAVE_SCALBN 1
-#define HAVE_SCALBNF    1
-#endif
-/* This function is available with at least the VC++ 2008 C runtime library */
-#if _MSC_VER >= 1400
-#define HAVE__FSEEKI64 1
-#endif
-#endif
-#if !defined(_MSC_VER) || defined(_USE_MATH_DEFINES)
-#define HAVE_M_PI 1
-#endif
-#else
-#define HAVE_STDARG_H   1
-#define HAVE_STDDEF_H   1
-#endif
-
-/* Enable various audio drivers */
-#define SDL_AUDIO_DRIVER_WASAPI 1
-#define SDL_AUDIO_DRIVER_DSOUND 1
-#define SDL_AUDIO_DRIVER_WINMM  1
-#define SDL_AUDIO_DRIVER_DISK   1
-#define SDL_AUDIO_DRIVER_DUMMY  1
-
-/* Enable various input drivers */
-#define SDL_JOYSTICK_DINPUT 1
-#define SDL_JOYSTICK_XINPUT 1
-#define SDL_JOYSTICK_HIDAPI 1
-#define SDL_HAPTIC_DINPUT   1
-#define SDL_HAPTIC_XINPUT   1
-
-/* Enable the dummy sensor driver */
-#define SDL_SENSOR_DUMMY  1
-
-/* Enable various shared object loading systems */
-#define SDL_LOADSO_WINDOWS  1
-
-/* Enable various threading systems */
-#define SDL_THREAD_WINDOWS  1
-
-/* Enable various timer systems */
-#define SDL_TIMER_WINDOWS   1
-
-/* Enable various video drivers */
-#define SDL_VIDEO_DRIVER_DUMMY  1
-#define SDL_VIDEO_DRIVER_WINDOWS    1
-
-#ifndef SDL_VIDEO_RENDER_D3D
-#define SDL_VIDEO_RENDER_D3D    1
-#endif
-#ifndef SDL_VIDEO_RENDER_D3D11
-#define SDL_VIDEO_RENDER_D3D11  0
-#endif
-
-/* Enable OpenGL support */
-#ifndef SDL_VIDEO_OPENGL
-#define SDL_VIDEO_OPENGL    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_WGL
-#define SDL_VIDEO_OPENGL_WGL    1
-#endif
-#ifndef SDL_VIDEO_RENDER_OGL
-#define SDL_VIDEO_RENDER_OGL    1
-#endif
-#ifndef SDL_VIDEO_RENDER_OGL_ES2
-#define SDL_VIDEO_RENDER_OGL_ES2    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_ES2
-#define SDL_VIDEO_OPENGL_ES2    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_EGL
-#define SDL_VIDEO_OPENGL_EGL    1
-#endif
-
-/* Enable Vulkan support */
-#define SDL_VIDEO_VULKAN 1
-
-/* Enable system power support */
-#define SDL_POWER_WINDOWS 1
-
-/* Enable filesystem support */
-#define SDL_FILESYSTEM_WINDOWS  1
-
-/* Enable assembly routines (Win64 doesn't have inline asm) */
-#ifndef _WIN64
-#define SDL_ASSEMBLY_ROUTINES   1
-#endif
-
-#endif /* SDL_config_windows_h_ */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_cpuinfo.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_cpuinfo.h
deleted file mode 100644 (file)
index 296df01..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_cpuinfo.h
- *
- *  CPU feature detection for SDL.
- */
-
-#ifndef SDL_cpuinfo_h_
-#define SDL_cpuinfo_h_
-
-#include "SDL_stdinc.h"
-
-/* Need to do this here because intrin.h has C++ code in it */
-/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64))
-#ifdef __clang__
-/* Many of the intrinsics SDL uses are not implemented by clang with Visual Studio */
-#undef __MMX__
-#undef __SSE__
-#undef __SSE2__
-#else
-#include <intrin.h>
-#ifndef _WIN64
-#ifndef __MMX__
-#define __MMX__
-#endif
-#ifndef __3dNOW__
-#define __3dNOW__
-#endif
-#endif
-#ifndef __SSE__
-#define __SSE__
-#endif
-#ifndef __SSE2__
-#define __SSE2__
-#endif
-#endif /* __clang__ */
-#elif defined(__MINGW64_VERSION_MAJOR)
-#include <intrin.h>
-#else
-/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */
-#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H)
-#include <altivec.h>
-#endif
-#if !defined(SDL_DISABLE_ARM_NEON_H)
-#  if defined(__ARM_NEON)
-#    include <arm_neon.h>
-#  elif defined(__WINDOWS__) || defined(__WINRT__)
-/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */
-#    if defined(_M_ARM)
-#      include <armintr.h>
-#      include <arm_neon.h>
-#      define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
-#    endif
-#    if defined (_M_ARM64)
-#      include <armintr.h>
-#      include <arm_neon.h>
-#      define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
-#    endif
-#  endif
-#endif
-#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H)
-#include <mm3dnow.h>
-#endif
-#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H)
-#include <immintrin.h>
-#else
-#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H)
-#include <mmintrin.h>
-#endif
-#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H)
-#include <xmmintrin.h>
-#endif
-#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H)
-#include <emmintrin.h>
-#endif
-#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H)
-#include <pmmintrin.h>
-#endif
-#endif /* HAVE_IMMINTRIN_H */
-#endif /* compiler version */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This is a guess for the cacheline size used for padding.
- * Most x86 processors have a 64 byte cache line.
- * The 64-bit PowerPC processors have a 128 byte cache line.
- * We'll use the larger value to be generally safe.
- */
-#define SDL_CACHELINE_SIZE  128
-
-/**
- *  This function returns the number of CPU cores available.
- */
-extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
-
-/**
- *  This function returns the L1 cache line size of the CPU
- *
- *  This is useful for determining multi-threaded structure padding
- *  or SIMD prefetch sizes.
- */
-extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
-
-/**
- *  This function returns true if the CPU has the RDTSC instruction.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
-
-/**
- *  This function returns true if the CPU has AltiVec features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
-
-/**
- *  This function returns true if the CPU has MMX features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
-
-/**
- *  This function returns true if the CPU has 3DNow! features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);
-
-/**
- *  This function returns true if the CPU has SSE features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
-
-/**
- *  This function returns true if the CPU has SSE2 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
-
-/**
- *  This function returns true if the CPU has SSE3 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
-
-/**
- *  This function returns true if the CPU has SSE4.1 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
-
-/**
- *  This function returns true if the CPU has SSE4.2 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
-
-/**
- *  This function returns true if the CPU has AVX features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);
-
-/**
- *  This function returns true if the CPU has AVX2 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void);
-
-/**
- *  This function returns true if the CPU has AVX-512F (foundation) features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void);
-
-/**
- *  This function returns true if the CPU has NEON (ARM SIMD) features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void);
-
-/**
- *  This function returns the amount of RAM configured in the system, in MB.
- */
-extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
-
-/**
- * \brief Report the alignment this system needs for SIMD allocations.
- *
- * This will return the minimum number of bytes to which a pointer must be
- *  aligned to be compatible with SIMD instructions on the current machine.
- *  For example, if the machine supports SSE only, it will return 16, but if
- *  it supports AVX-512F, it'll return 64 (etc). This only reports values for
- *  instruction sets SDL knows about, so if your SDL build doesn't have
- *  SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and
- *  not 64 for the AVX-512 instructions that exist but SDL doesn't know about.
- *  Plan accordingly.
- */
-extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
-
-/**
- * \brief Allocate memory in a SIMD-friendly way.
- *
- * This will allocate a block of memory that is suitable for use with SIMD
- *  instructions. Specifically, it will be properly aligned and padded for
- *  the system's supported vector instructions.
- *
- * The memory returned will be padded such that it is safe to read or write
- *  an incomplete vector at the end of the memory block. This can be useful
- *  so you don't have to drop back to a scalar fallback at the end of your
- *  SIMD processing loop to deal with the final elements without overflowing
- *  the allocated buffer.
- *
- * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free()
- *  or delete[], etc.
- *
- * Note that SDL will only deal with SIMD instruction sets it is aware of;
- *  for example, SDL 2.0.8 knows that SSE wants 16-byte vectors
- *  (SDL_HasSSE()), and AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't
- *  know that AVX-512 wants 64. To be clear: if you can't decide to use an
- *  instruction set with an SDL_Has*() function, don't use that instruction
- *  set with memory allocated through here.
- *
- * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't
- *  out of memory.
- *
- *  \param len The length, in bytes, of the block to allocated. The actual
- *             allocated block might be larger due to padding, etc.
- * \return Pointer to newly-allocated block, NULL if out of memory.
- *
- * \sa SDL_SIMDAlignment
- * \sa SDL_SIMDFree
- */
-extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len);
-
-/**
- * \brief Deallocate memory obtained from SDL_SIMDAlloc
- *
- * It is not valid to use this function on a pointer from anything but
- *  SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc,
- *  SDL_malloc, memalign, new[], etc.
- *
- * However, SDL_SIMDFree(NULL) is a legal no-op.
- *
- * \sa SDL_SIMDAlloc
- */
-extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr);
-
-/* vi: set ts=4 sw=4 expandtab: */
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_cpuinfo_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_egl.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_egl.h
deleted file mode 100644 (file)
index f50fa5c..0000000
+++ /dev/null
@@ -1,1673 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_egl.h
- *
- *  This is a simple file to encapsulate the EGL API headers.
- */
-#if !defined(_MSC_VER) && !defined(__ANDROID__)
-
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-
-#else /* _MSC_VER */
-
-/* EGL headers for Visual Studio */
-
-#ifndef __khrplatform_h_
-#define __khrplatform_h_
-
-/*
-** Copyright (c) 2008-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Khronos platform-specific types and definitions.
-*
-* $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
-*
-* Adopters may modify this file to suit their platform. Adopters are
-* encouraged to submit platform specific modifications to the Khronos
-* group so that they can be included in future versions of this file.
-* Please submit changes by sending them to the public Khronos Bugzilla
-* (http://khronos.org/bugzilla) by filing a bug against product
-* "Khronos (general)" component "Registry".
-*
-* A predefined template which fills in some of the bug fields can be
-* reached using http://tinyurl.com/khrplatform-h-bugreport, but you
-* must create a Bugzilla login first.
-*
-*
-* See the Implementer's Guidelines for information about where this file
-* should be located on your system and for more details of its use:
-*    http://www.khronos.org/registry/implementers_guide.pdf
-*
-* This file should be included as
-*        #include <KHR/khrplatform.h>
-* by Khronos client API header files that use its types and defines.
-*
-* The types in khrplatform.h should only be used to define API-specific types.
-*
-* Types defined in khrplatform.h:
-*    khronos_int8_t              signed   8  bit
-*    khronos_uint8_t             unsigned 8  bit
-*    khronos_int16_t             signed   16 bit
-*    khronos_uint16_t            unsigned 16 bit
-*    khronos_int32_t             signed   32 bit
-*    khronos_uint32_t            unsigned 32 bit
-*    khronos_int64_t             signed   64 bit
-*    khronos_uint64_t            unsigned 64 bit
-*    khronos_intptr_t            signed   same number of bits as a pointer
-*    khronos_uintptr_t           unsigned same number of bits as a pointer
-*    khronos_ssize_t             signed   size
-*    khronos_usize_t             unsigned size
-*    khronos_float_t             signed   32 bit floating point
-*    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
-*    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
-*                                         nanoseconds
-*    khronos_stime_nanoseconds_t signed time interval in nanoseconds
-*    khronos_boolean_enum_t      enumerated boolean type. This should
-*      only be used as a base type when a client API's boolean type is
-*      an enum. Client APIs which use an integer or other type for
-*      booleans cannot use this as the base type for their boolean.
-*
-* Tokens defined in khrplatform.h:
-*
-*    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
-*
-*    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
-*    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
-*
-* Calling convention macros defined in this file:
-*    KHRONOS_APICALL
-*    KHRONOS_APIENTRY
-*    KHRONOS_APIATTRIBUTES
-*
-* These may be used in function prototypes as:
-*
-*      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
-*                                  int arg1,
-*                                  int arg2) KHRONOS_APIATTRIBUTES;
-*/
-
-/*-------------------------------------------------------------------------
-* Definition of KHRONOS_APICALL
-*-------------------------------------------------------------------------
-* This precedes the return type of the function in the function prototype.
-*/
-#if defined(_WIN32) && !defined(__SCITECH_SNAP__) && !defined(SDL_VIDEO_STATIC_ANGLE)
-#   define KHRONOS_APICALL __declspec(dllimport)
-#elif defined (__SYMBIAN32__)
-#   define KHRONOS_APICALL IMPORT_C
-#else
-#   define KHRONOS_APICALL
-#endif
-
-/*-------------------------------------------------------------------------
-* Definition of KHRONOS_APIENTRY
-*-------------------------------------------------------------------------
-* This follows the return type of the function  and precedes the function
-* name in the function prototype.
-*/
-#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
-/* Win32 but not WinCE */
-#   define KHRONOS_APIENTRY __stdcall
-#else
-#   define KHRONOS_APIENTRY
-#endif
-
-/*-------------------------------------------------------------------------
-* Definition of KHRONOS_APIATTRIBUTES
-*-------------------------------------------------------------------------
-* This follows the closing parenthesis of the function prototype arguments.
-*/
-#if defined (__ARMCC_2__)
-#define KHRONOS_APIATTRIBUTES __softfp
-#else
-#define KHRONOS_APIATTRIBUTES
-#endif
-
-/*-------------------------------------------------------------------------
-* basic type definitions
-*-----------------------------------------------------------------------*/
-#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
-
-
-/*
-* Using <stdint.h>
-*/
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__VMS ) || defined(__sgi)
-
-/*
-* Using <inttypes.h>
-*/
-#include <inttypes.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
-
-/*
-* Win32
-*/
-typedef __int32                 khronos_int32_t;
-typedef unsigned __int32        khronos_uint32_t;
-typedef __int64                 khronos_int64_t;
-typedef unsigned __int64        khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__sun__) || defined(__digital__)
-
-/*
-* Sun or Digital
-*/
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#if defined(__arch64__) || defined(_LP64)
-typedef long int                khronos_int64_t;
-typedef unsigned long int       khronos_uint64_t;
-#else
-typedef long long int           khronos_int64_t;
-typedef unsigned long long int  khronos_uint64_t;
-#endif /* __arch64__ */
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif 0
-
-/*
-* Hypothetical platform with no float or int64 support
-*/
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#define KHRONOS_SUPPORT_INT64   0
-#define KHRONOS_SUPPORT_FLOAT   0
-
-#else
-
-/*
-* Generic fallback
-*/
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#endif
-
-
-/*
-* Types that are (so far) the same on all platforms
-*/
-typedef signed   char          khronos_int8_t;
-typedef unsigned char          khronos_uint8_t;
-typedef signed   short int     khronos_int16_t;
-typedef unsigned short int     khronos_uint16_t;
-
-/*
-* Types that differ between LLP64 and LP64 architectures - in LLP64,
-* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
-* to be the only LLP64 architecture in current use.
-*/
-#ifdef _WIN64
-typedef signed   long long int khronos_intptr_t;
-typedef unsigned long long int khronos_uintptr_t;
-typedef signed   long long int khronos_ssize_t;
-typedef unsigned long long int khronos_usize_t;
-#else
-typedef signed   long  int     khronos_intptr_t;
-typedef unsigned long  int     khronos_uintptr_t;
-typedef signed   long  int     khronos_ssize_t;
-typedef unsigned long  int     khronos_usize_t;
-#endif
-
-#if KHRONOS_SUPPORT_FLOAT
-/*
-* Float type
-*/
-typedef          float         khronos_float_t;
-#endif
-
-#if KHRONOS_SUPPORT_INT64
-/* Time types
-*
-* These types can be used to represent a time interval in nanoseconds or
-* an absolute Unadjusted System Time.  Unadjusted System Time is the number
-* of nanoseconds since some arbitrary system event (e.g. since the last
-* time the system booted).  The Unadjusted System Time is an unsigned
-* 64 bit value that wraps back to 0 every 584 years.  Time intervals
-* may be either signed or unsigned.
-*/
-typedef khronos_uint64_t       khronos_utime_nanoseconds_t;
-typedef khronos_int64_t        khronos_stime_nanoseconds_t;
-#endif
-
-/*
-* Dummy value used to pad enum types to 32 bits.
-*/
-#ifndef KHRONOS_MAX_ENUM
-#define KHRONOS_MAX_ENUM 0x7FFFFFFF
-#endif
-
-/*
-* Enumerated boolean type
-*
-* Values other than zero should be considered to be true.  Therefore
-* comparisons should not be made against KHRONOS_TRUE.
-*/
-typedef enum {
-    KHRONOS_FALSE = 0,
-    KHRONOS_TRUE = 1,
-    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
-} khronos_boolean_enum_t;
-
-#endif /* __khrplatform_h_ */
-
-
-#ifndef __eglplatform_h_
-#define __eglplatform_h_
-
-/*
-** Copyright (c) 2007-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Platform-specific types and definitions for egl.h
-* $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $
-*
-* Adopters may modify khrplatform.h and this file to suit their platform.
-* You are encouraged to submit all modifications to the Khronos group so that
-* they can be included in future versions of this file.  Please submit changes
-* by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
-* by filing a bug against product "EGL" component "Registry".
-*/
-
-/*#include <KHR/khrplatform.h>*/
-
-/* Macros used in EGL function prototype declarations.
-*
-* EGL functions should be prototyped as:
-*
-* EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
-* typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
-*
-* KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
-*/
-
-#ifndef EGLAPI
-#define EGLAPI KHRONOS_APICALL
-#endif
-
-#ifndef EGLAPIENTRY
-#define EGLAPIENTRY  KHRONOS_APIENTRY
-#endif
-#define EGLAPIENTRYP EGLAPIENTRY*
-
-/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
-* are aliases of window-system-dependent types, such as X Display * or
-* Windows Device Context. They must be defined in platform-specific
-* code below. The EGL-prefixed versions of Native*Type are the same
-* types, renamed in EGL 1.3 so all types in the API start with "EGL".
-*
-* Khronos STRONGLY RECOMMENDS that you use the default definitions
-* provided below, since these changes affect both binary and source
-* portability of applications using EGL running on different EGL
-* implementations.
-*/
-
-#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#include <windows.h>
-
-#if __WINRT__
-#include <Unknwn.h>
-typedef IUnknown * EGLNativeWindowType;
-typedef IUnknown * EGLNativePixmapType;
-typedef IUnknown * EGLNativeDisplayType;
-#else
-typedef HDC     EGLNativeDisplayType;
-typedef HBITMAP EGLNativePixmapType;
-typedef HWND    EGLNativeWindowType;
-#endif
-
-#elif defined(__WINSCW__) || defined(__SYMBIAN32__)  /* Symbian */
-
-typedef int   EGLNativeDisplayType;
-typedef void *EGLNativeWindowType;
-typedef void *EGLNativePixmapType;
-
-#elif defined(WL_EGL_PLATFORM)
-
-typedef struct wl_display     *EGLNativeDisplayType;
-typedef struct wl_egl_pixmap  *EGLNativePixmapType;
-typedef struct wl_egl_window  *EGLNativeWindowType;
-
-#elif defined(__GBM__)
-
-typedef struct gbm_device  *EGLNativeDisplayType;
-typedef struct gbm_bo      *EGLNativePixmapType;
-typedef void               *EGLNativeWindowType;
-
-#elif defined(__ANDROID__) /* Android */
-
-struct ANativeWindow;
-struct egl_native_pixmap_t;
-
-typedef struct ANativeWindow        *EGLNativeWindowType;
-typedef struct egl_native_pixmap_t  *EGLNativePixmapType;
-typedef void                        *EGLNativeDisplayType;
-
-#elif defined(MIR_EGL_PLATFORM)
-
-#include <mir_toolkit/mir_client_library.h>
-typedef MirEGLNativeDisplayType EGLNativeDisplayType;
-typedef void                   *EGLNativePixmapType;
-typedef MirEGLNativeWindowType  EGLNativeWindowType;
-
-#elif defined(__unix__)
-
-#ifdef MESA_EGL_NO_X11_HEADERS
-
-typedef void            *EGLNativeDisplayType;
-typedef khronos_uintptr_t EGLNativePixmapType;
-typedef khronos_uintptr_t EGLNativeWindowType;
-
-#else
-
-/* X11 (tentative)  */
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-typedef Display *EGLNativeDisplayType;
-typedef Pixmap   EGLNativePixmapType;
-typedef Window   EGLNativeWindowType;
-
-#endif /* MESA_EGL_NO_X11_HEADERS */
-
-#else
-#error "Platform not recognized"
-#endif
-
-/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
-typedef EGLNativeDisplayType NativeDisplayType;
-typedef EGLNativePixmapType  NativePixmapType;
-typedef EGLNativeWindowType  NativeWindowType;
-
-
-/* Define EGLint. This must be a signed integral type large enough to contain
-* all legal attribute names and values passed into and out of EGL, whether
-* their type is boolean, bitmask, enumerant (symbolic constant), integer,
-* handle, or other.  While in general a 32-bit integer will suffice, if
-* handles are 64 bit types, then EGLint should be defined as a signed 64-bit
-* integer type.
-*/
-typedef khronos_int32_t EGLint;
-
-#endif /* __eglplatform_h */
-
-#ifndef __egl_h_
-#define __egl_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2013-2015 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
-** This header is generated from the Khronos OpenGL / OpenGL ES XML
-** API Registry. The current version of the Registry, generator scripts
-** used to make the header, and the header can be found at
-**   http://www.opengl.org/registry/
-**
-** Khronos $Revision: 31566 $ on $Date: 2015-06-23 08:48:48 -0700 (Tue, 23 Jun 2015) $
-*/
-
-/*#include <EGL/eglplatform.h>*/
-
-/* Generated on date 20150623 */
-
-/* Generated C header for:
- * API: egl
- * Versions considered: .*
- * Versions emitted: .*
- * Default extensions included: None
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef EGL_VERSION_1_0
-#define EGL_VERSION_1_0 1
-typedef unsigned int EGLBoolean;
-typedef void *EGLDisplay;
-typedef void *EGLConfig;
-typedef void *EGLSurface;
-typedef void *EGLContext;
-typedef void (*__eglMustCastToProperFunctionPointerType)(void);
-#define EGL_ALPHA_SIZE                    0x3021
-#define EGL_BAD_ACCESS                    0x3002
-#define EGL_BAD_ALLOC                     0x3003
-#define EGL_BAD_ATTRIBUTE                 0x3004
-#define EGL_BAD_CONFIG                    0x3005
-#define EGL_BAD_CONTEXT                   0x3006
-#define EGL_BAD_CURRENT_SURFACE           0x3007
-#define EGL_BAD_DISPLAY                   0x3008
-#define EGL_BAD_MATCH                     0x3009
-#define EGL_BAD_NATIVE_PIXMAP             0x300A
-#define EGL_BAD_NATIVE_WINDOW             0x300B
-#define EGL_BAD_PARAMETER                 0x300C
-#define EGL_BAD_SURFACE                   0x300D
-#define EGL_BLUE_SIZE                     0x3022
-#define EGL_BUFFER_SIZE                   0x3020
-#define EGL_CONFIG_CAVEAT                 0x3027
-#define EGL_CONFIG_ID                     0x3028
-#define EGL_CORE_NATIVE_ENGINE            0x305B
-#define EGL_DEPTH_SIZE                    0x3025
-#define EGL_DONT_CARE                     ((EGLint)-1)
-#define EGL_DRAW                          0x3059
-#define EGL_EXTENSIONS                    0x3055
-#define EGL_FALSE                         0
-#define EGL_GREEN_SIZE                    0x3023
-#define EGL_HEIGHT                        0x3056
-#define EGL_LARGEST_PBUFFER               0x3058
-#define EGL_LEVEL                         0x3029
-#define EGL_MAX_PBUFFER_HEIGHT            0x302A
-#define EGL_MAX_PBUFFER_PIXELS            0x302B
-#define EGL_MAX_PBUFFER_WIDTH             0x302C
-#define EGL_NATIVE_RENDERABLE             0x302D
-#define EGL_NATIVE_VISUAL_ID              0x302E
-#define EGL_NATIVE_VISUAL_TYPE            0x302F
-#define EGL_NONE                          0x3038
-#define EGL_NON_CONFORMANT_CONFIG         0x3051
-#define EGL_NOT_INITIALIZED               0x3001
-#define EGL_NO_CONTEXT                    ((EGLContext)0)
-#define EGL_NO_DISPLAY                    ((EGLDisplay)0)
-#define EGL_NO_SURFACE                    ((EGLSurface)0)
-#define EGL_PBUFFER_BIT                   0x0001
-#define EGL_PIXMAP_BIT                    0x0002
-#define EGL_READ                          0x305A
-#define EGL_RED_SIZE                      0x3024
-#define EGL_SAMPLES                       0x3031
-#define EGL_SAMPLE_BUFFERS                0x3032
-#define EGL_SLOW_CONFIG                   0x3050
-#define EGL_STENCIL_SIZE                  0x3026
-#define EGL_SUCCESS                       0x3000
-#define EGL_SURFACE_TYPE                  0x3033
-#define EGL_TRANSPARENT_BLUE_VALUE        0x3035
-#define EGL_TRANSPARENT_GREEN_VALUE       0x3036
-#define EGL_TRANSPARENT_RED_VALUE         0x3037
-#define EGL_TRANSPARENT_RGB               0x3052
-#define EGL_TRANSPARENT_TYPE              0x3034
-#define EGL_TRUE                          1
-#define EGL_VENDOR                        0x3053
-#define EGL_VERSION                       0x3054
-#define EGL_WIDTH                         0x3057
-#define EGL_WINDOW_BIT                    0x0004
-EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
-EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void);
-EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id);
-EGLAPI EGLint EGLAPIENTRY eglGetError (void);
-EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
-EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
-EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
-EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine);
-#endif /* EGL_VERSION_1_0 */
-
-#ifndef EGL_VERSION_1_1
-#define EGL_VERSION_1_1 1
-#define EGL_BACK_BUFFER                   0x3084
-#define EGL_BIND_TO_TEXTURE_RGB           0x3039
-#define EGL_BIND_TO_TEXTURE_RGBA          0x303A
-#define EGL_CONTEXT_LOST                  0x300E
-#define EGL_MIN_SWAP_INTERVAL             0x303B
-#define EGL_MAX_SWAP_INTERVAL             0x303C
-#define EGL_MIPMAP_TEXTURE                0x3082
-#define EGL_MIPMAP_LEVEL                  0x3083
-#define EGL_NO_TEXTURE                    0x305C
-#define EGL_TEXTURE_2D                    0x305F
-#define EGL_TEXTURE_FORMAT                0x3080
-#define EGL_TEXTURE_RGB                   0x305D
-#define EGL_TEXTURE_RGBA                  0x305E
-#define EGL_TEXTURE_TARGET                0x3081
-EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval);
-#endif /* EGL_VERSION_1_1 */
-
-#ifndef EGL_VERSION_1_2
-#define EGL_VERSION_1_2 1
-typedef unsigned int EGLenum;
-typedef void *EGLClientBuffer;
-#define EGL_ALPHA_FORMAT                  0x3088
-#define EGL_ALPHA_FORMAT_NONPRE           0x308B
-#define EGL_ALPHA_FORMAT_PRE              0x308C
-#define EGL_ALPHA_MASK_SIZE               0x303E
-#define EGL_BUFFER_PRESERVED              0x3094
-#define EGL_BUFFER_DESTROYED              0x3095
-#define EGL_CLIENT_APIS                   0x308D
-#define EGL_COLORSPACE                    0x3087
-#define EGL_COLORSPACE_sRGB               0x3089
-#define EGL_COLORSPACE_LINEAR             0x308A
-#define EGL_COLOR_BUFFER_TYPE             0x303F
-#define EGL_CONTEXT_CLIENT_TYPE           0x3097
-#define EGL_DISPLAY_SCALING               10000
-#define EGL_HORIZONTAL_RESOLUTION         0x3090
-#define EGL_LUMINANCE_BUFFER              0x308F
-#define EGL_LUMINANCE_SIZE                0x303D
-#define EGL_OPENGL_ES_BIT                 0x0001
-#define EGL_OPENVG_BIT                    0x0002
-#define EGL_OPENGL_ES_API                 0x30A0
-#define EGL_OPENVG_API                    0x30A1
-#define EGL_OPENVG_IMAGE                  0x3096
-#define EGL_PIXEL_ASPECT_RATIO            0x3092
-#define EGL_RENDERABLE_TYPE               0x3040
-#define EGL_RENDER_BUFFER                 0x3086
-#define EGL_RGB_BUFFER                    0x308E
-#define EGL_SINGLE_BUFFER                 0x3085
-#define EGL_SWAP_BEHAVIOR                 0x3093
-#define EGL_UNKNOWN                       ((EGLint)-1)
-#define EGL_VERTICAL_RESOLUTION           0x3091
-EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api);
-EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void);
-#endif /* EGL_VERSION_1_2 */
-
-#ifndef EGL_VERSION_1_3
-#define EGL_VERSION_1_3 1
-#define EGL_CONFORMANT                    0x3042
-#define EGL_CONTEXT_CLIENT_VERSION        0x3098
-#define EGL_MATCH_NATIVE_PIXMAP           0x3041
-#define EGL_OPENGL_ES2_BIT                0x0004
-#define EGL_VG_ALPHA_FORMAT               0x3088
-#define EGL_VG_ALPHA_FORMAT_NONPRE        0x308B
-#define EGL_VG_ALPHA_FORMAT_PRE           0x308C
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT       0x0040
-#define EGL_VG_COLORSPACE                 0x3087
-#define EGL_VG_COLORSPACE_sRGB            0x3089
-#define EGL_VG_COLORSPACE_LINEAR          0x308A
-#define EGL_VG_COLORSPACE_LINEAR_BIT      0x0020
-#endif /* EGL_VERSION_1_3 */
-
-#ifndef EGL_VERSION_1_4
-#define EGL_VERSION_1_4 1
-#define EGL_DEFAULT_DISPLAY               ((EGLNativeDisplayType)0)
-#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT   0x0200
-#define EGL_MULTISAMPLE_RESOLVE           0x3099
-#define EGL_MULTISAMPLE_RESOLVE_DEFAULT   0x309A
-#define EGL_MULTISAMPLE_RESOLVE_BOX       0x309B
-#define EGL_OPENGL_API                    0x30A2
-#define EGL_OPENGL_BIT                    0x0008
-#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT   0x0400
-EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void);
-#endif /* EGL_VERSION_1_4 */
-
-#ifndef EGL_VERSION_1_5
-#define EGL_VERSION_1_5 1
-typedef void *EGLSync;
-typedef intptr_t EGLAttrib;
-typedef khronos_utime_nanoseconds_t EGLTime;
-typedef void *EGLImage;
-#define EGL_CONTEXT_MAJOR_VERSION         0x3098
-#define EGL_CONTEXT_MINOR_VERSION         0x30FB
-#define EGL_CONTEXT_OPENGL_PROFILE_MASK   0x30FD
-#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
-#define EGL_NO_RESET_NOTIFICATION         0x31BE
-#define EGL_LOSE_CONTEXT_ON_RESET         0x31BF
-#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
-#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
-#define EGL_CONTEXT_OPENGL_DEBUG          0x31B0
-#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
-#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS  0x31B2
-#define EGL_OPENGL_ES3_BIT                0x00000040
-#define EGL_CL_EVENT_HANDLE               0x309C
-#define EGL_SYNC_CL_EVENT                 0x30FE
-#define EGL_SYNC_CL_EVENT_COMPLETE        0x30FF
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE  0x30F0
-#define EGL_SYNC_TYPE                     0x30F7
-#define EGL_SYNC_STATUS                   0x30F1
-#define EGL_SYNC_CONDITION                0x30F8
-#define EGL_SIGNALED                      0x30F2
-#define EGL_UNSIGNALED                    0x30F3
-#define EGL_SYNC_FLUSH_COMMANDS_BIT       0x0001
-#define EGL_FOREVER                       0xFFFFFFFFFFFFFFFFull
-#define EGL_TIMEOUT_EXPIRED               0x30F5
-#define EGL_CONDITION_SATISFIED           0x30F6
-#define EGL_NO_SYNC                       ((EGLSync)0)
-#define EGL_SYNC_FENCE                    0x30F9
-#define EGL_GL_COLORSPACE                 0x309D
-#define EGL_GL_COLORSPACE_SRGB            0x3089
-#define EGL_GL_COLORSPACE_LINEAR          0x308A
-#define EGL_GL_RENDERBUFFER               0x30B9
-#define EGL_GL_TEXTURE_2D                 0x30B1
-#define EGL_GL_TEXTURE_LEVEL              0x30BC
-#define EGL_GL_TEXTURE_3D                 0x30B2
-#define EGL_GL_TEXTURE_ZOFFSET            0x30BD
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
-#define EGL_IMAGE_PRESERVED               0x30D2
-#define EGL_NO_IMAGE                      ((EGLImage)0)
-EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
-EGLAPI EGLImage EGLAPIENTRY eglCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage (EGLDisplay dpy, EGLImage image);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags);
-#endif /* EGL_VERSION_1_5 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __egl_h_ */
-
-
-
-#ifndef __eglext_h_
-#define __eglext_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2013-2015 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
-** This header is generated from the Khronos OpenGL / OpenGL ES XML
-** API Registry. The current version of the Registry, generator scripts
-** used to make the header, and the header can be found at
-**   http://www.opengl.org/registry/
-**
-** Khronos $Revision: 31566 $ on $Date: 2015-06-23 08:48:48 -0700 (Tue, 23 Jun 2015) $
-*/
-
-/*#include <EGL/eglplatform.h>*/
-
-#define EGL_EGLEXT_VERSION 20150623
-
-/* Generated C header for:
- * API: egl
- * Versions considered: .*
- * Versions emitted: _nomatch_^
- * Default extensions included: egl
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef EGL_KHR_cl_event
-#define EGL_KHR_cl_event 1
-#define EGL_CL_EVENT_HANDLE_KHR           0x309C
-#define EGL_SYNC_CL_EVENT_KHR             0x30FE
-#define EGL_SYNC_CL_EVENT_COMPLETE_KHR    0x30FF
-#endif /* EGL_KHR_cl_event */
-
-#ifndef EGL_KHR_cl_event2
-#define EGL_KHR_cl_event2 1
-typedef void *EGLSyncKHR;
-typedef intptr_t EGLAttribKHR;
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
-#endif
-#endif /* EGL_KHR_cl_event2 */
-
-#ifndef EGL_KHR_client_get_all_proc_addresses
-#define EGL_KHR_client_get_all_proc_addresses 1
-#endif /* EGL_KHR_client_get_all_proc_addresses */
-
-#ifndef EGL_KHR_config_attribs
-#define EGL_KHR_config_attribs 1
-#define EGL_CONFORMANT_KHR                0x3042
-#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR  0x0020
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR   0x0040
-#endif /* EGL_KHR_config_attribs */
-
-#ifndef EGL_KHR_create_context
-#define EGL_KHR_create_context 1
-#define EGL_CONTEXT_MAJOR_VERSION_KHR     0x3098
-#define EGL_CONTEXT_MINOR_VERSION_KHR     0x30FB
-#define EGL_CONTEXT_FLAGS_KHR             0x30FC
-#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
-#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
-#define EGL_NO_RESET_NOTIFICATION_KHR     0x31BE
-#define EGL_LOSE_CONTEXT_ON_RESET_KHR     0x31BF
-#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR  0x00000001
-#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
-#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
-#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
-#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
-#define EGL_OPENGL_ES3_BIT_KHR            0x00000040
-#endif /* EGL_KHR_create_context */
-
-#ifndef EGL_KHR_create_context_no_error
-#define EGL_KHR_create_context_no_error 1
-#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR   0x31B3
-#endif /* EGL_KHR_create_context_no_error */
-
-#ifndef EGL_KHR_fence_sync
-#define EGL_KHR_fence_sync 1
-typedef khronos_utime_nanoseconds_t EGLTimeKHR;
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
-#define EGL_SYNC_CONDITION_KHR            0x30F8
-#define EGL_SYNC_FENCE_KHR                0x30F9
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_fence_sync */
-
-#ifndef EGL_KHR_get_all_proc_addresses
-#define EGL_KHR_get_all_proc_addresses 1
-#endif /* EGL_KHR_get_all_proc_addresses */
-
-#ifndef EGL_KHR_gl_colorspace
-#define EGL_KHR_gl_colorspace 1
-#define EGL_GL_COLORSPACE_KHR             0x309D
-#define EGL_GL_COLORSPACE_SRGB_KHR        0x3089
-#define EGL_GL_COLORSPACE_LINEAR_KHR      0x308A
-#endif /* EGL_KHR_gl_colorspace */
-
-#ifndef EGL_KHR_gl_renderbuffer_image
-#define EGL_KHR_gl_renderbuffer_image 1
-#define EGL_GL_RENDERBUFFER_KHR           0x30B9
-#endif /* EGL_KHR_gl_renderbuffer_image */
-
-#ifndef EGL_KHR_gl_texture_2D_image
-#define EGL_KHR_gl_texture_2D_image 1
-#define EGL_GL_TEXTURE_2D_KHR             0x30B1
-#define EGL_GL_TEXTURE_LEVEL_KHR          0x30BC
-#endif /* EGL_KHR_gl_texture_2D_image */
-
-#ifndef EGL_KHR_gl_texture_3D_image
-#define EGL_KHR_gl_texture_3D_image 1
-#define EGL_GL_TEXTURE_3D_KHR             0x30B2
-#define EGL_GL_TEXTURE_ZOFFSET_KHR        0x30BD
-#endif /* EGL_KHR_gl_texture_3D_image */
-
-#ifndef EGL_KHR_gl_texture_cubemap_image
-#define EGL_KHR_gl_texture_cubemap_image 1
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
-#endif /* EGL_KHR_gl_texture_cubemap_image */
-
-#ifndef EGL_KHR_image
-#define EGL_KHR_image 1
-typedef void *EGLImageKHR;
-#define EGL_NATIVE_PIXMAP_KHR             0x30B0
-#define EGL_NO_IMAGE_KHR                  ((EGLImageKHR)0)
-typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
-#endif
-#endif /* EGL_KHR_image */
-
-#ifndef EGL_KHR_image_base
-#define EGL_KHR_image_base 1
-#define EGL_IMAGE_PRESERVED_KHR           0x30D2
-#endif /* EGL_KHR_image_base */
-
-#ifndef EGL_KHR_image_pixmap
-#define EGL_KHR_image_pixmap 1
-#endif /* EGL_KHR_image_pixmap */
-
-#ifndef EGL_KHR_lock_surface
-#define EGL_KHR_lock_surface 1
-#define EGL_READ_SURFACE_BIT_KHR          0x0001
-#define EGL_WRITE_SURFACE_BIT_KHR         0x0002
-#define EGL_LOCK_SURFACE_BIT_KHR          0x0080
-#define EGL_OPTIMAL_FORMAT_BIT_KHR        0x0100
-#define EGL_MATCH_FORMAT_KHR              0x3043
-#define EGL_FORMAT_RGB_565_EXACT_KHR      0x30C0
-#define EGL_FORMAT_RGB_565_KHR            0x30C1
-#define EGL_FORMAT_RGBA_8888_EXACT_KHR    0x30C2
-#define EGL_FORMAT_RGBA_8888_KHR          0x30C3
-#define EGL_MAP_PRESERVE_PIXELS_KHR       0x30C4
-#define EGL_LOCK_USAGE_HINT_KHR           0x30C5
-#define EGL_BITMAP_POINTER_KHR            0x30C6
-#define EGL_BITMAP_PITCH_KHR              0x30C7
-#define EGL_BITMAP_ORIGIN_KHR             0x30C8
-#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR   0x30C9
-#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
-#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR  0x30CB
-#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
-#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
-#define EGL_LOWER_LEFT_KHR                0x30CE
-#define EGL_UPPER_LEFT_KHR                0x30CF
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface);
-#endif
-#endif /* EGL_KHR_lock_surface */
-
-#ifndef EGL_KHR_lock_surface2
-#define EGL_KHR_lock_surface2 1
-#define EGL_BITMAP_PIXEL_SIZE_KHR         0x3110
-#endif /* EGL_KHR_lock_surface2 */
-
-#ifndef EGL_KHR_lock_surface3
-#define EGL_KHR_lock_surface3 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
-#endif
-#endif /* EGL_KHR_lock_surface3 */
-
-#ifndef EGL_KHR_partial_update
-#define EGL_KHR_partial_update 1
-#define EGL_BUFFER_AGE_KHR                0x313D
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#endif
-#endif /* EGL_KHR_partial_update */
-
-#ifndef EGL_KHR_platform_android
-#define EGL_KHR_platform_android 1
-#define EGL_PLATFORM_ANDROID_KHR          0x3141
-#endif /* EGL_KHR_platform_android */
-
-#ifndef EGL_KHR_platform_gbm
-#define EGL_KHR_platform_gbm 1
-#define EGL_PLATFORM_GBM_KHR              0x31D7
-#endif /* EGL_KHR_platform_gbm */
-
-#ifndef EGL_KHR_platform_wayland
-#define EGL_KHR_platform_wayland 1
-#define EGL_PLATFORM_WAYLAND_KHR          0x31D8
-#endif /* EGL_KHR_platform_wayland */
-
-#ifndef EGL_KHR_platform_x11
-#define EGL_KHR_platform_x11 1
-#define EGL_PLATFORM_X11_KHR              0x31D5
-#define EGL_PLATFORM_X11_SCREEN_KHR       0x31D6
-#endif /* EGL_KHR_platform_x11 */
-
-#ifndef EGL_KHR_reusable_sync
-#define EGL_KHR_reusable_sync 1
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_SYNC_STATUS_KHR               0x30F1
-#define EGL_SIGNALED_KHR                  0x30F2
-#define EGL_UNSIGNALED_KHR                0x30F3
-#define EGL_TIMEOUT_EXPIRED_KHR           0x30F5
-#define EGL_CONDITION_SATISFIED_KHR       0x30F6
-#define EGL_SYNC_TYPE_KHR                 0x30F7
-#define EGL_SYNC_REUSABLE_KHR             0x30FA
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR   0x0001
-#define EGL_FOREVER_KHR                   0xFFFFFFFFFFFFFFFFull
-#define EGL_NO_SYNC_KHR                   ((EGLSyncKHR)0)
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_reusable_sync */
-
-#ifndef EGL_KHR_stream
-#define EGL_KHR_stream 1
-typedef void *EGLStreamKHR;
-typedef khronos_uint64_t EGLuint64KHR;
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_NO_STREAM_KHR                 ((EGLStreamKHR)0)
-#define EGL_CONSUMER_LATENCY_USEC_KHR     0x3210
-#define EGL_PRODUCER_FRAME_KHR            0x3212
-#define EGL_CONSUMER_FRAME_KHR            0x3213
-#define EGL_STREAM_STATE_KHR              0x3214
-#define EGL_STREAM_STATE_CREATED_KHR      0x3215
-#define EGL_STREAM_STATE_CONNECTING_KHR   0x3216
-#define EGL_STREAM_STATE_EMPTY_KHR        0x3217
-#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
-#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
-#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
-#define EGL_BAD_STREAM_KHR                0x321B
-#define EGL_BAD_STATE_KHR                 0x321C
-typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_stream */
-
-#ifndef EGL_KHR_stream_consumer_gltexture
-#define EGL_KHR_stream_consumer_gltexture 1
-#ifdef EGL_KHR_stream
-#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_consumer_gltexture */
-
-#ifndef EGL_KHR_stream_cross_process_fd
-#define EGL_KHR_stream_cross_process_fd 1
-typedef int EGLNativeFileDescriptorKHR;
-#ifdef EGL_KHR_stream
-#define EGL_NO_FILE_DESCRIPTOR_KHR        ((EGLNativeFileDescriptorKHR)(-1))
-typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_cross_process_fd */
-
-#ifndef EGL_KHR_stream_fifo
-#define EGL_KHR_stream_fifo 1
-#ifdef EGL_KHR_stream
-#define EGL_STREAM_FIFO_LENGTH_KHR        0x31FC
-#define EGL_STREAM_TIME_NOW_KHR           0x31FD
-#define EGL_STREAM_TIME_CONSUMER_KHR      0x31FE
-#define EGL_STREAM_TIME_PRODUCER_KHR      0x31FF
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_fifo */
-
-#ifndef EGL_KHR_stream_producer_aldatalocator
-#define EGL_KHR_stream_producer_aldatalocator 1
-#ifdef EGL_KHR_stream
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_producer_aldatalocator */
-
-#ifndef EGL_KHR_stream_producer_eglsurface
-#define EGL_KHR_stream_producer_eglsurface 1
-#ifdef EGL_KHR_stream
-#define EGL_STREAM_BIT_KHR                0x0800
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_producer_eglsurface */
-
-#ifndef EGL_KHR_surfaceless_context
-#define EGL_KHR_surfaceless_context 1
-#endif /* EGL_KHR_surfaceless_context */
-
-#ifndef EGL_KHR_swap_buffers_with_damage
-#define EGL_KHR_swap_buffers_with_damage 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#endif
-#endif /* EGL_KHR_swap_buffers_with_damage */
-
-#ifndef EGL_KHR_vg_parent_image
-#define EGL_KHR_vg_parent_image 1
-#define EGL_VG_PARENT_IMAGE_KHR           0x30BA
-#endif /* EGL_KHR_vg_parent_image */
-
-#ifndef EGL_KHR_wait_sync
-#define EGL_KHR_wait_sync 1
-typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
-#endif
-#endif /* EGL_KHR_wait_sync */
-
-#ifndef EGL_ANDROID_blob_cache
-#define EGL_ANDROID_blob_cache 1
-typedef khronos_ssize_t EGLsizeiANDROID;
-typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
-typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
-typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
-#endif
-#endif /* EGL_ANDROID_blob_cache */
-
-#ifndef EGL_ANDROID_framebuffer_target
-#define EGL_ANDROID_framebuffer_target 1
-#define EGL_FRAMEBUFFER_TARGET_ANDROID    0x3147
-#endif /* EGL_ANDROID_framebuffer_target */
-
-#ifndef EGL_ANDROID_image_native_buffer
-#define EGL_ANDROID_image_native_buffer 1
-#define EGL_NATIVE_BUFFER_ANDROID         0x3140
-#endif /* EGL_ANDROID_image_native_buffer */
-
-#ifndef EGL_ANDROID_native_fence_sync
-#define EGL_ANDROID_native_fence_sync 1
-#define EGL_SYNC_NATIVE_FENCE_ANDROID     0x3144
-#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID  0x3145
-#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
-#define EGL_NO_NATIVE_FENCE_FD_ANDROID    -1
-typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync);
-#endif
-#endif /* EGL_ANDROID_native_fence_sync */
-
-#ifndef EGL_ANDROID_recordable
-#define EGL_ANDROID_recordable 1
-#define EGL_RECORDABLE_ANDROID            0x3142
-#endif /* EGL_ANDROID_recordable */
-
-#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
-#define EGL_ANGLE_d3d_share_handle_client_buffer 1
-#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
-#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
-
-#ifndef EGL_ANGLE_device_d3d
-#define EGL_ANGLE_device_d3d 1
-#define EGL_D3D9_DEVICE_ANGLE             0x33A0
-#define EGL_D3D11_DEVICE_ANGLE            0x33A1
-#endif /* EGL_ANGLE_device_d3d */
-
-#ifndef EGL_ANGLE_query_surface_pointer
-#define EGL_ANGLE_query_surface_pointer 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
-#endif
-#endif /* EGL_ANGLE_query_surface_pointer */
-
-#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
-#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
-#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
-
-#ifndef EGL_ANGLE_window_fixed_size
-#define EGL_ANGLE_window_fixed_size 1
-#define EGL_FIXED_SIZE_ANGLE              0x3201
-#endif /* EGL_ANGLE_window_fixed_size */
-
-#ifndef EGL_ARM_pixmap_multisample_discard
-#define EGL_ARM_pixmap_multisample_discard 1
-#define EGL_DISCARD_SAMPLES_ARM           0x3286
-#endif /* EGL_ARM_pixmap_multisample_discard */
-
-#ifndef EGL_EXT_buffer_age
-#define EGL_EXT_buffer_age 1
-#define EGL_BUFFER_AGE_EXT                0x313D
-#endif /* EGL_EXT_buffer_age */
-
-#ifndef EGL_EXT_client_extensions
-#define EGL_EXT_client_extensions 1
-#endif /* EGL_EXT_client_extensions */
-
-#ifndef EGL_EXT_create_context_robustness
-#define EGL_EXT_create_context_robustness 1
-#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
-#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
-#define EGL_NO_RESET_NOTIFICATION_EXT     0x31BE
-#define EGL_LOSE_CONTEXT_ON_RESET_EXT     0x31BF
-#endif /* EGL_EXT_create_context_robustness */
-
-#ifndef EGL_EXT_device_base
-#define EGL_EXT_device_base 1
-typedef void *EGLDeviceEXT;
-#define EGL_NO_DEVICE_EXT                 ((EGLDeviceEXT)(0))
-#define EGL_BAD_DEVICE_EXT                0x322B
-#define EGL_DEVICE_EXT                    0x322C
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
-EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
-#endif
-#endif /* EGL_EXT_device_base */
-
-#ifndef EGL_EXT_device_drm
-#define EGL_EXT_device_drm 1
-#define EGL_DRM_DEVICE_FILE_EXT           0x3233
-#endif /* EGL_EXT_device_drm */
-
-#ifndef EGL_EXT_device_enumeration
-#define EGL_EXT_device_enumeration 1
-#endif /* EGL_EXT_device_enumeration */
-
-#ifndef EGL_EXT_device_openwf
-#define EGL_EXT_device_openwf 1
-#define EGL_OPENWF_DEVICE_ID_EXT          0x3237
-#endif /* EGL_EXT_device_openwf */
-
-#ifndef EGL_EXT_device_query
-#define EGL_EXT_device_query 1
-#endif /* EGL_EXT_device_query */
-
-#ifndef EGL_EXT_image_dma_buf_import
-#define EGL_EXT_image_dma_buf_import 1
-#define EGL_LINUX_DMA_BUF_EXT             0x3270
-#define EGL_LINUX_DRM_FOURCC_EXT          0x3271
-#define EGL_DMA_BUF_PLANE0_FD_EXT         0x3272
-#define EGL_DMA_BUF_PLANE0_OFFSET_EXT     0x3273
-#define EGL_DMA_BUF_PLANE0_PITCH_EXT      0x3274
-#define EGL_DMA_BUF_PLANE1_FD_EXT         0x3275
-#define EGL_DMA_BUF_PLANE1_OFFSET_EXT     0x3276
-#define EGL_DMA_BUF_PLANE1_PITCH_EXT      0x3277
-#define EGL_DMA_BUF_PLANE2_FD_EXT         0x3278
-#define EGL_DMA_BUF_PLANE2_OFFSET_EXT     0x3279
-#define EGL_DMA_BUF_PLANE2_PITCH_EXT      0x327A
-#define EGL_YUV_COLOR_SPACE_HINT_EXT      0x327B
-#define EGL_SAMPLE_RANGE_HINT_EXT         0x327C
-#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
-#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
-#define EGL_ITU_REC601_EXT                0x327F
-#define EGL_ITU_REC709_EXT                0x3280
-#define EGL_ITU_REC2020_EXT               0x3281
-#define EGL_YUV_FULL_RANGE_EXT            0x3282
-#define EGL_YUV_NARROW_RANGE_EXT          0x3283
-#define EGL_YUV_CHROMA_SITING_0_EXT       0x3284
-#define EGL_YUV_CHROMA_SITING_0_5_EXT     0x3285
-#endif /* EGL_EXT_image_dma_buf_import */
-
-#ifndef EGL_EXT_multiview_window
-#define EGL_EXT_multiview_window 1
-#define EGL_MULTIVIEW_VIEW_COUNT_EXT      0x3134
-#endif /* EGL_EXT_multiview_window */
-
-#ifndef EGL_EXT_output_base
-#define EGL_EXT_output_base 1
-typedef void *EGLOutputLayerEXT;
-typedef void *EGLOutputPortEXT;
-#define EGL_NO_OUTPUT_LAYER_EXT           ((EGLOutputLayerEXT)0)
-#define EGL_NO_OUTPUT_PORT_EXT            ((EGLOutputPortEXT)0)
-#define EGL_BAD_OUTPUT_LAYER_EXT          0x322D
-#define EGL_BAD_OUTPUT_PORT_EXT           0x322E
-#define EGL_SWAP_INTERVAL_EXT             0x322F
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
-EGLAPI EGLBoolean EGLAPIENTRY eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
-EGLAPI const char *EGLAPIENTRY eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
-EGLAPI const char *EGLAPIENTRY eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
-#endif
-#endif /* EGL_EXT_output_base */
-
-#ifndef EGL_EXT_output_drm
-#define EGL_EXT_output_drm 1
-#define EGL_DRM_CRTC_EXT                  0x3234
-#define EGL_DRM_PLANE_EXT                 0x3235
-#define EGL_DRM_CONNECTOR_EXT             0x3236
-#endif /* EGL_EXT_output_drm */
-
-#ifndef EGL_EXT_output_openwf
-#define EGL_EXT_output_openwf 1
-#define EGL_OPENWF_PIPELINE_ID_EXT        0x3238
-#define EGL_OPENWF_PORT_ID_EXT            0x3239
-#endif /* EGL_EXT_output_openwf */
-
-#ifndef EGL_EXT_platform_base
-#define EGL_EXT_platform_base 1
-typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
-#endif
-#endif /* EGL_EXT_platform_base */
-
-#ifndef EGL_EXT_platform_device
-#define EGL_EXT_platform_device 1
-#define EGL_PLATFORM_DEVICE_EXT           0x313F
-#endif /* EGL_EXT_platform_device */
-
-#ifndef EGL_EXT_platform_wayland
-#define EGL_EXT_platform_wayland 1
-#define EGL_PLATFORM_WAYLAND_EXT          0x31D8
-#endif /* EGL_EXT_platform_wayland */
-
-#ifndef EGL_EXT_platform_x11
-#define EGL_EXT_platform_x11 1
-#define EGL_PLATFORM_X11_EXT              0x31D5
-#define EGL_PLATFORM_X11_SCREEN_EXT       0x31D6
-#endif /* EGL_EXT_platform_x11 */
-
-#ifndef EGL_EXT_protected_surface
-#define EGL_EXT_protected_surface 1
-#define EGL_PROTECTED_CONTENT_EXT         0x32C0
-#endif /* EGL_EXT_protected_surface */
-
-#ifndef EGL_EXT_stream_consumer_egloutput
-#define EGL_EXT_stream_consumer_egloutput 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
-#endif
-#endif /* EGL_EXT_stream_consumer_egloutput */
-
-#ifndef EGL_EXT_swap_buffers_with_damage
-#define EGL_EXT_swap_buffers_with_damage 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#endif
-#endif /* EGL_EXT_swap_buffers_with_damage */
-
-#ifndef EGL_EXT_yuv_surface
-#define EGL_EXT_yuv_surface 1
-#define EGL_YUV_ORDER_EXT                 0x3301
-#define EGL_YUV_NUMBER_OF_PLANES_EXT      0x3311
-#define EGL_YUV_SUBSAMPLE_EXT             0x3312
-#define EGL_YUV_DEPTH_RANGE_EXT           0x3317
-#define EGL_YUV_CSC_STANDARD_EXT          0x330A
-#define EGL_YUV_PLANE_BPP_EXT             0x331A
-#define EGL_YUV_BUFFER_EXT                0x3300
-#define EGL_YUV_ORDER_YUV_EXT             0x3302
-#define EGL_YUV_ORDER_YVU_EXT             0x3303
-#define EGL_YUV_ORDER_YUYV_EXT            0x3304
-#define EGL_YUV_ORDER_UYVY_EXT            0x3305
-#define EGL_YUV_ORDER_YVYU_EXT            0x3306
-#define EGL_YUV_ORDER_VYUY_EXT            0x3307
-#define EGL_YUV_ORDER_AYUV_EXT            0x3308
-#define EGL_YUV_SUBSAMPLE_4_2_0_EXT       0x3313
-#define EGL_YUV_SUBSAMPLE_4_2_2_EXT       0x3314
-#define EGL_YUV_SUBSAMPLE_4_4_4_EXT       0x3315
-#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT   0x3318
-#define EGL_YUV_DEPTH_RANGE_FULL_EXT      0x3319
-#define EGL_YUV_CSC_STANDARD_601_EXT      0x330B
-#define EGL_YUV_CSC_STANDARD_709_EXT      0x330C
-#define EGL_YUV_CSC_STANDARD_2020_EXT     0x330D
-#define EGL_YUV_PLANE_BPP_0_EXT           0x331B
-#define EGL_YUV_PLANE_BPP_8_EXT           0x331C
-#define EGL_YUV_PLANE_BPP_10_EXT          0x331D
-#endif /* EGL_EXT_yuv_surface */
-
-#ifndef EGL_HI_clientpixmap
-#define EGL_HI_clientpixmap 1
-struct EGLClientPixmapHI {
-    void  *pData;
-    EGLint iWidth;
-    EGLint iHeight;
-    EGLint iStride;
-};
-#define EGL_CLIENT_PIXMAP_POINTER_HI      0x8F74
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
-#endif
-#endif /* EGL_HI_clientpixmap */
-
-#ifndef EGL_HI_colorformats
-#define EGL_HI_colorformats 1
-#define EGL_COLOR_FORMAT_HI               0x8F70
-#define EGL_COLOR_RGB_HI                  0x8F71
-#define EGL_COLOR_RGBA_HI                 0x8F72
-#define EGL_COLOR_ARGB_HI                 0x8F73
-#endif /* EGL_HI_colorformats */
-
-#ifndef EGL_IMG_context_priority
-#define EGL_IMG_context_priority 1
-#define EGL_CONTEXT_PRIORITY_LEVEL_IMG    0x3100
-#define EGL_CONTEXT_PRIORITY_HIGH_IMG     0x3101
-#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG   0x3102
-#define EGL_CONTEXT_PRIORITY_LOW_IMG      0x3103
-#endif /* EGL_IMG_context_priority */
-
-#ifndef EGL_MESA_drm_image
-#define EGL_MESA_drm_image 1
-#define EGL_DRM_BUFFER_FORMAT_MESA        0x31D0
-#define EGL_DRM_BUFFER_USE_MESA           0x31D1
-#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
-#define EGL_DRM_BUFFER_MESA               0x31D3
-#define EGL_DRM_BUFFER_STRIDE_MESA        0x31D4
-#define EGL_DRM_BUFFER_USE_SCANOUT_MESA   0x00000001
-#define EGL_DRM_BUFFER_USE_SHARE_MESA     0x00000002
-typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
-#endif
-#endif /* EGL_MESA_drm_image */
-
-#ifndef EGL_MESA_image_dma_buf_export
-#define EGL_MESA_image_dma_buf_export 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
-#endif
-#endif /* EGL_MESA_image_dma_buf_export */
-
-#ifndef EGL_MESA_platform_gbm
-#define EGL_MESA_platform_gbm 1
-#define EGL_PLATFORM_GBM_MESA             0x31D7
-#endif /* EGL_MESA_platform_gbm */
-
-#ifndef EGL_NOK_swap_region
-#define EGL_NOK_swap_region 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#endif
-#endif /* EGL_NOK_swap_region */
-
-#ifndef EGL_NOK_swap_region2
-#define EGL_NOK_swap_region2 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#endif
-#endif /* EGL_NOK_swap_region2 */
-
-#ifndef EGL_NOK_texture_from_pixmap
-#define EGL_NOK_texture_from_pixmap 1
-#define EGL_Y_INVERTED_NOK                0x307F
-#endif /* EGL_NOK_texture_from_pixmap */
-
-#ifndef EGL_NV_3dvision_surface
-#define EGL_NV_3dvision_surface 1
-#define EGL_AUTO_STEREO_NV                0x3136
-#endif /* EGL_NV_3dvision_surface */
-
-#ifndef EGL_NV_coverage_sample
-#define EGL_NV_coverage_sample 1
-#define EGL_COVERAGE_BUFFERS_NV           0x30E0
-#define EGL_COVERAGE_SAMPLES_NV           0x30E1
-#endif /* EGL_NV_coverage_sample */
-
-#ifndef EGL_NV_coverage_sample_resolve
-#define EGL_NV_coverage_sample_resolve 1
-#define EGL_COVERAGE_SAMPLE_RESOLVE_NV    0x3131
-#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
-#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
-#endif /* EGL_NV_coverage_sample_resolve */
-
-#ifndef EGL_NV_cuda_event
-#define EGL_NV_cuda_event 1
-#define EGL_CUDA_EVENT_HANDLE_NV          0x323B
-#define EGL_SYNC_CUDA_EVENT_NV            0x323C
-#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV   0x323D
-#endif /* EGL_NV_cuda_event */
-
-#ifndef EGL_NV_depth_nonlinear
-#define EGL_NV_depth_nonlinear 1
-#define EGL_DEPTH_ENCODING_NV             0x30E2
-#define EGL_DEPTH_ENCODING_NONE_NV        0
-#define EGL_DEPTH_ENCODING_NONLINEAR_NV   0x30E3
-#endif /* EGL_NV_depth_nonlinear */
-
-#ifndef EGL_NV_device_cuda
-#define EGL_NV_device_cuda 1
-#define EGL_CUDA_DEVICE_NV                0x323A
-#endif /* EGL_NV_device_cuda */
-
-#ifndef EGL_NV_native_query
-#define EGL_NV_native_query 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
-#endif
-#endif /* EGL_NV_native_query */
-
-#ifndef EGL_NV_post_convert_rounding
-#define EGL_NV_post_convert_rounding 1
-#endif /* EGL_NV_post_convert_rounding */
-
-#ifndef EGL_NV_post_sub_buffer
-#define EGL_NV_post_sub_buffer 1
-#define EGL_POST_SUB_BUFFER_SUPPORTED_NV  0x30BE
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
-#endif
-#endif /* EGL_NV_post_sub_buffer */
-
-#ifndef EGL_NV_stream_sync
-#define EGL_NV_stream_sync 1
-#define EGL_SYNC_NEW_FRAME_NV             0x321F
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
-#endif
-#endif /* EGL_NV_stream_sync */
-
-#ifndef EGL_NV_sync
-#define EGL_NV_sync 1
-typedef void *EGLSyncNV;
-typedef khronos_utime_nanoseconds_t EGLTimeNV;
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
-#define EGL_SYNC_STATUS_NV                0x30E7
-#define EGL_SIGNALED_NV                   0x30E8
-#define EGL_UNSIGNALED_NV                 0x30E9
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV    0x0001
-#define EGL_FOREVER_NV                    0xFFFFFFFFFFFFFFFFull
-#define EGL_ALREADY_SIGNALED_NV           0x30EA
-#define EGL_TIMEOUT_EXPIRED_NV            0x30EB
-#define EGL_CONDITION_SATISFIED_NV        0x30EC
-#define EGL_SYNC_TYPE_NV                  0x30ED
-#define EGL_SYNC_CONDITION_NV             0x30EE
-#define EGL_SYNC_FENCE_NV                 0x30EF
-#define EGL_NO_SYNC_NV                    ((EGLSyncNV)0)
-typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync);
-EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_NV_sync */
-
-#ifndef EGL_NV_system_time
-#define EGL_NV_system_time 1
-typedef khronos_utime_nanoseconds_t EGLuint64NV;
-#ifdef KHRONOS_SUPPORT_INT64
-typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
-typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void);
-EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_NV_system_time */
-
-#ifndef EGL_TIZEN_image_native_buffer
-#define EGL_TIZEN_image_native_buffer 1
-#define EGL_NATIVE_BUFFER_TIZEN           0x32A0
-#endif /* EGL_TIZEN_image_native_buffer */
-
-#ifndef EGL_TIZEN_image_native_surface
-#define EGL_TIZEN_image_native_surface 1
-#define EGL_NATIVE_SURFACE_TIZEN          0x32A1
-#endif /* EGL_TIZEN_image_native_surface */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __eglext_h_ */
-
-
-#endif /* _MSC_VER */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_endian.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_endian.h
deleted file mode 100644 (file)
index 54d5d48..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_endian.h
- *
- *  Functions for reading and writing endian-specific values
- */
-
-#ifndef SDL_endian_h_
-#define SDL_endian_h_
-
-#include "SDL_stdinc.h"
-
-/**
- *  \name The two types of endianness
- */
-/* @{ */
-#define SDL_LIL_ENDIAN  1234
-#define SDL_BIG_ENDIAN  4321
-/* @} */
-
-#ifndef SDL_BYTEORDER           /* Not defined in SDL_config.h? */
-#ifdef __linux__
-#include <endian.h>
-#define SDL_BYTEORDER  __BYTE_ORDER
-#else /* __linux__ */
-#if defined(__hppa__) || \
-    defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
-    (defined(__MIPS__) && defined(__MISPEB__)) || \
-    defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \
-    defined(__sparc__)
-#define SDL_BYTEORDER   SDL_BIG_ENDIAN
-#else
-#define SDL_BYTEORDER   SDL_LIL_ENDIAN
-#endif
-#endif /* __linux__ */
-#endif /* !SDL_BYTEORDER */
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_endian.h
- */
-#if defined(__GNUC__) && defined(__i386__) && \
-   !(__GNUC__ == 2 && __GNUC_MINOR__ == 95 /* broken gcc version */)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-  __asm__("xchgb %b0,%h0": "=q"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && defined(__x86_64__)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-  __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-    int result;
-
-  __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x));
-    return (Uint16)result;
-}
-#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-  __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
-    return x;
-}
-#elif defined(__WATCOMC__) && defined(__386__)
-extern _inline Uint16 SDL_Swap16(Uint16);
-#pragma aux SDL_Swap16 = \
-  "xchg al, ah" \
-  parm   [ax]   \
-  modify [ax];
-#else
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-    return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));
-}
-#endif
-
-#if defined(__GNUC__) && defined(__i386__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-  __asm__("bswap %0": "=r"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && defined(__x86_64__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-  __asm__("bswapl %0": "=r"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-    Uint32 result;
-
-  __asm__("rlwimi %0,%2,24,16,23": "=&r"(result):"0"(x >> 24), "r"(x));
-  __asm__("rlwimi %0,%2,8,8,15": "=&r"(result):"0"(result), "r"(x));
-  __asm__("rlwimi %0,%2,24,0,7": "=&r"(result):"0"(result), "r"(x));
-    return result;
-}
-#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-  __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
-    return x;
-}
-#elif defined(__WATCOMC__) && defined(__386__)
-extern _inline Uint32 SDL_Swap32(Uint32);
-#ifndef __SW_3 /* 486+ */
-#pragma aux SDL_Swap32 = \
-  "bswap eax"  \
-  parm   [eax] \
-  modify [eax];
-#else  /* 386-only */
-#pragma aux SDL_Swap32 = \
-  "xchg al, ah"  \
-  "ror  eax, 16" \
-  "xchg al, ah"  \
-  parm   [eax]   \
-  modify [eax];
-#endif
-#else
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-    return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |
-                                    ((x >> 8) & 0x0000FF00) | (x >> 24)));
-}
-#endif
-
-#if defined(__GNUC__) && defined(__i386__)
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
-    union
-    {
-        struct
-        {
-            Uint32 a, b;
-        } s;
-        Uint64 u;
-    } v;
-    v.u = x;
-  __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1": "=r"(v.s.a), "=r"(v.s.b):"0"(v.s.a),
-            "1"(v.s.
-                b));
-    return v.u;
-}
-#elif defined(__GNUC__) && defined(__x86_64__)
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
-  __asm__("bswapq %0": "=r"(x):"0"(x));
-    return x;
-}
-#else
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
-    Uint32 hi, lo;
-
-    /* Separate into high and low 32-bit values and swap them */
-    lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
-    x >>= 32;
-    hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
-    x = SDL_Swap32(lo);
-    x <<= 32;
-    x |= SDL_Swap32(hi);
-    return (x);
-}
-#endif
-
-
-SDL_FORCE_INLINE float
-SDL_SwapFloat(float x)
-{
-    union
-    {
-        float f;
-        Uint32 ui32;
-    } swapper;
-    swapper.f = x;
-    swapper.ui32 = SDL_Swap32(swapper.ui32);
-    return swapper.f;
-}
-
-
-/**
- *  \name Swap to native
- *  Byteswap item from the specified endianness to the native endianness.
- */
-/* @{ */
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-#define SDL_SwapLE16(X) (X)
-#define SDL_SwapLE32(X) (X)
-#define SDL_SwapLE64(X) (X)
-#define SDL_SwapFloatLE(X)  (X)
-#define SDL_SwapBE16(X) SDL_Swap16(X)
-#define SDL_SwapBE32(X) SDL_Swap32(X)
-#define SDL_SwapBE64(X) SDL_Swap64(X)
-#define SDL_SwapFloatBE(X)  SDL_SwapFloat(X)
-#else
-#define SDL_SwapLE16(X) SDL_Swap16(X)
-#define SDL_SwapLE32(X) SDL_Swap32(X)
-#define SDL_SwapLE64(X) SDL_Swap64(X)
-#define SDL_SwapFloatLE(X)  SDL_SwapFloat(X)
-#define SDL_SwapBE16(X) (X)
-#define SDL_SwapBE32(X) (X)
-#define SDL_SwapBE64(X) (X)
-#define SDL_SwapFloatBE(X)  (X)
-#endif
-/* @} *//* Swap to native */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_endian_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_error.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_error.h
deleted file mode 100644 (file)
index 24416e6..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_error.h
- *
- *  Simple error message routines for SDL.
- */
-
-#ifndef SDL_error_h_
-#define SDL_error_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Public functions */
-/* SDL_SetError() unconditionally returns -1. */
-extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-extern DECLSPEC const char *SDLCALL SDL_GetError(void);
-extern DECLSPEC void SDLCALL SDL_ClearError(void);
-
-/**
- *  \name Internal error functions
- *
- *  \internal
- *  Private error reporting function - used internally.
- */
-/* @{ */
-#define SDL_OutOfMemory()   SDL_Error(SDL_ENOMEM)
-#define SDL_Unsupported()   SDL_Error(SDL_UNSUPPORTED)
-#define SDL_InvalidParamError(param)    SDL_SetError("Parameter '%s' is invalid", (param))
-typedef enum
-{
-    SDL_ENOMEM,
-    SDL_EFREAD,
-    SDL_EFWRITE,
-    SDL_EFSEEK,
-    SDL_UNSUPPORTED,
-    SDL_LASTERROR
-} SDL_errorcode;
-/* SDL_Error() unconditionally returns -1. */
-extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code);
-/* @} *//* Internal error functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_error_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_events.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_events.h
deleted file mode 100644 (file)
index 282b9fb..0000000
+++ /dev/null
@@ -1,791 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_events.h
- *
- *  Include file for SDL event handling.
- */
-
-#ifndef SDL_events_h_
-#define SDL_events_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-#include "SDL_keyboard.h"
-#include "SDL_mouse.h"
-#include "SDL_joystick.h"
-#include "SDL_gamecontroller.h"
-#include "SDL_quit.h"
-#include "SDL_gesture.h"
-#include "SDL_touch.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* General keyboard/mouse state definitions */
-#define SDL_RELEASED    0
-#define SDL_PRESSED 1
-
-/**
- * \brief The types of events that can be delivered.
- */
-typedef enum
-{
-    SDL_FIRSTEVENT     = 0,     /**< Unused (do not remove) */
-
-    /* Application events */
-    SDL_QUIT           = 0x100, /**< User-requested quit */
-
-    /* These application events have special meaning on iOS, see README-ios.md for details */
-    SDL_APP_TERMINATING,        /**< The application is being terminated by the OS
-                                     Called on iOS in applicationWillTerminate()
-                                     Called on Android in onDestroy()
-                                */
-    SDL_APP_LOWMEMORY,          /**< The application is low on memory, free memory if possible.
-                                     Called on iOS in applicationDidReceiveMemoryWarning()
-                                     Called on Android in onLowMemory()
-                                */
-    SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
-                                     Called on iOS in applicationWillResignActive()
-                                     Called on Android in onPause()
-                                */
-    SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
-                                     Called on iOS in applicationDidEnterBackground()
-                                     Called on Android in onPause()
-                                */
-    SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
-                                     Called on iOS in applicationWillEnterForeground()
-                                     Called on Android in onResume()
-                                */
-    SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
-                                     Called on iOS in applicationDidBecomeActive()
-                                     Called on Android in onResume()
-                                */
-
-    /* Display events */
-    SDL_DISPLAYEVENT   = 0x150,  /**< Display state change */
-
-    /* Window events */
-    SDL_WINDOWEVENT    = 0x200, /**< Window state change */
-    SDL_SYSWMEVENT,             /**< System specific event */
-
-    /* Keyboard events */
-    SDL_KEYDOWN        = 0x300, /**< Key pressed */
-    SDL_KEYUP,                  /**< Key released */
-    SDL_TEXTEDITING,            /**< Keyboard text editing (composition) */
-    SDL_TEXTINPUT,              /**< Keyboard text input */
-    SDL_KEYMAPCHANGED,          /**< Keymap changed due to a system event such as an
-                                     input language or keyboard layout change.
-                                */
-
-    /* Mouse events */
-    SDL_MOUSEMOTION    = 0x400, /**< Mouse moved */
-    SDL_MOUSEBUTTONDOWN,        /**< Mouse button pressed */
-    SDL_MOUSEBUTTONUP,          /**< Mouse button released */
-    SDL_MOUSEWHEEL,             /**< Mouse wheel motion */
-
-    /* Joystick events */
-    SDL_JOYAXISMOTION  = 0x600, /**< Joystick axis motion */
-    SDL_JOYBALLMOTION,          /**< Joystick trackball motion */
-    SDL_JOYHATMOTION,           /**< Joystick hat position change */
-    SDL_JOYBUTTONDOWN,          /**< Joystick button pressed */
-    SDL_JOYBUTTONUP,            /**< Joystick button released */
-    SDL_JOYDEVICEADDED,         /**< A new joystick has been inserted into the system */
-    SDL_JOYDEVICEREMOVED,       /**< An opened joystick has been removed */
-
-    /* Game controller events */
-    SDL_CONTROLLERAXISMOTION  = 0x650, /**< Game controller axis motion */
-    SDL_CONTROLLERBUTTONDOWN,          /**< Game controller button pressed */
-    SDL_CONTROLLERBUTTONUP,            /**< Game controller button released */
-    SDL_CONTROLLERDEVICEADDED,         /**< A new Game controller has been inserted into the system */
-    SDL_CONTROLLERDEVICEREMOVED,       /**< An opened Game controller has been removed */
-    SDL_CONTROLLERDEVICEREMAPPED,      /**< The controller mapping was updated */
-
-    /* Touch events */
-    SDL_FINGERDOWN      = 0x700,
-    SDL_FINGERUP,
-    SDL_FINGERMOTION,
-
-    /* Gesture events */
-    SDL_DOLLARGESTURE   = 0x800,
-    SDL_DOLLARRECORD,
-    SDL_MULTIGESTURE,
-
-    /* Clipboard events */
-    SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */
-
-    /* Drag and drop events */
-    SDL_DROPFILE        = 0x1000, /**< The system requests a file open */
-    SDL_DROPTEXT,                 /**< text/plain drag-and-drop event */
-    SDL_DROPBEGIN,                /**< A new set of drops is beginning (NULL filename) */
-    SDL_DROPCOMPLETE,             /**< Current set of drops is now complete (NULL filename) */
-
-    /* Audio hotplug events */
-    SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
-    SDL_AUDIODEVICEREMOVED,        /**< An audio device has been removed. */
-
-    /* Sensor events */
-    SDL_SENSORUPDATE = 0x1200,     /**< A sensor was updated */
-
-    /* Render events */
-    SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
-    SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
-
-    /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
-     *  and should be allocated with SDL_RegisterEvents()
-     */
-    SDL_USEREVENT    = 0x8000,
-
-    /**
-     *  This last event is only for bounding internal arrays
-     */
-    SDL_LASTEVENT    = 0xFFFF
-} SDL_EventType;
-
-/**
- *  \brief Fields shared by every event
- */
-typedef struct SDL_CommonEvent
-{
-    Uint32 type;
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_CommonEvent;
-
-/**
- *  \brief Display state change event data (event.display.*)
- */
-typedef struct SDL_DisplayEvent
-{
-    Uint32 type;        /**< ::SDL_DISPLAYEVENT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 display;     /**< The associated display index */
-    Uint8 event;        /**< ::SDL_DisplayEventID */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint32 data1;       /**< event dependent data */
-} SDL_DisplayEvent;
-
-/**
- *  \brief Window state change event data (event.window.*)
- */
-typedef struct SDL_WindowEvent
-{
-    Uint32 type;        /**< ::SDL_WINDOWEVENT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The associated window */
-    Uint8 event;        /**< ::SDL_WindowEventID */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint32 data1;       /**< event dependent data */
-    Sint32 data2;       /**< event dependent data */
-} SDL_WindowEvent;
-
-/**
- *  \brief Keyboard button event structure (event.key.*)
- */
-typedef struct SDL_KeyboardEvent
-{
-    Uint32 type;        /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with keyboard focus, if any */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 repeat;       /**< Non-zero if this is a key repeat */
-    Uint8 padding2;
-    Uint8 padding3;
-    SDL_Keysym keysym;  /**< The key that was pressed or released */
-} SDL_KeyboardEvent;
-
-#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
-/**
- *  \brief Keyboard text editing event structure (event.edit.*)
- */
-typedef struct SDL_TextEditingEvent
-{
-    Uint32 type;                                /**< ::SDL_TEXTEDITING */
-    Uint32 timestamp;                           /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;                            /**< The window with keyboard focus, if any */
-    char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE];  /**< The editing text */
-    Sint32 start;                               /**< The start cursor of selected editing text */
-    Sint32 length;                              /**< The length of selected editing text */
-} SDL_TextEditingEvent;
-
-
-#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
-/**
- *  \brief Keyboard text input event structure (event.text.*)
- */
-typedef struct SDL_TextInputEvent
-{
-    Uint32 type;                              /**< ::SDL_TEXTINPUT */
-    Uint32 timestamp;                         /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;                          /**< The window with keyboard focus, if any */
-    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];  /**< The input text */
-} SDL_TextInputEvent;
-
-/**
- *  \brief Mouse motion event structure (event.motion.*)
- */
-typedef struct SDL_MouseMotionEvent
-{
-    Uint32 type;        /**< ::SDL_MOUSEMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
-    Uint32 state;       /**< The current button state */
-    Sint32 x;           /**< X coordinate, relative to window */
-    Sint32 y;           /**< Y coordinate, relative to window */
-    Sint32 xrel;        /**< The relative motion in the X direction */
-    Sint32 yrel;        /**< The relative motion in the Y direction */
-} SDL_MouseMotionEvent;
-
-/**
- *  \brief Mouse button event structure (event.button.*)
- */
-typedef struct SDL_MouseButtonEvent
-{
-    Uint32 type;        /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
-    Uint8 button;       /**< The mouse button index */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 clicks;       /**< 1 for single-click, 2 for double-click, etc. */
-    Uint8 padding1;
-    Sint32 x;           /**< X coordinate, relative to window */
-    Sint32 y;           /**< Y coordinate, relative to window */
-} SDL_MouseButtonEvent;
-
-/**
- *  \brief Mouse wheel event structure (event.wheel.*)
- */
-typedef struct SDL_MouseWheelEvent
-{
-    Uint32 type;        /**< ::SDL_MOUSEWHEEL */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
-    Sint32 x;           /**< The amount scrolled horizontally, positive to the right and negative to the left */
-    Sint32 y;           /**< The amount scrolled vertically, positive away from the user and negative toward the user */
-    Uint32 direction;   /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
-} SDL_MouseWheelEvent;
-
-/**
- *  \brief Joystick axis motion event structure (event.jaxis.*)
- */
-typedef struct SDL_JoyAxisEvent
-{
-    Uint32 type;        /**< ::SDL_JOYAXISMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 axis;         /**< The joystick axis index */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
-    Uint16 padding4;
-} SDL_JoyAxisEvent;
-
-/**
- *  \brief Joystick trackball motion event structure (event.jball.*)
- */
-typedef struct SDL_JoyBallEvent
-{
-    Uint32 type;        /**< ::SDL_JOYBALLMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 ball;         /**< The joystick trackball index */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint16 xrel;        /**< The relative motion in the X direction */
-    Sint16 yrel;        /**< The relative motion in the Y direction */
-} SDL_JoyBallEvent;
-
-/**
- *  \brief Joystick hat position change event structure (event.jhat.*)
- */
-typedef struct SDL_JoyHatEvent
-{
-    Uint32 type;        /**< ::SDL_JOYHATMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 hat;          /**< The joystick hat index */
-    Uint8 value;        /**< The hat position value.
-                         *   \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
-                         *   \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
-                         *   \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
-                         *
-                         *   Note that zero means the POV is centered.
-                         */
-    Uint8 padding1;
-    Uint8 padding2;
-} SDL_JoyHatEvent;
-
-/**
- *  \brief Joystick button event structure (event.jbutton.*)
- */
-typedef struct SDL_JoyButtonEvent
-{
-    Uint32 type;        /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 button;       /**< The joystick button index */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 padding1;
-    Uint8 padding2;
-} SDL_JoyButtonEvent;
-
-/**
- *  \brief Joystick device event structure (event.jdevice.*)
- */
-typedef struct SDL_JoyDeviceEvent
-{
-    Uint32 type;        /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
-} SDL_JoyDeviceEvent;
-
-
-/**
- *  \brief Game controller axis motion event structure (event.caxis.*)
- */
-typedef struct SDL_ControllerAxisEvent
-{
-    Uint32 type;        /**< ::SDL_CONTROLLERAXISMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 axis;         /**< The controller axis (SDL_GameControllerAxis) */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
-    Uint16 padding4;
-} SDL_ControllerAxisEvent;
-
-
-/**
- *  \brief Game controller button event structure (event.cbutton.*)
- */
-typedef struct SDL_ControllerButtonEvent
-{
-    Uint32 type;        /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 button;       /**< The controller button (SDL_GameControllerButton) */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 padding1;
-    Uint8 padding2;
-} SDL_ControllerButtonEvent;
-
-
-/**
- *  \brief Controller device event structure (event.cdevice.*)
- */
-typedef struct SDL_ControllerDeviceEvent
-{
-    Uint32 type;        /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
-} SDL_ControllerDeviceEvent;
-
-/**
- *  \brief Audio device event structure (event.adevice.*)
- */
-typedef struct SDL_AudioDeviceEvent
-{
-    Uint32 type;        /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 which;       /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
-    Uint8 iscapture;    /**< zero if an output device, non-zero if a capture device. */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-} SDL_AudioDeviceEvent;
-
-
-/**
- *  \brief Touch finger event structure (event.tfinger.*)
- */
-typedef struct SDL_TouchFingerEvent
-{
-    Uint32 type;        /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_TouchID touchId; /**< The touch device id */
-    SDL_FingerID fingerId;
-    float x;            /**< Normalized in the range 0...1 */
-    float y;            /**< Normalized in the range 0...1 */
-    float dx;           /**< Normalized in the range -1...1 */
-    float dy;           /**< Normalized in the range -1...1 */
-    float pressure;     /**< Normalized in the range 0...1 */
-} SDL_TouchFingerEvent;
-
-
-/**
- *  \brief Multiple Finger Gesture Event (event.mgesture.*)
- */
-typedef struct SDL_MultiGestureEvent
-{
-    Uint32 type;        /**< ::SDL_MULTIGESTURE */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_TouchID touchId; /**< The touch device id */
-    float dTheta;
-    float dDist;
-    float x;
-    float y;
-    Uint16 numFingers;
-    Uint16 padding;
-} SDL_MultiGestureEvent;
-
-
-/**
- * \brief Dollar Gesture Event (event.dgesture.*)
- */
-typedef struct SDL_DollarGestureEvent
-{
-    Uint32 type;        /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_TouchID touchId; /**< The touch device id */
-    SDL_GestureID gestureId;
-    Uint32 numFingers;
-    float error;
-    float x;            /**< Normalized center of gesture */
-    float y;            /**< Normalized center of gesture */
-} SDL_DollarGestureEvent;
-
-
-/**
- *  \brief An event used to request a file open by the system (event.drop.*)
- *         This event is enabled by default, you can disable it with SDL_EventState().
- *  \note If this event is enabled, you must free the filename in the event.
- */
-typedef struct SDL_DropEvent
-{
-    Uint32 type;        /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    char *file;         /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
-    Uint32 windowID;    /**< The window that was dropped on, if any */
-} SDL_DropEvent;
-
-
-/**
- *  \brief Sensor event structure (event.sensor.*)
- */
-typedef struct SDL_SensorEvent
-{
-    Uint32 type;        /**< ::SDL_SENSORUPDATE */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Sint32 which;       /**< The instance ID of the sensor */
-    float data[6];      /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */
-} SDL_SensorEvent;
-
-/**
- *  \brief The "quit requested" event
- */
-typedef struct SDL_QuitEvent
-{
-    Uint32 type;        /**< ::SDL_QUIT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_QuitEvent;
-
-/**
- *  \brief OS Specific event
- */
-typedef struct SDL_OSEvent
-{
-    Uint32 type;        /**< ::SDL_QUIT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_OSEvent;
-
-/**
- *  \brief A user-defined event type (event.user.*)
- */
-typedef struct SDL_UserEvent
-{
-    Uint32 type;        /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The associated window if any */
-    Sint32 code;        /**< User defined event code */
-    void *data1;        /**< User defined data pointer */
-    void *data2;        /**< User defined data pointer */
-} SDL_UserEvent;
-
-
-struct SDL_SysWMmsg;
-typedef struct SDL_SysWMmsg SDL_SysWMmsg;
-
-/**
- *  \brief A video driver dependent system event (event.syswm.*)
- *         This event is disabled by default, you can enable it with SDL_EventState()
- *
- *  \note If you want to use this event, you should include SDL_syswm.h.
- */
-typedef struct SDL_SysWMEvent
-{
-    Uint32 type;        /**< ::SDL_SYSWMEVENT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_SysWMmsg *msg;  /**< driver dependent data, defined in SDL_syswm.h */
-} SDL_SysWMEvent;
-
-/**
- *  \brief General event structure
- */
-typedef union SDL_Event
-{
-    Uint32 type;                    /**< Event type, shared with all events */
-    SDL_CommonEvent common;         /**< Common event data */
-    SDL_DisplayEvent display;       /**< Window event data */
-    SDL_WindowEvent window;         /**< Window event data */
-    SDL_KeyboardEvent key;          /**< Keyboard event data */
-    SDL_TextEditingEvent edit;      /**< Text editing event data */
-    SDL_TextInputEvent text;        /**< Text input event data */
-    SDL_MouseMotionEvent motion;    /**< Mouse motion event data */
-    SDL_MouseButtonEvent button;    /**< Mouse button event data */
-    SDL_MouseWheelEvent wheel;      /**< Mouse wheel event data */
-    SDL_JoyAxisEvent jaxis;         /**< Joystick axis event data */
-    SDL_JoyBallEvent jball;         /**< Joystick ball event data */
-    SDL_JoyHatEvent jhat;           /**< Joystick hat event data */
-    SDL_JoyButtonEvent jbutton;     /**< Joystick button event data */
-    SDL_JoyDeviceEvent jdevice;     /**< Joystick device change event data */
-    SDL_ControllerAxisEvent caxis;      /**< Game Controller axis event data */
-    SDL_ControllerButtonEvent cbutton;  /**< Game Controller button event data */
-    SDL_ControllerDeviceEvent cdevice;  /**< Game Controller device event data */
-    SDL_AudioDeviceEvent adevice;   /**< Audio device event data */
-    SDL_SensorEvent sensor;         /**< Sensor event data */
-    SDL_QuitEvent quit;             /**< Quit request event data */
-    SDL_UserEvent user;             /**< Custom event data */
-    SDL_SysWMEvent syswm;           /**< System dependent window event data */
-    SDL_TouchFingerEvent tfinger;   /**< Touch finger event data */
-    SDL_MultiGestureEvent mgesture; /**< Gesture event data */
-    SDL_DollarGestureEvent dgesture; /**< Gesture event data */
-    SDL_DropEvent drop;             /**< Drag and drop event data */
-
-    /* This is necessary for ABI compatibility between Visual C++ and GCC
-       Visual C++ will respect the push pack pragma and use 52 bytes for
-       this structure, and GCC will use the alignment of the largest datatype
-       within the union, which is 8 bytes.
-
-       So... we'll add padding to force the size to be 56 bytes for both.
-    */
-    Uint8 padding[56];
-} SDL_Event;
-
-/* Make sure we haven't broken binary compatibility */
-SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == 56);
-
-
-/* Function prototypes */
-
-/**
- *  Pumps the event loop, gathering events from the input devices.
- *
- *  This function updates the event queue and internal input device state.
- *
- *  This should only be run in the thread that sets the video mode.
- */
-extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
-
-/* @{ */
-typedef enum
-{
-    SDL_ADDEVENT,
-    SDL_PEEKEVENT,
-    SDL_GETEVENT
-} SDL_eventaction;
-
-/**
- *  Checks the event queue for messages and optionally returns them.
- *
- *  If \c action is ::SDL_ADDEVENT, up to \c numevents events will be added to
- *  the back of the event queue.
- *
- *  If \c action is ::SDL_PEEKEVENT, up to \c numevents events at the front
- *  of the event queue, within the specified minimum and maximum type,
- *  will be returned and will not be removed from the queue.
- *
- *  If \c action is ::SDL_GETEVENT, up to \c numevents events at the front
- *  of the event queue, within the specified minimum and maximum type,
- *  will be returned and will be removed from the queue.
- *
- *  \return The number of events actually stored, or -1 if there was an error.
- *
- *  This function is thread-safe.
- */
-extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
-                                           SDL_eventaction action,
-                                           Uint32 minType, Uint32 maxType);
-/* @} */
-
-/**
- *  Checks to see if certain event types are in the event queue.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);
-extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);
-
-/**
- *  This function clears events from the event queue
- *  This function only affects currently queued events. If you want to make
- *  sure that all pending OS events are flushed, you can call SDL_PumpEvents()
- *  on the main thread immediately before the flush call.
- */
-extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);
-extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
-
-/**
- *  \brief Polls for currently pending events.
- *
- *  \return 1 if there are any pending events, or 0 if there are none available.
- *
- *  \param event If not NULL, the next event is removed from the queue and
- *               stored in that area.
- */
-extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
-
-/**
- *  \brief Waits indefinitely for the next available event.
- *
- *  \return 1, or 0 if there was an error while waiting for events.
- *
- *  \param event If not NULL, the next event is removed from the queue and
- *               stored in that area.
- */
-extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
-
-/**
- *  \brief Waits until the specified timeout (in milliseconds) for the next
- *         available event.
- *
- *  \return 1, or 0 if there was an error while waiting for events.
- *
- *  \param event If not NULL, the next event is removed from the queue and
- *               stored in that area.
- *  \param timeout The timeout (in milliseconds) to wait for next event.
- */
-extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,
-                                                 int timeout);
-
-/**
- *  \brief Add an event to the event queue.
- *
- *  \return 1 on success, 0 if the event was filtered, or -1 if the event queue
- *          was full or there was some other error.
- */
-extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
-
-typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
-
-/**
- *  Sets up a filter to process all events before they change internal state and
- *  are posted to the internal event queue.
- *
- *  The filter is prototyped as:
- *  \code
- *      int SDL_EventFilter(void *userdata, SDL_Event * event);
- *  \endcode
- *
- *  If the filter returns 1, then the event will be added to the internal queue.
- *  If it returns 0, then the event will be dropped from the queue, but the
- *  internal state will still be updated.  This allows selective filtering of
- *  dynamically arriving events.
- *
- *  \warning  Be very careful of what you do in the event filter function, as
- *            it may run in a different thread!
- *
- *  There is one caveat when dealing with the ::SDL_QuitEvent event type.  The
- *  event filter is only called when the window manager desires to close the
- *  application window.  If the event filter returns 1, then the window will
- *  be closed, otherwise the window will remain open if possible.
- *
- *  If the quit event is generated by an interrupt signal, it will bypass the
- *  internal queue and be delivered to the application at the next event poll.
- */
-extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,
-                                                void *userdata);
-
-/**
- *  Return the current event filter - can be used to "chain" filters.
- *  If there is no event filter set, this function returns SDL_FALSE.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,
-                                                    void **userdata);
-
-/**
- *  Add a function which is called when an event is added to the queue.
- */
-extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
-                                               void *userdata);
-
-/**
- *  Remove an event watch function added with SDL_AddEventWatch()
- */
-extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
-                                               void *userdata);
-
-/**
- *  Run the filter function on the current event queue, removing any
- *  events for which the filter returns 0.
- */
-extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,
-                                              void *userdata);
-
-/* @{ */
-#define SDL_QUERY   -1
-#define SDL_IGNORE   0
-#define SDL_DISABLE  0
-#define SDL_ENABLE   1
-
-/**
- *  This function allows you to set the state of processing certain events.
- *   - If \c state is set to ::SDL_IGNORE, that event will be automatically
- *     dropped from the event queue and will not be filtered.
- *   - If \c state is set to ::SDL_ENABLE, that event will be processed
- *     normally.
- *   - If \c state is set to ::SDL_QUERY, SDL_EventState() will return the
- *     current processing state of the specified event.
- */
-extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
-/* @} */
-#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)
-
-/**
- *  This function allocates a set of user-defined events, and returns
- *  the beginning event number for that set of events.
- *
- *  If there aren't enough user-defined events left, this function
- *  returns (Uint32)-1
- */
-extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_events_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_filesystem.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_filesystem.h
deleted file mode 100644 (file)
index 6d97e58..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_filesystem.h
- *
- *  \brief Include file for filesystem SDL API functions
- */
-
-#ifndef SDL_filesystem_h_
-#define SDL_filesystem_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Get the path where the application resides.
- *
- * Get the "base path". This is the directory where the application was run
- *  from, which is probably the installation directory, and may or may not
- *  be the process's current working directory.
- *
- * This returns an absolute path in UTF-8 encoding, and is guaranteed to
- *  end with a path separator ('\\' on Windows, '/' most other places).
- *
- * The pointer returned by this function is owned by you. Please call
- *  SDL_free() on the pointer when you are done with it, or it will be a
- *  memory leak. This is not necessarily a fast call, though, so you should
- *  call this once near startup and save the string if you need it.
- *
- * Some platforms can't determine the application's path, and on other
- *  platforms, this might be meaningless. In such cases, this function will
- *  return NULL.
- *
- *  \return String of base dir in UTF-8 encoding, or NULL on error.
- *
- * \sa SDL_GetPrefPath
- */
-extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
-
-/**
- * \brief Get the user-and-app-specific path where files can be written.
- *
- * Get the "pref dir". This is meant to be where users can write personal
- *  files (preferences and save games, etc) that are specific to your
- *  application. This directory is unique per user, per application.
- *
- * This function will decide the appropriate location in the native filesystem,
- *  create the directory if necessary, and return a string of the absolute
- *  path to the directory in UTF-8 encoding.
- *
- * On Windows, the string might look like:
- *  "C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\"
- *
- * On Linux, the string might look like:
- *  "/home/bob/.local/share/My Program Name/"
- *
- * On Mac OS X, the string might look like:
- *  "/Users/bob/Library/Application Support/My Program Name/"
- *
- * (etc.)
- *
- * You specify the name of your organization (if it's not a real organization,
- *  your name or an Internet domain you own might do) and the name of your
- *  application. These should be untranslated proper names.
- *
- * Both the org and app strings may become part of a directory name, so
- *  please follow these rules:
- *
- *    - Try to use the same org string (including case-sensitivity) for
- *      all your applications that use this function.
- *    - Always use a unique app string for each one, and make sure it never
- *      changes for an app once you've decided on it.
- *    - Unicode characters are legal, as long as it's UTF-8 encoded, but...
- *    - ...only use letters, numbers, and spaces. Avoid punctuation like
- *      "Game Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
- *
- * This returns an absolute path in UTF-8 encoding, and is guaranteed to
- *  end with a path separator ('\\' on Windows, '/' most other places).
- *
- * The pointer returned by this function is owned by you. Please call
- *  SDL_free() on the pointer when you are done with it, or it will be a
- *  memory leak. This is not necessarily a fast call, though, so you should
- *  call this once near startup and save the string if you need it.
- *
- * You should assume the path returned by this function is the only safe
- *  place to write files (and that SDL_GetBasePath(), while it might be
- *  writable, or even the parent of the returned path, aren't where you
- *  should be writing things).
- *
- * Some platforms can't determine the pref path, and on other
- *  platforms, this might be meaningless. In such cases, this function will
- *  return NULL.
- *
- *   \param org The name of your organization.
- *   \param app The name of your application.
- *  \return UTF-8 string of user dir in platform-dependent notation. NULL
- *          if there's a problem (creating directory failed, etc).
- *
- * \sa SDL_GetBasePath
- */
-extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_filesystem_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_gamecontroller.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_gamecontroller.h
deleted file mode 100644 (file)
index ebde387..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_gamecontroller.h
- *
- *  Include file for SDL game controller event handling
- */
-
-#ifndef SDL_gamecontroller_h_
-#define SDL_gamecontroller_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_rwops.h"
-#include "SDL_joystick.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_gamecontroller.h
- *
- *  In order to use these functions, SDL_Init() must have been called
- *  with the ::SDL_INIT_GAMECONTROLLER flag.  This causes SDL to scan the system
- *  for game controllers, and load appropriate drivers.
- *
- *  If you would like to receive controller updates while the application
- *  is in the background, you should set the following hint before calling
- *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
- */
-
-/**
- * The gamecontroller structure used to identify an SDL game controller
- */
-struct _SDL_GameController;
-typedef struct _SDL_GameController SDL_GameController;
-
-
-typedef enum
-{
-    SDL_CONTROLLER_BINDTYPE_NONE = 0,
-    SDL_CONTROLLER_BINDTYPE_BUTTON,
-    SDL_CONTROLLER_BINDTYPE_AXIS,
-    SDL_CONTROLLER_BINDTYPE_HAT
-} SDL_GameControllerBindType;
-
-/**
- *  Get the SDL joystick layer binding for this controller button/axis mapping
- */
-typedef struct SDL_GameControllerButtonBind
-{
-    SDL_GameControllerBindType bindType;
-    union
-    {
-        int button;
-        int axis;
-        struct {
-            int hat;
-            int hat_mask;
-        } hat;
-    } value;
-
-} SDL_GameControllerButtonBind;
-
-
-/**
- *  To count the number of game controllers in the system for the following:
- *  int nJoysticks = SDL_NumJoysticks();
- *  int nGameControllers = 0;
- *  for (int i = 0; i < nJoysticks; i++) {
- *      if (SDL_IsGameController(i)) {
- *          nGameControllers++;
- *      }
- *  }
- *
- *  Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is:
- *  guid,name,mappings
- *
- *  Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones.
- *  Under Windows there is a reserved GUID of "xinput" that covers any XInput devices.
- *  The mapping format for joystick is:
- *      bX - a joystick button, index X
- *      hX.Y - hat X with value Y
- *      aX - axis X of the joystick
- *  Buttons can be used as a controller axis and vice versa.
- *
- *  This string shows an example of a valid mapping for a controller
- *  "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7",
- *
- */
-
-/**
- *  Load a set of mappings from a seekable SDL data stream (memory or file), filtered by the current SDL_GetPlatform()
- *  A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
- *
- *  If \c freerw is non-zero, the stream will be closed after being read.
- * 
- * \return number of mappings added, -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw);
-
-/**
- *  Load a set of mappings from a file, filtered by the current SDL_GetPlatform()
- *
- *  Convenience macro.
- */
-#define SDL_GameControllerAddMappingsFromFile(file)   SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
-
-/**
- *  Add or update an existing mapping configuration
- *
- * \return 1 if mapping is added, 0 if updated, -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString);
-
-/**
- *  Get the number of mappings installed
- *
- *  \return the number of mappings
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void);
-
-/**
- *  Get the mapping at a particular index.
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if the index is out of range.
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index);
-
-/**
- *  Get a mapping string for a GUID
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if no mapping is available
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid);
-
-/**
- *  Get a mapping string for an open GameController
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if no mapping is available
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController * gamecontroller);
-
-/**
- *  Is the joystick on this index supported by the game controller interface?
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
-
-/**
- *  Get the implementation dependent name of a game controller.
- *  This can be called before any controllers are opened.
- *  If no name can be found, this function returns NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index);
-
-/**
- *  Get the mapping of a game controller.
- *  This can be called before any controllers are opened.
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if no mapping is available
- */
-extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index);
-
-/**
- *  Open a game controller for use.
- *  The index passed as an argument refers to the N'th game controller on the system.
- *  This index is not the value which will identify this controller in future
- *  controller events.  The joystick's instance id (::SDL_JoystickID) will be
- *  used there instead.
- *
- *  \return A controller identifier, or NULL if an error occurred.
- */
-extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
-
-/**
- * Return the SDL_GameController associated with an instance id.
- */
-extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);
-
-/**
- *  Return the name for this currently opened controller
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller);
-
-/**
- *  Get the player index of an opened game controller, or -1 if it's not available
- *
- *  For XInput controllers this returns the XInput user index.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller);
-
-/**
- *  Get the USB vendor ID of an opened controller, if available.
- *  If the vendor ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController * gamecontroller);
-
-/**
- *  Get the USB product ID of an opened controller, if available.
- *  If the product ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController * gamecontroller);
-
-/**
- *  Get the product version of an opened controller, if available.
- *  If the product version isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController * gamecontroller);
-
-/**
- *  Returns SDL_TRUE if the controller has been opened and currently connected,
- *  or SDL_FALSE if it has not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller);
-
-/**
- *  Get the underlying joystick object used by a controller
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller);
-
-/**
- *  Enable/disable controller event polling.
- *
- *  If controller events are disabled, you must call SDL_GameControllerUpdate()
- *  yourself and check the state of the controller when you want controller
- *  information.
- *
- *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state);
-
-/**
- *  Update the current state of the open game controllers.
- *
- *  This is called automatically by the event loop if any game controller
- *  events are enabled.
- */
-extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
-
-
-/**
- *  The list of axes available from a controller
- *
- *  Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX,
- *  and are centered within ~8000 of zero, though advanced UI will allow users to set
- *  or autodetect the dead zone, which varies between controllers.
- *
- *  Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX.
- */
-typedef enum
-{
-    SDL_CONTROLLER_AXIS_INVALID = -1,
-    SDL_CONTROLLER_AXIS_LEFTX,
-    SDL_CONTROLLER_AXIS_LEFTY,
-    SDL_CONTROLLER_AXIS_RIGHTX,
-    SDL_CONTROLLER_AXIS_RIGHTY,
-    SDL_CONTROLLER_AXIS_TRIGGERLEFT,
-    SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
-    SDL_CONTROLLER_AXIS_MAX
-} SDL_GameControllerAxis;
-
-/**
- *  turn this string into a axis mapping
- */
-extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *pchString);
-
-/**
- *  turn this axis enum into a string mapping
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis);
-
-/**
- *  Get the SDL joystick layer binding for this controller button mapping
- */
-extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
-SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,
-                                 SDL_GameControllerAxis axis);
-
-/**
- *  Get the current state of an axis control on a game controller.
- *
- *  The state is a value ranging from -32768 to 32767 (except for the triggers,
- *  which range from 0 to 32767).
- *
- *  The axis indices start at index 0.
- */
-extern DECLSPEC Sint16 SDLCALL
-SDL_GameControllerGetAxis(SDL_GameController *gamecontroller,
-                          SDL_GameControllerAxis axis);
-
-/**
- *  The list of buttons available from a controller
- */
-typedef enum
-{
-    SDL_CONTROLLER_BUTTON_INVALID = -1,
-    SDL_CONTROLLER_BUTTON_A,
-    SDL_CONTROLLER_BUTTON_B,
-    SDL_CONTROLLER_BUTTON_X,
-    SDL_CONTROLLER_BUTTON_Y,
-    SDL_CONTROLLER_BUTTON_BACK,
-    SDL_CONTROLLER_BUTTON_GUIDE,
-    SDL_CONTROLLER_BUTTON_START,
-    SDL_CONTROLLER_BUTTON_LEFTSTICK,
-    SDL_CONTROLLER_BUTTON_RIGHTSTICK,
-    SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
-    SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
-    SDL_CONTROLLER_BUTTON_DPAD_UP,
-    SDL_CONTROLLER_BUTTON_DPAD_DOWN,
-    SDL_CONTROLLER_BUTTON_DPAD_LEFT,
-    SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
-    SDL_CONTROLLER_BUTTON_MAX
-} SDL_GameControllerButton;
-
-/**
- *  turn this string into a button mapping
- */
-extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *pchString);
-
-/**
- *  turn this button enum into a string mapping
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button);
-
-/**
- *  Get the SDL joystick layer binding for this controller button mapping
- */
-extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
-SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,
-                                   SDL_GameControllerButton button);
-
-
-/**
- *  Get the current state of a button on a game controller.
- *
- *  The button indices start at index 0.
- */
-extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller,
-                                                          SDL_GameControllerButton button);
-
-/**
- *  Trigger a rumble effect
- *  Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling.
- *
- *  \param gamecontroller The controller to vibrate
- *  \param low_frequency_rumble The intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF
- *  \param high_frequency_rumble The intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF
- *  \param duration_ms The duration of the rumble effect, in milliseconds
- *
- *  \return 0, or -1 if rumble isn't supported on this joystick
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
-
-/**
- *  Close a controller previously opened with SDL_GameControllerOpen().
- */
-extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_gamecontroller_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_gesture.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_gesture.h
deleted file mode 100644 (file)
index 9d25e9c..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_gesture.h
- *
- *  Include file for SDL gesture event handling.
- */
-
-#ifndef SDL_gesture_h_
-#define SDL_gesture_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "SDL_touch.h"
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef Sint64 SDL_GestureID;
-
-/* Function prototypes */
-
-/**
- *  \brief Begin Recording a gesture on the specified touch, or all touches (-1)
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId);
-
-
-/**
- *  \brief Save all currently loaded Dollar Gesture templates
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst);
-
-/**
- *  \brief Save a currently loaded Dollar Gesture template
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst);
-
-
-/**
- *  \brief Load Dollar Gesture templates from a file
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_gesture_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_haptic.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_haptic.h
deleted file mode 100644 (file)
index 0756276..0000000
+++ /dev/null
@@ -1,1238 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_haptic.h
- *
- *  \brief The SDL haptic subsystem allows you to control haptic (force feedback)
- *         devices.
- *
- *  The basic usage is as follows:
- *   - Initialize the subsystem (::SDL_INIT_HAPTIC).
- *   - Open a haptic device.
- *    - SDL_HapticOpen() to open from index.
- *    - SDL_HapticOpenFromJoystick() to open from an existing joystick.
- *   - Create an effect (::SDL_HapticEffect).
- *   - Upload the effect with SDL_HapticNewEffect().
- *   - Run the effect with SDL_HapticRunEffect().
- *   - (optional) Free the effect with SDL_HapticDestroyEffect().
- *   - Close the haptic device with SDL_HapticClose().
- *
- * \par Simple rumble example:
- * \code
- *    SDL_Haptic *haptic;
- *
- *    // Open the device
- *    haptic = SDL_HapticOpen( 0 );
- *    if (haptic == NULL)
- *       return -1;
- *
- *    // Initialize simple rumble
- *    if (SDL_HapticRumbleInit( haptic ) != 0)
- *       return -1;
- *
- *    // Play effect at 50% strength for 2 seconds
- *    if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0)
- *       return -1;
- *    SDL_Delay( 2000 );
- *
- *    // Clean up
- *    SDL_HapticClose( haptic );
- * \endcode
- *
- * \par Complete example:
- * \code
- * int test_haptic( SDL_Joystick * joystick ) {
- *    SDL_Haptic *haptic;
- *    SDL_HapticEffect effect;
- *    int effect_id;
- *
- *    // Open the device
- *    haptic = SDL_HapticOpenFromJoystick( joystick );
- *    if (haptic == NULL) return -1; // Most likely joystick isn't haptic
- *
- *    // See if it can do sine waves
- *    if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) {
- *       SDL_HapticClose(haptic); // No sine effect
- *       return -1;
- *    }
- *
- *    // Create the effect
- *    memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default
- *    effect.type = SDL_HAPTIC_SINE;
- *    effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates
- *    effect.periodic.direction.dir[0] = 18000; // Force comes from south
- *    effect.periodic.period = 1000; // 1000 ms
- *    effect.periodic.magnitude = 20000; // 20000/32767 strength
- *    effect.periodic.length = 5000; // 5 seconds long
- *    effect.periodic.attack_length = 1000; // Takes 1 second to get max strength
- *    effect.periodic.fade_length = 1000; // Takes 1 second to fade away
- *
- *    // Upload the effect
- *    effect_id = SDL_HapticNewEffect( haptic, &effect );
- *
- *    // Test the effect
- *    SDL_HapticRunEffect( haptic, effect_id, 1 );
- *    SDL_Delay( 5000); // Wait for the effect to finish
- *
- *    // We destroy the effect, although closing the device also does this
- *    SDL_HapticDestroyEffect( haptic, effect_id );
- *
- *    // Close the device
- *    SDL_HapticClose(haptic);
- *
- *    return 0; // Success
- * }
- * \endcode
- */
-
-#ifndef SDL_haptic_h_
-#define SDL_haptic_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_joystick.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF).
- *
- * At the moment the magnitude variables are mixed between signed/unsigned, and
- * it is also not made clear that ALL of those variables expect a max of 0x7FFF.
- *
- * Some platforms may have higher precision than that (Linux FF, Windows XInput)
- * so we should fix the inconsistency in favor of higher possible precision,
- * adjusting for platforms that use different scales.
- * -flibit
- */
-
-/**
- *  \typedef SDL_Haptic
- *
- *  \brief The haptic structure used to identify an SDL haptic.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticOpenFromJoystick
- *  \sa SDL_HapticClose
- */
-struct _SDL_Haptic;
-typedef struct _SDL_Haptic SDL_Haptic;
-
-
-/**
- *  \name Haptic features
- *
- *  Different haptic features a device can have.
- */
-/* @{ */
-
-/**
- *  \name Haptic effects
- */
-/* @{ */
-
-/**
- *  \brief Constant effect supported.
- *
- *  Constant haptic effect.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_CONSTANT   (1u<<0)
-
-/**
- *  \brief Sine wave effect supported.
- *
- *  Periodic haptic effect that simulates sine waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SINE       (1u<<1)
-
-/**
- *  \brief Left/Right effect supported.
- *
- *  Haptic effect for direct control over high/low frequency motors.
- *
- *  \sa SDL_HapticLeftRight
- * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry,
- *          we ran out of bits, and this is important for XInput devices.
- */
-#define SDL_HAPTIC_LEFTRIGHT     (1u<<2)
-
-/* !!! FIXME: put this back when we have more bits in 2.1 */
-/* #define SDL_HAPTIC_SQUARE     (1<<2) */
-
-/**
- *  \brief Triangle wave effect supported.
- *
- *  Periodic haptic effect that simulates triangular waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_TRIANGLE   (1u<<3)
-
-/**
- *  \brief Sawtoothup wave effect supported.
- *
- *  Periodic haptic effect that simulates saw tooth up waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SAWTOOTHUP (1u<<4)
-
-/**
- *  \brief Sawtoothdown wave effect supported.
- *
- *  Periodic haptic effect that simulates saw tooth down waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5)
-
-/**
- *  \brief Ramp effect supported.
- *
- *  Ramp haptic effect.
- *
- *  \sa SDL_HapticRamp
- */
-#define SDL_HAPTIC_RAMP       (1u<<6)
-
-/**
- *  \brief Spring effect supported - uses axes position.
- *
- *  Condition haptic effect that simulates a spring.  Effect is based on the
- *  axes position.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_SPRING     (1u<<7)
-
-/**
- *  \brief Damper effect supported - uses axes velocity.
- *
- *  Condition haptic effect that simulates dampening.  Effect is based on the
- *  axes velocity.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_DAMPER     (1u<<8)
-
-/**
- *  \brief Inertia effect supported - uses axes acceleration.
- *
- *  Condition haptic effect that simulates inertia.  Effect is based on the axes
- *  acceleration.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_INERTIA    (1u<<9)
-
-/**
- *  \brief Friction effect supported - uses axes movement.
- *
- *  Condition haptic effect that simulates friction.  Effect is based on the
- *  axes movement.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_FRICTION   (1u<<10)
-
-/**
- *  \brief Custom effect is supported.
- *
- *  User defined custom haptic effect.
- */
-#define SDL_HAPTIC_CUSTOM     (1u<<11)
-
-/* @} *//* Haptic effects */
-
-/* These last few are features the device has, not effects */
-
-/**
- *  \brief Device can set global gain.
- *
- *  Device supports setting the global gain.
- *
- *  \sa SDL_HapticSetGain
- */
-#define SDL_HAPTIC_GAIN       (1u<<12)
-
-/**
- *  \brief Device can set autocenter.
- *
- *  Device supports setting autocenter.
- *
- *  \sa SDL_HapticSetAutocenter
- */
-#define SDL_HAPTIC_AUTOCENTER (1u<<13)
-
-/**
- *  \brief Device can be queried for effect status.
- *
- *  Device supports querying effect status.
- *
- *  \sa SDL_HapticGetEffectStatus
- */
-#define SDL_HAPTIC_STATUS     (1u<<14)
-
-/**
- *  \brief Device can be paused.
- *
- *  Devices supports being paused.
- *
- *  \sa SDL_HapticPause
- *  \sa SDL_HapticUnpause
- */
-#define SDL_HAPTIC_PAUSE      (1u<<15)
-
-
-/**
- * \name Direction encodings
- */
-/* @{ */
-
-/**
- *  \brief Uses polar coordinates for the direction.
- *
- *  \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_POLAR      0
-
-/**
- *  \brief Uses cartesian coordinates for the direction.
- *
- *  \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_CARTESIAN  1
-
-/**
- *  \brief Uses spherical coordinates for the direction.
- *
- *  \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_SPHERICAL  2
-
-/* @} *//* Direction encodings */
-
-/* @} *//* Haptic features */
-
-/*
- * Misc defines.
- */
-
-/**
- * \brief Used to play a device an infinite number of times.
- *
- * \sa SDL_HapticRunEffect
- */
-#define SDL_HAPTIC_INFINITY   4294967295U
-
-
-/**
- *  \brief Structure that represents a haptic direction.
- *
- *  This is the direction where the force comes from,
- *  instead of the direction in which the force is exerted.
- *
- *  Directions can be specified by:
- *   - ::SDL_HAPTIC_POLAR : Specified by polar coordinates.
- *   - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates.
- *   - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates.
- *
- *  Cardinal directions of the haptic device are relative to the positioning
- *  of the device.  North is considered to be away from the user.
- *
- *  The following diagram represents the cardinal directions:
- *  \verbatim
-                 .--.
-                 |__| .-------.
-                 |=.| |.-----.|
-                 |--| ||     ||
-                 |  | |'-----'|
-                 |__|~')_____('
-                   [ COMPUTER ]
-
-
-                     North (0,-1)
-                         ^
-                         |
-                         |
-   (-1,0)  West <----[ HAPTIC ]----> East (1,0)
-                         |
-                         |
-                         v
-                      South (0,1)
-
-
-                      [ USER ]
-                        \|||/
-                        (o o)
-                  ---ooO-(_)-Ooo---
-    \endverbatim
- *
- *  If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a
- *  degree starting north and turning clockwise.  ::SDL_HAPTIC_POLAR only uses
- *  the first \c dir parameter.  The cardinal directions would be:
- *   - North: 0 (0 degrees)
- *   - East: 9000 (90 degrees)
- *   - South: 18000 (180 degrees)
- *   - West: 27000 (270 degrees)
- *
- *  If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions
- *  (X axis, Y axis and Z axis (with 3 axes)).  ::SDL_HAPTIC_CARTESIAN uses
- *  the first three \c dir parameters.  The cardinal directions would be:
- *   - North:  0,-1, 0
- *   - East:   1, 0, 0
- *   - South:  0, 1, 0
- *   - West:  -1, 0, 0
- *
- *  The Z axis represents the height of the effect if supported, otherwise
- *  it's unused.  In cartesian encoding (1, 2) would be the same as (2, 4), you
- *  can use any multiple you want, only the direction matters.
- *
- *  If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations.
- *  The first two \c dir parameters are used.  The \c dir parameters are as
- *  follows (all values are in hundredths of degrees):
- *   - Degrees from (1, 0) rotated towards (0, 1).
- *   - Degrees towards (0, 0, 1) (device needs at least 3 axes).
- *
- *
- *  Example of force coming from the south with all encodings (force coming
- *  from the south means the user will have to pull the stick to counteract):
- *  \code
- *  SDL_HapticDirection direction;
- *
- *  // Cartesian directions
- *  direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding.
- *  direction.dir[0] = 0; // X position
- *  direction.dir[1] = 1; // Y position
- *  // Assuming the device has 2 axes, we don't need to specify third parameter.
- *
- *  // Polar directions
- *  direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding.
- *  direction.dir[0] = 18000; // Polar only uses first parameter
- *
- *  // Spherical coordinates
- *  direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding
- *  direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters.
- *  \endcode
- *
- *  \sa SDL_HAPTIC_POLAR
- *  \sa SDL_HAPTIC_CARTESIAN
- *  \sa SDL_HAPTIC_SPHERICAL
- *  \sa SDL_HapticEffect
- *  \sa SDL_HapticNumAxes
- */
-typedef struct SDL_HapticDirection
-{
-    Uint8 type;         /**< The type of encoding. */
-    Sint32 dir[3];      /**< The encoded direction. */
-} SDL_HapticDirection;
-
-
-/**
- *  \brief A structure containing a template for a Constant effect.
- *
- *  This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect.
- *
- *  A constant effect applies a constant force in the specified direction
- *  to the joystick.
- *
- *  \sa SDL_HAPTIC_CONSTANT
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticConstant
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_CONSTANT */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Constant */
-    Sint16 level;           /**< Strength of the constant effect. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length;     /**< Duration of the fade. */
-    Uint16 fade_level;      /**< Level at the end of the fade. */
-} SDL_HapticConstant;
-
-/**
- *  \brief A structure containing a template for a Periodic effect.
- *
- *  The struct handles the following effects:
- *   - ::SDL_HAPTIC_SINE
- *   - ::SDL_HAPTIC_LEFTRIGHT
- *   - ::SDL_HAPTIC_TRIANGLE
- *   - ::SDL_HAPTIC_SAWTOOTHUP
- *   - ::SDL_HAPTIC_SAWTOOTHDOWN
- *
- *  A periodic effect consists in a wave-shaped effect that repeats itself
- *  over time.  The type determines the shape of the wave and the parameters
- *  determine the dimensions of the wave.
- *
- *  Phase is given by hundredth of a degree meaning that giving the phase a value
- *  of 9000 will displace it 25% of its period.  Here are sample values:
- *   -     0: No phase displacement.
- *   -  9000: Displaced 25% of its period.
- *   - 18000: Displaced 50% of its period.
- *   - 27000: Displaced 75% of its period.
- *   - 36000: Displaced 100% of its period, same as 0, but 0 is preferred.
- *
- *  Examples:
- *  \verbatim
-    SDL_HAPTIC_SINE
-      __      __      __      __
-     /  \    /  \    /  \    /
-    /    \__/    \__/    \__/
-
-    SDL_HAPTIC_SQUARE
-     __    __    __    __    __
-    |  |  |  |  |  |  |  |  |  |
-    |  |__|  |__|  |__|  |__|  |
-
-    SDL_HAPTIC_TRIANGLE
-      /\    /\    /\    /\    /\
-     /  \  /  \  /  \  /  \  /
-    /    \/    \/    \/    \/
-
-    SDL_HAPTIC_SAWTOOTHUP
-      /|  /|  /|  /|  /|  /|  /|
-     / | / | / | / | / | / | / |
-    /  |/  |/  |/  |/  |/  |/  |
-
-    SDL_HAPTIC_SAWTOOTHDOWN
-    \  |\  |\  |\  |\  |\  |\  |
-     \ | \ | \ | \ | \ | \ | \ |
-      \|  \|  \|  \|  \|  \|  \|
-    \endverbatim
- *
- *  \sa SDL_HAPTIC_SINE
- *  \sa SDL_HAPTIC_LEFTRIGHT
- *  \sa SDL_HAPTIC_TRIANGLE
- *  \sa SDL_HAPTIC_SAWTOOTHUP
- *  \sa SDL_HAPTIC_SAWTOOTHDOWN
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticPeriodic
-{
-    /* Header */
-    Uint16 type;        /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT,
-                             ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or
-                             ::SDL_HAPTIC_SAWTOOTHDOWN */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;      /**< Duration of the effect. */
-    Uint16 delay;       /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;      /**< Button that triggers the effect. */
-    Uint16 interval;    /**< How soon it can be triggered again after button. */
-
-    /* Periodic */
-    Uint16 period;      /**< Period of the wave. */
-    Sint16 magnitude;   /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */
-    Sint16 offset;      /**< Mean value of the wave. */
-    Uint16 phase;       /**< Positive phase shift given by hundredth of a degree. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length; /**< Duration of the fade. */
-    Uint16 fade_level;  /**< Level at the end of the fade. */
-} SDL_HapticPeriodic;
-
-/**
- *  \brief A structure containing a template for a Condition effect.
- *
- *  The struct handles the following effects:
- *   - ::SDL_HAPTIC_SPRING: Effect based on axes position.
- *   - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity.
- *   - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration.
- *   - ::SDL_HAPTIC_FRICTION: Effect based on axes movement.
- *
- *  Direction is handled by condition internals instead of a direction member.
- *  The condition effect specific members have three parameters.  The first
- *  refers to the X axis, the second refers to the Y axis and the third
- *  refers to the Z axis.  The right terms refer to the positive side of the
- *  axis and the left terms refer to the negative side of the axis.  Please
- *  refer to the ::SDL_HapticDirection diagram for which side is positive and
- *  which is negative.
- *
- *  \sa SDL_HapticDirection
- *  \sa SDL_HAPTIC_SPRING
- *  \sa SDL_HAPTIC_DAMPER
- *  \sa SDL_HAPTIC_INERTIA
- *  \sa SDL_HAPTIC_FRICTION
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticCondition
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER,
-                                 ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */
-    SDL_HapticDirection direction;  /**< Direction of the effect - Not used ATM. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Condition */
-    Uint16 right_sat[3];    /**< Level when joystick is to the positive side; max 0xFFFF. */
-    Uint16 left_sat[3];     /**< Level when joystick is to the negative side; max 0xFFFF. */
-    Sint16 right_coeff[3];  /**< How fast to increase the force towards the positive side. */
-    Sint16 left_coeff[3];   /**< How fast to increase the force towards the negative side. */
-    Uint16 deadband[3];     /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */
-    Sint16 center[3];       /**< Position of the dead zone. */
-} SDL_HapticCondition;
-
-/**
- *  \brief A structure containing a template for a Ramp effect.
- *
- *  This struct is exclusively for the ::SDL_HAPTIC_RAMP effect.
- *
- *  The ramp effect starts at start strength and ends at end strength.
- *  It augments in linear fashion.  If you use attack and fade with a ramp
- *  the effects get added to the ramp effect making the effect become
- *  quadratic instead of linear.
- *
- *  \sa SDL_HAPTIC_RAMP
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticRamp
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_RAMP */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Ramp */
-    Sint16 start;           /**< Beginning strength level. */
-    Sint16 end;             /**< Ending strength level. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length;     /**< Duration of the fade. */
-    Uint16 fade_level;      /**< Level at the end of the fade. */
-} SDL_HapticRamp;
-
-/**
- * \brief A structure containing a template for a Left/Right effect.
- *
- * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect.
- *
- * The Left/Right effect is used to explicitly control the large and small
- * motors, commonly found in modern game controllers. The small (right) motor
- * is high frequency, and the large (left) motor is low frequency.
- *
- * \sa SDL_HAPTIC_LEFTRIGHT
- * \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticLeftRight
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_LEFTRIGHT */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect in milliseconds. */
-
-    /* Rumble */
-    Uint16 large_magnitude; /**< Control of the large controller motor. */
-    Uint16 small_magnitude; /**< Control of the small controller motor. */
-} SDL_HapticLeftRight;
-
-/**
- *  \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect.
- *
- *  This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect.
- *
- *  A custom force feedback effect is much like a periodic effect, where the
- *  application can define its exact shape.  You will have to allocate the
- *  data yourself.  Data should consist of channels * samples Uint16 samples.
- *
- *  If channels is one, the effect is rotated using the defined direction.
- *  Otherwise it uses the samples in data for the different axes.
- *
- *  \sa SDL_HAPTIC_CUSTOM
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticCustom
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_CUSTOM */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Custom */
-    Uint8 channels;         /**< Axes to use, minimum of one. */
-    Uint16 period;          /**< Sample periods. */
-    Uint16 samples;         /**< Amount of samples. */
-    Uint16 *data;           /**< Should contain channels*samples items. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length;     /**< Duration of the fade. */
-    Uint16 fade_level;      /**< Level at the end of the fade. */
-} SDL_HapticCustom;
-
-/**
- *  \brief The generic template for any haptic effect.
- *
- *  All values max at 32767 (0x7FFF).  Signed values also can be negative.
- *  Time values unless specified otherwise are in milliseconds.
- *
- *  You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767
- *  value.  Neither delay, interval, attack_length nor fade_length support
- *  ::SDL_HAPTIC_INFINITY.  Fade will also not be used since effect never ends.
- *
- *  Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of
- *  ::SDL_HAPTIC_INFINITY.
- *
- *  Button triggers may not be supported on all devices, it is advised to not
- *  use them if possible.  Buttons start at index 1 instead of index 0 like
- *  the joystick.
- *
- *  If both attack_length and fade_level are 0, the envelope is not used,
- *  otherwise both values are used.
- *
- *  Common parts:
- *  \code
- *  // Replay - All effects have this
- *  Uint32 length;        // Duration of effect (ms).
- *  Uint16 delay;         // Delay before starting effect.
- *
- *  // Trigger - All effects have this
- *  Uint16 button;        // Button that triggers effect.
- *  Uint16 interval;      // How soon before effect can be triggered again.
- *
- *  // Envelope - All effects except condition effects have this
- *  Uint16 attack_length; // Duration of the attack (ms).
- *  Uint16 attack_level;  // Level at the start of the attack.
- *  Uint16 fade_length;   // Duration of the fade out (ms).
- *  Uint16 fade_level;    // Level at the end of the fade.
- *  \endcode
- *
- *
- *  Here we have an example of a constant effect evolution in time:
- *  \verbatim
-    Strength
-    ^
-    |
-    |    effect level -->  _________________
-    |                     /                 \
-    |                    /                   \
-    |                   /                     \
-    |                  /                       \
-    | attack_level --> |                        \
-    |                  |                        |  <---  fade_level
-    |
-    +--------------------------------------------------> Time
-                       [--]                 [---]
-                       attack_length        fade_length
-
-    [------------------][-----------------------]
-    delay               length
-    \endverbatim
- *
- *  Note either the attack_level or the fade_level may be above the actual
- *  effect level.
- *
- *  \sa SDL_HapticConstant
- *  \sa SDL_HapticPeriodic
- *  \sa SDL_HapticCondition
- *  \sa SDL_HapticRamp
- *  \sa SDL_HapticLeftRight
- *  \sa SDL_HapticCustom
- */
-typedef union SDL_HapticEffect
-{
-    /* Common for all force feedback effects */
-    Uint16 type;                    /**< Effect type. */
-    SDL_HapticConstant constant;    /**< Constant effect. */
-    SDL_HapticPeriodic periodic;    /**< Periodic effect. */
-    SDL_HapticCondition condition;  /**< Condition effect. */
-    SDL_HapticRamp ramp;            /**< Ramp effect. */
-    SDL_HapticLeftRight leftright;  /**< Left/Right effect. */
-    SDL_HapticCustom custom;        /**< Custom effect. */
-} SDL_HapticEffect;
-
-
-/* Function prototypes */
-/**
- *  \brief Count the number of haptic devices attached to the system.
- *
- *  \return Number of haptic devices detected on the system.
- */
-extern DECLSPEC int SDLCALL SDL_NumHaptics(void);
-
-/**
- *  \brief Get the implementation dependent name of a haptic device.
- *
- *  This can be called before any joysticks are opened.
- *  If no name can be found, this function returns NULL.
- *
- *  \param device_index Index of the device to get its name.
- *  \return Name of the device or NULL on error.
- *
- *  \sa SDL_NumHaptics
- */
-extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);
-
-/**
- *  \brief Opens a haptic device for use.
- *
- *  The index passed as an argument refers to the N'th haptic device on this
- *  system.
- *
- *  When opening a haptic device, its gain will be set to maximum and
- *  autocenter will be disabled.  To modify these values use
- *  SDL_HapticSetGain() and SDL_HapticSetAutocenter().
- *
- *  \param device_index Index of the device to open.
- *  \return Device identifier or NULL on error.
- *
- *  \sa SDL_HapticIndex
- *  \sa SDL_HapticOpenFromMouse
- *  \sa SDL_HapticOpenFromJoystick
- *  \sa SDL_HapticClose
- *  \sa SDL_HapticSetGain
- *  \sa SDL_HapticSetAutocenter
- *  \sa SDL_HapticPause
- *  \sa SDL_HapticStopAll
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index);
-
-/**
- *  \brief Checks if the haptic device at index has been opened.
- *
- *  \param device_index Index to check to see if it has been opened.
- *  \return 1 if it has been opened or 0 if it hasn't.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticIndex
- */
-extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index);
-
-/**
- *  \brief Gets the index of a haptic device.
- *
- *  \param haptic Haptic device to get the index of.
- *  \return The index of the haptic device or -1 on error.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticOpened
- */
-extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic);
-
-/**
- *  \brief Gets whether or not the current mouse has haptic capabilities.
- *
- *  \return SDL_TRUE if the mouse is haptic, SDL_FALSE if it isn't.
- *
- *  \sa SDL_HapticOpenFromMouse
- */
-extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void);
-
-/**
- *  \brief Tries to open a haptic device from the current mouse.
- *
- *  \return The haptic device identifier or NULL on error.
- *
- *  \sa SDL_MouseIsHaptic
- *  \sa SDL_HapticOpen
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void);
-
-/**
- *  \brief Checks to see if a joystick has haptic features.
- *
- *  \param joystick Joystick to test for haptic capabilities.
- *  \return SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't
- *          or -1 if an error occurred.
- *
- *  \sa SDL_HapticOpenFromJoystick
- */
-extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick);
-
-/**
- *  \brief Opens a haptic device for use from a joystick device.
- *
- *  You must still close the haptic device separately.  It will not be closed
- *  with the joystick.
- *
- *  When opening from a joystick you should first close the haptic device before
- *  closing the joystick device.  If not, on some implementations the haptic
- *  device will also get unallocated and you'll be unable to use force feedback
- *  on that device.
- *
- *  \param joystick Joystick to create a haptic device from.
- *  \return A valid haptic device identifier on success or NULL on error.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticClose
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick *
-                                                               joystick);
-
-/**
- *  \brief Closes a haptic device previously opened with SDL_HapticOpen().
- *
- *  \param haptic Haptic device to close.
- */
-extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic);
-
-/**
- *  \brief Returns the number of effects a haptic device can store.
- *
- *  On some platforms this isn't fully supported, and therefore is an
- *  approximation.  Always check to see if your created effect was actually
- *  created and do not rely solely on SDL_HapticNumEffects().
- *
- *  \param haptic The haptic device to query effect max.
- *  \return The number of effects the haptic device can store or
- *          -1 on error.
- *
- *  \sa SDL_HapticNumEffectsPlaying
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic);
-
-/**
- *  \brief Returns the number of effects a haptic device can play at the same
- *         time.
- *
- *  This is not supported on all platforms, but will always return a value.
- *  Added here for the sake of completeness.
- *
- *  \param haptic The haptic device to query maximum playing effects.
- *  \return The number of effects the haptic device can play at the same time
- *          or -1 on error.
- *
- *  \sa SDL_HapticNumEffects
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic);
-
-/**
- *  \brief Gets the haptic device's supported features in bitwise manner.
- *
- *  Example:
- *  \code
- *  if (SDL_HapticQuery(haptic) & SDL_HAPTIC_CONSTANT) {
- *      printf("We have constant haptic effect!\n");
- *  }
- *  \endcode
- *
- *  \param haptic The haptic device to query.
- *  \return Haptic features in bitwise manner (OR'd).
- *
- *  \sa SDL_HapticNumEffects
- *  \sa SDL_HapticEffectSupported
- */
-extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic);
-
-
-/**
- *  \brief Gets the number of haptic axes the device has.
- *
- *  \sa SDL_HapticDirection
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic);
-
-/**
- *  \brief Checks to see if effect is supported by haptic.
- *
- *  \param haptic Haptic device to check on.
- *  \param effect Effect to check to see if it is supported.
- *  \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error.
- *
- *  \sa SDL_HapticQuery
- *  \sa SDL_HapticNewEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic,
-                                                      SDL_HapticEffect *
-                                                      effect);
-
-/**
- *  \brief Creates a new haptic effect on the device.
- *
- *  \param haptic Haptic device to create the effect on.
- *  \param effect Properties of the effect to create.
- *  \return The identifier of the effect on success or -1 on error.
- *
- *  \sa SDL_HapticUpdateEffect
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticDestroyEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic,
-                                                SDL_HapticEffect * effect);
-
-/**
- *  \brief Updates the properties of an effect.
- *
- *  Can be used dynamically, although behavior when dynamically changing
- *  direction may be strange.  Specifically the effect may reupload itself
- *  and start playing from the start.  You cannot change the type either when
- *  running SDL_HapticUpdateEffect().
- *
- *  \param haptic Haptic device that has the effect.
- *  \param effect Identifier of the effect to update.
- *  \param data New effect properties to use.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticNewEffect
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticDestroyEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic,
-                                                   int effect,
-                                                   SDL_HapticEffect * data);
-
-/**
- *  \brief Runs the haptic effect on its associated haptic device.
- *
- *  If iterations are ::SDL_HAPTIC_INFINITY, it'll run the effect over and over
- *  repeating the envelope (attack and fade) every time.  If you only want the
- *  effect to last forever, set ::SDL_HAPTIC_INFINITY in the effect's length
- *  parameter.
- *
- *  \param haptic Haptic device to run the effect on.
- *  \param effect Identifier of the haptic effect to run.
- *  \param iterations Number of iterations to run the effect. Use
- *         ::SDL_HAPTIC_INFINITY for infinity.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticStopEffect
- *  \sa SDL_HapticDestroyEffect
- *  \sa SDL_HapticGetEffectStatus
- */
-extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic,
-                                                int effect,
-                                                Uint32 iterations);
-
-/**
- *  \brief Stops the haptic effect on its associated haptic device.
- *
- *  \param haptic Haptic device to stop the effect on.
- *  \param effect Identifier of the effect to stop.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticDestroyEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic,
-                                                 int effect);
-
-/**
- *  \brief Destroys a haptic effect on the device.
- *
- *  This will stop the effect if it's running.  Effects are automatically
- *  destroyed when the device is closed.
- *
- *  \param haptic Device to destroy the effect on.
- *  \param effect Identifier of the effect to destroy.
- *
- *  \sa SDL_HapticNewEffect
- */
-extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic,
-                                                     int effect);
-
-/**
- *  \brief Gets the status of the current effect on the haptic device.
- *
- *  Device must support the ::SDL_HAPTIC_STATUS feature.
- *
- *  \param haptic Haptic device to query the effect status on.
- *  \param effect Identifier of the effect to query its status.
- *  \return 0 if it isn't playing, 1 if it is playing or -1 on error.
- *
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticStopEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic,
-                                                      int effect);
-
-/**
- *  \brief Sets the global gain of the device.
- *
- *  Device must support the ::SDL_HAPTIC_GAIN feature.
- *
- *  The user may specify the maximum gain by setting the environment variable
- *  SDL_HAPTIC_GAIN_MAX which should be between 0 and 100.  All calls to
- *  SDL_HapticSetGain() will scale linearly using SDL_HAPTIC_GAIN_MAX as the
- *  maximum.
- *
- *  \param haptic Haptic device to set the gain on.
- *  \param gain Value to set the gain to, should be between 0 and 100.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain);
-
-/**
- *  \brief Sets the global autocenter of the device.
- *
- *  Autocenter should be between 0 and 100.  Setting it to 0 will disable
- *  autocentering.
- *
- *  Device must support the ::SDL_HAPTIC_AUTOCENTER feature.
- *
- *  \param haptic Haptic device to set autocentering on.
- *  \param autocenter Value to set autocenter to, 0 disables autocentering.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic,
-                                                    int autocenter);
-
-/**
- *  \brief Pauses a haptic device.
- *
- *  Device must support the ::SDL_HAPTIC_PAUSE feature.  Call
- *  SDL_HapticUnpause() to resume playback.
- *
- *  Do not modify the effects nor add new ones while the device is paused.
- *  That can cause all sorts of weird errors.
- *
- *  \param haptic Haptic device to pause.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticUnpause
- */
-extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic);
-
-/**
- *  \brief Unpauses a haptic device.
- *
- *  Call to unpause after SDL_HapticPause().
- *
- *  \param haptic Haptic device to unpause.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticPause
- */
-extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic);
-
-/**
- *  \brief Stops all the currently playing effects on a haptic device.
- *
- *  \param haptic Haptic device to stop.
- *  \return 0 on success or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic);
-
-/**
- *  \brief Checks to see if rumble is supported on a haptic device.
- *
- *  \param haptic Haptic device to check to see if it supports rumble.
- *  \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error.
- *
- *  \sa SDL_HapticRumbleInit
- *  \sa SDL_HapticRumblePlay
- *  \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic);
-
-/**
- *  \brief Initializes the haptic device for simple rumble playback.
- *
- *  \param haptic Haptic device to initialize for simple rumble playback.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticRumbleSupported
- *  \sa SDL_HapticRumblePlay
- *  \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic);
-
-/**
- *  \brief Runs simple rumble on a haptic device
- *
- *  \param haptic Haptic device to play rumble effect on.
- *  \param strength Strength of the rumble to play as a 0-1 float value.
- *  \param length Length of the rumble to play in milliseconds.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticRumbleSupported
- *  \sa SDL_HapticRumbleInit
- *  \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length );
-
-/**
- *  \brief Stops the simple rumble on a haptic device.
- *
- *  \param haptic Haptic to stop the rumble on.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticRumbleSupported
- *  \sa SDL_HapticRumbleInit
- *  \sa SDL_HapticRumblePlay
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_haptic_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_hints.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_hints.h
deleted file mode 100644 (file)
index 8fa0dd6..0000000
+++ /dev/null
@@ -1,1266 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_hints.h
- *
- *  Official documentation for SDL configuration variables
- *
- *  This file contains functions to set and get configuration hints,
- *  as well as listing each of them alphabetically.
- *
- *  The convention for naming hints is SDL_HINT_X, where "SDL_X" is
- *  the environment variable that can be used to override the default.
- *
- *  In general these hints are just that - they may or may not be
- *  supported or applicable on any given platform, but they provide
- *  a way for an application or user to give the library a hint as
- *  to how they would like the library to work.
- */
-
-#ifndef SDL_hints_h_
-#define SDL_hints_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief  A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
- *
- *  SDL can try to accelerate the SDL screen surface by using streaming
- *  textures with a 3D rendering engine.  This variable controls whether and
- *  how this is done.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable 3D acceleration
- *    "1"       - Enable 3D acceleration, using the default renderer.
- *    "X"       - Enable 3D acceleration, using X where X is one of the valid rendering drivers.  (e.g. "direct3d", "opengl", etc.)
- *
- *  By default SDL tries to make a best guess for each platform whether
- *  to use acceleration or not.
- */
-#define SDL_HINT_FRAMEBUFFER_ACCELERATION   "SDL_FRAMEBUFFER_ACCELERATION"
-
-/**
- *  \brief  A variable specifying which render driver to use.
- *
- *  If the application doesn't pick a specific renderer to use, this variable
- *  specifies the name of the preferred renderer.  If the preferred renderer
- *  can't be initialized, the normal default renderer is used.
- *
- *  This variable is case insensitive and can be set to the following values:
- *    "direct3d"
- *    "opengl"
- *    "opengles2"
- *    "opengles"
- *    "metal"
- *    "software"
- *
- *  The default varies by platform, but it's the first one in the list that
- *  is available on the current platform.
- */
-#define SDL_HINT_RENDER_DRIVER              "SDL_RENDER_DRIVER"
-
-/**
- *  \brief  A variable controlling whether the OpenGL render driver uses shaders if they are available.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable shaders
- *    "1"       - Enable shaders
- *
- *  By default shaders are used if OpenGL supports them.
- */
-#define SDL_HINT_RENDER_OPENGL_SHADERS      "SDL_RENDER_OPENGL_SHADERS"
-
-/**
- *  \brief  A variable controlling whether the Direct3D device is initialized for thread-safe operations.
- *
- *  This variable can be set to the following values:
- *    "0"       - Thread-safety is not enabled (faster)
- *    "1"       - Thread-safety is enabled
- *
- *  By default the Direct3D device is created with thread-safety disabled.
- */
-#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
-
-/**
- *  \brief  A variable controlling whether to enable Direct3D 11+'s Debug Layer.
- *
- *  This variable does not have any effect on the Direct3D 9 based renderer.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable Debug Layer use
- *    "1"       - Enable Debug Layer use
- *
- *  By default, SDL does not use Direct3D Debug Layer.
- */
-#define SDL_HINT_RENDER_DIRECT3D11_DEBUG    "SDL_RENDER_DIRECT3D11_DEBUG"
-
-/**
- *  \brief  A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
- *
- *  This variable can be set to the following values:
- *    "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen
- *    "1" or "overscan"  - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen
- *
- *  By default letterbox is used
- */
-#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE       "SDL_RENDER_LOGICAL_SIZE_MODE"
-
-/**
- *  \brief  A variable controlling the scaling quality
- *
- *  This variable can be set to the following values:
- *    "0" or "nearest" - Nearest pixel sampling
- *    "1" or "linear"  - Linear filtering (supported by OpenGL and Direct3D)
- *    "2" or "best"    - Currently this is the same as "linear"
- *
- *  By default nearest pixel sampling is used
- */
-#define SDL_HINT_RENDER_SCALE_QUALITY       "SDL_RENDER_SCALE_QUALITY"
-
-/**
- *  \brief  A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable vsync
- *    "1"       - Enable vsync
- *
- *  By default SDL does not sync screen surface updates with vertical refresh.
- */
-#define SDL_HINT_RENDER_VSYNC               "SDL_RENDER_VSYNC"
-
-/**
- *  \brief  A variable controlling whether the screensaver is enabled. 
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable screensaver
- *    "1"       - Enable screensaver
- *
- *  By default SDL will disable the screensaver.
- */
-#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER    "SDL_VIDEO_ALLOW_SCREENSAVER"
-
-/**
- *  \brief  A variable controlling whether the X11 VidMode extension should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable XVidMode
- *    "1"       - Enable XVidMode
- *
- *  By default SDL will use XVidMode if it is available.
- */
-#define SDL_HINT_VIDEO_X11_XVIDMODE         "SDL_VIDEO_X11_XVIDMODE"
-
-/**
- *  \brief  A variable controlling whether the X11 Xinerama extension should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable Xinerama
- *    "1"       - Enable Xinerama
- *
- *  By default SDL will use Xinerama if it is available.
- */
-#define SDL_HINT_VIDEO_X11_XINERAMA         "SDL_VIDEO_X11_XINERAMA"
-
-/**
- *  \brief  A variable controlling whether the X11 XRandR extension should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable XRandR
- *    "1"       - Enable XRandR
- *
- *  By default SDL will not use XRandR because of window manager issues.
- */
-#define SDL_HINT_VIDEO_X11_XRANDR           "SDL_VIDEO_X11_XRANDR"
-
-/**
- *  \brief  A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable _NET_WM_PING
- *    "1"       - Enable _NET_WM_PING
- *
- *  By default SDL will use _NET_WM_PING, but for applications that know they
- *  will not always be able to respond to ping requests in a timely manner they can
- *  turn it off to avoid the window manager thinking the app is hung.
- *  The hint is checked in CreateWindow.
- */
-#define SDL_HINT_VIDEO_X11_NET_WM_PING      "SDL_VIDEO_X11_NET_WM_PING"
-
-/**
- * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.
- * 
- * This variable can be set to the following values:
- * "0" - Disable _NET_WM_BYPASS_COMPOSITOR
- * "1" - Enable _NET_WM_BYPASS_COMPOSITOR
- * 
- * By default SDL will use _NET_WM_BYPASS_COMPOSITOR
- * 
- */
-#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
-
-/**
- *  \brief  A variable controlling whether the window frame and title bar are interactive when the cursor is hidden 
- *
- *  This variable can be set to the following values:
- *    "0"       - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
- *    "1"       - The window frame is interactive when the cursor is hidden
- *
- *  By default SDL will allow interaction with the window frame when the cursor is hidden
- */
-#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN    "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
-
-/**
- * \brief A variable to specify custom icon resource id from RC file on Windows platform 
- */
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON       "SDL_WINDOWS_INTRESOURCE_ICON"
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
-
-/**
- *  \brief  A variable controlling whether the windows message loop is processed by SDL 
- *
- *  This variable can be set to the following values:
- *    "0"       - The window message loop is not run
- *    "1"       - The window message loop is processed in SDL_PumpEvents()
- *
- *  By default SDL will process the windows message loop
- */
-#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
-
-/**
- *  \brief  A variable controlling whether grabbing input grabs the keyboard
- *
- *  This variable can be set to the following values:
- *    "0"       - Grab will affect only the mouse
- *    "1"       - Grab will affect mouse and keyboard
- *
- *  By default SDL will not grab the keyboard so system shortcuts still work.
- */
-#define SDL_HINT_GRAB_KEYBOARD              "SDL_GRAB_KEYBOARD"
-
-/**
- *  \brief  A variable setting the double click time, in milliseconds.
- */
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME    "SDL_MOUSE_DOUBLE_CLICK_TIME"
-
-/**
- *  \brief  A variable setting the double click radius, in pixels.
- */
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS    "SDL_MOUSE_DOUBLE_CLICK_RADIUS"
-
-/**
- *  \brief  A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode
- */
-#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE    "SDL_MOUSE_NORMAL_SPEED_SCALE"
-
-/**
- *  \brief  A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode
- */
-#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE    "SDL_MOUSE_RELATIVE_SPEED_SCALE"
-
-/**
- *  \brief  A variable controlling whether relative mouse mode is implemented using mouse warping
- *
- *  This variable can be set to the following values:
- *    "0"       - Relative mouse mode uses raw input
- *    "1"       - Relative mouse mode uses mouse warping
- *
- *  By default SDL will use raw input for relative mouse mode
- */
-#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP    "SDL_MOUSE_RELATIVE_MODE_WARP"
-
-/**
- *  \brief Allow mouse click events when clicking to focus an SDL window
- *
- *  This variable can be set to the following values:
- *    "0"       - Ignore mouse clicks that activate a window
- *    "1"       - Generate events for mouse clicks that activate a window
- *
- *  By default SDL will ignore mouse clicks that activate a window
- */
-#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH"
-
-/**
- *  \brief  A variable controlling whether touch events should generate synthetic mouse events
- *
- *  This variable can be set to the following values:
- *    "0"       - Touch events will not generate mouse events
- *    "1"       - Touch events will generate mouse events
- *
- *  By default SDL will generate mouse events for touch events
- */
-#define SDL_HINT_TOUCH_MOUSE_EVENTS    "SDL_TOUCH_MOUSE_EVENTS"
-
-/**
- *  \brief  A variable controlling whether mouse events should generate synthetic touch events
- *
- *  This variable can be set to the following values:
- *    "0"       - Mouse events will not generate touch events (default for desktop platforms)
- *    "1"       - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)
- */
-
-#define SDL_HINT_MOUSE_TOUCH_EVENTS    "SDL_MOUSE_TOUCH_EVENTS"
-
-/**
- *  \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true.
- *
- */
-#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS   "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
-
-/**
- *  \brief  A variable controlling whether the idle timer is disabled on iOS.
- *
- *  When an iOS app does not receive touches for some time, the screen is
- *  dimmed automatically. For games where the accelerometer is the only input
- *  this is problematic. This functionality can be disabled by setting this
- *  hint.
- *
- *  As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
- *  accomplish the same thing on iOS. They should be preferred over this hint.
- *
- *  This variable can be set to the following values:
- *    "0"       - Enable idle timer
- *    "1"       - Disable idle timer
- */
-#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
-
-/**
- *  \brief  A variable controlling which orientations are allowed on iOS/Android.
- *
- *  In some circumstances it is necessary to be able to explicitly control
- *  which UI orientations are allowed.
- *
- *  This variable is a space delimited list of the following values:
- *    "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
- */
-#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
-
-/**
- *  \brief  A variable controlling whether controllers used with the Apple TV
- *  generate UI events.
- *
- * When UI events are generated by controller input, the app will be
- * backgrounded when the Apple TV remote's menu button is pressed, and when the
- * pause or B buttons on gamepads are pressed.
- *
- * More information about properly making use of controllers for the Apple TV
- * can be found here:
- * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/
- *
- *  This variable can be set to the following values:
- *    "0"       - Controller input does not generate UI events (the default).
- *    "1"       - Controller input generates UI events.
- */
-#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS"
-
-/**
- * \brief  A variable controlling whether the Apple TV remote's joystick axes
- *         will automatically match the rotation of the remote.
- *
- *  This variable can be set to the following values:
- *    "0"       - Remote orientation does not affect joystick axes (the default).
- *    "1"       - Joystick axes are based on the orientation of the remote.
- */
-#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
-
-/**
- * \brief  A variable controlling whether the home indicator bar on iPhone X
- *         should be hidden.
- *
- *  This variable can be set to the following values:
- *    "0"       - The indicator bar is not hidden (default for windowed applications)
- *    "1"       - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications)
- *    "2"       - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications)
- */
-#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR"
-
-/**
- *  \brief  A variable controlling whether the Android / iOS built-in
- *  accelerometer should be listed as a joystick device.
- *
- *  This variable can be set to the following values:
- *    "0"       - The accelerometer is not listed as a joystick
- *    "1"       - The accelerometer is available as a 3 axis joystick (the default).
- */
-#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
-
-/**
- *  \brief  A variable controlling whether the Android / tvOS remotes
- *  should be listed as joystick devices, instead of sending keyboard events.
- *
- *  This variable can be set to the following values:
- *    "0"       - Remotes send enter/escape/arrow key events
- *    "1"       - Remotes are available as 2 axis, 2 button joysticks (the default).
- */
-#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK"
-
-/**
- *  \brief  A variable that lets you disable the detection and use of Xinput gamepad devices
- *
- *  The variable can be set to the following values:
- *    "0"       - Disable XInput detection (only uses direct input)
- *    "1"       - Enable XInput detection (the default)
- */
-#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
-
-/**
- *  \brief  A variable that causes SDL to use the old axis and button mapping for XInput devices.
- *
- *  This hint is for backwards compatibility only and will be removed in SDL 2.1
- *
- *  The default value is "0".  This hint must be set before SDL_Init()
- */
-#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
-
-/**
- *  \brief  A variable that lets you manually hint extra gamecontroller db entries.
- *
- *  The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
- *
- *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
- */
-#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
-
-/**
- *  \brief  A variable that lets you provide a file with extra gamecontroller db entries.
- *
- *  The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h
- *
- *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
- */
-#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE"
-
-/**
- *  \brief  A variable containing a list of devices to skip when scanning for game controllers.
- *
- *  The format of the string is a comma separated list of USB VID/PID pairs
- *  in hexadecimal form, e.g.
- *
- *      0xAAAA/0xBBBB,0xCCCC/0xDDDD
- *
- *  The variable can also take the form of @file, in which case the named
- *  file will be loaded and interpreted as the value of the variable.
- */
-#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES"
-
-/**
- *  \brief  If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.
- *
- *  The format of the string is a comma separated list of USB VID/PID pairs
- *  in hexadecimal form, e.g.
- *
- *      0xAAAA/0xBBBB,0xCCCC/0xDDDD
- *
- *  The variable can also take the form of @file, in which case the named
- *  file will be loaded and interpreted as the value of the variable.
- */
-#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
-
-/**
- *  \brief  A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
- *
- *  The variable can be set to the following values:
- *    "0"       - Disable joystick & gamecontroller input events when the
- *                application is in the background.
- *    "1"       - Enable joystick & gamecontroller input events when the
- *                application is in the background.
- *
- *  The default value is "0".  This hint may be set at any time.
- */
-#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI joystick drivers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI drivers are not used
- *    "1"       - HIDAPI drivers are used (the default)
- *
- *  This variable is the default for all drivers, but can be overridden by the hints for specific drivers below.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for PS4 controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4"
-
-/**
- *  \brief  A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver.
- *
- *  This variable can be set to the following values:
- *    "0"       - extended reports are not enabled (the default)
- *    "1"       - extended reports
- *
- *  Extended input reports allow rumble on Bluetooth PS4 controllers, but
- *  break DirectInput handling for applications that don't use SDL.
- *
- *  Once extended reports are enabled, they can not be disabled without
- *  power cycling the controller.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for Steam Controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for XBox controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_XBOX   "SDL_JOYSTICK_HIDAPI_XBOX"
-
-/**
- *  \brief  A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs
- *
- *  The variable can be set to the following values:
- *    "0"       - Do not scan for Steam Controllers
- *    "1"       - Scan for Steam Controllers (the default)
- *
- *  The default value is "1".  This hint must be set before initializing the joystick subsystem.
- */
-#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS"
-
-
-/**
- *  \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
- *      This is a debugging aid for developers and not expected to be used by end users. The default is "1"
- *
- *  This variable can be set to the following values:
- *    "0"       - don't allow topmost
- *    "1"       - allow topmost
- */
-#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
-
-/**
- *  \brief A variable that controls the timer resolution, in milliseconds.
- *
- *  The higher resolution the timer, the more frequently the CPU services
- *  timer interrupts, and the more precise delays are, but this takes up
- *  power and CPU time.  This hint is only used on Windows 7 and earlier.
- *
- *  See this blog post for more information:
- *  http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
- *
- *  If this variable is set to "0", the system timer resolution is not set.
- *
- *  The default value is "1". This hint may be set at any time.
- */
-#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
-
-
-/**
- *  \brief  A variable describing the content orientation on QtWayland-based platforms.
- *
- *  On QtWayland platforms, windows are rotated client-side to allow for custom
- *  transitions. In order to correctly position overlays (e.g. volume bar) and
- *  gestures (e.g. events view, close/minimize gestures), the system needs to
- *  know in which orientation the application is currently drawing its contents.
- *
- *  This does not cause the window to be rotated or resized, the application
- *  needs to take care of drawing the content in the right orientation (the
- *  framebuffer is always in portrait mode).
- *
- *  This variable can be one of the following values:
- *    "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape"
- */
-#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION"
-
-/**
- *  \brief  Flags to set on QtWayland windows to integrate with the native window manager.
- *
- *  On QtWayland platforms, this hint controls the flags to set on the windows.
- *  For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures.
- *
- *  This variable is a space-separated list of the following values (empty = no flags):
- *    "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager"
- */
-#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS"
-
-/**
-*  \brief  A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
-*
-*  Use this hint in case you need to set SDL's threads stack size to other than the default.
-*  This is specially useful if you build SDL against a non glibc libc library (such as musl) which
-*  provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
-*  Support for this hint is currently available only in the pthread, Windows, and PSP backend.
-*
-*  Instead of this hint, in 2.0.9 and later, you can use
-*  SDL_CreateThreadWithStackSize(). This hint only works with the classic
-*  SDL_CreateThread().
-*/
-#define SDL_HINT_THREAD_STACK_SIZE              "SDL_THREAD_STACK_SIZE"
-
-/**
- *  \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
- */
-#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
-
-/**
- *  \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
- *
- *  If present, holding ctrl while left clicking will generate a right click
- *  event when on Mac.
- */
-#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
-
-/**
-*  \brief  A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
-*
-*  SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
-*  can use two different sets of binaries, those compiled by the user from source
-*  or those provided by the Chrome browser. In the later case, these binaries require
-*  that SDL loads a DLL providing the shader compiler.
-*
-*  This variable can be set to the following values:
-*    "d3dcompiler_46.dll" - default, best for Vista or later.
-*    "d3dcompiler_43.dll" - for XP support.
-*    "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
-*
-*/
-#define SDL_HINT_VIDEO_WIN_D3DCOMPILER              "SDL_VIDEO_WIN_D3DCOMPILER"
-
-/**
-*  \brief  A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
-*  
-*  If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
-*  SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly 
-*  created SDL_Window:
-*
-*  1. Its pixel format will be set to the same pixel format as this SDL_Window.  This is
-*  needed for example when sharing an OpenGL context across multiple windows.
-*
-*  2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
-*  OpenGL rendering.
-*
-*  This variable can be set to the following values:
-*    The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
-*    share a pixel format with.
-*/
-#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT    "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
-
-/**
- *  \brief A URL to a WinRT app's privacy policy
- *
- *  All network-enabled WinRT apps must make a privacy policy available to its
- *  users.  On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
- *  be available in the Windows Settings charm, as accessed from within the app.
- *  SDL provides code to add a URL-based link there, which can point to the app's
- *  privacy policy.
- *
- *  To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
- *  before calling any SDL_Init() functions.  The contents of the hint should
- *  be a valid URL.  For example, "http://www.example.com".
- *
- *  The default value is "", which will prevent SDL from adding a privacy policy
- *  link to the Settings charm.  This hint should only be set during app init.
- *
- *  The label text of an app's "Privacy Policy" link may be customized via another
- *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- *  Please note that on Windows Phone, Microsoft does not provide standard UI
- *  for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
- *  will not get used on that platform.  Network-enabled phone apps should display
- *  their privacy policy through some other, in-app means.
- */
-#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
-
-/** \brief Label text for a WinRT app's privacy policy link
- *
- *  Network-enabled WinRT apps must include a privacy policy.  On Windows 8, 8.1, and RT,
- *  Microsoft mandates that this policy be available via the Windows Settings charm.
- *  SDL provides code to add a link there, with its label text being set via the
- *  optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- *  Please note that a privacy policy's contents are not set via this hint.  A separate
- *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
- *  policy.
- *
- *  The contents of this hint should be encoded as a UTF8 string.
- *
- *  The default value is "Privacy Policy".  This hint should only be set during app
- *  initialization, preferably before any calls to SDL_Init().
- *
- *  For additional information on linking to a privacy policy, see the documentation for
- *  SDL_HINT_WINRT_PRIVACY_POLICY_URL.
- */
-#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
-
-/** \brief Allows back-button-press events on Windows Phone to be marked as handled
- *
- *  Windows Phone devices typically feature a Back button.  When pressed,
- *  the OS will emit back-button-press events, which apps are expected to
- *  handle in an appropriate manner.  If apps do not explicitly mark these
- *  events as 'Handled', then the OS will invoke its default behavior for
- *  unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
- *  terminate the app (and attempt to switch to the previous app, or to the
- *  device's home screen).
- *
- *  Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
- *  to mark back-button-press events as Handled, if and when one is sent to
- *  the app.
- *
- *  Internally, Windows Phone sends back button events as parameters to
- *  special back-button-press callback functions.  Apps that need to respond
- *  to back-button-press events are expected to register one or more
- *  callback functions for such, shortly after being launched (during the
- *  app's initialization phase).  After the back button is pressed, the OS
- *  will invoke these callbacks.  If the app's callback(s) do not explicitly
- *  mark the event as handled by the time they return, or if the app never
- *  registers one of these callback, the OS will consider the event
- *  un-handled, and it will apply its default back button behavior (terminate
- *  the app).
- *
- *  SDL registers its own back-button-press callback with the Windows Phone
- *  OS.  This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
- *  and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
- *  it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
- *  If the hint's value is set to "1", the back button event's Handled
- *  property will get set to 'true'.  If the hint's value is set to something
- *  else, or if it is unset, SDL will leave the event's Handled property
- *  alone.  (By default, the OS sets this property to 'false', to note.)
- *
- *  SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
- *  back button is pressed, or can set it in direct-response to a back button
- *  being pressed.
- *
- *  In order to get notified when a back button is pressed, SDL apps should
- *  register a callback function with SDL_AddEventWatch(), and have it listen
- *  for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
- *  (Alternatively, SDL_KEYUP events can be listened-for.  Listening for
- *  either event type is suitable.)  Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
- *  set by such a callback, will be applied to the OS' current
- *  back-button-press event.
- *
- *  More details on back button behavior in Windows Phone apps can be found
- *  at the following page, on Microsoft's developer site:
- *  http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
- */
-#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
-
-/**
- *  \brief  A variable that dictates policy for fullscreen Spaces on Mac OS X.
- *
- *  This hint only applies to Mac OS X.
- *
- *  The variable can be set to the following values:
- *    "0"       - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
- *                SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
- *                button on their titlebars).
- *    "1"       - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
- *                SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
- *                button on their titlebars).
- *
- *  The default value is "1". Spaces are disabled regardless of this hint if
- *   the OS isn't at least Mac OS X Lion (10.7). This hint must be set before
- *   any windows are created.
- */
-#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES    "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
-
-/**
-*  \brief  When set don't force the SDL app to become a foreground process
-*
-*  This hint only applies to Mac OS X.
-*
-*/
-#define SDL_HINT_MAC_BACKGROUND_APP    "SDL_MAC_BACKGROUND_APP"
-
-/**
- * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
- *
- * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- *
- * By default this hint is not set and the APK expansion files are not searched.
- */
-#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
-/**
- * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
- *
- * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- *
- * By default this hint is not set and the APK expansion files are not searched.
- */
-#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
-
-/**
- * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL_TEXTEDITING events are sent, and it is the application's
- *               responsibility to render the text from these events and 
- *               differentiate it somehow from committed text. (default)
- *   "1"       - If supported by the IME then SDL_TEXTEDITING events are not sent, 
- *               and text that is being composed will be rendered in its own UI.
- */
-#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
-
-/**
- * \brief A variable to control whether we trap the Android back button to handle it manually.
- *        This is necessary for the right mouse button to work on some Android devices, or
- *        to be able to trap the back button for use in your code reliably.  If set to true,
- *        the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of 
- *        SDL_SCANCODE_AC_BACK.
- *
- * The variable can be set to the following values:
- *   "0"       - Back button will be handled as usual for system. (default)
- *   "1"       - Back button will be trapped, allowing you to handle the key press
- *               manually.  (This will also let right mouse click work on systems 
- *               where the right mouse button functions as back.)
- *
- * The value of this hint is used at runtime, so it can be changed at any time.
- */
-#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON"
-
-/**
- * \brief A variable to control whether the event loop will block itself when the app is paused.
- *
- * The variable can be set to the following values:
- *   "0"       - Non blocking.
- *   "1"       - Blocking. (default)
- *
- * The value should be set before SDL is initialized.
- */
-#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE"
-
- /**
- * \brief A variable to control whether the return key on the soft keyboard
- *        should hide the soft keyboard on Android and iOS.
- *
- * The variable can be set to the following values:
- *   "0"       - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)
- *   "1"       - The return key will hide the keyboard.
- *
- * The value of this hint is used at runtime, so it can be changed at any time.
- */
-#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME"
-
-/**
- *  \brief override the binding element for keyboard inputs for Emscripten builds
- *
- * This hint only applies to the emscripten platform
- *
- * The variable can be one of
- *    "#window"      - The javascript window object (this is the default)
- *    "#document"    - The javascript document object
- *    "#screen"      - the javascript window.screen object
- *    "#canvas"      - the WebGL canvas element
- *    any other string without a leading # sign applies to the element on the page with that ID.
- */
-#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT   "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
-
-/**
- *  \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
- *
- * This hint only applies to Unix-like platforms.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL will install a SIGINT and SIGTERM handler, and when it
- *               catches a signal, convert it into an SDL_QUIT event.
- *   "1"       - SDL will not install a signal handler at all.
- */
-#define SDL_HINT_NO_SIGNAL_HANDLERS   "SDL_NO_SIGNAL_HANDLERS"
-
-/**
- *  \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL will generate a window-close event when it sees Alt+F4.
- *   "1"       - SDL will only do normal key handling for Alt+F4.
- */
-#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
-
-/**
- *  \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
- *
- * The bitmap header version 4 is required for proper alpha channel support and
- * SDL will use it when required. Should this not be desired, this hint can
- * force the use of the 40 byte header version which is supported everywhere.
- *
- * The variable can be set to the following values:
- *   "0"       - Surfaces with a colorkey or an alpha channel are saved to a
- *               32-bit BMP file with an alpha mask. SDL will use the bitmap
- *               header version 4 and set the alpha mask accordingly.
- *   "1"       - Surfaces with a colorkey or an alpha channel are saved to a
- *               32-bit BMP file without an alpha mask. The alpha channel data
- *               will be in the file, but applications are going to ignore it.
- *
- * The default value is "0".
- */
-#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"
-
-/**
- * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception.
- *        The 0x406D1388 Exception is a trick used to inform Visual Studio of a
- *        thread's name, but it tends to cause problems with other debuggers,
- *        and the .NET runtime. Note that SDL 2.0.6 and later will still use
- *        the (safer) SetThreadDescription API, introduced in the Windows 10
- *        Creators Update, if available.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL will raise the 0x406D1388 Exception to name threads.
- *               This is the default behavior of SDL <= 2.0.4.
- *   "1"       - SDL will not raise this exception, and threads will be unnamed. (default)
- *               This is necessary with .NET languages or debuggers that aren't Visual Studio.
- */
-#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING"
-
-/**
- * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI
- *
- * Also known as Z-order. The variable can take a negative or positive value.
- * The default is 10000.
- */
-#define SDL_HINT_RPI_VIDEO_LAYER           "SDL_RPI_VIDEO_LAYER"
-
-/**
- * \brief Tell the video driver that we only want a double buffer.
- *
- * By default, most lowlevel 2D APIs will use a triple buffer scheme that 
- * wastes no CPU time on waiting for vsync after issuing a flip, but
- * introduces a frame of latency. On the other hand, using a double buffer
- * scheme instead is recommended for cases where low latency is an important
- * factor because we save a whole frame of latency.
- * We do so by waiting for vsync immediately after issuing a flip, usually just
- * after eglSwapBuffers call in the backend's *_SwapWindow function.
- *
- * Since it's driver-specific, it's only supported where possible and
- * implemented. Currently supported the following drivers:
- * - KMSDRM (kmsdrm)
- * - Raspberry Pi (raspberrypi)
- */
-#define SDL_HINT_VIDEO_DOUBLE_BUFFER      "SDL_VIDEO_DOUBLE_BUFFER"
-
-/**
- *  \brief  A variable controlling what driver to use for OpenGL ES contexts.
- *
- *  On some platforms, currently Windows and X11, OpenGL drivers may support
- *  creating contexts with an OpenGL ES profile. By default SDL uses these
- *  profiles, when available, otherwise it attempts to load an OpenGL ES
- *  library, e.g. that provided by the ANGLE project. This variable controls
- *  whether SDL follows this default behaviour or will always load an
- *  OpenGL ES library.
- *
- *  Circumstances where this is useful include
- *  - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,
- *    or emulator, e.g. those from ARM, Imagination or Qualcomm.
- *  - Resolving OpenGL ES function addresses at link time by linking with
- *    the OpenGL ES library instead of querying them at run time with
- *    SDL_GL_GetProcAddress().
- *
- *  Caution: for an application to work with the default behaviour across
- *  different OpenGL drivers it must query the OpenGL ES function
- *  addresses at run time using SDL_GL_GetProcAddress().
- *
- *  This variable is ignored on most platforms because OpenGL ES is native
- *  or not supported.
- *
- *  This variable can be set to the following values:
- *    "0"       - Use ES profile of OpenGL, if available. (Default when not set.)
- *    "1"       - Load OpenGL ES library using the default library names.
- *
- */
-#define SDL_HINT_OPENGL_ES_DRIVER   "SDL_OPENGL_ES_DRIVER"
-
-/**
- *  \brief  A variable controlling speed/quality tradeoff of audio resampling.
- *
- *  If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
- *  to handle audio resampling. There are different resampling modes available
- *  that produce different levels of quality, using more CPU.
- *
- *  If this hint isn't specified to a valid setting, or libsamplerate isn't
- *  available, SDL will use the default, internal resampling algorithm.
- *
- *  Note that this is currently only applicable to resampling audio that is
- *  being written to a device for playback or audio being read from a device
- *  for capture. SDL_AudioCVT always uses the default resampler (although this
- *  might change for SDL 2.1).
- *
- *  This hint is currently only checked at audio subsystem initialization.
- *
- *  This variable can be set to the following values:
- *
- *    "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
- *    "1" or "fast"    - Use fast, slightly higher quality resampling, if available
- *    "2" or "medium"  - Use medium quality resampling, if available
- *    "3" or "best"    - Use high quality resampling, if available
- */
-#define SDL_HINT_AUDIO_RESAMPLING_MODE   "SDL_AUDIO_RESAMPLING_MODE"
-
-/**
- *  \brief  A variable controlling the audio category on iOS and Mac OS X
- *
- *  This variable can be set to the following values:
- *
- *    "ambient"     - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default)
- *    "playback"    - Use the AVAudioSessionCategoryPlayback category
- *
- *  For more information, see Apple's documentation:
- *  https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html
- */
-#define SDL_HINT_AUDIO_CATEGORY   "SDL_AUDIO_CATEGORY"
-
-/**
- *  \brief  A variable controlling whether the 2D render API is compatible or efficient.
- *
- *  This variable can be set to the following values:
- *
- *    "0"     - Don't use batching to make rendering more efficient.
- *    "1"     - Use batching, but might cause problems if app makes its own direct OpenGL calls.
- *
- *  Up to SDL 2.0.9, the render API would draw immediately when requested. Now
- *  it batches up draw requests and sends them all to the GPU only when forced
- *  to (during SDL_RenderPresent, when changing render targets, by updating a
- *  texture that the batch needs, etc). This is significantly more efficient,
- *  but it can cause problems for apps that expect to render on top of the
- *  render API's output. As such, SDL will disable batching if a specific
- *  render backend is requested (since this might indicate that the app is
- *  planning to use the underlying graphics API directly). This hint can
- *  be used to explicitly request batching in this instance. It is a contract
- *  that you will either never use the underlying graphics API directly, or
- *  if you do, you will call SDL_RenderFlush() before you do so any current
- *  batch goes to the GPU before your work begins. Not following this contract
- *  will result in undefined behavior.
- */
-#define SDL_HINT_RENDER_BATCHING  "SDL_RENDER_BATCHING"
-
-
-/**
- *  \brief  A variable controlling whether SDL logs all events pushed onto its internal queue.
- *
- *  This variable can be set to the following values:
- *
- *    "0"     - Don't log any events (default)
- *    "1"     - Log all events except mouse and finger motion, which are pretty spammy.
- *    "2"     - Log all events.
- *
- *  This is generally meant to be used to debug SDL itself, but can be useful
- *  for application developers that need better visibility into what is going
- *  on in the event queue. Logged events are sent through SDL_Log(), which
- *  means by default they appear on stdout on most platforms or maybe
- *  OutputDebugString() on Windows, and can be funneled by the app with
- *  SDL_LogSetOutputFunction(), etc.
- *
- *  This hint can be toggled on and off at runtime, if you only need to log
- *  events for a small subset of program execution.
- */
-#define SDL_HINT_EVENT_LOGGING   "SDL_EVENT_LOGGING"
-
-
-
-/**
- *  \brief  Controls how the size of the RIFF chunk affects the loading of a WAVE file.
- *
- *  The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
- *  file) is not always reliable. In case the size is wrong, it's possible to
- *  just ignore it and step through the chunks until a fixed limit is reached.
- *
- *  Note that files that have trailing data unrelated to the WAVE file or
- *  corrupt files may slow down the loading process without a reliable boundary.
- *  By default, SDL stops after 10000 chunks to prevent wasting time. Use the
- *  environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.
- *
- *  This variable can be set to the following values:
- *
- *    "force"        - Always use the RIFF chunk size as a boundary for the chunk search
- *    "ignorezero"   - Like "force", but a zero size searches up to 4 GiB (default)
- *    "ignore"       - Ignore the RIFF chunk size and always search up to 4 GiB
- *    "maximum"      - Search for chunks until the end of file (not recommended)
- */
-#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE   "SDL_WAVE_RIFF_CHUNK_SIZE"
-
-/**
- *  \brief  Controls how a truncated WAVE file is handled.
- *
- *  A WAVE file is considered truncated if any of the chunks are incomplete or
- *  the data chunk size is not a multiple of the block size. By default, SDL
- *  decodes until the first incomplete block, as most applications seem to do.
- *
- *  This variable can be set to the following values:
- *
- *    "verystrict" - Raise an error if the file is truncated
- *    "strict"     - Like "verystrict", but the size of the RIFF chunk is ignored
- *    "dropframe"  - Decode until the first incomplete sample frame
- *    "dropblock"  - Decode until the first incomplete block (default)
- */
-#define SDL_HINT_WAVE_TRUNCATION   "SDL_WAVE_TRUNCATION"
-
-/**
- *  \brief  Controls how the fact chunk affects the loading of a WAVE file.
- *
- *  The fact chunk stores information about the number of samples of a WAVE
- *  file. The Standards Update from Microsoft notes that this value can be used
- *  to 'determine the length of the data in seconds'. This is especially useful
- *  for compressed formats (for which this is a mandatory chunk) if they produce
- *  multiple sample frames per block and truncating the block is not allowed.
- *  The fact chunk can exactly specify how many sample frames there should be
- *  in this case.
- *
- *  Unfortunately, most application seem to ignore the fact chunk and so SDL
- *  ignores it by default as well.
- *
- *  This variable can be set to the following values:
- *
- *    "truncate"    - Use the number of samples to truncate the wave data if
- *                    the fact chunk is present and valid
- *    "strict"      - Like "truncate", but raise an error if the fact chunk
- *                    is invalid, not present for non-PCM formats, or if the
- *                    data chunk doesn't have that many samples
- *    "ignorezero"  - Like "truncate", but ignore fact chunk if the number of
- *                    samples is zero
- *    "ignore"      - Ignore fact chunk entirely (default)
- */
-#define SDL_HINT_WAVE_FACT_CHUNK   "SDL_WAVE_FACT_CHUNK"
-
-/**
- *  \brief  An enumeration of hint priorities
- */
-typedef enum
-{
-    SDL_HINT_DEFAULT,
-    SDL_HINT_NORMAL,
-    SDL_HINT_OVERRIDE
-} SDL_HintPriority;
-
-
-/**
- *  \brief Set a hint with a specific priority
- *
- *  The priority controls the behavior when setting a hint that already
- *  has a value.  Hints will replace existing hints of their priority and
- *  lower.  Environment variables are considered to have override priority.
- *
- *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
-                                                         const char *value,
-                                                         SDL_HintPriority priority);
-
-/**
- *  \brief Set a hint with normal priority
- *
- *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
-                                             const char *value);
-
-/**
- *  \brief Get a hint
- *
- *  \return The string value of a hint variable.
- */
-extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
-
-/**
- *  \brief Get a hint
- *
- *  \return The boolean value of a hint variable.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value);
-
-/**
- * \brief type definition of the hint callback function.
- */
-typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
-
-/**
- *  \brief Add a function to watch a particular hint
- *
- *  \param name The hint to watch
- *  \param callback The function to call when the hint value changes
- *  \param userdata A pointer to pass to the callback function
- */
-extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
-                                                 SDL_HintCallback callback,
-                                                 void *userdata);
-
-/**
- *  \brief Remove a function watching a particular hint
- *
- *  \param name The hint being watched
- *  \param callback The function being called when the hint value changes
- *  \param userdata A pointer being passed to the callback function
- */
-extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
-                                                 SDL_HintCallback callback,
-                                                 void *userdata);
-
-/**
- *  \brief  Clear all hints
- *
- *  This function is called during SDL_Quit() to free stored hints.
- */
-extern DECLSPEC void SDLCALL SDL_ClearHints(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_hints_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_joystick.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_joystick.h
deleted file mode 100644 (file)
index 3a4c5d1..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_joystick.h
- *
- *  Include file for SDL joystick event handling
- *
- * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick
- *   behind a device_index changing as joysticks are plugged and unplugged.
- *
- * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted
- *   then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in.
- *
- * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of
- *   the device (a X360 wired controller for example). This identifier is platform dependent.
- *
- *
- */
-
-#ifndef SDL_joystick_h_
-#define SDL_joystick_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_joystick.h
- *
- *  In order to use these functions, SDL_Init() must have been called
- *  with the ::SDL_INIT_JOYSTICK flag.  This causes SDL to scan the system
- *  for joysticks, and load appropriate drivers.
- *
- *  If you would like to receive joystick updates while the application
- *  is in the background, you should set the following hint before calling
- *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
- */
-
-/**
- * The joystick structure used to identify an SDL joystick
- */
-struct _SDL_Joystick;
-typedef struct _SDL_Joystick SDL_Joystick;
-
-/* A structure that encodes the stable unique id for a joystick device */
-typedef struct {
-    Uint8 data[16];
-} SDL_JoystickGUID;
-
-/**
- * This is a unique ID for a joystick for the time it is connected to the system,
- * and is never reused for the lifetime of the application. If the joystick is
- * disconnected and reconnected, it will get a new ID.
- *
- * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
- */
-typedef Sint32 SDL_JoystickID;
-
-typedef enum
-{
-    SDL_JOYSTICK_TYPE_UNKNOWN,
-    SDL_JOYSTICK_TYPE_GAMECONTROLLER,
-    SDL_JOYSTICK_TYPE_WHEEL,
-    SDL_JOYSTICK_TYPE_ARCADE_STICK,
-    SDL_JOYSTICK_TYPE_FLIGHT_STICK,
-    SDL_JOYSTICK_TYPE_DANCE_PAD,
-    SDL_JOYSTICK_TYPE_GUITAR,
-    SDL_JOYSTICK_TYPE_DRUM_KIT,
-    SDL_JOYSTICK_TYPE_ARCADE_PAD,
-    SDL_JOYSTICK_TYPE_THROTTLE
-} SDL_JoystickType;
-
-typedef enum
-{
-    SDL_JOYSTICK_POWER_UNKNOWN = -1,
-    SDL_JOYSTICK_POWER_EMPTY,   /* <= 5% */
-    SDL_JOYSTICK_POWER_LOW,     /* <= 20% */
-    SDL_JOYSTICK_POWER_MEDIUM,  /* <= 70% */
-    SDL_JOYSTICK_POWER_FULL,    /* <= 100% */
-    SDL_JOYSTICK_POWER_WIRED,
-    SDL_JOYSTICK_POWER_MAX
-} SDL_JoystickPowerLevel;
-
-/* Function prototypes */
-
-/**
- * Locking for multi-threaded access to the joystick API
- *
- * If you are using the joystick API or handling events from multiple threads
- * you should use these locking functions to protect access to the joysticks.
- *
- * In particular, you are guaranteed that the joystick list won't change, so
- * the API functions that take a joystick index will be valid, and joystick
- * and game controller events will not be delivered.
- */
-extern DECLSPEC void SDLCALL SDL_LockJoysticks(void);
-extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void);
-
-/**
- *  Count the number of joysticks attached to the system right now
- */
-extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
-
-/**
- *  Get the implementation dependent name of a joystick.
- *  This can be called before any joysticks are opened.
- *  If no name can be found, this function returns NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
-
-/**
- *  Get the player index of a joystick, or -1 if it's not available
- *  This can be called before any joysticks are opened.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index);
-
-/**
- *  Return the GUID for the joystick at this index
- *  This can be called before any joysticks are opened.
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index);
-
-/**
- *  Get the USB vendor ID of a joystick, if available.
- *  This can be called before any joysticks are opened.
- *  If the vendor ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index);
-
-/**
- *  Get the USB product ID of a joystick, if available.
- *  This can be called before any joysticks are opened.
- *  If the product ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);
-
-/**
- *  Get the product version of a joystick, if available.
- *  This can be called before any joysticks are opened.
- *  If the product version isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index);
-
-/**
- *  Get the type of a joystick, if available.
- *  This can be called before any joysticks are opened.
- */
-extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index);
-
-/**
- *  Get the instance ID of a joystick.
- *  This can be called before any joysticks are opened.
- *  If the index is out of range, this function will return -1.
- */
-extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index);
-
-/**
- *  Open a joystick for use.
- *  The index passed as an argument refers to the N'th joystick on the system.
- *  This index is not the value which will identify this joystick in future
- *  joystick events.  The joystick's instance id (::SDL_JoystickID) will be used
- *  there instead.
- *
- *  \return A joystick identifier, or NULL if an error occurred.
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
-
-/**
- * Return the SDL_Joystick associated with an instance id.
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID joyid);
-
-/**
- *  Return the name for this currently opened joystick.
- *  If no name can be found, this function returns NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick * joystick);
-
-/**
- *  Get the player index of an opened joystick, or -1 if it's not available
- *
- *  For XInput controllers this returns the XInput user index.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick * joystick);
-
-/**
- *  Return the GUID for this opened joystick
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick * joystick);
-
-/**
- *  Get the USB vendor ID of an opened joystick, if available.
- *  If the vendor ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick * joystick);
-
-/**
- *  Get the USB product ID of an opened joystick, if available.
- *  If the product ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick * joystick);
-
-/**
- *  Get the product version of an opened joystick, if available.
- *  If the product version isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick * joystick);
-
-/**
- *  Get the type of an opened joystick.
- */
-extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick * joystick);
-
-/**
- *  Return a string representation for this guid. pszGUID must point to at least 33 bytes
- *  (32 for the string plus a NULL terminator).
- */
-extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID);
-
-/**
- *  Convert a string into a joystick guid
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);
-
-/**
- *  Returns SDL_TRUE if the joystick has been opened and currently connected, or SDL_FALSE if it has not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick * joystick);
-
-/**
- *  Get the instance ID of an opened joystick or -1 if the joystick is invalid.
- */
-extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick * joystick);
-
-/**
- *  Get the number of general axis controls on a joystick.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick * joystick);
-
-/**
- *  Get the number of trackballs on a joystick.
- *
- *  Joystick trackballs have only relative motion events associated
- *  with them and their state cannot be polled.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick * joystick);
-
-/**
- *  Get the number of POV hats on a joystick.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick * joystick);
-
-/**
- *  Get the number of buttons on a joystick.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick * joystick);
-
-/**
- *  Update the current state of the open joysticks.
- *
- *  This is called automatically by the event loop if any joystick
- *  events are enabled.
- */
-extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
-
-/**
- *  Enable/disable joystick event polling.
- *
- *  If joystick events are disabled, you must call SDL_JoystickUpdate()
- *  yourself and check the state of the joystick when you want joystick
- *  information.
- *
- *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
-
-#define SDL_JOYSTICK_AXIS_MAX   32767
-#define SDL_JOYSTICK_AXIS_MIN   -32768
-/**
- *  Get the current state of an axis control on a joystick.
- *
- *  The state is a value ranging from -32768 to 32767.
- *
- *  The axis indices start at index 0.
- */
-extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick * joystick,
-                                                   int axis);
-
-/**
- *  Get the initial state of an axis control on a joystick.
- *
- *  The state is a value ranging from -32768 to 32767.
- *
- *  The axis indices start at index 0.
- *
- *  \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick * joystick,
-                                                   int axis, Sint16 *state);
-
-/**
- *  \name Hat positions
- */
-/* @{ */
-#define SDL_HAT_CENTERED    0x00
-#define SDL_HAT_UP          0x01
-#define SDL_HAT_RIGHT       0x02
-#define SDL_HAT_DOWN        0x04
-#define SDL_HAT_LEFT        0x08
-#define SDL_HAT_RIGHTUP     (SDL_HAT_RIGHT|SDL_HAT_UP)
-#define SDL_HAT_RIGHTDOWN   (SDL_HAT_RIGHT|SDL_HAT_DOWN)
-#define SDL_HAT_LEFTUP      (SDL_HAT_LEFT|SDL_HAT_UP)
-#define SDL_HAT_LEFTDOWN    (SDL_HAT_LEFT|SDL_HAT_DOWN)
-/* @} */
-
-/**
- *  Get the current state of a POV hat on a joystick.
- *
- *  The hat indices start at index 0.
- *
- *  \return The return value is one of the following positions:
- *           - ::SDL_HAT_CENTERED
- *           - ::SDL_HAT_UP
- *           - ::SDL_HAT_RIGHT
- *           - ::SDL_HAT_DOWN
- *           - ::SDL_HAT_LEFT
- *           - ::SDL_HAT_RIGHTUP
- *           - ::SDL_HAT_RIGHTDOWN
- *           - ::SDL_HAT_LEFTUP
- *           - ::SDL_HAT_LEFTDOWN
- */
-extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick * joystick,
-                                                 int hat);
-
-/**
- *  Get the ball axis change since the last poll.
- *
- *  \return 0, or -1 if you passed it invalid parameters.
- *
- *  The ball indices start at index 0.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick * joystick,
-                                                int ball, int *dx, int *dy);
-
-/**
- *  Get the current state of a button on a joystick.
- *
- *  The button indices start at index 0.
- */
-extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick * joystick,
-                                                    int button);
-
-/**
- *  Trigger a rumble effect
- *  Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling.
- *
- *  \param joystick The joystick to vibrate
- *  \param low_frequency_rumble The intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF
- *  \param high_frequency_rumble The intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF
- *  \param duration_ms The duration of the rumble effect, in milliseconds
- *
- *  \return 0, or -1 if rumble isn't supported on this joystick
- */
-extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick * joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
-
-/**
- *  Close a joystick previously opened with SDL_JoystickOpen().
- */
-extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick * joystick);
-
-/**
- *  Return the battery level of this joystick
- */
-extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick * joystick);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_joystick_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_keyboard.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_keyboard.h
deleted file mode 100644 (file)
index 4b2a055..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_keyboard.h
- *
- *  Include file for SDL keyboard event handling
- */
-
-#ifndef SDL_keyboard_h_
-#define SDL_keyboard_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_keycode.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief The SDL keysym structure, used in key events.
- *
- *  \note  If you are looking for translated character input, see the ::SDL_TEXTINPUT event.
- */
-typedef struct SDL_Keysym
-{
-    SDL_Scancode scancode;      /**< SDL physical key code - see ::SDL_Scancode for details */
-    SDL_Keycode sym;            /**< SDL virtual key code - see ::SDL_Keycode for details */
-    Uint16 mod;                 /**< current key modifiers */
-    Uint32 unused;
-} SDL_Keysym;
-
-/* Function prototypes */
-
-/**
- *  \brief Get the window which currently has keyboard focus.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
-
-/**
- *  \brief Get a snapshot of the current state of the keyboard.
- *
- *  \param numkeys if non-NULL, receives the length of the returned array.
- *
- *  \return An array of key states. Indexes into this array are obtained by using ::SDL_Scancode values.
- *
- *  \b Example:
- *  \code
- *  const Uint8 *state = SDL_GetKeyboardState(NULL);
- *  if ( state[SDL_SCANCODE_RETURN] )   {
- *      printf("<RETURN> is pressed.\n");
- *  }
- *  \endcode
- */
-extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys);
-
-/**
- *  \brief Get the current key modifier state for the keyboard.
- */
-extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
-
-/**
- *  \brief Set the current key modifier state for the keyboard.
- *
- *  \note This does not change the keyboard state, only the key modifier flags.
- */
-extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
-
-/**
- *  \brief Get the key code corresponding to the given scancode according
- *         to the current keyboard layout.
- *
- *  See ::SDL_Keycode for details.
- *
- *  \sa SDL_GetKeyName()
- */
-extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode);
-
-/**
- *  \brief Get the scancode corresponding to the given key code according to the
- *         current keyboard layout.
- *
- *  See ::SDL_Scancode for details.
- *
- *  \sa SDL_GetScancodeName()
- */
-extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key);
-
-/**
- *  \brief Get a human-readable name for a scancode.
- *
- *  \return A pointer to the name for the scancode.
- *          If the scancode doesn't have a name, this function returns
- *          an empty string ("").
- *
- *  \sa SDL_Scancode
- */
-extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);
-
-/**
- *  \brief Get a scancode from a human-readable name
- *
- *  \return scancode, or SDL_SCANCODE_UNKNOWN if the name wasn't recognized
- *
- *  \sa SDL_Scancode
- */
-extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);
-
-/**
- *  \brief Get a human-readable name for a key.
- *
- *  \return A pointer to a UTF-8 string that stays valid at least until the next
- *          call to this function. If you need it around any longer, you must
- *          copy it.  If the key doesn't have a name, this function returns an
- *          empty string ("").
- *
- *  \sa SDL_Keycode
- */
-extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key);
-
-/**
- *  \brief Get a key code from a human-readable name
- *
- *  \return key code, or SDLK_UNKNOWN if the name wasn't recognized
- *
- *  \sa SDL_Keycode
- */
-extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
-
-/**
- *  \brief Start accepting Unicode text input events.
- *         This function will show the on-screen keyboard if supported.
- *
- *  \sa SDL_StopTextInput()
- *  \sa SDL_SetTextInputRect()
- *  \sa SDL_HasScreenKeyboardSupport()
- */
-extern DECLSPEC void SDLCALL SDL_StartTextInput(void);
-
-/**
- *  \brief Return whether or not Unicode text input events are enabled.
- *
- *  \sa SDL_StartTextInput()
- *  \sa SDL_StopTextInput()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void);
-
-/**
- *  \brief Stop receiving any text input events.
- *         This function will hide the on-screen keyboard if supported.
- *
- *  \sa SDL_StartTextInput()
- *  \sa SDL_HasScreenKeyboardSupport()
- */
-extern DECLSPEC void SDLCALL SDL_StopTextInput(void);
-
-/**
- *  \brief Set the rectangle used to type Unicode text inputs.
- *         This is used as a hint for IME and on-screen keyboard placement.
- *
- *  \sa SDL_StartTextInput()
- */
-extern DECLSPEC void SDLCALL SDL_SetTextInputRect(SDL_Rect *rect);
-
-/**
- *  \brief Returns whether the platform has some screen keyboard support.
- *
- *  \return SDL_TRUE if some keyboard support is available else SDL_FALSE.
- *
- *  \note Not all screen keyboard functions are supported on all platforms.
- *
- *  \sa SDL_IsScreenKeyboardShown()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void);
-
-/**
- *  \brief Returns whether the screen keyboard is shown for given window.
- *
- *  \param window The window for which screen keyboard should be queried.
- *
- *  \return SDL_TRUE if screen keyboard is shown else SDL_FALSE.
- *
- *  \sa SDL_HasScreenKeyboardSupport()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_keyboard_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_keycode.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_keycode.h
deleted file mode 100644 (file)
index 3bceb41..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_keycode.h
- *
- *  Defines constants which identify keyboard keys and modifiers.
- */
-
-#ifndef SDL_keycode_h_
-#define SDL_keycode_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_scancode.h"
-
-/**
- *  \brief The SDL virtual key representation.
- *
- *  Values of this type are used to represent keyboard keys using the current
- *  layout of the keyboard.  These values include Unicode values representing
- *  the unmodified character that would be generated by pressing the key, or
- *  an SDLK_* constant for those keys that do not generate characters.
- *
- *  A special exception is the number keys at the top of the keyboard which
- *  always map to SDLK_0...SDLK_9, regardless of layout.
- */
-typedef Sint32 SDL_Keycode;
-
-#define SDLK_SCANCODE_MASK (1<<30)
-#define SDL_SCANCODE_TO_KEYCODE(X)  (X | SDLK_SCANCODE_MASK)
-
-enum
-{
-    SDLK_UNKNOWN = 0,
-
-    SDLK_RETURN = '\r',
-    SDLK_ESCAPE = '\033',
-    SDLK_BACKSPACE = '\b',
-    SDLK_TAB = '\t',
-    SDLK_SPACE = ' ',
-    SDLK_EXCLAIM = '!',
-    SDLK_QUOTEDBL = '"',
-    SDLK_HASH = '#',
-    SDLK_PERCENT = '%',
-    SDLK_DOLLAR = '$',
-    SDLK_AMPERSAND = '&',
-    SDLK_QUOTE = '\'',
-    SDLK_LEFTPAREN = '(',
-    SDLK_RIGHTPAREN = ')',
-    SDLK_ASTERISK = '*',
-    SDLK_PLUS = '+',
-    SDLK_COMMA = ',',
-    SDLK_MINUS = '-',
-    SDLK_PERIOD = '.',
-    SDLK_SLASH = '/',
-    SDLK_0 = '0',
-    SDLK_1 = '1',
-    SDLK_2 = '2',
-    SDLK_3 = '3',
-    SDLK_4 = '4',
-    SDLK_5 = '5',
-    SDLK_6 = '6',
-    SDLK_7 = '7',
-    SDLK_8 = '8',
-    SDLK_9 = '9',
-    SDLK_COLON = ':',
-    SDLK_SEMICOLON = ';',
-    SDLK_LESS = '<',
-    SDLK_EQUALS = '=',
-    SDLK_GREATER = '>',
-    SDLK_QUESTION = '?',
-    SDLK_AT = '@',
-    /*
-       Skip uppercase letters
-     */
-    SDLK_LEFTBRACKET = '[',
-    SDLK_BACKSLASH = '\\',
-    SDLK_RIGHTBRACKET = ']',
-    SDLK_CARET = '^',
-    SDLK_UNDERSCORE = '_',
-    SDLK_BACKQUOTE = '`',
-    SDLK_a = 'a',
-    SDLK_b = 'b',
-    SDLK_c = 'c',
-    SDLK_d = 'd',
-    SDLK_e = 'e',
-    SDLK_f = 'f',
-    SDLK_g = 'g',
-    SDLK_h = 'h',
-    SDLK_i = 'i',
-    SDLK_j = 'j',
-    SDLK_k = 'k',
-    SDLK_l = 'l',
-    SDLK_m = 'm',
-    SDLK_n = 'n',
-    SDLK_o = 'o',
-    SDLK_p = 'p',
-    SDLK_q = 'q',
-    SDLK_r = 'r',
-    SDLK_s = 's',
-    SDLK_t = 't',
-    SDLK_u = 'u',
-    SDLK_v = 'v',
-    SDLK_w = 'w',
-    SDLK_x = 'x',
-    SDLK_y = 'y',
-    SDLK_z = 'z',
-
-    SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK),
-
-    SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1),
-    SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2),
-    SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3),
-    SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4),
-    SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5),
-    SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6),
-    SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7),
-    SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8),
-    SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9),
-    SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10),
-    SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11),
-    SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12),
-
-    SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN),
-    SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK),
-    SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE),
-    SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT),
-    SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME),
-    SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP),
-    SDLK_DELETE = '\177',
-    SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END),
-    SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN),
-    SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT),
-    SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT),
-    SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN),
-    SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP),
-
-    SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR),
-    SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE),
-    SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY),
-    SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS),
-    SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS),
-    SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER),
-    SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1),
-    SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2),
-    SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3),
-    SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4),
-    SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5),
-    SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6),
-    SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7),
-    SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8),
-    SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9),
-    SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0),
-    SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD),
-
-    SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION),
-    SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER),
-    SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS),
-    SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13),
-    SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14),
-    SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15),
-    SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16),
-    SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17),
-    SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18),
-    SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19),
-    SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20),
-    SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21),
-    SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22),
-    SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23),
-    SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24),
-    SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE),
-    SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP),
-    SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU),
-    SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT),
-    SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP),
-    SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN),
-    SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO),
-    SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT),
-    SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY),
-    SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE),
-    SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND),
-    SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE),
-    SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP),
-    SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN),
-    SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA),
-    SDLK_KP_EQUALSAS400 =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400),
-
-    SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE),
-    SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ),
-    SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL),
-    SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR),
-    SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR),
-    SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2),
-    SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR),
-    SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT),
-    SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER),
-    SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN),
-    SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL),
-    SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL),
-
-    SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00),
-    SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000),
-    SDLK_THOUSANDSSEPARATOR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR),
-    SDLK_DECIMALSEPARATOR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR),
-    SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT),
-    SDLK_CURRENCYSUBUNIT =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT),
-    SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN),
-    SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN),
-    SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE),
-    SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE),
-    SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB),
-    SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE),
-    SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A),
-    SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B),
-    SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C),
-    SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D),
-    SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E),
-    SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F),
-    SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR),
-    SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER),
-    SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT),
-    SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS),
-    SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER),
-    SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND),
-    SDLK_KP_DBLAMPERSAND =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND),
-    SDLK_KP_VERTICALBAR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR),
-    SDLK_KP_DBLVERTICALBAR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR),
-    SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON),
-    SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH),
-    SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE),
-    SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT),
-    SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM),
-    SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE),
-    SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL),
-    SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR),
-    SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD),
-    SDLK_KP_MEMSUBTRACT =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT),
-    SDLK_KP_MEMMULTIPLY =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY),
-    SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE),
-    SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS),
-    SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR),
-    SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY),
-    SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY),
-    SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL),
-    SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL),
-    SDLK_KP_HEXADECIMAL =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL),
-
-    SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL),
-    SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT),
-    SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT),
-    SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI),
-    SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL),
-    SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT),
-    SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT),
-    SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI),
-
-    SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE),
-
-    SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT),
-    SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV),
-    SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP),
-    SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY),
-    SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE),
-    SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT),
-    SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW),
-    SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL),
-    SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR),
-    SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER),
-    SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH),
-    SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME),
-    SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK),
-    SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD),
-    SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP),
-    SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH),
-    SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS),
-
-    SDLK_BRIGHTNESSDOWN =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN),
-    SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP),
-    SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH),
-    SDLK_KBDILLUMTOGGLE =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE),
-    SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN),
-    SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP),
-    SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT),
-    SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP),
-    SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1),
-    SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2),
-
-    SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND),
-    SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD)
-};
-
-/**
- * \brief Enumeration of valid key mods (possibly OR'd together).
- */
-typedef enum
-{
-    KMOD_NONE = 0x0000,
-    KMOD_LSHIFT = 0x0001,
-    KMOD_RSHIFT = 0x0002,
-    KMOD_LCTRL = 0x0040,
-    KMOD_RCTRL = 0x0080,
-    KMOD_LALT = 0x0100,
-    KMOD_RALT = 0x0200,
-    KMOD_LGUI = 0x0400,
-    KMOD_RGUI = 0x0800,
-    KMOD_NUM = 0x1000,
-    KMOD_CAPS = 0x2000,
-    KMOD_MODE = 0x4000,
-    KMOD_RESERVED = 0x8000
-} SDL_Keymod;
-
-#define KMOD_CTRL   (KMOD_LCTRL|KMOD_RCTRL)
-#define KMOD_SHIFT  (KMOD_LSHIFT|KMOD_RSHIFT)
-#define KMOD_ALT    (KMOD_LALT|KMOD_RALT)
-#define KMOD_GUI    (KMOD_LGUI|KMOD_RGUI)
-
-#endif /* SDL_keycode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_loadso.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_loadso.h
deleted file mode 100644 (file)
index 793ba53..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_loadso.h
- *
- *  System dependent library loading routines
- *
- *  Some things to keep in mind:
- *  \li These functions only work on C function names.  Other languages may
- *      have name mangling and intrinsic language support that varies from
- *      compiler to compiler.
- *  \li Make sure you declare your function pointers with the same calling
- *      convention as the actual library function.  Your code will crash
- *      mysteriously if you do not do this.
- *  \li Avoid namespace collisions.  If you load a symbol from the library,
- *      it is not defined whether or not it goes into the global symbol
- *      namespace for the application.  If it does and it conflicts with
- *      symbols in your code or other shared libraries, you will not get
- *      the results you expect. :)
- */
-
-#ifndef SDL_loadso_h_
-#define SDL_loadso_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  This function dynamically loads a shared object and returns a pointer
- *  to the object handle (or NULL if there was an error).
- *  The 'sofile' parameter is a system dependent name of the object file.
- */
-extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile);
-
-/**
- *  Given an object handle, this function looks up the address of the
- *  named function in the shared object and returns it.  This address
- *  is no longer valid after calling SDL_UnloadObject().
- */
-extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle,
-                                               const char *name);
-
-/**
- *  Unload a shared object from memory.
- */
-extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_loadso_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_log.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_log.h
deleted file mode 100644 (file)
index 40f768d..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_log.h
- *
- *  Simple log messages with categories and priorities.
- *
- *  By default logs are quiet, but if you're debugging SDL you might want:
- *
- *      SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);
- *
- *  Here's where the messages go on different platforms:
- *      Windows: debug output stream
- *      Android: log output
- *      Others: standard error output (stderr)
- */
-
-#ifndef SDL_log_h_
-#define SDL_log_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- *  \brief The maximum size of a log message
- *
- *  Messages longer than the maximum size will be truncated
- */
-#define SDL_MAX_LOG_MESSAGE 4096
-
-/**
- *  \brief The predefined log categories
- *
- *  By default the application category is enabled at the INFO level,
- *  the assert category is enabled at the WARN level, test is enabled
- *  at the VERBOSE level and all other categories are enabled at the
- *  CRITICAL level.
- */
-enum
-{
-    SDL_LOG_CATEGORY_APPLICATION,
-    SDL_LOG_CATEGORY_ERROR,
-    SDL_LOG_CATEGORY_ASSERT,
-    SDL_LOG_CATEGORY_SYSTEM,
-    SDL_LOG_CATEGORY_AUDIO,
-    SDL_LOG_CATEGORY_VIDEO,
-    SDL_LOG_CATEGORY_RENDER,
-    SDL_LOG_CATEGORY_INPUT,
-    SDL_LOG_CATEGORY_TEST,
-
-    /* Reserved for future SDL library use */
-    SDL_LOG_CATEGORY_RESERVED1,
-    SDL_LOG_CATEGORY_RESERVED2,
-    SDL_LOG_CATEGORY_RESERVED3,
-    SDL_LOG_CATEGORY_RESERVED4,
-    SDL_LOG_CATEGORY_RESERVED5,
-    SDL_LOG_CATEGORY_RESERVED6,
-    SDL_LOG_CATEGORY_RESERVED7,
-    SDL_LOG_CATEGORY_RESERVED8,
-    SDL_LOG_CATEGORY_RESERVED9,
-    SDL_LOG_CATEGORY_RESERVED10,
-
-    /* Beyond this point is reserved for application use, e.g.
-       enum {
-           MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM,
-           MYAPP_CATEGORY_AWESOME2,
-           MYAPP_CATEGORY_AWESOME3,
-           ...
-       };
-     */
-    SDL_LOG_CATEGORY_CUSTOM
-};
-
-/**
- *  \brief The predefined log priorities
- */
-typedef enum
-{
-    SDL_LOG_PRIORITY_VERBOSE = 1,
-    SDL_LOG_PRIORITY_DEBUG,
-    SDL_LOG_PRIORITY_INFO,
-    SDL_LOG_PRIORITY_WARN,
-    SDL_LOG_PRIORITY_ERROR,
-    SDL_LOG_PRIORITY_CRITICAL,
-    SDL_NUM_LOG_PRIORITIES
-} SDL_LogPriority;
-
-
-/**
- *  \brief Set the priority of all log categories
- */
-extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority);
-
-/**
- *  \brief Set the priority of a particular log category
- */
-extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category,
-                                                SDL_LogPriority priority);
-
-/**
- *  \brief Get the priority of a particular log category
- */
-extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category);
-
-/**
- *  \brief Reset all priorities to default.
- *
- *  \note This is called in SDL_Quit().
- */
-extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void);
-
-/**
- *  \brief Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO
- */
-extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_VERBOSE
- */
-extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_DEBUG
- */
-extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_INFO
- */
-extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_WARN
- */
-extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_ERROR
- */
-extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_CRITICAL
- */
-extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with the specified category and priority.
- */
-extern DECLSPEC void SDLCALL SDL_LogMessage(int category,
-                                            SDL_LogPriority priority,
-                                            SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3);
-
-/**
- *  \brief Log a message with the specified category and priority.
- */
-extern DECLSPEC void SDLCALL SDL_LogMessageV(int category,
-                                             SDL_LogPriority priority,
-                                             const char *fmt, va_list ap);
-
-/**
- *  \brief The prototype for the log output function
- */
-typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message);
-
-/**
- *  \brief Get the current log output function.
- */
-extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata);
-
-/**
- *  \brief This function allows you to replace the default log output
- *         function with one of your own.
- */
-extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_log_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_main.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_main.h
deleted file mode 100644 (file)
index 623f2d0..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_main_h_
-#define SDL_main_h_
-
-#include "SDL_stdinc.h"
-
-/**
- *  \file SDL_main.h
- *
- *  Redefine main() on some platforms so that it is called by SDL.
- */
-
-#ifndef SDL_MAIN_HANDLED
-#if defined(__WIN32__)
-/* On Windows SDL provides WinMain(), which parses the command line and passes
-   the arguments to your main function.
-
-   If you provide your own WinMain(), you may define SDL_MAIN_HANDLED
- */
-#define SDL_MAIN_AVAILABLE
-
-#elif defined(__WINRT__)
-/* On WinRT, SDL provides a main function that initializes CoreApplication,
-   creating an instance of IFrameworkView in the process.
-
-   Please note that #include'ing SDL_main.h is not enough to get a main()
-   function working.  In non-XAML apps, the file,
-   src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled
-   into the app itself.  In XAML apps, the function, SDL_WinRTRunApp must be
-   called, with a pointer to the Direct3D-hosted XAML control passed in.
-*/
-#define SDL_MAIN_NEEDED
-
-#elif defined(__IPHONEOS__)
-/* On iOS SDL provides a main function that creates an application delegate
-   and starts the iOS application run loop.
-
-   If you link with SDL dynamically on iOS, the main function can't be in a
-   shared library, so you need to link with libSDLmain.a, which includes a
-   stub main function that calls into the shared library to start execution.
-
-   See src/video/uikit/SDL_uikitappdelegate.m for more details.
- */
-#define SDL_MAIN_NEEDED
-
-#elif defined(__ANDROID__)
-/* On Android SDL provides a Java class in SDLActivity.java that is the
-   main activity entry point.
-
-   See docs/README-android.md for more details on extending that class.
- */
-#define SDL_MAIN_NEEDED
-
-/* We need to export SDL_main so it can be launched from Java */
-#define SDLMAIN_DECLSPEC    DECLSPEC
-
-#elif defined(__NACL__)
-/* On NACL we use ppapi_simple to set up the application helper code,
-   then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before 
-   starting the user main function.
-   All user code is run in a separate thread by ppapi_simple, thus 
-   allowing for blocking io to take place via nacl_io
-*/
-#define SDL_MAIN_NEEDED
-
-#endif
-#endif /* SDL_MAIN_HANDLED */
-
-#ifndef SDLMAIN_DECLSPEC
-#define SDLMAIN_DECLSPEC
-#endif
-
-/**
- *  \file SDL_main.h
- *
- *  The application's main() function must be called with C linkage,
- *  and should be declared like this:
- *  \code
- *  #ifdef __cplusplus
- *  extern "C"
- *  #endif
- *  int main(int argc, char *argv[])
- *  {
- *  }
- *  \endcode
- */
-
-#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
-#define main    SDL_main
-#endif
-
-#include "begin_code.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  The prototype for the application's main() function
- */
-typedef int (*SDL_main_func)(int argc, char *argv[]);
-extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]);
-
-
-/**
- *  This is called by the real SDL main function to let the rest of the
- *  library know that initialization was done properly.
- *
- *  Calling this yourself without knowing what you're doing can cause
- *  crashes and hard to diagnose problems with your application.
- */
-extern DECLSPEC void SDLCALL SDL_SetMainReady(void);
-
-#ifdef __WIN32__
-
-/**
- *  This can be called to set the application class at startup
- */
-extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, void *hInst);
-extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
-
-#endif /* __WIN32__ */
-
-
-#ifdef __WINRT__
-
-/**
- *  \brief Initializes and launches an SDL/WinRT application.
- *
- *  \param mainFunction The SDL app's C-style main().
- *  \param reserved Reserved for future use; should be NULL
- *  \return 0 on success, -1 on failure.  On failure, use SDL_GetError to retrieve more
- *      information on the failure.
- */
-extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved);
-
-#endif /* __WINRT__ */
-
-#if defined(__IPHONEOS__)
-
-/**
- *  \brief Initializes and launches an SDL application.
- *
- *  \param argc The argc parameter from the application's main() function
- *  \param argv The argv parameter from the application's main() function
- *  \param mainFunction The SDL app's C-style main().
- *  \return the return value from mainFunction
- */
-extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction);
-
-#endif /* __IPHONEOS__ */
-
-
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_main_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_messagebox.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_messagebox.h
deleted file mode 100644 (file)
index e34b554..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_messagebox_h_
-#define SDL_messagebox_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_video.h"      /* For SDL_Window */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief SDL_MessageBox flags. If supported will display warning icon, etc.
- */
-typedef enum
-{
-    SDL_MESSAGEBOX_ERROR        = 0x00000010,   /**< error dialog */
-    SDL_MESSAGEBOX_WARNING      = 0x00000020,   /**< warning dialog */
-    SDL_MESSAGEBOX_INFORMATION  = 0x00000040    /**< informational dialog */
-} SDL_MessageBoxFlags;
-
-/**
- * \brief Flags for SDL_MessageBoxButtonData.
- */
-typedef enum
-{
-    SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001,  /**< Marks the default button when return is hit */
-    SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002   /**< Marks the default button when escape is hit */
-} SDL_MessageBoxButtonFlags;
-
-/**
- *  \brief Individual button data.
- */
-typedef struct
-{
-    Uint32 flags;       /**< ::SDL_MessageBoxButtonFlags */
-    int buttonid;       /**< User defined button id (value returned via SDL_ShowMessageBox) */
-    const char * text;  /**< The UTF-8 button text */
-} SDL_MessageBoxButtonData;
-
-/**
- * \brief RGB value used in a message box color scheme
- */
-typedef struct
-{
-    Uint8 r, g, b;
-} SDL_MessageBoxColor;
-
-typedef enum
-{
-    SDL_MESSAGEBOX_COLOR_BACKGROUND,
-    SDL_MESSAGEBOX_COLOR_TEXT,
-    SDL_MESSAGEBOX_COLOR_BUTTON_BORDER,
-    SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND,
-    SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED,
-    SDL_MESSAGEBOX_COLOR_MAX
-} SDL_MessageBoxColorType;
-
-/**
- * \brief A set of colors to use for message box dialogs
- */
-typedef struct
-{
-    SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];
-} SDL_MessageBoxColorScheme;
-
-/**
- *  \brief MessageBox structure containing title, text, window, etc.
- */
-typedef struct
-{
-    Uint32 flags;                       /**< ::SDL_MessageBoxFlags */
-    SDL_Window *window;                 /**< Parent window, can be NULL */
-    const char *title;                  /**< UTF-8 title */
-    const char *message;                /**< UTF-8 message text */
-
-    int numbuttons;
-    const SDL_MessageBoxButtonData *buttons;
-
-    const SDL_MessageBoxColorScheme *colorScheme;   /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */
-} SDL_MessageBoxData;
-
-/**
- *  \brief Create a modal message box.
- *
- *  \param messageboxdata The SDL_MessageBoxData structure with title, text, etc.
- *  \param buttonid The pointer to which user id of hit button should be copied.
- *
- *  \return -1 on error, otherwise 0 and buttonid contains user id of button
- *          hit or -1 if dialog was closed.
- *
- *  \note This function should be called on the thread that created the parent
- *        window, or on the main thread if the messagebox has no parent.  It will
- *        block execution of that thread until the user clicks a button or
- *        closes the messagebox.
- */
-extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid);
-
-/**
- *  \brief Create a simple modal message box
- *
- *  \param flags    ::SDL_MessageBoxFlags
- *  \param title    UTF-8 title text
- *  \param message  UTF-8 message text
- *  \param window   The parent window, or NULL for no parent
- *
- *  \return 0 on success, -1 on error
- *
- *  \sa SDL_ShowMessageBox
- */
-extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_messagebox_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_mouse.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_mouse.h
deleted file mode 100644 (file)
index 277559d..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_mouse.h
- *
- *  Include file for SDL mouse event handling.
- */
-
-#ifndef SDL_mouse_h_
-#define SDL_mouse_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct SDL_Cursor SDL_Cursor;   /**< Implementation dependent */
-
-/**
- * \brief Cursor types for SDL_CreateSystemCursor().
- */
-typedef enum
-{
-    SDL_SYSTEM_CURSOR_ARROW,     /**< Arrow */
-    SDL_SYSTEM_CURSOR_IBEAM,     /**< I-beam */
-    SDL_SYSTEM_CURSOR_WAIT,      /**< Wait */
-    SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */
-    SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */
-    SDL_SYSTEM_CURSOR_SIZENWSE,  /**< Double arrow pointing northwest and southeast */
-    SDL_SYSTEM_CURSOR_SIZENESW,  /**< Double arrow pointing northeast and southwest */
-    SDL_SYSTEM_CURSOR_SIZEWE,    /**< Double arrow pointing west and east */
-    SDL_SYSTEM_CURSOR_SIZENS,    /**< Double arrow pointing north and south */
-    SDL_SYSTEM_CURSOR_SIZEALL,   /**< Four pointed arrow pointing north, south, east, and west */
-    SDL_SYSTEM_CURSOR_NO,        /**< Slashed circle or crossbones */
-    SDL_SYSTEM_CURSOR_HAND,      /**< Hand */
-    SDL_NUM_SYSTEM_CURSORS
-} SDL_SystemCursor;
-
-/**
- * \brief Scroll direction types for the Scroll event
- */
-typedef enum
-{
-    SDL_MOUSEWHEEL_NORMAL,    /**< The scroll direction is normal */
-    SDL_MOUSEWHEEL_FLIPPED    /**< The scroll direction is flipped / natural */
-} SDL_MouseWheelDirection;
-
-/* Function prototypes */
-
-/**
- *  \brief Get the window which currently has mouse focus.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void);
-
-/**
- *  \brief Retrieve the current state of the mouse.
- *
- *  The current button state is returned as a button bitmask, which can
- *  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
- *  mouse cursor position relative to the focus window for the currently
- *  selected mouse.  You can pass NULL for either x or y.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y);
-
-/**
- *  \brief Get the current state of the mouse, in relation to the desktop
- *
- *  This works just like SDL_GetMouseState(), but the coordinates will be
- *  reported relative to the top-left of the desktop. This can be useful if
- *  you need to track the mouse outside of a specific window and
- *  SDL_CaptureMouse() doesn't fit your needs. For example, it could be
- *  useful if you need to track the mouse while dragging a window, where
- *  coordinates relative to a window might not be in sync at all times.
- *
- *  \note SDL_GetMouseState() returns the mouse position as SDL understands
- *        it from the last pump of the event queue. This function, however,
- *        queries the OS for the current mouse position, and as such, might
- *        be a slightly less efficient function. Unless you know what you're
- *        doing and have a good reason to use this function, you probably want
- *        SDL_GetMouseState() instead.
- *
- *  \param x Returns the current X coord, relative to the desktop. Can be NULL.
- *  \param y Returns the current Y coord, relative to the desktop. Can be NULL.
- *  \return The current button state as a bitmask, which can be tested using the SDL_BUTTON(X) macros.
- *
- *  \sa SDL_GetMouseState
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y);
-
-/**
- *  \brief Retrieve the relative state of the mouse.
- *
- *  The current button state is returned as a button bitmask, which can
- *  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
- *  mouse deltas since the last call to SDL_GetRelativeMouseState().
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
-
-/**
- *  \brief Moves the mouse to the given position within the window.
- *
- *  \param window The window to move the mouse into, or NULL for the current mouse focus
- *  \param x The x coordinate within the window
- *  \param y The y coordinate within the window
- *
- *  \note This function generates a mouse motion event
- */
-extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
-                                                   int x, int y);
-
-/**
- *  \brief Moves the mouse to the given position in global screen space.
- *
- *  \param x The x coordinate
- *  \param y The y coordinate
- *  \return 0 on success, -1 on error (usually: unsupported by a platform).
- *
- *  \note This function generates a mouse motion event
- */
-extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y);
-
-/**
- *  \brief Set relative mouse mode.
- *
- *  \param enabled Whether or not to enable relative mode
- *
- *  \return 0 on success, or -1 if relative mode is not supported.
- *
- *  While the mouse is in relative mode, the cursor is hidden, and the
- *  driver will try to report continuous motion in the current window.
- *  Only relative motion events will be delivered, the mouse position
- *  will not change.
- *
- *  \note This function will flush any pending mouse motion.
- *
- *  \sa SDL_GetRelativeMouseMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled);
-
-/**
- *  \brief Capture the mouse, to track input outside an SDL window.
- *
- *  \param enabled Whether or not to enable capturing
- *
- *  Capturing enables your app to obtain mouse events globally, instead of
- *  just within your window. Not all video targets support this function.
- *  When capturing is enabled, the current window will get all mouse events,
- *  but unlike relative mode, no change is made to the cursor and it is
- *  not restrained to your window.
- *
- *  This function may also deny mouse input to other windows--both those in
- *  your application and others on the system--so you should use this
- *  function sparingly, and in small bursts. For example, you might want to
- *  track the mouse while the user is dragging something, until the user
- *  releases a mouse button. It is not recommended that you capture the mouse
- *  for long periods of time, such as the entire time your app is running.
- *
- *  While captured, mouse events still report coordinates relative to the
- *  current (foreground) window, but those coordinates may be outside the
- *  bounds of the window (including negative values). Capturing is only
- *  allowed for the foreground window. If the window loses focus while
- *  capturing, the capture will be disabled automatically.
- *
- *  While capturing is enabled, the current window will have the
- *  SDL_WINDOW_MOUSE_CAPTURE flag set.
- *
- *  \return 0 on success, or -1 if not supported.
- */
-extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled);
-
-/**
- *  \brief Query whether relative mouse mode is enabled.
- *
- *  \sa SDL_SetRelativeMouseMode()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
-
-/**
- *  \brief Create a cursor, using the specified bitmap data and
- *         mask (in MSB format).
- *
- *  The cursor width must be a multiple of 8 bits.
- *
- *  The cursor is created in black and white according to the following:
- *  <table>
- *  <tr><td> data </td><td> mask </td><td> resulting pixel on screen </td></tr>
- *  <tr><td>  0   </td><td>  1   </td><td> White </td></tr>
- *  <tr><td>  1   </td><td>  1   </td><td> Black </td></tr>
- *  <tr><td>  0   </td><td>  0   </td><td> Transparent </td></tr>
- *  <tr><td>  1   </td><td>  0   </td><td> Inverted color if possible, black
- *                                         if not. </td></tr>
- *  </table>
- *
- *  \sa SDL_FreeCursor()
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,
-                                                     const Uint8 * mask,
-                                                     int w, int h, int hot_x,
-                                                     int hot_y);
-
-/**
- *  \brief Create a color cursor.
- *
- *  \sa SDL_FreeCursor()
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface,
-                                                          int hot_x,
-                                                          int hot_y);
-
-/**
- *  \brief Create a system cursor.
- *
- *  \sa SDL_FreeCursor()
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id);
-
-/**
- *  \brief Set the active cursor.
- */
-extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor);
-
-/**
- *  \brief Return the active cursor.
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void);
-
-/**
- *  \brief Return the default cursor.
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void);
-
-/**
- *  \brief Frees a cursor created with SDL_CreateCursor() or similar functions.
- *
- *  \sa SDL_CreateCursor()
- *  \sa SDL_CreateColorCursor()
- *  \sa SDL_CreateSystemCursor()
- */
-extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);
-
-/**
- *  \brief Toggle whether or not the cursor is shown.
- *
- *  \param toggle 1 to show the cursor, 0 to hide it, -1 to query the current
- *                state.
- *
- *  \return 1 if the cursor is shown, or 0 if the cursor is hidden.
- */
-extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
-
-/**
- *  Used as a mask when testing buttons in buttonstate.
- *   - Button 1:  Left mouse button
- *   - Button 2:  Middle mouse button
- *   - Button 3:  Right mouse button
- */
-#define SDL_BUTTON(X)       (1 << ((X)-1))
-#define SDL_BUTTON_LEFT     1
-#define SDL_BUTTON_MIDDLE   2
-#define SDL_BUTTON_RIGHT    3
-#define SDL_BUTTON_X1       4
-#define SDL_BUTTON_X2       5
-#define SDL_BUTTON_LMASK    SDL_BUTTON(SDL_BUTTON_LEFT)
-#define SDL_BUTTON_MMASK    SDL_BUTTON(SDL_BUTTON_MIDDLE)
-#define SDL_BUTTON_RMASK    SDL_BUTTON(SDL_BUTTON_RIGHT)
-#define SDL_BUTTON_X1MASK   SDL_BUTTON(SDL_BUTTON_X1)
-#define SDL_BUTTON_X2MASK   SDL_BUTTON(SDL_BUTTON_X2)
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_mouse_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_mutex.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_mutex.h
deleted file mode 100644 (file)
index 970e787..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_mutex_h_
-#define SDL_mutex_h_
-
-/**
- *  \file SDL_mutex.h
- *
- *  Functions to provide thread synchronization primitives.
- */
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  Synchronization functions which can time out return this value
- *  if they time out.
- */
-#define SDL_MUTEX_TIMEDOUT  1
-
-/**
- *  This is the timeout value which corresponds to never time out.
- */
-#define SDL_MUTEX_MAXWAIT   (~(Uint32)0)
-
-
-/**
- *  \name Mutex functions
- */
-/* @{ */
-
-/* The SDL mutex structure, defined in SDL_sysmutex.c */
-struct SDL_mutex;
-typedef struct SDL_mutex SDL_mutex;
-
-/**
- *  Create a mutex, initialized unlocked.
- */
-extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);
-
-/**
- *  Lock the mutex.
- *
- *  \return 0, or -1 on error.
- */
-#define SDL_mutexP(m)   SDL_LockMutex(m)
-extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex);
-
-/**
- *  Try to lock the mutex
- *
- *  \return 0, SDL_MUTEX_TIMEDOUT, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex);
-
-/**
- *  Unlock the mutex.
- *
- *  \return 0, or -1 on error.
- *
- *  \warning It is an error to unlock a mutex that has not been locked by
- *           the current thread, and doing so results in undefined behavior.
- */
-#define SDL_mutexV(m)   SDL_UnlockMutex(m)
-extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex);
-
-/**
- *  Destroy a mutex.
- */
-extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex);
-
-/* @} *//* Mutex functions */
-
-
-/**
- *  \name Semaphore functions
- */
-/* @{ */
-
-/* The SDL semaphore structure, defined in SDL_syssem.c */
-struct SDL_semaphore;
-typedef struct SDL_semaphore SDL_sem;
-
-/**
- *  Create a semaphore, initialized with value, returns NULL on failure.
- */
-extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value);
-
-/**
- *  Destroy a semaphore.
- */
-extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem);
-
-/**
- *  This function suspends the calling thread until the semaphore pointed
- *  to by \c sem has a positive count. It then atomically decreases the
- *  semaphore count.
- */
-extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);
-
-/**
- *  Non-blocking variant of SDL_SemWait().
- *
- *  \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait would
- *          block, and -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);
-
-/**
- *  Variant of SDL_SemWait() with a timeout in milliseconds.
- *
- *  \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait does not
- *          succeed in the allotted time, and -1 on error.
- *
- *  \warning On some platforms this function is implemented by looping with a
- *           delay of 1 ms, and so should be avoided if possible.
- */
-extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem * sem, Uint32 ms);
-
-/**
- *  Atomically increases the semaphore's count (not blocking).
- *
- *  \return 0, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem);
-
-/**
- *  Returns the current count of the semaphore.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem);
-
-/* @} *//* Semaphore functions */
-
-
-/**
- *  \name Condition variable functions
- */
-/* @{ */
-
-/* The SDL condition variable structure, defined in SDL_syscond.c */
-struct SDL_cond;
-typedef struct SDL_cond SDL_cond;
-
-/**
- *  Create a condition variable.
- *
- *  Typical use of condition variables:
- *
- *  Thread A:
- *    SDL_LockMutex(lock);
- *    while ( ! condition ) {
- *        SDL_CondWait(cond, lock);
- *    }
- *    SDL_UnlockMutex(lock);
- *
- *  Thread B:
- *    SDL_LockMutex(lock);
- *    ...
- *    condition = true;
- *    ...
- *    SDL_CondSignal(cond);
- *    SDL_UnlockMutex(lock);
- *
- *  There is some discussion whether to signal the condition variable
- *  with the mutex locked or not.  There is some potential performance
- *  benefit to unlocking first on some platforms, but there are some
- *  potential race conditions depending on how your code is structured.
- *
- *  In general it's safer to signal the condition variable while the
- *  mutex is locked.
- */
-extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void);
-
-/**
- *  Destroy a condition variable.
- */
-extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond);
-
-/**
- *  Restart one of the threads that are waiting on the condition variable.
- *
- *  \return 0 or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond);
-
-/**
- *  Restart all threads that are waiting on the condition variable.
- *
- *  \return 0 or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);
-
-/**
- *  Wait on the condition variable, unlocking the provided mutex.
- *
- *  \warning The mutex must be locked before entering this function!
- *
- *  The mutex is re-locked once the condition variable is signaled.
- *
- *  \return 0 when it is signaled, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
-
-/**
- *  Waits for at most \c ms milliseconds, and returns 0 if the condition
- *  variable is signaled, ::SDL_MUTEX_TIMEDOUT if the condition is not
- *  signaled in the allotted time, and -1 on error.
- *
- *  \warning On some platforms this function is implemented by looping with a
- *           delay of 1 ms, and so should be avoided if possible.
- */
-extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond,
-                                                SDL_mutex * mutex, Uint32 ms);
-
-/* @} *//* Condition variable functions */
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_mutex_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_name.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_name.h
deleted file mode 100644 (file)
index 690a819..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDLname_h_
-#define SDLname_h_
-
-#if defined(__STDC__) || defined(__cplusplus)
-#define NeedFunctionPrototypes 1
-#endif
-
-#define SDL_NAME(X) SDL_##X
-
-#endif /* SDLname_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_opengl.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_opengl.h
deleted file mode 100644 (file)
index 6685be7..0000000
+++ /dev/null
@@ -1,2183 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_opengl.h
- *
- *  This is a simple file to encapsulate the OpenGL API headers.
- */
-
-/**
- *  \def NO_SDL_GLEXT
- *
- *  Define this if you have your own version of glext.h and want to disable the
- *  version included in SDL_opengl.h.
- */
-
-#ifndef SDL_opengl_h_
-#define SDL_opengl_h_
-
-#include "SDL_config.h"
-
-#ifndef __IPHONEOS__  /* No OpenGL on iOS. */
-
-/*
- * Mesa 3-D graphics library
- *
- * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
- * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#ifndef __gl_h_
-#define __gl_h_
-
-#if defined(USE_MGL_NAMESPACE)
-#include "gl_mangle.h"
-#endif
-
-
-/**********************************************************************
- * Begin system-specific stuff.
- */
-
-#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__)
-#define __WIN32__
-#endif
-
-#if defined(__WIN32__) && !defined(__CYGWIN__)
-#  if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
-#    define GLAPI __declspec(dllexport)
-#  elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
-#    define GLAPI __declspec(dllimport)
-#  else /* for use with static link lib build of Win32 edition only */
-#    define GLAPI extern
-#  endif /* _STATIC_MESA support */
-#  if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE)  /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */
-#    define GLAPIENTRY 
-#  else
-#    define GLAPIENTRY __stdcall
-#  endif
-#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
-#  define GLAPI extern
-#  define GLAPIENTRY __stdcall
-#elif defined(__OS2__) || defined(__EMX__) /* native os/2 opengl */
-#  define GLAPI extern
-#  define GLAPIENTRY _System
-#  define APIENTRY _System
-#  if defined(__GNUC__) && !defined(_System)
-#    define _System
-#  endif
-#elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-#  define GLAPI __attribute__((visibility("default")))
-#  define GLAPIENTRY
-#endif /* WIN32 && !CYGWIN */
-
-/*
- * WINDOWS: Include windows.h here to define APIENTRY.
- * It is also useful when applications include this file by
- * including only glut.h, since glut.h depends on windows.h.
- * Applications needing to include windows.h with parms other
- * than "WIN32_LEAN_AND_MEAN" may include windows.h before
- * glut.h or gl.h.
- */
-#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#ifndef NOMINMAX   /* don't define min() and max(). */
-#define NOMINMAX
-#endif
-#include <windows.h>
-#endif
-
-#ifndef GLAPI
-#define GLAPI extern
-#endif
-
-#ifndef GLAPIENTRY
-#define GLAPIENTRY
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY GLAPIENTRY
-#endif
-
-/* "P" suffix to be used for a pointer to a function */
-#ifndef APIENTRYP
-#define APIENTRYP APIENTRY *
-#endif
-
-#ifndef GLAPIENTRYP
-#define GLAPIENTRYP GLAPIENTRY *
-#endif
-
-#if defined(PRAGMA_EXPORT_SUPPORTED)
-#pragma export on
-#endif
-
-/*
- * End system-specific stuff.
- **********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define GL_VERSION_1_1   1
-#define GL_VERSION_1_2   1
-#define GL_VERSION_1_3   1
-#define GL_ARB_imaging   1
-
-
-/*
- * Datatypes
- */
-typedef unsigned int   GLenum;
-typedef unsigned char  GLboolean;
-typedef unsigned int   GLbitfield;
-typedef void           GLvoid;
-typedef signed char    GLbyte;         /* 1-byte signed */
-typedef short          GLshort;        /* 2-byte signed */
-typedef int            GLint;          /* 4-byte signed */
-typedef unsigned char  GLubyte;        /* 1-byte unsigned */
-typedef unsigned short GLushort;       /* 2-byte unsigned */
-typedef unsigned int   GLuint;         /* 4-byte unsigned */
-typedef int            GLsizei;        /* 4-byte signed */
-typedef float          GLfloat;        /* single precision float */
-typedef float          GLclampf;       /* single precision float in [0,1] */
-typedef double         GLdouble;       /* double precision float */
-typedef double         GLclampd;       /* double precision float in [0,1] */
-
-
-
-/*
- * Constants
- */
-
-/* Boolean values */
-#define GL_FALSE                               0
-#define GL_TRUE                                        1
-
-/* Data types */
-#define GL_BYTE                                        0x1400
-#define GL_UNSIGNED_BYTE                       0x1401
-#define GL_SHORT                               0x1402
-#define GL_UNSIGNED_SHORT                      0x1403
-#define GL_INT                                 0x1404
-#define GL_UNSIGNED_INT                                0x1405
-#define GL_FLOAT                               0x1406
-#define GL_2_BYTES                             0x1407
-#define GL_3_BYTES                             0x1408
-#define GL_4_BYTES                             0x1409
-#define GL_DOUBLE                              0x140A
-
-/* Primitives */
-#define GL_POINTS                              0x0000
-#define GL_LINES                               0x0001
-#define GL_LINE_LOOP                           0x0002
-#define GL_LINE_STRIP                          0x0003
-#define GL_TRIANGLES                           0x0004
-#define GL_TRIANGLE_STRIP                      0x0005
-#define GL_TRIANGLE_FAN                                0x0006
-#define GL_QUADS                               0x0007
-#define GL_QUAD_STRIP                          0x0008
-#define GL_POLYGON                             0x0009
-
-/* Vertex Arrays */
-#define GL_VERTEX_ARRAY                                0x8074
-#define GL_NORMAL_ARRAY                                0x8075
-#define GL_COLOR_ARRAY                         0x8076
-#define GL_INDEX_ARRAY                         0x8077
-#define GL_TEXTURE_COORD_ARRAY                 0x8078
-#define GL_EDGE_FLAG_ARRAY                     0x8079
-#define GL_VERTEX_ARRAY_SIZE                   0x807A
-#define GL_VERTEX_ARRAY_TYPE                   0x807B
-#define GL_VERTEX_ARRAY_STRIDE                 0x807C
-#define GL_NORMAL_ARRAY_TYPE                   0x807E
-#define GL_NORMAL_ARRAY_STRIDE                 0x807F
-#define GL_COLOR_ARRAY_SIZE                    0x8081
-#define GL_COLOR_ARRAY_TYPE                    0x8082
-#define GL_COLOR_ARRAY_STRIDE                  0x8083
-#define GL_INDEX_ARRAY_TYPE                    0x8085
-#define GL_INDEX_ARRAY_STRIDE                  0x8086
-#define GL_TEXTURE_COORD_ARRAY_SIZE            0x8088
-#define GL_TEXTURE_COORD_ARRAY_TYPE            0x8089
-#define GL_TEXTURE_COORD_ARRAY_STRIDE          0x808A
-#define GL_EDGE_FLAG_ARRAY_STRIDE              0x808C
-#define GL_VERTEX_ARRAY_POINTER                        0x808E
-#define GL_NORMAL_ARRAY_POINTER                        0x808F
-#define GL_COLOR_ARRAY_POINTER                 0x8090
-#define GL_INDEX_ARRAY_POINTER                 0x8091
-#define GL_TEXTURE_COORD_ARRAY_POINTER         0x8092
-#define GL_EDGE_FLAG_ARRAY_POINTER             0x8093
-#define GL_V2F                                 0x2A20
-#define GL_V3F                                 0x2A21
-#define GL_C4UB_V2F                            0x2A22
-#define GL_C4UB_V3F                            0x2A23
-#define GL_C3F_V3F                             0x2A24
-#define GL_N3F_V3F                             0x2A25
-#define GL_C4F_N3F_V3F                         0x2A26
-#define GL_T2F_V3F                             0x2A27
-#define GL_T4F_V4F                             0x2A28
-#define GL_T2F_C4UB_V3F                                0x2A29
-#define GL_T2F_C3F_V3F                         0x2A2A
-#define GL_T2F_N3F_V3F                         0x2A2B
-#define GL_T2F_C4F_N3F_V3F                     0x2A2C
-#define GL_T4F_C4F_N3F_V4F                     0x2A2D
-
-/* Matrix Mode */
-#define GL_MATRIX_MODE                         0x0BA0
-#define GL_MODELVIEW                           0x1700
-#define GL_PROJECTION                          0x1701
-#define GL_TEXTURE                             0x1702
-
-/* Points */
-#define GL_POINT_SMOOTH                                0x0B10
-#define GL_POINT_SIZE                          0x0B11
-#define GL_POINT_SIZE_GRANULARITY              0x0B13
-#define GL_POINT_SIZE_RANGE                    0x0B12
-
-/* Lines */
-#define GL_LINE_SMOOTH                         0x0B20
-#define GL_LINE_STIPPLE                                0x0B24
-#define GL_LINE_STIPPLE_PATTERN                        0x0B25
-#define GL_LINE_STIPPLE_REPEAT                 0x0B26
-#define GL_LINE_WIDTH                          0x0B21
-#define GL_LINE_WIDTH_GRANULARITY              0x0B23
-#define GL_LINE_WIDTH_RANGE                    0x0B22
-
-/* Polygons */
-#define GL_POINT                               0x1B00
-#define GL_LINE                                        0x1B01
-#define GL_FILL                                        0x1B02
-#define GL_CW                                  0x0900
-#define GL_CCW                                 0x0901
-#define GL_FRONT                               0x0404
-#define GL_BACK                                        0x0405
-#define GL_POLYGON_MODE                                0x0B40
-#define GL_POLYGON_SMOOTH                      0x0B41
-#define GL_POLYGON_STIPPLE                     0x0B42
-#define GL_EDGE_FLAG                           0x0B43
-#define GL_CULL_FACE                           0x0B44
-#define GL_CULL_FACE_MODE                      0x0B45
-#define GL_FRONT_FACE                          0x0B46
-#define GL_POLYGON_OFFSET_FACTOR               0x8038
-#define GL_POLYGON_OFFSET_UNITS                        0x2A00
-#define GL_POLYGON_OFFSET_POINT                        0x2A01
-#define GL_POLYGON_OFFSET_LINE                 0x2A02
-#define GL_POLYGON_OFFSET_FILL                 0x8037
-
-/* Display Lists */
-#define GL_COMPILE                             0x1300
-#define GL_COMPILE_AND_EXECUTE                 0x1301
-#define GL_LIST_BASE                           0x0B32
-#define GL_LIST_INDEX                          0x0B33
-#define GL_LIST_MODE                           0x0B30
-
-/* Depth buffer */
-#define GL_NEVER                               0x0200
-#define GL_LESS                                        0x0201
-#define GL_EQUAL                               0x0202
-#define GL_LEQUAL                              0x0203
-#define GL_GREATER                             0x0204
-#define GL_NOTEQUAL                            0x0205
-#define GL_GEQUAL                              0x0206
-#define GL_ALWAYS                              0x0207
-#define GL_DEPTH_TEST                          0x0B71
-#define GL_DEPTH_BITS                          0x0D56
-#define GL_DEPTH_CLEAR_VALUE                   0x0B73
-#define GL_DEPTH_FUNC                          0x0B74
-#define GL_DEPTH_RANGE                         0x0B70
-#define GL_DEPTH_WRITEMASK                     0x0B72
-#define GL_DEPTH_COMPONENT                     0x1902
-
-/* Lighting */
-#define GL_LIGHTING                            0x0B50
-#define GL_LIGHT0                              0x4000
-#define GL_LIGHT1                              0x4001
-#define GL_LIGHT2                              0x4002
-#define GL_LIGHT3                              0x4003
-#define GL_LIGHT4                              0x4004
-#define GL_LIGHT5                              0x4005
-#define GL_LIGHT6                              0x4006
-#define GL_LIGHT7                              0x4007
-#define GL_SPOT_EXPONENT                       0x1205
-#define GL_SPOT_CUTOFF                         0x1206
-#define GL_CONSTANT_ATTENUATION                        0x1207
-#define GL_LINEAR_ATTENUATION                  0x1208
-#define GL_QUADRATIC_ATTENUATION               0x1209
-#define GL_AMBIENT                             0x1200
-#define GL_DIFFUSE                             0x1201
-#define GL_SPECULAR                            0x1202
-#define GL_SHININESS                           0x1601
-#define GL_EMISSION                            0x1600
-#define GL_POSITION                            0x1203
-#define GL_SPOT_DIRECTION                      0x1204
-#define GL_AMBIENT_AND_DIFFUSE                 0x1602
-#define GL_COLOR_INDEXES                       0x1603
-#define GL_LIGHT_MODEL_TWO_SIDE                        0x0B52
-#define GL_LIGHT_MODEL_LOCAL_VIEWER            0x0B51
-#define GL_LIGHT_MODEL_AMBIENT                 0x0B53
-#define GL_FRONT_AND_BACK                      0x0408
-#define GL_SHADE_MODEL                         0x0B54
-#define GL_FLAT                                        0x1D00
-#define GL_SMOOTH                              0x1D01
-#define GL_COLOR_MATERIAL                      0x0B57
-#define GL_COLOR_MATERIAL_FACE                 0x0B55
-#define GL_COLOR_MATERIAL_PARAMETER            0x0B56
-#define GL_NORMALIZE                           0x0BA1
-
-/* User clipping planes */
-#define GL_CLIP_PLANE0                         0x3000
-#define GL_CLIP_PLANE1                         0x3001
-#define GL_CLIP_PLANE2                         0x3002
-#define GL_CLIP_PLANE3                         0x3003
-#define GL_CLIP_PLANE4                         0x3004
-#define GL_CLIP_PLANE5                         0x3005
-
-/* Accumulation buffer */
-#define GL_ACCUM_RED_BITS                      0x0D58
-#define GL_ACCUM_GREEN_BITS                    0x0D59
-#define GL_ACCUM_BLUE_BITS                     0x0D5A
-#define GL_ACCUM_ALPHA_BITS                    0x0D5B
-#define GL_ACCUM_CLEAR_VALUE                   0x0B80
-#define GL_ACCUM                               0x0100
-#define GL_ADD                                 0x0104
-#define GL_LOAD                                        0x0101
-#define GL_MULT                                        0x0103
-#define GL_RETURN                              0x0102
-
-/* Alpha testing */
-#define GL_ALPHA_TEST                          0x0BC0
-#define GL_ALPHA_TEST_REF                      0x0BC2
-#define GL_ALPHA_TEST_FUNC                     0x0BC1
-
-/* Blending */
-#define GL_BLEND                               0x0BE2
-#define GL_BLEND_SRC                           0x0BE1
-#define GL_BLEND_DST                           0x0BE0
-#define GL_ZERO                                        0
-#define GL_ONE                                 1
-#define GL_SRC_COLOR                           0x0300
-#define GL_ONE_MINUS_SRC_COLOR                 0x0301
-#define GL_SRC_ALPHA                           0x0302
-#define GL_ONE_MINUS_SRC_ALPHA                 0x0303
-#define GL_DST_ALPHA                           0x0304
-#define GL_ONE_MINUS_DST_ALPHA                 0x0305
-#define GL_DST_COLOR                           0x0306
-#define GL_ONE_MINUS_DST_COLOR                 0x0307
-#define GL_SRC_ALPHA_SATURATE                  0x0308
-
-/* Render Mode */
-#define GL_FEEDBACK                            0x1C01
-#define GL_RENDER                              0x1C00
-#define GL_SELECT                              0x1C02
-
-/* Feedback */
-#define GL_2D                                  0x0600
-#define GL_3D                                  0x0601
-#define GL_3D_COLOR                            0x0602
-#define GL_3D_COLOR_TEXTURE                    0x0603
-#define GL_4D_COLOR_TEXTURE                    0x0604
-#define GL_POINT_TOKEN                         0x0701
-#define GL_LINE_TOKEN                          0x0702
-#define GL_LINE_RESET_TOKEN                    0x0707
-#define GL_POLYGON_TOKEN                       0x0703
-#define GL_BITMAP_TOKEN                                0x0704
-#define GL_DRAW_PIXEL_TOKEN                    0x0705
-#define GL_COPY_PIXEL_TOKEN                    0x0706
-#define GL_PASS_THROUGH_TOKEN                  0x0700
-#define GL_FEEDBACK_BUFFER_POINTER             0x0DF0
-#define GL_FEEDBACK_BUFFER_SIZE                        0x0DF1
-#define GL_FEEDBACK_BUFFER_TYPE                        0x0DF2
-
-/* Selection */
-#define GL_SELECTION_BUFFER_POINTER            0x0DF3
-#define GL_SELECTION_BUFFER_SIZE               0x0DF4
-
-/* Fog */
-#define GL_FOG                                 0x0B60
-#define GL_FOG_MODE                            0x0B65
-#define GL_FOG_DENSITY                         0x0B62
-#define GL_FOG_COLOR                           0x0B66
-#define GL_FOG_INDEX                           0x0B61
-#define GL_FOG_START                           0x0B63
-#define GL_FOG_END                             0x0B64
-#define GL_LINEAR                              0x2601
-#define GL_EXP                                 0x0800
-#define GL_EXP2                                        0x0801
-
-/* Logic Ops */
-#define GL_LOGIC_OP                            0x0BF1
-#define GL_INDEX_LOGIC_OP                      0x0BF1
-#define GL_COLOR_LOGIC_OP                      0x0BF2
-#define GL_LOGIC_OP_MODE                       0x0BF0
-#define GL_CLEAR                               0x1500
-#define GL_SET                                 0x150F
-#define GL_COPY                                        0x1503
-#define GL_COPY_INVERTED                       0x150C
-#define GL_NOOP                                        0x1505
-#define GL_INVERT                              0x150A
-#define GL_AND                                 0x1501
-#define GL_NAND                                        0x150E
-#define GL_OR                                  0x1507
-#define GL_NOR                                 0x1508
-#define GL_XOR                                 0x1506
-#define GL_EQUIV                               0x1509
-#define GL_AND_REVERSE                         0x1502
-#define GL_AND_INVERTED                                0x1504
-#define GL_OR_REVERSE                          0x150B
-#define GL_OR_INVERTED                         0x150D
-
-/* Stencil */
-#define GL_STENCIL_BITS                                0x0D57
-#define GL_STENCIL_TEST                                0x0B90
-#define GL_STENCIL_CLEAR_VALUE                 0x0B91
-#define GL_STENCIL_FUNC                                0x0B92
-#define GL_STENCIL_VALUE_MASK                  0x0B93
-#define GL_STENCIL_FAIL                                0x0B94
-#define GL_STENCIL_PASS_DEPTH_FAIL             0x0B95
-#define GL_STENCIL_PASS_DEPTH_PASS             0x0B96
-#define GL_STENCIL_REF                         0x0B97
-#define GL_STENCIL_WRITEMASK                   0x0B98
-#define GL_STENCIL_INDEX                       0x1901
-#define GL_KEEP                                        0x1E00
-#define GL_REPLACE                             0x1E01
-#define GL_INCR                                        0x1E02
-#define GL_DECR                                        0x1E03
-
-/* Buffers, Pixel Drawing/Reading */
-#define GL_NONE                                        0
-#define GL_LEFT                                        0x0406
-#define GL_RIGHT                               0x0407
-/*GL_FRONT                                     0x0404 */
-/*GL_BACK                                      0x0405 */
-/*GL_FRONT_AND_BACK                            0x0408 */
-#define GL_FRONT_LEFT                          0x0400
-#define GL_FRONT_RIGHT                         0x0401
-#define GL_BACK_LEFT                           0x0402
-#define GL_BACK_RIGHT                          0x0403
-#define GL_AUX0                                        0x0409
-#define GL_AUX1                                        0x040A
-#define GL_AUX2                                        0x040B
-#define GL_AUX3                                        0x040C
-#define GL_COLOR_INDEX                         0x1900
-#define GL_RED                                 0x1903
-#define GL_GREEN                               0x1904
-#define GL_BLUE                                        0x1905
-#define GL_ALPHA                               0x1906
-#define GL_LUMINANCE                           0x1909
-#define GL_LUMINANCE_ALPHA                     0x190A
-#define GL_ALPHA_BITS                          0x0D55
-#define GL_RED_BITS                            0x0D52
-#define GL_GREEN_BITS                          0x0D53
-#define GL_BLUE_BITS                           0x0D54
-#define GL_INDEX_BITS                          0x0D51
-#define GL_SUBPIXEL_BITS                       0x0D50
-#define GL_AUX_BUFFERS                         0x0C00
-#define GL_READ_BUFFER                         0x0C02
-#define GL_DRAW_BUFFER                         0x0C01
-#define GL_DOUBLEBUFFER                                0x0C32
-#define GL_STEREO                              0x0C33
-#define GL_BITMAP                              0x1A00
-#define GL_COLOR                               0x1800
-#define GL_DEPTH                               0x1801
-#define GL_STENCIL                             0x1802
-#define GL_DITHER                              0x0BD0
-#define GL_RGB                                 0x1907
-#define GL_RGBA                                        0x1908
-
-/* Implementation limits */
-#define GL_MAX_LIST_NESTING                    0x0B31
-#define GL_MAX_EVAL_ORDER                      0x0D30
-#define GL_MAX_LIGHTS                          0x0D31
-#define GL_MAX_CLIP_PLANES                     0x0D32
-#define GL_MAX_TEXTURE_SIZE                    0x0D33
-#define GL_MAX_PIXEL_MAP_TABLE                 0x0D34
-#define GL_MAX_ATTRIB_STACK_DEPTH              0x0D35
-#define GL_MAX_MODELVIEW_STACK_DEPTH           0x0D36
-#define GL_MAX_NAME_STACK_DEPTH                        0x0D37
-#define GL_MAX_PROJECTION_STACK_DEPTH          0x0D38
-#define GL_MAX_TEXTURE_STACK_DEPTH             0x0D39
-#define GL_MAX_VIEWPORT_DIMS                   0x0D3A
-#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH       0x0D3B
-
-/* Gets */
-#define GL_ATTRIB_STACK_DEPTH                  0x0BB0
-#define GL_CLIENT_ATTRIB_STACK_DEPTH           0x0BB1
-#define GL_COLOR_CLEAR_VALUE                   0x0C22
-#define GL_COLOR_WRITEMASK                     0x0C23
-#define GL_CURRENT_INDEX                       0x0B01
-#define GL_CURRENT_COLOR                       0x0B00
-#define GL_CURRENT_NORMAL                      0x0B02
-#define GL_CURRENT_RASTER_COLOR                        0x0B04
-#define GL_CURRENT_RASTER_DISTANCE             0x0B09
-#define GL_CURRENT_RASTER_INDEX                        0x0B05
-#define GL_CURRENT_RASTER_POSITION             0x0B07
-#define GL_CURRENT_RASTER_TEXTURE_COORDS       0x0B06
-#define GL_CURRENT_RASTER_POSITION_VALID       0x0B08
-#define GL_CURRENT_TEXTURE_COORDS              0x0B03
-#define GL_INDEX_CLEAR_VALUE                   0x0C20
-#define GL_INDEX_MODE                          0x0C30
-#define GL_INDEX_WRITEMASK                     0x0C21
-#define GL_MODELVIEW_MATRIX                    0x0BA6
-#define GL_MODELVIEW_STACK_DEPTH               0x0BA3
-#define GL_NAME_STACK_DEPTH                    0x0D70
-#define GL_PROJECTION_MATRIX                   0x0BA7
-#define GL_PROJECTION_STACK_DEPTH              0x0BA4
-#define GL_RENDER_MODE                         0x0C40
-#define GL_RGBA_MODE                           0x0C31
-#define GL_TEXTURE_MATRIX                      0x0BA8
-#define GL_TEXTURE_STACK_DEPTH                 0x0BA5
-#define GL_VIEWPORT                            0x0BA2
-
-/* Evaluators */
-#define GL_AUTO_NORMAL                         0x0D80
-#define GL_MAP1_COLOR_4                                0x0D90
-#define GL_MAP1_INDEX                          0x0D91
-#define GL_MAP1_NORMAL                         0x0D92
-#define GL_MAP1_TEXTURE_COORD_1                        0x0D93
-#define GL_MAP1_TEXTURE_COORD_2                        0x0D94
-#define GL_MAP1_TEXTURE_COORD_3                        0x0D95
-#define GL_MAP1_TEXTURE_COORD_4                        0x0D96
-#define GL_MAP1_VERTEX_3                       0x0D97
-#define GL_MAP1_VERTEX_4                       0x0D98
-#define GL_MAP2_COLOR_4                                0x0DB0
-#define GL_MAP2_INDEX                          0x0DB1
-#define GL_MAP2_NORMAL                         0x0DB2
-#define GL_MAP2_TEXTURE_COORD_1                        0x0DB3
-#define GL_MAP2_TEXTURE_COORD_2                        0x0DB4
-#define GL_MAP2_TEXTURE_COORD_3                        0x0DB5
-#define GL_MAP2_TEXTURE_COORD_4                        0x0DB6
-#define GL_MAP2_VERTEX_3                       0x0DB7
-#define GL_MAP2_VERTEX_4                       0x0DB8
-#define GL_MAP1_GRID_DOMAIN                    0x0DD0
-#define GL_MAP1_GRID_SEGMENTS                  0x0DD1
-#define GL_MAP2_GRID_DOMAIN                    0x0DD2
-#define GL_MAP2_GRID_SEGMENTS                  0x0DD3
-#define GL_COEFF                               0x0A00
-#define GL_ORDER                               0x0A01
-#define GL_DOMAIN                              0x0A02
-
-/* Hints */
-#define GL_PERSPECTIVE_CORRECTION_HINT         0x0C50
-#define GL_POINT_SMOOTH_HINT                   0x0C51
-#define GL_LINE_SMOOTH_HINT                    0x0C52
-#define GL_POLYGON_SMOOTH_HINT                 0x0C53
-#define GL_FOG_HINT                            0x0C54
-#define GL_DONT_CARE                           0x1100
-#define GL_FASTEST                             0x1101
-#define GL_NICEST                              0x1102
-
-/* Scissor box */
-#define GL_SCISSOR_BOX                         0x0C10
-#define GL_SCISSOR_TEST                                0x0C11
-
-/* Pixel Mode / Transfer */
-#define GL_MAP_COLOR                           0x0D10
-#define GL_MAP_STENCIL                         0x0D11
-#define GL_INDEX_SHIFT                         0x0D12
-#define GL_INDEX_OFFSET                                0x0D13
-#define GL_RED_SCALE                           0x0D14
-#define GL_RED_BIAS                            0x0D15
-#define GL_GREEN_SCALE                         0x0D18
-#define GL_GREEN_BIAS                          0x0D19
-#define GL_BLUE_SCALE                          0x0D1A
-#define GL_BLUE_BIAS                           0x0D1B
-#define GL_ALPHA_SCALE                         0x0D1C
-#define GL_ALPHA_BIAS                          0x0D1D
-#define GL_DEPTH_SCALE                         0x0D1E
-#define GL_DEPTH_BIAS                          0x0D1F
-#define GL_PIXEL_MAP_S_TO_S_SIZE               0x0CB1
-#define GL_PIXEL_MAP_I_TO_I_SIZE               0x0CB0
-#define GL_PIXEL_MAP_I_TO_R_SIZE               0x0CB2
-#define GL_PIXEL_MAP_I_TO_G_SIZE               0x0CB3
-#define GL_PIXEL_MAP_I_TO_B_SIZE               0x0CB4
-#define GL_PIXEL_MAP_I_TO_A_SIZE               0x0CB5
-#define GL_PIXEL_MAP_R_TO_R_SIZE               0x0CB6
-#define GL_PIXEL_MAP_G_TO_G_SIZE               0x0CB7
-#define GL_PIXEL_MAP_B_TO_B_SIZE               0x0CB8
-#define GL_PIXEL_MAP_A_TO_A_SIZE               0x0CB9
-#define GL_PIXEL_MAP_S_TO_S                    0x0C71
-#define GL_PIXEL_MAP_I_TO_I                    0x0C70
-#define GL_PIXEL_MAP_I_TO_R                    0x0C72
-#define GL_PIXEL_MAP_I_TO_G                    0x0C73
-#define GL_PIXEL_MAP_I_TO_B                    0x0C74
-#define GL_PIXEL_MAP_I_TO_A                    0x0C75
-#define GL_PIXEL_MAP_R_TO_R                    0x0C76
-#define GL_PIXEL_MAP_G_TO_G                    0x0C77
-#define GL_PIXEL_MAP_B_TO_B                    0x0C78
-#define GL_PIXEL_MAP_A_TO_A                    0x0C79
-#define GL_PACK_ALIGNMENT                      0x0D05
-#define GL_PACK_LSB_FIRST                      0x0D01
-#define GL_PACK_ROW_LENGTH                     0x0D02
-#define GL_PACK_SKIP_PIXELS                    0x0D04
-#define GL_PACK_SKIP_ROWS                      0x0D03
-#define GL_PACK_SWAP_BYTES                     0x0D00
-#define GL_UNPACK_ALIGNMENT                    0x0CF5
-#define GL_UNPACK_LSB_FIRST                    0x0CF1
-#define GL_UNPACK_ROW_LENGTH                   0x0CF2
-#define GL_UNPACK_SKIP_PIXELS                  0x0CF4
-#define GL_UNPACK_SKIP_ROWS                    0x0CF3
-#define GL_UNPACK_SWAP_BYTES                   0x0CF0
-#define GL_ZOOM_X                              0x0D16
-#define GL_ZOOM_Y                              0x0D17
-
-/* Texture mapping */
-#define GL_TEXTURE_ENV                         0x2300
-#define GL_TEXTURE_ENV_MODE                    0x2200
-#define GL_TEXTURE_1D                          0x0DE0
-#define GL_TEXTURE_2D                          0x0DE1
-#define GL_TEXTURE_WRAP_S                      0x2802
-#define GL_TEXTURE_WRAP_T                      0x2803
-#define GL_TEXTURE_MAG_FILTER                  0x2800
-#define GL_TEXTURE_MIN_FILTER                  0x2801
-#define GL_TEXTURE_ENV_COLOR                   0x2201
-#define GL_TEXTURE_GEN_S                       0x0C60
-#define GL_TEXTURE_GEN_T                       0x0C61
-#define GL_TEXTURE_GEN_R                       0x0C62
-#define GL_TEXTURE_GEN_Q                       0x0C63
-#define GL_TEXTURE_GEN_MODE                    0x2500
-#define GL_TEXTURE_BORDER_COLOR                        0x1004
-#define GL_TEXTURE_WIDTH                       0x1000
-#define GL_TEXTURE_HEIGHT                      0x1001
-#define GL_TEXTURE_BORDER                      0x1005
-#define GL_TEXTURE_COMPONENTS                  0x1003
-#define GL_TEXTURE_RED_SIZE                    0x805C
-#define GL_TEXTURE_GREEN_SIZE                  0x805D
-#define GL_TEXTURE_BLUE_SIZE                   0x805E
-#define GL_TEXTURE_ALPHA_SIZE                  0x805F
-#define GL_TEXTURE_LUMINANCE_SIZE              0x8060
-#define GL_TEXTURE_INTENSITY_SIZE              0x8061
-#define GL_NEAREST_MIPMAP_NEAREST              0x2700
-#define GL_NEAREST_MIPMAP_LINEAR               0x2702
-#define GL_LINEAR_MIPMAP_NEAREST               0x2701
-#define GL_LINEAR_MIPMAP_LINEAR                        0x2703
-#define GL_OBJECT_LINEAR                       0x2401
-#define GL_OBJECT_PLANE                                0x2501
-#define GL_EYE_LINEAR                          0x2400
-#define GL_EYE_PLANE                           0x2502
-#define GL_SPHERE_MAP                          0x2402
-#define GL_DECAL                               0x2101
-#define GL_MODULATE                            0x2100
-#define GL_NEAREST                             0x2600
-#define GL_REPEAT                              0x2901
-#define GL_CLAMP                               0x2900
-#define GL_S                                   0x2000
-#define GL_T                                   0x2001
-#define GL_R                                   0x2002
-#define GL_Q                                   0x2003
-
-/* Utility */
-#define GL_VENDOR                              0x1F00
-#define GL_RENDERER                            0x1F01
-#define GL_VERSION                             0x1F02
-#define GL_EXTENSIONS                          0x1F03
-
-/* Errors */
-#define GL_NO_ERROR                            0
-#define GL_INVALID_ENUM                                0x0500
-#define GL_INVALID_VALUE                       0x0501
-#define GL_INVALID_OPERATION                   0x0502
-#define GL_STACK_OVERFLOW                      0x0503
-#define GL_STACK_UNDERFLOW                     0x0504
-#define GL_OUT_OF_MEMORY                       0x0505
-
-/* glPush/PopAttrib bits */
-#define GL_CURRENT_BIT                         0x00000001
-#define GL_POINT_BIT                           0x00000002
-#define GL_LINE_BIT                            0x00000004
-#define GL_POLYGON_BIT                         0x00000008
-#define GL_POLYGON_STIPPLE_BIT                 0x00000010
-#define GL_PIXEL_MODE_BIT                      0x00000020
-#define GL_LIGHTING_BIT                                0x00000040
-#define GL_FOG_BIT                             0x00000080
-#define GL_DEPTH_BUFFER_BIT                    0x00000100
-#define GL_ACCUM_BUFFER_BIT                    0x00000200
-#define GL_STENCIL_BUFFER_BIT                  0x00000400
-#define GL_VIEWPORT_BIT                                0x00000800
-#define GL_TRANSFORM_BIT                       0x00001000
-#define GL_ENABLE_BIT                          0x00002000
-#define GL_COLOR_BUFFER_BIT                    0x00004000
-#define GL_HINT_BIT                            0x00008000
-#define GL_EVAL_BIT                            0x00010000
-#define GL_LIST_BIT                            0x00020000
-#define GL_TEXTURE_BIT                         0x00040000
-#define GL_SCISSOR_BIT                         0x00080000
-#define GL_ALL_ATTRIB_BITS                     0x000FFFFF
-
-
-/* OpenGL 1.1 */
-#define GL_PROXY_TEXTURE_1D                    0x8063
-#define GL_PROXY_TEXTURE_2D                    0x8064
-#define GL_TEXTURE_PRIORITY                    0x8066
-#define GL_TEXTURE_RESIDENT                    0x8067
-#define GL_TEXTURE_BINDING_1D                  0x8068
-#define GL_TEXTURE_BINDING_2D                  0x8069
-#define GL_TEXTURE_INTERNAL_FORMAT             0x1003
-#define GL_ALPHA4                              0x803B
-#define GL_ALPHA8                              0x803C
-#define GL_ALPHA12                             0x803D
-#define GL_ALPHA16                             0x803E
-#define GL_LUMINANCE4                          0x803F
-#define GL_LUMINANCE8                          0x8040
-#define GL_LUMINANCE12                         0x8041
-#define GL_LUMINANCE16                         0x8042
-#define GL_LUMINANCE4_ALPHA4                   0x8043
-#define GL_LUMINANCE6_ALPHA2                   0x8044
-#define GL_LUMINANCE8_ALPHA8                   0x8045
-#define GL_LUMINANCE12_ALPHA4                  0x8046
-#define GL_LUMINANCE12_ALPHA12                 0x8047
-#define GL_LUMINANCE16_ALPHA16                 0x8048
-#define GL_INTENSITY                           0x8049
-#define GL_INTENSITY4                          0x804A
-#define GL_INTENSITY8                          0x804B
-#define GL_INTENSITY12                         0x804C
-#define GL_INTENSITY16                         0x804D
-#define GL_R3_G3_B2                            0x2A10
-#define GL_RGB4                                        0x804F
-#define GL_RGB5                                        0x8050
-#define GL_RGB8                                        0x8051
-#define GL_RGB10                               0x8052
-#define GL_RGB12                               0x8053
-#define GL_RGB16                               0x8054
-#define GL_RGBA2                               0x8055
-#define GL_RGBA4                               0x8056
-#define GL_RGB5_A1                             0x8057
-#define GL_RGBA8                               0x8058
-#define GL_RGB10_A2                            0x8059
-#define GL_RGBA12                              0x805A
-#define GL_RGBA16                              0x805B
-#define GL_CLIENT_PIXEL_STORE_BIT              0x00000001
-#define GL_CLIENT_VERTEX_ARRAY_BIT             0x00000002
-#define GL_ALL_CLIENT_ATTRIB_BITS              0xFFFFFFFF
-#define GL_CLIENT_ALL_ATTRIB_BITS              0xFFFFFFFF
-
-
-
-/*
- * Miscellaneous
- */
-
-GLAPI void GLAPIENTRY glClearIndex( GLfloat c );
-
-GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
-
-GLAPI void GLAPIENTRY glClear( GLbitfield mask );
-
-GLAPI void GLAPIENTRY glIndexMask( GLuint mask );
-
-GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
-
-GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );
-
-GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor );
-
-GLAPI void GLAPIENTRY glLogicOp( GLenum opcode );
-
-GLAPI void GLAPIENTRY glCullFace( GLenum mode );
-
-GLAPI void GLAPIENTRY glFrontFace( GLenum mode );
-
-GLAPI void GLAPIENTRY glPointSize( GLfloat size );
-
-GLAPI void GLAPIENTRY glLineWidth( GLfloat width );
-
-GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern );
-
-GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode );
-
-GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units );
-
-GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask );
-
-GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask );
-
-GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag );
-
-GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );
-
-GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
-
-GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
-
-GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation );
-
-GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode );
-
-GLAPI void GLAPIENTRY glReadBuffer( GLenum mode );
-
-GLAPI void GLAPIENTRY glEnable( GLenum cap );
-
-GLAPI void GLAPIENTRY glDisable( GLenum cap );
-
-GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap );
-
-
-GLAPI void GLAPIENTRY glEnableClientState( GLenum cap );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glDisableClientState( GLenum cap );  /* 1.1 */
-
-
-GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params );
-
-GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params );
-
-GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask );
-
-GLAPI void GLAPIENTRY glPopAttrib( void );
-
-
-GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glPopClientAttrib( void );  /* 1.1 */
-
-
-GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode );
-
-GLAPI GLenum GLAPIENTRY glGetError( void );
-
-GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name );
-
-GLAPI void GLAPIENTRY glFinish( void );
-
-GLAPI void GLAPIENTRY glFlush( void );
-
-GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode );
-
-
-/*
- * Depth Buffer
- */
-
-GLAPI void GLAPIENTRY glClearDepth( GLclampd depth );
-
-GLAPI void GLAPIENTRY glDepthFunc( GLenum func );
-
-GLAPI void GLAPIENTRY glDepthMask( GLboolean flag );
-
-GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );
-
-
-/*
- * Accumulation Buffer
- */
-
-GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
-
-GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );
-
-
-/*
- * Transformation
- */
-
-GLAPI void GLAPIENTRY glMatrixMode( GLenum mode );
-
-GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right,
-                                 GLdouble bottom, GLdouble top,
-                                 GLdouble near_val, GLdouble far_val );
-
-GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right,
-                                   GLdouble bottom, GLdouble top,
-                                   GLdouble near_val, GLdouble far_val );
-
-GLAPI void GLAPIENTRY glViewport( GLint x, GLint y,
-                                    GLsizei width, GLsizei height );
-
-GLAPI void GLAPIENTRY glPushMatrix( void );
-
-GLAPI void GLAPIENTRY glPopMatrix( void );
-
-GLAPI void GLAPIENTRY glLoadIdentity( void );
-
-GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m );
-GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m );
-
-GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m );
-GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m );
-
-GLAPI void GLAPIENTRY glRotated( GLdouble angle,
-                                   GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glRotatef( GLfloat angle,
-                                   GLfloat x, GLfloat y, GLfloat z );
-
-GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z );
-
-GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z );
-
-
-/*
- * Display Lists
- */
-
-GLAPI GLboolean GLAPIENTRY glIsList( GLuint list );
-
-GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range );
-
-GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range );
-
-GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode );
-
-GLAPI void GLAPIENTRY glEndList( void );
-
-GLAPI void GLAPIENTRY glCallList( GLuint list );
-
-GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type,
-                                     const GLvoid *lists );
-
-GLAPI void GLAPIENTRY glListBase( GLuint base );
-
-
-/*
- * Drawing Functions
- */
-
-GLAPI void GLAPIENTRY glBegin( GLenum mode );
-
-GLAPI void GLAPIENTRY glEnd( void );
-
-
-GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y );
-GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y );
-GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y );
-GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y );
-
-GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z );
-GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z );
-GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z );
-
-GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
-GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
-GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w );
-GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w );
-
-GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glVertex2iv( const GLint *v );
-GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glVertex3iv( const GLint *v );
-GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glVertex4iv( const GLint *v );
-GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz );
-GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz );
-GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz );
-GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz );
-GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz );
-
-GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v );
-GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glNormal3iv( const GLint *v );
-GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glIndexd( GLdouble c );
-GLAPI void GLAPIENTRY glIndexf( GLfloat c );
-GLAPI void GLAPIENTRY glIndexi( GLint c );
-GLAPI void GLAPIENTRY glIndexs( GLshort c );
-GLAPI void GLAPIENTRY glIndexub( GLubyte c );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c );
-GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c );
-GLAPI void GLAPIENTRY glIndexiv( const GLint *c );
-GLAPI void GLAPIENTRY glIndexsv( const GLshort *c );
-GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue );
-GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue );
-GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue );
-GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue );
-GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue );
-GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue );
-GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue );
-GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue );
-
-GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green,
-                                   GLbyte blue, GLbyte alpha );
-GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green,
-                                   GLdouble blue, GLdouble alpha );
-GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green,
-                                   GLfloat blue, GLfloat alpha );
-GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green,
-                                   GLint blue, GLint alpha );
-GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green,
-                                   GLshort blue, GLshort alpha );
-GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green,
-                                    GLubyte blue, GLubyte alpha );
-GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green,
-                                    GLuint blue, GLuint alpha );
-GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green,
-                                    GLushort blue, GLushort alpha );
-
-
-GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v );
-GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glColor3iv( const GLint *v );
-GLAPI void GLAPIENTRY glColor3sv( const GLshort *v );
-GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v );
-GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v );
-GLAPI void GLAPIENTRY glColor3usv( const GLushort *v );
-
-GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v );
-GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glColor4iv( const GLint *v );
-GLAPI void GLAPIENTRY glColor4sv( const GLshort *v );
-GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v );
-GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v );
-GLAPI void GLAPIENTRY glColor4usv( const GLushort *v );
-
-
-GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s );
-GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s );
-GLAPI void GLAPIENTRY glTexCoord1i( GLint s );
-GLAPI void GLAPIENTRY glTexCoord1s( GLshort s );
-
-GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t );
-GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t );
-GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t );
-GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t );
-
-GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r );
-GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r );
-GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r );
-GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r );
-
-GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
-GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q );
-GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q );
-
-GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y );
-GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y );
-GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y );
-GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y );
-
-GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z );
-GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z );
-GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z );
-
-GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
-GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
-GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w );
-GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w );
-
-GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v );
-GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v );
-GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v );
-GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
-GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
-GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 );
-GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
-
-
-GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 );
-GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 );
-GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 );
-GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 );
-
-
-/*
- * Vertex Arrays  (1.1)
- */
-
-GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type,
-                                       GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride,
-                                       const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type,
-                                      GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride,
-                                      const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type,
-                                         GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params );
-
-GLAPI void GLAPIENTRY glArrayElement( GLint i );
-
-GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count );
-
-GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count,
-                                      GLenum type, const GLvoid *indices );
-
-GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride,
-                                           const GLvoid *pointer );
-
-/*
- * Lighting
- */
-
-GLAPI void GLAPIENTRY glShadeModel( GLenum mode );
-
-GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param );
-GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname,
-                                 const GLfloat *params );
-GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname,
-                                 const GLint *params );
-
-GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname,
-                                    GLfloat *params );
-GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname,
-                                    GLint *params );
-
-GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param );
-GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param );
-GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params );
-
-GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode );
-
-
-/*
- * Raster functions
- */
-
-GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor );
-
-GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize,
-                                    const GLfloat *values );
-GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize,
-                                     const GLuint *values );
-GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize,
-                                     const GLushort *values );
-
-GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values );
-GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values );
-GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values );
-
-GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height,
-                                GLfloat xorig, GLfloat yorig,
-                                GLfloat xmove, GLfloat ymove,
-                                const GLubyte *bitmap );
-
-GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y,
-                                    GLsizei width, GLsizei height,
-                                    GLenum format, GLenum type,
-                                    GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height,
-                                    GLenum format, GLenum type,
-                                    const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y,
-                                    GLsizei width, GLsizei height,
-                                    GLenum type );
-
-/*
- * Stenciling
- */
-
-GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask );
-
-GLAPI void GLAPIENTRY glStencilMask( GLuint mask );
-
-GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass );
-
-GLAPI void GLAPIENTRY glClearStencil( GLint s );
-
-
-
-/*
- * Texture mapping
- */
-
-GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param );
-GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params );
-GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params );
-GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname,
-                                          const GLfloat *params );
-GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname,
-                                          const GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target,
-                                           GLenum pname, GLfloat *params);
-GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target,
-                                           GLenum pname, GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level,
-                                                GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level,
-                                                GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level,
-                                    GLint internalFormat,
-                                    GLsizei width, GLint border,
-                                    GLenum format, GLenum type,
-                                    const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level,
-                                    GLint internalFormat,
-                                    GLsizei width, GLsizei height,
-                                    GLint border, GLenum format, GLenum type,
-                                    const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level,
-                                     GLenum format, GLenum type,
-                                     GLvoid *pixels );
-
-
-/* 1.1 functions */
-
-GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures );
-
-GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures);
-
-GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture );
-
-GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n,
-                                            const GLuint *textures,
-                                            const GLclampf *priorities );
-
-GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n,
-                                                  const GLuint *textures,
-                                                  GLboolean *residences );
-
-GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture );
-
-
-GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level,
-                                       GLint xoffset,
-                                       GLsizei width, GLenum format,
-                                       GLenum type, const GLvoid *pixels );
-
-
-GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level,
-                                       GLint xoffset, GLint yoffset,
-                                       GLsizei width, GLsizei height,
-                                       GLenum format, GLenum type,
-                                       const GLvoid *pixels );
-
-
-GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level,
-                                        GLenum internalformat,
-                                        GLint x, GLint y,
-                                        GLsizei width, GLint border );
-
-
-GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level,
-                                        GLenum internalformat,
-                                        GLint x, GLint y,
-                                        GLsizei width, GLsizei height,
-                                        GLint border );
-
-
-GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level,
-                                           GLint xoffset, GLint x, GLint y,
-                                           GLsizei width );
-
-
-GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level,
-                                           GLint xoffset, GLint yoffset,
-                                           GLint x, GLint y,
-                                           GLsizei width, GLsizei height );
-
-
-/*
- * Evaluators
- */
-
-GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2,
-                               GLint stride,
-                               GLint order, const GLdouble *points );
-GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2,
-                               GLint stride,
-                               GLint order, const GLfloat *points );
-
-GLAPI void GLAPIENTRY glMap2d( GLenum target,
-                    GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
-                    GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
-                    const GLdouble *points );
-GLAPI void GLAPIENTRY glMap2f( GLenum target,
-                    GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
-                    GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
-                    const GLfloat *points );
-
-GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v );
-GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v );
-GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v );
-
-GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u );
-GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u );
-
-GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u );
-GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u );
-
-GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v );
-GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v );
-
-GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u );
-GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u );
-
-GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 );
-GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 );
-
-GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2,
-                                   GLint vn, GLdouble v1, GLdouble v2 );
-GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2,
-                                   GLint vn, GLfloat v1, GLfloat v2 );
-
-GLAPI void GLAPIENTRY glEvalPoint1( GLint i );
-
-GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j );
-
-GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 );
-
-GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
-
-
-/*
- * Fog
- */
-
-GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param );
-
-GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params );
-
-GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params );
-
-
-/*
- * Selection and Feedback
- */
-
-GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer );
-
-GLAPI void GLAPIENTRY glPassThrough( GLfloat token );
-
-GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer );
-
-GLAPI void GLAPIENTRY glInitNames( void );
-
-GLAPI void GLAPIENTRY glLoadName( GLuint name );
-
-GLAPI void GLAPIENTRY glPushName( GLuint name );
-
-GLAPI void GLAPIENTRY glPopName( void );
-
-
-
-/*
- * OpenGL 1.2
- */
-
-#define GL_RESCALE_NORMAL                      0x803A
-#define GL_CLAMP_TO_EDGE                       0x812F
-#define GL_MAX_ELEMENTS_VERTICES               0x80E8
-#define GL_MAX_ELEMENTS_INDICES                        0x80E9
-#define GL_BGR                                 0x80E0
-#define GL_BGRA                                        0x80E1
-#define GL_UNSIGNED_BYTE_3_3_2                 0x8032
-#define GL_UNSIGNED_BYTE_2_3_3_REV             0x8362
-#define GL_UNSIGNED_SHORT_5_6_5                        0x8363
-#define GL_UNSIGNED_SHORT_5_6_5_REV            0x8364
-#define GL_UNSIGNED_SHORT_4_4_4_4              0x8033
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV          0x8365
-#define GL_UNSIGNED_SHORT_5_5_5_1              0x8034
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV          0x8366
-#define GL_UNSIGNED_INT_8_8_8_8                        0x8035
-#define GL_UNSIGNED_INT_8_8_8_8_REV            0x8367
-#define GL_UNSIGNED_INT_10_10_10_2             0x8036
-#define GL_UNSIGNED_INT_2_10_10_10_REV         0x8368
-#define GL_LIGHT_MODEL_COLOR_CONTROL           0x81F8
-#define GL_SINGLE_COLOR                                0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR             0x81FA
-#define GL_TEXTURE_MIN_LOD                     0x813A
-#define GL_TEXTURE_MAX_LOD                     0x813B
-#define GL_TEXTURE_BASE_LEVEL                  0x813C
-#define GL_TEXTURE_MAX_LEVEL                   0x813D
-#define GL_SMOOTH_POINT_SIZE_RANGE             0x0B12
-#define GL_SMOOTH_POINT_SIZE_GRANULARITY       0x0B13
-#define GL_SMOOTH_LINE_WIDTH_RANGE             0x0B22
-#define GL_SMOOTH_LINE_WIDTH_GRANULARITY       0x0B23
-#define GL_ALIASED_POINT_SIZE_RANGE            0x846D
-#define GL_ALIASED_LINE_WIDTH_RANGE            0x846E
-#define GL_PACK_SKIP_IMAGES                    0x806B
-#define GL_PACK_IMAGE_HEIGHT                   0x806C
-#define GL_UNPACK_SKIP_IMAGES                  0x806D
-#define GL_UNPACK_IMAGE_HEIGHT                 0x806E
-#define GL_TEXTURE_3D                          0x806F
-#define GL_PROXY_TEXTURE_3D                    0x8070
-#define GL_TEXTURE_DEPTH                       0x8071
-#define GL_TEXTURE_WRAP_R                      0x8072
-#define GL_MAX_3D_TEXTURE_SIZE                 0x8073
-#define GL_TEXTURE_BINDING_3D                  0x806A
-
-GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start,
-       GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
-
-GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
-                                      GLint internalFormat,
-                                      GLsizei width, GLsizei height,
-                                      GLsizei depth, GLint border,
-                                      GLenum format, GLenum type,
-                                      const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level,
-                                         GLint xoffset, GLint yoffset,
-                                         GLint zoffset, GLsizei width,
-                                         GLsizei height, GLsizei depth,
-                                         GLenum format,
-                                         GLenum type, const GLvoid *pixels);
-
-GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level,
-                                             GLint xoffset, GLint yoffset,
-                                             GLint zoffset, GLint x,
-                                             GLint y, GLsizei width,
-                                             GLsizei height );
-
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-
-
-/*
- * GL_ARB_imaging
- */
-
-#define GL_CONSTANT_COLOR                      0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR            0x8002
-#define GL_CONSTANT_ALPHA                      0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA            0x8004
-#define GL_COLOR_TABLE                         0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE                0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE       0x80D2
-#define GL_PROXY_COLOR_TABLE                   0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE  0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
-#define GL_COLOR_TABLE_SCALE                   0x80D6
-#define GL_COLOR_TABLE_BIAS                    0x80D7
-#define GL_COLOR_TABLE_FORMAT                  0x80D8
-#define GL_COLOR_TABLE_WIDTH                   0x80D9
-#define GL_COLOR_TABLE_RED_SIZE                        0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE              0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE               0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE              0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE          0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE          0x80DF
-#define GL_CONVOLUTION_1D                      0x8010
-#define GL_CONVOLUTION_2D                      0x8011
-#define GL_SEPARABLE_2D                                0x8012
-#define GL_CONVOLUTION_BORDER_MODE             0x8013
-#define GL_CONVOLUTION_FILTER_SCALE            0x8014
-#define GL_CONVOLUTION_FILTER_BIAS             0x8015
-#define GL_REDUCE                              0x8016
-#define GL_CONVOLUTION_FORMAT                  0x8017
-#define GL_CONVOLUTION_WIDTH                   0x8018
-#define GL_CONVOLUTION_HEIGHT                  0x8019
-#define GL_MAX_CONVOLUTION_WIDTH               0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT              0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE          0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE                0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE         0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE                0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS           0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS         0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS          0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS         0x8023
-#define GL_CONSTANT_BORDER                     0x8151
-#define GL_REPLICATE_BORDER                    0x8153
-#define GL_CONVOLUTION_BORDER_COLOR            0x8154
-#define GL_COLOR_MATRIX                                0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH            0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH                0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE         0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE       0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE                0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE       0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS          0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS                0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS         0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS                0x80BB
-#define GL_HISTOGRAM                           0x8024
-#define GL_PROXY_HISTOGRAM                     0x8025
-#define GL_HISTOGRAM_WIDTH                     0x8026
-#define GL_HISTOGRAM_FORMAT                    0x8027
-#define GL_HISTOGRAM_RED_SIZE                  0x8028
-#define GL_HISTOGRAM_GREEN_SIZE                        0x8029
-#define GL_HISTOGRAM_BLUE_SIZE                 0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE                        0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE            0x802C
-#define GL_HISTOGRAM_SINK                      0x802D
-#define GL_MINMAX                              0x802E
-#define GL_MINMAX_FORMAT                       0x802F
-#define GL_MINMAX_SINK                         0x8030
-#define GL_TABLE_TOO_LARGE                     0x8031
-#define GL_BLEND_EQUATION                      0x8009
-#define GL_MIN                                 0x8007
-#define GL_MAX                                 0x8008
-#define GL_FUNC_ADD                            0x8006
-#define GL_FUNC_SUBTRACT                       0x800A
-#define GL_FUNC_REVERSE_SUBTRACT               0x800B
-#define GL_BLEND_COLOR                         0x8005
-
-
-GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat,
-                                    GLsizei width, GLenum format,
-                                    GLenum type, const GLvoid *table );
-
-GLAPI void GLAPIENTRY glColorSubTable( GLenum target,
-                                       GLsizei start, GLsizei count,
-                                       GLenum format, GLenum type,
-                                       const GLvoid *data );
-
-GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname,
-                                              const GLint *params);
-
-GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname,
-                                              const GLfloat *params);
-
-GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start,
-                                           GLint x, GLint y, GLsizei width );
-
-GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat,
-                                        GLint x, GLint y, GLsizei width );
-
-GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,
-                                       GLenum type, GLvoid *table );
-
-GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,
-                                                  GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,
-                                                  GLint *params );
-
-GLAPI void GLAPIENTRY glBlendEquation( GLenum mode );
-
-GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green,
-                                    GLclampf blue, GLclampf alpha );
-
-GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width,
-                                  GLenum internalformat, GLboolean sink );
-
-GLAPI void GLAPIENTRY glResetHistogram( GLenum target );
-
-GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset,
-                                     GLenum format, GLenum type,
-                                     GLvoid *values );
-
-GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname,
-                                                GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname,
-                                                GLint *params );
-
-GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat,
-                               GLboolean sink );
-
-GLAPI void GLAPIENTRY glResetMinmax( GLenum target );
-
-GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset,
-                                   GLenum format, GLenum types,
-                                   GLvoid *values );
-
-GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname,
-                                             GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname,
-                                             GLint *params );
-
-GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target,
-       GLenum internalformat, GLsizei width, GLenum format, GLenum type,
-       const GLvoid *image );
-
-GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target,
-       GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
-       GLenum type, const GLvoid *image );
-
-GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname,
-       GLfloat params );
-
-GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname,
-       const GLfloat *params );
-
-GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname,
-       GLint params );
-
-GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname,
-       const GLint *params );
-
-GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target,
-       GLenum internalformat, GLint x, GLint y, GLsizei width );
-
-GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target,
-       GLenum internalformat, GLint x, GLint y, GLsizei width,
-       GLsizei height);
-
-GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format,
-       GLenum type, GLvoid *image );
-
-GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname,
-       GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname,
-       GLint *params );
-
-GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target,
-       GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
-       GLenum type, const GLvoid *row, const GLvoid *column );
-
-GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,
-       GLenum type, GLvoid *row, GLvoid *column, GLvoid *span );
-
-
-
-
-/*
- * OpenGL 1.3
- */
-
-/* multitexture */
-#define GL_TEXTURE0                            0x84C0
-#define GL_TEXTURE1                            0x84C1
-#define GL_TEXTURE2                            0x84C2
-#define GL_TEXTURE3                            0x84C3
-#define GL_TEXTURE4                            0x84C4
-#define GL_TEXTURE5                            0x84C5
-#define GL_TEXTURE6                            0x84C6
-#define GL_TEXTURE7                            0x84C7
-#define GL_TEXTURE8                            0x84C8
-#define GL_TEXTURE9                            0x84C9
-#define GL_TEXTURE10                           0x84CA
-#define GL_TEXTURE11                           0x84CB
-#define GL_TEXTURE12                           0x84CC
-#define GL_TEXTURE13                           0x84CD
-#define GL_TEXTURE14                           0x84CE
-#define GL_TEXTURE15                           0x84CF
-#define GL_TEXTURE16                           0x84D0
-#define GL_TEXTURE17                           0x84D1
-#define GL_TEXTURE18                           0x84D2
-#define GL_TEXTURE19                           0x84D3
-#define GL_TEXTURE20                           0x84D4
-#define GL_TEXTURE21                           0x84D5
-#define GL_TEXTURE22                           0x84D6
-#define GL_TEXTURE23                           0x84D7
-#define GL_TEXTURE24                           0x84D8
-#define GL_TEXTURE25                           0x84D9
-#define GL_TEXTURE26                           0x84DA
-#define GL_TEXTURE27                           0x84DB
-#define GL_TEXTURE28                           0x84DC
-#define GL_TEXTURE29                           0x84DD
-#define GL_TEXTURE30                           0x84DE
-#define GL_TEXTURE31                           0x84DF
-#define GL_ACTIVE_TEXTURE                      0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE               0x84E1
-#define GL_MAX_TEXTURE_UNITS                   0x84E2
-/* texture_cube_map */
-#define GL_NORMAL_MAP                          0x8511
-#define GL_REFLECTION_MAP                      0x8512
-#define GL_TEXTURE_CUBE_MAP                    0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP            0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X         0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X         0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y         0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y         0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z         0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z         0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP              0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE           0x851C
-/* texture_compression */
-#define GL_COMPRESSED_ALPHA                    0x84E9
-#define GL_COMPRESSED_LUMINANCE                        0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA          0x84EB
-#define GL_COMPRESSED_INTENSITY                        0x84EC
-#define GL_COMPRESSED_RGB                      0x84ED
-#define GL_COMPRESSED_RGBA                     0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT            0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE       0x86A0
-#define GL_TEXTURE_COMPRESSED                  0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS      0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS          0x86A3
-/* multisample */
-#define GL_MULTISAMPLE                         0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE            0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE                 0x809F
-#define GL_SAMPLE_COVERAGE                     0x80A0
-#define GL_SAMPLE_BUFFERS                      0x80A8
-#define GL_SAMPLES                             0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE               0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT              0x80AB
-#define GL_MULTISAMPLE_BIT                     0x20000000
-/* transpose_matrix */
-#define GL_TRANSPOSE_MODELVIEW_MATRIX          0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX         0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX            0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX              0x84E6
-/* texture_env_combine */
-#define GL_COMBINE                             0x8570
-#define GL_COMBINE_RGB                         0x8571
-#define GL_COMBINE_ALPHA                       0x8572
-#define GL_SOURCE0_RGB                         0x8580
-#define GL_SOURCE1_RGB                         0x8581
-#define GL_SOURCE2_RGB                         0x8582
-#define GL_SOURCE0_ALPHA                       0x8588
-#define GL_SOURCE1_ALPHA                       0x8589
-#define GL_SOURCE2_ALPHA                       0x858A
-#define GL_OPERAND0_RGB                                0x8590
-#define GL_OPERAND1_RGB                                0x8591
-#define GL_OPERAND2_RGB                                0x8592
-#define GL_OPERAND0_ALPHA                      0x8598
-#define GL_OPERAND1_ALPHA                      0x8599
-#define GL_OPERAND2_ALPHA                      0x859A
-#define GL_RGB_SCALE                           0x8573
-#define GL_ADD_SIGNED                          0x8574
-#define GL_INTERPOLATE                         0x8575
-#define GL_SUBTRACT                            0x84E7
-#define GL_CONSTANT                            0x8576
-#define GL_PRIMARY_COLOR                       0x8577
-#define GL_PREVIOUS                            0x8578
-/* texture_env_dot3 */
-#define GL_DOT3_RGB                            0x86AE
-#define GL_DOT3_RGBA                           0x86AF
-/* texture_border_clamp */
-#define GL_CLAMP_TO_BORDER                     0x812D
-
-GLAPI void GLAPIENTRY glActiveTexture( GLenum texture );
-
-GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture );
-
-GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
-
-GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
-
-GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
-
-GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
-
-GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );
-
-
-typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
-
-
-
-/*
- * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
- */
-#ifndef GL_ARB_multitexture
-#define GL_ARB_multitexture 1
-
-#define GL_TEXTURE0_ARB                                0x84C0
-#define GL_TEXTURE1_ARB                                0x84C1
-#define GL_TEXTURE2_ARB                                0x84C2
-#define GL_TEXTURE3_ARB                                0x84C3
-#define GL_TEXTURE4_ARB                                0x84C4
-#define GL_TEXTURE5_ARB                                0x84C5
-#define GL_TEXTURE6_ARB                                0x84C6
-#define GL_TEXTURE7_ARB                                0x84C7
-#define GL_TEXTURE8_ARB                                0x84C8
-#define GL_TEXTURE9_ARB                                0x84C9
-#define GL_TEXTURE10_ARB                       0x84CA
-#define GL_TEXTURE11_ARB                       0x84CB
-#define GL_TEXTURE12_ARB                       0x84CC
-#define GL_TEXTURE13_ARB                       0x84CD
-#define GL_TEXTURE14_ARB                       0x84CE
-#define GL_TEXTURE15_ARB                       0x84CF
-#define GL_TEXTURE16_ARB                       0x84D0
-#define GL_TEXTURE17_ARB                       0x84D1
-#define GL_TEXTURE18_ARB                       0x84D2
-#define GL_TEXTURE19_ARB                       0x84D3
-#define GL_TEXTURE20_ARB                       0x84D4
-#define GL_TEXTURE21_ARB                       0x84D5
-#define GL_TEXTURE22_ARB                       0x84D6
-#define GL_TEXTURE23_ARB                       0x84D7
-#define GL_TEXTURE24_ARB                       0x84D8
-#define GL_TEXTURE25_ARB                       0x84D9
-#define GL_TEXTURE26_ARB                       0x84DA
-#define GL_TEXTURE27_ARB                       0x84DB
-#define GL_TEXTURE28_ARB                       0x84DC
-#define GL_TEXTURE29_ARB                       0x84DD
-#define GL_TEXTURE30_ARB                       0x84DE
-#define GL_TEXTURE31_ARB                       0x84DF
-#define GL_ACTIVE_TEXTURE_ARB                  0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE_ARB           0x84E1
-#define GL_MAX_TEXTURE_UNITS_ARB               0x84E2
-
-GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture);
-GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture);
-GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s);
-GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s);
-GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s);
-GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s);
-GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);
-GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);
-GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);
-GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);
-GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);
-GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);
-GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);
-GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);
-GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);
-GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v);
-
-typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
-
-#endif /* GL_ARB_multitexture */
-
-
-
-/*
- * Define this token if you want "old-style" header file behaviour (extensions
- * defined in gl.h).  Otherwise, extensions will be included from glext.h.
- */
-#if !defined(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY)
-#include "SDL_opengl_glext.h"
-#endif  /* GL_GLEXT_LEGACY */
-
-
-
-/*
- * ???. GL_MESA_packed_depth_stencil
- * XXX obsolete
- */
-#ifndef GL_MESA_packed_depth_stencil
-#define GL_MESA_packed_depth_stencil 1
-
-#define GL_DEPTH_STENCIL_MESA                  0x8750
-#define GL_UNSIGNED_INT_24_8_MESA              0x8751
-#define GL_UNSIGNED_INT_8_24_REV_MESA          0x8752
-#define GL_UNSIGNED_SHORT_15_1_MESA            0x8753
-#define GL_UNSIGNED_SHORT_1_15_REV_MESA                0x8754
-
-#endif /* GL_MESA_packed_depth_stencil */
-
-
-#ifndef GL_ATI_blend_equation_separate
-#define GL_ATI_blend_equation_separate 1
-
-#define GL_ALPHA_BLEND_EQUATION_ATI            0x883D
-
-GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA );
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA);
-
-#endif /* GL_ATI_blend_equation_separate */
-
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-typedef void* GLeglImageOES;
-#endif
-
-#ifndef GL_OES_EGL_image
-#define GL_OES_EGL_image 1
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
-GLAPI void APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
-#endif
-typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
-typedef void (APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
-#endif
-
-
-/**
- ** NOTE!!!!!  If you add new functions to this file, or update
- ** glext.h be sure to regenerate the gl_mangle.h file.  See comments
- ** in that file for details.
- **/
-
-
-
-/**********************************************************************
- * Begin system-specific stuff
- */
-#if defined(PRAGMA_EXPORT_SUPPORTED)
-#pragma export off
-#endif
-
-/*
- * End system-specific stuff
- **********************************************************************/
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl_h_ */
-
-#endif /* !__IPHONEOS__ */
-
-#endif /* SDL_opengl_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_opengl_glext.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_opengl_glext.h
deleted file mode 100644 (file)
index cd3869f..0000000
+++ /dev/null
@@ -1,11177 +0,0 @@
-#ifndef __glext_h_
-#define __glext_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2013-2014 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
-** This header is generated from the Khronos OpenGL / OpenGL ES XML
-** API Registry. The current version of the Registry, generator scripts
-** used to make the header, and the header can be found at
-**   http://www.opengl.org/registry/
-**
-** Khronos $Revision: 26745 $ on $Date: 2014-05-21 03:12:26 -0700 (Wed, 21 May 2014) $
-*/
-
-#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#include <windows.h>
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY
-#endif
-#ifndef APIENTRYP
-#define APIENTRYP APIENTRY *
-#endif
-#ifndef GLAPI
-#define GLAPI extern
-#endif
-
-#define GL_GLEXT_VERSION 20140521
-
-/* Generated C header for:
- * API: gl
- * Profile: compatibility
- * Versions considered: .*
- * Versions emitted: 1\.[2-9]|[234]\.[0-9]
- * Default extensions included: gl
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef GL_VERSION_1_2
-#define GL_VERSION_1_2 1
-#define GL_UNSIGNED_BYTE_3_3_2            0x8032
-#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
-#define GL_UNSIGNED_INT_8_8_8_8           0x8035
-#define GL_UNSIGNED_INT_10_10_10_2        0x8036
-#define GL_TEXTURE_BINDING_3D             0x806A
-#define GL_PACK_SKIP_IMAGES               0x806B
-#define GL_PACK_IMAGE_HEIGHT              0x806C
-#define GL_UNPACK_SKIP_IMAGES             0x806D
-#define GL_UNPACK_IMAGE_HEIGHT            0x806E
-#define GL_TEXTURE_3D                     0x806F
-#define GL_PROXY_TEXTURE_3D               0x8070
-#define GL_TEXTURE_DEPTH                  0x8071
-#define GL_TEXTURE_WRAP_R                 0x8072
-#define GL_MAX_3D_TEXTURE_SIZE            0x8073
-#define GL_UNSIGNED_BYTE_2_3_3_REV        0x8362
-#define GL_UNSIGNED_SHORT_5_6_5           0x8363
-#define GL_UNSIGNED_SHORT_5_6_5_REV       0x8364
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV     0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV     0x8366
-#define GL_UNSIGNED_INT_8_8_8_8_REV       0x8367
-#define GL_UNSIGNED_INT_2_10_10_10_REV    0x8368
-#define GL_BGR                            0x80E0
-#define GL_BGRA                           0x80E1
-#define GL_MAX_ELEMENTS_VERTICES          0x80E8
-#define GL_MAX_ELEMENTS_INDICES           0x80E9
-#define GL_CLAMP_TO_EDGE                  0x812F
-#define GL_TEXTURE_MIN_LOD                0x813A
-#define GL_TEXTURE_MAX_LOD                0x813B
-#define GL_TEXTURE_BASE_LEVEL             0x813C
-#define GL_TEXTURE_MAX_LEVEL              0x813D
-#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12
-#define GL_SMOOTH_POINT_SIZE_GRANULARITY  0x0B13
-#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22
-#define GL_SMOOTH_LINE_WIDTH_GRANULARITY  0x0B23
-#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
-#define GL_RESCALE_NORMAL                 0x803A
-#define GL_LIGHT_MODEL_COLOR_CONTROL      0x81F8
-#define GL_SINGLE_COLOR                   0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR        0x81FA
-#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_VERSION_1_2 */
-
-#ifndef GL_VERSION_1_3
-#define GL_VERSION_1_3 1
-#define GL_TEXTURE0                       0x84C0
-#define GL_TEXTURE1                       0x84C1
-#define GL_TEXTURE2                       0x84C2
-#define GL_TEXTURE3                       0x84C3
-#define GL_TEXTURE4                       0x84C4
-#define GL_TEXTURE5                       0x84C5
-#define GL_TEXTURE6                       0x84C6
-#define GL_TEXTURE7                       0x84C7
-#define GL_TEXTURE8                       0x84C8
-#define GL_TEXTURE9                       0x84C9
-#define GL_TEXTURE10                      0x84CA
-#define GL_TEXTURE11                      0x84CB
-#define GL_TEXTURE12                      0x84CC
-#define GL_TEXTURE13                      0x84CD
-#define GL_TEXTURE14                      0x84CE
-#define GL_TEXTURE15                      0x84CF
-#define GL_TEXTURE16                      0x84D0
-#define GL_TEXTURE17                      0x84D1
-#define GL_TEXTURE18                      0x84D2
-#define GL_TEXTURE19                      0x84D3
-#define GL_TEXTURE20                      0x84D4
-#define GL_TEXTURE21                      0x84D5
-#define GL_TEXTURE22                      0x84D6
-#define GL_TEXTURE23                      0x84D7
-#define GL_TEXTURE24                      0x84D8
-#define GL_TEXTURE25                      0x84D9
-#define GL_TEXTURE26                      0x84DA
-#define GL_TEXTURE27                      0x84DB
-#define GL_TEXTURE28                      0x84DC
-#define GL_TEXTURE29                      0x84DD
-#define GL_TEXTURE30                      0x84DE
-#define GL_TEXTURE31                      0x84DF
-#define GL_ACTIVE_TEXTURE                 0x84E0
-#define GL_MULTISAMPLE                    0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
-#define GL_SAMPLE_COVERAGE                0x80A0
-#define GL_SAMPLE_BUFFERS                 0x80A8
-#define GL_SAMPLES                        0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
-#define GL_TEXTURE_CUBE_MAP               0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP         0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
-#define GL_COMPRESSED_RGB                 0x84ED
-#define GL_COMPRESSED_RGBA                0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT       0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE  0x86A0
-#define GL_TEXTURE_COMPRESSED             0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
-#define GL_CLAMP_TO_BORDER                0x812D
-#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
-#define GL_MAX_TEXTURE_UNITS              0x84E2
-#define GL_TRANSPOSE_MODELVIEW_MATRIX     0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX    0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX       0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX         0x84E6
-#define GL_MULTISAMPLE_BIT                0x20000000
-#define GL_NORMAL_MAP                     0x8511
-#define GL_REFLECTION_MAP                 0x8512
-#define GL_COMPRESSED_ALPHA               0x84E9
-#define GL_COMPRESSED_LUMINANCE           0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA     0x84EB
-#define GL_COMPRESSED_INTENSITY           0x84EC
-#define GL_COMBINE                        0x8570
-#define GL_COMBINE_RGB                    0x8571
-#define GL_COMBINE_ALPHA                  0x8572
-#define GL_SOURCE0_RGB                    0x8580
-#define GL_SOURCE1_RGB                    0x8581
-#define GL_SOURCE2_RGB                    0x8582
-#define GL_SOURCE0_ALPHA                  0x8588
-#define GL_SOURCE1_ALPHA                  0x8589
-#define GL_SOURCE2_ALPHA                  0x858A
-#define GL_OPERAND0_RGB                   0x8590
-#define GL_OPERAND1_RGB                   0x8591
-#define GL_OPERAND2_RGB                   0x8592
-#define GL_OPERAND0_ALPHA                 0x8598
-#define GL_OPERAND1_ALPHA                 0x8599
-#define GL_OPERAND2_ALPHA                 0x859A
-#define GL_RGB_SCALE                      0x8573
-#define GL_ADD_SIGNED                     0x8574
-#define GL_INTERPOLATE                    0x8575
-#define GL_SUBTRACT                       0x84E7
-#define GL_CONSTANT                       0x8576
-#define GL_PRIMARY_COLOR                  0x8577
-#define GL_PREVIOUS                       0x8578
-#define GL_DOT3_RGB                       0x86AE
-#define GL_DOT3_RGBA                      0x86AF
-typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
-typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTexture (GLenum texture);
-GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);
-GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img);
-GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
-GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);
-GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s);
-GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s);
-GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s);
-GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);
-GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);
-GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t);
-GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);
-GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);
-GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);
-GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);
-GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m);
-GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);
-GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);
-GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);
-#endif
-#endif /* GL_VERSION_1_3 */
-
-#ifndef GL_VERSION_1_4
-#define GL_VERSION_1_4 1
-#define GL_BLEND_DST_RGB                  0x80C8
-#define GL_BLEND_SRC_RGB                  0x80C9
-#define GL_BLEND_DST_ALPHA                0x80CA
-#define GL_BLEND_SRC_ALPHA                0x80CB
-#define GL_POINT_FADE_THRESHOLD_SIZE      0x8128
-#define GL_DEPTH_COMPONENT16              0x81A5
-#define GL_DEPTH_COMPONENT24              0x81A6
-#define GL_DEPTH_COMPONENT32              0x81A7
-#define GL_MIRRORED_REPEAT                0x8370
-#define GL_MAX_TEXTURE_LOD_BIAS           0x84FD
-#define GL_TEXTURE_LOD_BIAS               0x8501
-#define GL_INCR_WRAP                      0x8507
-#define GL_DECR_WRAP                      0x8508
-#define GL_TEXTURE_DEPTH_SIZE             0x884A
-#define GL_TEXTURE_COMPARE_MODE           0x884C
-#define GL_TEXTURE_COMPARE_FUNC           0x884D
-#define GL_POINT_SIZE_MIN                 0x8126
-#define GL_POINT_SIZE_MAX                 0x8127
-#define GL_POINT_DISTANCE_ATTENUATION     0x8129
-#define GL_GENERATE_MIPMAP                0x8191
-#define GL_GENERATE_MIPMAP_HINT           0x8192
-#define GL_FOG_COORDINATE_SOURCE          0x8450
-#define GL_FOG_COORDINATE                 0x8451
-#define GL_FRAGMENT_DEPTH                 0x8452
-#define GL_CURRENT_FOG_COORDINATE         0x8453
-#define GL_FOG_COORDINATE_ARRAY_TYPE      0x8454
-#define GL_FOG_COORDINATE_ARRAY_STRIDE    0x8455
-#define GL_FOG_COORDINATE_ARRAY_POINTER   0x8456
-#define GL_FOG_COORDINATE_ARRAY           0x8457
-#define GL_COLOR_SUM                      0x8458
-#define GL_CURRENT_SECONDARY_COLOR        0x8459
-#define GL_SECONDARY_COLOR_ARRAY_SIZE     0x845A
-#define GL_SECONDARY_COLOR_ARRAY_TYPE     0x845B
-#define GL_SECONDARY_COLOR_ARRAY_STRIDE   0x845C
-#define GL_SECONDARY_COLOR_ARRAY_POINTER  0x845D
-#define GL_SECONDARY_COLOR_ARRAY          0x845E
-#define GL_TEXTURE_FILTER_CONTROL         0x8500
-#define GL_DEPTH_TEXTURE_MODE             0x884B
-#define GL_COMPARE_R_TO_TEXTURE           0x884E
-#define GL_FUNC_ADD                       0x8006
-#define GL_FUNC_SUBTRACT                  0x800A
-#define GL_FUNC_REVERSE_SUBTRACT          0x800B
-#define GL_MIN                            0x8007
-#define GL_MAX                            0x8008
-#define GL_CONSTANT_COLOR                 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
-#define GL_CONSTANT_ALPHA                 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
-typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
-GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
-GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
-GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glFogCoordf (GLfloat coord);
-GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);
-GLAPI void APIENTRY glFogCoordd (GLdouble coord);
-GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord);
-GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);
-GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v);
-GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);
-GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v);
-GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);
-GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v);
-GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue);
-GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v);
-GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);
-GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v);
-GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);
-GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v);
-GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);
-GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v);
-GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);
-GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v);
-GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y);
-GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y);
-GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y);
-GLAPI void APIENTRY glWindowPos2iv (const GLint *v);
-GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y);
-GLAPI void APIENTRY glWindowPos2sv (const GLshort *v);
-GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glWindowPos3iv (const GLint *v);
-GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glWindowPos3sv (const GLshort *v);
-GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-GLAPI void APIENTRY glBlendEquation (GLenum mode);
-#endif
-#endif /* GL_VERSION_1_4 */
-
-#ifndef GL_VERSION_1_5
-#define GL_VERSION_1_5 1
-#include <stddef.h>
-#ifdef __MACOSX__
-typedef long GLsizeiptr;
-typedef long GLintptr;
-#else
-typedef ptrdiff_t GLsizeiptr;
-typedef ptrdiff_t GLintptr;
-#endif
-#define GL_BUFFER_SIZE                    0x8764
-#define GL_BUFFER_USAGE                   0x8765
-#define GL_QUERY_COUNTER_BITS             0x8864
-#define GL_CURRENT_QUERY                  0x8865
-#define GL_QUERY_RESULT                   0x8866
-#define GL_QUERY_RESULT_AVAILABLE         0x8867
-#define GL_ARRAY_BUFFER                   0x8892
-#define GL_ELEMENT_ARRAY_BUFFER           0x8893
-#define GL_ARRAY_BUFFER_BINDING           0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
-#define GL_READ_ONLY                      0x88B8
-#define GL_WRITE_ONLY                     0x88B9
-#define GL_READ_WRITE                     0x88BA
-#define GL_BUFFER_ACCESS                  0x88BB
-#define GL_BUFFER_MAPPED                  0x88BC
-#define GL_BUFFER_MAP_POINTER             0x88BD
-#define GL_STREAM_DRAW                    0x88E0
-#define GL_STREAM_READ                    0x88E1
-#define GL_STREAM_COPY                    0x88E2
-#define GL_STATIC_DRAW                    0x88E4
-#define GL_STATIC_READ                    0x88E5
-#define GL_STATIC_COPY                    0x88E6
-#define GL_DYNAMIC_DRAW                   0x88E8
-#define GL_DYNAMIC_READ                   0x88E9
-#define GL_DYNAMIC_COPY                   0x88EA
-#define GL_SAMPLES_PASSED                 0x8914
-#define GL_SRC1_ALPHA                     0x8589
-#define GL_VERTEX_ARRAY_BUFFER_BINDING    0x8896
-#define GL_NORMAL_ARRAY_BUFFER_BINDING    0x8897
-#define GL_COLOR_ARRAY_BUFFER_BINDING     0x8898
-#define GL_INDEX_ARRAY_BUFFER_BINDING     0x8899
-#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
-#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
-#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
-#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
-#define GL_WEIGHT_ARRAY_BUFFER_BINDING    0x889E
-#define GL_FOG_COORD_SRC                  0x8450
-#define GL_FOG_COORD                      0x8451
-#define GL_CURRENT_FOG_COORD              0x8453
-#define GL_FOG_COORD_ARRAY_TYPE           0x8454
-#define GL_FOG_COORD_ARRAY_STRIDE         0x8455
-#define GL_FOG_COORD_ARRAY_POINTER        0x8456
-#define GL_FOG_COORD_ARRAY                0x8457
-#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D
-#define GL_SRC0_RGB                       0x8580
-#define GL_SRC1_RGB                       0x8581
-#define GL_SRC2_RGB                       0x8582
-#define GL_SRC0_ALPHA                     0x8588
-#define GL_SRC2_ALPHA                     0x858A
-typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
-typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
-typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
-typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
-GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
-GLAPI void APIENTRY glEndQuery (GLenum target);
-GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
-GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
-GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
-GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
-GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
-GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
-GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
-GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
-GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_VERSION_1_5 */
-
-#ifndef GL_VERSION_2_0
-#define GL_VERSION_2_0 1
-typedef char GLchar;
-#define GL_BLEND_EQUATION_RGB             0x8009
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED    0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE       0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE     0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE       0x8625
-#define GL_CURRENT_VERTEX_ATTRIB          0x8626
-#define GL_VERTEX_PROGRAM_POINT_SIZE      0x8642
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER    0x8645
-#define GL_STENCIL_BACK_FUNC              0x8800
-#define GL_STENCIL_BACK_FAIL              0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
-#define GL_MAX_DRAW_BUFFERS               0x8824
-#define GL_DRAW_BUFFER0                   0x8825
-#define GL_DRAW_BUFFER1                   0x8826
-#define GL_DRAW_BUFFER2                   0x8827
-#define GL_DRAW_BUFFER3                   0x8828
-#define GL_DRAW_BUFFER4                   0x8829
-#define GL_DRAW_BUFFER5                   0x882A
-#define GL_DRAW_BUFFER6                   0x882B
-#define GL_DRAW_BUFFER7                   0x882C
-#define GL_DRAW_BUFFER8                   0x882D
-#define GL_DRAW_BUFFER9                   0x882E
-#define GL_DRAW_BUFFER10                  0x882F
-#define GL_DRAW_BUFFER11                  0x8830
-#define GL_DRAW_BUFFER12                  0x8831
-#define GL_DRAW_BUFFER13                  0x8832
-#define GL_DRAW_BUFFER14                  0x8833
-#define GL_DRAW_BUFFER15                  0x8834
-#define GL_BLEND_EQUATION_ALPHA           0x883D
-#define GL_MAX_VERTEX_ATTRIBS             0x8869
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
-#define GL_MAX_TEXTURE_IMAGE_UNITS        0x8872
-#define GL_FRAGMENT_SHADER                0x8B30
-#define GL_VERTEX_SHADER                  0x8B31
-#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
-#define GL_MAX_VERTEX_UNIFORM_COMPONENTS  0x8B4A
-#define GL_MAX_VARYING_FLOATS             0x8B4B
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
-#define GL_SHADER_TYPE                    0x8B4F
-#define GL_FLOAT_VEC2                     0x8B50
-#define GL_FLOAT_VEC3                     0x8B51
-#define GL_FLOAT_VEC4                     0x8B52
-#define GL_INT_VEC2                       0x8B53
-#define GL_INT_VEC3                       0x8B54
-#define GL_INT_VEC4                       0x8B55
-#define GL_BOOL                           0x8B56
-#define GL_BOOL_VEC2                      0x8B57
-#define GL_BOOL_VEC3                      0x8B58
-#define GL_BOOL_VEC4                      0x8B59
-#define GL_FLOAT_MAT2                     0x8B5A
-#define GL_FLOAT_MAT3                     0x8B5B
-#define GL_FLOAT_MAT4                     0x8B5C
-#define GL_SAMPLER_1D                     0x8B5D
-#define GL_SAMPLER_2D                     0x8B5E
-#define GL_SAMPLER_3D                     0x8B5F
-#define GL_SAMPLER_CUBE                   0x8B60
-#define GL_SAMPLER_1D_SHADOW              0x8B61
-#define GL_SAMPLER_2D_SHADOW              0x8B62
-#define GL_DELETE_STATUS                  0x8B80
-#define GL_COMPILE_STATUS                 0x8B81
-#define GL_LINK_STATUS                    0x8B82
-#define GL_VALIDATE_STATUS                0x8B83
-#define GL_INFO_LOG_LENGTH                0x8B84
-#define GL_ATTACHED_SHADERS               0x8B85
-#define GL_ACTIVE_UNIFORMS                0x8B86
-#define GL_ACTIVE_UNIFORM_MAX_LENGTH      0x8B87
-#define GL_SHADER_SOURCE_LENGTH           0x8B88
-#define GL_ACTIVE_ATTRIBUTES              0x8B89
-#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH    0x8B8A
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
-#define GL_SHADING_LANGUAGE_VERSION       0x8B8C
-#define GL_CURRENT_PROGRAM                0x8B8D
-#define GL_POINT_SPRITE_COORD_ORIGIN      0x8CA0
-#define GL_LOWER_LEFT                     0x8CA1
-#define GL_UPPER_LEFT                     0x8CA2
-#define GL_STENCIL_BACK_REF               0x8CA3
-#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
-#define GL_STENCIL_BACK_WRITEMASK         0x8CA5
-#define GL_VERTEX_PROGRAM_TWO_SIDE        0x8643
-#define GL_POINT_SPRITE                   0x8861
-#define GL_COORD_REPLACE                  0x8862
-#define GL_MAX_TEXTURE_COORDS             0x8871
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
-typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
-typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
-typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
-typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
-typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
-typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
-typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
-typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
-typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
-GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
-GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
-GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
-GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
-GLAPI void APIENTRY glCompileShader (GLuint shader);
-GLAPI GLuint APIENTRY glCreateProgram (void);
-GLAPI GLuint APIENTRY glCreateShader (GLenum type);
-GLAPI void APIENTRY glDeleteProgram (GLuint program);
-GLAPI void APIENTRY glDeleteShader (GLuint shader);
-GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
-GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
-GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
-GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
-GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
-GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
-GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
-GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
-GLAPI void APIENTRY glLinkProgram (GLuint program);
-GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
-GLAPI void APIENTRY glUseProgram (GLuint program);
-GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
-GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
-GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glValidateProgram (GLuint program);
-GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_VERSION_2_0 */
-
-#ifndef GL_VERSION_2_1
-#define GL_VERSION_2_1 1
-#define GL_PIXEL_PACK_BUFFER              0x88EB
-#define GL_PIXEL_UNPACK_BUFFER            0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING      0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING    0x88EF
-#define GL_FLOAT_MAT2x3                   0x8B65
-#define GL_FLOAT_MAT2x4                   0x8B66
-#define GL_FLOAT_MAT3x2                   0x8B67
-#define GL_FLOAT_MAT3x4                   0x8B68
-#define GL_FLOAT_MAT4x2                   0x8B69
-#define GL_FLOAT_MAT4x3                   0x8B6A
-#define GL_SRGB                           0x8C40
-#define GL_SRGB8                          0x8C41
-#define GL_SRGB_ALPHA                     0x8C42
-#define GL_SRGB8_ALPHA8                   0x8C43
-#define GL_COMPRESSED_SRGB                0x8C48
-#define GL_COMPRESSED_SRGB_ALPHA          0x8C49
-#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
-#define GL_SLUMINANCE_ALPHA               0x8C44
-#define GL_SLUMINANCE8_ALPHA8             0x8C45
-#define GL_SLUMINANCE                     0x8C46
-#define GL_SLUMINANCE8                    0x8C47
-#define GL_COMPRESSED_SLUMINANCE          0x8C4A
-#define GL_COMPRESSED_SLUMINANCE_ALPHA    0x8C4B
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-#endif
-#endif /* GL_VERSION_2_1 */
-
-#ifndef GL_VERSION_3_0
-#define GL_VERSION_3_0 1
-typedef unsigned short GLhalf;
-#define GL_COMPARE_REF_TO_TEXTURE         0x884E
-#define GL_CLIP_DISTANCE0                 0x3000
-#define GL_CLIP_DISTANCE1                 0x3001
-#define GL_CLIP_DISTANCE2                 0x3002
-#define GL_CLIP_DISTANCE3                 0x3003
-#define GL_CLIP_DISTANCE4                 0x3004
-#define GL_CLIP_DISTANCE5                 0x3005
-#define GL_CLIP_DISTANCE6                 0x3006
-#define GL_CLIP_DISTANCE7                 0x3007
-#define GL_MAX_CLIP_DISTANCES             0x0D32
-#define GL_MAJOR_VERSION                  0x821B
-#define GL_MINOR_VERSION                  0x821C
-#define GL_NUM_EXTENSIONS                 0x821D
-#define GL_CONTEXT_FLAGS                  0x821E
-#define GL_COMPRESSED_RED                 0x8225
-#define GL_COMPRESSED_RG                  0x8226
-#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001
-#define GL_RGBA32F                        0x8814
-#define GL_RGB32F                         0x8815
-#define GL_RGBA16F                        0x881A
-#define GL_RGB16F                         0x881B
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER    0x88FD
-#define GL_MAX_ARRAY_TEXTURE_LAYERS       0x88FF
-#define GL_MIN_PROGRAM_TEXEL_OFFSET       0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET       0x8905
-#define GL_CLAMP_READ_COLOR               0x891C
-#define GL_FIXED_ONLY                     0x891D
-#define GL_MAX_VARYING_COMPONENTS         0x8B4B
-#define GL_TEXTURE_1D_ARRAY               0x8C18
-#define GL_PROXY_TEXTURE_1D_ARRAY         0x8C19
-#define GL_TEXTURE_2D_ARRAY               0x8C1A
-#define GL_PROXY_TEXTURE_2D_ARRAY         0x8C1B
-#define GL_TEXTURE_BINDING_1D_ARRAY       0x8C1C
-#define GL_TEXTURE_BINDING_2D_ARRAY       0x8C1D
-#define GL_R11F_G11F_B10F                 0x8C3A
-#define GL_UNSIGNED_INT_10F_11F_11F_REV   0x8C3B
-#define GL_RGB9_E5                        0x8C3D
-#define GL_UNSIGNED_INT_5_9_9_9_REV       0x8C3E
-#define GL_TEXTURE_SHARED_SIZE            0x8C3F
-#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
-#define GL_TRANSFORM_FEEDBACK_VARYINGS    0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
-#define GL_PRIMITIVES_GENERATED           0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
-#define GL_RASTERIZER_DISCARD             0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
-#define GL_INTERLEAVED_ATTRIBS            0x8C8C
-#define GL_SEPARATE_ATTRIBS               0x8C8D
-#define GL_TRANSFORM_FEEDBACK_BUFFER      0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
-#define GL_RGBA32UI                       0x8D70
-#define GL_RGB32UI                        0x8D71
-#define GL_RGBA16UI                       0x8D76
-#define GL_RGB16UI                        0x8D77
-#define GL_RGBA8UI                        0x8D7C
-#define GL_RGB8UI                         0x8D7D
-#define GL_RGBA32I                        0x8D82
-#define GL_RGB32I                         0x8D83
-#define GL_RGBA16I                        0x8D88
-#define GL_RGB16I                         0x8D89
-#define GL_RGBA8I                         0x8D8E
-#define GL_RGB8I                          0x8D8F
-#define GL_RED_INTEGER                    0x8D94
-#define GL_GREEN_INTEGER                  0x8D95
-#define GL_BLUE_INTEGER                   0x8D96
-#define GL_RGB_INTEGER                    0x8D98
-#define GL_RGBA_INTEGER                   0x8D99
-#define GL_BGR_INTEGER                    0x8D9A
-#define GL_BGRA_INTEGER                   0x8D9B
-#define GL_SAMPLER_1D_ARRAY               0x8DC0
-#define GL_SAMPLER_2D_ARRAY               0x8DC1
-#define GL_SAMPLER_1D_ARRAY_SHADOW        0x8DC3
-#define GL_SAMPLER_2D_ARRAY_SHADOW        0x8DC4
-#define GL_SAMPLER_CUBE_SHADOW            0x8DC5
-#define GL_UNSIGNED_INT_VEC2              0x8DC6
-#define GL_UNSIGNED_INT_VEC3              0x8DC7
-#define GL_UNSIGNED_INT_VEC4              0x8DC8
-#define GL_INT_SAMPLER_1D                 0x8DC9
-#define GL_INT_SAMPLER_2D                 0x8DCA
-#define GL_INT_SAMPLER_3D                 0x8DCB
-#define GL_INT_SAMPLER_CUBE               0x8DCC
-#define GL_INT_SAMPLER_1D_ARRAY           0x8DCE
-#define GL_INT_SAMPLER_2D_ARRAY           0x8DCF
-#define GL_UNSIGNED_INT_SAMPLER_1D        0x8DD1
-#define GL_UNSIGNED_INT_SAMPLER_2D        0x8DD2
-#define GL_UNSIGNED_INT_SAMPLER_3D        0x8DD3
-#define GL_UNSIGNED_INT_SAMPLER_CUBE      0x8DD4
-#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY  0x8DD6
-#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY  0x8DD7
-#define GL_QUERY_WAIT                     0x8E13
-#define GL_QUERY_NO_WAIT                  0x8E14
-#define GL_QUERY_BY_REGION_WAIT           0x8E15
-#define GL_QUERY_BY_REGION_NO_WAIT        0x8E16
-#define GL_BUFFER_ACCESS_FLAGS            0x911F
-#define GL_BUFFER_MAP_LENGTH              0x9120
-#define GL_BUFFER_MAP_OFFSET              0x9121
-#define GL_DEPTH_COMPONENT32F             0x8CAC
-#define GL_DEPTH32F_STENCIL8              0x8CAD
-#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
-#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
-#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
-#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
-#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
-#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
-#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
-#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
-#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
-#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
-#define GL_FRAMEBUFFER_DEFAULT            0x8218
-#define GL_FRAMEBUFFER_UNDEFINED          0x8219
-#define GL_DEPTH_STENCIL_ATTACHMENT       0x821A
-#define GL_MAX_RENDERBUFFER_SIZE          0x84E8
-#define GL_DEPTH_STENCIL                  0x84F9
-#define GL_UNSIGNED_INT_24_8              0x84FA
-#define GL_DEPTH24_STENCIL8               0x88F0
-#define GL_TEXTURE_STENCIL_SIZE           0x88F1
-#define GL_TEXTURE_RED_TYPE               0x8C10
-#define GL_TEXTURE_GREEN_TYPE             0x8C11
-#define GL_TEXTURE_BLUE_TYPE              0x8C12
-#define GL_TEXTURE_ALPHA_TYPE             0x8C13
-#define GL_TEXTURE_DEPTH_TYPE             0x8C16
-#define GL_UNSIGNED_NORMALIZED            0x8C17
-#define GL_FRAMEBUFFER_BINDING            0x8CA6
-#define GL_DRAW_FRAMEBUFFER_BINDING       0x8CA6
-#define GL_RENDERBUFFER_BINDING           0x8CA7
-#define GL_READ_FRAMEBUFFER               0x8CA8
-#define GL_DRAW_FRAMEBUFFER               0x8CA9
-#define GL_READ_FRAMEBUFFER_BINDING       0x8CAA
-#define GL_RENDERBUFFER_SAMPLES           0x8CAB
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
-#define GL_FRAMEBUFFER_COMPLETE           0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
-#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
-#define GL_FRAMEBUFFER_UNSUPPORTED        0x8CDD
-#define GL_MAX_COLOR_ATTACHMENTS          0x8CDF
-#define GL_COLOR_ATTACHMENT0              0x8CE0
-#define GL_COLOR_ATTACHMENT1              0x8CE1
-#define GL_COLOR_ATTACHMENT2              0x8CE2
-#define GL_COLOR_ATTACHMENT3              0x8CE3
-#define GL_COLOR_ATTACHMENT4              0x8CE4
-#define GL_COLOR_ATTACHMENT5              0x8CE5
-#define GL_COLOR_ATTACHMENT6              0x8CE6
-#define GL_COLOR_ATTACHMENT7              0x8CE7
-#define GL_COLOR_ATTACHMENT8              0x8CE8
-#define GL_COLOR_ATTACHMENT9              0x8CE9
-#define GL_COLOR_ATTACHMENT10             0x8CEA
-#define GL_COLOR_ATTACHMENT11             0x8CEB
-#define GL_COLOR_ATTACHMENT12             0x8CEC
-#define GL_COLOR_ATTACHMENT13             0x8CED
-#define GL_COLOR_ATTACHMENT14             0x8CEE
-#define GL_COLOR_ATTACHMENT15             0x8CEF
-#define GL_DEPTH_ATTACHMENT               0x8D00
-#define GL_STENCIL_ATTACHMENT             0x8D20
-#define GL_FRAMEBUFFER                    0x8D40
-#define GL_RENDERBUFFER                   0x8D41
-#define GL_RENDERBUFFER_WIDTH             0x8D42
-#define GL_RENDERBUFFER_HEIGHT            0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44
-#define GL_STENCIL_INDEX1                 0x8D46
-#define GL_STENCIL_INDEX4                 0x8D47
-#define GL_STENCIL_INDEX8                 0x8D48
-#define GL_STENCIL_INDEX16                0x8D49
-#define GL_RENDERBUFFER_RED_SIZE          0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
-#define GL_MAX_SAMPLES                    0x8D57
-#define GL_INDEX                          0x8222
-#define GL_TEXTURE_LUMINANCE_TYPE         0x8C14
-#define GL_TEXTURE_INTENSITY_TYPE         0x8C15
-#define GL_FRAMEBUFFER_SRGB               0x8DB9
-#define GL_HALF_FLOAT                     0x140B
-#define GL_MAP_READ_BIT                   0x0001
-#define GL_MAP_WRITE_BIT                  0x0002
-#define GL_MAP_INVALIDATE_RANGE_BIT       0x0004
-#define GL_MAP_INVALIDATE_BUFFER_BIT      0x0008
-#define GL_MAP_FLUSH_EXPLICIT_BIT         0x0010
-#define GL_MAP_UNSYNCHRONIZED_BIT         0x0020
-#define GL_COMPRESSED_RED_RGTC1           0x8DBB
-#define GL_COMPRESSED_SIGNED_RED_RGTC1    0x8DBC
-#define GL_COMPRESSED_RG_RGTC2            0x8DBD
-#define GL_COMPRESSED_SIGNED_RG_RGTC2     0x8DBE
-#define GL_RG                             0x8227
-#define GL_RG_INTEGER                     0x8228
-#define GL_R8                             0x8229
-#define GL_R16                            0x822A
-#define GL_RG8                            0x822B
-#define GL_RG16                           0x822C
-#define GL_R16F                           0x822D
-#define GL_R32F                           0x822E
-#define GL_RG16F                          0x822F
-#define GL_RG32F                          0x8230
-#define GL_R8I                            0x8231
-#define GL_R8UI                           0x8232
-#define GL_R16I                           0x8233
-#define GL_R16UI                          0x8234
-#define GL_R32I                           0x8235
-#define GL_R32UI                          0x8236
-#define GL_RG8I                           0x8237
-#define GL_RG8UI                          0x8238
-#define GL_RG16I                          0x8239
-#define GL_RG16UI                         0x823A
-#define GL_RG32I                          0x823B
-#define GL_RG32UI                         0x823C
-#define GL_VERTEX_ARRAY_BINDING           0x85B5
-#define GL_CLAMP_VERTEX_COLOR             0x891A
-#define GL_CLAMP_FRAGMENT_COLOR           0x891B
-#define GL_ALPHA_INTEGER                  0x8D97
-typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
-typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
-typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
-typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
-typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
-typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
-typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
-typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
-GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
-GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
-GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
-GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
-GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedback (void);
-GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
-GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
-GLAPI void APIENTRY glEndConditionalRender (void);
-GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
-GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
-GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
-GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
-GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
-GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
-GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
-GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
-GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
-GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
-GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);
-GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
-GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
-GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
-GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
-GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
-GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
-GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
-GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
-GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateMipmap (GLenum target);
-GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glBindVertexArray (GLuint array);
-GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
-GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
-GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
-#endif
-#endif /* GL_VERSION_3_0 */
-
-#ifndef GL_VERSION_3_1
-#define GL_VERSION_3_1 1
-#define GL_SAMPLER_2D_RECT                0x8B63
-#define GL_SAMPLER_2D_RECT_SHADOW         0x8B64
-#define GL_SAMPLER_BUFFER                 0x8DC2
-#define GL_INT_SAMPLER_2D_RECT            0x8DCD
-#define GL_INT_SAMPLER_BUFFER             0x8DD0
-#define GL_UNSIGNED_INT_SAMPLER_2D_RECT   0x8DD5
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER    0x8DD8
-#define GL_TEXTURE_BUFFER                 0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE        0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER         0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
-#define GL_TEXTURE_RECTANGLE              0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE      0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE        0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE     0x84F8
-#define GL_R8_SNORM                       0x8F94
-#define GL_RG8_SNORM                      0x8F95
-#define GL_RGB8_SNORM                     0x8F96
-#define GL_RGBA8_SNORM                    0x8F97
-#define GL_R16_SNORM                      0x8F98
-#define GL_RG16_SNORM                     0x8F99
-#define GL_RGB16_SNORM                    0x8F9A
-#define GL_RGBA16_SNORM                   0x8F9B
-#define GL_SIGNED_NORMALIZED              0x8F9C
-#define GL_PRIMITIVE_RESTART              0x8F9D
-#define GL_PRIMITIVE_RESTART_INDEX        0x8F9E
-#define GL_COPY_READ_BUFFER               0x8F36
-#define GL_COPY_WRITE_BUFFER              0x8F37
-#define GL_UNIFORM_BUFFER                 0x8A11
-#define GL_UNIFORM_BUFFER_BINDING         0x8A28
-#define GL_UNIFORM_BUFFER_START           0x8A29
-#define GL_UNIFORM_BUFFER_SIZE            0x8A2A
-#define GL_MAX_VERTEX_UNIFORM_BLOCKS      0x8A2B
-#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS    0x8A2D
-#define GL_MAX_COMBINED_UNIFORM_BLOCKS    0x8A2E
-#define GL_MAX_UNIFORM_BUFFER_BINDINGS    0x8A2F
-#define GL_MAX_UNIFORM_BLOCK_SIZE         0x8A30
-#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
-#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
-#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
-#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
-#define GL_ACTIVE_UNIFORM_BLOCKS          0x8A36
-#define GL_UNIFORM_TYPE                   0x8A37
-#define GL_UNIFORM_SIZE                   0x8A38
-#define GL_UNIFORM_NAME_LENGTH            0x8A39
-#define GL_UNIFORM_BLOCK_INDEX            0x8A3A
-#define GL_UNIFORM_OFFSET                 0x8A3B
-#define GL_UNIFORM_ARRAY_STRIDE           0x8A3C
-#define GL_UNIFORM_MATRIX_STRIDE          0x8A3D
-#define GL_UNIFORM_IS_ROW_MAJOR           0x8A3E
-#define GL_UNIFORM_BLOCK_BINDING          0x8A3F
-#define GL_UNIFORM_BLOCK_DATA_SIZE        0x8A40
-#define GL_UNIFORM_BLOCK_NAME_LENGTH      0x8A41
-#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS  0x8A42
-#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
-#define GL_INVALID_INDEX                  0xFFFFFFFFu
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
-typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
-GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
-GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
-GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
-GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
-GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
-GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
-#endif
-#endif /* GL_VERSION_3_1 */
-
-#ifndef GL_VERSION_3_2
-#define GL_VERSION_3_2 1
-typedef struct __GLsync *GLsync;
-#ifndef GLEXT_64_TYPES_DEFINED
-/* This code block is duplicated in glxext.h, so must be protected */
-#define GLEXT_64_TYPES_DEFINED
-/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
-/* (as used in the GL_EXT_timer_query extension). */
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include <inttypes.h>
-#elif defined(__sun__) || defined(__digital__)
-#include <inttypes.h>
-#if defined(__STDC__)
-#if defined(__arch64__) || defined(_LP64)
-typedef long int int64_t;
-typedef unsigned long int uint64_t;
-#else
-typedef long long int int64_t;
-typedef unsigned long long int uint64_t;
-#endif /* __arch64__ */
-#endif /* __STDC__ */
-#elif defined( __VMS ) || defined(__sgi)
-#include <inttypes.h>
-#elif defined(__SCO__) || defined(__USLC__)
-#include <stdint.h>
-#elif defined(__UNIXOS2__) || defined(__SOL64__)
-typedef long int int32_t;
-typedef long long int int64_t;
-typedef unsigned long long int uint64_t;
-#elif defined(_WIN32) && defined(__GNUC__)
-#include <stdint.h>
-#elif defined(_WIN32)
-typedef __int32 int32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else
-/* Fallback if nothing above works */
-#include <inttypes.h>
-#endif
-#endif
-typedef uint64_t GLuint64;
-typedef int64_t GLint64;
-#define GL_CONTEXT_CORE_PROFILE_BIT       0x00000001
-#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
-#define GL_LINES_ADJACENCY                0x000A
-#define GL_LINE_STRIP_ADJACENCY           0x000B
-#define GL_TRIANGLES_ADJACENCY            0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY       0x000D
-#define GL_PROGRAM_POINT_SIZE             0x8642
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
-#define GL_GEOMETRY_SHADER                0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT          0x8916
-#define GL_GEOMETRY_INPUT_TYPE            0x8917
-#define GL_GEOMETRY_OUTPUT_TYPE           0x8918
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES   0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
-#define GL_MAX_VERTEX_OUTPUT_COMPONENTS   0x9122
-#define GL_MAX_GEOMETRY_INPUT_COMPONENTS  0x9123
-#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
-#define GL_MAX_FRAGMENT_INPUT_COMPONENTS  0x9125
-#define GL_CONTEXT_PROFILE_MASK           0x9126
-#define GL_DEPTH_CLAMP                    0x864F
-#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
-#define GL_FIRST_VERTEX_CONVENTION        0x8E4D
-#define GL_LAST_VERTEX_CONVENTION         0x8E4E
-#define GL_PROVOKING_VERTEX               0x8E4F
-#define GL_TEXTURE_CUBE_MAP_SEAMLESS      0x884F
-#define GL_MAX_SERVER_WAIT_TIMEOUT        0x9111
-#define GL_OBJECT_TYPE                    0x9112
-#define GL_SYNC_CONDITION                 0x9113
-#define GL_SYNC_STATUS                    0x9114
-#define GL_SYNC_FLAGS                     0x9115
-#define GL_SYNC_FENCE                     0x9116
-#define GL_SYNC_GPU_COMMANDS_COMPLETE     0x9117
-#define GL_UNSIGNALED                     0x9118
-#define GL_SIGNALED                       0x9119
-#define GL_ALREADY_SIGNALED               0x911A
-#define GL_TIMEOUT_EXPIRED                0x911B
-#define GL_CONDITION_SATISFIED            0x911C
-#define GL_WAIT_FAILED                    0x911D
-#define GL_TIMEOUT_IGNORED                0xFFFFFFFFFFFFFFFFull
-#define GL_SYNC_FLUSH_COMMANDS_BIT        0x00000001
-#define GL_SAMPLE_POSITION                0x8E50
-#define GL_SAMPLE_MASK                    0x8E51
-#define GL_SAMPLE_MASK_VALUE              0x8E52
-#define GL_MAX_SAMPLE_MASK_WORDS          0x8E59
-#define GL_TEXTURE_2D_MULTISAMPLE         0x9100
-#define GL_PROXY_TEXTURE_2D_MULTISAMPLE   0x9101
-#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY   0x9102
-#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
-#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
-#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
-#define GL_TEXTURE_SAMPLES                0x9106
-#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
-#define GL_SAMPLER_2D_MULTISAMPLE         0x9108
-#define GL_INT_SAMPLER_2D_MULTISAMPLE     0x9109
-#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
-#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY   0x910B
-#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
-#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
-#define GL_MAX_COLOR_TEXTURE_SAMPLES      0x910E
-#define GL_MAX_DEPTH_TEXTURE_SAMPLES      0x910F
-#define GL_MAX_INTEGER_SAMPLES            0x9110
-typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
-typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
-typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
-typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
-typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
-typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
-typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
-typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
-GLAPI void APIENTRY glProvokingVertex (GLenum mode);
-GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
-GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
-GLAPI void APIENTRY glDeleteSync (GLsync sync);
-GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data);
-GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
-GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
-GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
-#endif
-#endif /* GL_VERSION_3_2 */
-
-#ifndef GL_VERSION_3_3
-#define GL_VERSION_3_3 1
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR    0x88FE
-#define GL_SRC1_COLOR                     0x88F9
-#define GL_ONE_MINUS_SRC1_COLOR           0x88FA
-#define GL_ONE_MINUS_SRC1_ALPHA           0x88FB
-#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS   0x88FC
-#define GL_ANY_SAMPLES_PASSED             0x8C2F
-#define GL_SAMPLER_BINDING                0x8919
-#define GL_RGB10_A2UI                     0x906F
-#define GL_TEXTURE_SWIZZLE_R              0x8E42
-#define GL_TEXTURE_SWIZZLE_G              0x8E43
-#define GL_TEXTURE_SWIZZLE_B              0x8E44
-#define GL_TEXTURE_SWIZZLE_A              0x8E45
-#define GL_TEXTURE_SWIZZLE_RGBA           0x8E46
-#define GL_TIME_ELAPSED                   0x88BF
-#define GL_TIMESTAMP                      0x8E28
-#define GL_INT_2_10_10_10_REV             0x8D9F
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
-typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
-typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
-typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value);
-typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
-typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color);
-typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
-typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
-GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
-GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
-GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
-GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
-GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
-GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
-GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
-GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
-GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
-GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
-GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor);
-GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value);
-GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value);
-GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value);
-GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value);
-GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value);
-GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value);
-GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color);
-GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color);
-GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color);
-GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color);
-GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color);
-GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color);
-#endif
-#endif /* GL_VERSION_3_3 */
-
-#ifndef GL_VERSION_4_0
-#define GL_VERSION_4_0 1
-#define GL_SAMPLE_SHADING                 0x8C36
-#define GL_MIN_SAMPLE_SHADING_VALUE       0x8C37
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
-#define GL_TEXTURE_CUBE_MAP_ARRAY         0x9009
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY   0x900B
-#define GL_SAMPLER_CUBE_MAP_ARRAY         0x900C
-#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW  0x900D
-#define GL_INT_SAMPLER_CUBE_MAP_ARRAY     0x900E
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
-#define GL_DRAW_INDIRECT_BUFFER           0x8F3F
-#define GL_DRAW_INDIRECT_BUFFER_BINDING   0x8F43
-#define GL_GEOMETRY_SHADER_INVOCATIONS    0x887F
-#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
-#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
-#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
-#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
-#define GL_MAX_VERTEX_STREAMS             0x8E71
-#define GL_DOUBLE_VEC2                    0x8FFC
-#define GL_DOUBLE_VEC3                    0x8FFD
-#define GL_DOUBLE_VEC4                    0x8FFE
-#define GL_DOUBLE_MAT2                    0x8F46
-#define GL_DOUBLE_MAT3                    0x8F47
-#define GL_DOUBLE_MAT4                    0x8F48
-#define GL_DOUBLE_MAT2x3                  0x8F49
-#define GL_DOUBLE_MAT2x4                  0x8F4A
-#define GL_DOUBLE_MAT3x2                  0x8F4B
-#define GL_DOUBLE_MAT3x4                  0x8F4C
-#define GL_DOUBLE_MAT4x2                  0x8F4D
-#define GL_DOUBLE_MAT4x3                  0x8F4E
-#define GL_ACTIVE_SUBROUTINES             0x8DE5
-#define GL_ACTIVE_SUBROUTINE_UNIFORMS     0x8DE6
-#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
-#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH   0x8E48
-#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
-#define GL_MAX_SUBROUTINES                0x8DE7
-#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
-#define GL_NUM_COMPATIBLE_SUBROUTINES     0x8E4A
-#define GL_COMPATIBLE_SUBROUTINES         0x8E4B
-#define GL_PATCHES                        0x000E
-#define GL_PATCH_VERTICES                 0x8E72
-#define GL_PATCH_DEFAULT_INNER_LEVEL      0x8E73
-#define GL_PATCH_DEFAULT_OUTER_LEVEL      0x8E74
-#define GL_TESS_CONTROL_OUTPUT_VERTICES   0x8E75
-#define GL_TESS_GEN_MODE                  0x8E76
-#define GL_TESS_GEN_SPACING               0x8E77
-#define GL_TESS_GEN_VERTEX_ORDER          0x8E78
-#define GL_TESS_GEN_POINT_MODE            0x8E79
-#define GL_ISOLINES                       0x8E7A
-#define GL_FRACTIONAL_ODD                 0x8E7B
-#define GL_FRACTIONAL_EVEN                0x8E7C
-#define GL_MAX_PATCH_VERTICES             0x8E7D
-#define GL_MAX_TESS_GEN_LEVEL             0x8E7E
-#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
-#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
-#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
-#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
-#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
-#define GL_MAX_TESS_PATCH_COMPONENTS      0x8E84
-#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
-#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
-#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
-#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
-#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
-#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
-#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
-#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
-#define GL_TESS_EVALUATION_SHADER         0x8E87
-#define GL_TESS_CONTROL_SHADER            0x8E88
-#define GL_TRANSFORM_FEEDBACK             0x8E22
-#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
-#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
-#define GL_TRANSFORM_FEEDBACK_BINDING     0x8E25
-#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
-typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
-typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
-typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
-typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
-typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
-typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
-typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
-typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
-typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
-typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShading (GLfloat value);
-GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect);
-GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect);
-GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
-GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
-GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
-GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
-GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
-GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
-GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
-GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
-GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
-GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
-GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
-GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
-GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
-GLAPI void APIENTRY glPauseTransformFeedback (void);
-GLAPI void APIENTRY glResumeTransformFeedback (void);
-GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
-GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
-GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
-GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
-GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
-#endif
-#endif /* GL_VERSION_4_0 */
-
-#ifndef GL_VERSION_4_1
-#define GL_VERSION_4_1 1
-#define GL_FIXED                          0x140C
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
-#define GL_LOW_FLOAT                      0x8DF0
-#define GL_MEDIUM_FLOAT                   0x8DF1
-#define GL_HIGH_FLOAT                     0x8DF2
-#define GL_LOW_INT                        0x8DF3
-#define GL_MEDIUM_INT                     0x8DF4
-#define GL_HIGH_INT                       0x8DF5
-#define GL_SHADER_COMPILER                0x8DFA
-#define GL_SHADER_BINARY_FORMATS          0x8DF8
-#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
-#define GL_MAX_VERTEX_UNIFORM_VECTORS     0x8DFB
-#define GL_MAX_VARYING_VECTORS            0x8DFC
-#define GL_MAX_FRAGMENT_UNIFORM_VECTORS   0x8DFD
-#define GL_RGB565                         0x8D62
-#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
-#define GL_PROGRAM_BINARY_LENGTH          0x8741
-#define GL_NUM_PROGRAM_BINARY_FORMATS     0x87FE
-#define GL_PROGRAM_BINARY_FORMATS         0x87FF
-#define GL_VERTEX_SHADER_BIT              0x00000001
-#define GL_FRAGMENT_SHADER_BIT            0x00000002
-#define GL_GEOMETRY_SHADER_BIT            0x00000004
-#define GL_TESS_CONTROL_SHADER_BIT        0x00000008
-#define GL_TESS_EVALUATION_SHADER_BIT     0x00000010
-#define GL_ALL_SHADER_BITS                0xFFFFFFFF
-#define GL_PROGRAM_SEPARABLE              0x8258
-#define GL_ACTIVE_PROGRAM                 0x8259
-#define GL_PROGRAM_PIPELINE_BINDING       0x825A
-#define GL_MAX_VIEWPORTS                  0x825B
-#define GL_VIEWPORT_SUBPIXEL_BITS         0x825C
-#define GL_VIEWPORT_BOUNDS_RANGE          0x825D
-#define GL_LAYER_PROVOKING_VERTEX         0x825E
-#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
-#define GL_UNDEFINED_VERTEX               0x8260
-typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
-typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
-typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
-typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
-typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
-typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
-typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
-typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings);
-typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
-typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
-typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);
-typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f);
-typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReleaseShaderCompiler (void);
-GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
-GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
-GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f);
-GLAPI void APIENTRY glClearDepthf (GLfloat d);
-GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
-GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
-GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
-GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);
-GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program);
-GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings);
-GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);
-GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines);
-GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);
-GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0);
-GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0);
-GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0);
-GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0);
-GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);
-GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
-GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
-GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
-GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v);
-GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f);
-GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data);
-GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);
-#endif
-#endif /* GL_VERSION_4_1 */
-
-#ifndef GL_VERSION_4_2
-#define GL_VERSION_4_2 1
-#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH  0x9127
-#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
-#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH  0x9129
-#define GL_UNPACK_COMPRESSED_BLOCK_SIZE   0x912A
-#define GL_PACK_COMPRESSED_BLOCK_WIDTH    0x912B
-#define GL_PACK_COMPRESSED_BLOCK_HEIGHT   0x912C
-#define GL_PACK_COMPRESSED_BLOCK_DEPTH    0x912D
-#define GL_PACK_COMPRESSED_BLOCK_SIZE     0x912E
-#define GL_NUM_SAMPLE_COUNTS              0x9380
-#define GL_MIN_MAP_BUFFER_ALIGNMENT       0x90BC
-#define GL_ATOMIC_COUNTER_BUFFER          0x92C0
-#define GL_ATOMIC_COUNTER_BUFFER_BINDING  0x92C1
-#define GL_ATOMIC_COUNTER_BUFFER_START    0x92C2
-#define GL_ATOMIC_COUNTER_BUFFER_SIZE     0x92C3
-#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
-#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
-#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
-#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
-#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
-#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
-#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
-#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
-#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
-#define GL_MAX_VERTEX_ATOMIC_COUNTERS     0x92D2
-#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
-#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
-#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS   0x92D5
-#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS   0x92D6
-#define GL_MAX_COMBINED_ATOMIC_COUNTERS   0x92D7
-#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
-#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
-#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS  0x92D9
-#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
-#define GL_UNSIGNED_INT_ATOMIC_COUNTER    0x92DB
-#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
-#define GL_ELEMENT_ARRAY_BARRIER_BIT      0x00000002
-#define GL_UNIFORM_BARRIER_BIT            0x00000004
-#define GL_TEXTURE_FETCH_BARRIER_BIT      0x00000008
-#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
-#define GL_COMMAND_BARRIER_BIT            0x00000040
-#define GL_PIXEL_BUFFER_BARRIER_BIT       0x00000080
-#define GL_TEXTURE_UPDATE_BARRIER_BIT     0x00000100
-#define GL_BUFFER_UPDATE_BARRIER_BIT      0x00000200
-#define GL_FRAMEBUFFER_BARRIER_BIT        0x00000400
-#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
-#define GL_ATOMIC_COUNTER_BARRIER_BIT     0x00001000
-#define GL_ALL_BARRIER_BITS               0xFFFFFFFF
-#define GL_MAX_IMAGE_UNITS                0x8F38
-#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
-#define GL_IMAGE_BINDING_NAME             0x8F3A
-#define GL_IMAGE_BINDING_LEVEL            0x8F3B
-#define GL_IMAGE_BINDING_LAYERED          0x8F3C
-#define GL_IMAGE_BINDING_LAYER            0x8F3D
-#define GL_IMAGE_BINDING_ACCESS           0x8F3E
-#define GL_IMAGE_1D                       0x904C
-#define GL_IMAGE_2D                       0x904D
-#define GL_IMAGE_3D                       0x904E
-#define GL_IMAGE_2D_RECT                  0x904F
-#define GL_IMAGE_CUBE                     0x9050
-#define GL_IMAGE_BUFFER                   0x9051
-#define GL_IMAGE_1D_ARRAY                 0x9052
-#define GL_IMAGE_2D_ARRAY                 0x9053
-#define GL_IMAGE_CUBE_MAP_ARRAY           0x9054
-#define GL_IMAGE_2D_MULTISAMPLE           0x9055
-#define GL_IMAGE_2D_MULTISAMPLE_ARRAY     0x9056
-#define GL_INT_IMAGE_1D                   0x9057
-#define GL_INT_IMAGE_2D                   0x9058
-#define GL_INT_IMAGE_3D                   0x9059
-#define GL_INT_IMAGE_2D_RECT              0x905A
-#define GL_INT_IMAGE_CUBE                 0x905B
-#define GL_INT_IMAGE_BUFFER               0x905C
-#define GL_INT_IMAGE_1D_ARRAY             0x905D
-#define GL_INT_IMAGE_2D_ARRAY             0x905E
-#define GL_INT_IMAGE_CUBE_MAP_ARRAY       0x905F
-#define GL_INT_IMAGE_2D_MULTISAMPLE       0x9060
-#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
-#define GL_UNSIGNED_INT_IMAGE_1D          0x9062
-#define GL_UNSIGNED_INT_IMAGE_2D          0x9063
-#define GL_UNSIGNED_INT_IMAGE_3D          0x9064
-#define GL_UNSIGNED_INT_IMAGE_2D_RECT     0x9065
-#define GL_UNSIGNED_INT_IMAGE_CUBE        0x9066
-#define GL_UNSIGNED_INT_IMAGE_BUFFER      0x9067
-#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY    0x9068
-#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY    0x9069
-#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
-#define GL_MAX_IMAGE_SAMPLES              0x906D
-#define GL_IMAGE_BINDING_FORMAT           0x906E
-#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
-#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
-#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
-#define GL_MAX_VERTEX_IMAGE_UNIFORMS      0x90CA
-#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
-#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
-#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS    0x90CD
-#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS    0x90CE
-#define GL_MAX_COMBINED_IMAGE_UNIFORMS    0x90CF
-#define GL_COMPRESSED_RGBA_BPTC_UNORM     0x8E8C
-#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
-#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
-#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
-#define GL_TEXTURE_IMMUTABLE_FORMAT       0x912F
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
-typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
-typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
-GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
-GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
-GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
-GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
-GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers);
-GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount);
-GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
-#endif
-#endif /* GL_VERSION_4_2 */
-
-#ifndef GL_VERSION_4_3
-#define GL_VERSION_4_3 1
-typedef void (APIENTRY  *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_NUM_SHADING_LANGUAGE_VERSIONS  0x82E9
-#define GL_VERTEX_ATTRIB_ARRAY_LONG       0x874E
-#define GL_COMPRESSED_RGB8_ETC2           0x9274
-#define GL_COMPRESSED_SRGB8_ETC2          0x9275
-#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
-#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
-#define GL_COMPRESSED_RGBA8_ETC2_EAC      0x9278
-#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
-#define GL_COMPRESSED_R11_EAC             0x9270
-#define GL_COMPRESSED_SIGNED_R11_EAC      0x9271
-#define GL_COMPRESSED_RG11_EAC            0x9272
-#define GL_COMPRESSED_SIGNED_RG11_EAC     0x9273
-#define GL_PRIMITIVE_RESTART_FIXED_INDEX  0x8D69
-#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
-#define GL_MAX_ELEMENT_INDEX              0x8D6B
-#define GL_COMPUTE_SHADER                 0x91B9
-#define GL_MAX_COMPUTE_UNIFORM_BLOCKS     0x91BB
-#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
-#define GL_MAX_COMPUTE_IMAGE_UNIFORMS     0x91BD
-#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
-#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
-#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
-#define GL_MAX_COMPUTE_ATOMIC_COUNTERS    0x8265
-#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
-#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
-#define GL_MAX_COMPUTE_WORK_GROUP_COUNT   0x91BE
-#define GL_MAX_COMPUTE_WORK_GROUP_SIZE    0x91BF
-#define GL_COMPUTE_WORK_GROUP_SIZE        0x8267
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
-#define GL_DISPATCH_INDIRECT_BUFFER       0x90EE
-#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS       0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION        0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM      0x8245
-#define GL_DEBUG_SOURCE_API               0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM     0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER   0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY       0x8249
-#define GL_DEBUG_SOURCE_APPLICATION       0x824A
-#define GL_DEBUG_SOURCE_OTHER             0x824B
-#define GL_DEBUG_TYPE_ERROR               0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR  0x824E
-#define GL_DEBUG_TYPE_PORTABILITY         0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE         0x8250
-#define GL_DEBUG_TYPE_OTHER               0x8251
-#define GL_MAX_DEBUG_MESSAGE_LENGTH       0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES      0x9144
-#define GL_DEBUG_LOGGED_MESSAGES          0x9145
-#define GL_DEBUG_SEVERITY_HIGH            0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM          0x9147
-#define GL_DEBUG_SEVERITY_LOW             0x9148
-#define GL_DEBUG_TYPE_MARKER              0x8268
-#define GL_DEBUG_TYPE_PUSH_GROUP          0x8269
-#define GL_DEBUG_TYPE_POP_GROUP           0x826A
-#define GL_DEBUG_SEVERITY_NOTIFICATION    0x826B
-#define GL_MAX_DEBUG_GROUP_STACK_DEPTH    0x826C
-#define GL_DEBUG_GROUP_STACK_DEPTH        0x826D
-#define GL_BUFFER                         0x82E0
-#define GL_SHADER                         0x82E1
-#define GL_PROGRAM                        0x82E2
-#define GL_QUERY                          0x82E3
-#define GL_PROGRAM_PIPELINE               0x82E4
-#define GL_SAMPLER                        0x82E6
-#define GL_MAX_LABEL_LENGTH               0x82E8
-#define GL_DEBUG_OUTPUT                   0x92E0
-#define GL_CONTEXT_FLAG_DEBUG_BIT         0x00000002
-#define GL_MAX_UNIFORM_LOCATIONS          0x826E
-#define GL_FRAMEBUFFER_DEFAULT_WIDTH      0x9310
-#define GL_FRAMEBUFFER_DEFAULT_HEIGHT     0x9311
-#define GL_FRAMEBUFFER_DEFAULT_LAYERS     0x9312
-#define GL_FRAMEBUFFER_DEFAULT_SAMPLES    0x9313
-#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
-#define GL_MAX_FRAMEBUFFER_WIDTH          0x9315
-#define GL_MAX_FRAMEBUFFER_HEIGHT         0x9316
-#define GL_MAX_FRAMEBUFFER_LAYERS         0x9317
-#define GL_MAX_FRAMEBUFFER_SAMPLES        0x9318
-#define GL_INTERNALFORMAT_SUPPORTED       0x826F
-#define GL_INTERNALFORMAT_PREFERRED       0x8270
-#define GL_INTERNALFORMAT_RED_SIZE        0x8271
-#define GL_INTERNALFORMAT_GREEN_SIZE      0x8272
-#define GL_INTERNALFORMAT_BLUE_SIZE       0x8273
-#define GL_INTERNALFORMAT_ALPHA_SIZE      0x8274
-#define GL_INTERNALFORMAT_DEPTH_SIZE      0x8275
-#define GL_INTERNALFORMAT_STENCIL_SIZE    0x8276
-#define GL_INTERNALFORMAT_SHARED_SIZE     0x8277
-#define GL_INTERNALFORMAT_RED_TYPE        0x8278
-#define GL_INTERNALFORMAT_GREEN_TYPE      0x8279
-#define GL_INTERNALFORMAT_BLUE_TYPE       0x827A
-#define GL_INTERNALFORMAT_ALPHA_TYPE      0x827B
-#define GL_INTERNALFORMAT_DEPTH_TYPE      0x827C
-#define GL_INTERNALFORMAT_STENCIL_TYPE    0x827D
-#define GL_MAX_WIDTH                      0x827E
-#define GL_MAX_HEIGHT                     0x827F
-#define GL_MAX_DEPTH                      0x8280
-#define GL_MAX_LAYERS                     0x8281
-#define GL_MAX_COMBINED_DIMENSIONS        0x8282
-#define GL_COLOR_COMPONENTS               0x8283
-#define GL_DEPTH_COMPONENTS               0x8284
-#define GL_STENCIL_COMPONENTS             0x8285
-#define GL_COLOR_RENDERABLE               0x8286
-#define GL_DEPTH_RENDERABLE               0x8287
-#define GL_STENCIL_RENDERABLE             0x8288
-#define GL_FRAMEBUFFER_RENDERABLE         0x8289
-#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
-#define GL_FRAMEBUFFER_BLEND              0x828B
-#define GL_READ_PIXELS                    0x828C
-#define GL_READ_PIXELS_FORMAT             0x828D
-#define GL_READ_PIXELS_TYPE               0x828E
-#define GL_TEXTURE_IMAGE_FORMAT           0x828F
-#define GL_TEXTURE_IMAGE_TYPE             0x8290
-#define GL_GET_TEXTURE_IMAGE_FORMAT       0x8291
-#define GL_GET_TEXTURE_IMAGE_TYPE         0x8292
-#define GL_MIPMAP                         0x8293
-#define GL_MANUAL_GENERATE_MIPMAP         0x8294
-#define GL_AUTO_GENERATE_MIPMAP           0x8295
-#define GL_COLOR_ENCODING                 0x8296
-#define GL_SRGB_READ                      0x8297
-#define GL_SRGB_WRITE                     0x8298
-#define GL_FILTER                         0x829A
-#define GL_VERTEX_TEXTURE                 0x829B
-#define GL_TESS_CONTROL_TEXTURE           0x829C
-#define GL_TESS_EVALUATION_TEXTURE        0x829D
-#define GL_GEOMETRY_TEXTURE               0x829E
-#define GL_FRAGMENT_TEXTURE               0x829F
-#define GL_COMPUTE_TEXTURE                0x82A0
-#define GL_TEXTURE_SHADOW                 0x82A1
-#define GL_TEXTURE_GATHER                 0x82A2
-#define GL_TEXTURE_GATHER_SHADOW          0x82A3
-#define GL_SHADER_IMAGE_LOAD              0x82A4
-#define GL_SHADER_IMAGE_STORE             0x82A5
-#define GL_SHADER_IMAGE_ATOMIC            0x82A6
-#define GL_IMAGE_TEXEL_SIZE               0x82A7
-#define GL_IMAGE_COMPATIBILITY_CLASS      0x82A8
-#define GL_IMAGE_PIXEL_FORMAT             0x82A9
-#define GL_IMAGE_PIXEL_TYPE               0x82AA
-#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
-#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
-#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
-#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
-#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
-#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
-#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE  0x82B3
-#define GL_CLEAR_BUFFER                   0x82B4
-#define GL_TEXTURE_VIEW                   0x82B5
-#define GL_VIEW_COMPATIBILITY_CLASS       0x82B6
-#define GL_FULL_SUPPORT                   0x82B7
-#define GL_CAVEAT_SUPPORT                 0x82B8
-#define GL_IMAGE_CLASS_4_X_32             0x82B9
-#define GL_IMAGE_CLASS_2_X_32             0x82BA
-#define GL_IMAGE_CLASS_1_X_32             0x82BB
-#define GL_IMAGE_CLASS_4_X_16             0x82BC
-#define GL_IMAGE_CLASS_2_X_16             0x82BD
-#define GL_IMAGE_CLASS_1_X_16             0x82BE
-#define GL_IMAGE_CLASS_4_X_8              0x82BF
-#define GL_IMAGE_CLASS_2_X_8              0x82C0
-#define GL_IMAGE_CLASS_1_X_8              0x82C1
-#define GL_IMAGE_CLASS_11_11_10           0x82C2
-#define GL_IMAGE_CLASS_10_10_10_2         0x82C3
-#define GL_VIEW_CLASS_128_BITS            0x82C4
-#define GL_VIEW_CLASS_96_BITS             0x82C5
-#define GL_VIEW_CLASS_64_BITS             0x82C6
-#define GL_VIEW_CLASS_48_BITS             0x82C7
-#define GL_VIEW_CLASS_32_BITS             0x82C8
-#define GL_VIEW_CLASS_24_BITS             0x82C9
-#define GL_VIEW_CLASS_16_BITS             0x82CA
-#define GL_VIEW_CLASS_8_BITS              0x82CB
-#define GL_VIEW_CLASS_S3TC_DXT1_RGB       0x82CC
-#define GL_VIEW_CLASS_S3TC_DXT1_RGBA      0x82CD
-#define GL_VIEW_CLASS_S3TC_DXT3_RGBA      0x82CE
-#define GL_VIEW_CLASS_S3TC_DXT5_RGBA      0x82CF
-#define GL_VIEW_CLASS_RGTC1_RED           0x82D0
-#define GL_VIEW_CLASS_RGTC2_RG            0x82D1
-#define GL_VIEW_CLASS_BPTC_UNORM          0x82D2
-#define GL_VIEW_CLASS_BPTC_FLOAT          0x82D3
-#define GL_UNIFORM                        0x92E1
-#define GL_UNIFORM_BLOCK                  0x92E2
-#define GL_PROGRAM_INPUT                  0x92E3
-#define GL_PROGRAM_OUTPUT                 0x92E4
-#define GL_BUFFER_VARIABLE                0x92E5
-#define GL_SHADER_STORAGE_BLOCK           0x92E6
-#define GL_VERTEX_SUBROUTINE              0x92E8
-#define GL_TESS_CONTROL_SUBROUTINE        0x92E9
-#define GL_TESS_EVALUATION_SUBROUTINE     0x92EA
-#define GL_GEOMETRY_SUBROUTINE            0x92EB
-#define GL_FRAGMENT_SUBROUTINE            0x92EC
-#define GL_COMPUTE_SUBROUTINE             0x92ED
-#define GL_VERTEX_SUBROUTINE_UNIFORM      0x92EE
-#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
-#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
-#define GL_GEOMETRY_SUBROUTINE_UNIFORM    0x92F1
-#define GL_FRAGMENT_SUBROUTINE_UNIFORM    0x92F2
-#define GL_COMPUTE_SUBROUTINE_UNIFORM     0x92F3
-#define GL_TRANSFORM_FEEDBACK_VARYING     0x92F4
-#define GL_ACTIVE_RESOURCES               0x92F5
-#define GL_MAX_NAME_LENGTH                0x92F6
-#define GL_MAX_NUM_ACTIVE_VARIABLES       0x92F7
-#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
-#define GL_NAME_LENGTH                    0x92F9
-#define GL_TYPE                           0x92FA
-#define GL_ARRAY_SIZE                     0x92FB
-#define GL_OFFSET                         0x92FC
-#define GL_BLOCK_INDEX                    0x92FD
-#define GL_ARRAY_STRIDE                   0x92FE
-#define GL_MATRIX_STRIDE                  0x92FF
-#define GL_IS_ROW_MAJOR                   0x9300
-#define GL_ATOMIC_COUNTER_BUFFER_INDEX    0x9301
-#define GL_BUFFER_BINDING                 0x9302
-#define GL_BUFFER_DATA_SIZE               0x9303
-#define GL_NUM_ACTIVE_VARIABLES           0x9304
-#define GL_ACTIVE_VARIABLES               0x9305
-#define GL_REFERENCED_BY_VERTEX_SHADER    0x9306
-#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
-#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
-#define GL_REFERENCED_BY_GEOMETRY_SHADER  0x9309
-#define GL_REFERENCED_BY_FRAGMENT_SHADER  0x930A
-#define GL_REFERENCED_BY_COMPUTE_SHADER   0x930B
-#define GL_TOP_LEVEL_ARRAY_SIZE           0x930C
-#define GL_TOP_LEVEL_ARRAY_STRIDE         0x930D
-#define GL_LOCATION                       0x930E
-#define GL_LOCATION_INDEX                 0x930F
-#define GL_IS_PER_PATCH                   0x92E7
-#define GL_SHADER_STORAGE_BUFFER          0x90D2
-#define GL_SHADER_STORAGE_BUFFER_BINDING  0x90D3
-#define GL_SHADER_STORAGE_BUFFER_START    0x90D4
-#define GL_SHADER_STORAGE_BUFFER_SIZE     0x90D5
-#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
-#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
-#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
-#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
-#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
-#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
-#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
-#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
-#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE  0x90DE
-#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
-#define GL_SHADER_STORAGE_BARRIER_BIT     0x00002000
-#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
-#define GL_DEPTH_STENCIL_TEXTURE_MODE     0x90EA
-#define GL_TEXTURE_BUFFER_OFFSET          0x919D
-#define GL_TEXTURE_BUFFER_SIZE            0x919E
-#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
-#define GL_TEXTURE_VIEW_MIN_LEVEL         0x82DB
-#define GL_TEXTURE_VIEW_NUM_LEVELS        0x82DC
-#define GL_TEXTURE_VIEW_MIN_LAYER         0x82DD
-#define GL_TEXTURE_VIEW_NUM_LAYERS        0x82DE
-#define GL_TEXTURE_IMMUTABLE_LEVELS       0x82DF
-#define GL_VERTEX_ATTRIB_BINDING          0x82D4
-#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET  0x82D5
-#define GL_VERTEX_BINDING_DIVISOR         0x82D6
-#define GL_VERTEX_BINDING_OFFSET          0x82D7
-#define GL_VERTEX_BINDING_STRIDE          0x82D8
-#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
-#define GL_MAX_VERTEX_ATTRIB_BINDINGS     0x82DA
-#define GL_VERTEX_BINDING_BUFFER          0x8F4F
-#define GL_DISPLAY_LIST                   0x82E7
-typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
-typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
-typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
-typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
-typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
-typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
-typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
-typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void);
-typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
-GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect);
-GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
-GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
-GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level);
-GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer);
-GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
-GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
-GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
-GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
-GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);
-GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);
-GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-GLAPI void APIENTRY glPopDebugGroup (void);
-GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-#endif /* GL_VERSION_4_3 */
-
-#ifndef GL_VERSION_4_4
-#define GL_VERSION_4_4 1
-#define GL_MAX_VERTEX_ATTRIB_STRIDE       0x82E5
-#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
-#define GL_TEXTURE_BUFFER_BINDING         0x8C2A
-#define GL_MAP_PERSISTENT_BIT             0x0040
-#define GL_MAP_COHERENT_BIT               0x0080
-#define GL_DYNAMIC_STORAGE_BIT            0x0100
-#define GL_CLIENT_STORAGE_BIT             0x0200
-#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
-#define GL_BUFFER_IMMUTABLE_STORAGE       0x821F
-#define GL_BUFFER_STORAGE_FLAGS           0x8220
-#define GL_CLEAR_TEXTURE                  0x9365
-#define GL_LOCATION_COMPONENT             0x934A
-#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
-#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
-#define GL_QUERY_BUFFER                   0x9192
-#define GL_QUERY_BUFFER_BARRIER_BIT       0x00008000
-#define GL_QUERY_BUFFER_BINDING           0x9193
-#define GL_QUERY_RESULT_NO_WAIT           0x9194
-#define GL_MIRROR_CLAMP_TO_EDGE           0x8743
-typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
-typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
-typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
-typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
-typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
-GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
-GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
-GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures);
-GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers);
-GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures);
-GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-#endif
-#endif /* GL_VERSION_4_4 */
-
-#ifndef GL_ARB_ES2_compatibility
-#define GL_ARB_ES2_compatibility 1
-#endif /* GL_ARB_ES2_compatibility */
-
-#ifndef GL_ARB_ES3_compatibility
-#define GL_ARB_ES3_compatibility 1
-#endif /* GL_ARB_ES3_compatibility */
-
-#ifndef GL_ARB_arrays_of_arrays
-#define GL_ARB_arrays_of_arrays 1
-#endif /* GL_ARB_arrays_of_arrays */
-
-#ifndef GL_ARB_base_instance
-#define GL_ARB_base_instance 1
-#endif /* GL_ARB_base_instance */
-
-#ifndef GL_ARB_bindless_texture
-#define GL_ARB_bindless_texture 1
-typedef uint64_t GLuint64EXT;
-#define GL_UNSIGNED_INT64_ARB             0x140F
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);
-typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture);
-GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler);
-GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle);
-GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access);
-GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value);
-GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value);
-GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle);
-GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x);
-GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params);
-#endif
-#endif /* GL_ARB_bindless_texture */
-
-#ifndef GL_ARB_blend_func_extended
-#define GL_ARB_blend_func_extended 1
-#endif /* GL_ARB_blend_func_extended */
-
-#ifndef GL_ARB_buffer_storage
-#define GL_ARB_buffer_storage 1
-#endif /* GL_ARB_buffer_storage */
-
-#ifndef GL_ARB_cl_event
-#define GL_ARB_cl_event 1
-struct _cl_context;
-struct _cl_event;
-#define GL_SYNC_CL_EVENT_ARB              0x8240
-#define GL_SYNC_CL_EVENT_COMPLETE_ARB     0x8241
-typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
-#endif
-#endif /* GL_ARB_cl_event */
-
-#ifndef GL_ARB_clear_buffer_object
-#define GL_ARB_clear_buffer_object 1
-#endif /* GL_ARB_clear_buffer_object */
-
-#ifndef GL_ARB_clear_texture
-#define GL_ARB_clear_texture 1
-#endif /* GL_ARB_clear_texture */
-
-#ifndef GL_ARB_color_buffer_float
-#define GL_ARB_color_buffer_float 1
-#define GL_RGBA_FLOAT_MODE_ARB            0x8820
-#define GL_CLAMP_VERTEX_COLOR_ARB         0x891A
-#define GL_CLAMP_FRAGMENT_COLOR_ARB       0x891B
-#define GL_CLAMP_READ_COLOR_ARB           0x891C
-#define GL_FIXED_ONLY_ARB                 0x891D
-typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp);
-#endif
-#endif /* GL_ARB_color_buffer_float */
-
-#ifndef GL_ARB_compatibility
-#define GL_ARB_compatibility 1
-#endif /* GL_ARB_compatibility */
-
-#ifndef GL_ARB_compressed_texture_pixel_storage
-#define GL_ARB_compressed_texture_pixel_storage 1
-#endif /* GL_ARB_compressed_texture_pixel_storage */
-
-#ifndef GL_ARB_compute_shader
-#define GL_ARB_compute_shader 1
-#define GL_COMPUTE_SHADER_BIT             0x00000020
-#endif /* GL_ARB_compute_shader */
-
-#ifndef GL_ARB_compute_variable_group_size
-#define GL_ARB_compute_variable_group_size 1
-#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
-#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
-#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
-#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
-#endif
-#endif /* GL_ARB_compute_variable_group_size */
-
-#ifndef GL_ARB_conservative_depth
-#define GL_ARB_conservative_depth 1
-#endif /* GL_ARB_conservative_depth */
-
-#ifndef GL_ARB_copy_buffer
-#define GL_ARB_copy_buffer 1
-#define GL_COPY_READ_BUFFER_BINDING       0x8F36
-#define GL_COPY_WRITE_BUFFER_BINDING      0x8F37
-#endif /* GL_ARB_copy_buffer */
-
-#ifndef GL_ARB_copy_image
-#define GL_ARB_copy_image 1
-#endif /* GL_ARB_copy_image */
-
-#ifndef GL_ARB_debug_output
-#define GL_ARB_debug_output 1
-typedef void (APIENTRY  *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB   0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION_ARB    0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM_ARB  0x8245
-#define GL_DEBUG_SOURCE_API_ARB           0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB   0x8249
-#define GL_DEBUG_SOURCE_APPLICATION_ARB   0x824A
-#define GL_DEBUG_SOURCE_OTHER_ARB         0x824B
-#define GL_DEBUG_TYPE_ERROR_ARB           0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
-#define GL_DEBUG_TYPE_PORTABILITY_ARB     0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE_ARB     0x8250
-#define GL_DEBUG_TYPE_OTHER_ARB           0x8251
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB   0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB  0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_ARB      0x9145
-#define GL_DEBUG_SEVERITY_HIGH_ARB        0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_ARB      0x9147
-#define GL_DEBUG_SEVERITY_LOW_ARB         0x9148
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-#endif
-#endif /* GL_ARB_debug_output */
-
-#ifndef GL_ARB_depth_buffer_float
-#define GL_ARB_depth_buffer_float 1
-#endif /* GL_ARB_depth_buffer_float */
-
-#ifndef GL_ARB_depth_clamp
-#define GL_ARB_depth_clamp 1
-#endif /* GL_ARB_depth_clamp */
-
-#ifndef GL_ARB_depth_texture
-#define GL_ARB_depth_texture 1
-#define GL_DEPTH_COMPONENT16_ARB          0x81A5
-#define GL_DEPTH_COMPONENT24_ARB          0x81A6
-#define GL_DEPTH_COMPONENT32_ARB          0x81A7
-#define GL_TEXTURE_DEPTH_SIZE_ARB         0x884A
-#define GL_DEPTH_TEXTURE_MODE_ARB         0x884B
-#endif /* GL_ARB_depth_texture */
-
-#ifndef GL_ARB_draw_buffers
-#define GL_ARB_draw_buffers 1
-#define GL_MAX_DRAW_BUFFERS_ARB           0x8824
-#define GL_DRAW_BUFFER0_ARB               0x8825
-#define GL_DRAW_BUFFER1_ARB               0x8826
-#define GL_DRAW_BUFFER2_ARB               0x8827
-#define GL_DRAW_BUFFER3_ARB               0x8828
-#define GL_DRAW_BUFFER4_ARB               0x8829
-#define GL_DRAW_BUFFER5_ARB               0x882A
-#define GL_DRAW_BUFFER6_ARB               0x882B
-#define GL_DRAW_BUFFER7_ARB               0x882C
-#define GL_DRAW_BUFFER8_ARB               0x882D
-#define GL_DRAW_BUFFER9_ARB               0x882E
-#define GL_DRAW_BUFFER10_ARB              0x882F
-#define GL_DRAW_BUFFER11_ARB              0x8830
-#define GL_DRAW_BUFFER12_ARB              0x8831
-#define GL_DRAW_BUFFER13_ARB              0x8832
-#define GL_DRAW_BUFFER14_ARB              0x8833
-#define GL_DRAW_BUFFER15_ARB              0x8834
-typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs);
-#endif
-#endif /* GL_ARB_draw_buffers */
-
-#ifndef GL_ARB_draw_buffers_blend
-#define GL_ARB_draw_buffers_blend 1
-typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#endif
-#endif /* GL_ARB_draw_buffers_blend */
-
-#ifndef GL_ARB_draw_elements_base_vertex
-#define GL_ARB_draw_elements_base_vertex 1
-#endif /* GL_ARB_draw_elements_base_vertex */
-
-#ifndef GL_ARB_draw_indirect
-#define GL_ARB_draw_indirect 1
-#endif /* GL_ARB_draw_indirect */
-
-#ifndef GL_ARB_draw_instanced
-#define GL_ARB_draw_instanced 1
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#endif
-#endif /* GL_ARB_draw_instanced */
-
-#ifndef GL_ARB_enhanced_layouts
-#define GL_ARB_enhanced_layouts 1
-#endif /* GL_ARB_enhanced_layouts */
-
-#ifndef GL_ARB_explicit_attrib_location
-#define GL_ARB_explicit_attrib_location 1
-#endif /* GL_ARB_explicit_attrib_location */
-
-#ifndef GL_ARB_explicit_uniform_location
-#define GL_ARB_explicit_uniform_location 1
-#endif /* GL_ARB_explicit_uniform_location */
-
-#ifndef GL_ARB_fragment_coord_conventions
-#define GL_ARB_fragment_coord_conventions 1
-#endif /* GL_ARB_fragment_coord_conventions */
-
-#ifndef GL_ARB_fragment_layer_viewport
-#define GL_ARB_fragment_layer_viewport 1
-#endif /* GL_ARB_fragment_layer_viewport */
-
-#ifndef GL_ARB_fragment_program
-#define GL_ARB_fragment_program 1
-#define GL_FRAGMENT_PROGRAM_ARB           0x8804
-#define GL_PROGRAM_FORMAT_ASCII_ARB       0x8875
-#define GL_PROGRAM_LENGTH_ARB             0x8627
-#define GL_PROGRAM_FORMAT_ARB             0x8876
-#define GL_PROGRAM_BINDING_ARB            0x8677
-#define GL_PROGRAM_INSTRUCTIONS_ARB       0x88A0
-#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB   0x88A1
-#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
-#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
-#define GL_PROGRAM_TEMPORARIES_ARB        0x88A4
-#define GL_MAX_PROGRAM_TEMPORARIES_ARB    0x88A5
-#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
-#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
-#define GL_PROGRAM_PARAMETERS_ARB         0x88A8
-#define GL_MAX_PROGRAM_PARAMETERS_ARB     0x88A9
-#define GL_PROGRAM_NATIVE_PARAMETERS_ARB  0x88AA
-#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
-#define GL_PROGRAM_ATTRIBS_ARB            0x88AC
-#define GL_MAX_PROGRAM_ATTRIBS_ARB        0x88AD
-#define GL_PROGRAM_NATIVE_ATTRIBS_ARB     0x88AE
-#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
-#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
-#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
-#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
-#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB   0x8805
-#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB   0x8806
-#define GL_PROGRAM_TEX_INDIRECTIONS_ARB   0x8807
-#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
-#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
-#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
-#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
-#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
-#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
-#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
-#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
-#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
-#define GL_PROGRAM_STRING_ARB             0x8628
-#define GL_PROGRAM_ERROR_POSITION_ARB     0x864B
-#define GL_CURRENT_MATRIX_ARB             0x8641
-#define GL_TRANSPOSE_CURRENT_MATRIX_ARB   0x88B7
-#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
-#define GL_MAX_PROGRAM_MATRICES_ARB       0x862F
-#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
-#define GL_MAX_TEXTURE_COORDS_ARB         0x8871
-#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB    0x8872
-#define GL_PROGRAM_ERROR_STRING_ARB       0x8874
-#define GL_MATRIX0_ARB                    0x88C0
-#define GL_MATRIX1_ARB                    0x88C1
-#define GL_MATRIX2_ARB                    0x88C2
-#define GL_MATRIX3_ARB                    0x88C3
-#define GL_MATRIX4_ARB                    0x88C4
-#define GL_MATRIX5_ARB                    0x88C5
-#define GL_MATRIX6_ARB                    0x88C6
-#define GL_MATRIX7_ARB                    0x88C7
-#define GL_MATRIX8_ARB                    0x88C8
-#define GL_MATRIX9_ARB                    0x88C9
-#define GL_MATRIX10_ARB                   0x88CA
-#define GL_MATRIX11_ARB                   0x88CB
-#define GL_MATRIX12_ARB                   0x88CC
-#define GL_MATRIX13_ARB                   0x88CD
-#define GL_MATRIX14_ARB                   0x88CE
-#define GL_MATRIX15_ARB                   0x88CF
-#define GL_MATRIX16_ARB                   0x88D0
-#define GL_MATRIX17_ARB                   0x88D1
-#define GL_MATRIX18_ARB                   0x88D2
-#define GL_MATRIX19_ARB                   0x88D3
-#define GL_MATRIX20_ARB                   0x88D4
-#define GL_MATRIX21_ARB                   0x88D5
-#define GL_MATRIX22_ARB                   0x88D6
-#define GL_MATRIX23_ARB                   0x88D7
-#define GL_MATRIX24_ARB                   0x88D8
-#define GL_MATRIX25_ARB                   0x88D9
-#define GL_MATRIX26_ARB                   0x88DA
-#define GL_MATRIX27_ARB                   0x88DB
-#define GL_MATRIX28_ARB                   0x88DC
-#define GL_MATRIX29_ARB                   0x88DD
-#define GL_MATRIX30_ARB                   0x88DE
-#define GL_MATRIX31_ARB                   0x88DF
-typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string);
-typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
-typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string);
-GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program);
-GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs);
-GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs);
-GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, void *string);
-GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program);
-#endif
-#endif /* GL_ARB_fragment_program */
-
-#ifndef GL_ARB_fragment_program_shadow
-#define GL_ARB_fragment_program_shadow 1
-#endif /* GL_ARB_fragment_program_shadow */
-
-#ifndef GL_ARB_fragment_shader
-#define GL_ARB_fragment_shader 1
-#define GL_FRAGMENT_SHADER_ARB            0x8B30
-#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
-#endif /* GL_ARB_fragment_shader */
-
-#ifndef GL_ARB_framebuffer_no_attachments
-#define GL_ARB_framebuffer_no_attachments 1
-#endif /* GL_ARB_framebuffer_no_attachments */
-
-#ifndef GL_ARB_framebuffer_object
-#define GL_ARB_framebuffer_object 1
-#endif /* GL_ARB_framebuffer_object */
-
-#ifndef GL_ARB_framebuffer_sRGB
-#define GL_ARB_framebuffer_sRGB 1
-#endif /* GL_ARB_framebuffer_sRGB */
-
-#ifndef GL_KHR_context_flush_control
-#define GL_CONTEXT_RELEASE_BEHAVIOR       0x82FB
-#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
-#endif /* GL_KHR_context_flush_control */
-
-#ifndef GL_ARB_geometry_shader4
-#define GL_ARB_geometry_shader4 1
-#define GL_LINES_ADJACENCY_ARB            0x000A
-#define GL_LINE_STRIP_ADJACENCY_ARB       0x000B
-#define GL_TRIANGLES_ADJACENCY_ARB        0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY_ARB   0x000D
-#define GL_PROGRAM_POINT_SIZE_ARB         0x8642
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
-#define GL_GEOMETRY_SHADER_ARB            0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT_ARB      0x8DDA
-#define GL_GEOMETRY_INPUT_TYPE_ARB        0x8DDB
-#define GL_GEOMETRY_OUTPUT_TYPE_ARB       0x8DDC
-#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
-#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
-GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#endif
-#endif /* GL_ARB_geometry_shader4 */
-
-#ifndef GL_ARB_get_program_binary
-#define GL_ARB_get_program_binary 1
-#endif /* GL_ARB_get_program_binary */
-
-#ifndef GL_ARB_gpu_shader5
-#define GL_ARB_gpu_shader5 1
-#endif /* GL_ARB_gpu_shader5 */
-
-#ifndef GL_ARB_gpu_shader_fp64
-#define GL_ARB_gpu_shader_fp64 1
-#endif /* GL_ARB_gpu_shader_fp64 */
-
-#ifndef GL_ARB_half_float_pixel
-#define GL_ARB_half_float_pixel 1
-typedef unsigned short GLhalfARB;
-#define GL_HALF_FLOAT_ARB                 0x140B
-#endif /* GL_ARB_half_float_pixel */
-
-#ifndef GL_ARB_half_float_vertex
-#define GL_ARB_half_float_vertex 1
-#endif /* GL_ARB_half_float_vertex */
-
-#ifndef GL_ARB_imaging
-#define GL_ARB_imaging 1
-#define GL_BLEND_COLOR                    0x8005
-#define GL_BLEND_EQUATION                 0x8009
-#define GL_CONVOLUTION_1D                 0x8010
-#define GL_CONVOLUTION_2D                 0x8011
-#define GL_SEPARABLE_2D                   0x8012
-#define GL_CONVOLUTION_BORDER_MODE        0x8013
-#define GL_CONVOLUTION_FILTER_SCALE       0x8014
-#define GL_CONVOLUTION_FILTER_BIAS        0x8015
-#define GL_REDUCE                         0x8016
-#define GL_CONVOLUTION_FORMAT             0x8017
-#define GL_CONVOLUTION_WIDTH              0x8018
-#define GL_CONVOLUTION_HEIGHT             0x8019
-#define GL_MAX_CONVOLUTION_WIDTH          0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT         0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE     0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE   0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE    0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE   0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS      0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS    0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS     0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS    0x8023
-#define GL_HISTOGRAM                      0x8024
-#define GL_PROXY_HISTOGRAM                0x8025
-#define GL_HISTOGRAM_WIDTH                0x8026
-#define GL_HISTOGRAM_FORMAT               0x8027
-#define GL_HISTOGRAM_RED_SIZE             0x8028
-#define GL_HISTOGRAM_GREEN_SIZE           0x8029
-#define GL_HISTOGRAM_BLUE_SIZE            0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE           0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE       0x802C
-#define GL_HISTOGRAM_SINK                 0x802D
-#define GL_MINMAX                         0x802E
-#define GL_MINMAX_FORMAT                  0x802F
-#define GL_MINMAX_SINK                    0x8030
-#define GL_TABLE_TOO_LARGE                0x8031
-#define GL_COLOR_MATRIX                   0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH       0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH   0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE    0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE  0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE   0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE  0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS     0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS   0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS    0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS   0x80BB
-#define GL_COLOR_TABLE                    0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE   0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE  0x80D2
-#define GL_PROXY_COLOR_TABLE              0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
-#define GL_COLOR_TABLE_SCALE              0x80D6
-#define GL_COLOR_TABLE_BIAS               0x80D7
-#define GL_COLOR_TABLE_FORMAT             0x80D8
-#define GL_COLOR_TABLE_WIDTH              0x80D9
-#define GL_COLOR_TABLE_RED_SIZE           0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE         0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE          0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE         0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE     0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE     0x80DF
-#define GL_CONSTANT_BORDER                0x8151
-#define GL_REPLICATE_BORDER               0x8153
-#define GL_CONVOLUTION_BORDER_COLOR       0x8154
-typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, void *table);
-GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);
-GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params);
-GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image);
-GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glResetHistogram (GLenum target);
-GLAPI void APIENTRY glResetMinmax (GLenum target);
-#endif
-#endif /* GL_ARB_imaging */
-
-#ifndef GL_ARB_indirect_parameters
-#define GL_ARB_indirect_parameters 1
-#define GL_PARAMETER_BUFFER_ARB           0x80EE
-#define GL_PARAMETER_BUFFER_BINDING_ARB   0x80EF
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-#endif
-#endif /* GL_ARB_indirect_parameters */
-
-#ifndef GL_ARB_instanced_arrays
-#define GL_ARB_instanced_arrays 1
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
-typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
-#endif
-#endif /* GL_ARB_instanced_arrays */
-
-#ifndef GL_ARB_internalformat_query
-#define GL_ARB_internalformat_query 1
-#endif /* GL_ARB_internalformat_query */
-
-#ifndef GL_ARB_internalformat_query2
-#define GL_ARB_internalformat_query2 1
-#define GL_SRGB_DECODE_ARB                0x8299
-#endif /* GL_ARB_internalformat_query2 */
-
-#ifndef GL_ARB_invalidate_subdata
-#define GL_ARB_invalidate_subdata 1
-#endif /* GL_ARB_invalidate_subdata */
-
-#ifndef GL_ARB_map_buffer_alignment
-#define GL_ARB_map_buffer_alignment 1
-#endif /* GL_ARB_map_buffer_alignment */
-
-#ifndef GL_ARB_map_buffer_range
-#define GL_ARB_map_buffer_range 1
-#endif /* GL_ARB_map_buffer_range */
-
-#ifndef GL_ARB_matrix_palette
-#define GL_ARB_matrix_palette 1
-#define GL_MATRIX_PALETTE_ARB             0x8840
-#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
-#define GL_MAX_PALETTE_MATRICES_ARB       0x8842
-#define GL_CURRENT_PALETTE_MATRIX_ARB     0x8843
-#define GL_MATRIX_INDEX_ARRAY_ARB         0x8844
-#define GL_CURRENT_MATRIX_INDEX_ARB       0x8845
-#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB    0x8846
-#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB    0x8847
-#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB  0x8848
-#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
-typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
-typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
-typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
-typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
-typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index);
-GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices);
-GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices);
-GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices);
-GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_ARB_matrix_palette */
-
-#ifndef GL_ARB_multi_bind
-#define GL_ARB_multi_bind 1
-#endif /* GL_ARB_multi_bind */
-
-#ifndef GL_ARB_multi_draw_indirect
-#define GL_ARB_multi_draw_indirect 1
-#endif /* GL_ARB_multi_draw_indirect */
-
-#ifndef GL_ARB_multisample
-#define GL_ARB_multisample 1
-#define GL_MULTISAMPLE_ARB                0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB   0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_ARB        0x809F
-#define GL_SAMPLE_COVERAGE_ARB            0x80A0
-#define GL_SAMPLE_BUFFERS_ARB             0x80A8
-#define GL_SAMPLES_ARB                    0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE_ARB      0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT_ARB     0x80AB
-#define GL_MULTISAMPLE_BIT_ARB            0x20000000
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert);
-#endif
-#endif /* GL_ARB_multisample */
-
-#ifndef GL_ARB_multitexture
-#define GL_ARB_multitexture 1
-#define GL_TEXTURE0_ARB                   0x84C0
-#define GL_TEXTURE1_ARB                   0x84C1
-#define GL_TEXTURE2_ARB                   0x84C2
-#define GL_TEXTURE3_ARB                   0x84C3
-#define GL_TEXTURE4_ARB                   0x84C4
-#define GL_TEXTURE5_ARB                   0x84C5
-#define GL_TEXTURE6_ARB                   0x84C6
-#define GL_TEXTURE7_ARB                   0x84C7
-#define GL_TEXTURE8_ARB                   0x84C8
-#define GL_TEXTURE9_ARB                   0x84C9
-#define GL_TEXTURE10_ARB                  0x84CA
-#define GL_TEXTURE11_ARB                  0x84CB
-#define GL_TEXTURE12_ARB                  0x84CC
-#define GL_TEXTURE13_ARB                  0x84CD
-#define GL_TEXTURE14_ARB                  0x84CE
-#define GL_TEXTURE15_ARB                  0x84CF
-#define GL_TEXTURE16_ARB                  0x84D0
-#define GL_TEXTURE17_ARB                  0x84D1
-#define GL_TEXTURE18_ARB                  0x84D2
-#define GL_TEXTURE19_ARB                  0x84D3
-#define GL_TEXTURE20_ARB                  0x84D4
-#define GL_TEXTURE21_ARB                  0x84D5
-#define GL_TEXTURE22_ARB                  0x84D6
-#define GL_TEXTURE23_ARB                  0x84D7
-#define GL_TEXTURE24_ARB                  0x84D8
-#define GL_TEXTURE25_ARB                  0x84D9
-#define GL_TEXTURE26_ARB                  0x84DA
-#define GL_TEXTURE27_ARB                  0x84DB
-#define GL_TEXTURE28_ARB                  0x84DC
-#define GL_TEXTURE29_ARB                  0x84DD
-#define GL_TEXTURE30_ARB                  0x84DE
-#define GL_TEXTURE31_ARB                  0x84DF
-#define GL_ACTIVE_TEXTURE_ARB             0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE_ARB      0x84E1
-#define GL_MAX_TEXTURE_UNITS_ARB          0x84E2
-typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTextureARB (GLenum texture);
-GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture);
-GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s);
-GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s);
-GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s);
-GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s);
-GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);
-GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);
-GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);
-GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);
-GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);
-GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);
-GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);
-GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v);
-#endif
-#endif /* GL_ARB_multitexture */
-
-#ifndef GL_ARB_occlusion_query
-#define GL_ARB_occlusion_query 1
-#define GL_QUERY_COUNTER_BITS_ARB         0x8864
-#define GL_CURRENT_QUERY_ARB              0x8865
-#define GL_QUERY_RESULT_ARB               0x8866
-#define GL_QUERY_RESULT_AVAILABLE_ARB     0x8867
-#define GL_SAMPLES_PASSED_ARB             0x8914
-typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id);
-GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id);
-GLAPI void APIENTRY glEndQueryARB (GLenum target);
-GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params);
-#endif
-#endif /* GL_ARB_occlusion_query */
-
-#ifndef GL_ARB_occlusion_query2
-#define GL_ARB_occlusion_query2 1
-#endif /* GL_ARB_occlusion_query2 */
-
-#ifndef GL_ARB_pixel_buffer_object
-#define GL_ARB_pixel_buffer_object 1
-#define GL_PIXEL_PACK_BUFFER_ARB          0x88EB
-#define GL_PIXEL_UNPACK_BUFFER_ARB        0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING_ARB  0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
-#endif /* GL_ARB_pixel_buffer_object */
-
-#ifndef GL_ARB_point_parameters
-#define GL_ARB_point_parameters 1
-#define GL_POINT_SIZE_MIN_ARB             0x8126
-#define GL_POINT_SIZE_MAX_ARB             0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_ARB  0x8128
-#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params);
-#endif
-#endif /* GL_ARB_point_parameters */
-
-#ifndef GL_ARB_point_sprite
-#define GL_ARB_point_sprite 1
-#define GL_POINT_SPRITE_ARB               0x8861
-#define GL_COORD_REPLACE_ARB              0x8862
-#endif /* GL_ARB_point_sprite */
-
-#ifndef GL_ARB_program_interface_query
-#define GL_ARB_program_interface_query 1
-#endif /* GL_ARB_program_interface_query */
-
-#ifndef GL_ARB_provoking_vertex
-#define GL_ARB_provoking_vertex 1
-#endif /* GL_ARB_provoking_vertex */
-
-#ifndef GL_ARB_query_buffer_object
-#define GL_ARB_query_buffer_object 1
-#endif /* GL_ARB_query_buffer_object */
-
-#ifndef GL_ARB_robust_buffer_access_behavior
-#define GL_ARB_robust_buffer_access_behavior 1
-#endif /* GL_ARB_robust_buffer_access_behavior */
-
-#ifndef GL_ARB_robustness
-#define GL_ARB_robustness 1
-#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
-#define GL_LOSE_CONTEXT_ON_RESET_ARB      0x8252
-#define GL_GUILTY_CONTEXT_RESET_ARB       0x8253
-#define GL_INNOCENT_CONTEXT_RESET_ARB     0x8254
-#define GL_UNKNOWN_CONTEXT_RESET_ARB      0x8255
-#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
-#define GL_NO_RESET_NOTIFICATION_ARB      0x8261
-typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
-typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
-typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img);
-typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
-typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
-typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
-typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values);
-typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values);
-typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values);
-typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern);
-typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
-typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
-typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
-typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void);
-GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
-GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img);
-GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
-GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
-GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
-GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values);
-GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values);
-GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values);
-GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern);
-GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
-GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
-GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
-GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-#endif
-#endif /* GL_ARB_robustness */
-
-#ifndef GL_ARB_robustness_isolation
-#define GL_ARB_robustness_isolation 1
-#endif /* GL_ARB_robustness_isolation */
-
-#ifndef GL_ARB_sample_shading
-#define GL_ARB_sample_shading 1
-#define GL_SAMPLE_SHADING_ARB             0x8C36
-#define GL_MIN_SAMPLE_SHADING_VALUE_ARB   0x8C37
-typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value);
-#endif
-#endif /* GL_ARB_sample_shading */
-
-#ifndef GL_ARB_sampler_objects
-#define GL_ARB_sampler_objects 1
-#endif /* GL_ARB_sampler_objects */
-
-#ifndef GL_ARB_seamless_cube_map
-#define GL_ARB_seamless_cube_map 1
-#endif /* GL_ARB_seamless_cube_map */
-
-#ifndef GL_ARB_seamless_cubemap_per_texture
-#define GL_ARB_seamless_cubemap_per_texture 1
-#endif /* GL_ARB_seamless_cubemap_per_texture */
-
-#ifndef GL_ARB_separate_shader_objects
-#define GL_ARB_separate_shader_objects 1
-#endif /* GL_ARB_separate_shader_objects */
-
-#ifndef GL_ARB_shader_atomic_counters
-#define GL_ARB_shader_atomic_counters 1
-#endif /* GL_ARB_shader_atomic_counters */
-
-#ifndef GL_ARB_shader_bit_encoding
-#define GL_ARB_shader_bit_encoding 1
-#endif /* GL_ARB_shader_bit_encoding */
-
-#ifndef GL_ARB_shader_draw_parameters
-#define GL_ARB_shader_draw_parameters 1
-#endif /* GL_ARB_shader_draw_parameters */
-
-#ifndef GL_ARB_shader_group_vote
-#define GL_ARB_shader_group_vote 1
-#endif /* GL_ARB_shader_group_vote */
-
-#ifndef GL_ARB_shader_image_load_store
-#define GL_ARB_shader_image_load_store 1
-#endif /* GL_ARB_shader_image_load_store */
-
-#ifndef GL_ARB_shader_image_size
-#define GL_ARB_shader_image_size 1
-#endif /* GL_ARB_shader_image_size */
-
-#ifndef GL_ARB_shader_objects
-#define GL_ARB_shader_objects 1
-#ifdef __APPLE__
-typedef void *GLhandleARB;
-#else
-typedef unsigned int GLhandleARB;
-#endif
-typedef char GLcharARB;
-#define GL_PROGRAM_OBJECT_ARB             0x8B40
-#define GL_SHADER_OBJECT_ARB              0x8B48
-#define GL_OBJECT_TYPE_ARB                0x8B4E
-#define GL_OBJECT_SUBTYPE_ARB             0x8B4F
-#define GL_FLOAT_VEC2_ARB                 0x8B50
-#define GL_FLOAT_VEC3_ARB                 0x8B51
-#define GL_FLOAT_VEC4_ARB                 0x8B52
-#define GL_INT_VEC2_ARB                   0x8B53
-#define GL_INT_VEC3_ARB                   0x8B54
-#define GL_INT_VEC4_ARB                   0x8B55
-#define GL_BOOL_ARB                       0x8B56
-#define GL_BOOL_VEC2_ARB                  0x8B57
-#define GL_BOOL_VEC3_ARB                  0x8B58
-#define GL_BOOL_VEC4_ARB                  0x8B59
-#define GL_FLOAT_MAT2_ARB                 0x8B5A
-#define GL_FLOAT_MAT3_ARB                 0x8B5B
-#define GL_FLOAT_MAT4_ARB                 0x8B5C
-#define GL_SAMPLER_1D_ARB                 0x8B5D
-#define GL_SAMPLER_2D_ARB                 0x8B5E
-#define GL_SAMPLER_3D_ARB                 0x8B5F
-#define GL_SAMPLER_CUBE_ARB               0x8B60
-#define GL_SAMPLER_1D_SHADOW_ARB          0x8B61
-#define GL_SAMPLER_2D_SHADOW_ARB          0x8B62
-#define GL_SAMPLER_2D_RECT_ARB            0x8B63
-#define GL_SAMPLER_2D_RECT_SHADOW_ARB     0x8B64
-#define GL_OBJECT_DELETE_STATUS_ARB       0x8B80
-#define GL_OBJECT_COMPILE_STATUS_ARB      0x8B81
-#define GL_OBJECT_LINK_STATUS_ARB         0x8B82
-#define GL_OBJECT_VALIDATE_STATUS_ARB     0x8B83
-#define GL_OBJECT_INFO_LOG_LENGTH_ARB     0x8B84
-#define GL_OBJECT_ATTACHED_OBJECTS_ARB    0x8B85
-#define GL_OBJECT_ACTIVE_UNIFORMS_ARB     0x8B86
-#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
-#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
-typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
-typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
-typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
-typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
-typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
-typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
-typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
-typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
-typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
-typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
-typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
-typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
-typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj);
-GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname);
-GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj);
-GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType);
-GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
-GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);
-GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
-GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj);
-GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj);
-GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj);
-GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj);
-GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0);
-GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0);
-GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
-GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
-GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
-GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);
-GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);
-GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
-#endif
-#endif /* GL_ARB_shader_objects */
-
-#ifndef GL_ARB_shader_precision
-#define GL_ARB_shader_precision 1
-#endif /* GL_ARB_shader_precision */
-
-#ifndef GL_ARB_shader_stencil_export
-#define GL_ARB_shader_stencil_export 1
-#endif /* GL_ARB_shader_stencil_export */
-
-#ifndef GL_ARB_shader_storage_buffer_object
-#define GL_ARB_shader_storage_buffer_object 1
-#endif /* GL_ARB_shader_storage_buffer_object */
-
-#ifndef GL_ARB_shader_subroutine
-#define GL_ARB_shader_subroutine 1
-#endif /* GL_ARB_shader_subroutine */
-
-#ifndef GL_ARB_shader_texture_lod
-#define GL_ARB_shader_texture_lod 1
-#endif /* GL_ARB_shader_texture_lod */
-
-#ifndef GL_ARB_shading_language_100
-#define GL_ARB_shading_language_100 1
-#define GL_SHADING_LANGUAGE_VERSION_ARB   0x8B8C
-#endif /* GL_ARB_shading_language_100 */
-
-#ifndef GL_ARB_shading_language_420pack
-#define GL_ARB_shading_language_420pack 1
-#endif /* GL_ARB_shading_language_420pack */
-
-#ifndef GL_ARB_shading_language_include
-#define GL_ARB_shading_language_include 1
-#define GL_SHADER_INCLUDE_ARB             0x8DAE
-#define GL_NAMED_STRING_LENGTH_ARB        0x8DE9
-#define GL_NAMED_STRING_TYPE_ARB          0x8DEA
-typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
-typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
-typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
-typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
-typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
-GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
-GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
-GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
-GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
-GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ARB_shading_language_include */
-
-#ifndef GL_ARB_shading_language_packing
-#define GL_ARB_shading_language_packing 1
-#endif /* GL_ARB_shading_language_packing */
-
-#ifndef GL_ARB_shadow
-#define GL_ARB_shadow 1
-#define GL_TEXTURE_COMPARE_MODE_ARB       0x884C
-#define GL_TEXTURE_COMPARE_FUNC_ARB       0x884D
-#define GL_COMPARE_R_TO_TEXTURE_ARB       0x884E
-#endif /* GL_ARB_shadow */
-
-#ifndef GL_ARB_shadow_ambient
-#define GL_ARB_shadow_ambient 1
-#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
-#endif /* GL_ARB_shadow_ambient */
-
-#ifndef GL_ARB_sparse_texture
-#define GL_ARB_sparse_texture 1
-#define GL_TEXTURE_SPARSE_ARB             0x91A6
-#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB    0x91A7
-#define GL_MIN_SPARSE_LEVEL_ARB           0x919B
-#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB     0x91A8
-#define GL_VIRTUAL_PAGE_SIZE_X_ARB        0x9195
-#define GL_VIRTUAL_PAGE_SIZE_Y_ARB        0x9196
-#define GL_VIRTUAL_PAGE_SIZE_Z_ARB        0x9197
-#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB    0x9198
-#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
-#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
-#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
-typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-#endif
-#endif /* GL_ARB_sparse_texture */
-
-#ifndef GL_ARB_stencil_texturing
-#define GL_ARB_stencil_texturing 1
-#endif /* GL_ARB_stencil_texturing */
-
-#ifndef GL_ARB_sync
-#define GL_ARB_sync 1
-#endif /* GL_ARB_sync */
-
-#ifndef GL_ARB_tessellation_shader
-#define GL_ARB_tessellation_shader 1
-#endif /* GL_ARB_tessellation_shader */
-
-#ifndef GL_ARB_texture_border_clamp
-#define GL_ARB_texture_border_clamp 1
-#define GL_CLAMP_TO_BORDER_ARB            0x812D
-#endif /* GL_ARB_texture_border_clamp */
-
-#ifndef GL_ARB_texture_buffer_object
-#define GL_ARB_texture_buffer_object 1
-#define GL_TEXTURE_BUFFER_ARB             0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB    0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER_ARB     0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
-#define GL_TEXTURE_BUFFER_FORMAT_ARB      0x8C2E
-typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
-#endif
-#endif /* GL_ARB_texture_buffer_object */
-
-#ifndef GL_ARB_texture_buffer_object_rgb32
-#define GL_ARB_texture_buffer_object_rgb32 1
-#endif /* GL_ARB_texture_buffer_object_rgb32 */
-
-#ifndef GL_ARB_texture_buffer_range
-#define GL_ARB_texture_buffer_range 1
-#endif /* GL_ARB_texture_buffer_range */
-
-#ifndef GL_ARB_texture_compression
-#define GL_ARB_texture_compression 1
-#define GL_COMPRESSED_ALPHA_ARB           0x84E9
-#define GL_COMPRESSED_LUMINANCE_ARB       0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
-#define GL_COMPRESSED_INTENSITY_ARB       0x84EC
-#define GL_COMPRESSED_RGB_ARB             0x84ED
-#define GL_COMPRESSED_RGBA_ARB            0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT_ARB   0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
-#define GL_TEXTURE_COMPRESSED_ARB         0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void *img);
-#endif
-#endif /* GL_ARB_texture_compression */
-
-#ifndef GL_ARB_texture_compression_bptc
-#define GL_ARB_texture_compression_bptc 1
-#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
-#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
-#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
-#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
-#endif /* GL_ARB_texture_compression_bptc */
-
-#ifndef GL_ARB_texture_compression_rgtc
-#define GL_ARB_texture_compression_rgtc 1
-#endif /* GL_ARB_texture_compression_rgtc */
-
-#ifndef GL_ARB_texture_cube_map
-#define GL_ARB_texture_cube_map 1
-#define GL_NORMAL_MAP_ARB                 0x8511
-#define GL_REFLECTION_MAP_ARB             0x8512
-#define GL_TEXTURE_CUBE_MAP_ARB           0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARB   0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARB     0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB  0x851C
-#endif /* GL_ARB_texture_cube_map */
-
-#ifndef GL_ARB_texture_cube_map_array
-#define GL_ARB_texture_cube_map_array 1
-#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB     0x9009
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
-#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB     0x900C
-#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
-#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
-#endif /* GL_ARB_texture_cube_map_array */
-
-#ifndef GL_ARB_texture_env_add
-#define GL_ARB_texture_env_add 1
-#endif /* GL_ARB_texture_env_add */
-
-#ifndef GL_ARB_texture_env_combine
-#define GL_ARB_texture_env_combine 1
-#define GL_COMBINE_ARB                    0x8570
-#define GL_COMBINE_RGB_ARB                0x8571
-#define GL_COMBINE_ALPHA_ARB              0x8572
-#define GL_SOURCE0_RGB_ARB                0x8580
-#define GL_SOURCE1_RGB_ARB                0x8581
-#define GL_SOURCE2_RGB_ARB                0x8582
-#define GL_SOURCE0_ALPHA_ARB              0x8588
-#define GL_SOURCE1_ALPHA_ARB              0x8589
-#define GL_SOURCE2_ALPHA_ARB              0x858A
-#define GL_OPERAND0_RGB_ARB               0x8590
-#define GL_OPERAND1_RGB_ARB               0x8591
-#define GL_OPERAND2_RGB_ARB               0x8592
-#define GL_OPERAND0_ALPHA_ARB             0x8598
-#define GL_OPERAND1_ALPHA_ARB             0x8599
-#define GL_OPERAND2_ALPHA_ARB             0x859A
-#define GL_RGB_SCALE_ARB                  0x8573
-#define GL_ADD_SIGNED_ARB                 0x8574
-#define GL_INTERPOLATE_ARB                0x8575
-#define GL_SUBTRACT_ARB                   0x84E7
-#define GL_CONSTANT_ARB                   0x8576
-#define GL_PRIMARY_COLOR_ARB              0x8577
-#define GL_PREVIOUS_ARB                   0x8578
-#endif /* GL_ARB_texture_env_combine */
-
-#ifndef GL_ARB_texture_env_crossbar
-#define GL_ARB_texture_env_crossbar 1
-#endif /* GL_ARB_texture_env_crossbar */
-
-#ifndef GL_ARB_texture_env_dot3
-#define GL_ARB_texture_env_dot3 1
-#define GL_DOT3_RGB_ARB                   0x86AE
-#define GL_DOT3_RGBA_ARB                  0x86AF
-#endif /* GL_ARB_texture_env_dot3 */
-
-#ifndef GL_ARB_texture_float
-#define GL_ARB_texture_float 1
-#define GL_TEXTURE_RED_TYPE_ARB           0x8C10
-#define GL_TEXTURE_GREEN_TYPE_ARB         0x8C11
-#define GL_TEXTURE_BLUE_TYPE_ARB          0x8C12
-#define GL_TEXTURE_ALPHA_TYPE_ARB         0x8C13
-#define GL_TEXTURE_LUMINANCE_TYPE_ARB     0x8C14
-#define GL_TEXTURE_INTENSITY_TYPE_ARB     0x8C15
-#define GL_TEXTURE_DEPTH_TYPE_ARB         0x8C16
-#define GL_UNSIGNED_NORMALIZED_ARB        0x8C17
-#define GL_RGBA32F_ARB                    0x8814
-#define GL_RGB32F_ARB                     0x8815
-#define GL_ALPHA32F_ARB                   0x8816
-#define GL_INTENSITY32F_ARB               0x8817
-#define GL_LUMINANCE32F_ARB               0x8818
-#define GL_LUMINANCE_ALPHA32F_ARB         0x8819
-#define GL_RGBA16F_ARB                    0x881A
-#define GL_RGB16F_ARB                     0x881B
-#define GL_ALPHA16F_ARB                   0x881C
-#define GL_INTENSITY16F_ARB               0x881D
-#define GL_LUMINANCE16F_ARB               0x881E
-#define GL_LUMINANCE_ALPHA16F_ARB         0x881F
-#endif /* GL_ARB_texture_float */
-
-#ifndef GL_ARB_texture_gather
-#define GL_ARB_texture_gather 1
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
-#endif /* GL_ARB_texture_gather */
-
-#ifndef GL_ARB_texture_mirror_clamp_to_edge
-#define GL_ARB_texture_mirror_clamp_to_edge 1
-#endif /* GL_ARB_texture_mirror_clamp_to_edge */
-
-#ifndef GL_ARB_texture_mirrored_repeat
-#define GL_ARB_texture_mirrored_repeat 1
-#define GL_MIRRORED_REPEAT_ARB            0x8370
-#endif /* GL_ARB_texture_mirrored_repeat */
-
-#ifndef GL_ARB_texture_multisample
-#define GL_ARB_texture_multisample 1
-#endif /* GL_ARB_texture_multisample */
-
-#ifndef GL_ARB_texture_non_power_of_two
-#define GL_ARB_texture_non_power_of_two 1
-#endif /* GL_ARB_texture_non_power_of_two */
-
-#ifndef GL_ARB_texture_query_levels
-#define GL_ARB_texture_query_levels 1
-#endif /* GL_ARB_texture_query_levels */
-
-#ifndef GL_ARB_texture_query_lod
-#define GL_ARB_texture_query_lod 1
-#endif /* GL_ARB_texture_query_lod */
-
-#ifndef GL_ARB_texture_rectangle
-#define GL_ARB_texture_rectangle 1
-#define GL_TEXTURE_RECTANGLE_ARB          0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE_ARB  0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE_ARB    0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
-#endif /* GL_ARB_texture_rectangle */
-
-#ifndef GL_ARB_texture_rg
-#define GL_ARB_texture_rg 1
-#endif /* GL_ARB_texture_rg */
-
-#ifndef GL_ARB_texture_rgb10_a2ui
-#define GL_ARB_texture_rgb10_a2ui 1
-#endif /* GL_ARB_texture_rgb10_a2ui */
-
-#ifndef GL_ARB_texture_stencil8
-#define GL_ARB_texture_stencil8 1
-#endif /* GL_ARB_texture_stencil8 */
-
-#ifndef GL_ARB_texture_storage
-#define GL_ARB_texture_storage 1
-#endif /* GL_ARB_texture_storage */
-
-#ifndef GL_ARB_texture_storage_multisample
-#define GL_ARB_texture_storage_multisample 1
-#endif /* GL_ARB_texture_storage_multisample */
-
-#ifndef GL_ARB_texture_swizzle
-#define GL_ARB_texture_swizzle 1
-#endif /* GL_ARB_texture_swizzle */
-
-#ifndef GL_ARB_texture_view
-#define GL_ARB_texture_view 1
-#endif /* GL_ARB_texture_view */
-
-#ifndef GL_ARB_timer_query
-#define GL_ARB_timer_query 1
-#endif /* GL_ARB_timer_query */
-
-#ifndef GL_ARB_transform_feedback2
-#define GL_ARB_transform_feedback2 1
-#define GL_TRANSFORM_FEEDBACK_PAUSED      0x8E23
-#define GL_TRANSFORM_FEEDBACK_ACTIVE      0x8E24
-#endif /* GL_ARB_transform_feedback2 */
-
-#ifndef GL_ARB_transform_feedback3
-#define GL_ARB_transform_feedback3 1
-#endif /* GL_ARB_transform_feedback3 */
-
-#ifndef GL_ARB_transform_feedback_instanced
-#define GL_ARB_transform_feedback_instanced 1
-#endif /* GL_ARB_transform_feedback_instanced */
-
-#ifndef GL_ARB_transpose_matrix
-#define GL_ARB_transpose_matrix 1
-#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB   0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX_ARB     0x84E6
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m);
-GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m);
-GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m);
-GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m);
-#endif
-#endif /* GL_ARB_transpose_matrix */
-
-#ifndef GL_ARB_uniform_buffer_object
-#define GL_ARB_uniform_buffer_object 1
-#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS    0x8A2C
-#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
-#endif /* GL_ARB_uniform_buffer_object */
-
-#ifndef GL_ARB_vertex_array_bgra
-#define GL_ARB_vertex_array_bgra 1
-#endif /* GL_ARB_vertex_array_bgra */
-
-#ifndef GL_ARB_vertex_array_object
-#define GL_ARB_vertex_array_object 1
-#endif /* GL_ARB_vertex_array_object */
-
-#ifndef GL_ARB_vertex_attrib_64bit
-#define GL_ARB_vertex_attrib_64bit 1
-#endif /* GL_ARB_vertex_attrib_64bit */
-
-#ifndef GL_ARB_vertex_attrib_binding
-#define GL_ARB_vertex_attrib_binding 1
-#endif /* GL_ARB_vertex_attrib_binding */
-
-#ifndef GL_ARB_vertex_blend
-#define GL_ARB_vertex_blend 1
-#define GL_MAX_VERTEX_UNITS_ARB           0x86A4
-#define GL_ACTIVE_VERTEX_UNITS_ARB        0x86A5
-#define GL_WEIGHT_SUM_UNITY_ARB           0x86A6
-#define GL_VERTEX_BLEND_ARB               0x86A7
-#define GL_CURRENT_WEIGHT_ARB             0x86A8
-#define GL_WEIGHT_ARRAY_TYPE_ARB          0x86A9
-#define GL_WEIGHT_ARRAY_STRIDE_ARB        0x86AA
-#define GL_WEIGHT_ARRAY_SIZE_ARB          0x86AB
-#define GL_WEIGHT_ARRAY_POINTER_ARB       0x86AC
-#define GL_WEIGHT_ARRAY_ARB               0x86AD
-#define GL_MODELVIEW0_ARB                 0x1700
-#define GL_MODELVIEW1_ARB                 0x850A
-#define GL_MODELVIEW2_ARB                 0x8722
-#define GL_MODELVIEW3_ARB                 0x8723
-#define GL_MODELVIEW4_ARB                 0x8724
-#define GL_MODELVIEW5_ARB                 0x8725
-#define GL_MODELVIEW6_ARB                 0x8726
-#define GL_MODELVIEW7_ARB                 0x8727
-#define GL_MODELVIEW8_ARB                 0x8728
-#define GL_MODELVIEW9_ARB                 0x8729
-#define GL_MODELVIEW10_ARB                0x872A
-#define GL_MODELVIEW11_ARB                0x872B
-#define GL_MODELVIEW12_ARB                0x872C
-#define GL_MODELVIEW13_ARB                0x872D
-#define GL_MODELVIEW14_ARB                0x872E
-#define GL_MODELVIEW15_ARB                0x872F
-#define GL_MODELVIEW16_ARB                0x8730
-#define GL_MODELVIEW17_ARB                0x8731
-#define GL_MODELVIEW18_ARB                0x8732
-#define GL_MODELVIEW19_ARB                0x8733
-#define GL_MODELVIEW20_ARB                0x8734
-#define GL_MODELVIEW21_ARB                0x8735
-#define GL_MODELVIEW22_ARB                0x8736
-#define GL_MODELVIEW23_ARB                0x8737
-#define GL_MODELVIEW24_ARB                0x8738
-#define GL_MODELVIEW25_ARB                0x8739
-#define GL_MODELVIEW26_ARB                0x873A
-#define GL_MODELVIEW27_ARB                0x873B
-#define GL_MODELVIEW28_ARB                0x873C
-#define GL_MODELVIEW29_ARB                0x873D
-#define GL_MODELVIEW30_ARB                0x873E
-#define GL_MODELVIEW31_ARB                0x873F
-typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
-typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
-typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
-typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
-typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
-typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
-typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
-typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
-typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights);
-GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights);
-GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights);
-GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights);
-GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights);
-GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights);
-GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights);
-GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights);
-GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glVertexBlendARB (GLint count);
-#endif
-#endif /* GL_ARB_vertex_blend */
-
-#ifndef GL_ARB_vertex_buffer_object
-#define GL_ARB_vertex_buffer_object 1
-#ifdef __MACOSX__ /* The OS X headers haven't caught up with Khronos yet */
-typedef long GLsizeiptrARB;
-typedef long GLintptrARB;
-#else
-typedef ptrdiff_t GLsizeiptrARB;
-typedef ptrdiff_t GLintptrARB;
-#endif
-#define GL_BUFFER_SIZE_ARB                0x8764
-#define GL_BUFFER_USAGE_ARB               0x8765
-#define GL_ARRAY_BUFFER_ARB               0x8892
-#define GL_ELEMENT_ARRAY_BUFFER_ARB       0x8893
-#define GL_ARRAY_BUFFER_BINDING_ARB       0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
-#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
-#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
-#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
-#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
-#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
-#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
-#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
-#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
-#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
-#define GL_READ_ONLY_ARB                  0x88B8
-#define GL_WRITE_ONLY_ARB                 0x88B9
-#define GL_READ_WRITE_ARB                 0x88BA
-#define GL_BUFFER_ACCESS_ARB              0x88BB
-#define GL_BUFFER_MAPPED_ARB              0x88BC
-#define GL_BUFFER_MAP_POINTER_ARB         0x88BD
-#define GL_STREAM_DRAW_ARB                0x88E0
-#define GL_STREAM_READ_ARB                0x88E1
-#define GL_STREAM_COPY_ARB                0x88E2
-#define GL_STATIC_DRAW_ARB                0x88E4
-#define GL_STATIC_READ_ARB                0x88E5
-#define GL_STATIC_COPY_ARB                0x88E6
-#define GL_DYNAMIC_DRAW_ARB               0x88E8
-#define GL_DYNAMIC_READ_ARB               0x88E9
-#define GL_DYNAMIC_COPY_ARB               0x88EA
-typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
-typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
-typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
-typedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer);
-GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers);
-GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers);
-GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer);
-GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
-GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
-GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
-GLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target);
-GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_ARB_vertex_buffer_object */
-
-#ifndef GL_ARB_vertex_program
-#define GL_ARB_vertex_program 1
-#define GL_COLOR_SUM_ARB                  0x8458
-#define GL_VERTEX_PROGRAM_ARB             0x8620
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB   0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB   0x8625
-#define GL_CURRENT_VERTEX_ATTRIB_ARB      0x8626
-#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB  0x8642
-#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB    0x8643
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
-#define GL_MAX_VERTEX_ATTRIBS_ARB         0x8869
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
-#define GL_PROGRAM_ADDRESS_REGISTERS_ARB  0x88B0
-#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
-#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
-#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void **pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index);
-GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index);
-GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, void **pointer);
-#endif
-#endif /* GL_ARB_vertex_program */
-
-#ifndef GL_ARB_vertex_shader
-#define GL_ARB_vertex_shader 1
-#define GL_VERTEX_SHADER_ARB              0x8B31
-#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
-#define GL_MAX_VARYING_FLOATS_ARB         0x8B4B
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
-#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB   0x8B89
-#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
-typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
-typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);
-GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);
-#endif
-#endif /* GL_ARB_vertex_shader */
-
-#ifndef GL_ARB_vertex_type_10f_11f_11f_rev
-#define GL_ARB_vertex_type_10f_11f_11f_rev 1
-#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
-
-#ifndef GL_ARB_vertex_type_2_10_10_10_rev
-#define GL_ARB_vertex_type_2_10_10_10_rev 1
-#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
-
-#ifndef GL_ARB_viewport_array
-#define GL_ARB_viewport_array 1
-#endif /* GL_ARB_viewport_array */
-
-#ifndef GL_ARB_window_pos
-#define GL_ARB_window_pos 1
-typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y);
-GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y);
-GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y);
-GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v);
-GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y);
-GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v);
-GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v);
-GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v);
-#endif
-#endif /* GL_ARB_window_pos */
-
-#ifndef GL_KHR_debug
-#define GL_KHR_debug 1
-#endif /* GL_KHR_debug */
-
-#ifndef GL_KHR_texture_compression_astc_hdr
-#define GL_KHR_texture_compression_astc_hdr 1
-#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR   0x93B0
-#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR   0x93B1
-#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR   0x93B2
-#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR   0x93B3
-#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR   0x93B4
-#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR   0x93B5
-#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR   0x93B6
-#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR   0x93B7
-#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR  0x93B8
-#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR  0x93B9
-#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR  0x93BA
-#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
-#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
-#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
-#endif /* GL_KHR_texture_compression_astc_hdr */
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_KHR_texture_compression_astc_ldr 1
-#endif /* GL_KHR_texture_compression_astc_ldr */
-
-#ifndef GL_OES_byte_coordinates
-#define GL_OES_byte_coordinates 1
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s);
-typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t);
-typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r);
-typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x);
-typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y);
-typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z);
-typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s);
-GLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t);
-GLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
-GLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-GLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord1bOES (GLbyte s);
-GLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t);
-GLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r);
-GLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-GLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glVertex2bOES (GLbyte x);
-GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y);
-GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z);
-GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords);
-#endif
-#endif /* GL_OES_byte_coordinates */
-
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_OES_compressed_paletted_texture 1
-#define GL_PALETTE4_RGB8_OES              0x8B90
-#define GL_PALETTE4_RGBA8_OES             0x8B91
-#define GL_PALETTE4_R5_G6_B5_OES          0x8B92
-#define GL_PALETTE4_RGBA4_OES             0x8B93
-#define GL_PALETTE4_RGB5_A1_OES           0x8B94
-#define GL_PALETTE8_RGB8_OES              0x8B95
-#define GL_PALETTE8_RGBA8_OES             0x8B96
-#define GL_PALETTE8_R5_G6_B5_OES          0x8B97
-#define GL_PALETTE8_RGBA4_OES             0x8B98
-#define GL_PALETTE8_RGB5_A1_OES           0x8B99
-#endif /* GL_OES_compressed_paletted_texture */
-
-#ifndef GL_OES_fixed_point
-#define GL_OES_fixed_point 1
-typedef GLint GLfixed;
-#define GL_FIXED_OES                      0x140C
-typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref);
-typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth);
-typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation);
-typedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f);
-typedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param);
-typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation);
-typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param);
-typedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width);
-typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param);
-typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz);
-typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size);
-typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units);
-typedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert);
-typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value);
-typedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
-typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue);
-typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components);
-typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u);
-typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v);
-typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v);
-typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values);
-typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component);
-typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
-typedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
-typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2);
-typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token);
-typedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values);
-typedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor);
-typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities);
-typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y);
-typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
-typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
-typedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2);
-typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s);
-typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t);
-typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r);
-typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x);
-typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y);
-typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref);
-GLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glClearDepthxOES (GLfixed depth);
-GLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation);
-GLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f);
-GLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param);
-GLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-GLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation);
-GLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param);
-GLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glLineWidthxOES (GLfixed width);
-GLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param);
-GLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz);
-GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-GLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glPointSizexOES (GLfixed size);
-GLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units);
-GLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glSampleCoverageOES (GLfixed value, GLboolean invert);
-GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value);
-GLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
-GLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue);
-GLAPI void APIENTRY glColor3xvOES (const GLfixed *components);
-GLAPI void APIENTRY glColor4xvOES (const GLfixed *components);
-GLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glEvalCoord1xOES (GLfixed u);
-GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v);
-GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer);
-GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v);
-GLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values);
-GLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glIndexxOES (GLfixed component);
-GLAPI void APIENTRY glIndexxvOES (const GLfixed *component);
-GLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
-GLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
-GLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2);
-GLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
-GLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s);
-GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t);
-GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
-GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glPassThroughxOES (GLfixed token);
-GLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values);
-GLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor);
-GLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities);
-GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y);
-GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
-GLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
-GLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2);
-GLAPI void APIENTRY glTexCoord1xOES (GLfixed s);
-GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t);
-GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r);
-GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glVertex2xOES (GLfixed x);
-GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y);
-GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords);
-#endif
-#endif /* GL_OES_fixed_point */
-
-#ifndef GL_OES_query_matrix
-#define GL_OES_query_matrix 1
-typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent);
-#endif
-#endif /* GL_OES_query_matrix */
-
-#ifndef GL_OES_read_format
-#define GL_OES_read_format 1
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
-#endif /* GL_OES_read_format */
-
-#ifndef GL_OES_single_precision
-#define GL_OES_single_precision 1
-typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth);
-typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation);
-typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f);
-typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation);
-typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClearDepthfOES (GLclampf depth);
-GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation);
-GLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f);
-GLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-GLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation);
-GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-#endif
-#endif /* GL_OES_single_precision */
-
-#ifndef GL_3DFX_multisample
-#define GL_3DFX_multisample 1
-#define GL_MULTISAMPLE_3DFX               0x86B2
-#define GL_SAMPLE_BUFFERS_3DFX            0x86B3
-#define GL_SAMPLES_3DFX                   0x86B4
-#define GL_MULTISAMPLE_BIT_3DFX           0x20000000
-#endif /* GL_3DFX_multisample */
-
-#ifndef GL_3DFX_tbuffer
-#define GL_3DFX_tbuffer 1
-typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask);
-#endif
-#endif /* GL_3DFX_tbuffer */
-
-#ifndef GL_3DFX_texture_compression_FXT1
-#define GL_3DFX_texture_compression_FXT1 1
-#define GL_COMPRESSED_RGB_FXT1_3DFX       0x86B0
-#define GL_COMPRESSED_RGBA_FXT1_3DFX      0x86B1
-#endif /* GL_3DFX_texture_compression_FXT1 */
-
-#ifndef GL_AMD_blend_minmax_factor
-#define GL_AMD_blend_minmax_factor 1
-#define GL_FACTOR_MIN_AMD                 0x901C
-#define GL_FACTOR_MAX_AMD                 0x901D
-#endif /* GL_AMD_blend_minmax_factor */
-
-#ifndef GL_AMD_conservative_depth
-#define GL_AMD_conservative_depth 1
-#endif /* GL_AMD_conservative_depth */
-
-#ifndef GL_AMD_debug_output
-#define GL_AMD_debug_output 1
-typedef void (APIENTRY  *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD   0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD  0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_AMD      0x9145
-#define GL_DEBUG_SEVERITY_HIGH_AMD        0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_AMD      0x9147
-#define GL_DEBUG_SEVERITY_LOW_AMD         0x9148
-#define GL_DEBUG_CATEGORY_API_ERROR_AMD   0x9149
-#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
-#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
-#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
-#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
-#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
-#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
-#define GL_DEBUG_CATEGORY_OTHER_AMD       0x9150
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
-#endif
-#endif /* GL_AMD_debug_output */
-
-#ifndef GL_AMD_depth_clamp_separate
-#define GL_AMD_depth_clamp_separate 1
-#define GL_DEPTH_CLAMP_NEAR_AMD           0x901E
-#define GL_DEPTH_CLAMP_FAR_AMD            0x901F
-#endif /* GL_AMD_depth_clamp_separate */
-
-#ifndef GL_AMD_draw_buffers_blend
-#define GL_AMD_draw_buffers_blend 1
-typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-#endif
-#endif /* GL_AMD_draw_buffers_blend */
-
-#ifndef GL_AMD_gcn_shader
-#define GL_AMD_gcn_shader 1
-#endif /* GL_AMD_gcn_shader */
-
-#ifndef GL_AMD_gpu_shader_int64
-#define GL_AMD_gpu_shader_int64 1
-typedef int64_t GLint64EXT;
-#define GL_INT64_NV                       0x140E
-#define GL_UNSIGNED_INT64_NV              0x140F
-#define GL_INT8_NV                        0x8FE0
-#define GL_INT8_VEC2_NV                   0x8FE1
-#define GL_INT8_VEC3_NV                   0x8FE2
-#define GL_INT8_VEC4_NV                   0x8FE3
-#define GL_INT16_NV                       0x8FE4
-#define GL_INT16_VEC2_NV                  0x8FE5
-#define GL_INT16_VEC3_NV                  0x8FE6
-#define GL_INT16_VEC4_NV                  0x8FE7
-#define GL_INT64_VEC2_NV                  0x8FE9
-#define GL_INT64_VEC3_NV                  0x8FEA
-#define GL_INT64_VEC4_NV                  0x8FEB
-#define GL_UNSIGNED_INT8_NV               0x8FEC
-#define GL_UNSIGNED_INT8_VEC2_NV          0x8FED
-#define GL_UNSIGNED_INT8_VEC3_NV          0x8FEE
-#define GL_UNSIGNED_INT8_VEC4_NV          0x8FEF
-#define GL_UNSIGNED_INT16_NV              0x8FF0
-#define GL_UNSIGNED_INT16_VEC2_NV         0x8FF1
-#define GL_UNSIGNED_INT16_VEC3_NV         0x8FF2
-#define GL_UNSIGNED_INT16_VEC4_NV         0x8FF3
-#define GL_UNSIGNED_INT64_VEC2_NV         0x8FF5
-#define GL_UNSIGNED_INT64_VEC3_NV         0x8FF6
-#define GL_UNSIGNED_INT64_VEC4_NV         0x8FF7
-#define GL_FLOAT16_NV                     0x8FF8
-#define GL_FLOAT16_VEC2_NV                0x8FF9
-#define GL_FLOAT16_VEC3_NV                0x8FFA
-#define GL_FLOAT16_VEC4_NV                0x8FFB
-typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
-typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
-GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
-GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
-GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
-GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
-GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
-GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#endif
-#endif /* GL_AMD_gpu_shader_int64 */
-
-#ifndef GL_AMD_interleaved_elements
-#define GL_AMD_interleaved_elements 1
-#define GL_VERTEX_ELEMENT_SWIZZLE_AMD     0x91A4
-#define GL_VERTEX_ID_SWIZZLE_AMD          0x91A5
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param);
-#endif
-#endif /* GL_AMD_interleaved_elements */
-
-#ifndef GL_AMD_multi_draw_indirect
-#define GL_AMD_multi_draw_indirect 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
-#endif
-#endif /* GL_AMD_multi_draw_indirect */
-
-#ifndef GL_AMD_name_gen_delete
-#define GL_AMD_name_gen_delete 1
-#define GL_DATA_BUFFER_AMD                0x9151
-#define GL_PERFORMANCE_MONITOR_AMD        0x9152
-#define GL_QUERY_OBJECT_AMD               0x9153
-#define GL_VERTEX_ARRAY_OBJECT_AMD        0x9154
-#define GL_SAMPLER_OBJECT_AMD             0x9155
-typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names);
-typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names);
-typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names);
-GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names);
-GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name);
-#endif
-#endif /* GL_AMD_name_gen_delete */
-
-#ifndef GL_AMD_occlusion_query_event
-#define GL_AMD_occlusion_query_event 1
-#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
-#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
-#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
-#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
-#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
-#define GL_QUERY_ALL_EVENT_BITS_AMD       0xFFFFFFFF
-typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param);
-#endif
-#endif /* GL_AMD_occlusion_query_event */
-
-#ifndef GL_AMD_performance_monitor
-#define GL_AMD_performance_monitor 1
-#define GL_COUNTER_TYPE_AMD               0x8BC0
-#define GL_COUNTER_RANGE_AMD              0x8BC1
-#define GL_UNSIGNED_INT64_AMD             0x8BC2
-#define GL_PERCENTAGE_AMD                 0x8BC3
-#define GL_PERFMON_RESULT_AVAILABLE_AMD   0x8BC4
-#define GL_PERFMON_RESULT_SIZE_AMD        0x8BC5
-#define GL_PERFMON_RESULT_AMD             0x8BC6
-typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
-typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
-typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
-GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
-GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
-GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
-GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-#endif /* GL_AMD_performance_monitor */
-
-#ifndef GL_AMD_pinned_memory
-#define GL_AMD_pinned_memory 1
-#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
-#endif /* GL_AMD_pinned_memory */
-
-#ifndef GL_AMD_query_buffer_object
-#define GL_AMD_query_buffer_object 1
-#define GL_QUERY_BUFFER_AMD               0x9192
-#define GL_QUERY_BUFFER_BINDING_AMD       0x9193
-#define GL_QUERY_RESULT_NO_WAIT_AMD       0x9194
-#endif /* GL_AMD_query_buffer_object */
-
-#ifndef GL_AMD_sample_positions
-#define GL_AMD_sample_positions 1
-#define GL_SUBSAMPLE_DISTANCE_AMD         0x883F
-typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val);
-#endif
-#endif /* GL_AMD_sample_positions */
-
-#ifndef GL_AMD_seamless_cubemap_per_texture
-#define GL_AMD_seamless_cubemap_per_texture 1
-#endif /* GL_AMD_seamless_cubemap_per_texture */
-
-#ifndef GL_AMD_shader_atomic_counter_ops
-#define GL_AMD_shader_atomic_counter_ops 1
-#endif /* GL_AMD_shader_atomic_counter_ops */
-
-#ifndef GL_AMD_shader_stencil_export
-#define GL_AMD_shader_stencil_export 1
-#endif /* GL_AMD_shader_stencil_export */
-
-#ifndef GL_AMD_shader_trinary_minmax
-#define GL_AMD_shader_trinary_minmax 1
-#endif /* GL_AMD_shader_trinary_minmax */
-
-#ifndef GL_AMD_sparse_texture
-#define GL_AMD_sparse_texture 1
-#define GL_VIRTUAL_PAGE_SIZE_X_AMD        0x9195
-#define GL_VIRTUAL_PAGE_SIZE_Y_AMD        0x9196
-#define GL_VIRTUAL_PAGE_SIZE_Z_AMD        0x9197
-#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD    0x9198
-#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
-#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
-#define GL_MIN_SPARSE_LEVEL_AMD           0x919B
-#define GL_MIN_LOD_WARNING_AMD            0x919C
-#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
-typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-#endif
-#endif /* GL_AMD_sparse_texture */
-
-#ifndef GL_AMD_stencil_operation_extended
-#define GL_AMD_stencil_operation_extended 1
-#define GL_SET_AMD                        0x874A
-#define GL_REPLACE_VALUE_AMD              0x874B
-#define GL_STENCIL_OP_VALUE_AMD           0x874C
-#define GL_STENCIL_BACK_OP_VALUE_AMD      0x874D
-typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value);
-#endif
-#endif /* GL_AMD_stencil_operation_extended */
-
-#ifndef GL_AMD_texture_texture4
-#define GL_AMD_texture_texture4 1
-#endif /* GL_AMD_texture_texture4 */
-
-#ifndef GL_AMD_transform_feedback3_lines_triangles
-#define GL_AMD_transform_feedback3_lines_triangles 1
-#endif /* GL_AMD_transform_feedback3_lines_triangles */
-
-#ifndef GL_AMD_transform_feedback4
-#define GL_AMD_transform_feedback4 1
-#define GL_STREAM_RASTERIZATION_AMD       0x91A0
-#endif /* GL_AMD_transform_feedback4 */
-
-#ifndef GL_AMD_vertex_shader_layer
-#define GL_AMD_vertex_shader_layer 1
-#endif /* GL_AMD_vertex_shader_layer */
-
-#ifndef GL_AMD_vertex_shader_tessellator
-#define GL_AMD_vertex_shader_tessellator 1
-#define GL_SAMPLER_BUFFER_AMD             0x9001
-#define GL_INT_SAMPLER_BUFFER_AMD         0x9002
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
-#define GL_TESSELLATION_MODE_AMD          0x9004
-#define GL_TESSELLATION_FACTOR_AMD        0x9005
-#define GL_DISCRETE_AMD                   0x9006
-#define GL_CONTINUOUS_AMD                 0x9007
-typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
-typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor);
-GLAPI void APIENTRY glTessellationModeAMD (GLenum mode);
-#endif
-#endif /* GL_AMD_vertex_shader_tessellator */
-
-#ifndef GL_AMD_vertex_shader_viewport_index
-#define GL_AMD_vertex_shader_viewport_index 1
-#endif /* GL_AMD_vertex_shader_viewport_index */
-
-#ifndef GL_APPLE_aux_depth_stencil
-#define GL_APPLE_aux_depth_stencil 1
-#define GL_AUX_DEPTH_STENCIL_APPLE        0x8A14
-#endif /* GL_APPLE_aux_depth_stencil */
-
-#ifndef GL_APPLE_client_storage
-#define GL_APPLE_client_storage 1
-#define GL_UNPACK_CLIENT_STORAGE_APPLE    0x85B2
-#endif /* GL_APPLE_client_storage */
-
-#ifndef GL_APPLE_element_array
-#define GL_APPLE_element_array 1
-#define GL_ELEMENT_ARRAY_APPLE            0x8A0C
-#define GL_ELEMENT_ARRAY_TYPE_APPLE       0x8A0D
-#define GL_ELEMENT_ARRAY_POINTER_APPLE    0x8A0E
-typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer);
-typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const void *pointer);
-GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count);
-GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
-GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
-#endif
-#endif /* GL_APPLE_element_array */
-
-#ifndef GL_APPLE_fence
-#define GL_APPLE_fence 1
-#define GL_DRAW_PIXELS_APPLE              0x8A0A
-#define GL_FENCE_APPLE                    0x8A0B
-typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
-typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
-typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
-typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
-typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences);
-GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences);
-GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence);
-GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence);
-GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence);
-GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence);
-GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name);
-GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name);
-#endif
-#endif /* GL_APPLE_fence */
-
-#ifndef GL_APPLE_float_pixels
-#define GL_APPLE_float_pixels 1
-#define GL_HALF_APPLE                     0x140B
-#define GL_RGBA_FLOAT32_APPLE             0x8814
-#define GL_RGB_FLOAT32_APPLE              0x8815
-#define GL_ALPHA_FLOAT32_APPLE            0x8816
-#define GL_INTENSITY_FLOAT32_APPLE        0x8817
-#define GL_LUMINANCE_FLOAT32_APPLE        0x8818
-#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE  0x8819
-#define GL_RGBA_FLOAT16_APPLE             0x881A
-#define GL_RGB_FLOAT16_APPLE              0x881B
-#define GL_ALPHA_FLOAT16_APPLE            0x881C
-#define GL_INTENSITY_FLOAT16_APPLE        0x881D
-#define GL_LUMINANCE_FLOAT16_APPLE        0x881E
-#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE  0x881F
-#define GL_COLOR_FLOAT_APPLE              0x8A0F
-#endif /* GL_APPLE_float_pixels */
-
-#ifndef GL_APPLE_flush_buffer_range
-#define GL_APPLE_flush_buffer_range 1
-#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
-#define GL_BUFFER_FLUSHING_UNMAP_APPLE    0x8A13
-typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size);
-#endif
-#endif /* GL_APPLE_flush_buffer_range */
-
-#ifndef GL_APPLE_object_purgeable
-#define GL_APPLE_object_purgeable 1
-#define GL_BUFFER_OBJECT_APPLE            0x85B3
-#define GL_RELEASED_APPLE                 0x8A19
-#define GL_VOLATILE_APPLE                 0x8A1A
-#define GL_RETAINED_APPLE                 0x8A1B
-#define GL_UNDEFINED_APPLE                0x8A1C
-#define GL_PURGEABLE_APPLE                0x8A1D
-typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
-typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
-typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
-GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
-GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params);
-#endif
-#endif /* GL_APPLE_object_purgeable */
-
-#ifndef GL_APPLE_rgb_422
-#define GL_APPLE_rgb_422 1
-#define GL_RGB_422_APPLE                  0x8A1F
-#define GL_UNSIGNED_SHORT_8_8_APPLE       0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_APPLE   0x85BB
-#define GL_RGB_RAW_422_APPLE              0x8A51
-#endif /* GL_APPLE_rgb_422 */
-
-#ifndef GL_APPLE_row_bytes
-#define GL_APPLE_row_bytes 1
-#define GL_PACK_ROW_BYTES_APPLE           0x8A15
-#define GL_UNPACK_ROW_BYTES_APPLE         0x8A16
-#endif /* GL_APPLE_row_bytes */
-
-#ifndef GL_APPLE_specular_vector
-#define GL_APPLE_specular_vector 1
-#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
-#endif /* GL_APPLE_specular_vector */
-
-#ifndef GL_APPLE_texture_range
-#define GL_APPLE_texture_range 1
-#define GL_TEXTURE_RANGE_LENGTH_APPLE     0x85B7
-#define GL_TEXTURE_RANGE_POINTER_APPLE    0x85B8
-#define GL_TEXTURE_STORAGE_HINT_APPLE     0x85BC
-#define GL_STORAGE_PRIVATE_APPLE          0x85BD
-#define GL_STORAGE_CACHED_APPLE           0x85BE
-#define GL_STORAGE_SHARED_APPLE           0x85BF
-typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const void *pointer);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const void *pointer);
-GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_APPLE_texture_range */
-
-#ifndef GL_APPLE_transform_hint
-#define GL_APPLE_transform_hint 1
-#define GL_TRANSFORM_HINT_APPLE           0x85B1
-#endif /* GL_APPLE_transform_hint */
-
-#ifndef GL_APPLE_vertex_array_object
-#define GL_APPLE_vertex_array_object 1
-#define GL_VERTEX_ARRAY_BINDING_APPLE     0x85B5
-typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
-typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
-typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array);
-GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays);
-GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays);
-GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array);
-#endif
-#endif /* GL_APPLE_vertex_array_object */
-
-#ifndef GL_APPLE_vertex_array_range
-#define GL_APPLE_vertex_array_range 1
-#define GL_VERTEX_ARRAY_RANGE_APPLE       0x851D
-#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
-#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
-#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
-#define GL_STORAGE_CLIENT_APPLE           0x85B4
-typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
-typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, void *pointer);
-GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer);
-GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param);
-#endif
-#endif /* GL_APPLE_vertex_array_range */
-
-#ifndef GL_APPLE_vertex_program_evaluators
-#define GL_APPLE_vertex_program_evaluators 1
-#define GL_VERTEX_ATTRIB_MAP1_APPLE       0x8A00
-#define GL_VERTEX_ATTRIB_MAP2_APPLE       0x8A01
-#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE  0x8A02
-#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
-#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
-#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
-#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE  0x8A06
-#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
-#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
-#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname);
-GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname);
-GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname);
-GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
-GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
-GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
-GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
-#endif
-#endif /* GL_APPLE_vertex_program_evaluators */
-
-#ifndef GL_APPLE_ycbcr_422
-#define GL_APPLE_ycbcr_422 1
-#define GL_YCBCR_422_APPLE                0x85B9
-#endif /* GL_APPLE_ycbcr_422 */
-
-#ifndef GL_ATI_draw_buffers
-#define GL_ATI_draw_buffers 1
-#define GL_MAX_DRAW_BUFFERS_ATI           0x8824
-#define GL_DRAW_BUFFER0_ATI               0x8825
-#define GL_DRAW_BUFFER1_ATI               0x8826
-#define GL_DRAW_BUFFER2_ATI               0x8827
-#define GL_DRAW_BUFFER3_ATI               0x8828
-#define GL_DRAW_BUFFER4_ATI               0x8829
-#define GL_DRAW_BUFFER5_ATI               0x882A
-#define GL_DRAW_BUFFER6_ATI               0x882B
-#define GL_DRAW_BUFFER7_ATI               0x882C
-#define GL_DRAW_BUFFER8_ATI               0x882D
-#define GL_DRAW_BUFFER9_ATI               0x882E
-#define GL_DRAW_BUFFER10_ATI              0x882F
-#define GL_DRAW_BUFFER11_ATI              0x8830
-#define GL_DRAW_BUFFER12_ATI              0x8831
-#define GL_DRAW_BUFFER13_ATI              0x8832
-#define GL_DRAW_BUFFER14_ATI              0x8833
-#define GL_DRAW_BUFFER15_ATI              0x8834
-typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs);
-#endif
-#endif /* GL_ATI_draw_buffers */
-
-#ifndef GL_ATI_element_array
-#define GL_ATI_element_array 1
-#define GL_ELEMENT_ARRAY_ATI              0x8768
-#define GL_ELEMENT_ARRAY_TYPE_ATI         0x8769
-#define GL_ELEMENT_ARRAY_POINTER_ATI      0x876A
-typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer);
-typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerATI (GLenum type, const void *pointer);
-GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count);
-GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count);
-#endif
-#endif /* GL_ATI_element_array */
-
-#ifndef GL_ATI_envmap_bumpmap
-#define GL_ATI_envmap_bumpmap 1
-#define GL_BUMP_ROT_MATRIX_ATI            0x8775
-#define GL_BUMP_ROT_MATRIX_SIZE_ATI       0x8776
-#define GL_BUMP_NUM_TEX_UNITS_ATI         0x8777
-#define GL_BUMP_TEX_UNITS_ATI             0x8778
-#define GL_DUDV_ATI                       0x8779
-#define GL_DU8DV8_ATI                     0x877A
-#define GL_BUMP_ENVMAP_ATI                0x877B
-#define GL_BUMP_TARGET_ATI                0x877C
-typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
-typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param);
-GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param);
-GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param);
-#endif
-#endif /* GL_ATI_envmap_bumpmap */
-
-#ifndef GL_ATI_fragment_shader
-#define GL_ATI_fragment_shader 1
-#define GL_FRAGMENT_SHADER_ATI            0x8920
-#define GL_REG_0_ATI                      0x8921
-#define GL_REG_1_ATI                      0x8922
-#define GL_REG_2_ATI                      0x8923
-#define GL_REG_3_ATI                      0x8924
-#define GL_REG_4_ATI                      0x8925
-#define GL_REG_5_ATI                      0x8926
-#define GL_REG_6_ATI                      0x8927
-#define GL_REG_7_ATI                      0x8928
-#define GL_REG_8_ATI                      0x8929
-#define GL_REG_9_ATI                      0x892A
-#define GL_REG_10_ATI                     0x892B
-#define GL_REG_11_ATI                     0x892C
-#define GL_REG_12_ATI                     0x892D
-#define GL_REG_13_ATI                     0x892E
-#define GL_REG_14_ATI                     0x892F
-#define GL_REG_15_ATI                     0x8930
-#define GL_REG_16_ATI                     0x8931
-#define GL_REG_17_ATI                     0x8932
-#define GL_REG_18_ATI                     0x8933
-#define GL_REG_19_ATI                     0x8934
-#define GL_REG_20_ATI                     0x8935
-#define GL_REG_21_ATI                     0x8936
-#define GL_REG_22_ATI                     0x8937
-#define GL_REG_23_ATI                     0x8938
-#define GL_REG_24_ATI                     0x8939
-#define GL_REG_25_ATI                     0x893A
-#define GL_REG_26_ATI                     0x893B
-#define GL_REG_27_ATI                     0x893C
-#define GL_REG_28_ATI                     0x893D
-#define GL_REG_29_ATI                     0x893E
-#define GL_REG_30_ATI                     0x893F
-#define GL_REG_31_ATI                     0x8940
-#define GL_CON_0_ATI                      0x8941
-#define GL_CON_1_ATI                      0x8942
-#define GL_CON_2_ATI                      0x8943
-#define GL_CON_3_ATI                      0x8944
-#define GL_CON_4_ATI                      0x8945
-#define GL_CON_5_ATI                      0x8946
-#define GL_CON_6_ATI                      0x8947
-#define GL_CON_7_ATI                      0x8948
-#define GL_CON_8_ATI                      0x8949
-#define GL_CON_9_ATI                      0x894A
-#define GL_CON_10_ATI                     0x894B
-#define GL_CON_11_ATI                     0x894C
-#define GL_CON_12_ATI                     0x894D
-#define GL_CON_13_ATI                     0x894E
-#define GL_CON_14_ATI                     0x894F
-#define GL_CON_15_ATI                     0x8950
-#define GL_CON_16_ATI                     0x8951
-#define GL_CON_17_ATI                     0x8952
-#define GL_CON_18_ATI                     0x8953
-#define GL_CON_19_ATI                     0x8954
-#define GL_CON_20_ATI                     0x8955
-#define GL_CON_21_ATI                     0x8956
-#define GL_CON_22_ATI                     0x8957
-#define GL_CON_23_ATI                     0x8958
-#define GL_CON_24_ATI                     0x8959
-#define GL_CON_25_ATI                     0x895A
-#define GL_CON_26_ATI                     0x895B
-#define GL_CON_27_ATI                     0x895C
-#define GL_CON_28_ATI                     0x895D
-#define GL_CON_29_ATI                     0x895E
-#define GL_CON_30_ATI                     0x895F
-#define GL_CON_31_ATI                     0x8960
-#define GL_MOV_ATI                        0x8961
-#define GL_ADD_ATI                        0x8963
-#define GL_MUL_ATI                        0x8964
-#define GL_SUB_ATI                        0x8965
-#define GL_DOT3_ATI                       0x8966
-#define GL_DOT4_ATI                       0x8967
-#define GL_MAD_ATI                        0x8968
-#define GL_LERP_ATI                       0x8969
-#define GL_CND_ATI                        0x896A
-#define GL_CND0_ATI                       0x896B
-#define GL_DOT2_ADD_ATI                   0x896C
-#define GL_SECONDARY_INTERPOLATOR_ATI     0x896D
-#define GL_NUM_FRAGMENT_REGISTERS_ATI     0x896E
-#define GL_NUM_FRAGMENT_CONSTANTS_ATI     0x896F
-#define GL_NUM_PASSES_ATI                 0x8970
-#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI  0x8971
-#define GL_NUM_INSTRUCTIONS_TOTAL_ATI     0x8972
-#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
-#define GL_NUM_LOOPBACK_COMPONENTS_ATI    0x8974
-#define GL_COLOR_ALPHA_PAIRING_ATI        0x8975
-#define GL_SWIZZLE_STR_ATI                0x8976
-#define GL_SWIZZLE_STQ_ATI                0x8977
-#define GL_SWIZZLE_STR_DR_ATI             0x8978
-#define GL_SWIZZLE_STQ_DQ_ATI             0x8979
-#define GL_SWIZZLE_STRQ_ATI               0x897A
-#define GL_SWIZZLE_STRQ_DQ_ATI            0x897B
-#define GL_RED_BIT_ATI                    0x00000001
-#define GL_GREEN_BIT_ATI                  0x00000002
-#define GL_BLUE_BIT_ATI                   0x00000004
-#define GL_2X_BIT_ATI                     0x00000001
-#define GL_4X_BIT_ATI                     0x00000002
-#define GL_8X_BIT_ATI                     0x00000004
-#define GL_HALF_BIT_ATI                   0x00000008
-#define GL_QUARTER_BIT_ATI                0x00000010
-#define GL_EIGHTH_BIT_ATI                 0x00000020
-#define GL_SATURATE_BIT_ATI               0x00000040
-#define GL_COMP_BIT_ATI                   0x00000002
-#define GL_NEGATE_BIT_ATI                 0x00000004
-#define GL_BIAS_BIT_ATI                   0x00000008
-typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
-typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
-typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);
-typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
-typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
-typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range);
-GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id);
-GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id);
-GLAPI void APIENTRY glBeginFragmentShaderATI (void);
-GLAPI void APIENTRY glEndFragmentShaderATI (void);
-GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle);
-GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle);
-GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value);
-#endif
-#endif /* GL_ATI_fragment_shader */
-
-#ifndef GL_ATI_map_object_buffer
-#define GL_ATI_map_object_buffer 1
-typedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer);
-GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer);
-#endif
-#endif /* GL_ATI_map_object_buffer */
-
-#ifndef GL_ATI_meminfo
-#define GL_ATI_meminfo 1
-#define GL_VBO_FREE_MEMORY_ATI            0x87FB
-#define GL_TEXTURE_FREE_MEMORY_ATI        0x87FC
-#define GL_RENDERBUFFER_FREE_MEMORY_ATI   0x87FD
-#endif /* GL_ATI_meminfo */
-
-#ifndef GL_ATI_pixel_format_float
-#define GL_ATI_pixel_format_float 1
-#define GL_RGBA_FLOAT_MODE_ATI            0x8820
-#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
-#endif /* GL_ATI_pixel_format_float */
-
-#ifndef GL_ATI_pn_triangles
-#define GL_ATI_pn_triangles 1
-#define GL_PN_TRIANGLES_ATI               0x87F0
-#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
-#define GL_PN_TRIANGLES_POINT_MODE_ATI    0x87F2
-#define GL_PN_TRIANGLES_NORMAL_MODE_ATI   0x87F3
-#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
-#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
-#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
-#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
-#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
-typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param);
-GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param);
-#endif
-#endif /* GL_ATI_pn_triangles */
-
-#ifndef GL_ATI_separate_stencil
-#define GL_ATI_separate_stencil 1
-#define GL_STENCIL_BACK_FUNC_ATI          0x8800
-#define GL_STENCIL_BACK_FAIL_ATI          0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
-typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-#endif
-#endif /* GL_ATI_separate_stencil */
-
-#ifndef GL_ATI_text_fragment_shader
-#define GL_ATI_text_fragment_shader 1
-#define GL_TEXT_FRAGMENT_SHADER_ATI       0x8200
-#endif /* GL_ATI_text_fragment_shader */
-
-#ifndef GL_ATI_texture_env_combine3
-#define GL_ATI_texture_env_combine3 1
-#define GL_MODULATE_ADD_ATI               0x8744
-#define GL_MODULATE_SIGNED_ADD_ATI        0x8745
-#define GL_MODULATE_SUBTRACT_ATI          0x8746
-#endif /* GL_ATI_texture_env_combine3 */
-
-#ifndef GL_ATI_texture_float
-#define GL_ATI_texture_float 1
-#define GL_RGBA_FLOAT32_ATI               0x8814
-#define GL_RGB_FLOAT32_ATI                0x8815
-#define GL_ALPHA_FLOAT32_ATI              0x8816
-#define GL_INTENSITY_FLOAT32_ATI          0x8817
-#define GL_LUMINANCE_FLOAT32_ATI          0x8818
-#define GL_LUMINANCE_ALPHA_FLOAT32_ATI    0x8819
-#define GL_RGBA_FLOAT16_ATI               0x881A
-#define GL_RGB_FLOAT16_ATI                0x881B
-#define GL_ALPHA_FLOAT16_ATI              0x881C
-#define GL_INTENSITY_FLOAT16_ATI          0x881D
-#define GL_LUMINANCE_FLOAT16_ATI          0x881E
-#define GL_LUMINANCE_ALPHA_FLOAT16_ATI    0x881F
-#endif /* GL_ATI_texture_float */
-
-#ifndef GL_ATI_texture_mirror_once
-#define GL_ATI_texture_mirror_once 1
-#define GL_MIRROR_CLAMP_ATI               0x8742
-#define GL_MIRROR_CLAMP_TO_EDGE_ATI       0x8743
-#endif /* GL_ATI_texture_mirror_once */
-
-#ifndef GL_ATI_vertex_array_object
-#define GL_ATI_vertex_array_object 1
-#define GL_STATIC_ATI                     0x8760
-#define GL_DYNAMIC_ATI                    0x8761
-#define GL_PRESERVE_ATI                   0x8762
-#define GL_DISCARD_ATI                    0x8763
-#define GL_OBJECT_BUFFER_SIZE_ATI         0x8764
-#define GL_OBJECT_BUFFER_USAGE_ATI        0x8765
-#define GL_ARRAY_OBJECT_BUFFER_ATI        0x8766
-#define GL_ARRAY_OBJECT_OFFSET_ATI        0x8767
-typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage);
-typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
-typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage);
-GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer);
-GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
-GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer);
-GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params);
-GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ATI_vertex_array_object */
-
-#ifndef GL_ATI_vertex_attrib_array_object
-#define GL_ATI_vertex_attrib_array_object 1
-typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ATI_vertex_attrib_array_object */
-
-#ifndef GL_ATI_vertex_streams
-#define GL_ATI_vertex_streams 1
-#define GL_MAX_VERTEX_STREAMS_ATI         0x876B
-#define GL_VERTEX_STREAM0_ATI             0x876C
-#define GL_VERTEX_STREAM1_ATI             0x876D
-#define GL_VERTEX_STREAM2_ATI             0x876E
-#define GL_VERTEX_STREAM3_ATI             0x876F
-#define GL_VERTEX_STREAM4_ATI             0x8770
-#define GL_VERTEX_STREAM5_ATI             0x8771
-#define GL_VERTEX_STREAM6_ATI             0x8772
-#define GL_VERTEX_STREAM7_ATI             0x8773
-#define GL_VERTEX_SOURCE_ATI              0x8774
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
-typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x);
-GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x);
-GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x);
-GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x);
-GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y);
-GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
-GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords);
-GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
-GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz);
-GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
-GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
-GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream);
-GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param);
-GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param);
-#endif
-#endif /* GL_ATI_vertex_streams */
-
-#ifndef GL_EXT_422_pixels
-#define GL_EXT_422_pixels 1
-#define GL_422_EXT                        0x80CC
-#define GL_422_REV_EXT                    0x80CD
-#define GL_422_AVERAGE_EXT                0x80CE
-#define GL_422_REV_AVERAGE_EXT            0x80CF
-#endif /* GL_EXT_422_pixels */
-
-#ifndef GL_EXT_abgr
-#define GL_EXT_abgr 1
-#define GL_ABGR_EXT                       0x8000
-#endif /* GL_EXT_abgr */
-
-#ifndef GL_EXT_bgra
-#define GL_EXT_bgra 1
-#define GL_BGR_EXT                        0x80E0
-#define GL_BGRA_EXT                       0x80E1
-#endif /* GL_EXT_bgra */
-
-#ifndef GL_EXT_bindable_uniform
-#define GL_EXT_bindable_uniform 1
-#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
-#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
-#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
-#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT  0x8DED
-#define GL_UNIFORM_BUFFER_EXT             0x8DEE
-#define GL_UNIFORM_BUFFER_BINDING_EXT     0x8DEF
-typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
-typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer);
-GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location);
-GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location);
-#endif
-#endif /* GL_EXT_bindable_uniform */
-
-#ifndef GL_EXT_blend_color
-#define GL_EXT_blend_color 1
-#define GL_CONSTANT_COLOR_EXT             0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR_EXT   0x8002
-#define GL_CONSTANT_ALPHA_EXT             0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT   0x8004
-#define GL_BLEND_COLOR_EXT                0x8005
-typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-#endif
-#endif /* GL_EXT_blend_color */
-
-#ifndef GL_EXT_blend_equation_separate
-#define GL_EXT_blend_equation_separate 1
-#define GL_BLEND_EQUATION_RGB_EXT         0x8009
-#define GL_BLEND_EQUATION_ALPHA_EXT       0x883D
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha);
-#endif
-#endif /* GL_EXT_blend_equation_separate */
-
-#ifndef GL_EXT_blend_func_separate
-#define GL_EXT_blend_func_separate 1
-#define GL_BLEND_DST_RGB_EXT              0x80C8
-#define GL_BLEND_SRC_RGB_EXT              0x80C9
-#define GL_BLEND_DST_ALPHA_EXT            0x80CA
-#define GL_BLEND_SRC_ALPHA_EXT            0x80CB
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#endif
-#endif /* GL_EXT_blend_func_separate */
-
-#ifndef GL_EXT_blend_logic_op
-#define GL_EXT_blend_logic_op 1
-#endif /* GL_EXT_blend_logic_op */
-
-#ifndef GL_EXT_blend_minmax
-#define GL_EXT_blend_minmax 1
-#define GL_MIN_EXT                        0x8007
-#define GL_MAX_EXT                        0x8008
-#define GL_FUNC_ADD_EXT                   0x8006
-#define GL_BLEND_EQUATION_EXT             0x8009
-typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationEXT (GLenum mode);
-#endif
-#endif /* GL_EXT_blend_minmax */
-
-#ifndef GL_EXT_blend_subtract
-#define GL_EXT_blend_subtract 1
-#define GL_FUNC_SUBTRACT_EXT              0x800A
-#define GL_FUNC_REVERSE_SUBTRACT_EXT      0x800B
-#endif /* GL_EXT_blend_subtract */
-
-#ifndef GL_EXT_clip_volume_hint
-#define GL_EXT_clip_volume_hint 1
-#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT  0x80F0
-#endif /* GL_EXT_clip_volume_hint */
-
-#ifndef GL_EXT_cmyka
-#define GL_EXT_cmyka 1
-#define GL_CMYK_EXT                       0x800C
-#define GL_CMYKA_EXT                      0x800D
-#define GL_PACK_CMYK_HINT_EXT             0x800E
-#define GL_UNPACK_CMYK_HINT_EXT           0x800F
-#endif /* GL_EXT_cmyka */
-
-#ifndef GL_EXT_color_subtable
-#define GL_EXT_color_subtable 1
-typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-#endif
-#endif /* GL_EXT_color_subtable */
-
-#ifndef GL_EXT_compiled_vertex_array
-#define GL_EXT_compiled_vertex_array 1
-#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT   0x81A8
-#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT   0x81A9
-typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count);
-GLAPI void APIENTRY glUnlockArraysEXT (void);
-#endif
-#endif /* GL_EXT_compiled_vertex_array */
-
-#ifndef GL_EXT_convolution
-#define GL_EXT_convolution 1
-#define GL_CONVOLUTION_1D_EXT             0x8010
-#define GL_CONVOLUTION_2D_EXT             0x8011
-#define GL_SEPARABLE_2D_EXT               0x8012
-#define GL_CONVOLUTION_BORDER_MODE_EXT    0x8013
-#define GL_CONVOLUTION_FILTER_SCALE_EXT   0x8014
-#define GL_CONVOLUTION_FILTER_BIAS_EXT    0x8015
-#define GL_REDUCE_EXT                     0x8016
-#define GL_CONVOLUTION_FORMAT_EXT         0x8017
-#define GL_CONVOLUTION_WIDTH_EXT          0x8018
-#define GL_CONVOLUTION_HEIGHT_EXT         0x8019
-#define GL_MAX_CONVOLUTION_WIDTH_EXT      0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT_EXT     0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS_EXT  0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params);
-GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params);
-GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image);
-GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-#endif
-#endif /* GL_EXT_convolution */
-
-#ifndef GL_EXT_coordinate_frame
-#define GL_EXT_coordinate_frame 1
-#define GL_TANGENT_ARRAY_EXT              0x8439
-#define GL_BINORMAL_ARRAY_EXT             0x843A
-#define GL_CURRENT_TANGENT_EXT            0x843B
-#define GL_CURRENT_BINORMAL_EXT           0x843C
-#define GL_TANGENT_ARRAY_TYPE_EXT         0x843E
-#define GL_TANGENT_ARRAY_STRIDE_EXT       0x843F
-#define GL_BINORMAL_ARRAY_TYPE_EXT        0x8440
-#define GL_BINORMAL_ARRAY_STRIDE_EXT      0x8441
-#define GL_TANGENT_ARRAY_POINTER_EXT      0x8442
-#define GL_BINORMAL_ARRAY_POINTER_EXT     0x8443
-#define GL_MAP1_TANGENT_EXT               0x8444
-#define GL_MAP2_TANGENT_EXT               0x8445
-#define GL_MAP1_BINORMAL_EXT              0x8446
-#define GL_MAP2_BINORMAL_EXT              0x8447
-typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
-typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
-typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
-typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
-typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
-typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
-typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
-typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
-typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
-typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
-typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz);
-GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v);
-GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz);
-GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v);
-GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz);
-GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v);
-GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz);
-GLAPI void APIENTRY glTangent3ivEXT (const GLint *v);
-GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz);
-GLAPI void APIENTRY glTangent3svEXT (const GLshort *v);
-GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz);
-GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v);
-GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz);
-GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v);
-GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz);
-GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v);
-GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz);
-GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v);
-GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz);
-GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v);
-GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_coordinate_frame */
-
-#ifndef GL_EXT_copy_texture
-#define GL_EXT_copy_texture 1
-typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_EXT_copy_texture */
-
-#ifndef GL_EXT_cull_vertex
-#define GL_EXT_cull_vertex 1
-#define GL_CULL_VERTEX_EXT                0x81AA
-#define GL_CULL_VERTEX_EYE_POSITION_EXT   0x81AB
-#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
-typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_EXT_cull_vertex */
-
-#ifndef GL_EXT_debug_label
-#define GL_EXT_debug_label 1
-#define GL_PROGRAM_PIPELINE_OBJECT_EXT    0x8A4F
-#define GL_PROGRAM_OBJECT_EXT             0x8B40
-#define GL_SHADER_OBJECT_EXT              0x8B48
-#define GL_BUFFER_OBJECT_EXT              0x9151
-#define GL_QUERY_OBJECT_EXT               0x9153
-#define GL_VERTEX_ARRAY_OBJECT_EXT        0x9154
-typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-#endif /* GL_EXT_debug_label */
-
-#ifndef GL_EXT_debug_marker
-#define GL_EXT_debug_marker 1
-typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
-GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
-GLAPI void APIENTRY glPopGroupMarkerEXT (void);
-#endif
-#endif /* GL_EXT_debug_marker */
-
-#ifndef GL_EXT_depth_bounds_test
-#define GL_EXT_depth_bounds_test 1
-#define GL_DEPTH_BOUNDS_TEST_EXT          0x8890
-#define GL_DEPTH_BOUNDS_EXT               0x8891
-typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);
-#endif
-#endif /* GL_EXT_depth_bounds_test */
-
-#ifndef GL_EXT_direct_state_access
-#define GL_EXT_direct_state_access 1
-#define GL_PROGRAM_MATRIX_EXT             0x8E2D
-#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT   0x8E2E
-#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
-typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
-typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);
-typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data);
-typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
-typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img);
-typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);
-typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
-typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
-typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
-typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
-GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
-GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
-GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
-GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
-GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
-GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
-GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
-GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
-GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
-GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
-GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
-GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
-GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data);
-GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
-GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
-GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
-GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
-GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
-GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img);
-GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img);
-GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
-GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params);
-GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
-GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
-GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
-GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
-GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params);
-GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string);
-GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
-GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
-GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
-GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
-GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
-GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
-GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array);
-GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array);
-GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param);
-GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param);
-GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
-GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
-GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor);
-#endif
-#endif /* GL_EXT_direct_state_access */
-
-#ifndef GL_EXT_draw_buffers2
-#define GL_EXT_draw_buffers2 1
-typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-#endif
-#endif /* GL_EXT_draw_buffers2 */
-
-#ifndef GL_EXT_draw_instanced
-#define GL_EXT_draw_instanced 1
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
-GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#endif
-#endif /* GL_EXT_draw_instanced */
-
-#ifndef GL_EXT_draw_range_elements
-#define GL_EXT_draw_range_elements 1
-#define GL_MAX_ELEMENTS_VERTICES_EXT      0x80E8
-#define GL_MAX_ELEMENTS_INDICES_EXT       0x80E9
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-#endif
-#endif /* GL_EXT_draw_range_elements */
-
-#ifndef GL_EXT_fog_coord
-#define GL_EXT_fog_coord 1
-#define GL_FOG_COORDINATE_SOURCE_EXT      0x8450
-#define GL_FOG_COORDINATE_EXT             0x8451
-#define GL_FRAGMENT_DEPTH_EXT             0x8452
-#define GL_CURRENT_FOG_COORDINATE_EXT     0x8453
-#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT  0x8454
-#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
-#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
-#define GL_FOG_COORDINATE_ARRAY_EXT       0x8457
-typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
-typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord);
-GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord);
-GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord);
-GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord);
-GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_fog_coord */
-
-#ifndef GL_EXT_framebuffer_blit
-#define GL_EXT_framebuffer_blit 1
-#define GL_READ_FRAMEBUFFER_EXT           0x8CA8
-#define GL_DRAW_FRAMEBUFFER_EXT           0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_EXT   0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_EXT   0x8CAA
-typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-#endif /* GL_EXT_framebuffer_blit */
-
-#ifndef GL_EXT_framebuffer_multisample
-#define GL_EXT_framebuffer_multisample 1
-#define GL_RENDERBUFFER_SAMPLES_EXT       0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
-#define GL_MAX_SAMPLES_EXT                0x8D57
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_EXT_framebuffer_multisample */
-
-#ifndef GL_EXT_framebuffer_multisample_blit_scaled
-#define GL_EXT_framebuffer_multisample_blit_scaled 1
-#define GL_SCALED_RESOLVE_FASTEST_EXT     0x90BA
-#define GL_SCALED_RESOLVE_NICEST_EXT      0x90BB
-#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
-
-#ifndef GL_EXT_framebuffer_object
-#define GL_EXT_framebuffer_object 1
-#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
-#define GL_MAX_RENDERBUFFER_SIZE_EXT      0x84E8
-#define GL_FRAMEBUFFER_BINDING_EXT        0x8CA6
-#define GL_RENDERBUFFER_BINDING_EXT       0x8CA7
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
-#define GL_FRAMEBUFFER_COMPLETE_EXT       0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
-#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
-#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
-#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
-#define GL_FRAMEBUFFER_UNSUPPORTED_EXT    0x8CDD
-#define GL_MAX_COLOR_ATTACHMENTS_EXT      0x8CDF
-#define GL_COLOR_ATTACHMENT0_EXT          0x8CE0
-#define GL_COLOR_ATTACHMENT1_EXT          0x8CE1
-#define GL_COLOR_ATTACHMENT2_EXT          0x8CE2
-#define GL_COLOR_ATTACHMENT3_EXT          0x8CE3
-#define GL_COLOR_ATTACHMENT4_EXT          0x8CE4
-#define GL_COLOR_ATTACHMENT5_EXT          0x8CE5
-#define GL_COLOR_ATTACHMENT6_EXT          0x8CE6
-#define GL_COLOR_ATTACHMENT7_EXT          0x8CE7
-#define GL_COLOR_ATTACHMENT8_EXT          0x8CE8
-#define GL_COLOR_ATTACHMENT9_EXT          0x8CE9
-#define GL_COLOR_ATTACHMENT10_EXT         0x8CEA
-#define GL_COLOR_ATTACHMENT11_EXT         0x8CEB
-#define GL_COLOR_ATTACHMENT12_EXT         0x8CEC
-#define GL_COLOR_ATTACHMENT13_EXT         0x8CED
-#define GL_COLOR_ATTACHMENT14_EXT         0x8CEE
-#define GL_COLOR_ATTACHMENT15_EXT         0x8CEF
-#define GL_DEPTH_ATTACHMENT_EXT           0x8D00
-#define GL_STENCIL_ATTACHMENT_EXT         0x8D20
-#define GL_FRAMEBUFFER_EXT                0x8D40
-#define GL_RENDERBUFFER_EXT               0x8D41
-#define GL_RENDERBUFFER_WIDTH_EXT         0x8D42
-#define GL_RENDERBUFFER_HEIGHT_EXT        0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
-#define GL_STENCIL_INDEX1_EXT             0x8D46
-#define GL_STENCIL_INDEX4_EXT             0x8D47
-#define GL_STENCIL_INDEX8_EXT             0x8D48
-#define GL_STENCIL_INDEX16_EXT            0x8D49
-#define GL_RENDERBUFFER_RED_SIZE_EXT      0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE_EXT    0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE_EXT     0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE_EXT    0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE_EXT    0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE_EXT  0x8D55
-typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
-typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
-typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
-typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
-typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer);
-GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);
-GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
-GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer);
-GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer);
-GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);
-GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
-GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target);
-GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target);
-#endif
-#endif /* GL_EXT_framebuffer_object */
-
-#ifndef GL_EXT_framebuffer_sRGB
-#define GL_EXT_framebuffer_sRGB 1
-#define GL_FRAMEBUFFER_SRGB_EXT           0x8DB9
-#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT   0x8DBA
-#endif /* GL_EXT_framebuffer_sRGB */
-
-#ifndef GL_EXT_geometry_shader4
-#define GL_EXT_geometry_shader4 1
-#define GL_GEOMETRY_SHADER_EXT            0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT_EXT      0x8DDA
-#define GL_GEOMETRY_INPUT_TYPE_EXT        0x8DDB
-#define GL_GEOMETRY_OUTPUT_TYPE_EXT       0x8DDC
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
-#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
-#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
-#define GL_MAX_VARYING_COMPONENTS_EXT     0x8B4B
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
-#define GL_LINES_ADJACENCY_EXT            0x000A
-#define GL_LINE_STRIP_ADJACENCY_EXT       0x000B
-#define GL_TRIANGLES_ADJACENCY_EXT        0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY_EXT   0x000D
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
-#define GL_PROGRAM_POINT_SIZE_EXT         0x8642
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
-#endif
-#endif /* GL_EXT_geometry_shader4 */
-
-#ifndef GL_EXT_gpu_program_parameters
-#define GL_EXT_gpu_program_parameters 1
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-#endif
-#endif /* GL_EXT_gpu_program_parameters */
-
-#ifndef GL_EXT_gpu_shader4
-#define GL_EXT_gpu_shader4 1
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
-#define GL_SAMPLER_1D_ARRAY_EXT           0x8DC0
-#define GL_SAMPLER_2D_ARRAY_EXT           0x8DC1
-#define GL_SAMPLER_BUFFER_EXT             0x8DC2
-#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT    0x8DC3
-#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT    0x8DC4
-#define GL_SAMPLER_CUBE_SHADOW_EXT        0x8DC5
-#define GL_UNSIGNED_INT_VEC2_EXT          0x8DC6
-#define GL_UNSIGNED_INT_VEC3_EXT          0x8DC7
-#define GL_UNSIGNED_INT_VEC4_EXT          0x8DC8
-#define GL_INT_SAMPLER_1D_EXT             0x8DC9
-#define GL_INT_SAMPLER_2D_EXT             0x8DCA
-#define GL_INT_SAMPLER_3D_EXT             0x8DCB
-#define GL_INT_SAMPLER_CUBE_EXT           0x8DCC
-#define GL_INT_SAMPLER_2D_RECT_EXT        0x8DCD
-#define GL_INT_SAMPLER_1D_ARRAY_EXT       0x8DCE
-#define GL_INT_SAMPLER_2D_ARRAY_EXT       0x8DCF
-#define GL_INT_SAMPLER_BUFFER_EXT         0x8DD0
-#define GL_UNSIGNED_INT_SAMPLER_1D_EXT    0x8DD1
-#define GL_UNSIGNED_INT_SAMPLER_2D_EXT    0x8DD2
-#define GL_UNSIGNED_INT_SAMPLER_3D_EXT    0x8DD3
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT  0x8DD4
-#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
-#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
-#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
-#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT   0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT   0x8905
-typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params);
-GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0);
-GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value);
-#endif
-#endif /* GL_EXT_gpu_shader4 */
-
-#ifndef GL_EXT_histogram
-#define GL_EXT_histogram 1
-#define GL_HISTOGRAM_EXT                  0x8024
-#define GL_PROXY_HISTOGRAM_EXT            0x8025
-#define GL_HISTOGRAM_WIDTH_EXT            0x8026
-#define GL_HISTOGRAM_FORMAT_EXT           0x8027
-#define GL_HISTOGRAM_RED_SIZE_EXT         0x8028
-#define GL_HISTOGRAM_GREEN_SIZE_EXT       0x8029
-#define GL_HISTOGRAM_BLUE_SIZE_EXT        0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE_EXT       0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT   0x802C
-#define GL_HISTOGRAM_SINK_EXT             0x802D
-#define GL_MINMAX_EXT                     0x802E
-#define GL_MINMAX_FORMAT_EXT              0x802F
-#define GL_MINMAX_SINK_EXT                0x8030
-#define GL_TABLE_TOO_LARGE_EXT            0x8031
-typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glResetHistogramEXT (GLenum target);
-GLAPI void APIENTRY glResetMinmaxEXT (GLenum target);
-#endif
-#endif /* GL_EXT_histogram */
-
-#ifndef GL_EXT_index_array_formats
-#define GL_EXT_index_array_formats 1
-#define GL_IUI_V2F_EXT                    0x81AD
-#define GL_IUI_V3F_EXT                    0x81AE
-#define GL_IUI_N3F_V2F_EXT                0x81AF
-#define GL_IUI_N3F_V3F_EXT                0x81B0
-#define GL_T2F_IUI_V2F_EXT                0x81B1
-#define GL_T2F_IUI_V3F_EXT                0x81B2
-#define GL_T2F_IUI_N3F_V2F_EXT            0x81B3
-#define GL_T2F_IUI_N3F_V3F_EXT            0x81B4
-#endif /* GL_EXT_index_array_formats */
-
-#ifndef GL_EXT_index_func
-#define GL_EXT_index_func 1
-#define GL_INDEX_TEST_EXT                 0x81B5
-#define GL_INDEX_TEST_FUNC_EXT            0x81B6
-#define GL_INDEX_TEST_REF_EXT             0x81B7
-typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref);
-#endif
-#endif /* GL_EXT_index_func */
-
-#ifndef GL_EXT_index_material
-#define GL_EXT_index_material 1
-#define GL_INDEX_MATERIAL_EXT             0x81B8
-#define GL_INDEX_MATERIAL_PARAMETER_EXT   0x81B9
-#define GL_INDEX_MATERIAL_FACE_EXT        0x81BA
-typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode);
-#endif
-#endif /* GL_EXT_index_material */
-
-#ifndef GL_EXT_index_texture
-#define GL_EXT_index_texture 1
-#endif /* GL_EXT_index_texture */
-
-#ifndef GL_EXT_light_texture
-#define GL_EXT_light_texture 1
-#define GL_FRAGMENT_MATERIAL_EXT          0x8349
-#define GL_FRAGMENT_NORMAL_EXT            0x834A
-#define GL_FRAGMENT_COLOR_EXT             0x834C
-#define GL_ATTENUATION_EXT                0x834D
-#define GL_SHADOW_ATTENUATION_EXT         0x834E
-#define GL_TEXTURE_APPLICATION_MODE_EXT   0x834F
-#define GL_TEXTURE_LIGHT_EXT              0x8350
-#define GL_TEXTURE_MATERIAL_FACE_EXT      0x8351
-#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
-typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
-typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glApplyTextureEXT (GLenum mode);
-GLAPI void APIENTRY glTextureLightEXT (GLenum pname);
-GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode);
-#endif
-#endif /* GL_EXT_light_texture */
-
-#ifndef GL_EXT_misc_attribute
-#define GL_EXT_misc_attribute 1
-#endif /* GL_EXT_misc_attribute */
-
-#ifndef GL_EXT_multi_draw_arrays
-#define GL_EXT_multi_draw_arrays 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
-#endif
-#endif /* GL_EXT_multi_draw_arrays */
-
-#ifndef GL_EXT_multisample
-#define GL_EXT_multisample 1
-#define GL_MULTISAMPLE_EXT                0x809D
-#define GL_SAMPLE_ALPHA_TO_MASK_EXT       0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_EXT        0x809F
-#define GL_SAMPLE_MASK_EXT                0x80A0
-#define GL_1PASS_EXT                      0x80A1
-#define GL_2PASS_0_EXT                    0x80A2
-#define GL_2PASS_1_EXT                    0x80A3
-#define GL_4PASS_0_EXT                    0x80A4
-#define GL_4PASS_1_EXT                    0x80A5
-#define GL_4PASS_2_EXT                    0x80A6
-#define GL_4PASS_3_EXT                    0x80A7
-#define GL_SAMPLE_BUFFERS_EXT             0x80A8
-#define GL_SAMPLES_EXT                    0x80A9
-#define GL_SAMPLE_MASK_VALUE_EXT          0x80AA
-#define GL_SAMPLE_MASK_INVERT_EXT         0x80AB
-#define GL_SAMPLE_PATTERN_EXT             0x80AC
-#define GL_MULTISAMPLE_BIT_EXT            0x20000000
-typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert);
-GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern);
-#endif
-#endif /* GL_EXT_multisample */
-
-#ifndef GL_EXT_packed_depth_stencil
-#define GL_EXT_packed_depth_stencil 1
-#define GL_DEPTH_STENCIL_EXT              0x84F9
-#define GL_UNSIGNED_INT_24_8_EXT          0x84FA
-#define GL_DEPTH24_STENCIL8_EXT           0x88F0
-#define GL_TEXTURE_STENCIL_SIZE_EXT       0x88F1
-#endif /* GL_EXT_packed_depth_stencil */
-
-#ifndef GL_EXT_packed_float
-#define GL_EXT_packed_float 1
-#define GL_R11F_G11F_B10F_EXT             0x8C3A
-#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
-#define GL_RGBA_SIGNED_COMPONENTS_EXT     0x8C3C
-#endif /* GL_EXT_packed_float */
-
-#ifndef GL_EXT_packed_pixels
-#define GL_EXT_packed_pixels 1
-#define GL_UNSIGNED_BYTE_3_3_2_EXT        0x8032
-#define GL_UNSIGNED_SHORT_4_4_4_4_EXT     0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1_EXT     0x8034
-#define GL_UNSIGNED_INT_8_8_8_8_EXT       0x8035
-#define GL_UNSIGNED_INT_10_10_10_2_EXT    0x8036
-#endif /* GL_EXT_packed_pixels */
-
-#ifndef GL_EXT_paletted_texture
-#define GL_EXT_paletted_texture 1
-#define GL_COLOR_INDEX1_EXT               0x80E2
-#define GL_COLOR_INDEX2_EXT               0x80E3
-#define GL_COLOR_INDEX4_EXT               0x80E4
-#define GL_COLOR_INDEX8_EXT               0x80E5
-#define GL_COLOR_INDEX12_EXT              0x80E6
-#define GL_COLOR_INDEX16_EXT              0x80E7
-#define GL_TEXTURE_INDEX_SIZE_EXT         0x80ED
-typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
-GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data);
-GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_EXT_paletted_texture */
-
-#ifndef GL_EXT_pixel_buffer_object
-#define GL_EXT_pixel_buffer_object 1
-#define GL_PIXEL_PACK_BUFFER_EXT          0x88EB
-#define GL_PIXEL_UNPACK_BUFFER_EXT        0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING_EXT  0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
-#endif /* GL_EXT_pixel_buffer_object */
-
-#ifndef GL_EXT_pixel_transform
-#define GL_EXT_pixel_transform 1
-#define GL_PIXEL_TRANSFORM_2D_EXT         0x8330
-#define GL_PIXEL_MAG_FILTER_EXT           0x8331
-#define GL_PIXEL_MIN_FILTER_EXT           0x8332
-#define GL_PIXEL_CUBIC_WEIGHT_EXT         0x8333
-#define GL_CUBIC_EXT                      0x8334
-#define GL_AVERAGE_EXT                    0x8335
-#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
-#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
-#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT  0x8338
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_EXT_pixel_transform */
-
-#ifndef GL_EXT_pixel_transform_color_table
-#define GL_EXT_pixel_transform_color_table 1
-#endif /* GL_EXT_pixel_transform_color_table */
-
-#ifndef GL_EXT_point_parameters
-#define GL_EXT_point_parameters 1
-#define GL_POINT_SIZE_MIN_EXT             0x8126
-#define GL_POINT_SIZE_MAX_EXT             0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_EXT  0x8128
-#define GL_DISTANCE_ATTENUATION_EXT       0x8129
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params);
-#endif
-#endif /* GL_EXT_point_parameters */
-
-#ifndef GL_EXT_polygon_offset
-#define GL_EXT_polygon_offset 1
-#define GL_POLYGON_OFFSET_EXT             0x8037
-#define GL_POLYGON_OFFSET_FACTOR_EXT      0x8038
-#define GL_POLYGON_OFFSET_BIAS_EXT        0x8039
-typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias);
-#endif
-#endif /* GL_EXT_polygon_offset */
-
-#ifndef GL_EXT_provoking_vertex
-#define GL_EXT_provoking_vertex 1
-#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
-#define GL_FIRST_VERTEX_CONVENTION_EXT    0x8E4D
-#define GL_LAST_VERTEX_CONVENTION_EXT     0x8E4E
-#define GL_PROVOKING_VERTEX_EXT           0x8E4F
-typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode);
-#endif
-#endif /* GL_EXT_provoking_vertex */
-
-#ifndef GL_EXT_rescale_normal
-#define GL_EXT_rescale_normal 1
-#define GL_RESCALE_NORMAL_EXT             0x803A
-#endif /* GL_EXT_rescale_normal */
-
-#ifndef GL_EXT_secondary_color
-#define GL_EXT_secondary_color 1
-#define GL_COLOR_SUM_EXT                  0x8458
-#define GL_CURRENT_SECONDARY_COLOR_EXT    0x8459
-#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
-#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
-#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
-#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
-#define GL_SECONDARY_COLOR_ARRAY_EXT      0x845E
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);
-GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v);
-GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);
-GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v);
-GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);
-GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v);
-GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);
-GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v);
-GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);
-GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v);
-GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);
-GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v);
-GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);
-GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v);
-GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);
-GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v);
-GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_secondary_color */
-
-#ifndef GL_EXT_separate_shader_objects
-#define GL_EXT_separate_shader_objects 1
-#define GL_ACTIVE_PROGRAM_EXT             0x8B8D
-typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
-typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
-GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
-GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
-#endif
-#endif /* GL_EXT_separate_shader_objects */
-
-#ifndef GL_EXT_separate_specular_color
-#define GL_EXT_separate_specular_color 1
-#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT  0x81F8
-#define GL_SINGLE_COLOR_EXT               0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR_EXT    0x81FA
-#endif /* GL_EXT_separate_specular_color */
-
-#ifndef GL_EXT_shader_image_load_formatted
-#define GL_EXT_shader_image_load_formatted 1
-#endif /* GL_EXT_shader_image_load_formatted */
-
-#ifndef GL_EXT_shader_image_load_store
-#define GL_EXT_shader_image_load_store 1
-#define GL_MAX_IMAGE_UNITS_EXT            0x8F38
-#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
-#define GL_IMAGE_BINDING_NAME_EXT         0x8F3A
-#define GL_IMAGE_BINDING_LEVEL_EXT        0x8F3B
-#define GL_IMAGE_BINDING_LAYERED_EXT      0x8F3C
-#define GL_IMAGE_BINDING_LAYER_EXT        0x8F3D
-#define GL_IMAGE_BINDING_ACCESS_EXT       0x8F3E
-#define GL_IMAGE_1D_EXT                   0x904C
-#define GL_IMAGE_2D_EXT                   0x904D
-#define GL_IMAGE_3D_EXT                   0x904E
-#define GL_IMAGE_2D_RECT_EXT              0x904F
-#define GL_IMAGE_CUBE_EXT                 0x9050
-#define GL_IMAGE_BUFFER_EXT               0x9051
-#define GL_IMAGE_1D_ARRAY_EXT             0x9052
-#define GL_IMAGE_2D_ARRAY_EXT             0x9053
-#define GL_IMAGE_CUBE_MAP_ARRAY_EXT       0x9054
-#define GL_IMAGE_2D_MULTISAMPLE_EXT       0x9055
-#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
-#define GL_INT_IMAGE_1D_EXT               0x9057
-#define GL_INT_IMAGE_2D_EXT               0x9058
-#define GL_INT_IMAGE_3D_EXT               0x9059
-#define GL_INT_IMAGE_2D_RECT_EXT          0x905A
-#define GL_INT_IMAGE_CUBE_EXT             0x905B
-#define GL_INT_IMAGE_BUFFER_EXT           0x905C
-#define GL_INT_IMAGE_1D_ARRAY_EXT         0x905D
-#define GL_INT_IMAGE_2D_ARRAY_EXT         0x905E
-#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT   0x905F
-#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT   0x9060
-#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
-#define GL_UNSIGNED_INT_IMAGE_1D_EXT      0x9062
-#define GL_UNSIGNED_INT_IMAGE_2D_EXT      0x9063
-#define GL_UNSIGNED_INT_IMAGE_3D_EXT      0x9064
-#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
-#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT    0x9066
-#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT  0x9067
-#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
-#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
-#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
-#define GL_MAX_IMAGE_SAMPLES_EXT          0x906D
-#define GL_IMAGE_BINDING_FORMAT_EXT       0x906E
-#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
-#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT  0x00000002
-#define GL_UNIFORM_BARRIER_BIT_EXT        0x00000004
-#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT  0x00000008
-#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
-#define GL_COMMAND_BARRIER_BIT_EXT        0x00000040
-#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT   0x00000080
-#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
-#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT  0x00000200
-#define GL_FRAMEBUFFER_BARRIER_BIT_EXT    0x00000400
-#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
-#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
-#define GL_ALL_BARRIER_BITS_EXT           0xFFFFFFFF
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
-typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
-GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers);
-#endif
-#endif /* GL_EXT_shader_image_load_store */
-
-#ifndef GL_EXT_shader_integer_mix
-#define GL_EXT_shader_integer_mix 1
-#endif /* GL_EXT_shader_integer_mix */
-
-#ifndef GL_EXT_shadow_funcs
-#define GL_EXT_shadow_funcs 1
-#endif /* GL_EXT_shadow_funcs */
-
-#ifndef GL_EXT_shared_texture_palette
-#define GL_EXT_shared_texture_palette 1
-#define GL_SHARED_TEXTURE_PALETTE_EXT     0x81FB
-#endif /* GL_EXT_shared_texture_palette */
-
-#ifndef GL_EXT_stencil_clear_tag
-#define GL_EXT_stencil_clear_tag 1
-#define GL_STENCIL_TAG_BITS_EXT           0x88F2
-#define GL_STENCIL_CLEAR_TAG_VALUE_EXT    0x88F3
-typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag);
-#endif
-#endif /* GL_EXT_stencil_clear_tag */
-
-#ifndef GL_EXT_stencil_two_side
-#define GL_EXT_stencil_two_side 1
-#define GL_STENCIL_TEST_TWO_SIDE_EXT      0x8910
-#define GL_ACTIVE_STENCIL_FACE_EXT        0x8911
-typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face);
-#endif
-#endif /* GL_EXT_stencil_two_side */
-
-#ifndef GL_EXT_stencil_wrap
-#define GL_EXT_stencil_wrap 1
-#define GL_INCR_WRAP_EXT                  0x8507
-#define GL_DECR_WRAP_EXT                  0x8508
-#endif /* GL_EXT_stencil_wrap */
-
-#ifndef GL_EXT_subtexture
-#define GL_EXT_subtexture 1
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-#endif
-#endif /* GL_EXT_subtexture */
-
-#ifndef GL_EXT_texture
-#define GL_EXT_texture 1
-#define GL_ALPHA4_EXT                     0x803B
-#define GL_ALPHA8_EXT                     0x803C
-#define GL_ALPHA12_EXT                    0x803D
-#define GL_ALPHA16_EXT                    0x803E
-#define GL_LUMINANCE4_EXT                 0x803F
-#define GL_LUMINANCE8_EXT                 0x8040
-#define GL_LUMINANCE12_EXT                0x8041
-#define GL_LUMINANCE16_EXT                0x8042
-#define GL_LUMINANCE4_ALPHA4_EXT          0x8043
-#define GL_LUMINANCE6_ALPHA2_EXT          0x8044
-#define GL_LUMINANCE8_ALPHA8_EXT          0x8045
-#define GL_LUMINANCE12_ALPHA4_EXT         0x8046
-#define GL_LUMINANCE12_ALPHA12_EXT        0x8047
-#define GL_LUMINANCE16_ALPHA16_EXT        0x8048
-#define GL_INTENSITY_EXT                  0x8049
-#define GL_INTENSITY4_EXT                 0x804A
-#define GL_INTENSITY8_EXT                 0x804B
-#define GL_INTENSITY12_EXT                0x804C
-#define GL_INTENSITY16_EXT                0x804D
-#define GL_RGB2_EXT                       0x804E
-#define GL_RGB4_EXT                       0x804F
-#define GL_RGB5_EXT                       0x8050
-#define GL_RGB8_EXT                       0x8051
-#define GL_RGB10_EXT                      0x8052
-#define GL_RGB12_EXT                      0x8053
-#define GL_RGB16_EXT                      0x8054
-#define GL_RGBA2_EXT                      0x8055
-#define GL_RGBA4_EXT                      0x8056
-#define GL_RGB5_A1_EXT                    0x8057
-#define GL_RGBA8_EXT                      0x8058
-#define GL_RGB10_A2_EXT                   0x8059
-#define GL_RGBA12_EXT                     0x805A
-#define GL_RGBA16_EXT                     0x805B
-#define GL_TEXTURE_RED_SIZE_EXT           0x805C
-#define GL_TEXTURE_GREEN_SIZE_EXT         0x805D
-#define GL_TEXTURE_BLUE_SIZE_EXT          0x805E
-#define GL_TEXTURE_ALPHA_SIZE_EXT         0x805F
-#define GL_TEXTURE_LUMINANCE_SIZE_EXT     0x8060
-#define GL_TEXTURE_INTENSITY_SIZE_EXT     0x8061
-#define GL_REPLACE_EXT                    0x8062
-#define GL_PROXY_TEXTURE_1D_EXT           0x8063
-#define GL_PROXY_TEXTURE_2D_EXT           0x8064
-#define GL_TEXTURE_TOO_LARGE_EXT          0x8065
-#endif /* GL_EXT_texture */
-
-#ifndef GL_EXT_texture3D
-#define GL_EXT_texture3D 1
-#define GL_PACK_SKIP_IMAGES_EXT           0x806B
-#define GL_PACK_IMAGE_HEIGHT_EXT          0x806C
-#define GL_UNPACK_SKIP_IMAGES_EXT         0x806D
-#define GL_UNPACK_IMAGE_HEIGHT_EXT        0x806E
-#define GL_TEXTURE_3D_EXT                 0x806F
-#define GL_PROXY_TEXTURE_3D_EXT           0x8070
-#define GL_TEXTURE_DEPTH_EXT              0x8071
-#define GL_TEXTURE_WRAP_R_EXT             0x8072
-#define GL_MAX_3D_TEXTURE_SIZE_EXT        0x8073
-typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-#endif
-#endif /* GL_EXT_texture3D */
-
-#ifndef GL_EXT_texture_array
-#define GL_EXT_texture_array 1
-#define GL_TEXTURE_1D_ARRAY_EXT           0x8C18
-#define GL_PROXY_TEXTURE_1D_ARRAY_EXT     0x8C19
-#define GL_TEXTURE_2D_ARRAY_EXT           0x8C1A
-#define GL_PROXY_TEXTURE_2D_ARRAY_EXT     0x8C1B
-#define GL_TEXTURE_BINDING_1D_ARRAY_EXT   0x8C1C
-#define GL_TEXTURE_BINDING_2D_ARRAY_EXT   0x8C1D
-#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT   0x88FF
-#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
-#endif /* GL_EXT_texture_array */
-
-#ifndef GL_EXT_texture_buffer_object
-#define GL_EXT_texture_buffer_object 1
-#define GL_TEXTURE_BUFFER_EXT             0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT    0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER_EXT     0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
-#define GL_TEXTURE_BUFFER_FORMAT_EXT      0x8C2E
-typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);
-#endif
-#endif /* GL_EXT_texture_buffer_object */
-
-#ifndef GL_EXT_texture_compression_latc
-#define GL_EXT_texture_compression_latc 1
-#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
-#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
-#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
-#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
-#endif /* GL_EXT_texture_compression_latc */
-
-#ifndef GL_EXT_texture_compression_rgtc
-#define GL_EXT_texture_compression_rgtc 1
-#define GL_COMPRESSED_RED_RGTC1_EXT       0x8DBB
-#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
-#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
-#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
-#endif /* GL_EXT_texture_compression_rgtc */
-
-#ifndef GL_EXT_texture_compression_s3tc
-#define GL_EXT_texture_compression_s3tc 1
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1
-#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2
-#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3
-#endif /* GL_EXT_texture_compression_s3tc */
-
-#ifndef GL_EXT_texture_cube_map
-#define GL_EXT_texture_cube_map 1
-#define GL_NORMAL_MAP_EXT                 0x8511
-#define GL_REFLECTION_MAP_EXT             0x8512
-#define GL_TEXTURE_CUBE_MAP_EXT           0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP_EXT   0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP_EXT     0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT  0x851C
-#endif /* GL_EXT_texture_cube_map */
-
-#ifndef GL_EXT_texture_env_add
-#define GL_EXT_texture_env_add 1
-#endif /* GL_EXT_texture_env_add */
-
-#ifndef GL_EXT_texture_env_combine
-#define GL_EXT_texture_env_combine 1
-#define GL_COMBINE_EXT                    0x8570
-#define GL_COMBINE_RGB_EXT                0x8571
-#define GL_COMBINE_ALPHA_EXT              0x8572
-#define GL_RGB_SCALE_EXT                  0x8573
-#define GL_ADD_SIGNED_EXT                 0x8574
-#define GL_INTERPOLATE_EXT                0x8575
-#define GL_CONSTANT_EXT                   0x8576
-#define GL_PRIMARY_COLOR_EXT              0x8577
-#define GL_PREVIOUS_EXT                   0x8578
-#define GL_SOURCE0_RGB_EXT                0x8580
-#define GL_SOURCE1_RGB_EXT                0x8581
-#define GL_SOURCE2_RGB_EXT                0x8582
-#define GL_SOURCE0_ALPHA_EXT              0x8588
-#define GL_SOURCE1_ALPHA_EXT              0x8589
-#define GL_SOURCE2_ALPHA_EXT              0x858A
-#define GL_OPERAND0_RGB_EXT               0x8590
-#define GL_OPERAND1_RGB_EXT               0x8591
-#define GL_OPERAND2_RGB_EXT               0x8592
-#define GL_OPERAND0_ALPHA_EXT             0x8598
-#define GL_OPERAND1_ALPHA_EXT             0x8599
-#define GL_OPERAND2_ALPHA_EXT             0x859A
-#endif /* GL_EXT_texture_env_combine */
-
-#ifndef GL_EXT_texture_env_dot3
-#define GL_EXT_texture_env_dot3 1
-#define GL_DOT3_RGB_EXT                   0x8740
-#define GL_DOT3_RGBA_EXT                  0x8741
-#endif /* GL_EXT_texture_env_dot3 */
-
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_EXT_texture_filter_anisotropic 1
-#define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
-#endif /* GL_EXT_texture_filter_anisotropic */
-
-#ifndef GL_EXT_texture_integer
-#define GL_EXT_texture_integer 1
-#define GL_RGBA32UI_EXT                   0x8D70
-#define GL_RGB32UI_EXT                    0x8D71
-#define GL_ALPHA32UI_EXT                  0x8D72
-#define GL_INTENSITY32UI_EXT              0x8D73
-#define GL_LUMINANCE32UI_EXT              0x8D74
-#define GL_LUMINANCE_ALPHA32UI_EXT        0x8D75
-#define GL_RGBA16UI_EXT                   0x8D76
-#define GL_RGB16UI_EXT                    0x8D77
-#define GL_ALPHA16UI_EXT                  0x8D78
-#define GL_INTENSITY16UI_EXT              0x8D79
-#define GL_LUMINANCE16UI_EXT              0x8D7A
-#define GL_LUMINANCE_ALPHA16UI_EXT        0x8D7B
-#define GL_RGBA8UI_EXT                    0x8D7C
-#define GL_RGB8UI_EXT                     0x8D7D
-#define GL_ALPHA8UI_EXT                   0x8D7E
-#define GL_INTENSITY8UI_EXT               0x8D7F
-#define GL_LUMINANCE8UI_EXT               0x8D80
-#define GL_LUMINANCE_ALPHA8UI_EXT         0x8D81
-#define GL_RGBA32I_EXT                    0x8D82
-#define GL_RGB32I_EXT                     0x8D83
-#define GL_ALPHA32I_EXT                   0x8D84
-#define GL_INTENSITY32I_EXT               0x8D85
-#define GL_LUMINANCE32I_EXT               0x8D86
-#define GL_LUMINANCE_ALPHA32I_EXT         0x8D87
-#define GL_RGBA16I_EXT                    0x8D88
-#define GL_RGB16I_EXT                     0x8D89
-#define GL_ALPHA16I_EXT                   0x8D8A
-#define GL_INTENSITY16I_EXT               0x8D8B
-#define GL_LUMINANCE16I_EXT               0x8D8C
-#define GL_LUMINANCE_ALPHA16I_EXT         0x8D8D
-#define GL_RGBA8I_EXT                     0x8D8E
-#define GL_RGB8I_EXT                      0x8D8F
-#define GL_ALPHA8I_EXT                    0x8D90
-#define GL_INTENSITY8I_EXT                0x8D91
-#define GL_LUMINANCE8I_EXT                0x8D92
-#define GL_LUMINANCE_ALPHA8I_EXT          0x8D93
-#define GL_RED_INTEGER_EXT                0x8D94
-#define GL_GREEN_INTEGER_EXT              0x8D95
-#define GL_BLUE_INTEGER_EXT               0x8D96
-#define GL_ALPHA_INTEGER_EXT              0x8D97
-#define GL_RGB_INTEGER_EXT                0x8D98
-#define GL_RGBA_INTEGER_EXT               0x8D99
-#define GL_BGR_INTEGER_EXT                0x8D9A
-#define GL_BGRA_INTEGER_EXT               0x8D9B
-#define GL_LUMINANCE_INTEGER_EXT          0x8D9C
-#define GL_LUMINANCE_ALPHA_INTEGER_EXT    0x8D9D
-#define GL_RGBA_INTEGER_MODE_EXT          0x8D9E
-typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
-typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha);
-GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha);
-#endif
-#endif /* GL_EXT_texture_integer */
-
-#ifndef GL_EXT_texture_lod_bias
-#define GL_EXT_texture_lod_bias 1
-#define GL_MAX_TEXTURE_LOD_BIAS_EXT       0x84FD
-#define GL_TEXTURE_FILTER_CONTROL_EXT     0x8500
-#define GL_TEXTURE_LOD_BIAS_EXT           0x8501
-#endif /* GL_EXT_texture_lod_bias */
-
-#ifndef GL_EXT_texture_mirror_clamp
-#define GL_EXT_texture_mirror_clamp 1
-#define GL_MIRROR_CLAMP_EXT               0x8742
-#define GL_MIRROR_CLAMP_TO_EDGE_EXT       0x8743
-#define GL_MIRROR_CLAMP_TO_BORDER_EXT     0x8912
-#endif /* GL_EXT_texture_mirror_clamp */
-
-#ifndef GL_EXT_texture_object
-#define GL_EXT_texture_object 1
-#define GL_TEXTURE_PRIORITY_EXT           0x8066
-#define GL_TEXTURE_RESIDENT_EXT           0x8067
-#define GL_TEXTURE_1D_BINDING_EXT         0x8068
-#define GL_TEXTURE_2D_BINDING_EXT         0x8069
-#define GL_TEXTURE_3D_BINDING_EXT         0x806A
-typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
-typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
-typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
-typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);
-GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture);
-GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures);
-GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures);
-GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture);
-GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);
-#endif
-#endif /* GL_EXT_texture_object */
-
-#ifndef GL_EXT_texture_perturb_normal
-#define GL_EXT_texture_perturb_normal 1
-#define GL_PERTURB_EXT                    0x85AE
-#define GL_TEXTURE_NORMAL_EXT             0x85AF
-typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureNormalEXT (GLenum mode);
-#endif
-#endif /* GL_EXT_texture_perturb_normal */
-
-#ifndef GL_EXT_texture_sRGB
-#define GL_EXT_texture_sRGB 1
-#define GL_SRGB_EXT                       0x8C40
-#define GL_SRGB8_EXT                      0x8C41
-#define GL_SRGB_ALPHA_EXT                 0x8C42
-#define GL_SRGB8_ALPHA8_EXT               0x8C43
-#define GL_SLUMINANCE_ALPHA_EXT           0x8C44
-#define GL_SLUMINANCE8_ALPHA8_EXT         0x8C45
-#define GL_SLUMINANCE_EXT                 0x8C46
-#define GL_SLUMINANCE8_EXT                0x8C47
-#define GL_COMPRESSED_SRGB_EXT            0x8C48
-#define GL_COMPRESSED_SRGB_ALPHA_EXT      0x8C49
-#define GL_COMPRESSED_SLUMINANCE_EXT      0x8C4A
-#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
-#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT  0x8C4C
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
-#endif /* GL_EXT_texture_sRGB */
-
-#ifndef GL_EXT_texture_sRGB_decode
-#define GL_EXT_texture_sRGB_decode 1
-#define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48
-#define GL_DECODE_EXT                     0x8A49
-#define GL_SKIP_DECODE_EXT                0x8A4A
-#endif /* GL_EXT_texture_sRGB_decode */
-
-#ifndef GL_EXT_texture_shared_exponent
-#define GL_EXT_texture_shared_exponent 1
-#define GL_RGB9_E5_EXT                    0x8C3D
-#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT   0x8C3E
-#define GL_TEXTURE_SHARED_SIZE_EXT        0x8C3F
-#endif /* GL_EXT_texture_shared_exponent */
-
-#ifndef GL_EXT_texture_snorm
-#define GL_EXT_texture_snorm 1
-#define GL_ALPHA_SNORM                    0x9010
-#define GL_LUMINANCE_SNORM                0x9011
-#define GL_LUMINANCE_ALPHA_SNORM          0x9012
-#define GL_INTENSITY_SNORM                0x9013
-#define GL_ALPHA8_SNORM                   0x9014
-#define GL_LUMINANCE8_SNORM               0x9015
-#define GL_LUMINANCE8_ALPHA8_SNORM        0x9016
-#define GL_INTENSITY8_SNORM               0x9017
-#define GL_ALPHA16_SNORM                  0x9018
-#define GL_LUMINANCE16_SNORM              0x9019
-#define GL_LUMINANCE16_ALPHA16_SNORM      0x901A
-#define GL_INTENSITY16_SNORM              0x901B
-#define GL_RED_SNORM                      0x8F90
-#define GL_RG_SNORM                       0x8F91
-#define GL_RGB_SNORM                      0x8F92
-#define GL_RGBA_SNORM                     0x8F93
-#endif /* GL_EXT_texture_snorm */
-
-#ifndef GL_EXT_texture_swizzle
-#define GL_EXT_texture_swizzle 1
-#define GL_TEXTURE_SWIZZLE_R_EXT          0x8E42
-#define GL_TEXTURE_SWIZZLE_G_EXT          0x8E43
-#define GL_TEXTURE_SWIZZLE_B_EXT          0x8E44
-#define GL_TEXTURE_SWIZZLE_A_EXT          0x8E45
-#define GL_TEXTURE_SWIZZLE_RGBA_EXT       0x8E46
-#endif /* GL_EXT_texture_swizzle */
-
-#ifndef GL_EXT_timer_query
-#define GL_EXT_timer_query 1
-#define GL_TIME_ELAPSED_EXT               0x88BF
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
-#endif
-#endif /* GL_EXT_timer_query */
-
-#ifndef GL_EXT_transform_feedback
-#define GL_EXT_transform_feedback 1
-#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT  0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
-#define GL_INTERLEAVED_ATTRIBS_EXT        0x8C8C
-#define GL_SEPARATE_ATTRIBS_EXT           0x8C8D
-#define GL_PRIMITIVES_GENERATED_EXT       0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
-#define GL_RASTERIZER_DISCARD_EXT         0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
-#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
-#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedbackEXT (void);
-GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-#endif
-#endif /* GL_EXT_transform_feedback */
-
-#ifndef GL_EXT_vertex_array
-#define GL_EXT_vertex_array 1
-#define GL_VERTEX_ARRAY_EXT               0x8074
-#define GL_NORMAL_ARRAY_EXT               0x8075
-#define GL_COLOR_ARRAY_EXT                0x8076
-#define GL_INDEX_ARRAY_EXT                0x8077
-#define GL_TEXTURE_COORD_ARRAY_EXT        0x8078
-#define GL_EDGE_FLAG_ARRAY_EXT            0x8079
-#define GL_VERTEX_ARRAY_SIZE_EXT          0x807A
-#define GL_VERTEX_ARRAY_TYPE_EXT          0x807B
-#define GL_VERTEX_ARRAY_STRIDE_EXT        0x807C
-#define GL_VERTEX_ARRAY_COUNT_EXT         0x807D
-#define GL_NORMAL_ARRAY_TYPE_EXT          0x807E
-#define GL_NORMAL_ARRAY_STRIDE_EXT        0x807F
-#define GL_NORMAL_ARRAY_COUNT_EXT         0x8080
-#define GL_COLOR_ARRAY_SIZE_EXT           0x8081
-#define GL_COLOR_ARRAY_TYPE_EXT           0x8082
-#define GL_COLOR_ARRAY_STRIDE_EXT         0x8083
-#define GL_COLOR_ARRAY_COUNT_EXT          0x8084
-#define GL_INDEX_ARRAY_TYPE_EXT           0x8085
-#define GL_INDEX_ARRAY_STRIDE_EXT         0x8086
-#define GL_INDEX_ARRAY_COUNT_EXT          0x8087
-#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT   0x8088
-#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT   0x8089
-#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
-#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT  0x808B
-#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT     0x808C
-#define GL_EDGE_FLAG_ARRAY_COUNT_EXT      0x808D
-#define GL_VERTEX_ARRAY_POINTER_EXT       0x808E
-#define GL_NORMAL_ARRAY_POINTER_EXT       0x808F
-#define GL_COLOR_ARRAY_POINTER_EXT        0x8090
-#define GL_INDEX_ARRAY_POINTER_EXT        0x8091
-#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
-#define GL_EDGE_FLAG_ARRAY_POINTER_EXT    0x8093
-typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
-typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
-typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, void **params);
-typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glArrayElementEXT (GLint i);
-GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);
-GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);
-GLAPI void APIENTRY glGetPointervEXT (GLenum pname, void **params);
-GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-#endif
-#endif /* GL_EXT_vertex_array */
-
-#ifndef GL_EXT_vertex_array_bgra
-#define GL_EXT_vertex_array_bgra 1
-#endif /* GL_EXT_vertex_array_bgra */
-
-#ifndef GL_EXT_vertex_attrib_64bit
-#define GL_EXT_vertex_attrib_64bit 1
-#define GL_DOUBLE_VEC2_EXT                0x8FFC
-#define GL_DOUBLE_VEC3_EXT                0x8FFD
-#define GL_DOUBLE_VEC4_EXT                0x8FFE
-#define GL_DOUBLE_MAT2_EXT                0x8F46
-#define GL_DOUBLE_MAT3_EXT                0x8F47
-#define GL_DOUBLE_MAT4_EXT                0x8F48
-#define GL_DOUBLE_MAT2x3_EXT              0x8F49
-#define GL_DOUBLE_MAT2x4_EXT              0x8F4A
-#define GL_DOUBLE_MAT3x2_EXT              0x8F4B
-#define GL_DOUBLE_MAT3x4_EXT              0x8F4C
-#define GL_DOUBLE_MAT4x2_EXT              0x8F4D
-#define GL_DOUBLE_MAT4x3_EXT              0x8F4E
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params);
-#endif
-#endif /* GL_EXT_vertex_attrib_64bit */
-
-#ifndef GL_EXT_vertex_shader
-#define GL_EXT_vertex_shader 1
-#define GL_VERTEX_SHADER_EXT              0x8780
-#define GL_VERTEX_SHADER_BINDING_EXT      0x8781
-#define GL_OP_INDEX_EXT                   0x8782
-#define GL_OP_NEGATE_EXT                  0x8783
-#define GL_OP_DOT3_EXT                    0x8784
-#define GL_OP_DOT4_EXT                    0x8785
-#define GL_OP_MUL_EXT                     0x8786
-#define GL_OP_ADD_EXT                     0x8787
-#define GL_OP_MADD_EXT                    0x8788
-#define GL_OP_FRAC_EXT                    0x8789
-#define GL_OP_MAX_EXT                     0x878A
-#define GL_OP_MIN_EXT                     0x878B
-#define GL_OP_SET_GE_EXT                  0x878C
-#define GL_OP_SET_LT_EXT                  0x878D
-#define GL_OP_CLAMP_EXT                   0x878E
-#define GL_OP_FLOOR_EXT                   0x878F
-#define GL_OP_ROUND_EXT                   0x8790
-#define GL_OP_EXP_BASE_2_EXT              0x8791
-#define GL_OP_LOG_BASE_2_EXT              0x8792
-#define GL_OP_POWER_EXT                   0x8793
-#define GL_OP_RECIP_EXT                   0x8794
-#define GL_OP_RECIP_SQRT_EXT              0x8795
-#define GL_OP_SUB_EXT                     0x8796
-#define GL_OP_CROSS_PRODUCT_EXT           0x8797
-#define GL_OP_MULTIPLY_MATRIX_EXT         0x8798
-#define GL_OP_MOV_EXT                     0x8799
-#define GL_OUTPUT_VERTEX_EXT              0x879A
-#define GL_OUTPUT_COLOR0_EXT              0x879B
-#define GL_OUTPUT_COLOR1_EXT              0x879C
-#define GL_OUTPUT_TEXTURE_COORD0_EXT      0x879D
-#define GL_OUTPUT_TEXTURE_COORD1_EXT      0x879E
-#define GL_OUTPUT_TEXTURE_COORD2_EXT      0x879F
-#define GL_OUTPUT_TEXTURE_COORD3_EXT      0x87A0
-#define GL_OUTPUT_TEXTURE_COORD4_EXT      0x87A1
-#define GL_OUTPUT_TEXTURE_COORD5_EXT      0x87A2
-#define GL_OUTPUT_TEXTURE_COORD6_EXT      0x87A3
-#define GL_OUTPUT_TEXTURE_COORD7_EXT      0x87A4
-#define GL_OUTPUT_TEXTURE_COORD8_EXT      0x87A5
-#define GL_OUTPUT_TEXTURE_COORD9_EXT      0x87A6
-#define GL_OUTPUT_TEXTURE_COORD10_EXT     0x87A7
-#define GL_OUTPUT_TEXTURE_COORD11_EXT     0x87A8
-#define GL_OUTPUT_TEXTURE_COORD12_EXT     0x87A9
-#define GL_OUTPUT_TEXTURE_COORD13_EXT     0x87AA
-#define GL_OUTPUT_TEXTURE_COORD14_EXT     0x87AB
-#define GL_OUTPUT_TEXTURE_COORD15_EXT     0x87AC
-#define GL_OUTPUT_TEXTURE_COORD16_EXT     0x87AD
-#define GL_OUTPUT_TEXTURE_COORD17_EXT     0x87AE
-#define GL_OUTPUT_TEXTURE_COORD18_EXT     0x87AF
-#define GL_OUTPUT_TEXTURE_COORD19_EXT     0x87B0
-#define GL_OUTPUT_TEXTURE_COORD20_EXT     0x87B1
-#define GL_OUTPUT_TEXTURE_COORD21_EXT     0x87B2
-#define GL_OUTPUT_TEXTURE_COORD22_EXT     0x87B3
-#define GL_OUTPUT_TEXTURE_COORD23_EXT     0x87B4
-#define GL_OUTPUT_TEXTURE_COORD24_EXT     0x87B5
-#define GL_OUTPUT_TEXTURE_COORD25_EXT     0x87B6
-#define GL_OUTPUT_TEXTURE_COORD26_EXT     0x87B7
-#define GL_OUTPUT_TEXTURE_COORD27_EXT     0x87B8
-#define GL_OUTPUT_TEXTURE_COORD28_EXT     0x87B9
-#define GL_OUTPUT_TEXTURE_COORD29_EXT     0x87BA
-#define GL_OUTPUT_TEXTURE_COORD30_EXT     0x87BB
-#define GL_OUTPUT_TEXTURE_COORD31_EXT     0x87BC
-#define GL_OUTPUT_FOG_EXT                 0x87BD
-#define GL_SCALAR_EXT                     0x87BE
-#define GL_VECTOR_EXT                     0x87BF
-#define GL_MATRIX_EXT                     0x87C0
-#define GL_VARIANT_EXT                    0x87C1
-#define GL_INVARIANT_EXT                  0x87C2
-#define GL_LOCAL_CONSTANT_EXT             0x87C3
-#define GL_LOCAL_EXT                      0x87C4
-#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
-#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
-#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
-#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
-#define GL_MAX_VERTEX_SHADER_LOCALS_EXT   0x87C9
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
-#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
-#define GL_VERTEX_SHADER_VARIANTS_EXT     0x87D0
-#define GL_VERTEX_SHADER_INVARIANTS_EXT   0x87D1
-#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
-#define GL_VERTEX_SHADER_LOCALS_EXT       0x87D3
-#define GL_VERTEX_SHADER_OPTIMIZED_EXT    0x87D4
-#define GL_X_EXT                          0x87D5
-#define GL_Y_EXT                          0x87D6
-#define GL_Z_EXT                          0x87D7
-#define GL_W_EXT                          0x87D8
-#define GL_NEGATIVE_X_EXT                 0x87D9
-#define GL_NEGATIVE_Y_EXT                 0x87DA
-#define GL_NEGATIVE_Z_EXT                 0x87DB
-#define GL_NEGATIVE_W_EXT                 0x87DC
-#define GL_ZERO_EXT                       0x87DD
-#define GL_ONE_EXT                        0x87DE
-#define GL_NEGATIVE_ONE_EXT               0x87DF
-#define GL_NORMALIZED_RANGE_EXT           0x87E0
-#define GL_FULL_RANGE_EXT                 0x87E1
-#define GL_CURRENT_VERTEX_EXT             0x87E2
-#define GL_MVP_MATRIX_EXT                 0x87E3
-#define GL_VARIANT_VALUE_EXT              0x87E4
-#define GL_VARIANT_DATATYPE_EXT           0x87E5
-#define GL_VARIANT_ARRAY_STRIDE_EXT       0x87E6
-#define GL_VARIANT_ARRAY_TYPE_EXT         0x87E7
-#define GL_VARIANT_ARRAY_EXT              0x87E8
-#define GL_VARIANT_ARRAY_POINTER_EXT      0x87E9
-#define GL_INVARIANT_VALUE_EXT            0x87EA
-#define GL_INVARIANT_DATATYPE_EXT         0x87EB
-#define GL_LOCAL_CONSTANT_VALUE_EXT       0x87EC
-#define GL_LOCAL_CONSTANT_DATATYPE_EXT    0x87ED
-typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
-typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
-typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
-typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
-typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
-typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
-typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
-typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
-typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
-typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
-typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr);
-typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr);
-typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
-typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
-typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
-typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
-typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
-typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
-typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
-typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
-typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr);
-typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
-typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
-typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
-typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data);
-typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginVertexShaderEXT (void);
-GLAPI void APIENTRY glEndVertexShaderEXT (void);
-GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id);
-GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range);
-GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id);
-GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1);
-GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
-GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
-GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num);
-GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num);
-GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
-GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const void *addr);
-GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const void *addr);
-GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr);
-GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr);
-GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr);
-GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr);
-GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr);
-GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr);
-GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr);
-GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr);
-GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const void *addr);
-GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id);
-GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id);
-GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value);
-GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value);
-GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value);
-GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value);
-GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value);
-GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap);
-GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
-GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data);
-GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
-GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, void **data);
-GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
-GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data);
-GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
-GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
-GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data);
-GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
-#endif
-#endif /* GL_EXT_vertex_shader */
-
-#ifndef GL_EXT_vertex_weighting
-#define GL_EXT_vertex_weighting 1
-#define GL_MODELVIEW0_STACK_DEPTH_EXT     0x0BA3
-#define GL_MODELVIEW1_STACK_DEPTH_EXT     0x8502
-#define GL_MODELVIEW0_MATRIX_EXT          0x0BA6
-#define GL_MODELVIEW1_MATRIX_EXT          0x8506
-#define GL_VERTEX_WEIGHTING_EXT           0x8509
-#define GL_MODELVIEW0_EXT                 0x1700
-#define GL_MODELVIEW1_EXT                 0x850A
-#define GL_CURRENT_VERTEX_WEIGHT_EXT      0x850B
-#define GL_VERTEX_WEIGHT_ARRAY_EXT        0x850C
-#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT   0x850D
-#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT   0x850E
-#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
-#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);
-GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);
-GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_vertex_weighting */
-
-#ifndef GL_EXT_x11_sync_object
-#define GL_EXT_x11_sync_object 1
-#define GL_SYNC_X11_FENCE_EXT             0x90E1
-typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
-#endif
-#endif /* GL_EXT_x11_sync_object */
-
-#ifndef GL_GREMEDY_frame_terminator
-#define GL_GREMEDY_frame_terminator 1
-typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFrameTerminatorGREMEDY (void);
-#endif
-#endif /* GL_GREMEDY_frame_terminator */
-
-#ifndef GL_GREMEDY_string_marker
-#define GL_GREMEDY_string_marker 1
-typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const void *string);
-#endif
-#endif /* GL_GREMEDY_string_marker */
-
-#ifndef GL_HP_convolution_border_modes
-#define GL_HP_convolution_border_modes 1
-#define GL_IGNORE_BORDER_HP               0x8150
-#define GL_CONSTANT_BORDER_HP             0x8151
-#define GL_REPLICATE_BORDER_HP            0x8153
-#define GL_CONVOLUTION_BORDER_COLOR_HP    0x8154
-#endif /* GL_HP_convolution_border_modes */
-
-#ifndef GL_HP_image_transform
-#define GL_HP_image_transform 1
-#define GL_IMAGE_SCALE_X_HP               0x8155
-#define GL_IMAGE_SCALE_Y_HP               0x8156
-#define GL_IMAGE_TRANSLATE_X_HP           0x8157
-#define GL_IMAGE_TRANSLATE_Y_HP           0x8158
-#define GL_IMAGE_ROTATE_ANGLE_HP          0x8159
-#define GL_IMAGE_ROTATE_ORIGIN_X_HP       0x815A
-#define GL_IMAGE_ROTATE_ORIGIN_Y_HP       0x815B
-#define GL_IMAGE_MAG_FILTER_HP            0x815C
-#define GL_IMAGE_MIN_FILTER_HP            0x815D
-#define GL_IMAGE_CUBIC_WEIGHT_HP          0x815E
-#define GL_CUBIC_HP                       0x815F
-#define GL_AVERAGE_HP                     0x8160
-#define GL_IMAGE_TRANSFORM_2D_HP          0x8161
-#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
-#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_HP_image_transform */
-
-#ifndef GL_HP_occlusion_test
-#define GL_HP_occlusion_test 1
-#define GL_OCCLUSION_TEST_HP              0x8165
-#define GL_OCCLUSION_TEST_RESULT_HP       0x8166
-#endif /* GL_HP_occlusion_test */
-
-#ifndef GL_HP_texture_lighting
-#define GL_HP_texture_lighting 1
-#define GL_TEXTURE_LIGHTING_MODE_HP       0x8167
-#define GL_TEXTURE_POST_SPECULAR_HP       0x8168
-#define GL_TEXTURE_PRE_SPECULAR_HP        0x8169
-#endif /* GL_HP_texture_lighting */
-
-#ifndef GL_IBM_cull_vertex
-#define GL_IBM_cull_vertex 1
-#define GL_CULL_VERTEX_IBM                103050
-#endif /* GL_IBM_cull_vertex */
-
-#ifndef GL_IBM_multimode_draw_arrays
-#define GL_IBM_multimode_draw_arrays 1
-typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
-typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
-GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
-#endif
-#endif /* GL_IBM_multimode_draw_arrays */
-
-#ifndef GL_IBM_rasterpos_clip
-#define GL_IBM_rasterpos_clip 1
-#define GL_RASTER_POSITION_UNCLIPPED_IBM  0x19262
-#endif /* GL_IBM_rasterpos_clip */
-
-#ifndef GL_IBM_static_data
-#define GL_IBM_static_data 1
-#define GL_ALL_STATIC_DATA_IBM            103060
-#define GL_STATIC_VERTEX_ARRAY_IBM        103061
-typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFlushStaticDataIBM (GLenum target);
-#endif
-#endif /* GL_IBM_static_data */
-
-#ifndef GL_IBM_texture_mirrored_repeat
-#define GL_IBM_texture_mirrored_repeat 1
-#define GL_MIRRORED_REPEAT_IBM            0x8370
-#endif /* GL_IBM_texture_mirrored_repeat */
-
-#ifndef GL_IBM_vertex_array_lists
-#define GL_IBM_vertex_array_lists 1
-#define GL_VERTEX_ARRAY_LIST_IBM          103070
-#define GL_NORMAL_ARRAY_LIST_IBM          103071
-#define GL_COLOR_ARRAY_LIST_IBM           103072
-#define GL_INDEX_ARRAY_LIST_IBM           103073
-#define GL_TEXTURE_COORD_ARRAY_LIST_IBM   103074
-#define GL_EDGE_FLAG_ARRAY_LIST_IBM       103075
-#define GL_FOG_COORDINATE_ARRAY_LIST_IBM  103076
-#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
-#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM   103080
-#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM   103081
-#define GL_COLOR_ARRAY_LIST_STRIDE_IBM    103082
-#define GL_INDEX_ARRAY_LIST_STRIDE_IBM    103083
-#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
-#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
-#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
-#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
-typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride);
-GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-#endif
-#endif /* GL_IBM_vertex_array_lists */
-
-#ifndef GL_INGR_blend_func_separate
-#define GL_INGR_blend_func_separate 1
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#endif
-#endif /* GL_INGR_blend_func_separate */
-
-#ifndef GL_INGR_color_clamp
-#define GL_INGR_color_clamp 1
-#define GL_RED_MIN_CLAMP_INGR             0x8560
-#define GL_GREEN_MIN_CLAMP_INGR           0x8561
-#define GL_BLUE_MIN_CLAMP_INGR            0x8562
-#define GL_ALPHA_MIN_CLAMP_INGR           0x8563
-#define GL_RED_MAX_CLAMP_INGR             0x8564
-#define GL_GREEN_MAX_CLAMP_INGR           0x8565
-#define GL_BLUE_MAX_CLAMP_INGR            0x8566
-#define GL_ALPHA_MAX_CLAMP_INGR           0x8567
-#endif /* GL_INGR_color_clamp */
-
-#ifndef GL_INGR_interlace_read
-#define GL_INGR_interlace_read 1
-#define GL_INTERLACE_READ_INGR            0x8568
-#endif /* GL_INGR_interlace_read */
-
-#ifndef GL_INTEL_fragment_shader_ordering
-#define GL_INTEL_fragment_shader_ordering 1
-#endif /* GL_INTEL_fragment_shader_ordering */
-
-#ifndef GL_INTEL_map_texture
-#define GL_INTEL_map_texture 1
-#define GL_TEXTURE_MEMORY_LAYOUT_INTEL    0x83FF
-#define GL_LAYOUT_DEFAULT_INTEL           0
-#define GL_LAYOUT_LINEAR_INTEL            1
-#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
-typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture);
-typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level);
-typedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture);
-GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level);
-GLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
-#endif
-#endif /* GL_INTEL_map_texture */
-
-#ifndef GL_INTEL_parallel_arrays
-#define GL_INTEL_parallel_arrays 1
-#define GL_PARALLEL_ARRAYS_INTEL          0x83F4
-#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
-#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
-#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
-#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
-typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
-typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void **pointer);
-typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
-typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const void **pointer);
-GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const void **pointer);
-GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const void **pointer);
-GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void **pointer);
-#endif
-#endif /* GL_INTEL_parallel_arrays */
-
-#ifndef GL_INTEL_performance_query
-#define GL_INTEL_performance_query 1
-#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
-#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
-#define GL_PERFQUERY_WAIT_INTEL           0x83FB
-#define GL_PERFQUERY_FLUSH_INTEL          0x83FA
-#define GL_PERFQUERY_DONOT_FLUSH_INTEL    0x83F9
-#define GL_PERFQUERY_COUNTER_EVENT_INTEL  0x94F0
-#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
-#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
-#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
-#define GL_PERFQUERY_COUNTER_RAW_INTEL    0x94F4
-#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
-#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
-#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
-#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
-#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
-#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
-#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
-#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
-#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
-#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
-typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
-typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
-typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
-typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
-typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
-typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
-typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
-GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
-GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
-GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
-GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
-GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
-GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
-#endif
-#endif /* GL_INTEL_performance_query */
-
-#ifndef GL_MESAX_texture_stack
-#define GL_MESAX_texture_stack 1
-#define GL_TEXTURE_1D_STACK_MESAX         0x8759
-#define GL_TEXTURE_2D_STACK_MESAX         0x875A
-#define GL_PROXY_TEXTURE_1D_STACK_MESAX   0x875B
-#define GL_PROXY_TEXTURE_2D_STACK_MESAX   0x875C
-#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
-#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
-#endif /* GL_MESAX_texture_stack */
-
-#ifndef GL_MESA_pack_invert
-#define GL_MESA_pack_invert 1
-#define GL_PACK_INVERT_MESA               0x8758
-#endif /* GL_MESA_pack_invert */
-
-#ifndef GL_MESA_resize_buffers
-#define GL_MESA_resize_buffers 1
-typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glResizeBuffersMESA (void);
-#endif
-#endif /* GL_MESA_resize_buffers */
-
-#ifndef GL_MESA_window_pos
-#define GL_MESA_window_pos 1
-typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y);
-GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y);
-GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y);
-GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v);
-GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y);
-GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v);
-GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v);
-GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v);
-GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v);
-GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v);
-#endif
-#endif /* GL_MESA_window_pos */
-
-#ifndef GL_MESA_ycbcr_texture
-#define GL_MESA_ycbcr_texture 1
-#define GL_UNSIGNED_SHORT_8_8_MESA        0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_MESA    0x85BB
-#define GL_YCBCR_MESA                     0x8757
-#endif /* GL_MESA_ycbcr_texture */
-
-#ifndef GL_NVX_conditional_render
-#define GL_NVX_conditional_render 1
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id);
-GLAPI void APIENTRY glEndConditionalRenderNVX (void);
-#endif
-#endif /* GL_NVX_conditional_render */
-
-#ifndef GL_NVX_gpu_memory_info
-#define GL_NVX_gpu_memory_info 1
-#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
-#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
-#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
-#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
-#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
-#endif /* GL_NVX_gpu_memory_info */
-
-#ifndef GL_NV_bindless_multi_draw_indirect
-#define GL_NV_bindless_multi_draw_indirect 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-#endif
-#endif /* GL_NV_bindless_multi_draw_indirect */
-
-#ifndef GL_NV_bindless_texture
-#define GL_NV_bindless_texture 1
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
-typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
-typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture);
-GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);
-GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);
-GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);
-GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);
-GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);
-GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);
-GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);
-GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);
-GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
-#endif
-#endif /* GL_NV_bindless_texture */
-
-#ifndef GL_NV_blend_equation_advanced
-#define GL_NV_blend_equation_advanced 1
-#define GL_BLEND_OVERLAP_NV               0x9281
-#define GL_BLEND_PREMULTIPLIED_SRC_NV     0x9280
-#define GL_BLUE_NV                        0x1905
-#define GL_COLORBURN_NV                   0x929A
-#define GL_COLORDODGE_NV                  0x9299
-#define GL_CONJOINT_NV                    0x9284
-#define GL_CONTRAST_NV                    0x92A1
-#define GL_DARKEN_NV                      0x9297
-#define GL_DIFFERENCE_NV                  0x929E
-#define GL_DISJOINT_NV                    0x9283
-#define GL_DST_ATOP_NV                    0x928F
-#define GL_DST_IN_NV                      0x928B
-#define GL_DST_NV                         0x9287
-#define GL_DST_OUT_NV                     0x928D
-#define GL_DST_OVER_NV                    0x9289
-#define GL_EXCLUSION_NV                   0x92A0
-#define GL_GREEN_NV                       0x1904
-#define GL_HARDLIGHT_NV                   0x929B
-#define GL_HARDMIX_NV                     0x92A9
-#define GL_HSL_COLOR_NV                   0x92AF
-#define GL_HSL_HUE_NV                     0x92AD
-#define GL_HSL_LUMINOSITY_NV              0x92B0
-#define GL_HSL_SATURATION_NV              0x92AE
-#define GL_INVERT_OVG_NV                  0x92B4
-#define GL_INVERT_RGB_NV                  0x92A3
-#define GL_LIGHTEN_NV                     0x9298
-#define GL_LINEARBURN_NV                  0x92A5
-#define GL_LINEARDODGE_NV                 0x92A4
-#define GL_LINEARLIGHT_NV                 0x92A7
-#define GL_MINUS_CLAMPED_NV               0x92B3
-#define GL_MINUS_NV                       0x929F
-#define GL_MULTIPLY_NV                    0x9294
-#define GL_OVERLAY_NV                     0x9296
-#define GL_PINLIGHT_NV                    0x92A8
-#define GL_PLUS_CLAMPED_ALPHA_NV          0x92B2
-#define GL_PLUS_CLAMPED_NV                0x92B1
-#define GL_PLUS_DARKER_NV                 0x9292
-#define GL_PLUS_NV                        0x9291
-#define GL_RED_NV                         0x1903
-#define GL_SCREEN_NV                      0x9295
-#define GL_SOFTLIGHT_NV                   0x929C
-#define GL_SRC_ATOP_NV                    0x928E
-#define GL_SRC_IN_NV                      0x928A
-#define GL_SRC_NV                         0x9286
-#define GL_SRC_OUT_NV                     0x928C
-#define GL_SRC_OVER_NV                    0x9288
-#define GL_UNCORRELATED_NV                0x9282
-#define GL_VIVIDLIGHT_NV                  0x92A6
-#define GL_XOR_NV                         0x1506
-typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value);
-GLAPI void APIENTRY glBlendBarrierNV (void);
-#endif
-#endif /* GL_NV_blend_equation_advanced */
-
-#ifndef GL_NV_blend_equation_advanced_coherent
-#define GL_NV_blend_equation_advanced_coherent 1
-#define GL_BLEND_ADVANCED_COHERENT_NV     0x9285
-#endif /* GL_NV_blend_equation_advanced_coherent */
-
-#ifndef GL_NV_blend_square
-#define GL_NV_blend_square 1
-#endif /* GL_NV_blend_square */
-
-#ifndef GL_NV_compute_program5
-#define GL_NV_compute_program5 1
-#define GL_COMPUTE_PROGRAM_NV             0x90FB
-#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
-#endif /* GL_NV_compute_program5 */
-
-#ifndef GL_NV_conditional_render
-#define GL_NV_conditional_render 1
-#define GL_QUERY_WAIT_NV                  0x8E13
-#define GL_QUERY_NO_WAIT_NV               0x8E14
-#define GL_QUERY_BY_REGION_WAIT_NV        0x8E15
-#define GL_QUERY_BY_REGION_NO_WAIT_NV     0x8E16
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
-GLAPI void APIENTRY glEndConditionalRenderNV (void);
-#endif
-#endif /* GL_NV_conditional_render */
-
-#ifndef GL_NV_copy_depth_to_color
-#define GL_NV_copy_depth_to_color 1
-#define GL_DEPTH_STENCIL_TO_RGBA_NV       0x886E
-#define GL_DEPTH_STENCIL_TO_BGRA_NV       0x886F
-#endif /* GL_NV_copy_depth_to_color */
-
-#ifndef GL_NV_copy_image
-#define GL_NV_copy_image 1
-typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-#endif /* GL_NV_copy_image */
-
-#ifndef GL_NV_deep_texture3D
-#define GL_NV_deep_texture3D 1
-#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
-#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV   0x90D1
-#endif /* GL_NV_deep_texture3D */
-
-#ifndef GL_NV_depth_buffer_float
-#define GL_NV_depth_buffer_float 1
-#define GL_DEPTH_COMPONENT32F_NV          0x8DAB
-#define GL_DEPTH32F_STENCIL8_NV           0x8DAC
-#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
-#define GL_DEPTH_BUFFER_FLOAT_MODE_NV     0x8DAF
-typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
-typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glClearDepthdNV (GLdouble depth);
-GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax);
-#endif
-#endif /* GL_NV_depth_buffer_float */
-
-#ifndef GL_NV_depth_clamp
-#define GL_NV_depth_clamp 1
-#define GL_DEPTH_CLAMP_NV                 0x864F
-#endif /* GL_NV_depth_clamp */
-
-#ifndef GL_NV_draw_texture
-#define GL_NV_draw_texture 1
-typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
-#endif
-#endif /* GL_NV_draw_texture */
-
-#ifndef GL_NV_evaluators
-#define GL_NV_evaluators 1
-#define GL_EVAL_2D_NV                     0x86C0
-#define GL_EVAL_TRIANGULAR_2D_NV          0x86C1
-#define GL_MAP_TESSELLATION_NV            0x86C2
-#define GL_MAP_ATTRIB_U_ORDER_NV          0x86C3
-#define GL_MAP_ATTRIB_V_ORDER_NV          0x86C4
-#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
-#define GL_EVAL_VERTEX_ATTRIB0_NV         0x86C6
-#define GL_EVAL_VERTEX_ATTRIB1_NV         0x86C7
-#define GL_EVAL_VERTEX_ATTRIB2_NV         0x86C8
-#define GL_EVAL_VERTEX_ATTRIB3_NV         0x86C9
-#define GL_EVAL_VERTEX_ATTRIB4_NV         0x86CA
-#define GL_EVAL_VERTEX_ATTRIB5_NV         0x86CB
-#define GL_EVAL_VERTEX_ATTRIB6_NV         0x86CC
-#define GL_EVAL_VERTEX_ATTRIB7_NV         0x86CD
-#define GL_EVAL_VERTEX_ATTRIB8_NV         0x86CE
-#define GL_EVAL_VERTEX_ATTRIB9_NV         0x86CF
-#define GL_EVAL_VERTEX_ATTRIB10_NV        0x86D0
-#define GL_EVAL_VERTEX_ATTRIB11_NV        0x86D1
-#define GL_EVAL_VERTEX_ATTRIB12_NV        0x86D2
-#define GL_EVAL_VERTEX_ATTRIB13_NV        0x86D3
-#define GL_EVAL_VERTEX_ATTRIB14_NV        0x86D4
-#define GL_EVAL_VERTEX_ATTRIB15_NV        0x86D5
-#define GL_MAX_MAP_TESSELLATION_NV        0x86D6
-#define GL_MAX_RATIONAL_EVAL_ORDER_NV     0x86D7
-typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
-typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
-typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
-GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
-GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode);
-#endif
-#endif /* GL_NV_evaluators */
-
-#ifndef GL_NV_explicit_multisample
-#define GL_NV_explicit_multisample 1
-#define GL_SAMPLE_POSITION_NV             0x8E50
-#define GL_SAMPLE_MASK_NV                 0x8E51
-#define GL_SAMPLE_MASK_VALUE_NV           0x8E52
-#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
-#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
-#define GL_TEXTURE_RENDERBUFFER_NV        0x8E55
-#define GL_SAMPLER_RENDERBUFFER_NV        0x8E56
-#define GL_INT_SAMPLER_RENDERBUFFER_NV    0x8E57
-#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
-#define GL_MAX_SAMPLE_MASK_WORDS_NV       0x8E59
-typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val);
-typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
-typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val);
-GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask);
-GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer);
-#endif
-#endif /* GL_NV_explicit_multisample */
-
-#ifndef GL_NV_fence
-#define GL_NV_fence 1
-#define GL_ALL_COMPLETED_NV               0x84F2
-#define GL_FENCE_STATUS_NV                0x84F3
-#define GL_FENCE_CONDITION_NV             0x84F4
-typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
-typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
-typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
-typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
-typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
-GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
-GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence);
-GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence);
-GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
-GLAPI void APIENTRY glFinishFenceNV (GLuint fence);
-GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
-#endif
-#endif /* GL_NV_fence */
-
-#ifndef GL_NV_float_buffer
-#define GL_NV_float_buffer 1
-#define GL_FLOAT_R_NV                     0x8880
-#define GL_FLOAT_RG_NV                    0x8881
-#define GL_FLOAT_RGB_NV                   0x8882
-#define GL_FLOAT_RGBA_NV                  0x8883
-#define GL_FLOAT_R16_NV                   0x8884
-#define GL_FLOAT_R32_NV                   0x8885
-#define GL_FLOAT_RG16_NV                  0x8886
-#define GL_FLOAT_RG32_NV                  0x8887
-#define GL_FLOAT_RGB16_NV                 0x8888
-#define GL_FLOAT_RGB32_NV                 0x8889
-#define GL_FLOAT_RGBA16_NV                0x888A
-#define GL_FLOAT_RGBA32_NV                0x888B
-#define GL_TEXTURE_FLOAT_COMPONENTS_NV    0x888C
-#define GL_FLOAT_CLEAR_COLOR_VALUE_NV     0x888D
-#define GL_FLOAT_RGBA_MODE_NV             0x888E
-#endif /* GL_NV_float_buffer */
-
-#ifndef GL_NV_fog_distance
-#define GL_NV_fog_distance 1
-#define GL_FOG_DISTANCE_MODE_NV           0x855A
-#define GL_EYE_RADIAL_NV                  0x855B
-#define GL_EYE_PLANE_ABSOLUTE_NV          0x855C
-#endif /* GL_NV_fog_distance */
-
-#ifndef GL_NV_fragment_program
-#define GL_NV_fragment_program 1
-#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
-#define GL_FRAGMENT_PROGRAM_NV            0x8870
-#define GL_MAX_TEXTURE_COORDS_NV          0x8871
-#define GL_MAX_TEXTURE_IMAGE_UNITS_NV     0x8872
-#define GL_FRAGMENT_PROGRAM_BINDING_NV    0x8873
-#define GL_PROGRAM_ERROR_STRING_NV        0x8874
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
-typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
-GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
-GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
-GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
-#endif
-#endif /* GL_NV_fragment_program */
-
-#ifndef GL_NV_fragment_program2
-#define GL_NV_fragment_program2 1
-#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
-#define GL_MAX_PROGRAM_CALL_DEPTH_NV      0x88F5
-#define GL_MAX_PROGRAM_IF_DEPTH_NV        0x88F6
-#define GL_MAX_PROGRAM_LOOP_DEPTH_NV      0x88F7
-#define GL_MAX_PROGRAM_LOOP_COUNT_NV      0x88F8
-#endif /* GL_NV_fragment_program2 */
-
-#ifndef GL_NV_fragment_program4
-#define GL_NV_fragment_program4 1
-#endif /* GL_NV_fragment_program4 */
-
-#ifndef GL_NV_fragment_program_option
-#define GL_NV_fragment_program_option 1
-#endif /* GL_NV_fragment_program_option */
-
-#ifndef GL_NV_framebuffer_multisample_coverage
-#define GL_NV_framebuffer_multisample_coverage 1
-#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
-#define GL_RENDERBUFFER_COLOR_SAMPLES_NV  0x8E10
-#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
-#define GL_MULTISAMPLE_COVERAGE_MODES_NV  0x8E12
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_NV_framebuffer_multisample_coverage */
-
-#ifndef GL_NV_geometry_program4
-#define GL_NV_geometry_program4 1
-#define GL_GEOMETRY_PROGRAM_NV            0x8C26
-#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
-#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
-typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit);
-GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#endif
-#endif /* GL_NV_geometry_program4 */
-
-#ifndef GL_NV_geometry_shader4
-#define GL_NV_geometry_shader4 1
-#endif /* GL_NV_geometry_shader4 */
-
-#ifndef GL_NV_gpu_program4
-#define GL_NV_gpu_program4 1
-#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV    0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV    0x8905
-#define GL_PROGRAM_ATTRIB_COMPONENTS_NV   0x8906
-#define GL_PROGRAM_RESULT_COMPONENTS_NV   0x8907
-#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
-#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
-#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
-#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params);
-GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params);
-#endif
-#endif /* GL_NV_gpu_program4 */
-
-#ifndef GL_NV_gpu_program5
-#define GL_NV_gpu_program5 1
-#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
-#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
-#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
-#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
-#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44
-#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV  0x8F45
-typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param);
-#endif
-#endif /* GL_NV_gpu_program5 */
-
-#ifndef GL_NV_gpu_program5_mem_extended
-#define GL_NV_gpu_program5_mem_extended 1
-#endif /* GL_NV_gpu_program5_mem_extended */
-
-#ifndef GL_NV_gpu_shader5
-#define GL_NV_gpu_shader5 1
-#endif /* GL_NV_gpu_shader5 */
-
-#ifndef GL_NV_half_float
-#define GL_NV_half_float 1
-typedef unsigned short GLhalfNV;
-#define GL_HALF_FLOAT_NV                  0x140B
-typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
-typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
-typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
-typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
-typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
-typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
-typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
-typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
-typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
-GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z);
-GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
-GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
-GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s);
-GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t);
-GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r);
-GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s);
-GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t);
-GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
-GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
-GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
-GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
-GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
-GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
-GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
-GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
-GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-#endif
-#endif /* GL_NV_half_float */
-
-#ifndef GL_NV_light_max_exponent
-#define GL_NV_light_max_exponent 1
-#define GL_MAX_SHININESS_NV               0x8504
-#define GL_MAX_SPOT_EXPONENT_NV           0x8505
-#endif /* GL_NV_light_max_exponent */
-
-#ifndef GL_NV_multisample_coverage
-#define GL_NV_multisample_coverage 1
-#define GL_COLOR_SAMPLES_NV               0x8E20
-#endif /* GL_NV_multisample_coverage */
-
-#ifndef GL_NV_multisample_filter_hint
-#define GL_NV_multisample_filter_hint 1
-#define GL_MULTISAMPLE_FILTER_HINT_NV     0x8534
-#endif /* GL_NV_multisample_filter_hint */
-
-#ifndef GL_NV_occlusion_query
-#define GL_NV_occlusion_query 1
-#define GL_PIXEL_COUNTER_BITS_NV          0x8864
-#define GL_CURRENT_OCCLUSION_QUERY_ID_NV  0x8865
-#define GL_PIXEL_COUNT_NV                 0x8866
-#define GL_PIXEL_COUNT_AVAILABLE_NV       0x8867
-typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);
-typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id);
-GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id);
-GLAPI void APIENTRY glEndOcclusionQueryNV (void);
-GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);
-#endif
-#endif /* GL_NV_occlusion_query */
-
-#ifndef GL_NV_packed_depth_stencil
-#define GL_NV_packed_depth_stencil 1
-#define GL_DEPTH_STENCIL_NV               0x84F9
-#define GL_UNSIGNED_INT_24_8_NV           0x84FA
-#endif /* GL_NV_packed_depth_stencil */
-
-#ifndef GL_NV_parameter_buffer_object
-#define GL_NV_parameter_buffer_object 1
-#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
-#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
-#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
-#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
-#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
-typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
-#endif
-#endif /* GL_NV_parameter_buffer_object */
-
-#ifndef GL_NV_parameter_buffer_object2
-#define GL_NV_parameter_buffer_object2 1
-#endif /* GL_NV_parameter_buffer_object2 */
-
-#ifndef GL_NV_path_rendering
-#define GL_NV_path_rendering 1
-#define GL_PATH_FORMAT_SVG_NV             0x9070
-#define GL_PATH_FORMAT_PS_NV              0x9071
-#define GL_STANDARD_FONT_NAME_NV          0x9072
-#define GL_SYSTEM_FONT_NAME_NV            0x9073
-#define GL_FILE_NAME_NV                   0x9074
-#define GL_PATH_STROKE_WIDTH_NV           0x9075
-#define GL_PATH_END_CAPS_NV               0x9076
-#define GL_PATH_INITIAL_END_CAP_NV        0x9077
-#define GL_PATH_TERMINAL_END_CAP_NV       0x9078
-#define GL_PATH_JOIN_STYLE_NV             0x9079
-#define GL_PATH_MITER_LIMIT_NV            0x907A
-#define GL_PATH_DASH_CAPS_NV              0x907B
-#define GL_PATH_INITIAL_DASH_CAP_NV       0x907C
-#define GL_PATH_TERMINAL_DASH_CAP_NV      0x907D
-#define GL_PATH_DASH_OFFSET_NV            0x907E
-#define GL_PATH_CLIENT_LENGTH_NV          0x907F
-#define GL_PATH_FILL_MODE_NV              0x9080
-#define GL_PATH_FILL_MASK_NV              0x9081
-#define GL_PATH_FILL_COVER_MODE_NV        0x9082
-#define GL_PATH_STROKE_COVER_MODE_NV      0x9083
-#define GL_PATH_STROKE_MASK_NV            0x9084
-#define GL_COUNT_UP_NV                    0x9088
-#define GL_COUNT_DOWN_NV                  0x9089
-#define GL_PATH_OBJECT_BOUNDING_BOX_NV    0x908A
-#define GL_CONVEX_HULL_NV                 0x908B
-#define GL_BOUNDING_BOX_NV                0x908D
-#define GL_TRANSLATE_X_NV                 0x908E
-#define GL_TRANSLATE_Y_NV                 0x908F
-#define GL_TRANSLATE_2D_NV                0x9090
-#define GL_TRANSLATE_3D_NV                0x9091
-#define GL_AFFINE_2D_NV                   0x9092
-#define GL_AFFINE_3D_NV                   0x9094
-#define GL_TRANSPOSE_AFFINE_2D_NV         0x9096
-#define GL_TRANSPOSE_AFFINE_3D_NV         0x9098
-#define GL_UTF8_NV                        0x909A
-#define GL_UTF16_NV                       0x909B
-#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
-#define GL_PATH_COMMAND_COUNT_NV          0x909D
-#define GL_PATH_COORD_COUNT_NV            0x909E
-#define GL_PATH_DASH_ARRAY_COUNT_NV       0x909F
-#define GL_PATH_COMPUTED_LENGTH_NV        0x90A0
-#define GL_PATH_FILL_BOUNDING_BOX_NV      0x90A1
-#define GL_PATH_STROKE_BOUNDING_BOX_NV    0x90A2
-#define GL_SQUARE_NV                      0x90A3
-#define GL_ROUND_NV                       0x90A4
-#define GL_TRIANGULAR_NV                  0x90A5
-#define GL_BEVEL_NV                       0x90A6
-#define GL_MITER_REVERT_NV                0x90A7
-#define GL_MITER_TRUNCATE_NV              0x90A8
-#define GL_SKIP_MISSING_GLYPH_NV          0x90A9
-#define GL_USE_MISSING_GLYPH_NV           0x90AA
-#define GL_PATH_ERROR_POSITION_NV         0x90AB
-#define GL_PATH_FOG_GEN_MODE_NV           0x90AC
-#define GL_ACCUM_ADJACENT_PAIRS_NV        0x90AD
-#define GL_ADJACENT_PAIRS_NV              0x90AE
-#define GL_FIRST_TO_REST_NV               0x90AF
-#define GL_PATH_GEN_MODE_NV               0x90B0
-#define GL_PATH_GEN_COEFF_NV              0x90B1
-#define GL_PATH_GEN_COLOR_FORMAT_NV       0x90B2
-#define GL_PATH_GEN_COMPONENTS_NV         0x90B3
-#define GL_PATH_STENCIL_FUNC_NV           0x90B7
-#define GL_PATH_STENCIL_REF_NV            0x90B8
-#define GL_PATH_STENCIL_VALUE_MASK_NV     0x90B9
-#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
-#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
-#define GL_PATH_COVER_DEPTH_FUNC_NV       0x90BF
-#define GL_PATH_DASH_OFFSET_RESET_NV      0x90B4
-#define GL_MOVE_TO_RESETS_NV              0x90B5
-#define GL_MOVE_TO_CONTINUES_NV           0x90B6
-#define GL_CLOSE_PATH_NV                  0x00
-#define GL_MOVE_TO_NV                     0x02
-#define GL_RELATIVE_MOVE_TO_NV            0x03
-#define GL_LINE_TO_NV                     0x04
-#define GL_RELATIVE_LINE_TO_NV            0x05
-#define GL_HORIZONTAL_LINE_TO_NV          0x06
-#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
-#define GL_VERTICAL_LINE_TO_NV            0x08
-#define GL_RELATIVE_VERTICAL_LINE_TO_NV   0x09
-#define GL_QUADRATIC_CURVE_TO_NV          0x0A
-#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
-#define GL_CUBIC_CURVE_TO_NV              0x0C
-#define GL_RELATIVE_CUBIC_CURVE_TO_NV     0x0D
-#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV   0x0E
-#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
-#define GL_SMOOTH_CUBIC_CURVE_TO_NV       0x10
-#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
-#define GL_SMALL_CCW_ARC_TO_NV            0x12
-#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV   0x13
-#define GL_SMALL_CW_ARC_TO_NV             0x14
-#define GL_RELATIVE_SMALL_CW_ARC_TO_NV    0x15
-#define GL_LARGE_CCW_ARC_TO_NV            0x16
-#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV   0x17
-#define GL_LARGE_CW_ARC_TO_NV             0x18
-#define GL_RELATIVE_LARGE_CW_ARC_TO_NV    0x19
-#define GL_RESTART_PATH_NV                0xF0
-#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV    0xF2
-#define GL_DUP_LAST_CUBIC_CURVE_TO_NV     0xF4
-#define GL_RECT_NV                        0xF6
-#define GL_CIRCULAR_CCW_ARC_TO_NV         0xF8
-#define GL_CIRCULAR_CW_ARC_TO_NV          0xFA
-#define GL_CIRCULAR_TANGENT_ARC_TO_NV     0xFC
-#define GL_ARC_TO_NV                      0xFE
-#define GL_RELATIVE_ARC_TO_NV             0xFF
-#define GL_BOLD_BIT_NV                    0x01
-#define GL_ITALIC_BIT_NV                  0x02
-#define GL_GLYPH_WIDTH_BIT_NV             0x01
-#define GL_GLYPH_HEIGHT_BIT_NV            0x02
-#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
-#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
-#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
-#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
-#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
-#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
-#define GL_GLYPH_HAS_KERNING_BIT_NV       0x100
-#define GL_FONT_X_MIN_BOUNDS_BIT_NV       0x00010000
-#define GL_FONT_Y_MIN_BOUNDS_BIT_NV       0x00020000
-#define GL_FONT_X_MAX_BOUNDS_BIT_NV       0x00040000
-#define GL_FONT_Y_MAX_BOUNDS_BIT_NV       0x00080000
-#define GL_FONT_UNITS_PER_EM_BIT_NV       0x00100000
-#define GL_FONT_ASCENDER_BIT_NV           0x00200000
-#define GL_FONT_DESCENDER_BIT_NV          0x00400000
-#define GL_FONT_HEIGHT_BIT_NV             0x00800000
-#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV  0x01000000
-#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
-#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
-#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
-#define GL_FONT_HAS_KERNING_BIT_NV        0x10000000
-#define GL_PRIMARY_COLOR_NV               0x852C
-#define GL_SECONDARY_COLOR_NV             0x852D
-typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);
-typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
-typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path);
-typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
-typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
-typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
-typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
-typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
-typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
-typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
-typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
-typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);
-typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
-typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
-typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode);
-typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
-typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
-typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);
-typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);
-typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);
-typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);
-typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
-typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
-typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
-typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value);
-typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value);
-typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
-typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
-typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
-typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range);
-GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range);
-GLAPI GLboolean APIENTRY glIsPathNV (GLuint path);
-GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);
-GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
-GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);
-GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
-GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);
-GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);
-GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);
-GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);
-GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
-GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);
-GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);
-GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);
-GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);
-GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func);
-GLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
-GLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
-GLAPI void APIENTRY glPathFogGenNV (GLenum genMode);
-GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);
-GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);
-GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);
-GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);
-GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);
-GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);
-GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
-GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
-GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
-GLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value);
-GLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value);
-GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);
-GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);
-GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);
-GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
-#endif
-#endif /* GL_NV_path_rendering */
-
-#ifndef GL_NV_pixel_data_range
-#define GL_NV_pixel_data_range 1
-#define GL_WRITE_PIXEL_DATA_RANGE_NV      0x8878
-#define GL_READ_PIXEL_DATA_RANGE_NV       0x8879
-#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
-#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
-#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
-#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
-typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const void *pointer);
-typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const void *pointer);
-GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target);
-#endif
-#endif /* GL_NV_pixel_data_range */
-
-#ifndef GL_NV_point_sprite
-#define GL_NV_point_sprite 1
-#define GL_POINT_SPRITE_NV                0x8861
-#define GL_COORD_REPLACE_NV               0x8862
-#define GL_POINT_SPRITE_R_MODE_NV         0x8863
-typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param);
-GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params);
-#endif
-#endif /* GL_NV_point_sprite */
-
-#ifndef GL_NV_present_video
-#define GL_NV_present_video 1
-#define GL_FRAME_NV                       0x8E26
-#define GL_FIELDS_NV                      0x8E27
-#define GL_CURRENT_TIME_NV                0x8E28
-#define GL_NUM_FILL_STREAMS_NV            0x8E29
-#define GL_PRESENT_TIME_NV                0x8E2A
-#define GL_PRESENT_DURATION_NV            0x8E2B
-typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
-typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
-typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
-GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
-GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);
-GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);
-#endif
-#endif /* GL_NV_present_video */
-
-#ifndef GL_NV_primitive_restart
-#define GL_NV_primitive_restart 1
-#define GL_PRIMITIVE_RESTART_NV           0x8558
-#define GL_PRIMITIVE_RESTART_INDEX_NV     0x8559
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPrimitiveRestartNV (void);
-GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index);
-#endif
-#endif /* GL_NV_primitive_restart */
-
-#ifndef GL_NV_register_combiners
-#define GL_NV_register_combiners 1
-#define GL_REGISTER_COMBINERS_NV          0x8522
-#define GL_VARIABLE_A_NV                  0x8523
-#define GL_VARIABLE_B_NV                  0x8524
-#define GL_VARIABLE_C_NV                  0x8525
-#define GL_VARIABLE_D_NV                  0x8526
-#define GL_VARIABLE_E_NV                  0x8527
-#define GL_VARIABLE_F_NV                  0x8528
-#define GL_VARIABLE_G_NV                  0x8529
-#define GL_CONSTANT_COLOR0_NV             0x852A
-#define GL_CONSTANT_COLOR1_NV             0x852B
-#define GL_SPARE0_NV                      0x852E
-#define GL_SPARE1_NV                      0x852F
-#define GL_DISCARD_NV                     0x8530
-#define GL_E_TIMES_F_NV                   0x8531
-#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
-#define GL_UNSIGNED_IDENTITY_NV           0x8536
-#define GL_UNSIGNED_INVERT_NV             0x8537
-#define GL_EXPAND_NORMAL_NV               0x8538
-#define GL_EXPAND_NEGATE_NV               0x8539
-#define GL_HALF_BIAS_NORMAL_NV            0x853A
-#define GL_HALF_BIAS_NEGATE_NV            0x853B
-#define GL_SIGNED_IDENTITY_NV             0x853C
-#define GL_SIGNED_NEGATE_NV               0x853D
-#define GL_SCALE_BY_TWO_NV                0x853E
-#define GL_SCALE_BY_FOUR_NV               0x853F
-#define GL_SCALE_BY_ONE_HALF_NV           0x8540
-#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV   0x8541
-#define GL_COMBINER_INPUT_NV              0x8542
-#define GL_COMBINER_MAPPING_NV            0x8543
-#define GL_COMBINER_COMPONENT_USAGE_NV    0x8544
-#define GL_COMBINER_AB_DOT_PRODUCT_NV     0x8545
-#define GL_COMBINER_CD_DOT_PRODUCT_NV     0x8546
-#define GL_COMBINER_MUX_SUM_NV            0x8547
-#define GL_COMBINER_SCALE_NV              0x8548
-#define GL_COMBINER_BIAS_NV               0x8549
-#define GL_COMBINER_AB_OUTPUT_NV          0x854A
-#define GL_COMBINER_CD_OUTPUT_NV          0x854B
-#define GL_COMBINER_SUM_OUTPUT_NV         0x854C
-#define GL_MAX_GENERAL_COMBINERS_NV       0x854D
-#define GL_NUM_GENERAL_COMBINERS_NV       0x854E
-#define GL_COLOR_SUM_CLAMP_NV             0x854F
-#define GL_COMBINER0_NV                   0x8550
-#define GL_COMBINER1_NV                   0x8551
-#define GL_COMBINER2_NV                   0x8552
-#define GL_COMBINER3_NV                   0x8553
-#define GL_COMBINER4_NV                   0x8554
-#define GL_COMBINER5_NV                   0x8555
-#define GL_COMBINER6_NV                   0x8556
-#define GL_COMBINER7_NV                   0x8557
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
-typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param);
-GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
-GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);
-#endif
-#endif /* GL_NV_register_combiners */
-
-#ifndef GL_NV_register_combiners2
-#define GL_NV_register_combiners2 1
-#define GL_PER_STAGE_CONSTANTS_NV         0x8535
-typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_NV_register_combiners2 */
-
-#ifndef GL_NV_shader_atomic_counters
-#define GL_NV_shader_atomic_counters 1
-#endif /* GL_NV_shader_atomic_counters */
-
-#ifndef GL_NV_shader_atomic_float
-#define GL_NV_shader_atomic_float 1
-#endif /* GL_NV_shader_atomic_float */
-
-#ifndef GL_NV_shader_buffer_load
-#define GL_NV_shader_buffer_load 1
-#define GL_BUFFER_GPU_ADDRESS_NV          0x8F1D
-#define GL_GPU_ADDRESS_NV                 0x8F34
-#define GL_MAX_SHADER_BUFFER_ADDRESS_NV   0x8F35
-typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
-typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
-typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result);
-typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
-typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
-GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
-GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
-GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
-GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
-GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
-GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
-GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
-GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
-GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#endif
-#endif /* GL_NV_shader_buffer_load */
-
-#ifndef GL_NV_shader_buffer_store
-#define GL_NV_shader_buffer_store 1
-#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
-#endif /* GL_NV_shader_buffer_store */
-
-#ifndef GL_NV_shader_storage_buffer_object
-#define GL_NV_shader_storage_buffer_object 1
-#endif /* GL_NV_shader_storage_buffer_object */
-
-#ifndef GL_NV_shader_thread_group
-#define GL_NV_shader_thread_group 1
-#define GL_WARP_SIZE_NV                   0x9339
-#define GL_WARPS_PER_SM_NV                0x933A
-#define GL_SM_COUNT_NV                    0x933B
-#endif /* GL_NV_shader_thread_group */
-
-#ifndef GL_NV_shader_thread_shuffle
-#define GL_NV_shader_thread_shuffle 1
-#endif /* GL_NV_shader_thread_shuffle */
-
-#ifndef GL_NV_tessellation_program5
-#define GL_NV_tessellation_program5 1
-#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV   0x86D8
-#define GL_TESS_CONTROL_PROGRAM_NV        0x891E
-#define GL_TESS_EVALUATION_PROGRAM_NV     0x891F
-#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
-#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
-#endif /* GL_NV_tessellation_program5 */
-
-#ifndef GL_NV_texgen_emboss
-#define GL_NV_texgen_emboss 1
-#define GL_EMBOSS_LIGHT_NV                0x855D
-#define GL_EMBOSS_CONSTANT_NV             0x855E
-#define GL_EMBOSS_MAP_NV                  0x855F
-#endif /* GL_NV_texgen_emboss */
-
-#ifndef GL_NV_texgen_reflection
-#define GL_NV_texgen_reflection 1
-#define GL_NORMAL_MAP_NV                  0x8511
-#define GL_REFLECTION_MAP_NV              0x8512
-#endif /* GL_NV_texgen_reflection */
-
-#ifndef GL_NV_texture_barrier
-#define GL_NV_texture_barrier 1
-typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureBarrierNV (void);
-#endif
-#endif /* GL_NV_texture_barrier */
-
-#ifndef GL_NV_texture_compression_vtc
-#define GL_NV_texture_compression_vtc 1
-#endif /* GL_NV_texture_compression_vtc */
-
-#ifndef GL_NV_texture_env_combine4
-#define GL_NV_texture_env_combine4 1
-#define GL_COMBINE4_NV                    0x8503
-#define GL_SOURCE3_RGB_NV                 0x8583
-#define GL_SOURCE3_ALPHA_NV               0x858B
-#define GL_OPERAND3_RGB_NV                0x8593
-#define GL_OPERAND3_ALPHA_NV              0x859B
-#endif /* GL_NV_texture_env_combine4 */
-
-#ifndef GL_NV_texture_expand_normal
-#define GL_NV_texture_expand_normal 1
-#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
-#endif /* GL_NV_texture_expand_normal */
-
-#ifndef GL_NV_texture_multisample
-#define GL_NV_texture_multisample 1
-#define GL_TEXTURE_COVERAGE_SAMPLES_NV    0x9045
-#define GL_TEXTURE_COLOR_SAMPLES_NV       0x9046
-typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-#endif
-#endif /* GL_NV_texture_multisample */
-
-#ifndef GL_NV_texture_rectangle
-#define GL_NV_texture_rectangle 1
-#define GL_TEXTURE_RECTANGLE_NV           0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE_NV   0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE_NV     0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV  0x84F8
-#endif /* GL_NV_texture_rectangle */
-
-#ifndef GL_NV_texture_shader
-#define GL_NV_texture_shader 1
-#define GL_OFFSET_TEXTURE_RECTANGLE_NV    0x864C
-#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
-#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
-#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
-#define GL_UNSIGNED_INT_S8_S8_8_8_NV      0x86DA
-#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  0x86DB
-#define GL_DSDT_MAG_INTENSITY_NV          0x86DC
-#define GL_SHADER_CONSISTENT_NV           0x86DD
-#define GL_TEXTURE_SHADER_NV              0x86DE
-#define GL_SHADER_OPERATION_NV            0x86DF
-#define GL_CULL_MODES_NV                  0x86E0
-#define GL_OFFSET_TEXTURE_MATRIX_NV       0x86E1
-#define GL_OFFSET_TEXTURE_SCALE_NV        0x86E2
-#define GL_OFFSET_TEXTURE_BIAS_NV         0x86E3
-#define GL_OFFSET_TEXTURE_2D_MATRIX_NV    0x86E1
-#define GL_OFFSET_TEXTURE_2D_SCALE_NV     0x86E2
-#define GL_OFFSET_TEXTURE_2D_BIAS_NV      0x86E3
-#define GL_PREVIOUS_TEXTURE_INPUT_NV      0x86E4
-#define GL_CONST_EYE_NV                   0x86E5
-#define GL_PASS_THROUGH_NV                0x86E6
-#define GL_CULL_FRAGMENT_NV               0x86E7
-#define GL_OFFSET_TEXTURE_2D_NV           0x86E8
-#define GL_DEPENDENT_AR_TEXTURE_2D_NV     0x86E9
-#define GL_DEPENDENT_GB_TEXTURE_2D_NV     0x86EA
-#define GL_DOT_PRODUCT_NV                 0x86EC
-#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV   0x86ED
-#define GL_DOT_PRODUCT_TEXTURE_2D_NV      0x86EE
-#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
-#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
-#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
-#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
-#define GL_HILO_NV                        0x86F4
-#define GL_DSDT_NV                        0x86F5
-#define GL_DSDT_MAG_NV                    0x86F6
-#define GL_DSDT_MAG_VIB_NV                0x86F7
-#define GL_HILO16_NV                      0x86F8
-#define GL_SIGNED_HILO_NV                 0x86F9
-#define GL_SIGNED_HILO16_NV               0x86FA
-#define GL_SIGNED_RGBA_NV                 0x86FB
-#define GL_SIGNED_RGBA8_NV                0x86FC
-#define GL_SIGNED_RGB_NV                  0x86FE
-#define GL_SIGNED_RGB8_NV                 0x86FF
-#define GL_SIGNED_LUMINANCE_NV            0x8701
-#define GL_SIGNED_LUMINANCE8_NV           0x8702
-#define GL_SIGNED_LUMINANCE_ALPHA_NV      0x8703
-#define GL_SIGNED_LUMINANCE8_ALPHA8_NV    0x8704
-#define GL_SIGNED_ALPHA_NV                0x8705
-#define GL_SIGNED_ALPHA8_NV               0x8706
-#define GL_SIGNED_INTENSITY_NV            0x8707
-#define GL_SIGNED_INTENSITY8_NV           0x8708
-#define GL_DSDT8_NV                       0x8709
-#define GL_DSDT8_MAG8_NV                  0x870A
-#define GL_DSDT8_MAG8_INTENSITY8_NV       0x870B
-#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV   0x870C
-#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
-#define GL_HI_SCALE_NV                    0x870E
-#define GL_LO_SCALE_NV                    0x870F
-#define GL_DS_SCALE_NV                    0x8710
-#define GL_DT_SCALE_NV                    0x8711
-#define GL_MAGNITUDE_SCALE_NV             0x8712
-#define GL_VIBRANCE_SCALE_NV              0x8713
-#define GL_HI_BIAS_NV                     0x8714
-#define GL_LO_BIAS_NV                     0x8715
-#define GL_DS_BIAS_NV                     0x8716
-#define GL_DT_BIAS_NV                     0x8717
-#define GL_MAGNITUDE_BIAS_NV              0x8718
-#define GL_VIBRANCE_BIAS_NV               0x8719
-#define GL_TEXTURE_BORDER_VALUES_NV       0x871A
-#define GL_TEXTURE_HI_SIZE_NV             0x871B
-#define GL_TEXTURE_LO_SIZE_NV             0x871C
-#define GL_TEXTURE_DS_SIZE_NV             0x871D
-#define GL_TEXTURE_DT_SIZE_NV             0x871E
-#define GL_TEXTURE_MAG_SIZE_NV            0x871F
-#endif /* GL_NV_texture_shader */
-
-#ifndef GL_NV_texture_shader2
-#define GL_NV_texture_shader2 1
-#define GL_DOT_PRODUCT_TEXTURE_3D_NV      0x86EF
-#endif /* GL_NV_texture_shader2 */
-
-#ifndef GL_NV_texture_shader3
-#define GL_NV_texture_shader3 1
-#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
-#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
-#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
-#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
-#define GL_OFFSET_HILO_TEXTURE_2D_NV      0x8854
-#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
-#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
-#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
-#define GL_DEPENDENT_HILO_TEXTURE_2D_NV   0x8858
-#define GL_DEPENDENT_RGB_TEXTURE_3D_NV    0x8859
-#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
-#define GL_DOT_PRODUCT_PASS_THROUGH_NV    0x885B
-#define GL_DOT_PRODUCT_TEXTURE_1D_NV      0x885C
-#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
-#define GL_HILO8_NV                       0x885E
-#define GL_SIGNED_HILO8_NV                0x885F
-#define GL_FORCE_BLUE_TO_ONE_NV           0x8860
-#endif /* GL_NV_texture_shader3 */
-
-#ifndef GL_NV_transform_feedback
-#define GL_NV_transform_feedback 1
-#define GL_BACK_PRIMARY_COLOR_NV          0x8C77
-#define GL_BACK_SECONDARY_COLOR_NV        0x8C78
-#define GL_TEXTURE_COORD_NV               0x8C79
-#define GL_CLIP_DISTANCE_NV               0x8C7A
-#define GL_VERTEX_ID_NV                   0x8C7B
-#define GL_PRIMITIVE_ID_NV                0x8C7C
-#define GL_GENERIC_ATTRIB_NV              0x8C7D
-#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV  0x8C7E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
-#define GL_ACTIVE_VARYINGS_NV             0x8C81
-#define GL_ACTIVE_VARYING_MAX_LENGTH_NV   0x8C82
-#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
-#define GL_TRANSFORM_FEEDBACK_RECORD_NV   0x8C86
-#define GL_PRIMITIVES_GENERATED_NV        0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
-#define GL_RASTERIZER_DISCARD_NV          0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
-#define GL_INTERLEAVED_ATTRIBS_NV         0x8C8C
-#define GL_SEPARATE_ATTRIBS_NV            0x8C8D
-#define GL_TRANSFORM_FEEDBACK_BUFFER_NV   0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
-#define GL_LAYER_NV                       0x8DAA
-#define GL_NEXT_BUFFER_NV                 -2
-#define GL_SKIP_COMPONENTS4_NV            -3
-#define GL_SKIP_COMPONENTS3_NV            -4
-#define GL_SKIP_COMPONENTS2_NV            -5
-#define GL_SKIP_COMPONENTS1_NV            -6
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedbackNV (void);
-GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode);
-GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
-GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name);
-GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location);
-GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
-#endif
-#endif /* GL_NV_transform_feedback */
-
-#ifndef GL_NV_transform_feedback2
-#define GL_NV_transform_feedback2 1
-#define GL_TRANSFORM_FEEDBACK_NV          0x8E22
-#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
-#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
-#define GL_TRANSFORM_FEEDBACK_BINDING_NV  0x8E25
-typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids);
-typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void);
-typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids);
-GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids);
-GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id);
-GLAPI void APIENTRY glPauseTransformFeedbackNV (void);
-GLAPI void APIENTRY glResumeTransformFeedbackNV (void);
-GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);
-#endif
-#endif /* GL_NV_transform_feedback2 */
-
-#ifndef GL_NV_vdpau_interop
-#define GL_NV_vdpau_interop 1
-typedef GLintptr GLvdpauSurfaceNV;
-#define GL_SURFACE_STATE_NV               0x86EB
-#define GL_SURFACE_REGISTERED_NV          0x86FD
-#define GL_SURFACE_MAPPED_NV              0x8700
-#define GL_WRITE_DISCARD_NV               0x88BE
-typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void *getProcAddress);
-typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
-typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
-typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
-typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
-typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
-typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAddress);
-GLAPI void APIENTRY glVDPAUFiniNV (void);
-GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
-GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
-GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
-GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
-GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
-#endif
-#endif /* GL_NV_vdpau_interop */
-
-#ifndef GL_NV_vertex_array_range
-#define GL_NV_vertex_array_range 1
-#define GL_VERTEX_ARRAY_RANGE_NV          0x851D
-#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV   0x851E
-#define GL_VERTEX_ARRAY_RANGE_VALID_NV    0x851F
-#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
-#define GL_VERTEX_ARRAY_RANGE_POINTER_NV  0x8521
-typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
-typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
-GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const void *pointer);
-#endif
-#endif /* GL_NV_vertex_array_range */
-
-#ifndef GL_NV_vertex_array_range2
-#define GL_NV_vertex_array_range2 1
-#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
-#endif /* GL_NV_vertex_array_range2 */
-
-#ifndef GL_NV_vertex_attrib_integer_64bit
-#define GL_NV_vertex_attrib_integer_64bit 1
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x);
-GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x);
-GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params);
-GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
-#endif
-#endif /* GL_NV_vertex_attrib_integer_64bit */
-
-#ifndef GL_NV_vertex_buffer_unified_memory
-#define GL_NV_vertex_buffer_unified_memory 1
-#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
-#define GL_ELEMENT_ARRAY_UNIFIED_NV       0x8F1F
-#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
-#define GL_VERTEX_ARRAY_ADDRESS_NV        0x8F21
-#define GL_NORMAL_ARRAY_ADDRESS_NV        0x8F22
-#define GL_COLOR_ARRAY_ADDRESS_NV         0x8F23
-#define GL_INDEX_ARRAY_ADDRESS_NV         0x8F24
-#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
-#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV     0x8F26
-#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
-#define GL_FOG_COORD_ARRAY_ADDRESS_NV     0x8F28
-#define GL_ELEMENT_ARRAY_ADDRESS_NV       0x8F29
-#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV  0x8F2A
-#define GL_VERTEX_ARRAY_LENGTH_NV         0x8F2B
-#define GL_NORMAL_ARRAY_LENGTH_NV         0x8F2C
-#define GL_COLOR_ARRAY_LENGTH_NV          0x8F2D
-#define GL_INDEX_ARRAY_LENGTH_NV          0x8F2E
-#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV  0x8F2F
-#define GL_EDGE_FLAG_ARRAY_LENGTH_NV      0x8F30
-#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
-#define GL_FOG_COORD_ARRAY_LENGTH_NV      0x8F32
-#define GL_ELEMENT_ARRAY_LENGTH_NV        0x8F33
-#define GL_DRAW_INDIRECT_UNIFIED_NV       0x8F40
-#define GL_DRAW_INDIRECT_ADDRESS_NV       0x8F41
-#define GL_DRAW_INDIRECT_LENGTH_NV        0x8F42
-typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
-GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
-GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
-#endif
-#endif /* GL_NV_vertex_buffer_unified_memory */
-
-#ifndef GL_NV_vertex_program
-#define GL_NV_vertex_program 1
-#define GL_VERTEX_PROGRAM_NV              0x8620
-#define GL_VERTEX_STATE_PROGRAM_NV        0x8621
-#define GL_ATTRIB_ARRAY_SIZE_NV           0x8623
-#define GL_ATTRIB_ARRAY_STRIDE_NV         0x8624
-#define GL_ATTRIB_ARRAY_TYPE_NV           0x8625
-#define GL_CURRENT_ATTRIB_NV              0x8626
-#define GL_PROGRAM_LENGTH_NV              0x8627
-#define GL_PROGRAM_STRING_NV              0x8628
-#define GL_MODELVIEW_PROJECTION_NV        0x8629
-#define GL_IDENTITY_NV                    0x862A
-#define GL_INVERSE_NV                     0x862B
-#define GL_TRANSPOSE_NV                   0x862C
-#define GL_INVERSE_TRANSPOSE_NV           0x862D
-#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
-#define GL_MAX_TRACK_MATRICES_NV          0x862F
-#define GL_MATRIX0_NV                     0x8630
-#define GL_MATRIX1_NV                     0x8631
-#define GL_MATRIX2_NV                     0x8632
-#define GL_MATRIX3_NV                     0x8633
-#define GL_MATRIX4_NV                     0x8634
-#define GL_MATRIX5_NV                     0x8635
-#define GL_MATRIX6_NV                     0x8636
-#define GL_MATRIX7_NV                     0x8637
-#define GL_CURRENT_MATRIX_STACK_DEPTH_NV  0x8640
-#define GL_CURRENT_MATRIX_NV              0x8641
-#define GL_VERTEX_PROGRAM_POINT_SIZE_NV   0x8642
-#define GL_VERTEX_PROGRAM_TWO_SIDE_NV     0x8643
-#define GL_PROGRAM_PARAMETER_NV           0x8644
-#define GL_ATTRIB_ARRAY_POINTER_NV        0x8645
-#define GL_PROGRAM_TARGET_NV              0x8646
-#define GL_PROGRAM_RESIDENT_NV            0x8647
-#define GL_TRACK_MATRIX_NV                0x8648
-#define GL_TRACK_MATRIX_TRANSFORM_NV      0x8649
-#define GL_VERTEX_PROGRAM_BINDING_NV      0x864A
-#define GL_PROGRAM_ERROR_POSITION_NV      0x864B
-#define GL_VERTEX_ATTRIB_ARRAY0_NV        0x8650
-#define GL_VERTEX_ATTRIB_ARRAY1_NV        0x8651
-#define GL_VERTEX_ATTRIB_ARRAY2_NV        0x8652
-#define GL_VERTEX_ATTRIB_ARRAY3_NV        0x8653
-#define GL_VERTEX_ATTRIB_ARRAY4_NV        0x8654
-#define GL_VERTEX_ATTRIB_ARRAY5_NV        0x8655
-#define GL_VERTEX_ATTRIB_ARRAY6_NV        0x8656
-#define GL_VERTEX_ATTRIB_ARRAY7_NV        0x8657
-#define GL_VERTEX_ATTRIB_ARRAY8_NV        0x8658
-#define GL_VERTEX_ATTRIB_ARRAY9_NV        0x8659
-#define GL_VERTEX_ATTRIB_ARRAY10_NV       0x865A
-#define GL_VERTEX_ATTRIB_ARRAY11_NV       0x865B
-#define GL_VERTEX_ATTRIB_ARRAY12_NV       0x865C
-#define GL_VERTEX_ATTRIB_ARRAY13_NV       0x865D
-#define GL_VERTEX_ATTRIB_ARRAY14_NV       0x865E
-#define GL_VERTEX_ATTRIB_ARRAY15_NV       0x865F
-#define GL_MAP1_VERTEX_ATTRIB0_4_NV       0x8660
-#define GL_MAP1_VERTEX_ATTRIB1_4_NV       0x8661
-#define GL_MAP1_VERTEX_ATTRIB2_4_NV       0x8662
-#define GL_MAP1_VERTEX_ATTRIB3_4_NV       0x8663
-#define GL_MAP1_VERTEX_ATTRIB4_4_NV       0x8664
-#define GL_MAP1_VERTEX_ATTRIB5_4_NV       0x8665
-#define GL_MAP1_VERTEX_ATTRIB6_4_NV       0x8666
-#define GL_MAP1_VERTEX_ATTRIB7_4_NV       0x8667
-#define GL_MAP1_VERTEX_ATTRIB8_4_NV       0x8668
-#define GL_MAP1_VERTEX_ATTRIB9_4_NV       0x8669
-#define GL_MAP1_VERTEX_ATTRIB10_4_NV      0x866A
-#define GL_MAP1_VERTEX_ATTRIB11_4_NV      0x866B
-#define GL_MAP1_VERTEX_ATTRIB12_4_NV      0x866C
-#define GL_MAP1_VERTEX_ATTRIB13_4_NV      0x866D
-#define GL_MAP1_VERTEX_ATTRIB14_4_NV      0x866E
-#define GL_MAP1_VERTEX_ATTRIB15_4_NV      0x866F
-#define GL_MAP2_VERTEX_ATTRIB0_4_NV       0x8670
-#define GL_MAP2_VERTEX_ATTRIB1_4_NV       0x8671
-#define GL_MAP2_VERTEX_ATTRIB2_4_NV       0x8672
-#define GL_MAP2_VERTEX_ATTRIB3_4_NV       0x8673
-#define GL_MAP2_VERTEX_ATTRIB4_4_NV       0x8674
-#define GL_MAP2_VERTEX_ATTRIB5_4_NV       0x8675
-#define GL_MAP2_VERTEX_ATTRIB6_4_NV       0x8676
-#define GL_MAP2_VERTEX_ATTRIB7_4_NV       0x8677
-#define GL_MAP2_VERTEX_ATTRIB8_4_NV       0x8678
-#define GL_MAP2_VERTEX_ATTRIB9_4_NV       0x8679
-#define GL_MAP2_VERTEX_ATTRIB10_4_NV      0x867A
-#define GL_MAP2_VERTEX_ATTRIB11_4_NV      0x867B
-#define GL_MAP2_VERTEX_ATTRIB12_4_NV      0x867C
-#define GL_MAP2_VERTEX_ATTRIB13_4_NV      0x867D
-#define GL_MAP2_VERTEX_ATTRIB14_4_NV      0x867E
-#define GL_MAP2_VERTEX_ATTRIB15_4_NV      0x867F
-typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
-typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
-typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
-typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
-typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void **pointer);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
-typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);
-GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs);
-GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);
-GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs);
-GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);
-GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, void **pointer);
-GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id);
-GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
-GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);
-GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);
-GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);
-#endif
-#endif /* GL_NV_vertex_program */
-
-#ifndef GL_NV_vertex_program1_1
-#define GL_NV_vertex_program1_1 1
-#endif /* GL_NV_vertex_program1_1 */
-
-#ifndef GL_NV_vertex_program2
-#define GL_NV_vertex_program2 1
-#endif /* GL_NV_vertex_program2 */
-
-#ifndef GL_NV_vertex_program2_option
-#define GL_NV_vertex_program2_option 1
-#endif /* GL_NV_vertex_program2_option */
-
-#ifndef GL_NV_vertex_program3
-#define GL_NV_vertex_program3 1
-#endif /* GL_NV_vertex_program3 */
-
-#ifndef GL_NV_vertex_program4
-#define GL_NV_vertex_program4 1
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x);
-GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y);
-GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x);
-GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y);
-GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z);
-GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params);
-#endif
-#endif /* GL_NV_vertex_program4 */
-
-#ifndef GL_NV_video_capture
-#define GL_NV_video_capture 1
-#define GL_VIDEO_BUFFER_NV                0x9020
-#define GL_VIDEO_BUFFER_BINDING_NV        0x9021
-#define GL_FIELD_UPPER_NV                 0x9022
-#define GL_FIELD_LOWER_NV                 0x9023
-#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV   0x9024
-#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
-#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
-#define GL_LAST_VIDEO_CAPTURE_STATUS_NV   0x9027
-#define GL_VIDEO_BUFFER_PITCH_NV          0x9028
-#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
-#define GL_VIDEO_COLOR_CONVERSION_MAX_NV  0x902A
-#define GL_VIDEO_COLOR_CONVERSION_MIN_NV  0x902B
-#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
-#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
-#define GL_PARTIAL_SUCCESS_NV             0x902E
-#define GL_SUCCESS_NV                     0x902F
-#define GL_FAILURE_NV                     0x9030
-#define GL_YCBYCR8_422_NV                 0x9031
-#define GL_YCBAYCR8A_4224_NV              0x9032
-#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV  0x9033
-#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
-#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV  0x9035
-#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
-#define GL_Z4Y12Z4CB12Z4CR12_444_NV       0x9037
-#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV   0x9038
-#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV  0x9039
-#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
-#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
-#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
-typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
-typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
-typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
-typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
-typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot);
-GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
-GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
-GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot);
-GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
-GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
-GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
-#endif
-#endif /* GL_NV_video_capture */
-
-#ifndef GL_OML_interlace
-#define GL_OML_interlace 1
-#define GL_INTERLACE_OML                  0x8980
-#define GL_INTERLACE_READ_OML             0x8981
-#endif /* GL_OML_interlace */
-
-#ifndef GL_OML_resample
-#define GL_OML_resample 1
-#define GL_PACK_RESAMPLE_OML              0x8984
-#define GL_UNPACK_RESAMPLE_OML            0x8985
-#define GL_RESAMPLE_REPLICATE_OML         0x8986
-#define GL_RESAMPLE_ZERO_FILL_OML         0x8987
-#define GL_RESAMPLE_AVERAGE_OML           0x8988
-#define GL_RESAMPLE_DECIMATE_OML          0x8989
-#endif /* GL_OML_resample */
-
-#ifndef GL_OML_subsample
-#define GL_OML_subsample 1
-#define GL_FORMAT_SUBSAMPLE_24_24_OML     0x8982
-#define GL_FORMAT_SUBSAMPLE_244_244_OML   0x8983
-#endif /* GL_OML_subsample */
-
-#ifndef GL_PGI_misc_hints
-#define GL_PGI_misc_hints 1
-#define GL_PREFER_DOUBLEBUFFER_HINT_PGI   0x1A1F8
-#define GL_CONSERVE_MEMORY_HINT_PGI       0x1A1FD
-#define GL_RECLAIM_MEMORY_HINT_PGI        0x1A1FE
-#define GL_NATIVE_GRAPHICS_HANDLE_PGI     0x1A202
-#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
-#define GL_NATIVE_GRAPHICS_END_HINT_PGI   0x1A204
-#define GL_ALWAYS_FAST_HINT_PGI           0x1A20C
-#define GL_ALWAYS_SOFT_HINT_PGI           0x1A20D
-#define GL_ALLOW_DRAW_OBJ_HINT_PGI        0x1A20E
-#define GL_ALLOW_DRAW_WIN_HINT_PGI        0x1A20F
-#define GL_ALLOW_DRAW_FRG_HINT_PGI        0x1A210
-#define GL_ALLOW_DRAW_MEM_HINT_PGI        0x1A211
-#define GL_STRICT_DEPTHFUNC_HINT_PGI      0x1A216
-#define GL_STRICT_LIGHTING_HINT_PGI       0x1A217
-#define GL_STRICT_SCISSOR_HINT_PGI        0x1A218
-#define GL_FULL_STIPPLE_HINT_PGI          0x1A219
-#define GL_CLIP_NEAR_HINT_PGI             0x1A220
-#define GL_CLIP_FAR_HINT_PGI              0x1A221
-#define GL_WIDE_LINE_HINT_PGI             0x1A222
-#define GL_BACK_NORMALS_HINT_PGI          0x1A223
-typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode);
-#endif
-#endif /* GL_PGI_misc_hints */
-
-#ifndef GL_PGI_vertex_hints
-#define GL_PGI_vertex_hints 1
-#define GL_VERTEX_DATA_HINT_PGI           0x1A22A
-#define GL_VERTEX_CONSISTENT_HINT_PGI     0x1A22B
-#define GL_MATERIAL_SIDE_HINT_PGI         0x1A22C
-#define GL_MAX_VERTEX_HINT_PGI            0x1A22D
-#define GL_COLOR3_BIT_PGI                 0x00010000
-#define GL_COLOR4_BIT_PGI                 0x00020000
-#define GL_EDGEFLAG_BIT_PGI               0x00040000
-#define GL_INDEX_BIT_PGI                  0x00080000
-#define GL_MAT_AMBIENT_BIT_PGI            0x00100000
-#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
-#define GL_MAT_DIFFUSE_BIT_PGI            0x00400000
-#define GL_MAT_EMISSION_BIT_PGI           0x00800000
-#define GL_MAT_COLOR_INDEXES_BIT_PGI      0x01000000
-#define GL_MAT_SHININESS_BIT_PGI          0x02000000
-#define GL_MAT_SPECULAR_BIT_PGI           0x04000000
-#define GL_NORMAL_BIT_PGI                 0x08000000
-#define GL_TEXCOORD1_BIT_PGI              0x10000000
-#define GL_TEXCOORD2_BIT_PGI              0x20000000
-#define GL_TEXCOORD3_BIT_PGI              0x40000000
-#define GL_TEXCOORD4_BIT_PGI              0x80000000
-#define GL_VERTEX23_BIT_PGI               0x00000004
-#define GL_VERTEX4_BIT_PGI                0x00000008
-#endif /* GL_PGI_vertex_hints */
-
-#ifndef GL_REND_screen_coordinates
-#define GL_REND_screen_coordinates 1
-#define GL_SCREEN_COORDINATES_REND        0x8490
-#define GL_INVERTED_SCREEN_W_REND         0x8491
-#endif /* GL_REND_screen_coordinates */
-
-#ifndef GL_S3_s3tc
-#define GL_S3_s3tc 1
-#define GL_RGB_S3TC                       0x83A0
-#define GL_RGB4_S3TC                      0x83A1
-#define GL_RGBA_S3TC                      0x83A2
-#define GL_RGBA4_S3TC                     0x83A3
-#define GL_RGBA_DXT5_S3TC                 0x83A4
-#define GL_RGBA4_DXT5_S3TC                0x83A5
-#endif /* GL_S3_s3tc */
-
-#ifndef GL_SGIS_detail_texture
-#define GL_SGIS_detail_texture 1
-#define GL_DETAIL_TEXTURE_2D_SGIS         0x8095
-#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
-#define GL_LINEAR_DETAIL_SGIS             0x8097
-#define GL_LINEAR_DETAIL_ALPHA_SGIS       0x8098
-#define GL_LINEAR_DETAIL_COLOR_SGIS       0x8099
-#define GL_DETAIL_TEXTURE_LEVEL_SGIS      0x809A
-#define GL_DETAIL_TEXTURE_MODE_SGIS       0x809B
-#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
-typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
-GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points);
-#endif
-#endif /* GL_SGIS_detail_texture */
-
-#ifndef GL_SGIS_fog_function
-#define GL_SGIS_fog_function 1
-#define GL_FOG_FUNC_SGIS                  0x812A
-#define GL_FOG_FUNC_POINTS_SGIS           0x812B
-#define GL_MAX_FOG_FUNC_POINTS_SGIS       0x812C
-typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
-typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points);
-GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points);
-#endif
-#endif /* GL_SGIS_fog_function */
-
-#ifndef GL_SGIS_generate_mipmap
-#define GL_SGIS_generate_mipmap 1
-#define GL_GENERATE_MIPMAP_SGIS           0x8191
-#define GL_GENERATE_MIPMAP_HINT_SGIS      0x8192
-#endif /* GL_SGIS_generate_mipmap */
-
-#ifndef GL_SGIS_multisample
-#define GL_SGIS_multisample 1
-#define GL_MULTISAMPLE_SGIS               0x809D
-#define GL_SAMPLE_ALPHA_TO_MASK_SGIS      0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_SGIS       0x809F
-#define GL_SAMPLE_MASK_SGIS               0x80A0
-#define GL_1PASS_SGIS                     0x80A1
-#define GL_2PASS_0_SGIS                   0x80A2
-#define GL_2PASS_1_SGIS                   0x80A3
-#define GL_4PASS_0_SGIS                   0x80A4
-#define GL_4PASS_1_SGIS                   0x80A5
-#define GL_4PASS_2_SGIS                   0x80A6
-#define GL_4PASS_3_SGIS                   0x80A7
-#define GL_SAMPLE_BUFFERS_SGIS            0x80A8
-#define GL_SAMPLES_SGIS                   0x80A9
-#define GL_SAMPLE_MASK_VALUE_SGIS         0x80AA
-#define GL_SAMPLE_MASK_INVERT_SGIS        0x80AB
-#define GL_SAMPLE_PATTERN_SGIS            0x80AC
-typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert);
-GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern);
-#endif
-#endif /* GL_SGIS_multisample */
-
-#ifndef GL_SGIS_pixel_texture
-#define GL_SGIS_pixel_texture 1
-#define GL_PIXEL_TEXTURE_SGIS             0x8353
-#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
-#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
-#define GL_PIXEL_GROUP_COLOR_SGIS         0x8356
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param);
-GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_SGIS_pixel_texture */
-
-#ifndef GL_SGIS_point_line_texgen
-#define GL_SGIS_point_line_texgen 1
-#define GL_EYE_DISTANCE_TO_POINT_SGIS     0x81F0
-#define GL_OBJECT_DISTANCE_TO_POINT_SGIS  0x81F1
-#define GL_EYE_DISTANCE_TO_LINE_SGIS      0x81F2
-#define GL_OBJECT_DISTANCE_TO_LINE_SGIS   0x81F3
-#define GL_EYE_POINT_SGIS                 0x81F4
-#define GL_OBJECT_POINT_SGIS              0x81F5
-#define GL_EYE_LINE_SGIS                  0x81F6
-#define GL_OBJECT_LINE_SGIS               0x81F7
-#endif /* GL_SGIS_point_line_texgen */
-
-#ifndef GL_SGIS_point_parameters
-#define GL_SGIS_point_parameters 1
-#define GL_POINT_SIZE_MIN_SGIS            0x8126
-#define GL_POINT_SIZE_MAX_SGIS            0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
-#define GL_DISTANCE_ATTENUATION_SGIS      0x8129
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params);
-#endif
-#endif /* GL_SGIS_point_parameters */
-
-#ifndef GL_SGIS_sharpen_texture
-#define GL_SGIS_sharpen_texture 1
-#define GL_LINEAR_SHARPEN_SGIS            0x80AD
-#define GL_LINEAR_SHARPEN_ALPHA_SGIS      0x80AE
-#define GL_LINEAR_SHARPEN_COLOR_SGIS      0x80AF
-#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
-typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
-GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points);
-#endif
-#endif /* GL_SGIS_sharpen_texture */
-
-#ifndef GL_SGIS_texture4D
-#define GL_SGIS_texture4D 1
-#define GL_PACK_SKIP_VOLUMES_SGIS         0x8130
-#define GL_PACK_IMAGE_DEPTH_SGIS          0x8131
-#define GL_UNPACK_SKIP_VOLUMES_SGIS       0x8132
-#define GL_UNPACK_IMAGE_DEPTH_SGIS        0x8133
-#define GL_TEXTURE_4D_SGIS                0x8134
-#define GL_PROXY_TEXTURE_4D_SGIS          0x8135
-#define GL_TEXTURE_4DSIZE_SGIS            0x8136
-#define GL_TEXTURE_WRAP_Q_SGIS            0x8137
-#define GL_MAX_4D_TEXTURE_SIZE_SGIS       0x8138
-#define GL_TEXTURE_4D_BINDING_SGIS        0x814F
-typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);
-#endif
-#endif /* GL_SGIS_texture4D */
-
-#ifndef GL_SGIS_texture_border_clamp
-#define GL_SGIS_texture_border_clamp 1
-#define GL_CLAMP_TO_BORDER_SGIS           0x812D
-#endif /* GL_SGIS_texture_border_clamp */
-
-#ifndef GL_SGIS_texture_color_mask
-#define GL_SGIS_texture_color_mask 1
-#define GL_TEXTURE_COLOR_WRITEMASK_SGIS   0x81EF
-typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-#endif
-#endif /* GL_SGIS_texture_color_mask */
-
-#ifndef GL_SGIS_texture_edge_clamp
-#define GL_SGIS_texture_edge_clamp 1
-#define GL_CLAMP_TO_EDGE_SGIS             0x812F
-#endif /* GL_SGIS_texture_edge_clamp */
-
-#ifndef GL_SGIS_texture_filter4
-#define GL_SGIS_texture_filter4 1
-#define GL_FILTER4_SGIS                   0x8146
-#define GL_TEXTURE_FILTER4_SIZE_SGIS      0x8147
-typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
-typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights);
-GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
-#endif
-#endif /* GL_SGIS_texture_filter4 */
-
-#ifndef GL_SGIS_texture_lod
-#define GL_SGIS_texture_lod 1
-#define GL_TEXTURE_MIN_LOD_SGIS           0x813A
-#define GL_TEXTURE_MAX_LOD_SGIS           0x813B
-#define GL_TEXTURE_BASE_LEVEL_SGIS        0x813C
-#define GL_TEXTURE_MAX_LEVEL_SGIS         0x813D
-#endif /* GL_SGIS_texture_lod */
-
-#ifndef GL_SGIS_texture_select
-#define GL_SGIS_texture_select 1
-#define GL_DUAL_ALPHA4_SGIS               0x8110
-#define GL_DUAL_ALPHA8_SGIS               0x8111
-#define GL_DUAL_ALPHA12_SGIS              0x8112
-#define GL_DUAL_ALPHA16_SGIS              0x8113
-#define GL_DUAL_LUMINANCE4_SGIS           0x8114
-#define GL_DUAL_LUMINANCE8_SGIS           0x8115
-#define GL_DUAL_LUMINANCE12_SGIS          0x8116
-#define GL_DUAL_LUMINANCE16_SGIS          0x8117
-#define GL_DUAL_INTENSITY4_SGIS           0x8118
-#define GL_DUAL_INTENSITY8_SGIS           0x8119
-#define GL_DUAL_INTENSITY12_SGIS          0x811A
-#define GL_DUAL_INTENSITY16_SGIS          0x811B
-#define GL_DUAL_LUMINANCE_ALPHA4_SGIS     0x811C
-#define GL_DUAL_LUMINANCE_ALPHA8_SGIS     0x811D
-#define GL_QUAD_ALPHA4_SGIS               0x811E
-#define GL_QUAD_ALPHA8_SGIS               0x811F
-#define GL_QUAD_LUMINANCE4_SGIS           0x8120
-#define GL_QUAD_LUMINANCE8_SGIS           0x8121
-#define GL_QUAD_INTENSITY4_SGIS           0x8122
-#define GL_QUAD_INTENSITY8_SGIS           0x8123
-#define GL_DUAL_TEXTURE_SELECT_SGIS       0x8124
-#define GL_QUAD_TEXTURE_SELECT_SGIS       0x8125
-#endif /* GL_SGIS_texture_select */
-
-#ifndef GL_SGIX_async
-#define GL_SGIX_async 1
-#define GL_ASYNC_MARKER_SGIX              0x8329
-typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
-typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
-typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
-typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
-typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
-typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker);
-GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp);
-GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp);
-GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range);
-GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range);
-GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker);
-#endif
-#endif /* GL_SGIX_async */
-
-#ifndef GL_SGIX_async_histogram
-#define GL_SGIX_async_histogram 1
-#define GL_ASYNC_HISTOGRAM_SGIX           0x832C
-#define GL_MAX_ASYNC_HISTOGRAM_SGIX       0x832D
-#endif /* GL_SGIX_async_histogram */
-
-#ifndef GL_SGIX_async_pixel
-#define GL_SGIX_async_pixel 1
-#define GL_ASYNC_TEX_IMAGE_SGIX           0x835C
-#define GL_ASYNC_DRAW_PIXELS_SGIX         0x835D
-#define GL_ASYNC_READ_PIXELS_SGIX         0x835E
-#define GL_MAX_ASYNC_TEX_IMAGE_SGIX       0x835F
-#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX     0x8360
-#define GL_MAX_ASYNC_READ_PIXELS_SGIX     0x8361
-#endif /* GL_SGIX_async_pixel */
-
-#ifndef GL_SGIX_blend_alpha_minmax
-#define GL_SGIX_blend_alpha_minmax 1
-#define GL_ALPHA_MIN_SGIX                 0x8320
-#define GL_ALPHA_MAX_SGIX                 0x8321
-#endif /* GL_SGIX_blend_alpha_minmax */
-
-#ifndef GL_SGIX_calligraphic_fragment
-#define GL_SGIX_calligraphic_fragment 1
-#define GL_CALLIGRAPHIC_FRAGMENT_SGIX     0x8183
-#endif /* GL_SGIX_calligraphic_fragment */
-
-#ifndef GL_SGIX_clipmap
-#define GL_SGIX_clipmap 1
-#define GL_LINEAR_CLIPMAP_LINEAR_SGIX     0x8170
-#define GL_TEXTURE_CLIPMAP_CENTER_SGIX    0x8171
-#define GL_TEXTURE_CLIPMAP_FRAME_SGIX     0x8172
-#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX    0x8173
-#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
-#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
-#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX     0x8176
-#define GL_MAX_CLIPMAP_DEPTH_SGIX         0x8177
-#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
-#define GL_NEAREST_CLIPMAP_NEAREST_SGIX   0x844D
-#define GL_NEAREST_CLIPMAP_LINEAR_SGIX    0x844E
-#define GL_LINEAR_CLIPMAP_NEAREST_SGIX    0x844F
-#endif /* GL_SGIX_clipmap */
-
-#ifndef GL_SGIX_convolution_accuracy
-#define GL_SGIX_convolution_accuracy 1
-#define GL_CONVOLUTION_HINT_SGIX          0x8316
-#endif /* GL_SGIX_convolution_accuracy */
-
-#ifndef GL_SGIX_depth_pass_instrument
-#define GL_SGIX_depth_pass_instrument 1
-#endif /* GL_SGIX_depth_pass_instrument */
-
-#ifndef GL_SGIX_depth_texture
-#define GL_SGIX_depth_texture 1
-#define GL_DEPTH_COMPONENT16_SGIX         0x81A5
-#define GL_DEPTH_COMPONENT24_SGIX         0x81A6
-#define GL_DEPTH_COMPONENT32_SGIX         0x81A7
-#endif /* GL_SGIX_depth_texture */
-
-#ifndef GL_SGIX_flush_raster
-#define GL_SGIX_flush_raster 1
-typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFlushRasterSGIX (void);
-#endif
-#endif /* GL_SGIX_flush_raster */
-
-#ifndef GL_SGIX_fog_offset
-#define GL_SGIX_fog_offset 1
-#define GL_FOG_OFFSET_SGIX                0x8198
-#define GL_FOG_OFFSET_VALUE_SGIX          0x8199
-#endif /* GL_SGIX_fog_offset */
-
-#ifndef GL_SGIX_fragment_lighting
-#define GL_SGIX_fragment_lighting 1
-#define GL_FRAGMENT_LIGHTING_SGIX         0x8400
-#define GL_FRAGMENT_COLOR_MATERIAL_SGIX   0x8401
-#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
-#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
-#define GL_MAX_FRAGMENT_LIGHTS_SGIX       0x8404
-#define GL_MAX_ACTIVE_LIGHTS_SGIX         0x8405
-#define GL_CURRENT_RASTER_NORMAL_SGIX     0x8406
-#define GL_LIGHT_ENV_MODE_SGIX            0x8407
-#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
-#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
-#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
-#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
-#define GL_FRAGMENT_LIGHT0_SGIX           0x840C
-#define GL_FRAGMENT_LIGHT1_SGIX           0x840D
-#define GL_FRAGMENT_LIGHT2_SGIX           0x840E
-#define GL_FRAGMENT_LIGHT3_SGIX           0x840F
-#define GL_FRAGMENT_LIGHT4_SGIX           0x8410
-#define GL_FRAGMENT_LIGHT5_SGIX           0x8411
-#define GL_FRAGMENT_LIGHT6_SGIX           0x8412
-#define GL_FRAGMENT_LIGHT7_SGIX           0x8413
-typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode);
-GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param);
-GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param);
-GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param);
-GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params);
-GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param);
-#endif
-#endif /* GL_SGIX_fragment_lighting */
-
-#ifndef GL_SGIX_framezoom
-#define GL_SGIX_framezoom 1
-#define GL_FRAMEZOOM_SGIX                 0x818B
-#define GL_FRAMEZOOM_FACTOR_SGIX          0x818C
-#define GL_MAX_FRAMEZOOM_FACTOR_SGIX      0x818D
-typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFrameZoomSGIX (GLint factor);
-#endif
-#endif /* GL_SGIX_framezoom */
-
-#ifndef GL_SGIX_igloo_interface
-#define GL_SGIX_igloo_interface 1
-typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const void *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const void *params);
-#endif
-#endif /* GL_SGIX_igloo_interface */
-
-#ifndef GL_SGIX_instruments
-#define GL_SGIX_instruments 1
-#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
-#define GL_INSTRUMENT_MEASUREMENTS_SGIX   0x8181
-typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
-typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
-typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
-typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
-typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
-typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
-GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer);
-GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p);
-GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker);
-GLAPI void APIENTRY glStartInstrumentsSGIX (void);
-GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker);
-#endif
-#endif /* GL_SGIX_instruments */
-
-#ifndef GL_SGIX_interlace
-#define GL_SGIX_interlace 1
-#define GL_INTERLACE_SGIX                 0x8094
-#endif /* GL_SGIX_interlace */
-
-#ifndef GL_SGIX_ir_instrument1
-#define GL_SGIX_ir_instrument1 1
-#define GL_IR_INSTRUMENT1_SGIX            0x817F
-#endif /* GL_SGIX_ir_instrument1 */
-
-#ifndef GL_SGIX_list_priority
-#define GL_SGIX_list_priority 1
-#define GL_LIST_PRIORITY_SGIX             0x8182
-typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params);
-GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param);
-GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params);
-#endif
-#endif /* GL_SGIX_list_priority */
-
-#ifndef GL_SGIX_pixel_texture
-#define GL_SGIX_pixel_texture 1
-#define GL_PIXEL_TEX_GEN_SGIX             0x8139
-#define GL_PIXEL_TEX_GEN_MODE_SGIX        0x832B
-typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode);
-#endif
-#endif /* GL_SGIX_pixel_texture */
-
-#ifndef GL_SGIX_pixel_tiles
-#define GL_SGIX_pixel_tiles 1
-#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
-#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
-#define GL_PIXEL_TILE_WIDTH_SGIX          0x8140
-#define GL_PIXEL_TILE_HEIGHT_SGIX         0x8141
-#define GL_PIXEL_TILE_GRID_WIDTH_SGIX     0x8142
-#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX    0x8143
-#define GL_PIXEL_TILE_GRID_DEPTH_SGIX     0x8144
-#define GL_PIXEL_TILE_CACHE_SIZE_SGIX     0x8145
-#endif /* GL_SGIX_pixel_tiles */
-
-#ifndef GL_SGIX_polynomial_ffd
-#define GL_SGIX_polynomial_ffd 1
-#define GL_TEXTURE_DEFORMATION_BIT_SGIX   0x00000001
-#define GL_GEOMETRY_DEFORMATION_BIT_SGIX  0x00000002
-#define GL_GEOMETRY_DEFORMATION_SGIX      0x8194
-#define GL_TEXTURE_DEFORMATION_SGIX       0x8195
-#define GL_DEFORMATIONS_MASK_SGIX         0x8196
-#define GL_MAX_DEFORMATION_ORDER_SGIX     0x8197
-typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
-typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
-typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
-GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
-GLAPI void APIENTRY glDeformSGIX (GLbitfield mask);
-GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask);
-#endif
-#endif /* GL_SGIX_polynomial_ffd */
-
-#ifndef GL_SGIX_reference_plane
-#define GL_SGIX_reference_plane 1
-#define GL_REFERENCE_PLANE_SGIX           0x817D
-#define GL_REFERENCE_PLANE_EQUATION_SGIX  0x817E
-typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation);
-#endif
-#endif /* GL_SGIX_reference_plane */
-
-#ifndef GL_SGIX_resample
-#define GL_SGIX_resample 1
-#define GL_PACK_RESAMPLE_SGIX             0x842C
-#define GL_UNPACK_RESAMPLE_SGIX           0x842D
-#define GL_RESAMPLE_REPLICATE_SGIX        0x842E
-#define GL_RESAMPLE_ZERO_FILL_SGIX        0x842F
-#define GL_RESAMPLE_DECIMATE_SGIX         0x8430
-#endif /* GL_SGIX_resample */
-
-#ifndef GL_SGIX_scalebias_hint
-#define GL_SGIX_scalebias_hint 1
-#define GL_SCALEBIAS_HINT_SGIX            0x8322
-#endif /* GL_SGIX_scalebias_hint */
-
-#ifndef GL_SGIX_shadow
-#define GL_SGIX_shadow 1
-#define GL_TEXTURE_COMPARE_SGIX           0x819A
-#define GL_TEXTURE_COMPARE_OPERATOR_SGIX  0x819B
-#define GL_TEXTURE_LEQUAL_R_SGIX          0x819C
-#define GL_TEXTURE_GEQUAL_R_SGIX          0x819D
-#endif /* GL_SGIX_shadow */
-
-#ifndef GL_SGIX_shadow_ambient
-#define GL_SGIX_shadow_ambient 1
-#define GL_SHADOW_AMBIENT_SGIX            0x80BF
-#endif /* GL_SGIX_shadow_ambient */
-
-#ifndef GL_SGIX_sprite
-#define GL_SGIX_sprite 1
-#define GL_SPRITE_SGIX                    0x8148
-#define GL_SPRITE_MODE_SGIX               0x8149
-#define GL_SPRITE_AXIS_SGIX               0x814A
-#define GL_SPRITE_TRANSLATION_SGIX        0x814B
-#define GL_SPRITE_AXIAL_SGIX              0x814C
-#define GL_SPRITE_OBJECT_ALIGNED_SGIX     0x814D
-#define GL_SPRITE_EYE_ALIGNED_SGIX        0x814E
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param);
-GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params);
-#endif
-#endif /* GL_SGIX_sprite */
-
-#ifndef GL_SGIX_subsample
-#define GL_SGIX_subsample 1
-#define GL_PACK_SUBSAMPLE_RATE_SGIX       0x85A0
-#define GL_UNPACK_SUBSAMPLE_RATE_SGIX     0x85A1
-#define GL_PIXEL_SUBSAMPLE_4444_SGIX      0x85A2
-#define GL_PIXEL_SUBSAMPLE_2424_SGIX      0x85A3
-#define GL_PIXEL_SUBSAMPLE_4242_SGIX      0x85A4
-#endif /* GL_SGIX_subsample */
-
-#ifndef GL_SGIX_tag_sample_buffer
-#define GL_SGIX_tag_sample_buffer 1
-typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTagSampleBufferSGIX (void);
-#endif
-#endif /* GL_SGIX_tag_sample_buffer */
-
-#ifndef GL_SGIX_texture_add_env
-#define GL_SGIX_texture_add_env 1
-#define GL_TEXTURE_ENV_BIAS_SGIX          0x80BE
-#endif /* GL_SGIX_texture_add_env */
-
-#ifndef GL_SGIX_texture_coordinate_clamp
-#define GL_SGIX_texture_coordinate_clamp 1
-#define GL_TEXTURE_MAX_CLAMP_S_SGIX       0x8369
-#define GL_TEXTURE_MAX_CLAMP_T_SGIX       0x836A
-#define GL_TEXTURE_MAX_CLAMP_R_SGIX       0x836B
-#endif /* GL_SGIX_texture_coordinate_clamp */
-
-#ifndef GL_SGIX_texture_lod_bias
-#define GL_SGIX_texture_lod_bias 1
-#define GL_TEXTURE_LOD_BIAS_S_SGIX        0x818E
-#define GL_TEXTURE_LOD_BIAS_T_SGIX        0x818F
-#define GL_TEXTURE_LOD_BIAS_R_SGIX        0x8190
-#endif /* GL_SGIX_texture_lod_bias */
-
-#ifndef GL_SGIX_texture_multi_buffer
-#define GL_SGIX_texture_multi_buffer 1
-#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
-#endif /* GL_SGIX_texture_multi_buffer */
-
-#ifndef GL_SGIX_texture_scale_bias
-#define GL_SGIX_texture_scale_bias 1
-#define GL_POST_TEXTURE_FILTER_BIAS_SGIX  0x8179
-#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
-#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
-#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
-#endif /* GL_SGIX_texture_scale_bias */
-
-#ifndef GL_SGIX_vertex_preclip
-#define GL_SGIX_vertex_preclip 1
-#define GL_VERTEX_PRECLIP_SGIX            0x83EE
-#define GL_VERTEX_PRECLIP_HINT_SGIX       0x83EF
-#endif /* GL_SGIX_vertex_preclip */
-
-#ifndef GL_SGIX_ycrcb
-#define GL_SGIX_ycrcb 1
-#define GL_YCRCB_422_SGIX                 0x81BB
-#define GL_YCRCB_444_SGIX                 0x81BC
-#endif /* GL_SGIX_ycrcb */
-
-#ifndef GL_SGIX_ycrcb_subsample
-#define GL_SGIX_ycrcb_subsample 1
-#endif /* GL_SGIX_ycrcb_subsample */
-
-#ifndef GL_SGIX_ycrcba
-#define GL_SGIX_ycrcba 1
-#define GL_YCRCB_SGIX                     0x8318
-#define GL_YCRCBA_SGIX                    0x8319
-#endif /* GL_SGIX_ycrcba */
-
-#ifndef GL_SGI_color_matrix
-#define GL_SGI_color_matrix 1
-#define GL_COLOR_MATRIX_SGI               0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH_SGI   0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
-#endif /* GL_SGI_color_matrix */
-
-#ifndef GL_SGI_color_table
-#define GL_SGI_color_table 1
-#define GL_COLOR_TABLE_SGI                0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
-#define GL_PROXY_COLOR_TABLE_SGI          0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
-#define GL_COLOR_TABLE_SCALE_SGI          0x80D6
-#define GL_COLOR_TABLE_BIAS_SGI           0x80D7
-#define GL_COLOR_TABLE_FORMAT_SGI         0x80D8
-#define GL_COLOR_TABLE_WIDTH_SGI          0x80D9
-#define GL_COLOR_TABLE_RED_SIZE_SGI       0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE_SGI     0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE_SGI      0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE_SGI     0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
-typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table);
-GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params);
-#endif
-#endif /* GL_SGI_color_table */
-
-#ifndef GL_SGI_texture_color_table
-#define GL_SGI_texture_color_table 1
-#define GL_TEXTURE_COLOR_TABLE_SGI        0x80BC
-#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI  0x80BD
-#endif /* GL_SGI_texture_color_table */
-
-#ifndef GL_SUNX_constant_data
-#define GL_SUNX_constant_data 1
-#define GL_UNPACK_CONSTANT_DATA_SUNX      0x81D5
-#define GL_TEXTURE_CONSTANT_DATA_SUNX     0x81D6
-typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFinishTextureSUNX (void);
-#endif
-#endif /* GL_SUNX_constant_data */
-
-#ifndef GL_SUN_convolution_border_modes
-#define GL_SUN_convolution_border_modes 1
-#define GL_WRAP_BORDER_SUN                0x81D4
-#endif /* GL_SUN_convolution_border_modes */
-
-#ifndef GL_SUN_global_alpha
-#define GL_SUN_global_alpha 1
-#define GL_GLOBAL_ALPHA_SUN               0x81D9
-#define GL_GLOBAL_ALPHA_FACTOR_SUN        0x81DA
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor);
-GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor);
-GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor);
-GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor);
-GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor);
-GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor);
-GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor);
-GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor);
-#endif
-#endif /* GL_SUN_global_alpha */
-
-#ifndef GL_SUN_mesh_array
-#define GL_SUN_mesh_array 1
-#define GL_QUAD_MESH_SUN                  0x8614
-#define GL_TRIANGLE_MESH_SUN              0x8615
-typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width);
-#endif
-#endif /* GL_SUN_mesh_array */
-
-#ifndef GL_SUN_slice_accum
-#define GL_SUN_slice_accum 1
-#define GL_SLICE_ACCUM_SUN                0x85CC
-#endif /* GL_SUN_slice_accum */
-
-#ifndef GL_SUN_triangle_list
-#define GL_SUN_triangle_list 1
-#define GL_RESTART_SUN                    0x0001
-#define GL_REPLACE_MIDDLE_SUN             0x0002
-#define GL_REPLACE_OLDEST_SUN             0x0003
-#define GL_TRIANGLE_LIST_SUN              0x81D7
-#define GL_REPLACEMENT_CODE_SUN           0x81D8
-#define GL_REPLACEMENT_CODE_ARRAY_SUN     0x85C0
-#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
-#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
-#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
-#define GL_R1UI_V3F_SUN                   0x85C4
-#define GL_R1UI_C4UB_V3F_SUN              0x85C5
-#define GL_R1UI_C3F_V3F_SUN               0x85C6
-#define GL_R1UI_N3F_V3F_SUN               0x85C7
-#define GL_R1UI_C4F_N3F_V3F_SUN           0x85C8
-#define GL_R1UI_T2F_V3F_SUN               0x85C9
-#define GL_R1UI_T2F_N3F_V3F_SUN           0x85CA
-#define GL_R1UI_T2F_C4F_N3F_V3F_SUN       0x85CB
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void **pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code);
-GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code);
-GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code);
-GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code);
-GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code);
-GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code);
-GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void **pointer);
-#endif
-#endif /* GL_SUN_triangle_list */
-
-#ifndef GL_SUN_vertex
-#define GL_SUN_vertex 1
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v);
-GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-#endif
-#endif /* GL_SUN_vertex */
-
-#ifndef GL_WIN_phong_shading
-#define GL_WIN_phong_shading 1
-#define GL_PHONG_WIN                      0x80EA
-#define GL_PHONG_HINT_WIN                 0x80EB
-#endif /* GL_WIN_phong_shading */
-
-#ifndef GL_WIN_specular_fog
-#define GL_WIN_specular_fog 1
-#define GL_FOG_SPECULAR_TEXTURE_WIN       0x80EC
-#endif /* GL_WIN_specular_fog */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles.h
deleted file mode 100644 (file)
index 1e0660c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_opengles.h
- *
- *  This is a simple file to encapsulate the OpenGL ES 1.X API headers.
- */
-#include "SDL_config.h"
-
-#ifdef __IPHONEOS__
-#include <OpenGLES/ES1/gl.h>
-#include <OpenGLES/ES1/glext.h>
-#else
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY
-#endif
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2.h
deleted file mode 100644 (file)
index df29d38..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_opengles2.h
- *
- *  This is a simple file to encapsulate the OpenGL ES 2.0 API headers.
- */
-#include "SDL_config.h"
-
-#ifndef _MSC_VER
-
-#ifdef __IPHONEOS__
-#include <OpenGLES/ES2/gl.h>
-#include <OpenGLES/ES2/glext.h>
-#else
-#include <GLES2/gl2platform.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#endif
-
-#else /* _MSC_VER */
-
-/* OpenGL ES2 headers for Visual Studio */
-#include "SDL_opengles2_khrplatform.h"
-#include "SDL_opengles2_gl2platform.h"
-#include "SDL_opengles2_gl2.h"
-#include "SDL_opengles2_gl2ext.h"
-
-#endif /* _MSC_VER */
-
-#ifndef APIENTRY
-#define APIENTRY GL_APIENTRY
-#endif
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_gl2.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_gl2.h
deleted file mode 100644 (file)
index c62fb0a..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-#ifndef __gl2_h_
-#define __gl2_h_
-
-/* $Revision: 20555 $ on $Date:: 2013-02-12 14:32:47 -0800 #$ */
-
-/*#include <GLES2/gl2platform.h>*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-/*-------------------------------------------------------------------------
- * Data type definitions
- *-----------------------------------------------------------------------*/
-
-typedef void             GLvoid;
-typedef char             GLchar;
-typedef unsigned int     GLenum;
-typedef unsigned char    GLboolean;
-typedef unsigned int     GLbitfield;
-typedef khronos_int8_t   GLbyte;
-typedef short            GLshort;
-typedef int              GLint;
-typedef int              GLsizei;
-typedef khronos_uint8_t  GLubyte;
-typedef unsigned short   GLushort;
-typedef unsigned int     GLuint;
-typedef khronos_float_t  GLfloat;
-typedef khronos_float_t  GLclampf;
-typedef khronos_int32_t  GLfixed;
-
-/* GL types for handling large vertex buffer objects */
-typedef khronos_intptr_t GLintptr;
-typedef khronos_ssize_t  GLsizeiptr;
-
-/* OpenGL ES core versions */
-#define GL_ES_VERSION_2_0                 1
-
-/* ClearBufferMask */
-#define GL_DEPTH_BUFFER_BIT               0x00000100
-#define GL_STENCIL_BUFFER_BIT             0x00000400
-#define GL_COLOR_BUFFER_BIT               0x00004000
-
-/* Boolean */
-#define GL_FALSE                          0
-#define GL_TRUE                           1
-
-/* BeginMode */
-#define GL_POINTS                         0x0000
-#define GL_LINES                          0x0001
-#define GL_LINE_LOOP                      0x0002
-#define GL_LINE_STRIP                     0x0003
-#define GL_TRIANGLES                      0x0004
-#define GL_TRIANGLE_STRIP                 0x0005
-#define GL_TRIANGLE_FAN                   0x0006
-
-/* AlphaFunction (not supported in ES20) */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* BlendingFactorDest */
-#define GL_ZERO                           0
-#define GL_ONE                            1
-#define GL_SRC_COLOR                      0x0300
-#define GL_ONE_MINUS_SRC_COLOR            0x0301
-#define GL_SRC_ALPHA                      0x0302
-#define GL_ONE_MINUS_SRC_ALPHA            0x0303
-#define GL_DST_ALPHA                      0x0304
-#define GL_ONE_MINUS_DST_ALPHA            0x0305
-
-/* BlendingFactorSrc */
-/*      GL_ZERO */
-/*      GL_ONE */
-#define GL_DST_COLOR                      0x0306
-#define GL_ONE_MINUS_DST_COLOR            0x0307
-#define GL_SRC_ALPHA_SATURATE             0x0308
-/*      GL_SRC_ALPHA */
-/*      GL_ONE_MINUS_SRC_ALPHA */
-/*      GL_DST_ALPHA */
-/*      GL_ONE_MINUS_DST_ALPHA */
-
-/* BlendEquationSeparate */
-#define GL_FUNC_ADD                       0x8006
-#define GL_BLEND_EQUATION                 0x8009
-#define GL_BLEND_EQUATION_RGB             0x8009    /* same as BLEND_EQUATION */
-#define GL_BLEND_EQUATION_ALPHA           0x883D
-
-/* BlendSubtract */
-#define GL_FUNC_SUBTRACT                  0x800A
-#define GL_FUNC_REVERSE_SUBTRACT          0x800B
-
-/* Separate Blend Functions */
-#define GL_BLEND_DST_RGB                  0x80C8
-#define GL_BLEND_SRC_RGB                  0x80C9
-#define GL_BLEND_DST_ALPHA                0x80CA
-#define GL_BLEND_SRC_ALPHA                0x80CB
-#define GL_CONSTANT_COLOR                 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
-#define GL_CONSTANT_ALPHA                 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
-#define GL_BLEND_COLOR                    0x8005
-
-/* Buffer Objects */
-#define GL_ARRAY_BUFFER                   0x8892
-#define GL_ELEMENT_ARRAY_BUFFER           0x8893
-#define GL_ARRAY_BUFFER_BINDING           0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
-
-#define GL_STREAM_DRAW                    0x88E0
-#define GL_STATIC_DRAW                    0x88E4
-#define GL_DYNAMIC_DRAW                   0x88E8
-
-#define GL_BUFFER_SIZE                    0x8764
-#define GL_BUFFER_USAGE                   0x8765
-
-#define GL_CURRENT_VERTEX_ATTRIB          0x8626
-
-/* CullFaceMode */
-#define GL_FRONT                          0x0404
-#define GL_BACK                           0x0405
-#define GL_FRONT_AND_BACK                 0x0408
-
-/* DepthFunction */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* EnableCap */
-#define GL_TEXTURE_2D                     0x0DE1
-#define GL_CULL_FACE                      0x0B44
-#define GL_BLEND                          0x0BE2
-#define GL_DITHER                         0x0BD0
-#define GL_STENCIL_TEST                   0x0B90
-#define GL_DEPTH_TEST                     0x0B71
-#define GL_SCISSOR_TEST                   0x0C11
-#define GL_POLYGON_OFFSET_FILL            0x8037
-#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
-#define GL_SAMPLE_COVERAGE                0x80A0
-
-/* ErrorCode */
-#define GL_NO_ERROR                       0
-#define GL_INVALID_ENUM                   0x0500
-#define GL_INVALID_VALUE                  0x0501
-#define GL_INVALID_OPERATION              0x0502
-#define GL_OUT_OF_MEMORY                  0x0505
-
-/* FrontFaceDirection */
-#define GL_CW                             0x0900
-#define GL_CCW                            0x0901
-
-/* GetPName */
-#define GL_LINE_WIDTH                     0x0B21
-#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
-#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
-#define GL_CULL_FACE_MODE                 0x0B45
-#define GL_FRONT_FACE                     0x0B46
-#define GL_DEPTH_RANGE                    0x0B70
-#define GL_DEPTH_WRITEMASK                0x0B72
-#define GL_DEPTH_CLEAR_VALUE              0x0B73
-#define GL_DEPTH_FUNC                     0x0B74
-#define GL_STENCIL_CLEAR_VALUE            0x0B91
-#define GL_STENCIL_FUNC                   0x0B92
-#define GL_STENCIL_FAIL                   0x0B94
-#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
-#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
-#define GL_STENCIL_REF                    0x0B97
-#define GL_STENCIL_VALUE_MASK             0x0B93
-#define GL_STENCIL_WRITEMASK              0x0B98
-#define GL_STENCIL_BACK_FUNC              0x8800
-#define GL_STENCIL_BACK_FAIL              0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
-#define GL_STENCIL_BACK_REF               0x8CA3
-#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
-#define GL_STENCIL_BACK_WRITEMASK         0x8CA5
-#define GL_VIEWPORT                       0x0BA2
-#define GL_SCISSOR_BOX                    0x0C10
-/*      GL_SCISSOR_TEST */
-#define GL_COLOR_CLEAR_VALUE              0x0C22
-#define GL_COLOR_WRITEMASK                0x0C23
-#define GL_UNPACK_ALIGNMENT               0x0CF5
-#define GL_PACK_ALIGNMENT                 0x0D05
-#define GL_MAX_TEXTURE_SIZE               0x0D33
-#define GL_MAX_VIEWPORT_DIMS              0x0D3A
-#define GL_SUBPIXEL_BITS                  0x0D50
-#define GL_RED_BITS                       0x0D52
-#define GL_GREEN_BITS                     0x0D53
-#define GL_BLUE_BITS                      0x0D54
-#define GL_ALPHA_BITS                     0x0D55
-#define GL_DEPTH_BITS                     0x0D56
-#define GL_STENCIL_BITS                   0x0D57
-#define GL_POLYGON_OFFSET_UNITS           0x2A00
-/*      GL_POLYGON_OFFSET_FILL */
-#define GL_POLYGON_OFFSET_FACTOR          0x8038
-#define GL_TEXTURE_BINDING_2D             0x8069
-#define GL_SAMPLE_BUFFERS                 0x80A8
-#define GL_SAMPLES                        0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
-
-/* GetTextureParameter */
-/*      GL_TEXTURE_MAG_FILTER */
-/*      GL_TEXTURE_MIN_FILTER */
-/*      GL_TEXTURE_WRAP_S */
-/*      GL_TEXTURE_WRAP_T */
-
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
-
-/* HintMode */
-#define GL_DONT_CARE                      0x1100
-#define GL_FASTEST                        0x1101
-#define GL_NICEST                         0x1102
-
-/* HintTarget */
-#define GL_GENERATE_MIPMAP_HINT            0x8192
-
-/* DataType */
-#define GL_BYTE                           0x1400
-#define GL_UNSIGNED_BYTE                  0x1401
-#define GL_SHORT                          0x1402
-#define GL_UNSIGNED_SHORT                 0x1403
-#define GL_INT                            0x1404
-#define GL_UNSIGNED_INT                   0x1405
-#define GL_FLOAT                          0x1406
-#define GL_FIXED                          0x140C
-
-/* PixelFormat */
-#define GL_DEPTH_COMPONENT                0x1902
-#define GL_ALPHA                          0x1906
-#define GL_RGB                            0x1907
-#define GL_RGBA                           0x1908
-#define GL_LUMINANCE                      0x1909
-#define GL_LUMINANCE_ALPHA                0x190A
-
-/* PixelType */
-/*      GL_UNSIGNED_BYTE */
-#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
-#define GL_UNSIGNED_SHORT_5_6_5           0x8363
-
-/* Shaders */
-#define GL_FRAGMENT_SHADER                  0x8B30
-#define GL_VERTEX_SHADER                    0x8B31
-#define GL_MAX_VERTEX_ATTRIBS               0x8869
-#define GL_MAX_VERTEX_UNIFORM_VECTORS       0x8DFB
-#define GL_MAX_VARYING_VECTORS              0x8DFC
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS   0x8B4C
-#define GL_MAX_TEXTURE_IMAGE_UNITS          0x8872
-#define GL_MAX_FRAGMENT_UNIFORM_VECTORS     0x8DFD
-#define GL_SHADER_TYPE                      0x8B4F
-#define GL_DELETE_STATUS                    0x8B80
-#define GL_LINK_STATUS                      0x8B82
-#define GL_VALIDATE_STATUS                  0x8B83
-#define GL_ATTACHED_SHADERS                 0x8B85
-#define GL_ACTIVE_UNIFORMS                  0x8B86
-#define GL_ACTIVE_UNIFORM_MAX_LENGTH        0x8B87
-#define GL_ACTIVE_ATTRIBUTES                0x8B89
-#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH      0x8B8A
-#define GL_SHADING_LANGUAGE_VERSION         0x8B8C
-#define GL_CURRENT_PROGRAM                  0x8B8D
-
-/* StencilFunction */
-#define GL_NEVER                          0x0200
-#define GL_LESS                           0x0201
-#define GL_EQUAL                          0x0202
-#define GL_LEQUAL                         0x0203
-#define GL_GREATER                        0x0204
-#define GL_NOTEQUAL                       0x0205
-#define GL_GEQUAL                         0x0206
-#define GL_ALWAYS                         0x0207
-
-/* StencilOp */
-/*      GL_ZERO */
-#define GL_KEEP                           0x1E00
-#define GL_REPLACE                        0x1E01
-#define GL_INCR                           0x1E02
-#define GL_DECR                           0x1E03
-#define GL_INVERT                         0x150A
-#define GL_INCR_WRAP                      0x8507
-#define GL_DECR_WRAP                      0x8508
-
-/* StringName */
-#define GL_VENDOR                         0x1F00
-#define GL_RENDERER                       0x1F01
-#define GL_VERSION                        0x1F02
-#define GL_EXTENSIONS                     0x1F03
-
-/* TextureMagFilter */
-#define GL_NEAREST                        0x2600
-#define GL_LINEAR                         0x2601
-
-/* TextureMinFilter */
-/*      GL_NEAREST */
-/*      GL_LINEAR */
-#define GL_NEAREST_MIPMAP_NEAREST         0x2700
-#define GL_LINEAR_MIPMAP_NEAREST          0x2701
-#define GL_NEAREST_MIPMAP_LINEAR          0x2702
-#define GL_LINEAR_MIPMAP_LINEAR           0x2703
-
-/* TextureParameterName */
-#define GL_TEXTURE_MAG_FILTER             0x2800
-#define GL_TEXTURE_MIN_FILTER             0x2801
-#define GL_TEXTURE_WRAP_S                 0x2802
-#define GL_TEXTURE_WRAP_T                 0x2803
-
-/* TextureTarget */
-/*      GL_TEXTURE_2D */
-#define GL_TEXTURE                        0x1702
-
-#define GL_TEXTURE_CUBE_MAP               0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
-
-/* TextureUnit */
-#define GL_TEXTURE0                       0x84C0
-#define GL_TEXTURE1                       0x84C1
-#define GL_TEXTURE2                       0x84C2
-#define GL_TEXTURE3                       0x84C3
-#define GL_TEXTURE4                       0x84C4
-#define GL_TEXTURE5                       0x84C5
-#define GL_TEXTURE6                       0x84C6
-#define GL_TEXTURE7                       0x84C7
-#define GL_TEXTURE8                       0x84C8
-#define GL_TEXTURE9                       0x84C9
-#define GL_TEXTURE10                      0x84CA
-#define GL_TEXTURE11                      0x84CB
-#define GL_TEXTURE12                      0x84CC
-#define GL_TEXTURE13                      0x84CD
-#define GL_TEXTURE14                      0x84CE
-#define GL_TEXTURE15                      0x84CF
-#define GL_TEXTURE16                      0x84D0
-#define GL_TEXTURE17                      0x84D1
-#define GL_TEXTURE18                      0x84D2
-#define GL_TEXTURE19                      0x84D3
-#define GL_TEXTURE20                      0x84D4
-#define GL_TEXTURE21                      0x84D5
-#define GL_TEXTURE22                      0x84D6
-#define GL_TEXTURE23                      0x84D7
-#define GL_TEXTURE24                      0x84D8
-#define GL_TEXTURE25                      0x84D9
-#define GL_TEXTURE26                      0x84DA
-#define GL_TEXTURE27                      0x84DB
-#define GL_TEXTURE28                      0x84DC
-#define GL_TEXTURE29                      0x84DD
-#define GL_TEXTURE30                      0x84DE
-#define GL_TEXTURE31                      0x84DF
-#define GL_ACTIVE_TEXTURE                 0x84E0
-
-/* TextureWrapMode */
-#define GL_REPEAT                         0x2901
-#define GL_CLAMP_TO_EDGE                  0x812F
-#define GL_MIRRORED_REPEAT                0x8370
-
-/* Uniform Types */
-#define GL_FLOAT_VEC2                     0x8B50
-#define GL_FLOAT_VEC3                     0x8B51
-#define GL_FLOAT_VEC4                     0x8B52
-#define GL_INT_VEC2                       0x8B53
-#define GL_INT_VEC3                       0x8B54
-#define GL_INT_VEC4                       0x8B55
-#define GL_BOOL                           0x8B56
-#define GL_BOOL_VEC2                      0x8B57
-#define GL_BOOL_VEC3                      0x8B58
-#define GL_BOOL_VEC4                      0x8B59
-#define GL_FLOAT_MAT2                     0x8B5A
-#define GL_FLOAT_MAT3                     0x8B5B
-#define GL_FLOAT_MAT4                     0x8B5C
-#define GL_SAMPLER_2D                     0x8B5E
-#define GL_SAMPLER_CUBE                   0x8B60
-
-/* Vertex Arrays */
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED        0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE           0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE         0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE           0x8625
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED     0x886A
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER        0x8645
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
-
-/* Read Format */
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE   0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
-
-/* Shader Source */
-#define GL_COMPILE_STATUS                 0x8B81
-#define GL_INFO_LOG_LENGTH                0x8B84
-#define GL_SHADER_SOURCE_LENGTH           0x8B88
-#define GL_SHADER_COMPILER                0x8DFA
-
-/* Shader Binary */
-#define GL_SHADER_BINARY_FORMATS          0x8DF8
-#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
-
-/* Shader Precision-Specified Types */
-#define GL_LOW_FLOAT                      0x8DF0
-#define GL_MEDIUM_FLOAT                   0x8DF1
-#define GL_HIGH_FLOAT                     0x8DF2
-#define GL_LOW_INT                        0x8DF3
-#define GL_MEDIUM_INT                     0x8DF4
-#define GL_HIGH_INT                       0x8DF5
-
-/* Framebuffer Object. */
-#define GL_FRAMEBUFFER                    0x8D40
-#define GL_RENDERBUFFER                   0x8D41
-
-#define GL_RGBA4                          0x8056
-#define GL_RGB5_A1                        0x8057
-#define GL_RGB565                         0x8D62
-#define GL_DEPTH_COMPONENT16              0x81A5
-#define GL_STENCIL_INDEX8                 0x8D48
-
-#define GL_RENDERBUFFER_WIDTH             0x8D42
-#define GL_RENDERBUFFER_HEIGHT            0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44
-#define GL_RENDERBUFFER_RED_SIZE          0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55
-
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
-
-#define GL_COLOR_ATTACHMENT0              0x8CE0
-#define GL_DEPTH_ATTACHMENT               0x8D00
-#define GL_STENCIL_ATTACHMENT             0x8D20
-
-#define GL_NONE                           0
-
-#define GL_FRAMEBUFFER_COMPLETE                      0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT         0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS         0x8CD9
-#define GL_FRAMEBUFFER_UNSUPPORTED                   0x8CDD
-
-#define GL_FRAMEBUFFER_BINDING            0x8CA6
-#define GL_RENDERBUFFER_BINDING           0x8CA7
-#define GL_MAX_RENDERBUFFER_SIZE          0x84E8
-
-#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
-
-/*-------------------------------------------------------------------------
- * GL core functions.
- *-----------------------------------------------------------------------*/
-
-GL_APICALL void         GL_APIENTRY glActiveTexture (GLenum texture);
-GL_APICALL void         GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
-GL_APICALL void         GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
-GL_APICALL void         GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
-GL_APICALL void         GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
-GL_APICALL void         GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
-GL_APICALL void         GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-GL_APICALL void         GL_APIENTRY glBlendEquation ( GLenum mode );
-GL_APICALL void         GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
-GL_APICALL void         GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
-GL_APICALL void         GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GL_APICALL void         GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
-GL_APICALL void         GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
-GL_APICALL GLenum       GL_APIENTRY glCheckFramebufferStatus (GLenum target);
-GL_APICALL void         GL_APIENTRY glClear (GLbitfield mask);
-GL_APICALL void         GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-GL_APICALL void         GL_APIENTRY glClearDepthf (GLclampf depth);
-GL_APICALL void         GL_APIENTRY glClearStencil (GLint s);
-GL_APICALL void         GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-GL_APICALL void         GL_APIENTRY glCompileShader (GLuint shader);
-GL_APICALL void         GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void         GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void         GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GL_APICALL void         GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL GLuint       GL_APIENTRY glCreateProgram (void);
-GL_APICALL GLuint       GL_APIENTRY glCreateShader (GLenum type);
-GL_APICALL void         GL_APIENTRY glCullFace (GLenum mode);
-GL_APICALL void         GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers);
-GL_APICALL void         GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers);
-GL_APICALL void         GL_APIENTRY glDeleteProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers);
-GL_APICALL void         GL_APIENTRY glDeleteShader (GLuint shader);
-GL_APICALL void         GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures);
-GL_APICALL void         GL_APIENTRY glDepthFunc (GLenum func);
-GL_APICALL void         GL_APIENTRY glDepthMask (GLboolean flag);
-GL_APICALL void         GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
-GL_APICALL void         GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
-GL_APICALL void         GL_APIENTRY glDisable (GLenum cap);
-GL_APICALL void         GL_APIENTRY glDisableVertexAttribArray (GLuint index);
-GL_APICALL void         GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
-GL_APICALL void         GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
-GL_APICALL void         GL_APIENTRY glEnable (GLenum cap);
-GL_APICALL void         GL_APIENTRY glEnableVertexAttribArray (GLuint index);
-GL_APICALL void         GL_APIENTRY glFinish (void);
-GL_APICALL void         GL_APIENTRY glFlush (void);
-GL_APICALL void         GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GL_APICALL void         GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GL_APICALL void         GL_APIENTRY glFrontFace (GLenum mode);
-GL_APICALL void         GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers);
-GL_APICALL void         GL_APIENTRY glGenerateMipmap (GLenum target);
-GL_APICALL void         GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers);
-GL_APICALL void         GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers);
-GL_APICALL void         GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures);
-GL_APICALL void         GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
-GL_APICALL GLint        GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params);
-GL_APICALL void         GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL GLenum       GL_APIENTRY glGetError (void);
-GL_APICALL void         GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-GL_APICALL void         GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-GL_APICALL void         GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
-GL_APICALL void         GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
-GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name);
-GL_APICALL void         GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params);
-GL_APICALL GLint        GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer);
-GL_APICALL void         GL_APIENTRY glHint (GLenum target, GLenum mode);
-GL_APICALL GLboolean    GL_APIENTRY glIsBuffer (GLuint buffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsEnabled (GLenum cap);
-GL_APICALL GLboolean    GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsProgram (GLuint program);
-GL_APICALL GLboolean    GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsShader (GLuint shader);
-GL_APICALL GLboolean    GL_APIENTRY glIsTexture (GLuint texture);
-GL_APICALL void         GL_APIENTRY glLineWidth (GLfloat width);
-GL_APICALL void         GL_APIENTRY glLinkProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
-GL_APICALL void         GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
-GL_APICALL void         GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glReleaseShaderCompiler (void);
-GL_APICALL void         GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void         GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
-GL_APICALL void         GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL void         GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
-GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
-GL_APICALL void         GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilMask (GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
-GL_APICALL void         GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
-GL_APICALL void         GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
-GL_APICALL void         GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params);
-GL_APICALL void         GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
-GL_APICALL void         GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params);
-GL_APICALL void         GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glUniform1f (GLint location, GLfloat x);
-GL_APICALL void         GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform1i (GLint location, GLint x);
-GL_APICALL void         GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y);
-GL_APICALL void         GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y);
-GL_APICALL void         GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void         GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z);
-GL_APICALL void         GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void         GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
-GL_APICALL void         GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUseProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glValidateProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x);
-GL_APICALL void         GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
-GL_APICALL void         GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void         GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void         GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
-GL_APICALL void         GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl2_h_ */
-
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_gl2ext.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_gl2ext.h
deleted file mode 100644 (file)
index e8ca8b1..0000000
+++ /dev/null
@@ -1,2050 +0,0 @@
-#ifndef __gl2ext_h_
-#define __gl2ext_h_
-
-/* $Revision: 22801 $ on $Date:: 2013-08-21 03:20:48 -0700 #$ */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-#ifndef GL_APIENTRYP
-#   define GL_APIENTRYP GL_APIENTRY*
-#endif
-
-/* New types shared by several extensions */
-
-#ifndef __gl3_h_
-/* These are defined with respect to <inttypes.h> in the
- * Apple extension spec, but they are also used by non-APPLE
- * extensions, and in the Khronos header we use the Khronos
- * portable types in khrplatform.h, which must be defined.
- */
-typedef khronos_int64_t GLint64;
-typedef khronos_uint64_t GLuint64;
-typedef struct __GLsync *GLsync;
-#endif
-
-
-/*------------------------------------------------------------------------*
- * OES extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_ETC1_RGB8_OES                                        0x8D64
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_PALETTE4_RGB8_OES                                    0x8B90
-#define GL_PALETTE4_RGBA8_OES                                   0x8B91
-#define GL_PALETTE4_R5_G6_B5_OES                                0x8B92
-#define GL_PALETTE4_RGBA4_OES                                   0x8B93
-#define GL_PALETTE4_RGB5_A1_OES                                 0x8B94
-#define GL_PALETTE8_RGB8_OES                                    0x8B95
-#define GL_PALETTE8_RGBA8_OES                                   0x8B96
-#define GL_PALETTE8_R5_G6_B5_OES                                0x8B97
-#define GL_PALETTE8_RGBA4_OES                                   0x8B98
-#define GL_PALETTE8_RGB5_A1_OES                                 0x8B99
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_DEPTH_COMPONENT24_OES                                0x81A6
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_DEPTH_COMPONENT32_OES                                0x81A7
-#endif
-
-/* GL_OES_depth_texture */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-typedef void* GLeglImageOES;
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-/* GLeglImageOES defined in GL_OES_EGL_image already. */
-#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65
-#define GL_SAMPLER_EXTERNAL_OES                                 0x8D66
-#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67
-#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_UNSIGNED_INT                                         0x1405
-#endif
-
-/* GL_OES_get_program_binary */
-#ifndef GL_OES_get_program_binary
-#define GL_PROGRAM_BINARY_LENGTH_OES                            0x8741
-#define GL_NUM_PROGRAM_BINARY_FORMATS_OES                       0x87FE
-#define GL_PROGRAM_BINARY_FORMATS_OES                           0x87FF
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_WRITE_ONLY_OES                                       0x88B9
-#define GL_BUFFER_ACCESS_OES                                    0x88BB
-#define GL_BUFFER_MAPPED_OES                                    0x88BC
-#define GL_BUFFER_MAP_POINTER_OES                               0x88BD
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_DEPTH_STENCIL_OES                                    0x84F9
-#define GL_UNSIGNED_INT_24_8_OES                                0x84FA
-#define GL_DEPTH24_STENCIL8_OES                                 0x88F0
-#endif
-
-/* GL_OES_required_internalformat */
-#ifndef GL_OES_required_internalformat
-#define GL_ALPHA8_OES                                           0x803C
-#define GL_DEPTH_COMPONENT16_OES                                0x81A5
-/* reuse GL_DEPTH_COMPONENT24_OES */
-/* reuse GL_DEPTH24_STENCIL8_OES */
-/* reuse GL_DEPTH_COMPONENT32_OES */
-#define GL_LUMINANCE4_ALPHA4_OES                                0x8043
-#define GL_LUMINANCE8_ALPHA8_OES                                0x8045
-#define GL_LUMINANCE8_OES                                       0x8040
-#define GL_RGBA4_OES                                            0x8056
-#define GL_RGB5_A1_OES                                          0x8057
-#define GL_RGB565_OES                                           0x8D62
-/* reuse GL_RGB8_OES */
-/* reuse GL_RGBA8_OES */
-/* reuse GL_RGB10_EXT */
-/* reuse GL_RGB10_A2_EXT */
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_RGB8_OES                                             0x8051
-#define GL_RGBA8_OES                                            0x8058
-#endif
-
-/* GL_OES_standard_derivatives */
-#ifndef GL_OES_standard_derivatives
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES                  0x8B8B
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_STENCIL_INDEX1_OES                                   0x8D46
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_STENCIL_INDEX4_OES                                   0x8D47
-#endif
-
-#ifndef GL_OES_surfaceless_context
-#define GL_FRAMEBUFFER_UNDEFINED_OES                            0x8219
-#endif
-
-/* GL_OES_texture_3D */
-#ifndef GL_OES_texture_3D
-#define GL_TEXTURE_WRAP_R_OES                                   0x8072
-#define GL_TEXTURE_3D_OES                                       0x806F
-#define GL_TEXTURE_BINDING_3D_OES                               0x806A
-#define GL_MAX_3D_TEXTURE_SIZE_OES                              0x8073
-#define GL_SAMPLER_3D_OES                                       0x8B5F
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES        0x8CD4
-#endif
-
-/* GL_OES_texture_float */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_float_linear */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_half_float */
-#ifndef GL_OES_texture_half_float
-#define GL_HALF_FLOAT_OES                                       0x8D61
-#endif
-
-/* GL_OES_texture_half_float_linear */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_npot */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_VERTEX_ARRAY_BINDING_OES                             0x85B5
-#endif
-
-/* GL_OES_vertex_half_float */
-/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */
-
-/* GL_OES_vertex_type_10_10_10_2 */
-#ifndef GL_OES_vertex_type_10_10_10_2
-#define GL_UNSIGNED_INT_10_10_10_2_OES                          0x8DF6
-#define GL_INT_10_10_10_2_OES                                   0x8DF7
-#endif
-
-/*------------------------------------------------------------------------*
- * KHR extension tokens
- *------------------------------------------------------------------------*/
-
-#ifndef GL_KHR_debug
-typedef void (GL_APIENTRYP GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR                         0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR                 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION_KHR                          0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM_KHR                        0x8245
-#define GL_DEBUG_SOURCE_API_KHR                                 0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR                       0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR                     0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR                         0x8249
-#define GL_DEBUG_SOURCE_APPLICATION_KHR                         0x824A
-#define GL_DEBUG_SOURCE_OTHER_KHR                               0x824B
-#define GL_DEBUG_TYPE_ERROR_KHR                                 0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR                   0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR                    0x824E
-#define GL_DEBUG_TYPE_PORTABILITY_KHR                           0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE_KHR                           0x8250
-#define GL_DEBUG_TYPE_OTHER_KHR                                 0x8251
-#define GL_DEBUG_TYPE_MARKER_KHR                                0x8268
-#define GL_DEBUG_TYPE_PUSH_GROUP_KHR                            0x8269
-#define GL_DEBUG_TYPE_POP_GROUP_KHR                             0x826A
-#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR                      0x826B
-#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR                      0x826C
-#define GL_DEBUG_GROUP_STACK_DEPTH_KHR                          0x826D
-#define GL_BUFFER_KHR                                           0x82E0
-#define GL_SHADER_KHR                                           0x82E1
-#define GL_PROGRAM_KHR                                          0x82E2
-#define GL_QUERY_KHR                                            0x82E3
-/* PROGRAM_PIPELINE only in GL */
-#define GL_SAMPLER_KHR                                          0x82E6
-/* DISPLAY_LIST only in GL */
-#define GL_MAX_LABEL_LENGTH_KHR                                 0x82E8
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR                         0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR                        0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_KHR                            0x9145
-#define GL_DEBUG_SEVERITY_HIGH_KHR                              0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_KHR                            0x9147
-#define GL_DEBUG_SEVERITY_LOW_KHR                               0x9148
-#define GL_DEBUG_OUTPUT_KHR                                     0x92E0
-#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR                           0x00000002
-#define GL_STACK_OVERFLOW_KHR                                   0x0503
-#define GL_STACK_UNDERFLOW_KHR                                  0x0504
-#endif
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR                         0x93B0
-#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR                         0x93B1
-#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR                         0x93B2
-#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR                         0x93B3
-#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR                         0x93B4
-#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR                         0x93B5
-#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR                         0x93B6
-#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR                         0x93B7
-#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR                        0x93B8
-#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR                        0x93B9
-#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR                        0x93BA
-#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR                       0x93BB
-#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR                       0x93BC
-#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR                       0x93BD
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR                 0x93D0
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR                 0x93D1
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR                 0x93D2
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR                 0x93D3
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR                 0x93D4
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR                 0x93D5
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR                 0x93D6
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR                 0x93D7
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR                0x93D8
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR                0x93D9
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR                0x93DA
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR               0x93DB
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR               0x93DC
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR               0x93DD
-#endif
-
-/*------------------------------------------------------------------------*
- * AMD extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_3DC_X_AMD                                            0x87F9
-#define GL_3DC_XY_AMD                                           0x87FA
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_ATC_RGB_AMD                                          0x8C92
-#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD                          0x8C93
-#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD                      0x87EE
-#endif
-
-/* GL_AMD_performance_monitor */
-#ifndef GL_AMD_performance_monitor
-#define GL_COUNTER_TYPE_AMD                                     0x8BC0
-#define GL_COUNTER_RANGE_AMD                                    0x8BC1
-#define GL_UNSIGNED_INT64_AMD                                   0x8BC2
-#define GL_PERCENTAGE_AMD                                       0x8BC3
-#define GL_PERFMON_RESULT_AVAILABLE_AMD                         0x8BC4
-#define GL_PERFMON_RESULT_SIZE_AMD                              0x8BC5
-#define GL_PERFMON_RESULT_AMD                                   0x8BC6
-#endif
-
-/* GL_AMD_program_binary_Z400 */
-#ifndef GL_AMD_program_binary_Z400
-#define GL_Z400_BINARY_AMD                                      0x8740
-#endif
-
-/*------------------------------------------------------------------------*
- * ANGLE extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ANGLE_depth_texture */
-#ifndef GL_ANGLE_depth_texture
-#define GL_DEPTH_COMPONENT                                      0x1902
-#define GL_DEPTH_STENCIL_OES                                    0x84F9
-#define GL_UNSIGNED_SHORT                                       0x1403
-#define GL_UNSIGNED_INT                                         0x1405
-#define GL_UNSIGNED_INT_24_8_OES                                0x84FA
-#define GL_DEPTH_COMPONENT16                                    0x81A5
-#define GL_DEPTH_COMPONENT32_OES                                0x81A7
-#define GL_DEPTH24_STENCIL8_OES                                 0x88F0
-#endif
-
-/* GL_ANGLE_framebuffer_blit */
-#ifndef GL_ANGLE_framebuffer_blit
-#define GL_READ_FRAMEBUFFER_ANGLE                               0x8CA8
-#define GL_DRAW_FRAMEBUFFER_ANGLE                               0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE                       0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_ANGLE                       0x8CAA
-#endif
-
-/* GL_ANGLE_framebuffer_multisample */
-#ifndef GL_ANGLE_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_ANGLE                           0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE             0x8D56
-#define GL_MAX_SAMPLES_ANGLE                                    0x8D57
-#endif
-
-/* GL_ANGLE_instanced_arrays */
-#ifndef GL_ANGLE_instanced_arrays
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE                    0x88FE
-#endif
-
-/* GL_ANGLE_pack_reverse_row_order */
-#ifndef GL_ANGLE_pack_reverse_row_order
-#define GL_PACK_REVERSE_ROW_ORDER_ANGLE                         0x93A4
-#endif
-
-/* GL_ANGLE_program_binary */
-#ifndef GL_ANGLE_program_binary
-#define GL_PROGRAM_BINARY_ANGLE                                 0x93A6
-#endif
-
-/* GL_ANGLE_texture_compression_dxt3 */
-#ifndef GL_ANGLE_texture_compression_dxt3
-#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE                      0x83F2
-#endif
-
-/* GL_ANGLE_texture_compression_dxt5 */
-#ifndef GL_ANGLE_texture_compression_dxt5
-#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE                      0x83F3
-#endif
-
-/* GL_ANGLE_texture_usage */
-#ifndef GL_ANGLE_texture_usage
-#define GL_TEXTURE_USAGE_ANGLE                                  0x93A2
-#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE                         0x93A3
-#endif
-
-/* GL_ANGLE_translated_shader_source */
-#ifndef GL_ANGLE_translated_shader_source
-#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE                0x93A0
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_copy_texture_levels */
-/* No new tokens introduced by this extension. */
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_APPLE                           0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE             0x8D56
-#define GL_MAX_SAMPLES_APPLE                                    0x8D57
-#define GL_READ_FRAMEBUFFER_APPLE                               0x8CA8
-#define GL_DRAW_FRAMEBUFFER_APPLE                               0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE                       0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_APPLE                       0x8CAA
-#endif
-
-/* GL_APPLE_rgb_422 */
-#ifndef GL_APPLE_rgb_422
-#define GL_RGB_422_APPLE                                        0x8A1F
-#define GL_UNSIGNED_SHORT_8_8_APPLE                             0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_APPLE                         0x85BB
-#endif
-
-/* GL_APPLE_sync */
-#ifndef GL_APPLE_sync
-
-#define GL_SYNC_OBJECT_APPLE                                    0x8A53
-#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE                        0x9111
-#define GL_OBJECT_TYPE_APPLE                                    0x9112
-#define GL_SYNC_CONDITION_APPLE                                 0x9113
-#define GL_SYNC_STATUS_APPLE                                    0x9114
-#define GL_SYNC_FLAGS_APPLE                                     0x9115
-#define GL_SYNC_FENCE_APPLE                                     0x9116
-#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE                     0x9117
-#define GL_UNSIGNALED_APPLE                                     0x9118
-#define GL_SIGNALED_APPLE                                       0x9119
-#define GL_ALREADY_SIGNALED_APPLE                               0x911A
-#define GL_TIMEOUT_EXPIRED_APPLE                                0x911B
-#define GL_CONDITION_SATISFIED_APPLE                            0x911C
-#define GL_WAIT_FAILED_APPLE                                    0x911D
-#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE                        0x00000001
-#define GL_TIMEOUT_IGNORED_APPLE                                0xFFFFFFFFFFFFFFFFull
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_TEXTURE_MAX_LEVEL_APPLE                              0x813D
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_program_binary */
-#ifndef GL_ARM_mali_program_binary
-#define GL_MALI_PROGRAM_BINARY_ARM                              0x8F61
-#endif
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_MALI_SHADER_BINARY_ARM                               0x8F60
-#endif
-
-/* GL_ARM_rgba8 */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
- * EXT extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_MIN_EXT                                              0x8007
-#define GL_MAX_EXT                                              0x8008
-#endif
-
-/* GL_EXT_color_buffer_half_float */
-#ifndef GL_EXT_color_buffer_half_float
-#define GL_RGBA16F_EXT                                          0x881A
-#define GL_RGB16F_EXT                                           0x881B
-#define GL_RG16F_EXT                                            0x822F
-#define GL_R16F_EXT                                             0x822D
-#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT            0x8211
-#define GL_UNSIGNED_NORMALIZED_EXT                              0x8C17
-#endif
-
-/* GL_EXT_debug_label */
-#ifndef GL_EXT_debug_label
-#define GL_PROGRAM_PIPELINE_OBJECT_EXT                          0x8A4F
-#define GL_PROGRAM_OBJECT_EXT                                   0x8B40
-#define GL_SHADER_OBJECT_EXT                                    0x8B48
-#define GL_BUFFER_OBJECT_EXT                                    0x9151
-#define GL_QUERY_OBJECT_EXT                                     0x9153
-#define GL_VERTEX_ARRAY_OBJECT_EXT                              0x9154
-#endif
-
-/* GL_EXT_debug_marker */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_COLOR_EXT                                            0x1800
-#define GL_DEPTH_EXT                                            0x1801
-#define GL_STENCIL_EXT                                          0x1802
-#endif
-
-#ifndef GL_EXT_disjoint_timer_query
-#define GL_QUERY_COUNTER_BITS_EXT                               0x8864
-#define GL_CURRENT_QUERY_EXT                                    0x8865
-#define GL_QUERY_RESULT_EXT                                     0x8866
-#define GL_QUERY_RESULT_AVAILABLE_EXT                           0x8867
-#define GL_TIME_ELAPSED_EXT                                     0x88BF
-#define GL_TIMESTAMP_EXT                                        0x8E28
-#define GL_GPU_DISJOINT_EXT                                     0x8FBB
-#endif
-
-#ifndef GL_EXT_draw_buffers
-#define GL_EXT_draw_buffers 1
-#define GL_MAX_COLOR_ATTACHMENTS_EXT                            0x8CDF
-#define GL_MAX_DRAW_BUFFERS_EXT                                 0x8824
-#define GL_DRAW_BUFFER0_EXT                                     0x8825
-#define GL_DRAW_BUFFER1_EXT                                     0x8826
-#define GL_DRAW_BUFFER2_EXT                                     0x8827
-#define GL_DRAW_BUFFER3_EXT                                     0x8828
-#define GL_DRAW_BUFFER4_EXT                                     0x8829
-#define GL_DRAW_BUFFER5_EXT                                     0x882A
-#define GL_DRAW_BUFFER6_EXT                                     0x882B
-#define GL_DRAW_BUFFER7_EXT                                     0x882C
-#define GL_DRAW_BUFFER8_EXT                                     0x882D
-#define GL_DRAW_BUFFER9_EXT                                     0x882E
-#define GL_DRAW_BUFFER10_EXT                                    0x882F
-#define GL_DRAW_BUFFER11_EXT                                    0x8830
-#define GL_DRAW_BUFFER12_EXT                                    0x8831
-#define GL_DRAW_BUFFER13_EXT                                    0x8832
-#define GL_DRAW_BUFFER14_EXT                                    0x8833
-#define GL_DRAW_BUFFER15_EXT                                    0x8834
-#define GL_COLOR_ATTACHMENT0_EXT                                0x8CE0
-#define GL_COLOR_ATTACHMENT1_EXT                                0x8CE1
-#define GL_COLOR_ATTACHMENT2_EXT                                0x8CE2
-#define GL_COLOR_ATTACHMENT3_EXT                                0x8CE3
-#define GL_COLOR_ATTACHMENT4_EXT                                0x8CE4
-#define GL_COLOR_ATTACHMENT5_EXT                                0x8CE5
-#define GL_COLOR_ATTACHMENT6_EXT                                0x8CE6
-#define GL_COLOR_ATTACHMENT7_EXT                                0x8CE7
-#define GL_COLOR_ATTACHMENT8_EXT                                0x8CE8
-#define GL_COLOR_ATTACHMENT9_EXT                                0x8CE9
-#define GL_COLOR_ATTACHMENT10_EXT                               0x8CEA
-#define GL_COLOR_ATTACHMENT11_EXT                               0x8CEB
-#define GL_COLOR_ATTACHMENT12_EXT                               0x8CEC
-#define GL_COLOR_ATTACHMENT13_EXT                               0x8CED
-#define GL_COLOR_ATTACHMENT14_EXT                               0x8CEE
-#define GL_COLOR_ATTACHMENT15_EXT                               0x8CEF
-#endif
-
-/* GL_EXT_map_buffer_range */
-#ifndef GL_EXT_map_buffer_range
-#define GL_MAP_READ_BIT_EXT                                     0x0001
-#define GL_MAP_WRITE_BIT_EXT                                    0x0002
-#define GL_MAP_INVALIDATE_RANGE_BIT_EXT                         0x0004
-#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT                        0x0008
-#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT                           0x0010
-#define GL_MAP_UNSYNCHRONIZED_BIT_EXT                           0x0020
-#endif
-
-/* GL_EXT_multisampled_render_to_texture */
-#ifndef GL_EXT_multisampled_render_to_texture
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT           0x8D6C
-/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */
-#define GL_RENDERBUFFER_SAMPLES_EXT                             0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT               0x8D56
-#define GL_MAX_SAMPLES_EXT                                      0x8D57
-#endif
-
-/* GL_EXT_multiview_draw_buffers */
-#ifndef GL_EXT_multiview_draw_buffers
-#define GL_COLOR_ATTACHMENT_EXT                                 0x90F0
-#define GL_MULTIVIEW_EXT                                        0x90F1
-#define GL_DRAW_BUFFER_EXT                                      0x0C01
-#define GL_READ_BUFFER_EXT                                      0x0C02
-#define GL_MAX_MULTIVIEW_BUFFERS_EXT                            0x90F2
-#endif
-
-/* GL_EXT_multi_draw_arrays */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_occlusion_query_boolean */
-#ifndef GL_EXT_occlusion_query_boolean
-#define GL_ANY_SAMPLES_PASSED_EXT                               0x8C2F
-#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT                  0x8D6A
-#define GL_CURRENT_QUERY_EXT                                    0x8865
-#define GL_QUERY_RESULT_EXT                                     0x8866
-#define GL_QUERY_RESULT_AVAILABLE_EXT                           0x8867
-#endif
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_BGRA_EXT                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT                       0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT                       0x8366
-#endif
-
-/* GL_EXT_robustness */
-#ifndef GL_EXT_robustness
-/* reuse GL_NO_ERROR */
-#define GL_GUILTY_CONTEXT_RESET_EXT                             0x8253
-#define GL_INNOCENT_CONTEXT_RESET_EXT                           0x8254
-#define GL_UNKNOWN_CONTEXT_RESET_EXT                            0x8255
-#define GL_CONTEXT_ROBUST_ACCESS_EXT                            0x90F3
-#define GL_RESET_NOTIFICATION_STRATEGY_EXT                      0x8256
-#define GL_LOSE_CONTEXT_ON_RESET_EXT                            0x8252
-#define GL_NO_RESET_NOTIFICATION_EXT                            0x8261
-#endif
-
-/* GL_EXT_separate_shader_objects */
-#ifndef GL_EXT_separate_shader_objects
-#define GL_VERTEX_SHADER_BIT_EXT                                0x00000001
-#define GL_FRAGMENT_SHADER_BIT_EXT                              0x00000002
-#define GL_ALL_SHADER_BITS_EXT                                  0xFFFFFFFF
-#define GL_PROGRAM_SEPARABLE_EXT                                0x8258
-#define GL_ACTIVE_PROGRAM_EXT                                   0x8259
-#define GL_PROGRAM_PIPELINE_BINDING_EXT                         0x825A
-#endif
-
-/* GL_EXT_shader_framebuffer_fetch */
-#ifndef GL_EXT_shader_framebuffer_fetch
-#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT                 0x8A52
-#endif
-
-/* GL_EXT_shader_texture_lod */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_shadow_samplers */
-#ifndef GL_EXT_shadow_samplers
-#define GL_TEXTURE_COMPARE_MODE_EXT                             0x884C
-#define GL_TEXTURE_COMPARE_FUNC_EXT                             0x884D
-#define GL_COMPARE_REF_TO_TEXTURE_EXT                           0x884E
-#define GL_SAMPLER_2D_SHADOW_EXT                                0x8B62
-#endif
-
-/* GL_EXT_sRGB */
-#ifndef GL_EXT_sRGB
-#define GL_SRGB_EXT                                             0x8C40
-#define GL_SRGB_ALPHA_EXT                                       0x8C42
-#define GL_SRGB8_ALPHA8_EXT                                     0x8C43
-#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT            0x8210
-#endif
-
-/* GL_EXT_sRGB_write_control */
-#ifndef GL_EXT_sRGB_write_control
-#define GL_EXT_sRGB_write_control 1
-#define GL_FRAMEBUFFER_SRGB_EXT                                 0x8DB9
-#endif
-
-/* GL_EXT_texture_compression_dxt1 */
-#ifndef GL_EXT_texture_compression_dxt1
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT                         0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                        0x83F1
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_TEXTURE_MAX_ANISOTROPY_EXT                           0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                       0x84FF
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_EXT_texture_rg */
-#ifndef GL_EXT_texture_rg
-#define GL_RED_EXT                                              0x1903
-#define GL_RG_EXT                                               0x8227
-#define GL_R8_EXT                                               0x8229
-#define GL_RG8_EXT                                              0x822B
-#endif
-
-/* GL_EXT_texture_sRGB_decode */
-#ifndef GL_EXT_texture_sRGB_decode
-#define GL_EXT_texture_sRGB_decode 1
-#define GL_TEXTURE_SRGB_DECODE_EXT                              0x8A48
-#define GL_DECODE_EXT                                           0x8A49
-#define GL_SKIP_DECODE_EXT                                      0x8A4A
-#endif
-
-/* GL_EXT_texture_storage */
-#ifndef GL_EXT_texture_storage
-#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT                         0x912F
-#define GL_ALPHA8_EXT                                           0x803C
-#define GL_LUMINANCE8_EXT                                       0x8040
-#define GL_LUMINANCE8_ALPHA8_EXT                                0x8045
-#define GL_RGBA32F_EXT                                          0x8814
-#define GL_RGB32F_EXT                                           0x8815
-#define GL_ALPHA32F_EXT                                         0x8816
-#define GL_LUMINANCE32F_EXT                                     0x8818
-#define GL_LUMINANCE_ALPHA32F_EXT                               0x8819
-/* reuse GL_RGBA16F_EXT */
-/* reuse GL_RGB16F_EXT */
-#define GL_ALPHA16F_EXT                                         0x881C
-#define GL_LUMINANCE16F_EXT                                     0x881E
-#define GL_LUMINANCE_ALPHA16F_EXT                               0x881F
-#define GL_RGB10_A2_EXT                                         0x8059
-#define GL_RGB10_EXT                                            0x8052
-#define GL_BGRA8_EXT                                            0x93A1
-#define GL_R8_EXT                                               0x8229
-#define GL_RG8_EXT                                              0x822B
-#define GL_R32F_EXT                                             0x822E
-#define GL_RG32F_EXT                                            0x8230
-#define GL_R16F_EXT                                             0x822D
-#define GL_RG16F_EXT                                            0x822F
-#endif
-
-/* GL_EXT_texture_type_2_10_10_10_REV */
-#ifndef GL_EXT_texture_type_2_10_10_10_REV
-#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      0x8368
-#endif
-
-/* GL_EXT_unpack_subimage */
-#ifndef GL_EXT_unpack_subimage
-#define GL_UNPACK_ROW_LENGTH_EXT                                0x0CF2
-#define GL_UNPACK_SKIP_ROWS_EXT                                 0x0CF3
-#define GL_UNPACK_SKIP_PIXELS_EXT                               0x0CF4
-#endif
-
-/*------------------------------------------------------------------------*
- * DMP extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_DMP_shader_binary */
-#ifndef GL_DMP_shader_binary
-#define GL_SHADER_BINARY_DMP                                    0x9250
-#endif
-
-/*------------------------------------------------------------------------*
- * FJ extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_FJ_shader_binary_GCCSO */
-#ifndef GL_FJ_shader_binary_GCCSO
-#define GL_GCCSO_SHADER_BINARY_FJ                               0x9260
-#endif
-
-/*------------------------------------------------------------------------*
- * IMG extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_program_binary */
-#ifndef GL_IMG_program_binary
-#define GL_SGX_PROGRAM_BINARY_IMG                               0x9130
-#endif
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_BGRA_IMG                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG                       0x8365
-#endif
-
-/* GL_IMG_shader_binary */
-#ifndef GL_IMG_shader_binary
-#define GL_SGX_BINARY_IMG                                       0x8C0A
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG                      0x8C00
-#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG                      0x8C01
-#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                     0x8C02
-#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                     0x8C03
-#endif
-
-/* GL_IMG_texture_compression_pvrtc2 */
-#ifndef GL_IMG_texture_compression_pvrtc2
-#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG                     0x9137
-#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG                     0x9138
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_RENDERBUFFER_SAMPLES_IMG                             0x9133
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG               0x9134
-#define GL_MAX_SAMPLES_IMG                                      0x9135
-#define GL_TEXTURE_SAMPLES_IMG                                  0x9136
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_NV_coverage_sample */
-#ifndef GL_NV_coverage_sample
-#define GL_COVERAGE_COMPONENT_NV                                0x8ED0
-#define GL_COVERAGE_COMPONENT4_NV                               0x8ED1
-#define GL_COVERAGE_ATTACHMENT_NV                               0x8ED2
-#define GL_COVERAGE_BUFFERS_NV                                  0x8ED3
-#define GL_COVERAGE_SAMPLES_NV                                  0x8ED4
-#define GL_COVERAGE_ALL_FRAGMENTS_NV                            0x8ED5
-#define GL_COVERAGE_EDGE_FRAGMENTS_NV                           0x8ED6
-#define GL_COVERAGE_AUTOMATIC_NV                                0x8ED7
-#define GL_COVERAGE_BUFFER_BIT_NV                               0x00008000
-#endif
-
-/* GL_NV_depth_nonlinear */
-#ifndef GL_NV_depth_nonlinear
-#define GL_DEPTH_COMPONENT16_NONLINEAR_NV                       0x8E2C
-#endif
-
-/* GL_NV_draw_buffers */
-#ifndef GL_NV_draw_buffers
-#define GL_MAX_DRAW_BUFFERS_NV                                  0x8824
-#define GL_DRAW_BUFFER0_NV                                      0x8825
-#define GL_DRAW_BUFFER1_NV                                      0x8826
-#define GL_DRAW_BUFFER2_NV                                      0x8827
-#define GL_DRAW_BUFFER3_NV                                      0x8828
-#define GL_DRAW_BUFFER4_NV                                      0x8829
-#define GL_DRAW_BUFFER5_NV                                      0x882A
-#define GL_DRAW_BUFFER6_NV                                      0x882B
-#define GL_DRAW_BUFFER7_NV                                      0x882C
-#define GL_DRAW_BUFFER8_NV                                      0x882D
-#define GL_DRAW_BUFFER9_NV                                      0x882E
-#define GL_DRAW_BUFFER10_NV                                     0x882F
-#define GL_DRAW_BUFFER11_NV                                     0x8830
-#define GL_DRAW_BUFFER12_NV                                     0x8831
-#define GL_DRAW_BUFFER13_NV                                     0x8832
-#define GL_DRAW_BUFFER14_NV                                     0x8833
-#define GL_DRAW_BUFFER15_NV                                     0x8834
-#define GL_COLOR_ATTACHMENT0_NV                                 0x8CE0
-#define GL_COLOR_ATTACHMENT1_NV                                 0x8CE1
-#define GL_COLOR_ATTACHMENT2_NV                                 0x8CE2
-#define GL_COLOR_ATTACHMENT3_NV                                 0x8CE3
-#define GL_COLOR_ATTACHMENT4_NV                                 0x8CE4
-#define GL_COLOR_ATTACHMENT5_NV                                 0x8CE5
-#define GL_COLOR_ATTACHMENT6_NV                                 0x8CE6
-#define GL_COLOR_ATTACHMENT7_NV                                 0x8CE7
-#define GL_COLOR_ATTACHMENT8_NV                                 0x8CE8
-#define GL_COLOR_ATTACHMENT9_NV                                 0x8CE9
-#define GL_COLOR_ATTACHMENT10_NV                                0x8CEA
-#define GL_COLOR_ATTACHMENT11_NV                                0x8CEB
-#define GL_COLOR_ATTACHMENT12_NV                                0x8CEC
-#define GL_COLOR_ATTACHMENT13_NV                                0x8CED
-#define GL_COLOR_ATTACHMENT14_NV                                0x8CEE
-#define GL_COLOR_ATTACHMENT15_NV                                0x8CEF
-#endif
-
-/* GL_NV_draw_instanced */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_fbo_color_attachments */
-#ifndef GL_NV_fbo_color_attachments
-#define GL_MAX_COLOR_ATTACHMENTS_NV                             0x8CDF
-/* GL_COLOR_ATTACHMENT{0-15}_NV defined in GL_NV_draw_buffers already. */
-#endif
-
-/* GL_NV_fence */
-#ifndef GL_NV_fence
-#define GL_ALL_COMPLETED_NV                                     0x84F2
-#define GL_FENCE_STATUS_NV                                      0x84F3
-#define GL_FENCE_CONDITION_NV                                   0x84F4
-#endif
-
-/* GL_NV_framebuffer_blit */
-#ifndef GL_NV_framebuffer_blit
-#define GL_READ_FRAMEBUFFER_NV                                  0x8CA8
-#define GL_DRAW_FRAMEBUFFER_NV                                  0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_NV                          0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_NV                          0x8CAA
-#endif
-
-/* GL_NV_framebuffer_multisample */
-#ifndef GL_NV_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_NV                              0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV                0x8D56
-#define GL_MAX_SAMPLES_NV                                       0x8D57
-#endif
-
-/* GL_NV_generate_mipmap_sRGB */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_instanced_arrays */
-#ifndef GL_NV_instanced_arrays
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV                       0x88FE
-#endif
-
-/* GL_NV_read_buffer */
-#ifndef GL_NV_read_buffer
-#define GL_READ_BUFFER_NV                                       0x0C02
-#endif
-
-/* GL_NV_read_buffer_front */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_read_depth */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_read_depth_stencil */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_read_stencil */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_shadow_samplers_array */
-#ifndef GL_NV_shadow_samplers_array
-#define GL_SAMPLER_2D_ARRAY_SHADOW_NV                           0x8DC4
-#endif
-
-/* GL_NV_shadow_samplers_cube */
-#ifndef GL_NV_shadow_samplers_cube
-#define GL_SAMPLER_CUBE_SHADOW_NV                               0x8DC5
-#endif
-
-/* GL_NV_sRGB_formats */
-#ifndef GL_NV_sRGB_formats
-#define GL_SLUMINANCE_NV                                        0x8C46
-#define GL_SLUMINANCE_ALPHA_NV                                  0x8C44
-#define GL_SRGB8_NV                                             0x8C41
-#define GL_SLUMINANCE8_NV                                       0x8C47
-#define GL_SLUMINANCE8_ALPHA8_NV                                0x8C45
-#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV                         0x8C4C
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV                   0x8C4D
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV                   0x8C4E
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV                   0x8C4F
-#define GL_ETC1_SRGB8_NV                                        0x88EE
-#endif
-
-/* GL_NV_texture_border_clamp */
-#ifndef GL_NV_texture_border_clamp
-#define GL_TEXTURE_BORDER_COLOR_NV                              0x1004
-#define GL_CLAMP_TO_BORDER_NV                                   0x812D
-#endif
-
-/* GL_NV_texture_compression_s3tc_update */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_texture_npot_2D_mipmap */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
- * QCOM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_alpha_test */
-#ifndef GL_QCOM_alpha_test
-#define GL_ALPHA_TEST_QCOM                                      0x0BC0
-#define GL_ALPHA_TEST_FUNC_QCOM                                 0x0BC1
-#define GL_ALPHA_TEST_REF_QCOM                                  0x0BC2
-#endif
-
-/* GL_QCOM_binning_control */
-#ifndef GL_QCOM_binning_control
-#define GL_BINNING_CONTROL_HINT_QCOM                            0x8FB0
-#define GL_CPU_OPTIMIZED_QCOM                                   0x8FB1
-#define GL_GPU_OPTIMIZED_QCOM                                   0x8FB2
-#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM                    0x8FB3
-#endif
-
-/* GL_QCOM_driver_control */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_TEXTURE_WIDTH_QCOM                                   0x8BD2
-#define GL_TEXTURE_HEIGHT_QCOM                                  0x8BD3
-#define GL_TEXTURE_DEPTH_QCOM                                   0x8BD4
-#define GL_TEXTURE_INTERNAL_FORMAT_QCOM                         0x8BD5
-#define GL_TEXTURE_FORMAT_QCOM                                  0x8BD6
-#define GL_TEXTURE_TYPE_QCOM                                    0x8BD7
-#define GL_TEXTURE_IMAGE_VALID_QCOM                             0x8BD8
-#define GL_TEXTURE_NUM_LEVELS_QCOM                              0x8BD9
-#define GL_TEXTURE_TARGET_QCOM                                  0x8BDA
-#define GL_TEXTURE_OBJECT_VALID_QCOM                            0x8BDB
-#define GL_STATE_RESTORE                                        0x8BDC
-#endif
-
-/* GL_QCOM_extended_get2 */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_PERFMON_GLOBAL_MODE_QCOM                             0x8FA0
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_WRITEONLY_RENDERING_QCOM                             0x8823
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_COLOR_BUFFER_BIT0_QCOM                               0x00000001
-#define GL_COLOR_BUFFER_BIT1_QCOM                               0x00000002
-#define GL_COLOR_BUFFER_BIT2_QCOM                               0x00000004
-#define GL_COLOR_BUFFER_BIT3_QCOM                               0x00000008
-#define GL_COLOR_BUFFER_BIT4_QCOM                               0x00000010
-#define GL_COLOR_BUFFER_BIT5_QCOM                               0x00000020
-#define GL_COLOR_BUFFER_BIT6_QCOM                               0x00000040
-#define GL_COLOR_BUFFER_BIT7_QCOM                               0x00000080
-#define GL_DEPTH_BUFFER_BIT0_QCOM                               0x00000100
-#define GL_DEPTH_BUFFER_BIT1_QCOM                               0x00000200
-#define GL_DEPTH_BUFFER_BIT2_QCOM                               0x00000400
-#define GL_DEPTH_BUFFER_BIT3_QCOM                               0x00000800
-#define GL_DEPTH_BUFFER_BIT4_QCOM                               0x00001000
-#define GL_DEPTH_BUFFER_BIT5_QCOM                               0x00002000
-#define GL_DEPTH_BUFFER_BIT6_QCOM                               0x00004000
-#define GL_DEPTH_BUFFER_BIT7_QCOM                               0x00008000
-#define GL_STENCIL_BUFFER_BIT0_QCOM                             0x00010000
-#define GL_STENCIL_BUFFER_BIT1_QCOM                             0x00020000
-#define GL_STENCIL_BUFFER_BIT2_QCOM                             0x00040000
-#define GL_STENCIL_BUFFER_BIT3_QCOM                             0x00080000
-#define GL_STENCIL_BUFFER_BIT4_QCOM                             0x00100000
-#define GL_STENCIL_BUFFER_BIT5_QCOM                             0x00200000
-#define GL_STENCIL_BUFFER_BIT6_QCOM                             0x00400000
-#define GL_STENCIL_BUFFER_BIT7_QCOM                             0x00800000
-#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM                         0x01000000
-#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM                         0x02000000
-#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM                         0x04000000
-#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM                         0x08000000
-#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM                         0x10000000
-#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM                         0x20000000
-#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM                         0x40000000
-#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM                         0x80000000
-#endif
-
-/*------------------------------------------------------------------------*
- * VIV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_VIV_shader_binary */
-#ifndef GL_VIV_shader_binary
-#define GL_SHADER_BINARY_VIV                                    0x8FC4
-#endif
-
-/*------------------------------------------------------------------------*
- * End of extension tokens, start of corresponding extension functions
- *------------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------------*
- * OES extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_OES_compressed_ETC1_RGB8_texture 1
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_OES_compressed_paletted_texture 1
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_OES_depth24 1
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_OES_depth32 1
-#endif
-
-/* GL_OES_depth_texture */
-#ifndef GL_OES_depth_texture
-#define GL_OES_depth_texture 1
-#endif
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-#define GL_OES_EGL_image 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
-GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
-#endif
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-#define GL_OES_EGL_image_external 1
-/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_OES_element_index_uint 1
-#endif
-
-/* GL_OES_fbo_render_mipmap */
-#ifndef GL_OES_fbo_render_mipmap
-#define GL_OES_fbo_render_mipmap 1
-#endif
-
-/* GL_OES_fragment_precision_high */
-#ifndef GL_OES_fragment_precision_high
-#define GL_OES_fragment_precision_high 1
-#endif
-
-/* GL_OES_get_program_binary */
-#ifndef GL_OES_get_program_binary
-#define GL_OES_get_program_binary 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
-GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
-typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_OES_mapbuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access);
-GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target);
-GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid **params);
-#endif
-typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
-typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target);
-typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid **params);
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_OES_packed_depth_stencil 1
-#endif
-
-/* GL_OES_required_internalformat */
-#ifndef GL_OES_required_internalformat
-#define GL_OES_required_internalformat 1
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_OES_rgb8_rgba8 1
-#endif
-
-/* GL_OES_standard_derivatives */
-#ifndef GL_OES_standard_derivatives
-#define GL_OES_standard_derivatives 1
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_OES_stencil1 1
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_OES_stencil4 1
-#endif
-
-#ifndef GL_OES_surfaceless_context
-#define GL_OES_surfaceless_context 1
-#endif
-
-/* GL_OES_texture_3D */
-#ifndef GL_OES_texture_3D
-#define GL_OES_texture_3D 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-#endif
-typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
-typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
-typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-#endif
-
-/* GL_OES_texture_float */
-#ifndef GL_OES_texture_float
-#define GL_OES_texture_float 1
-#endif
-
-/* GL_OES_texture_float_linear */
-#ifndef GL_OES_texture_float_linear
-#define GL_OES_texture_float_linear 1
-#endif
-
-/* GL_OES_texture_half_float */
-#ifndef GL_OES_texture_half_float
-#define GL_OES_texture_half_float 1
-#endif
-
-/* GL_OES_texture_half_float_linear */
-#ifndef GL_OES_texture_half_float_linear
-#define GL_OES_texture_half_float_linear 1
-#endif
-
-/* GL_OES_texture_npot */
-#ifndef GL_OES_texture_npot
-#define GL_OES_texture_npot 1
-#endif
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_OES_vertex_array_object 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array);
-GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays);
-GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays);
-GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);
-#endif
-typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
-typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays);
-typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);
-#endif
-
-/* GL_OES_vertex_half_float */
-#ifndef GL_OES_vertex_half_float
-#define GL_OES_vertex_half_float 1
-#endif
-
-/* GL_OES_vertex_type_10_10_10_2 */
-#ifndef GL_OES_vertex_type_10_10_10_2
-#define GL_OES_vertex_type_10_10_10_2 1
-#endif
-
-/*------------------------------------------------------------------------*
- * KHR extension functions
- *------------------------------------------------------------------------*/
-
-#ifndef GL_KHR_debug
-#define GL_KHR_debug 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam);
-GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void);
-GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label);
-GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, GLvoid **params);
-#endif
-typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam);
-typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void);
-typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, GLvoid **params);
-#endif
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_KHR_texture_compression_astc_ldr 1
-#endif
-
-
-/*------------------------------------------------------------------------*
- * AMD extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_AMD_compressed_3DC_texture 1
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_AMD_compressed_ATC_texture 1
-#endif
-
-/* AMD_performance_monitor */
-#ifndef GL_AMD_performance_monitor
-#define GL_AMD_performance_monitor 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
-GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
-GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
-GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
-typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
-typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-
-/* GL_AMD_program_binary_Z400 */
-#ifndef GL_AMD_program_binary_Z400
-#define GL_AMD_program_binary_Z400 1
-#endif
-
-/*------------------------------------------------------------------------*
- * ANGLE extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ANGLE_depth_texture */
-#ifndef GL_ANGLE_depth_texture
-#define GL_ANGLE_depth_texture 1
-#endif
-
-/* GL_ANGLE_framebuffer_blit */
-#ifndef GL_ANGLE_framebuffer_blit
-#define GL_ANGLE_framebuffer_blit 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-
-/* GL_ANGLE_framebuffer_multisample */
-#ifndef GL_ANGLE_framebuffer_multisample
-#define GL_ANGLE_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-
-#ifndef GL_ANGLE_instanced_arrays
-#define GL_ANGLE_instanced_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor);
-#endif
-
-/* GL_ANGLE_pack_reverse_row_order */
-#ifndef GL_ANGLE_pack_reverse_row_order
-#define GL_ANGLE_pack_reverse_row_order 1
-#endif
-
-/* GL_ANGLE_program_binary */
-#ifndef GL_ANGLE_program_binary
-#define GL_ANGLE_program_binary 1
-#endif
-
-/* GL_ANGLE_texture_compression_dxt3 */
-#ifndef GL_ANGLE_texture_compression_dxt3
-#define GL_ANGLE_texture_compression_dxt3 1
-#endif
-
-/* GL_ANGLE_texture_compression_dxt5 */
-#ifndef GL_ANGLE_texture_compression_dxt5
-#define GL_ANGLE_texture_compression_dxt5 1
-#endif
-
-/* GL_ANGLE_texture_usage */
-#ifndef GL_ANGLE_texture_usage
-#define GL_ANGLE_texture_usage 1
-#endif
-
-#ifndef GL_ANGLE_translated_shader_source
-#define GL_ANGLE_translated_shader_source 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source);
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_copy_texture_levels */
-#ifndef GL_APPLE_copy_texture_levels
-#define GL_APPLE_copy_texture_levels 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
-#endif
-typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
-#endif
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_APPLE_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
-#endif
-
-/* GL_APPLE_rgb_422 */
-#ifndef GL_APPLE_rgb_422
-#define GL_APPLE_rgb_422 1
-#endif
-
-/* GL_APPLE_sync */
-#ifndef GL_APPLE_sync
-#define GL_APPLE_sync 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags);
-GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync);
-GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync);
-GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params);
-GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-#endif
-typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags);
-typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync);
-typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync);
-typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params);
-typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_APPLE_texture_format_BGRA8888 1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_APPLE_texture_max_level 1
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_program_binary */
-#ifndef GL_ARM_mali_program_binary
-#define GL_ARM_mali_program_binary 1
-#endif
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_ARM_mali_shader_binary 1
-#endif
-
-/* GL_ARM_rgba8 */
-#ifndef GL_ARM_rgba8
-#define GL_ARM_rgba8 1
-#endif
-
-/*------------------------------------------------------------------------*
- * EXT extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_EXT_blend_minmax 1
-#endif
-
-/* GL_EXT_color_buffer_half_float */
-#ifndef GL_EXT_color_buffer_half_float
-#define GL_EXT_color_buffer_half_float 1
-#endif
-
-/* GL_EXT_debug_label */
-#ifndef GL_EXT_debug_label
-#define GL_EXT_debug_label 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-
-/* GL_EXT_debug_marker */
-#ifndef GL_EXT_debug_marker
-#define GL_EXT_debug_marker 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
-GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
-GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void);
-#endif
-typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
-#endif
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_EXT_discard_framebuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-
-#ifndef GL_EXT_disjoint_timer_query
-#define GL_EXT_disjoint_timer_query 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids);
-GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids);
-GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id);
-GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id);
-GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target);
-GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target);
-GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
-#endif
-typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids);
-typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id);
-typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id);
-typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target);
-typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target);
-typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
-#endif /* GL_EXT_disjoint_timer_query */
-
-#ifndef GL_EXT_draw_buffers
-#define GL_EXT_draw_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs);
-#endif /* GL_EXT_draw_buffers */
-
-/* GL_EXT_map_buffer_range */
-#ifndef GL_EXT_map_buffer_range
-#define GL_EXT_map_buffer_range 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void* GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length);
-#endif
-typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
-#endif
-
-/* GL_EXT_multisampled_render_to_texture */
-#ifndef GL_EXT_multisampled_render_to_texture
-#define GL_EXT_multisampled_render_to_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);             
-GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-
-/* GL_EXT_multiview_draw_buffers */
-#ifndef GL_EXT_multiview_draw_buffers
-#define GL_EXT_multiview_draw_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index);
-GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices);
-GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data);
-#endif
-typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index);
-typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices);
-typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data);
-#endif
-
-#ifndef GL_EXT_multi_draw_arrays
-#define GL_EXT_multi_draw_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
-#endif
-
-/* GL_EXT_occlusion_query_boolean */
-#ifndef GL_EXT_occlusion_query_boolean
-#define GL_EXT_occlusion_query_boolean 1
-/* All entry points also exist in GL_EXT_disjoint_timer_query */
-#endif
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_EXT_read_format_bgra 1
-#endif
-
-/* GL_EXT_robustness */
-#ifndef GL_EXT_robustness
-#define GL_EXT_robustness 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void);
-GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
-GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-#endif
-typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void);
-typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
-typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-#endif
-
-/* GL_EXT_separate_shader_objects */
-#ifndef GL_EXT_separate_shader_objects
-#define GL_EXT_separate_shader_objects 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program);
-GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program);
-GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings);
-GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline);
-GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines);
-GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines);
-GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline);
-GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
-GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint x);
-GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint x, GLint y);
-GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z);
-GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
-GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat x);
-GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat x, GLfloat y);
-GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline);
-GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-#endif
-typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
-typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program);
-typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings);
-typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
-typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines);
-typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines);
-typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
-typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint x);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint x, GLint y);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat x);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-#endif
-
-/* GL_EXT_shader_framebuffer_fetch */
-#ifndef GL_EXT_shader_framebuffer_fetch
-#define GL_EXT_shader_framebuffer_fetch 1
-#endif
-
-/* GL_EXT_shader_texture_lod */
-#ifndef GL_EXT_shader_texture_lod
-#define GL_EXT_shader_texture_lod 1
-#endif
-
-/* GL_EXT_shadow_samplers */
-#ifndef GL_EXT_shadow_samplers
-#define GL_EXT_shadow_samplers 1
-#endif
-
-/* GL_EXT_sRGB */
-#ifndef GL_EXT_sRGB
-#define GL_EXT_sRGB 1
-#endif
-
-/* GL_EXT_texture_compression_dxt1 */
-#ifndef GL_EXT_texture_compression_dxt1
-#define GL_EXT_texture_compression_dxt1 1
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_EXT_texture_filter_anisotropic 1
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_EXT_texture_format_BGRA8888 1
-#endif
-
-/* GL_EXT_texture_rg */
-#ifndef GL_EXT_texture_rg
-#define GL_EXT_texture_rg 1
-#endif
-
-/* GL_EXT_texture_storage */
-#ifndef GL_EXT_texture_storage
-#define GL_EXT_texture_storage 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-
-/* GL_EXT_texture_type_2_10_10_10_REV */
-#ifndef GL_EXT_texture_type_2_10_10_10_REV
-#define GL_EXT_texture_type_2_10_10_10_REV 1
-#endif
-
-/* GL_EXT_unpack_subimage */
-#ifndef GL_EXT_unpack_subimage
-#define GL_EXT_unpack_subimage 1
-#endif
-
-/*------------------------------------------------------------------------*
- * DMP extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_DMP_shader_binary */
-#ifndef GL_DMP_shader_binary
-#define GL_DMP_shader_binary 1
-#endif
-
-/*------------------------------------------------------------------------*
- * FJ extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_FJ_shader_binary_GCCSO */
-#ifndef GL_FJ_shader_binary_GCCSO
-#define GL_FJ_shader_binary_GCCSO 1
-#endif
-
-/*------------------------------------------------------------------------*
- * IMG extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_program_binary */
-#ifndef GL_IMG_program_binary
-#define GL_IMG_program_binary 1
-#endif
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_IMG_read_format 1
-#endif
-
-/* GL_IMG_shader_binary */
-#ifndef GL_IMG_shader_binary
-#define GL_IMG_shader_binary 1
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_IMG_texture_compression_pvrtc 1
-#endif
-
-/* GL_IMG_texture_compression_pvrtc2 */
-#ifndef GL_IMG_texture_compression_pvrtc2
-#define GL_IMG_texture_compression_pvrtc2 1
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_IMG_multisampled_render_to_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_NV_coverage_sample */
-#ifndef GL_NV_coverage_sample
-#define GL_NV_coverage_sample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask);
-GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation);
-#endif
-typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask);
-typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation);
-#endif
-
-/* GL_NV_depth_nonlinear */
-#ifndef GL_NV_depth_nonlinear
-#define GL_NV_depth_nonlinear 1
-#endif
-
-/* GL_NV_draw_buffers */
-#ifndef GL_NV_draw_buffers
-#define GL_NV_draw_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs);
-#endif
-
-/* GL_NV_draw_instanced */
-#ifndef GL_NV_draw_instanced
-#define GL_NV_draw_instanced 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
-#endif
-
-/* GL_NV_fbo_color_attachments */
-#ifndef GL_NV_fbo_color_attachments
-#define GL_NV_fbo_color_attachments 1
-#endif
-
-/* GL_NV_fence */
-#ifndef GL_NV_fence
-#define GL_NV_fence 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
-GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
-GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence);
-GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence);
-GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence);
-GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
-#endif
-typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
-typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
-typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
-typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
-#endif
-
-/* GL_NV_framebuffer_blit */
-#ifndef GL_NV_framebuffer_blit
-#define GL_NV_framebuffer_blit 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-
-/* GL_NV_framebuffer_multisample */
-#ifndef GL_NV_framebuffer_multisample
-#define GL_NV_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-
-/* GL_NV_generate_mipmap_sRGB */
-#ifndef GL_NV_generate_mipmap_sRGB
-#define GL_NV_generate_mipmap_sRGB 1
-#endif
-
-/* GL_NV_instanced_arrays */
-#ifndef GL_NV_instanced_arrays
-#define GL_NV_instanced_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor);
-#endif
-typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor);
-#endif
-
-/* GL_NV_read_buffer */
-#ifndef GL_NV_read_buffer
-#define GL_NV_read_buffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode);
-#endif
-typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode);
-#endif
-
-/* GL_NV_read_buffer_front */
-#ifndef GL_NV_read_buffer_front
-#define GL_NV_read_buffer_front 1
-#endif
-
-/* GL_NV_read_depth */
-#ifndef GL_NV_read_depth
-#define GL_NV_read_depth 1
-#endif
-
-/* GL_NV_read_depth_stencil */
-#ifndef GL_NV_read_depth_stencil
-#define GL_NV_read_depth_stencil 1
-#endif
-
-/* GL_NV_read_stencil */
-#ifndef GL_NV_read_stencil
-#define GL_NV_read_stencil 1
-#endif
-
-/* GL_NV_shadow_samplers_array */
-#ifndef GL_NV_shadow_samplers_array
-#define GL_NV_shadow_samplers_array 1
-#endif
-
-/* GL_NV_shadow_samplers_cube */
-#ifndef GL_NV_shadow_samplers_cube
-#define GL_NV_shadow_samplers_cube 1
-#endif
-
-/* GL_NV_sRGB_formats */
-#ifndef GL_NV_sRGB_formats
-#define GL_NV_sRGB_formats 1
-#endif
-
-/* GL_NV_texture_border_clamp */
-#ifndef GL_NV_texture_border_clamp
-#define GL_NV_texture_border_clamp 1
-#endif
-
-/* GL_NV_texture_compression_s3tc_update */
-#ifndef GL_NV_texture_compression_s3tc_update
-#define GL_NV_texture_compression_s3tc_update 1
-#endif
-
-/* GL_NV_texture_npot_2D_mipmap */
-#ifndef GL_NV_texture_npot_2D_mipmap
-#define GL_NV_texture_npot_2D_mipmap 1
-#endif
-
-/*------------------------------------------------------------------------*
- * QCOM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_alpha_test */
-#ifndef GL_QCOM_alpha_test
-#define GL_QCOM_alpha_test 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref);
-#endif
-typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref);
-#endif
-
-/* GL_QCOM_binning_control */
-#ifndef GL_QCOM_binning_control
-#define GL_QCOM_binning_control 1
-#endif
-
-/* GL_QCOM_driver_control */
-#ifndef GL_QCOM_driver_control
-#define GL_QCOM_driver_control 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls);
-GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl);
-GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls);
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-#endif
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_QCOM_extended_get 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures);
-GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param);
-GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params);
-#endif
-
-/* GL_QCOM_extended_get2 */
-#ifndef GL_QCOM_extended_get2
-#define GL_QCOM_extended_get2 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program);
-GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_QCOM_perfmon_global_mode 1
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_QCOM_writeonly_rendering 1
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_QCOM_tiled_rendering 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask);
-#endif
-typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
-#endif
-
-/*------------------------------------------------------------------------*
- * VIV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_VIV_shader_binary */
-#ifndef GL_VIV_shader_binary
-#define GL_VIV_shader_binary 1
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl2ext_h_ */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_gl2platform.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_gl2platform.h
deleted file mode 100644 (file)
index c325686..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __gl2platform_h_
-#define __gl2platform_h_
-
-/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-/* Platform-specific types and definitions for OpenGL ES 2.X  gl2.h
- *
- * Adopters may modify khrplatform.h and this file to suit their platform.
- * You are encouraged to submit all modifications to the Khronos group so that
- * they can be included in future versions of this file.  Please submit changes
- * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
- * by filing a bug against product "OpenGL-ES" component "Registry".
- */
-
-/*#include <KHR/khrplatform.h>*/
-
-#ifndef GL_APICALL
-#define GL_APICALL  KHRONOS_APICALL
-#endif
-
-#ifndef GL_APIENTRY
-#define GL_APIENTRY KHRONOS_APIENTRY
-#endif
-
-#endif /* __gl2platform_h_ */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_khrplatform.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_opengles2_khrplatform.h
deleted file mode 100644 (file)
index c9e6f17..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-#ifndef __khrplatform_h_
-#define __khrplatform_h_
-
-/*
-** Copyright (c) 2008-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Khronos platform-specific types and definitions.
- *
- * $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
- *
- * Adopters may modify this file to suit their platform. Adopters are
- * encouraged to submit platform specific modifications to the Khronos
- * group so that they can be included in future versions of this file.
- * Please submit changes by sending them to the public Khronos Bugzilla
- * (http://khronos.org/bugzilla) by filing a bug against product
- * "Khronos (general)" component "Registry".
- *
- * A predefined template which fills in some of the bug fields can be
- * reached using http://tinyurl.com/khrplatform-h-bugreport, but you
- * must create a Bugzilla login first.
- *
- *
- * See the Implementer's Guidelines for information about where this file
- * should be located on your system and for more details of its use:
- *    http://www.khronos.org/registry/implementers_guide.pdf
- *
- * This file should be included as
- *        #include <KHR/khrplatform.h>
- * by Khronos client API header files that use its types and defines.
- *
- * The types in khrplatform.h should only be used to define API-specific types.
- *
- * Types defined in khrplatform.h:
- *    khronos_int8_t              signed   8  bit
- *    khronos_uint8_t             unsigned 8  bit
- *    khronos_int16_t             signed   16 bit
- *    khronos_uint16_t            unsigned 16 bit
- *    khronos_int32_t             signed   32 bit
- *    khronos_uint32_t            unsigned 32 bit
- *    khronos_int64_t             signed   64 bit
- *    khronos_uint64_t            unsigned 64 bit
- *    khronos_intptr_t            signed   same number of bits as a pointer
- *    khronos_uintptr_t           unsigned same number of bits as a pointer
- *    khronos_ssize_t             signed   size
- *    khronos_usize_t             unsigned size
- *    khronos_float_t             signed   32 bit floating point
- *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
- *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
- *                                         nanoseconds
- *    khronos_stime_nanoseconds_t signed time interval in nanoseconds
- *    khronos_boolean_enum_t      enumerated boolean type. This should
- *      only be used as a base type when a client API's boolean type is
- *      an enum. Client APIs which use an integer or other type for
- *      booleans cannot use this as the base type for their boolean.
- *
- * Tokens defined in khrplatform.h:
- *
- *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
- *
- *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
- *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
- *
- * Calling convention macros defined in this file:
- *    KHRONOS_APICALL
- *    KHRONOS_APIENTRY
- *    KHRONOS_APIATTRIBUTES
- *
- * These may be used in function prototypes as:
- *
- *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
- *                                  int arg1,
- *                                  int arg2) KHRONOS_APIATTRIBUTES;
- */
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APICALL
- *-------------------------------------------------------------------------
- * This precedes the return type of the function in the function prototype.
- */
-#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
-#   define KHRONOS_APICALL __declspec(dllimport)
-#elif defined (__SYMBIAN32__)
-#   define KHRONOS_APICALL IMPORT_C
-#else
-#   define KHRONOS_APICALL
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIENTRY
- *-------------------------------------------------------------------------
- * This follows the return type of the function  and precedes the function
- * name in the function prototype.
- */
-#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
-    /* Win32 but not WinCE */
-#   define KHRONOS_APIENTRY __stdcall
-#else
-#   define KHRONOS_APIENTRY
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIATTRIBUTES
- *-------------------------------------------------------------------------
- * This follows the closing parenthesis of the function prototype arguments.
- */
-#if defined (__ARMCC_2__)
-#define KHRONOS_APIATTRIBUTES __softfp
-#else
-#define KHRONOS_APIATTRIBUTES
-#endif
-
-/*-------------------------------------------------------------------------
- * basic type definitions
- *-----------------------------------------------------------------------*/
-#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
-
-
-/*
- * Using <stdint.h>
- */
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__VMS ) || defined(__sgi)
-
-/*
- * Using <inttypes.h>
- */
-#include <inttypes.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
-
-/*
- * Win32
- */
-typedef __int32                 khronos_int32_t;
-typedef unsigned __int32        khronos_uint32_t;
-typedef __int64                 khronos_int64_t;
-typedef unsigned __int64        khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__sun__) || defined(__digital__)
-
-/*
- * Sun or Digital
- */
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#if defined(__arch64__) || defined(_LP64)
-typedef long int                khronos_int64_t;
-typedef unsigned long int       khronos_uint64_t;
-#else
-typedef long long int           khronos_int64_t;
-typedef unsigned long long int  khronos_uint64_t;
-#endif /* __arch64__ */
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif 0
-
-/*
- * Hypothetical platform with no float or int64 support
- */
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#define KHRONOS_SUPPORT_INT64   0
-#define KHRONOS_SUPPORT_FLOAT   0
-
-#else
-
-/*
- * Generic fallback
- */
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#endif
-
-
-/*
- * Types that are (so far) the same on all platforms
- */
-typedef signed   char          khronos_int8_t;
-typedef unsigned char          khronos_uint8_t;
-typedef signed   short int     khronos_int16_t;
-typedef unsigned short int     khronos_uint16_t;
-
-/*
- * Types that differ between LLP64 and LP64 architectures - in LLP64, 
- * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
- * to be the only LLP64 architecture in current use.
- */
-#ifdef _WIN64
-typedef signed   long long int khronos_intptr_t;
-typedef unsigned long long int khronos_uintptr_t;
-typedef signed   long long int khronos_ssize_t;
-typedef unsigned long long int khronos_usize_t;
-#else
-typedef signed   long  int     khronos_intptr_t;
-typedef unsigned long  int     khronos_uintptr_t;
-typedef signed   long  int     khronos_ssize_t;
-typedef unsigned long  int     khronos_usize_t;
-#endif
-
-#if KHRONOS_SUPPORT_FLOAT
-/*
- * Float type
- */
-typedef          float         khronos_float_t;
-#endif
-
-#if KHRONOS_SUPPORT_INT64
-/* Time types
- *
- * These types can be used to represent a time interval in nanoseconds or
- * an absolute Unadjusted System Time.  Unadjusted System Time is the number
- * of nanoseconds since some arbitrary system event (e.g. since the last
- * time the system booted).  The Unadjusted System Time is an unsigned
- * 64 bit value that wraps back to 0 every 584 years.  Time intervals
- * may be either signed or unsigned.
- */
-typedef khronos_uint64_t       khronos_utime_nanoseconds_t;
-typedef khronos_int64_t        khronos_stime_nanoseconds_t;
-#endif
-
-/*
- * Dummy value used to pad enum types to 32 bits.
- */
-#ifndef KHRONOS_MAX_ENUM
-#define KHRONOS_MAX_ENUM 0x7FFFFFFF
-#endif
-
-/*
- * Enumerated boolean type
- *
- * Values other than zero should be considered to be true.  Therefore
- * comparisons should not be made against KHRONOS_TRUE.
- */
-typedef enum {
-    KHRONOS_FALSE = 0,
-    KHRONOS_TRUE  = 1,
-    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
-} khronos_boolean_enum_t;
-
-#endif /* __khrplatform_h_ */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_pixels.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_pixels.h
deleted file mode 100644 (file)
index dcb7a98..0000000
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_pixels.h
- *
- *  Header for the enumerated pixel format definitions.
- */
-
-#ifndef SDL_pixels_h_
-#define SDL_pixels_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_endian.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \name Transparency definitions
- *
- *  These define alpha as the opacity of a surface.
- */
-/* @{ */
-#define SDL_ALPHA_OPAQUE 255
-#define SDL_ALPHA_TRANSPARENT 0
-/* @} */
-
-/** Pixel type. */
-enum
-{
-    SDL_PIXELTYPE_UNKNOWN,
-    SDL_PIXELTYPE_INDEX1,
-    SDL_PIXELTYPE_INDEX4,
-    SDL_PIXELTYPE_INDEX8,
-    SDL_PIXELTYPE_PACKED8,
-    SDL_PIXELTYPE_PACKED16,
-    SDL_PIXELTYPE_PACKED32,
-    SDL_PIXELTYPE_ARRAYU8,
-    SDL_PIXELTYPE_ARRAYU16,
-    SDL_PIXELTYPE_ARRAYU32,
-    SDL_PIXELTYPE_ARRAYF16,
-    SDL_PIXELTYPE_ARRAYF32
-};
-
-/** Bitmap pixel order, high bit -> low bit. */
-enum
-{
-    SDL_BITMAPORDER_NONE,
-    SDL_BITMAPORDER_4321,
-    SDL_BITMAPORDER_1234
-};
-
-/** Packed component order, high bit -> low bit. */
-enum
-{
-    SDL_PACKEDORDER_NONE,
-    SDL_PACKEDORDER_XRGB,
-    SDL_PACKEDORDER_RGBX,
-    SDL_PACKEDORDER_ARGB,
-    SDL_PACKEDORDER_RGBA,
-    SDL_PACKEDORDER_XBGR,
-    SDL_PACKEDORDER_BGRX,
-    SDL_PACKEDORDER_ABGR,
-    SDL_PACKEDORDER_BGRA
-};
-
-/** Array component order, low byte -> high byte. */
-/* !!! FIXME: in 2.1, make these not overlap differently with
-   !!! FIXME:  SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */
-enum
-{
-    SDL_ARRAYORDER_NONE,
-    SDL_ARRAYORDER_RGB,
-    SDL_ARRAYORDER_RGBA,
-    SDL_ARRAYORDER_ARGB,
-    SDL_ARRAYORDER_BGR,
-    SDL_ARRAYORDER_BGRA,
-    SDL_ARRAYORDER_ABGR
-};
-
-/** Packed component layout. */
-enum
-{
-    SDL_PACKEDLAYOUT_NONE,
-    SDL_PACKEDLAYOUT_332,
-    SDL_PACKEDLAYOUT_4444,
-    SDL_PACKEDLAYOUT_1555,
-    SDL_PACKEDLAYOUT_5551,
-    SDL_PACKEDLAYOUT_565,
-    SDL_PACKEDLAYOUT_8888,
-    SDL_PACKEDLAYOUT_2101010,
-    SDL_PACKEDLAYOUT_1010102
-};
-
-#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
-
-#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
-    ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
-     ((bits) << 8) | ((bytes) << 0))
-
-#define SDL_PIXELFLAG(X)    (((X) >> 28) & 0x0F)
-#define SDL_PIXELTYPE(X)    (((X) >> 24) & 0x0F)
-#define SDL_PIXELORDER(X)   (((X) >> 20) & 0x0F)
-#define SDL_PIXELLAYOUT(X)  (((X) >> 16) & 0x0F)
-#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
-#define SDL_BYTESPERPIXEL(X) \
-    (SDL_ISPIXELFORMAT_FOURCC(X) ? \
-        ((((X) == SDL_PIXELFORMAT_YUY2) || \
-          ((X) == SDL_PIXELFORMAT_UYVY) || \
-          ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
-
-#define SDL_ISPIXELFORMAT_INDEXED(format)   \
-    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
-     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
-
-#define SDL_ISPIXELFORMAT_PACKED(format) \
-    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
-     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32)))
-
-#define SDL_ISPIXELFORMAT_ARRAY(format) \
-    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
-     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32)))
-
-#define SDL_ISPIXELFORMAT_ALPHA(format)   \
-    ((SDL_ISPIXELFORMAT_PACKED(format) && \
-     ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
-      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
-      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
-      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \
-    (SDL_ISPIXELFORMAT_ARRAY(format) && \
-     ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \
-      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \
-      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \
-      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA))))
-
-/* The flag is set to 1 because 0x1? is not in the printable ASCII range */
-#define SDL_ISPIXELFORMAT_FOURCC(format)    \
-    ((format) && (SDL_PIXELFLAG(format) != 1))
-
-/* Note: If you modify this list, update SDL_GetPixelFormatName() */
-typedef enum
-{
-    SDL_PIXELFORMAT_UNKNOWN,
-    SDL_PIXELFORMAT_INDEX1LSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
-                               1, 0),
-    SDL_PIXELFORMAT_INDEX1MSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
-                               1, 0),
-    SDL_PIXELFORMAT_INDEX4LSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
-                               4, 0),
-    SDL_PIXELFORMAT_INDEX4MSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
-                               4, 0),
-    SDL_PIXELFORMAT_INDEX8 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
-    SDL_PIXELFORMAT_RGB332 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_332, 8, 1),
-    SDL_PIXELFORMAT_RGB444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_4444, 12, 2),
-    SDL_PIXELFORMAT_RGB555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_1555, 15, 2),
-    SDL_PIXELFORMAT_BGR555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
-                               SDL_PACKEDLAYOUT_1555, 15, 2),
-    SDL_PIXELFORMAT_ARGB4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_RGBA4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_ABGR4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_BGRA4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_ARGB1555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_1555, 16, 2),
-    SDL_PIXELFORMAT_RGBA5551 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
-                               SDL_PACKEDLAYOUT_5551, 16, 2),
-    SDL_PIXELFORMAT_ABGR1555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
-                               SDL_PACKEDLAYOUT_1555, 16, 2),
-    SDL_PIXELFORMAT_BGRA5551 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
-                               SDL_PACKEDLAYOUT_5551, 16, 2),
-    SDL_PIXELFORMAT_RGB565 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_565, 16, 2),
-    SDL_PIXELFORMAT_BGR565 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
-                               SDL_PACKEDLAYOUT_565, 16, 2),
-    SDL_PIXELFORMAT_RGB24 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
-                               24, 3),
-    SDL_PIXELFORMAT_BGR24 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
-                               24, 3),
-    SDL_PIXELFORMAT_RGB888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_RGBX8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_BGR888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_BGRX8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_ARGB8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_RGBA8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_ABGR8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_BGRA8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_ARGB2101010 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_2101010, 32, 4),
-
-    /* Aliases for RGBA byte arrays of color data, for the current platform */
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
-    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888,
-    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888,
-    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888,
-    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888,
-#else
-    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,
-    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,
-    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,
-    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,
-#endif
-
-    SDL_PIXELFORMAT_YV12 =      /**< Planar mode: Y + V + U  (3 planes) */
-        SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
-    SDL_PIXELFORMAT_IYUV =      /**< Planar mode: Y + U + V  (3 planes) */
-        SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
-    SDL_PIXELFORMAT_YUY2 =      /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */
-        SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
-    SDL_PIXELFORMAT_UYVY =      /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */
-        SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
-    SDL_PIXELFORMAT_YVYU =      /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */
-        SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'),
-    SDL_PIXELFORMAT_NV12 =      /**< Planar mode: Y + U/V interleaved  (2 planes) */
-        SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'),
-    SDL_PIXELFORMAT_NV21 =      /**< Planar mode: Y + V/U interleaved  (2 planes) */
-        SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'),
-    SDL_PIXELFORMAT_EXTERNAL_OES =      /**< Android video texture format */
-        SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')
-} SDL_PixelFormatEnum;
-
-typedef struct SDL_Color
-{
-    Uint8 r;
-    Uint8 g;
-    Uint8 b;
-    Uint8 a;
-} SDL_Color;
-#define SDL_Colour SDL_Color
-
-typedef struct SDL_Palette
-{
-    int ncolors;
-    SDL_Color *colors;
-    Uint32 version;
-    int refcount;
-} SDL_Palette;
-
-/**
- *  \note Everything in the pixel format structure is read-only.
- */
-typedef struct SDL_PixelFormat
-{
-    Uint32 format;
-    SDL_Palette *palette;
-    Uint8 BitsPerPixel;
-    Uint8 BytesPerPixel;
-    Uint8 padding[2];
-    Uint32 Rmask;
-    Uint32 Gmask;
-    Uint32 Bmask;
-    Uint32 Amask;
-    Uint8 Rloss;
-    Uint8 Gloss;
-    Uint8 Bloss;
-    Uint8 Aloss;
-    Uint8 Rshift;
-    Uint8 Gshift;
-    Uint8 Bshift;
-    Uint8 Ashift;
-    int refcount;
-    struct SDL_PixelFormat *next;
-} SDL_PixelFormat;
-
-/**
- * \brief Get the human readable name of a pixel format
- */
-extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);
-
-/**
- *  \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks.
- *
- *  \return SDL_TRUE, or SDL_FALSE if the conversion wasn't possible.
- *
- *  \sa SDL_MasksToPixelFormatEnum()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format,
-                                                            int *bpp,
-                                                            Uint32 * Rmask,
-                                                            Uint32 * Gmask,
-                                                            Uint32 * Bmask,
-                                                            Uint32 * Amask);
-
-/**
- *  \brief Convert a bpp and RGBA masks to an enumerated pixel format.
- *
- *  \return The pixel format, or ::SDL_PIXELFORMAT_UNKNOWN if the conversion
- *          wasn't possible.
- *
- *  \sa SDL_PixelFormatEnumToMasks()
- */
-extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp,
-                                                          Uint32 Rmask,
-                                                          Uint32 Gmask,
-                                                          Uint32 Bmask,
-                                                          Uint32 Amask);
-
-/**
- *  \brief Create an SDL_PixelFormat structure from a pixel format enum.
- */
-extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format);
-
-/**
- *  \brief Free an SDL_PixelFormat structure.
- */
-extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format);
-
-/**
- *  \brief Create a palette structure with the specified number of color
- *         entries.
- *
- *  \return A new palette, or NULL if there wasn't enough memory.
- *
- *  \note The palette entries are initialized to white.
- *
- *  \sa SDL_FreePalette()
- */
-extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors);
-
-/**
- *  \brief Set the palette for a pixel format structure.
- */
-extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format,
-                                                      SDL_Palette *palette);
-
-/**
- *  \brief Set a range of colors in a palette.
- *
- *  \param palette    The palette to modify.
- *  \param colors     An array of colors to copy into the palette.
- *  \param firstcolor The index of the first palette entry to modify.
- *  \param ncolors    The number of entries to modify.
- *
- *  \return 0 on success, or -1 if not all of the colors could be set.
- */
-extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette,
-                                                 const SDL_Color * colors,
-                                                 int firstcolor, int ncolors);
-
-/**
- *  \brief Free a palette created with SDL_AllocPalette().
- *
- *  \sa SDL_AllocPalette()
- */
-extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette);
-
-/**
- *  \brief Maps an RGB triple to an opaque pixel value for a given pixel format.
- *
- *  \sa SDL_MapRGBA
- */
-extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format,
-                                          Uint8 r, Uint8 g, Uint8 b);
-
-/**
- *  \brief Maps an RGBA quadruple to a pixel value for a given pixel format.
- *
- *  \sa SDL_MapRGB
- */
-extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format,
-                                           Uint8 r, Uint8 g, Uint8 b,
-                                           Uint8 a);
-
-/**
- *  \brief Get the RGB components from a pixel of the specified format.
- *
- *  \sa SDL_GetRGBA
- */
-extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel,
-                                        const SDL_PixelFormat * format,
-                                        Uint8 * r, Uint8 * g, Uint8 * b);
-
-/**
- *  \brief Get the RGBA components from a pixel of the specified format.
- *
- *  \sa SDL_GetRGB
- */
-extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel,
-                                         const SDL_PixelFormat * format,
-                                         Uint8 * r, Uint8 * g, Uint8 * b,
-                                         Uint8 * a);
-
-/**
- *  \brief Calculate a 256 entry gamma ramp for a gamma value.
- */
-extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_pixels_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_platform.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_platform.h
deleted file mode 100644 (file)
index c2cbc6b..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_platform.h
- *
- *  Try to get a standard set of platform defines.
- */
-
-#ifndef SDL_platform_h_
-#define SDL_platform_h_
-
-#if defined(_AIX)
-#undef __AIX__
-#define __AIX__     1
-#endif
-#if defined(__HAIKU__)
-#undef __HAIKU__
-#define __HAIKU__   1
-#endif
-#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__)
-#undef __BSDI__
-#define __BSDI__    1
-#endif
-#if defined(_arch_dreamcast)
-#undef __DREAMCAST__
-#define __DREAMCAST__   1
-#endif
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
-#undef __FREEBSD__
-#define __FREEBSD__ 1
-#endif
-#if defined(hpux) || defined(__hpux) || defined(__hpux__)
-#undef __HPUX__
-#define __HPUX__    1
-#endif
-#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE)
-#undef __IRIX__
-#define __IRIX__    1
-#endif
-#if (defined(linux) || defined(__linux) || defined(__linux__))
-#undef __LINUX__
-#define __LINUX__   1
-#endif
-#if defined(ANDROID) || defined(__ANDROID__)
-#undef __ANDROID__
-#undef __LINUX__ /* do we need to do this? */
-#define __ANDROID__ 1
-#endif
-
-#if defined(__APPLE__)
-/* lets us know what version of Mac OS X we're compiling on */
-#include "AvailabilityMacros.h"
-#include "TargetConditionals.h"
-#if TARGET_OS_TV
-#undef __TVOS__
-#define __TVOS__ 1
-#endif
-#if TARGET_OS_IPHONE
-/* if compiling for iOS */
-#undef __IPHONEOS__
-#define __IPHONEOS__ 1
-#undef __MACOSX__
-#else
-/* if not compiling for iOS */
-#undef __MACOSX__
-#define __MACOSX__  1
-#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
-# error SDL for Mac OS X only supports deploying on 10.6 and above.
-#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1060 */
-#endif /* TARGET_OS_IPHONE */
-#endif /* defined(__APPLE__) */
-
-#if defined(__NetBSD__)
-#undef __NETBSD__
-#define __NETBSD__  1
-#endif
-#if defined(__OpenBSD__)
-#undef __OPENBSD__
-#define __OPENBSD__ 1
-#endif
-#if defined(__OS2__) || defined(__EMX__)
-#undef __OS2__
-#define __OS2__     1
-#endif
-#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE)
-#undef __OSF__
-#define __OSF__     1
-#endif
-#if defined(__QNXNTO__)
-#undef __QNXNTO__
-#define __QNXNTO__  1
-#endif
-#if defined(riscos) || defined(__riscos) || defined(__riscos__)
-#undef __RISCOS__
-#define __RISCOS__  1
-#endif
-#if defined(__sun) && defined(__SVR4)
-#undef __SOLARIS__
-#define __SOLARIS__ 1
-#endif
-
-#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
-/* Try to find out if we're compiling for WinRT or non-WinRT */
-#if defined(_MSC_VER) && defined(__has_include)
-#if __has_include(<winapifamily.h>)
-#define HAVE_WINAPIFAMILY_H 1
-#else
-#define HAVE_WINAPIFAMILY_H 0
-#endif
-
-/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */
-#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_)    /* _MSC_VER == 1700 for Visual Studio 2012 */
-#define HAVE_WINAPIFAMILY_H 1
-#else
-#define HAVE_WINAPIFAMILY_H 0
-#endif
-
-#if HAVE_WINAPIFAMILY_H
-#include <winapifamily.h>
-#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP))
-#else
-#define WINAPI_FAMILY_WINRT 0
-#endif /* HAVE_WINAPIFAMILY_H */
-
-#if WINAPI_FAMILY_WINRT
-#undef __WINRT__
-#define __WINRT__ 1
-#else
-#undef __WINDOWS__
-#define __WINDOWS__ 1
-#endif
-#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */
-
-#if defined(__WINDOWS__)
-#undef __WIN32__
-#define __WIN32__ 1
-#endif
-#if defined(__PSP__)
-#undef __PSP__
-#define __PSP__ 1
-#endif
-
-/* The NACL compiler defines __native_client__ and __pnacl__
- * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi
- */
-#if defined(__native_client__)
-#undef __LINUX__
-#undef __NACL__
-#define __NACL__ 1
-#endif
-#if defined(__pnacl__)
-#undef __LINUX__
-#undef __PNACL__
-#define __PNACL__ 1
-/* PNACL with newlib supports static linking only */
-#define __SDL_NOGETPROCADDR__
-#endif
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Gets the name of the platform.
- */
-extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_platform_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_power.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_power.h
deleted file mode 100644 (file)
index 4831cb7..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_power_h_
-#define SDL_power_h_
-
-/**
- *  \file SDL_power.h
- *
- *  Header for the SDL power management routines.
- */
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief The basic state for the system's power supply.
- */
-typedef enum
-{
-    SDL_POWERSTATE_UNKNOWN,      /**< cannot determine power status */
-    SDL_POWERSTATE_ON_BATTERY,   /**< Not plugged in, running on the battery */
-    SDL_POWERSTATE_NO_BATTERY,   /**< Plugged in, no battery available */
-    SDL_POWERSTATE_CHARGING,     /**< Plugged in, charging battery */
-    SDL_POWERSTATE_CHARGED       /**< Plugged in, battery charged */
-} SDL_PowerState;
-
-
-/**
- *  \brief Get the current power supply details.
- *
- *  \param secs Seconds of battery life left. You can pass a NULL here if
- *              you don't care. Will return -1 if we can't determine a
- *              value, or we're not running on a battery.
- *
- *  \param pct Percentage of battery life left, between 0 and 100. You can
- *             pass a NULL here if you don't care. Will return -1 if we
- *             can't determine a value, or we're not running on a battery.
- *
- *  \return The state of the battery (if any).
- */
-extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *secs, int *pct);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_power_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_quit.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_quit.h
deleted file mode 100644 (file)
index c979983..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_quit.h
- *
- *  Include file for SDL quit event handling.
- */
-
-#ifndef SDL_quit_h_
-#define SDL_quit_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-/**
- *  \file SDL_quit.h
- *
- *  An ::SDL_QUIT event is generated when the user tries to close the application
- *  window.  If it is ignored or filtered out, the window will remain open.
- *  If it is not ignored or filtered, it is queued normally and the window
- *  is allowed to close.  When the window is closed, screen updates will
- *  complete, but have no effect.
- *
- *  SDL_Init() installs signal handlers for SIGINT (keyboard interrupt)
- *  and SIGTERM (system termination request), if handlers do not already
- *  exist, that generate ::SDL_QUIT events as well.  There is no way
- *  to determine the cause of an ::SDL_QUIT event, but setting a signal
- *  handler in your application will override the default generation of
- *  quit events for that signal.
- *
- *  \sa SDL_Quit()
- */
-
-/* There are no functions directly affecting the quit event */
-
-#define SDL_QuitRequested() \
-        (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0))
-
-#endif /* SDL_quit_h_ */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_rect.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_rect.h
deleted file mode 100644 (file)
index 71a4115..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_rect.h
- *
- *  Header file for SDL_rect definition and management functions.
- */
-
-#ifndef SDL_rect_h_
-#define SDL_rect_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_pixels.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief  The structure that defines a point (integer)
- *
- *  \sa SDL_EnclosePoints
- *  \sa SDL_PointInRect
- */
-typedef struct SDL_Point
-{
-    int x;
-    int y;
-} SDL_Point;
-
-/**
- *  \brief  The structure that defines a point (floating point)
- *
- *  \sa SDL_EnclosePoints
- *  \sa SDL_PointInRect
- */
-typedef struct SDL_FPoint
-{
-    float x;
-    float y;
-} SDL_FPoint;
-
-
-/**
- *  \brief A rectangle, with the origin at the upper left (integer).
- *
- *  \sa SDL_RectEmpty
- *  \sa SDL_RectEquals
- *  \sa SDL_HasIntersection
- *  \sa SDL_IntersectRect
- *  \sa SDL_UnionRect
- *  \sa SDL_EnclosePoints
- */
-typedef struct SDL_Rect
-{
-    int x, y;
-    int w, h;
-} SDL_Rect;
-
-
-/**
- *  \brief A rectangle, with the origin at the upper left (floating point).
- */
-typedef struct SDL_FRect
-{
-    float x;
-    float y;
-    float w;
-    float h;
-} SDL_FRect;
-
-
-/**
- *  \brief Returns true if point resides inside a rectangle.
- */
-SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r)
-{
-    return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&
-             (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;
-}
-
-/**
- *  \brief Returns true if the rectangle has no area.
- */
-SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r)
-{
-    return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE;
-}
-
-/**
- *  \brief Returns true if the two rectangles are equal.
- */
-SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b)
-{
-    return (a && b && (a->x == b->x) && (a->y == b->y) &&
-            (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE;
-}
-
-/**
- *  \brief Determine whether two rectangles intersect.
- *
- *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A,
-                                                     const SDL_Rect * B);
-
-/**
- *  \brief Calculate the intersection of two rectangles.
- *
- *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A,
-                                                   const SDL_Rect * B,
-                                                   SDL_Rect * result);
-
-/**
- *  \brief Calculate the union of two rectangles.
- */
-extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A,
-                                           const SDL_Rect * B,
-                                           SDL_Rect * result);
-
-/**
- *  \brief Calculate a minimal rectangle enclosing a set of points
- *
- *  \return SDL_TRUE if any points were within the clipping rect
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points,
-                                                   int count,
-                                                   const SDL_Rect * clip,
-                                                   SDL_Rect * result);
-
-/**
- *  \brief Calculate the intersection of a rectangle and line segment.
- *
- *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect *
-                                                          rect, int *X1,
-                                                          int *Y1, int *X2,
-                                                          int *Y2);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_rect_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_render.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_render.h
deleted file mode 100644 (file)
index 096b4a5..0000000
+++ /dev/null
@@ -1,1098 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_render.h
- *
- *  Header file for SDL 2D rendering functions.
- *
- *  This API supports the following features:
- *      * single pixel points
- *      * single pixel lines
- *      * filled rectangles
- *      * texture images
- *
- *  The primitives may be drawn in opaque, blended, or additive modes.
- *
- *  The texture images may be drawn in opaque, blended, or additive modes.
- *  They can have an additional color tint or alpha modulation applied to
- *  them, and may also be stretched with linear interpolation.
- *
- *  This API is designed to accelerate simple 2D operations. You may
- *  want more functionality such as polygons and particle effects and
- *  in that case you should use SDL's OpenGL/Direct3D support or one
- *  of the many good 3D engines.
- *
- *  These functions must be called from the main thread.
- *  See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995
- */
-
-#ifndef SDL_render_h_
-#define SDL_render_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_rect.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Flags used when creating a rendering context
- */
-typedef enum
-{
-    SDL_RENDERER_SOFTWARE = 0x00000001,         /**< The renderer is a software fallback */
-    SDL_RENDERER_ACCELERATED = 0x00000002,      /**< The renderer uses hardware
-                                                     acceleration */
-    SDL_RENDERER_PRESENTVSYNC = 0x00000004,     /**< Present is synchronized
-                                                     with the refresh rate */
-    SDL_RENDERER_TARGETTEXTURE = 0x00000008     /**< The renderer supports
-                                                     rendering to texture */
-} SDL_RendererFlags;
-
-/**
- *  \brief Information on the capabilities of a render driver or context.
- */
-typedef struct SDL_RendererInfo
-{
-    const char *name;           /**< The name of the renderer */
-    Uint32 flags;               /**< Supported ::SDL_RendererFlags */
-    Uint32 num_texture_formats; /**< The number of available texture formats */
-    Uint32 texture_formats[16]; /**< The available texture formats */
-    int max_texture_width;      /**< The maximum texture width */
-    int max_texture_height;     /**< The maximum texture height */
-} SDL_RendererInfo;
-
-/**
- *  \brief The access pattern allowed for a texture.
- */
-typedef enum
-{
-    SDL_TEXTUREACCESS_STATIC,    /**< Changes rarely, not lockable */
-    SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */
-    SDL_TEXTUREACCESS_TARGET     /**< Texture can be used as a render target */
-} SDL_TextureAccess;
-
-/**
- *  \brief The texture channel modulation used in SDL_RenderCopy().
- */
-typedef enum
-{
-    SDL_TEXTUREMODULATE_NONE = 0x00000000,     /**< No modulation */
-    SDL_TEXTUREMODULATE_COLOR = 0x00000001,    /**< srcC = srcC * color */
-    SDL_TEXTUREMODULATE_ALPHA = 0x00000002     /**< srcA = srcA * alpha */
-} SDL_TextureModulate;
-
-/**
- *  \brief Flip constants for SDL_RenderCopyEx
- */
-typedef enum
-{
-    SDL_FLIP_NONE = 0x00000000,     /**< Do not flip */
-    SDL_FLIP_HORIZONTAL = 0x00000001,    /**< flip horizontally */
-    SDL_FLIP_VERTICAL = 0x00000002     /**< flip vertically */
-} SDL_RendererFlip;
-
-/**
- *  \brief A structure representing rendering state
- */
-struct SDL_Renderer;
-typedef struct SDL_Renderer SDL_Renderer;
-
-/**
- *  \brief An efficient driver-specific representation of pixel data
- */
-struct SDL_Texture;
-typedef struct SDL_Texture SDL_Texture;
-
-
-/* Function prototypes */
-
-/**
- *  \brief Get the number of 2D rendering drivers available for the current
- *         display.
- *
- *  A render driver is a set of code that handles rendering and texture
- *  management on a particular display.  Normally there is only one, but
- *  some drivers may have several available with different capabilities.
- *
- *  \sa SDL_GetRenderDriverInfo()
- *  \sa SDL_CreateRenderer()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void);
-
-/**
- *  \brief Get information about a specific 2D rendering driver for the current
- *         display.
- *
- *  \param index The index of the driver to query information about.
- *  \param info  A pointer to an SDL_RendererInfo struct to be filled with
- *               information on the rendering driver.
- *
- *  \return 0 on success, -1 if the index was out of range.
- *
- *  \sa SDL_CreateRenderer()
- */
-extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index,
-                                                    SDL_RendererInfo * info);
-
-/**
- *  \brief Create a window and default renderer
- *
- *  \param width    The width of the window
- *  \param height   The height of the window
- *  \param window_flags The flags used to create the window
- *  \param window   A pointer filled with the window, or NULL on error
- *  \param renderer A pointer filled with the renderer, or NULL on error
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer(
-                                int width, int height, Uint32 window_flags,
-                                SDL_Window **window, SDL_Renderer **renderer);
-
-
-/**
- *  \brief Create a 2D rendering context for a window.
- *
- *  \param window The window where rendering is displayed.
- *  \param index    The index of the rendering driver to initialize, or -1 to
- *                  initialize the first one supporting the requested flags.
- *  \param flags    ::SDL_RendererFlags.
- *
- *  \return A valid rendering context or NULL if there was an error.
- *
- *  \sa SDL_CreateSoftwareRenderer()
- *  \sa SDL_GetRendererInfo()
- *  \sa SDL_DestroyRenderer()
- */
-extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window,
-                                               int index, Uint32 flags);
-
-/**
- *  \brief Create a 2D software rendering context for a surface.
- *
- *  \param surface The surface where rendering is done.
- *
- *  \return A valid rendering context or NULL if there was an error.
- *
- *  \sa SDL_CreateRenderer()
- *  \sa SDL_DestroyRenderer()
- */
-extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface);
-
-/**
- *  \brief Get the renderer associated with a window.
- */
-extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window);
-
-/**
- *  \brief Get information about a rendering context.
- */
-extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer,
-                                                SDL_RendererInfo * info);
-
-/**
- *  \brief Get the output size in pixels of a rendering context.
- */
-extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer,
-                                                      int *w, int *h);
-
-/**
- *  \brief Create a texture for a rendering context.
- *
- *  \param renderer The renderer.
- *  \param format The format of the texture.
- *  \param access One of the enumerated values in ::SDL_TextureAccess.
- *  \param w      The width of the texture in pixels.
- *  \param h      The height of the texture in pixels.
- *
- *  \return The created texture is returned, or NULL if no rendering context was
- *          active,  the format was unsupported, or the width or height were out
- *          of range.
- *
- *  \note The contents of the texture are not defined at creation.
- *
- *  \sa SDL_QueryTexture()
- *  \sa SDL_UpdateTexture()
- *  \sa SDL_DestroyTexture()
- */
-extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer,
-                                                        Uint32 format,
-                                                        int access, int w,
-                                                        int h);
-
-/**
- *  \brief Create a texture from an existing surface.
- *
- *  \param renderer The renderer.
- *  \param surface The surface containing pixel data used to fill the texture.
- *
- *  \return The created texture is returned, or NULL on error.
- *
- *  \note The surface is not modified or freed by this function.
- *
- *  \sa SDL_QueryTexture()
- *  \sa SDL_DestroyTexture()
- */
-extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface);
-
-/**
- *  \brief Query the attributes of a texture
- *
- *  \param texture A texture to be queried.
- *  \param format  A pointer filled in with the raw format of the texture.  The
- *                 actual format may differ, but pixel transfers will use this
- *                 format.
- *  \param access  A pointer filled in with the actual access to the texture.
- *  \param w       A pointer filled in with the width of the texture in pixels.
- *  \param h       A pointer filled in with the height of the texture in pixels.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- */
-extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture,
-                                             Uint32 * format, int *access,
-                                             int *w, int *h);
-
-/**
- *  \brief Set an additional color value used in render copy operations.
- *
- *  \param texture The texture to update.
- *  \param r       The red color value multiplied into copy operations.
- *  \param g       The green color value multiplied into copy operations.
- *  \param b       The blue color value multiplied into copy operations.
- *
- *  \return 0 on success, or -1 if the texture is not valid or color modulation
- *          is not supported.
- *
- *  \sa SDL_GetTextureColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture,
-                                                   Uint8 r, Uint8 g, Uint8 b);
-
-
-/**
- *  \brief Get the additional color value used in render copy operations.
- *
- *  \param texture The texture to query.
- *  \param r         A pointer filled in with the current red color value.
- *  \param g         A pointer filled in with the current green color value.
- *  \param b         A pointer filled in with the current blue color value.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \sa SDL_SetTextureColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture,
-                                                   Uint8 * r, Uint8 * g,
-                                                   Uint8 * b);
-
-/**
- *  \brief Set an additional alpha value used in render copy operations.
- *
- *  \param texture The texture to update.
- *  \param alpha     The alpha value multiplied into copy operations.
- *
- *  \return 0 on success, or -1 if the texture is not valid or alpha modulation
- *          is not supported.
- *
- *  \sa SDL_GetTextureAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture,
-                                                   Uint8 alpha);
-
-/**
- *  \brief Get the additional alpha value used in render copy operations.
- *
- *  \param texture The texture to query.
- *  \param alpha     A pointer filled in with the current alpha value.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \sa SDL_SetTextureAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture,
-                                                   Uint8 * alpha);
-
-/**
- *  \brief Set the blend mode used for texture copy operations.
- *
- *  \param texture The texture to update.
- *  \param blendMode ::SDL_BlendMode to use for texture blending.
- *
- *  \return 0 on success, or -1 if the texture is not valid or the blend mode is
- *          not supported.
- *
- *  \note If the blend mode is not supported, the closest supported mode is
- *        chosen.
- *
- *  \sa SDL_GetTextureBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture,
-                                                    SDL_BlendMode blendMode);
-
-/**
- *  \brief Get the blend mode used for texture copy operations.
- *
- *  \param texture   The texture to query.
- *  \param blendMode A pointer filled in with the current blend mode.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \sa SDL_SetTextureBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture,
-                                                    SDL_BlendMode *blendMode);
-
-/**
- *  \brief Update the given texture rectangle with new pixel data.
- *
- *  \param texture   The texture to update
- *  \param rect      A pointer to the rectangle of pixels to update, or NULL to
- *                   update the entire texture.
- *  \param pixels    The raw pixel data in the format of the texture.
- *  \param pitch     The number of bytes in a row of pixel data, including padding between lines.
- *
- *  The pixel data must be in the format of the texture. The pixel format can be
- *  queried with SDL_QueryTexture.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \note This is a fairly slow function.
- */
-extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture,
-                                              const SDL_Rect * rect,
-                                              const void *pixels, int pitch);
-
-/**
- *  \brief Update a rectangle within a planar YV12 or IYUV texture with new pixel data.
- *
- *  \param texture   The texture to update
- *  \param rect      A pointer to the rectangle of pixels to update, or NULL to
- *                   update the entire texture.
- *  \param Yplane    The raw pixel data for the Y plane.
- *  \param Ypitch    The number of bytes between rows of pixel data for the Y plane.
- *  \param Uplane    The raw pixel data for the U plane.
- *  \param Upitch    The number of bytes between rows of pixel data for the U plane.
- *  \param Vplane    The raw pixel data for the V plane.
- *  \param Vpitch    The number of bytes between rows of pixel data for the V plane.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \note You can use SDL_UpdateTexture() as long as your pixel data is
- *        a contiguous block of Y and U/V planes in the proper order, but
- *        this function is available if your pixel data is not contiguous.
- */
-extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture,
-                                                 const SDL_Rect * rect,
-                                                 const Uint8 *Yplane, int Ypitch,
-                                                 const Uint8 *Uplane, int Upitch,
-                                                 const Uint8 *Vplane, int Vpitch);
-
-/**
- *  \brief Lock a portion of the texture for write-only pixel access.
- *
- *  \param texture   The texture to lock for access, which was created with
- *                   ::SDL_TEXTUREACCESS_STREAMING.
- *  \param rect      A pointer to the rectangle to lock for access. If the rect
- *                   is NULL, the entire texture will be locked.
- *  \param pixels    This is filled in with a pointer to the locked pixels,
- *                   appropriately offset by the locked area.
- *  \param pitch     This is filled in with the pitch of the locked pixels.
- *
- *  \return 0 on success, or -1 if the texture is not valid or was not created with ::SDL_TEXTUREACCESS_STREAMING.
- *
- *  \sa SDL_UnlockTexture()
- */
-extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture,
-                                            const SDL_Rect * rect,
-                                            void **pixels, int *pitch);
-
-/**
- *  \brief Unlock a texture, uploading the changes to video memory, if needed.
- *
- *  \sa SDL_LockTexture()
- */
-extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture);
-
-/**
- * \brief Determines whether a window supports the use of render targets
- *
- * \param renderer The renderer that will be checked
- *
- * \return SDL_TRUE if supported, SDL_FALSE if not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer);
-
-/**
- * \brief Set a texture as the current rendering target.
- *
- * \param renderer The renderer.
- * \param texture The targeted texture, which must be created with the SDL_TEXTUREACCESS_TARGET flag, or NULL for the default render target
- *
- * \return 0 on success, or -1 on error
- *
- *  \sa SDL_GetRenderTarget()
- */
-extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer,
-                                                SDL_Texture *texture);
-
-/**
- * \brief Get the current render target or NULL for the default render target.
- *
- * \return The current render target
- *
- *  \sa SDL_SetRenderTarget()
- */
-extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer);
-
-/**
- *  \brief Set device independent resolution for rendering
- *
- *  \param renderer The renderer for which resolution should be set.
- *  \param w      The width of the logical resolution
- *  \param h      The height of the logical resolution
- *
- *  This function uses the viewport and scaling functionality to allow a fixed logical
- *  resolution for rendering, regardless of the actual output resolution.  If the actual
- *  output resolution doesn't have the same aspect ratio the output rendering will be
- *  centered within the output display.
- *
- *  If the output display is a window, mouse events in the window will be filtered
- *  and scaled so they seem to arrive within the logical resolution.
- *
- *  \note If this function results in scaling or subpixel drawing by the
- *        rendering backend, it will be handled using the appropriate
- *        quality hints.
- *
- *  \sa SDL_RenderGetLogicalSize()
- *  \sa SDL_RenderSetScale()
- *  \sa SDL_RenderSetViewport()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h);
-
-/**
- *  \brief Get device independent resolution for rendering
- *
- *  \param renderer The renderer from which resolution should be queried.
- *  \param w      A pointer filled with the width of the logical resolution
- *  \param h      A pointer filled with the height of the logical resolution
- *
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h);
-
-/**
- *  \brief Set whether to force integer scales for resolution-independent rendering
- *
- *  \param renderer The renderer for which integer scaling should be set.
- *  \param enable   Enable or disable integer scaling
- *
- *  This function restricts the logical viewport to integer values - that is, when
- *  a resolution is between two multiples of a logical size, the viewport size is
- *  rounded down to the lower multiple.
- *
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer,
-                                                      SDL_bool enable);
-
-/**
- *  \brief Get whether integer scales are forced for resolution-independent rendering
- *
- *  \param renderer The renderer from which integer scaling should be queried.
- *
- *  \sa SDL_RenderSetIntegerScale()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer);
-
-/**
- *  \brief Set the drawing area for rendering on the current target.
- *
- *  \param renderer The renderer for which the drawing area should be set.
- *  \param rect The rectangle representing the drawing area, or NULL to set the viewport to the entire target.
- *
- *  The x,y of the viewport rect represents the origin for rendering.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \note If the window associated with the renderer is resized, the viewport is automatically reset.
- *
- *  \sa SDL_RenderGetViewport()
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer,
-                                                  const SDL_Rect * rect);
-
-/**
- *  \brief Get the drawing area for the current target.
- *
- *  \sa SDL_RenderSetViewport()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer,
-                                                   SDL_Rect * rect);
-
-/**
- *  \brief Set the clip rectangle for the current target.
- *
- *  \param renderer The renderer for which clip rectangle should be set.
- *  \param rect   A pointer to the rectangle to set as the clip rectangle, or
- *                NULL to disable clipping.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \sa SDL_RenderGetClipRect()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer,
-                                                  const SDL_Rect * rect);
-
-/**
- *  \brief Get the clip rectangle for the current target.
- *
- *  \param renderer The renderer from which clip rectangle should be queried.
- *  \param rect   A pointer filled in with the current clip rectangle, or
- *                an empty rectangle if clipping is disabled.
- *
- *  \sa SDL_RenderSetClipRect()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer,
-                                                   SDL_Rect * rect);
-
-/**
- *  \brief Get whether clipping is enabled on the given renderer.
- *
- *  \param renderer The renderer from which clip state should be queried.
- *
- *  \sa SDL_RenderGetClipRect()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer);
-
-
-/**
- *  \brief Set the drawing scale for rendering on the current target.
- *
- *  \param renderer The renderer for which the drawing scale should be set.
- *  \param scaleX The horizontal scaling factor
- *  \param scaleY The vertical scaling factor
- *
- *  The drawing coordinates are scaled by the x/y scaling factors
- *  before they are used by the renderer.  This allows resolution
- *  independent drawing with a single coordinate system.
- *
- *  \note If this results in scaling or subpixel drawing by the
- *        rendering backend, it will be handled using the appropriate
- *        quality hints.  For best results use integer scaling factors.
- *
- *  \sa SDL_RenderGetScale()
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer,
-                                               float scaleX, float scaleY);
-
-/**
- *  \brief Get the drawing scale for the current target.
- *
- *  \param renderer The renderer from which drawing scale should be queried.
- *  \param scaleX A pointer filled in with the horizontal scaling factor
- *  \param scaleY A pointer filled in with the vertical scaling factor
- *
- *  \sa SDL_RenderSetScale()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,
-                                               float *scaleX, float *scaleY);
-
-/**
- *  \brief Set the color used for drawing operations (Rect, Line and Clear).
- *
- *  \param renderer The renderer for which drawing color should be set.
- *  \param r The red value used to draw on the rendering target.
- *  \param g The green value used to draw on the rendering target.
- *  \param b The blue value used to draw on the rendering target.
- *  \param a The alpha value used to draw on the rendering target, usually
- *           ::SDL_ALPHA_OPAQUE (255).
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer,
-                                           Uint8 r, Uint8 g, Uint8 b,
-                                           Uint8 a);
-
-/**
- *  \brief Get the color used for drawing operations (Rect, Line and Clear).
- *
- *  \param renderer The renderer from which drawing color should be queried.
- *  \param r A pointer to the red value used to draw on the rendering target.
- *  \param g A pointer to the green value used to draw on the rendering target.
- *  \param b A pointer to the blue value used to draw on the rendering target.
- *  \param a A pointer to the alpha value used to draw on the rendering target,
- *           usually ::SDL_ALPHA_OPAQUE (255).
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer,
-                                           Uint8 * r, Uint8 * g, Uint8 * b,
-                                           Uint8 * a);
-
-/**
- *  \brief Set the blend mode used for drawing operations (Fill and Line).
- *
- *  \param renderer The renderer for which blend mode should be set.
- *  \param blendMode ::SDL_BlendMode to use for blending.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \note If the blend mode is not supported, the closest supported mode is
- *        chosen.
- *
- *  \sa SDL_GetRenderDrawBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer,
-                                                       SDL_BlendMode blendMode);
-
-/**
- *  \brief Get the blend mode used for drawing operations.
- *
- *  \param renderer The renderer from which blend mode should be queried.
- *  \param blendMode A pointer filled in with the current blend mode.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \sa SDL_SetRenderDrawBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer,
-                                                       SDL_BlendMode *blendMode);
-
-/**
- *  \brief Clear the current rendering target with the drawing color
- *
- *  This function clears the entire rendering target, ignoring the viewport and
- *  the clip rectangle.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer);
-
-/**
- *  \brief Draw a point on the current rendering target.
- *
- *  \param renderer The renderer which should draw a point.
- *  \param x The x coordinate of the point.
- *  \param y The y coordinate of the point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer,
-                                                int x, int y);
-
-/**
- *  \brief Draw multiple points on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple points.
- *  \param points The points to draw
- *  \param count The number of points to draw
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer,
-                                                 const SDL_Point * points,
-                                                 int count);
-
-/**
- *  \brief Draw a line on the current rendering target.
- *
- *  \param renderer The renderer which should draw a line.
- *  \param x1 The x coordinate of the start point.
- *  \param y1 The y coordinate of the start point.
- *  \param x2 The x coordinate of the end point.
- *  \param y2 The y coordinate of the end point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer,
-                                               int x1, int y1, int x2, int y2);
-
-/**
- *  \brief Draw a series of connected lines on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple lines.
- *  \param points The points along the lines
- *  \param count The number of points, drawing count-1 lines
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer,
-                                                const SDL_Point * points,
-                                                int count);
-
-/**
- *  \brief Draw a rectangle on the current rendering target.
- *
- *  \param renderer The renderer which should draw a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL to outline the entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer,
-                                               const SDL_Rect * rect);
-
-/**
- *  \brief Draw some number of rectangles on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer,
-                                                const SDL_Rect * rects,
-                                                int count);
-
-/**
- *  \brief Fill a rectangle on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL for the entire
- *              rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer,
-                                               const SDL_Rect * rect);
-
-/**
- *  \brief Fill some number of rectangles on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer,
-                                                const SDL_Rect * rects,
-                                                int count);
-
-/**
- *  \brief Copy a portion of the texture to the current rendering target.
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer,
-                                           SDL_Texture * texture,
-                                           const SDL_Rect * srcrect,
-                                           const SDL_Rect * dstrect);
-
-/**
- *  \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *  \param angle    An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction
- *  \param center   A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2).
- *  \param flip     An SDL_RendererFlip value stating which flipping actions should be performed on the texture
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer,
-                                           SDL_Texture * texture,
-                                           const SDL_Rect * srcrect,
-                                           const SDL_Rect * dstrect,
-                                           const double angle,
-                                           const SDL_Point *center,
-                                           const SDL_RendererFlip flip);
-
-
-/**
- *  \brief Draw a point on the current rendering target.
- *
- *  \param renderer The renderer which should draw a point.
- *  \param x The x coordinate of the point.
- *  \param y The y coordinate of the point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer,
-                                                 float x, float y);
-
-/**
- *  \brief Draw multiple points on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple points.
- *  \param points The points to draw
- *  \param count The number of points to draw
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer,
-                                                  const SDL_FPoint * points,
-                                                  int count);
-
-/**
- *  \brief Draw a line on the current rendering target.
- *
- *  \param renderer The renderer which should draw a line.
- *  \param x1 The x coordinate of the start point.
- *  \param y1 The y coordinate of the start point.
- *  \param x2 The x coordinate of the end point.
- *  \param y2 The y coordinate of the end point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer,
-                                                float x1, float y1, float x2, float y2);
-
-/**
- *  \brief Draw a series of connected lines on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple lines.
- *  \param points The points along the lines
- *  \param count The number of points, drawing count-1 lines
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer,
-                                                const SDL_FPoint * points,
-                                                int count);
-
-/**
- *  \brief Draw a rectangle on the current rendering target.
- *
- *  \param renderer The renderer which should draw a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL to outline the entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer,
-                                               const SDL_FRect * rect);
-
-/**
- *  \brief Draw some number of rectangles on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer,
-                                                 const SDL_FRect * rects,
-                                                 int count);
-
-/**
- *  \brief Fill a rectangle on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL for the entire
- *              rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer,
-                                                const SDL_FRect * rect);
-
-/**
- *  \brief Fill some number of rectangles on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer,
-                                                 const SDL_FRect * rects,
-                                                 int count);
-
-/**
- *  \brief Copy a portion of the texture to the current rendering target.
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer,
-                                            SDL_Texture * texture,
-                                            const SDL_Rect * srcrect,
-                                            const SDL_FRect * dstrect);
-
-/**
- *  \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *  \param angle    An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction
- *  \param center   A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2).
- *  \param flip     An SDL_RendererFlip value stating which flipping actions should be performed on the texture
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer,
-                                            SDL_Texture * texture,
-                                            const SDL_Rect * srcrect,
-                                            const SDL_FRect * dstrect,
-                                            const double angle,
-                                            const SDL_FPoint *center,
-                                            const SDL_RendererFlip flip);
-
-/**
- *  \brief Read pixels from the current rendering target.
- *
- *  \param renderer The renderer from which pixels should be read.
- *  \param rect   A pointer to the rectangle to read, or NULL for the entire
- *                render target.
- *  \param format The desired format of the pixel data, or 0 to use the format
- *                of the rendering target
- *  \param pixels A pointer to be filled in with the pixel data
- *  \param pitch  The pitch of the pixels parameter.
- *
- *  \return 0 on success, or -1 if pixel reading is not supported.
- *
- *  \warning This is a very slow operation, and should not be used frequently.
- */
-extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,
-                                                 const SDL_Rect * rect,
-                                                 Uint32 format,
-                                                 void *pixels, int pitch);
-
-/**
- *  \brief Update the screen with rendering performed.
- */
-extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer);
-
-/**
- *  \brief Destroy the specified texture.
- *
- *  \sa SDL_CreateTexture()
- *  \sa SDL_CreateTextureFromSurface()
- */
-extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture);
-
-/**
- *  \brief Destroy the rendering context for a window and free associated
- *         textures.
- *
- *  \sa SDL_CreateRenderer()
- */
-extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);
-
-/**
- *  \brief Force the rendering context to flush any pending commands to the
- *         underlying rendering API.
- *
- *  You do not need to (and in fact, shouldn't) call this function unless
- *  you are planning to call into OpenGL/Direct3D/Metal/whatever directly
- *  in addition to using an SDL_Renderer.
- *
- *  This is for a very-specific case: if you are using SDL's render API,
- *  you asked for a specific renderer backend (OpenGL, Direct3D, etc),
- *  you set SDL_HINT_RENDER_BATCHING to "1", and you plan to make
- *  OpenGL/D3D/whatever calls in addition to SDL render API calls. If all of
- *  this applies, you should call SDL_RenderFlush() between calls to SDL's
- *  render API and the low-level API you're using in cooperation.
- *
- *  In all other cases, you can ignore this function. This is only here to
- *  get maximum performance out of a specific situation. In all other cases,
- *  SDL will do the right thing, perhaps at a performance loss.
- *
- *  This function is first available in SDL 2.0.10, and is not needed in
- *  2.0.9 and earlier, as earlier versions did not queue rendering commands
- *  at all, instead flushing them to the OS immediately.
- */
-extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer);
-
-
-/**
- *  \brief Bind the texture to the current OpenGL/ES/ES2 context for use with
- *         OpenGL instructions.
- *
- *  \param texture  The SDL texture to bind
- *  \param texw     A pointer to a float that will be filled with the texture width
- *  \param texh     A pointer to a float that will be filled with the texture height
- *
- *  \return 0 on success, or -1 if the operation is not supported
- */
-extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh);
-
-/**
- *  \brief Unbind a texture from the current OpenGL/ES/ES2 context.
- *
- *  \param texture  The SDL texture to unbind
- *
- *  \return 0 on success, or -1 if the operation is not supported
- */
-extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture);
-
-/**
- *  \brief Get the CAMetalLayer associated with the given Metal renderer
- *
- *  \param renderer The renderer to query
- *
- *  \return CAMetalLayer* on success, or NULL if the renderer isn't a Metal renderer
- *
- *  \sa SDL_RenderGetMetalCommandEncoder()
- */
-extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);
-
-/**
- *  \brief Get the Metal command encoder for the current frame
- *
- *  \param renderer The renderer to query
- *
- *  \return id<MTLRenderCommandEncoder> on success, or NULL if the renderer isn't a Metal renderer
- *
- *  \sa SDL_RenderGetMetalLayer()
- */
-extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_render_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_revision.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_revision.h
deleted file mode 100644 (file)
index 3b3fc85..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#define SDL_REVISION "hg-12952:bc90ce38f1e2"
-#define SDL_REVISION_NUMBER 12952
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_rwops.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_rwops.h
deleted file mode 100644 (file)
index f66119f..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_rwops.h
- *
- *  This file provides a general interface for SDL to read and write
- *  data streams.  It can easily be extended to files, memory, etc.
- */
-
-#ifndef SDL_rwops_h_
-#define SDL_rwops_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* RWops Types */
-#define SDL_RWOPS_UNKNOWN   0U  /**< Unknown stream type */
-#define SDL_RWOPS_WINFILE   1U  /**< Win32 file */
-#define SDL_RWOPS_STDFILE   2U  /**< Stdio file */
-#define SDL_RWOPS_JNIFILE   3U  /**< Android asset */
-#define SDL_RWOPS_MEMORY    4U  /**< Memory stream */
-#define SDL_RWOPS_MEMORY_RO 5U  /**< Read-Only memory stream */
-
-/**
- * This is the read/write operation structure -- very basic.
- */
-typedef struct SDL_RWops
-{
-    /**
-     *  Return the size of the file in this rwops, or -1 if unknown
-     */
-    Sint64 (SDLCALL * size) (struct SDL_RWops * context);
-
-    /**
-     *  Seek to \c offset relative to \c whence, one of stdio's whence values:
-     *  RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
-     *
-     *  \return the final offset in the data stream, or -1 on error.
-     */
-    Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset,
-                             int whence);
-
-    /**
-     *  Read up to \c maxnum objects each of size \c size from the data
-     *  stream to the area pointed at by \c ptr.
-     *
-     *  \return the number of objects read, or 0 at error or end of file.
-     */
-    size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr,
-                             size_t size, size_t maxnum);
-
-    /**
-     *  Write exactly \c num objects each of size \c size from the area
-     *  pointed at by \c ptr to data stream.
-     *
-     *  \return the number of objects written, or 0 at error or end of file.
-     */
-    size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr,
-                              size_t size, size_t num);
-
-    /**
-     *  Close and free an allocated SDL_RWops structure.
-     *
-     *  \return 0 if successful or -1 on write error when flushing data.
-     */
-    int (SDLCALL * close) (struct SDL_RWops * context);
-
-    Uint32 type;
-    union
-    {
-#if defined(__ANDROID__)
-        struct
-        {
-            void *fileNameRef;
-            void *inputStreamRef;
-            void *readableByteChannelRef;
-            void *readMethod;
-            void *assetFileDescriptorRef;
-            long position;
-            long size;
-            long offset;
-            int fd;
-        } androidio;
-#elif defined(__WIN32__)
-        struct
-        {
-            SDL_bool append;
-            void *h;
-            struct
-            {
-                void *data;
-                size_t size;
-                size_t left;
-            } buffer;
-        } windowsio;
-#endif
-
-#ifdef HAVE_STDIO_H
-        struct
-        {
-            SDL_bool autoclose;
-            FILE *fp;
-        } stdio;
-#endif
-        struct
-        {
-            Uint8 *base;
-            Uint8 *here;
-            Uint8 *stop;
-        } mem;
-        struct
-        {
-            void *data1;
-            void *data2;
-        } unknown;
-    } hidden;
-
-} SDL_RWops;
-
-
-/**
- *  \name RWFrom functions
- *
- *  Functions to create SDL_RWops structures from various data streams.
- */
-/* @{ */
-
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file,
-                                                  const char *mode);
-
-#ifdef HAVE_STDIO_H
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp,
-                                                SDL_bool autoclose);
-#else
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp,
-                                                SDL_bool autoclose);
-#endif
-
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size);
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem,
-                                                      int size);
-
-/* @} *//* RWFrom functions */
-
-
-extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void);
-extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area);
-
-#define RW_SEEK_SET 0       /**< Seek from the beginning of data */
-#define RW_SEEK_CUR 1       /**< Seek relative to current read point */
-#define RW_SEEK_END 2       /**< Seek relative to the end of data */
-
-/**
- *  Return the size of the file in this rwops, or -1 if unknown
- */
-extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context);
-
-/**
- *  Seek to \c offset relative to \c whence, one of stdio's whence values:
- *  RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
- *
- *  \return the final offset in the data stream, or -1 on error.
- */
-extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context,
-                                          Sint64 offset, int whence);
-
-/**
- *  Return the current offset in the data stream, or -1 on error.
- */
-extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context);
-
-/**
- *  Read up to \c maxnum objects each of size \c size from the data
- *  stream to the area pointed at by \c ptr.
- *
- *  \return the number of objects read, or 0 at error or end of file.
- */
-extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context,
-                                          void *ptr, size_t size, size_t maxnum);
-
-/**
- *  Write exactly \c num objects each of size \c size from the area
- *  pointed at by \c ptr to data stream.
- *
- *  \return the number of objects written, or 0 at error or end of file.
- */
-extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context,
-                                           const void *ptr, size_t size, size_t num);
-
-/**
- *  Close and free an allocated SDL_RWops structure.
- *
- *  \return 0 if successful or -1 on write error when flushing data.
- */
-extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context);
-
-/**
- *  Load all the data from an SDL data stream.
- *
- *  The data is allocated with a zero byte at the end (null terminated)
- *
- *  If \c datasize is not NULL, it is filled with the size of the data read.
- *
- *  If \c freesrc is non-zero, the stream will be closed after being read.
- *
- *  The data should be freed with SDL_free().
- *
- *  \return the data, or NULL if there was an error.
- */
-extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops * src, size_t *datasize,
-                                                    int freesrc);
-
-/**
- *  Load an entire file.
- *
- *  The data is allocated with a zero byte at the end (null terminated)
- *
- *  If \c datasize is not NULL, it is filled with the size of the data read.
- *
- *  If \c freesrc is non-zero, the stream will be closed after being read.
- *
- *  The data should be freed with SDL_free().
- *
- *  \return the data, or NULL if there was an error.
- */
-extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize);
-
-/**
- *  \name Read endian functions
- *
- *  Read an item of the specified endianness and return in native format.
- */
-/* @{ */
-extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src);
-extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src);
-extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src);
-extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src);
-extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src);
-extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src);
-extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src);
-/* @} *//* Read endian functions */
-
-/**
- *  \name Write endian functions
- *
- *  Write an item of native format to the specified endianness.
- */
-/* @{ */
-extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value);
-/* @} *//* Write endian functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_rwops_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_scancode.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_scancode.h
deleted file mode 100644 (file)
index a50305f..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_scancode.h
- *
- *  Defines keyboard scancodes.
- */
-
-#ifndef SDL_scancode_h_
-#define SDL_scancode_h_
-
-#include "SDL_stdinc.h"
-
-/**
- *  \brief The SDL keyboard scancode representation.
- *
- *  Values of this type are used to represent keyboard keys, among other places
- *  in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the
- *  SDL_Event structure.
- *
- *  The values in this enumeration are based on the USB usage page standard:
- *  https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
- */
-typedef enum
-{
-    SDL_SCANCODE_UNKNOWN = 0,
-
-    /**
-     *  \name Usage page 0x07
-     *
-     *  These values are from usage page 0x07 (USB keyboard page).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_A = 4,
-    SDL_SCANCODE_B = 5,
-    SDL_SCANCODE_C = 6,
-    SDL_SCANCODE_D = 7,
-    SDL_SCANCODE_E = 8,
-    SDL_SCANCODE_F = 9,
-    SDL_SCANCODE_G = 10,
-    SDL_SCANCODE_H = 11,
-    SDL_SCANCODE_I = 12,
-    SDL_SCANCODE_J = 13,
-    SDL_SCANCODE_K = 14,
-    SDL_SCANCODE_L = 15,
-    SDL_SCANCODE_M = 16,
-    SDL_SCANCODE_N = 17,
-    SDL_SCANCODE_O = 18,
-    SDL_SCANCODE_P = 19,
-    SDL_SCANCODE_Q = 20,
-    SDL_SCANCODE_R = 21,
-    SDL_SCANCODE_S = 22,
-    SDL_SCANCODE_T = 23,
-    SDL_SCANCODE_U = 24,
-    SDL_SCANCODE_V = 25,
-    SDL_SCANCODE_W = 26,
-    SDL_SCANCODE_X = 27,
-    SDL_SCANCODE_Y = 28,
-    SDL_SCANCODE_Z = 29,
-
-    SDL_SCANCODE_1 = 30,
-    SDL_SCANCODE_2 = 31,
-    SDL_SCANCODE_3 = 32,
-    SDL_SCANCODE_4 = 33,
-    SDL_SCANCODE_5 = 34,
-    SDL_SCANCODE_6 = 35,
-    SDL_SCANCODE_7 = 36,
-    SDL_SCANCODE_8 = 37,
-    SDL_SCANCODE_9 = 38,
-    SDL_SCANCODE_0 = 39,
-
-    SDL_SCANCODE_RETURN = 40,
-    SDL_SCANCODE_ESCAPE = 41,
-    SDL_SCANCODE_BACKSPACE = 42,
-    SDL_SCANCODE_TAB = 43,
-    SDL_SCANCODE_SPACE = 44,
-
-    SDL_SCANCODE_MINUS = 45,
-    SDL_SCANCODE_EQUALS = 46,
-    SDL_SCANCODE_LEFTBRACKET = 47,
-    SDL_SCANCODE_RIGHTBRACKET = 48,
-    SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return
-                                  *   key on ISO keyboards and at the right end
-                                  *   of the QWERTY row on ANSI keyboards.
-                                  *   Produces REVERSE SOLIDUS (backslash) and
-                                  *   VERTICAL LINE in a US layout, REVERSE
-                                  *   SOLIDUS and VERTICAL LINE in a UK Mac
-                                  *   layout, NUMBER SIGN and TILDE in a UK
-                                  *   Windows layout, DOLLAR SIGN and POUND SIGN
-                                  *   in a Swiss German layout, NUMBER SIGN and
-                                  *   APOSTROPHE in a German layout, GRAVE
-                                  *   ACCENT and POUND SIGN in a French Mac
-                                  *   layout, and ASTERISK and MICRO SIGN in a
-                                  *   French Windows layout.
-                                  */
-    SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code
-                                  *   instead of 49 for the same key, but all
-                                  *   OSes I've seen treat the two codes
-                                  *   identically. So, as an implementor, unless
-                                  *   your keyboard generates both of those
-                                  *   codes and your OS treats them differently,
-                                  *   you should generate SDL_SCANCODE_BACKSLASH
-                                  *   instead of this code. As a user, you
-                                  *   should not rely on this code because SDL
-                                  *   will never generate it with most (all?)
-                                  *   keyboards.
-                                  */
-    SDL_SCANCODE_SEMICOLON = 51,
-    SDL_SCANCODE_APOSTROPHE = 52,
-    SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI
-                              *   and ISO keyboards). Produces GRAVE ACCENT and
-                              *   TILDE in a US Windows layout and in US and UK
-                              *   Mac layouts on ANSI keyboards, GRAVE ACCENT
-                              *   and NOT SIGN in a UK Windows layout, SECTION
-                              *   SIGN and PLUS-MINUS SIGN in US and UK Mac
-                              *   layouts on ISO keyboards, SECTION SIGN and
-                              *   DEGREE SIGN in a Swiss German layout (Mac:
-                              *   only on ISO keyboards), CIRCUMFLEX ACCENT and
-                              *   DEGREE SIGN in a German layout (Mac: only on
-                              *   ISO keyboards), SUPERSCRIPT TWO and TILDE in a
-                              *   French Windows layout, COMMERCIAL AT and
-                              *   NUMBER SIGN in a French Mac layout on ISO
-                              *   keyboards, and LESS-THAN SIGN and GREATER-THAN
-                              *   SIGN in a Swiss German, German, or French Mac
-                              *   layout on ANSI keyboards.
-                              */
-    SDL_SCANCODE_COMMA = 54,
-    SDL_SCANCODE_PERIOD = 55,
-    SDL_SCANCODE_SLASH = 56,
-
-    SDL_SCANCODE_CAPSLOCK = 57,
-
-    SDL_SCANCODE_F1 = 58,
-    SDL_SCANCODE_F2 = 59,
-    SDL_SCANCODE_F3 = 60,
-    SDL_SCANCODE_F4 = 61,
-    SDL_SCANCODE_F5 = 62,
-    SDL_SCANCODE_F6 = 63,
-    SDL_SCANCODE_F7 = 64,
-    SDL_SCANCODE_F8 = 65,
-    SDL_SCANCODE_F9 = 66,
-    SDL_SCANCODE_F10 = 67,
-    SDL_SCANCODE_F11 = 68,
-    SDL_SCANCODE_F12 = 69,
-
-    SDL_SCANCODE_PRINTSCREEN = 70,
-    SDL_SCANCODE_SCROLLLOCK = 71,
-    SDL_SCANCODE_PAUSE = 72,
-    SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but
-                                   does send code 73, not 117) */
-    SDL_SCANCODE_HOME = 74,
-    SDL_SCANCODE_PAGEUP = 75,
-    SDL_SCANCODE_DELETE = 76,
-    SDL_SCANCODE_END = 77,
-    SDL_SCANCODE_PAGEDOWN = 78,
-    SDL_SCANCODE_RIGHT = 79,
-    SDL_SCANCODE_LEFT = 80,
-    SDL_SCANCODE_DOWN = 81,
-    SDL_SCANCODE_UP = 82,
-
-    SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards
-                                     */
-    SDL_SCANCODE_KP_DIVIDE = 84,
-    SDL_SCANCODE_KP_MULTIPLY = 85,
-    SDL_SCANCODE_KP_MINUS = 86,
-    SDL_SCANCODE_KP_PLUS = 87,
-    SDL_SCANCODE_KP_ENTER = 88,
-    SDL_SCANCODE_KP_1 = 89,
-    SDL_SCANCODE_KP_2 = 90,
-    SDL_SCANCODE_KP_3 = 91,
-    SDL_SCANCODE_KP_4 = 92,
-    SDL_SCANCODE_KP_5 = 93,
-    SDL_SCANCODE_KP_6 = 94,
-    SDL_SCANCODE_KP_7 = 95,
-    SDL_SCANCODE_KP_8 = 96,
-    SDL_SCANCODE_KP_9 = 97,
-    SDL_SCANCODE_KP_0 = 98,
-    SDL_SCANCODE_KP_PERIOD = 99,
-
-    SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO
-                                        *   keyboards have over ANSI ones,
-                                        *   located between left shift and Y.
-                                        *   Produces GRAVE ACCENT and TILDE in a
-                                        *   US or UK Mac layout, REVERSE SOLIDUS
-                                        *   (backslash) and VERTICAL LINE in a
-                                        *   US or UK Windows layout, and
-                                        *   LESS-THAN SIGN and GREATER-THAN SIGN
-                                        *   in a Swiss German, German, or French
-                                        *   layout. */
-    SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */
-    SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag,
-                               *   not a physical key - but some Mac keyboards
-                               *   do have a power key. */
-    SDL_SCANCODE_KP_EQUALS = 103,
-    SDL_SCANCODE_F13 = 104,
-    SDL_SCANCODE_F14 = 105,
-    SDL_SCANCODE_F15 = 106,
-    SDL_SCANCODE_F16 = 107,
-    SDL_SCANCODE_F17 = 108,
-    SDL_SCANCODE_F18 = 109,
-    SDL_SCANCODE_F19 = 110,
-    SDL_SCANCODE_F20 = 111,
-    SDL_SCANCODE_F21 = 112,
-    SDL_SCANCODE_F22 = 113,
-    SDL_SCANCODE_F23 = 114,
-    SDL_SCANCODE_F24 = 115,
-    SDL_SCANCODE_EXECUTE = 116,
-    SDL_SCANCODE_HELP = 117,
-    SDL_SCANCODE_MENU = 118,
-    SDL_SCANCODE_SELECT = 119,
-    SDL_SCANCODE_STOP = 120,
-    SDL_SCANCODE_AGAIN = 121,   /**< redo */
-    SDL_SCANCODE_UNDO = 122,
-    SDL_SCANCODE_CUT = 123,
-    SDL_SCANCODE_COPY = 124,
-    SDL_SCANCODE_PASTE = 125,
-    SDL_SCANCODE_FIND = 126,
-    SDL_SCANCODE_MUTE = 127,
-    SDL_SCANCODE_VOLUMEUP = 128,
-    SDL_SCANCODE_VOLUMEDOWN = 129,
-/* not sure whether there's a reason to enable these */
-/*     SDL_SCANCODE_LOCKINGCAPSLOCK = 130,  */
-/*     SDL_SCANCODE_LOCKINGNUMLOCK = 131, */
-/*     SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */
-    SDL_SCANCODE_KP_COMMA = 133,
-    SDL_SCANCODE_KP_EQUALSAS400 = 134,
-
-    SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see
-                                            footnotes in USB doc */
-    SDL_SCANCODE_INTERNATIONAL2 = 136,
-    SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */
-    SDL_SCANCODE_INTERNATIONAL4 = 138,
-    SDL_SCANCODE_INTERNATIONAL5 = 139,
-    SDL_SCANCODE_INTERNATIONAL6 = 140,
-    SDL_SCANCODE_INTERNATIONAL7 = 141,
-    SDL_SCANCODE_INTERNATIONAL8 = 142,
-    SDL_SCANCODE_INTERNATIONAL9 = 143,
-    SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */
-    SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */
-    SDL_SCANCODE_LANG3 = 146, /**< Katakana */
-    SDL_SCANCODE_LANG4 = 147, /**< Hiragana */
-    SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */
-    SDL_SCANCODE_LANG6 = 149, /**< reserved */
-    SDL_SCANCODE_LANG7 = 150, /**< reserved */
-    SDL_SCANCODE_LANG8 = 151, /**< reserved */
-    SDL_SCANCODE_LANG9 = 152, /**< reserved */
-
-    SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */
-    SDL_SCANCODE_SYSREQ = 154,
-    SDL_SCANCODE_CANCEL = 155,
-    SDL_SCANCODE_CLEAR = 156,
-    SDL_SCANCODE_PRIOR = 157,
-    SDL_SCANCODE_RETURN2 = 158,
-    SDL_SCANCODE_SEPARATOR = 159,
-    SDL_SCANCODE_OUT = 160,
-    SDL_SCANCODE_OPER = 161,
-    SDL_SCANCODE_CLEARAGAIN = 162,
-    SDL_SCANCODE_CRSEL = 163,
-    SDL_SCANCODE_EXSEL = 164,
-
-    SDL_SCANCODE_KP_00 = 176,
-    SDL_SCANCODE_KP_000 = 177,
-    SDL_SCANCODE_THOUSANDSSEPARATOR = 178,
-    SDL_SCANCODE_DECIMALSEPARATOR = 179,
-    SDL_SCANCODE_CURRENCYUNIT = 180,
-    SDL_SCANCODE_CURRENCYSUBUNIT = 181,
-    SDL_SCANCODE_KP_LEFTPAREN = 182,
-    SDL_SCANCODE_KP_RIGHTPAREN = 183,
-    SDL_SCANCODE_KP_LEFTBRACE = 184,
-    SDL_SCANCODE_KP_RIGHTBRACE = 185,
-    SDL_SCANCODE_KP_TAB = 186,
-    SDL_SCANCODE_KP_BACKSPACE = 187,
-    SDL_SCANCODE_KP_A = 188,
-    SDL_SCANCODE_KP_B = 189,
-    SDL_SCANCODE_KP_C = 190,
-    SDL_SCANCODE_KP_D = 191,
-    SDL_SCANCODE_KP_E = 192,
-    SDL_SCANCODE_KP_F = 193,
-    SDL_SCANCODE_KP_XOR = 194,
-    SDL_SCANCODE_KP_POWER = 195,
-    SDL_SCANCODE_KP_PERCENT = 196,
-    SDL_SCANCODE_KP_LESS = 197,
-    SDL_SCANCODE_KP_GREATER = 198,
-    SDL_SCANCODE_KP_AMPERSAND = 199,
-    SDL_SCANCODE_KP_DBLAMPERSAND = 200,
-    SDL_SCANCODE_KP_VERTICALBAR = 201,
-    SDL_SCANCODE_KP_DBLVERTICALBAR = 202,
-    SDL_SCANCODE_KP_COLON = 203,
-    SDL_SCANCODE_KP_HASH = 204,
-    SDL_SCANCODE_KP_SPACE = 205,
-    SDL_SCANCODE_KP_AT = 206,
-    SDL_SCANCODE_KP_EXCLAM = 207,
-    SDL_SCANCODE_KP_MEMSTORE = 208,
-    SDL_SCANCODE_KP_MEMRECALL = 209,
-    SDL_SCANCODE_KP_MEMCLEAR = 210,
-    SDL_SCANCODE_KP_MEMADD = 211,
-    SDL_SCANCODE_KP_MEMSUBTRACT = 212,
-    SDL_SCANCODE_KP_MEMMULTIPLY = 213,
-    SDL_SCANCODE_KP_MEMDIVIDE = 214,
-    SDL_SCANCODE_KP_PLUSMINUS = 215,
-    SDL_SCANCODE_KP_CLEAR = 216,
-    SDL_SCANCODE_KP_CLEARENTRY = 217,
-    SDL_SCANCODE_KP_BINARY = 218,
-    SDL_SCANCODE_KP_OCTAL = 219,
-    SDL_SCANCODE_KP_DECIMAL = 220,
-    SDL_SCANCODE_KP_HEXADECIMAL = 221,
-
-    SDL_SCANCODE_LCTRL = 224,
-    SDL_SCANCODE_LSHIFT = 225,
-    SDL_SCANCODE_LALT = 226, /**< alt, option */
-    SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */
-    SDL_SCANCODE_RCTRL = 228,
-    SDL_SCANCODE_RSHIFT = 229,
-    SDL_SCANCODE_RALT = 230, /**< alt gr, option */
-    SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */
-
-    SDL_SCANCODE_MODE = 257,    /**< I'm not sure if this is really not covered
-                                 *   by any of the above, but since there's a
-                                 *   special KMOD_MODE for it I'm adding it here
-                                 */
-
-    /* @} *//* Usage page 0x07 */
-
-    /**
-     *  \name Usage page 0x0C
-     *
-     *  These values are mapped from usage page 0x0C (USB consumer page).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_AUDIONEXT = 258,
-    SDL_SCANCODE_AUDIOPREV = 259,
-    SDL_SCANCODE_AUDIOSTOP = 260,
-    SDL_SCANCODE_AUDIOPLAY = 261,
-    SDL_SCANCODE_AUDIOMUTE = 262,
-    SDL_SCANCODE_MEDIASELECT = 263,
-    SDL_SCANCODE_WWW = 264,
-    SDL_SCANCODE_MAIL = 265,
-    SDL_SCANCODE_CALCULATOR = 266,
-    SDL_SCANCODE_COMPUTER = 267,
-    SDL_SCANCODE_AC_SEARCH = 268,
-    SDL_SCANCODE_AC_HOME = 269,
-    SDL_SCANCODE_AC_BACK = 270,
-    SDL_SCANCODE_AC_FORWARD = 271,
-    SDL_SCANCODE_AC_STOP = 272,
-    SDL_SCANCODE_AC_REFRESH = 273,
-    SDL_SCANCODE_AC_BOOKMARKS = 274,
-
-    /* @} *//* Usage page 0x0C */
-
-    /**
-     *  \name Walther keys
-     *
-     *  These are values that Christian Walther added (for mac keyboard?).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_BRIGHTNESSDOWN = 275,
-    SDL_SCANCODE_BRIGHTNESSUP = 276,
-    SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display
-                                           switch, video mode switch */
-    SDL_SCANCODE_KBDILLUMTOGGLE = 278,
-    SDL_SCANCODE_KBDILLUMDOWN = 279,
-    SDL_SCANCODE_KBDILLUMUP = 280,
-    SDL_SCANCODE_EJECT = 281,
-    SDL_SCANCODE_SLEEP = 282,
-
-    SDL_SCANCODE_APP1 = 283,
-    SDL_SCANCODE_APP2 = 284,
-
-    /* @} *//* Walther keys */
-
-    /**
-     *  \name Usage page 0x0C (additional media keys)
-     *
-     *  These values are mapped from usage page 0x0C (USB consumer page).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_AUDIOREWIND = 285,
-    SDL_SCANCODE_AUDIOFASTFORWARD = 286,
-
-    /* @} *//* Usage page 0x0C (additional media keys) */
-
-    /* Add any other keys here. */
-
-    SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes
-                                 for array bounds */
-} SDL_Scancode;
-
-#endif /* SDL_scancode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_sensor.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_sensor.h
deleted file mode 100644 (file)
index 966adbf..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_sensor.h
- *
- *  Include file for SDL sensor event handling
- *
- */
-
-#ifndef SDL_sensor_h_
-#define SDL_sensor_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-/**
- *  \brief SDL_sensor.h
- *
- *  In order to use these functions, SDL_Init() must have been called
- *  with the ::SDL_INIT_SENSOR flag.  This causes SDL to scan the system
- *  for sensors, and load appropriate drivers.
- */
-
-struct _SDL_Sensor;
-typedef struct _SDL_Sensor SDL_Sensor;
-
-/**
- * This is a unique ID for a sensor for the time it is connected to the system,
- * and is never reused for the lifetime of the application.
- *
- * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
- */
-typedef Sint32 SDL_SensorID;
-
-/* The different sensors defined by SDL
- *
- * Additional sensors may be available, using platform dependent semantics.
- *
- * Hare are the additional Android sensors:
- * https://developer.android.com/reference/android/hardware/SensorEvent.html#values
- */
-typedef enum
-{
-    SDL_SENSOR_INVALID = -1,    /**< Returned for an invalid sensor */
-    SDL_SENSOR_UNKNOWN,         /**< Unknown sensor type */
-    SDL_SENSOR_ACCEL,           /**< Accelerometer */
-    SDL_SENSOR_GYRO             /**< Gyroscope */
-} SDL_SensorType;
-
-/**
- * Accelerometer sensor
- *
- * The accelerometer returns the current acceleration in SI meters per
- * second squared. This includes gravity, so a device at rest will have
- * an acceleration of SDL_STANDARD_GRAVITY straight down.
- *
- * values[0]: Acceleration on the x axis
- * values[1]: Acceleration on the y axis
- * values[2]: Acceleration on the z axis
- *
- * For phones held in portrait mode, the axes are defined as follows:
- * -X ... +X : left ... right
- * -Y ... +Y : bottom ... top
- * -Z ... +Z : farther ... closer
- * 
- * The axis data is not changed when the phone is rotated.
- *
- * \sa SDL_GetDisplayOrientation()
- */
-#define SDL_STANDARD_GRAVITY    9.80665f
-
-/**
- * Gyroscope sensor
- *
- * The gyroscope returns the current rate of rotation in radians per second.
- * The rotation is positive in the counter-clockwise direction. That is,
- * an observer looking from a positive location on one of the axes would
- * see positive rotation on that axis when it appeared to be rotating
- * counter-clockwise.
- *
- * values[0]: Angular speed around the x axis
- * values[1]: Angular speed around the y axis
- * values[2]: Angular speed around the z axis
- *
- * For phones held in portrait mode, the axes are defined as follows:
- * -X ... +X : left ... right
- * -Y ... +Y : bottom ... top
- * -Z ... +Z : farther ... closer
- * 
- * The axis data is not changed when the phone is rotated.
- *
- * \sa SDL_GetDisplayOrientation()
- */
-
-/* Function prototypes */
-
-/**
- *  \brief Count the number of sensors attached to the system right now
- */
-extern DECLSPEC int SDLCALL SDL_NumSensors(void);
-
-/**
- *  \brief Get the implementation dependent name of a sensor.
- *
- *  This can be called before any sensors are opened.
- * 
- *  \return The sensor name, or NULL if device_index is out of range.
- */
-extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
-
-/**
- *  \brief Get the type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor type, or SDL_SENSOR_INVALID if device_index is out of range.
- */
-extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index);
-
-/**
- *  \brief Get the platform dependent type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor platform dependent type, or -1 if device_index is out of range.
- */
-extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index);
-
-/**
- *  \brief Get the instance ID of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor instance ID, or -1 if device_index is out of range.
- */
-extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index);
-
-/**
- *  \brief Open a sensor for use.
- *
- *  The index passed as an argument refers to the N'th sensor on the system.
- *
- *  \return A sensor identifier, or NULL if an error occurred.
- */
-extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
-
-/**
- * Return the SDL_Sensor associated with an instance id.
- */
-extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id);
-
-/**
- *  \brief Get the implementation dependent name of a sensor.
- *
- *  \return The sensor name, or NULL if the sensor is NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
-
-/**
- *  \brief Get the type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor type, or SDL_SENSOR_INVALID if the sensor is NULL.
- */
-extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
-
-/**
- *  \brief Get the platform dependent type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor platform dependent type, or -1 if the sensor is NULL.
- */
-extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
-
-/**
- *  \brief Get the instance ID of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor instance ID, or -1 if the sensor is NULL.
- */
-extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor);
-
-/**
- *  Get the current state of an opened sensor.
- *
- *  The number of values and interpretation of the data is sensor dependent.
- *
- *  \param sensor The sensor to query
- *  \param data A pointer filled with the current sensor state
- *  \param num_values The number of values to write to data
- *
- *  \return 0 or -1 if an error occurred.
- */
-extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor * sensor, float *data, int num_values);
-
-/**
- *  Close a sensor previously opened with SDL_SensorOpen()
- */
-extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor * sensor);
-
-/**
- *  Update the current state of the open sensors.
- *
- *  This is called automatically by the event loop if sensor events are enabled.
- *
- *  This needs to be called from the thread that initialized the sensor subsystem.
- */
-extern DECLSPEC void SDLCALL SDL_SensorUpdate(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-#include "close_code.h"
-
-#endif /* SDL_sensor_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_shape.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_shape.h
deleted file mode 100644 (file)
index 2ab43fc..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_shape_h_
-#define SDL_shape_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_pixels.h"
-#include "SDL_rect.h"
-#include "SDL_surface.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** \file SDL_shape.h
- *
- * Header file for the shaped window API.
- */
-
-#define SDL_NONSHAPEABLE_WINDOW -1
-#define SDL_INVALID_SHAPE_ARGUMENT -2
-#define SDL_WINDOW_LACKS_SHAPE -3
-
-/**
- *  \brief Create a window that can be shaped with the specified position, dimensions, and flags.
- *
- *  \param title The title of the window, in UTF-8 encoding.
- *  \param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param w     The width of the window.
- *  \param h     The height of the window.
- *  \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with any of the following:
- *               ::SDL_WINDOW_OPENGL,     ::SDL_WINDOW_INPUT_GRABBED,
- *               ::SDL_WINDOW_HIDDEN,     ::SDL_WINDOW_RESIZABLE,
- *               ::SDL_WINDOW_MAXIMIZED,  ::SDL_WINDOW_MINIMIZED,
- *       ::SDL_WINDOW_BORDERLESS is always set, and ::SDL_WINDOW_FULLSCREEN is always unset.
- *
- *  \return The window created, or NULL if window creation failed.
- *
- *  \sa SDL_DestroyWindow()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags);
-
-/**
- * \brief Return whether the given window is a shaped window.
- *
- * \param window The window to query for being shaped.
- *
- * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if the window is unshaped or NULL.
- *
- * \sa SDL_CreateShapedWindow
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window);
-
-/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */
-typedef enum {
-    /** \brief The default mode, a binarized alpha cutoff of 1. */
-    ShapeModeDefault,
-    /** \brief A binarized alpha cutoff with a given integer value. */
-    ShapeModeBinarizeAlpha,
-    /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */
-    ShapeModeReverseBinarizeAlpha,
-    /** \brief A color key is applied. */
-    ShapeModeColorKey
-} WindowShapeMode;
-
-#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha)
-
-/** \brief A union containing parameters for shaped windows. */
-typedef union {
-    /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */
-    Uint8 binarizationCutoff;
-    SDL_Color colorKey;
-} SDL_WindowShapeParams;
-
-/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */
-typedef struct SDL_WindowShapeMode {
-    /** \brief The mode of these window-shape parameters. */
-    WindowShapeMode mode;
-    /** \brief Window-shape parameters. */
-    SDL_WindowShapeParams parameters;
-} SDL_WindowShapeMode;
-
-/**
- * \brief Set the shape and parameters of a shaped window.
- *
- * \param window The shaped window whose parameters should be set.
- * \param shape A surface encoding the desired shape for the window.
- * \param shape_mode The parameters to set for the shaped window.
- *
- * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape argument, or SDL_NONSHAPEABLE_WINDOW
- *           if the SDL_Window given does not reference a valid shaped window.
- *
- * \sa SDL_WindowShapeMode
- * \sa SDL_GetShapedWindowMode.
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode);
-
-/**
- * \brief Get the shape parameters of a shaped window.
- *
- * \param window The shaped window whose parameters should be retrieved.
- * \param shape_mode An empty shape-mode structure to fill, or NULL to check whether the window has a shape.
- *
- * \return 0 if the window has a shape and, provided shape_mode was not NULL, shape_mode has been filled with the mode
- *           data, SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped window, or SDL_WINDOW_LACKS_SHAPE if
- *           the SDL_Window given is a shapeable window currently lacking a shape.
- *
- * \sa SDL_WindowShapeMode
- * \sa SDL_SetWindowShape
- */
-extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_shape_h_ */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_stdinc.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_stdinc.h
deleted file mode 100644 (file)
index 28bb7b9..0000000
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_stdinc.h
- *
- *  This is a general header that includes C language support.
- */
-
-#ifndef SDL_stdinc_h_
-#define SDL_stdinc_h_
-
-#include "SDL_config.h"
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#if defined(STDC_HEADERS)
-# include <stdlib.h>
-# include <stddef.h>
-# include <stdarg.h>
-#else
-# if defined(HAVE_STDLIB_H)
-#  include <stdlib.h>
-# elif defined(HAVE_MALLOC_H)
-#  include <malloc.h>
-# endif
-# if defined(HAVE_STDDEF_H)
-#  include <stddef.h>
-# endif
-# if defined(HAVE_STDARG_H)
-#  include <stdarg.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_WCHAR_H
-# include <wchar.h>
-#endif
-#if defined(HAVE_INTTYPES_H)
-# include <inttypes.h>
-#elif defined(HAVE_STDINT_H)
-# include <stdint.h>
-#endif
-#ifdef HAVE_CTYPE_H
-# include <ctype.h>
-#endif
-#ifdef HAVE_MATH_H
-# if defined(__WINRT__)
-/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on
-   WinRT.  See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
-   for more information.
-*/
-#  define _USE_MATH_DEFINES
-# endif
-# include <math.h>
-#endif
-#ifdef HAVE_FLOAT_H
-# include <float.h>
-#endif
-#if defined(HAVE_ALLOCA) && !defined(alloca)
-# if defined(HAVE_ALLOCA_H)
-#  include <alloca.h>
-# elif defined(__GNUC__)
-#  define alloca __builtin_alloca
-# elif defined(_MSC_VER)
-#  include <malloc.h>
-#  define alloca _alloca
-# elif defined(__WATCOMC__)
-#  include <malloc.h>
-# elif defined(__BORLANDC__)
-#  include <malloc.h>
-# elif defined(__DMC__)
-#  include <stdlib.h>
-# elif defined(__AIX__)
-#pragma alloca
-# elif defined(__MRC__)
-void *alloca(unsigned);
-# else
-char *alloca();
-# endif
-#endif
-
-/**
- *  The number of elements in an array.
- */
-#define SDL_arraysize(array)    (sizeof(array)/sizeof(array[0]))
-#define SDL_TABLESIZE(table)    SDL_arraysize(table)
-
-/**
- *  Macro useful for building other macros with strings in them
- *
- *  e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")
- */
-#define SDL_STRINGIFY_ARG(arg)  #arg
-
-/**
- *  \name Cast operators
- *
- *  Use proper C++ casts when compiled as C++ to be compatible with the option
- *  -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).
- */
-/* @{ */
-#ifdef __cplusplus
-#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
-#define SDL_static_cast(type, expression) static_cast<type>(expression)
-#define SDL_const_cast(type, expression) const_cast<type>(expression)
-#else
-#define SDL_reinterpret_cast(type, expression) ((type)(expression))
-#define SDL_static_cast(type, expression) ((type)(expression))
-#define SDL_const_cast(type, expression) ((type)(expression))
-#endif
-/* @} *//* Cast operators */
-
-/* Define a four character code as a Uint32 */
-#define SDL_FOURCC(A, B, C, D) \
-    ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
-     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
-     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
-     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
-
-/**
- *  \name Basic data types
- */
-/* @{ */
-
-#ifdef __CC_ARM
-/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */
-#define SDL_FALSE 0
-#define SDL_TRUE 1
-typedef int SDL_bool;
-#else
-typedef enum
-{
-    SDL_FALSE = 0,
-    SDL_TRUE = 1
-} SDL_bool;
-#endif
-
-/**
- * \brief A signed 8-bit integer type.
- */
-#define SDL_MAX_SINT8   ((Sint8)0x7F)           /* 127 */
-#define SDL_MIN_SINT8   ((Sint8)(~0x7F))        /* -128 */
-typedef int8_t Sint8;
-/**
- * \brief An unsigned 8-bit integer type.
- */
-#define SDL_MAX_UINT8   ((Uint8)0xFF)           /* 255 */
-#define SDL_MIN_UINT8   ((Uint8)0x00)           /* 0 */
-typedef uint8_t Uint8;
-/**
- * \brief A signed 16-bit integer type.
- */
-#define SDL_MAX_SINT16  ((Sint16)0x7FFF)        /* 32767 */
-#define SDL_MIN_SINT16  ((Sint16)(~0x7FFF))     /* -32768 */
-typedef int16_t Sint16;
-/**
- * \brief An unsigned 16-bit integer type.
- */
-#define SDL_MAX_UINT16  ((Uint16)0xFFFF)        /* 65535 */
-#define SDL_MIN_UINT16  ((Uint16)0x0000)        /* 0 */
-typedef uint16_t Uint16;
-/**
- * \brief A signed 32-bit integer type.
- */
-#define SDL_MAX_SINT32  ((Sint32)0x7FFFFFFF)    /* 2147483647 */
-#define SDL_MIN_SINT32  ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
-typedef int32_t Sint32;
-/**
- * \brief An unsigned 32-bit integer type.
- */
-#define SDL_MAX_UINT32  ((Uint32)0xFFFFFFFFu)   /* 4294967295 */
-#define SDL_MIN_UINT32  ((Uint32)0x00000000)    /* 0 */
-typedef uint32_t Uint32;
-
-/**
- * \brief A signed 64-bit integer type.
- */
-#define SDL_MAX_SINT64  ((Sint64)0x7FFFFFFFFFFFFFFFll)      /* 9223372036854775807 */
-#define SDL_MIN_SINT64  ((Sint64)(~0x7FFFFFFFFFFFFFFFll))   /* -9223372036854775808 */
-typedef int64_t Sint64;
-/**
- * \brief An unsigned 64-bit integer type.
- */
-#define SDL_MAX_UINT64  ((Uint64)0xFFFFFFFFFFFFFFFFull)     /* 18446744073709551615 */
-#define SDL_MIN_UINT64  ((Uint64)(0x0000000000000000ull))   /* 0 */
-typedef uint64_t Uint64;
-
-/* @} *//* Basic data types */
-
-/* Make sure we have macros for printing 64 bit values.
- * <stdint.h> should define these but this is not true all platforms.
- * (for example win32) */
-#ifndef SDL_PRIs64
-#ifdef PRIs64
-#define SDL_PRIs64 PRIs64
-#elif defined(__WIN32__)
-#define SDL_PRIs64 "I64d"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIs64 "ld"
-#else
-#define SDL_PRIs64 "lld"
-#endif
-#endif
-#ifndef SDL_PRIu64
-#ifdef PRIu64
-#define SDL_PRIu64 PRIu64
-#elif defined(__WIN32__)
-#define SDL_PRIu64 "I64u"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIu64 "lu"
-#else
-#define SDL_PRIu64 "llu"
-#endif
-#endif
-#ifndef SDL_PRIx64
-#ifdef PRIx64
-#define SDL_PRIx64 PRIx64
-#elif defined(__WIN32__)
-#define SDL_PRIx64 "I64x"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIx64 "lx"
-#else
-#define SDL_PRIx64 "llx"
-#endif
-#endif
-#ifndef SDL_PRIX64
-#ifdef PRIX64
-#define SDL_PRIX64 PRIX64
-#elif defined(__WIN32__)
-#define SDL_PRIX64 "I64X"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIX64 "lX"
-#else
-#define SDL_PRIX64 "llX"
-#endif
-#endif
-
-/* Annotations to help code analysis tools */
-#ifdef SDL_DISABLE_ANALYZE_MACROS
-#define SDL_IN_BYTECAP(x)
-#define SDL_INOUT_Z_CAP(x)
-#define SDL_OUT_Z_CAP(x)
-#define SDL_OUT_CAP(x)
-#define SDL_OUT_BYTECAP(x)
-#define SDL_OUT_Z_BYTECAP(x)
-#define SDL_PRINTF_FORMAT_STRING
-#define SDL_SCANF_FORMAT_STRING
-#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
-#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
-#else
-#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */
-#include <sal.h>
-
-#define SDL_IN_BYTECAP(x) _In_bytecount_(x)
-#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x)
-#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x)
-#define SDL_OUT_CAP(x) _Out_cap_(x)
-#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x)
-#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x)
-
-#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_
-#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_
-#else
-#define SDL_IN_BYTECAP(x)
-#define SDL_INOUT_Z_CAP(x)
-#define SDL_OUT_Z_CAP(x)
-#define SDL_OUT_CAP(x)
-#define SDL_OUT_BYTECAP(x)
-#define SDL_OUT_Z_BYTECAP(x)
-#define SDL_PRINTF_FORMAT_STRING
-#define SDL_SCANF_FORMAT_STRING
-#endif
-#if defined(__GNUC__)
-#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 )))
-#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 )))
-#else
-#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
-#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
-#endif
-#endif /* SDL_DISABLE_ANALYZE_MACROS */
-
-#define SDL_COMPILE_TIME_ASSERT(name, x)               \
-       typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]
-/** \cond */
-#ifndef DOXYGEN_SHOULD_IGNORE_THIS
-SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
-SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
-SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
-SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
-SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
-SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
-SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
-SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
-#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
-/** \endcond */
-
-/* Check to make sure enums are the size of ints, for structure packing.
-   For both Watcom C/C++ and Borland C/C++ the compiler option that makes
-   enums having the size of an int must be enabled.
-   This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
-*/
-
-/** \cond */
-#ifndef DOXYGEN_SHOULD_IGNORE_THIS
-#if !defined(__ANDROID__)
-   /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
-typedef enum
-{
-    DUMMY_ENUM_VALUE
-} SDL_DUMMY_ENUM;
-
-SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
-#endif
-#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
-/** \endcond */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef HAVE_ALLOCA
-#define SDL_stack_alloc(type, count)    (type*)alloca(sizeof(type)*(count))
-#define SDL_stack_free(data)
-#else
-#define SDL_stack_alloc(type, count)    (type*)SDL_malloc(sizeof(type)*(count))
-#define SDL_stack_free(data)            SDL_free(data)
-#endif
-
-extern DECLSPEC void *SDLCALL SDL_malloc(size_t size);
-extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
-extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);
-extern DECLSPEC void SDLCALL SDL_free(void *mem);
-
-typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
-typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size);
-typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);
-typedef void (SDLCALL *SDL_free_func)(void *mem);
-
-/**
- *  \brief Get the current set of SDL memory functions
- */
-extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,
-                                                    SDL_calloc_func *calloc_func,
-                                                    SDL_realloc_func *realloc_func,
-                                                    SDL_free_func *free_func);
-
-/**
- *  \brief Replace SDL's memory allocation functions with a custom set
- *
- *  \note If you are replacing SDL's memory functions, you should call
- *        SDL_GetNumAllocations() and be very careful if it returns non-zero.
- *        That means that your free function will be called with memory
- *        allocated by the previous memory allocation functions.
- */
-extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
-                                                   SDL_calloc_func calloc_func,
-                                                   SDL_realloc_func realloc_func,
-                                                   SDL_free_func free_func);
-
-/**
- *  \brief Get the number of outstanding (unfreed) allocations
- */
-extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);
-
-extern DECLSPEC char *SDLCALL SDL_getenv(const char *name);
-extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);
-
-extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (*compare) (const void *, const void *));
-
-extern DECLSPEC int SDLCALL SDL_abs(int x);
-
-/* !!! FIXME: these have side effects. You probably shouldn't use them. */
-/* !!! FIXME: Maybe we do forceinline functions of SDL_mini, SDL_minf, etc? */
-#define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
-#define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
-
-extern DECLSPEC int SDLCALL SDL_isdigit(int x);
-extern DECLSPEC int SDLCALL SDL_isspace(int x);
-extern DECLSPEC int SDLCALL SDL_toupper(int x);
-extern DECLSPEC int SDLCALL SDL_tolower(int x);
-
-extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);
-
-#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
-#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
-
-/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */
-SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)
-{
-#if defined(__GNUC__) && defined(i386)
-    int u0, u1, u2;
-    __asm__ __volatile__ (
-        "cld \n\t"
-        "rep ; stosl \n\t"
-        : "=&D" (u0), "=&a" (u1), "=&c" (u2)
-        : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords))
-        : "memory"
-    );
-#else
-    size_t _n = (dwords + 3) / 4;
-    Uint32 *_p = SDL_static_cast(Uint32 *, dst);
-    Uint32 _val = (val);
-    if (dwords == 0)
-        return;
-    switch (dwords % 4)
-    {
-        case 0: do {    *_p++ = _val;   /* fallthrough */
-        case 3:         *_p++ = _val;   /* fallthrough */
-        case 2:         *_p++ = _val;   /* fallthrough */
-        case 1:         *_p++ = _val;   /* fallthrough */
-        } while ( --_n );
-    }
-#endif
-}
-
-extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
-
-extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
-extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
-
-extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr);
-extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr);
-extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
-extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
-extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2);
-
-extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);
-extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
-extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
-extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
-extern DECLSPEC char *SDLCALL SDL_strdup(const char *str);
-extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
-extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
-extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
-extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);
-extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c);
-extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle);
-extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str);
-
-extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix);
-
-extern DECLSPEC int SDLCALL SDL_atoi(const char *str);
-extern DECLSPEC double SDLCALL SDL_atof(const char *str);
-extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base);
-extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base);
-extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base);
-extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base);
-extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp);
-
-extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);
-extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);
-extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
-extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
-
-extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);
-extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap);
-extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3);
-extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap);
-
-#ifndef HAVE_M_PI
-#ifndef M_PI
-#define M_PI    3.14159265358979323846264338327950288   /**< pi */
-#endif
-#endif
-
-extern DECLSPEC double SDLCALL SDL_acos(double x);
-extern DECLSPEC float SDLCALL SDL_acosf(float x);
-extern DECLSPEC double SDLCALL SDL_asin(double x);
-extern DECLSPEC float SDLCALL SDL_asinf(float x);
-extern DECLSPEC double SDLCALL SDL_atan(double x);
-extern DECLSPEC float SDLCALL SDL_atanf(float x);
-extern DECLSPEC double SDLCALL SDL_atan2(double x, double y);
-extern DECLSPEC float SDLCALL SDL_atan2f(float x, float y);
-extern DECLSPEC double SDLCALL SDL_ceil(double x);
-extern DECLSPEC float SDLCALL SDL_ceilf(float x);
-extern DECLSPEC double SDLCALL SDL_copysign(double x, double y);
-extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y);
-extern DECLSPEC double SDLCALL SDL_cos(double x);
-extern DECLSPEC float SDLCALL SDL_cosf(float x);
-extern DECLSPEC double SDLCALL SDL_exp(double x);
-extern DECLSPEC float SDLCALL SDL_expf(float x);
-extern DECLSPEC double SDLCALL SDL_fabs(double x);
-extern DECLSPEC float SDLCALL SDL_fabsf(float x);
-extern DECLSPEC double SDLCALL SDL_floor(double x);
-extern DECLSPEC float SDLCALL SDL_floorf(float x);
-extern DECLSPEC double SDLCALL SDL_fmod(double x, double y);
-extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y);
-extern DECLSPEC double SDLCALL SDL_log(double x);
-extern DECLSPEC float SDLCALL SDL_logf(float x);
-extern DECLSPEC double SDLCALL SDL_log10(double x);
-extern DECLSPEC float SDLCALL SDL_log10f(float x);
-extern DECLSPEC double SDLCALL SDL_pow(double x, double y);
-extern DECLSPEC float SDLCALL SDL_powf(float x, float y);
-extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n);
-extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n);
-extern DECLSPEC double SDLCALL SDL_sin(double x);
-extern DECLSPEC float SDLCALL SDL_sinf(float x);
-extern DECLSPEC double SDLCALL SDL_sqrt(double x);
-extern DECLSPEC float SDLCALL SDL_sqrtf(float x);
-extern DECLSPEC double SDLCALL SDL_tan(double x);
-extern DECLSPEC float SDLCALL SDL_tanf(float x);
-
-/* The SDL implementation of iconv() returns these error codes */
-#define SDL_ICONV_ERROR     (size_t)-1
-#define SDL_ICONV_E2BIG     (size_t)-2
-#define SDL_ICONV_EILSEQ    (size_t)-3
-#define SDL_ICONV_EINVAL    (size_t)-4
-
-/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */
-typedef struct _SDL_iconv_t *SDL_iconv_t;
-extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode,
-                                                   const char *fromcode);
-extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd);
-extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
-                                         size_t * inbytesleft, char **outbuf,
-                                         size_t * outbytesleft);
-/**
- *  This function converts a string between encodings in one pass, returning a
- *  string that must be freed with SDL_free() or NULL on error.
- */
-extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
-                                               const char *fromcode,
-                                               const char *inbuf,
-                                               size_t inbytesleft);
-#define SDL_iconv_utf8_locale(S)    SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
-#define SDL_iconv_utf8_ucs2(S)      (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
-#define SDL_iconv_utf8_ucs4(S)      (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
-
-/* force builds using Clang's static analysis tools to use literal C runtime
-   here, since there are possibly tests that are ineffective otherwise. */
-#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
-#define SDL_malloc malloc
-#define SDL_calloc calloc
-#define SDL_realloc realloc
-#define SDL_free free
-#define SDL_memset memset
-#define SDL_memcpy memcpy
-#define SDL_memmove memmove
-#define SDL_memcmp memcmp
-#define SDL_strlen strlen
-#define SDL_strlcpy strlcpy
-#define SDL_strlcat strlcat
-#define SDL_strdup strdup
-#define SDL_strchr strchr
-#define SDL_strrchr strrchr
-#define SDL_strstr strstr
-#define SDL_strcmp strcmp
-#define SDL_strncmp strncmp
-#define SDL_strcasecmp strcasecmp
-#define SDL_strncasecmp strncasecmp
-#define SDL_sscanf sscanf
-#define SDL_vsscanf vsscanf
-#define SDL_snprintf snprintf
-#define SDL_vsnprintf vsnprintf
-#endif
-
-SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)
-{
-    return SDL_memcpy(dst, src, dwords * 4);
-}
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_stdinc_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_surface.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_surface.h
deleted file mode 100644 (file)
index 51a1283..0000000
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_surface.h
- *
- *  Header file for ::SDL_Surface definition and management functions.
- */
-
-#ifndef SDL_surface_h_
-#define SDL_surface_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_pixels.h"
-#include "SDL_rect.h"
-#include "SDL_blendmode.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \name Surface flags
- *
- *  These are the currently supported flags for the ::SDL_Surface.
- *
- *  \internal
- *  Used internally (read-only).
- */
-/* @{ */
-#define SDL_SWSURFACE       0           /**< Just here for compatibility */
-#define SDL_PREALLOC        0x00000001  /**< Surface uses preallocated memory */
-#define SDL_RLEACCEL        0x00000002  /**< Surface is RLE encoded */
-#define SDL_DONTFREE        0x00000004  /**< Surface is referenced internally */
-#define SDL_SIMD_ALIGNED    0x00000008  /**< Surface uses aligned memory */
-/* @} *//* Surface flags */
-
-/**
- *  Evaluates to true if the surface needs to be locked before access.
- */
-#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)
-
-/**
- * \brief A collection of pixels used in software blitting.
- *
- * \note  This structure should be treated as read-only, except for \c pixels,
- *        which, if not NULL, contains the raw pixel data for the surface.
- */
-typedef struct SDL_Surface
-{
-    Uint32 flags;               /**< Read-only */
-    SDL_PixelFormat *format;    /**< Read-only */
-    int w, h;                   /**< Read-only */
-    int pitch;                  /**< Read-only */
-    void *pixels;               /**< Read-write */
-
-    /** Application data associated with the surface */
-    void *userdata;             /**< Read-write */
-
-    /** information needed for surfaces requiring locks */
-    int locked;                 /**< Read-only */
-    void *lock_data;            /**< Read-only */
-
-    /** clipping information */
-    SDL_Rect clip_rect;         /**< Read-only */
-
-    /** info for fast blit mapping to other surfaces */
-    struct SDL_BlitMap *map;    /**< Private */
-
-    /** Reference count -- used when freeing surface */
-    int refcount;               /**< Read-mostly */
-} SDL_Surface;
-
-/**
- * \brief The type of function used for surface blitting functions.
- */
-typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect,
-                                 struct SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- * \brief The formula used for converting between YUV and RGB
- */
-typedef enum
-{
-    SDL_YUV_CONVERSION_JPEG,        /**< Full range JPEG */
-    SDL_YUV_CONVERSION_BT601,       /**< BT.601 (the default) */
-    SDL_YUV_CONVERSION_BT709,       /**< BT.709 */
-    SDL_YUV_CONVERSION_AUTOMATIC    /**< BT.601 for SD content, BT.709 for HD content */
-} SDL_YUV_CONVERSION_MODE;
-
-/**
- *  Allocate and free an RGB surface.
- *
- *  If the depth is 4 or 8 bits, an empty palette is allocated for the surface.
- *  If the depth is greater than 8 bits, the pixel format is set using the
- *  flags '[RGB]mask'.
- *
- *  If the function runs out of memory, it will return NULL.
- *
- *  \param flags The \c flags are obsolete and should be set to 0.
- *  \param width The width in pixels of the surface to create.
- *  \param height The height in pixels of the surface to create.
- *  \param depth The depth in bits of the surface to create.
- *  \param Rmask The red mask of the surface to create.
- *  \param Gmask The green mask of the surface to create.
- *  \param Bmask The blue mask of the surface to create.
- *  \param Amask The alpha mask of the surface to create.
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface
-    (Uint32 flags, int width, int height, int depth,
-     Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);
-
-/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
-    (Uint32 flags, int width, int height, int depth, Uint32 format);
-
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
-                                                              int width,
-                                                              int height,
-                                                              int depth,
-                                                              int pitch,
-                                                              Uint32 Rmask,
-                                                              Uint32 Gmask,
-                                                              Uint32 Bmask,
-                                                              Uint32 Amask);
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom
-    (void *pixels, int width, int height, int depth, int pitch, Uint32 format);
-extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface);
-
-/**
- *  \brief Set the palette used by a surface.
- *
- *  \return 0, or -1 if the surface format doesn't use a palette.
- *
- *  \note A single palette can be shared with many surfaces.
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface,
-                                                  SDL_Palette * palette);
-
-/**
- *  \brief Sets up a surface for directly accessing the pixels.
- *
- *  Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write
- *  to and read from \c surface->pixels, using the pixel format stored in
- *  \c surface->format.  Once you are done accessing the surface, you should
- *  use SDL_UnlockSurface() to release it.
- *
- *  Not all surfaces require locking.  If SDL_MUSTLOCK(surface) evaluates
- *  to 0, then you can read and write to the surface at any time, and the
- *  pixel format of the surface will not change.
- *
- *  No operating system or library calls should be made between lock/unlock
- *  pairs, as critical system locks may be held during this time.
- *
- *  SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked.
- *
- *  \sa SDL_UnlockSurface()
- */
-extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);
-/** \sa SDL_LockSurface() */
-extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);
-
-/**
- *  Load a surface from a seekable SDL data stream (memory or file).
- *
- *  If \c freesrc is non-zero, the stream will be closed after being read.
- *
- *  The new surface should be freed with SDL_FreeSurface().
- *
- *  \return the new surface, or NULL if there was an error.
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src,
-                                                    int freesrc);
-
-/**
- *  Load a surface from a file.
- *
- *  Convenience macro.
- */
-#define SDL_LoadBMP(file)   SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1)
-
-/**
- *  Save a surface to a seekable SDL data stream (memory or file).
- *
- *  Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the
- *  BMP directly. Other RGB formats with 8-bit or higher get converted to a
- *  24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit
- *  surface before they are saved. YUV and paletted 1-bit and 4-bit formats are
- *  not supported.
- *
- *  If \c freedst is non-zero, the stream will be closed after being written.
- *
- *  \return 0 if successful or -1 if there was an error.
- */
-extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
-    (SDL_Surface * surface, SDL_RWops * dst, int freedst);
-
-/**
- *  Save a surface to a file.
- *
- *  Convenience macro.
- */
-#define SDL_SaveBMP(surface, file) \
-        SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1)
-
-/**
- *  \brief Sets the RLE acceleration hint for a surface.
- *
- *  \return 0 on success, or -1 if the surface is not valid
- *
- *  \note If RLE is enabled, colorkey and alpha blending blits are much faster,
- *        but the surface must be locked before directly accessing the pixels.
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface,
-                                              int flag);
-
-/**
- *  \brief Sets the color key (transparent pixel) in a blittable surface.
- *
- *  \param surface The surface to update
- *  \param flag Non-zero to enable colorkey and 0 to disable colorkey
- *  \param key The transparent pixel in the native surface format
- *
- *  \return 0 on success, or -1 if the surface is not valid
- *
- *  You can pass SDL_RLEACCEL to enable RLE accelerated blits.
- */
-extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,
-                                            int flag, Uint32 key);
-
-/**
- *  \brief Returns whether the surface has a color key
- *
- *  \return SDL_TRUE if the surface has a color key, or SDL_FALSE if the surface is NULL or has no color key
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface);
-
-/**
- *  \brief Gets the color key (transparent pixel) in a blittable surface.
- *
- *  \param surface The surface to update
- *  \param key A pointer filled in with the transparent pixel in the native
- *             surface format
- *
- *  \return 0 on success, or -1 if the surface is not valid or colorkey is not
- *          enabled.
- */
-extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
-                                            Uint32 * key);
-
-/**
- *  \brief Set an additional color value used in blit operations.
- *
- *  \param surface The surface to update.
- *  \param r The red color value multiplied into blit operations.
- *  \param g The green color value multiplied into blit operations.
- *  \param b The blue color value multiplied into blit operations.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_GetSurfaceColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,
-                                                   Uint8 r, Uint8 g, Uint8 b);
-
-
-/**
- *  \brief Get the additional color value used in blit operations.
- *
- *  \param surface The surface to query.
- *  \param r A pointer filled in with the current red color value.
- *  \param g A pointer filled in with the current green color value.
- *  \param b A pointer filled in with the current blue color value.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_SetSurfaceColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,
-                                                   Uint8 * r, Uint8 * g,
-                                                   Uint8 * b);
-
-/**
- *  \brief Set an additional alpha value used in blit operations.
- *
- *  \param surface The surface to update.
- *  \param alpha The alpha value multiplied into blit operations.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_GetSurfaceAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,
-                                                   Uint8 alpha);
-
-/**
- *  \brief Get the additional alpha value used in blit operations.
- *
- *  \param surface The surface to query.
- *  \param alpha A pointer filled in with the current alpha value.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_SetSurfaceAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,
-                                                   Uint8 * alpha);
-
-/**
- *  \brief Set the blend mode used for blit operations.
- *
- *  \param surface The surface to update.
- *  \param blendMode ::SDL_BlendMode to use for blit blending.
- *
- *  \return 0 on success, or -1 if the parameters are not valid.
- *
- *  \sa SDL_GetSurfaceBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,
-                                                    SDL_BlendMode blendMode);
-
-/**
- *  \brief Get the blend mode used for blit operations.
- *
- *  \param surface   The surface to query.
- *  \param blendMode A pointer filled in with the current blend mode.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_SetSurfaceBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
-                                                    SDL_BlendMode *blendMode);
-
-/**
- *  Sets the clipping rectangle for the destination surface in a blit.
- *
- *  If the clip rectangle is NULL, clipping will be disabled.
- *
- *  If the clip rectangle doesn't intersect the surface, the function will
- *  return SDL_FALSE and blits will be completely clipped.  Otherwise the
- *  function returns SDL_TRUE and blits to the surface will be clipped to
- *  the intersection of the surface area and the clipping rectangle.
- *
- *  Note that blits are automatically clipped to the edges of the source
- *  and destination surfaces.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
-                                                 const SDL_Rect * rect);
-
-/**
- *  Gets the clipping rectangle for the destination surface in a blit.
- *
- *  \c rect must be a pointer to a valid rectangle which will be filled
- *  with the correct values.
- */
-extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface,
-                                             SDL_Rect * rect);
-
-/*
- * Creates a new surface identical to the existing surface
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface);
-
-/**
- *  Creates a new surface of the specified format, and then copies and maps
- *  the given surface to it so the blit of the converted surface will be as
- *  fast as possible.  If this function fails, it returns NULL.
- *
- *  The \c flags parameter is passed to SDL_CreateRGBSurface() and has those
- *  semantics.  You can also pass ::SDL_RLEACCEL in the flags parameter and
- *  SDL will try to RLE accelerate colorkey and alpha blits in the resulting
- *  surface.
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
-    (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags);
-extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat
-    (SDL_Surface * src, Uint32 pixel_format, Uint32 flags);
-
-/**
- * \brief Copy a block of pixels of one format to another format
- *
- *  \return 0 on success, or -1 if there was an error
- */
-extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,
-                                              Uint32 src_format,
-                                              const void * src, int src_pitch,
-                                              Uint32 dst_format,
-                                              void * dst, int dst_pitch);
-
-/**
- *  Performs a fast fill of the given rectangle with \c color.
- *
- *  If \c rect is NULL, the whole surface will be filled with \c color.
- *
- *  The color should be a pixel of the format used by the surface, and
- *  can be generated by the SDL_MapRGB() function.
- *
- *  \return 0 on success, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_FillRect
-    (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color);
-extern DECLSPEC int SDLCALL SDL_FillRects
-    (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);
-
-/**
- *  Performs a fast blit from the source surface to the destination surface.
- *
- *  This assumes that the source and destination rectangles are
- *  the same size.  If either \c srcrect or \c dstrect are NULL, the entire
- *  surface (\c src or \c dst) is copied.  The final blit rectangles are saved
- *  in \c srcrect and \c dstrect after all clipping is performed.
- *
- *  \return If the blit is successful, it returns 0, otherwise it returns -1.
- *
- *  The blit function should not be called on a locked surface.
- *
- *  The blit semantics for surfaces with and without blending and colorkey
- *  are defined as follows:
- *  \verbatim
-    RGBA->RGB:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source alpha-channel and per-surface alpha)
-        SDL_SRCCOLORKEY ignored.
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy RGB.
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        RGB values of the source color key, ignoring alpha in the
-        comparison.
-
-    RGB->RGBA:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source per-surface alpha)
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy RGB, set destination alpha to source per-surface alpha value.
-      both:
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        source color key.
-
-    RGBA->RGBA:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source alpha-channel and per-surface alpha)
-        SDL_SRCCOLORKEY ignored.
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy all of RGBA to the destination.
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        RGB values of the source color key, ignoring alpha in the
-        comparison.
-
-    RGB->RGB:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source per-surface alpha)
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy RGB.
-      both:
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        source color key.
-    \endverbatim
- *
- *  You should call SDL_BlitSurface() unless you know exactly how SDL
- *  blitting works internally and how to use the other blit functions.
- */
-#define SDL_BlitSurface SDL_UpperBlit
-
-/**
- *  This is the public blit function, SDL_BlitSurface(), and it performs
- *  rectangle validation and clipping before passing it to SDL_LowerBlit()
- */
-extern DECLSPEC int SDLCALL SDL_UpperBlit
-    (SDL_Surface * src, const SDL_Rect * srcrect,
-     SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  This is a semi-private blit function and it performs low-level surface
- *  blitting only.
- */
-extern DECLSPEC int SDLCALL SDL_LowerBlit
-    (SDL_Surface * src, SDL_Rect * srcrect,
-     SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  \brief Perform a fast, low quality, stretch blit between two surfaces of the
- *         same pixel format.
- *
- *  \note This function uses a static buffer, and is not thread-safe.
- */
-extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,
-                                            const SDL_Rect * srcrect,
-                                            SDL_Surface * dst,
-                                            const SDL_Rect * dstrect);
-
-#define SDL_BlitScaled SDL_UpperBlitScaled
-
-/**
- *  This is the public scaled blit function, SDL_BlitScaled(), and it performs
- *  rectangle validation and clipping before passing it to SDL_LowerBlitScaled()
- */
-extern DECLSPEC int SDLCALL SDL_UpperBlitScaled
-    (SDL_Surface * src, const SDL_Rect * srcrect,
-    SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  This is a semi-private blit function and it performs low-level surface
- *  scaled blitting only.
- */
-extern DECLSPEC int SDLCALL SDL_LowerBlitScaled
-    (SDL_Surface * src, SDL_Rect * srcrect,
-    SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  \brief Set the YUV conversion mode
- */
-extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode);
-
-/**
- *  \brief Get the YUV conversion mode
- */
-extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void);
-
-/**
- *  \brief Get the YUV conversion mode, returning the correct mode for the resolution when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC
- */
-extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_surface_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_system.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_system.h
deleted file mode 100644 (file)
index 3b08407..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_system.h
- *
- *  Include file for platform specific SDL API functions
- */
-
-#ifndef SDL_system_h_
-#define SDL_system_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_keyboard.h"
-#include "SDL_render.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Platform specific functions for Windows */
-#ifdef __WIN32__
-       
-/**
-   \brief Set a function that is called for every windows message, before TranslateMessage()
-*/
-typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam);
-extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata);
-
-/**
-   \brief Returns the D3D9 adapter index that matches the specified display index.
-
-   This adapter index can be passed to IDirect3D9::CreateDevice and controls
-   on which monitor a full screen application will appear.
-*/
-extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );
-
-typedef struct IDirect3DDevice9 IDirect3DDevice9;
-/**
-   \brief Returns the D3D device associated with a renderer, or NULL if it's not a D3D renderer.
-
-   Once you are done using the device, you should release it to avoid a resource leak.
- */
-extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
-
-/**
-   \brief Returns the DXGI Adapter and Output indices for the specified display index.
-
-   These can be passed to EnumAdapters and EnumOutputs respectively to get the objects
-   required to create a DX10 or DX11 device and swap chain.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex );
-
-#endif /* __WIN32__ */
-
-
-/* Platform specific functions for Linux */
-#ifdef __LINUX__
-
-/**
-   \brief Sets the UNIX nice value for a thread, using setpriority() if possible, and RealtimeKit if available.
-
-   \return 0 on success, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority);
-#endif /* __LINUX__ */
-       
-/* Platform specific functions for iOS */
-#if defined(__IPHONEOS__) && __IPHONEOS__
-
-#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)
-extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
-
-#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)
-extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);
-
-#endif /* __IPHONEOS__ */
-
-
-/* Platform specific functions for Android */
-#if defined(__ANDROID__) && __ANDROID__
-
-/**
-   \brief Get the JNI environment for the current thread
-
-   This returns JNIEnv*, but the prototype is void* so we don't need jni.h
- */
-extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void);
-
-/**
-   \brief Get the SDL Activity object for the application
-
-   This returns jobject, but the prototype is void* so we don't need jni.h
-   The jobject returned by SDL_AndroidGetActivity is a local reference.
-   It is the caller's responsibility to properly release it
-   (using env->Push/PopLocalFrame or manually with env->DeleteLocalRef)
- */
-extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);
-
-/**
-   \brief Return true if the application is running on Android TV
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void);
-
-/**
-   \brief Return true if the application is running on a Chromebook
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void);
-
-/**
-  \brief Return true is the application is running on a Samsung DeX docking station
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void);
-
-/**
- \brief Trigger the Android system back button behavior.
- */
-extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void);
-
-/**
-   See the official Android developer guide for more information:
-   http://developer.android.com/guide/topics/data/data-storage.html
-*/
-#define SDL_ANDROID_EXTERNAL_STORAGE_READ   0x01
-#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE  0x02
-
-/**
-   \brief Get the path used for internal storage for this application.
-
-   This path is unique to your application and cannot be written to
-   by other applications.
- */
-extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void);
-
-/**
-   \brief Get the current state of external storage, a bitmask of these values:
-    SDL_ANDROID_EXTERNAL_STORAGE_READ
-    SDL_ANDROID_EXTERNAL_STORAGE_WRITE
-
-   If external storage is currently unavailable, this will return 0.
-*/
-extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void);
-
-/**
-   \brief Get the path used for external storage for this application.
-
-   This path is unique to your application, but is public and can be
-   written to by other applications.
- */
-extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void);
-
-#endif /* __ANDROID__ */
-
-/* Platform specific functions for WinRT */
-#if defined(__WINRT__) && __WINRT__
-
-/**
- *  \brief WinRT / Windows Phone path types
- */
-typedef enum
-{
-    /** \brief The installed app's root directory.
-        Files here are likely to be read-only. */
-    SDL_WINRT_PATH_INSTALLED_LOCATION,
-
-    /** \brief The app's local data store.  Files may be written here */
-    SDL_WINRT_PATH_LOCAL_FOLDER,
-
-    /** \brief The app's roaming data store.  Unsupported on Windows Phone.
-        Files written here may be copied to other machines via a network
-        connection.
-    */
-    SDL_WINRT_PATH_ROAMING_FOLDER,
-
-    /** \brief The app's temporary data store.  Unsupported on Windows Phone.
-        Files written here may be deleted at any time. */
-    SDL_WINRT_PATH_TEMP_FOLDER
-} SDL_WinRT_Path;
-
-
-/**
- *  \brief WinRT Device Family
- */
-typedef enum
-{
-    /** \brief Unknown family  */
-    SDL_WINRT_DEVICEFAMILY_UNKNOWN,
-
-    /** \brief Desktop family*/
-    SDL_WINRT_DEVICEFAMILY_DESKTOP,
-
-    /** \brief Mobile family (for example smartphone) */
-    SDL_WINRT_DEVICEFAMILY_MOBILE,
-
-    /** \brief XBox family */
-    SDL_WINRT_DEVICEFAMILY_XBOX,
-} SDL_WinRT_DeviceFamily;
-
-
-/**
- *  \brief Retrieves a WinRT defined path on the local file system
- *
- *  \note Documentation on most app-specific path types on WinRT
- *      can be found on MSDN, at the URL:
- *      http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
- *
- *  \param pathType The type of path to retrieve.
- *  \return A UCS-2 string (16-bit, wide-char) containing the path, or NULL
- *      if the path is not available for any reason.  Not all paths are
- *      available on all versions of Windows.  This is especially true on
- *      Windows Phone.  Check the documentation for the given
- *      SDL_WinRT_Path for more information on which path types are
- *      supported where.
- */
-extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);
-
-/**
- *  \brief Retrieves a WinRT defined path on the local file system
- *
- *  \note Documentation on most app-specific path types on WinRT
- *      can be found on MSDN, at the URL:
- *      http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
- *
- *  \param pathType The type of path to retrieve.
- *  \return A UTF-8 string (8-bit, multi-byte) containing the path, or NULL
- *      if the path is not available for any reason.  Not all paths are
- *      available on all versions of Windows.  This is especially true on
- *      Windows Phone.  Check the documentation for the given
- *      SDL_WinRT_Path for more information on which path types are
- *      supported where.
- */
-extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType);
-
-/**
- *  \brief Detects the device family of WinRT plattform on runtime
- *
- *  \return Device family
- */
-extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();
-
-#endif /* __WINRT__ */
-
-/**
- \brief Return true if the current device is a tablet.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_system_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_syswm.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_syswm.h
deleted file mode 100644 (file)
index 7aa8c68..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_syswm.h
- *
- *  Include file for SDL custom system window manager hooks.
- */
-
-#ifndef SDL_syswm_h_
-#define SDL_syswm_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-#include "SDL_version.h"
-
-/**
- *  \brief SDL_syswm.h
- *
- *  Your application has access to a special type of event ::SDL_SYSWMEVENT,
- *  which contains window-manager specific information and arrives whenever
- *  an unhandled window event occurs.  This event is ignored by default, but
- *  you can enable it with SDL_EventState().
- */
-struct SDL_SysWMinfo;
-
-#if !defined(SDL_PROTOTYPES_ONLY)
-
-#if defined(SDL_VIDEO_DRIVER_WINDOWS)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_WINRT)
-#include <Inspectable.h>
-#endif
-
-/* This is the structure for custom window manager events */
-#if defined(SDL_VIDEO_DRIVER_X11)
-#if defined(__APPLE__) && defined(__MACH__)
-/* conflicts with Quickdraw.h */
-#define Cursor X11Cursor
-#endif
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-
-#if defined(__APPLE__) && defined(__MACH__)
-/* matches the re-define above */
-#undef Cursor
-#endif
-
-#endif /* defined(SDL_VIDEO_DRIVER_X11) */
-
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-#include <directfb.h>
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_COCOA)
-#ifdef __OBJC__
-@class NSWindow;
-#else
-typedef struct _NSWindow NSWindow;
-#endif
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_UIKIT)
-#ifdef __OBJC__
-#include <UIKit/UIKit.h>
-#else
-typedef struct _UIWindow UIWindow;
-typedef struct _UIViewController UIViewController;
-#endif
-typedef Uint32 GLuint;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_ANDROID)
-typedef struct ANativeWindow ANativeWindow;
-typedef void *EGLSurface;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_VIVANTE)
-#include "SDL_egl.h"
-#endif
-#endif /* SDL_PROTOTYPES_ONLY */
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if !defined(SDL_PROTOTYPES_ONLY)
-/**
- *  These are the various supported windowing subsystems
- */
-typedef enum
-{
-    SDL_SYSWM_UNKNOWN,
-    SDL_SYSWM_WINDOWS,
-    SDL_SYSWM_X11,
-    SDL_SYSWM_DIRECTFB,
-    SDL_SYSWM_COCOA,
-    SDL_SYSWM_UIKIT,
-    SDL_SYSWM_WAYLAND,
-    SDL_SYSWM_MIR,  /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
-    SDL_SYSWM_WINRT,
-    SDL_SYSWM_ANDROID,
-    SDL_SYSWM_VIVANTE,
-    SDL_SYSWM_OS2
-} SDL_SYSWM_TYPE;
-
-/**
- *  The custom event structure.
- */
-struct SDL_SysWMmsg
-{
-    SDL_version version;
-    SDL_SYSWM_TYPE subsystem;
-    union
-    {
-#if defined(SDL_VIDEO_DRIVER_WINDOWS)
-        struct {
-            HWND hwnd;                  /**< The window for the message */
-            UINT msg;                   /**< The type of message */
-            WPARAM wParam;              /**< WORD message parameter */
-            LPARAM lParam;              /**< LONG message parameter */
-        } win;
-#endif
-#if defined(SDL_VIDEO_DRIVER_X11)
-        struct {
-            XEvent event;
-        } x11;
-#endif
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-        struct {
-            DFBEvent event;
-        } dfb;
-#endif
-#if defined(SDL_VIDEO_DRIVER_COCOA)
-        struct
-        {
-            /* Latest version of Xcode clang complains about empty structs in C v. C++:
-                 error: empty struct has size 0 in C, size 1 in C++
-             */
-            int dummy;
-            /* No Cocoa window events yet */
-        } cocoa;
-#endif
-#if defined(SDL_VIDEO_DRIVER_UIKIT)
-        struct
-        {
-            int dummy;
-            /* No UIKit window events yet */
-        } uikit;
-#endif
-#if defined(SDL_VIDEO_DRIVER_VIVANTE)
-        struct
-        {
-            int dummy;
-            /* No Vivante window events yet */
-        } vivante;
-#endif
-        /* Can't have an empty union */
-        int dummy;
-    } msg;
-};
-
-/**
- *  The custom window manager information structure.
- *
- *  When this structure is returned, it holds information about which
- *  low level system it is using, and will be one of SDL_SYSWM_TYPE.
- */
-struct SDL_SysWMinfo
-{
-    SDL_version version;
-    SDL_SYSWM_TYPE subsystem;
-    union
-    {
-#if defined(SDL_VIDEO_DRIVER_WINDOWS)
-        struct
-        {
-            HWND window;                /**< The window handle */
-            HDC hdc;                    /**< The window device context */
-            HINSTANCE hinstance;        /**< The instance handle */
-        } win;
-#endif
-#if defined(SDL_VIDEO_DRIVER_WINRT)
-        struct
-        {
-            IInspectable * window;      /**< The WinRT CoreWindow */
-        } winrt;
-#endif
-#if defined(SDL_VIDEO_DRIVER_X11)
-        struct
-        {
-            Display *display;           /**< The X11 display */
-            Window window;              /**< The X11 window */
-        } x11;
-#endif
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-        struct
-        {
-            IDirectFB *dfb;             /**< The directfb main interface */
-            IDirectFBWindow *window;    /**< The directfb window handle */
-            IDirectFBSurface *surface;  /**< The directfb client surface */
-        } dfb;
-#endif
-#if defined(SDL_VIDEO_DRIVER_COCOA)
-        struct
-        {
-#if defined(__OBJC__) && defined(__has_feature) && __has_feature(objc_arc)
-            NSWindow __unsafe_unretained *window; /**< The Cocoa window */
-#else
-            NSWindow *window;                     /**< The Cocoa window */
-#endif
-        } cocoa;
-#endif
-#if defined(SDL_VIDEO_DRIVER_UIKIT)
-        struct
-        {
-#if defined(__OBJC__) && defined(__has_feature) && __has_feature(objc_arc)
-            UIWindow __unsafe_unretained *window; /**< The UIKit window */
-#else
-            UIWindow *window;                     /**< The UIKit window */
-#endif
-            GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */
-            GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */
-            GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */
-        } uikit;
-#endif
-#if defined(SDL_VIDEO_DRIVER_WAYLAND)
-        struct
-        {
-            struct wl_display *display;            /**< Wayland display */
-            struct wl_surface *surface;            /**< Wayland surface */
-            struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */
-        } wl;
-#endif
-#if defined(SDL_VIDEO_DRIVER_MIR)  /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
-        struct
-        {
-            void *connection;  /**< Mir display server connection */
-            void *surface;  /**< Mir surface */
-        } mir;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_ANDROID)
-        struct
-        {
-            ANativeWindow *window;
-            EGLSurface surface;
-        } android;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_VIVANTE)
-        struct
-        {
-            EGLNativeDisplayType display;
-            EGLNativeWindowType window;
-        } vivante;
-#endif
-
-        /* Make sure this union is always 64 bytes (8 64-bit pointers). */
-        /* Be careful not to overflow this if you add a new target! */
-        Uint8 dummy[64];
-    } info;
-};
-
-#endif /* SDL_PROTOTYPES_ONLY */
-
-typedef struct SDL_SysWMinfo SDL_SysWMinfo;
-
-/* Function prototypes */
-/**
- *  \brief This function allows access to driver-dependent window information.
- *
- *  \param window The window about which information is being requested
- *  \param info This structure must be initialized with the SDL version, and is
- *              then filled in with information about the given window.
- *
- *  \return SDL_TRUE if the function is implemented and the version member of
- *          the \c info struct is valid, SDL_FALSE otherwise.
- *
- *  You typically use this function like this:
- *  \code
- *  SDL_SysWMinfo info;
- *  SDL_VERSION(&info.version);
- *  if ( SDL_GetWindowWMInfo(window, &info) ) { ... }
- *  \endcode
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window,
-                                                     SDL_SysWMinfo * info);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_syswm_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test.h
deleted file mode 100644 (file)
index 17a33dc..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-#ifndef SDL_test_h_
-#define SDL_test_h_
-
-#include "SDL.h"
-#include "SDL_test_assert.h"
-#include "SDL_test_common.h"
-#include "SDL_test_compare.h"
-#include "SDL_test_crc32.h"
-#include "SDL_test_font.h"
-#include "SDL_test_fuzzer.h"
-#include "SDL_test_harness.h"
-#include "SDL_test_images.h"
-#include "SDL_test_log.h"
-#include "SDL_test_md5.h"
-#include "SDL_test_memory.h"
-#include "SDL_test_random.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Global definitions */
-
-/*
- * Note: Maximum size of SDLTest log message is less than SDL's limit
- * to ensure we can fit additional information such as the timestamp.
- */
-#define SDLTEST_MAX_LOGMESSAGE_LENGTH   3584
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_assert.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_assert.h
deleted file mode 100644 (file)
index b3ebb62..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_assert.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- *
- * Assert API for test code and test cases
- *
- */
-
-#ifndef SDL_test_assert_h_
-#define SDL_test_assert_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Fails the assert.
- */
-#define ASSERT_FAIL     0
-
-/**
- * \brief Passes the assert.
- */
-#define ASSERT_PASS     1
-
-/**
- * \brief Assert that logs and break execution flow on failures.
- *
- * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
- * \param assertDescription Message to log with the assert describing it.
- */
-void SDLTest_Assert(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- * \brief Assert for test cases that logs but does not break execution flow on failures. Updates assertion counters.
- *
- * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
- * \param assertDescription Message to log with the assert describing it.
- *
- * \returns Returns the assertCondition so it can be used to externally to break execution flow if desired.
- */
-int SDLTest_AssertCheck(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- * \brief Explicitly pass without checking an assertion condition. Updates assertion counter.
- *
- * \param assertDescription Message to log with the assert describing it.
- */
-void SDLTest_AssertPass(SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- * \brief Resets the assert summary counters to zero.
- */
-void SDLTest_ResetAssertSummary(void);
-
-/**
- * \brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR.
- */
-void SDLTest_LogAssertSummary(void);
-
-
-/**
- * \brief Converts the current assert summary state to a test result.
- *
- * \returns TEST_RESULT_PASSED, TEST_RESULT_FAILED, or TEST_RESULT_NO_ASSERT
- */
-int SDLTest_AssertSummaryToTestResult(void);
-
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_assert_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_common.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_common.h
deleted file mode 100644 (file)
index c34d0d1..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_common.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/* Ported from original test\common.h file. */
-
-#ifndef SDL_test_common_h_
-#define SDL_test_common_h_
-
-#include "SDL.h"
-
-#if defined(__PSP__)
-#define DEFAULT_WINDOW_WIDTH  480
-#define DEFAULT_WINDOW_HEIGHT 272
-#else
-#define DEFAULT_WINDOW_WIDTH  640
-#define DEFAULT_WINDOW_HEIGHT 480
-#endif
-
-#define VERBOSE_VIDEO   0x00000001
-#define VERBOSE_MODES   0x00000002
-#define VERBOSE_RENDER  0x00000004
-#define VERBOSE_EVENT   0x00000008
-#define VERBOSE_AUDIO   0x00000010
-
-typedef struct
-{
-    /* SDL init flags */
-    char **argv;
-    Uint32 flags;
-    Uint32 verbose;
-
-    /* Video info */
-    const char *videodriver;
-    int display;
-    const char *window_title;
-    const char *window_icon;
-    Uint32 window_flags;
-    int window_x;
-    int window_y;
-    int window_w;
-    int window_h;
-    int window_minW;
-    int window_minH;
-    int window_maxW;
-    int window_maxH;
-    int logical_w;
-    int logical_h;
-    float scale;
-    int depth;
-    int refresh_rate;
-    int num_windows;
-    SDL_Window **windows;
-
-    /* Renderer info */
-    const char *renderdriver;
-    Uint32 render_flags;
-    SDL_bool skip_renderer;
-    SDL_Renderer **renderers;
-    SDL_Texture **targets;
-
-    /* Audio info */
-    const char *audiodriver;
-    SDL_AudioSpec audiospec;
-
-    /* GL settings */
-    int gl_red_size;
-    int gl_green_size;
-    int gl_blue_size;
-    int gl_alpha_size;
-    int gl_buffer_size;
-    int gl_depth_size;
-    int gl_stencil_size;
-    int gl_double_buffer;
-    int gl_accum_red_size;
-    int gl_accum_green_size;
-    int gl_accum_blue_size;
-    int gl_accum_alpha_size;
-    int gl_stereo;
-    int gl_multisamplebuffers;
-    int gl_multisamplesamples;
-    int gl_retained_backing;
-    int gl_accelerated;
-    int gl_major_version;
-    int gl_minor_version;
-    int gl_debug;
-    int gl_profile_mask;
-} SDLTest_CommonState;
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-/**
- * \brief Parse command line parameters and create common state.
- *
- * \param argv Array of command line parameters
- * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)
- *
- * \returns Returns a newly allocated common state object.
- */
-SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);
-
-/**
- * \brief Process one common argument.
- *
- * \param state The common state describing the test window to create.
- * \param index The index of the argument to process in argv[].
- *
- * \returns The number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error.
- */
-int SDLTest_CommonArg(SDLTest_CommonState * state, int index);
-
-
-/**
- * \brief Logs command line usage info.
- *
- * This logs the appropriate command line options for the subsystems in use
- *  plus other common options, and then any application-specific options.
- *  This uses the SDL_Log() function and splits up output to be friendly to
- *  80-character-wide terminals.
- *
- * \param state The common state describing the test window for the app.
- * \param argv0 argv[0], as passed to main/SDL_main.
- * \param options an array of strings for application specific options. The last element of the array should be NULL.
- */
-void SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options);
-
-/**
- * \brief Open test window.
- *
- * \param state The common state describing the test window to create.
- *
- * \returns True if initialization succeeded, false otherwise
- */
-SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
-
-/**
- * \brief Easy argument handling when test app doesn't need any custom args.
- *
- * \param state The common state describing the test window to create.
- * \param argc argc, as supplied to SDL_main
- * \param argv argv, as supplied to SDL_main
- *
- * \returns False if app should quit, true otherwise.
- */
-SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv);
-
-/**
- * \brief Common event handler for test windows.
- *
- * \param state The common state used to create test window.
- * \param event The event to handle.
- * \param done Flag indicating we are done.
- *
- */
-void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done);
-
-/**
- * \brief Close test window.
- *
- * \param state The common state used to create test window.
- *
- */
-void SDLTest_CommonQuit(SDLTest_CommonState * state);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_common_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_compare.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_compare.h
deleted file mode 100644 (file)
index 1f751c8..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_compare.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Defines comparison functions (i.e. for surfaces).
-
-*/
-
-#ifndef SDL_test_compare_h_
-#define SDL_test_compare_h_
-
-#include "SDL.h"
-
-#include "SDL_test_images.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Compares a surface and with reference image data for equality
- *
- * \param surface Surface used in comparison
- * \param referenceSurface Test Surface used in comparison
- * \param allowable_error Allowable difference (=sum of squared difference for each RGB component) in blending accuracy.
- *
- * \returns 0 if comparison succeeded, >0 (=number of pixels for which the comparison failed) if comparison failed, -1 if any of the surfaces were NULL, -2 if the surface sizes differ.
- */
-int SDLTest_CompareSurfaces(SDL_Surface *surface, SDL_Surface *referenceSurface, int allowable_error);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_compare_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_crc32.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_crc32.h
deleted file mode 100644 (file)
index e615d89..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_crc32.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Implements CRC32 calculations (default output is Perl String::CRC32 compatible).
-
-*/
-
-#ifndef SDL_test_crc32_h_
-#define SDL_test_crc32_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* ------------ Definitions --------- */
-
-/* Definition shared by all CRC routines */
-
-#ifndef CrcUint32
- #define CrcUint32  unsigned int
-#endif
-#ifndef CrcUint8
- #define CrcUint8   unsigned char
-#endif
-
-#ifdef ORIGINAL_METHOD
- #define CRC32_POLY 0x04c11db7   /* AUTODIN II, Ethernet, & FDDI */
-#else
- #define CRC32_POLY 0xEDB88320   /* Perl String::CRC32 compatible */
-#endif
-
-/**
- * Data structure for CRC32 (checksum) computation
- */
-  typedef struct {
-    CrcUint32    crc32_table[256]; /* CRC table */
-  } SDLTest_Crc32Context;
-
-/* ---------- Function Prototypes ------------- */
-
-/**
- * \brief Initialize the CRC context
- *
- * Note: The function initializes the crc table required for all crc calculations.
- *
- * \param crcContext        pointer to context variable
- *
- * \returns 0 for OK, -1 on error
- *
- */
- int SDLTest_Crc32Init(SDLTest_Crc32Context * crcContext);
-
-
-/**
- * \brief calculate a crc32 from a data block
- *
- * \param crcContext         pointer to context variable
- * \param inBuf              input buffer to checksum
- * \param inLen              length of input buffer
- * \param crc32              pointer to Uint32 to store the final CRC into
- *
- * \returns 0 for OK, -1 on error
- *
- */
-int SDLTest_Crc32Calc(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
-
-/* Same routine broken down into three steps */
-int SDLTest_Crc32CalcStart(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);
-int SDLTest_Crc32CalcEnd(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);
-int SDLTest_Crc32CalcBuffer(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
-
-
-/**
- * \brief clean up CRC context
- *
- * \param crcContext        pointer to context variable
- *
- * \returns 0 for OK, -1 on error
- *
-*/
-
-int SDLTest_Crc32Done(SDLTest_Crc32Context * crcContext);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_crc32_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_font.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_font.h
deleted file mode 100644 (file)
index 8fa0784..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_font.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-#ifndef SDL_test_font_h_
-#define SDL_test_font_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-#define FONT_CHARACTER_SIZE  8
-
-/**
- *  \brief Draw a string in the currently set font.
- *
- *  \param renderer The renderer to draw on.
- *  \param x The X coordinate of the upper left corner of the character.
- *  \param y The Y coordinate of the upper left corner of the character.
- *  \param c The character to draw.
- *
- *  \returns Returns 0 on success, -1 on failure.
- */
-int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c);
-
-/**
- *  \brief Draw a string in the currently set font.
- *
- *  \param renderer The renderer to draw on.
- *  \param x The X coordinate of the upper left corner of the string.
- *  \param y The Y coordinate of the upper left corner of the string.
- *  \param s The string to draw.
- *
- *  \returns Returns 0 on success, -1 on failure.
- */
-int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s);
-
-
-/**
- *  \brief Cleanup textures used by font drawing functions.
- */
-void SDLTest_CleanupTextDrawing(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_font_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_fuzzer.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_fuzzer.h
deleted file mode 100644 (file)
index 7259685..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_fuzzer.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
-  Data generators for fuzzing test data in a reproducible way.
-
-*/
-
-#ifndef SDL_test_fuzzer_h_
-#define SDL_test_fuzzer_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*
-  Based on GSOC code by Markus Kauppila <markus.kauppila@gmail.com>
-*/
-
-
-/**
- * \file
- * Note: The fuzzer implementation uses a static instance of random context
- * internally which makes it thread-UNsafe.
- */
-
-/**
- * Initializes the fuzzer for a test
- *
- * \param execKey Execution "Key" that initializes the random number generator uniquely for the test.
- *
- */
-void SDLTest_FuzzerInit(Uint64 execKey);
-
-
-/**
- * Returns a random Uint8
- *
- * \returns Generated integer
- */
-Uint8 SDLTest_RandomUint8(void);
-
-/**
- * Returns a random Sint8
- *
- * \returns Generated signed integer
- */
-Sint8 SDLTest_RandomSint8(void);
-
-
-/**
- * Returns a random Uint16
- *
- * \returns Generated integer
- */
-Uint16 SDLTest_RandomUint16(void);
-
-/**
- * Returns a random Sint16
- *
- * \returns Generated signed integer
- */
-Sint16 SDLTest_RandomSint16(void);
-
-
-/**
- * Returns a random integer
- *
- * \returns Generated integer
- */
-Sint32 SDLTest_RandomSint32(void);
-
-
-/**
- * Returns a random positive integer
- *
- * \returns Generated integer
- */
-Uint32 SDLTest_RandomUint32(void);
-
-/**
- * Returns random Uint64.
- *
- * \returns Generated integer
- */
-Uint64 SDLTest_RandomUint64(void);
-
-
-/**
- * Returns random Sint64.
- *
- * \returns Generated signed integer
- */
-Sint64 SDLTest_RandomSint64(void);
-
-/**
- * \returns random float in range [0.0 - 1.0[
- */
-float SDLTest_RandomUnitFloat(void);
-
-/**
- * \returns random double in range [0.0 - 1.0[
- */
-double SDLTest_RandomUnitDouble(void);
-
-/**
- * \returns random float.
- *
- */
-float SDLTest_RandomFloat(void);
-
-/**
- * \returns random double.
- *
- */
-double SDLTest_RandomDouble(void);
-
-/**
- * Returns a random boundary value for Uint8 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint8BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint8BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint8BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint8BoundaryValue(0, 255, SDL_FALSE) returns 0 (error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or 0 with error set
- */
-Uint8 SDLTest_RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Uint16 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint16BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint16BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint16BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint16BoundaryValue(0, 0xFFFF, SDL_FALSE) returns 0 (error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or 0 with error set
- */
-Uint16 SDLTest_RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Uint32 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint32BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint32BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint32BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint32BoundaryValue(0, 0xFFFFFFFF, SDL_FALSE) returns 0 (with error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or 0 with error set
- */
-Uint32 SDLTest_RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Uint64 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint64BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint64BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint64BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint64BoundaryValue(0, 0xFFFFFFFFFFFFFFFF, SDL_FALSE) returns 0 (with error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or 0 with error set
- */
-Uint64 SDLTest_RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Sint8 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint8BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint8BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint8BoundaryValue(SINT8_MIN, 99, SDL_FALSE) returns 100
- * RandomSint8BoundaryValue(SINT8_MIN, SINT8_MAX, SDL_FALSE) returns SINT8_MIN (== error value) with error set
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or SINT8_MIN with error set
- */
-Sint8 SDLTest_RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain);
-
-
-/**
- * Returns a random boundary value for Sint16 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint16BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint16BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint16BoundaryValue(SINT16_MIN, 99, SDL_FALSE) returns 100
- * RandomSint16BoundaryValue(SINT16_MIN, SINT16_MAX, SDL_FALSE) returns SINT16_MIN (== error value) with error set
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or SINT16_MIN with error set
- */
-Sint16 SDLTest_RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Sint32 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint32BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint32BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint32BoundaryValue(SINT32_MIN, 99, SDL_FALSE) returns 100
- * RandomSint32BoundaryValue(SINT32_MIN, SINT32_MAX, SDL_FALSE) returns SINT32_MIN (== error value)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or SINT32_MIN with error set
- */
-Sint32 SDLTest_RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Sint64 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint64BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint64BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint64BoundaryValue(SINT64_MIN, 99, SDL_FALSE) returns 100
- * RandomSint64BoundaryValue(SINT64_MIN, SINT64_MAX, SDL_FALSE) returns SINT64_MIN (== error value) and error set
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or SINT64_MIN with error set
- */
-Sint64 SDLTest_RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain);
-
-
-/**
- * Returns integer in range [min, max] (inclusive).
- * Min and max values can be negative values.
- * If Max in smaller than min, then the values are swapped.
- * Min and max are the same value, that value will be returned.
- *
- * \param min Minimum inclusive value of returned random number
- * \param max Maximum inclusive value of returned random number
- *
- * \returns Generated random integer in range
- */
-Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max);
-
-
-/**
- * Generates random null-terminated string. The minimum length for
- * the string is 1 character, maximum length for the string is 255
- * characters and it can contain ASCII characters from 32 to 126.
- *
- * Note: Returned string needs to be deallocated.
- *
- * \returns Newly allocated random string; or NULL if length was invalid or string could not be allocated.
- */
-char * SDLTest_RandomAsciiString(void);
-
-
-/**
- * Generates random null-terminated string. The maximum length for
- * the string is defined by the maxLength parameter.
- * String can contain ASCII characters from 32 to 126.
- *
- * Note: Returned string needs to be deallocated.
- *
- * \param maxLength The maximum length of the generated string.
- *
- * \returns Newly allocated random string; or NULL if maxLength was invalid or string could not be allocated.
- */
-char * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength);
-
-
-/**
- * Generates random null-terminated string. The length for
- * the string is defined by the size parameter.
- * String can contain ASCII characters from 32 to 126.
- *
- * Note: Returned string needs to be deallocated.
- *
- * \param size The length of the generated string
- *
- * \returns Newly allocated random string; or NULL if size was invalid or string could not be allocated.
- */
-char * SDLTest_RandomAsciiStringOfSize(int size);
-
-/**
- * Returns the invocation count for the fuzzer since last ...FuzzerInit.
- */
-int SDLTest_GetFuzzerInvocationCount(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_fuzzer_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_harness.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_harness.h
deleted file mode 100644 (file)
index f5ae92c..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_harness.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-  Defines types for test case definitions and the test execution harness API.
-
-  Based on original GSOC code by Markus Kauppila <markus.kauppila@gmail.com>
-*/
-
-#ifndef SDL_test_h_arness_h
-#define SDL_test_h_arness_h
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* ! Definitions for test case structures */
-#define TEST_ENABLED  1
-#define TEST_DISABLED 0
-
-/* ! Definition of all the possible test return values of the test case method */
-#define TEST_ABORTED        -1
-#define TEST_STARTED         0
-#define TEST_COMPLETED       1
-#define TEST_SKIPPED         2
-
-/* ! Definition of all the possible test results for the harness */
-#define TEST_RESULT_PASSED              0
-#define TEST_RESULT_FAILED              1
-#define TEST_RESULT_NO_ASSERT           2
-#define TEST_RESULT_SKIPPED             3
-#define TEST_RESULT_SETUP_FAILURE       4
-
-/* !< Function pointer to a test case setup function (run before every test) */
-typedef void (*SDLTest_TestCaseSetUpFp)(void *arg);
-
-/* !< Function pointer to a test case function */
-typedef int (*SDLTest_TestCaseFp)(void *arg);
-
-/* !< Function pointer to a test case teardown function (run after every test) */
-typedef void  (*SDLTest_TestCaseTearDownFp)(void *arg);
-
-/**
- * Holds information about a single test case.
- */
-typedef struct SDLTest_TestCaseReference {
-    /* !< Func2Stress */
-    SDLTest_TestCaseFp testCase;
-    /* !< Short name (or function name) "Func2Stress" */
-    char *name;
-    /* !< Long name or full description "This test pushes func2() to the limit." */
-    char *description;
-    /* !< Set to TEST_ENABLED or TEST_DISABLED (test won't be run) */
-    int enabled;
-} SDLTest_TestCaseReference;
-
-/**
- * Holds information about a test suite (multiple test cases).
- */
-typedef struct SDLTest_TestSuiteReference {
-    /* !< "PlatformSuite" */
-    char *name;
-    /* !< The function that is run before each test. NULL skips. */
-    SDLTest_TestCaseSetUpFp testSetUp;
-    /* !< The test cases that are run as part of the suite. Last item should be NULL. */
-    const SDLTest_TestCaseReference **testCases;
-    /* !< The function that is run after each test. NULL skips. */
-    SDLTest_TestCaseTearDownFp testTearDown;
-} SDLTest_TestSuiteReference;
-
-
-/**
- * \brief Generates a random run seed string for the harness. The generated seed will contain alphanumeric characters (0-9A-Z).
- *
- * Note: The returned string needs to be deallocated by the caller.
- *
- * \param length The length of the seed string to generate
- *
- * \returns The generated seed string
- */
-char *SDLTest_GenerateRunSeed(const int length);
-
-/**
- * \brief Execute a test suite using the given run seed and execution key.
- *
- * \param testSuites Suites containing the test case.
- * \param userRunSeed Custom run seed provided by user, or NULL to autogenerate one.
- * \param userExecKey Custom execution key provided by user, or 0 to autogenerate one.
- * \param filter Filter specification. NULL disables. Case sensitive.
- * \param testIterations Number of iterations to run each test case.
- *
- * \returns Test run result; 0 when all tests passed, 1 if any tests failed.
- */
-int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *userRunSeed, Uint64 userExecKey, const char *filter, int testIterations);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_h_arness_h */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_images.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_images.h
deleted file mode 100644 (file)
index b893481..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_images.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Defines some images for tests.
-
-*/
-
-#ifndef SDL_test_images_h_
-#define SDL_test_images_h_
-
-#include "SDL.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *Type for test images.
- */
-typedef struct SDLTest_SurfaceImage_s {
-  int width;
-  int height;
-  unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */
-  const char *pixel_data;
-} SDLTest_SurfaceImage_t;
-
-/* Test images */
-SDL_Surface *SDLTest_ImageBlit(void);
-SDL_Surface *SDLTest_ImageBlitColor(void);
-SDL_Surface *SDLTest_ImageBlitAlpha(void);
-SDL_Surface *SDLTest_ImageBlitBlendAdd(void);
-SDL_Surface *SDLTest_ImageBlitBlend(void);
-SDL_Surface *SDLTest_ImageBlitBlendMod(void);
-SDL_Surface *SDLTest_ImageBlitBlendNone(void);
-SDL_Surface *SDLTest_ImageBlitBlendAll(void);
-SDL_Surface *SDLTest_ImageFace(void);
-SDL_Surface *SDLTest_ImagePrimitives(void);
-SDL_Surface *SDLTest_ImagePrimitivesBlend(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_images_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_log.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_log.h
deleted file mode 100644 (file)
index 01d0fed..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_log.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- *
- *  Wrapper to log in the TEST category
- *
- */
-
-#ifndef SDL_test_log_h_
-#define SDL_test_log_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Prints given message with a timestamp in the TEST category and INFO priority.
- *
- * \param fmt Message to be logged
- */
-void SDLTest_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- * \brief Prints given message with a timestamp in the TEST category and the ERROR priority.
- *
- * \param fmt Message to be logged
- */
-void SDLTest_LogError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_log_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_md5.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_md5.h
deleted file mode 100644 (file)
index 2bfd7df..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_md5.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- ***********************************************************************
- ** Header file for implementation of MD5                             **
- ** RSA Data Security, Inc. MD5 Message-Digest Algorithm              **
- ** Created: 2/17/90 RLR                                              **
- ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version               **
- ** Revised (for MD5): RLR 4/27/91                                    **
- **   -- G modified to have y&~z instead of y&z                       **
- **   -- FF, GG, HH modified to add in last register done             **
- **   -- Access pattern: round 2 works mod 5, round 3 works mod 3     **
- **   -- distinct additive constant for each step                     **
- **   -- round 4 added, working mod 7                                 **
- ***********************************************************************
-*/
-
-/*
- ***********************************************************************
- **  Message-digest routines:                                         **
- **  To form the message digest for a message M                       **
- **    (1) Initialize a context buffer mdContext using MD5Init        **
- **    (2) Call MD5Update on mdContext and M                          **
- **    (3) Call MD5Final on mdContext                                 **
- **  The message digest is now in mdContext->digest[0...15]           **
- ***********************************************************************
-*/
-
-#ifndef SDL_test_md5_h_
-#define SDL_test_md5_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ------------ Definitions --------- */
-
-/* typedef a 32-bit type */
-  typedef unsigned long int MD5UINT4;
-
-/* Data structure for MD5 (Message-Digest) computation */
-  typedef struct {
-    MD5UINT4  i[2];     /* number of _bits_ handled mod 2^64 */
-    MD5UINT4  buf[4];       /* scratch buffer */
-    unsigned char in[64];   /* input buffer */
-    unsigned char digest[16];   /* actual digest after Md5Final call */
-  } SDLTest_Md5Context;
-
-/* ---------- Function Prototypes ------------- */
-
-/**
- * \brief initialize the context
- *
- * \param  mdContext        pointer to context variable
- *
- * Note: The function initializes the message-digest context
- *       mdContext. Call before each new use of the context -
- *       all fields are set to zero.
- */
- void SDLTest_Md5Init(SDLTest_Md5Context * mdContext);
-
-
-/**
- * \brief update digest from variable length data
- *
- * \param  mdContext       pointer to context variable
- * \param  inBuf           pointer to data array/string
- * \param  inLen           length of data array/string
- *
- * Note: The function updates the message-digest context to account
- *       for the presence of each of the characters inBuf[0..inLen-1]
- *       in the message whose digest is being computed.
-*/
-
- void SDLTest_Md5Update(SDLTest_Md5Context * mdContext, unsigned char *inBuf,
-                 unsigned int inLen);
-
-
-/**
- * \brief complete digest computation
- *
- * \param mdContext     pointer to context variable
- *
- * Note: The function terminates the message-digest computation and
- *       ends with the desired message digest in mdContext.digest[0..15].
- *       Always call before using the digest[] variable.
-*/
-
- void SDLTest_Md5Final(SDLTest_Md5Context * mdContext);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_md5_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_memory.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_memory.h
deleted file mode 100644 (file)
index 5d4d39e..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_memory.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-#ifndef SDL_test_memory_h_
-#define SDL_test_memory_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * \brief Start tracking SDL memory allocations
- * 
- * \note This should be called before any other SDL functions for complete tracking coverage
- */
-int SDLTest_TrackAllocations(void);
-
-/**
- * \brief Print a log of any outstanding allocations
- *
- * \note This can be called after SDL_Quit()
- */
-void SDLTest_LogAllocations(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_memory_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_test_random.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_test_random.h
deleted file mode 100644 (file)
index 71e9c70..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_random.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- A "32-bit Multiply with carry random number generator. Very fast.
- Includes a list of recommended multipliers.
-
- multiply-with-carry generator: x(n) = a*x(n-1) + carry mod 2^32.
- period: (a*2^31)-1
-
-*/
-
-#ifndef SDL_test_random_h_
-#define SDL_test_random_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* --- Definitions */
-
-/*
- * Macros that return a random number in a specific format.
- */
-#define SDLTest_RandomInt(c)        ((int)SDLTest_Random(c))
-
-/*
- * Context structure for the random number generator state.
- */
-  typedef struct {
-    unsigned int a;
-    unsigned int x;
-    unsigned int c;
-    unsigned int ah;
-    unsigned int al;
-  } SDLTest_RandomContext;
-
-
-/* --- Function prototypes */
-
-/**
- *  \brief Initialize random number generator with two integers.
- *
- *  Note: The random sequence of numbers returned by ...Random() is the
- *  same for the same two integers and has a period of 2^31.
- *
- *  \param rndContext     pointer to context structure
- *  \param xi         integer that defines the random sequence
- *  \param ci         integer that defines the random sequence
- *
- */
- void SDLTest_RandomInit(SDLTest_RandomContext * rndContext, unsigned int xi,
-                  unsigned int ci);
-
-/**
- *  \brief Initialize random number generator based on current system time.
- *
- *  \param rndContext     pointer to context structure
- *
- */
- void SDLTest_RandomInitTime(SDLTest_RandomContext *rndContext);
-
-
-/**
- *  \brief Initialize random number generator based on current system time.
- *
- *  Note: ...RandomInit() or ...RandomInitTime() must have been called
- *  before using this function.
- *
- *  \param rndContext     pointer to context structure
- *
- *  \returns A random number (32bit unsigned integer)
- *
- */
- unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_random_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_thread.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_thread.h
deleted file mode 100644 (file)
index f78b114..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_thread_h_
-#define SDL_thread_h_
-
-/**
- *  \file SDL_thread.h
- *
- *  Header for the SDL thread management routines.
- */
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-/* Thread synchronization primitives */
-#include "SDL_atomic.h"
-#include "SDL_mutex.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The SDL thread structure, defined in SDL_thread.c */
-struct SDL_Thread;
-typedef struct SDL_Thread SDL_Thread;
-
-/* The SDL thread ID */
-typedef unsigned long SDL_threadID;
-
-/* Thread local storage ID, 0 is the invalid ID */
-typedef unsigned int SDL_TLSID;
-
-/**
- *  The SDL thread priority.
- *
- *  \note On many systems you require special privileges to set high or time critical priority.
- */
-typedef enum {
-    SDL_THREAD_PRIORITY_LOW,
-    SDL_THREAD_PRIORITY_NORMAL,
-    SDL_THREAD_PRIORITY_HIGH,
-    SDL_THREAD_PRIORITY_TIME_CRITICAL
-} SDL_ThreadPriority;
-
-/**
- *  The function passed to SDL_CreateThread().
- *  It is passed a void* user context parameter and returns an int.
- */
-typedef int (SDLCALL * SDL_ThreadFunction) (void *data);
-
-#if defined(__WIN32__) && !defined(HAVE_LIBC)
-/**
- *  \file SDL_thread.h
- *
- *  We compile SDL into a DLL. This means, that it's the DLL which
- *  creates a new thread for the calling process with the SDL_CreateThread()
- *  API. There is a problem with this, that only the RTL of the SDL2.DLL will
- *  be initialized for those threads, and not the RTL of the calling
- *  application!
- *
- *  To solve this, we make a little hack here.
- *
- *  We'll always use the caller's _beginthread() and _endthread() APIs to
- *  start a new thread. This way, if it's the SDL2.DLL which uses this API,
- *  then the RTL of SDL2.DLL will be used to create the new thread, and if it's
- *  the application, then the RTL of the application will be used.
- *
- *  So, in short:
- *  Always use the _beginthread() and _endthread() of the calling runtime
- *  library!
- */
-#define SDL_PASSED_BEGINTHREAD_ENDTHREAD
-#include <process.h> /* _beginthreadex() and _endthreadex() */
-
-typedef uintptr_t(__cdecl * pfnSDL_CurrentBeginThread)
-                   (void *, unsigned, unsigned (__stdcall *func)(void *),
-                    void * /*arg*/, unsigned, unsigned * /* threadID */);
-typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code);
-
-/**
- *  Create a thread.
- */
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThreadWithStackSize(int (SDLCALL * fn) (void *),
-                 const char *name, const size_t stacksize, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-
-
-/**
- *  Create a thread.
- */
-#if defined(SDL_CreateThread) && SDL_DYNAMIC_API
-#undef SDL_CreateThread
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#undef SDL_CreateThreadWithStackSize
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#else
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#endif
-
-#elif defined(__OS2__)
-/*
- * just like the windows case above:  We compile SDL2
- * into a dll with Watcom's runtime statically linked.
- */
-#define SDL_PASSED_BEGINTHREAD_ENDTHREAD
-#ifndef __EMX__
-#include <process.h>
-#else
-#include <stdlib.h>
-#endif
-typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/);
-typedef void (*pfnSDL_CurrentEndThread)(void);
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-#if defined(SDL_CreateThread) && SDL_DYNAMIC_API
-#undef SDL_CreateThread
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#undef SDL_CreateThreadWithStackSize
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#else
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#endif
-
-#else
-
-/**
- *  Create a thread with a default stack size.
- *
- *  This is equivalent to calling:
- *  SDL_CreateThreadWithStackSize(fn, name, 0, data);
- */
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data);
-
-/**
- *  Create a thread.
- *
- *   Thread naming is a little complicated: Most systems have very small
- *    limits for the string length (Haiku has 32 bytes, Linux currently has 16,
- *    Visual C++ 6.0 has nine!), and possibly other arbitrary rules. You'll
- *    have to see what happens with your system's debugger. The name should be
- *    UTF-8 (but using the naming limits of C identifiers is a better bet).
- *   There are no requirements for thread naming conventions, so long as the
- *    string is null-terminated UTF-8, but these guidelines are helpful in
- *    choosing a name:
- *
- *    http://stackoverflow.com/questions/149932/naming-conventions-for-threads
- *
- *   If a system imposes requirements, SDL will try to munge the string for
- *    it (truncate, etc), but the original string contents will be available
- *    from SDL_GetThreadName().
- *
- *   The size (in bytes) of the new stack can be specified. Zero means "use
- *    the system default" which might be wildly different between platforms
- *    (x86 Linux generally defaults to eight megabytes, an embedded device
- *    might be a few kilobytes instead).
- *
- *   In SDL 2.1, stacksize will be folded into the original SDL_CreateThread
- *    function.
- */
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data);
-
-#endif
-
-/**
- * Get the thread name, as it was specified in SDL_CreateThread().
- *  This function returns a pointer to a UTF-8 string that names the
- *  specified thread, or NULL if it doesn't have a name. This is internal
- *  memory, not to be free()'d by the caller, and remains valid until the
- *  specified thread is cleaned up by SDL_WaitThread().
- */
-extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread);
-
-/**
- *  Get the thread identifier for the current thread.
- */
-extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void);
-
-/**
- *  Get the thread identifier for the specified thread.
- *
- *  Equivalent to SDL_ThreadID() if the specified thread is NULL.
- */
-extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread);
-
-/**
- *  Set the priority for the current thread
- */
-extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority);
-
-/**
- *  Wait for a thread to finish. Threads that haven't been detached will
- *  remain (as a "zombie") until this function cleans them up. Not doing so
- *  is a resource leak.
- *
- *  Once a thread has been cleaned up through this function, the SDL_Thread
- *  that references it becomes invalid and should not be referenced again.
- *  As such, only one thread may call SDL_WaitThread() on another.
- *
- *  The return code for the thread function is placed in the area
- *  pointed to by \c status, if \c status is not NULL.
- *
- *  You may not wait on a thread that has been used in a call to
- *  SDL_DetachThread(). Use either that function or this one, but not
- *  both, or behavior is undefined.
- *
- *  It is safe to pass NULL to this function; it is a no-op.
- */
-extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status);
-
-/**
- *  A thread may be "detached" to signify that it should not remain until
- *  another thread has called SDL_WaitThread() on it. Detaching a thread
- *  is useful for long-running threads that nothing needs to synchronize
- *  with or further manage. When a detached thread is done, it simply
- *  goes away.
- *
- *  There is no way to recover the return code of a detached thread. If you
- *  need this, don't detach the thread and instead use SDL_WaitThread().
- *
- *  Once a thread is detached, you should usually assume the SDL_Thread isn't
- *  safe to reference again, as it will become invalid immediately upon
- *  the detached thread's exit, instead of remaining until someone has called
- *  SDL_WaitThread() to finally clean it up. As such, don't detach the same
- *  thread more than once.
- *
- *  If a thread has already exited when passed to SDL_DetachThread(), it will
- *  stop waiting for a call to SDL_WaitThread() and clean up immediately.
- *  It is not safe to detach a thread that might be used with SDL_WaitThread().
- *
- *  You may not call SDL_WaitThread() on a thread that has been detached.
- *  Use either that function or this one, but not both, or behavior is
- *  undefined.
- *
- *  It is safe to pass NULL to this function; it is a no-op.
- */
-extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread);
-
-/**
- *  \brief Create an identifier that is globally visible to all threads but refers to data that is thread-specific.
- *
- *  \return The newly created thread local storage identifier, or 0 on error
- *
- *  \code
- *  static SDL_SpinLock tls_lock;
- *  static SDL_TLSID thread_local_storage;
- * 
- *  void SetMyThreadData(void *value)
- *  {
- *      if (!thread_local_storage) {
- *          SDL_AtomicLock(&tls_lock);
- *          if (!thread_local_storage) {
- *              thread_local_storage = SDL_TLSCreate();
- *          }
- *          SDL_AtomicUnlock(&tls_lock);
- *      }
- *      SDL_TLSSet(thread_local_storage, value, 0);
- *  }
- *  
- *  void *GetMyThreadData(void)
- *  {
- *      return SDL_TLSGet(thread_local_storage);
- *  }
- *  \endcode
- *
- *  \sa SDL_TLSGet()
- *  \sa SDL_TLSSet()
- */
-extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void);
-
-/**
- *  \brief Get the value associated with a thread local storage ID for the current thread.
- *
- *  \param id The thread local storage ID
- *
- *  \return The value associated with the ID for the current thread, or NULL if no value has been set.
- *
- *  \sa SDL_TLSCreate()
- *  \sa SDL_TLSSet()
- */
-extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);
-
-/**
- *  \brief Set the value associated with a thread local storage ID for the current thread.
- *
- *  \param id The thread local storage ID
- *  \param value The value to associate with the ID for the current thread
- *  \param destructor A function called when the thread exits, to free the value.
- *
- *  \return 0 on success, -1 on error
- *
- *  \sa SDL_TLSCreate()
- *  \sa SDL_TLSGet()
- */
-extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*));
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_thread_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_timer.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_timer.h
deleted file mode 100644 (file)
index 2a47b04..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_timer_h_
-#define SDL_timer_h_
-
-/**
- *  \file SDL_timer.h
- *
- *  Header for the SDL time management routines.
- */
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Get the number of milliseconds since the SDL library initialization.
- *
- * \note This value wraps if the program runs for more than ~49 days.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void);
-
-/**
- * \brief Compare SDL ticks values, and return true if A has passed B
- *
- * e.g. if you want to wait 100 ms, you could do this:
- *  Uint32 timeout = SDL_GetTicks() + 100;
- *  while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) {
- *      ... do work until timeout has elapsed
- *  }
- */
-#define SDL_TICKS_PASSED(A, B)  ((Sint32)((B) - (A)) <= 0)
-
-/**
- * \brief Get the current value of the high resolution counter
- */
-extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void);
-
-/**
- * \brief Get the count per second of the high resolution counter
- */
-extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void);
-
-/**
- * \brief Wait a specified number of milliseconds before returning.
- */
-extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms);
-
-/**
- *  Function prototype for the timer callback function.
- *
- *  The callback function is passed the current timer interval and returns
- *  the next timer interval.  If the returned value is the same as the one
- *  passed in, the periodic alarm continues, otherwise a new alarm is
- *  scheduled.  If the callback returns 0, the periodic alarm is cancelled.
- */
-typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param);
-
-/**
- * Definition of the timer ID type.
- */
-typedef int SDL_TimerID;
-
-/**
- * \brief Add a new timer to the pool of timers already running.
- *
- * \return A timer ID, or 0 when an error occurs.
- */
-extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval,
-                                                 SDL_TimerCallback callback,
-                                                 void *param);
-
-/**
- * \brief Remove a timer knowing its ID.
- *
- * \return A boolean value indicating success or failure.
- *
- * \warning It is not safe to remove a timer multiple times.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_timer_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_touch.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_touch.h
deleted file mode 100644 (file)
index 99dbcb8..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_touch.h
- *
- *  Include file for SDL touch event handling.
- */
-
-#ifndef SDL_touch_h_
-#define SDL_touch_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef Sint64 SDL_TouchID;
-typedef Sint64 SDL_FingerID;
-
-typedef enum
-{
-    SDL_TOUCH_DEVICE_INVALID = -1,
-    SDL_TOUCH_DEVICE_DIRECT,            /* touch screen with window-relative coordinates */
-    SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */
-    SDL_TOUCH_DEVICE_INDIRECT_RELATIVE  /* trackpad with screen cursor-relative coordinates */
-} SDL_TouchDeviceType;
-
-typedef struct SDL_Finger
-{
-    SDL_FingerID id;
-    float x;
-    float y;
-    float pressure;
-} SDL_Finger;
-
-/* Used as the device ID for mouse events simulated with touch input */
-#define SDL_TOUCH_MOUSEID ((Uint32)-1)
-
-/* Used as the SDL_TouchID for touch events simulated with mouse input */
-#define SDL_MOUSE_TOUCHID ((Sint64)-1)
-
-
-/* Function prototypes */
-
-/**
- *  \brief Get the number of registered touch devices.
- */
-extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void);
-
-/**
- *  \brief Get the touch ID with the given index, or 0 if the index is invalid.
- */
-extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index);
-
-/**
- * \brief Get the type of the given touch device.
- */
-extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID);
-
-/**
- *  \brief Get the number of active fingers for a given touch device.
- */
-extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID);
-
-/**
- *  \brief Get the finger object of the given touch, with the given index.
- */
-extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_touch_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_types.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_types.h
deleted file mode 100644 (file)
index 9c3e989..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_types.h
- *
- *  \deprecated
- */
-
-/* DEPRECATED */
-#include "SDL_stdinc.h"
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_version.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_version.h
deleted file mode 100644 (file)
index 6c7499d..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_version.h
- *
- *  This header defines the current SDL version.
- */
-
-#ifndef SDL_version_h_
-#define SDL_version_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Information the version of SDL in use.
- *
- *  Represents the library's version as three levels: major revision
- *  (increments with massive changes, additions, and enhancements),
- *  minor revision (increments with backwards-compatible changes to the
- *  major revision), and patchlevel (increments with fixes to the minor
- *  revision).
- *
- *  \sa SDL_VERSION
- *  \sa SDL_GetVersion
- */
-typedef struct SDL_version
-{
-    Uint8 major;        /**< major version */
-    Uint8 minor;        /**< minor version */
-    Uint8 patch;        /**< update version */
-} SDL_version;
-
-/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
-*/
-#define SDL_MAJOR_VERSION   2
-#define SDL_MINOR_VERSION   0
-#define SDL_PATCHLEVEL      10
-
-/**
- *  \brief Macro to determine SDL version program was compiled against.
- *
- *  This macro fills in a SDL_version structure with the version of the
- *  library you compiled against. This is determined by what header the
- *  compiler uses. Note that if you dynamically linked the library, you might
- *  have a slightly newer or older version at runtime. That version can be
- *  determined with SDL_GetVersion(), which, unlike SDL_VERSION(),
- *  is not a macro.
- *
- *  \param x A pointer to a SDL_version struct to initialize.
- *
- *  \sa SDL_version
- *  \sa SDL_GetVersion
- */
-#define SDL_VERSION(x)                          \
-{                                   \
-    (x)->major = SDL_MAJOR_VERSION;                 \
-    (x)->minor = SDL_MINOR_VERSION;                 \
-    (x)->patch = SDL_PATCHLEVEL;                    \
-}
-
-/**
- *  This macro turns the version numbers into a numeric value:
- *  \verbatim
-    (1,2,3) -> (1203)
-    \endverbatim
- *
- *  This assumes that there will never be more than 100 patchlevels.
- */
-#define SDL_VERSIONNUM(X, Y, Z)                     \
-    ((X)*1000 + (Y)*100 + (Z))
-
-/**
- *  This is the version number macro for the current SDL version.
- */
-#define SDL_COMPILEDVERSION \
-    SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL)
-
-/**
- *  This macro will evaluate to true if compiled with SDL at least X.Y.Z.
- */
-#define SDL_VERSION_ATLEAST(X, Y, Z) \
-    (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z))
-
-/**
- *  \brief Get the version of SDL that is linked against your program.
- *
- *  If you are linking to SDL dynamically, then it is possible that the
- *  current version will be different than the version you compiled against.
- *  This function returns the current version, while SDL_VERSION() is a
- *  macro that tells you what version you compiled with.
- *
- *  \code
- *  SDL_version compiled;
- *  SDL_version linked;
- *
- *  SDL_VERSION(&compiled);
- *  SDL_GetVersion(&linked);
- *  printf("We compiled against SDL version %d.%d.%d ...\n",
- *         compiled.major, compiled.minor, compiled.patch);
- *  printf("But we linked against SDL version %d.%d.%d.\n",
- *         linked.major, linked.minor, linked.patch);
- *  \endcode
- *
- *  This function may be called safely at any time, even before SDL_Init().
- *
- *  \sa SDL_VERSION
- */
-extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver);
-
-/**
- *  \brief Get the code revision of SDL that is linked against your program.
- *
- *  Returns an arbitrary string (a hash value) uniquely identifying the
- *  exact revision of the SDL library in use, and is only useful in comparing
- *  against other revisions. It is NOT an incrementing number.
- */
-extern DECLSPEC const char *SDLCALL SDL_GetRevision(void);
-
-/**
- *  \brief Get the revision number of SDL that is linked against your program.
- *
- *  Returns a number uniquely identifying the exact revision of the SDL
- *  library in use. It is an incrementing number based on commits to
- *  hg.libsdl.org.
- */
-extern DECLSPEC int SDLCALL SDL_GetRevisionNumber(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_version_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_video.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_video.h
deleted file mode 100644 (file)
index 352afd4..0000000
+++ /dev/null
@@ -1,1276 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_video.h
- *
- *  Header file for SDL video functions.
- */
-
-#ifndef SDL_video_h_
-#define SDL_video_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_pixels.h"
-#include "SDL_rect.h"
-#include "SDL_surface.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief  The structure that defines a display mode
- *
- *  \sa SDL_GetNumDisplayModes()
- *  \sa SDL_GetDisplayMode()
- *  \sa SDL_GetDesktopDisplayMode()
- *  \sa SDL_GetCurrentDisplayMode()
- *  \sa SDL_GetClosestDisplayMode()
- *  \sa SDL_SetWindowDisplayMode()
- *  \sa SDL_GetWindowDisplayMode()
- */
-typedef struct
-{
-    Uint32 format;              /**< pixel format */
-    int w;                      /**< width, in screen coordinates */
-    int h;                      /**< height, in screen coordinates */
-    int refresh_rate;           /**< refresh rate (or zero for unspecified) */
-    void *driverdata;           /**< driver-specific data, initialize to 0 */
-} SDL_DisplayMode;
-
-/**
- *  \brief The type used to identify a window
- *
- *  \sa SDL_CreateWindow()
- *  \sa SDL_CreateWindowFrom()
- *  \sa SDL_DestroyWindow()
- *  \sa SDL_GetWindowData()
- *  \sa SDL_GetWindowFlags()
- *  \sa SDL_GetWindowGrab()
- *  \sa SDL_GetWindowPosition()
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_GetWindowTitle()
- *  \sa SDL_HideWindow()
- *  \sa SDL_MaximizeWindow()
- *  \sa SDL_MinimizeWindow()
- *  \sa SDL_RaiseWindow()
- *  \sa SDL_RestoreWindow()
- *  \sa SDL_SetWindowData()
- *  \sa SDL_SetWindowFullscreen()
- *  \sa SDL_SetWindowGrab()
- *  \sa SDL_SetWindowIcon()
- *  \sa SDL_SetWindowPosition()
- *  \sa SDL_SetWindowSize()
- *  \sa SDL_SetWindowBordered()
- *  \sa SDL_SetWindowResizable()
- *  \sa SDL_SetWindowTitle()
- *  \sa SDL_ShowWindow()
- */
-typedef struct SDL_Window SDL_Window;
-
-/**
- *  \brief The flags on a window
- *
- *  \sa SDL_GetWindowFlags()
- */
-typedef enum
-{
-    /* !!! FIXME: change this to name = (1<<x). */
-    SDL_WINDOW_FULLSCREEN = 0x00000001,         /**< fullscreen window */
-    SDL_WINDOW_OPENGL = 0x00000002,             /**< window usable with OpenGL context */
-    SDL_WINDOW_SHOWN = 0x00000004,              /**< window is visible */
-    SDL_WINDOW_HIDDEN = 0x00000008,             /**< window is not visible */
-    SDL_WINDOW_BORDERLESS = 0x00000010,         /**< no window decoration */
-    SDL_WINDOW_RESIZABLE = 0x00000020,          /**< window can be resized */
-    SDL_WINDOW_MINIMIZED = 0x00000040,          /**< window is minimized */
-    SDL_WINDOW_MAXIMIZED = 0x00000080,          /**< window is maximized */
-    SDL_WINDOW_INPUT_GRABBED = 0x00000100,      /**< window has grabbed input focus */
-    SDL_WINDOW_INPUT_FOCUS = 0x00000200,        /**< window has input focus */
-    SDL_WINDOW_MOUSE_FOCUS = 0x00000400,        /**< window has mouse focus */
-    SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ),
-    SDL_WINDOW_FOREIGN = 0x00000800,            /**< window not created by SDL */
-    SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000,      /**< window should be created in high-DPI mode if supported.
-                                                     On macOS NSHighResolutionCapable must be set true in the
-                                                     application's Info.plist for this to have any effect. */
-    SDL_WINDOW_MOUSE_CAPTURE = 0x00004000,      /**< window has mouse captured (unrelated to INPUT_GRABBED) */
-    SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000,      /**< window should always be above others */
-    SDL_WINDOW_SKIP_TASKBAR  = 0x00010000,      /**< window should not be added to the taskbar */
-    SDL_WINDOW_UTILITY       = 0x00020000,      /**< window should be treated as a utility window */
-    SDL_WINDOW_TOOLTIP       = 0x00040000,      /**< window should be treated as a tooltip */
-    SDL_WINDOW_POPUP_MENU    = 0x00080000,      /**< window should be treated as a popup menu */
-    SDL_WINDOW_VULKAN        = 0x10000000       /**< window usable for Vulkan surface */
-} SDL_WindowFlags;
-
-/**
- *  \brief Used to indicate that you don't care what the window position is.
- */
-#define SDL_WINDOWPOS_UNDEFINED_MASK    0x1FFF0000u
-#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X)  (SDL_WINDOWPOS_UNDEFINED_MASK|(X))
-#define SDL_WINDOWPOS_UNDEFINED         SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)
-#define SDL_WINDOWPOS_ISUNDEFINED(X)    \
-            (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK)
-
-/**
- *  \brief Used to indicate that the window position should be centered.
- */
-#define SDL_WINDOWPOS_CENTERED_MASK    0x2FFF0000u
-#define SDL_WINDOWPOS_CENTERED_DISPLAY(X)  (SDL_WINDOWPOS_CENTERED_MASK|(X))
-#define SDL_WINDOWPOS_CENTERED         SDL_WINDOWPOS_CENTERED_DISPLAY(0)
-#define SDL_WINDOWPOS_ISCENTERED(X)    \
-            (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK)
-
-/**
- *  \brief Event subtype for window events
- */
-typedef enum
-{
-    SDL_WINDOWEVENT_NONE,           /**< Never used */
-    SDL_WINDOWEVENT_SHOWN,          /**< Window has been shown */
-    SDL_WINDOWEVENT_HIDDEN,         /**< Window has been hidden */
-    SDL_WINDOWEVENT_EXPOSED,        /**< Window has been exposed and should be
-                                         redrawn */
-    SDL_WINDOWEVENT_MOVED,          /**< Window has been moved to data1, data2
-                                     */
-    SDL_WINDOWEVENT_RESIZED,        /**< Window has been resized to data1xdata2 */
-    SDL_WINDOWEVENT_SIZE_CHANGED,   /**< The window size has changed, either as
-                                         a result of an API call or through the
-                                         system or user changing the window size. */
-    SDL_WINDOWEVENT_MINIMIZED,      /**< Window has been minimized */
-    SDL_WINDOWEVENT_MAXIMIZED,      /**< Window has been maximized */
-    SDL_WINDOWEVENT_RESTORED,       /**< Window has been restored to normal size
-                                         and position */
-    SDL_WINDOWEVENT_ENTER,          /**< Window has gained mouse focus */
-    SDL_WINDOWEVENT_LEAVE,          /**< Window has lost mouse focus */
-    SDL_WINDOWEVENT_FOCUS_GAINED,   /**< Window has gained keyboard focus */
-    SDL_WINDOWEVENT_FOCUS_LOST,     /**< Window has lost keyboard focus */
-    SDL_WINDOWEVENT_CLOSE,          /**< The window manager requests that the window be closed */
-    SDL_WINDOWEVENT_TAKE_FOCUS,     /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */
-    SDL_WINDOWEVENT_HIT_TEST        /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */
-} SDL_WindowEventID;
-
-/**
- *  \brief Event subtype for display events
- */
-typedef enum
-{
-    SDL_DISPLAYEVENT_NONE,          /**< Never used */
-    SDL_DISPLAYEVENT_ORIENTATION    /**< Display orientation has changed to data1 */
-} SDL_DisplayEventID;
-
-typedef enum
-{
-    SDL_ORIENTATION_UNKNOWN,            /**< The display orientation can't be determined */
-    SDL_ORIENTATION_LANDSCAPE,          /**< The display is in landscape mode, with the right side up, relative to portrait mode */
-    SDL_ORIENTATION_LANDSCAPE_FLIPPED,  /**< The display is in landscape mode, with the left side up, relative to portrait mode */
-    SDL_ORIENTATION_PORTRAIT,           /**< The display is in portrait mode */
-    SDL_ORIENTATION_PORTRAIT_FLIPPED    /**< The display is in portrait mode, upside down */
-} SDL_DisplayOrientation;
-
-/**
- *  \brief An opaque handle to an OpenGL context.
- */
-typedef void *SDL_GLContext;
-
-/**
- *  \brief OpenGL configuration attributes
- */
-typedef enum
-{
-    SDL_GL_RED_SIZE,
-    SDL_GL_GREEN_SIZE,
-    SDL_GL_BLUE_SIZE,
-    SDL_GL_ALPHA_SIZE,
-    SDL_GL_BUFFER_SIZE,
-    SDL_GL_DOUBLEBUFFER,
-    SDL_GL_DEPTH_SIZE,
-    SDL_GL_STENCIL_SIZE,
-    SDL_GL_ACCUM_RED_SIZE,
-    SDL_GL_ACCUM_GREEN_SIZE,
-    SDL_GL_ACCUM_BLUE_SIZE,
-    SDL_GL_ACCUM_ALPHA_SIZE,
-    SDL_GL_STEREO,
-    SDL_GL_MULTISAMPLEBUFFERS,
-    SDL_GL_MULTISAMPLESAMPLES,
-    SDL_GL_ACCELERATED_VISUAL,
-    SDL_GL_RETAINED_BACKING,
-    SDL_GL_CONTEXT_MAJOR_VERSION,
-    SDL_GL_CONTEXT_MINOR_VERSION,
-    SDL_GL_CONTEXT_EGL,
-    SDL_GL_CONTEXT_FLAGS,
-    SDL_GL_CONTEXT_PROFILE_MASK,
-    SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
-    SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,
-    SDL_GL_CONTEXT_RELEASE_BEHAVIOR,
-    SDL_GL_CONTEXT_RESET_NOTIFICATION,
-    SDL_GL_CONTEXT_NO_ERROR
-} SDL_GLattr;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_PROFILE_CORE           = 0x0001,
-    SDL_GL_CONTEXT_PROFILE_COMPATIBILITY  = 0x0002,
-    SDL_GL_CONTEXT_PROFILE_ES             = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
-} SDL_GLprofile;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_DEBUG_FLAG              = 0x0001,
-    SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,
-    SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG      = 0x0004,
-    SDL_GL_CONTEXT_RESET_ISOLATION_FLAG    = 0x0008
-} SDL_GLcontextFlag;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE   = 0x0000,
-    SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH  = 0x0001
-} SDL_GLcontextReleaseFlag;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000,
-    SDL_GL_CONTEXT_RESET_LOSE_CONTEXT    = 0x0001
-} SDL_GLContextResetNotification;
-
-/* Function prototypes */
-
-/**
- *  \brief Get the number of video drivers compiled into SDL
- *
- *  \sa SDL_GetVideoDriver()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);
-
-/**
- *  \brief Get the name of a built in video driver.
- *
- *  \note The video drivers are presented in the order in which they are
- *        normally checked during initialization.
- *
- *  \sa SDL_GetNumVideoDrivers()
- */
-extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);
-
-/**
- *  \brief Initialize the video subsystem, optionally specifying a video driver.
- *
- *  \param driver_name Initialize a specific driver by name, or NULL for the
- *                     default video driver.
- *
- *  \return 0 on success, -1 on error
- *
- *  This function initializes the video subsystem; setting up a connection
- *  to the window manager, etc, and determines the available display modes
- *  and pixel formats, but does not initialize a window or graphics mode.
- *
- *  \sa SDL_VideoQuit()
- */
-extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name);
-
-/**
- *  \brief Shuts down the video subsystem.
- *
- *  This function closes all windows, and restores the original video mode.
- *
- *  \sa SDL_VideoInit()
- */
-extern DECLSPEC void SDLCALL SDL_VideoQuit(void);
-
-/**
- *  \brief Returns the name of the currently initialized video driver.
- *
- *  \return The name of the current video driver or NULL if no driver
- *          has been initialized
- *
- *  \sa SDL_GetNumVideoDrivers()
- *  \sa SDL_GetVideoDriver()
- */
-extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void);
-
-/**
- *  \brief Returns the number of available video displays.
- *
- *  \sa SDL_GetDisplayBounds()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);
-
-/**
- *  \brief Get the name of a display in UTF-8 encoding
- *
- *  \return The name of a display, or NULL for an invalid display index.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex);
-
-/**
- *  \brief Get the desktop area represented by a display, with the primary
- *         display located at 0,0
- *
- *  \return 0 on success, or -1 if the index is out of range.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect);
-
-/**
- *  \brief Get the usable desktop area represented by a display, with the
- *         primary display located at 0,0
- *
- *  This is the same area as SDL_GetDisplayBounds() reports, but with portions
- *  reserved by the system removed. For example, on Mac OS X, this subtracts
- *  the area occupied by the menu bar and dock.
- *
- *  Setting a window to be fullscreen generally bypasses these unusable areas,
- *  so these are good guidelines for the maximum space available to a
- *  non-fullscreen window.
- *
- *  \return 0 on success, or -1 if the index is out of range.
- *
- *  \sa SDL_GetDisplayBounds()
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect);
-
-/**
- *  \brief Get the dots/pixels-per-inch for a display
- *
- *  \note Diagonal, horizontal and vertical DPI can all be optionally
- *        returned if the parameter is non-NULL.
- *
- *  \return 0 on success, or -1 if no DPI information is available or the index is out of range.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi);
-
-/**
- *  \brief Get the orientation of a display
- *
- *  \return The orientation of the display, or SDL_ORIENTATION_UNKNOWN if it isn't available.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex);
-
-/**
- *  \brief Returns the number of available display modes.
- *
- *  \sa SDL_GetDisplayMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);
-
-/**
- *  \brief Fill in information about a specific display mode.
- *
- *  \note The display modes are sorted in this priority:
- *        \li bits per pixel -> more colors to fewer colors
- *        \li width -> largest to smallest
- *        \li height -> largest to smallest
- *        \li refresh rate -> highest to lowest
- *
- *  \sa SDL_GetNumDisplayModes()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,
-                                               SDL_DisplayMode * mode);
-
-/**
- *  \brief Fill in information about the desktop display mode.
- */
-extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode);
-
-/**
- *  \brief Fill in information about the current display mode.
- */
-extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode);
-
-
-/**
- *  \brief Get the closest match to the requested display mode.
- *
- *  \param displayIndex The index of display from which mode should be queried.
- *  \param mode The desired display mode
- *  \param closest A pointer to a display mode to be filled in with the closest
- *                 match of the available display modes.
- *
- *  \return The passed in value \c closest, or NULL if no matching video mode
- *          was available.
- *
- *  The available display modes are scanned, and \c closest is filled in with the
- *  closest mode matching the requested mode and returned.  The mode format and
- *  refresh_rate default to the desktop mode if they are 0.  The modes are
- *  scanned with size being first priority, format being second priority, and
- *  finally checking the refresh_rate.  If all the available modes are too
- *  small, then NULL is returned.
- *
- *  \sa SDL_GetNumDisplayModes()
- *  \sa SDL_GetDisplayMode()
- */
-extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest);
-
-/**
- *  \brief Get the display index associated with a window.
- *
- *  \return the display index of the display containing the center of the
- *          window, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window);
-
-/**
- *  \brief Set the display mode used when a fullscreen window is visible.
- *
- *  By default the window's dimensions and the desktop format and refresh rate
- *  are used.
- *
- *  \param window The window for which the display mode should be set.
- *  \param mode The mode to use, or NULL for the default mode.
- *
- *  \return 0 on success, or -1 if setting the display mode failed.
- *
- *  \sa SDL_GetWindowDisplayMode()
- *  \sa SDL_SetWindowFullscreen()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,
-                                                     const SDL_DisplayMode
-                                                         * mode);
-
-/**
- *  \brief Fill in information about the display mode used when a fullscreen
- *         window is visible.
- *
- *  \sa SDL_SetWindowDisplayMode()
- *  \sa SDL_SetWindowFullscreen()
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,
-                                                     SDL_DisplayMode * mode);
-
-/**
- *  \brief Get the pixel format associated with the window.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
-
-/**
- *  \brief Create a window with the specified position, dimensions, and flags.
- *
- *  \param title The title of the window, in UTF-8 encoding.
- *  \param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param w     The width of the window, in screen coordinates.
- *  \param h     The height of the window, in screen coordinates.
- *  \param flags The flags for the window, a mask of any of the following:
- *               ::SDL_WINDOW_FULLSCREEN,    ::SDL_WINDOW_OPENGL,
- *               ::SDL_WINDOW_HIDDEN,        ::SDL_WINDOW_BORDERLESS,
- *               ::SDL_WINDOW_RESIZABLE,     ::SDL_WINDOW_MAXIMIZED,
- *               ::SDL_WINDOW_MINIMIZED,     ::SDL_WINDOW_INPUT_GRABBED,
- *               ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN.
- *
- *  \return The created window, or NULL if window creation failed.
- *
- *  If the window is created with the SDL_WINDOW_ALLOW_HIGHDPI flag, its size
- *  in pixels may differ from its size in screen coordinates on platforms with
- *  high-DPI support (e.g. iOS and Mac OS X). Use SDL_GetWindowSize() to query
- *  the client area's size in screen coordinates, and SDL_GL_GetDrawableSize(),
- *  SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to query the
- *  drawable size in pixels.
- *
- *  If the window is created with any of the SDL_WINDOW_OPENGL or
- *  SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function
- *  (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the
- *  corresponding UnloadLibrary function is called by SDL_DestroyWindow().
- *
- *  If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver,
- *  SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.
- *
- *  \note On non-Apple devices, SDL requires you to either not link to the
- *        Vulkan loader or link to a dynamic library version. This limitation
- *        may be removed in a future version of SDL.
- *
- *  \sa SDL_DestroyWindow()
- *  \sa SDL_GL_LoadLibrary()
- *  \sa SDL_Vulkan_LoadLibrary()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
-                                                      int x, int y, int w,
-                                                      int h, Uint32 flags);
-
-/**
- *  \brief Create an SDL window from an existing native window.
- *
- *  \param data A pointer to driver-dependent window creation data
- *
- *  \return The created window, or NULL if window creation failed.
- *
- *  \sa SDL_DestroyWindow()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
-
-/**
- *  \brief Get the numeric ID of a window, for logging purposes.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
-
-/**
- *  \brief Get a window from a stored ID, or NULL if it doesn't exist.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
-
-/**
- *  \brief Get the window flags.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);
-
-/**
- *  \brief Set the title of a window, in UTF-8 format.
- *
- *  \sa SDL_GetWindowTitle()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,
-                                                const char *title);
-
-/**
- *  \brief Get the title of a window, in UTF-8 format.
- *
- *  \sa SDL_SetWindowTitle()
- */
-extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);
-
-/**
- *  \brief Set the icon for a window.
- *
- *  \param window The window for which the icon should be set.
- *  \param icon The icon for the window.
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,
-                                               SDL_Surface * icon);
-
-/**
- *  \brief Associate an arbitrary named pointer with a window.
- *
- *  \param window   The window to associate with the pointer.
- *  \param name     The name of the pointer.
- *  \param userdata The associated pointer.
- *
- *  \return The previous value associated with 'name'
- *
- *  \note The name is case-sensitive.
- *
- *  \sa SDL_GetWindowData()
- */
-extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,
-                                                const char *name,
-                                                void *userdata);
-
-/**
- *  \brief Retrieve the data pointer associated with a window.
- *
- *  \param window   The window to query.
- *  \param name     The name of the pointer.
- *
- *  \return The value associated with 'name'
- *
- *  \sa SDL_SetWindowData()
- */
-extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,
-                                                const char *name);
-
-/**
- *  \brief Set the position of a window.
- *
- *  \param window   The window to reposition.
- *  \param x        The x coordinate of the window in screen coordinates, or
- *                  ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
- *  \param y        The y coordinate of the window in screen coordinates, or
- *                  ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
- *
- *  \note The window coordinate origin is the upper left of the display.
- *
- *  \sa SDL_GetWindowPosition()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,
-                                                   int x, int y);
-
-/**
- *  \brief Get the position of a window.
- *
- *  \param window   The window to query.
- *  \param x        Pointer to variable for storing the x position, in screen
- *                  coordinates. May be NULL.
- *  \param y        Pointer to variable for storing the y position, in screen
- *                  coordinates. May be NULL.
- *
- *  \sa SDL_SetWindowPosition()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,
-                                                   int *x, int *y);
-
-/**
- *  \brief Set the size of a window's client area.
- *
- *  \param window   The window to resize.
- *  \param w        The width of the window, in screen coordinates. Must be >0.
- *  \param h        The height of the window, in screen coordinates. Must be >0.
- *
- *  \note Fullscreen windows automatically match the size of the display mode,
- *        and you should use SDL_SetWindowDisplayMode() to change their size.
- *
- *  The window size in screen coordinates may differ from the size in pixels, if
- *  the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
- *  high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
- *  SDL_GetRendererOutputSize() to get the real client area size in pixels.
- *
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_SetWindowDisplayMode()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,
-                                               int h);
-
-/**
- *  \brief Get the size of a window's client area.
- *
- *  \param window   The window to query.
- *  \param w        Pointer to variable for storing the width, in screen
- *                  coordinates. May be NULL.
- *  \param h        Pointer to variable for storing the height, in screen
- *                  coordinates. May be NULL.
- *
- *  The window size in screen coordinates may differ from the size in pixels, if
- *  the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
- *  high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
- *  SDL_GetRendererOutputSize() to get the real client area size in pixels.
- *
- *  \sa SDL_SetWindowSize()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,
-                                               int *h);
-
-/**
- *  \brief Get the size of a window's borders (decorations) around the client area.
- *
- *  \param window The window to query.
- *  \param top Pointer to variable for storing the size of the top border. NULL is permitted.
- *  \param left Pointer to variable for storing the size of the left border. NULL is permitted.
- *  \param bottom Pointer to variable for storing the size of the bottom border. NULL is permitted.
- *  \param right Pointer to variable for storing the size of the right border. NULL is permitted.
- *
- *  \return 0 on success, or -1 if getting this information is not supported.
- *
- *  \note if this function fails (returns -1), the size values will be
- *        initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as
- *        if the window in question was borderless.
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window,
-                                                     int *top, int *left,
-                                                     int *bottom, int *right);
-
-/**
- *  \brief Set the minimum size of a window's client area.
- *
- *  \param window    The window to set a new minimum size.
- *  \param min_w     The minimum width of the window, must be >0
- *  \param min_h     The minimum height of the window, must be >0
- *
- *  \note You can't change the minimum size of a fullscreen window, it
- *        automatically matches the size of the display mode.
- *
- *  \sa SDL_GetWindowMinimumSize()
- *  \sa SDL_SetWindowMaximumSize()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window,
-                                                      int min_w, int min_h);
-
-/**
- *  \brief Get the minimum size of a window's client area.
- *
- *  \param window   The window to query.
- *  \param w        Pointer to variable for storing the minimum width, may be NULL
- *  \param h        Pointer to variable for storing the minimum height, may be NULL
- *
- *  \sa SDL_GetWindowMaximumSize()
- *  \sa SDL_SetWindowMinimumSize()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window,
-                                                      int *w, int *h);
-
-/**
- *  \brief Set the maximum size of a window's client area.
- *
- *  \param window    The window to set a new maximum size.
- *  \param max_w     The maximum width of the window, must be >0
- *  \param max_h     The maximum height of the window, must be >0
- *
- *  \note You can't change the maximum size of a fullscreen window, it
- *        automatically matches the size of the display mode.
- *
- *  \sa SDL_GetWindowMaximumSize()
- *  \sa SDL_SetWindowMinimumSize()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window,
-                                                      int max_w, int max_h);
-
-/**
- *  \brief Get the maximum size of a window's client area.
- *
- *  \param window   The window to query.
- *  \param w        Pointer to variable for storing the maximum width, may be NULL
- *  \param h        Pointer to variable for storing the maximum height, may be NULL
- *
- *  \sa SDL_GetWindowMinimumSize()
- *  \sa SDL_SetWindowMaximumSize()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window,
-                                                      int *w, int *h);
-
-/**
- *  \brief Set the border state of a window.
- *
- *  This will add or remove the window's SDL_WINDOW_BORDERLESS flag and
- *  add or remove the border from the actual window. This is a no-op if the
- *  window's border already matches the requested state.
- *
- *  \param window The window of which to change the border state.
- *  \param bordered SDL_FALSE to remove border, SDL_TRUE to add border.
- *
- *  \note You can't change the border state of a fullscreen window.
- *
- *  \sa SDL_GetWindowFlags()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window,
-                                                   SDL_bool bordered);
-
-/**
- *  \brief Set the user-resizable state of a window.
- *
- *  This will add or remove the window's SDL_WINDOW_RESIZABLE flag and
- *  allow/disallow user resizing of the window. This is a no-op if the
- *  window's resizable state already matches the requested state.
- *
- *  \param window The window of which to change the resizable state.
- *  \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow.
- *
- *  \note You can't change the resizable state of a fullscreen window.
- *
- *  \sa SDL_GetWindowFlags()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window,
-                                                    SDL_bool resizable);
-
-/**
- *  \brief Show a window.
- *
- *  \sa SDL_HideWindow()
- */
-extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);
-
-/**
- *  \brief Hide a window.
- *
- *  \sa SDL_ShowWindow()
- */
-extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);
-
-/**
- *  \brief Raise a window above other windows and set the input focus.
- */
-extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);
-
-/**
- *  \brief Make a window as large as possible.
- *
- *  \sa SDL_RestoreWindow()
- */
-extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);
-
-/**
- *  \brief Minimize a window to an iconic representation.
- *
- *  \sa SDL_RestoreWindow()
- */
-extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);
-
-/**
- *  \brief Restore the size and position of a minimized or maximized window.
- *
- *  \sa SDL_MaximizeWindow()
- *  \sa SDL_MinimizeWindow()
- */
-extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);
-
-/**
- *  \brief Set a window's fullscreen state.
- *
- *  \return 0 on success, or -1 if setting the display mode failed.
- *
- *  \sa SDL_SetWindowDisplayMode()
- *  \sa SDL_GetWindowDisplayMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,
-                                                    Uint32 flags);
-
-/**
- *  \brief Get the SDL surface associated with the window.
- *
- *  \return The window's framebuffer surface, or NULL on error.
- *
- *  A new surface will be created with the optimal format for the window,
- *  if necessary. This surface will be freed when the window is destroyed.
- *
- *  \note You may not combine this with 3D or the rendering API on this window.
- *
- *  \sa SDL_UpdateWindowSurface()
- *  \sa SDL_UpdateWindowSurfaceRects()
- */
-extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);
-
-/**
- *  \brief Copy the window surface to the screen.
- *
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_GetWindowSurface()
- *  \sa SDL_UpdateWindowSurfaceRects()
- */
-extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);
-
-/**
- *  \brief Copy a number of rectangles on the window surface to the screen.
- *
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_GetWindowSurface()
- *  \sa SDL_UpdateWindowSurface()
- */
-extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,
-                                                         const SDL_Rect * rects,
-                                                         int numrects);
-
-/**
- *  \brief Set a window's input grab mode.
- *
- *  \param window The window for which the input grab mode should be set.
- *  \param grabbed This is SDL_TRUE to grab input, and SDL_FALSE to release input.
- *
- *  If the caller enables a grab while another window is currently grabbed,
- *  the other window loses its grab in favor of the caller's window.
- *
- *  \sa SDL_GetWindowGrab()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,
-                                               SDL_bool grabbed);
-
-/**
- *  \brief Get a window's input grab mode.
- *
- *  \return This returns SDL_TRUE if input is grabbed, and SDL_FALSE otherwise.
- *
- *  \sa SDL_SetWindowGrab()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);
-
-/**
- *  \brief Get the window that currently has an input grab enabled.
- *
- *  \return This returns the window if input is grabbed, and NULL otherwise.
- *
- *  \sa SDL_SetWindowGrab()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void);
-
-/**
- *  \brief Set the brightness (gamma correction) for a window.
- *
- *  \return 0 on success, or -1 if setting the brightness isn't supported.
- *
- *  \sa SDL_GetWindowBrightness()
- *  \sa SDL_SetWindowGammaRamp()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness);
-
-/**
- *  \brief Get the brightness (gamma correction) for a window.
- *
- *  \return The last brightness value passed to SDL_SetWindowBrightness()
- *
- *  \sa SDL_SetWindowBrightness()
- */
-extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);
-
-/**
- *  \brief Set the opacity for a window
- *
- *  \param window The window which will be made transparent or opaque
- *  \param opacity Opacity (0.0f - transparent, 1.0f - opaque) This will be
- *                 clamped internally between 0.0f and 1.0f.
- *
- *  \return 0 on success, or -1 if setting the opacity isn't supported.
- *
- *  \sa SDL_GetWindowOpacity()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity);
-
-/**
- *  \brief Get the opacity of a window.
- *
- *  If transparency isn't supported on this platform, opacity will be reported
- *  as 1.0f without error.
- *
- *  \param window The window in question.
- *  \param out_opacity Opacity (0.0f - transparent, 1.0f - opaque)
- *
- *  \return 0 on success, or -1 on error (invalid window, etc).
- *
- *  \sa SDL_SetWindowOpacity()
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity);
-
-/**
- *  \brief Sets the window as a modal for another window (TODO: reconsider this function and/or its name)
- *
- *  \param modal_window The window that should be modal
- *  \param parent_window The parent window
- *
- *  \return 0 on success, or -1 otherwise.
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window);
-
-/**
- *  \brief Explicitly sets input focus to the window.
- *
- *  You almost certainly want SDL_RaiseWindow() instead of this function. Use
- *  this with caution, as you might give focus to a window that's completely
- *  obscured by other windows.
- *
- *  \param window The window that should get the input focus
- *
- *  \return 0 on success, or -1 otherwise.
- *  \sa SDL_RaiseWindow()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
-
-/**
- *  \brief Set the gamma ramp for a window.
- *
- *  \param window The window for which the gamma ramp should be set.
- *  \param red The translation table for the red channel, or NULL.
- *  \param green The translation table for the green channel, or NULL.
- *  \param blue The translation table for the blue channel, or NULL.
- *
- *  \return 0 on success, or -1 if gamma ramps are unsupported.
- *
- *  Set the gamma translation table for the red, green, and blue channels
- *  of the video hardware.  Each table is an array of 256 16-bit quantities,
- *  representing a mapping between the input and output for that channel.
- *  The input is the index into the array, and the output is the 16-bit
- *  gamma value at that index, scaled to the output color precision.
- *
- *  \sa SDL_GetWindowGammaRamp()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,
-                                                   const Uint16 * red,
-                                                   const Uint16 * green,
-                                                   const Uint16 * blue);
-
-/**
- *  \brief Get the gamma ramp for a window.
- *
- *  \param window The window from which the gamma ramp should be queried.
- *  \param red   A pointer to a 256 element array of 16-bit quantities to hold
- *               the translation table for the red channel, or NULL.
- *  \param green A pointer to a 256 element array of 16-bit quantities to hold
- *               the translation table for the green channel, or NULL.
- *  \param blue  A pointer to a 256 element array of 16-bit quantities to hold
- *               the translation table for the blue channel, or NULL.
- *
- *  \return 0 on success, or -1 if gamma ramps are unsupported.
- *
- *  \sa SDL_SetWindowGammaRamp()
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,
-                                                   Uint16 * red,
-                                                   Uint16 * green,
-                                                   Uint16 * blue);
-
-/**
- *  \brief Possible return values from the SDL_HitTest callback.
- *
- *  \sa SDL_HitTest
- */
-typedef enum
-{
-    SDL_HITTEST_NORMAL,  /**< Region is normal. No special properties. */
-    SDL_HITTEST_DRAGGABLE,  /**< Region can drag entire window. */
-    SDL_HITTEST_RESIZE_TOPLEFT,
-    SDL_HITTEST_RESIZE_TOP,
-    SDL_HITTEST_RESIZE_TOPRIGHT,
-    SDL_HITTEST_RESIZE_RIGHT,
-    SDL_HITTEST_RESIZE_BOTTOMRIGHT,
-    SDL_HITTEST_RESIZE_BOTTOM,
-    SDL_HITTEST_RESIZE_BOTTOMLEFT,
-    SDL_HITTEST_RESIZE_LEFT
-} SDL_HitTestResult;
-
-/**
- *  \brief Callback used for hit-testing.
- *
- *  \sa SDL_SetWindowHitTest
- */
-typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win,
-                                                 const SDL_Point *area,
-                                                 void *data);
-
-/**
- *  \brief Provide a callback that decides if a window region has special properties.
- *
- *  Normally windows are dragged and resized by decorations provided by the
- *  system window manager (a title bar, borders, etc), but for some apps, it
- *  makes sense to drag them from somewhere else inside the window itself; for
- *  example, one might have a borderless window that wants to be draggable
- *  from any part, or simulate its own title bar, etc.
- *
- *  This function lets the app provide a callback that designates pieces of
- *  a given window as special. This callback is run during event processing
- *  if we need to tell the OS to treat a region of the window specially; the
- *  use of this callback is known as "hit testing."
- *
- *  Mouse input may not be delivered to your application if it is within
- *  a special area; the OS will often apply that input to moving the window or
- *  resizing the window and not deliver it to the application.
- *
- *  Specifying NULL for a callback disables hit-testing. Hit-testing is
- *  disabled by default.
- *
- *  Platforms that don't support this functionality will return -1
- *  unconditionally, even if you're attempting to disable hit-testing.
- *
- *  Your callback may fire at any time, and its firing does not indicate any
- *  specific behavior (for example, on Windows, this certainly might fire
- *  when the OS is deciding whether to drag your window, but it fires for lots
- *  of other reasons, too, some unrelated to anything you probably care about
- *  _and when the mouse isn't actually at the location it is testing_).
- *  Since this can fire at any time, you should try to keep your callback
- *  efficient, devoid of allocations, etc.
- *
- *  \param window The window to set hit-testing on.
- *  \param callback The callback to call when doing a hit-test.
- *  \param callback_data An app-defined void pointer passed to the callback.
- *  \return 0 on success, -1 on error (including unsupported).
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,
-                                                 SDL_HitTest callback,
-                                                 void *callback_data);
-
-/**
- *  \brief Destroy a window.
- */
-extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window);
-
-
-/**
- *  \brief Returns whether the screensaver is currently enabled (default off).
- *
- *  \sa SDL_EnableScreenSaver()
- *  \sa SDL_DisableScreenSaver()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void);
-
-/**
- *  \brief Allow the screen to be blanked by a screensaver
- *
- *  \sa SDL_IsScreenSaverEnabled()
- *  \sa SDL_DisableScreenSaver()
- */
-extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void);
-
-/**
- *  \brief Prevent the screen from being blanked by a screensaver
- *
- *  \sa SDL_IsScreenSaverEnabled()
- *  \sa SDL_EnableScreenSaver()
- */
-extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);
-
-
-/**
- *  \name OpenGL support functions
- */
-/* @{ */
-
-/**
- *  \brief Dynamically load an OpenGL library.
- *
- *  \param path The platform dependent OpenGL library name, or NULL to open the
- *              default OpenGL library.
- *
- *  \return 0 on success, or -1 if the library couldn't be loaded.
- *
- *  This should be done after initializing the video driver, but before
- *  creating any OpenGL windows.  If no OpenGL library is loaded, the default
- *  library will be loaded upon creation of the first OpenGL window.
- *
- *  \note If you do this, you need to retrieve all of the GL functions used in
- *        your program from the dynamic library using SDL_GL_GetProcAddress().
- *
- *  \sa SDL_GL_GetProcAddress()
- *  \sa SDL_GL_UnloadLibrary()
- */
-extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
-
-/**
- *  \brief Get the address of an OpenGL function.
- */
-extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc);
-
-/**
- *  \brief Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
- *
- *  \sa SDL_GL_LoadLibrary()
- */
-extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);
-
-/**
- *  \brief Return true if an OpenGL extension is supported for the current
- *         context.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char
-                                                           *extension);
-
-/**
- *  \brief Reset all previously set OpenGL context attributes to their default values
- */
-extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);
-
-/**
- *  \brief Set an OpenGL window attribute before window creation.
- *
- *  \return 0 on success, or -1 if the attribute could not be set.
- */
-extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);
-
-/**
- *  \brief Get the actual value for an attribute from the current context.
- *
- *  \return 0 on success, or -1 if the attribute could not be retrieved.
- *          The integer at \c value will be modified in either case.
- */
-extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);
-
-/**
- *  \brief Create an OpenGL context for use with an OpenGL window, and make it
- *         current.
- *
- *  \sa SDL_GL_DeleteContext()
- */
-extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *
-                                                           window);
-
-/**
- *  \brief Set up an OpenGL context for rendering into an OpenGL window.
- *
- *  \note The context must have been created with a compatible window.
- */
-extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window,
-                                               SDL_GLContext context);
-
-/**
- *  \brief Get the currently active OpenGL window.
- */
-extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void);
-
-/**
- *  \brief Get the currently active OpenGL context.
- */
-extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void);
-
-/**
- *  \brief Get the size of a window's underlying drawable in pixels (for use
- *         with glViewport).
- *
- *  \param window   Window from which the drawable size should be queried
- *  \param w        Pointer to variable for storing the width in pixels, may be NULL
- *  \param h        Pointer to variable for storing the height in pixels, may be NULL
- *
- * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
- * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a
- * platform with high-DPI support (Apple calls this "Retina"), and not disabled
- * by the SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
- *
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_CreateWindow()
- */
-extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,
-                                                    int *h);
-
-/**
- *  \brief Set the swap interval for the current OpenGL context.
- *
- *  \param interval 0 for immediate updates, 1 for updates synchronized with the
- *                  vertical retrace. If the system supports it, you may
- *                  specify -1 to allow late swaps to happen immediately
- *                  instead of waiting for the next retrace.
- *
- *  \return 0 on success, or -1 if setting the swap interval is not supported.
- *
- *  \sa SDL_GL_GetSwapInterval()
- */
-extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval);
-
-/**
- *  \brief Get the swap interval for the current OpenGL context.
- *
- *  \return 0 if there is no vertical retrace synchronization, 1 if the buffer
- *          swap is synchronized with the vertical retrace, and -1 if late
- *          swaps happen immediately instead of waiting for the next retrace.
- *          If the system can't determine the swap interval, or there isn't a
- *          valid current context, this will return 0 as a safe default.
- *
- *  \sa SDL_GL_SetSwapInterval()
- */
-extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
-
-/**
- * \brief Swap the OpenGL buffers for a window, if double-buffering is
- *        supported.
- */
-extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);
-
-/**
- *  \brief Delete an OpenGL context.
- *
- *  \sa SDL_GL_CreateContext()
- */
-extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context);
-
-/* @} *//* OpenGL support functions */
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_video_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/SDL_vulkan.h b/misc/builddeps/win32/sdl/include/SDL2/SDL_vulkan.h
deleted file mode 100644 (file)
index d69a436..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 2017, Mark Callow
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_vulkan.h
- *
- *  Header file for functions to creating Vulkan surfaces on SDL windows.
- */
-
-#ifndef SDL_vulkan_h_
-#define SDL_vulkan_h_
-
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Avoid including vulkan.h, don't define VkInstance if it's already included */
-#ifdef VULKAN_H_
-#define NO_SDL_VULKAN_TYPEDEFS
-#endif
-#ifndef NO_SDL_VULKAN_TYPEDEFS
-#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
-
-#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
-#else
-#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
-#endif
-
-VK_DEFINE_HANDLE(VkInstance)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
-
-#endif /* !NO_SDL_VULKAN_TYPEDEFS */
-
-typedef VkInstance SDL_vulkanInstance;
-typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */
-
-/**
- *  \name Vulkan support functions
- *
- *  \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API
- *        is compatable with Tizen's implementation of Vulkan in SDL.
- */
-/* @{ */
-
-/**
- *  \brief Dynamically load a Vulkan loader library.
- *
- *  \param [in] path The platform dependent Vulkan loader library name, or
- *              \c NULL.
- *
- *  \return \c 0 on success, or \c -1 if the library couldn't be loaded.
- *
- *  If \a path is NULL SDL will use the value of the environment variable
- *  \c SDL_VULKAN_LIBRARY, if set, otherwise it loads the default Vulkan
- *  loader library.
- *
- *  This should be called after initializing the video driver, but before
- *  creating any Vulkan windows. If no Vulkan loader library is loaded, the
- *  default library will be loaded upon creation of the first Vulkan window.
- *
- *  \note It is fairly common for Vulkan applications to link with \a libvulkan
- *        instead of explicitly loading it at run time. This will work with
- *        SDL provided the application links to a dynamic library and both it
- *        and SDL use the same search path.
- *
- *  \note If you specify a non-NULL \c path, an application should retrieve all
- *        of the Vulkan functions it uses from the dynamic library using
- *        \c SDL_Vulkan_GetVkGetInstanceProcAddr() unless you can guarantee
- *        \c path points to the same vulkan loader library the application
- *        linked to.
- *
- *  \note On Apple devices, if \a path is NULL, SDL will attempt to find
- *        the vkGetInstanceProcAddr address within all the mach-o images of
- *        the current process. This is because it is fairly common for Vulkan
- *        applications to link with libvulkan (and historically MoltenVK was
- *        provided as a static library). If it is not found then, on macOS, SDL
- *        will attempt to load \c vulkan.framework/vulkan, \c libvulkan.1.dylib,
- *        followed by \c libvulkan.dylib, in that order.
- *        On iOS SDL will attempt to load \c libvulkan.dylib only. Applications
- *        using a dynamic framework or .dylib must ensure it is included in its
- *        application bundle.
- *
- *  \note On non-Apple devices, application linking with a static libvulkan is
- *        not supported. Either do not link to the Vulkan loader or link to a
- *        dynamic library version.
- *
- *  \note This function will fail if there are no working Vulkan drivers
- *        installed.
- *
- *  \sa SDL_Vulkan_GetVkGetInstanceProcAddr()
- *  \sa SDL_Vulkan_UnloadLibrary()
- */
-extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path);
-
-/**
- *  \brief Get the address of the \c vkGetInstanceProcAddr function.
- *
- *  \note This should be called after either calling SDL_Vulkan_LoadLibrary
- *        or creating an SDL_Window with the SDL_WINDOW_VULKAN flag.
- */
-extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void);
-
-/**
- *  \brief Unload the Vulkan loader library previously loaded by
- *         \c SDL_Vulkan_LoadLibrary().
- *
- *  \sa SDL_Vulkan_LoadLibrary()
- */
-extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
-
-/**
- *  \brief Get the names of the Vulkan instance extensions needed to create
- *         a surface with \c SDL_Vulkan_CreateSurface().
- *
- *  \param [in]     \c NULL or window Window for which the required Vulkan instance
- *                  extensions should be retrieved
- *  \param [in,out] pCount pointer to an \c unsigned related to the number of
- *                  required Vulkan instance extensions
- *  \param [out]    pNames \c NULL or a pointer to an array to be filled with the
- *                  required Vulkan instance extensions
- *
- *  \return \c SDL_TRUE on success, \c SDL_FALSE on error.
- *
- *  If \a pNames is \c NULL, then the number of required Vulkan instance
- *  extensions is returned in pCount. Otherwise, \a pCount must point to a
- *  variable set to the number of elements in the \a pNames array, and on
- *  return the variable is overwritten with the number of names actually
- *  written to \a pNames. If \a pCount is less than the number of required
- *  extensions, at most \a pCount structures will be written. If \a pCount
- *  is smaller than the number of required extensions, \c SDL_FALSE will be
- *  returned instead of \c SDL_TRUE, to indicate that not all the required
- *  extensions were returned.
- *
- *  \note If \c window is not NULL, it will be checked against its creation
- *        flags to ensure that the Vulkan flag is present. This parameter
- *        will be removed in a future major release.
- *
- *  \note The returned list of extensions will contain \c VK_KHR_surface
- *        and zero or more platform specific extensions
- *
- *  \note The extension names queried here must be enabled when calling
- *        VkCreateInstance, otherwise surface creation will fail.
- *
- *  \note \c window should have been created with the \c SDL_WINDOW_VULKAN flag
- *        or be \c NULL
- *
- *  \code
- *  unsigned int count;
- *  // get count of required extensions
- *  if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, NULL))
- *      handle_error();
- *
- *  static const char *const additionalExtensions[] =
- *  {
- *      VK_EXT_DEBUG_REPORT_EXTENSION_NAME, // example additional extension
- *  };
- *  size_t additionalExtensionsCount = sizeof(additionalExtensions) / sizeof(additionalExtensions[0]);
- *  size_t extensionCount = count + additionalExtensionsCount;
- *  const char **names = malloc(sizeof(const char *) * extensionCount);
- *  if(!names)
- *      handle_error();
- *
- *  // get names of required extensions
- *  if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, names))
- *      handle_error();
- *
- *  // copy additional extensions after required extensions
- *  for(size_t i = 0; i < additionalExtensionsCount; i++)
- *      names[i + count] = additionalExtensions[i];
- *
- *  VkInstanceCreateInfo instanceCreateInfo = {};
- *  instanceCreateInfo.enabledExtensionCount = extensionCount;
- *  instanceCreateInfo.ppEnabledExtensionNames = names;
- *  // fill in rest of instanceCreateInfo
- *
- *  VkInstance instance;
- *  // create the Vulkan instance
- *  VkResult result = vkCreateInstance(&instanceCreateInfo, NULL, &instance);
- *  free(names);
- *  \endcode
- *
- *  \sa SDL_Vulkan_CreateSurface()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(
-                                                                                                               SDL_Window *window,
-                                                                                                               unsigned int *pCount,
-                                                                                                               const char **pNames);
-
-/**
- *  \brief Create a Vulkan rendering surface for a window.
- *
- *  \param [in]  window   SDL_Window to which to attach the rendering surface.
- *  \param [in]  instance handle to the Vulkan instance to use.
- *  \param [out] surface  pointer to a VkSurfaceKHR handle to receive the
- *                        handle of the newly created surface.
- *
- *  \return \c SDL_TRUE on success, \c SDL_FALSE on error.
- *
- *  \code
- *  VkInstance instance;
- *  SDL_Window *window;
- *
- *  // create instance and window
- *
- *  // create the Vulkan surface
- *  VkSurfaceKHR surface;
- *  if(!SDL_Vulkan_CreateSurface(window, instance, &surface))
- *      handle_error();
- *  \endcode
- *
- *  \note \a window should have been created with the \c SDL_WINDOW_VULKAN flag.
- *
- *  \note \a instance should have been created with the extensions returned
- *        by \c SDL_Vulkan_CreateSurface() enabled.
- *
- *  \sa SDL_Vulkan_GetInstanceExtensions()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(
-                                                                                               SDL_Window *window,
-                                                                                               VkInstance instance,
-                                                                                               VkSurfaceKHR* surface);
-
-/**
- *  \brief Get the size of a window's underlying drawable in pixels (for use
- *         with setting viewport, scissor & etc).
- *
- *  \param window   SDL_Window from which the drawable size should be queried
- *  \param w        Pointer to variable for storing the width in pixels,
- *                  may be NULL
- *  \param h        Pointer to variable for storing the height in pixels,
- *                  may be NULL
- *
- * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
- * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a
- * platform with high-DPI support (Apple calls this "Retina"), and not disabled
- * by the \c SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
- *
- *  \note On macOS high-DPI support must be enabled for an application by
- *        setting NSHighResolutionCapable to true in its Info.plist.
- *
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_CreateWindow()
- */
-extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window,
-                                                        int *w, int *h);
-
-/* @} *//* Vulkan support functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_vulkan_h_ */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/begin_code.h b/misc/builddeps/win32/sdl/include/SDL2/begin_code.h
deleted file mode 100644 (file)
index 22c997c..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file begin_code.h
- *
- *  This file sets things up for C dynamic library function definitions,
- *  static inlined functions, and structures aligned at 4-byte alignment.
- *  If you don't like ugly C preprocessor code, don't look at this file. :)
- */
-
-/* This shouldn't be nested -- included it around code only. */
-#ifdef _begin_code_h
-#error Nested inclusion of begin_code.h
-#endif
-#define _begin_code_h
-
-#ifndef SDL_DEPRECATED
-#  if (__GNUC__ >= 4)  /* technically, this arrived in gcc 3.1, but oh well. */
-#    define SDL_DEPRECATED __attribute__((deprecated))
-#  else
-#    define SDL_DEPRECATED
-#  endif
-#endif
-
-#ifndef SDL_UNUSED
-#  ifdef __GNUC__
-#    define SDL_UNUSED __attribute__((unused))
-#  else
-#    define SDL_UNUSED
-#  endif
-#endif
-
-/* Some compilers use a special export keyword */
-#ifndef DECLSPEC
-# if defined(__WIN32__) || defined(__WINRT__)
-#  ifdef __BORLANDC__
-#   ifdef BUILD_SDL
-#    define DECLSPEC
-#   else
-#    define DECLSPEC    __declspec(dllimport)
-#   endif
-#  else
-#   define DECLSPEC __declspec(dllexport)
-#  endif
-# elif defined(__OS2__)
-#   ifdef BUILD_SDL
-#    define DECLSPEC    __declspec(dllexport)
-#   else
-#    define DECLSPEC
-#   endif
-# else
-#  if defined(__GNUC__) && __GNUC__ >= 4
-#   define DECLSPEC __attribute__ ((visibility("default")))
-#  else
-#   define DECLSPEC
-#  endif
-# endif
-#endif
-
-/* By default SDL uses the C calling convention */
-#ifndef SDLCALL
-#if (defined(__WIN32__) || defined(__WINRT__)) && !defined(__GNUC__)
-#define SDLCALL __cdecl
-#elif defined(__OS2__) || defined(__EMX__)
-#define SDLCALL _System
-# if defined (__GNUC__) && !defined(_System)
-#  define _System /* for old EMX/GCC compat.  */
-# endif
-#else
-#define SDLCALL
-#endif
-#endif /* SDLCALL */
-
-/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
-#ifdef __SYMBIAN32__
-#undef DECLSPEC
-#define DECLSPEC
-#endif /* __SYMBIAN32__ */
-
-/* Force structure packing at 4 byte alignment.
-   This is necessary if the header is included in code which has structure
-   packing set to an alternate value, say for loading structures from disk.
-   The packing is reset to the previous value in close_code.h
- */
-#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
-#ifdef _MSC_VER
-#pragma warning(disable: 4103)
-#endif
-#ifdef __clang__
-#pragma clang diagnostic ignored "-Wpragma-pack"
-#endif
-#ifdef __BORLANDC__
-#pragma nopackwarning
-#endif
-#ifdef _M_X64
-/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */
-#pragma pack(push,8)
-#else
-#pragma pack(push,4)
-#endif
-#endif /* Compiler needs structure packing set */
-
-#ifndef SDL_INLINE
-#if defined(__GNUC__)
-#define SDL_INLINE __inline__
-#elif defined(_MSC_VER) || defined(__BORLANDC__) || \
-      defined(__DMC__) || defined(__SC__) || \
-      defined(__WATCOMC__) || defined(__LCC__) || \
-      defined(__DECC) || defined(__CC_ARM)
-#define SDL_INLINE __inline
-#ifndef __inline__
-#define __inline__ __inline
-#endif
-#else
-#define SDL_INLINE inline
-#ifndef __inline__
-#define __inline__ inline
-#endif
-#endif
-#endif /* SDL_INLINE not defined */
-
-#ifndef SDL_FORCE_INLINE
-#if defined(_MSC_VER)
-#define SDL_FORCE_INLINE __forceinline
-#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) )
-#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__
-#else
-#define SDL_FORCE_INLINE static SDL_INLINE
-#endif
-#endif /* SDL_FORCE_INLINE not defined */
-
-#ifndef SDL_NORETURN
-#if defined(__GNUC__)
-#define SDL_NORETURN __attribute__((noreturn))
-#elif defined(_MSC_VER)
-#define SDL_NORETURN __declspec(noreturn)
-#else
-#define SDL_NORETURN
-#endif
-#endif /* SDL_NORETURN not defined */
-
-/* Apparently this is needed by several Windows compilers */
-#if !defined(__MACH__)
-#ifndef NULL
-#ifdef __cplusplus
-#define NULL 0
-#else
-#define NULL ((void *)0)
-#endif
-#endif /* NULL */
-#endif /* ! Mac OS X - breaks precompiled headers */
diff --git a/misc/builddeps/win32/sdl/include/SDL2/close_code.h b/misc/builddeps/win32/sdl/include/SDL2/close_code.h
deleted file mode 100644 (file)
index 8e4cac3..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file close_code.h
- *
- *  This file reverses the effects of begin_code.h and should be included
- *  after you finish any function and structure declarations in your headers
- */
-
-#ifndef _begin_code_h
-#error close_code.h included without matching begin_code.h
-#endif
-#undef _begin_code_h
-
-/* Reset structure packing at previous byte alignment */
-#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
-#ifdef __BORLANDC__
-#pragma nopackwarning
-#endif
-#pragma pack(pop)
-#endif /* Compiler needs structure packing set */
diff --git a/misc/builddeps/win32/sdl/lib/cmake/SDL2/sdl2-config.cmake b/misc/builddeps/win32/sdl/lib/cmake/SDL2/sdl2-config.cmake
deleted file mode 100644 (file)
index 30617b4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# sdl2 cmake project-config input for ./configure scripts
-
-set(prefix "/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.10/../32") 
-set(exec_prefix "${prefix}")
-set(libdir "${exec_prefix}/lib")
-set(SDL2_PREFIX "/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.10/../32")
-set(SDL2_EXEC_PREFIX "/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.10/../32")
-set(SDL2_LIBDIR "${exec_prefix}/lib")
-set(SDL2_INCLUDE_DIRS "${prefix}/include/SDL2")
-set(SDL2_LIBRARIES "-L${SDL2_LIBDIR}  -lmingw32 -lSDL2main -lSDL2 -mwindows")
-string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
diff --git a/misc/builddeps/win32/sdl/lib/libSDL2.a b/misc/builddeps/win32/sdl/lib/libSDL2.a
deleted file mode 100644 (file)
index bee8366..0000000
Binary files a/misc/builddeps/win32/sdl/lib/libSDL2.a and /dev/null differ
diff --git a/misc/builddeps/win32/sdl/lib/libSDL2.la b/misc/builddeps/win32/sdl/lib/libSDL2.la
deleted file mode 100755 (executable)
index d34f6aa..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libSDL2.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.4.2
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libSDL2.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libSDL2.
-current=10
-age=10
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.5/../32/lib'
diff --git a/misc/builddeps/win32/sdl/lib/libSDL2_test.a b/misc/builddeps/win32/sdl/lib/libSDL2_test.a
deleted file mode 100644 (file)
index 997c1d4..0000000
Binary files a/misc/builddeps/win32/sdl/lib/libSDL2_test.a and /dev/null differ
diff --git a/misc/builddeps/win32/sdl/lib/libSDL2main.a b/misc/builddeps/win32/sdl/lib/libSDL2main.a
deleted file mode 100644 (file)
index aa33741..0000000
Binary files a/misc/builddeps/win32/sdl/lib/libSDL2main.a and /dev/null differ
diff --git a/misc/builddeps/win32/sdl/lib/pkgconfig/sdl2.pc b/misc/builddeps/win32/sdl/lib/pkgconfig/sdl2.pc
deleted file mode 100644 (file)
index 980046c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# sdl pkg-config source file
-
-prefix=/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.10/../32
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: sdl2
-Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
-Version: 2.0.10
-Requires:
-Conflicts:
-Libs: -L${libdir}  -lmingw32 -lSDL2main -lSDL2 -mwindows
-Libs.private: -lmingw32 -lSDL2main -lSDL2 -mwindows  -Wl,--no-undefined -Wl,--dynamicbase -Wl,--nxcompat -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid -static-libgcc
-Cflags: -I${includedir}/SDL2  -Dmain=SDL_main
diff --git a/misc/builddeps/win32/sdl/share/aclocal/sdl2.m4 b/misc/builddeps/win32/sdl/share/aclocal/sdl2.m4
deleted file mode 100644 (file)
index 0a73bc7..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-# Configure paths for SDL
-# Sam Lantinga 9/21/99
-# stolen from Manish Singh
-# stolen back from Frank Belew
-# stolen from Manish Singh
-# Shamelessly stolen from Owen Taylor
-#
-# Changelog:
-# * also look for SDL2.framework under Mac OS X
-
-# serial 1
-
-dnl AM_PATH_SDL2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
-dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
-dnl
-AC_DEFUN([AM_PATH_SDL2],
-[dnl 
-dnl Get the cflags and libraries from the sdl2-config script
-dnl
-AC_ARG_WITH(sdl-prefix,[  --with-sdl-prefix=PFX   Prefix where SDL is installed (optional)],
-            sdl_prefix="$withval", sdl_prefix="")
-AC_ARG_WITH(sdl-exec-prefix,[  --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
-            sdl_exec_prefix="$withval", sdl_exec_prefix="")
-AC_ARG_ENABLE(sdltest, [  --disable-sdltest       Do not try to compile and run a test SDL program],
-                   , enable_sdltest=yes)
-AC_ARG_ENABLE(sdlframework, [  --disable-sdlframework Do not search for SDL2.framework],
-        , search_sdl_framework=yes)
-
-AC_ARG_VAR(SDL2_FRAMEWORK, [Path to SDL2.framework])
-
-  min_sdl_version=ifelse([$1], ,2.0.0,$1)
-
-  if test "x$sdl_prefix$sdl_exec_prefix" = x ; then
-    PKG_CHECK_MODULES([SDL], [sdl2 >= $min_sdl_version],
-           [sdl_pc=yes],
-           [sdl_pc=no])
-  else
-    sdl_pc=no
-    if test x$sdl_exec_prefix != x ; then
-      sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix"
-      if test x${SDL2_CONFIG+set} != xset ; then
-        SDL2_CONFIG=$sdl_exec_prefix/bin/sdl2-config
-      fi
-    fi
-    if test x$sdl_prefix != x ; then
-      sdl_config_args="$sdl_config_args --prefix=$sdl_prefix"
-      if test x${SDL2_CONFIG+set} != xset ; then
-        SDL2_CONFIG=$sdl_prefix/bin/sdl2-config
-      fi
-    fi
-  fi
-
-  if test "x$sdl_pc" = xyes ; then
-    no_sdl=""
-    SDL2_CONFIG="pkg-config sdl2"
-  else
-    as_save_PATH="$PATH"
-    if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then
-      PATH="$prefix/bin:$prefix/usr/bin:$PATH"
-    fi
-    AC_PATH_PROG(SDL2_CONFIG, sdl2-config, no, [$PATH])
-    PATH="$as_save_PATH"
-    no_sdl=""
-
-    if test "$SDL2_CONFIG" = "no" -a "x$search_sdl_framework" = "xyes"; then
-      AC_MSG_CHECKING(for SDL2.framework)
-      if test "x$SDL2_FRAMEWORK" != x; then
-        sdl_framework=$SDL2_FRAMEWORK
-      else
-        for d in / ~/ /System/; do
-          if test -d "$dLibrary/Frameworks/SDL2.framework"; then
-            sdl_framework="$dLibrary/Frameworks/SDL2.framework"
-          fi
-        done
-      fi
-
-      if test x"$sdl_framework" != x && test -d "$sdl_framework"; then
-        AC_MSG_RESULT($sdl_framework)
-        sdl_framework_dir=`dirname $sdl_framework`
-        SDL_CFLAGS="-F$sdl_framework_dir -Wl,-framework,SDL2 -I$sdl_framework/include"
-        SDL_LIBS="-F$sdl_framework_dir -Wl,-framework,SDL2"
-      else
-        no_sdl=yes
-      fi
-    fi
-
-    if test "$SDL2_CONFIG" != "no"; then
-      if test "x$sdl_pc" = "xno"; then
-        AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
-        SDL_CFLAGS=`$SDL2_CONFIG $sdl_config_args --cflags`
-        SDL_LIBS=`$SDL2_CONFIG $sdl_config_args --libs`
-      fi
-
-      sdl_major_version=`$SDL2_CONFIG $sdl_config_args --version | \
-             sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-      sdl_minor_version=`$SDL2_CONFIG $sdl_config_args --version | \
-             sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-      sdl_micro_version=`$SDL2_CONFIG $sdl_config_args --version | \
-             sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-      if test "x$enable_sdltest" = "xyes" ; then
-        ac_save_CFLAGS="$CFLAGS"
-        ac_save_CXXFLAGS="$CXXFLAGS"
-        ac_save_LIBS="$LIBS"
-        CFLAGS="$CFLAGS $SDL_CFLAGS"
-        CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
-        LIBS="$LIBS $SDL_LIBS"
-dnl
-dnl Now check if the installed SDL is sufficiently new. (Also sanity
-dnl checks the results of sdl2-config to some extent
-dnl
-      rm -f conf.sdltest
-      AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "SDL.h"
-
-char*
-my_strdup (char *str)
-{
-  char *new_str;
-  
-  if (str)
-    {
-      new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
-      strcpy (new_str, str);
-    }
-  else
-    new_str = NULL;
-  
-  return new_str;
-}
-
-int main (int argc, char *argv[])
-{
-  int major, minor, micro;
-  char *tmp_version;
-
-  /* This hangs on some systems (?)
-  system ("touch conf.sdltest");
-  */
-  { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
-
-  /* HP/UX 9 (%@#!) writes to sscanf strings */
-  tmp_version = my_strdup("$min_sdl_version");
-  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_sdl_version");
-     exit(1);
-   }
-
-   if (($sdl_major_version > major) ||
-      (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
-      (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
-    {
-      return 0;
-    }
-  else
-    {
-      printf("\n*** 'sdl2-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
-      printf("*** of SDL required is %d.%d.%d. If sdl2-config is correct, then it is\n", major, minor, micro);
-      printf("*** best to upgrade to the required version.\n");
-      printf("*** If sdl2-config was wrong, set the environment variable SDL2_CONFIG\n");
-      printf("*** to point to the correct copy of sdl2-config, and remove the file\n");
-      printf("*** config.cache before re-running configure\n");
-      return 1;
-    }
-}
-
-],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-        CFLAGS="$ac_save_CFLAGS"
-        CXXFLAGS="$ac_save_CXXFLAGS"
-        LIBS="$ac_save_LIBS"
-
-      fi
-      if test "x$sdl_pc" = "xno"; then
-        if test "x$no_sdl" = "xyes"; then
-          AC_MSG_RESULT(no)
-        else
-          AC_MSG_RESULT(yes)
-        fi
-      fi
-    fi
-  fi
-  if test "x$no_sdl" = x ; then
-     ifelse([$2], , :, [$2])
-  else
-     if test "$SDL2_CONFIG" = "no" ; then
-       echo "*** The sdl2-config script installed by SDL could not be found"
-       echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
-       echo "*** your path, or set the SDL2_CONFIG environment variable to the"
-       echo "*** full path to sdl2-config."
-     else
-       if test -f conf.sdltest ; then
-        :
-       else
-          echo "*** Could not run SDL test program, checking why..."
-          CFLAGS="$CFLAGS $SDL_CFLAGS"
-          CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
-          LIBS="$LIBS $SDL_LIBS"
-          AC_TRY_LINK([
-#include <stdio.h>
-#include "SDL.h"
-
-int main(int argc, char *argv[])
-{ return 0; }
-#undef  main
-#define main K_and_R_C_main
-],      [ return 0; ],
-        [ echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding SDL or finding the wrong"
-          echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-         echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
-        [ echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means SDL was incorrectly installed"
-          echo "*** or that you have moved SDL since it was installed. In the latter case, you"
-          echo "*** may want to edit the sdl2-config script: $SDL2_CONFIG" ])
-          CFLAGS="$ac_save_CFLAGS"
-          CXXFLAGS="$ac_save_CXXFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     SDL_CFLAGS=""
-     SDL_LIBS=""
-     ifelse([$3], , :, [$3])
-  fi
-  AC_SUBST(SDL_CFLAGS)
-  AC_SUBST(SDL_LIBS)
-  rm -f conf.sdltest
-])
diff --git a/misc/builddeps/win32/zlib/bin/zlib1.dll b/misc/builddeps/win32/zlib/bin/zlib1.dll
deleted file mode 100755 (executable)
index 1ced00e..0000000
Binary files a/misc/builddeps/win32/zlib/bin/zlib1.dll and /dev/null differ
diff --git a/misc/builddeps/win32/zlib/include/zlib.h b/misc/builddeps/win32/zlib/include/zlib.h
deleted file mode 100644 (file)
index 79142d1..0000000
+++ /dev/null
@@ -1,1732 +0,0 @@
-/* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.6, January 29th, 2012
-
-  Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  Jean-loup Gailly        Mark Adler
-  jloup@gzip.org          madler@alumni.caltech.edu
-
-
-  The data format used by the zlib library is described by RFCs (Request for
-  Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
-  (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
-*/
-
-#ifndef ZLIB_H
-#define ZLIB_H
-
-#include "zconf.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ZLIB_VERSION "1.2.6"
-#define ZLIB_VERNUM 0x1260
-#define ZLIB_VER_MAJOR 1
-#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 6
-#define ZLIB_VER_SUBREVISION 0
-
-/*
-    The 'zlib' compression library provides in-memory compression and
-  decompression functions, including integrity checks of the uncompressed data.
-  This version of the library supports only one compression method (deflation)
-  but other algorithms will be added later and will have the same stream
-  interface.
-
-    Compression can be done in a single step if the buffers are large enough,
-  or can be done by repeated calls of the compression function.  In the latter
-  case, the application must provide more input and/or consume the output
-  (providing more output space) before each call.
-
-    The compressed data format used by default by the in-memory functions is
-  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
-  around a deflate stream, which is itself documented in RFC 1951.
-
-    The library also supports reading and writing files in gzip (.gz) format
-  with an interface similar to that of stdio using the functions that start
-  with "gz".  The gzip format is different from the zlib format.  gzip is a
-  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
-
-    This library can optionally read and write gzip streams in memory as well.
-
-    The zlib format was designed to be compact and fast for use in memory
-  and on communications channels.  The gzip format was designed for single-
-  file compression on file systems, has a larger header than zlib to maintain
-  directory information, and uses a different, slower check method than zlib.
-
-    The library does not install any signal handler.  The decoder checks
-  the consistency of the compressed data, so the library should never crash
-  even in case of corrupted input.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
-
-struct internal_state;
-
-typedef struct z_stream_s {
-    z_const Bytef *next_in;     /* next input byte */
-    uInt     avail_in;  /* number of bytes available at next_in */
-    uLong    total_in;  /* total number of input bytes read so far */
-
-    Bytef    *next_out; /* next output byte should be put there */
-    uInt     avail_out; /* remaining free space at next_out */
-    uLong    total_out; /* total number of bytes output so far */
-
-    z_const char *msg;  /* last error message, NULL if no error */
-    struct internal_state FAR *state; /* not visible by applications */
-
-    alloc_func zalloc;  /* used to allocate the internal state */
-    free_func  zfree;   /* used to free the internal state */
-    voidpf     opaque;  /* private data object passed to zalloc and zfree */
-
-    int     data_type;  /* best guess about the data type: binary or text */
-    uLong   adler;      /* adler32 value of the uncompressed data */
-    uLong   reserved;   /* reserved for future use */
-} z_stream;
-
-typedef z_stream FAR *z_streamp;
-
-/*
-     gzip header information passed to and from zlib routines.  See RFC 1952
-  for more details on the meanings of these fields.
-*/
-typedef struct gz_header_s {
-    int     text;       /* true if compressed data believed to be text */
-    uLong   time;       /* modification time */
-    int     xflags;     /* extra flags (not used when writing a gzip file) */
-    int     os;         /* operating system */
-    Bytef   *extra;     /* pointer to extra field or Z_NULL if none */
-    uInt    extra_len;  /* extra field length (valid if extra != Z_NULL) */
-    uInt    extra_max;  /* space at extra (only when reading header) */
-    Bytef   *name;      /* pointer to zero-terminated file name or Z_NULL */
-    uInt    name_max;   /* space at name (only when reading header) */
-    Bytef   *comment;   /* pointer to zero-terminated comment or Z_NULL */
-    uInt    comm_max;   /* space at comment (only when reading header) */
-    int     hcrc;       /* true if there was or will be a header crc */
-    int     done;       /* true when done reading gzip header (not used
-                           when writing a gzip file) */
-} gz_header;
-
-typedef gz_header FAR *gz_headerp;
-
-/*
-     The application must update next_in and avail_in when avail_in has dropped
-   to zero.  It must update next_out and avail_out when avail_out has dropped
-   to zero.  The application must initialize zalloc, zfree and opaque before
-   calling the init function.  All other fields are set by the compression
-   library and must not be updated by the application.
-
-     The opaque value provided by the application will be passed as the first
-   parameter for calls of zalloc and zfree.  This can be useful for custom
-   memory management.  The compression library attaches no meaning to the
-   opaque value.
-
-     zalloc must return Z_NULL if there is not enough memory for the object.
-   If zlib is used in a multi-threaded application, zalloc and zfree must be
-   thread safe.
-
-     On 16-bit systems, the functions zalloc and zfree must be able to allocate
-   exactly 65536 bytes, but will not be required to allocate more than this if
-   the symbol MAXSEG_64K is defined (see zconf.h).  WARNING: On MSDOS, pointers
-   returned by zalloc for objects of exactly 65536 bytes *must* have their
-   offset normalized to zero.  The default allocation function provided by this
-   library ensures this (see zutil.c).  To reduce memory requirements and avoid
-   any allocation of 64K objects, at the expense of compression ratio, compile
-   the library with -DMAX_WBITS=14 (see zconf.h).
-
-     The fields total_in and total_out can be used for statistics or progress
-   reports.  After compression, total_in holds the total size of the
-   uncompressed data and may be saved for use in the decompressor (particularly
-   if the decompressor wants to decompress everything in a single step).
-*/
-
-                        /* constants */
-
-#define Z_NO_FLUSH      0
-#define Z_PARTIAL_FLUSH 1
-#define Z_SYNC_FLUSH    2
-#define Z_FULL_FLUSH    3
-#define Z_FINISH        4
-#define Z_BLOCK         5
-#define Z_TREES         6
-/* Allowed flush values; see deflate() and inflate() below for details */
-
-#define Z_OK            0
-#define Z_STREAM_END    1
-#define Z_NEED_DICT     2
-#define Z_ERRNO        (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR   (-3)
-#define Z_MEM_ERROR    (-4)
-#define Z_BUF_ERROR    (-5)
-#define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative values
- * are errors, positive values are used for special but normal events.
- */
-
-#define Z_NO_COMPRESSION         0
-#define Z_BEST_SPEED             1
-#define Z_BEST_COMPRESSION       9
-#define Z_DEFAULT_COMPRESSION  (-1)
-/* compression levels */
-
-#define Z_FILTERED            1
-#define Z_HUFFMAN_ONLY        2
-#define Z_RLE                 3
-#define Z_FIXED               4
-#define Z_DEFAULT_STRATEGY    0
-/* compression strategy; see deflateInit2() below for details */
-
-#define Z_BINARY   0
-#define Z_TEXT     1
-#define Z_ASCII    Z_TEXT   /* for compatibility with 1.2.2 and earlier */
-#define Z_UNKNOWN  2
-/* Possible values of the data_type field (though see inflate()) */
-
-#define Z_DEFLATED   8
-/* The deflate compression method (the only one supported in this version) */
-
-#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
-
-#define zlib_version zlibVersion()
-/* for compatibility with versions < 1.0.2 */
-
-
-                        /* basic functions */
-
-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
-   If the first character differs, the library code actually used is not
-   compatible with the zlib.h header file used by the application.  This check
-   is automatically made by deflateInit and inflateInit.
- */
-
-/*
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
-
-     Initializes the internal stream state for compression.  The fields
-   zalloc, zfree and opaque must be initialized before by the caller.  If
-   zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
-   allocation functions.
-
-     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
-   1 gives best speed, 9 gives best compression, 0 gives no compression at all
-   (the input data is simply copied a block at a time).  Z_DEFAULT_COMPRESSION
-   requests a default compromise between speed and compression (currently
-   equivalent to level 6).
-
-     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if level is not a valid compression level, or
-   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
-   with the version assumed by the caller (ZLIB_VERSION).  msg is set to null
-   if there is no error message.  deflateInit does not perform any compression:
-   this will be done by deflate().
-*/
-
-
-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
-/*
-    deflate compresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full.  It may introduce
-  some output latency (reading input without producing any output) except when
-  forced to flush.
-
-    The detailed semantics are as follows.  deflate performs one or both of the
-  following actions:
-
-  - Compress more input starting at next_in and update next_in and avail_in
-    accordingly.  If not all input can be processed (because there is not
-    enough room in the output buffer), next_in and avail_in are updated and
-    processing will resume at this point for the next call of deflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly.  This action is forced if the parameter flush is non zero.
-    Forcing flush frequently degrades the compression ratio, so this parameter
-    should be set only when necessary (in interactive applications).  Some
-    output may be provided even if flush is not set.
-
-    Before the call of deflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming more
-  output, and updating avail_in or avail_out accordingly; avail_out should
-  never be zero before the call.  The application can consume the compressed
-  output when it wants, for example when the output buffer is full (avail_out
-  == 0), or after each call of deflate().  If deflate returns Z_OK and with
-  zero avail_out, it must be called again after making room in the output
-  buffer because there might be more output pending.
-
-    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
-  decide how much data to accumulate before producing output, in order to
-  maximize compression.
-
-    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
-  flushed to the output buffer and the output is aligned on a byte boundary, so
-  that the decompressor can get all input data available so far.  (In
-  particular avail_in is zero after the call if enough output space has been
-  provided before the call.) Flushing may degrade compression for some
-  compression algorithms and so it should be used only when necessary.  This
-  completes the current deflate block and follows it with an empty stored block
-  that is three bits plus filler bits to the next byte, followed by four bytes
-  (00 00 ff ff).
-
-    If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the
-  output buffer, but the output is not aligned to a byte boundary.  All of the
-  input data so far will be available to the decompressor, as for Z_SYNC_FLUSH.
-  This completes the current deflate block and follows it with an empty fixed
-  codes block that is 10 bits long.  This assures that enough bytes are output
-  in order for the decompressor to finish the block before the empty fixed code
-  block.
-
-    If flush is set to Z_BLOCK, a deflate block is completed and emitted, as
-  for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to
-  seven bits of the current block are held to be written as the next byte after
-  the next deflate block is completed.  In this case, the decompressor may not
-  be provided enough bits at this point in order to complete decompression of
-  the data provided so far to the compressor.  It may need to wait for the next
-  block to be emitted.  This is for advanced applications that need to control
-  the emission of deflate blocks.
-
-    If flush is set to Z_FULL_FLUSH, all output is flushed as with
-  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
-  restart from this point if previous compressed data has been damaged or if
-  random access is desired.  Using Z_FULL_FLUSH too often can seriously degrade
-  compression.
-
-    If deflate returns with avail_out == 0, this function must be called again
-  with the same value of the flush parameter and more output space (updated
-  avail_out), until the flush is complete (deflate returns with non-zero
-  avail_out).  In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
-  avail_out is greater than six to avoid repeated flush markers due to
-  avail_out == 0 on return.
-
-    If the parameter flush is set to Z_FINISH, pending input is processed,
-  pending output is flushed and deflate returns with Z_STREAM_END if there was
-  enough output space; if deflate returns with Z_OK, this function must be
-  called again with Z_FINISH and more output space (updated avail_out) but no
-  more input data, until it returns with Z_STREAM_END or an error.  After
-  deflate has returned Z_STREAM_END, the only possible operations on the stream
-  are deflateReset or deflateEnd.
-
-    Z_FINISH can be used immediately after deflateInit if all the compression
-  is to be done in a single step.  In this case, avail_out must be at least the
-  value returned by deflateBound (see below).  Then deflate is guaranteed to
-  return Z_STREAM_END.  If not enough output space is provided, deflate will
-  not return Z_STREAM_END, and it must be called again as described above.
-
-    deflate() sets strm->adler to the adler32 checksum of all input read
-  so far (that is, total_in bytes).
-
-    deflate() may update strm->data_type if it can make a good guess about
-  the input data type (Z_BINARY or Z_TEXT).  In doubt, the data is considered
-  binary.  This field is only for information purposes and does not affect the
-  compression algorithm in any manner.
-
-    deflate() returns Z_OK if some progress has been made (more input
-  processed or more output produced), Z_STREAM_END if all input has been
-  consumed and all output has been produced (only when flush is set to
-  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
-  if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible
-  (for example avail_in or avail_out was zero).  Note that Z_BUF_ERROR is not
-  fatal, and deflate() can be called again with more input and more output
-  space to continue compressing.
-*/
-
-
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any pending
-   output.
-
-     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
-   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
-   prematurely (some input or output was discarded).  In the error case, msg
-   may be set but then points to a static string (which must not be
-   deallocated).
-*/
-
-
-/*
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
-
-     Initializes the internal stream state for decompression.  The fields
-   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
-   the caller.  If next_in is not Z_NULL and avail_in is large enough (the
-   exact value depends on the compression method), inflateInit determines the
-   compression method from the zlib header and allocates all data structures
-   accordingly; otherwise the allocation will be deferred to the first call of
-   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
-   use default allocation functions.
-
-     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
-   version assumed by the caller, or Z_STREAM_ERROR if the parameters are
-   invalid, such as a null pointer to the structure.  msg is set to null if
-   there is no error message.  inflateInit does not perform any decompression
-   apart from possibly reading the zlib header if present: actual decompression
-   will be done by inflate().  (So next_in and avail_in may be modified, but
-   next_out and avail_out are unused and unchanged.) The current implementation
-   of inflateInit() does not process any header information -- that is deferred
-   until inflate() is called.
-*/
-
-
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
-/*
-    inflate decompresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full.  It may introduce
-  some output latency (reading input without producing any output) except when
-  forced to flush.
-
-  The detailed semantics are as follows.  inflate performs one or both of the
-  following actions:
-
-  - Decompress more input starting at next_in and update next_in and avail_in
-    accordingly.  If not all input can be processed (because there is not
-    enough room in the output buffer), next_in is updated and processing will
-    resume at this point for the next call of inflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly.  inflate() provides as much output as possible, until there is
-    no more input data or no more space in the output buffer (see below about
-    the flush parameter).
-
-    Before the call of inflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming more
-  output, and updating the next_* and avail_* values accordingly.  The
-  application can consume the uncompressed output when it wants, for example
-  when the output buffer is full (avail_out == 0), or after each call of
-  inflate().  If inflate returns Z_OK and with zero avail_out, it must be
-  called again after making room in the output buffer because there might be
-  more output pending.
-
-    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH,
-  Z_BLOCK, or Z_TREES.  Z_SYNC_FLUSH requests that inflate() flush as much
-  output as possible to the output buffer.  Z_BLOCK requests that inflate()
-  stop if and when it gets to the next deflate block boundary.  When decoding
-  the zlib or gzip format, this will cause inflate() to return immediately
-  after the header and before the first block.  When doing a raw inflate,
-  inflate() will go ahead and process the first block, and will return when it
-  gets to the end of that block, or when it runs out of data.
-
-    The Z_BLOCK option assists in appending to or combining deflate streams.
-  Also to assist in this, on return inflate() will set strm->data_type to the
-  number of unused bits in the last byte taken from strm->next_in, plus 64 if
-  inflate() is currently decoding the last block in the deflate stream, plus
-  128 if inflate() returned immediately after decoding an end-of-block code or
-  decoding the complete header up to just before the first byte of the deflate
-  stream.  The end-of-block will not be indicated until all of the uncompressed
-  data from that block has been written to strm->next_out.  The number of
-  unused bits may in general be greater than seven, except when bit 7 of
-  data_type is set, in which case the number of unused bits will be less than
-  eight.  data_type is set as noted here every time inflate() returns for all
-  flush options, and so can be used to determine the amount of currently
-  consumed input in bits.
-
-    The Z_TREES option behaves as Z_BLOCK does, but it also returns when the
-  end of each deflate block header is reached, before any actual data in that
-  block is decoded.  This allows the caller to determine the length of the
-  deflate block header for later use in random access within a deflate block.
-  256 is added to the value of strm->data_type when inflate() returns
-  immediately after reaching the end of the deflate block header.
-
-    inflate() should normally be called until it returns Z_STREAM_END or an
-  error.  However if all decompression is to be performed in a single step (a
-  single call of inflate), the parameter flush should be set to Z_FINISH.  In
-  this case all pending input is processed and all pending output is flushed;
-  avail_out must be large enough to hold all the uncompressed data.  (The size
-  of the uncompressed data may have been saved by the compressor for this
-  purpose.) The next operation on this stream must be inflateEnd to deallocate
-  the decompression state.  The use of Z_FINISH is not required to perform an
-  inflation in one step.  However it may be used to inform inflate that a
-  faster approach can be used for the single inflate() call.  Z_FINISH also
-  informs inflate to not maintain a sliding window if the stream completes,
-  which reduces inflate's memory footprint.
-
-     In this implementation, inflate() always flushes as much output as
-  possible to the output buffer, and always uses the faster approach on the
-  first call.  So the effects of the flush parameter in this implementation are
-  on the return value of inflate() as noted below, when inflate() returns early
-  when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of
-  memory for a sliding window when Z_FINISH is used.
-
-     If a preset dictionary is needed after this call (see inflateSetDictionary
-  below), inflate sets strm->adler to the Adler-32 checksum of the dictionary
-  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
-  strm->adler to the Adler-32 checksum of all output produced so far (that is,
-  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
-  below.  At the end of the stream, inflate() checks that its computed adler32
-  checksum is equal to that saved by the compressor and returns Z_STREAM_END
-  only if the checksum is correct.
-
-    inflate() can decompress and check either zlib-wrapped or gzip-wrapped
-  deflate data.  The header type is detected automatically, if requested when
-  initializing with inflateInit2().  Any information contained in the gzip
-  header is not retained, so applications that need that information should
-  instead use raw inflate, see inflateInit2() below, or inflateBack() and
-  perform their own processing of the gzip header and trailer.  When processing
-  gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output
-  producted so far.  The CRC-32 is checked against the gzip trailer.
-
-    inflate() returns Z_OK if some progress has been made (more input processed
-  or more output produced), Z_STREAM_END if the end of the compressed data has
-  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
-  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
-  corrupted (input stream not conforming to the zlib format or incorrect check
-  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
-  next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory,
-  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
-  output buffer when Z_FINISH is used.  Note that Z_BUF_ERROR is not fatal, and
-  inflate() can be called again with more input and more output space to
-  continue decompressing.  If Z_DATA_ERROR is returned, the application may
-  then call inflateSync() to look for a good compression block if a partial
-  recovery of the data is desired.
-*/
-
-
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any pending
-   output.
-
-     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
-   was inconsistent.  In the error case, msg may be set but then points to a
-   static string (which must not be deallocated).
-*/
-
-
-                        /* Advanced functions */
-
-/*
-    The following functions are needed only in some special applications.
-*/
-
-/*
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
-                                     int  level,
-                                     int  method,
-                                     int  windowBits,
-                                     int  memLevel,
-                                     int  strategy));
-
-     This is another version of deflateInit with more compression options.  The
-   fields next_in, zalloc, zfree and opaque must be initialized before by the
-   caller.
-
-     The method parameter is the compression method.  It must be Z_DEFLATED in
-   this version of the library.
-
-     The windowBits parameter is the base two logarithm of the window size
-   (the size of the history buffer).  It should be in the range 8..15 for this
-   version of the library.  Larger values of this parameter result in better
-   compression at the expense of memory usage.  The default value is 15 if
-   deflateInit is used instead.
-
-     windowBits can also be -8..-15 for raw deflate.  In this case, -windowBits
-   determines the window size.  deflate() will then generate raw deflate data
-   with no zlib header or trailer, and will not compute an adler32 check value.
-
-     windowBits can also be greater than 15 for optional gzip encoding.  Add
-   16 to windowBits to write a simple gzip header and trailer around the
-   compressed data instead of a zlib wrapper.  The gzip header will have no
-   file name, no extra data, no comment, no modification time (set to zero), no
-   header crc, and the operating system will be set to 255 (unknown).  If a
-   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
-
-     The memLevel parameter specifies how much memory should be allocated
-   for the internal compression state.  memLevel=1 uses minimum memory but is
-   slow and reduces compression ratio; memLevel=9 uses maximum memory for
-   optimal speed.  The default value is 8.  See zconf.h for total memory usage
-   as a function of windowBits and memLevel.
-
-     The strategy parameter is used to tune the compression algorithm.  Use the
-   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
-   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
-   string match), or Z_RLE to limit match distances to one (run-length
-   encoding).  Filtered data consists mostly of small values with a somewhat
-   random distribution.  In this case, the compression algorithm is tuned to
-   compress them better.  The effect of Z_FILTERED is to force more Huffman
-   coding and less string matching; it is somewhat intermediate between
-   Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY.  Z_RLE is designed to be almost as
-   fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data.  The
-   strategy parameter only affects the compression ratio but not the
-   correctness of the compressed output even if it is not set appropriately.
-   Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler
-   decoder for special applications.
-
-     deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid
-   method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is
-   incompatible with the version assumed by the caller (ZLIB_VERSION).  msg is
-   set to null if there is no error message.  deflateInit2 does not perform any
-   compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the compression dictionary from the given byte sequence
-   without producing any compressed output.  When using the zlib format, this
-   function must be called immediately after deflateInit, deflateInit2 or
-   deflateReset, and before any call of deflate.  When doing raw deflate, this
-   function must be called either before any call of deflate, or immediately
-   after the completion of a deflate block, i.e. after all input has been
-   consumed and all output has been delivered when using any of the flush
-   options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH.  The
-   compressor and decompressor must use exactly the same dictionary (see
-   inflateSetDictionary).
-
-     The dictionary should consist of strings (byte sequences) that are likely
-   to be encountered later in the data to be compressed, with the most commonly
-   used strings preferably put towards the end of the dictionary.  Using a
-   dictionary is most useful when the data to be compressed is short and can be
-   predicted with good accuracy; the data can then be compressed better than
-   with the default empty dictionary.
-
-     Depending on the size of the compression data structures selected by
-   deflateInit or deflateInit2, a part of the dictionary may in effect be
-   discarded, for example if the dictionary is larger than the window size
-   provided in deflateInit or deflateInit2.  Thus the strings most likely to be
-   useful should be put at the end of the dictionary, not at the front.  In
-   addition, the current implementation of deflate will use at most the window
-   size minus 262 bytes of the provided dictionary.
-
-     Upon return of this function, strm->adler is set to the adler32 value
-   of the dictionary; the decompressor may later use this value to determine
-   which dictionary has been used by the compressor.  (The adler32 value
-   applies to the whole dictionary even if only a subset of the dictionary is
-   actually used by the compressor.) If a raw deflate was requested, then the
-   adler32 value is not computed and strm->adler is not set.
-
-     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
-   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
-   inconsistent (for example if deflate has already been called for this stream
-   or if not at a block boundary for raw deflate).  deflateSetDictionary does
-   not perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
-                                    z_streamp source));
-/*
-     Sets the destination stream as a complete copy of the source stream.
-
-     This function can be useful when several compression strategies will be
-   tried, for example when there are several ways of pre-processing the input
-   data with a filter.  The streams that will be discarded should then be freed
-   by calling deflateEnd.  Note that deflateCopy duplicates the internal
-   compression state which can be quite large, so this strategy is slow and can
-   consume lots of memory.
-
-     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
-   destination.
-*/
-
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to deflateEnd followed by deflateInit,
-   but does not free and reallocate all the internal compression state.  The
-   stream will keep the same compression level and any other attributes that
-   may have been set by deflateInit2.
-
-     deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being Z_NULL).
-*/
-
-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
-                                      int level,
-                                      int strategy));
-/*
-     Dynamically update the compression level and compression strategy.  The
-   interpretation of level and strategy is as in deflateInit2.  This can be
-   used to switch between compression and straight copy of the input data, or
-   to switch to a different kind of input data requiring a different strategy.
-   If the compression level is changed, the input available so far is
-   compressed with the old level (and may be flushed); the new level will take
-   effect only at the next call of deflate().
-
-     Before the call of deflateParams, the stream state must be set as for
-   a call of deflate(), since the currently available input may have to be
-   compressed and flushed.  In particular, strm->avail_out must be non-zero.
-
-     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
-   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if
-   strm->avail_out was zero.
-*/
-
-ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
-                                    int good_length,
-                                    int max_lazy,
-                                    int nice_length,
-                                    int max_chain));
-/*
-     Fine tune deflate's internal compression parameters.  This should only be
-   used by someone who understands the algorithm used by zlib's deflate for
-   searching for the best matching string, and even then only by the most
-   fanatic optimizer trying to squeeze out the last compressed bit for their
-   specific input data.  Read the deflate.c source code for the meaning of the
-   max_lazy, good_length, nice_length, and max_chain parameters.
-
-     deflateTune() can be called after deflateInit() or deflateInit2(), and
-   returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
- */
-
-ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
-                                       uLong sourceLen));
-/*
-     deflateBound() returns an upper bound on the compressed size after
-   deflation of sourceLen bytes.  It must be called after deflateInit() or
-   deflateInit2(), and after deflateSetHeader(), if used.  This would be used
-   to allocate an output buffer for deflation in a single pass, and so would be
-   called before deflate().  If that first deflate() call is provided the
-   sourceLen input bytes, an output buffer allocated to the size returned by
-   deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed
-   to return Z_STREAM_END.  Note that it is possible for the compressed size to
-   be larger than the value returned by deflateBound() if flush options other
-   than Z_FINISH or Z_NO_FLUSH are used.
-*/
-
-ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
-                                       unsigned *pending,
-                                       int *bits));
-/*
-     deflatePending() returns the number of bytes and bits of output that have
-   been generated, but not yet provided in the available output.  The bytes not
-   provided would be due to the available output space having being consumed.
-   The number of bits of output not provided are between 0 and 7, where they
-   await more bits to join them in order to fill out a full byte.  If pending
-   or bits are Z_NULL, then those values are not set.
-
-     deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
- */
-
-ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
-/*
-     deflatePrime() inserts bits in the deflate output stream.  The intent
-   is that this function is used to start off the deflate output with the bits
-   leftover from a previous deflate stream when appending to it.  As such, this
-   function can only be used for raw deflate, and must be used before the first
-   deflate() call after a deflateInit2() or deflateReset().  bits must be less
-   than or equal to 16, and that many of the least significant bits of value
-   will be inserted in the output.
-
-     deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough
-   room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the
-   source stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
-                                         gz_headerp head));
-/*
-     deflateSetHeader() provides gzip header information for when a gzip
-   stream is requested by deflateInit2().  deflateSetHeader() may be called
-   after deflateInit2() or deflateReset() and before the first call of
-   deflate().  The text, time, os, extra field, name, and comment information
-   in the provided gz_header structure are written to the gzip header (xflag is
-   ignored -- the extra flags are set according to the compression level).  The
-   caller must assure that, if not Z_NULL, name and comment are terminated with
-   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
-   available there.  If hcrc is true, a gzip header crc is included.  Note that
-   the current versions of the command-line version of gzip (up through version
-   1.3.x) do not support header crc's, and will report that it is a "multi-part
-   gzip file" and give up.
-
-     If deflateSetHeader is not used, the default gzip header has text false,
-   the time set to zero, and os set to 255, with no extra, name, or comment
-   fields.  The gzip header is returned to the default state by deflateReset().
-
-     deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
-                                     int  windowBits));
-
-     This is another version of inflateInit with an extra parameter.  The
-   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
-   before by the caller.
-
-     The windowBits parameter is the base two logarithm of the maximum window
-   size (the size of the history buffer).  It should be in the range 8..15 for
-   this version of the library.  The default value is 15 if inflateInit is used
-   instead.  windowBits must be greater than or equal to the windowBits value
-   provided to deflateInit2() while compressing, or it must be equal to 15 if
-   deflateInit2() was not used.  If a compressed stream with a larger window
-   size is given as input, inflate() will return with the error code
-   Z_DATA_ERROR instead of trying to allocate a larger window.
-
-     windowBits can also be zero to request that inflate use the window size in
-   the zlib header of the compressed stream.
-
-     windowBits can also be -8..-15 for raw inflate.  In this case, -windowBits
-   determines the window size.  inflate() will then process raw deflate data,
-   not looking for a zlib or gzip header, not generating a check value, and not
-   looking for any check values for comparison at the end of the stream.  This
-   is for use with other formats that use the deflate compressed data format
-   such as zip.  Those formats provide their own check values.  If a custom
-   format is developed using the raw deflate format for compressed data, it is
-   recommended that a check value such as an adler32 or a crc32 be applied to
-   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
-   most applications, the zlib format should be used as is.  Note that comments
-   above on the use in deflateInit2() applies to the magnitude of windowBits.
-
-     windowBits can also be greater than 15 for optional gzip decoding.  Add
-   32 to windowBits to enable zlib and gzip decoding with automatic header
-   detection, or add 16 to decode only the gzip format (the zlib format will
-   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is a
-   crc32 instead of an adler32.
-
-     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
-   version assumed by the caller, or Z_STREAM_ERROR if the parameters are
-   invalid, such as a null pointer to the structure.  msg is set to null if
-   there is no error message.  inflateInit2 does not perform any decompression
-   apart from possibly reading the zlib header if present: actual decompression
-   will be done by inflate().  (So next_in and avail_in may be modified, but
-   next_out and avail_out are unused and unchanged.) The current implementation
-   of inflateInit2() does not process any header information -- that is
-   deferred until inflate() is called.
-*/
-
-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the decompression dictionary from the given uncompressed byte
-   sequence.  This function must be called immediately after a call of inflate,
-   if that call returned Z_NEED_DICT.  The dictionary chosen by the compressor
-   can be determined from the adler32 value returned by that call of inflate.
-   The compressor and decompressor must use exactly the same dictionary (see
-   deflateSetDictionary).  For raw inflate, this function can be called at any
-   time to set the dictionary.  If the provided dictionary is smaller than the
-   window and there is already data in the window, then the provided dictionary
-   will amend what's there.  The application must insure that the dictionary
-   that was used for compression is provided.
-
-     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
-   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
-   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
-   expected one (incorrect adler32 value).  inflateSetDictionary does not
-   perform any decompression: this will be done by subsequent calls of
-   inflate().
-*/
-
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
-/*
-     Skips invalid compressed data until a possible full flush point (see above
-   for the description of deflate with Z_FULL_FLUSH) can be found, or until all
-   available input is skipped.  No output is provided.
-
-     inflateSync searches for a 00 00 FF FF pattern in the compressed data.
-   All full flush points have this pattern, but not all occurences of this
-   pattern are full flush points.
-
-     inflateSync returns Z_OK if a possible full flush point has been found,
-   Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point
-   has been found, or Z_STREAM_ERROR if the stream structure was inconsistent.
-   In the success case, the application may save the current current value of
-   total_in which indicates where valid compressed data was found.  In the
-   error case, the application may repeatedly call inflateSync, providing more
-   input each time, until success or end of the input data.
-*/
-
-ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
-                                    z_streamp source));
-/*
-     Sets the destination stream as a complete copy of the source stream.
-
-     This function can be useful when randomly accessing a large stream.  The
-   first pass through the stream can periodically record the inflate state,
-   allowing restarting inflate at those points when randomly accessing the
-   stream.
-
-     inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
-   destination.
-*/
-
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to inflateEnd followed by inflateInit,
-   but does not free and reallocate all the internal decompression state.  The
-   stream will keep attributes that may have been set by inflateInit2.
-
-     inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being Z_NULL).
-*/
-
-ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
-                                      int windowBits));
-/*
-     This function is the same as inflateReset, but it also permits changing
-   the wrap and window size requests.  The windowBits parameter is interpreted
-   the same as it is for inflateInit2.
-
-     inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being Z_NULL), or if
-   the windowBits parameter is invalid.
-*/
-
-ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
-/*
-     This function inserts bits in the inflate input stream.  The intent is
-   that this function is used to start inflating at a bit position in the
-   middle of a byte.  The provided bits will be used before any bytes are used
-   from next_in.  This function should only be used with raw inflate, and
-   should be used before the first inflate() call after inflateInit2() or
-   inflateReset().  bits must be less than or equal to 16, and that many of the
-   least significant bits of value will be inserted in the input.
-
-     If bits is negative, then the input stream bit buffer is emptied.  Then
-   inflatePrime() can be called again to put bits in the buffer.  This is used
-   to clear out bits leftover after feeding inflate a block description prior
-   to feeding inflate codes.
-
-     inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
-/*
-     This function returns two values, one in the lower 16 bits of the return
-   value, and the other in the remaining upper bits, obtained by shifting the
-   return value down 16 bits.  If the upper value is -1 and the lower value is
-   zero, then inflate() is currently decoding information outside of a block.
-   If the upper value is -1 and the lower value is non-zero, then inflate is in
-   the middle of a stored block, with the lower value equaling the number of
-   bytes from the input remaining to copy.  If the upper value is not -1, then
-   it is the number of bits back from the current bit position in the input of
-   the code (literal or length/distance pair) currently being processed.  In
-   that case the lower value is the number of bytes already emitted for that
-   code.
-
-     A code is being processed if inflate is waiting for more input to complete
-   decoding of the code, or if it has completed decoding but is waiting for
-   more output space to write the literal or match data.
-
-     inflateMark() is used to mark locations in the input data for random
-   access, which may be at bit positions, and to note those cases where the
-   output of a code may span boundaries of random access blocks.  The current
-   location in the input stream can be determined from avail_in and data_type
-   as noted in the description for the Z_BLOCK flush parameter for inflate.
-
-     inflateMark returns the value noted above or -1 << 16 if the provided
-   source stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
-                                         gz_headerp head));
-/*
-     inflateGetHeader() requests that gzip header information be stored in the
-   provided gz_header structure.  inflateGetHeader() may be called after
-   inflateInit2() or inflateReset(), and before the first call of inflate().
-   As inflate() processes the gzip stream, head->done is zero until the header
-   is completed, at which time head->done is set to one.  If a zlib stream is
-   being decoded, then head->done is set to -1 to indicate that there will be
-   no gzip header information forthcoming.  Note that Z_BLOCK or Z_TREES can be
-   used to force inflate() to return immediately after header processing is
-   complete and before any actual data is decompressed.
-
-     The text, time, xflags, and os fields are filled in with the gzip header
-   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
-   was valid if done is set to one.) If extra is not Z_NULL, then extra_max
-   contains the maximum number of bytes to write to extra.  Once done is true,
-   extra_len contains the actual extra field length, and extra contains the
-   extra field, or that field truncated if extra_max is less than extra_len.
-   If name is not Z_NULL, then up to name_max characters are written there,
-   terminated with a zero unless the length is greater than name_max.  If
-   comment is not Z_NULL, then up to comm_max characters are written there,
-   terminated with a zero unless the length is greater than comm_max.  When any
-   of extra, name, or comment are not Z_NULL and the respective field is not
-   present in the header, then that field is set to Z_NULL to signal its
-   absence.  This allows the use of deflateSetHeader() with the returned
-   structure to duplicate the header.  However if those fields are set to
-   allocated memory, then the application will need to save those pointers
-   elsewhere so that they can be eventually freed.
-
-     If inflateGetHeader is not used, then the header information is simply
-   discarded.  The header is always checked for validity, including the header
-   CRC if present.  inflateReset() will reset the process to discard the header
-   information.  The application would need to call inflateGetHeader() again to
-   retrieve the header from the next gzip stream.
-
-     inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
-                                        unsigned char FAR *window));
-
-     Initialize the internal stream state for decompression using inflateBack()
-   calls.  The fields zalloc, zfree and opaque in strm must be initialized
-   before the call.  If zalloc and zfree are Z_NULL, then the default library-
-   derived memory allocation routines are used.  windowBits is the base two
-   logarithm of the window size, in the range 8..15.  window is a caller
-   supplied buffer of that size.  Except for special applications where it is
-   assured that deflate was used with small window sizes, windowBits must be 15
-   and a 32K byte window must be supplied to be able to decompress general
-   deflate streams.
-
-     See inflateBack() for the usage of these routines.
-
-     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
-   the parameters are invalid, Z_MEM_ERROR if the internal state could not be
-   allocated, or Z_VERSION_ERROR if the version of the library does not match
-   the version of the header file.
-*/
-
-typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
-typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
-
-ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
-                                    in_func in, void FAR *in_desc,
-                                    out_func out, void FAR *out_desc));
-/*
-     inflateBack() does a raw inflate with a single call using a call-back
-   interface for input and output.  This is more efficient than inflate() for
-   file i/o applications in that it avoids copying between the output and the
-   sliding window by simply making the window itself the output buffer.  This
-   function trusts the application to not change the output buffer passed by
-   the output function, at least until inflateBack() returns.
-
-     inflateBackInit() must be called first to allocate the internal state
-   and to initialize the state with the user-provided window buffer.
-   inflateBack() may then be used multiple times to inflate a complete, raw
-   deflate stream with each call.  inflateBackEnd() is then called to free the
-   allocated state.
-
-     A raw deflate stream is one with no zlib or gzip header or trailer.
-   This routine would normally be used in a utility that reads zip or gzip
-   files and writes out uncompressed files.  The utility would decode the
-   header and process the trailer on its own, hence this routine expects only
-   the raw deflate stream to decompress.  This is different from the normal
-   behavior of inflate(), which expects either a zlib or gzip header and
-   trailer around the deflate stream.
-
-     inflateBack() uses two subroutines supplied by the caller that are then
-   called by inflateBack() for input and output.  inflateBack() calls those
-   routines until it reads a complete deflate stream and writes out all of the
-   uncompressed data, or until it encounters an error.  The function's
-   parameters and return types are defined above in the in_func and out_func
-   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the
-   number of bytes of provided input, and a pointer to that input in buf.  If
-   there is no input available, in() must return zero--buf is ignored in that
-   case--and inflateBack() will return a buffer error.  inflateBack() will call
-   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()
-   should return zero on success, or non-zero on failure.  If out() returns
-   non-zero, inflateBack() will return with an error.  Neither in() nor out()
-   are permitted to change the contents of the window provided to
-   inflateBackInit(), which is also the buffer that out() uses to write from.
-   The length written by out() will be at most the window size.  Any non-zero
-   amount of input may be provided by in().
-
-     For convenience, inflateBack() can be provided input on the first call by
-   setting strm->next_in and strm->avail_in.  If that input is exhausted, then
-   in() will be called.  Therefore strm->next_in must be initialized before
-   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
-   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
-   must also be initialized, and then if strm->avail_in is not zero, input will
-   initially be taken from strm->next_in[0 ..  strm->avail_in - 1].
-
-     The in_desc and out_desc parameters of inflateBack() is passed as the
-   first parameter of in() and out() respectively when they are called.  These
-   descriptors can be optionally used to pass any information that the caller-
-   supplied in() and out() functions need to do their job.
-
-     On return, inflateBack() will set strm->next_in and strm->avail_in to
-   pass back any unused input that was provided by the last in() call.  The
-   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
-   if in() or out() returned an error, Z_DATA_ERROR if there was a format error
-   in the deflate stream (in which case strm->msg is set to indicate the nature
-   of the error), or Z_STREAM_ERROR if the stream was not properly initialized.
-   In the case of Z_BUF_ERROR, an input or output error can be distinguished
-   using strm->next_in which will be Z_NULL only if in() returned an error.  If
-   strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning
-   non-zero.  (in() will always be called before out(), so strm->next_in is
-   assured to be defined if out() returns non-zero.) Note that inflateBack()
-   cannot return Z_OK.
-*/
-
-ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
-/*
-     All memory allocated by inflateBackInit() is freed.
-
-     inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
-   state was inconsistent.
-*/
-
-ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
-/* Return flags indicating compile-time options.
-
-    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
-     1.0: size of uInt
-     3.2: size of uLong
-     5.4: size of voidpf (pointer)
-     7.6: size of z_off_t
-
-    Compiler, assembler, and debug options:
-     8: DEBUG
-     9: ASMV or ASMINF -- use ASM code
-     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
-     11: 0 (reserved)
-
-    One-time table building (smaller code, but not thread-safe if true):
-     12: BUILDFIXED -- build static block decoding tables when needed
-     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
-     14,15: 0 (reserved)
-
-    Library content (indicates missing functionality):
-     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
-                          deflate code when not needed)
-     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
-                    and decode gzip streams (to avoid linking crc code)
-     18-19: 0 (reserved)
-
-    Operation variations (changes in library functionality):
-     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
-     21: FASTEST -- deflate algorithm with only one, lowest compression level
-     22,23: 0 (reserved)
-
-    The sprintf variant used by gzprintf (zero is best):
-     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
-     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
-     26: 0 = returns value, 1 = void -- 1 means inferred string length returned
-
-    Remainder:
-     27-31: 0 (reserved)
- */
-
-#ifndef Z_SOLO
-
-                        /* utility functions */
-
-/*
-     The following utility functions are implemented on top of the basic
-   stream-oriented functions.  To simplify the interface, some default options
-   are assumed (compression level and memory usage, standard memory allocation
-   functions).  The source code of these utility functions can be modified if
-   you need special options.
-*/
-
-ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
-                                 const Bytef *source, uLong sourceLen));
-/*
-     Compresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer.  Upon entry, destLen is the total size
-   of the destination buffer, which must be at least the value returned by
-   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
-   compressed buffer.
-
-     compress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer.
-*/
-
-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
-                                  const Bytef *source, uLong sourceLen,
-                                  int level));
-/*
-     Compresses the source buffer into the destination buffer.  The level
-   parameter has the same meaning as in deflateInit.  sourceLen is the byte
-   length of the source buffer.  Upon entry, destLen is the total size of the
-   destination buffer, which must be at least the value returned by
-   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
-   compressed buffer.
-
-     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
-   Z_STREAM_ERROR if the level parameter is invalid.
-*/
-
-ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
-/*
-     compressBound() returns an upper bound on the compressed size after
-   compress() or compress2() on sourceLen bytes.  It would be used before a
-   compress() or compress2() call to allocate the destination buffer.
-*/
-
-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
-                                   const Bytef *source, uLong sourceLen));
-/*
-     Decompresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer.  Upon entry, destLen is the total size
-   of the destination buffer, which must be large enough to hold the entire
-   uncompressed data.  (The size of the uncompressed data must have been saved
-   previously by the compressor and transmitted to the decompressor by some
-   mechanism outside the scope of this compression library.) Upon exit, destLen
-   is the actual size of the uncompressed buffer.
-
-     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.  In
-   the case where there is not enough room, uncompress() will fill the output
-   buffer with the uncompressed data up to that point.
-*/
-
-                        /* gzip file access functions */
-
-/*
-     This library supports reading and writing files in gzip (.gz) format with
-   an interface similar to that of stdio, using the functions that start with
-   "gz".  The gzip format is different from the zlib format.  gzip is a gzip
-   wrapper, documented in RFC 1952, wrapped around a deflate stream.
-*/
-
-typedef struct gzFile_s *gzFile;    /* semi-opaque gzip file descriptor */
-
-/*
-ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
-
-     Opens a gzip (.gz) file for reading or writing.  The mode parameter is as
-   in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
-   a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
-   compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
-   for fixed code compression as in "wb9F".  (See the description of
-   deflateInit2 for more information about the strategy parameter.)  'T' will
-   request transparent writing or appending with no compression and not using
-   the gzip format.
-
-     "a" can be used instead of "w" to request that the gzip stream that will
-   be written be appended to the file.  "+" will result in an error, since
-   reading and writing to the same gzip file is not supported.
-
-     These functions, as well as gzip, will read and decode a sequence of gzip
-   streams in a file.  The append function of gzopen() can be used to create
-   such a file.  (Also see gzflush() for another way to do this.)  When
-   appending, gzopen does not test whether the file begins with a gzip stream,
-   nor does it look for the end of the gzip streams to begin appending.  gzopen
-   will simply append a gzip stream to the existing file.
-
-     gzopen can be used to read a file which is not in gzip format; in this
-   case gzread will directly read from the file without decompression.  When
-   reading, this will be detected automatically by looking for the magic two-
-   byte gzip header.
-
-     gzopen returns NULL if the file could not be opened, if there was
-   insufficient memory to allocate the gzFile state, or if an invalid mode was
-   specified (an 'r', 'w', or 'a' was not provided, or '+' was provided).
-   errno can be checked to determine if the reason gzopen failed was that the
-   file could not be opened.
-*/
-
-ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
-/*
-     gzdopen associates a gzFile with the file descriptor fd.  File descriptors
-   are obtained from calls like open, dup, creat, pipe or fileno (if the file
-   has been previously opened with fopen).  The mode parameter is as in gzopen.
-
-     The next call of gzclose on the returned gzFile will also close the file
-   descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
-   fd.  If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd,
-   mode);.  The duplicated descriptor should be saved to avoid a leak, since
-   gzdopen does not close fd if it fails.  If you are using fileno() to get the
-   file descriptor from a FILE *, then you will have to use dup() to avoid
-   double-close()ing the file descriptor.  Both gzclose() and fclose() will
-   close the associated file descriptor, so they need to have different file
-   descriptors.
-
-     gzdopen returns NULL if there was insufficient memory to allocate the
-   gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not
-   provided, or '+' was provided), or if fd is -1.  The file descriptor is not
-   used until the next gz* read, write, seek, or close operation, so gzdopen
-   will not detect if fd is invalid (unless fd is -1).
-*/
-
-ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
-/*
-     Set the internal buffer size used by this library's functions.  The
-   default buffer size is 8192 bytes.  This function must be called after
-   gzopen() or gzdopen(), and before any other calls that read or write the
-   file.  The buffer memory allocation is always deferred to the first read or
-   write.  Two buffers are allocated, either both of the specified size when
-   writing, or one of the specified size and the other twice that size when
-   reading.  A larger buffer size of, for example, 64K or 128K bytes will
-   noticeably increase the speed of decompression (reading).
-
-     The new buffer size also affects the maximum length for gzprintf().
-
-     gzbuffer() returns 0 on success, or -1 on failure, such as being called
-   too late.
-*/
-
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
-/*
-     Dynamically update the compression level or strategy.  See the description
-   of deflateInit2 for the meaning of these parameters.
-
-     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
-   opened for writing.
-*/
-
-ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
-/*
-     Reads the given number of uncompressed bytes from the compressed file.  If
-   the input file is not in gzip format, gzread copies the given number of
-   bytes into the buffer directly from the file.
-
-     After reaching the end of a gzip stream in the input, gzread will continue
-   to read, looking for another gzip stream.  Any number of gzip streams may be
-   concatenated in the input file, and will all be decompressed by gzread().
-   If something other than a gzip stream is encountered after a gzip stream,
-   that remaining trailing garbage is ignored (and no error is returned).
-
-     gzread can be used to read a gzip file that is being concurrently written.
-   Upon reaching the end of the input, gzread will return with the available
-   data.  If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then
-   gzclearerr can be used to clear the end of file indicator in order to permit
-   gzread to be tried again.  Z_OK indicates that a gzip stream was completed
-   on the last gzread.  Z_BUF_ERROR indicates that the input file ended in the
-   middle of a gzip stream.  Note that gzread does not return -1 in the event
-   of an incomplete gzip stream.  This error is deferred until gzclose(), which
-   will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip
-   stream.  Alternatively, gzerror can be used before gzclose to detect this
-   case.
-
-     gzread returns the number of uncompressed bytes actually read, less than
-   len for end of file, or -1 for error.
-*/
-
-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
-                                voidpc buf, unsigned len));
-/*
-     Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of uncompressed bytes written or 0 in case of
-   error.
-*/
-
-ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
-/*
-     Converts, formats, and writes the arguments to the compressed file under
-   control of the format string, as in fprintf.  gzprintf returns the number of
-   uncompressed bytes actually written, or 0 in case of error.  The number of
-   uncompressed bytes written is limited to 8191, or one less than the buffer
-   size given to gzbuffer().  The caller should assure that this limit is not
-   exceeded.  If it is exceeded, then gzprintf() will return an error (0) with
-   nothing written.  In this case, there may also be a buffer overflow with
-   unpredictable consequences, which is possible only if zlib was compiled with
-   the insecure functions sprintf() or vsprintf() because the secure snprintf()
-   or vsnprintf() functions were not available.  This can be determined using
-   zlibCompileFlags().
-*/
-
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
-/*
-     Writes the given null-terminated string to the compressed file, excluding
-   the terminating null character.
-
-     gzputs returns the number of characters written, or -1 in case of error.
-*/
-
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
-/*
-     Reads bytes from the compressed file until len-1 characters are read, or a
-   newline character is read and transferred to buf, or an end-of-file
-   condition is encountered.  If any characters are read or if len == 1, the
-   string is terminated with a null character.  If no characters are read due
-   to an end-of-file or len < 1, then the buffer is left untouched.
-
-     gzgets returns buf which is a null-terminated string, or it returns NULL
-   for end-of-file or in case of error.  If there was an error, the contents at
-   buf are indeterminate.
-*/
-
-ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
-/*
-     Writes c, converted to an unsigned char, into the compressed file.  gzputc
-   returns the value that was written, or -1 in case of error.
-*/
-
-ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
-/*
-     Reads one byte from the compressed file.  gzgetc returns this byte or -1
-   in case of end of file or error.  This is implemented as a macro for speed.
-   As such, it does not do all of the checking the other functions do.  I.e.
-   it does not check to see if file is NULL, nor whether the structure file
-   points to has been clobbered or not.
-*/
-
-ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
-/*
-     Push one character back onto the stream to be read as the first character
-   on the next read.  At least one character of push-back is allowed.
-   gzungetc() returns the character pushed, or -1 on failure.  gzungetc() will
-   fail if c is -1, and may fail if a character has been pushed but not read
-   yet.  If gzungetc is used immediately after gzopen or gzdopen, at least the
-   output buffer size of pushed characters is allowed.  (See gzbuffer above.)
-   The pushed character will be discarded if the stream is repositioned with
-   gzseek() or gzrewind().
-*/
-
-ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
-/*
-     Flushes all pending output into the compressed file.  The parameter flush
-   is as in the deflate() function.  The return value is the zlib error number
-   (see function gzerror below).  gzflush is only permitted when writing.
-
-     If the flush parameter is Z_FINISH, the remaining data is written and the
-   gzip stream is completed in the output.  If gzwrite() is called again, a new
-   gzip stream will be started in the output.  gzread() is able to read such
-   concatented gzip streams.
-
-     gzflush should be called only when strictly necessary because it will
-   degrade compression if called too often.
-*/
-
-/*
-ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
-                                   z_off_t offset, int whence));
-
-     Sets the starting position for the next gzread or gzwrite on the given
-   compressed file.  The offset represents a number of bytes in the
-   uncompressed data stream.  The whence parameter is defined as in lseek(2);
-   the value SEEK_END is not supported.
-
-     If the file is opened for reading, this function is emulated but can be
-   extremely slow.  If the file is opened for writing, only forward seeks are
-   supported; gzseek then compresses a sequence of zeroes up to the new
-   starting position.
-
-     gzseek returns the resulting offset location as measured in bytes from
-   the beginning of the uncompressed stream, or -1 in case of error, in
-   particular if the file is opened for writing and the new starting position
-   would be before the current position.
-*/
-
-ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
-/*
-     Rewinds the given file. This function is supported only for reading.
-
-     gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
-*/
-
-/*
-ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
-
-     Returns the starting position for the next gzread or gzwrite on the given
-   compressed file.  This position represents a number of bytes in the
-   uncompressed data stream, and is zero when starting, even if appending or
-   reading a gzip stream from the middle of a file using gzdopen().
-
-     gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
-*/
-
-/*
-ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
-
-     Returns the current offset in the file being read or written.  This offset
-   includes the count of bytes that precede the gzip stream, for example when
-   appending or when using gzdopen() for reading.  When reading, the offset
-   does not include as yet unused buffered input.  This information can be used
-   for a progress indicator.  On error, gzoffset() returns -1.
-*/
-
-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
-/*
-     Returns true (1) if the end-of-file indicator has been set while reading,
-   false (0) otherwise.  Note that the end-of-file indicator is set only if the
-   read tried to go past the end of the input, but came up short.  Therefore,
-   just like feof(), gzeof() may return false even if there is no more data to
-   read, in the event that the last read request was for the exact number of
-   bytes remaining in the input file.  This will happen if the input file size
-   is an exact multiple of the buffer size.
-
-     If gzeof() returns true, then the read functions will return no more data,
-   unless the end-of-file indicator is reset by gzclearerr() and the input file
-   has grown since the previous end of file was detected.
-*/
-
-ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
-/*
-     Returns true (1) if file is being copied directly while reading, or false
-   (0) if file is a gzip stream being decompressed.
-
-     If the input file is empty, gzdirect() will return true, since the input
-   does not contain a gzip stream.
-
-     If gzdirect() is used immediately after gzopen() or gzdopen() it will
-   cause buffers to be allocated to allow reading the file to determine if it
-   is a gzip file.  Therefore if gzbuffer() is used, it should be called before
-   gzdirect().
-
-     When writing, gzdirect() returns true (1) if transparent writing was
-   requested ("wT" for the gzopen() mode), or false (0) otherwise.  (Note:
-   gzdirect() is not needed when writing.  Transparent writing must be
-   explicitly requested, so the application already knows the answer.  When
-   linking statically, using gzdirect() will include all of the zlib code for
-   gzip file reading and decompression, which may not be desired.)
-*/
-
-ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
-/*
-     Flushes all pending output if necessary, closes the compressed file and
-   deallocates the (de)compression state.  Note that once file is closed, you
-   cannot call gzerror with file, since its structures have been deallocated.
-   gzclose must not be called more than once on the same file, just as free
-   must not be called more than once on the same allocation.
-
-     gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a
-   file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the
-   last read ended in the middle of a gzip stream, or Z_OK on success.
-*/
-
-ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
-ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
-/*
-     Same as gzclose(), but gzclose_r() is only for use when reading, and
-   gzclose_w() is only for use when writing or appending.  The advantage to
-   using these instead of gzclose() is that they avoid linking in zlib
-   compression or decompression code that is not used when only reading or only
-   writing respectively.  If gzclose() is used, then both compression and
-   decompression code will be included the application when linking to a static
-   zlib library.
-*/
-
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
-/*
-     Returns the error message for the last error which occurred on the given
-   compressed file.  errnum is set to zlib error number.  If an error occurred
-   in the file system and not in the compression library, errnum is set to
-   Z_ERRNO and the application may consult errno to get the exact error code.
-
-     The application must not modify the returned string.  Future calls to
-   this function may invalidate the previously returned string.  If file is
-   closed, then the string previously returned by gzerror will no longer be
-   available.
-
-     gzerror() should be used to distinguish errors from end-of-file for those
-   functions above that do not distinguish those cases in their return values.
-*/
-
-ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
-/*
-     Clears the error and end-of-file flags for file.  This is analogous to the
-   clearerr() function in stdio.  This is useful for continuing to read a gzip
-   file that is being written concurrently.
-*/
-
-#endif /* !Z_SOLO */
-
-                        /* checksum functions */
-
-/*
-     These functions are not related to compression but are exported
-   anyway because they might be useful in applications using the compression
-   library.
-*/
-
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-/*
-     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-   return the updated checksum.  If buf is Z_NULL, this function returns the
-   required initial value for the checksum.
-
-     An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
-   much faster.
-
-   Usage example:
-
-     uLong adler = adler32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       adler = adler32(adler, buffer, length);
-     }
-     if (adler != original_adler) error();
-*/
-
-/*
-ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
-                                          z_off_t len2));
-
-     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
-   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
-   each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of
-   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.  Note
-   that the z_off_t type (like off_t) is a signed integer.  If len2 is
-   negative, the result has no meaning or utility.
-*/
-
-ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
-/*
-     Update a running CRC-32 with the bytes buf[0..len-1] and return the
-   updated CRC-32.  If buf is Z_NULL, this function returns the required
-   initial value for the for the crc.  Pre- and post-conditioning (one's
-   complement) is performed within this function so it shouldn't be done by the
-   application.
-
-   Usage example:
-
-     uLong crc = crc32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       crc = crc32(crc, buffer, length);
-     }
-     if (crc != original_crc) error();
-*/
-
-/*
-ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
-
-     Combine two CRC-32 check values into one.  For two sequences of bytes,
-   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
-   calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
-   check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
-   len2.
-*/
-
-
-                        /* various hacks, don't look :) */
-
-/* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
-                                      int windowBits, int memLevel,
-                                      int strategy, const char *version,
-                                      int stream_size));
-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
-                                      const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
-                                         unsigned char FAR *window,
-                                         const char *version,
-                                         int stream_size));
-#define deflateInit(strm, level) \
-        deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
-#define inflateInit(strm) \
-        inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
-        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
-                      (strategy), ZLIB_VERSION, (int)sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
-        inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
-                      (int)sizeof(z_stream))
-#define inflateBackInit(strm, windowBits, window) \
-        inflateBackInit_((strm), (windowBits), (window), \
-                      ZLIB_VERSION, (int)sizeof(z_stream))
-
-#ifndef Z_SOLO
-
-/* gzgetc() macro and its supporting function and exposed data structure.  Note
- * that the real internal state is much larger than the exposed structure.
- * This abbreviated structure exposes just enough for the gzgetc() macro.  The
- * user should not mess with these exposed elements, since their names or
- * behavior could change in the future, perhaps even capriciously.  They can
- * only be used by the gzgetc() macro.  You have been warned.
- */
-struct gzFile_s {
-    unsigned have;
-    unsigned char *next;
-    z_off64_t pos;
-};
-ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));
-#define gzgetc(g) \
-    ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc_(g))
-
-/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
- * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if
- * both are true, the application gets the *64 functions, and the regular
- * functions are changed to 64 bits) -- in case these are set on systems
- * without large file support, _LFS64_LARGEFILE must also be true
- */
-#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
-   ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-   ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
-   ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
-   ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
-   ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
-   ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
-#endif
-
-#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0
-#  ifdef Z_PREFIX_SET
-#    define z_gzopen z_gzopen64
-#    define z_gzseek z_gzseek64
-#    define z_gztell z_gztell64
-#    define z_gzoffset z_gzoffset64
-#    define z_adler32_combine z_adler32_combine64
-#    define z_crc32_combine z_crc32_combine64
-#  else
-#    define gzopen gzopen64
-#    define gzseek gzseek64
-#    define gztell gztell64
-#    define gzoffset gzoffset64
-#    define adler32_combine adler32_combine64
-#    define crc32_combine crc32_combine64
-#  endif
-#  ifndef _LARGEFILE64_SOURCE
-     ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-     ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
-     ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
-     ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
-     ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
-     ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
-#  endif
-#else
-   ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
-   ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));
-   ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));
-   ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
-   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
-   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
-#endif
-
-#else /* Z_SOLO */
-
-   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
-   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
-
-#endif /* !Z_SOLO */
-
-/* hack for buggy compilers */
-#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
-    struct internal_state {int dummy;};
-#endif
-
-/* undocumented functions */
-ZEXTERN const char   * ZEXPORT zError           OF((int));
-ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp));
-ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
-ZEXTERN int            ZEXPORT inflateUndermine OF((z_streamp, int));
-ZEXTERN int            ZEXPORT inflateResetKeep OF((z_streamp));
-ZEXTERN int            ZEXPORT deflateResetKeep OF((z_streamp));
-#ifndef Z_SOLO
-  ZEXTERN unsigned long  ZEXPORT gzflags          OF((void));
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ZLIB_H */
diff --git a/misc/builddeps/win32/zlib/lib/libz.a b/misc/builddeps/win32/zlib/lib/libz.a
deleted file mode 100644 (file)
index 9c193d2..0000000
Binary files a/misc/builddeps/win32/zlib/lib/libz.a and /dev/null differ
diff --git a/misc/builddeps/win32/zlib/lib/libz.dll.a b/misc/builddeps/win32/zlib/lib/libz.dll.a
deleted file mode 120000 (symlink)
index d68f850..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libzdll.a
\ No newline at end of file
diff --git a/misc/builddeps/win32/zlib/lib/libzdll.a b/misc/builddeps/win32/zlib/lib/libzdll.a
deleted file mode 100644 (file)
index 2991368..0000000
Binary files a/misc/builddeps/win32/zlib/lib/libzdll.a and /dev/null differ
diff --git a/misc/builddeps/win32/zlib/lib/pkgconfig/zlib.pc b/misc/builddeps/win32/zlib/lib/pkgconfig/zlib.pc
deleted file mode 100644 (file)
index 17626e1..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-prefix=/usr/local
-exec_prefix=/usr/local
-libdir=/tmp/zlib-1.2.6.out/usr/local/lib
-sharedlibdir=/tmp/zlib-1.2.6.out/usr/local/lib
-includedir=/tmp/zlib-1.2.6.out/usr/local/include
-
-Name: zlib
-Description: zlib compression library
-Version: 1.2.6
-
-Requires:
-Libs: -L${libdir} -L${sharedlibdir} -lz
-Cflags: -I${includedir}
diff --git a/misc/builddeps/win64/dx/include/_mingw_dxhelper.h b/misc/builddeps/win64/dx/include/_mingw_dxhelper.h
deleted file mode 100644 (file)
index e13408c..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within this package.
- */
-
-#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
-#define NONAMELESSUNION                1
-#endif
-#if defined(NONAMELESSSTRUCT) && \
-   !defined(NONAMELESSUNION)
-#define NONAMELESSUNION                1
-#endif
-#if defined(NONAMELESSUNION)  && \
-   !defined(NONAMELESSSTRUCT)
-#define NONAMELESSSTRUCT       1
-#endif
-
-#ifndef __ANONYMOUS_DEFINED
-#define __ANONYMOUS_DEFINED
-#if defined(__GNUC__) || defined(__GNUG__)
-#define _ANONYMOUS_UNION       __extension__
-#define _ANONYMOUS_STRUCT      __extension__
-#else
-#define _ANONYMOUS_UNION
-#define _ANONYMOUS_STRUCT
-#endif
-#ifndef NONAMELESSUNION
-#define _UNION_NAME(x)
-#define _STRUCT_NAME(x)
-#else /* NONAMELESSUNION */
-#define _UNION_NAME(x)  x
-#define _STRUCT_NAME(x) x
-#endif
-#endif /* __ANONYMOUS_DEFINED */
-
-#ifndef DUMMYUNIONNAME
-# ifdef NONAMELESSUNION
-#  define DUMMYUNIONNAME  u
-#  define DUMMYUNIONNAME1 u1   /* Wine uses this variant */
-#  define DUMMYUNIONNAME2 u2
-#  define DUMMYUNIONNAME3 u3
-#  define DUMMYUNIONNAME4 u4
-#  define DUMMYUNIONNAME5 u5
-#  define DUMMYUNIONNAME6 u6
-#  define DUMMYUNIONNAME7 u7
-#  define DUMMYUNIONNAME8 u8
-#  define DUMMYUNIONNAME9 u9
-# else /* NONAMELESSUNION */
-#  define DUMMYUNIONNAME
-#  define DUMMYUNIONNAME1      /* Wine uses this variant */
-#  define DUMMYUNIONNAME2
-#  define DUMMYUNIONNAME3
-#  define DUMMYUNIONNAME4
-#  define DUMMYUNIONNAME5
-#  define DUMMYUNIONNAME6
-#  define DUMMYUNIONNAME7
-#  define DUMMYUNIONNAME8
-#  define DUMMYUNIONNAME9
-# endif
-#endif /* DUMMYUNIONNAME */
-
-#ifndef DUMMYSTRUCTNAME
-# ifdef NONAMELESSUNION
-#  define DUMMYSTRUCTNAME  s
-#  define DUMMYSTRUCTNAME1 s1  /* Wine uses this variant */
-#  define DUMMYSTRUCTNAME2 s2
-#  define DUMMYSTRUCTNAME3 s3
-#  define DUMMYSTRUCTNAME4 s4
-#  define DUMMYSTRUCTNAME5 s5
-# else
-#  define DUMMYSTRUCTNAME
-#  define DUMMYSTRUCTNAME1     /* Wine uses this variant */
-#  define DUMMYSTRUCTNAME2
-#  define DUMMYSTRUCTNAME3
-#  define DUMMYSTRUCTNAME4
-#  define DUMMYSTRUCTNAME5
-# endif
-#endif /* DUMMYSTRUCTNAME */
-
-/* These are for compatibility with the Wine source tree */
-
-#ifndef WINELIB_NAME_AW
-# ifdef __MINGW_NAME_AW
-#   define WINELIB_NAME_AW  __MINGW_NAME_AW
-# else
-#  ifdef UNICODE
-#   define WINELIB_NAME_AW(func) func##W
-#  else
-#   define WINELIB_NAME_AW(func) func##A
-#  endif
-# endif
-#endif /* WINELIB_NAME_AW */
-
-#ifndef DECL_WINELIB_TYPE_AW
-# ifdef __MINGW_TYPEDEF_AW
-#  define DECL_WINELIB_TYPE_AW  __MINGW_TYPEDEF_AW
-# else
-#  define DECL_WINELIB_TYPE_AW(type)  typedef WINELIB_NAME_AW(type) type;
-# endif
-#endif /* DECL_WINELIB_TYPE_AW */
-
diff --git a/misc/builddeps/win64/dx/include/d3d.h b/misc/builddeps/win64/dx/include/d3d.h
deleted file mode 100644 (file)
index 409be1b..0000000
+++ /dev/null
@@ -1,1531 +0,0 @@
-/*
- * Copyright (C) the Wine project
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D_H
-#define __WINE_D3D_H
-
-#include <stdlib.h>
-
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#include <d3dtypes.h> /* must precede d3dcaps.h */
-#include <d3dcaps.h>
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID(IID_IDirect3D,              0x3BBA0080,0x2421,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
-DEFINE_GUID(IID_IDirect3D2,             0x6aae1ec1,0x662a,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a);
-DEFINE_GUID(IID_IDirect3D3,             0xbb223240,0xe72b,0x11d0,0xa9,0xb4,0x00,0xaa,0x00,0xc0,0x99,0x3e);
-DEFINE_GUID(IID_IDirect3D7,             0xf5049e77,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-
-DEFINE_GUID(IID_IDirect3DRampDevice,   0xF2086B20,0x259F,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
-DEFINE_GUID(IID_IDirect3DRGBDevice,    0xA4665C60,0x2673,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
-DEFINE_GUID(IID_IDirect3DHALDevice,    0x84E63dE0,0x46AA,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-DEFINE_GUID(IID_IDirect3DMMXDevice,    0x881949a1,0xd6f3,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DRefDevice,     0x50936643,0x13e9,0x11d1,0x89,0xaa,0x00,0xa0,0xc9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DTnLHalDevice,  0xf5049e78,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-DEFINE_GUID(IID_IDirect3DNullDevice,    0x8767df22,0xbacc,0x11d1,0x89,0x69,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-
-DEFINE_GUID(IID_IDirect3DDevice,       0x64108800,0x957d,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DDevice2,      0x93281501,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DDevice3,       0xb0ab3b60,0x33d7,0x11d1,0xa9,0x81,0x00,0xc0,0x4f,0xd7,0xb1,0x74);
-DEFINE_GUID(IID_IDirect3DDevice7,       0xf5049e79,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-
-DEFINE_GUID(IID_IDirect3DTexture,      0x2CDCD9E0,0x25A0,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56);
-DEFINE_GUID(IID_IDirect3DTexture2,     0x93281502,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-
-DEFINE_GUID(IID_IDirect3DLight,                0x4417C142,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-
-DEFINE_GUID(IID_IDirect3DMaterial,     0x4417C144,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-DEFINE_GUID(IID_IDirect3DMaterial2,    0x93281503,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DMaterial3,     0xca9c46f4,0xd3c5,0x11d1,0xb7,0x5a,0x00,0x60,0x08,0x52,0xb3,0x12);
-
-DEFINE_GUID(IID_IDirect3DExecuteBuffer,        0x4417C145,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-
-DEFINE_GUID(IID_IDirect3DViewport,     0x4417C146,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E);
-DEFINE_GUID(IID_IDirect3DViewport2,    0x93281500,0x8CF8,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29);
-DEFINE_GUID(IID_IDirect3DViewport3,     0xb0ab3b61,0x33d7,0x11d1,0xa9,0x81,0x00,0xc0,0x4f,0xd7,0xb1,0x74);
-
-DEFINE_GUID(IID_IDirect3DVertexBuffer,  0x7a503555,0x4a83,0x11d1,0xa5,0xdb,0x00,0xa0,0xc9,0x03,0x67,0xf8);
-DEFINE_GUID(IID_IDirect3DVertexBuffer7, 0xf5049e7d,0x4861,0x11d2,0xa4,0x07,0x00,0xa0,0xc9,0x06,0x29,0xa8);
-
-
-typedef struct IDirect3D *LPDIRECT3D;
-typedef struct IDirect3D2 *LPDIRECT3D2;
-typedef struct IDirect3D3 *LPDIRECT3D3;
-typedef struct IDirect3D7 *LPDIRECT3D7;
-
-typedef struct IDirect3DLight *LPDIRECT3DLIGHT;
-
-typedef struct IDirect3DDevice *LPDIRECT3DDEVICE;
-typedef struct IDirect3DDevice2 *LPDIRECT3DDEVICE2;
-typedef struct IDirect3DDevice3 *LPDIRECT3DDEVICE3;
-typedef struct IDirect3DDevice7 *LPDIRECT3DDEVICE7;
-
-typedef struct IDirect3DViewport *LPDIRECT3DVIEWPORT;
-typedef struct IDirect3DViewport2 *LPDIRECT3DVIEWPORT2;
-typedef struct IDirect3DViewport3 *LPDIRECT3DVIEWPORT3;
-
-typedef struct IDirect3DMaterial *LPDIRECT3DMATERIAL;
-typedef struct IDirect3DMaterial2 *LPDIRECT3DMATERIAL2;
-typedef struct IDirect3DMaterial3 *LPDIRECT3DMATERIAL3;
-
-typedef struct IDirect3DTexture *LPDIRECT3DTEXTURE;
-typedef struct IDirect3DTexture2 *LPDIRECT3DTEXTURE2;
-
-typedef struct IDirect3DExecuteBuffer *LPDIRECT3DEXECUTEBUFFER;
-
-typedef struct IDirect3DVertexBuffer *LPDIRECT3DVERTEXBUFFER;
-typedef struct IDirect3DVertexBuffer7 *LPDIRECT3DVERTEXBUFFER7;
-
-/* ********************************************************************
-   Error Codes
-   ******************************************************************** */
-#define D3D_OK                          DD_OK
-#define D3DERR_BADMAJORVERSION          MAKE_DDHRESULT(700)
-#define D3DERR_BADMINORVERSION          MAKE_DDHRESULT(701)
-#define D3DERR_INVALID_DEVICE           MAKE_DDHRESULT(705)
-#define D3DERR_INITFAILED               MAKE_DDHRESULT(706)
-#define D3DERR_DEVICEAGGREGATED         MAKE_DDHRESULT(707)
-#define D3DERR_EXECUTE_CREATE_FAILED    MAKE_DDHRESULT(710)
-#define D3DERR_EXECUTE_DESTROY_FAILED   MAKE_DDHRESULT(711)
-#define D3DERR_EXECUTE_LOCK_FAILED      MAKE_DDHRESULT(712)
-#define D3DERR_EXECUTE_UNLOCK_FAILED    MAKE_DDHRESULT(713)
-#define D3DERR_EXECUTE_LOCKED           MAKE_DDHRESULT(714)
-#define D3DERR_EXECUTE_NOT_LOCKED       MAKE_DDHRESULT(715)
-#define D3DERR_EXECUTE_FAILED           MAKE_DDHRESULT(716)
-#define D3DERR_EXECUTE_CLIPPED_FAILED   MAKE_DDHRESULT(717)
-#define D3DERR_TEXTURE_NO_SUPPORT       MAKE_DDHRESULT(720)
-#define D3DERR_TEXTURE_CREATE_FAILED    MAKE_DDHRESULT(721)
-#define D3DERR_TEXTURE_DESTROY_FAILED   MAKE_DDHRESULT(722)
-#define D3DERR_TEXTURE_LOCK_FAILED      MAKE_DDHRESULT(723)
-#define D3DERR_TEXTURE_UNLOCK_FAILED    MAKE_DDHRESULT(724)
-#define D3DERR_TEXTURE_LOAD_FAILED      MAKE_DDHRESULT(725)
-#define D3DERR_TEXTURE_SWAP_FAILED      MAKE_DDHRESULT(726)
-#define D3DERR_TEXTURE_LOCKED           MAKE_DDHRESULT(727)
-#define D3DERR_TEXTURE_NOT_LOCKED       MAKE_DDHRESULT(728)
-#define D3DERR_TEXTURE_GETSURF_FAILED   MAKE_DDHRESULT(729)
-#define D3DERR_MATRIX_CREATE_FAILED     MAKE_DDHRESULT(730)
-#define D3DERR_MATRIX_DESTROY_FAILED    MAKE_DDHRESULT(731)
-#define D3DERR_MATRIX_SETDATA_FAILED    MAKE_DDHRESULT(732)
-#define D3DERR_MATRIX_GETDATA_FAILED    MAKE_DDHRESULT(733)
-#define D3DERR_SETVIEWPORTDATA_FAILED   MAKE_DDHRESULT(734)
-#define D3DERR_INVALIDCURRENTVIEWPORT   MAKE_DDHRESULT(735)
-#define D3DERR_INVALIDPRIMITIVETYPE     MAKE_DDHRESULT(736)
-#define D3DERR_INVALIDVERTEXTYPE        MAKE_DDHRESULT(737)
-#define D3DERR_TEXTURE_BADSIZE          MAKE_DDHRESULT(738)
-#define D3DERR_INVALIDRAMPTEXTURE       MAKE_DDHRESULT(739)
-#define D3DERR_MATERIAL_CREATE_FAILED   MAKE_DDHRESULT(740)
-#define D3DERR_MATERIAL_DESTROY_FAILED  MAKE_DDHRESULT(741)
-#define D3DERR_MATERIAL_SETDATA_FAILED  MAKE_DDHRESULT(742)
-#define D3DERR_MATERIAL_GETDATA_FAILED  MAKE_DDHRESULT(743)
-#define D3DERR_INVALIDPALETTE           MAKE_DDHRESULT(744)
-#define D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY MAKE_DDHRESULT(745)
-#define D3DERR_ZBUFF_NEEDS_VIDEOMEMORY  MAKE_DDHRESULT(746)
-#define D3DERR_SURFACENOTINVIDMEM       MAKE_DDHRESULT(747)
-#define D3DERR_LIGHT_SET_FAILED         MAKE_DDHRESULT(750)
-#define D3DERR_LIGHTHASVIEWPORT         MAKE_DDHRESULT(751)
-#define D3DERR_LIGHTNOTINTHISVIEWPORT   MAKE_DDHRESULT(752)
-#define D3DERR_SCENE_IN_SCENE           MAKE_DDHRESULT(760)
-#define D3DERR_SCENE_NOT_IN_SCENE       MAKE_DDHRESULT(761)
-#define D3DERR_SCENE_BEGIN_FAILED       MAKE_DDHRESULT(762)
-#define D3DERR_SCENE_END_FAILED         MAKE_DDHRESULT(763)
-#define D3DERR_INBEGIN                  MAKE_DDHRESULT(770)
-#define D3DERR_NOTINBEGIN               MAKE_DDHRESULT(771)
-#define D3DERR_NOVIEWPORTS              MAKE_DDHRESULT(772)
-#define D3DERR_VIEWPORTDATANOTSET       MAKE_DDHRESULT(773)
-#define D3DERR_VIEWPORTHASNODEVICE      MAKE_DDHRESULT(774)
-#define D3DERR_NOCURRENTVIEWPORT        MAKE_DDHRESULT(775)
-#define D3DERR_INVALIDVERTEXFORMAT     MAKE_DDHRESULT(2048)
-#define D3DERR_COLORKEYATTACHED         MAKE_DDHRESULT(2050)
-#define D3DERR_VERTEXBUFFEROPTIMIZED   MAKE_DDHRESULT(2060)
-#define D3DERR_VBUF_CREATE_FAILED      MAKE_DDHRESULT(2061)
-#define D3DERR_VERTEXBUFFERLOCKED      MAKE_DDHRESULT(2062)
-#define D3DERR_VERTEXBUFFERUNLOCKFAILED        MAKE_DDHRESULT(2063)
-#define D3DERR_ZBUFFER_NOTPRESENT      MAKE_DDHRESULT(2070)
-#define D3DERR_STENCILBUFFER_NOTPRESENT        MAKE_DDHRESULT(2071)
-
-#define D3DERR_WRONGTEXTUREFORMAT              MAKE_DDHRESULT(2072)
-#define D3DERR_UNSUPPORTEDCOLOROPERATION       MAKE_DDHRESULT(2073)
-#define D3DERR_UNSUPPORTEDCOLORARG             MAKE_DDHRESULT(2074)
-#define D3DERR_UNSUPPORTEDALPHAOPERATION       MAKE_DDHRESULT(2075)
-#define D3DERR_UNSUPPORTEDALPHAARG             MAKE_DDHRESULT(2076)
-#define D3DERR_TOOMANYOPERATIONS               MAKE_DDHRESULT(2077)
-#define D3DERR_CONFLICTINGTEXTUREFILTER                MAKE_DDHRESULT(2078)
-#define D3DERR_UNSUPPORTEDFACTORVALUE          MAKE_DDHRESULT(2079)
-#define D3DERR_CONFLICTINGRENDERSTATE          MAKE_DDHRESULT(2081)
-#define D3DERR_UNSUPPORTEDTEXTUREFILTER                MAKE_DDHRESULT(2082)
-#define D3DERR_TOOMANYPRIMITIVES               MAKE_DDHRESULT(2083)
-#define D3DERR_INVALIDMATRIX                   MAKE_DDHRESULT(2084)
-#define D3DERR_TOOMANYVERTICES                 MAKE_DDHRESULT(2085)
-#define D3DERR_CONFLICTINGTEXTUREPALETTE       MAKE_DDHRESULT(2086)
-
-#define D3DERR_INVALIDSTATEBLOCK       MAKE_DDHRESULT(2100)
-#define D3DERR_INBEGINSTATEBLOCK       MAKE_DDHRESULT(2101)
-#define D3DERR_NOTINBEGINSTATEBLOCK    MAKE_DDHRESULT(2102)
-
-/* ********************************************************************
-   Enums
-   ******************************************************************** */
-#define D3DNEXT_NEXT 0x01l
-#define D3DNEXT_HEAD 0x02l
-#define D3DNEXT_TAIL 0x04l
-
-#define D3DDP_WAIT               0x00000001l
-#define D3DDP_OUTOFORDER         0x00000002l
-#define D3DDP_DONOTCLIP          0x00000004l
-#define D3DDP_DONOTUPDATEEXTENTS 0x00000008l
-#define D3DDP_DONOTLIGHT         0x00000010l
-
-/* ********************************************************************
-   Types and structures
-   ******************************************************************** */
-typedef DWORD D3DVIEWPORTHANDLE, *LPD3DVIEWPORTHANDLE;
-
-
-/*****************************************************************************
- * IDirect3D interface
- */
-#undef INTERFACE
-#define INTERFACE IDirect3D
-DECLARE_INTERFACE_(IDirect3D,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D methods ***/
-    STDMETHOD(Initialize)(THIS_ REFIID riid) PURE;
-    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
-    STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL *lplpDirect3DMaterial, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT *lplpD3DViewport, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lplpD3DDevice) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D methods ***/
-#define IDirect3D_Initialize(p,a)       (p)->lpVtbl->Initialize(p,a)
-#define IDirect3D_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevices(p,a,b)
-#define IDirect3D_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
-#define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
-#define IDirect3D_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D_AddRef(p)             (p)->AddRef()
-#define IDirect3D_Release(p)            (p)->Release()
-/*** IDirect3D methods ***/
-#define IDirect3D_Initialize(p,a)       (p)->Initialize(a)
-#define IDirect3D_EnumDevices(p,a,b)    (p)->EnumDevices(a,b)
-#define IDirect3D_CreateLight(p,a,b)    (p)->CreateLight(a,b)
-#define IDirect3D_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
-#define IDirect3D_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
-#define IDirect3D_FindDevice(p,a,b)     (p)->FindDevice(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirect3D2 interface
- */
-#define INTERFACE IDirect3D2
-DECLARE_INTERFACE_(IDirect3D2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D2 methods ***/
-    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
-    STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL2 *lplpDirect3DMaterial2, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT2 *lplpD3DViewport2, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lpD3DFDR) PURE;
-    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid, LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DDEVICE2 *lplpD3DDevice2) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D2 methods ***/
-#define IDirect3D2_EnumDevices(p,a,b)    (p)->lpVtbl->EnumDevices(p,a,b)
-#define IDirect3D2_CreateLight(p,a,b)    (p)->lpVtbl->CreateLight(p,a,b)
-#define IDirect3D2_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3D2_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
-#define IDirect3D2_FindDevice(p,a,b)     (p)->lpVtbl->FindDevice(p,a,b)
-#define IDirect3D2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D2_AddRef(p)             (p)->AddRef()
-#define IDirect3D2_Release(p)            (p)->Release()
-/*** IDirect3D2 methods ***/
-#define IDirect3D2_EnumDevices(p,a,b)    (p)->EnumDevices(a,b)
-#define IDirect3D2_CreateLight(p,a,b)    (p)->CreateLight(a,b)
-#define IDirect3D2_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
-#define IDirect3D2_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
-#define IDirect3D2_FindDevice(p,a,b)     (p)->FindDevice(a,b)
-#define IDirect3D2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
-#endif
-
-
-/*****************************************************************************
- * IDirect3D3 interface
- */
-#define INTERFACE IDirect3D3
-DECLARE_INTERFACE_(IDirect3D3,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D3 methods ***/
-    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
-    STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *lplpDirect3DLight, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL3 *lplpDirect3DMaterial3, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT3 *lplpD3DViewport3, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH lpD3DDFS, LPD3DFINDDEVICERESULT lpD3DFDR) PURE;
-    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid,LPDIRECTDRAWSURFACE4 lpDDS, LPDIRECT3DDEVICE3 *lplpD3DDevice3,LPUNKNOWN lpUnk) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,LPDIRECT3DVERTEXBUFFER *lplpD3DVertBuf,DWORD dwFlags,LPUNKNOWN lpUnk) PURE;
-    STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID riidDevice,LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,LPVOID lpContext) PURE;
-    STDMETHOD(EvictManagedTextures)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D3_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D3_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D3 methods ***/
-#define IDirect3D3_EnumDevices(p,a,b)            (p)->lpVtbl->EnumDevices(p,a,b)
-#define IDirect3D3_CreateLight(p,a,b)            (p)->lpVtbl->CreateLight(p,a,b)
-#define IDirect3D3_CreateMaterial(p,a,b)         (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3D3_CreateViewport(p,a,b)         (p)->lpVtbl->CreateViewport(p,a,b)
-#define IDirect3D3_FindDevice(p,a,b)             (p)->lpVtbl->FindDevice(p,a,b)
-#define IDirect3D3_CreateDevice(p,a,b,c,d)       (p)->lpVtbl->CreateDevice(p,a,b,c,d)
-#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d)
-#define IDirect3D3_EnumZBufferFormats(p,a,b,c)   (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
-#define IDirect3D3_EvictManagedTextures(p)       (p)->lpVtbl->EvictManagedTextures(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D3_AddRef(p)             (p)->AddRef()
-#define IDirect3D3_Release(p)            (p)->Release()
-/*** IDirect3D3 methods ***/
-#define IDirect3D3_EnumDevices(p,a,b)            (p)->EnumDevices(a,b)
-#define IDirect3D3_CreateLight(p,a,b)            (p)->CreateLight(a,b)
-#define IDirect3D3_CreateMaterial(p,a,b)         (p)->CreateMaterial(a,b)
-#define IDirect3D3_CreateViewport(p,a,b)         (p)->CreateViewport(a,b)
-#define IDirect3D3_FindDevice(p,a,b)             (p)->FindDevice(a,b)
-#define IDirect3D3_CreateDevice(p,a,b,c,d)       (p)->CreateDevice(a,b,c,d)
-#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->CreateVertexBuffer(a,b,c,d)
-#define IDirect3D3_EnumZBufferFormats(p,a,b,c)   (p)->EnumZBufferFormats(a,b,c)
-#define IDirect3D3_EvictManagedTextures(p)       (p)->EvictManagedTextures()
-#endif
-
-/*****************************************************************************
- * IDirect3D7 interface
- */
-#define INTERFACE IDirect3D7
-DECLARE_INTERFACE_(IDirect3D7,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D7 methods ***/
-    STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK7 lpEnumDevicesCallback, LPVOID lpUserArg) PURE;
-    STDMETHOD(CreateDevice)(THIS_ REFCLSID rclsid,LPDIRECTDRAWSURFACE7 lpDDS, LPDIRECT3DDEVICE7 *lplpD3DDevice) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,LPDIRECT3DVERTEXBUFFER7 *lplpD3DVertBuf,DWORD dwFlags) PURE;
-    STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID riidDevice,LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,LPVOID lpContext) PURE;
-    STDMETHOD(EvictManagedTextures)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D7_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D7_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D3 methods ***/
-#define IDirect3D7_EnumDevices(p,a,b)            (p)->lpVtbl->EnumDevices(p,a,b)
-#define IDirect3D7_CreateDevice(p,a,b,c)         (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirect3D7_CreateVertexBuffer(p,a,b,c)   (p)->lpVtbl->CreateVertexBuffer(p,a,b,c)
-#define IDirect3D7_EnumZBufferFormats(p,a,b,c)   (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
-#define IDirect3D7_EvictManagedTextures(p)       (p)->lpVtbl->EvictManagedTextures(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D7_AddRef(p)             (p)->AddRef()
-#define IDirect3D7_Release(p)            (p)->Release()
-/*** IDirect3D3 methods ***/
-#define IDirect3D7_EnumDevices(p,a,b)            (p)->EnumDevices(a,b)
-#define IDirect3D7_CreateDevice(p,a,b,c)         (p)->CreateDevice(a,b,c)
-#define IDirect3D7_CreateVertexBuffer(p,a,b,c)   (p)->CreateVertexBuffer(a,b,c)
-#define IDirect3D7_EnumZBufferFormats(p,a,b,c)   (p)->EnumZBufferFormats(a,b,c)
-#define IDirect3D7_EvictManagedTextures(p)       (p)->EvictManagedTextures()
-#endif
-
-
-/*****************************************************************************
- * IDirect3DLight interface
- */
-#define INTERFACE IDirect3DLight
-DECLARE_INTERFACE_(IDirect3DLight,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DLight methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(SetLight)(THIS_ LPD3DLIGHT lpLight) PURE;
-    STDMETHOD(GetLight)(THIS_ LPD3DLIGHT lpLight) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DLight_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DLight_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DLight_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DLight methods ***/
-#define IDirect3DLight_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DLight_SetLight(p,a)   (p)->lpVtbl->SetLight(p,a)
-#define IDirect3DLight_GetLight(p,a)   (p)->lpVtbl->GetLight(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DLight_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DLight_AddRef(p)             (p)->AddRef()
-#define IDirect3DLight_Release(p)            (p)->Release()
-/*** IDirect3DLight methods ***/
-#define IDirect3DLight_Initialize(p,a) (p)->Initialize(a)
-#define IDirect3DLight_SetLight(p,a)   (p)->SetLight(a)
-#define IDirect3DLight_GetLight(p,a)   (p)->GetLight(a)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DMaterial interface
- */
-#define INTERFACE IDirect3DMaterial
-DECLARE_INTERFACE_(IDirect3DMaterial,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DMaterial methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPD3DMATERIALHANDLE lpHandle) PURE;
-    STDMETHOD(Reserve)(THIS) PURE;
-    STDMETHOD(Unreserve)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DMaterial_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DMaterial_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DMaterial methods ***/
-#define IDirect3DMaterial_Initialize(p,a)  (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DMaterial_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DMaterial_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DMaterial_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
-#define IDirect3DMaterial_Reserve(p)       (p)->lpVtbl->Reserve(p)
-#define IDirect3DMaterial_Unreserve(p)     (p)->lpVtbl->Unreserve(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DMaterial_AddRef(p)             (p)->AddRef()
-#define IDirect3DMaterial_Release(p)            (p)->Release()
-/*** IDirect3DMaterial methods ***/
-#define IDirect3DMaterial_Initialize(p,a)  (p)->Initialize(a)
-#define IDirect3DMaterial_SetMaterial(p,a) (p)->SetMaterial(a)
-#define IDirect3DMaterial_GetMaterial(p,a) (p)->GetMaterial(a)
-#define IDirect3DMaterial_GetHandle(p,a,b) (p)->GetHandle(a,b)
-#define IDirect3DMaterial_Reserve(p)       (p)->Reserve()
-#define IDirect3DMaterial_Unreserve(p)     (p)->Unreserve()
-#endif
-
-
-/*****************************************************************************
- * IDirect3DMaterial2 interface
- */
-#define INTERFACE IDirect3DMaterial2
-DECLARE_INTERFACE_(IDirect3DMaterial2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DMaterial2 methods ***/
-    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE2 lpDirect3DDevice2, LPD3DMATERIALHANDLE lpHandle) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DMaterial2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DMaterial2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DMaterial2 methods ***/
-#define IDirect3DMaterial2_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DMaterial2_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DMaterial2_AddRef(p)             (p)->AddRef()
-#define IDirect3DMaterial2_Release(p)            (p)->Release()
-/*** IDirect3DMaterial2 methods ***/
-#define IDirect3DMaterial2_SetMaterial(p,a) (p)->SetMaterial(a)
-#define IDirect3DMaterial2_GetMaterial(p,a) (p)->GetMaterial(a)
-#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->GetHandle(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DMaterial3 interface
- */
-#define INTERFACE IDirect3DMaterial3
-DECLARE_INTERFACE_(IDirect3DMaterial3,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DMaterial3 methods ***/
-    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL lpMat) PURE;
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE3 lpDirect3DDevice3, LPD3DMATERIALHANDLE lpHandle) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DMaterial3_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DMaterial3_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DMaterial3 methods ***/
-#define IDirect3DMaterial3_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DMaterial3_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DMaterial3_AddRef(p)             (p)->AddRef()
-#define IDirect3DMaterial3_Release(p)            (p)->Release()
-/*** IDirect3DMaterial3 methods ***/
-#define IDirect3DMaterial3_SetMaterial(p,a) (p)->SetMaterial(a)
-#define IDirect3DMaterial3_GetMaterial(p,a) (p)->GetMaterial(a)
-#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->GetHandle(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DTexture interface
- */
-#define INTERFACE IDirect3DTexture
-DECLARE_INTERFACE_(IDirect3DTexture,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DTexture methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPDIRECTDRAWSURFACE lpDDSurface) PURE;
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPD3DTEXTUREHANDLE  lpHandle) PURE;
-    STDMETHOD(PaletteChanged)(THIS_ DWORD dwStart, DWORD dwCount) PURE;
-    STDMETHOD(Load)(THIS_ LPDIRECT3DTEXTURE lpD3DTexture) PURE;
-    STDMETHOD(Unload)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DTexture_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DTexture_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DTexture_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DTexture methods ***/
-#define IDirect3DTexture_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
-#define IDirect3DTexture_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
-#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
-#define IDirect3DTexture_Load(p,a) (p)->lpVtbl->Load(p,a)
-#define IDirect3DTexture_Unload(p) (p)->lpVtbl->Unload(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DTexture_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DTexture_AddRef(p)             (p)->AddRef()
-#define IDirect3DTexture_Release(p)            (p)->Release()
-/*** IDirect3DTexture methods ***/
-#define IDirect3DTexture_Initialize(p,a,b) (p)->Initialize(a,b)
-#define IDirect3DTexture_GetHandle(p,a,b) (p)->GetHandle(a,b)
-#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
-#define IDirect3DTexture_Load(p,a) (p)->Load(a)
-#define IDirect3DTexture_Unload(p) (p)->Unload()
-#endif
-
-
-/*****************************************************************************
- * IDirect3DTexture2 interface
- */
-#define INTERFACE IDirect3DTexture2
-DECLARE_INTERFACE_(IDirect3DTexture2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DTexture2 methods ***/
-    STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE2 lpDirect3DDevice2, LPD3DTEXTUREHANDLE lpHandle) PURE;
-    STDMETHOD(PaletteChanged)(THIS_ DWORD dwStart, DWORD dwCount) PURE;
-    STDMETHOD(Load)(THIS_ LPDIRECT3DTEXTURE2 lpD3DTexture2) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DTexture2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DTexture2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DTexture2 methods ***/
-#define IDirect3DTexture2_GetHandle(p,a,b)      (p)->lpVtbl->GetHandle(p,a,b)
-#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
-#define IDirect3DTexture2_Load(p,a)             (p)->lpVtbl->Load(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DTexture2_AddRef(p)             (p)->AddRef()
-#define IDirect3DTexture2_Release(p)            (p)->Release()
-/*** IDirect3DTexture2 methods ***/
-#define IDirect3DTexture2_GetHandle(p,a,b)      (p)->GetHandle(a,b)
-#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
-#define IDirect3DTexture2_Load(p,a)             (p)->Load(a)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DViewport interface
- */
-#define INTERFACE IDirect3DViewport
-DECLARE_INTERFACE_(IDirect3DViewport,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DViewport methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(TransformVertices)(THIS_ DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffScreen) PURE;
-    STDMETHOD(LightElements)(THIS_ DWORD dwElementCount, LPD3DLIGHTDATA lpData) PURE;
-    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
-    STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE lphMat, LPBOOL lpValid) PURE;
-    STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface) PURE;
-    STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *lplpDDSurface, LPBOOL lpValid) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight, LPDIRECT3DLIGHT *lplpDirect3DLight, DWORD dwFlags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DViewport_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DViewport_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DViewport_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DViewport methods ***/
-#define IDirect3DViewport_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DViewport_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DViewport_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
-#define IDirect3DViewport_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
-#define IDirect3DViewport_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
-#define IDirect3DViewport_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
-#define IDirect3DViewport_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
-#define IDirect3DViewport_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
-#define IDirect3DViewport_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
-#define IDirect3DViewport_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DViewport_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DViewport_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DViewport_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DViewport_AddRef(p)             (p)->AddRef()
-#define IDirect3DViewport_Release(p)            (p)->Release()
-/*** IDirect3DViewport methods ***/
-#define IDirect3DViewport_Initialize(p,a)              (p)->Initialize(a)
-#define IDirect3DViewport_GetViewport(p,a)             (p)->GetViewport(a)
-#define IDirect3DViewport_SetViewport(p,a)             (p)->SetViewport(a)
-#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
-#define IDirect3DViewport_LightElements(p,a,b)         (p)->LightElements(a,b)
-#define IDirect3DViewport_SetBackground(p,a)           (p)->SetBackground(a)
-#define IDirect3DViewport_GetBackground(p,a,b)         (p)->GetBackground(a,b)
-#define IDirect3DViewport_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
-#define IDirect3DViewport_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
-#define IDirect3DViewport_Clear(p,a,b,c)               (p)->Clear(a,b,c)
-#define IDirect3DViewport_AddLight(p,a)                (p)->AddLight(a)
-#define IDirect3DViewport_DeleteLight(p,a)             (p)->DeleteLight(a)
-#define IDirect3DViewport_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DViewport2 interface
- */
-#define INTERFACE IDirect3DViewport2
-DECLARE_INTERFACE_(IDirect3DViewport2,IDirect3DViewport)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DViewport methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(TransformVertices)(THIS_ DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffScreen) PURE;
-    STDMETHOD(LightElements)(THIS_ DWORD dwElementCount, LPD3DLIGHTDATA lpData) PURE;
-    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
-    STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE lphMat, LPBOOL lpValid) PURE;
-    STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface) PURE;
-    STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *lplpDDSurface, LPBOOL lpValid) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight, LPDIRECT3DLIGHT *lplpDirect3DLight, DWORD dwFlags) PURE;
-    /*** IDirect3DViewport2 methods ***/
-    STDMETHOD(GetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
-    STDMETHOD(SetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DViewport2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DViewport2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3Viewport methods ***/
-#define IDirect3DViewport2_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DViewport2_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DViewport2_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
-#define IDirect3DViewport2_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
-#define IDirect3DViewport2_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
-#define IDirect3DViewport2_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
-#define IDirect3DViewport2_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
-#define IDirect3DViewport2_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
-#define IDirect3DViewport2_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
-#define IDirect3DViewport2_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DViewport2_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DViewport2_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
-/*** IDirect3DViewport2 methods ***/
-#define IDirect3DViewport2_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
-#define IDirect3DViewport2_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DViewport2_AddRef(p)             (p)->AddRef()
-#define IDirect3DViewport2_Release(p)            (p)->Release()
-/*** IDirect3Viewport methods ***/
-#define IDirect3DViewport2_Initialize(p,a)              (p)->Initialize(a)
-#define IDirect3DViewport2_GetViewport(p,a)             (p)->GetViewport(a)
-#define IDirect3DViewport2_SetViewport(p,a)             (p)->SetViewport(a)
-#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
-#define IDirect3DViewport2_LightElements(p,a,b)         (p)->LightElements(a,b)
-#define IDirect3DViewport2_SetBackground(p,a)           (p)->SetBackground(a)
-#define IDirect3DViewport2_GetBackground(p,a,b)         (p)->GetBackground(a,b)
-#define IDirect3DViewport2_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
-#define IDirect3DViewport2_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
-#define IDirect3DViewport2_Clear(p,a,b,c)               (p)->Clear(a,b,c)
-#define IDirect3DViewport2_AddLight(p,a)                (p)->AddLight(a)
-#define IDirect3DViewport2_DeleteLight(p,a)             (p)->DeleteLight(a)
-#define IDirect3DViewport2_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
-/*** IDirect3DViewport2 methods ***/
-#define IDirect3DViewport2_GetViewport2(p,a) (p)->GetViewport2(a)
-#define IDirect3DViewport2_SetViewport2(p,a) (p)->SetViewport2(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DViewport3 interface
- */
-#define INTERFACE IDirect3DViewport3
-DECLARE_INTERFACE_(IDirect3DViewport3,IDirect3DViewport2)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DViewport methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D) PURE;
-    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT lpData) PURE;
-    STDMETHOD(TransformVertices)(THIS_ DWORD dwVertexCount, LPD3DTRANSFORMDATA lpData, DWORD dwFlags, LPDWORD lpOffScreen) PURE;
-    STDMETHOD(LightElements)(THIS_ DWORD dwElementCount, LPD3DLIGHTDATA lpData) PURE;
-    STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE hMat) PURE;
-    STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE lphMat, LPBOOL lpValid) PURE;
-    STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE lpDDSurface) PURE;
-    STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *lplpDDSurface, LPBOOL lpValid) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight) PURE;
-    STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT lpDirect3DLight, LPDIRECT3DLIGHT *lplpDirect3DLight, DWORD dwFlags) PURE;
-    /*** IDirect3DViewport2 methods ***/
-    STDMETHOD(GetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
-    STDMETHOD(SetViewport2)(THIS_ LPD3DVIEWPORT2 lpData) PURE;
-    /*** IDirect3DViewport3 methods ***/
-    STDMETHOD(SetBackgroundDepth2)(THIS_ LPDIRECTDRAWSURFACE4 lpDDS) PURE;
-    STDMETHOD(GetBackgroundDepth2)(THIS_ LPDIRECTDRAWSURFACE4 *lplpDDS,LPBOOL lpValid) PURE;
-    STDMETHOD(Clear2)(THIS_ DWORD dwCount,LPD3DRECT lpRects,DWORD dwFlags,DWORD dwColor,D3DVALUE dvZ,DWORD dwStencil) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DViewport3_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DViewport3_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3Viewport methods ***/
-#define IDirect3DViewport3_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
-#define IDirect3DViewport3_GetViewport(p,a)             (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DViewport3_SetViewport(p,a)             (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
-#define IDirect3DViewport3_LightElements(p,a,b)         (p)->lpVtbl->LightElements(p,a,b)
-#define IDirect3DViewport3_SetBackground(p,a)           (p)->lpVtbl->SetBackground(p,a)
-#define IDirect3DViewport3_GetBackground(p,a,b)         (p)->lpVtbl->GetBackground(p,a,b)
-#define IDirect3DViewport3_SetBackgroundDepth(p,a)      (p)->lpVtbl->SetBackgroundDepth(p,a)
-#define IDirect3DViewport3_GetBackgroundDepth(p,a,b)    (p)->lpVtbl->GetBackgroundDepth(p,a,b)
-#define IDirect3DViewport3_Clear(p,a,b,c)               (p)->lpVtbl->Clear(p,a,b,c)
-#define IDirect3DViewport3_AddLight(p,a)                (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DViewport3_DeleteLight(p,a)             (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DViewport3_NextLight(p,a,b,c)           (p)->lpVtbl->NextLight(p,a,b,c)
-/*** IDirect3DViewport2 methods ***/
-#define IDirect3DViewport3_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
-#define IDirect3DViewport3_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
-/*** IDirect3DViewport3 methods ***/
-#define IDirect3DViewport3_SetBackgroundDepth2(p,a)   (p)->lpVtbl->SetBackgroundDepth2(p,a)
-#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->lpVtbl->GetBackgroundDepth2(p,a,b)
-#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f)      (p)->lpVtbl->Clear2(p,a,b,c,d,e,f)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DViewport3_AddRef(p)             (p)->AddRef()
-#define IDirect3DViewport3_Release(p)            (p)->Release()
-/*** IDirect3Viewport methods ***/
-#define IDirect3DViewport3_Initialize(p,a)              (p)->Initialize(a)
-#define IDirect3DViewport3_GetViewport(p,a)             (p)->GetViewport(a)
-#define IDirect3DViewport3_SetViewport(p,a)             (p)->SetViewport(a)
-#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
-#define IDirect3DViewport3_LightElements(p,a,b)         (p)->LightElements(a,b)
-#define IDirect3DViewport3_SetBackground(p,a)           (p)->SetBackground(a)
-#define IDirect3DViewport3_GetBackground(p,a,b)         (p)->GetBackground(a,b)
-#define IDirect3DViewport3_SetBackgroundDepth(p,a)      (p)->SetBackgroundDepth(a)
-#define IDirect3DViewport3_GetBackgroundDepth(p,a,b)    (p)->GetBackgroundDepth(a,b)
-#define IDirect3DViewport3_Clear(p,a,b,c)               (p)->Clear(a,b,c)
-#define IDirect3DViewport3_AddLight(p,a)                (p)->AddLight(a)
-#define IDirect3DViewport3_DeleteLight(p,a)             (p)->DeleteLight(a)
-#define IDirect3DViewport3_NextLight(p,a,b,c)           (p)->NextLight(a,b,c)
-/*** IDirect3DViewport2 methods ***/
-#define IDirect3DViewport3_GetViewport2(p,a) (p)->GetViewport2(a)
-#define IDirect3DViewport3_SetViewport2(p,a) (p)->SetViewport2(a)
-/*** IDirect3DViewport3 methods ***/
-#define IDirect3DViewport3_SetBackgroundDepth2(p,a)   (p)->SetBackgroundDepth2(a)
-#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->GetBackgroundDepth2(a,b)
-#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f)      (p)->Clear2(a,b,c,d,e,f)
-#endif
-
-
-
-/*****************************************************************************
- * IDirect3DExecuteBuffer interface
- */
-#define INTERFACE IDirect3DExecuteBuffer
-DECLARE_INTERFACE_(IDirect3DExecuteBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DExecuteBuffer methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3DDEVICE lpDirect3DDevice, LPD3DEXECUTEBUFFERDESC lpDesc) PURE;
-    STDMETHOD(Lock)(THIS_ LPD3DEXECUTEBUFFERDESC lpDesc) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(SetExecuteData)(THIS_ LPD3DEXECUTEDATA lpData) PURE;
-    STDMETHOD(GetExecuteData)(THIS_ LPD3DEXECUTEDATA lpData) PURE;
-    STDMETHOD(Validate)(THIS_ LPDWORD lpdwOffset, LPD3DVALIDATECALLBACK lpFunc, LPVOID lpUserArg, DWORD dwReserved) PURE;
-    STDMETHOD(Optimize)(THIS_ DWORD dwDummy) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DExecuteBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DExecuteBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DExecuteBuffer methods ***/
-#define IDirect3DExecuteBuffer_Initialize(p,a,b)   (p)->lpVtbl->Initialize(p,a,b)
-#define IDirect3DExecuteBuffer_Lock(p,a)           (p)->lpVtbl->Lock(p,a)
-#define IDirect3DExecuteBuffer_Unlock(p)           (p)->lpVtbl->Unlock(p)
-#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->lpVtbl->SetExecuteData(p,a)
-#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->lpVtbl->GetExecuteData(p,a)
-#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->lpVtbl->Validate(p,a,b,c,d)
-#define IDirect3DExecuteBuffer_Optimize(p,a)       (p)->lpVtbl->Optimize(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DExecuteBuffer_AddRef(p)             (p)->AddRef()
-#define IDirect3DExecuteBuffer_Release(p)            (p)->Release()
-/*** IDirect3DExecuteBuffer methods ***/
-#define IDirect3DExecuteBuffer_Initialize(p,a,b)   (p)->Initialize(a,b)
-#define IDirect3DExecuteBuffer_Lock(p,a)           (p)->Lock(a)
-#define IDirect3DExecuteBuffer_Unlock(p)           (p)->Unlock()
-#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->SetExecuteData(a)
-#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->GetExecuteData(a)
-#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->Validate(a,b,c,d)
-#define IDirect3DExecuteBuffer_Optimize(p,a)       (p)->Optimize(a)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DDevice interface
- */
-#define INTERFACE IDirect3DDevice
-DECLARE_INTERFACE_(IDirect3DDevice,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice methods ***/
-    STDMETHOD(Initialize)(THIS_ LPDIRECT3D lpDirect3D, LPGUID lpGUID, LPD3DDEVICEDESC lpD3DDVDesc) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DHELDevDesc) PURE;
-    STDMETHOD(SwapTextureHandles)(THIS_ LPDIRECT3DTEXTURE lpD3Dtex1, LPDIRECT3DTEXTURE lpD3DTex2) PURE;
-    STDMETHOD(CreateExecuteBuffer)(THIS_ LPD3DEXECUTEBUFFERDESC lpDesc, LPDIRECT3DEXECUTEBUFFER *lplpDirect3DExecuteBuffer, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE;
-    STDMETHOD(Execute)(THIS_ LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer, LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags) PURE;
-    STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport) PURE;
-    STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport) PURE;
-    STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT lpDirect3DViewport, LPDIRECT3DVIEWPORT *lplpDirect3DViewport, DWORD dwFlags) PURE;
-    STDMETHOD(Pick)(THIS_ LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer, LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags, LPD3DRECT lpRect) PURE;
-    STDMETHOD(GetPickRecords)(THIS_ LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec) PURE;
-    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc, LPVOID lpArg) PURE;
-    STDMETHOD(CreateMatrix)(THIS_ LPD3DMATRIXHANDLE lpD3DMatHandle) PURE;
-    STDMETHOD(SetMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(DeleteMatrix)(THIS_ D3DMATRIXHANDLE D3DMatHandle) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D *lplpDirect3D) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice methods ***/
-#define IDirect3DDevice_Initialize(p,a,b,c)          (p)->lpVtbl->Initialize(p,a,b,c)
-#define IDirect3DDevice_GetCaps(p,a,b)               (p)->lpVtbl->GetCaps(p,a,b)
-#define IDirect3DDevice_SwapTextureHandles(p,a,b)    (p)->lpVtbl->SwapTextureHandles(p,a,b)
-#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->lpVtbl->CreateExecuteBuffer(p,a,b,c)
-#define IDirect3DDevice_GetStats(p,a)                (p)->lpVtbl->GetStats(p,a)
-#define IDirect3DDevice_Execute(p,a,b,c)             (p)->lpVtbl->Execute(p,a,b,c)
-#define IDirect3DDevice_AddViewport(p,a)             (p)->lpVtbl->AddViewport(p,a)
-#define IDirect3DDevice_DeleteViewport(p,a)          (p)->lpVtbl->DeleteViewport(p,a)
-#define IDirect3DDevice_NextViewport(p,a,b,c)        (p)->lpVtbl->NextViewport(p,a,b,c)
-#define IDirect3DDevice_Pick(p,a,b,c,d)              (p)->lpVtbl->Pick(p,a,b,c,d)
-#define IDirect3DDevice_GetPickRecords(p,a,b)        (p)->lpVtbl->GetPickRecords(p,a,b)
-#define IDirect3DDevice_EnumTextureFormats(p,a,b)    (p)->lpVtbl->EnumTextureFormats(p,a,b)
-#define IDirect3DDevice_CreateMatrix(p,a)            (p)->lpVtbl->CreateMatrix(p,a)
-#define IDirect3DDevice_SetMatrix(p,a,b)             (p)->lpVtbl->SetMatrix(p,a,b)
-#define IDirect3DDevice_GetMatrix(p,a,b)             (p)->lpVtbl->GetMatrix(p,a,b)
-#define IDirect3DDevice_DeleteMatrix(p,a)            (p)->lpVtbl->DeleteMatrix(p,a)
-#define IDirect3DDevice_BeginScene(p)                (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice_EndScene(p)                  (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice_GetDirect3D(p,a)             (p)->lpVtbl->GetDirect3D(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice_Release(p)            (p)->Release()
-/*** IDirect3DDevice methods ***/
-#define IDirect3DDevice_Initialize(p,a,b,c)          (p)->Initialize(a,b,c)
-#define IDirect3DDevice_GetCaps(p,a,b)               (p)->GetCaps(a,b)
-#define IDirect3DDevice_SwapTextureHandles(p,a,b)    (p)->SwapTextureHandles(a,b)
-#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->CreateExecuteBuffer(a,b,c)
-#define IDirect3DDevice_GetStats(p,a)                (p)->GetStats(a)
-#define IDirect3DDevice_Execute(p,a,b,c)             (p)->Execute(a,b,c)
-#define IDirect3DDevice_AddViewport(p,a)             (p)->AddViewport(a)
-#define IDirect3DDevice_DeleteViewport(p,a)          (p)->DeleteViewport(a)
-#define IDirect3DDevice_NextViewport(p,a,b,c)        (p)->NextViewport(a,b,c)
-#define IDirect3DDevice_Pick(p,a,b,c,d)              (p)->Pick(a,b,c,d)
-#define IDirect3DDevice_GetPickRecords(p,a,b)        (p)->GetPickRecords(a,b)
-#define IDirect3DDevice_EnumTextureFormats(p,a,b)    (p)->EnumTextureFormats(a,b)
-#define IDirect3DDevice_CreateMatrix(p,a)            (p)->CreateMatrix(a)
-#define IDirect3DDevice_SetMatrix(p,a,b)             (p)->SetMatrix(a,b)
-#define IDirect3DDevice_GetMatrix(p,a,b)             (p)->GetMatrix(a,b)
-#define IDirect3DDevice_DeleteMatrix(p,a)            (p)->DeleteMatrix(a)
-#define IDirect3DDevice_BeginScene(p)                (p)->BeginScene()
-#define IDirect3DDevice_EndScene(p)                  (p)->EndScene()
-#define IDirect3DDevice_GetDirect3D(p,a)             (p)->GetDirect3D(a)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DDevice2 interface
- */
-#define INTERFACE IDirect3DDevice2
-DECLARE_INTERFACE_(IDirect3DDevice2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice2 methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DHELDevDesc) PURE;
-    STDMETHOD(SwapTextureHandles)(THIS_ LPDIRECT3DTEXTURE2 lpD3DTex1, LPDIRECT3DTEXTURE2 lpD3DTex2) PURE;
-    STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE;
-    STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2) PURE;
-    STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2) PURE;
-    STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2, LPDIRECT3DVIEWPORT2 *lplpDirect3DViewport2, DWORD dwFlags) PURE;
-    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc, LPVOID lpArg) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D2 *lplpDirect3D2) PURE;
-    /*** DrawPrimitive API ***/
-    STDMETHOD(SetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT2 lpDirect3DViewport2) PURE;
-    STDMETHOD(GetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT2 *lplpDirect3DViewport2) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE lpNewRenderTarget, DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE *lplpRenderTarget) PURE;
-    STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE d3dpt,D3DVERTEXTYPE dwVertexTypeDesc,DWORD dwFlags) PURE;
-    STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwNumVertices, DWORD dwFlags) PURE;
-    STDMETHOD(Vertex)(THIS_ LPVOID lpVertexType) PURE;
-    STDMETHOD(Index)(THIS_ WORD wVertexIndex) PURE;
-    STDMETHOD(End)(THIS_ DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
-    STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, LPDWORD lpdwLightState) PURE;
-    STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, DWORD dwLightState) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, D3DVERTEXTYPE d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice2_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice2_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice2 methods ***/
-#define IDirect3DDevice2_GetCaps(p,a,b)                        (p)->lpVtbl->GetCaps(p,a,b)
-#define IDirect3DDevice2_SwapTextureHandles(p,a,b)             (p)->lpVtbl->SwapTextureHandles(p,a,b)
-#define IDirect3DDevice2_GetStats(p,a)                         (p)->lpVtbl->GetStats(p,a)
-#define IDirect3DDevice2_AddViewport(p,a)                      (p)->lpVtbl->AddViewport(p,a)
-#define IDirect3DDevice2_DeleteViewport(p,a)                   (p)->lpVtbl->DeleteViewport(p,a)
-#define IDirect3DDevice2_NextViewport(p,a,b,c)                 (p)->lpVtbl->NextViewport(p,a,b,c)
-#define IDirect3DDevice2_EnumTextureFormats(p,a,b)             (p)->lpVtbl->EnumTextureFormats(p,a,b)
-#define IDirect3DDevice2_BeginScene(p)                         (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice2_EndScene(p)                           (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice2_GetDirect3D(p,a)                      (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice2_SetCurrentViewport(p,a)               (p)->lpVtbl->SetCurrentViewport(p,a)
-#define IDirect3DDevice2_GetCurrentViewport(p,a)               (p)->lpVtbl->GetCurrentViewport(p,a)
-#define IDirect3DDevice2_SetRenderTarget(p,a,b)                (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice2_GetRenderTarget(p,a)                  (p)->lpVtbl->GetRenderTarget(p,a)
-#define IDirect3DDevice2_Begin(p,a,b,c)                        (p)->lpVtbl->Begin(p,a,b,c)
-#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e)             (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
-#define IDirect3DDevice2_Vertex(p,a)                           (p)->lpVtbl->Vertex(p,a)
-#define IDirect3DDevice2_Index(p,a)                            (p)->lpVtbl->Index(p,a)
-#define IDirect3DDevice2_End(p,a)                              (p)->lpVtbl->End(p,a)
-#define IDirect3DDevice2_GetRenderState(p,a,b)                 (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice2_SetRenderState(p,a,b)                 (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice2_GetLightState(p,a,b)                  (p)->lpVtbl->GetLightState(p,a,b)
-#define IDirect3DDevice2_SetLightState(p,a,b)                  (p)->lpVtbl->SetLightState(p,a,b)
-#define IDirect3DDevice2_SetTransform(p,a,b)                   (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice2_GetTransform(p,a,b)                   (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice2_MultiplyTransform(p,a,b)              (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
-#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice2_SetClipStatus(p,a)                    (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice2_GetClipStatus(p,a)                    (p)->lpVtbl->GetClipStatus(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice2_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice2_Release(p)            (p)->Release()
-/*** IDirect3DDevice2 methods ***/
-#define IDirect3DDevice2_GetCaps(p,a,b)                        (p)->GetCaps(a,b)
-#define IDirect3DDevice2_SwapTextureHandles(p,a,b)             (p)->SwapTextureHandles(a,b)
-#define IDirect3DDevice2_GetStats(p,a)                         (p)->GetStats(a)
-#define IDirect3DDevice2_AddViewport(p,a)                      (p)->AddViewport(a)
-#define IDirect3DDevice2_DeleteViewport(p,a)                   (p)->DeleteViewport(a)
-#define IDirect3DDevice2_NextViewport(p,a,b,c)                 (p)->NextViewport(a,b,c)
-#define IDirect3DDevice2_EnumTextureFormats(p,a,b)             (p)->EnumTextureFormats(a,b)
-#define IDirect3DDevice2_BeginScene(p)                         (p)->BeginScene()
-#define IDirect3DDevice2_EndScene(p)                           (p)->EndScene()
-#define IDirect3DDevice2_GetDirect3D(p,a)                      (p)->GetDirect3D(a)
-#define IDirect3DDevice2_SetCurrentViewport(p,a)               (p)->SetCurrentViewport(a)
-#define IDirect3DDevice2_GetCurrentViewport(p,a)               (p)->GetCurrentViewport(a)
-#define IDirect3DDevice2_SetRenderTarget(p,a,b)                (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice2_GetRenderTarget(p,a)                  (p)->GetRenderTarget(a)
-#define IDirect3DDevice2_Begin(p,a,b,c)                        (p)->Begin(a,b,c)
-#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e)             (p)->BeginIndexed(a,b,c,d,e)
-#define IDirect3DDevice2_Vertex(p,a)                           (p)->Vertex(a)
-#define IDirect3DDevice2_Index(p,a)                            (p)->Index(a)
-#define IDirect3DDevice2_End(p,a)                              (p)->End(a)
-#define IDirect3DDevice2_GetRenderState(p,a,b)                 (p)->GetRenderState(a,b)
-#define IDirect3DDevice2_SetRenderState(p,a,b)                 (p)->SetRenderState(a,b)
-#define IDirect3DDevice2_GetLightState(p,a,b)                  (p)->GetLightState(a,b)
-#define IDirect3DDevice2_SetLightState(p,a,b)                  (p)->SetLightState(a,b)
-#define IDirect3DDevice2_SetTransform(p,a,b)                   (p)->SetTransform(a,b)
-#define IDirect3DDevice2_GetTransform(p,a,b)                   (p)->GetTransform(a,b)
-#define IDirect3DDevice2_MultiplyTransform(p,a,b)              (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e)            (p)->DrawPrimitive(a,b,c,d,e)
-#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
-#define IDirect3DDevice2_SetClipStatus(p,a)                    (p)->SetClipStatus(a)
-#define IDirect3DDevice2_GetClipStatus(p,a)                    (p)->GetClipStatus(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DDevice3 interface
- */
-#define INTERFACE IDirect3DDevice3
-DECLARE_INTERFACE_(IDirect3DDevice3,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice3 methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DHELDevDesc) PURE;
-    STDMETHOD(GetStats)(THIS_ LPD3DSTATS lpD3DStats) PURE;
-    STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3) PURE;
-    STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3) PURE;
-    STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3, LPDIRECT3DVIEWPORT3 *lplpDirect3DViewport3, DWORD dwFlags) PURE;
-    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc, LPVOID lpArg) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D3 *lplpDirect3D3) PURE;
-    /*** DrawPrimitive API ***/
-    STDMETHOD(SetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT3 lpDirect3DViewport3) PURE;
-    STDMETHOD(GetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT3 *lplpDirect3DViewport3) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE4 lpNewRenderTarget, DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE4 *lplpRenderTarget) PURE;
-    STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexTypeDesc, DWORD dwFlags) PURE;
-    STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwNumVertices, DWORD dwFlags) PURE;
-    STDMETHOD(Vertex)(THIS_ LPVOID lpVertexType) PURE;
-    STDMETHOD(Index)(THIS_ WORD wVertexIndex) PURE;
-    STDMETHOD(End)(THIS_ DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
-    STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, LPDWORD lpdwLightState) PURE;
-    STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE dwLightStateType, DWORD dwLightState) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,LPWORD lpIndex,DWORD dwIndexCount,DWORD dwFlags) PURE;
-    STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,DWORD dwStartVertex,DWORD dwNumVertices,DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,LPWORD lpwIndices,DWORD dwIndexCount,DWORD dwFlags) PURE;
-    STDMETHOD(ComputeSphereVisibility)(THIS_ LPD3DVECTOR lpCenters,LPD3DVALUE lpRadii,DWORD dwNumSpheres,DWORD dwFlags,LPDWORD lpdwReturnValues) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD dwStage,LPDIRECT3DTEXTURE2 *lplpTexture2) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD dwStage,LPDIRECT3DTEXTURE2 lpTexture2) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,LPDWORD lpdwState) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,DWORD dwState) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ LPDWORD lpdwPasses) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice3_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice3_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice3 methods ***/
-#define IDirect3DDevice3_GetCaps(p,a,b)                        (p)->lpVtbl->GetCaps(p,a,b)
-#define IDirect3DDevice3_GetStats(p,a)                         (p)->lpVtbl->GetStats(p,a)
-#define IDirect3DDevice3_AddViewport(p,a)                      (p)->lpVtbl->AddViewport(p,a)
-#define IDirect3DDevice3_DeleteViewport(p,a)                   (p)->lpVtbl->DeleteViewport(p,a)
-#define IDirect3DDevice3_NextViewport(p,a,b,c)                 (p)->lpVtbl->NextViewport(p,a,b,c)
-#define IDirect3DDevice3_EnumTextureFormats(p,a,b)             (p)->lpVtbl->EnumTextureFormats(p,a,b)
-#define IDirect3DDevice3_BeginScene(p)                         (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice3_EndScene(p)                           (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice3_GetDirect3D(p,a)                      (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice3_SetCurrentViewport(p,a)               (p)->lpVtbl->SetCurrentViewport(p,a)
-#define IDirect3DDevice3_GetCurrentViewport(p,a)               (p)->lpVtbl->GetCurrentViewport(p,a)
-#define IDirect3DDevice3_SetRenderTarget(p,a,b)                (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice3_GetRenderTarget(p,a)                  (p)->lpVtbl->GetRenderTarget(p,a)
-#define IDirect3DDevice3_Begin(p,a,b,c)                        (p)->lpVtbl->Begin(p,a,b,c)
-#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e)             (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
-#define IDirect3DDevice3_Vertex(p,a)                           (p)->lpVtbl->Vertex(p,a)
-#define IDirect3DDevice3_Index(p,a)                            (p)->lpVtbl->Index(p,a)
-#define IDirect3DDevice3_End(p,a)                              (p)->lpVtbl->End(p,a)
-#define IDirect3DDevice3_GetRenderState(p,a,b)                 (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice3_SetRenderState(p,a,b)                 (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice3_GetLightState(p,a,b)                  (p)->lpVtbl->GetLightState(p,a,b)
-#define IDirect3DDevice3_SetLightState(p,a,b)                  (p)->lpVtbl->SetLightState(p,a,b)
-#define IDirect3DDevice3_SetTransform(p,a,b)                   (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice3_GetTransform(p,a,b)                   (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice3_MultiplyTransform(p,a,b)              (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice3_SetClipStatus(p,a)                    (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice3_GetClipStatus(p,a)                    (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e)     (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e)          (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e)   (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e)
-#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e)  (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
-#define IDirect3DDevice3_GetTexture(p,a,b)                     (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice3_SetTexture(p,a,b)                     (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice3_GetTextureStageState(p,a,b,c)         (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice3_SetTextureStageState(p,a,b,c)         (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice3_ValidateDevice(p,a)                   (p)->lpVtbl->ValidateDevice(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice3_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice3_Release(p)            (p)->Release()
-/*** IDirect3DDevice3 methods ***/
-#define IDirect3DDevice3_GetCaps(p,a,b)                        (p)->GetCaps(a,b)
-#define IDirect3DDevice3_GetStats(p,a)                         (p)->GetStats(a)
-#define IDirect3DDevice3_AddViewport(p,a)                      (p)->AddViewport(a)
-#define IDirect3DDevice3_DeleteViewport(p,a)                   (p)->DeleteViewport(a)
-#define IDirect3DDevice3_NextViewport(p,a,b,c)                 (p)->NextViewport(a,b,c)
-#define IDirect3DDevice3_EnumTextureFormats(p,a,b)             (p)->EnumTextureFormats(a,b)
-#define IDirect3DDevice3_BeginScene(p)                         (p)->BeginScene()
-#define IDirect3DDevice3_EndScene(p)                           (p)->EndScene()
-#define IDirect3DDevice3_GetDirect3D(p,a)                      (p)->GetDirect3D(a)
-#define IDirect3DDevice3_SetCurrentViewport(p,a)               (p)->SetCurrentViewport(a)
-#define IDirect3DDevice3_GetCurrentViewport(p,a)               (p)->GetCurrentViewport(a)
-#define IDirect3DDevice3_SetRenderTarget(p,a,b)                (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice3_GetRenderTarget(p,a)                  (p)->GetRenderTarget(a)
-#define IDirect3DDevice3_Begin(p,a,b,c)                        (p)->Begin(a,b,c)
-#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e)             (p)->BeginIndexed(a,b,c,d,e)
-#define IDirect3DDevice3_Vertex(p,a)                           (p)->Vertex(a)
-#define IDirect3DDevice3_Index(p,a)                            (p)->Index(a)
-#define IDirect3DDevice3_End(p,a)                              (p)->End(a)
-#define IDirect3DDevice3_GetRenderState(p,a,b)                 (p)->GetRenderState(a,b)
-#define IDirect3DDevice3_SetRenderState(p,a,b)                 (p)->SetRenderState(a,b)
-#define IDirect3DDevice3_GetLightState(p,a,b)                  (p)->GetLightState(a,b)
-#define IDirect3DDevice3_SetLightState(p,a,b)                  (p)->SetLightState(a,b)
-#define IDirect3DDevice3_SetTransform(p,a,b)                   (p)->SetTransform(a,b)
-#define IDirect3DDevice3_GetTransform(p,a,b)                   (p)->GetTransform(a,b)
-#define IDirect3DDevice3_MultiplyTransform(p,a,b)              (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e)            (p)->DrawPrimitive(a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
-#define IDirect3DDevice3_SetClipStatus(p,a)                    (p)->SetClipStatus(a)
-#define IDirect3DDevice3_GetClipStatus(p,a)                    (p)->GetClipStatus(a)
-#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e)     (p)->DrawPrimitiveStrided(a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
-#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e)          (p)->DrawPrimitiveVB(a,b,c,d,e)
-#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e)   (p)->DrawIndexedPrimitiveVB(a,b,c,d,e)
-#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e)  (p)->ComputeSphereVisibility(a,b,c,d,e)
-#define IDirect3DDevice3_GetTexture(p,a,b)                     (p)->GetTexture(a,b)
-#define IDirect3DDevice3_SetTexture(p,a,b)                     (p)->SetTexture(a,b)
-#define IDirect3DDevice3_GetTextureStageState(p,a,b,c)         (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice3_SetTextureStageState(p,a,b,c)         (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice3_ValidateDevice(p,a)                   (p)->ValidateDevice(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DDevice7 interface
- */
-#define INTERFACE IDirect3DDevice7
-DECLARE_INTERFACE_(IDirect3DDevice7,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice7 methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC7 lpD3DHELDevDesc) PURE;
-    STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc, LPVOID lpArg) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D7 *lplpDirect3D3) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7 lpNewRenderTarget,DWORD dwFlags) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7 *lplpRenderTarget) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD dwCount,LPD3DRECT lpRects,DWORD dwFlags,D3DCOLOR dwColor,D3DVALUE dvZ,DWORD dwStencil) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT7 lpData) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE dtstTransformStateType,LPD3DMATRIX lpD3DMatrix) PURE;
-    STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT7 lpData) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL7 lpMat) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL7 lpMat) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD dwLightIndex,LPD3DLIGHT7 lpLight) PURE;
-    STDMETHOD(GetLight)(THIS_ DWORD dwLightIndex,LPD3DLIGHT7 lpLight) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE dwRenderStateType, LPDWORD lpdwRenderState) PURE;
-    STDMETHOD(BeginStateBlock)(THIS) PURE;
-    STDMETHOD(EndStateBlock)(THIS_ LPDWORD lpdwBlockHandle) PURE;
-    STDMETHOD(PreLoad)(THIS_ LPDIRECTDRAWSURFACE7 lpddsTexture) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType, DWORD d3dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, LPWORD dwIndices, DWORD dwIndexCount, DWORD dwFlags) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS lpD3DClipStatus) PURE;
-    STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,DWORD dwVertexType,LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,DWORD dwVertexCount,LPWORD lpIndex,DWORD dwIndexCount,DWORD dwFlags) PURE;
-    STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,DWORD dwStartVertex,DWORD dwNumVertices,DWORD dwFlags) PURE;
-    STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE d3dptPrimitiveType,LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,DWORD dwStartVertex,DWORD dwNumVertices,LPWORD lpwIndices,DWORD dwIndexCount,DWORD dwFlags) PURE;
-    STDMETHOD(ComputeSphereVisibility)(THIS_ LPD3DVECTOR lpCenters,LPD3DVALUE lpRadii,DWORD dwNumSpheres,DWORD dwFlags,LPDWORD lpdwReturnValues) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD dwStage,LPDIRECTDRAWSURFACE7 *lpTexture) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD dwStage,LPDIRECTDRAWSURFACE7 lpTexture) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,LPDWORD lpdwState) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD dwStage,D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,DWORD dwState) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ LPDWORD lpdwPasses) PURE;
-    STDMETHOD(ApplyStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
-    STDMETHOD(CaptureStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
-    STDMETHOD(DeleteStateBlock)(THIS_ DWORD dwBlockHandle) PURE;
-    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE d3dsbType,LPDWORD lpdwBlockHandle) PURE;
-    STDMETHOD(Load)(THIS_ LPDIRECTDRAWSURFACE7 lpDestTex,LPPOINT lpDestPoint,LPDIRECTDRAWSURFACE7 lpSrcTex,LPRECT lprcSrcRect,DWORD dwFlags) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD dwLightIndex,BOOL bEnable) PURE;
-    STDMETHOD(GetLightEnable)(THIS_ DWORD dwLightIndex,BOOL *pbEnable) PURE;
-    STDMETHOD(SetClipPlane)(THIS_ DWORD dwIndex,D3DVALUE *pPlaneEquation) PURE;
-    STDMETHOD(GetClipPlane)(THIS_ DWORD dwIndex,D3DVALUE *pPlaneEquation) PURE;
-    STDMETHOD(GetInfo)(THIS_ DWORD dwDevInfoID,LPVOID pDevInfoStruct,DWORD dwSize) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice7_QueryInterface(p,a,b)                        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice7_AddRef(p)                                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice7_Release(p)                                   (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice7 methods ***/
-#define IDirect3DDevice7_GetCaps(p,a)                                 (p)->lpVtbl->GetCaps(p,a)
-#define IDirect3DDevice7_EnumTextureFormats(p,a,b)                    (p)->lpVtbl->EnumTextureFormats(p,a,b)
-#define IDirect3DDevice7_BeginScene(p)                                (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice7_EndScene(p)                                  (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice7_GetDirect3D(p,a)                             (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice7_SetRenderTarget(p,a,b)                       (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice7_GetRenderTarget(p,a)                         (p)->lpVtbl->GetRenderTarget(p,a)
-#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f)                         (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
-#define IDirect3DDevice7_SetTransform(p,a,b)                          (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice7_GetTransform(p,a,b)                          (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice7_SetViewport(p,a)                             (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DDevice7_MultiplyTransform(p,a,b)                     (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice7_GetViewport(p,a)                             (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DDevice7_SetMaterial(p,a)                             (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DDevice7_GetMaterial(p,a)                             (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DDevice7_SetLight(p,a,b)                              (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DDevice7_GetLight(p,a,b)                              (p)->lpVtbl->GetLight(p,a,b)
-#define IDirect3DDevice7_SetRenderState(p,a,b)                        (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice7_GetRenderState(p,a,b)                        (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice7_BeginStateBlock(p)                           (p)->lpVtbl->BeginStateBlock(p)
-#define IDirect3DDevice7_EndStateBlock(p,a)                           (p)->lpVtbl->EndStateBlock(p,a)
-#define IDirect3DDevice7_PreLoad(p,a)                                 (p)->lpVtbl->PreLoad(p,a)
-#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e)                   (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g)        (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice7_SetClipStatus(p,a)                           (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice7_GetClipStatus(p,a)                           (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e)            (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e)                 (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)      (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e)         (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
-#define IDirect3DDevice7_GetTexture(p,a,b)                            (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice7_SetTexture(p,a,b)                            (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice7_GetTextureStageState(p,a,b,c)                (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice7_SetTextureStageState(p,a,b,c)                (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice7_ValidateDevice(p,a)                          (p)->lpVtbl->ValidateDevice(p,a)
-#define IDirect3DDevice7_ApplyStateBlock(p,a)                         (p)->lpVtbl->ApplyStateBlock(p,a)
-#define IDirect3DDevice7_CaptureStateBlock(p,a)                       (p)->lpVtbl->CaptureStateBlock(p,a)
-#define IDirect3DDevice7_DeleteStateBlock(p,a)                        (p)->lpVtbl->DeleteStateBlock(p,a)
-#define IDirect3DDevice7_CreateStateBlock(p,a,b)                      (p)->lpVtbl->CreateStateBlock(p,a,b)
-#define IDirect3DDevice7_Load(p,a,b,c,d,e)                            (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DDevice7_LightEnable(p,a,b)                           (p)->lpVtbl->LightEnable(p,a,b)
-#define IDirect3DDevice7_GetLightEnable(p,a,b)                        (p)->lpVtbl->GetLightEnable(p,a,b)
-#define IDirect3DDevice7_SetClipPlane(p,a,b)                          (p)->lpVtbl->SetClipPlane(p,a,b)
-#define IDirect3DDevice7_GetClipPlane(p,a,b)                          (p)->lpVtbl->GetClipPlane(p,a,b)
-#define IDirect3DDevice7_GetInfo(p,a,b,c)                             (p)->lpVtbl->GetInfo(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice7_QueryInterface(p,a,b)                        (p)->QueryInterface(a,b)
-#define IDirect3DDevice7_AddRef(p)                                    (p)->AddRef()
-#define IDirect3DDevice7_Release(p)                                   (p)->Release()
-/*** IDirect3DDevice7 methods ***/
-#define IDirect3DDevice7_GetCaps(p,a)                                 (p)->GetCaps(a)
-#define IDirect3DDevice7_EnumTextureFormats(p,a,b)                    (p)->EnumTextureFormats(a,b)
-#define IDirect3DDevice7_BeginScene(p)                                (p)->BeginScene()
-#define IDirect3DDevice7_EndScene(p)                                  (p)->EndScene()
-#define IDirect3DDevice7_GetDirect3D(p,a)                             (p)->GetDirect3D(a)
-#define IDirect3DDevice7_SetRenderTarget(p,a,b)                       (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice7_GetRenderTarget(p,a)                         (p)->GetRenderTarget(a)
-#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f)                         (p)->Clear(a,b,c,d,e,f)
-#define IDirect3DDevice7_SetTransform(p,a,b)                          (p)->SetTransform(a,b)
-#define IDirect3DDevice7_GetTransform(p,a,b)                          (p)->GetTransform(a,b)
-#define IDirect3DDevice7_SetViewport(p,a)                             (p)->SetViewport(a)
-#define IDirect3DDevice7_MultiplyTransform(p,a,b)                     (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice7_GetViewport(p,a)                             (p)->GetViewport(a)
-#define IDirect3DDevice7_SetMaterial(p,a)                             (p)->SetMaterial(a)
-#define IDirect3DDevice7_GetMaterial(p,a)                             (p)->GetMaterial(a)
-#define IDirect3DDevice7_SetLight(p,a,b)                              (p)->SetLight(a,b)
-#define IDirect3DDevice7_GetLight(p,a,b)                              (p)->GetLight(a,b)
-#define IDirect3DDevice7_SetRenderState(p,a,b)                        (p)->SetRenderState(a,b)
-#define IDirect3DDevice7_GetRenderState(p,a,b)                        (p)->GetRenderState(a,b)
-#define IDirect3DDevice7_BeginStateBlock(p)                           (p)->BeginStateBlock()
-#define IDirect3DDevice7_EndStateBlock(p,a)                           (p)->EndStateBlock(a)
-#define IDirect3DDevice7_PreLoad(p,a)                                 (p)->PreLoad(a)
-#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e)                   (p)->DrawPrimitive(a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g)        (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
-#define IDirect3DDevice7_SetClipStatus(p,a)                           (p)->SetClipStatus(a)
-#define IDirect3DDevice7_GetClipStatus(p,a)                           (p)->GetClipStatus(a)
-#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e)            (p)->DrawPrimitiveStrided(a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
-#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e)                 (p)->DrawPrimitiveVB(a,b,c,d,e)
-#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)      (p)->DrawIndexedPrimitiveVB(a,b,c,d,e,f,g)
-#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e)         (p)->ComputeSphereVisibility(a,b,c,d,e)
-#define IDirect3DDevice7_GetTexture(p,a,b)                            (p)->GetTexture(a,b)
-#define IDirect3DDevice7_SetTexture(p,a,b)                            (p)->SetTexture(a,b)
-#define IDirect3DDevice7_GetTextureStageState(p,a,b,c)                (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice7_SetTextureStageState(p,a,b,c)                (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice7_ValidateDevice(p,a)                          (p)->ValidateDevice(a)
-#define IDirect3DDevice7_ApplyStateBlock(p,a)                         (p)->ApplyStateBlock(a)
-#define IDirect3DDevice7_CaptureStateBlock(p,a)                       (p)->CaptureStateBlock(a)
-#define IDirect3DDevice7_DeleteStateBlock(p,a)                        (p)->DeleteStateBlock(a)
-#define IDirect3DDevice7_CreateStateBlock(p,a,b)                      (p)->CreateStateBlock(a,b)
-#define IDirect3DDevice7_Load(p,a,b,c,d,e)                            (p)->Load(a,b,c,d,e)
-#define IDirect3DDevice7_LightEnable(p,a,b)                           (p)->LightEnable(a,b)
-#define IDirect3DDevice7_GetLightEnable(p,a,b)                        (p)->GetLightEnable(a,b)
-#define IDirect3DDevice7_SetClipPlane(p,a,b)                          (p)->SetClipPlane(a,b)
-#define IDirect3DDevice7_GetClipPlane(p,a,b)                          (p)->GetClipPlane(a,b)
-#define IDirect3DDevice7_GetInfo(p,a,b,c)                             (p)->GetInfo(a,b,c)
-#endif
-
-
-
-/*****************************************************************************
- * IDirect3DVertexBuffer interface
- */
-#define INTERFACE IDirect3DVertexBuffer
-DECLARE_INTERFACE_(IDirect3DVertexBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVertexBuffer methods ***/
-    STDMETHOD(Lock)(THIS_ DWORD dwFlags,LPVOID *lplpData,LPDWORD lpdwSize) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPDIRECT3DVERTEXBUFFER lpSrcBuffer,DWORD dwSrcIndex,LPDIRECT3DDEVICE3 lpD3DDevice,DWORD dwFlags) PURE;
-    STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertexBufferDesc) PURE;
-    STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE3  lpD3DDevice,DWORD dwFlags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexBuffer methods ***/
-#define IDirect3DVertexBuffer_Lock(p,a,b,c)                    (p)->lpVtbl->Lock(p,a,b,c)
-#define IDirect3DVertexBuffer_Unlock(p)                        (p)->lpVtbl->Unlock(p)
-#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
-#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a)         (p)->lpVtbl->GetVertexBufferDesc(p,a)
-#define IDirect3DVertexBuffer_Optimize(p,a,b)                  (p)->lpVtbl->Optimize(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DVertexBuffer_AddRef(p)             (p)->AddRef()
-#define IDirect3DVertexBuffer_Release(p)            (p)->Release()
-/*** IDirect3DVertexBuffer methods ***/
-#define IDirect3DVertexBuffer_Lock(p,a,b,c)                    (p)->Lock(a,b,c)
-#define IDirect3DVertexBuffer_Unlock(p)                        (p)->Unlock()
-#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->ProcessVertices(a,b,c,d,e,f,g)
-#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a)         (p)->GetVertexBufferDesc(a)
-#define IDirect3DVertexBuffer_Optimize(p,a,b)                  (p)->Optimize(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexBuffer7 interface
- */
-#define INTERFACE IDirect3DVertexBuffer7
-DECLARE_INTERFACE_(IDirect3DVertexBuffer7,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVertexBuffer7 methods ***/
-    STDMETHOD(Lock)(THIS_ DWORD dwFlags,LPVOID *lplpData,LPDWORD lpdwSize) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPDIRECT3DVERTEXBUFFER7 lpSrcBuffer,DWORD dwSrcIndex,LPDIRECT3DDEVICE7 lpD3DDevice,DWORD dwFlags) PURE;
-    STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC lpD3DVertexBufferDesc) PURE;
-    STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE7  lpD3DDevice,DWORD dwFlags) PURE;
-    STDMETHOD(ProcessVerticesStrided)(THIS_ DWORD dwVertexOp,DWORD dwDestIndex,DWORD dwCount,LPD3DDRAWPRIMITIVESTRIDEDDATA lpStrideData,DWORD dwVertexTypeDesc,LPDIRECT3DDEVICE7 lpD3DDevice,DWORD dwFlags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer7_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexBuffer7_AddRef(p)                               (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexBuffer7_Release(p)                              (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexBuffer7 methods ***/
-#define IDirect3DVertexBuffer7_Lock(p,a,b,c)                           (p)->lpVtbl->Lock(p,a,b,c)
-#define IDirect3DVertexBuffer7_Unlock(p)                               (p)->lpVtbl->Unlock(p)
-#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g)        (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
-#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a)                (p)->lpVtbl->GetVertexBufferDesc(p,a)
-#define IDirect3DVertexBuffer7_Optimize(p,a,b)                         (p)->lpVtbl->Optimize(p,a,b)
-#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVerticesStrided(p,a,b,c,d,e,f,g)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer7_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
-#define IDirect3DVertexBuffer7_AddRef(p)                               (p)->AddRef()
-#define IDirect3DVertexBuffer7_Release(p)                              (p)->Release()
-/*** IDirect3DVertexBuffer7 methods ***/
-#define IDirect3DVertexBuffer7_Lock(p,a,b,c)                           (p)->Lock(a,b,c)
-#define IDirect3DVertexBuffer7_Unlock(p)                               (p)->Unlock()
-#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g)        (p)->ProcessVertices(a,b,c,d,e,f,g)
-#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a)                (p)->GetVertexBufferDesc(a)
-#define IDirect3DVertexBuffer7_Optimize(p,a,b)                         (p)->Optimize(a,b)
-#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->ProcessVerticesStrided(a,b,c,d,e,f,g)
-#endif
-
-#endif /* __WINE_D3D_H */
diff --git a/misc/builddeps/win64/dx/include/d3d10.h b/misc/builddeps/win64/dx/include/d3d10.h
deleted file mode 100644 (file)
index dd6ea6c..0000000
+++ /dev/null
@@ -1,5603 +0,0 @@
-/*** Autogenerated by WIDL 1.2-rc3 from d3d10.idl - Do not edit ***/
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifndef __WIDL_D3D10_H
-#define __WIDL_D3D10_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Headers for imported files */
-
-#include <oaidl.h>
-#include <ocidl.h>
-#include <dxgi.h>
-
-/* Forward declarations */
-
-#ifndef __ID3D10DeviceChild_FWD_DEFINED__
-#define __ID3D10DeviceChild_FWD_DEFINED__
-typedef interface ID3D10DeviceChild ID3D10DeviceChild;
-#endif
-
-#ifndef __ID3D10Resource_FWD_DEFINED__
-#define __ID3D10Resource_FWD_DEFINED__
-typedef interface ID3D10Resource ID3D10Resource;
-#endif
-
-#ifndef __ID3D10Buffer_FWD_DEFINED__
-#define __ID3D10Buffer_FWD_DEFINED__
-typedef interface ID3D10Buffer ID3D10Buffer;
-#endif
-
-#ifndef __ID3D10Texture1D_FWD_DEFINED__
-#define __ID3D10Texture1D_FWD_DEFINED__
-typedef interface ID3D10Texture1D ID3D10Texture1D;
-#endif
-
-#ifndef __ID3D10Texture2D_FWD_DEFINED__
-#define __ID3D10Texture2D_FWD_DEFINED__
-typedef interface ID3D10Texture2D ID3D10Texture2D;
-#endif
-
-#ifndef __ID3D10Texture3D_FWD_DEFINED__
-#define __ID3D10Texture3D_FWD_DEFINED__
-typedef interface ID3D10Texture3D ID3D10Texture3D;
-#endif
-
-#ifndef __ID3D10View_FWD_DEFINED__
-#define __ID3D10View_FWD_DEFINED__
-typedef interface ID3D10View ID3D10View;
-#endif
-
-#ifndef __ID3D10DepthStencilView_FWD_DEFINED__
-#define __ID3D10DepthStencilView_FWD_DEFINED__
-typedef interface ID3D10DepthStencilView ID3D10DepthStencilView;
-#endif
-
-#ifndef __ID3D10RenderTargetView_FWD_DEFINED__
-#define __ID3D10RenderTargetView_FWD_DEFINED__
-typedef interface ID3D10RenderTargetView ID3D10RenderTargetView;
-#endif
-
-#ifndef __ID3D10ShaderResourceView_FWD_DEFINED__
-#define __ID3D10ShaderResourceView_FWD_DEFINED__
-typedef interface ID3D10ShaderResourceView ID3D10ShaderResourceView;
-#endif
-
-#ifndef __ID3D10BlendState_FWD_DEFINED__
-#define __ID3D10BlendState_FWD_DEFINED__
-typedef interface ID3D10BlendState ID3D10BlendState;
-#endif
-
-#ifndef __ID3D10DepthStencilState_FWD_DEFINED__
-#define __ID3D10DepthStencilState_FWD_DEFINED__
-typedef interface ID3D10DepthStencilState ID3D10DepthStencilState;
-#endif
-
-#ifndef __ID3D10GeometryShader_FWD_DEFINED__
-#define __ID3D10GeometryShader_FWD_DEFINED__
-typedef interface ID3D10GeometryShader ID3D10GeometryShader;
-#endif
-
-#ifndef __ID3D10InputLayout_FWD_DEFINED__
-#define __ID3D10InputLayout_FWD_DEFINED__
-typedef interface ID3D10InputLayout ID3D10InputLayout;
-#endif
-
-#ifndef __ID3D10PixelShader_FWD_DEFINED__
-#define __ID3D10PixelShader_FWD_DEFINED__
-typedef interface ID3D10PixelShader ID3D10PixelShader;
-#endif
-
-#ifndef __ID3D10RasterizerState_FWD_DEFINED__
-#define __ID3D10RasterizerState_FWD_DEFINED__
-typedef interface ID3D10RasterizerState ID3D10RasterizerState;
-#endif
-
-#ifndef __ID3D10SamplerState_FWD_DEFINED__
-#define __ID3D10SamplerState_FWD_DEFINED__
-typedef interface ID3D10SamplerState ID3D10SamplerState;
-#endif
-
-#ifndef __ID3D10VertexShader_FWD_DEFINED__
-#define __ID3D10VertexShader_FWD_DEFINED__
-typedef interface ID3D10VertexShader ID3D10VertexShader;
-#endif
-
-#ifndef __ID3D10Asynchronous_FWD_DEFINED__
-#define __ID3D10Asynchronous_FWD_DEFINED__
-typedef interface ID3D10Asynchronous ID3D10Asynchronous;
-#endif
-
-#ifndef __ID3D10Counter_FWD_DEFINED__
-#define __ID3D10Counter_FWD_DEFINED__
-typedef interface ID3D10Counter ID3D10Counter;
-#endif
-
-#ifndef __ID3D10Query_FWD_DEFINED__
-#define __ID3D10Query_FWD_DEFINED__
-typedef interface ID3D10Query ID3D10Query;
-#endif
-
-#ifndef __ID3D10Predicate_FWD_DEFINED__
-#define __ID3D10Predicate_FWD_DEFINED__
-typedef interface ID3D10Predicate ID3D10Predicate;
-#endif
-
-#ifndef __ID3D10Device_FWD_DEFINED__
-#define __ID3D10Device_FWD_DEFINED__
-typedef interface ID3D10Device ID3D10Device;
-#endif
-
-#ifndef __ID3D10Multithread_FWD_DEFINED__
-#define __ID3D10Multithread_FWD_DEFINED__
-typedef interface ID3D10Multithread ID3D10Multithread;
-#endif
-
-
-#ifndef _D3D10_CONSTANTS
-#define _D3D10_CONSTANTS
-#define D3D10_DEFAULT_BLEND_FACTOR_ALPHA (1.00000000000000)
-
-#define D3D10_DEFAULT_BLEND_FACTOR_BLUE (1.00000000000000)
-
-#define D3D10_DEFAULT_BLEND_FACTOR_GREEN (1.00000000000000)
-
-#define D3D10_DEFAULT_BLEND_FACTOR_RED (1.00000000000000)
-
-#define D3D10_DEFAULT_BORDER_COLOR_COMPONENT (0.00000000000000)
-
-#define D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS (0.00000000000000)
-
-#define D3D10_DEFAULT_DEPTH_BIAS_CLAMP (0.00000000000000)
-
-#define D3D10_DEFAULT_MAX_ANISOTROPY (16.0000000000000)
-
-#define D3D10_DEFAULT_MIP_LOD_BIAS (0.00000000000000)
-
-#define D3D10_DEFAULT_VIEWPORT_MAX_DEPTH (0.00000000000000)
-
-#define D3D10_DEFAULT_VIEWPORT_MIN_DEPTH (0.00000000000000)
-
-#define D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP (0.600000000000000)
-
-#define D3D10_FLOAT32_MAX (3.40282346600000e+38)
-
-#define D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP (0.600000000000000)
-
-#define D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR (2.40000000000000)
-
-#define D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR (1.00000000000000)
-
-#define D3D10_FLOAT_TO_SRGB_OFFSET (0.0550000000000000)
-
-#define D3D10_FLOAT_TO_SRGB_SCALE_1 (12.9200000000000)
-
-#define D3D10_FLOAT_TO_SRGB_SCALE_2 (1.05500000000000)
-
-#define D3D10_FLOAT_TO_SRGB_THRESHOLD (0.00313080000000000)
-
-#define D3D10_FTOI_INSTRUCTION_MAX_INPUT (2147483647.99900)
-
-#define D3D10_FTOI_INSTRUCTION_MIN_INPUT (-2147483648.99900)
-
-#define D3D10_FTOU_INSTRUCTION_MAX_INPUT (4294967295.99900)
-
-#define D3D10_FTOU_INSTRUCTION_MIN_INPUT (0.00000000000000)
-
-#define D3D10_LINEAR_GAMMA (1.00000000000000)
-
-#define D3D10_MAX_BORDER_COLOR_COMPONENT (1.00000000000000)
-
-#define D3D10_MAX_DEPTH (1.00000000000000)
-
-#define D3D10_MAX_POSITION_VALUE (3.40282346600000e+34)
-
-#define D3D10_MIN_BORDER_COLOR_COMPONENT (0.00000000000000)
-
-#define D3D10_MIN_DEPTH (0.00000000000000)
-
-#define D3D10_MIP_LOD_BIAS_MAX (15.9900000000000)
-
-#define D3D10_MIP_LOD_BIAS_MIN (-16.0000000000000)
-
-#define D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT (0.500000000000000)
-
-#define D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH (1.40000000000000)
-
-#define D3D10_SRGB_GAMMA (2.20000000000000)
-
-#define D3D10_SRGB_TO_FLOAT_DENOMINATOR_1 (12.9200000000000)
-
-#define D3D10_SRGB_TO_FLOAT_DENOMINATOR_2 (1.05500000000000)
-
-#define D3D10_SRGB_TO_FLOAT_EXPONENT (2.40000000000000)
-
-#define D3D10_SRGB_TO_FLOAT_OFFSET (0.0550000000000000)
-
-#define D3D10_SRGB_TO_FLOAT_THRESHOLD (0.0404500000000000)
-
-#define D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP (0.500000000000000)
-
-#define D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT (0.00000000000000)
-
-#define D3D_SPEC_VERSION (1.05000500000000)
-
-#define D3D10_16BIT_INDEX_STRIP_CUT_VALUE (0xffff)
-
-#define D3D10_32BIT_INDEX_STRIP_CUT_VALUE (0xffffffff)
-
-#define D3D10_8BIT_INDEX_STRIP_CUT_VALUE (0xff)
-
-#define D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT (9)
-
-#define D3D10_CLIP_OR_CULL_DISTANCE_COUNT (8)
-
-#define D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT (2)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT (14)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS (4)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT (15)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS (4)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT (15)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST (1)
-
-#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS (1)
-
-#define D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT (64)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS (4)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT (1)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST (1)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS (1)
-
-#define D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS (1)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT (128)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST (1)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS (1)
-
-#define D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT (128)
-
-#define D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS (1)
-
-#define D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT (16)
-
-#define D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST (1)
-
-#define D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS (1)
-
-#define D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT (16)
-
-#define D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT (32)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS (4)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_COUNT (4096)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST (3)
-
-#define D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS (3)
-
-#define D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX (10)
-
-#define D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN (-10)
-
-#define D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE (-8)
-
-#define D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE (7)
-
-#define D3D10_DEFAULT_DEPTH_BIAS (0)
-
-#define D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX (0)
-
-#define D3D10_DEFAULT_SAMPLE_MASK (0xffffffff)
-
-#define D3D10_DEFAULT_SCISSOR_ENDX (0)
-
-#define D3D10_DEFAULT_SCISSOR_ENDY (0)
-
-#define D3D10_DEFAULT_SCISSOR_STARTX (0)
-
-#define D3D10_DEFAULT_SCISSOR_STARTY (0)
-
-#define D3D10_DEFAULT_STENCIL_READ_MASK (0xff)
-
-#define D3D10_DEFAULT_STENCIL_REFERENCE (0)
-
-#define D3D10_DEFAULT_STENCIL_WRITE_MASK (0xff)
-
-#define D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX (0)
-
-#define D3D10_DEFAULT_VIEWPORT_HEIGHT (0)
-
-#define D3D10_DEFAULT_VIEWPORT_TOPLEFTX (0)
-
-#define D3D10_DEFAULT_VIEWPORT_TOPLEFTY (0)
-
-#define D3D10_DEFAULT_VIEWPORT_WIDTH (0)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS (1)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT (1)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST (2)
-
-#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS (1)
-
-#define D3D10_GS_INPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_GS_INPUT_REGISTER_COUNT (16)
-
-#define D3D10_GS_INPUT_REGISTER_READS_PER_INST (2)
-
-#define D3D10_GS_INPUT_REGISTER_READ_PORTS (1)
-
-#define D3D10_GS_INPUT_REGISTER_VERTICES (6)
-
-#define D3D10_GS_OUTPUT_ELEMENTS (32)
-
-#define D3D10_GS_OUTPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_GS_OUTPUT_REGISTER_COUNT (32)
-
-#define D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES (0)
-
-#define D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY (0)
-
-#define D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES (0)
-
-#define D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT (1)
-
-#define D3D10_IA_INSTANCE_ID_BIT_COUNT (32)
-
-#define D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT (32)
-
-#define D3D10_IA_PRIMITIVE_ID_BIT_COUNT (32)
-
-#define D3D10_IA_VERTEX_ID_BIT_COUNT (32)
-
-#define D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT (16)
-
-#define D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS (64)
-
-#define D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT (16)
-
-#define D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT (0xffffffff)
-
-#define D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER (0xffffffff)
-
-#define D3D10_MAX_MAXANISOTROPY (16)
-
-#define D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT (32)
-
-#define D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP (17)
-
-#define D3D10_MIN_MAXANISOTROPY (0)
-
-#define D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT (6)
-
-#define D3D10_MIP_LOD_RANGE_BIT_COUNT (8)
-
-#define D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT (0)
-
-#define D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT (13)
-
-#define D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT (15)
-
-#define D3D10_PS_FRONTFACING_DEFAULT_VALUE (0xffffffff)
-
-#define D3D10_PS_FRONTFACING_FALSE_VALUE (0)
-
-#define D3D10_PS_FRONTFACING_TRUE_VALUE (0xffffffff)
-
-#define D3D10_PS_INPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_PS_INPUT_REGISTER_COUNT (32)
-
-#define D3D10_PS_INPUT_REGISTER_READS_PER_INST (2)
-
-#define D3D10_PS_INPUT_REGISTER_READ_PORTS (1)
-
-#define D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS (1)
-
-#define D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT (1)
-
-#define D3D10_PS_OUTPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_PS_OUTPUT_REGISTER_COUNT (8)
-
-#define D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT (4096)
-
-#define D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP (27)
-
-#define D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT (4096)
-
-#define D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT (4096)
-
-#define D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP (32)
-
-#define D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP (32)
-
-#define D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION (8192)
-
-#define D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT (1024)
-
-#define D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT (4096)
-
-#define D3D10_REQ_MAXANISOTROPY (16)
-
-#define D3D10_REQ_MIP_LEVELS (14)
-
-#define D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES (2048)
-
-#define D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT (4096)
-
-#define D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH (8192)
-
-#define D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES (128)
-
-#define D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP (20)
-
-#define D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT (4096)
-
-#define D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION (512)
-
-#define D3D10_REQ_TEXTURE1D_U_DIMENSION (8192)
-
-#define D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION (512)
-
-#define D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION (8192)
-
-#define D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (2048)
-
-#define D3D10_REQ_TEXTURECUBE_DIMENSION (8192)
-
-#define D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL (0)
-
-#define D3D10_SHADER_MAJOR_VERSION (4)
-
-#define D3D10_SHADER_MINOR_VERSION (0)
-
-#define D3D10_SHIFT_INSTRUCTION_PAD_VALUE (0)
-
-#define D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT (5)
-
-#define D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT (8)
-
-#define D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES (2048)
-
-#define D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES (256)
-
-#define D3D10_SO_BUFFER_SLOT_COUNT (4)
-
-#define D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP (0xffffffff)
-
-#define D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER (1)
-
-#define D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT (64)
-
-#define D3D10_STANDARD_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED (64)
-
-#define D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE (4)
-
-#define D3D10_STANDARD_PIXEL_COMPONENT_COUNT (128)
-
-#define D3D10_STANDARD_PIXEL_ELEMENT_COUNT (32)
-
-#define D3D10_STANDARD_VECTOR_SIZE (4)
-
-#define D3D10_STANDARD_VERTEX_ELEMENT_COUNT (16)
-
-#define D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT (64)
-
-#define D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT (8)
-
-#define D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT (6)
-
-#define D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT (18)
-
-#define D3D10_UNBOUND_MEMORY_ACCESS_RESULT (0)
-
-#define D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX (15)
-
-#define D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE (16)
-
-#define D3D10_VIEWPORT_BOUNDS_MAX (16383)
-
-#define D3D10_VIEWPORT_BOUNDS_MIN (-16384)
-
-#define D3D10_VS_INPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_VS_INPUT_REGISTER_COUNT (16)
-
-#define D3D10_VS_INPUT_REGISTER_READS_PER_INST (2)
-
-#define D3D10_VS_INPUT_REGISTER_READ_PORTS (1)
-
-#define D3D10_VS_OUTPUT_REGISTER_COMPONENTS (4)
-
-#define D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT (32)
-
-#define D3D10_VS_OUTPUT_REGISTER_COUNT (16)
-
-#define D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT (10)
-
-#define D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP (25)
-
-#define D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP (25)
-
-#define D3D_MAJOR_VERSION (10)
-
-#define D3D_MINOR_VERSION (0)
-
-#define D3D_SPEC_DATE_DAY (8)
-
-#define D3D_SPEC_DATE_MONTH (8)
-
-#define D3D_SPEC_DATE_YEAR (2006)
-
-#endif
-#define D3D10_APPEND_ALIGNED_ELEMENT (0xffffffff)
-
-#define _FACD3D10 (0x87)
-
-#define _FACD3D10DEBUG (_FACD3D10 + 1)
-
-#define D3D10_FILTER_TYPE_MASK (0x3)
-
-#define D3D10_SDK_VERSION (29)
-
-#define MAKE_D3D10_HRESULT(code)                   MAKE_HRESULT( 1, _FACD3D10, code)
-#define MAKE_D3D10_STATUS(code)                    MAKE_HRESULT( 0, _FACD3D10, code)
-#define D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS  MAKE_D3D10_HRESULT(1)
-#define D3D10_ERROR_FILE_NOT_FOUND                 MAKE_D3D10_HRESULT(2)
-typedef enum D3D10_BLEND {
-    D3D10_BLEND_ZERO = 1,
-    D3D10_BLEND_ONE = 2,
-    D3D10_BLEND_SRC_COLOR = 3,
-    D3D10_BLEND_INV_SRC_COLOR = 4,
-    D3D10_BLEND_SRC_ALPHA = 5,
-    D3D10_BLEND_INV_SRC_ALPHA = 6,
-    D3D10_BLEND_DEST_ALPHA = 7,
-    D3D10_BLEND_INV_DEST_ALPHA = 8,
-    D3D10_BLEND_DEST_COLOR = 9,
-    D3D10_BLEND_INV_DEST_COLOR = 10,
-    D3D10_BLEND_SRC_ALPHA_SAT = 11,
-    D3D10_BLEND_BLEND_FACTOR = 14,
-    D3D10_BLEND_INV_BLEND_FACTOR = 15,
-    D3D10_BLEND_SRC1_COLOR = 16,
-    D3D10_BLEND_INV_SRC1_COLOR = 17,
-    D3D10_BLEND_SRC1_ALPHA = 18,
-    D3D10_BLEND_INV_SRC1_ALPHA = 19
-} D3D10_BLEND;
-typedef enum D3D10_BLEND_OP {
-    D3D10_BLEND_OP_ADD = 1,
-    D3D10_BLEND_OP_SUBTRACT = 2,
-    D3D10_BLEND_OP_REV_SUBTRACT = 3,
-    D3D10_BLEND_OP_MIN = 4,
-    D3D10_BLEND_OP_MAX = 5
-} D3D10_BLEND_OP;
-typedef struct D3D10_BLEND_DESC {
-    BOOL AlphaToCoverageEnable;
-    BOOL BlendEnable[8];
-    D3D10_BLEND SrcBlend;
-    D3D10_BLEND DestBlend;
-    D3D10_BLEND_OP BlendOp;
-    D3D10_BLEND SrcBlendAlpha;
-    D3D10_BLEND DestBlendAlpha;
-    D3D10_BLEND_OP BlendOpAlpha;
-    UINT8 RenderTargetWriteMask[8];
-} D3D10_BLEND_DESC;
-typedef enum D3D10_DEPTH_WRITE_MASK {
-    D3D10_DEPTH_WRITE_MASK_ZERO = 0,
-    D3D10_DEPTH_WRITE_MASK_ALL = 1
-} D3D10_DEPTH_WRITE_MASK;
-typedef enum D3D10_COMPARISON_FUNC {
-    D3D10_COMPARISON_NEVER = 1,
-    D3D10_COMPARISON_LESS = 2,
-    D3D10_COMPARISON_EQUAL = 3,
-    D3D10_COMPARISON_LESS_EQUAL = 4,
-    D3D10_COMPARISON_GREATER = 5,
-    D3D10_COMPARISON_NOT_EQUAL = 6,
-    D3D10_COMPARISON_GREATER_EQUAL = 7,
-    D3D10_COMPARISON_ALWAYS = 8
-} D3D10_COMPARISON_FUNC;
-typedef enum D3D10_STENCIL_OP {
-    D3D10_STENCIL_OP_KEEP = 1,
-    D3D10_STENCIL_OP_ZERO = 2,
-    D3D10_STENCIL_OP_REPLACE = 3,
-    D3D10_STENCIL_OP_INCR_SAT = 4,
-    D3D10_STENCIL_OP_DECR_SAT = 5,
-    D3D10_STENCIL_OP_INVERT = 6,
-    D3D10_STENCIL_OP_INCR = 7,
-    D3D10_STENCIL_OP_DECR = 8
-} D3D10_STENCIL_OP;
-typedef struct D3D10_DEPTH_STENCILOP_DESC {
-    D3D10_STENCIL_OP StencilFailOp;
-    D3D10_STENCIL_OP StencilDepthFailOp;
-    D3D10_STENCIL_OP StencilPassOp;
-    D3D10_COMPARISON_FUNC StencilFunc;
-} D3D10_DEPTH_STENCILOP_DESC;
-typedef struct D3D10_DEPTH_STENCIL_DESC {
-    BOOL DepthEnable;
-    D3D10_DEPTH_WRITE_MASK DepthWriteMask;
-    D3D10_COMPARISON_FUNC DepthFunc;
-    BOOL StencilEnable;
-    UINT8 StencilReadMask;
-    UINT8 StencilWriteMask;
-    D3D10_DEPTH_STENCILOP_DESC FrontFace;
-    D3D10_DEPTH_STENCILOP_DESC BackFace;
-} D3D10_DEPTH_STENCIL_DESC;
-typedef enum D3D10_FILL_MODE {
-    D3D10_FILL_WIREFRAME = 2,
-    D3D10_FILL_SOLID = 3
-} D3D10_FILL_MODE;
-typedef enum D3D10_CULL_MODE {
-    D3D10_CULL_NONE = 1,
-    D3D10_CULL_FRONT = 2,
-    D3D10_CULL_BACK = 3
-} D3D10_CULL_MODE;
-typedef struct D3D10_RASTERIZER_DESC {
-    D3D10_FILL_MODE FillMode;
-    D3D10_CULL_MODE CullMode;
-    BOOL FrontCounterClockwise;
-    INT DepthBias;
-    FLOAT DepthBiasClamp;
-    FLOAT SlopeScaledDepthBias;
-    BOOL DepthClipEnable;
-    BOOL ScissorEnable;
-    BOOL MultisampleEnable;
-    BOOL AntialiasedLineEnable;
-} D3D10_RASTERIZER_DESC;
-typedef enum D3D10_FILTER {
-    D3D10_FILTER_MIN_MAG_MIP_POINT = 0,
-    D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
-    D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
-    D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
-    D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
-    D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
-    D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
-    D3D10_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
-    D3D10_FILTER_ANISOTROPIC = 0x55,
-    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
-    D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
-    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
-    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
-    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
-    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
-    D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
-    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
-    D3D10_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
-    D3D10_FILTER_TEXT_1BIT = 0x80000000
-} D3D10_FILTER;
-typedef enum D3D10_TEXTURE_ADDRESS_MODE {
-    D3D10_TEXTURE_ADDRESS_WRAP = 1,
-    D3D10_TEXTURE_ADDRESS_MIRROR = 2,
-    D3D10_TEXTURE_ADDRESS_CLAMP = 3,
-    D3D10_TEXTURE_ADDRESS_BORDER = 4,
-    D3D10_TEXTURE_ADDRESS_MIRROR_ONCE = 5
-} D3D10_TEXTURE_ADDRESS_MODE;
-typedef struct D3D10_SAMPLER_DESC {
-    D3D10_FILTER Filter;
-    D3D10_TEXTURE_ADDRESS_MODE AddressU;
-    D3D10_TEXTURE_ADDRESS_MODE AddressV;
-    D3D10_TEXTURE_ADDRESS_MODE AddressW;
-    FLOAT MipLODBias;
-    UINT MaxAnisotropy;
-    D3D10_COMPARISON_FUNC ComparisonFunc;
-    FLOAT BorderColor[4];
-    FLOAT MinLOD;
-    FLOAT MaxLOD;
-} D3D10_SAMPLER_DESC;
-typedef enum D3D10_COUNTER {
-    D3D10_COUNTER_GPU_IDLE = 0,
-    D3D10_COUNTER_VERTEX_PROCESSING = 1,
-    D3D10_COUNTER_GEOMETRY_PROCESSING = 2,
-    D3D10_COUNTER_PIXEL_PROCESSING = 3,
-    D3D10_COUNTER_OTHER_GPU_PROCESSING = 4,
-    D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION = 5,
-    D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION = 6,
-    D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION = 7,
-    D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION = 8,
-    D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION = 9,
-    D3D10_COUNTER_VS_MEMORY_LIMITED = 10,
-    D3D10_COUNTER_VS_COMPUTATION_LIMITED = 11,
-    D3D10_COUNTER_GS_MEMORY_LIMITED = 12,
-    D3D10_COUNTER_GS_COMPUTATION_LIMITED = 13,
-    D3D10_COUNTER_PS_MEMORY_LIMITED = 14,
-    D3D10_COUNTER_PS_COMPUTATION_LIMITED = 15,
-    D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE = 16,
-    D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE = 17,
-    D3D10_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000
-} D3D10_COUNTER;
-typedef struct D3D10_COUNTER_DESC {
-    D3D10_COUNTER Counter;
-    UINT MiscFlags;
-} D3D10_COUNTER_DESC;
-typedef enum D3D10_COUNTER_TYPE {
-    D3D10_COUNTER_TYPE_FLOAT32 = 0,
-    D3D10_COUNTER_TYPE_UINT16 = 1,
-    D3D10_COUNTER_TYPE_UINT32 = 2,
-    D3D10_COUNTER_TYPE_UINT64 = 3
-} D3D10_COUNTER_TYPE;
-typedef struct D3D10_COUNTER_INFO {
-    D3D10_COUNTER LastDeviceDependentCounter;
-    UINT NumSimultaneousCounters;
-    UINT8 NumDetectableParallelUnits;
-} D3D10_COUNTER_INFO;
-typedef enum D3D10_RESOURCE_DIMENSION {
-    D3D10_RESOURCE_DIMENSION_UNKNOWN = 0,
-    D3D10_RESOURCE_DIMENSION_BUFFER = 1,
-    D3D10_RESOURCE_DIMENSION_TEXTURE1D = 2,
-    D3D10_RESOURCE_DIMENSION_TEXTURE2D = 3,
-    D3D10_RESOURCE_DIMENSION_TEXTURE3D = 4
-} D3D10_RESOURCE_DIMENSION;
-typedef enum D3D10_USAGE {
-    D3D10_USAGE_DEFAULT = 0,
-    D3D10_USAGE_IMMUTABLE = 1,
-    D3D10_USAGE_DYNAMIC = 2,
-    D3D10_USAGE_STAGING = 3
-} D3D10_USAGE;
-typedef struct D3D10_BUFFER_DESC {
-    UINT ByteWidth;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_BUFFER_DESC;
-typedef enum D3D10_MAP {
-    D3D10_MAP_READ = 1,
-    D3D10_MAP_WRITE = 2,
-    D3D10_MAP_READ_WRITE = 3,
-    D3D10_MAP_WRITE_DISCARD = 4,
-    D3D10_MAP_WRITE_NO_OVERWRITE = 5
-} D3D10_MAP;
-typedef struct D3D10_TEXTURE1D_DESC {
-    UINT Width;
-    UINT MipLevels;
-    UINT ArraySize;
-    DXGI_FORMAT Format;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE1D_DESC;
-typedef struct D3D10_TEXTURE2D_DESC {
-    UINT Width;
-    UINT Height;
-    UINT MipLevels;
-    UINT ArraySize;
-    DXGI_FORMAT Format;
-    DXGI_SAMPLE_DESC SampleDesc;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE2D_DESC;
-typedef struct D3D10_TEXTURE3D_DESC {
-    UINT Width;
-    UINT Height;
-    UINT Depth;
-    UINT MipLevels;
-    DXGI_FORMAT Format;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE3D_DESC;
-typedef enum D3D10_DSV_DIMENSION {
-    D3D10_DSV_DIMENSION_UNKNOWN = 0,
-    D3D10_DSV_DIMENSION_TEXTURE1D = 1,
-    D3D10_DSV_DIMENSION_TEXTURE1DARRAY = 2,
-    D3D10_DSV_DIMENSION_TEXTURE2D = 3,
-    D3D10_DSV_DIMENSION_TEXTURE2DARRAY = 4,
-    D3D10_DSV_DIMENSION_TEXTURE2DMS = 5,
-    D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
-} D3D10_DSV_DIMENSION;
-typedef struct D3D10_TEX1D_DSV {
-    UINT MipSlice;
-} D3D10_TEX1D_DSV;
-typedef struct D3D10_TEX1D_ARRAY_DSV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_DSV;
-typedef struct D3D10_TEX2D_DSV {
-    UINT MipSlice;
-} D3D10_TEX2D_DSV;
-typedef struct D3D10_TEX2D_ARRAY_DSV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_DSV;
-typedef struct D3D10_TEX2DMS_DSV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_DSV;
-typedef struct D3D10_TEX2DMS_ARRAY_DSV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_DSV;
-typedef struct D3D10_DEPTH_STENCIL_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_DSV_DIMENSION ViewDimension;
-    union {
-        D3D10_TEX1D_DSV Texture1D;
-        D3D10_TEX1D_ARRAY_DSV Texture1DArray;
-        D3D10_TEX2D_DSV Texture2D;
-        D3D10_TEX2D_ARRAY_DSV Texture2DArray;
-        D3D10_TEX2DMS_DSV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray;
-    } DUMMYUNIONNAME;
-} D3D10_DEPTH_STENCIL_VIEW_DESC;
-typedef enum D3D10_RTV_DIMENSION {
-    D3D10_RTV_DIMENSION_UNKNOWN = 0,
-    D3D10_RTV_DIMENSION_BUFFER = 1,
-    D3D10_RTV_DIMENSION_TEXTURE1D = 2,
-    D3D10_RTV_DIMENSION_TEXTURE1DARRAY = 3,
-    D3D10_RTV_DIMENSION_TEXTURE2D = 4,
-    D3D10_RTV_DIMENSION_TEXTURE2DARRAY = 5,
-    D3D10_RTV_DIMENSION_TEXTURE2DMS = 6,
-    D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
-    D3D10_RTV_DIMENSION_TEXTURE3D = 8
-} D3D10_RTV_DIMENSION;
-typedef struct D3D10_BUFFER_RTV {
-    UINT ElementOffset;
-    UINT ElementWidth;
-} D3D10_BUFFER_RTV;
-typedef struct D3D10_TEX1D_RTV {
-    UINT MipSlice;
-} D3D10_TEX1D_RTV;
-typedef struct D3D10_TEX1D_ARRAY_RTV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_RTV;
-typedef struct D3D10_TEX2D_RTV {
-    UINT MipSlice;
-} D3D10_TEX2D_RTV;
-typedef struct D3D10_TEX2D_ARRAY_RTV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_RTV;
-typedef struct D3D10_TEX2DMS_RTV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_RTV;
-typedef struct D3D10_TEX2DMS_ARRAY_RTV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_RTV;
-typedef struct D3D10_TEX3D_RTV {
-    UINT MipSlice;
-    UINT FirstWSlice;
-    UINT WSize;
-} D3D10_TEX3D_RTV;
-typedef struct D3D10_RENDER_TARGET_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_RTV_DIMENSION ViewDimension;
-    union {
-        D3D10_BUFFER_RTV Buffer;
-        D3D10_TEX1D_RTV Texture1D;
-        D3D10_TEX1D_ARRAY_RTV Texture1DArray;
-        D3D10_TEX2D_RTV Texture2D;
-        D3D10_TEX2D_ARRAY_RTV Texture2DArray;
-        D3D10_TEX2DMS_RTV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray;
-        D3D10_TEX3D_RTV Texture3D;
-    } DUMMYUNIONNAME;
-} D3D10_RENDER_TARGET_VIEW_DESC;
-typedef enum D3D10_SRV_DIMENSION {
-    D3D10_SRV_DIMENSION_UNKNOWN = 0,
-    D3D10_SRV_DIMENSION_BUFFER = 1,
-    D3D10_SRV_DIMENSION_TEXTURE1D = 2,
-    D3D10_SRV_DIMENSION_TEXTURE1DARRAY = 3,
-    D3D10_SRV_DIMENSION_TEXTURE2D = 4,
-    D3D10_SRV_DIMENSION_TEXTURE2DARRAY = 5,
-    D3D10_SRV_DIMENSION_TEXTURE2DMS = 6,
-    D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
-    D3D10_SRV_DIMENSION_TEXTURE3D = 8,
-    D3D10_SRV_DIMENSION_TEXTURECUBE = 9
-} D3D10_SRV_DIMENSION;
-typedef struct D3D10_BUFFER_SRV {
-    UINT ElementOffset;
-    UINT ElementWidth;
-} D3D10_BUFFER_SRV;
-typedef struct D3D10_TEX1D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX1D_SRV;
-typedef struct D3D10_TEX1D_ARRAY_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_SRV;
-typedef struct D3D10_TEX2D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX2D_SRV;
-typedef struct D3D10_TEX2D_ARRAY_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_SRV;
-typedef struct D3D10_TEX2DMS_SRV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_SRV;
-typedef struct D3D10_TEX2DMS_ARRAY_SRV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_SRV;
-typedef struct D3D10_TEX3D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX3D_SRV;
-typedef struct D3D10_TEXCUBE_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEXCUBE_SRV;
-typedef struct D3D10_SHADER_RESOURCE_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_SRV_DIMENSION ViewDimension;
-    union {
-        D3D10_BUFFER_SRV Buffer;
-        D3D10_TEX1D_SRV Texture1D;
-        D3D10_TEX1D_ARRAY_SRV Texture1DArray;
-        D3D10_TEX2D_SRV Texture2D;
-        D3D10_TEX2D_ARRAY_SRV Texture2DArray;
-        D3D10_TEX2DMS_SRV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
-        D3D10_TEX3D_SRV Texture3D;
-        D3D10_TEXCUBE_SRV TextureCube;
-    } DUMMYUNIONNAME;
-} D3D10_SHADER_RESOURCE_VIEW_DESC;
-typedef struct D3D10_BOX {
-    UINT left;
-    UINT top;
-    UINT front;
-    UINT right;
-    UINT bottom;
-    UINT back;
-} D3D10_BOX;
-typedef struct D3D10_SUBRESOURCE_DATA {
-    const void *pSysMem;
-    UINT SysMemPitch;
-    UINT SysMemSlicePitch;
-} D3D10_SUBRESOURCE_DATA;
-typedef struct D3D10_SO_DECLARATION_ENTRY {
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    BYTE StartComponent;
-    BYTE ComponentCount;
-    BYTE OutputSlot;
-} D3D10_SO_DECLARATION_ENTRY;
-typedef enum D3D10_INPUT_CLASSIFICATION {
-    D3D10_INPUT_PER_VERTEX_DATA = 0,
-    D3D10_INPUT_PER_INSTANCE_DATA = 1
-} D3D10_INPUT_CLASSIFICATION;
-typedef struct D3D10_INPUT_ELEMENT_DESC {
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    DXGI_FORMAT Format;
-    UINT InputSlot;
-    UINT AlignedByteOffset;
-    D3D10_INPUT_CLASSIFICATION InputSlotClass;
-    UINT InstanceDataStepRate;
-} D3D10_INPUT_ELEMENT_DESC;
-typedef enum D3D10_QUERY {
-    D3D10_QUERY_EVENT = 0,
-    D3D10_QUERY_OCCLUSION = 1,
-    D3D10_QUERY_TIMESTAMP = 2,
-    D3D10_QUERY_TIMESTAMP_DISJOINT = 3,
-    D3D10_QUERY_PIPELINE_STATISTICS = 4,
-    D3D10_QUERY_OCCLUSION_PREDICATE = 5,
-    D3D10_QUERY_SO_STATISTICS = 6,
-    D3D10_QUERY_SO_OVERFLOW_PREDICATE = 7
-} D3D10_QUERY;
-typedef struct D3D10_QUERY_DESC {
-    D3D10_QUERY Query;
-    UINT MiscFlags;
-} D3D10_QUERY_DESC;
-typedef enum D3D10_PRIMITIVE_TOPOLOGY {
-    D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
-    D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST = 2,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13
-} D3D10_PRIMITIVE_TOPOLOGY;
-typedef RECT D3D10_RECT;
-typedef struct D3D10_VIEWPORT {
-    INT TopLeftX;
-    INT TopLeftY;
-    UINT Width;
-    UINT Height;
-    FLOAT MinDepth;
-    FLOAT MaxDepth;
-} D3D10_VIEWPORT;
-typedef struct D3D10_MAPPED_TEXTURE2D {
-    void *pData;
-    UINT RowPitch;
-} D3D10_MAPPED_TEXTURE2D;
-typedef struct D3D10_MAPPED_TEXTURE3D {
-    void *pData;
-    UINT RowPitch;
-    UINT DepthPitch;
-} D3D10_MAPPED_TEXTURE3D;
-typedef enum D3D10_BIND_FLAG {
-    D3D10_BIND_VERTEX_BUFFER = 0x1,
-    D3D10_BIND_INDEX_BUFFER = 0x2,
-    D3D10_BIND_CONSTANT_BUFFER = 0x4,
-    D3D10_BIND_SHADER_RESOURCE = 0x8,
-    D3D10_BIND_STREAM_OUTPUT = 0x10,
-    D3D10_BIND_RENDER_TARGET = 0x20,
-    D3D10_BIND_DEPTH_STENCIL = 0x40
-} D3D10_BIND_FLAG;
-typedef enum D3D10_CPU_ACCESS_FLAG {
-    D3D10_CPU_ACCESS_WRITE = 0x10000,
-    D3D10_CPU_ACCESS_READ = 0x20000
-} D3D10_CPU_ACCESS_FLAG;
-typedef enum D3D10_RESOURCE_MISC_FLAG {
-    D3D10_RESOURCE_MISC_GENERATE_MIPS = 0x1,
-    D3D10_RESOURCE_MISC_SHARED = 0x2,
-    D3D10_RESOURCE_MISC_TEXTURECUBE = 0x4
-} D3D10_RESOURCE_MISC_FLAG;
-typedef enum D3D10_MAP_FLAG {
-    D3D10_MAP_FLAG_DO_NOT_WAIT = 0x100000
-} D3D10_MAP_FLAG;
-typedef enum D3D10_CLEAR_FLAG {
-    D3D10_CLEAR_DEPTH = 0x1,
-    D3D10_CLEAR_STENCIL = 0x2
-} D3D10_CLEAR_FLAG;
-typedef enum D3D10_COLOR_WRITE_ENABLE {
-    D3D10_COLOR_WRITE_ENABLE_RED = 0x1,
-    D3D10_COLOR_WRITE_ENABLE_GREEN = 0x2,
-    D3D10_COLOR_WRITE_ENABLE_BLUE = 0x4,
-    D3D10_COLOR_WRITE_ENABLE_ALPHA = 0x8,
-    D3D10_COLOR_WRITE_ENABLE_ALL = ((D3D10_COLOR_WRITE_ENABLE_RED | D3D10_COLOR_WRITE_ENABLE_GREEN) | D3D10_COLOR_WRITE_ENABLE_BLUE) | D3D10_COLOR_WRITE_ENABLE_ALPHA
-} D3D10_COLOR_WRITE_ENABLE;
-typedef enum D3D10_TEXTURECUBE_FACE {
-    D3D10_TEXTURECUBE_FACE_POSITIVE_X = 0,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_X = 1,
-    D3D10_TEXTURECUBE_FACE_POSITIVE_Y = 2,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_Y = 3,
-    D3D10_TEXTURECUBE_FACE_POSITIVE_Z = 4,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_Z = 5
-} D3D10_TEXTURECUBE_FACE;
-typedef enum D3D10_ASYNC_GETDATA_FLAG {
-    D3D10_ASYNC_GETDATA_DONOTFLUSH = 0x1
-} D3D10_ASYNC_GETDATA_FLAG;
-typedef enum D3D10_FILTER_TYPE {
-    D3D10_FILTER_TYPE_POINT = 0,
-    D3D10_FILTER_TYPE_LINEAR = 1
-} D3D10_FILTER_TYPE;
-typedef enum D3D10_QUERY_MISC_FLAG {
-    D3D10_QUERY_MISC_PREDICATEHINT = 0x1
-} D3D10_QUERY_MISC_FLAG;
-typedef struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT {
-    UINT64 Frequency;
-    BOOL Disjoint;
-} D3D10_QUERY_DATA_TIMESTAMP_DISJOINT;
-typedef struct D3D10_QUERY_DATA_PIPELINE_STATISTICS {
-    UINT64 IAVertices;
-    UINT64 IAPrimitives;
-    UINT64 VSInvocations;
-    UINT64 GSInvocations;
-    UINT64 GSPrimitives;
-    UINT64 CInvocations;
-    UINT64 CPrimitives;
-    UINT64 PSInvocations;
-} D3D10_QUERY_DATA_PIPELINE_STATISTICS;
-typedef struct D3D10_QUERY_DATA_SO_STATISTICS {
-    UINT64 NumPrimitivesWritten;
-    UINT64 PrimitivesStorageNeeded;
-} D3D10_QUERY_DATA_SO_STATISTICS;
-typedef enum D3D10_CREATE_DEVICE_FLAG {
-    D3D10_CREATE_DEVICE_SINGLETHREADED = 0x1,
-    D3D10_CREATE_DEVICE_DEBUG = 0x2,
-    D3D10_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
-    D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8
-} D3D10_CREATE_DEVICE_FLAG;
-#ifndef __ID3D10Device_FWD_DEFINED__
-#define __ID3D10Device_FWD_DEFINED__
-typedef interface ID3D10Device ID3D10Device;
-#endif
-
-/*****************************************************************************
- * ID3D10DeviceChild interface
- */
-#ifndef __ID3D10DeviceChild_INTERFACE_DEFINED__
-#define __ID3D10DeviceChild_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10DeviceChild, 0x9b7e4c00, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10DeviceChild : public IUnknown
-{
-    virtual void STDMETHODCALLTYPE GetDevice(
-        ID3D10Device **ppDevice) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
-        REFGUID guid,
-        const IUnknown *pData) = 0;
-
-};
-#else
-typedef struct ID3D10DeviceChildVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10DeviceChild* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10DeviceChild* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10DeviceChild* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10DeviceChild* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10DeviceChild* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10DeviceChild* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10DeviceChild* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10DeviceChildVtbl;
-interface ID3D10DeviceChild {
-    CONST_VTBL ID3D10DeviceChildVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10DeviceChild_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10DeviceChild_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10DeviceChild_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10DeviceChild_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10DeviceChild_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10DeviceChild_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10DeviceChild_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10DeviceChild_GetDevice_Proxy(
-    ID3D10DeviceChild* This,
-    ID3D10Device **ppDevice);
-void __RPC_STUB ID3D10DeviceChild_GetDevice_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10DeviceChild_GetPrivateData_Proxy(
-    ID3D10DeviceChild* This,
-    REFGUID guid,
-    UINT *pDataSize,
-    void *pData);
-void __RPC_STUB ID3D10DeviceChild_GetPrivateData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10DeviceChild_SetPrivateData_Proxy(
-    ID3D10DeviceChild* This,
-    REFGUID guid,
-    UINT DataSize,
-    const void *pData);
-void __RPC_STUB ID3D10DeviceChild_SetPrivateData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10DeviceChild_SetPrivateDataInterface_Proxy(
-    ID3D10DeviceChild* This,
-    REFGUID guid,
-    const IUnknown *pData);
-void __RPC_STUB ID3D10DeviceChild_SetPrivateDataInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10DeviceChild_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Resource interface
- */
-#ifndef __ID3D10Resource_INTERFACE_DEFINED__
-#define __ID3D10Resource_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Resource, 0x9b7e4c01, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Resource : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetType(
-        D3D10_RESOURCE_DIMENSION *rType) = 0;
-
-    virtual void STDMETHODCALLTYPE SetEvictionPriority(
-        UINT EvictionPriority) = 0;
-
-    virtual UINT STDMETHODCALLTYPE GetEvictionPriority(
-        ) = 0;
-
-};
-#else
-typedef struct ID3D10ResourceVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Resource* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Resource* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Resource* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Resource* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Resource* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Resource* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Resource* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Resource* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Resource* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Resource* This);
-
-    END_INTERFACE
-} ID3D10ResourceVtbl;
-interface ID3D10Resource {
-    CONST_VTBL ID3D10ResourceVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Resource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Resource_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Resource_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Resource_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Resource_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Resource_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Resource_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Resource_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Resource_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Resource_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Resource_GetType_Proxy(
-    ID3D10Resource* This,
-    D3D10_RESOURCE_DIMENSION *rType);
-void __RPC_STUB ID3D10Resource_GetType_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Resource_SetEvictionPriority_Proxy(
-    ID3D10Resource* This,
-    UINT EvictionPriority);
-void __RPC_STUB ID3D10Resource_SetEvictionPriority_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-UINT STDMETHODCALLTYPE ID3D10Resource_GetEvictionPriority_Proxy(
-    ID3D10Resource* This);
-void __RPC_STUB ID3D10Resource_GetEvictionPriority_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Resource_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Buffer interface
- */
-#ifndef __ID3D10Buffer_INTERFACE_DEFINED__
-#define __ID3D10Buffer_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Buffer, 0x9b7e4c02, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Buffer : public ID3D10Resource
-{
-    virtual HRESULT STDMETHODCALLTYPE Map(
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        void **ppData) = 0;
-
-    virtual void STDMETHODCALLTYPE Unmap(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_BUFFER_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10BufferVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Buffer* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Buffer* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Buffer* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Buffer* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Buffer* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Buffer* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Buffer* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Buffer* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Buffer* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Buffer* This);
-
-    /*** ID3D10Buffer methods ***/
-    HRESULT (STDMETHODCALLTYPE *Map)(
-        ID3D10Buffer* This,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        void **ppData);
-
-    void (STDMETHODCALLTYPE *Unmap)(
-        ID3D10Buffer* This);
-
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Buffer* This,
-        D3D10_BUFFER_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10BufferVtbl;
-interface ID3D10Buffer {
-    CONST_VTBL ID3D10BufferVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Buffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Buffer_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Buffer_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Buffer_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Buffer_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Buffer_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Buffer_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Buffer_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Buffer_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Buffer_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-/*** ID3D10Buffer methods ***/
-#define ID3D10Buffer_Map(This,MapType,MapFlags,ppData) (This)->lpVtbl->Map(This,MapType,MapFlags,ppData)
-#define ID3D10Buffer_Unmap(This) (This)->lpVtbl->Unmap(This)
-#define ID3D10Buffer_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-HRESULT STDMETHODCALLTYPE ID3D10Buffer_Map_Proxy(
-    ID3D10Buffer* This,
-    D3D10_MAP MapType,
-    UINT MapFlags,
-    void **ppData);
-void __RPC_STUB ID3D10Buffer_Map_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Buffer_Unmap_Proxy(
-    ID3D10Buffer* This);
-void __RPC_STUB ID3D10Buffer_Unmap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Buffer_GetDesc_Proxy(
-    ID3D10Buffer* This,
-    D3D10_BUFFER_DESC *pDesc);
-void __RPC_STUB ID3D10Buffer_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Buffer_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Texture1D interface
- */
-#ifndef __ID3D10Texture1D_INTERFACE_DEFINED__
-#define __ID3D10Texture1D_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Texture1D, 0x9b7e4c03, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Texture1D : public ID3D10Resource
-{
-    virtual HRESULT STDMETHODCALLTYPE Map(
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        void **ppData) = 0;
-
-    virtual void STDMETHODCALLTYPE Unmap(
-        UINT Subresource) = 0;
-
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_TEXTURE1D_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10Texture1DVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Texture1D* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Texture1D* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Texture1D* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Texture1D* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Texture1D* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Texture1D* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Texture1D* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Texture1D* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Texture1D* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Texture1D* This);
-
-    /*** ID3D10Texture1D methods ***/
-    HRESULT (STDMETHODCALLTYPE *Map)(
-        ID3D10Texture1D* This,
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        void **ppData);
-
-    void (STDMETHODCALLTYPE *Unmap)(
-        ID3D10Texture1D* This,
-        UINT Subresource);
-
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Texture1D* This,
-        D3D10_TEXTURE1D_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10Texture1DVtbl;
-interface ID3D10Texture1D {
-    CONST_VTBL ID3D10Texture1DVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Texture1D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Texture1D_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Texture1D_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Texture1D_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Texture1D_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Texture1D_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Texture1D_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Texture1D_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Texture1D_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Texture1D_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-/*** ID3D10Texture1D methods ***/
-#define ID3D10Texture1D_Map(This,Subresource,MapType,MapFlags,ppData) (This)->lpVtbl->Map(This,Subresource,MapType,MapFlags,ppData)
-#define ID3D10Texture1D_Unmap(This,Subresource) (This)->lpVtbl->Unmap(This,Subresource)
-#define ID3D10Texture1D_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-HRESULT STDMETHODCALLTYPE ID3D10Texture1D_Map_Proxy(
-    ID3D10Texture1D* This,
-    UINT Subresource,
-    D3D10_MAP MapType,
-    UINT MapFlags,
-    void **ppData);
-void __RPC_STUB ID3D10Texture1D_Map_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture1D_Unmap_Proxy(
-    ID3D10Texture1D* This,
-    UINT Subresource);
-void __RPC_STUB ID3D10Texture1D_Unmap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture1D_GetDesc_Proxy(
-    ID3D10Texture1D* This,
-    D3D10_TEXTURE1D_DESC *pDesc);
-void __RPC_STUB ID3D10Texture1D_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Texture1D_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Texture2D interface
- */
-#ifndef __ID3D10Texture2D_INTERFACE_DEFINED__
-#define __ID3D10Texture2D_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Texture2D, 0x9b7e4c04, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Texture2D : public ID3D10Resource
-{
-    virtual HRESULT STDMETHODCALLTYPE Map(
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        D3D10_MAPPED_TEXTURE2D *pMappedTex2D) = 0;
-
-    virtual void STDMETHODCALLTYPE Unmap(
-        UINT Subresource) = 0;
-
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_TEXTURE2D_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10Texture2DVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Texture2D* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Texture2D* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Texture2D* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Texture2D* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Texture2D* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Texture2D* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Texture2D* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Texture2D* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Texture2D* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Texture2D* This);
-
-    /*** ID3D10Texture2D methods ***/
-    HRESULT (STDMETHODCALLTYPE *Map)(
-        ID3D10Texture2D* This,
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        D3D10_MAPPED_TEXTURE2D *pMappedTex2D);
-
-    void (STDMETHODCALLTYPE *Unmap)(
-        ID3D10Texture2D* This,
-        UINT Subresource);
-
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Texture2D* This,
-        D3D10_TEXTURE2D_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10Texture2DVtbl;
-interface ID3D10Texture2D {
-    CONST_VTBL ID3D10Texture2DVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Texture2D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Texture2D_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Texture2D_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Texture2D_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Texture2D_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Texture2D_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Texture2D_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Texture2D_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Texture2D_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Texture2D_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-/*** ID3D10Texture2D methods ***/
-#define ID3D10Texture2D_Map(This,Subresource,MapType,MapFlags,pMappedTex2D) (This)->lpVtbl->Map(This,Subresource,MapType,MapFlags,pMappedTex2D)
-#define ID3D10Texture2D_Unmap(This,Subresource) (This)->lpVtbl->Unmap(This,Subresource)
-#define ID3D10Texture2D_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-HRESULT STDMETHODCALLTYPE ID3D10Texture2D_Map_Proxy(
-    ID3D10Texture2D* This,
-    UINT Subresource,
-    D3D10_MAP MapType,
-    UINT MapFlags,
-    D3D10_MAPPED_TEXTURE2D *pMappedTex2D);
-void __RPC_STUB ID3D10Texture2D_Map_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture2D_Unmap_Proxy(
-    ID3D10Texture2D* This,
-    UINT Subresource);
-void __RPC_STUB ID3D10Texture2D_Unmap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture2D_GetDesc_Proxy(
-    ID3D10Texture2D* This,
-    D3D10_TEXTURE2D_DESC *pDesc);
-void __RPC_STUB ID3D10Texture2D_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Texture2D_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Texture3D interface
- */
-#ifndef __ID3D10Texture3D_INTERFACE_DEFINED__
-#define __ID3D10Texture3D_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Texture3D, 0x9b7e4c05, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Texture3D : public ID3D10Resource
-{
-    virtual HRESULT STDMETHODCALLTYPE Map(
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        D3D10_MAPPED_TEXTURE3D *pMappedTex3D) = 0;
-
-    virtual void STDMETHODCALLTYPE Unmap(
-        UINT Subresource) = 0;
-
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_TEXTURE3D_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10Texture3DVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Texture3D* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Texture3D* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Texture3D* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Texture3D* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Texture3D* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Texture3D* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Texture3D* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Resource methods ***/
-    void (STDMETHODCALLTYPE *GetType)(
-        ID3D10Texture3D* This,
-        D3D10_RESOURCE_DIMENSION *rType);
-
-    void (STDMETHODCALLTYPE *SetEvictionPriority)(
-        ID3D10Texture3D* This,
-        UINT EvictionPriority);
-
-    UINT (STDMETHODCALLTYPE *GetEvictionPriority)(
-        ID3D10Texture3D* This);
-
-    /*** ID3D10Texture3D methods ***/
-    HRESULT (STDMETHODCALLTYPE *Map)(
-        ID3D10Texture3D* This,
-        UINT Subresource,
-        D3D10_MAP MapType,
-        UINT MapFlags,
-        D3D10_MAPPED_TEXTURE3D *pMappedTex3D);
-
-    void (STDMETHODCALLTYPE *Unmap)(
-        ID3D10Texture3D* This,
-        UINT Subresource);
-
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Texture3D* This,
-        D3D10_TEXTURE3D_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10Texture3DVtbl;
-interface ID3D10Texture3D {
-    CONST_VTBL ID3D10Texture3DVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Texture3D_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Texture3D_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Texture3D_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Texture3D_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Texture3D_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Texture3D_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Texture3D_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Resource methods ***/
-#define ID3D10Texture3D_GetType(This,rType) (This)->lpVtbl->GetType(This,rType)
-#define ID3D10Texture3D_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
-#define ID3D10Texture3D_GetEvictionPriority(This) (This)->lpVtbl->GetEvictionPriority(This)
-/*** ID3D10Texture3D methods ***/
-#define ID3D10Texture3D_Map(This,Subresource,MapType,MapFlags,pMappedTex3D) (This)->lpVtbl->Map(This,Subresource,MapType,MapFlags,pMappedTex3D)
-#define ID3D10Texture3D_Unmap(This,Subresource) (This)->lpVtbl->Unmap(This,Subresource)
-#define ID3D10Texture3D_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-HRESULT STDMETHODCALLTYPE ID3D10Texture3D_Map_Proxy(
-    ID3D10Texture3D* This,
-    UINT Subresource,
-    D3D10_MAP MapType,
-    UINT MapFlags,
-    D3D10_MAPPED_TEXTURE3D *pMappedTex3D);
-void __RPC_STUB ID3D10Texture3D_Map_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture3D_Unmap_Proxy(
-    ID3D10Texture3D* This,
-    UINT Subresource);
-void __RPC_STUB ID3D10Texture3D_Unmap_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Texture3D_GetDesc_Proxy(
-    ID3D10Texture3D* This,
-    D3D10_TEXTURE3D_DESC *pDesc);
-void __RPC_STUB ID3D10Texture3D_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Texture3D_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10View interface
- */
-#ifndef __ID3D10View_INTERFACE_DEFINED__
-#define __ID3D10View_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10View, 0xc902b03f, 0x60a7, 0x49ba, 0x99,0x36, 0x2a,0x3a,0xb3,0x7a,0x7e,0x33);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10View : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetResource(
-        ID3D10Resource **ppResource) = 0;
-
-};
-#else
-typedef struct ID3D10ViewVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10View* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10View* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10View* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10View* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10View* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10View* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10View* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10View methods ***/
-    void (STDMETHODCALLTYPE *GetResource)(
-        ID3D10View* This,
-        ID3D10Resource **ppResource);
-
-    END_INTERFACE
-} ID3D10ViewVtbl;
-interface ID3D10View {
-    CONST_VTBL ID3D10ViewVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10View_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10View_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10View_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10View_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10View_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10View_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10View_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10View methods ***/
-#define ID3D10View_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10View_GetResource_Proxy(
-    ID3D10View* This,
-    ID3D10Resource **ppResource);
-void __RPC_STUB ID3D10View_GetResource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10View_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10DepthStencilView interface
- */
-#ifndef __ID3D10DepthStencilView_INTERFACE_DEFINED__
-#define __ID3D10DepthStencilView_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10DepthStencilView, 0x9b7e4c09, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10DepthStencilView : public ID3D10View
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10DepthStencilViewVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10DepthStencilView* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10DepthStencilView* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10DepthStencilView* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10DepthStencilView* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10DepthStencilView* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10DepthStencilView* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10DepthStencilView* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10View methods ***/
-    void (STDMETHODCALLTYPE *GetResource)(
-        ID3D10DepthStencilView* This,
-        ID3D10Resource **ppResource);
-
-    /*** ID3D10DepthStencilView methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10DepthStencilView* This,
-        D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10DepthStencilViewVtbl;
-interface ID3D10DepthStencilView {
-    CONST_VTBL ID3D10DepthStencilViewVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10DepthStencilView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10DepthStencilView_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10DepthStencilView_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10DepthStencilView_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10DepthStencilView_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10DepthStencilView_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10DepthStencilView_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10View methods ***/
-#define ID3D10DepthStencilView_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
-/*** ID3D10DepthStencilView methods ***/
-#define ID3D10DepthStencilView_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10DepthStencilView_GetDesc_Proxy(
-    ID3D10DepthStencilView* This,
-    D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
-void __RPC_STUB ID3D10DepthStencilView_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10DepthStencilView_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10RenderTargetView interface
- */
-#ifndef __ID3D10RenderTargetView_INTERFACE_DEFINED__
-#define __ID3D10RenderTargetView_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10RenderTargetView, 0x9b7e4c08, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10RenderTargetView : public ID3D10View
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_RENDER_TARGET_VIEW_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10RenderTargetViewVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10RenderTargetView* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10RenderTargetView* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10RenderTargetView* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10RenderTargetView* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10RenderTargetView* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10RenderTargetView* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10RenderTargetView* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10View methods ***/
-    void (STDMETHODCALLTYPE *GetResource)(
-        ID3D10RenderTargetView* This,
-        ID3D10Resource **ppResource);
-
-    /*** ID3D10RenderTargetView methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10RenderTargetView* This,
-        D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10RenderTargetViewVtbl;
-interface ID3D10RenderTargetView {
-    CONST_VTBL ID3D10RenderTargetViewVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10RenderTargetView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10RenderTargetView_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10RenderTargetView_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10RenderTargetView_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10RenderTargetView_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10RenderTargetView_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10RenderTargetView_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10View methods ***/
-#define ID3D10RenderTargetView_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
-/*** ID3D10RenderTargetView methods ***/
-#define ID3D10RenderTargetView_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10RenderTargetView_GetDesc_Proxy(
-    ID3D10RenderTargetView* This,
-    D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
-void __RPC_STUB ID3D10RenderTargetView_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10RenderTargetView_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10ShaderResourceView interface
- */
-#ifndef __ID3D10ShaderResourceView_INTERFACE_DEFINED__
-#define __ID3D10ShaderResourceView_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10ShaderResourceView, 0x9b7e4c07, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10ShaderResourceView : public ID3D10View
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10ShaderResourceViewVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10ShaderResourceView* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10ShaderResourceView* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10ShaderResourceView* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10ShaderResourceView* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10ShaderResourceView* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10ShaderResourceView* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10ShaderResourceView* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10View methods ***/
-    void (STDMETHODCALLTYPE *GetResource)(
-        ID3D10ShaderResourceView* This,
-        ID3D10Resource **ppResource);
-
-    /*** ID3D10ShaderResourceView methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10ShaderResourceView* This,
-        D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10ShaderResourceViewVtbl;
-interface ID3D10ShaderResourceView {
-    CONST_VTBL ID3D10ShaderResourceViewVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10ShaderResourceView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10ShaderResourceView_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10ShaderResourceView_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10ShaderResourceView_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10ShaderResourceView_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10ShaderResourceView_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10ShaderResourceView_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10View methods ***/
-#define ID3D10ShaderResourceView_GetResource(This,ppResource) (This)->lpVtbl->GetResource(This,ppResource)
-/*** ID3D10ShaderResourceView methods ***/
-#define ID3D10ShaderResourceView_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10ShaderResourceView_GetDesc_Proxy(
-    ID3D10ShaderResourceView* This,
-    D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
-void __RPC_STUB ID3D10ShaderResourceView_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10ShaderResourceView_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10BlendState interface
- */
-#ifndef __ID3D10BlendState_INTERFACE_DEFINED__
-#define __ID3D10BlendState_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10BlendState, 0xedad8d19, 0x8a35, 0x4d6d, 0x85,0x66, 0x2e,0xa2,0x76,0xcd,0xe1,0x61);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10BlendState : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_BLEND_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10BlendStateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10BlendState* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10BlendState* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10BlendState* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10BlendState* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10BlendState* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10BlendState* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10BlendState* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10BlendState methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10BlendState* This,
-        D3D10_BLEND_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10BlendStateVtbl;
-interface ID3D10BlendState {
-    CONST_VTBL ID3D10BlendStateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10BlendState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10BlendState_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10BlendState_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10BlendState_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10BlendState_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10BlendState_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10BlendState_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10BlendState methods ***/
-#define ID3D10BlendState_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10BlendState_GetDesc_Proxy(
-    ID3D10BlendState* This,
-    D3D10_BLEND_DESC *pDesc);
-void __RPC_STUB ID3D10BlendState_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10BlendState_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10DepthStencilState interface
- */
-#ifndef __ID3D10DepthStencilState_INTERFACE_DEFINED__
-#define __ID3D10DepthStencilState_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10DepthStencilState, 0x2b4b1cc8, 0xa4ad, 0x41f8, 0x83,0x22, 0xca,0x86,0xfc,0x3e,0xc6,0x75);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10DepthStencilState : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_DEPTH_STENCIL_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10DepthStencilStateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10DepthStencilState* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10DepthStencilState* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10DepthStencilState* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10DepthStencilState* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10DepthStencilState* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10DepthStencilState* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10DepthStencilState* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10DepthStencilState methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10DepthStencilState* This,
-        D3D10_DEPTH_STENCIL_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10DepthStencilStateVtbl;
-interface ID3D10DepthStencilState {
-    CONST_VTBL ID3D10DepthStencilStateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10DepthStencilState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10DepthStencilState_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10DepthStencilState_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10DepthStencilState_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10DepthStencilState_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10DepthStencilState_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10DepthStencilState_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10DepthStencilState methods ***/
-#define ID3D10DepthStencilState_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10DepthStencilState_GetDesc_Proxy(
-    ID3D10DepthStencilState* This,
-    D3D10_DEPTH_STENCIL_DESC *pDesc);
-void __RPC_STUB ID3D10DepthStencilState_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10DepthStencilState_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10GeometryShader interface
- */
-#ifndef __ID3D10GeometryShader_INTERFACE_DEFINED__
-#define __ID3D10GeometryShader_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10GeometryShader, 0x6316be88, 0x54cd, 0x4040, 0xab,0x44, 0x20,0x46,0x1b,0xc8,0x1f,0x68);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10GeometryShader : public ID3D10DeviceChild
-{
-};
-#else
-typedef struct ID3D10GeometryShaderVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10GeometryShader* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10GeometryShader* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10GeometryShader* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10GeometryShader* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10GeometryShader* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10GeometryShader* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10GeometryShader* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10GeometryShaderVtbl;
-interface ID3D10GeometryShader {
-    CONST_VTBL ID3D10GeometryShaderVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10GeometryShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10GeometryShader_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10GeometryShader_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10GeometryShader_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10GeometryShader_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10GeometryShader_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10GeometryShader_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10GeometryShader_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10InputLayout interface
- */
-#ifndef __ID3D10InputLayout_INTERFACE_DEFINED__
-#define __ID3D10InputLayout_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10InputLayout, 0x9b7e4c0b, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10InputLayout : public ID3D10DeviceChild
-{
-};
-#else
-typedef struct ID3D10InputLayoutVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10InputLayout* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10InputLayout* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10InputLayout* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10InputLayout* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10InputLayout* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10InputLayout* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10InputLayout* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10InputLayoutVtbl;
-interface ID3D10InputLayout {
-    CONST_VTBL ID3D10InputLayoutVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10InputLayout_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10InputLayout_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10InputLayout_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10InputLayout_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10InputLayout_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10InputLayout_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10InputLayout_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10InputLayout_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10PixelShader interface
- */
-#ifndef __ID3D10PixelShader_INTERFACE_DEFINED__
-#define __ID3D10PixelShader_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10PixelShader, 0x4968b601, 0x9d00, 0x4cde, 0x83,0x46, 0x8e,0x7f,0x67,0x58,0x19,0xb6);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10PixelShader : public ID3D10DeviceChild
-{
-};
-#else
-typedef struct ID3D10PixelShaderVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10PixelShader* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10PixelShader* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10PixelShader* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10PixelShader* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10PixelShader* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10PixelShader* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10PixelShader* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10PixelShaderVtbl;
-interface ID3D10PixelShader {
-    CONST_VTBL ID3D10PixelShaderVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10PixelShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10PixelShader_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10PixelShader_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10PixelShader_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10PixelShader_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10PixelShader_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10PixelShader_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10PixelShader_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10RasterizerState interface
- */
-#ifndef __ID3D10RasterizerState_INTERFACE_DEFINED__
-#define __ID3D10RasterizerState_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10RasterizerState, 0xa2a07292, 0x89af, 0x4345, 0xbe,0x2e, 0xc5,0x3d,0x9f,0xbb,0x6e,0x9f);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10RasterizerState : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_RASTERIZER_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10RasterizerStateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10RasterizerState* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10RasterizerState* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10RasterizerState* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10RasterizerState* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10RasterizerState* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10RasterizerState* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10RasterizerState* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10RasterizerState methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10RasterizerState* This,
-        D3D10_RASTERIZER_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10RasterizerStateVtbl;
-interface ID3D10RasterizerState {
-    CONST_VTBL ID3D10RasterizerStateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10RasterizerState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10RasterizerState_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10RasterizerState_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10RasterizerState_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10RasterizerState_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10RasterizerState_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10RasterizerState_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10RasterizerState methods ***/
-#define ID3D10RasterizerState_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10RasterizerState_GetDesc_Proxy(
-    ID3D10RasterizerState* This,
-    D3D10_RASTERIZER_DESC *pDesc);
-void __RPC_STUB ID3D10RasterizerState_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10RasterizerState_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10SamplerState interface
- */
-#ifndef __ID3D10SamplerState_INTERFACE_DEFINED__
-#define __ID3D10SamplerState_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10SamplerState, 0x9b7e4c0c, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10SamplerState : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_SAMPLER_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10SamplerStateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10SamplerState* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10SamplerState* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10SamplerState* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10SamplerState* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10SamplerState* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10SamplerState* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10SamplerState* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10SamplerState methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10SamplerState* This,
-        D3D10_SAMPLER_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10SamplerStateVtbl;
-interface ID3D10SamplerState {
-    CONST_VTBL ID3D10SamplerStateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10SamplerState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10SamplerState_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10SamplerState_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10SamplerState_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10SamplerState_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10SamplerState_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10SamplerState_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10SamplerState methods ***/
-#define ID3D10SamplerState_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10SamplerState_GetDesc_Proxy(
-    ID3D10SamplerState* This,
-    D3D10_SAMPLER_DESC *pDesc);
-void __RPC_STUB ID3D10SamplerState_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10SamplerState_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10VertexShader interface
- */
-#ifndef __ID3D10VertexShader_INTERFACE_DEFINED__
-#define __ID3D10VertexShader_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10VertexShader, 0x9b7e4c0a, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10VertexShader : public ID3D10DeviceChild
-{
-};
-#else
-typedef struct ID3D10VertexShaderVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10VertexShader* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10VertexShader* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10VertexShader* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10VertexShader* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10VertexShader* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10VertexShader* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10VertexShader* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    END_INTERFACE
-} ID3D10VertexShaderVtbl;
-interface ID3D10VertexShader {
-    CONST_VTBL ID3D10VertexShaderVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10VertexShader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10VertexShader_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10VertexShader_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10VertexShader_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10VertexShader_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10VertexShader_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10VertexShader_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10VertexShader_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Asynchronous interface
- */
-#ifndef __ID3D10Asynchronous_INTERFACE_DEFINED__
-#define __ID3D10Asynchronous_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Asynchronous, 0x9b7e4c0d, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Asynchronous : public ID3D10DeviceChild
-{
-    virtual void STDMETHODCALLTYPE Begin(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE End(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE GetData(
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags) = 0;
-
-    virtual UINT STDMETHODCALLTYPE GetDataSize(
-        ) = 0;
-
-};
-#else
-typedef struct ID3D10AsynchronousVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Asynchronous* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Asynchronous* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Asynchronous* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Asynchronous* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Asynchronous* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Asynchronous* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Asynchronous* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Asynchronous methods ***/
-    void (STDMETHODCALLTYPE *Begin)(
-        ID3D10Asynchronous* This);
-
-    void (STDMETHODCALLTYPE *End)(
-        ID3D10Asynchronous* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetData)(
-        ID3D10Asynchronous* This,
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags);
-
-    UINT (STDMETHODCALLTYPE *GetDataSize)(
-        ID3D10Asynchronous* This);
-
-    END_INTERFACE
-} ID3D10AsynchronousVtbl;
-interface ID3D10Asynchronous {
-    CONST_VTBL ID3D10AsynchronousVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Asynchronous_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Asynchronous_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Asynchronous_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Asynchronous_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Asynchronous_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Asynchronous_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Asynchronous_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Asynchronous methods ***/
-#define ID3D10Asynchronous_Begin(This) (This)->lpVtbl->Begin(This)
-#define ID3D10Asynchronous_End(This) (This)->lpVtbl->End(This)
-#define ID3D10Asynchronous_GetData(This,pData,DataSize,GetDataFlags) (This)->lpVtbl->GetData(This,pData,DataSize,GetDataFlags)
-#define ID3D10Asynchronous_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Asynchronous_Begin_Proxy(
-    ID3D10Asynchronous* This);
-void __RPC_STUB ID3D10Asynchronous_Begin_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Asynchronous_End_Proxy(
-    ID3D10Asynchronous* This);
-void __RPC_STUB ID3D10Asynchronous_End_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Asynchronous_GetData_Proxy(
-    ID3D10Asynchronous* This,
-    void *pData,
-    UINT DataSize,
-    UINT GetDataFlags);
-void __RPC_STUB ID3D10Asynchronous_GetData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-UINT STDMETHODCALLTYPE ID3D10Asynchronous_GetDataSize_Proxy(
-    ID3D10Asynchronous* This);
-void __RPC_STUB ID3D10Asynchronous_GetDataSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Asynchronous_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Counter interface
- */
-#ifndef __ID3D10Counter_INTERFACE_DEFINED__
-#define __ID3D10Counter_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Counter, 0x9b7e4c11, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Counter : public ID3D10Asynchronous
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_COUNTER_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10CounterVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Counter* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Counter* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Counter* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Counter* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Counter* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Counter* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Counter* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Asynchronous methods ***/
-    void (STDMETHODCALLTYPE *Begin)(
-        ID3D10Counter* This);
-
-    void (STDMETHODCALLTYPE *End)(
-        ID3D10Counter* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetData)(
-        ID3D10Counter* This,
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags);
-
-    UINT (STDMETHODCALLTYPE *GetDataSize)(
-        ID3D10Counter* This);
-
-    /*** ID3D10Counter methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Counter* This,
-        D3D10_COUNTER_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10CounterVtbl;
-interface ID3D10Counter {
-    CONST_VTBL ID3D10CounterVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Counter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Counter_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Counter_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Counter_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Counter_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Counter_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Counter_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Asynchronous methods ***/
-#define ID3D10Counter_Begin(This) (This)->lpVtbl->Begin(This)
-#define ID3D10Counter_End(This) (This)->lpVtbl->End(This)
-#define ID3D10Counter_GetData(This,pData,DataSize,GetDataFlags) (This)->lpVtbl->GetData(This,pData,DataSize,GetDataFlags)
-#define ID3D10Counter_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
-/*** ID3D10Counter methods ***/
-#define ID3D10Counter_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Counter_GetDesc_Proxy(
-    ID3D10Counter* This,
-    D3D10_COUNTER_DESC *pDesc);
-void __RPC_STUB ID3D10Counter_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Counter_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Query interface
- */
-#ifndef __ID3D10Query_INTERFACE_DEFINED__
-#define __ID3D10Query_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Query, 0x9b7e4c0e, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Query : public ID3D10Asynchronous
-{
-    virtual void STDMETHODCALLTYPE GetDesc(
-        D3D10_QUERY_DESC *pDesc) = 0;
-
-};
-#else
-typedef struct ID3D10QueryVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Query* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Query* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Query* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Query* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Query* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Query* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Query* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Asynchronous methods ***/
-    void (STDMETHODCALLTYPE *Begin)(
-        ID3D10Query* This);
-
-    void (STDMETHODCALLTYPE *End)(
-        ID3D10Query* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetData)(
-        ID3D10Query* This,
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags);
-
-    UINT (STDMETHODCALLTYPE *GetDataSize)(
-        ID3D10Query* This);
-
-    /*** ID3D10Query methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Query* This,
-        D3D10_QUERY_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10QueryVtbl;
-interface ID3D10Query {
-    CONST_VTBL ID3D10QueryVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Query_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Query_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Query_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Query_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Query_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Query_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Query_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Asynchronous methods ***/
-#define ID3D10Query_Begin(This) (This)->lpVtbl->Begin(This)
-#define ID3D10Query_End(This) (This)->lpVtbl->End(This)
-#define ID3D10Query_GetData(This,pData,DataSize,GetDataFlags) (This)->lpVtbl->GetData(This,pData,DataSize,GetDataFlags)
-#define ID3D10Query_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
-/*** ID3D10Query methods ***/
-#define ID3D10Query_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Query_GetDesc_Proxy(
-    ID3D10Query* This,
-    D3D10_QUERY_DESC *pDesc);
-void __RPC_STUB ID3D10Query_GetDesc_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Query_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Predicate interface
- */
-#ifndef __ID3D10Predicate_INTERFACE_DEFINED__
-#define __ID3D10Predicate_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Predicate, 0x9b7e4c10, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Predicate : public ID3D10Query
-{
-};
-#else
-typedef struct ID3D10PredicateVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Predicate* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Predicate* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Predicate* This);
-
-    /*** ID3D10DeviceChild methods ***/
-    void (STDMETHODCALLTYPE *GetDevice)(
-        ID3D10Predicate* This,
-        ID3D10Device **ppDevice);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Predicate* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Predicate* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Predicate* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    /*** ID3D10Asynchronous methods ***/
-    void (STDMETHODCALLTYPE *Begin)(
-        ID3D10Predicate* This);
-
-    void (STDMETHODCALLTYPE *End)(
-        ID3D10Predicate* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetData)(
-        ID3D10Predicate* This,
-        void *pData,
-        UINT DataSize,
-        UINT GetDataFlags);
-
-    UINT (STDMETHODCALLTYPE *GetDataSize)(
-        ID3D10Predicate* This);
-
-    /*** ID3D10Query methods ***/
-    void (STDMETHODCALLTYPE *GetDesc)(
-        ID3D10Predicate* This,
-        D3D10_QUERY_DESC *pDesc);
-
-    END_INTERFACE
-} ID3D10PredicateVtbl;
-interface ID3D10Predicate {
-    CONST_VTBL ID3D10PredicateVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Predicate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Predicate_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Predicate_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10DeviceChild methods ***/
-#define ID3D10Predicate_GetDevice(This,ppDevice) (This)->lpVtbl->GetDevice(This,ppDevice)
-#define ID3D10Predicate_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Predicate_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Predicate_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-/*** ID3D10Asynchronous methods ***/
-#define ID3D10Predicate_Begin(This) (This)->lpVtbl->Begin(This)
-#define ID3D10Predicate_End(This) (This)->lpVtbl->End(This)
-#define ID3D10Predicate_GetData(This,pData,DataSize,GetDataFlags) (This)->lpVtbl->GetData(This,pData,DataSize,GetDataFlags)
-#define ID3D10Predicate_GetDataSize(This) (This)->lpVtbl->GetDataSize(This)
-/*** ID3D10Query methods ***/
-#define ID3D10Predicate_GetDesc(This,pDesc) (This)->lpVtbl->GetDesc(This,pDesc)
-#endif
-
-#endif
-
-
-#endif  /* __ID3D10Predicate_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Device interface
- */
-#ifndef __ID3D10Device_INTERFACE_DEFINED__
-#define __ID3D10Device_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Device, 0x9b7e4c0f, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Device : public IUnknown
-{
-    virtual void STDMETHODCALLTYPE VSSetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE PSSetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE PSSetShader(
-        ID3D10PixelShader *pPixelShader) = 0;
-
-    virtual void STDMETHODCALLTYPE PSSetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE VSSetShader(
-        ID3D10VertexShader *pVertexShader) = 0;
-
-    virtual void STDMETHODCALLTYPE DrawIndexed(
-        UINT IndexCount,
-        UINT StartIndexLocation,
-        INT BaseVertexLocation) = 0;
-
-    virtual void STDMETHODCALLTYPE Draw(
-        UINT VertexCount,
-        UINT StartVertexLocation) = 0;
-
-    virtual void STDMETHODCALLTYPE PSSetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE IASetInputLayout(
-        ID3D10InputLayout *pInputLayout) = 0;
-
-    virtual void STDMETHODCALLTYPE IASetVertexBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppVertexBuffers,
-        const UINT *pStrides,
-        const UINT *pOffsets) = 0;
-
-    virtual void STDMETHODCALLTYPE IASetIndexBuffer(
-        ID3D10Buffer *pIndexBuffer,
-        DXGI_FORMAT Format,
-        UINT Offset) = 0;
-
-    virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
-        UINT IndexCountPerInstance,
-        UINT InstanceCount,
-        UINT StartIndexLocation,
-        INT BaseVertexLocation,
-        UINT StartInstanceLocation) = 0;
-
-    virtual void STDMETHODCALLTYPE DrawInstanced(
-        UINT VertexCountPerInstance,
-        UINT InstanceCount,
-        UINT StartVertexLocation,
-        UINT StartInstanceLocation) = 0;
-
-    virtual void STDMETHODCALLTYPE GSSetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE GSSetShader(
-        ID3D10GeometryShader *pShader) = 0;
-
-    virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
-        D3D10_PRIMITIVE_TOPOLOGY Topology) = 0;
-
-    virtual void STDMETHODCALLTYPE VSSetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE VSSetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE SetPredication(
-        ID3D10Predicate *pPredicate,
-        BOOL PredicateValue) = 0;
-
-    virtual void STDMETHODCALLTYPE GSSetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE GSSetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE OMSetRenderTargets(
-        UINT NumViews,
-        ID3D10RenderTargetView *const *ppRenderTargetViews,
-        ID3D10DepthStencilView *pDepthStencilView) = 0;
-
-    virtual void STDMETHODCALLTYPE OMSetBlendState(
-        ID3D10BlendState *pBlendState,
-        const FLOAT BlendFactor[4],
-        UINT SampleMask) = 0;
-
-    virtual void STDMETHODCALLTYPE OMSetDepthStencilState(
-        ID3D10DepthStencilState *pDepthStencilState,
-        UINT StencilRef) = 0;
-
-    virtual void STDMETHODCALLTYPE SOSetTargets(
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppSOTargets,
-        const UINT *pOffsets) = 0;
-
-    virtual void STDMETHODCALLTYPE DrawAuto(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE RSSetState(
-        ID3D10RasterizerState *pRasterizerState) = 0;
-
-    virtual void STDMETHODCALLTYPE RSSetViewports(
-        UINT NumViewports,
-        const D3D10_VIEWPORT *pViewports) = 0;
-
-    virtual void STDMETHODCALLTYPE RSSetScissorRects(
-        UINT NumRects,
-        const D3D10_RECT *pRects) = 0;
-
-    virtual void STDMETHODCALLTYPE CopySubresourceRegion(
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        UINT DstX,
-        UINT DstY,
-        UINT DstZ,
-        ID3D10Resource *pSrcResource,
-        UINT SrcSubresource,
-        const D3D10_BOX *pSrcBox) = 0;
-
-    virtual void STDMETHODCALLTYPE CopyResource(
-        ID3D10Resource *pDstResource,
-        ID3D10Resource *pSrcResource) = 0;
-
-    virtual void STDMETHODCALLTYPE UpdateSubresource(
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        const D3D10_BOX *pDstBox,
-        const void *pSrcData,
-        UINT SrcRowPitch,
-        UINT SrcDepthPitch) = 0;
-
-    virtual void STDMETHODCALLTYPE ClearRenderTargetView(
-        ID3D10RenderTargetView *pRenderTargetView,
-        const FLOAT ColorRGBA[4]) = 0;
-
-    virtual void STDMETHODCALLTYPE ClearDepthStencilView(
-        ID3D10DepthStencilView *pDepthStencilView,
-        UINT ClearFlags,
-        FLOAT Depth,
-        UINT8 Stencil) = 0;
-
-    virtual void STDMETHODCALLTYPE GenerateMips(
-        ID3D10ShaderResourceView *pShaderResourceView) = 0;
-
-    virtual void STDMETHODCALLTYPE ResolveSubresource(
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        ID3D10Resource *pSrcResource,
-        UINT SrcSubresource,
-        DXGI_FORMAT Format) = 0;
-
-    virtual void STDMETHODCALLTYPE VSGetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE PSGetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE PSGetShader(
-        ID3D10PixelShader **ppPixelShader) = 0;
-
-    virtual void STDMETHODCALLTYPE PSGetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE VSGetShader(
-        ID3D10VertexShader **ppVertexShader) = 0;
-
-    virtual void STDMETHODCALLTYPE PSGetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE IAGetInputLayout(
-        ID3D10InputLayout **ppInputLayout) = 0;
-
-    virtual void STDMETHODCALLTYPE IAGetVertexBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppVertexBuffers,
-        UINT *pStrides,
-        UINT *pOffsets) = 0;
-
-    virtual void STDMETHODCALLTYPE IAGetIndexBuffer(
-        ID3D10Buffer **pIndexBuffer,
-        DXGI_FORMAT *Format,
-        UINT *Offset) = 0;
-
-    virtual void STDMETHODCALLTYPE GSGetConstantBuffers(
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers) = 0;
-
-    virtual void STDMETHODCALLTYPE GSGetShader(
-        ID3D10GeometryShader **ppGeometryShader) = 0;
-
-    virtual void STDMETHODCALLTYPE IAGetPrimitiveTopology(
-        D3D10_PRIMITIVE_TOPOLOGY *pTopology) = 0;
-
-    virtual void STDMETHODCALLTYPE VSGetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE VSGetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE GetPredication(
-        ID3D10Predicate **ppPredicate,
-        BOOL *pPredicateValue) = 0;
-
-    virtual void STDMETHODCALLTYPE GSGetShaderResources(
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews) = 0;
-
-    virtual void STDMETHODCALLTYPE GSGetSamplers(
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers) = 0;
-
-    virtual void STDMETHODCALLTYPE OMGetRenderTargets(
-        UINT NumViews,
-        ID3D10RenderTargetView **ppRenderTargetViews,
-        ID3D10DepthStencilView **ppDepthStencilView) = 0;
-
-    virtual void STDMETHODCALLTYPE OMGetBlendState(
-        ID3D10BlendState **ppBlendState,
-        FLOAT BlendFactor[4],
-        UINT *pSampleMask) = 0;
-
-    virtual void STDMETHODCALLTYPE OMGetDepthStencilState(
-        ID3D10DepthStencilState **ppDepthStencilState,
-        UINT *pStencilRef) = 0;
-
-    virtual void STDMETHODCALLTYPE SOGetTargets(
-        UINT NumBuffers,
-        ID3D10Buffer **ppSOTargets,
-        UINT *pOffsets) = 0;
-
-    virtual void STDMETHODCALLTYPE RSGetState(
-        ID3D10RasterizerState **ppRasterizerState) = 0;
-
-    virtual void STDMETHODCALLTYPE RSGetViewports(
-        UINT *NumViewports,
-        D3D10_VIEWPORT *pViewports) = 0;
-
-    virtual void STDMETHODCALLTYPE RSGetScissorRects(
-        UINT *NumRects,
-        D3D10_RECT *pRects) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetExceptionMode(
-        UINT RaiseFlags) = 0;
-
-    virtual UINT STDMETHODCALLTYPE GetExceptionMode(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
-        REFGUID guid,
-        const IUnknown *pData) = 0;
-
-    virtual void STDMETHODCALLTYPE ClearState(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE Flush(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateBuffer(
-        const D3D10_BUFFER_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Buffer **ppBuffer) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateTexture1D(
-        const D3D10_TEXTURE1D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture1D **ppTexture1D) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateTexture2D(
-        const D3D10_TEXTURE2D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture2D **ppTexture2D) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateTexture3D(
-        const D3D10_TEXTURE3D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture3D **ppTexture3D) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateShaderResourceView(
-        ID3D10Resource *pResource,
-        const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
-        ID3D10ShaderResourceView **ppSRView) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateRenderTargetView(
-        ID3D10Resource *pResource,
-        const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
-        ID3D10RenderTargetView **ppRTView) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilView(
-        ID3D10Resource *pResource,
-        const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
-        ID3D10DepthStencilView **ppDepthStencilView) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateInputLayout(
-        const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
-        UINT NumElements,
-        const void *pShaderBytecodeWithInputSignature,
-        SIZE_T BytecodeLength,
-        ID3D10InputLayout **ppInputLayout) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateVertexShader(
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10VertexShader **ppVertexShader) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateGeometryShader(
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10GeometryShader **ppGeometryShader) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateGeometryShaderWithStreamOutput(
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
-        UINT NumEntries,
-        UINT OutputStreamStride,
-        ID3D10GeometryShader **ppGeometryShader) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10PixelShader **ppPixelShader) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateBlendState(
-        const D3D10_BLEND_DESC *pBlendStateDesc,
-        ID3D10BlendState **ppBlendState) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilState(
-        const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
-        ID3D10DepthStencilState **ppDepthStencilState) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateRasterizerState(
-        const D3D10_RASTERIZER_DESC *pRasterizerDesc,
-        ID3D10RasterizerState **ppRasterizerState) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateSamplerState(
-        const D3D10_SAMPLER_DESC *pSamplerDesc,
-        ID3D10SamplerState **ppSamplerState) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateQuery(
-        const D3D10_QUERY_DESC *pQueryDesc,
-        ID3D10Query **ppQuery) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreatePredicate(
-        const D3D10_QUERY_DESC *pPredicateDesc,
-        ID3D10Predicate **ppPredicate) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CreateCounter(
-        const D3D10_COUNTER_DESC *pCounterDesc,
-        ID3D10Counter **ppCounter) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CheckFormatSupport(
-        DXGI_FORMAT Format,
-        UINT *pFormatSupport) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CheckMultisampleQualityLevels(
-        DXGI_FORMAT Format,
-        UINT SampleCount,
-        UINT *pNumQualityLevels) = 0;
-
-    virtual void STDMETHODCALLTYPE CheckCounterInfo(
-        D3D10_COUNTER_INFO *pCounterInfo) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE CheckCounter(
-        const D3D10_COUNTER_DESC *pDesc,
-        D3D10_COUNTER_TYPE *pType,
-        UINT *pActiveCounters,
-        LPSTR szName,
-        UINT *pNameLength,
-        LPSTR szUnits,
-        UINT *pUnitsLength,
-        LPSTR szDescription,
-        UINT *pDescriptionLength) = 0;
-
-    virtual UINT STDMETHODCALLTYPE GetCreationFlags(
-        ) = 0;
-
-    virtual HRESULT STDMETHODCALLTYPE OpenSharedResource(
-        HANDLE hResource,
-        REFIID ReturnedInterface,
-        void **ppResource) = 0;
-
-    virtual void STDMETHODCALLTYPE SetTextFilterSize(
-        UINT Width,
-        UINT Height) = 0;
-
-    virtual void STDMETHODCALLTYPE GetTextFilterSize(
-        UINT *pWidth,
-        UINT *pHeight) = 0;
-
-};
-#else
-typedef struct ID3D10DeviceVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Device* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Device* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Device* This);
-
-    /*** ID3D10Device methods ***/
-    void (STDMETHODCALLTYPE *VSSetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *PSSetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *PSSetShader)(
-        ID3D10Device* This,
-        ID3D10PixelShader *pPixelShader);
-
-    void (STDMETHODCALLTYPE *PSSetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers);
-
-    void (STDMETHODCALLTYPE *VSSetShader)(
-        ID3D10Device* This,
-        ID3D10VertexShader *pVertexShader);
-
-    void (STDMETHODCALLTYPE *DrawIndexed)(
-        ID3D10Device* This,
-        UINT IndexCount,
-        UINT StartIndexLocation,
-        INT BaseVertexLocation);
-
-    void (STDMETHODCALLTYPE *Draw)(
-        ID3D10Device* This,
-        UINT VertexCount,
-        UINT StartVertexLocation);
-
-    void (STDMETHODCALLTYPE *PSSetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *IASetInputLayout)(
-        ID3D10Device* This,
-        ID3D10InputLayout *pInputLayout);
-
-    void (STDMETHODCALLTYPE *IASetVertexBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppVertexBuffers,
-        const UINT *pStrides,
-        const UINT *pOffsets);
-
-    void (STDMETHODCALLTYPE *IASetIndexBuffer)(
-        ID3D10Device* This,
-        ID3D10Buffer *pIndexBuffer,
-        DXGI_FORMAT Format,
-        UINT Offset);
-
-    void (STDMETHODCALLTYPE *DrawIndexedInstanced)(
-        ID3D10Device* This,
-        UINT IndexCountPerInstance,
-        UINT InstanceCount,
-        UINT StartIndexLocation,
-        INT BaseVertexLocation,
-        UINT StartInstanceLocation);
-
-    void (STDMETHODCALLTYPE *DrawInstanced)(
-        ID3D10Device* This,
-        UINT VertexCountPerInstance,
-        UINT InstanceCount,
-        UINT StartVertexLocation,
-        UINT StartInstanceLocation);
-
-    void (STDMETHODCALLTYPE *GSSetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *GSSetShader)(
-        ID3D10Device* This,
-        ID3D10GeometryShader *pShader);
-
-    void (STDMETHODCALLTYPE *IASetPrimitiveTopology)(
-        ID3D10Device* This,
-        D3D10_PRIMITIVE_TOPOLOGY Topology);
-
-    void (STDMETHODCALLTYPE *VSSetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *VSSetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers);
-
-    void (STDMETHODCALLTYPE *SetPredication)(
-        ID3D10Device* This,
-        ID3D10Predicate *pPredicate,
-        BOOL PredicateValue);
-
-    void (STDMETHODCALLTYPE *GSSetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView *const *ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *GSSetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState *const *ppSamplers);
-
-    void (STDMETHODCALLTYPE *OMSetRenderTargets)(
-        ID3D10Device* This,
-        UINT NumViews,
-        ID3D10RenderTargetView *const *ppRenderTargetViews,
-        ID3D10DepthStencilView *pDepthStencilView);
-
-    void (STDMETHODCALLTYPE *OMSetBlendState)(
-        ID3D10Device* This,
-        ID3D10BlendState *pBlendState,
-        const FLOAT BlendFactor[4],
-        UINT SampleMask);
-
-    void (STDMETHODCALLTYPE *OMSetDepthStencilState)(
-        ID3D10Device* This,
-        ID3D10DepthStencilState *pDepthStencilState,
-        UINT StencilRef);
-
-    void (STDMETHODCALLTYPE *SOSetTargets)(
-        ID3D10Device* This,
-        UINT NumBuffers,
-        ID3D10Buffer *const *ppSOTargets,
-        const UINT *pOffsets);
-
-    void (STDMETHODCALLTYPE *DrawAuto)(
-        ID3D10Device* This);
-
-    void (STDMETHODCALLTYPE *RSSetState)(
-        ID3D10Device* This,
-        ID3D10RasterizerState *pRasterizerState);
-
-    void (STDMETHODCALLTYPE *RSSetViewports)(
-        ID3D10Device* This,
-        UINT NumViewports,
-        const D3D10_VIEWPORT *pViewports);
-
-    void (STDMETHODCALLTYPE *RSSetScissorRects)(
-        ID3D10Device* This,
-        UINT NumRects,
-        const D3D10_RECT *pRects);
-
-    void (STDMETHODCALLTYPE *CopySubresourceRegion)(
-        ID3D10Device* This,
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        UINT DstX,
-        UINT DstY,
-        UINT DstZ,
-        ID3D10Resource *pSrcResource,
-        UINT SrcSubresource,
-        const D3D10_BOX *pSrcBox);
-
-    void (STDMETHODCALLTYPE *CopyResource)(
-        ID3D10Device* This,
-        ID3D10Resource *pDstResource,
-        ID3D10Resource *pSrcResource);
-
-    void (STDMETHODCALLTYPE *UpdateSubresource)(
-        ID3D10Device* This,
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        const D3D10_BOX *pDstBox,
-        const void *pSrcData,
-        UINT SrcRowPitch,
-        UINT SrcDepthPitch);
-
-    void (STDMETHODCALLTYPE *ClearRenderTargetView)(
-        ID3D10Device* This,
-        ID3D10RenderTargetView *pRenderTargetView,
-        const FLOAT ColorRGBA[4]);
-
-    void (STDMETHODCALLTYPE *ClearDepthStencilView)(
-        ID3D10Device* This,
-        ID3D10DepthStencilView *pDepthStencilView,
-        UINT ClearFlags,
-        FLOAT Depth,
-        UINT8 Stencil);
-
-    void (STDMETHODCALLTYPE *GenerateMips)(
-        ID3D10Device* This,
-        ID3D10ShaderResourceView *pShaderResourceView);
-
-    void (STDMETHODCALLTYPE *ResolveSubresource)(
-        ID3D10Device* This,
-        ID3D10Resource *pDstResource,
-        UINT DstSubresource,
-        ID3D10Resource *pSrcResource,
-        UINT SrcSubresource,
-        DXGI_FORMAT Format);
-
-    void (STDMETHODCALLTYPE *VSGetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *PSGetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *PSGetShader)(
-        ID3D10Device* This,
-        ID3D10PixelShader **ppPixelShader);
-
-    void (STDMETHODCALLTYPE *PSGetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers);
-
-    void (STDMETHODCALLTYPE *VSGetShader)(
-        ID3D10Device* This,
-        ID3D10VertexShader **ppVertexShader);
-
-    void (STDMETHODCALLTYPE *PSGetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *IAGetInputLayout)(
-        ID3D10Device* This,
-        ID3D10InputLayout **ppInputLayout);
-
-    void (STDMETHODCALLTYPE *IAGetVertexBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppVertexBuffers,
-        UINT *pStrides,
-        UINT *pOffsets);
-
-    void (STDMETHODCALLTYPE *IAGetIndexBuffer)(
-        ID3D10Device* This,
-        ID3D10Buffer **pIndexBuffer,
-        DXGI_FORMAT *Format,
-        UINT *Offset);
-
-    void (STDMETHODCALLTYPE *GSGetConstantBuffers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumBuffers,
-        ID3D10Buffer **ppConstantBuffers);
-
-    void (STDMETHODCALLTYPE *GSGetShader)(
-        ID3D10Device* This,
-        ID3D10GeometryShader **ppGeometryShader);
-
-    void (STDMETHODCALLTYPE *IAGetPrimitiveTopology)(
-        ID3D10Device* This,
-        D3D10_PRIMITIVE_TOPOLOGY *pTopology);
-
-    void (STDMETHODCALLTYPE *VSGetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *VSGetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers);
-
-    void (STDMETHODCALLTYPE *GetPredication)(
-        ID3D10Device* This,
-        ID3D10Predicate **ppPredicate,
-        BOOL *pPredicateValue);
-
-    void (STDMETHODCALLTYPE *GSGetShaderResources)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumViews,
-        ID3D10ShaderResourceView **ppShaderResourceViews);
-
-    void (STDMETHODCALLTYPE *GSGetSamplers)(
-        ID3D10Device* This,
-        UINT StartSlot,
-        UINT NumSamplers,
-        ID3D10SamplerState **ppSamplers);
-
-    void (STDMETHODCALLTYPE *OMGetRenderTargets)(
-        ID3D10Device* This,
-        UINT NumViews,
-        ID3D10RenderTargetView **ppRenderTargetViews,
-        ID3D10DepthStencilView **ppDepthStencilView);
-
-    void (STDMETHODCALLTYPE *OMGetBlendState)(
-        ID3D10Device* This,
-        ID3D10BlendState **ppBlendState,
-        FLOAT BlendFactor[4],
-        UINT *pSampleMask);
-
-    void (STDMETHODCALLTYPE *OMGetDepthStencilState)(
-        ID3D10Device* This,
-        ID3D10DepthStencilState **ppDepthStencilState,
-        UINT *pStencilRef);
-
-    void (STDMETHODCALLTYPE *SOGetTargets)(
-        ID3D10Device* This,
-        UINT NumBuffers,
-        ID3D10Buffer **ppSOTargets,
-        UINT *pOffsets);
-
-    void (STDMETHODCALLTYPE *RSGetState)(
-        ID3D10Device* This,
-        ID3D10RasterizerState **ppRasterizerState);
-
-    void (STDMETHODCALLTYPE *RSGetViewports)(
-        ID3D10Device* This,
-        UINT *NumViewports,
-        D3D10_VIEWPORT *pViewports);
-
-    void (STDMETHODCALLTYPE *RSGetScissorRects)(
-        ID3D10Device* This,
-        UINT *NumRects,
-        D3D10_RECT *pRects);
-
-    HRESULT (STDMETHODCALLTYPE *GetDeviceRemovedReason)(
-        ID3D10Device* This);
-
-    HRESULT (STDMETHODCALLTYPE *SetExceptionMode)(
-        ID3D10Device* This,
-        UINT RaiseFlags);
-
-    UINT (STDMETHODCALLTYPE *GetExceptionMode)(
-        ID3D10Device* This);
-
-    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
-        ID3D10Device* This,
-        REFGUID guid,
-        UINT *pDataSize,
-        void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
-        ID3D10Device* This,
-        REFGUID guid,
-        UINT DataSize,
-        const void *pData);
-
-    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
-        ID3D10Device* This,
-        REFGUID guid,
-        const IUnknown *pData);
-
-    void (STDMETHODCALLTYPE *ClearState)(
-        ID3D10Device* This);
-
-    void (STDMETHODCALLTYPE *Flush)(
-        ID3D10Device* This);
-
-    HRESULT (STDMETHODCALLTYPE *CreateBuffer)(
-        ID3D10Device* This,
-        const D3D10_BUFFER_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Buffer **ppBuffer);
-
-    HRESULT (STDMETHODCALLTYPE *CreateTexture1D)(
-        ID3D10Device* This,
-        const D3D10_TEXTURE1D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture1D **ppTexture1D);
-
-    HRESULT (STDMETHODCALLTYPE *CreateTexture2D)(
-        ID3D10Device* This,
-        const D3D10_TEXTURE2D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture2D **ppTexture2D);
-
-    HRESULT (STDMETHODCALLTYPE *CreateTexture3D)(
-        ID3D10Device* This,
-        const D3D10_TEXTURE3D_DESC *pDesc,
-        const D3D10_SUBRESOURCE_DATA *pInitialData,
-        ID3D10Texture3D **ppTexture3D);
-
-    HRESULT (STDMETHODCALLTYPE *CreateShaderResourceView)(
-        ID3D10Device* This,
-        ID3D10Resource *pResource,
-        const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
-        ID3D10ShaderResourceView **ppSRView);
-
-    HRESULT (STDMETHODCALLTYPE *CreateRenderTargetView)(
-        ID3D10Device* This,
-        ID3D10Resource *pResource,
-        const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
-        ID3D10RenderTargetView **ppRTView);
-
-    HRESULT (STDMETHODCALLTYPE *CreateDepthStencilView)(
-        ID3D10Device* This,
-        ID3D10Resource *pResource,
-        const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
-        ID3D10DepthStencilView **ppDepthStencilView);
-
-    HRESULT (STDMETHODCALLTYPE *CreateInputLayout)(
-        ID3D10Device* This,
-        const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
-        UINT NumElements,
-        const void *pShaderBytecodeWithInputSignature,
-        SIZE_T BytecodeLength,
-        ID3D10InputLayout **ppInputLayout);
-
-    HRESULT (STDMETHODCALLTYPE *CreateVertexShader)(
-        ID3D10Device* This,
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10VertexShader **ppVertexShader);
-
-    HRESULT (STDMETHODCALLTYPE *CreateGeometryShader)(
-        ID3D10Device* This,
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10GeometryShader **ppGeometryShader);
-
-    HRESULT (STDMETHODCALLTYPE *CreateGeometryShaderWithStreamOutput)(
-        ID3D10Device* This,
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
-        UINT NumEntries,
-        UINT OutputStreamStride,
-        ID3D10GeometryShader **ppGeometryShader);
-
-    HRESULT (STDMETHODCALLTYPE *CreatePixelShader)(
-        ID3D10Device* This,
-        const void *pShaderBytecode,
-        SIZE_T BytecodeLength,
-        ID3D10PixelShader **ppPixelShader);
-
-    HRESULT (STDMETHODCALLTYPE *CreateBlendState)(
-        ID3D10Device* This,
-        const D3D10_BLEND_DESC *pBlendStateDesc,
-        ID3D10BlendState **ppBlendState);
-
-    HRESULT (STDMETHODCALLTYPE *CreateDepthStencilState)(
-        ID3D10Device* This,
-        const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
-        ID3D10DepthStencilState **ppDepthStencilState);
-
-    HRESULT (STDMETHODCALLTYPE *CreateRasterizerState)(
-        ID3D10Device* This,
-        const D3D10_RASTERIZER_DESC *pRasterizerDesc,
-        ID3D10RasterizerState **ppRasterizerState);
-
-    HRESULT (STDMETHODCALLTYPE *CreateSamplerState)(
-        ID3D10Device* This,
-        const D3D10_SAMPLER_DESC *pSamplerDesc,
-        ID3D10SamplerState **ppSamplerState);
-
-    HRESULT (STDMETHODCALLTYPE *CreateQuery)(
-        ID3D10Device* This,
-        const D3D10_QUERY_DESC *pQueryDesc,
-        ID3D10Query **ppQuery);
-
-    HRESULT (STDMETHODCALLTYPE *CreatePredicate)(
-        ID3D10Device* This,
-        const D3D10_QUERY_DESC *pPredicateDesc,
-        ID3D10Predicate **ppPredicate);
-
-    HRESULT (STDMETHODCALLTYPE *CreateCounter)(
-        ID3D10Device* This,
-        const D3D10_COUNTER_DESC *pCounterDesc,
-        ID3D10Counter **ppCounter);
-
-    HRESULT (STDMETHODCALLTYPE *CheckFormatSupport)(
-        ID3D10Device* This,
-        DXGI_FORMAT Format,
-        UINT *pFormatSupport);
-
-    HRESULT (STDMETHODCALLTYPE *CheckMultisampleQualityLevels)(
-        ID3D10Device* This,
-        DXGI_FORMAT Format,
-        UINT SampleCount,
-        UINT *pNumQualityLevels);
-
-    void (STDMETHODCALLTYPE *CheckCounterInfo)(
-        ID3D10Device* This,
-        D3D10_COUNTER_INFO *pCounterInfo);
-
-    HRESULT (STDMETHODCALLTYPE *CheckCounter)(
-        ID3D10Device* This,
-        const D3D10_COUNTER_DESC *pDesc,
-        D3D10_COUNTER_TYPE *pType,
-        UINT *pActiveCounters,
-        LPSTR szName,
-        UINT *pNameLength,
-        LPSTR szUnits,
-        UINT *pUnitsLength,
-        LPSTR szDescription,
-        UINT *pDescriptionLength);
-
-    UINT (STDMETHODCALLTYPE *GetCreationFlags)(
-        ID3D10Device* This);
-
-    HRESULT (STDMETHODCALLTYPE *OpenSharedResource)(
-        ID3D10Device* This,
-        HANDLE hResource,
-        REFIID ReturnedInterface,
-        void **ppResource);
-
-    void (STDMETHODCALLTYPE *SetTextFilterSize)(
-        ID3D10Device* This,
-        UINT Width,
-        UINT Height);
-
-    void (STDMETHODCALLTYPE *GetTextFilterSize)(
-        ID3D10Device* This,
-        UINT *pWidth,
-        UINT *pHeight);
-
-    END_INTERFACE
-} ID3D10DeviceVtbl;
-interface ID3D10Device {
-    CONST_VTBL ID3D10DeviceVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Device_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Device_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Device_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10Device methods ***/
-#define ID3D10Device_VSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->VSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_PSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->PSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_PSSetShader(This,pPixelShader) (This)->lpVtbl->PSSetShader(This,pPixelShader)
-#define ID3D10Device_PSSetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->PSSetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_VSSetShader(This,pVertexShader) (This)->lpVtbl->VSSetShader(This,pVertexShader)
-#define ID3D10Device_DrawIndexed(This,IndexCount,StartIndexLocation,BaseVertexLocation) (This)->lpVtbl->DrawIndexed(This,IndexCount,StartIndexLocation,BaseVertexLocation)
-#define ID3D10Device_Draw(This,VertexCount,StartVertexLocation) (This)->lpVtbl->Draw(This,VertexCount,StartVertexLocation)
-#define ID3D10Device_PSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->PSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_IASetInputLayout(This,pInputLayout) (This)->lpVtbl->IASetInputLayout(This,pInputLayout)
-#define ID3D10Device_IASetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets) (This)->lpVtbl->IASetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets)
-#define ID3D10Device_IASetIndexBuffer(This,pIndexBuffer,Format,Offset) (This)->lpVtbl->IASetIndexBuffer(This,pIndexBuffer,Format,Offset)
-#define ID3D10Device_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) (This)->lpVtbl->DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation)
-#define ID3D10Device_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) (This)->lpVtbl->DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation)
-#define ID3D10Device_GSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->GSSetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_GSSetShader(This,pShader) (This)->lpVtbl->GSSetShader(This,pShader)
-#define ID3D10Device_IASetPrimitiveTopology(This,Topology) (This)->lpVtbl->IASetPrimitiveTopology(This,Topology)
-#define ID3D10Device_VSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->VSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_VSSetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->VSSetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_SetPredication(This,pPredicate,PredicateValue) (This)->lpVtbl->SetPredication(This,pPredicate,PredicateValue)
-#define ID3D10Device_GSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->GSSetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_GSSetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->GSSetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_OMSetRenderTargets(This,NumViews,ppRenderTargetViews,pDepthStencilView) (This)->lpVtbl->OMSetRenderTargets(This,NumViews,ppRenderTargetViews,pDepthStencilView)
-#define ID3D10Device_OMSetBlendState(This,pBlendState,BlendFactor,SampleMask) (This)->lpVtbl->OMSetBlendState(This,pBlendState,BlendFactor,SampleMask)
-#define ID3D10Device_OMSetDepthStencilState(This,pDepthStencilState,StencilRef) (This)->lpVtbl->OMSetDepthStencilState(This,pDepthStencilState,StencilRef)
-#define ID3D10Device_SOSetTargets(This,NumBuffers,ppSOTargets,pOffsets) (This)->lpVtbl->SOSetTargets(This,NumBuffers,ppSOTargets,pOffsets)
-#define ID3D10Device_DrawAuto(This) (This)->lpVtbl->DrawAuto(This)
-#define ID3D10Device_RSSetState(This,pRasterizerState) (This)->lpVtbl->RSSetState(This,pRasterizerState)
-#define ID3D10Device_RSSetViewports(This,NumViewports,pViewports) (This)->lpVtbl->RSSetViewports(This,NumViewports,pViewports)
-#define ID3D10Device_RSSetScissorRects(This,NumRects,pRects) (This)->lpVtbl->RSSetScissorRects(This,NumRects,pRects)
-#define ID3D10Device_CopySubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) (This)->lpVtbl->CopySubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox)
-#define ID3D10Device_CopyResource(This,pDstResource,pSrcResource) (This)->lpVtbl->CopyResource(This,pDstResource,pSrcResource)
-#define ID3D10Device_UpdateSubresource(This,pDstResource,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) (This)->lpVtbl->UpdateSubresource(This,pDstResource,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch)
-#define ID3D10Device_ClearRenderTargetView(This,pRenderTargetView,ColorRGBA) (This)->lpVtbl->ClearRenderTargetView(This,pRenderTargetView,ColorRGBA)
-#define ID3D10Device_ClearDepthStencilView(This,pDepthStencilView,ClearFlags,Depth,Stencil) (This)->lpVtbl->ClearDepthStencilView(This,pDepthStencilView,ClearFlags,Depth,Stencil)
-#define ID3D10Device_GenerateMips(This,pShaderResourceView) (This)->lpVtbl->GenerateMips(This,pShaderResourceView)
-#define ID3D10Device_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) (This)->lpVtbl->ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format)
-#define ID3D10Device_VSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->VSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_PSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->PSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_PSGetShader(This,ppPixelShader) (This)->lpVtbl->PSGetShader(This,ppPixelShader)
-#define ID3D10Device_PSGetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->PSGetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_VSGetShader(This,ppVertexShader) (This)->lpVtbl->VSGetShader(This,ppVertexShader)
-#define ID3D10Device_PSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->PSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_IAGetInputLayout(This,ppInputLayout) (This)->lpVtbl->IAGetInputLayout(This,ppInputLayout)
-#define ID3D10Device_IAGetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets) (This)->lpVtbl->IAGetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets)
-#define ID3D10Device_IAGetIndexBuffer(This,pIndexBuffer,Format,Offset) (This)->lpVtbl->IAGetIndexBuffer(This,pIndexBuffer,Format,Offset)
-#define ID3D10Device_GSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers) (This)->lpVtbl->GSGetConstantBuffers(This,StartSlot,NumBuffers,ppConstantBuffers)
-#define ID3D10Device_GSGetShader(This,ppGeometryShader) (This)->lpVtbl->GSGetShader(This,ppGeometryShader)
-#define ID3D10Device_IAGetPrimitiveTopology(This,pTopology) (This)->lpVtbl->IAGetPrimitiveTopology(This,pTopology)
-#define ID3D10Device_VSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->VSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_VSGetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->VSGetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_GetPredication(This,ppPredicate,pPredicateValue) (This)->lpVtbl->GetPredication(This,ppPredicate,pPredicateValue)
-#define ID3D10Device_GSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews) (This)->lpVtbl->GSGetShaderResources(This,StartSlot,NumViews,ppShaderResourceViews)
-#define ID3D10Device_GSGetSamplers(This,StartSlot,NumSamplers,ppSamplers) (This)->lpVtbl->GSGetSamplers(This,StartSlot,NumSamplers,ppSamplers)
-#define ID3D10Device_OMGetRenderTargets(This,NumViews,ppRenderTargetViews,ppDepthStencilView) (This)->lpVtbl->OMGetRenderTargets(This,NumViews,ppRenderTargetViews,ppDepthStencilView)
-#define ID3D10Device_OMGetBlendState(This,ppBlendState,BlendFactor,pSampleMask) (This)->lpVtbl->OMGetBlendState(This,ppBlendState,BlendFactor,pSampleMask)
-#define ID3D10Device_OMGetDepthStencilState(This,ppDepthStencilState,pStencilRef) (This)->lpVtbl->OMGetDepthStencilState(This,ppDepthStencilState,pStencilRef)
-#define ID3D10Device_SOGetTargets(This,NumBuffers,ppSOTargets,pOffsets) (This)->lpVtbl->SOGetTargets(This,NumBuffers,ppSOTargets,pOffsets)
-#define ID3D10Device_RSGetState(This,ppRasterizerState) (This)->lpVtbl->RSGetState(This,ppRasterizerState)
-#define ID3D10Device_RSGetViewports(This,NumViewports,pViewports) (This)->lpVtbl->RSGetViewports(This,NumViewports,pViewports)
-#define ID3D10Device_RSGetScissorRects(This,NumRects,pRects) (This)->lpVtbl->RSGetScissorRects(This,NumRects,pRects)
-#define ID3D10Device_GetDeviceRemovedReason(This) (This)->lpVtbl->GetDeviceRemovedReason(This)
-#define ID3D10Device_SetExceptionMode(This,RaiseFlags) (This)->lpVtbl->SetExceptionMode(This,RaiseFlags)
-#define ID3D10Device_GetExceptionMode(This) (This)->lpVtbl->GetExceptionMode(This)
-#define ID3D10Device_GetPrivateData(This,guid,pDataSize,pData) (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
-#define ID3D10Device_SetPrivateData(This,guid,DataSize,pData) (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
-#define ID3D10Device_SetPrivateDataInterface(This,guid,pData) (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
-#define ID3D10Device_ClearState(This) (This)->lpVtbl->ClearState(This)
-#define ID3D10Device_Flush(This) (This)->lpVtbl->Flush(This)
-#define ID3D10Device_CreateBuffer(This,pDesc,pInitialData,ppBuffer) (This)->lpVtbl->CreateBuffer(This,pDesc,pInitialData,ppBuffer)
-#define ID3D10Device_CreateTexture1D(This,pDesc,pInitialData,ppTexture1D) (This)->lpVtbl->CreateTexture1D(This,pDesc,pInitialData,ppTexture1D)
-#define ID3D10Device_CreateTexture2D(This,pDesc,pInitialData,ppTexture2D) (This)->lpVtbl->CreateTexture2D(This,pDesc,pInitialData,ppTexture2D)
-#define ID3D10Device_CreateTexture3D(This,pDesc,pInitialData,ppTexture3D) (This)->lpVtbl->CreateTexture3D(This,pDesc,pInitialData,ppTexture3D)
-#define ID3D10Device_CreateShaderResourceView(This,pResource,pDesc,ppSRView) (This)->lpVtbl->CreateShaderResourceView(This,pResource,pDesc,ppSRView)
-#define ID3D10Device_CreateRenderTargetView(This,pResource,pDesc,ppRTView) (This)->lpVtbl->CreateRenderTargetView(This,pResource,pDesc,ppRTView)
-#define ID3D10Device_CreateDepthStencilView(This,pResource,pDesc,ppDepthStencilView) (This)->lpVtbl->CreateDepthStencilView(This,pResource,pDesc,ppDepthStencilView)
-#define ID3D10Device_CreateInputLayout(This,pInputElementDescs,NumElements,pShaderBytecodeWithInputSignature,BytecodeLength,ppInputLayout) (This)->lpVtbl->CreateInputLayout(This,pInputElementDescs,NumElements,pShaderBytecodeWithInputSignature,BytecodeLength,ppInputLayout)
-#define ID3D10Device_CreateVertexShader(This,pShaderBytecode,BytecodeLength,ppVertexShader) (This)->lpVtbl->CreateVertexShader(This,pShaderBytecode,BytecodeLength,ppVertexShader)
-#define ID3D10Device_CreateGeometryShader(This,pShaderBytecode,BytecodeLength,ppGeometryShader) (This)->lpVtbl->CreateGeometryShader(This,pShaderBytecode,BytecodeLength,ppGeometryShader)
-#define ID3D10Device_CreateGeometryShaderWithStreamOutput(This,pShaderBytecode,BytecodeLength,pSODeclaration,NumEntries,OutputStreamStride,ppGeometryShader) (This)->lpVtbl->CreateGeometryShaderWithStreamOutput(This,pShaderBytecode,BytecodeLength,pSODeclaration,NumEntries,OutputStreamStride,ppGeometryShader)
-#define ID3D10Device_CreatePixelShader(This,pShaderBytecode,BytecodeLength,ppPixelShader) (This)->lpVtbl->CreatePixelShader(This,pShaderBytecode,BytecodeLength,ppPixelShader)
-#define ID3D10Device_CreateBlendState(This,pBlendStateDesc,ppBlendState) (This)->lpVtbl->CreateBlendState(This,pBlendStateDesc,ppBlendState)
-#define ID3D10Device_CreateDepthStencilState(This,pDepthStencilDesc,ppDepthStencilState) (This)->lpVtbl->CreateDepthStencilState(This,pDepthStencilDesc,ppDepthStencilState)
-#define ID3D10Device_CreateRasterizerState(This,pRasterizerDesc,ppRasterizerState) (This)->lpVtbl->CreateRasterizerState(This,pRasterizerDesc,ppRasterizerState)
-#define ID3D10Device_CreateSamplerState(This,pSamplerDesc,ppSamplerState) (This)->lpVtbl->CreateSamplerState(This,pSamplerDesc,ppSamplerState)
-#define ID3D10Device_CreateQuery(This,pQueryDesc,ppQuery) (This)->lpVtbl->CreateQuery(This,pQueryDesc,ppQuery)
-#define ID3D10Device_CreatePredicate(This,pPredicateDesc,ppPredicate) (This)->lpVtbl->CreatePredicate(This,pPredicateDesc,ppPredicate)
-#define ID3D10Device_CreateCounter(This,pCounterDesc,ppCounter) (This)->lpVtbl->CreateCounter(This,pCounterDesc,ppCounter)
-#define ID3D10Device_CheckFormatSupport(This,Format,pFormatSupport) (This)->lpVtbl->CheckFormatSupport(This,Format,pFormatSupport)
-#define ID3D10Device_CheckMultisampleQualityLevels(This,Format,SampleCount,pNumQualityLevels) (This)->lpVtbl->CheckMultisampleQualityLevels(This,Format,SampleCount,pNumQualityLevels)
-#define ID3D10Device_CheckCounterInfo(This,pCounterInfo) (This)->lpVtbl->CheckCounterInfo(This,pCounterInfo)
-#define ID3D10Device_CheckCounter(This,pDesc,pType,pActiveCounters,szName,pNameLength,szUnits,pUnitsLength,szDescription,pDescriptionLength) (This)->lpVtbl->CheckCounter(This,pDesc,pType,pActiveCounters,szName,pNameLength,szUnits,pUnitsLength,szDescription,pDescriptionLength)
-#define ID3D10Device_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
-#define ID3D10Device_OpenSharedResource(This,hResource,ReturnedInterface,ppResource) (This)->lpVtbl->OpenSharedResource(This,hResource,ReturnedInterface,ppResource)
-#define ID3D10Device_SetTextFilterSize(This,Width,Height) (This)->lpVtbl->SetTextFilterSize(This,Width,Height)
-#define ID3D10Device_GetTextFilterSize(This,pWidth,pHeight) (This)->lpVtbl->GetTextFilterSize(This,pWidth,pHeight)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Device_VSSetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppConstantBuffers);
-void __RPC_STUB ID3D10Device_VSSetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSSetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView *const *ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_PSSetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSSetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10PixelShader *pPixelShader);
-void __RPC_STUB ID3D10Device_PSSetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSSetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState *const *ppSamplers);
-void __RPC_STUB ID3D10Device_PSSetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSSetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10VertexShader *pVertexShader);
-void __RPC_STUB ID3D10Device_VSSetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_DrawIndexed_Proxy(
-    ID3D10Device* This,
-    UINT IndexCount,
-    UINT StartIndexLocation,
-    INT BaseVertexLocation);
-void __RPC_STUB ID3D10Device_DrawIndexed_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_Draw_Proxy(
-    ID3D10Device* This,
-    UINT VertexCount,
-    UINT StartVertexLocation);
-void __RPC_STUB ID3D10Device_Draw_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSSetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppConstantBuffers);
-void __RPC_STUB ID3D10Device_PSSetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IASetInputLayout_Proxy(
-    ID3D10Device* This,
-    ID3D10InputLayout *pInputLayout);
-void __RPC_STUB ID3D10Device_IASetInputLayout_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IASetVertexBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppVertexBuffers,
-    const UINT *pStrides,
-    const UINT *pOffsets);
-void __RPC_STUB ID3D10Device_IASetVertexBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IASetIndexBuffer_Proxy(
-    ID3D10Device* This,
-    ID3D10Buffer *pIndexBuffer,
-    DXGI_FORMAT Format,
-    UINT Offset);
-void __RPC_STUB ID3D10Device_IASetIndexBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_DrawIndexedInstanced_Proxy(
-    ID3D10Device* This,
-    UINT IndexCountPerInstance,
-    UINT InstanceCount,
-    UINT StartIndexLocation,
-    INT BaseVertexLocation,
-    UINT StartInstanceLocation);
-void __RPC_STUB ID3D10Device_DrawIndexedInstanced_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_DrawInstanced_Proxy(
-    ID3D10Device* This,
-    UINT VertexCountPerInstance,
-    UINT InstanceCount,
-    UINT StartVertexLocation,
-    UINT StartInstanceLocation);
-void __RPC_STUB ID3D10Device_DrawInstanced_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSSetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppConstantBuffers);
-void __RPC_STUB ID3D10Device_GSSetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSSetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10GeometryShader *pShader);
-void __RPC_STUB ID3D10Device_GSSetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IASetPrimitiveTopology_Proxy(
-    ID3D10Device* This,
-    D3D10_PRIMITIVE_TOPOLOGY Topology);
-void __RPC_STUB ID3D10Device_IASetPrimitiveTopology_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSSetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView *const *ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_VSSetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSSetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState *const *ppSamplers);
-void __RPC_STUB ID3D10Device_VSSetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_SetPredication_Proxy(
-    ID3D10Device* This,
-    ID3D10Predicate *pPredicate,
-    BOOL PredicateValue);
-void __RPC_STUB ID3D10Device_SetPredication_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSSetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView *const *ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_GSSetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSSetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState *const *ppSamplers);
-void __RPC_STUB ID3D10Device_GSSetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMSetRenderTargets_Proxy(
-    ID3D10Device* This,
-    UINT NumViews,
-    ID3D10RenderTargetView *const *ppRenderTargetViews,
-    ID3D10DepthStencilView *pDepthStencilView);
-void __RPC_STUB ID3D10Device_OMSetRenderTargets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMSetBlendState_Proxy(
-    ID3D10Device* This,
-    ID3D10BlendState *pBlendState,
-    const FLOAT BlendFactor[4],
-    UINT SampleMask);
-void __RPC_STUB ID3D10Device_OMSetBlendState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMSetDepthStencilState_Proxy(
-    ID3D10Device* This,
-    ID3D10DepthStencilState *pDepthStencilState,
-    UINT StencilRef);
-void __RPC_STUB ID3D10Device_OMSetDepthStencilState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_SOSetTargets_Proxy(
-    ID3D10Device* This,
-    UINT NumBuffers,
-    ID3D10Buffer *const *ppSOTargets,
-    const UINT *pOffsets);
-void __RPC_STUB ID3D10Device_SOSetTargets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_DrawAuto_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_DrawAuto_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSSetState_Proxy(
-    ID3D10Device* This,
-    ID3D10RasterizerState *pRasterizerState);
-void __RPC_STUB ID3D10Device_RSSetState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSSetViewports_Proxy(
-    ID3D10Device* This,
-    UINT NumViewports,
-    const D3D10_VIEWPORT *pViewports);
-void __RPC_STUB ID3D10Device_RSSetViewports_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSSetScissorRects_Proxy(
-    ID3D10Device* This,
-    UINT NumRects,
-    const D3D10_RECT *pRects);
-void __RPC_STUB ID3D10Device_RSSetScissorRects_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_CopySubresourceRegion_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pDstResource,
-    UINT DstSubresource,
-    UINT DstX,
-    UINT DstY,
-    UINT DstZ,
-    ID3D10Resource *pSrcResource,
-    UINT SrcSubresource,
-    const D3D10_BOX *pSrcBox);
-void __RPC_STUB ID3D10Device_CopySubresourceRegion_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_CopyResource_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pDstResource,
-    ID3D10Resource *pSrcResource);
-void __RPC_STUB ID3D10Device_CopyResource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_UpdateSubresource_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pDstResource,
-    UINT DstSubresource,
-    const D3D10_BOX *pDstBox,
-    const void *pSrcData,
-    UINT SrcRowPitch,
-    UINT SrcDepthPitch);
-void __RPC_STUB ID3D10Device_UpdateSubresource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_ClearRenderTargetView_Proxy(
-    ID3D10Device* This,
-    ID3D10RenderTargetView *pRenderTargetView,
-    const FLOAT ColorRGBA[4]);
-void __RPC_STUB ID3D10Device_ClearRenderTargetView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_ClearDepthStencilView_Proxy(
-    ID3D10Device* This,
-    ID3D10DepthStencilView *pDepthStencilView,
-    UINT ClearFlags,
-    FLOAT Depth,
-    UINT8 Stencil);
-void __RPC_STUB ID3D10Device_ClearDepthStencilView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GenerateMips_Proxy(
-    ID3D10Device* This,
-    ID3D10ShaderResourceView *pShaderResourceView);
-void __RPC_STUB ID3D10Device_GenerateMips_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_ResolveSubresource_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pDstResource,
-    UINT DstSubresource,
-    ID3D10Resource *pSrcResource,
-    UINT SrcSubresource,
-    DXGI_FORMAT Format);
-void __RPC_STUB ID3D10Device_ResolveSubresource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSGetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer **ppConstantBuffers);
-void __RPC_STUB ID3D10Device_VSGetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSGetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView **ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_PSGetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSGetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10PixelShader **ppPixelShader);
-void __RPC_STUB ID3D10Device_PSGetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSGetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState **ppSamplers);
-void __RPC_STUB ID3D10Device_PSGetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSGetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10VertexShader **ppVertexShader);
-void __RPC_STUB ID3D10Device_VSGetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_PSGetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer **ppConstantBuffers);
-void __RPC_STUB ID3D10Device_PSGetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IAGetInputLayout_Proxy(
-    ID3D10Device* This,
-    ID3D10InputLayout **ppInputLayout);
-void __RPC_STUB ID3D10Device_IAGetInputLayout_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IAGetVertexBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer **ppVertexBuffers,
-    UINT *pStrides,
-    UINT *pOffsets);
-void __RPC_STUB ID3D10Device_IAGetVertexBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IAGetIndexBuffer_Proxy(
-    ID3D10Device* This,
-    ID3D10Buffer **pIndexBuffer,
-    DXGI_FORMAT *Format,
-    UINT *Offset);
-void __RPC_STUB ID3D10Device_IAGetIndexBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSGetConstantBuffers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumBuffers,
-    ID3D10Buffer **ppConstantBuffers);
-void __RPC_STUB ID3D10Device_GSGetConstantBuffers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSGetShader_Proxy(
-    ID3D10Device* This,
-    ID3D10GeometryShader **ppGeometryShader);
-void __RPC_STUB ID3D10Device_GSGetShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_IAGetPrimitiveTopology_Proxy(
-    ID3D10Device* This,
-    D3D10_PRIMITIVE_TOPOLOGY *pTopology);
-void __RPC_STUB ID3D10Device_IAGetPrimitiveTopology_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSGetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView **ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_VSGetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_VSGetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState **ppSamplers);
-void __RPC_STUB ID3D10Device_VSGetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GetPredication_Proxy(
-    ID3D10Device* This,
-    ID3D10Predicate **ppPredicate,
-    BOOL *pPredicateValue);
-void __RPC_STUB ID3D10Device_GetPredication_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSGetShaderResources_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumViews,
-    ID3D10ShaderResourceView **ppShaderResourceViews);
-void __RPC_STUB ID3D10Device_GSGetShaderResources_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GSGetSamplers_Proxy(
-    ID3D10Device* This,
-    UINT StartSlot,
-    UINT NumSamplers,
-    ID3D10SamplerState **ppSamplers);
-void __RPC_STUB ID3D10Device_GSGetSamplers_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMGetRenderTargets_Proxy(
-    ID3D10Device* This,
-    UINT NumViews,
-    ID3D10RenderTargetView **ppRenderTargetViews,
-    ID3D10DepthStencilView **ppDepthStencilView);
-void __RPC_STUB ID3D10Device_OMGetRenderTargets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMGetBlendState_Proxy(
-    ID3D10Device* This,
-    ID3D10BlendState **ppBlendState,
-    FLOAT BlendFactor[4],
-    UINT *pSampleMask);
-void __RPC_STUB ID3D10Device_OMGetBlendState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_OMGetDepthStencilState_Proxy(
-    ID3D10Device* This,
-    ID3D10DepthStencilState **ppDepthStencilState,
-    UINT *pStencilRef);
-void __RPC_STUB ID3D10Device_OMGetDepthStencilState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_SOGetTargets_Proxy(
-    ID3D10Device* This,
-    UINT NumBuffers,
-    ID3D10Buffer **ppSOTargets,
-    UINT *pOffsets);
-void __RPC_STUB ID3D10Device_SOGetTargets_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSGetState_Proxy(
-    ID3D10Device* This,
-    ID3D10RasterizerState **ppRasterizerState);
-void __RPC_STUB ID3D10Device_RSGetState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSGetViewports_Proxy(
-    ID3D10Device* This,
-    UINT *NumViewports,
-    D3D10_VIEWPORT *pViewports);
-void __RPC_STUB ID3D10Device_RSGetViewports_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_RSGetScissorRects_Proxy(
-    ID3D10Device* This,
-    UINT *NumRects,
-    D3D10_RECT *pRects);
-void __RPC_STUB ID3D10Device_RSGetScissorRects_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_GetDeviceRemovedReason_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_GetDeviceRemovedReason_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_SetExceptionMode_Proxy(
-    ID3D10Device* This,
-    UINT RaiseFlags);
-void __RPC_STUB ID3D10Device_SetExceptionMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-UINT STDMETHODCALLTYPE ID3D10Device_GetExceptionMode_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_GetExceptionMode_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_GetPrivateData_Proxy(
-    ID3D10Device* This,
-    REFGUID guid,
-    UINT *pDataSize,
-    void *pData);
-void __RPC_STUB ID3D10Device_GetPrivateData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_SetPrivateData_Proxy(
-    ID3D10Device* This,
-    REFGUID guid,
-    UINT DataSize,
-    const void *pData);
-void __RPC_STUB ID3D10Device_SetPrivateData_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_SetPrivateDataInterface_Proxy(
-    ID3D10Device* This,
-    REFGUID guid,
-    const IUnknown *pData);
-void __RPC_STUB ID3D10Device_SetPrivateDataInterface_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_ClearState_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_ClearState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_Flush_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_Flush_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateBuffer_Proxy(
-    ID3D10Device* This,
-    const D3D10_BUFFER_DESC *pDesc,
-    const D3D10_SUBRESOURCE_DATA *pInitialData,
-    ID3D10Buffer **ppBuffer);
-void __RPC_STUB ID3D10Device_CreateBuffer_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateTexture1D_Proxy(
-    ID3D10Device* This,
-    const D3D10_TEXTURE1D_DESC *pDesc,
-    const D3D10_SUBRESOURCE_DATA *pInitialData,
-    ID3D10Texture1D **ppTexture1D);
-void __RPC_STUB ID3D10Device_CreateTexture1D_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateTexture2D_Proxy(
-    ID3D10Device* This,
-    const D3D10_TEXTURE2D_DESC *pDesc,
-    const D3D10_SUBRESOURCE_DATA *pInitialData,
-    ID3D10Texture2D **ppTexture2D);
-void __RPC_STUB ID3D10Device_CreateTexture2D_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateTexture3D_Proxy(
-    ID3D10Device* This,
-    const D3D10_TEXTURE3D_DESC *pDesc,
-    const D3D10_SUBRESOURCE_DATA *pInitialData,
-    ID3D10Texture3D **ppTexture3D);
-void __RPC_STUB ID3D10Device_CreateTexture3D_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateShaderResourceView_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pResource,
-    const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
-    ID3D10ShaderResourceView **ppSRView);
-void __RPC_STUB ID3D10Device_CreateShaderResourceView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateRenderTargetView_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pResource,
-    const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
-    ID3D10RenderTargetView **ppRTView);
-void __RPC_STUB ID3D10Device_CreateRenderTargetView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateDepthStencilView_Proxy(
-    ID3D10Device* This,
-    ID3D10Resource *pResource,
-    const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
-    ID3D10DepthStencilView **ppDepthStencilView);
-void __RPC_STUB ID3D10Device_CreateDepthStencilView_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateInputLayout_Proxy(
-    ID3D10Device* This,
-    const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
-    UINT NumElements,
-    const void *pShaderBytecodeWithInputSignature,
-    SIZE_T BytecodeLength,
-    ID3D10InputLayout **ppInputLayout);
-void __RPC_STUB ID3D10Device_CreateInputLayout_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateVertexShader_Proxy(
-    ID3D10Device* This,
-    const void *pShaderBytecode,
-    SIZE_T BytecodeLength,
-    ID3D10VertexShader **ppVertexShader);
-void __RPC_STUB ID3D10Device_CreateVertexShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateGeometryShader_Proxy(
-    ID3D10Device* This,
-    const void *pShaderBytecode,
-    SIZE_T BytecodeLength,
-    ID3D10GeometryShader **ppGeometryShader);
-void __RPC_STUB ID3D10Device_CreateGeometryShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateGeometryShaderWithStreamOutput_Proxy(
-    ID3D10Device* This,
-    const void *pShaderBytecode,
-    SIZE_T BytecodeLength,
-    const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
-    UINT NumEntries,
-    UINT OutputStreamStride,
-    ID3D10GeometryShader **ppGeometryShader);
-void __RPC_STUB ID3D10Device_CreateGeometryShaderWithStreamOutput_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreatePixelShader_Proxy(
-    ID3D10Device* This,
-    const void *pShaderBytecode,
-    SIZE_T BytecodeLength,
-    ID3D10PixelShader **ppPixelShader);
-void __RPC_STUB ID3D10Device_CreatePixelShader_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateBlendState_Proxy(
-    ID3D10Device* This,
-    const D3D10_BLEND_DESC *pBlendStateDesc,
-    ID3D10BlendState **ppBlendState);
-void __RPC_STUB ID3D10Device_CreateBlendState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateDepthStencilState_Proxy(
-    ID3D10Device* This,
-    const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
-    ID3D10DepthStencilState **ppDepthStencilState);
-void __RPC_STUB ID3D10Device_CreateDepthStencilState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateRasterizerState_Proxy(
-    ID3D10Device* This,
-    const D3D10_RASTERIZER_DESC *pRasterizerDesc,
-    ID3D10RasterizerState **ppRasterizerState);
-void __RPC_STUB ID3D10Device_CreateRasterizerState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateSamplerState_Proxy(
-    ID3D10Device* This,
-    const D3D10_SAMPLER_DESC *pSamplerDesc,
-    ID3D10SamplerState **ppSamplerState);
-void __RPC_STUB ID3D10Device_CreateSamplerState_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateQuery_Proxy(
-    ID3D10Device* This,
-    const D3D10_QUERY_DESC *pQueryDesc,
-    ID3D10Query **ppQuery);
-void __RPC_STUB ID3D10Device_CreateQuery_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreatePredicate_Proxy(
-    ID3D10Device* This,
-    const D3D10_QUERY_DESC *pPredicateDesc,
-    ID3D10Predicate **ppPredicate);
-void __RPC_STUB ID3D10Device_CreatePredicate_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CreateCounter_Proxy(
-    ID3D10Device* This,
-    const D3D10_COUNTER_DESC *pCounterDesc,
-    ID3D10Counter **ppCounter);
-void __RPC_STUB ID3D10Device_CreateCounter_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CheckFormatSupport_Proxy(
-    ID3D10Device* This,
-    DXGI_FORMAT Format,
-    UINT *pFormatSupport);
-void __RPC_STUB ID3D10Device_CheckFormatSupport_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CheckMultisampleQualityLevels_Proxy(
-    ID3D10Device* This,
-    DXGI_FORMAT Format,
-    UINT SampleCount,
-    UINT *pNumQualityLevels);
-void __RPC_STUB ID3D10Device_CheckMultisampleQualityLevels_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_CheckCounterInfo_Proxy(
-    ID3D10Device* This,
-    D3D10_COUNTER_INFO *pCounterInfo);
-void __RPC_STUB ID3D10Device_CheckCounterInfo_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_CheckCounter_Proxy(
-    ID3D10Device* This,
-    const D3D10_COUNTER_DESC *pDesc,
-    D3D10_COUNTER_TYPE *pType,
-    UINT *pActiveCounters,
-    LPSTR szName,
-    UINT *pNameLength,
-    LPSTR szUnits,
-    UINT *pUnitsLength,
-    LPSTR szDescription,
-    UINT *pDescriptionLength);
-void __RPC_STUB ID3D10Device_CheckCounter_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-UINT STDMETHODCALLTYPE ID3D10Device_GetCreationFlags_Proxy(
-    ID3D10Device* This);
-void __RPC_STUB ID3D10Device_GetCreationFlags_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE ID3D10Device_OpenSharedResource_Proxy(
-    ID3D10Device* This,
-    HANDLE hResource,
-    REFIID ReturnedInterface,
-    void **ppResource);
-void __RPC_STUB ID3D10Device_OpenSharedResource_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_SetTextFilterSize_Proxy(
-    ID3D10Device* This,
-    UINT Width,
-    UINT Height);
-void __RPC_STUB ID3D10Device_SetTextFilterSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Device_GetTextFilterSize_Proxy(
-    ID3D10Device* This,
-    UINT *pWidth,
-    UINT *pHeight);
-void __RPC_STUB ID3D10Device_GetTextFilterSize_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Device_INTERFACE_DEFINED__ */
-
-/*****************************************************************************
- * ID3D10Multithread interface
- */
-#ifndef __ID3D10Multithread_INTERFACE_DEFINED__
-#define __ID3D10Multithread_INTERFACE_DEFINED__
-
-DEFINE_GUID(IID_ID3D10Multithread, 0x9b7e4e00, 0x342c, 0x4106, 0xa1,0x9f, 0x4f,0x27,0x04,0xf6,0x89,0xf0);
-#if defined(__cplusplus) && !defined(CINTERFACE)
-interface ID3D10Multithread : public IUnknown
-{
-    virtual void STDMETHODCALLTYPE Enter(
-        ) = 0;
-
-    virtual void STDMETHODCALLTYPE Leave(
-        ) = 0;
-
-    virtual BOOL STDMETHODCALLTYPE SetMultithreadProtected(
-        BOOL bMTProtect) = 0;
-
-    virtual BOOL STDMETHODCALLTYPE GetMultithreadProtected(
-        ) = 0;
-
-};
-#else
-typedef struct ID3D10MultithreadVtbl {
-    BEGIN_INTERFACE
-
-    /*** IUnknown methods ***/
-    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
-        ID3D10Multithread* This,
-        REFIID riid,
-        void **ppvObject);
-
-    ULONG (STDMETHODCALLTYPE *AddRef)(
-        ID3D10Multithread* This);
-
-    ULONG (STDMETHODCALLTYPE *Release)(
-        ID3D10Multithread* This);
-
-    /*** ID3D10Multithread methods ***/
-    void (STDMETHODCALLTYPE *Enter)(
-        ID3D10Multithread* This);
-
-    void (STDMETHODCALLTYPE *Leave)(
-        ID3D10Multithread* This);
-
-    BOOL (STDMETHODCALLTYPE *SetMultithreadProtected)(
-        ID3D10Multithread* This,
-        BOOL bMTProtect);
-
-    BOOL (STDMETHODCALLTYPE *GetMultithreadProtected)(
-        ID3D10Multithread* This);
-
-    END_INTERFACE
-} ID3D10MultithreadVtbl;
-interface ID3D10Multithread {
-    CONST_VTBL ID3D10MultithreadVtbl* lpVtbl;
-};
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define ID3D10Multithread_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ID3D10Multithread_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ID3D10Multithread_Release(This) (This)->lpVtbl->Release(This)
-/*** ID3D10Multithread methods ***/
-#define ID3D10Multithread_Enter(This) (This)->lpVtbl->Enter(This)
-#define ID3D10Multithread_Leave(This) (This)->lpVtbl->Leave(This)
-#define ID3D10Multithread_SetMultithreadProtected(This,bMTProtect) (This)->lpVtbl->SetMultithreadProtected(This,bMTProtect)
-#define ID3D10Multithread_GetMultithreadProtected(This) (This)->lpVtbl->GetMultithreadProtected(This)
-#endif
-
-#endif
-
-void STDMETHODCALLTYPE ID3D10Multithread_Enter_Proxy(
-    ID3D10Multithread* This);
-void __RPC_STUB ID3D10Multithread_Enter_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-void STDMETHODCALLTYPE ID3D10Multithread_Leave_Proxy(
-    ID3D10Multithread* This);
-void __RPC_STUB ID3D10Multithread_Leave_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-BOOL STDMETHODCALLTYPE ID3D10Multithread_SetMultithreadProtected_Proxy(
-    ID3D10Multithread* This,
-    BOOL bMTProtect);
-void __RPC_STUB ID3D10Multithread_SetMultithreadProtected_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-BOOL STDMETHODCALLTYPE ID3D10Multithread_GetMultithreadProtected_Proxy(
-    ID3D10Multithread* This);
-void __RPC_STUB ID3D10Multithread_GetMultithreadProtected_Stub(
-    IRpcStubBuffer* This,
-    IRpcChannelBuffer* pRpcChannelBuffer,
-    PRPC_MESSAGE pRpcMessage,
-    DWORD* pdwStubPhase);
-
-#endif  /* __ID3D10Multithread_INTERFACE_DEFINED__ */
-
-#include "d3d10misc.h"
-#include "d3d10shader.h"
-#include "d3d10effect.h"
-/* Begin additional prototypes for all interfaces */
-
-
-/* End additional prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WIDL_D3D10_H */
diff --git a/misc/builddeps/win64/dx/include/d3d10.idl b/misc/builddeps/win64/dx/include/d3d10.idl
deleted file mode 100644 (file)
index 6205917..0000000
+++ /dev/null
@@ -1,1539 +0,0 @@
-/*
- * Copyright 2007 Andras Kovacs
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-import "oaidl.idl";
-import "ocidl.idl";
-import "dxgi.idl";
-
-cpp_quote("#ifndef _D3D10_CONSTANTS")
-cpp_quote("#define _D3D10_CONSTANTS")
-const float D3D10_DEFAULT_BLEND_FACTOR_ALPHA                                            = 1.0;
-const float D3D10_DEFAULT_BLEND_FACTOR_BLUE                                             = 1.0;
-const float D3D10_DEFAULT_BLEND_FACTOR_GREEN                                            = 1.0;
-const float D3D10_DEFAULT_BLEND_FACTOR_RED                                              = 1.0;
-const float D3D10_DEFAULT_BORDER_COLOR_COMPONENT                                        = 0.0;
-const float D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS                                       = 0.0;
-const float D3D10_DEFAULT_DEPTH_BIAS_CLAMP                                              = 0.0;
-const float D3D10_DEFAULT_MAX_ANISOTROPY                                                = 16.0;
-const float D3D10_DEFAULT_MIP_LOD_BIAS                                                  = 0.0;
-const float D3D10_DEFAULT_VIEWPORT_MAX_DEPTH                                            = 0.0;
-const float D3D10_DEFAULT_VIEWPORT_MIN_DEPTH                                            = 0.0;
-const float D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP                                        = 0.6;
-const float D3D10_FLOAT32_MAX                                                           = 3.402823466e+38;
-const float D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP                                   = 0.6;
-const float D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR                                    = 2.4;
-const float D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR                                      = 1.0;
-const float D3D10_FLOAT_TO_SRGB_OFFSET                                                  = 0.055;
-const float D3D10_FLOAT_TO_SRGB_SCALE_1                                                 = 12.92;
-const float D3D10_FLOAT_TO_SRGB_SCALE_2                                                 = 1.055;
-const float D3D10_FLOAT_TO_SRGB_THRESHOLD                                               = 0.0031308;
-const float D3D10_FTOI_INSTRUCTION_MAX_INPUT                                            = 2147483647.999;
-const float D3D10_FTOI_INSTRUCTION_MIN_INPUT                                            = -2147483648.999;
-const float D3D10_FTOU_INSTRUCTION_MAX_INPUT                                            = 4294967295.999;
-const float D3D10_FTOU_INSTRUCTION_MIN_INPUT                                            = 0.0;
-const float D3D10_LINEAR_GAMMA                                                          = 1.0;
-const float D3D10_MAX_BORDER_COLOR_COMPONENT                                            = 1.0;
-const float D3D10_MAX_DEPTH                                                             = 1.0;
-const float D3D10_MAX_POSITION_VALUE                                                    = 3.402823466e+34;
-const float D3D10_MIN_BORDER_COLOR_COMPONENT                                            = 0.0;
-const float D3D10_MIN_DEPTH                                                             = 0.0;
-const float D3D10_MIP_LOD_BIAS_MAX                                                      = 15.99;
-const float D3D10_MIP_LOD_BIAS_MIN                                                      = -16.0;
-const float D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT                                  = 0.5;
-const float D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH                                      = 1.4;
-const float D3D10_SRGB_GAMMA                                                            = 2.2;
-const float D3D10_SRGB_TO_FLOAT_DENOMINATOR_1                                           = 12.92;
-const float D3D10_SRGB_TO_FLOAT_DENOMINATOR_2                                           = 1.055;
-const float D3D10_SRGB_TO_FLOAT_EXPONENT                                                = 2.4;
-const float D3D10_SRGB_TO_FLOAT_OFFSET                                                  = 0.055;
-const float D3D10_SRGB_TO_FLOAT_THRESHOLD                                               = 0.04045;
-const float D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP                                        = 0.5;
-const float D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT                           = 0.0;
-const float D3D_SPEC_VERSION                                                            = 1.050005;
-const unsigned int D3D10_16BIT_INDEX_STRIP_CUT_VALUE                                    = 0xffff;
-const unsigned int D3D10_32BIT_INDEX_STRIP_CUT_VALUE                                    = 0xffffffff;
-const unsigned int D3D10_8BIT_INDEX_STRIP_CUT_VALUE                                     = 0xff;
-const unsigned int D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT                             = 9;
-const unsigned int D3D10_CLIP_OR_CULL_DISTANCE_COUNT                                    = 8;
-const unsigned int D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT                            = 2;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT                    = 14;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS                        = 4;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT               = 32;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT                     = 15;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS               = 4;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT                    = 15;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST           = 1;
-const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS               = 1;
-const unsigned int D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT                         = 64;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS     = 4;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT          = 1;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS     = 1;
-const unsigned int D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT               = 32;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS                = 1;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT                     = 128;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST            = 1;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS                = 1;
-const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT                         = 128;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS                       = 1;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT                            = 16;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST                   = 1;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS                       = 1;
-const unsigned int D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT                                = 16;
-const unsigned int D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT                          = 32;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS                          = 4;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT                 = 32;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_COUNT                               = 4096;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST                      = 3;
-const unsigned int D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS                          = 3;
-const unsigned int D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX                      = 10;
-const int D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN                               = -10;
-const int D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE                                  = -8;
-const unsigned int D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE                         = 7;
-const unsigned int D3D10_DEFAULT_DEPTH_BIAS                                             = 0;
-const unsigned int D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX                              = 0;
-const unsigned int D3D10_DEFAULT_SAMPLE_MASK                                            = 0xffffffff;
-const unsigned int D3D10_DEFAULT_SCISSOR_ENDX                                           = 0;
-const unsigned int D3D10_DEFAULT_SCISSOR_ENDY                                           = 0;
-const unsigned int D3D10_DEFAULT_SCISSOR_STARTX                                         = 0;
-const unsigned int D3D10_DEFAULT_SCISSOR_STARTY                                         = 0;
-const unsigned int D3D10_DEFAULT_STENCIL_READ_MASK                                      = 0xff;
-const unsigned int D3D10_DEFAULT_STENCIL_REFERENCE                                      = 0;
-const unsigned int D3D10_DEFAULT_STENCIL_WRITE_MASK                                     = 0xff;
-const unsigned int D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX                         = 0;
-const unsigned int D3D10_DEFAULT_VIEWPORT_HEIGHT                                        = 0;
-const unsigned int D3D10_DEFAULT_VIEWPORT_TOPLEFTX                                      = 0;
-const unsigned int D3D10_DEFAULT_VIEWPORT_TOPLEFTY                                      = 0;
-const unsigned int D3D10_DEFAULT_VIEWPORT_WIDTH                                         = 0;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS                        = 1;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT               = 32;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT                             = 1;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST                    = 2;
-const unsigned int D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS                        = 1;
-const unsigned int D3D10_GS_INPUT_REGISTER_COMPONENTS                                   = 4;
-const unsigned int D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT                          =32;
-const unsigned int D3D10_GS_INPUT_REGISTER_COUNT                                        = 16;
-const unsigned int D3D10_GS_INPUT_REGISTER_READS_PER_INST                               = 2;
-const unsigned int D3D10_GS_INPUT_REGISTER_READ_PORTS                                   = 1;
-const unsigned int D3D10_GS_INPUT_REGISTER_VERTICES                                     = 6;
-const unsigned int D3D10_GS_OUTPUT_ELEMENTS                                             = 32;
-const unsigned int D3D10_GS_OUTPUT_REGISTER_COMPONENTS                                  = 4;
-const unsigned int D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT                         = 32;
-const unsigned int D3D10_GS_OUTPUT_REGISTER_COUNT                                       = 32;
-const unsigned int D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES                        = 0;
-const unsigned int D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY                                  = 0;
-const unsigned int D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES                       = 0;
-const unsigned int D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT                             = 1;
-const unsigned int D3D10_IA_INSTANCE_ID_BIT_COUNT                                       = 32;
-const unsigned int D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT                                = 32;
-const unsigned int D3D10_IA_PRIMITIVE_ID_BIT_COUNT                                      = 32;
-const unsigned int D3D10_IA_VERTEX_ID_BIT_COUNT                                         = 32;
-const unsigned int D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT                            = 16;
-const unsigned int D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS                  = 64;
-const unsigned int D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT                        = 16;
-const unsigned int D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT                                = 0xffffffff;
-const unsigned int D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER                               = 0xffffffff;
-const unsigned int D3D10_MAX_MAXANISOTROPY                                              = 16;
-const unsigned int D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT                                   = 32;
-const unsigned int D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP                                 = 17;
-const unsigned int D3D10_MIN_MAXANISOTROPY                                              = 0;
-const unsigned int D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT                                   = 6;
-const unsigned int D3D10_MIP_LOD_RANGE_BIT_COUNT                                        = 8;
-const unsigned int D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT                     = 0;
-const unsigned int D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT                                  = 13;
-const unsigned int D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT                      = 15;
-const unsigned int D3D10_PS_FRONTFACING_DEFAULT_VALUE                                   = 0xffffffff;
-const unsigned int D3D10_PS_FRONTFACING_FALSE_VALUE                                     = 0;
-const unsigned int D3D10_PS_FRONTFACING_TRUE_VALUE                                      = 0xffffffff;
-const unsigned int D3D10_PS_INPUT_REGISTER_COMPONENTS                                   = 4;
-const unsigned int D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT                          = 32;
-const unsigned int D3D10_PS_INPUT_REGISTER_COUNT                                        = 32;
-const unsigned int D3D10_PS_INPUT_REGISTER_READS_PER_INST                               = 2;
-const unsigned int D3D10_PS_INPUT_REGISTER_READ_PORTS                                   = 1;
-const unsigned int D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS                            = 1;
-const unsigned int D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT                   = 32;
-const unsigned int D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT                                 = 1;
-const unsigned int D3D10_PS_OUTPUT_REGISTER_COMPONENTS                                  = 4;
-const unsigned int D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT                         = 32;
-const unsigned int D3D10_PS_OUTPUT_REGISTER_COUNT                                       = 8;
-const unsigned int D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT                             = 4096;
-const unsigned int D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP                       = 27;
-const unsigned int D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT                              = 4096;
-const unsigned int D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT                     = 4096;
-const unsigned int D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP                           = 32;
-const unsigned int D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP                                 = 32;
-const unsigned int D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION                = 8192;
-const unsigned int D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT                 = 1024;
-const unsigned int D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT                    = 4096;
-const unsigned int D3D10_REQ_MAXANISOTROPY                                              = 16;
-const unsigned int D3D10_REQ_MIP_LEVELS                                                 = 14;
-const unsigned int D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES                      = 2048;
-const unsigned int D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT                        = 4096;
-const unsigned int D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH                              = 8192;
-const unsigned int D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES                                 = 128;
-const unsigned int D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP                   = 20;
-const unsigned int D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT                           = 4096;
-const unsigned int D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION                             = 512;
-const unsigned int D3D10_REQ_TEXTURE1D_U_DIMENSION                                      = 8192;
-const unsigned int D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION                             = 512;
-const unsigned int D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION                                 = 8192;
-const unsigned int D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION                               = 2048;
-const unsigned int D3D10_REQ_TEXTURECUBE_DIMENSION                                      = 8192;
-const unsigned int D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL                   = 0;
-const unsigned int D3D10_SHADER_MAJOR_VERSION                                           = 4;
-const unsigned int D3D10_SHADER_MINOR_VERSION                                           = 0;
-const unsigned int D3D10_SHIFT_INSTRUCTION_PAD_VALUE                                    = 0;
-const unsigned int D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT                        = 5;
-const unsigned int D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT                               = 8;
-const unsigned int D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES                                  = 2048;
-const unsigned int D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES                            = 256;
-const unsigned int D3D10_SO_BUFFER_SLOT_COUNT                                           = 4;
-const unsigned int D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP                             = 0xffffffff;
-const unsigned int D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER                         = 1;
-const unsigned int D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT                               = 64;
-const unsigned int D3D10_STANDARD_COMPONENT_BIT_COUNT                                   = 32;
-const unsigned int D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED                           = 64;
-const unsigned int D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE               = 4;
-const unsigned int D3D10_STANDARD_PIXEL_COMPONENT_COUNT                                 = 128;
-const unsigned int D3D10_STANDARD_PIXEL_ELEMENT_COUNT                                   = 32;
-const unsigned int D3D10_STANDARD_VECTOR_SIZE                                           = 4;
-const unsigned int D3D10_STANDARD_VERTEX_ELEMENT_COUNT                                  = 16;
-const unsigned int D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT                          = 64;
-const unsigned int D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT                                  = 8;
-const unsigned int D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT                                  = 6;
-const unsigned int D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT                                  = 18;
-const unsigned int D3D10_UNBOUND_MEMORY_ACCESS_RESULT                                   = 0;
-const unsigned int D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX                             = 15;
-const unsigned int D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE             = 16;
-const unsigned int D3D10_VIEWPORT_BOUNDS_MAX                                            = 16383;
-const int D3D10_VIEWPORT_BOUNDS_MIN                                                     = -16384;
-const unsigned int D3D10_VS_INPUT_REGISTER_COMPONENTS                                   = 4;
-const unsigned int D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT                          = 32;
-const unsigned int D3D10_VS_INPUT_REGISTER_COUNT                                        = 16;
-const unsigned int D3D10_VS_INPUT_REGISTER_READS_PER_INST                               = 2;
-const unsigned int D3D10_VS_INPUT_REGISTER_READ_PORTS                                   = 1;
-const unsigned int D3D10_VS_OUTPUT_REGISTER_COMPONENTS                                  = 4;
-const unsigned int D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT                         = 32;
-const unsigned int D3D10_VS_OUTPUT_REGISTER_COUNT                                       = 16;
-const unsigned int D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT                          = 10;
-const unsigned int D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP                          = 25;
-const unsigned int D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP                                = 25;
-const unsigned int D3D_MAJOR_VERSION                                                    = 10;
-const unsigned int D3D_MINOR_VERSION                                                    = 0;
-const unsigned int D3D_SPEC_DATE_DAY                                                    = 8;
-const unsigned int D3D_SPEC_DATE_MONTH                                                  = 8;
-const unsigned int D3D_SPEC_DATE_YEAR                                                   = 2006;
-cpp_quote("#endif")
-
-const unsigned int D3D10_APPEND_ALIGNED_ELEMENT                                         = 0xffffffff;
-const unsigned int _FACD3D10                                                            = 0x87;
-const unsigned int _FACD3D10DEBUG                                                       = _FACD3D10 + 1;
-const unsigned int D3D10_FILTER_TYPE_MASK                                               = 0x3;
-const unsigned int D3D10_SDK_VERSION                                                    = 29;
-
-cpp_quote("#define MAKE_D3D10_HRESULT(code)                   MAKE_HRESULT( 1, _FACD3D10, code)")
-cpp_quote("#define MAKE_D3D10_STATUS(code)                    MAKE_HRESULT( 0, _FACD3D10, code)")
-cpp_quote("#define D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS  MAKE_D3D10_HRESULT(1)")
-cpp_quote("#define D3D10_ERROR_FILE_NOT_FOUND                 MAKE_D3D10_HRESULT(2)")
-
-typedef enum D3D10_BLEND {
-    D3D10_BLEND_ZERO             = 1,
-    D3D10_BLEND_ONE              = 2,
-    D3D10_BLEND_SRC_COLOR        = 3,
-    D3D10_BLEND_INV_SRC_COLOR    = 4,
-    D3D10_BLEND_SRC_ALPHA        = 5,
-    D3D10_BLEND_INV_SRC_ALPHA    = 6,
-    D3D10_BLEND_DEST_ALPHA       = 7,
-    D3D10_BLEND_INV_DEST_ALPHA   = 8,
-    D3D10_BLEND_DEST_COLOR       = 9,
-    D3D10_BLEND_INV_DEST_COLOR   = 10,
-    D3D10_BLEND_SRC_ALPHA_SAT    = 11,
-    D3D10_BLEND_BLEND_FACTOR     = 14,
-    D3D10_BLEND_INV_BLEND_FACTOR = 15,
-    D3D10_BLEND_SRC1_COLOR       = 16,
-    D3D10_BLEND_INV_SRC1_COLOR   = 17,
-    D3D10_BLEND_SRC1_ALPHA       = 18,
-    D3D10_BLEND_INV_SRC1_ALPHA   = 19
-} D3D10_BLEND;
-
-typedef enum D3D10_BLEND_OP {
-    D3D10_BLEND_OP_ADD = 1,
-    D3D10_BLEND_OP_SUBTRACT,
-    D3D10_BLEND_OP_REV_SUBTRACT,
-    D3D10_BLEND_OP_MIN,
-    D3D10_BLEND_OP_MAX,
-} D3D10_BLEND_OP;
-
-typedef struct D3D10_BLEND_DESC {
-    BOOL AlphaToCoverageEnable;
-    BOOL BlendEnable[8];
-    D3D10_BLEND SrcBlend;
-    D3D10_BLEND DestBlend;
-    D3D10_BLEND_OP BlendOp;
-    D3D10_BLEND SrcBlendAlpha;
-    D3D10_BLEND DestBlendAlpha;
-    D3D10_BLEND_OP BlendOpAlpha;
-    UINT8 RenderTargetWriteMask[8];
-} D3D10_BLEND_DESC;
-
-typedef enum D3D10_DEPTH_WRITE_MASK {
-    D3D10_DEPTH_WRITE_MASK_ZERO,
-    D3D10_DEPTH_WRITE_MASK_ALL,
-} D3D10_DEPTH_WRITE_MASK;
-
-typedef enum D3D10_COMPARISON_FUNC {
-    D3D10_COMPARISON_NEVER = 1,
-    D3D10_COMPARISON_LESS,
-    D3D10_COMPARISON_EQUAL,
-    D3D10_COMPARISON_LESS_EQUAL,
-    D3D10_COMPARISON_GREATER,
-    D3D10_COMPARISON_NOT_EQUAL,
-    D3D10_COMPARISON_GREATER_EQUAL,
-    D3D10_COMPARISON_ALWAYS,
-} D3D10_COMPARISON_FUNC;
-
-typedef enum D3D10_STENCIL_OP {
-    D3D10_STENCIL_OP_KEEP = 1,
-    D3D10_STENCIL_OP_ZERO,
-    D3D10_STENCIL_OP_REPLACE,
-    D3D10_STENCIL_OP_INCR_SAT,
-    D3D10_STENCIL_OP_DECR_SAT,
-    D3D10_STENCIL_OP_INVERT,
-    D3D10_STENCIL_OP_INCR,
-    D3D10_STENCIL_OP_DECR,
-} D3D10_STENCIL_OP;
-
-typedef struct D3D10_DEPTH_STENCILOP_DESC {
-    D3D10_STENCIL_OP StencilFailOp;
-    D3D10_STENCIL_OP StencilDepthFailOp;
-    D3D10_STENCIL_OP StencilPassOp;
-    D3D10_COMPARISON_FUNC StencilFunc;
-} D3D10_DEPTH_STENCILOP_DESC;
-
-typedef struct D3D10_DEPTH_STENCIL_DESC {
-    BOOL DepthEnable;
-    D3D10_DEPTH_WRITE_MASK DepthWriteMask;
-    D3D10_COMPARISON_FUNC DepthFunc;
-    BOOL StencilEnable;
-    UINT8 StencilReadMask;
-    UINT8 StencilWriteMask;
-    D3D10_DEPTH_STENCILOP_DESC FrontFace;
-    D3D10_DEPTH_STENCILOP_DESC BackFace;
-} D3D10_DEPTH_STENCIL_DESC;
-
-typedef enum D3D10_FILL_MODE {
-    D3D10_FILL_WIREFRAME = 2,
-    D3D10_FILL_SOLID,
-} D3D10_FILL_MODE;
-
-typedef enum D3D10_CULL_MODE {
-    D3D10_CULL_NONE = 1,
-    D3D10_CULL_FRONT,
-    D3D10_CULL_BACK,
-} D3D10_CULL_MODE;
-
-typedef struct D3D10_RASTERIZER_DESC {
-    D3D10_FILL_MODE FillMode;
-    D3D10_CULL_MODE CullMode;
-    BOOL FrontCounterClockwise;
-    INT DepthBias;
-    FLOAT DepthBiasClamp;
-    FLOAT SlopeScaledDepthBias;
-    BOOL DepthClipEnable;
-    BOOL ScissorEnable;
-    BOOL MultisampleEnable;
-    BOOL AntialiasedLineEnable;
-} D3D10_RASTERIZER_DESC;
-
-typedef enum D3D10_FILTER {
-    D3D10_FILTER_MIN_MAG_MIP_POINT                          = 0,
-    D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR                   = 0x1,
-    D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT             = 0x4,
-    D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR                   = 0x5,
-    D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT                   = 0x10,
-    D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR            = 0x11,
-    D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT                   = 0x14,
-    D3D10_FILTER_MIN_MAG_MIP_LINEAR                         = 0x15,
-    D3D10_FILTER_ANISOTROPIC                                = 0x55,
-    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT               = 0x80,
-    D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR        = 0x81,
-    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT  = 0x84,
-    D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR        = 0x85,
-    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT        = 0x90,
-    D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
-    D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT        = 0x94,
-    D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR              = 0x95,
-    D3D10_FILTER_COMPARISON_ANISOTROPIC                     = 0xd5,
-    D3D10_FILTER_TEXT_1BIT                                  = 0x80000000
-} D3D10_FILTER;
-
-typedef enum D3D10_TEXTURE_ADDRESS_MODE {
-    D3D10_TEXTURE_ADDRESS_WRAP = 1,
-    D3D10_TEXTURE_ADDRESS_MIRROR,
-    D3D10_TEXTURE_ADDRESS_CLAMP,
-    D3D10_TEXTURE_ADDRESS_BORDER,
-    D3D10_TEXTURE_ADDRESS_MIRROR_ONCE,
-} D3D10_TEXTURE_ADDRESS_MODE;
-
-typedef struct D3D10_SAMPLER_DESC {
-    D3D10_FILTER Filter;
-    D3D10_TEXTURE_ADDRESS_MODE AddressU;
-    D3D10_TEXTURE_ADDRESS_MODE AddressV;
-    D3D10_TEXTURE_ADDRESS_MODE AddressW;
-    FLOAT MipLODBias;
-    UINT MaxAnisotropy;
-    D3D10_COMPARISON_FUNC ComparisonFunc;
-    FLOAT BorderColor[4];
-    FLOAT MinLOD;
-    FLOAT MaxLOD;
-} D3D10_SAMPLER_DESC;
-
-typedef enum D3D10_COUNTER {
-    D3D10_COUNTER_GPU_IDLE,
-    D3D10_COUNTER_VERTEX_PROCESSING,
-    D3D10_COUNTER_GEOMETRY_PROCESSING,
-    D3D10_COUNTER_PIXEL_PROCESSING,
-    D3D10_COUNTER_OTHER_GPU_PROCESSING,
-    D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION,
-    D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION,
-    D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION,
-    D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION,
-    D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION,
-    D3D10_COUNTER_VS_MEMORY_LIMITED,
-    D3D10_COUNTER_VS_COMPUTATION_LIMITED,
-    D3D10_COUNTER_GS_MEMORY_LIMITED,
-    D3D10_COUNTER_GS_COMPUTATION_LIMITED,
-    D3D10_COUNTER_PS_MEMORY_LIMITED,
-    D3D10_COUNTER_PS_COMPUTATION_LIMITED,
-    D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE,
-    D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE,
-    D3D10_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000
-} D3D10_COUNTER;
-
-typedef struct D3D10_COUNTER_DESC {
-    D3D10_COUNTER Counter;
-    UINT MiscFlags;
-} D3D10_COUNTER_DESC;
-
-typedef enum D3D10_COUNTER_TYPE {
-    D3D10_COUNTER_TYPE_FLOAT32,
-    D3D10_COUNTER_TYPE_UINT16,
-    D3D10_COUNTER_TYPE_UINT32,
-    D3D10_COUNTER_TYPE_UINT64,
-} D3D10_COUNTER_TYPE;
-
-typedef struct D3D10_COUNTER_INFO {
-    D3D10_COUNTER LastDeviceDependentCounter;
-    UINT NumSimultaneousCounters;
-    UINT8 NumDetectableParallelUnits;
-} D3D10_COUNTER_INFO;
-
-typedef enum D3D10_RESOURCE_DIMENSION {
-    D3D10_RESOURCE_DIMENSION_UNKNOWN,
-    D3D10_RESOURCE_DIMENSION_BUFFER,
-    D3D10_RESOURCE_DIMENSION_TEXTURE1D,
-    D3D10_RESOURCE_DIMENSION_TEXTURE2D,
-    D3D10_RESOURCE_DIMENSION_TEXTURE3D,
-} D3D10_RESOURCE_DIMENSION;
-
-typedef enum D3D10_USAGE {
-    D3D10_USAGE_DEFAULT,
-    D3D10_USAGE_IMMUTABLE,
-    D3D10_USAGE_DYNAMIC,
-    D3D10_USAGE_STAGING,
-} D3D10_USAGE;
-
-typedef struct D3D10_BUFFER_DESC {
-    UINT ByteWidth;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_BUFFER_DESC;
-
-typedef enum D3D10_MAP {
-    D3D10_MAP_READ = 1,
-    D3D10_MAP_WRITE,
-    D3D10_MAP_READ_WRITE,
-    D3D10_MAP_WRITE_DISCARD,
-    D3D10_MAP_WRITE_NO_OVERWRITE,
-} D3D10_MAP;
-
-typedef struct D3D10_TEXTURE1D_DESC {
-    UINT Width;
-    UINT MipLevels;
-    UINT ArraySize;
-    DXGI_FORMAT Format;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE1D_DESC;
-
-typedef struct D3D10_TEXTURE2D_DESC {
-    UINT Width;
-    UINT Height;
-    UINT MipLevels;
-    UINT ArraySize;
-    DXGI_FORMAT Format;
-    DXGI_SAMPLE_DESC SampleDesc;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE2D_DESC;
-
-typedef struct D3D10_TEXTURE3D_DESC {
-    UINT Width;
-    UINT Height;
-    UINT Depth;
-    UINT MipLevels;
-    DXGI_FORMAT Format;
-    D3D10_USAGE Usage;
-    UINT BindFlags;
-    UINT CPUAccessFlags;
-    UINT MiscFlags;
-} D3D10_TEXTURE3D_DESC;
-
-typedef enum D3D10_DSV_DIMENSION
-{
-    D3D10_DSV_DIMENSION_UNKNOWN,
-    D3D10_DSV_DIMENSION_TEXTURE1D,
-    D3D10_DSV_DIMENSION_TEXTURE1DARRAY,
-    D3D10_DSV_DIMENSION_TEXTURE2D,
-    D3D10_DSV_DIMENSION_TEXTURE2DARRAY,
-    D3D10_DSV_DIMENSION_TEXTURE2DMS,
-    D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY,
-} D3D10_DSV_DIMENSION;
-
-typedef struct D3D10_TEX1D_DSV {
-    UINT MipSlice;
-} D3D10_TEX1D_DSV;
-
-typedef struct D3D10_TEX1D_ARRAY_DSV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_DSV;
-
-typedef struct D3D10_TEX2D_DSV {
-    UINT MipSlice;
-} D3D10_TEX2D_DSV;
-
-typedef struct D3D10_TEX2D_ARRAY_DSV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_DSV;
-
-typedef struct D3D10_TEX2DMS_DSV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_DSV;
-
-typedef struct D3D10_TEX2DMS_ARRAY_DSV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_DSV;
-
-typedef struct D3D10_DEPTH_STENCIL_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_DSV_DIMENSION ViewDimension;
-    union {
-        D3D10_TEX1D_DSV Texture1D;
-        D3D10_TEX1D_ARRAY_DSV Texture1DArray;
-        D3D10_TEX2D_DSV Texture2D;
-        D3D10_TEX2D_ARRAY_DSV Texture2DArray;
-        D3D10_TEX2DMS_DSV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray;
-    } DUMMYUNIONNAME;
-} D3D10_DEPTH_STENCIL_VIEW_DESC;
-
-typedef enum D3D10_RTV_DIMENSION {
-    D3D10_RTV_DIMENSION_UNKNOWN,
-    D3D10_RTV_DIMENSION_BUFFER,
-    D3D10_RTV_DIMENSION_TEXTURE1D,
-    D3D10_RTV_DIMENSION_TEXTURE1DARRAY,
-    D3D10_RTV_DIMENSION_TEXTURE2D,
-    D3D10_RTV_DIMENSION_TEXTURE2DARRAY,
-    D3D10_RTV_DIMENSION_TEXTURE2DMS,
-    D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY,
-    D3D10_RTV_DIMENSION_TEXTURE3D,
-} D3D10_RTV_DIMENSION;
-
-typedef struct D3D10_BUFFER_RTV {
-    UINT ElementOffset;
-    UINT ElementWidth;
-} D3D10_BUFFER_RTV;
-
-typedef struct D3D10_TEX1D_RTV {
-    UINT MipSlice;
-} D3D10_TEX1D_RTV;
-
-typedef struct D3D10_TEX1D_ARRAY_RTV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_RTV;
-
-typedef struct D3D10_TEX2D_RTV {
-    UINT MipSlice;
-} D3D10_TEX2D_RTV;
-
-typedef struct D3D10_TEX2D_ARRAY_RTV {
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_RTV;
-
-typedef struct D3D10_TEX2DMS_RTV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_RTV;
-
-typedef struct D3D10_TEX2DMS_ARRAY_RTV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_RTV;
-
-typedef struct D3D10_TEX3D_RTV {
-    UINT MipSlice;
-    UINT FirstWSlice;
-    UINT WSize;
-} D3D10_TEX3D_RTV;
-
-typedef struct D3D10_RENDER_TARGET_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_RTV_DIMENSION ViewDimension;
-    union {
-        D3D10_BUFFER_RTV Buffer;
-        D3D10_TEX1D_RTV Texture1D;
-        D3D10_TEX1D_ARRAY_RTV Texture1DArray;
-        D3D10_TEX2D_RTV Texture2D;
-        D3D10_TEX2D_ARRAY_RTV Texture2DArray;
-        D3D10_TEX2DMS_RTV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray;
-        D3D10_TEX3D_RTV Texture3D;
-    } DUMMYUNIONNAME;
-} D3D10_RENDER_TARGET_VIEW_DESC;
-
-typedef enum D3D10_SRV_DIMENSION {
-    D3D10_SRV_DIMENSION_UNKNOWN,
-    D3D10_SRV_DIMENSION_BUFFER,
-    D3D10_SRV_DIMENSION_TEXTURE1D,
-    D3D10_SRV_DIMENSION_TEXTURE1DARRAY,
-    D3D10_SRV_DIMENSION_TEXTURE2D,
-    D3D10_SRV_DIMENSION_TEXTURE2DARRAY,
-    D3D10_SRV_DIMENSION_TEXTURE2DMS,
-    D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY,
-    D3D10_SRV_DIMENSION_TEXTURE3D,
-    D3D10_SRV_DIMENSION_TEXTURECUBE,
-} D3D10_SRV_DIMENSION;
-
-typedef struct D3D10_BUFFER_SRV {
-    UINT ElementOffset;
-    UINT ElementWidth;
-} D3D10_BUFFER_SRV;
-
-typedef struct D3D10_TEX1D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX1D_SRV;
-
-typedef struct D3D10_TEX1D_ARRAY_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX1D_ARRAY_SRV;
-
-typedef struct D3D10_TEX2D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX2D_SRV;
-
-typedef struct D3D10_TEX2D_ARRAY_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2D_ARRAY_SRV;
-
-typedef struct D3D10_TEX2DMS_SRV {
-    UINT UnusedField_NothingToDefine;
-} D3D10_TEX2DMS_SRV;
-
-typedef struct D3D10_TEX2DMS_ARRAY_SRV {
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D10_TEX2DMS_ARRAY_SRV;
-
-typedef struct D3D10_TEX3D_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEX3D_SRV;
-
-typedef struct D3D10_TEXCUBE_SRV {
-    UINT MostDetailedMip;
-    UINT MipLevels;
-} D3D10_TEXCUBE_SRV;
-
-typedef struct D3D10_SHADER_RESOURCE_VIEW_DESC {
-    DXGI_FORMAT Format;
-    D3D10_SRV_DIMENSION ViewDimension;
-    union {
-        D3D10_BUFFER_SRV Buffer;
-        D3D10_TEX1D_SRV Texture1D;
-        D3D10_TEX1D_ARRAY_SRV Texture1DArray;
-        D3D10_TEX2D_SRV Texture2D;
-        D3D10_TEX2D_ARRAY_SRV Texture2DArray;
-        D3D10_TEX2DMS_SRV Texture2DMS;
-        D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
-        D3D10_TEX3D_SRV Texture3D;
-        D3D10_TEXCUBE_SRV TextureCube;
-    } DUMMYUNIONNAME;
-} D3D10_SHADER_RESOURCE_VIEW_DESC;
-
-typedef struct D3D10_BOX {
-    UINT left;
-    UINT top;
-    UINT front;
-    UINT right;
-    UINT bottom;
-    UINT back;
-} D3D10_BOX;
-
-typedef struct D3D10_SUBRESOURCE_DATA {
-    const void *pSysMem;
-    UINT SysMemPitch;
-    UINT SysMemSlicePitch;
-} D3D10_SUBRESOURCE_DATA;
-
-typedef struct D3D10_SO_DECLARATION_ENTRY {
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    BYTE StartComponent;
-    BYTE ComponentCount;
-    BYTE OutputSlot;
-} D3D10_SO_DECLARATION_ENTRY;
-
-typedef enum D3D10_INPUT_CLASSIFICATION {
-    D3D10_INPUT_PER_VERTEX_DATA,
-    D3D10_INPUT_PER_INSTANCE_DATA,
-} D3D10_INPUT_CLASSIFICATION;
-
-typedef struct D3D10_INPUT_ELEMENT_DESC {
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    DXGI_FORMAT Format;
-    UINT InputSlot;
-    UINT AlignedByteOffset;
-    D3D10_INPUT_CLASSIFICATION InputSlotClass;
-    UINT InstanceDataStepRate;
-} D3D10_INPUT_ELEMENT_DESC;
-
-typedef enum D3D10_QUERY {
-    D3D10_QUERY_EVENT,
-    D3D10_QUERY_OCCLUSION,
-    D3D10_QUERY_TIMESTAMP,
-    D3D10_QUERY_TIMESTAMP_DISJOINT,
-    D3D10_QUERY_PIPELINE_STATISTICS,
-    D3D10_QUERY_OCCLUSION_PREDICATE,
-    D3D10_QUERY_SO_STATISTICS,
-    D3D10_QUERY_SO_OVERFLOW_PREDICATE,
-} D3D10_QUERY;
-
-typedef struct D3D10_QUERY_DESC {
-    D3D10_QUERY Query;
-    UINT MiscFlags;
-} D3D10_QUERY_DESC;
-
-typedef enum D3D10_PRIMITIVE_TOPOLOGY {
-    D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED         = 0,
-    D3D10_PRIMITIVE_TOPOLOGY_POINTLIST         = 1,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST          = 2,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP         = 3,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST      = 4,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP     = 5,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ      = 10,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ     = 11,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ  = 12,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13
-} D3D10_PRIMITIVE_TOPOLOGY;
-
-typedef RECT D3D10_RECT;
-
-typedef struct D3D10_VIEWPORT {
-    INT TopLeftX;
-    INT TopLeftY;
-    UINT Width;
-    UINT Height;
-    FLOAT MinDepth;
-    FLOAT MaxDepth;
-} D3D10_VIEWPORT;
-
-typedef struct D3D10_MAPPED_TEXTURE2D {
-    void *pData;
-    UINT RowPitch;
-} D3D10_MAPPED_TEXTURE2D;
-
-typedef struct D3D10_MAPPED_TEXTURE3D {
-    void *pData;
-    UINT RowPitch;
-    UINT DepthPitch;
-} D3D10_MAPPED_TEXTURE3D;
-
-typedef enum D3D10_BIND_FLAG {
-    D3D10_BIND_VERTEX_BUFFER   = 0x1,
-    D3D10_BIND_INDEX_BUFFER    = 0x2,
-    D3D10_BIND_CONSTANT_BUFFER = 0x4,
-    D3D10_BIND_SHADER_RESOURCE = 0x8,
-    D3D10_BIND_STREAM_OUTPUT   = 0x10,
-    D3D10_BIND_RENDER_TARGET   = 0x20,
-    D3D10_BIND_DEPTH_STENCIL   = 0x40
-} D3D10_BIND_FLAG;
-
-typedef enum D3D10_CPU_ACCESS_FLAG {
-    D3D10_CPU_ACCESS_WRITE = 0x10000,
-    D3D10_CPU_ACCESS_READ  = 0x20000
-} D3D10_CPU_ACCESS_FLAG;
-
-typedef enum D3D10_RESOURCE_MISC_FLAG {
-    D3D10_RESOURCE_MISC_GENERATE_MIPS = 0x1,
-    D3D10_RESOURCE_MISC_SHARED        = 0x2,
-    D3D10_RESOURCE_MISC_TEXTURECUBE   = 0x4
-} D3D10_RESOURCE_MISC_FLAG;
-
-typedef enum D3D10_MAP_FLAG {
-    D3D10_MAP_FLAG_DO_NOT_WAIT = 0x100000,
-} D3D10_MAP_FLAG;
-
-typedef enum D3D10_CLEAR_FLAG {
-    D3D10_CLEAR_DEPTH   = 0x1,
-    D3D10_CLEAR_STENCIL = 0x2
-} D3D10_CLEAR_FLAG;
-
-typedef enum D3D10_COLOR_WRITE_ENABLE {
-    D3D10_COLOR_WRITE_ENABLE_RED   = 0x1,
-    D3D10_COLOR_WRITE_ENABLE_GREEN = 0x2,
-    D3D10_COLOR_WRITE_ENABLE_BLUE  = 0x4,
-    D3D10_COLOR_WRITE_ENABLE_ALPHA = 0x8,
-    D3D10_COLOR_WRITE_ENABLE_ALL   = (D3D10_COLOR_WRITE_ENABLE_RED  | D3D10_COLOR_WRITE_ENABLE_GREEN |
-                                      D3D10_COLOR_WRITE_ENABLE_BLUE | D3D10_COLOR_WRITE_ENABLE_ALPHA)
-} D3D10_COLOR_WRITE_ENABLE;
-
-typedef enum D3D10_TEXTURECUBE_FACE {
-    D3D10_TEXTURECUBE_FACE_POSITIVE_X,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_X,
-    D3D10_TEXTURECUBE_FACE_POSITIVE_Y,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_Y,
-    D3D10_TEXTURECUBE_FACE_POSITIVE_Z,
-    D3D10_TEXTURECUBE_FACE_NEGATIVE_Z,
-} D3D10_TEXTURECUBE_FACE;
-
-typedef enum D3D10_ASYNC_GETDATA_FLAG {
-    D3D10_ASYNC_GETDATA_DONOTFLUSH = 0x1,
-} D3D10_ASYNC_GETDATA_FLAG;
-
-typedef enum D3D10_FILTER_TYPE {
-    D3D10_FILTER_TYPE_POINT,
-    D3D10_FILTER_TYPE_LINEAR
-} D3D10_FILTER_TYPE;
-
-typedef enum D3D10_QUERY_MISC_FLAG {
-    D3D10_QUERY_MISC_PREDICATEHINT = 0x1
-} D3D10_QUERY_MISC_FLAG;
-
-typedef struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT {
-    UINT64 Frequency;
-    BOOL Disjoint;
-} D3D10_QUERY_DATA_TIMESTAMP_DISJOINT;
-
-typedef struct D3D10_QUERY_DATA_PIPELINE_STATISTICS {
-    UINT64 IAVertices;
-    UINT64 IAPrimitives;
-    UINT64 VSInvocations;
-    UINT64 GSInvocations;
-    UINT64 GSPrimitives;
-    UINT64 CInvocations;
-    UINT64 CPrimitives;
-    UINT64 PSInvocations;
-} D3D10_QUERY_DATA_PIPELINE_STATISTICS;
-
-typedef struct D3D10_QUERY_DATA_SO_STATISTICS {
-    UINT64 NumPrimitivesWritten;
-    UINT64 PrimitivesStorageNeeded;
-} D3D10_QUERY_DATA_SO_STATISTICS;
-
-typedef enum D3D10_CREATE_DEVICE_FLAG {
-    D3D10_CREATE_DEVICE_SINGLETHREADED                           = 0x1,
-    D3D10_CREATE_DEVICE_DEBUG                                    = 0x2,
-    D3D10_CREATE_DEVICE_SWITCH_TO_REF                            = 0x4,
-    D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8
-} D3D10_CREATE_DEVICE_FLAG;
-
-/* Core */
-
-interface ID3D10Device;
-
-[
-    object,
-    local,
-    uuid(9b7e4c00-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10DeviceChild : IUnknown
-{
-        void GetDevice(
-            [out] ID3D10Device **ppDevice);
-        HRESULT GetPrivateData(
-            [in] REFGUID guid,
-            [in, out] UINT *pDataSize,
-            [out] void *pData);
-        HRESULT SetPrivateData(
-            [in] REFGUID guid,
-            [in] UINT DataSize,
-            [in] const void *pData);
-        HRESULT SetPrivateDataInterface(
-            [in] REFGUID guid,
-            [in] const IUnknown *pData);
-}
-
-/* Resource */
-
-[
-    object,
-    local,
-    uuid(9b7e4c01-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Resource : ID3D10DeviceChild
-{
-        void GetType(
-            [out] D3D10_RESOURCE_DIMENSION *rType);
-        void SetEvictionPriority(
-            [in] UINT EvictionPriority);
-        UINT GetEvictionPriority();
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c02-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Buffer : ID3D10Resource
-{
-        HRESULT Map(
-            [in] D3D10_MAP MapType,
-            [in] UINT MapFlags,
-            [out] void **ppData);
-        void Unmap();
-        void GetDesc(
-            [out] D3D10_BUFFER_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c03-342c-4106-a19f-4f2704f689F0)
-]
-interface ID3D10Texture1D : ID3D10Resource
-{
-        HRESULT Map(
-            [in] UINT Subresource,
-            [in] D3D10_MAP MapType,
-            [in] UINT MapFlags,
-            [out] void **ppData);
-        void Unmap(
-            [in] UINT Subresource);
-        void GetDesc(
-            [out] D3D10_TEXTURE1D_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c04-342c-4106-a19f-4f2704f689F0)
-]
-interface ID3D10Texture2D : ID3D10Resource
-{
-        HRESULT Map(
-            [in] UINT Subresource,
-            [in] D3D10_MAP MapType,
-            [in] UINT MapFlags,
-            [out] D3D10_MAPPED_TEXTURE2D *pMappedTex2D);
-        void Unmap(
-            [in] UINT Subresource);
-        void GetDesc(
-            [out] D3D10_TEXTURE2D_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c05-342c-4106-a19f-4f2704f689F0)
-]
-interface ID3D10Texture3D : ID3D10Resource
-{
-        HRESULT Map(
-            [in] UINT Subresource,
-            [in] D3D10_MAP MapType,
-            [in] UINT MapFlags,
-            [out] D3D10_MAPPED_TEXTURE3D *pMappedTex3D);
-        void Unmap(
-            [in] UINT Subresource);
-        void GetDesc(
-            [out] D3D10_TEXTURE3D_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(c902b03f-60a7-49ba-9936-2a3ab37a7e33)
-]
-interface ID3D10View : ID3D10DeviceChild
-{
-        void GetResource(
-            [out] ID3D10Resource **ppResource);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c09-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10DepthStencilView : ID3D10View
-{
-        void GetDesc(
-            [out] D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
-}
-
-
-[
-    object,
-    local,
-    uuid(9b7e4c08-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10RenderTargetView : ID3D10View
-{
-        void GetDesc(
-            [out] D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c07-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10ShaderResourceView  : ID3D10View
-{
-        void GetDesc(
-            [out] D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
-}
-
-/* Resource End */
-
-[
-    object,
-    local,
-    uuid(edad8d19-8a35-4d6d-8566-2ea276cde161)
-]
-interface ID3D10BlendState : ID3D10DeviceChild
-{
-    void GetDesc(
-            [out] D3D10_BLEND_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(2b4b1cc8-a4ad-41f8-8322-ca86fc3ec675)
-]
-interface ID3D10DepthStencilState : ID3D10DeviceChild
-{
-    void GetDesc(
-            [out] D3D10_DEPTH_STENCIL_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(6316be88-54cd-4040-ab44-20461bc81f68)
-]
-interface ID3D10GeometryShader  : ID3D10DeviceChild
-{
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0b-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10InputLayout  : ID3D10DeviceChild
-{
-}
-
-[
-    object,
-    local,
-    uuid(4968b601-9d00-4cde-8346-8e7f675819b6)
-]
-interface ID3D10PixelShader  : ID3D10DeviceChild
-{
-}
-
-[
-    object,
-    local,
-    uuid(a2a07292-89af-4345-be2e-c53d9fbb6e9f)
-]
-interface ID3D10RasterizerState  : ID3D10DeviceChild
-{
-    void GetDesc(
-            [out] D3D10_RASTERIZER_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0c-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10SamplerState  : ID3D10DeviceChild
-{
-    void GetDesc(
-            [out] D3D10_SAMPLER_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0a-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10VertexShader  : ID3D10DeviceChild
-{
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0d-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Asynchronous  : ID3D10DeviceChild
-{
-    void Begin();
-    void End();
-    HRESULT GetData(
-            [out] void *pData,
-            [in] UINT DataSize,
-            [in] UINT GetDataFlags);
-    UINT GetDataSize();
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c11-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Counter  : ID3D10Asynchronous
-{
-    void GetDesc(
-            [out] D3D10_COUNTER_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4C0e-342C-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Query : ID3D10Asynchronous
-{
-    void GetDesc(
-            [out] D3D10_QUERY_DESC *pDesc);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c10-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Predicate : ID3D10Query
-{
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4c0f-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Device : IUnknown
-{
-        void VSSetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppConstantBuffers);
-        void PSSetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [in] ID3D10ShaderResourceView *const *ppShaderResourceViews);
-        void PSSetShader(
-            [in] ID3D10PixelShader *pPixelShader);
-        void PSSetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [in]ID3D10SamplerState *const *ppSamplers);
-        void VSSetShader(
-            [in] ID3D10VertexShader *pVertexShader);
-        void DrawIndexed(
-            [in] UINT IndexCount,
-            [in] UINT StartIndexLocation,
-            [in] INT BaseVertexLocation);
-        void Draw(
-            [in] UINT VertexCount,
-            [in] UINT StartVertexLocation);
-        void PSSetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppConstantBuffers);
-        void IASetInputLayout(
-            [in] ID3D10InputLayout *pInputLayout);
-        void IASetVertexBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppVertexBuffers,
-            [in] const UINT *pStrides,
-            [in] const UINT *pOffsets);
-        void IASetIndexBuffer(
-            [in] ID3D10Buffer *pIndexBuffer,
-            [in] DXGI_FORMAT Format,
-            [in] UINT Offset);
-        void DrawIndexedInstanced(
-            [in] UINT IndexCountPerInstance,
-            [in] UINT InstanceCount,
-            [in] UINT StartIndexLocation,
-            [in] INT BaseVertexLocation,
-            [in] UINT StartInstanceLocation);
-        void DrawInstanced(
-            [in] UINT VertexCountPerInstance,
-            [in] UINT InstanceCount,
-            [in] UINT StartVertexLocation,
-            [in] UINT StartInstanceLocation);
-        void GSSetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppConstantBuffers);
-        void GSSetShader(
-            [in] ID3D10GeometryShader *pShader);
-        void IASetPrimitiveTopology(
-            [in] D3D10_PRIMITIVE_TOPOLOGY Topology);
-        void VSSetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [in] ID3D10ShaderResourceView *const *ppShaderResourceViews);
-        void VSSetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [in] ID3D10SamplerState *const *ppSamplers);
-        void SetPredication(
-            [in] ID3D10Predicate *pPredicate,
-            [in] BOOL PredicateValue);
-        void GSSetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [in] ID3D10ShaderResourceView * const *ppShaderResourceViews);
-        void GSSetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [in] ID3D10SamplerState *const *ppSamplers);
-        void OMSetRenderTargets(
-            [in] UINT NumViews,
-            [in] ID3D10RenderTargetView *const *ppRenderTargetViews,
-            [in] ID3D10DepthStencilView *pDepthStencilView);
-        void OMSetBlendState(
-            [in] ID3D10BlendState *pBlendState,
-            [in] const FLOAT BlendFactor[4],
-            [in] UINT SampleMask);
-        void OMSetDepthStencilState(
-            [in] ID3D10DepthStencilState *pDepthStencilState,
-            [in] UINT StencilRef);
-        void SOSetTargets(
-            [in] UINT NumBuffers,
-            [in] ID3D10Buffer *const *ppSOTargets,
-            [in] const UINT *pOffsets);
-        void DrawAuto();
-        void RSSetState(
-            [in] ID3D10RasterizerState *pRasterizerState);
-        void RSSetViewports(
-            [in] UINT NumViewports,
-            [in] const D3D10_VIEWPORT *pViewports);
-        void RSSetScissorRects(
-            [in] UINT NumRects,
-            [in] const D3D10_RECT *pRects);
-        void CopySubresourceRegion(
-            [in] ID3D10Resource *pDstResource,
-            [in] UINT DstSubresource,
-            [in] UINT DstX,
-            [in] UINT DstY,
-            [in] UINT DstZ,
-            [in] ID3D10Resource *pSrcResource,
-            [in] UINT SrcSubresource,
-            [in] const D3D10_BOX *pSrcBox);
-        void CopyResource(
-            [in] ID3D10Resource *pDstResource,
-            [in] ID3D10Resource *pSrcResource);
-        void UpdateSubresource(
-            [in] ID3D10Resource *pDstResource,
-            [in] UINT DstSubresource,
-            [in] const D3D10_BOX *pDstBox,
-            [in] const void *pSrcData,
-            [in] UINT SrcRowPitch,
-            [in] UINT SrcDepthPitch);
-        void ClearRenderTargetView(
-            [in] ID3D10RenderTargetView *pRenderTargetView,
-            [in] const FLOAT ColorRGBA[4]);
-        void ClearDepthStencilView(
-            [in] ID3D10DepthStencilView *pDepthStencilView,
-            [in] UINT ClearFlags,
-            [in] FLOAT Depth,
-            [in] UINT8 Stencil);
-        void GenerateMips(
-            [in] ID3D10ShaderResourceView *pShaderResourceView);
-        void ResolveSubresource(
-            [in] ID3D10Resource *pDstResource,
-            [in] UINT DstSubresource,
-            [in] ID3D10Resource *pSrcResource,
-            [in] UINT SrcSubresource,
-            [in] DXGI_FORMAT Format);
-        void VSGetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppConstantBuffers);
-        void PSGetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [out] ID3D10ShaderResourceView **ppShaderResourceViews);
-        void PSGetShader(
-            [out] ID3D10PixelShader **ppPixelShader);
-        void PSGetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [out] ID3D10SamplerState **ppSamplers);
-        void VSGetShader(
-            [out] ID3D10VertexShader **ppVertexShader);
-        void PSGetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppConstantBuffers);
-        void IAGetInputLayout(
-            [out] ID3D10InputLayout **ppInputLayout);
-        void IAGetVertexBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppVertexBuffers,
-            [out] UINT *pStrides,
-            [out] UINT *pOffsets);
-        void IAGetIndexBuffer(
-            [out] ID3D10Buffer **pIndexBuffer,
-            [out] DXGI_FORMAT *Format,
-            [out] UINT *Offset);
-        void GSGetConstantBuffers(
-            [in] UINT StartSlot,
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppConstantBuffers);
-        void GSGetShader(
-            [out] ID3D10GeometryShader **ppGeometryShader);
-        void IAGetPrimitiveTopology(
-            [out] D3D10_PRIMITIVE_TOPOLOGY *pTopology);
-        void VSGetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [out] ID3D10ShaderResourceView **ppShaderResourceViews);
-        void VSGetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [out] ID3D10SamplerState **ppSamplers);
-        void GetPredication(
-            [out] ID3D10Predicate **ppPredicate,
-            [out] BOOL *pPredicateValue);
-        void GSGetShaderResources(
-            [in] UINT StartSlot,
-            [in] UINT NumViews,
-            [out] ID3D10ShaderResourceView **ppShaderResourceViews);
-        void GSGetSamplers(
-            [in] UINT StartSlot,
-            [in] UINT NumSamplers,
-            [out] ID3D10SamplerState **ppSamplers);
-        void OMGetRenderTargets(
-            [in] UINT NumViews,
-            [out] ID3D10RenderTargetView **ppRenderTargetViews,
-            [out] ID3D10DepthStencilView **ppDepthStencilView);
-        void OMGetBlendState(
-            [out] ID3D10BlendState **ppBlendState,
-            [out] FLOAT BlendFactor[4],
-            [out] UINT *pSampleMask);
-        void OMGetDepthStencilState(
-            [out] ID3D10DepthStencilState **ppDepthStencilState,
-            [out] UINT *pStencilRef);
-        void SOGetTargets(
-            [in] UINT NumBuffers,
-            [out] ID3D10Buffer **ppSOTargets,
-            [out] UINT *pOffsets);
-        void RSGetState(
-            [out] ID3D10RasterizerState **ppRasterizerState);
-        void RSGetViewports(
-            [in, out] UINT *NumViewports,
-            [out] D3D10_VIEWPORT *pViewports);
-        void RSGetScissorRects(
-            [in, out] UINT *NumRects,
-            [out] D3D10_RECT *pRects);
-        HRESULT GetDeviceRemovedReason();
-        HRESULT SetExceptionMode(
-            [in] UINT RaiseFlags);
-        UINT GetExceptionMode();
-        HRESULT GetPrivateData(
-            [in] REFGUID guid,
-            [in, out] UINT *pDataSize,
-            [out] void *pData);
-        HRESULT SetPrivateData(
-            [in] REFGUID guid,
-            [in] UINT DataSize,
-            [in] const void *pData);
-        HRESULT SetPrivateDataInterface(
-            [in] REFGUID guid,
-            [in] const IUnknown *pData);
-        void ClearState();
-        void Flush();
-        HRESULT CreateBuffer(
-            [in] const D3D10_BUFFER_DESC *pDesc,
-            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
-            [out] ID3D10Buffer **ppBuffer);
-        HRESULT CreateTexture1D(
-            [in] const D3D10_TEXTURE1D_DESC *pDesc,
-            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
-            [out] ID3D10Texture1D **ppTexture1D);
-        HRESULT CreateTexture2D(
-            [in] const D3D10_TEXTURE2D_DESC *pDesc,
-            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
-            [out] ID3D10Texture2D **ppTexture2D);
-        HRESULT CreateTexture3D(
-            [in] const D3D10_TEXTURE3D_DESC *pDesc,
-            [in] const D3D10_SUBRESOURCE_DATA *pInitialData,
-            [out] ID3D10Texture3D **ppTexture3D);
-        HRESULT CreateShaderResourceView(
-            [in] ID3D10Resource *pResource,
-            [in] const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
-            [out] ID3D10ShaderResourceView **ppSRView);
-        HRESULT CreateRenderTargetView(
-            [in] ID3D10Resource *pResource,
-            [in] const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
-            [out] ID3D10RenderTargetView **ppRTView);
-        HRESULT CreateDepthStencilView(
-            [in] ID3D10Resource *pResource,
-            [in] const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
-            [out] ID3D10DepthStencilView **ppDepthStencilView);
-        HRESULT CreateInputLayout(
-            [in] const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
-            [in] UINT NumElements,
-            [in] const void *pShaderBytecodeWithInputSignature,
-            [in] SIZE_T BytecodeLength,
-            [out] ID3D10InputLayout **ppInputLayout);
-        HRESULT CreateVertexShader(
-            [in] const void *pShaderBytecode,
-            [in] SIZE_T BytecodeLength,
-            [out] ID3D10VertexShader **ppVertexShader);
-        HRESULT CreateGeometryShader(
-            [in] const void *pShaderBytecode,
-            [in] SIZE_T BytecodeLength,
-            [out] ID3D10GeometryShader **ppGeometryShader);
-        HRESULT CreateGeometryShaderWithStreamOutput(
-            [in] const void *pShaderBytecode,
-            [in] SIZE_T BytecodeLength,
-            [in] const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
-            [in] UINT NumEntries,
-            [in] UINT OutputStreamStride,
-            [out] ID3D10GeometryShader **ppGeometryShader);
-        HRESULT CreatePixelShader(
-            [in] const void *pShaderBytecode,
-            [in] SIZE_T BytecodeLength,
-            [out] ID3D10PixelShader **ppPixelShader);
-        HRESULT CreateBlendState(
-            [in] const D3D10_BLEND_DESC *pBlendStateDesc,
-            [out] ID3D10BlendState **ppBlendState);
-        HRESULT CreateDepthStencilState(
-            [in] const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
-            [out] ID3D10DepthStencilState **ppDepthStencilState);
-        HRESULT CreateRasterizerState(
-            [in] const D3D10_RASTERIZER_DESC *pRasterizerDesc,
-            [out] ID3D10RasterizerState **ppRasterizerState);
-        HRESULT CreateSamplerState(
-            [in] const D3D10_SAMPLER_DESC *pSamplerDesc,
-            [out] ID3D10SamplerState **ppSamplerState);
-        HRESULT CreateQuery(
-            [in] const D3D10_QUERY_DESC *pQueryDesc,
-            [out] ID3D10Query **ppQuery);
-        HRESULT CreatePredicate(
-            [in] const D3D10_QUERY_DESC *pPredicateDesc,
-            [out] ID3D10Predicate **ppPredicate);
-        HRESULT CreateCounter(
-            [in] const D3D10_COUNTER_DESC *pCounterDesc,
-            [out] ID3D10Counter **ppCounter);
-        HRESULT CheckFormatSupport(
-            [in] DXGI_FORMAT Format,
-            [out] UINT *pFormatSupport);
-        HRESULT CheckMultisampleQualityLevels(
-            [in] DXGI_FORMAT Format,
-            [in] UINT SampleCount,
-            [out] UINT *pNumQualityLevels);
-        void CheckCounterInfo(
-            [out] D3D10_COUNTER_INFO *pCounterInfo);
-        HRESULT CheckCounter(
-            [in] const D3D10_COUNTER_DESC *pDesc,
-            [out] D3D10_COUNTER_TYPE *pType,
-            [out] UINT *pActiveCounters,
-            [out] LPSTR szName,
-            [in, out] UINT *pNameLength,
-            [out] LPSTR szUnits,
-            [in, out] UINT *pUnitsLength,
-            [out] LPSTR szDescription,
-            [in, out] UINT *pDescriptionLength);
-        UINT GetCreationFlags();
-        HRESULT OpenSharedResource(
-            [in] HANDLE hResource,
-            [in] REFIID ReturnedInterface,
-            [out] void **ppResource);
-        void SetTextFilterSize(
-            [in] UINT Width,
-            [in] UINT Height);
-        void GetTextFilterSize(
-            [out] UINT *pWidth,
-            [out] UINT *pHeight);
-}
-
-[
-    object,
-    local,
-    uuid(9b7e4e00-342c-4106-a19f-4f2704f689f0)
-]
-interface ID3D10Multithread : IUnknown
-{
-        void Enter();
-        void Leave();
-        BOOL SetMultithreadProtected(
-            [in] BOOL bMTProtect);
-        BOOL GetMultithreadProtected();
-}
-
-cpp_quote("#include \"d3d10misc.h\"")
-cpp_quote("#include \"d3d10shader.h\"")
-cpp_quote("#include \"d3d10effect.h\"")
-/* TODO: Include "d310sdklayers.h" as soon as it exists */
diff --git a/misc/builddeps/win64/dx/include/d3d10effect.h b/misc/builddeps/win64/dx/include/d3d10effect.h
deleted file mode 100644 (file)
index e020583..0000000
+++ /dev/null
@@ -1,788 +0,0 @@
-/*
- * Copyright 2009 Henri Verbeet for CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- */
-
-#ifndef __WINE_D3D10EFFECT_H
-#define __WINE_D3D10EFFECT_H
-
-#include "d3d10.h"
-
-#define D3D10_EFFECT_VARIABLE_POOLED                0x1
-#define D3D10_EFFECT_VARIABLE_ANNOTATION            0x2
-#define D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT   0x4
-
-#ifndef D3D10_BYTES_FROM_BITS
-#define D3D10_BYTES_FROM_BITS(x) (((x) + 7) >> 3)
-#endif
-
-typedef struct _D3D10_EFFECT_TYPE_DESC
-{
-    LPCSTR TypeName;
-    D3D10_SHADER_VARIABLE_CLASS Class;
-    D3D10_SHADER_VARIABLE_TYPE Type;
-    UINT Elements;
-    UINT Members;
-    UINT Rows;
-    UINT Columns;
-    UINT PackedSize;
-    UINT UnpackedSize;
-    UINT Stride;
-} D3D10_EFFECT_TYPE_DESC;
-
-typedef struct _D3D10_EFFECT_VARIABLE_DESC
-{
-    LPCSTR Name;
-    LPCSTR Semantic;
-    UINT Flags;
-    UINT Annotations;
-    UINT BufferOffset;
-    UINT ExplicitBindPoint;
-} D3D10_EFFECT_VARIABLE_DESC;
-
-typedef struct _D3D10_TECHNIQUE_DESC
-{
-    LPCSTR Name;
-    UINT Passes;
-    UINT Annotations;
-} D3D10_TECHNIQUE_DESC;
-
-typedef struct _D3D10_STATE_BLOCK_MASK
-{
-    BYTE VS;
-    BYTE VSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
-    BYTE VSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
-    BYTE VSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
-    BYTE GS;
-    BYTE GSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
-    BYTE GSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
-    BYTE GSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
-    BYTE PS;
-    BYTE PSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
-    BYTE PSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
-    BYTE PSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
-    BYTE IAVertexBuffers[D3D10_BYTES_FROM_BITS(D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT)];
-    BYTE IAIndexBuffer;
-    BYTE IAInputLayout;
-    BYTE IAPrimitiveTopology;
-    BYTE OMRenderTargets;
-    BYTE OMDepthStencilState;
-    BYTE OMBlendState;
-    BYTE RSViewports;
-    BYTE RSScissorRects;
-    BYTE RSRasterizerState;
-    BYTE SOBuffers;
-    BYTE Predication;
-} D3D10_STATE_BLOCK_MASK;
-
-typedef struct _D3D10_EFFECT_DESC
-{
-    BOOL IsChildEffect;
-    UINT ConstantBuffers;
-    UINT SharedConstantBuffers;
-    UINT GlobalVariables;
-    UINT SharedGlobalVariables;
-    UINT Techniques;
-} D3D10_EFFECT_DESC;
-
-typedef struct _D3D10_EFFECT_SHADER_DESC
-{
-    const BYTE *pInputSignature;
-    BOOL IsInline;
-    const BYTE *pBytecode;
-    UINT BytecodeLength;
-    LPCSTR SODecl;
-    UINT NumInputSignatureEntries;
-    UINT NumOutputSignatureEntries;
-} D3D10_EFFECT_SHADER_DESC;
-
-typedef struct _D3D10_PASS_DESC
-{
-    LPCSTR Name;
-    UINT Annotations;
-    BYTE *pIAInputSignature;
-    SIZE_T IAInputSignatureSize;
-    UINT StencilRef;
-    UINT SampleMask;
-    FLOAT BlendFactor[4];
-} D3D10_PASS_DESC;
-
-typedef struct _D3D10_PASS_SHADER_DESC
-{
-    struct ID3D10EffectShaderVariable *pShaderVariable;
-    UINT ShaderIndex;
-} D3D10_PASS_SHADER_DESC;
-
-DEFINE_GUID(IID_ID3D10EffectType, 0x4e9e1ddc, 0xcd9d, 0x4772, 0xa8, 0x37, 0x00, 0x18, 0x0b, 0x9b, 0x88, 0xfd);
-
-#define INTERFACE ID3D10EffectType
-DECLARE_INTERFACE(ID3D10EffectType)
-{
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_TYPE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetMemberTypeByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetMemberTypeByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetMemberTypeBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(LPCSTR, GetMemberName)(THIS_ UINT index) PURE;
-    STDMETHOD_(LPCSTR, GetMemberSemantic)(THIS_ UINT index) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectVariable, 0xae897105, 0x00e6, 0x45bf, 0xbb, 0x8e, 0x28, 0x1d, 0xd6, 0xdb, 0x8e, 0x1b);
-
-#define INTERFACE ID3D10EffectVariable
-DECLARE_INTERFACE(ID3D10EffectVariable)
-{
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectConstantBuffer, 0x56648f4d, 0xcc8b, 0x4444, 0xa5, 0xad, 0xb5, 0xa3, 0xd7, 0x6e, 0x91, 0xb3);
-
-#define INTERFACE ID3D10EffectConstantBuffer
-DECLARE_INTERFACE_(ID3D10EffectConstantBuffer, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectConstantBuffer methods */
-    STDMETHOD(SetConstantBuffer)(THIS_ ID3D10Buffer *buffer) PURE;
-    STDMETHOD(GetConstantBuffer)(THIS_ ID3D10Buffer **buffer) PURE;
-    STDMETHOD(SetTextureBuffer)(THIS_ ID3D10ShaderResourceView *view) PURE;
-    STDMETHOD(GetTextureBuffer)(THIS_ ID3D10ShaderResourceView **view) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectScalarVariable, 0x00e48f7b, 0xd2c8, 0x49e8, 0xa8, 0x6c, 0x02, 0x2d, 0xee, 0x53, 0x43, 0x1f);
-
-#define INTERFACE ID3D10EffectScalarVariable
-DECLARE_INTERFACE_(ID3D10EffectScalarVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectScalarVariable methods */
-    STDMETHOD(SetFloat)(THIS_ float value) PURE;
-    STDMETHOD(GetFloat)(THIS_ float *value) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ float *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetFloatArray)(THIS_ float *values, UINT offset, UINT count) PURE;
-    STDMETHOD(SetInt)(THIS_ int value) PURE;
-    STDMETHOD(GetInt)(THIS_ int *value) PURE;
-    STDMETHOD(SetIntArray)(THIS_ int *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetIntArray)(THIS_ int *values, UINT offset, UINT count) PURE;
-    STDMETHOD(SetBool)(THIS_ BOOL value) PURE;
-    STDMETHOD(GetBool)(THIS_ BOOL *value) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ BOOL *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetBoolArray)(THIS_ BOOL *values, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectVectorVariable, 0x62b98c44, 0x1f82, 0x4c67, 0xbc, 0xd0, 0x72, 0xcf, 0x8f, 0x21, 0x7e, 0x81);
-
-#define INTERFACE ID3D10EffectVectorVariable
-DECLARE_INTERFACE_(ID3D10EffectVectorVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectVectorVariable methods */
-    STDMETHOD(SetBoolVector)(THIS_ BOOL *value) PURE;
-    STDMETHOD(SetIntVector)(THIS_ int *value) PURE;
-    STDMETHOD(SetFloatVector)(THIS_ float *value) PURE;
-    STDMETHOD(GetBoolVector)(THIS_ BOOL *value) PURE;
-    STDMETHOD(GetIntVector)(THIS_ int *value) PURE;
-    STDMETHOD(GetFloatVector)(THIS_ float *value) PURE;
-    STDMETHOD(SetBoolVectorArray)(THIS_ BOOL *values, UINT offset, UINT count) PURE;
-    STDMETHOD(SetIntVectorArray)(THIS_ int *values, UINT offset, UINT count) PURE;
-    STDMETHOD(SetFloatVectorArray)(THIS_ float *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetBoolVectorArray)(THIS_ BOOL *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetIntVectorArray)(THIS_ int *values, UINT offset, UINT count) PURE;
-    STDMETHOD(GetFloatVectorArray)(THIS_ float *values, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectMatrixVariable, 0x50666c24, 0xb82f, 0x4eed, 0xa1, 0x72, 0x5b, 0x6e, 0x7e, 0x85, 0x22, 0xe0);
-
-#define INTERFACE ID3D10EffectMatrixVariable
-DECLARE_INTERFACE_(ID3D10EffectMatrixVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectMatrixVariable methods */
-    STDMETHOD(SetMatrix)(THIS_ float *data) PURE;
-    STDMETHOD(GetMatrix)(THIS_ float *data) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ float *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetMatrixArray)(THIS_ float *data, UINT offset, UINT count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ float *data) PURE;
-    STDMETHOD(GetMatrixTranspose)(THIS_ float *data) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ float *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposeArray)(THIS_ float *data, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectStringVariable, 0x71417501, 0x8df9, 0x4e0a, 0xa7, 0x8a, 0x25, 0x5f, 0x97, 0x56, 0xba, 0xff);
-
-#define INTERFACE ID3D10EffectStringVariable
-DECLARE_INTERFACE_(ID3D10EffectStringVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectStringVariable methods */
-    STDMETHOD(GetString)(THIS_ LPCSTR *str) PURE;
-    STDMETHOD(GetStringArray)(THIS_ LPCSTR *strs, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectShaderResourceVariable,
-        0xc0a7157b, 0xd872, 0x4b1d, 0x80, 0x73, 0xef, 0xc2, 0xac, 0xd4, 0xb1, 0xfc);
-
-#define INTERFACE ID3D10EffectShaderResourceVariable
-DECLARE_INTERFACE_(ID3D10EffectShaderResourceVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectShaderResourceVariable methods */
-    STDMETHOD(SetResource)(THIS_ ID3D10ShaderResourceView *resource) PURE;
-    STDMETHOD(GetResource)(THIS_ ID3D10ShaderResourceView **resource) PURE;
-    STDMETHOD(SetResourceArray)(THIS_ ID3D10ShaderResourceView **resources, UINT offset, UINT count) PURE;
-    STDMETHOD(GetResourceArray)(THIS_ ID3D10ShaderResourceView **resources, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectRenderTargetViewVariable,
-        0x28ca0cc3, 0xc2c9, 0x40bb, 0xb5, 0x7f, 0x67, 0xb7, 0x37, 0x12, 0x2b, 0x17);
-
-#define INTERFACE ID3D10EffectRenderTargetViewVariable
-DECLARE_INTERFACE_(ID3D10EffectRenderTargetViewVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectRenderTargetViewVariable methods */
-    STDMETHOD(SetRenderTarget)(THIS_ ID3D10RenderTargetView *view) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ ID3D10RenderTargetView **view) PURE;
-    STDMETHOD(SetRenderTargetArray)(THIS_ ID3D10RenderTargetView **views, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRenderTargetArray)(THIS_ ID3D10RenderTargetView **views, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectDepthStencilViewVariable,
-        0x3e02c918, 0xcc79, 0x4985, 0xb6, 0x22, 0x2d, 0x92, 0xad, 0x70, 0x16, 0x23);
-
-#define INTERFACE ID3D10EffectDepthStencilViewVariable
-DECLARE_INTERFACE_(ID3D10EffectDepthStencilViewVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectDepthStencilViewVariable methods */
-    STDMETHOD(SetDepthStencil)(THIS_ ID3D10DepthStencilView *view) PURE;
-    STDMETHOD(GetDepthStencil)(THIS_ ID3D10DepthStencilView **view) PURE;
-    STDMETHOD(SetDepthStencilArray)(THIS_ ID3D10DepthStencilView **views, UINT offset, UINT count) PURE;
-    STDMETHOD(GetDepthStencilArray)(THIS_ ID3D10DepthStencilView **views, UINT offset, UINT count) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectShaderVariable, 0x80849279, 0xc799, 0x4797, 0x8c, 0x33, 0x04, 0x07, 0xa0, 0x7d, 0x9e, 0x06);
-
-#define INTERFACE ID3D10EffectShaderVariable
-DECLARE_INTERFACE_(ID3D10EffectShaderVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectShaderVariable methods */
-    STDMETHOD(GetShaderDesc)(THIS_ UINT index, D3D10_EFFECT_SHADER_DESC *desc) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ UINT index, ID3D10VertexShader **shader) PURE;
-    STDMETHOD(GetGeometryShader)(THIS_ UINT index, ID3D10GeometryShader **shader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ UINT index, ID3D10PixelShader **shader) PURE;
-    STDMETHOD(GetInputSignatureElementDesc)(THIS_ UINT shader_index, UINT element_index,
-            D3D10_SIGNATURE_PARAMETER_DESC *desc) PURE;
-    STDMETHOD(GetOutputSignatureElementDesc)(THIS_ UINT shader_index, UINT element_index,
-            D3D10_SIGNATURE_PARAMETER_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectBlendVariable, 0x1fcd2294, 0xdf6d, 0x4eae, 0x86, 0xb3, 0x0e, 0x91, 0x60, 0xcf, 0xb0, 0x7b);
-
-#define INTERFACE ID3D10EffectBlendVariable
-DECLARE_INTERFACE_(ID3D10EffectBlendVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectBlendVariable methods */
-    STDMETHOD(GetBlendState)(THIS_ UINT index, ID3D10BlendState **blend_state) PURE;
-    STDMETHOD(GetBackingStore)(THIS_ UINT index, D3D10_BLEND_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectDepthStencilVariable,
-        0xaf482368, 0x330a, 0x46a5, 0x9a, 0x5c, 0x01, 0xc7, 0x1a, 0xf2, 0x4c, 0x8d);
-
-#define INTERFACE ID3D10EffectDepthStencilVariable
-DECLARE_INTERFACE_(ID3D10EffectDepthStencilVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectDepthStencilVariable methods */
-    STDMETHOD(GetDepthStencilState)(THIS_ UINT index, ID3D10DepthStencilState **depth_stencil_state) PURE;
-    STDMETHOD(GetBackingStore)(THIS_ UINT index, D3D10_DEPTH_STENCIL_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectRasterizerVariable,
-        0x21af9f0e, 0x4d94, 0x4ea9, 0x97, 0x85, 0x2c, 0xb7, 0x6b, 0x8c, 0x0b, 0x34);
-
-#define INTERFACE ID3D10EffectRasterizerVariable
-DECLARE_INTERFACE_(ID3D10EffectRasterizerVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectRasterizerVariable methods */
-    STDMETHOD(GetRasterizerState)(THIS_ UINT index, ID3D10RasterizerState **rasterizer_state) PURE;
-    STDMETHOD(GetBackingStore)(THIS_ UINT index, D3D10_RASTERIZER_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectSamplerVariable,
-        0x6530d5c7, 0x07e9, 0x4271, 0xa4, 0x18, 0xe7, 0xce, 0x4b, 0xd1, 0xe4, 0x80);
-
-#define INTERFACE ID3D10EffectSamplerVariable
-DECLARE_INTERFACE_(ID3D10EffectSamplerVariable, ID3D10EffectVariable)
-{
-    /* ID3D10EffectVariable methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectType *, GetType)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetMemberBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetElement)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetParentConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectScalarVariable *, AsScalar)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectVectorVariable *, AsVector)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectMatrixVariable *, AsMatrix)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectStringVariable *, AsString)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderResourceVariable *, AsShaderResource)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRenderTargetViewVariable *, AsRenderTargetView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilViewVariable *, AsDepthStencilView)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, AsConstantBuffer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectShaderVariable *, AsShader)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectBlendVariable *, AsBlend)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectDepthStencilVariable *, AsDepthStencil)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectRasterizerVariable *, AsRasterizer)(THIS) PURE;
-    STDMETHOD_(struct ID3D10EffectSamplerVariable *, AsSampler)(THIS) PURE;
-    STDMETHOD(SetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    STDMETHOD(GetRawValue)(THIS_ void *data, UINT offset, UINT count) PURE;
-    /* ID3D10EffectSamplerVariable methods */
-    STDMETHOD(GetSampler)(THIS_ UINT index, ID3D10SamplerState **sampler) PURE;
-    STDMETHOD(GetBackingStore)(THIS_ UINT index, D3D10_SAMPLER_DESC *desc) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectTechnique, 0xdb122ce8, 0xd1c9, 0x4292, 0xb2, 0x37, 0x24, 0xed, 0x3d, 0xe8, 0xb1, 0x75);
-
-#define INTERFACE ID3D10EffectTechnique
-DECLARE_INTERFACE(ID3D10EffectTechnique)
-{
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_TECHNIQUE_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectPass *, GetPassByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectPass *, GetPassByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD(ComputeStateBlockMask)(THIS_ D3D10_STATE_BLOCK_MASK *mask) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10Effect, 0x51b0ca8b, 0xec0b, 0x4519, 0x87, 0x0d, 0x8e, 0xe1, 0xcb, 0x50, 0x17, 0xc7);
-
-#define INTERFACE ID3D10Effect
-DECLARE_INTERFACE_(ID3D10Effect, IUnknown)
-{
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /* ID3D10Effect methods */
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD_(BOOL, IsPool)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ ID3D10Device **device) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetConstantBufferByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectConstantBuffer *, GetConstantBufferByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetVariableByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetVariableByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetVariableBySemantic)(THIS_ LPCSTR semantic) PURE;
-    STDMETHOD_(struct ID3D10EffectTechnique *, GetTechniqueByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectTechnique *, GetTechniqueByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD(Optimize)(THIS) PURE;
-    STDMETHOD_(BOOL, IsOptimized)(THIS) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectPool, 0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
-
-#define INTERFACE ID3D10EffectPool
-DECLARE_INTERFACE_(ID3D10EffectPool, IUnknown)
-{
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /* ID3D10EffectPool methods */
-    STDMETHOD_(struct ID3D10Effect *, AsEffect)(THIS) PURE;
-};
-#undef INTERFACE
-
-DEFINE_GUID(IID_ID3D10EffectPass, 0x5cfbeb89, 0x1a06, 0x46e0, 0xb2, 0x82, 0xe3, 0xf9, 0xbf, 0xa3, 0x6a, 0x54);
-
-#define INTERFACE ID3D10EffectPass
-DECLARE_INTERFACE(ID3D10EffectPass)
-{
-    STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3D10_PASS_DESC *desc) PURE;
-    STDMETHOD(GetVertexShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *desc) PURE;
-    STDMETHOD(GetGeometryShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *desc) PURE;
-    STDMETHOD(GetPixelShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *desc) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByIndex)(THIS_ UINT index) PURE;
-    STDMETHOD_(struct ID3D10EffectVariable *, GetAnnotationByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD(Apply)(THIS_ UINT flags) PURE;
-    STDMETHOD(ComputeStateBlockMask)(THIS_ D3D10_STATE_BLOCK_MASK *mask) PURE;
-};
-#undef INTERFACE
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3D10CreateEffectFromMemory(void *data, SIZE_T data_size, UINT flags,
-        ID3D10Device *device, ID3D10EffectPool *effect_pool, ID3D10Effect **effect);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WINE_D3D10EFFECT_H */
diff --git a/misc/builddeps/win64/dx/include/d3d10misc.h b/misc/builddeps/win64/dx/include/d3d10misc.h
deleted file mode 100644 (file)
index 58a6d26..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2008 Henri Verbeet for CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3D10MISC_H__
-#define __D3D10MISC_H__
-
-#include "d3d10.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum D3D10_DRIVER_TYPE {
-    D3D10_DRIVER_TYPE_HARDWARE  = 0,
-    D3D10_DRIVER_TYPE_REFERENCE = 1,
-    D3D10_DRIVER_TYPE_NULL      = 2,
-    D3D10_DRIVER_TYPE_SOFTWARE  = 3,
-} D3D10_DRIVER_TYPE;
-
-HRESULT WINAPI D3D10CreateDevice(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
-        HMODULE swrast, UINT flags, UINT sdk_version, ID3D10Device **device);
-
-HRESULT WINAPI D3D10CreateDeviceAndSwapChain(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
-        HMODULE swrast, UINT flags, UINT sdk_version, DXGI_SWAP_CHAIN_DESC *swapchain_desc,
-        IDXGISwapChain **swapchain, ID3D10Device **device);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __D3D10MISC_H__ */
diff --git a/misc/builddeps/win64/dx/include/d3d10shader.h b/misc/builddeps/win64/dx/include/d3d10shader.h
deleted file mode 100644 (file)
index 99b123c..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright 2009 Henri Verbeet for CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- */
-
-#ifndef __WINE_D3D10SHADER_H
-#define __WINE_D3D10SHADER_H
-
-#include "d3d10.h"
-
-#define D3D10_SHADER_DEBUG                          0x0001
-#define D3D10_SHADER_SKIP_VALIDATION                0x0002
-#define D3D10_SHADER_SKIP_OPTIMIZATION              0x0004
-#define D3D10_SHADER_PACK_MATRIX_ROW_MAJOR          0x0008
-#define D3D10_SHADER_PACK_MATRIX_COLUMN_MAJOR       0x0010
-#define D3D10_SHADER_PARTIAL_PRECISION              0x0020
-#define D3D10_SHADER_FORCE_VS_SOFTWARE_NO_OPT       0x0040
-#define D3D10_SHADER_FORCE_PS_SOFTWARE_NO_OPT       0x0080
-#define D3D10_SHADER_NO_PRESHADER                   0x0100
-#define D3D10_SHADER_AVOID_FLOW_CONTROL             0x0200
-#define D3D10_SHADER_PREFER_FLOW_CONTROL            0x0400
-#define D3D10_SHADER_ENABLE_STRICTNESS              0x0800
-#define D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY 0x1000
-#define D3D10_SHADER_IEEE_STRICTNESS                0x2000
-
-typedef enum _D3D10_SHADER_VARIABLE_CLASS
-{
-    D3D10_SVC_SCALAR,
-    D3D10_SVC_VECTOR,
-    D3D10_SVC_MATRIX_ROWS,
-    D3D10_SVC_MATRIX_COLUMNS,
-    D3D10_SVC_OBJECT,
-    D3D10_SVC_STRUCT,
-    D3D10_SVC_FORCE_DWORD = 0x7fffffff
-} D3D10_SHADER_VARIABLE_CLASS, *LPD3D10_SHADER_VARIABLE_CLASS;
-
-typedef enum _D3D10_SHADER_VARIABLE_TYPE
-{
-    D3D10_SVT_VOID = 0,
-    D3D10_SVT_BOOL = 1,
-    D3D10_SVT_INT = 2,
-    D3D10_SVT_FLOAT = 3,
-    D3D10_SVT_STRING = 4,
-    D3D10_SVT_TEXTURE = 5,
-    D3D10_SVT_TEXTURE1D = 6,
-    D3D10_SVT_TEXTURE2D = 7,
-    D3D10_SVT_TEXTURE3D = 8,
-    D3D10_SVT_TEXTURECUBE = 9,
-    D3D10_SVT_SAMPLER = 10,
-    D3D10_SVT_PIXELSHADER = 15,
-    D3D10_SVT_VERTEXSHADER = 16,
-    D3D10_SVT_UINT = 19,
-    D3D10_SVT_UINT8 = 20,
-    D3D10_SVT_GEOMETRYSHADER = 21,
-    D3D10_SVT_RASTERIZER = 22,
-    D3D10_SVT_DEPTHSTENCIL = 23,
-    D3D10_SVT_BLEND = 24,
-    D3D10_SVT_BUFFER = 25,
-    D3D10_SVT_CBUFFER = 26,
-    D3D10_SVT_TBUFFER = 27,
-    D3D10_SVT_TEXTURE1DARRAY = 28,
-    D3D10_SVT_TEXTURE2DARRAY = 29,
-    D3D10_SVT_RENDERTARGETVIEW = 30,
-    D3D10_SVT_DEPTHSTENCILVIEW = 31,
-    D3D10_SVT_TEXTURE2DMS = 32,
-    D3D10_SVT_TEXTURE2DMSARRAY = 33,
-    D3D10_SVT_TEXTURECUBEARRAY = 34,
-    D3D10_SVT_FORCE_DWORD = 0x7fffffff
-} D3D10_SHADER_VARIABLE_TYPE, *LPD3D10_SHADER_VARIABLE_TYPE;
-
-typedef enum D3D10_CBUFFER_TYPE
-{
-    D3D10_CT_CBUFFER = 0,
-    D3D10_CT_TBUFFER = 1
-} D3D10_CBUFFER_TYPE, *LPD3D10_CBUFFER_TYPE;
-
-typedef enum D3D10_NAME
-{
-    D3D10_NAME_UNDEFINED = 0,
-    D3D10_NAME_POSITION = 1,
-    D3D10_NAME_CLIP_DISTANCE = 2,
-    D3D10_NAME_CULL_DISTANCE = 3,
-    D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
-    D3D10_NAME_VIEWPORT_ARRAY_INDEX = 5,
-    D3D10_NAME_VERTEX_ID = 6,
-    D3D10_NAME_PRIMITIVE_ID = 7,
-    D3D10_NAME_INSTANCE_ID = 8,
-    D3D10_NAME_IS_FRONT_FACE = 9,
-    D3D10_NAME_SAMPLE_INDEX = 10,
-    D3D10_NAME_TARGET = 64,
-    D3D10_NAME_DEPTH = 65,
-} D3D10_NAME;
-
-typedef enum D3D10_REGISTER_COMPONENT_TYPE
-{
-    D3D10_REGISTER_COMPONENT_UNKNOWN = 0,
-    D3D10_REGISTER_COMPONENT_UINT32 = 1,
-    D3D10_REGISTER_COMPONENT_SINT32 = 2,
-    D3D10_REGISTER_COMPONENT_FLOAT32 = 3,
-} D3D10_REGISTER_COMPONENT_TYPE;
-
-typedef struct _D3D10_SHADER_MACRO
-{
-    LPCSTR Name;
-    LPCSTR Definition;
-} D3D10_SHADER_MACRO, *LPD3D10_SHADER_MACRO;
-
-typedef struct _D3D10_SIGNATURE_PARAMETER_DESC
-{
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    UINT Register;
-    D3D10_NAME SystemValueType;
-    D3D10_REGISTER_COMPONENT_TYPE ComponentType;
-    BYTE Mask;
-    BYTE ReadWriteMask;
-} D3D10_SIGNATURE_PARAMETER_DESC;
-
-LPCSTR WINAPI D3D10GetVertexShaderProfile(ID3D10Device *device);
-LPCSTR WINAPI D3D10GetGeometryShaderProfile(ID3D10Device *device);
-LPCSTR WINAPI D3D10GetPixelShaderProfile(ID3D10Device *device);
-
-#endif /* __WINE_D3D10SHADER_H */
diff --git a/misc/builddeps/win64/dx/include/d3d8.h b/misc/builddeps/win64/dx/include/d3d8.h
deleted file mode 100644 (file)
index 46e0812..0000000
+++ /dev/null
@@ -1,1145 +0,0 @@
-/*
- * Copyright (C) 2002 Jason Edmeades
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D8_H
-#define __WINE_D3D8_H
-
-#ifndef DIRECT3D_VERSION
-#define DIRECT3D_VERSION  0x0800
-#endif
-
-#include <stdlib.h>
-
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-
-#ifndef __WINESRC__
-# include <windows.h>
-#endif
-
-#include <d3d8types.h>
-#include <d3d8caps.h>
-
-/*****************************************************************************
- * Behavior Flags for IDirect3D8::CreateDevice
- */
-#define D3DCREATE_FPU_PRESERVE                  0x00000002L
-#define D3DCREATE_MULTITHREADED                 0x00000004L
-#define D3DCREATE_PUREDEVICE                    0x00000010L
-#define D3DCREATE_SOFTWARE_VERTEXPROCESSING     0x00000020L
-#define D3DCREATE_HARDWARE_VERTEXPROCESSING     0x00000040L
-#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L
-
-/*****************************************************************************
- * Flags for SetPrivateData
- */
-#define D3DSPD_IUNKNOWN                         0x00000001L
-
-/*****************************************************************************
- * #defines and error codes
- */
-#define D3D_SDK_VERSION              220
-#define D3DADAPTER_DEFAULT           0
-#define D3DENUM_NO_WHQL_LEVEL        2
-
-#define _FACD3D  0x876
-#define MAKE_D3DHRESULT( code )  MAKE_HRESULT( 1, _FACD3D, code )
-
-/*
- * Direct3D Errors
- */
-#define D3D_OK                                  S_OK
-#define D3DERR_WRONGTEXTUREFORMAT               MAKE_D3DHRESULT(2072)
-#define D3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_D3DHRESULT(2073)
-#define D3DERR_UNSUPPORTEDCOLORARG              MAKE_D3DHRESULT(2074)
-#define D3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_D3DHRESULT(2075)
-#define D3DERR_UNSUPPORTEDALPHAARG              MAKE_D3DHRESULT(2076)
-#define D3DERR_TOOMANYOPERATIONS                MAKE_D3DHRESULT(2077)
-#define D3DERR_CONFLICTINGTEXTUREFILTER         MAKE_D3DHRESULT(2078)
-#define D3DERR_UNSUPPORTEDFACTORVALUE           MAKE_D3DHRESULT(2079)
-#define D3DERR_CONFLICTINGRENDERSTATE           MAKE_D3DHRESULT(2081)
-#define D3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_D3DHRESULT(2082)
-#define D3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_D3DHRESULT(2086)
-#define D3DERR_DRIVERINTERNALERROR              MAKE_D3DHRESULT(2087)
-
-#define D3DERR_NOTFOUND                         MAKE_D3DHRESULT(2150)
-#define D3DERR_MOREDATA                         MAKE_D3DHRESULT(2151)
-#define D3DERR_DEVICELOST                       MAKE_D3DHRESULT(2152)
-#define D3DERR_DEVICENOTRESET                   MAKE_D3DHRESULT(2153)
-#define D3DERR_NOTAVAILABLE                     MAKE_D3DHRESULT(2154)
-#define D3DERR_OUTOFVIDEOMEMORY                 MAKE_D3DHRESULT(380)
-#define D3DERR_INVALIDDEVICE                    MAKE_D3DHRESULT(2155)
-#define D3DERR_INVALIDCALL                      MAKE_D3DHRESULT(2156)
-#define D3DERR_DRIVERINVALIDCALL                MAKE_D3DHRESULT(2157)
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID(IID_IDirect3D8,              0x1DD9E8DA,0x1C77,0x4D40,0xB0,0xCF,0x98,0xFE,0xFD,0xFF,0x95,0x12);
-typedef struct IDirect3D8 *LPDIRECT3D8;
-
-DEFINE_GUID(IID_IDirect3DDevice8,        0x7385E5DF,0x8FE8,0x41D5,0x86,0xB6,0xD7,0xB4,0x85,0x47,0xB6,0xCF);
-typedef struct IDirect3DDevice8 *LPDIRECT3DDEVICE8;
-
-DEFINE_GUID(IID_IDirect3DResource8,      0x1B36BB7B,0x09B7,0x410A,0xB4,0x45,0x7D,0x14,0x30,0xD7,0xB3,0x3F);
-typedef struct IDirect3DResource8 *LPDIRECT3DRESOURCE8, *PDIRECT3DRESOURCE8;
-
-DEFINE_GUID(IID_IDirect3DVertexBuffer8,  0x8AEEEAC7,0x05F9,0x44D4,0xB5,0x91,0x00,0x0B,0x0D,0xF1,0xCB,0x95);
-typedef struct IDirect3DVertexBuffer8 *LPDIRECT3DVERTEXBUFFER8, *PDIRECT3DVERTEXBUFFER8;
-
-DEFINE_GUID(IID_IDirect3DVolume8,        0xBD7349F5,0x14F1,0x42E4,0x9C,0x79,0x97,0x23,0x80,0xDB,0x40,0xC0);
-typedef struct IDirect3DVolume8 *LPDIRECT3DVOLUME8, *PDIRECT3DVOLUME8;
-
-DEFINE_GUID(IID_IDirect3DSwapChain8,     0x928C088B,0x76B9,0x4C6B,0xA5,0x36,0xA5,0x90,0x85,0x38,0x76,0xCD);
-typedef struct IDirect3DSwapChain8 *LPDIRECT3DSWAPCHAIN8, *PDIRECT3DSWAPCHAIN8;
-
-DEFINE_GUID(IID_IDirect3DSurface8,       0xB96EEBCA,0xB326,0x4EA5,0x88,0x2F,0x2F,0xF5,0xBA,0xE0,0x21,0xDD);
-typedef struct IDirect3DSurface8 *LPDIRECT3DSURFACE8, *PDIRECT3DSURFACE8;
-
-DEFINE_GUID(IID_IDirect3DIndexBuffer8,   0x0E689C9A,0x053D,0x44A0,0x9D,0x92,0xDB,0x0E,0x3D,0x75,0x0F,0x86);
-typedef struct IDirect3DIndexBuffer8 *LPDIRECT3DINDEXBUFFER8, *PDIRECT3DINDEXBUFFER8;
-
-DEFINE_GUID(IID_IDirect3DBaseTexture8,   0xB4211CFA,0x51B9,0x4A9F,0xAB,0x78,0xDB,0x99,0xB2,0xBB,0x67,0x8E);
-typedef struct IDirect3DBaseTexture8 *LPDIRECT3DBASETEXTURE8, *PDIRECT3DBASETEXTURE8;
-
-DEFINE_GUID(IID_IDirect3DTexture8,       0xE4CDD575,0x2866,0x4F01,0xB1,0x2E,0x7E,0xEC,0xE1,0xEC,0x93,0x58);
-typedef struct IDirect3DTexture8 *LPDIRECT3DTEXTURE8, *PDIRECT3DTEXTURE8;
-
-DEFINE_GUID(IID_IDirect3DCubeTexture8,   0x3EE5B968,0x2ACA,0x4C34,0x8B,0xB5,0x7E,0x0C,0x3D,0x19,0xB7,0x50);
-typedef struct IDirect3DCubeTexture8 *LPDIRECT3DCUBETEXTURE8, *PDIRECT3DCUBETEXTURE8;
-
-DEFINE_GUID(IID_IDirect3DVolumeTexture8, 0x4B8AAAFA,0x140F,0x42BA,0x91,0x31,0x59,0x7E,0xAF,0xAA,0x2E,0xAD);
-typedef struct IDirect3DVolumeTexture8 *LPDIRECT3DVOLUMETEXTURE8, *PDIRECT3DVOLUMETEXTURE8;
-
-/*****************************************************************************
- * IDirect3D8 interface
- */
-#define INTERFACE IDirect3D8
-DECLARE_INTERFACE_(IDirect3D8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D8 methods ***/
-    STDMETHOD(RegisterSoftwareDevice)(THIS_ void * pInitializeFunction) PURE;
-    STDMETHOD_(UINT,GetAdapterCount             )(THIS) PURE;
-    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT  Adapter, DWORD  Flags, D3DADAPTER_IDENTIFIER8 * pIdentifier) PURE;
-    STDMETHOD_(UINT,GetAdapterModeCount)(THIS_ UINT  Adapter) PURE;
-    STDMETHOD(EnumAdapterModes)(THIS_ UINT  Adapter, UINT  Mode, D3DDISPLAYMODE * pMode) PURE;
-    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT  Adapter, D3DDISPLAYMODE * pMode) PURE;
-    STDMETHOD(CheckDeviceType)(THIS_ UINT  Adapter, D3DDEVTYPE  CheckType, D3DFORMAT  DisplayFormat, D3DFORMAT  BackBufferFormat, BOOL  Windowed) PURE;
-    STDMETHOD(CheckDeviceFormat)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  AdapterFormat, DWORD  Usage, D3DRESOURCETYPE  RType, D3DFORMAT  CheckFormat) PURE;
-    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  SurfaceFormat, BOOL  Windowed, D3DMULTISAMPLE_TYPE  MultiSampleType) PURE;
-    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  AdapterFormat, D3DFORMAT  RenderTargetFormat, D3DFORMAT  DepthStencilFormat) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DCAPS8 * pCaps) PURE;
-    STDMETHOD_(HMONITOR,GetAdapterMonitor)(THIS_ UINT  Adapter) PURE;
-    STDMETHOD(CreateDevice)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType,HWND  hFocusWindow, DWORD  BehaviorFlags, D3DPRESENT_PARAMETERS * pPresentationParameters, struct IDirect3DDevice8 ** ppReturnedDeviceInterface) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D8_QueryInterface(p,a,b)                    (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D8_AddRef(p)                                (p)->lpVtbl->AddRef(p)
-#define IDirect3D8_Release(p)                               (p)->lpVtbl->Release(p)
-/*** IDirect3D8 methods ***/
-#define IDirect3D8_RegisterSoftwareDevice(p,a)              (p)->lpVtbl->RegisterSoftwareDevice(p,a)
-#define IDirect3D8_GetAdapterCount(p)                       (p)->lpVtbl->GetAdapterCount(p)
-#define IDirect3D8_GetAdapterIdentifier(p,a,b,c)            (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
-#define IDirect3D8_GetAdapterModeCount(p,a)                 (p)->lpVtbl->GetAdapterModeCount(p,a)
-#define IDirect3D8_EnumAdapterModes(p,a,b,c)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c)
-#define IDirect3D8_GetAdapterDisplayMode(p,a,b)             (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
-#define IDirect3D8_CheckDeviceType(p,a,b,c,d,e)             (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
-#define IDirect3D8_CheckDeviceFormat(p,a,b,c,d,e,f)         (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
-#define IDirect3D8_CheckDeviceMultiSampleType(p,a,b,c,d,e)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e)
-#define IDirect3D8_CheckDepthStencilMatch(p,a,b,c,d,e)      (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
-#define IDirect3D8_GetDeviceCaps(p,a,b,c)                   (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
-#define IDirect3D8_GetAdapterMonitor(p,a)                   (p)->lpVtbl->GetAdapterMonitor(p,a)
-#define IDirect3D8_CreateDevice(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D8_QueryInterface(p,a,b)                    (p)->QueryInterface(a,b)
-#define IDirect3D8_AddRef(p)                                (p)->AddRef()
-#define IDirect3D8_Release(p)                               (p)->Release()
-/*** IDirect3D8 methods ***/
-#define IDirect3D8_RegisterSoftwareDevice(p,a)              (p)->RegisterSoftwareDevice(a)
-#define IDirect3D8_GetAdapterCount(p)                       (p)->GetAdapterCount()
-#define IDirect3D8_GetAdapterIdentifier(p,a,b,c)            (p)->GetAdapterIdentifier(a,b,c)
-#define IDirect3D8_GetAdapterModeCount(p,a)                 (p)->GetAdapterModeCount(a)
-#define IDirect3D8_EnumAdapterModes(p,a,b,c)                (p)->EnumAdapterModes(a,b,c)
-#define IDirect3D8_GetAdapterDisplayMode(p,a,b)             (p)->GetAdapterDisplayMode(a,b)
-#define IDirect3D8_CheckDeviceType(p,a,b,c,d,e)             (p)->CheckDeviceType(a,b,c,d,e)
-#define IDirect3D8_CheckDeviceFormat(p,a,b,c,d,e,f)         (p)->CheckDeviceFormat(a,b,c,d,e,f)
-#define IDirect3D8_CheckDeviceMultiSampleType(p,a,b,c,d,e)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e)
-#define IDirect3D8_CheckDepthStencilMatch(p,a,b,c,d,e)      (p)->CheckDepthStencilMatch(a,b,c,d,e)
-#define IDirect3D8_GetDeviceCaps(p,a,b,c)                   (p)->GetDeviceCaps(a,b,c)
-#define IDirect3D8_GetAdapterMonitor(p,a)                   (p)->GetAdapterMonitor(a)
-#define IDirect3D8_CreateDevice(p,a,b,c,d,e,f)              (p)->CreateDevice(a,b,c,d,e,f)
-#endif
-
-/*****************************************************************************
- * IDirect3DVolume8 interface
- */
-#define INTERFACE IDirect3DVolume8
-DECLARE_INTERFACE_(IDirect3DVolume8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVolume8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid,CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID   refguid,void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD(GetContainer)(THIS_ REFIID  riid, void ** ppContainer) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC * pDesc) PURE;
-    STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX * pLockedVolume,CONST D3DBOX * pBox, DWORD  Flags) PURE;
-    STDMETHOD(UnlockBox)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVolume8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVolume8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVolume8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVolume8 methods ***/
-#define IDirect3DVolume8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVolume8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVolume8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVolume8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVolume8_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
-#define IDirect3DVolume8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#define IDirect3DVolume8_LockBox(p,a,b,c)             (p)->lpVtbl->LockBox(p,a,b,c)
-#define IDirect3DVolume8_UnlockBox(p)                 (p)->lpVtbl->UnlockBox(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVolume8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVolume8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVolume8_Release(p)                   (p)->Release()
-/*** IDirect3DVolume8 methods ***/
-#define IDirect3DVolume8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVolume8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVolume8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVolume8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVolume8_GetContainer(p,a,b)          (p)->GetContainer(a,b)
-#define IDirect3DVolume8_GetDesc(p,a)                 (p)->GetDesc(a)
-#define IDirect3DVolume8_LockBox(p,a,b,c)             (p)->LockBox(a,b,c)
-#define IDirect3DVolume8_UnlockBox(p)                 (p)->UnlockBox()
-#endif
-
-/*****************************************************************************
- * IDirect3DSwapChain8 interface
- */
-#define INTERFACE IDirect3DSwapChain8
-DECLARE_INTERFACE_(IDirect3DSwapChain8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DSwapChain8 methods ***/
-    STDMETHOD(Present)(THIS_ CONST RECT * pSourceRect, CONST RECT * pDestRect, HWND  hDestWindowOverride,CONST RGNDATA * pDirtyRegion) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT  BackBuffer, D3DBACKBUFFER_TYPE  Type, struct IDirect3DSurface8 ** ppBackBuffer) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DSwapChain8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DSwapChain8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DSwapChain8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DSwapChain8 methods ***/
-#define IDirect3DSwapChain8_Present(p,a,b,c)             (p)->lpVtbl->Present(p,a,b,c)
-#define IDirect3DSwapChain8_GetBackBuffer(p,a,b,c)       (p)->lpVtbl->GetBackBuffer(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DSwapChain8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DSwapChain8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DSwapChain8_Release(p)                   (p)->Release()
-/*** IDirect3DSwapChain8 methods ***/
-#define IDirect3DSwapChain8_Present(p,a,b,c)             (p)->Present(a,b,c)
-#define IDirect3DSwapChain8_GetBackBuffer(p,a,b,c)       (p)->GetBackBuffer(a,b,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DSurface8 interface
- */
-#define INTERFACE IDirect3DSurface8
-DECLARE_INTERFACE_(IDirect3DSurface8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DSurface8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid,CONST void * pData,DWORD  SizeOfData,DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid,void * pData,DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD(GetContainer)(THIS_ REFIID  riid, void ** ppContainer) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC * pDesc) PURE;
-    STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT * pLockedRect, CONST RECT * pRect,DWORD  Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DSurface8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DSurface8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DSurface8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DSurface8 methods ***/
-#define IDirect3DSurface8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DSurface8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DSurface8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DSurface8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DSurface8_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
-#define IDirect3DSurface8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#define IDirect3DSurface8_LockRect(p,a,b,c)            (p)->lpVtbl->LockRect(p,a,b,c)
-#define IDirect3DSurface8_UnlockRect(p)                (p)->lpVtbl->UnlockRect(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DSurface8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DSurface8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DSurface8_Release(p)                   (p)->Release()
-/*** IDirect3DSurface8 methods ***/
-#define IDirect3DSurface8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DSurface8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DSurface8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DSurface8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DSurface8_GetContainer(p,a,b)          (p)->GetContainer(a,b)
-#define IDirect3DSurface8_GetDesc(p,a)                 (p)->GetDesc(a)
-#define IDirect3DSurface8_LockRect(p,a,b,c)            (p)->LockRect(a,b,c)
-#define IDirect3DSurface8_UnlockRect(p)                (p)->UnlockRect()
-#endif
-
-/*****************************************************************************
- * IDirect3DResource8 interface
- */
-#define INTERFACE IDirect3DResource8
-DECLARE_INTERFACE_(IDirect3DResource8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DResource8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DResource8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DResource8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DResource8 methods ***/
-#define IDirect3DResource8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DResource8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DResource8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DResource8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DResource8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DResource8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DResource8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DResource8_GetType(p)                   (p)->lpVtbl->GetType(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DResource8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DResource8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DResource8_Release(p)                   (p)->Release()
-/*** IDirect3DResource8 methods ***/
-#define IDirect3DResource8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DResource8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DResource8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DResource8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DResource8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DResource8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DResource8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DResource8_GetType(p)                   (p)->GetType()
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexBuffer8 interface
- */
-#define INTERFACE IDirect3DVertexBuffer8
-DECLARE_INTERFACE_(IDirect3DVertexBuffer8,IDirect3DResource8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DVertexBuffer8 methods ***/
-    STDMETHOD(Lock)(THIS_ UINT  OffsetToLock, UINT  SizeToLock, BYTE ** ppbData, DWORD  Flags) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC  * pDesc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexBuffer8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexBuffer8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexBuffer8 methods: IDirect3DResource8 ***/
-#define IDirect3DVertexBuffer8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVertexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVertexBuffer8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVertexBuffer8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVertexBuffer8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DVertexBuffer8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DVertexBuffer8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DVertexBuffer8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DVertexBuffer8 methods ***/
-#define IDirect3DVertexBuffer8_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirect3DVertexBuffer8_Unlock(p)                    (p)->lpVtbl->Unlock(p)
-#define IDirect3DVertexBuffer8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVertexBuffer8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVertexBuffer8_Release(p)                   (p)->Release()
-/*** IDirect3DVertexBuffer8 methods: IDirect3DResource8 ***/
-#define IDirect3DVertexBuffer8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVertexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVertexBuffer8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVertexBuffer8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVertexBuffer8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DVertexBuffer8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DVertexBuffer8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DVertexBuffer8_GetType(p)                   (p)->GetType()
-/*** IDirect3DVertexBuffer8 methods ***/
-#define IDirect3DVertexBuffer8_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirect3DVertexBuffer8_Unlock(p)                    (p)->Unlock()
-#define IDirect3DVertexBuffer8_GetDesc(p,a)                 (p)->GetDesc(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DIndexBuffer8 interface
- */
-#define INTERFACE IDirect3DIndexBuffer8
-DECLARE_INTERFACE_(IDirect3DIndexBuffer8,IDirect3DResource8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DIndexBuffer8 methods ***/
-    STDMETHOD(Lock)(THIS_ UINT  OffsetToLock, UINT  SizeToLock, BYTE ** ppbData, DWORD  Flags) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC * pDesc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DIndexBuffer8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DIndexBuffer8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DIndexBuffer8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DIndexBuffer8 methods: IDirect3DResource8 ***/
-#define IDirect3DIndexBuffer8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DIndexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DIndexBuffer8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DIndexBuffer8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DIndexBuffer8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DIndexBuffer8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DIndexBuffer8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DIndexBuffer8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DIndexBuffer8 methods ***/
-#define IDirect3DIndexBuffer8_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirect3DIndexBuffer8_Unlock(p)                    (p)->lpVtbl->Unlock(p)
-#define IDirect3DIndexBuffer8_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DIndexBuffer8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DIndexBuffer8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DIndexBuffer8_Release(p)                   (p)->Release()
-/*** IDirect3DIndexBuffer8 methods: IDirect3DResource8 ***/
-#define IDirect3DIndexBuffer8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DIndexBuffer8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DIndexBuffer8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DIndexBuffer8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DIndexBuffer8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DIndexBuffer8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DIndexBuffer8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DIndexBuffer8_GetType(p)                   (p)->GetType()
-/*** IDirect3DIndexBuffer8 methods ***/
-#define IDirect3DIndexBuffer8_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirect3DIndexBuffer8_Unlock(p)                    (p)->Unlock()
-#define IDirect3DIndexBuffer8_GetDesc(p,a)                 (p)->GetDesc(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DBaseTexture8 interface
- */
-#define INTERFACE IDirect3DBaseTexture8
-DECLARE_INTERFACE_(IDirect3DBaseTexture8,IDirect3DResource8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture8 methods ***/
-    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
-    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DBaseTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DBaseTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DBaseTexture8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DBaseTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DBaseTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DBaseTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DBaseTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DBaseTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DBaseTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DBaseTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DBaseTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DBaseTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DBaseTexture8 methods ***/
-#define IDirect3DBaseTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DBaseTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
-#define IDirect3DBaseTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DBaseTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DBaseTexture8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DBaseTexture8_Release(p)                   (p)->Release()
-/*** IDirect3DBaseTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DBaseTexture8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DBaseTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DBaseTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DBaseTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DBaseTexture8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DBaseTexture8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DBaseTexture8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DBaseTexture8_GetType(p)                   (p)->GetType()
-/*** IDirect3DBaseTexture8 methods ***/
-#define IDirect3DBaseTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
-#define IDirect3DBaseTexture8_GetLOD(p)                    (p)->GetLOD()
-#define IDirect3DBaseTexture8_GetLevelCount(p)             (p)->GetLevelCount()
-#endif
-
-/*****************************************************************************
- * IDirect3DCubeTexture8 interface
- */
-#define INTERFACE IDirect3DCubeTexture8
-DECLARE_INTERFACE_(IDirect3DCubeTexture8,IDirect3DBaseTexture8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture8 methods ***/
-    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
-    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
-    /*** IDirect3DCubeTexture8 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT  Level,D3DSURFACE_DESC * pDesc) PURE;
-    STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES  FaceType,UINT  Level,IDirect3DSurface8 ** ppCubeMapSurface) PURE;
-    STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES  FaceType,UINT  Level,D3DLOCKED_RECT * pLockedRect,CONST RECT * pRect,DWORD  Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES  FaceType,UINT  Level) PURE;
-    STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES  FaceType,CONST RECT * pDirtyRect) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DCubeTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DCubeTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DCubeTexture8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DCubeTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DCubeTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DCubeTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DCubeTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DCubeTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DCubeTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DCubeTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DCubeTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DCubeTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DCubeTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DCubeTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DCubeTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
-#define IDirect3DCubeTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
-/*** IDirect3DCubeTexture8 methods ***/
-#define IDirect3DCubeTexture8_GetLevelDesc(p,a,b)          (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DCubeTexture8_GetCubeMapSurface(p,a,b,c)   (p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
-#define IDirect3DCubeTexture8_LockRect(p,a,b,c,d,e)        (p)->lpVtbl->LockRect(p,a,b,c,d,e)
-#define IDirect3DCubeTexture8_UnlockRect(p,a,b)            (p)->lpVtbl->UnlockRect(p,a,b)
-#define IDirect3DCubeTexture8_AddDirtyRect(p,a,b)          (p)->lpVtbl->AddDirtyRect(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DCubeTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DCubeTexture8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DCubeTexture8_Release(p)                   (p)->Release()
-/*** IDirect3DCubeTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DCubeTexture8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DCubeTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DCubeTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DCubeTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DCubeTexture8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DCubeTexture8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DCubeTexture8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DCubeTexture8_GetType(p)                   (p)->GetType()
-/*** IDirect3DCubeTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DCubeTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
-#define IDirect3DCubeTexture8_GetLOD(p)                    (p)->GetLOD()
-#define IDirect3DCubeTexture8_GetLevelCount(p)             (p)->GetLevelCount()
-/*** IDirect3DCubeTexture8 methods ***/
-#define IDirect3DCubeTexture8_GetLevelDesc(p,a,b)          (p)->GetLevelDesc(a,b)
-#define IDirect3DCubeTexture8_GetCubeMapSurface(p,a,b,c)   (p)->GetCubeMapSurface(a,b,c)
-#define IDirect3DCubeTexture8_LockRect(p,a,b,c,d,e)        (p)->LockRect(a,b,c,d,e)
-#define IDirect3DCubeTexture8_UnlockRect(p,a,b)            (p)->UnlockRect(a,b)
-#define IDirect3DCubeTexture8_AddDirtyRect(p,a,b)          (p)->AddDirtyRect(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DTexture8 interface
- */
-#define INTERFACE IDirect3DTexture8
-DECLARE_INTERFACE_(IDirect3DTexture8,IDirect3DBaseTexture8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture8 methods ***/
-    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
-    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
-    /*** IDirect3DTexture8 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT  Level,D3DSURFACE_DESC * pDesc) PURE;
-    STDMETHOD(GetSurfaceLevel)(THIS_ UINT  Level,IDirect3DSurface8 ** ppSurfaceLevel) PURE;
-    STDMETHOD(LockRect)(THIS_ UINT  Level,D3DLOCKED_RECT * pLockedRect,CONST RECT * pRect,DWORD  Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS_ UINT  Level) PURE;
-    STDMETHOD(AddDirtyRect)(THIS_ CONST RECT * pDirtyRect) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DTexture8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
-#define IDirect3DTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
-/*** IDirect3DTexture8 methods ***/
-#define IDirect3DTexture8_GetLevelDesc(p,a,b)          (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DTexture8_GetSurfaceLevel(p,a,b)       (p)->lpVtbl->GetSurfaceLevel(p,a,b)
-#define IDirect3DTexture8_LockRect(p,a,b,c,d)          (p)->lpVtbl->LockRect(p,a,b,c,d)
-#define IDirect3DTexture8_UnlockRect(p,a)              (p)->lpVtbl->UnlockRect(p,a)
-#define IDirect3DTexture8_AddDirtyRect(p,a)            (p)->lpVtbl->AddDirtyRect(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DTexture8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DTexture8_Release(p)                   (p)->Release()
-/*** IDirect3DTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DTexture8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DTexture8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DTexture8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DTexture8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DTexture8_GetType(p)                   (p)->GetType()
-/*** IDirect3DTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
-#define IDirect3DTexture8_GetLOD(p)                    (p)->GetLOD()
-#define IDirect3DTexture8_GetLevelCount(p)             (p)->GetLevelCount()
-/*** IDirect3DTexture8 methods ***/
-#define IDirect3DTexture8_GetLevelDesc(p,a,b)          (p)->GetLevelDesc(a,b)
-#define IDirect3DTexture8_GetSurfaceLevel(p,a,b)       (p)->GetSurfaceLevel(a,b)
-#define IDirect3DTexture8_LockRect(p,a,b,c,d)          (p)->LockRect(a,b,c,d)
-#define IDirect3DTexture8_UnlockRect(p,a)              (p)->UnlockRect(a)
-#define IDirect3DTexture8_AddDirtyRect(p,a)            (p)->AddDirtyRect(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DVolumeTexture8 interface
- */
-#define INTERFACE IDirect3DVolumeTexture8
-DECLARE_INTERFACE_(IDirect3DVolumeTexture8,IDirect3DBaseTexture8)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource8 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice8 ** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID  refguid) PURE;
-    STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD  PriorityNew) PURE;
-    STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
-    STDMETHOD_(void,PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture8 methods ***/
-    STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD  LODNew) PURE;
-    STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
-    /*** IDirect3DVolumeTexture8 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT  Level,D3DVOLUME_DESC * pDesc) PURE;
-    STDMETHOD(GetVolumeLevel)(THIS_ UINT  Level,IDirect3DVolume8 ** ppVolumeLevel) PURE;
-    STDMETHOD(LockBox)(THIS_ UINT  Level,D3DLOCKED_BOX * pLockedVolume,CONST D3DBOX * pBox,DWORD  Flags) PURE;
-    STDMETHOD(UnlockBox)(THIS_ UINT  Level) PURE;
-    STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX * pDirtyBox) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVolumeTexture8_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVolumeTexture8_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVolumeTexture8_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVolumeTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DVolumeTexture8_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVolumeTexture8_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVolumeTexture8_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVolumeTexture8_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVolumeTexture8_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DVolumeTexture8_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DVolumeTexture8_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DVolumeTexture8_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DVolumeTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DVolumeTexture8_SetLOD(p,a)                  (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DVolumeTexture8_GetLOD(p)                    (p)->lpVtbl->GetLOD(p)
-#define IDirect3DVolumeTexture8_GetLevelCount(p)             (p)->lpVtbl->GetLevelCount(p)
-/*** IDirect3DVolumeTexture8 methods ***/
-#define IDirect3DVolumeTexture8_GetLevelDesc(p,a,b)          (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DVolumeTexture8_GetVolumeLevel(p,a,b)        (p)->lpVtbl->GetVolumeLevel(p,a,b)
-#define IDirect3DVolumeTexture8_LockBox(p,a,b,c,d)           (p)->lpVtbl->LockBox(p,a,b,c,d)
-#define IDirect3DVolumeTexture8_UnlockBox(p,a)               (p)->lpVtbl->UnlockBox(p,a)
-#define IDirect3DVolumeTexture8_AddDirtyBox(p,a)             (p)->lpVtbl->AddDirtyBox(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVolumeTexture8_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVolumeTexture8_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVolumeTexture8_Release(p)                   (p)->Release()
-/*** IDirect3DVolumeTexture8 methods: IDirect3DResource8 ***/
-#define IDirect3DVolumeTexture8_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVolumeTexture8_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVolumeTexture8_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVolumeTexture8_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVolumeTexture8_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DVolumeTexture8_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DVolumeTexture8_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DVolumeTexture8_GetType(p)                   (p)->GetType()
-/*** IDirect3DVolumeTexture8 methods: IDirect3DBaseTexture8 ***/
-#define IDirect3DVolumeTexture8_SetLOD(p,a)                  (p)->SetLOD(a)
-#define IDirect3DVolumeTexture8_GetLOD(p)                    (p)->GetLOD()
-#define IDirect3DVolumeTexture8_GetLevelCount(p)             (p)->GetLevelCount()
-/*** IDirect3DVolumeTexture8 methods ***/
-#define IDirect3DVolumeTexture8_GetLevelDesc(p,a,b)          (p)->GetLevelDesc(a,b)
-#define IDirect3DVolumeTexture8_GetVolumeLevel(p,a,b)        (p)->GetVolumeLevel(a,b)
-#define IDirect3DVolumeTexture8_LockBox(p,a,b,c,d)           (p)->LockBox(a,b,c,d)
-#define IDirect3DVolumeTexture8_UnlockBox(p,a)               (p)->UnlockBox(a)
-#define IDirect3DVolumeTexture8_AddDirtyBox(p,a)             (p)->AddDirtyBox(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DDevice8 interface
- */
-#define INTERFACE IDirect3DDevice8
-DECLARE_INTERFACE_(IDirect3DDevice8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice8 methods ***/
-    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
-    STDMETHOD_(UINT,GetAvailableTextureMem)(THIS) PURE;
-    STDMETHOD(ResourceManagerDiscardBytes)(THIS_ DWORD  Bytes) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ IDirect3D8 ** ppD3D8) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS8 * pCaps) PURE;
-    STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE * pMode) PURE;
-    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS  * pParameters) PURE;
-    STDMETHOD(SetCursorProperties)(THIS_ UINT  XHotSpot, UINT  YHotSpot, IDirect3DSurface8 * pCursorBitmap) PURE;
-    STDMETHOD_(void,SetCursorPosition)(THIS_ UINT  XScreenSpace, UINT  YScreenSpace,DWORD  Flags) PURE;
-    STDMETHOD_(BOOL,ShowCursor)(THIS_ BOOL  bShow) PURE;
-    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS * pPresentationParameters, IDirect3DSwapChain8 ** pSwapChain) PURE;
-    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS * pPresentationParameters) PURE;
-    STDMETHOD(Present)(THIS_ CONST RECT * pSourceRect,CONST RECT * pDestRect,HWND  hDestWindowOverride,CONST RGNDATA * pDirtyRegion) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT  BackBuffer,D3DBACKBUFFER_TYPE  Type,IDirect3DSurface8 ** ppBackBuffer) PURE;
-    STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS * pRasterStatus) PURE;
-    STDMETHOD_(void,SetGammaRamp)(THIS_ DWORD  Flags,CONST D3DGAMMARAMP * pRamp) PURE;
-    STDMETHOD_(void,GetGammaRamp)(THIS_ D3DGAMMARAMP * pRamp) PURE;
-    STDMETHOD(CreateTexture)(THIS_ UINT  Width,UINT  Height,UINT  Levels,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DTexture8 ** ppTexture) PURE;
-    STDMETHOD(CreateVolumeTexture)(THIS_ UINT  Width,UINT  Height,UINT  Depth,UINT  Levels,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DVolumeTexture8 ** ppVolumeTexture) PURE;
-    STDMETHOD(CreateCubeTexture)(THIS_ UINT  EdgeLength,UINT  Levels,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DCubeTexture8 ** ppCubeTexture) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ UINT  Length,DWORD  Usage,DWORD  FVF,D3DPOOL  Pool,IDirect3DVertexBuffer8 ** ppVertexBuffer) PURE;
-    STDMETHOD(CreateIndexBuffer)(THIS_ UINT  Length,DWORD  Usage,D3DFORMAT  Format,D3DPOOL  Pool,IDirect3DIndexBuffer8 ** ppIndexBuffer) PURE;
-    STDMETHOD(CreateRenderTarget)(THIS_ UINT  Width,UINT  Height,D3DFORMAT  Format,D3DMULTISAMPLE_TYPE  MultiSample,BOOL  Lockable,IDirect3DSurface8 ** ppSurface) PURE;
-    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT  Width,UINT  Height,D3DFORMAT  Format,D3DMULTISAMPLE_TYPE  MultiSample,IDirect3DSurface8 ** ppSurface) PURE;
-    STDMETHOD(CreateImageSurface)(THIS_ UINT  Width,UINT  Height,D3DFORMAT  Format,IDirect3DSurface8 ** ppSurface) PURE;
-    STDMETHOD(CopyRects)(THIS_ IDirect3DSurface8 * pSourceSurface,CONST RECT * pSourceRectsArray,UINT  cRects,IDirect3DSurface8 * pDestinationSurface,CONST POINT * pDestPointsArray) PURE;
-    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture8 * pSourceTexture,IDirect3DBaseTexture8 * pDestinationTexture) PURE;
-    STDMETHOD(GetFrontBuffer)(THIS_ IDirect3DSurface8 * pDestSurface) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ IDirect3DSurface8 * pRenderTarget,IDirect3DSurface8 * pNewZStencil) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ IDirect3DSurface8 ** ppRenderTarget) PURE;
-    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface8 ** ppZStencilSurface) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD  Count,CONST D3DRECT * pRects,DWORD  Flags,D3DCOLOR  Color,float  Z,DWORD  Stencil) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE  State,CONST D3DMATRIX * pMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE  State,D3DMATRIX * pMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE  State, CONST D3DMATRIX * pMatrix) PURE;
-    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT8 * pViewport) PURE;
-    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT8 * pViewport) PURE;
-    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL8 * pMaterial) PURE;
-    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL8 *pMaterial) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD  Index,CONST D3DLIGHT8 * pLight) PURE;
-    STDMETHOD(GetLight)(THIS_ DWORD  Index,D3DLIGHT8 * pLight) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD  Index,BOOL  Enable) PURE;
-    STDMETHOD(GetLightEnable)(THIS_ DWORD  Index,BOOL * pEnable) PURE;
-    STDMETHOD(SetClipPlane)(THIS_ DWORD  Index,CONST float * pPlane) PURE;
-    STDMETHOD(GetClipPlane)(THIS_ DWORD  Index,float * pPlane) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE  State,DWORD  Value) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE  State,DWORD * pValue) PURE;
-    STDMETHOD(BeginStateBlock)(THIS) PURE;
-    STDMETHOD(EndStateBlock)(THIS_ DWORD * pToken) PURE;
-    STDMETHOD(ApplyStateBlock)(THIS_ DWORD  Token) PURE;
-    STDMETHOD(CaptureStateBlock)(THIS_ DWORD  Token) PURE;
-    STDMETHOD(DeleteStateBlock)(THIS_ DWORD  Token) PURE;
-    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE  Type,DWORD * pToken) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS8 * pClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS8 * pClipStatus) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD  Stage,IDirect3DBaseTexture8 ** ppTexture) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD  Stage,IDirect3DBaseTexture8 * pTexture) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD  Stage,D3DTEXTURESTAGESTATETYPE  Type,DWORD * pValue) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD  Stage,D3DTEXTURESTAGESTATETYPE  Type,DWORD  Value) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ DWORD * pNumPasses) PURE;
-    STDMETHOD(GetInfo)(THIS_ DWORD  DevInfoID,void * pDevInfoStruct,DWORD  DevInfoStructSize) PURE;
-    STDMETHOD(SetPaletteEntries)(THIS_ UINT  PaletteNumber,CONST PALETTEENTRY * pEntries) PURE;
-    STDMETHOD(GetPaletteEntries)(THIS_ UINT  PaletteNumber,PALETTEENTRY * pEntries) PURE;
-    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT  PaletteNumber) PURE;
-    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT  * PaletteNumber) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  StartVertex,UINT  PrimitiveCount) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  minIndex,UINT  NumVertices,UINT  startIndex,UINT  primCount) PURE;
-    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  PrimitiveCount,CONST void * pVertexStreamZeroData,UINT  VertexStreamZeroStride) PURE;
-    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE  PrimitiveType,UINT  MinVertexIndex,UINT  NumVertexIndices,UINT  PrimitiveCount,CONST void * pIndexData,D3DFORMAT  IndexDataFormat,CONST void * pVertexStreamZeroData,UINT  VertexStreamZeroStride) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ UINT  SrcStartIndex,UINT  DestIndex,UINT  VertexCount,IDirect3DVertexBuffer8 * pDestBuffer,DWORD  Flags) PURE;
-    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD * pDeclaration,CONST DWORD * pFunction,DWORD * pHandle,DWORD  Usage) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ DWORD  Handle) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ DWORD * pHandle) PURE;
-    STDMETHOD(DeleteVertexShader)(THIS_ DWORD  Handle) PURE;
-    STDMETHOD(SetVertexShaderConstant)(THIS_ DWORD  Register,CONST void * pConstantData,DWORD  ConstantCount) PURE;
-    STDMETHOD(GetVertexShaderConstant)(THIS_ DWORD  Register,void * pConstantData,DWORD  ConstantCount) PURE;
-    STDMETHOD(GetVertexShaderDeclaration)(THIS_ DWORD  Handle,void * pData,DWORD * pSizeOfData) PURE;
-    STDMETHOD(GetVertexShaderFunction)(THIS_ DWORD  Handle,void * pData,DWORD * pSizeOfData) PURE;
-    STDMETHOD(SetStreamSource)(THIS_ UINT  StreamNumber,IDirect3DVertexBuffer8 * pStreamData,UINT  Stride) PURE;
-    STDMETHOD(GetStreamSource)(THIS_ UINT  StreamNumber,IDirect3DVertexBuffer8 ** ppStreamData,UINT * pStride) PURE;
-    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer8 * pIndexData,UINT  BaseVertexIndex) PURE;
-    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer8 ** ppIndexData,UINT * pBaseVertexIndex) PURE;
-    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD * pFunction,DWORD * pHandle) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ DWORD  Handle) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ DWORD * pHandle) PURE;
-    STDMETHOD(DeletePixelShader)(THIS_ DWORD  Handle) PURE;
-    STDMETHOD(SetPixelShaderConstant)(THIS_ DWORD  Register,CONST void * pConstantData,DWORD  ConstantCount) PURE;
-    STDMETHOD(GetPixelShaderConstant)(THIS_ DWORD  Register,void * pConstantData,DWORD  ConstantCount) PURE;
-    STDMETHOD(GetPixelShaderFunction)(THIS_ DWORD  Handle,void * pData,DWORD * pSizeOfData) PURE;
-    STDMETHOD(DrawRectPatch)(THIS_ UINT  Handle,CONST float * pNumSegs,CONST D3DRECTPATCH_INFO * pRectPatchInfo) PURE;
-    STDMETHOD(DrawTriPatch)(THIS_ UINT  Handle,CONST float * pNumSegs,CONST D3DTRIPATCH_INFO * pTriPatchInfo) PURE;
-    STDMETHOD(DeletePatch)(THIS_ UINT  Handle) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice8_QueryInterface(p,a,b)                     (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice8_AddRef(p)                                 (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice8_Release(p)                                (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice8 methods ***/
-#define IDirect3DDevice8_TestCooperativeLevel(p)                   (p)->lpVtbl->TestCooperativeLevel(p)
-#define IDirect3DDevice8_GetAvailableTextureMem(p)                 (p)->lpVtbl->GetAvailableTextureMem(p)
-#define IDirect3DDevice8_ResourceManagerDiscardBytes(p,a)          (p)->lpVtbl->ResourceManagerDiscardBytes(p,a)
-#define IDirect3DDevice8_GetDirect3D(p,a)                          (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice8_GetDeviceCaps(p,a)                        (p)->lpVtbl->GetDeviceCaps(p,a)
-#define IDirect3DDevice8_GetDisplayMode(p,a)                       (p)->lpVtbl->GetDisplayMode(p,a)
-#define IDirect3DDevice8_GetCreationParameters(p,a)                (p)->lpVtbl->GetCreationParameters(p,a)
-#define IDirect3DDevice8_SetCursorProperties(p,a,b,c)              (p)->lpVtbl->SetCursorProperties(p,a,b,c)
-#define IDirect3DDevice8_SetCursorPosition(p,a,b,c)                (p)->lpVtbl->SetCursorPosition(p,a,b,c)
-#define IDirect3DDevice8_ShowCursor(p,a)                           (p)->lpVtbl->ShowCursor(p,a)
-#define IDirect3DDevice8_CreateAdditionalSwapChain(p,a,b)          (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
-#define IDirect3DDevice8_Reset(p,a)                                (p)->lpVtbl->Reset(p,a)
-#define IDirect3DDevice8_Present(p,a,b,c,d)                        (p)->lpVtbl->Present(p,a,b,c,d)
-#define IDirect3DDevice8_GetBackBuffer(p,a,b,c)                    (p)->lpVtbl->GetBackBuffer(p,a,b,c)
-#define IDirect3DDevice8_GetRasterStatus(p,a)                      (p)->lpVtbl->GetRasterStatus(p,a)
-#define IDirect3DDevice8_SetGammaRamp(p,a,b)                       (p)->lpVtbl->SetGammaRamp(p,a,b)
-#define IDirect3DDevice8_GetGammaRamp(p,a)                         (p)->lpVtbl->GetGammaRamp(p,a)
-#define IDirect3DDevice8_CreateTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice8_CreateVolumeTexture(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice8_CreateCubeTexture(p,a,b,c,d,e,f)          (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f)
-#define IDirect3DDevice8_CreateVertexBuffer(p,a,b,c,d,e)           (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e)
-#define IDirect3DDevice8_CreateIndexBuffer(p,a,b,c,d,e)            (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e)
-#define IDirect3DDevice8_CreateRenderTarget(p,a,b,c,d,e,f)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f)
-#define IDirect3DDevice8_CreateDepthStencilSurface(p,a,b,c,d,e)    (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e)
-#define IDirect3DDevice8_CreateImageSurface(p,a,b,c,d)             (p)->lpVtbl->CreateImageSurface(p,a,b,c,d)
-#define IDirect3DDevice8_CopyRects(p,a,b,c,d,e)                    (p)->lpVtbl->CopyRects(p,a,b,c,d,e)
-#define IDirect3DDevice8_UpdateTexture(p,a,b)                      (p)->lpVtbl->UpdateTexture(p,a,b)
-#define IDirect3DDevice8_GetFrontBuffer(p,a)                       (p)->lpVtbl->GetFrontBuffer(p,a)
-#define IDirect3DDevice8_SetRenderTarget(p,a,b)                    (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice8_GetRenderTarget(p,a)                      (p)->lpVtbl->GetRenderTarget(p,a)
-#define IDirect3DDevice8_GetDepthStencilSurface(p,a)               (p)->lpVtbl->GetDepthStencilSurface(p,a)
-#define IDirect3DDevice8_BeginScene(p)                             (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice8_EndScene(p)                               (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice8_Clear(p,a,b,c,d,e,f)                      (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
-#define IDirect3DDevice8_SetTransform(p,a,b)                       (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice8_GetTransform(p,a,b)                       (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice8_MultiplyTransform(p,a,b)                  (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice8_SetViewport(p,a)                          (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DDevice8_GetViewport(p,a)                          (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DDevice8_SetMaterial(p,a)                          (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DDevice8_GetMaterial(p,a)                          (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DDevice8_SetLight(p,a,b)                           (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DDevice8_GetLight(p,a,b)                           (p)->lpVtbl->GetLight(p,a,b)
-#define IDirect3DDevice8_LightEnable(p,a,b)                        (p)->lpVtbl->LightEnable(p,a,b)
-#define IDirect3DDevice8_GetLightEnable(p,a,b)                     (p)->lpVtbl->GetLightEnable(p,a,b)
-#define IDirect3DDevice8_SetClipPlane(p,a,b)                       (p)->lpVtbl->SetClipPlane(p,a,b)
-#define IDirect3DDevice8_GetClipPlane(p,a,b)                       (p)->lpVtbl->GetClipPlane(p,a,b)
-#define IDirect3DDevice8_SetRenderState(p,a,b)                     (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice8_GetRenderState(p,a,b)                     (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice8_BeginStateBlock(p)                        (p)->lpVtbl->BeginStateBlock(p)
-#define IDirect3DDevice8_EndStateBlock(p,a)                        (p)->lpVtbl->EndStateBlock(p,a)
-#define IDirect3DDevice8_ApplyStateBlock(p,a)                      (p)->lpVtbl->ApplyStateBlock(p,a)
-#define IDirect3DDevice8_CaptureStateBlock(p,a)                    (p)->lpVtbl->CaptureStateBlock(p,a)
-#define IDirect3DDevice8_DeleteStateBlock(p,a)                     (p)->lpVtbl->DeleteStateBlock(p,a)
-#define IDirect3DDevice8_CreateStateBlock(p,a,b)                   (p)->lpVtbl->CreateStateBlock(p,a,b)
-#define IDirect3DDevice8_SetClipStatus(p,a)                        (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice8_GetClipStatus(p,a)                        (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice8_GetTexture(p,a,b)                         (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice8_SetTexture(p,a,b)                         (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice8_GetTextureStageState(p,a,b,c)             (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice8_SetTextureStageState(p,a,b,c)             (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice8_ValidateDevice(p,a)                       (p)->lpVtbl->ValidateDevice(p,a)
-#define IDirect3DDevice8_GetInfo(p,a,b,c)                          (p)->lpVtbl->GetInfo(p,a,b,c)
-#define IDirect3DDevice8_SetPaletteEntries(p,a,b)                  (p)->lpVtbl->SetPaletteEntries(p,a,b)
-#define IDirect3DDevice8_GetPaletteEntries(p,a,b)                  (p)->lpVtbl->GetPaletteEntries(p,a,b)
-#define IDirect3DDevice8_SetCurrentTexturePalette(p,a)             (p)->lpVtbl->SetCurrentTexturePalette(p,a)
-#define IDirect3DDevice8_GetCurrentTexturePalette(p,a)             (p)->lpVtbl->GetCurrentTexturePalette(p,a)
-#define IDirect3DDevice8_DrawPrimitive(p,a,b,c)                    (p)->lpVtbl->DrawPrimitive(p,a,b,c)
-#define IDirect3DDevice8_DrawIndexedPrimitive(p,a,b,c,d,e)         (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e)
-#define IDirect3DDevice8_DrawPrimitiveUP(p,a,b,c,d)                (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
-#define IDirect3DDevice8_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice8_ProcessVertices(p,a,b,c,d,e)              (p)->lpVtbl->processVertices(p,a,b,c,d,e)
-#define IDirect3DDevice8_CreateVertexShader(p,a,b,c,d)             (p)->lpVtbl->CreateVertexShader(p,a,b,c,d)
-#define IDirect3DDevice8_SetVertexShader(p,a)                      (p)->lpVtbl->SetVertexShader(p,a)
-#define IDirect3DDevice8_GetVertexShader(p,a)                      (p)->lpVtbl->GetVertexShader(p,a)
-#define IDirect3DDevice8_DeleteVertexShader(p,a)                   (p)->lpVtbl->DeleteVertexShader(p,a)
-#define IDirect3DDevice8_SetVertexShaderConstant(p,a,b,c)          (p)->lpVtbl->SetVertexShaderConstant(p,a,b,c)
-#define IDirect3DDevice8_GetVertexShaderConstant(p,a,b,c)          (p)->lpVtbl->GetVertexShaderConstant(p,a,b,c)
-#define IDirect3DDevice8_GetVertexShaderDeclaration(p,a,b,c)       (p)->lpVtbl->GetVertexShaderDeclaration(p,a,b,c)
-#define IDirect3DDevice8_GetVertexShaderFunction(p,a,b,c)          (p)->lpVtbl->GetVertexShaderFunction(p,a,b,c)
-#define IDirect3DDevice8_SetStreamSource(p,a,b,c)                  (p)->lpVtbl->SetStreamSource(p,a,b,c)
-#define IDirect3DDevice8_GetStreamSource(p,a,b,c)                  (p)->lpVtbl->GetStreamSource(p,a,b,c)
-#define IDirect3DDevice8_SetIndices(p,a,b)                         (p)->lpVtbl->SetIndices(p,a,b)
-#define IDirect3DDevice8_GetIndices(p,a,b)                         (p)->lpVtbl->GetIndices(p,a,b)
-#define IDirect3DDevice8_CreatePixelShader(p,a,b)                  (p)->lpVtbl->CreatePixelShader(p,a,b)
-#define IDirect3DDevice8_SetPixelShader(p,a)                       (p)->lpVtbl->SetPixelShader(p,a)
-#define IDirect3DDevice8_GetPixelShader(p,a)                       (p)->lpVtbl->GetPixelShader(p,a)
-#define IDirect3DDevice8_DeletePixelShader(p,a)                    (p)->lpVtbl->DeletePixelShader(p,a)
-#define IDirect3DDevice8_SetPixelShaderConstant(p,a,b,c)           (p)->lpVtbl->SetPixelShaderConstant(p,a,b,c)
-#define IDirect3DDevice8_GetPixelShaderConstant(p,a,b,c)           (p)->lpVtbl->GetPixelShaderConstant(p,a,b,c)
-#define IDirect3DDevice8_GetPixelShaderFunction(p,a,b,c)           (p)->lpVtbl->GetPixelShaderFunction(p,a,b,c)
-#define IDirect3DDevice8_DrawRectPatch(p,a,b,c)                    (p)->lpVtbl->DrawRectPatch(p,a,b,c)
-#define IDirect3DDevice8_DrawTriPatch(p,a,b,c)                     (p)->lpVtbl->DrawTriPatch(p,a,b,c)
-#define IDirect3DDevice8_DeletePatch(p,a)                          (p)->lpVtbl->DeletePatch(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice8_QueryInterface(p,a,b)                     (p)->QueryInterface(a,b)
-#define IDirect3DDevice8_AddRef(p)                                 (p)->AddRef()
-#define IDirect3DDevice8_Release(p)                                (p)->Release()
-/*** IDirect3DDevice8 methods ***/
-#define IDirect3DDevice8_TestCooperativeLevel(p)                   (p)->TestCooperativeLevel()
-#define IDirect3DDevice8_GetAvailableTextureMem(p)                 (p)->GetAvailableTextureMem()
-#define IDirect3DDevice8_ResourceManagerDiscardBytes(p,a)          (p)->ResourceManagerDiscardBytes(a)
-#define IDirect3DDevice8_GetDirect3D(p,a)                          (p)->GetDirect3D(a)
-#define IDirect3DDevice8_GetDeviceCaps(p,a)                        (p)->GetDeviceCaps(a)
-#define IDirect3DDevice8_GetDisplayMode(p,a)                       (p)->GetDisplayMode(a)
-#define IDirect3DDevice8_GetCreationParameters(p,a)                (p)->GetCreationParameters(a)
-#define IDirect3DDevice8_SetCursorProperties(p,a,b,c)              (p)->SetCursorProperties(a,b,c)
-#define IDirect3DDevice8_SetCursorPosition(p,a,b,c)                (p)->SetCursorPosition(a,b,c)
-#define IDirect3DDevice8_ShowCursor(p,a)                           (p)->ShowCursor(a)
-#define IDirect3DDevice8_CreateAdditionalSwapChain(p,a,b)          (p)->CreateAdditionalSwapChain(a,b)
-#define IDirect3DDevice8_Reset(p,a)                                (p)->Reset(a)
-#define IDirect3DDevice8_Present(p,a,b,c,d)                        (p)->Present(a,b,c,d)
-#define IDirect3DDevice8_GetBackBuffer(p,a,b,c)                    (p)->GetBackBuffer(a,b,c)
-#define IDirect3DDevice8_GetRasterStatus(p,a)                      (p)->GetRasterStatus(a)
-#define IDirect3DDevice8_SetGammaRamp(p,a,b)                       (p)->SetGammaRamp(a,b)
-#define IDirect3DDevice8_GetGammaRamp(p,a)                         (p)->GetGammaRamp(a)
-#define IDirect3DDevice8_CreateTexture(p,a,b,c,d,e,f,g)            (p)->CreateTexture(a,b,c,d,e,f,g)
-#define IDirect3DDevice8_CreateVolumeTexture(p,a,b,c,d,e,f,g,h)    (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice8_CreateCubeTexture(p,a,b,c,d,e,f)          (p)->CreateCubeTexture(a,b,c,d,e,f)
-#define IDirect3DDevice8_CreateVertexBuffer(p,a,b,c,d,e)           (p)->CreateVertexBuffer(a,b,c,d,e)
-#define IDirect3DDevice8_CreateIndexBuffer(p,a,b,c,d,e)            (p)->CreateIndexBuffer(a,b,c,d,e)
-#define IDirect3DDevice8_CreateRenderTarget(p,a,b,c,d,e,f)         (p)->CreateRenderTarget(a,b,c,d,e,f)
-#define IDirect3DDevice8_CreateDepthStencilSurface(p,a,b,c,d,e)    (p)->CreateDepthStencilSurface(a,b,c,d,e)
-#define IDirect3DDevice8_CreateImageSurface(p,a,b,c,d)             (p)->CreateImageSurface(a,b,c,d)
-#define IDirect3DDevice8_CopyRects(p,a,b,c,d,e)                    (p)->CopyRects(a,b,c,d,e)
-#define IDirect3DDevice8_UpdateTexture(p,a,b)                      (p)->UpdateTexture(a,b)
-#define IDirect3DDevice8_GetFrontBuffer(p,a)                       (p)->GetFrontBuffer(a)
-#define IDirect3DDevice8_SetRenderTarget(p,a,b)                    (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice8_GetRenderTarget(p,a)                      (p)->GetRenderTarget(a)
-#define IDirect3DDevice8_GetDepthStencilSurface(p,a)               (p)->GetDepthStencilSurface(a)
-#define IDirect3DDevice8_BeginScene(p)                             (p)->BeginScene()
-#define IDirect3DDevice8_EndScene(p)                               (p)->EndScene()
-#define IDirect3DDevice8_Clear(p,a,b,c,d,e,f)                      (p)->Clear(a,b,c,d,e,f)
-#define IDirect3DDevice8_SetTransform(p,a,b)                       (p)->SetTransform(a,b)
-#define IDirect3DDevice8_GetTransform(p,a,b)                       (p)->GetTransform(a,b)
-#define IDirect3DDevice8_MultiplyTransform(p,a,b)                  (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice8_SetViewport(p,a)                          (p)->SetViewport(a)
-#define IDirect3DDevice8_GetViewport(p,a)                          (p)->GetViewport(a)
-#define IDirect3DDevice8_SetMaterial(p,a)                          (p)->SetMaterial(a)
-#define IDirect3DDevice8_GetMaterial(p,a)                          (p)->GetMaterial(a)
-#define IDirect3DDevice8_SetLight(p,a,b)                           (p)->SetLight(a,b)
-#define IDirect3DDevice8_GetLight(p,a,b)                           (p)->GetLight(a,b)
-#define IDirect3DDevice8_LightEnable(p,a,b)                        (p)->LightEnable(a,b)
-#define IDirect3DDevice8_GetLightEnable(p,a,b)                     (p)->GetLightEnable(a,b)
-#define IDirect3DDevice8_SetClipPlane(p,a,b)                       (p)->SetClipPlane(a,b)
-#define IDirect3DDevice8_GetClipPlane(p,a,b)                       (p)->GetClipPlane(a,b)
-#define IDirect3DDevice8_SetRenderState(p,a,b)                     (p)->SetRenderState(a,b)
-#define IDirect3DDevice8_GetRenderState(p,a,b)                     (p)->GetRenderState(a,b)
-#define IDirect3DDevice8_BeginStateBlock(p)                        (p)->BeginStateBlock()
-#define IDirect3DDevice8_EndStateBlock(p,a)                        (p)->EndStateBlock(a)
-#define IDirect3DDevice8_ApplyStateBlock(p,a)                      (p)->ApplyStateBlock(a)
-#define IDirect3DDevice8_CaptureStateBlock(p,a)                    (p)->CaptureStateBlock(a)
-#define IDirect3DDevice8_DeleteStateBlock(p,a)                     (p)->DeleteStateBlock(a)
-#define IDirect3DDevice8_CreateStateBlock(p,a,b)                   (p)->CreateStateBlock(a,b)
-#define IDirect3DDevice8_SetClipStatus(p,a)                        (p)->SetClipStatus(a)
-#define IDirect3DDevice8_GetClipStatus(p,a)                        (p)->GetClipStatus(a)
-#define IDirect3DDevice8_GetTexture(p,a,b)                         (p)->GetTexture(a,b)
-#define IDirect3DDevice8_SetTexture(p,a,b)                         (p)->SetTexture(a,b)
-#define IDirect3DDevice8_GetTextureStageState(p,a,b,c)             (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice8_SetTextureStageState(p,a,b,c)             (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice8_ValidateDevice(p,a)                       (p)->ValidateDevice(a)
-#define IDirect3DDevice8_GetInfo(p,a,b,c)                          (p)->GetInfo(a,b,c)
-#define IDirect3DDevice8_SetPaletteEntries(p,a,b)                  (p)->SetPaletteEntries(a,b)
-#define IDirect3DDevice8_GetPaletteEntries(p,a,b)                  (p)->GetPaletteEntries(a,b)
-#define IDirect3DDevice8_SetCurrentTexturePalette(p,a)             (p)->SetCurrentTexturePalette(a)
-#define IDirect3DDevice8_GetCurrentTexturePalette(p,a)             (p)->GetCurrentTexturePalette(a)
-#define IDirect3DDevice8_DrawPrimitive(p,a,b,c)                    (p)->DrawPrimitive(a,b,c)
-#define IDirect3DDevice8_DrawIndexedPrimitive(p,a,b,c,d,e)         (p)->DrawIndexedPrimitive(a,b,c,d,e)
-#define IDirect3DDevice8_DrawPrimitiveUP(p,a,b,c,d)                (p)->DrawPrimitiveUP(a,b,c,d)
-#define IDirect3DDevice8_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h) (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice8_ProcessVertices(p,a,b,c,d,e)              (p)->processVertices(a,b,c,d,e)
-#define IDirect3DDevice8_CreateVertexShader(p,a,b,c,d)             (p)->CreateVertexShader(a,b,c,d)
-#define IDirect3DDevice8_SetVertexShader(p,a)                      (p)->SetVertexShader(a)
-#define IDirect3DDevice8_GetVertexShader(p,a)                      (p)->GetVertexShader(a)
-#define IDirect3DDevice8_DeleteVertexShader(p,a)                   (p)->DeleteVertexShader(a)
-#define IDirect3DDevice8_SetVertexShaderConstant(p,a,b,c)          (p)->SetVertexShaderConstant(a,b,c)
-#define IDirect3DDevice8_GetVertexShaderConstant(p,a,b,c)          (p)->GetVertexShaderConstant(a,b,c)
-#define IDirect3DDevice8_GetVertexShaderDeclaration(p,a,b,c)       (p)->GetVertexShaderDeclaration(a,b,c)
-#define IDirect3DDevice8_GetVertexShaderFunction(p,a,b,c)          (p)->GetVertexShaderFunction(a,b,c)
-#define IDirect3DDevice8_SetStreamSource(p,a,b,c)                  (p)->SetStreamSource(a,b,c)
-#define IDirect3DDevice8_GetStreamSource(p,a,b,c)                  (p)->GetStreamSource(a,b,c)
-#define IDirect3DDevice8_SetIndices(p,a,b)                         (p)->SetIndices(a,b)
-#define IDirect3DDevice8_GetIndices(p,a,b)                         (p)->GetIndices(a,b)
-#define IDirect3DDevice8_CreatePixelShader(p,a,b)                  (p)->CreatePixelShader(a,b)
-#define IDirect3DDevice8_SetPixelShader(p,a)                       (p)->SetPixelShader(a)
-#define IDirect3DDevice8_GetPixelShader(p,a)                       (p)->GetPixelShader(a)
-#define IDirect3DDevice8_DeletePixelShader(p,a)                    (p)->DeletePixelShader(a)
-#define IDirect3DDevice8_SetPixelShaderConstant(p,a,b,c)           (p)->SetPixelShaderConstant(a,b,c)
-#define IDirect3DDevice8_GetPixelShaderConstant(p,a,b,c)           (p)->GetPixelShaderConstant(a,b,c)
-#define IDirect3DDevice8_GetPixelShaderFunction(p,a,b,c)           (p)->GetPixelShaderFunction(a,b,c)
-#define IDirect3DDevice8_DrawRectPatch(p,a,b,c)                    (p)->DrawRectPatch(a,b,c)
-#define IDirect3DDevice8_DrawTriPatch(p,a,b,c)                     (p)->DrawTriPatch(a,b,c)
-#define IDirect3DDevice8_DeletePatch(p,a)                          (p)->DeletePatch(a)
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif  /* defined(__cplusplus) */
-
-/* Define the main entrypoint as well */
-IDirect3D8* WINAPI Direct3DCreate8(UINT SDKVersion);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __WINE_D3D8_H */
diff --git a/misc/builddeps/win64/dx/include/d3d8caps.h b/misc/builddeps/win64/dx/include/d3d8caps.h
deleted file mode 100644 (file)
index 019d346..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright (C) 2002 Jason Edmeades
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D8CAPS_H
-#define __WINE_D3D8CAPS_H
-
-/*
- * Definitions
- */
-
-#define D3DCAPS_READ_SCANLINE 0x20000
-
-#define D3DCURSORCAPS_COLOR   1
-#define D3DCURSORCAPS_LOWRES  2
-
-#define D3DDEVCAPS_EXECUTESYSTEMMEMORY     0x0000010
-#define D3DDEVCAPS_EXECUTEVIDEOMEMORY      0x0000020
-#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY    0x0000040
-#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY     0x0000080
-#define D3DDEVCAPS_TEXTURESYSTEMMEMORY     0x0000100
-#define D3DDEVCAPS_TEXTUREVIDEOMEMORY      0x0000200
-#define D3DDEVCAPS_DRAWPRIMTLVERTEX        0x0000400
-#define D3DDEVCAPS_CANRENDERAFTERFLIP      0x0000800
-#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM   0x0001000
-#define D3DDEVCAPS_DRAWPRIMITIVES2         0x0002000
-#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x0004000
-#define D3DDEVCAPS_DRAWPRIMITIVES2EX       0x0008000
-#define D3DDEVCAPS_HWTRANSFORMANDLIGHT     0x0010000
-#define D3DDEVCAPS_CANBLTSYSTONONLOCAL     0x0020000
-#define D3DDEVCAPS_HWRASTERIZATION         0x0080000
-#define D3DDEVCAPS_PUREDEVICE              0x0100000
-#define D3DDEVCAPS_QUINTICRTPATCHES        0x0200000
-#define D3DDEVCAPS_RTPATCHES               0x0400000
-#define D3DDEVCAPS_RTPATCHHANDLEZERO       0x0800000
-#define D3DDEVCAPS_NPATCHES                0x1000000
-
-#define D3DFVFCAPS_TEXCOORDCOUNTMASK  0x00FFFF
-#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x080000
-#define D3DFVFCAPS_PSIZE              0x100000
-
-#define D3DLINECAPS_TEXTURE           0x01
-#define D3DLINECAPS_ZTEST             0x02
-#define D3DLINECAPS_BLEND             0x04
-#define D3DLINECAPS_ALPHACMP          0x08
-#define D3DLINECAPS_FOG               0x10
-
-#define D3DPBLENDCAPS_ZERO            0x0001
-#define D3DPBLENDCAPS_ONE             0x0002
-#define D3DPBLENDCAPS_SRCCOLOR        0x0004
-#define D3DPBLENDCAPS_INVSRCCOLOR     0x0008
-#define D3DPBLENDCAPS_SRCALPHA        0x0010
-#define D3DPBLENDCAPS_INVSRCALPHA     0x0020
-#define D3DPBLENDCAPS_DESTALPHA       0x0040
-#define D3DPBLENDCAPS_INVDESTALPHA    0x0080
-#define D3DPBLENDCAPS_DESTCOLOR       0x0100
-#define D3DPBLENDCAPS_INVDESTCOLOR    0x0200
-#define D3DPBLENDCAPS_SRCALPHASAT     0x0400
-#define D3DPBLENDCAPS_BOTHSRCALPHA    0x0800
-#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x1000
-
-#define D3DPCMPCAPS_NEVER        0x01
-#define D3DPCMPCAPS_LESS         0x02
-#define D3DPCMPCAPS_EQUAL        0x04
-#define D3DPCMPCAPS_LESSEQUAL    0x08
-#define D3DPCMPCAPS_GREATER      0x10
-#define D3DPCMPCAPS_NOTEQUAL     0x20
-#define D3DPCMPCAPS_GREATEREQUAL 0x40
-#define D3DPCMPCAPS_ALWAYS       0x80
-
-#define D3DPMISCCAPS_MASKZ                 0x0002
-#define D3DPMISCCAPS_LINEPATTERNREP        0x0004
-#define D3DPMISCCAPS_CULLNONE              0x0010
-#define D3DPMISCCAPS_CULLCW                0x0020
-#define D3DPMISCCAPS_CULLCCW               0x0040
-#define D3DPMISCCAPS_COLORWRITEENABLE      0x0080
-#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS 0x0100
-#define D3DPMISCCAPS_CLIPTLVERTS           0x0200
-#define D3DPMISCCAPS_TSSARGTEMP            0x0400
-#define D3DPMISCCAPS_BLENDOP               0x0800
-
-#define D3DPRASTERCAPS_DITHER                     0x00000001
-#define D3DPRASTERCAPS_PAT                        0x00000008
-#define D3DPRASTERCAPS_ZTEST                      0x00000010
-#define D3DPRASTERCAPS_FOGVERTEX                  0x00000080
-#define D3DPRASTERCAPS_FOGTABLE                   0x00000100
-#define D3DPRASTERCAPS_ANTIALIASEDGES             0x00001000
-#define D3DPRASTERCAPS_MIPMAPLODBIAS              0x00002000
-#define D3DPRASTERCAPS_ZBIAS                      0x00004000
-#define D3DPRASTERCAPS_ZBUFFERLESSHSR             0x00008000
-#define D3DPRASTERCAPS_FOGRANGE                   0x00010000
-#define D3DPRASTERCAPS_ANISOTROPY                 0x00020000
-#define D3DPRASTERCAPS_WBUFFER                    0x00040000
-#define D3DPRASTERCAPS_WFOG                       0x00100000
-#define D3DPRASTERCAPS_ZFOG                       0x00200000
-#define D3DPRASTERCAPS_COLORPERSPECTIVE           0x00400000
-#define D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE      0x00800000
-
-#define D3DPRESENT_INTERVAL_DEFAULT               0x00000000
-#define D3DPRESENT_INTERVAL_ONE                   0x00000001
-#define D3DPRESENT_INTERVAL_TWO                   0x00000002
-#define D3DPRESENT_INTERVAL_THREE                 0x00000004
-#define D3DPRESENT_INTERVAL_FOUR                  0x00000008
-#define D3DPRESENT_INTERVAL_IMMEDIATE             0x80000000
-
-#define D3DPSHADECAPS_COLORGOURAUDRGB             0x00008
-#define D3DPSHADECAPS_SPECULARGOURAUDRGB          0x00200
-#define D3DPSHADECAPS_ALPHAGOURAUDBLEND           0x04000
-#define D3DPSHADECAPS_FOGGOURAUD                  0x80000
-
-#define D3DPTADDRESSCAPS_WRAP                     0x01
-#define D3DPTADDRESSCAPS_MIRROR                   0x02
-#define D3DPTADDRESSCAPS_CLAMP                    0x04
-#define D3DPTADDRESSCAPS_BORDER                   0x08
-#define D3DPTADDRESSCAPS_INDEPENDENTUV            0x10
-#define D3DPTADDRESSCAPS_MIRRORONCE               0x20
-
-#define D3DPTEXTURECAPS_PERSPECTIVE              0x00001
-#define D3DPTEXTURECAPS_POW2                     0x00002
-#define D3DPTEXTURECAPS_ALPHA                    0x00004
-#define D3DPTEXTURECAPS_SQUAREONLY               0x00020
-#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00040
-#define D3DPTEXTURECAPS_ALPHAPALETTE             0x00080
-#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL       0x00100
-#define D3DPTEXTURECAPS_PROJECTED                0x00400
-#define D3DPTEXTURECAPS_CUBEMAP                  0x00800
-#define D3DPTEXTURECAPS_VOLUMEMAP                0x02000
-#define D3DPTEXTURECAPS_MIPMAP                   0x04000
-#define D3DPTEXTURECAPS_MIPVOLUMEMAP             0x08000
-#define D3DPTEXTURECAPS_MIPCUBEMAP               0x10000
-#define D3DPTEXTURECAPS_CUBEMAP_POW2             0x20000
-#define D3DPTEXTURECAPS_VOLUMEMAP_POW2           0x40000
-
-#define D3DPTFILTERCAPS_MINFPOINT                0x00000100
-#define D3DPTFILTERCAPS_MINFLINEAR               0x00000200
-#define D3DPTFILTERCAPS_MINFANISOTROPIC          0x00000400
-#define D3DPTFILTERCAPS_MIPFPOINT                0x00010000
-#define D3DPTFILTERCAPS_MIPFLINEAR               0x00020000
-#define D3DPTFILTERCAPS_MAGFPOINT                0x01000000
-#define D3DPTFILTERCAPS_MAGFLINEAR               0x02000000
-#define D3DPTFILTERCAPS_MAGFANISOTROPIC          0x04000000
-#define D3DPTFILTERCAPS_MAGFAFLATCUBIC           0x08000000
-#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC        0x10000000
-
-#define D3DSTENCILCAPS_KEEP                      0x01
-#define D3DSTENCILCAPS_ZERO                      0x02
-#define D3DSTENCILCAPS_REPLACE                   0x04
-#define D3DSTENCILCAPS_INCRSAT                   0x08
-#define D3DSTENCILCAPS_DECRSAT                   0x10
-#define D3DSTENCILCAPS_INVERT                    0x20
-#define D3DSTENCILCAPS_INCR                      0x40
-#define D3DSTENCILCAPS_DECR                      0x80
-
-#define D3DTEXOPCAPS_DISABLE                     0x0000001
-#define D3DTEXOPCAPS_SELECTARG1                  0x0000002
-#define D3DTEXOPCAPS_SELECTARG2                  0x0000004
-#define D3DTEXOPCAPS_MODULATE                    0x0000008
-#define D3DTEXOPCAPS_MODULATE2X                  0x0000010
-#define D3DTEXOPCAPS_MODULATE4X                  0x0000020
-#define D3DTEXOPCAPS_ADD                         0x0000040
-#define D3DTEXOPCAPS_ADDSIGNED                   0x0000080
-#define D3DTEXOPCAPS_ADDSIGNED2X                 0x0000100
-#define D3DTEXOPCAPS_SUBTRACT                    0x0000200
-#define D3DTEXOPCAPS_ADDSMOOTH                   0x0000400
-#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA           0x0000800
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHA           0x0001000
-#define D3DTEXOPCAPS_BLENDFACTORALPHA            0x0002000
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM         0x0004000
-#define D3DTEXOPCAPS_BLENDCURRENTALPHA           0x0008000
-#define D3DTEXOPCAPS_PREMODULATE                 0x0010000
-#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR      0x0020000
-#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA      0x0040000
-#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR   0x0080000
-#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA   0x0100000
-#define D3DTEXOPCAPS_BUMPENVMAP                  0x0200000
-#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE         0x0400000
-#define D3DTEXOPCAPS_DOTPRODUCT3                 0x0800000
-#define D3DTEXOPCAPS_MULTIPLYADD                 0x1000000
-#define D3DTEXOPCAPS_LERP                        0x2000000
-
-#define D3DVTXPCAPS_TEXGEN                       0x01
-#define D3DVTXPCAPS_MATERIALSOURCE7              0x02
-#define D3DVTXPCAPS_DIRECTIONALLIGHTS            0x08
-#define D3DVTXPCAPS_POSITIONALLIGHTS             0x10
-#define D3DVTXPCAPS_LOCALVIEWER                  0x20
-#define D3DVTXPCAPS_TWEENING                     0x40
-
-#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD  0x00000020
-#define D3DCAPS3_RESERVED                          0x8000001f
-
-#define D3DCAPS2_CANCALIBRATEGAMMA                 0x0100000
-#define D3DCAPS2_CANRENDERWINDOWED                 0x0080000
-#define D3DCAPS2_CANMANAGERESOURCE                 0x10000000
-#define D3DCAPS2_DYNAMICTEXTURES                   0x20000000
-#define D3DCAPS2_FULLSCREENGAMMA                   0x0020000
-#define D3DCAPS2_NO2DDURING3DSCENE                 0x0000002
-#define D3DCAPS2_RESERVED                          0x2000000
-
-/*
- * The d3dcaps8 structure
- */
-typedef struct _D3DCAPS8 {
-    D3DDEVTYPE          DeviceType;
-    UINT                AdapterOrdinal;
-
-    DWORD               Caps;
-    DWORD               Caps2;
-    DWORD               Caps3;
-    DWORD               PresentationIntervals;
-
-    DWORD               CursorCaps;
-
-    DWORD               DevCaps;
-
-    DWORD               PrimitiveMiscCaps;
-    DWORD               RasterCaps;
-    DWORD               ZCmpCaps;
-    DWORD               SrcBlendCaps;
-    DWORD               DestBlendCaps;
-    DWORD               AlphaCmpCaps;
-    DWORD               ShadeCaps;
-    DWORD               TextureCaps;
-    DWORD               TextureFilterCaps;
-    DWORD               CubeTextureFilterCaps;
-    DWORD               VolumeTextureFilterCaps;
-    DWORD               TextureAddressCaps;
-    DWORD               VolumeTextureAddressCaps;
-
-    DWORD               LineCaps;
-
-    DWORD               MaxTextureWidth, MaxTextureHeight;
-    DWORD               MaxVolumeExtent;
-
-    DWORD               MaxTextureRepeat;
-    DWORD               MaxTextureAspectRatio;
-    DWORD               MaxAnisotropy;
-    float               MaxVertexW;
-
-    float               GuardBandLeft;
-    float               GuardBandTop;
-    float               GuardBandRight;
-    float               GuardBandBottom;
-
-    float               ExtentsAdjust;
-    DWORD               StencilCaps;
-
-    DWORD               FVFCaps;
-    DWORD               TextureOpCaps;
-    DWORD               MaxTextureBlendStages;
-    DWORD               MaxSimultaneousTextures;
-
-    DWORD               VertexProcessingCaps;
-    DWORD               MaxActiveLights;
-    DWORD               MaxUserClipPlanes;
-    DWORD               MaxVertexBlendMatrices;
-    DWORD               MaxVertexBlendMatrixIndex;
-
-    float               MaxPointSize;
-
-    DWORD               MaxPrimitiveCount;
-    DWORD               MaxVertexIndex;
-    DWORD               MaxStreams;
-    DWORD               MaxStreamStride;
-
-    DWORD               VertexShaderVersion;
-    DWORD               MaxVertexShaderConst;
-
-    DWORD               PixelShaderVersion;
-    float               MaxPixelShaderValue;
-} D3DCAPS8;
-
-#endif  /* __WINE_D3D8CAPS_H */
diff --git a/misc/builddeps/win64/dx/include/d3d8types.h b/misc/builddeps/win64/dx/include/d3d8types.h
deleted file mode 100644 (file)
index 7c24b73..0000000
+++ /dev/null
@@ -1,1221 +0,0 @@
-/*
- * Copyright (C) 2002 Jason Edmeades
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D8TYPES_H
-#define __WINE_D3D8TYPES_H
-
-#include <_mingw_dxhelper.h>
-
-/*****************************************************************************
- * Direct 3D v8 #defines
- */
-
-#ifndef D3DCLEAR_TARGET
-#define D3DCLEAR_TARGET   1
-#endif
-#ifndef D3DCLEAR_ZBUFFER
-#define D3DCLEAR_ZBUFFER  2
-#endif
-#ifndef D3DCLEAR_STENCIL
-#define D3DCLEAR_STENCIL  4
-#endif
-
-#define D3DCLIPPLANE0 (1 << 0)
-#define D3DCLIPPLANE1 (1 << 1)
-#define D3DCLIPPLANE2 (1 << 2)
-#define D3DCLIPPLANE3 (1 << 3)
-#define D3DCLIPPLANE4 (1 << 4)
-#define D3DCLIPPLANE5 (1 << 5)
-
-#define D3DCOLOR_ARGB(a,r,g,b)        ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
-#define D3DCOLOR_COLORVALUE(r,g,b,a)  D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
-#define D3DCOLOR_RGBA(r,g,b,a)        D3DCOLOR_ARGB(a,r,g,b)
-#define D3DCOLOR_XRGB(r,g,b)          D3DCOLOR_ARGB(0xff,r,g,b)
-
-#define D3DCS_LEFT                 0x001
-#define D3DCS_RIGHT                0x002
-#define D3DCS_TOP                  0x004
-#define D3DCS_BOTTOM               0x008
-#define D3DCS_FRONT                0x010
-#define D3DCS_BACK                 0x020
-#define D3DCS_PLANE0               0x040
-#define D3DCS_PLANE1               0x080
-#define D3DCS_PLANE2               0x100
-#define D3DCS_PLANE3               0x200
-#define D3DCS_PLANE4               0x400
-#define D3DCS_PLANE5               0x800
-#define D3DCS_ALL                  0xFFF
-
-#define D3DFVF_TEXTUREFORMAT1 3
-#define D3DFVF_TEXTUREFORMAT2 0
-#define D3DFVF_TEXTUREFORMAT3 1
-#define D3DFVF_TEXTUREFORMAT4 2
-#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
-#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
-
-#define D3DLOCK_READONLY           0x0010
-#define D3DLOCK_NOSYSLOCK          0x0800
-#define D3DLOCK_NOOVERWRITE        0x1000
-#define D3DLOCK_DISCARD            0x2000
-#define D3DLOCK_NO_DIRTY_UPDATE    0x8000
-
-#define D3DMAXUSERCLIPPLANES       32
-
-#define D3DRENDERSTATE_WRAPBIAS    0x80
-
-#define D3DTSS_TCI_PASSTHRU                       0x00000
-#define D3DTSS_TCI_CAMERASPACENORMAL              0x10000
-#define D3DTSS_TCI_CAMERASPACEPOSITION            0x20000
-#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR    0x30000
-
-
-#define D3DTS_WORLD  D3DTS_WORLDMATRIX(0)
-#define D3DTS_WORLD1 D3DTS_WORLDMATRIX(1)
-#define D3DTS_WORLD2 D3DTS_WORLDMATRIX(2)
-#define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3)
-#define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
-
-#define D3DUSAGE_RENDERTARGET       0x01
-#define D3DUSAGE_DEPTHSTENCIL       0x02
-#define D3DUSAGE_WRITEONLY          0x08
-#define D3DUSAGE_SOFTWAREPROCESSING 0x10
-#define D3DUSAGE_DONOTCLIP          0x20
-#define D3DUSAGE_POINTS             0x40
-#define D3DUSAGE_RTPATCHES          0x80
-#define D3DUSAGE_NPATCHES           0x100
-#define D3DUSAGE_DYNAMIC            0x200
-
-#define D3DWRAP_U        1
-#define D3DWRAP_V        2
-#define D3DWRAP_W        4
-#define D3DWRAPCOORD_0   1
-#define D3DWRAPCOORD_1   2
-#define D3DWRAPCOORD_2   4
-#define D3DWRAPCOORD_3   8
-
-#define MAX_DEVICE_IDENTIFIER_STRING        512
-
-#define D3DFVF_RESERVED0           0x0001
-#define D3DFVF_POSITION_MASK       0x000E
-#define D3DFVF_XYZ                 0x0002
-#define D3DFVF_XYZRHW              0x0004
-#define D3DFVF_XYZB1               0x0006
-#define D3DFVF_XYZB2               0x0008
-#define D3DFVF_XYZB3               0x000a
-#define D3DFVF_XYZB4               0x000c
-#define D3DFVF_XYZB5               0x000e
-#define D3DFVF_NORMAL              0x0010
-#define D3DFVF_PSIZE               0x0020
-#define D3DFVF_DIFFUSE             0x0040
-#define D3DFVF_SPECULAR            0x0080
-#define D3DFVF_TEXCOUNT_MASK       0x0f00
-#define D3DFVF_TEXCOUNT_SHIFT           8
-#define D3DFVF_TEX0                0x0000
-#define D3DFVF_TEX1                0x0100
-#define D3DFVF_TEX2                0x0200
-#define D3DFVF_TEX3                0x0300
-#define D3DFVF_TEX4                0x0400
-#define D3DFVF_TEX5                0x0500
-#define D3DFVF_TEX6                0x0600
-#define D3DFVF_TEX7                0x0700
-#define D3DFVF_TEX8                0x0800
-#define D3DFVF_LASTBETA_UBYTE4     0x1000
-#define D3DFVF_RESERVED2           0xE000
-
-#define D3DTA_SELECTMASK        0x0000000f
-#define D3DTA_DIFFUSE           0x00000000
-#define D3DTA_CURRENT           0x00000001
-#define D3DTA_TEXTURE           0x00000002
-#define D3DTA_TFACTOR           0x00000003
-#define D3DTA_SPECULAR          0x00000004
-#define D3DTA_COMPLEMENT        0x00000010
-#define D3DTA_ALPHAREPLICATE    0x00000020
-#define D3DTA_TEMP              0x00000005
-
-#define D3DCOLORWRITEENABLE_RED   (1L<<0)   
-#define D3DCOLORWRITEENABLE_GREEN (1L<<1)
-#define D3DCOLORWRITEENABLE_BLUE  (1L<<2)
-#define D3DCOLORWRITEENABLE_ALPHA (1L<<3)
-
-
-#ifndef MAKEFOURCC
-#define MAKEFOURCC(ch0, ch1, ch2, ch3)  \
-    ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |  \
-    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
-#endif /* MAKEFOURCC */
-
-
-/**************************** 
- * Vertex Shaders Declaration
- */
-
-typedef enum _D3DVSD_TOKENTYPE {
-  D3DVSD_TOKEN_NOP         = 0,
-  D3DVSD_TOKEN_STREAM      = 1,
-  D3DVSD_TOKEN_STREAMDATA  = 2,
-  D3DVSD_TOKEN_TESSELLATOR = 3,
-  D3DVSD_TOKEN_CONSTMEM    = 4,
-  D3DVSD_TOKEN_EXT         = 5,
-  /* RESERVED              = 6 */
-  D3DVSD_TOKEN_END         = 7,
-  D3DVSD_FORCE_DWORD       = 0x7FFFFFFF
-} D3DVSD_TOKENTYPE;
-
-/** input registers for vertex shaders functions */
-/*
-#define D3DVSDE_POSITION      0
-#define D3DVSDE_BLENDWEIGHT   1
-#define D3DVSDE_BLENDINDICES  2
-#define D3DVSDE_NORMAL        3
-#define D3DVSDE_PSIZE         4
-#define D3DVSDE_DIFFUSE       5
-#define D3DVSDE_SPECULAR      6
-#define D3DVSDE_TEXCOORD0     7
-#define D3DVSDE_TEXCOORD1     8
-#define D3DVSDE_TEXCOORD2     9
-#define D3DVSDE_TEXCOORD3    10
-#define D3DVSDE_TEXCOORD4    11
-#define D3DVSDE_TEXCOORD5    12
-#define D3DVSDE_TEXCOORD6    13
-#define D3DVSDE_TEXCOORD7    14
-#define D3DVSDE_POSITION2    15
-#define D3DVSDE_NORMAL2      16
-*/
-/** Address of the vertex register. 0 - 16 */
-typedef enum _D3DVSDE_REGISTER {
-  D3DVSDE_POSITION     =  0,
-  D3DVSDE_BLENDWEIGHT  =  1,
-  D3DVSDE_BLENDINDICES =  2,
-  D3DVSDE_NORMAL       =  3,
-  D3DVSDE_PSIZE        =  4,
-  D3DVSDE_DIFFUSE      =  5,
-  D3DVSDE_SPECULAR     =  6,
-  D3DVSDE_TEXCOORD0    =  7,
-  D3DVSDE_TEXCOORD1    =  8,
-  D3DVSDE_TEXCOORD2    =  9,
-  D3DVSDE_TEXCOORD3    = 10,
-  D3DVSDE_TEXCOORD4    = 11,
-  D3DVSDE_TEXCOORD5    = 12,
-  D3DVSDE_TEXCOORD6    = 13,
-  D3DVSDE_TEXCOORD7    = 14,
-  D3DVSDE_POSITION2    = 15,
-  D3DVSDE_NORMAL2      = 16
-} D3DVSDE_REGISTER;
-
-/** bit-field declaration for VertexRegister Type */
-/*
-#define D3DVSDT_FLOAT1      0x00
-#define D3DVSDT_FLOAT2      0x01
-#define D3DVSDT_FLOAT3      0x02
-#define D3DVSDT_FLOAT4      0x03
-#define D3DVSDT_D3DCOLOR    0x04
-#define D3DVSDT_UBYTE4      0x05
-#define D3DVSDT_SHORT2      0x06
-#define D3DVSDT_SHORT4      0x07
-*/
-typedef enum _D3DVSDT_TYPE {
-  D3DVSDT_FLOAT1   = 0x00,
-  D3DVSDT_FLOAT2   = 0x01,
-  D3DVSDT_FLOAT3   = 0x02,
-  D3DVSDT_FLOAT4   = 0x03,
-  D3DVSDT_D3DCOLOR = 0x04,
-  D3DVSDT_UBYTE4   = 0x05,
-  D3DVSDT_SHORT2   = 0x06,
-  D3DVSDT_SHORT4   = 0x07
-} D3DVSDT_TYPE;
-
-
-#define D3DVSD_CONSTADDRESSSHIFT  0
-#define D3DVSD_EXTINFOSHIFT       0
-#define D3DVSD_STREAMNUMBERSHIFT  0
-#define D3DVSD_VERTEXREGSHIFT     0
-#define D3DVSD_CONSTRSSHIFT      16
-#define D3DVSD_DATATYPESHIFT     16
-#define D3DVSD_SKIPCOUNTSHIFT    16
-#define D3DVSD_VERTEXREGINSHIFT  20
-#define D3DVSD_EXTCOUNTSHIFT     24
-#define D3DVSD_CONSTCOUNTSHIFT   25
-#define D3DVSD_DATALOADTYPESHIFT 28
-#define D3DVSD_STREAMTESSSHIFT   28
-#define D3DVSD_TOKENTYPESHIFT    29
-
-#define D3DVSD_CONSTADDRESSMASK  (0x7F     << D3DVSD_CONSTADDRESSSHIFT)
-#define D3DVSD_EXTINFOMASK       (0xFFFFFF << D3DVSD_EXTINFOSHIFT)
-#define D3DVSD_STREAMNUMBERMASK  (0xF      << D3DVSD_STREAMNUMBERSHIFT)
-#define D3DVSD_VERTEXREGMASK     (0x1F     << D3DVSD_VERTEXREGSHIFT)
-#define D3DVSD_CONSTRSMASK       (0x1FFF   << D3DVSD_CONSTRSSHIFT)
-#define D3DVSD_DATATYPEMASK      (0xF      << D3DVSD_DATATYPESHIFT)
-#define D3DVSD_SKIPCOUNTMASK     (0xF      << D3DVSD_SKIPCOUNTSHIFT)
-#define D3DVSD_EXTCOUNTMASK      (0x1F     << D3DVSD_EXTCOUNTSHIFT)
-#define D3DVSD_VERTEXREGINMASK   (0xF      << D3DVSD_VERTEXREGINSHIFT)
-#define D3DVSD_CONSTCOUNTMASK    (0xF      << D3DVSD_CONSTCOUNTSHIFT)
-#define D3DVSD_DATALOADTYPEMASK  (0x1      << D3DVSD_DATALOADTYPESHIFT)
-#define D3DVSD_STREAMTESSMASK    (0x1      << D3DVSD_STREAMTESSSHIFT)
-#define D3DVSD_TOKENTYPEMASK     (0x7      << D3DVSD_TOKENTYPESHIFT)
-
-
-#define D3DVSD_MAKETOKENTYPE(TokenType) \
-  ((TokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK)
-
-#define D3DVSD_CONST(ConstantAddress, Count) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_CONSTMEM) | ((Count) << D3DVSD_CONSTCOUNTSHIFT) | (ConstantAddress))
-
-#define D3DVSD_END() 0xFFFFFFFF
-
-#define D3DVSD_NOP() 0x00000000
-
-#define D3DVSD_REG(VertexRegister, Type) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | ((Type) << D3DVSD_DATATYPESHIFT) | (VertexRegister))
-
-#define D3DVSD_SKIP(Count) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | 0x10000000 | ((Count) << D3DVSD_SKIPCOUNTSHIFT))
-
-#define D3DVSD_STREAM(StreamNumber) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (StreamNumber))
-
-#define D3DVSD_STREAM_TESS() \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (D3DVSD_STREAMTESSMASK))
-
-#define D3DVSD_TESSNORMAL(RegisterIn, RegisterOut) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | ((RegisterIn) << D3DVSD_VERTEXREGINSHIFT) | ((0x02) << D3DVSD_DATATYPESHIFT) | (RegisterOut))
-
-#define D3DVSD_TESSUV(Register) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | 0x10000000 | ((0x01) << D3DVSD_DATATYPESHIFT) | (Register))
-
-
-/********************************
- * Pixel/Vertex Shaders Functions
- */
-
-/** Maximum number of supported texture coordinates sets operation */
-#define D3DDP_MAXTEXCOORD   8
-
-/** opcode token mask */
-#define D3DSI_OPCODE_MASK 0x0000FFFF
-
-/** opcodes types for PS and VS */
-typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE {
-  D3DSIO_NOP          =  0,
-  D3DSIO_MOV          =  1,
-  D3DSIO_ADD          =  2,
-  D3DSIO_SUB          =  3,
-  D3DSIO_MAD          =  4,
-  D3DSIO_MUL          =  5,
-  D3DSIO_RCP          =  6,
-  D3DSIO_RSQ          =  7,
-  D3DSIO_DP3          =  8,
-  D3DSIO_DP4          =  9,
-  D3DSIO_MIN          = 10,
-  D3DSIO_MAX          = 11,
-  D3DSIO_SLT          = 12,
-  D3DSIO_SGE          = 13,
-  D3DSIO_EXP          = 14,
-  D3DSIO_LOG          = 15,
-  D3DSIO_LIT          = 16,
-  D3DSIO_DST          = 17,
-  D3DSIO_LRP          = 18,
-  D3DSIO_FRC          = 19,
-  D3DSIO_M4x4         = 20,
-  D3DSIO_M4x3         = 21,
-  D3DSIO_M3x4         = 22,
-  D3DSIO_M3x3         = 23,
-  D3DSIO_M3x2         = 24,
-
-  D3DSIO_TEXCOORD     = 64,
-  D3DSIO_TEXKILL      = 65,
-  D3DSIO_TEX          = 66,
-  D3DSIO_TEXBEM       = 67,
-  D3DSIO_TEXBEML      = 68,
-  D3DSIO_TEXREG2AR    = 69,
-  D3DSIO_TEXREG2GB    = 70,
-  D3DSIO_TEXM3x2PAD   = 71,
-  D3DSIO_TEXM3x2TEX   = 72,
-  D3DSIO_TEXM3x3PAD   = 73,
-  D3DSIO_TEXM3x3TEX   = 74,
-  D3DSIO_TEXM3x3DIFF  = 75,
-  D3DSIO_TEXM3x3SPEC  = 76,
-  D3DSIO_TEXM3x3VSPEC = 77,
-  D3DSIO_EXPP         = 78,
-  D3DSIO_LOGP         = 79,
-  D3DSIO_CND          = 80,
-  D3DSIO_DEF          = 81,
-  D3DSIO_TEXREG2RGB   = 82,
-  D3DSIO_TEXDP3TEX    = 83,
-  D3DSIO_TEXM3x2DEPTH = 84,
-  D3DSIO_TEXDP3       = 85,
-  D3DSIO_TEXM3x3      = 86,
-  D3DSIO_TEXDEPTH     = 87,
-  D3DSIO_CMP          = 88,
-  D3DSIO_BEM          = 89,
-
-  D3DSIO_PHASE        = 0xFFFD,
-  D3DSIO_COMMENT      = 0xFFFE,
-  D3DSIO_END          = 0XFFFF,
-
-  D3DSIO_FORCE_DWORD  = 0X7FFFFFFF /** for 32-bit alignment */
-} D3DSHADER_INSTRUCTION_OPCODE_TYPE;
-
-/** for parallelism */
-#define D3DSI_COISSUE 0x40000000
-
-/** destination parameter modifiers (.xyzw) */
-#define D3DSP_WRITEMASK_0       0x00010000 /* .x r */
-#define D3DSP_WRITEMASK_1       0x00020000 /* .y g */
-#define D3DSP_WRITEMASK_2       0x00040000 /* .z b */
-#define D3DSP_WRITEMASK_3       0x00080000 /* .w a */
-#define D3DSP_WRITEMASK_ALL     0x000F0000 /* all */
-
-#define D3DSP_DSTMOD_SHIFT      20
-#define D3DSP_DSTMOD_MASK       (0xF << D3DSP_DSTMOD_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_DSTMOD_TYPE {
-  D3DSPDM_NONE         = 0 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_SATURATE     = 1 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_FORCE_DWORD  = 0X7FFFFFFF
-} D3DSHADER_PARAM_DSTMOD_TYPE;
-
-/** destination param */
-#define D3DSP_DSTSHIFT_SHIFT     24
-#define D3DSP_DSTSHIFT_MASK      (0xF << D3DSP_DSTSHIFT_SHIFT)
-
-/** destination/source reg type */
-#define D3DSP_REGTYPE_SHIFT      28
-#define D3DSP_REGTYPE_MASK       (0x7 << D3DSP_REGTYPE_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_REGISTER_TYPE {
-  D3DSPR_TEMP         = 0 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_INPUT        = 1 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_CONST        = 2 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_ADDR         = 3 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_TEXTURE      = 3 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_RASTOUT      = 4 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_ATTROUT      = 5 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_TEXCRDOUT    = 6 << D3DSP_REGTYPE_SHIFT,
-  D3DSPR_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_REGISTER_TYPE;
-
-typedef enum _D3DVS_RASTOUT_OFFSETS {
-  D3DSRO_POSITION     = 0,
-  D3DSRO_FOG          = 1,
-  D3DSRO_POINT_SIZE   = 2,
-  D3DSRO_FORCE_DWORD  = 0x7FFFFFFF
-} D3DVS_RASTOUT_OFFSETS;
-
-#define D3DVS_ADDRESSMODE_SHIFT  13
-#define D3DVS_ADDRESSMODE_MASK   (0x1 << D3DVS_ADDRESSMODE_SHIFT)
-
-typedef enum _D3DVS_ADDRESSMODE_TYPE {
-  D3DVS_ADDRMODE_ABSOLUTE     = 0 << D3DVS_ADDRESSMODE_SHIFT,
-  D3DVS_ADDRMODE_RELATIVE     = 1 << D3DVS_ADDRESSMODE_SHIFT,
-  D3DVS_ADDRMODE_FORCE_DWORD  = 0x7FFFFFFF
-} D3DVS_ADDRESSMODE_TYPE;
-
-#define D3DVS_SWIZZLE_SHIFT      16
-#define D3DVS_SWIZZLE_MASK       (0xFF << D3DVS_SWIZZLE_SHIFT)
-
-#define D3DSP_SWIZZLE_SHIFT      16
-#define D3DSP_SWIZZLE_MASK       (0xFF << D3DSP_SWIZZLE_SHIFT)
-
-#define D3DVS_X_X       (0 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_Y       (1 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_Z       (2 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_W       (3 << D3DVS_SWIZZLE_SHIFT)
-
-#define D3DVS_Y_X       (0 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_W       (3 << (D3DVS_SWIZZLE_SHIFT + 2))
-
-#define D3DVS_Z_X       (0 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_W       (3 << (D3DVS_SWIZZLE_SHIFT + 4))
-
-#define D3DVS_W_X       (0 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_W       (3 << (D3DVS_SWIZZLE_SHIFT + 6))
-
-#define D3DVS_NOSWIZZLE (D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W)
-
-#define D3DSP_NOSWIZZLE \
-    ((0 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
-
-#define D3DSP_SRCMOD_SHIFT      24
-#define D3DSP_SRCMOD_MASK       (0xF << D3DSP_SRCMOD_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE {
-  D3DSPSM_NONE         =  0 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_NEG          =  1 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_BIAS         =  2 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_BIASNEG      =  3 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_SIGN         =  4 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_SIGNNEG      =  5 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_COMP         =  6 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_X2           =  7 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_X2NEG        =  8 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_DZ           =  9 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_DW           = 10 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_SRCMOD_TYPE;
-
-#define D3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
-#define D3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
-#define D3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
-#define D3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
-
-#define D3DSI_COMMENTSIZE_SHIFT 16
-#define D3DSI_COMMENTSIZE_MASK (0x7FFF << D3DSI_COMMENTSIZE_SHIFT)
-
-#define D3DSHADER_COMMENT(commentSize) \
-  ((((commentSize) << D3DSI_COMMENTSIZE_SHIFT) & D3DSI_COMMENTSIZE_MASK) | D3DSIO_COMMENT)
-
-#define D3DPS_END() 0x0000FFFF
-#define D3DVS_END() 0x0000FFFF
-
-
-/*****************************************************************************
- * Direct 3D v8 enumerated types
- */
-typedef enum _D3DBACKBUFFER_TYPE {
-    D3DBACKBUFFER_TYPE_MONO         = 0,
-    D3DBACKBUFFER_TYPE_LEFT         = 1,
-    D3DBACKBUFFER_TYPE_RIGHT        = 2,
-
-    D3DBACKBUFFER_TYPE_FORCE_DWORD  = 0x7fffffff
-} D3DBACKBUFFER_TYPE;
-
-typedef enum _D3DBASISTYPE{
-   D3DBASIS_BEZIER        = 0,
-   D3DBASIS_BSPLINE       = 1,
-   D3DBASIS_INTERPOLATE   = 2,
-
-   D3DBASIS_FORCE_DWORD   = 0x7fffffff
-} D3DBASISTYPE;
-
-typedef enum _D3DBLEND {
-    D3DBLEND_ZERO               =  1,
-    D3DBLEND_ONE                =  2,
-    D3DBLEND_SRCCOLOR           =  3,
-    D3DBLEND_INVSRCCOLOR        =  4,
-    D3DBLEND_SRCALPHA           =  5,
-    D3DBLEND_INVSRCALPHA        =  6,
-    D3DBLEND_DESTALPHA          =  7,
-    D3DBLEND_INVDESTALPHA       =  8,
-    D3DBLEND_DESTCOLOR          =  9,
-    D3DBLEND_INVDESTCOLOR       = 10,
-    D3DBLEND_SRCALPHASAT        = 11,
-    D3DBLEND_BOTHSRCALPHA       = 12,
-    D3DBLEND_BOTHINVSRCALPHA    = 13,
-
-    D3DBLEND_FORCE_DWORD        = 0x7fffffff
-} D3DBLEND;
-
-typedef enum _D3DBLENDOP {
-    D3DBLENDOP_ADD              = 1,
-    D3DBLENDOP_SUBTRACT         = 2,
-    D3DBLENDOP_REVSUBTRACT      = 3,
-    D3DBLENDOP_MIN              = 4,
-    D3DBLENDOP_MAX              = 5,
-
-    D3DBLENDOP_FORCE_DWORD      = 0x7fffffff
-} D3DBLENDOP;
-
-typedef enum _D3DCMPFUNC {
-    D3DCMP_NEVER                = 1,
-    D3DCMP_LESS                 = 2,
-    D3DCMP_EQUAL                = 3,
-    D3DCMP_LESSEQUAL            = 4,
-    D3DCMP_GREATER              = 5,
-    D3DCMP_NOTEQUAL             = 6,
-    D3DCMP_GREATEREQUAL         = 7,
-    D3DCMP_ALWAYS               = 8,
-
-    D3DCMP_FORCE_DWORD          = 0x7fffffff
-} D3DCMPFUNC;
-
-typedef enum _D3DCUBEMAP_FACES {
-    D3DCUBEMAP_FACE_POSITIVE_X     = 0,
-    D3DCUBEMAP_FACE_NEGATIVE_X     = 1,
-    D3DCUBEMAP_FACE_POSITIVE_Y     = 2,
-    D3DCUBEMAP_FACE_NEGATIVE_Y     = 3,
-    D3DCUBEMAP_FACE_POSITIVE_Z     = 4,
-    D3DCUBEMAP_FACE_NEGATIVE_Z     = 5,
-
-    D3DCUBEMAP_FACE_FORCE_DWORD    = 0xffffffff
-} D3DCUBEMAP_FACES;
-
-typedef enum _D3DCULL {
-    D3DCULL_NONE                = 1,
-    D3DCULL_CW                  = 2,
-    D3DCULL_CCW                 = 3,
-
-    D3DCULL_FORCE_DWORD         = 0x7fffffff
-} D3DCULL;
-
-typedef enum _D3DDEBUGMONITORTOKENS {
-    D3DDMT_ENABLE          = 0,
-    D3DDMT_DISABLE         = 1,
-
-    D3DDMT_FORCE_DWORD     = 0x7fffffff
-} D3DDEBUGMONITORTOKENS;
-
-typedef enum _D3DDEVTYPE {
-    D3DDEVTYPE_HAL         = 1,
-    D3DDEVTYPE_REF         = 2,
-    D3DDEVTYPE_SW          = 3,
-
-    D3DDEVTYPE_FORCE_DWORD = 0xffffffff
-} D3DDEVTYPE;
-
-typedef enum _D3DFILLMODE {
-    D3DFILL_POINT               = 1,
-    D3DFILL_WIREFRAME           = 2,
-    D3DFILL_SOLID               = 3,
-
-    D3DFILL_FORCE_DWORD         = 0x7fffffff
-} D3DFILLMODE;
-
-typedef enum _D3DFOGMODE {
-    D3DFOG_NONE                 = 0,
-    D3DFOG_EXP                  = 1,
-    D3DFOG_EXP2                 = 2,
-    D3DFOG_LINEAR               = 3,
-
-    D3DFOG_FORCE_DWORD          = 0x7fffffff
-} D3DFOGMODE;
-
-typedef enum _D3DFORMAT {
-    D3DFMT_UNKNOWN              =   0,
-
-    D3DFMT_R8G8B8               =  20,
-    D3DFMT_A8R8G8B8             =  21,
-    D3DFMT_X8R8G8B8             =  22,
-    D3DFMT_R5G6B5               =  23,
-    D3DFMT_X1R5G5B5             =  24,
-    D3DFMT_A1R5G5B5             =  25,
-    D3DFMT_A4R4G4B4             =  26,
-    D3DFMT_R3G3B2               =  27,
-    D3DFMT_A8                   =  28,
-    D3DFMT_A8R3G3B2             =  29,
-    D3DFMT_X4R4G4B4             =  30,
-    D3DFMT_A2B10G10R10          =  31,
-    D3DFMT_G16R16               =  34,
-
-    D3DFMT_A8P8                 =  40,
-    D3DFMT_P8                   =  41,
-
-    D3DFMT_L8                   =  50,
-    D3DFMT_A8L8                 =  51,
-    D3DFMT_A4L4                 =  52,
-
-    D3DFMT_V8U8                 =  60,
-    D3DFMT_L6V5U5               =  61,
-    D3DFMT_X8L8V8U8             =  62,
-    D3DFMT_Q8W8V8U8             =  63,
-    D3DFMT_V16U16               =  64,
-    D3DFMT_W11V11U10            =  65,
-    D3DFMT_A2W10V10U10          =  67,
-
-    D3DFMT_UYVY                 =  MAKEFOURCC('U', 'Y', 'V', 'Y'),
-    D3DFMT_YUY2                 =  MAKEFOURCC('Y', 'U', 'Y', '2'),
-    D3DFMT_DXT1                 =  MAKEFOURCC('D', 'X', 'T', '1'),
-    D3DFMT_DXT2                 =  MAKEFOURCC('D', 'X', 'T', '2'),
-    D3DFMT_DXT3                 =  MAKEFOURCC('D', 'X', 'T', '3'),
-    D3DFMT_DXT4                 =  MAKEFOURCC('D', 'X', 'T', '4'),
-    D3DFMT_DXT5                 =  MAKEFOURCC('D', 'X', 'T', '5'),
-
-    D3DFMT_D16_LOCKABLE         =  70,
-    D3DFMT_D32                  =  71,
-    D3DFMT_D15S1                =  73,
-    D3DFMT_D24S8                =  75,
-    D3DFMT_D16                  =  80,
-    D3DFMT_D24X8                =  77,
-    D3DFMT_D24X4S4              =  79,
-
-    D3DFMT_VERTEXDATA           = 100,
-    D3DFMT_INDEX16              = 101,
-    D3DFMT_INDEX32              = 102,
-
-    D3DFMT_FORCE_DWORD          = 0xFFFFFFFF
-} D3DFORMAT;
-
-typedef enum _D3DLIGHTTYPE {
-    D3DLIGHT_POINT          = 1,
-    D3DLIGHT_SPOT           = 2,
-    D3DLIGHT_DIRECTIONAL    = 3,
-
-    D3DLIGHT_FORCE_DWORD    = 0x7fffffff
-} D3DLIGHTTYPE;
-
-typedef enum _D3DMATERIALCOLORSOURCE {
-    D3DMCS_MATERIAL         = 0,
-    D3DMCS_COLOR1           = 1,
-    D3DMCS_COLOR2           = 2,
-
-    D3DMCS_FORCE_DWORD      = 0x7fffffff
-} D3DMATERIALCOLORSOURCE;
-
-typedef enum _D3DMULTISAMPLE_TYPE {
-    D3DMULTISAMPLE_NONE            =  0,
-    D3DMULTISAMPLE_2_SAMPLES       =  2,
-    D3DMULTISAMPLE_3_SAMPLES       =  3,
-    D3DMULTISAMPLE_4_SAMPLES       =  4,
-    D3DMULTISAMPLE_5_SAMPLES       =  5,
-    D3DMULTISAMPLE_6_SAMPLES       =  6,
-    D3DMULTISAMPLE_7_SAMPLES       =  7,
-    D3DMULTISAMPLE_8_SAMPLES       =  8,
-    D3DMULTISAMPLE_9_SAMPLES       =  9,
-    D3DMULTISAMPLE_10_SAMPLES      = 10,
-    D3DMULTISAMPLE_11_SAMPLES      = 11,
-    D3DMULTISAMPLE_12_SAMPLES      = 12,
-    D3DMULTISAMPLE_13_SAMPLES      = 13,
-    D3DMULTISAMPLE_14_SAMPLES      = 14,
-    D3DMULTISAMPLE_15_SAMPLES      = 15,
-    D3DMULTISAMPLE_16_SAMPLES      = 16,
-
-    D3DMULTISAMPLE_FORCE_DWORD     = 0x7fffffff
-} D3DMULTISAMPLE_TYPE;
-
-typedef enum _D3DORDERTYPE {
-   D3DORDER_LINEAR      = 1,
-   D3DORDER_QUADRATIC   = 2,
-   D3DORDER_CUBIC       = 3,
-   D3DORDER_QUINTIC     = 5,
-
-   D3DORDER_FORCE_DWORD = 0x7fffffff
-} D3DORDERTYPE;
-
-typedef enum _D3DPATCHEDGESTYLE {
-   D3DPATCHEDGE_DISCRETE    = 0,
-   D3DPATCHEDGE_CONTINUOUS  = 1,
-
-   D3DPATCHEDGE_FORCE_DWORD = 0x7fffffff,
-} D3DPATCHEDGESTYLE;
-
-typedef enum _D3DPOOL {
-    D3DPOOL_DEFAULT                 = 0,
-    D3DPOOL_MANAGED                 = 1,
-    D3DPOOL_SYSTEMMEM               = 2,
-    D3DPOOL_SCRATCH                 = 3,
-
-    D3DPOOL_FORCE_DWORD             = 0x7fffffff
-} D3DPOOL;
-
-typedef enum _D3DPRIMITIVETYPE {
-    D3DPT_POINTLIST             = 1,
-    D3DPT_LINELIST              = 2,
-    D3DPT_LINESTRIP             = 3,
-    D3DPT_TRIANGLELIST          = 4,
-    D3DPT_TRIANGLESTRIP         = 5,
-    D3DPT_TRIANGLEFAN           = 6,
-
-    D3DPT_FORCE_DWORD           = 0x7fffffff
-} D3DPRIMITIVETYPE;
-
-typedef enum _D3DRENDERSTATETYPE {
-    D3DRS_ZENABLE                   =   7,
-    D3DRS_FILLMODE                  =   8,
-    D3DRS_SHADEMODE                 =   9,
-    D3DRS_LINEPATTERN               =  10,
-    D3DRS_ZWRITEENABLE              =  14,
-    D3DRS_ALPHATESTENABLE           =  15,
-    D3DRS_LASTPIXEL                 =  16,
-    D3DRS_SRCBLEND                  =  19,
-    D3DRS_DESTBLEND                 =  20,
-    D3DRS_CULLMODE                  =  22,
-    D3DRS_ZFUNC                     =  23,
-    D3DRS_ALPHAREF                  =  24,
-    D3DRS_ALPHAFUNC                 =  25,
-    D3DRS_DITHERENABLE              =  26,
-    D3DRS_ALPHABLENDENABLE          =  27,
-    D3DRS_FOGENABLE                 =  28,
-    D3DRS_SPECULARENABLE            =  29,
-    D3DRS_ZVISIBLE                  =  30,
-    D3DRS_FOGCOLOR                  =  34,
-    D3DRS_FOGTABLEMODE              =  35,
-    D3DRS_FOGSTART                  =  36,
-    D3DRS_FOGEND                    =  37,
-    D3DRS_FOGDENSITY                =  38,
-    D3DRS_EDGEANTIALIAS             =  40,
-    D3DRS_ZBIAS                     =  47,
-    D3DRS_RANGEFOGENABLE            =  48,
-    D3DRS_STENCILENABLE             =  52,
-    D3DRS_STENCILFAIL               =  53,
-    D3DRS_STENCILZFAIL              =  54,
-    D3DRS_STENCILPASS               =  55,
-    D3DRS_STENCILFUNC               =  56,
-    D3DRS_STENCILREF                =  57,
-    D3DRS_STENCILMASK               =  58,
-    D3DRS_STENCILWRITEMASK          =  59,
-    D3DRS_TEXTUREFACTOR             =  60,
-    D3DRS_WRAP0                     = 128,
-    D3DRS_WRAP1                     = 129,
-    D3DRS_WRAP2                     = 130,
-    D3DRS_WRAP3                     = 131,
-    D3DRS_WRAP4                     = 132,
-    D3DRS_WRAP5                     = 133,
-    D3DRS_WRAP6                     = 134,
-    D3DRS_WRAP7                     = 135,
-    D3DRS_CLIPPING                  = 136,
-    D3DRS_LIGHTING                  = 137,
-    D3DRS_AMBIENT                   = 139,
-    D3DRS_FOGVERTEXMODE             = 140,
-    D3DRS_COLORVERTEX               = 141,
-    D3DRS_LOCALVIEWER               = 142,
-    D3DRS_NORMALIZENORMALS          = 143,
-    D3DRS_DIFFUSEMATERIALSOURCE     = 145,
-    D3DRS_SPECULARMATERIALSOURCE    = 146,
-    D3DRS_AMBIENTMATERIALSOURCE     = 147,
-    D3DRS_EMISSIVEMATERIALSOURCE    = 148,
-    D3DRS_VERTEXBLEND               = 151,
-    D3DRS_CLIPPLANEENABLE           = 152,
-    D3DRS_SOFTWAREVERTEXPROCESSING  = 153,
-    D3DRS_POINTSIZE                 = 154,
-    D3DRS_POINTSIZE_MIN             = 155,
-    D3DRS_POINTSPRITEENABLE         = 156,
-    D3DRS_POINTSCALEENABLE          = 157,
-    D3DRS_POINTSCALE_A              = 158,
-    D3DRS_POINTSCALE_B              = 159,
-    D3DRS_POINTSCALE_C              = 160,
-    D3DRS_MULTISAMPLEANTIALIAS      = 161,
-    D3DRS_MULTISAMPLEMASK           = 162,
-    D3DRS_PATCHEDGESTYLE            = 163,
-    D3DRS_PATCHSEGMENTS             = 164,
-    D3DRS_DEBUGMONITORTOKEN         = 165,
-    D3DRS_POINTSIZE_MAX             = 166,
-    D3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
-    D3DRS_COLORWRITEENABLE          = 168,
-    D3DRS_TWEENFACTOR               = 170,
-    D3DRS_BLENDOP                   = 171,
-    D3DRS_POSITIONORDER             = 172,
-    D3DRS_NORMALORDER               = 173,
-
-    D3DRS_FORCE_DWORD               = 0x7fffffff
-} D3DRENDERSTATETYPE;
-
-typedef enum _D3DRESOURCETYPE {
-    D3DRTYPE_SURFACE                =  1,
-    D3DRTYPE_VOLUME                 =  2,
-    D3DRTYPE_TEXTURE                =  3,
-    D3DRTYPE_VOLUMETEXTURE          =  4,
-    D3DRTYPE_CUBETEXTURE            =  5,
-    D3DRTYPE_VERTEXBUFFER           =  6,
-    D3DRTYPE_INDEXBUFFER            =  7,
-
-    D3DRTYPE_FORCE_DWORD            = 0x7fffffff
-} D3DRESOURCETYPE;
-
-typedef enum _D3DSHADEMODE {
-    D3DSHADE_FLAT               = 1,
-    D3DSHADE_GOURAUD            = 2,
-    D3DSHADE_PHONG              = 3,
-
-    D3DSHADE_FORCE_DWORD        = 0x7fffffff
-} D3DSHADEMODE;
-
-typedef enum _D3DSTATEBLOCKTYPE {
-    D3DSBT_ALL           = 1,
-    D3DSBT_PIXELSTATE    = 2,
-    D3DSBT_VERTEXSTATE   = 3,
-
-    D3DSBT_FORCE_DWORD   = 0xffffffff
-} D3DSTATEBLOCKTYPE;
-
-typedef enum _D3DSTENCILOP {
-    D3DSTENCILOP_KEEP           = 1,
-    D3DSTENCILOP_ZERO           = 2,
-    D3DSTENCILOP_REPLACE        = 3,
-    D3DSTENCILOP_INCRSAT        = 4,
-    D3DSTENCILOP_DECRSAT        = 5,
-    D3DSTENCILOP_INVERT         = 6,
-    D3DSTENCILOP_INCR           = 7,
-    D3DSTENCILOP_DECR           = 8,
-
-    D3DSTENCILOP_FORCE_DWORD    = 0x7fffffff
-} D3DSTENCILOP;
-
-typedef enum _D3DSWAPEFFECT {
-    D3DSWAPEFFECT_DISCARD         = 1,
-    D3DSWAPEFFECT_FLIP            = 2,
-    D3DSWAPEFFECT_COPY            = 3,
-    D3DSWAPEFFECT_COPY_VSYNC      = 4,
-
-    D3DSWAPEFFECT_FORCE_DWORD     = 0xFFFFFFFF
-} D3DSWAPEFFECT;
-
-typedef enum _D3DTEXTUREADDRESS {
-    D3DTADDRESS_WRAP            = 1,
-    D3DTADDRESS_MIRROR          = 2,
-    D3DTADDRESS_CLAMP           = 3,
-    D3DTADDRESS_BORDER          = 4,
-    D3DTADDRESS_MIRRORONCE      = 5,
-
-    D3DTADDRESS_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTUREADDRESS;
-
-typedef enum _D3DTEXTUREFILTERTYPE {
-    D3DTEXF_NONE            = 0,
-    D3DTEXF_POINT           = 1,
-    D3DTEXF_LINEAR          = 2,
-    D3DTEXF_ANISOTROPIC     = 3,
-    D3DTEXF_FLATCUBIC       = 4,
-    D3DTEXF_GAUSSIANCUBIC   = 5,
-
-    D3DTEXF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTUREFILTERTYPE;
-
-typedef enum _D3DTEXTUREOP {
-    D3DTOP_DISABLE                   =  1,
-    D3DTOP_SELECTARG1                =  2,
-    D3DTOP_SELECTARG2                =  3,
-    D3DTOP_MODULATE                  =  4,
-    D3DTOP_MODULATE2X                =  5,
-    D3DTOP_MODULATE4X                =  6,
-    D3DTOP_ADD                       =  7,
-    D3DTOP_ADDSIGNED                 =  8,
-    D3DTOP_ADDSIGNED2X               =  9,
-    D3DTOP_SUBTRACT                  = 10,
-    D3DTOP_ADDSMOOTH                 = 11,
-    D3DTOP_BLENDDIFFUSEALPHA         = 12,
-    D3DTOP_BLENDTEXTUREALPHA         = 13,
-    D3DTOP_BLENDFACTORALPHA          = 14,
-    D3DTOP_BLENDTEXTUREALPHAPM       = 15,
-    D3DTOP_BLENDCURRENTALPHA         = 16,
-    D3DTOP_PREMODULATE               = 17,
-    D3DTOP_MODULATEALPHA_ADDCOLOR    = 18,
-    D3DTOP_MODULATECOLOR_ADDALPHA    = 19,
-    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
-    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
-    D3DTOP_BUMPENVMAP                = 22,
-    D3DTOP_BUMPENVMAPLUMINANCE       = 23,
-    D3DTOP_DOTPRODUCT3               = 24,
-    D3DTOP_MULTIPLYADD               = 25,
-    D3DTOP_LERP                      = 26,
-
-    D3DTOP_FORCE_DWORD               = 0x7fffffff,
-} D3DTEXTUREOP;
-
-typedef enum _D3DTEXTURESTAGESTATETYPE {
-    D3DTSS_COLOROP               =  1,
-    D3DTSS_COLORARG1             =  2,
-    D3DTSS_COLORARG2             =  3,
-    D3DTSS_ALPHAOP               =  4,
-    D3DTSS_ALPHAARG1             =  5,
-    D3DTSS_ALPHAARG2             =  6,
-    D3DTSS_BUMPENVMAT00          =  7,
-    D3DTSS_BUMPENVMAT01          =  8,
-    D3DTSS_BUMPENVMAT10          =  9,
-    D3DTSS_BUMPENVMAT11          = 10,
-    D3DTSS_TEXCOORDINDEX         = 11,
-    D3DTSS_ADDRESSU              = 13,
-    D3DTSS_ADDRESSV              = 14,
-    D3DTSS_BORDERCOLOR           = 15,
-    D3DTSS_MAGFILTER             = 16,
-    D3DTSS_MINFILTER             = 17,
-    D3DTSS_MIPFILTER             = 18,
-    D3DTSS_MIPMAPLODBIAS         = 19,
-    D3DTSS_MAXMIPLEVEL           = 20,
-    D3DTSS_MAXANISOTROPY         = 21,
-    D3DTSS_BUMPENVLSCALE         = 22,
-    D3DTSS_BUMPENVLOFFSET        = 23,
-    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
-    D3DTSS_ADDRESSW              = 25,
-    D3DTSS_COLORARG0             = 26,
-    D3DTSS_ALPHAARG0             = 27,
-    D3DTSS_RESULTARG             = 28,
-
-    D3DTSS_FORCE_DWORD           = 0x7fffffff
-} D3DTEXTURESTAGESTATETYPE;
-
-typedef enum _D3DTEXTURETRANSFORMFLAGS {
-    D3DTTFF_DISABLE         =   0,
-    D3DTTFF_COUNT1          =   1,
-    D3DTTFF_COUNT2          =   2,
-    D3DTTFF_COUNT3          =   3,
-    D3DTTFF_COUNT4          =   4,
-    D3DTTFF_PROJECTED       = 256,
-
-    D3DTTFF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTURETRANSFORMFLAGS;
-
-typedef enum _D3DTRANSFORMSTATETYPE {
-    D3DTS_VIEW            =  2,
-    D3DTS_PROJECTION      =  3,
-    D3DTS_TEXTURE0        = 16,
-    D3DTS_TEXTURE1        = 17,
-    D3DTS_TEXTURE2        = 18,
-    D3DTS_TEXTURE3        = 19,
-    D3DTS_TEXTURE4        = 20,
-    D3DTS_TEXTURE5        = 21,
-    D3DTS_TEXTURE6        = 22,
-    D3DTS_TEXTURE7        = 23,
-
-    D3DTS_FORCE_DWORD     = 0x7fffffff
-} D3DTRANSFORMSTATETYPE;
-
-typedef enum _D3DVERTEXBLENDFLAGS {
-    D3DVBF_DISABLE  =   0,
-    D3DVBF_1WEIGHTS =   1,
-    D3DVBF_2WEIGHTS =   2,
-    D3DVBF_3WEIGHTS =   3,
-    D3DVBF_TWEENING = 255,
-    D3DVBF_0WEIGHTS = 256
-} D3DVERTEXBLENDFLAGS;
-
-typedef enum _D3DZBUFFERTYPE {
-    D3DZB_FALSE                 = 0,
-    D3DZB_TRUE                  = 1,
-    D3DZB_USEW                  = 2,
-
-    D3DZB_FORCE_DWORD           = 0x7fffffff
-} D3DZBUFFERTYPE;
-
-
-/*****************************************************************************
- * Direct 3D v8 typedefs
- */
-typedef DWORD D3DCOLOR;
-
-/*****************************************************************************
- * Direct 3D v8 structures
- */
-typedef struct _D3DADAPTER_IDENTIFIER8 {
-    char            Driver[MAX_DEVICE_IDENTIFIER_STRING];
-    char            Description[MAX_DEVICE_IDENTIFIER_STRING];
-
-    LARGE_INTEGER   DriverVersion;
-    DWORD           VendorId;
-    DWORD           DeviceId;
-    DWORD           SubSysId;
-    DWORD           Revision;
-
-    GUID            DeviceIdentifier;
-
-    DWORD           WHQLLevel;
-} D3DADAPTER_IDENTIFIER8;
-
-typedef struct _D3DBOX {
-    UINT                Left;
-    UINT                Top;
-    UINT                Right;
-    UINT                Bottom;
-    UINT                Front;
-    UINT                Back;
-} D3DBOX;
-
-typedef struct _D3DCLIPSTATUS8 {
-   DWORD ClipUnion;
-   DWORD ClipIntersection;
-} D3DCLIPSTATUS8;
-
-typedef struct _D3DCOLORVALUE {
-    float r;
-    float g;
-    float b;
-    float a;
-} D3DCOLORVALUE;
-
-typedef struct _D3DDEVICE_CREATION_PARAMETERS {
-    UINT          AdapterOrdinal;
-    D3DDEVTYPE    DeviceType;
-    HWND          hFocusWindow;
-    DWORD         BehaviorFlags;
-} D3DDEVICE_CREATION_PARAMETERS;
-
-typedef struct _D3DDISPLAYMODE {
-    UINT            Width;
-    UINT            Height;
-    UINT            RefreshRate;
-    D3DFORMAT       Format;
-} D3DDISPLAYMODE;
-
-typedef struct _D3DGAMMARAMP {
-    WORD                red  [256];
-    WORD                green[256];
-    WORD                blue [256];
-} D3DGAMMARAMP;
-
-typedef struct _D3DINDEXBUFFER_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-} D3DINDEXBUFFER_DESC;
-
-#ifndef D3DVECTOR_DEFINED
-typedef struct _D3DVECTOR {
-    float x;
-    float y;
-    float z;
-} D3DVECTOR;
-#define D3DVECTOR_DEFINED
-#endif
-
-typedef struct _D3DLIGHT8 {
-    D3DLIGHTTYPE    Type;
-    D3DCOLORVALUE   Diffuse;
-    D3DCOLORVALUE   Specular;
-    D3DCOLORVALUE   Ambient;
-    D3DVECTOR       Position;
-    D3DVECTOR       Direction;
-    float           Range;
-    float           Falloff;
-    float           Attenuation0;
-    float           Attenuation1;
-    float           Attenuation2;
-    float           Theta;
-    float           Phi;
-} D3DLIGHT8;
-
-typedef struct _D3DLINEPATTERN {
-    WORD    wRepeatFactor;
-    WORD    wLinePattern;
-} D3DLINEPATTERN;
-
-typedef struct _D3DLOCKED_BOX {
-    INT                 RowPitch;
-    INT                 SlicePitch;
-    void*               pBits;
-} D3DLOCKED_BOX;
-
-typedef struct _D3DLOCKED_RECT {
-    INT                 Pitch;
-    void*               pBits;
-} D3DLOCKED_RECT;
-
-typedef struct _D3DMATERIAL8 {
-    D3DCOLORVALUE   Diffuse;
-    D3DCOLORVALUE   Ambient;
-    D3DCOLORVALUE   Specular;
-    D3DCOLORVALUE   Emissive;
-    float           Power;
-} D3DMATERIAL8;
-
-typedef struct _D3DMATRIX {
-    union {
-        struct {
-            float        _11, _12, _13, _14;
-            float        _21, _22, _23, _24;
-            float        _31, _32, _33, _34;
-            float        _41, _42, _43, _44;
-        } DUMMYSTRUCTNAME;
-        float m[4][4];
-    } DUMMYUNIONNAME;
-} D3DMATRIX;
-
-typedef struct _D3DPRESENT_PARAMETERS_ {
-    UINT                    BackBufferWidth;
-    UINT                    BackBufferHeight;
-    D3DFORMAT               BackBufferFormat;
-    UINT                    BackBufferCount;
-
-    D3DMULTISAMPLE_TYPE     MultiSampleType;
-
-    D3DSWAPEFFECT           SwapEffect;
-    HWND                    hDeviceWindow;
-    BOOL                    Windowed;
-    BOOL                    EnableAutoDepthStencil;
-    D3DFORMAT               AutoDepthStencilFormat;
-    DWORD                   Flags;
-
-    UINT                    FullScreen_RefreshRateInHz;
-    UINT                    FullScreen_PresentationInterval;
-
-} D3DPRESENT_PARAMETERS;
-
-#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER  0x00000001
-
-typedef struct _D3DRANGE {
-    UINT                Offset;
-    UINT                Size;
-} D3DRANGE;
-
-typedef struct _D3DRASTER_STATUS {
-    BOOL            InVBlank;
-    UINT            ScanLine;
-} D3DRASTER_STATUS;
-
-typedef struct _D3DRECT {
-    LONG x1;
-    LONG y1;
-    LONG x2;
-    LONG y2;
-} D3DRECT;
-
-typedef struct _D3DRECTPATCH_INFO {
-    UINT                StartVertexOffsetWidth;
-    UINT                StartVertexOffsetHeight;
-    UINT                Width;
-    UINT                Height;
-    UINT                Stride;
-    D3DBASISTYPE        Basis;
-    D3DORDERTYPE        Order;
-} D3DRECTPATCH_INFO;
-
-typedef struct _D3DSURFACE_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-    D3DMULTISAMPLE_TYPE MultiSampleType;
-    UINT                Width;
-    UINT                Height;
-} D3DSURFACE_DESC;
-
-typedef struct _D3DTRIPATCH_INFO {
-    UINT                StartVertexOffset;
-    UINT                NumVertices;
-    D3DBASISTYPE        Basis;
-    D3DORDERTYPE        Order;
-} D3DTRIPATCH_INFO;
-
-typedef struct _D3DVERTEXBUFFER_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-    DWORD               FVF;
-} D3DVERTEXBUFFER_DESC;
-
-typedef struct _D3DVIEWPORT8 {
-    DWORD       X;
-    DWORD       Y;
-    DWORD       Width;
-    DWORD       Height;
-    float       MinZ;
-    float       MaxZ;
-} D3DVIEWPORT8;
-
-typedef struct _D3DVOLUME_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-    UINT                Width;
-    UINT                Height;
-    UINT                Depth;
-} D3DVOLUME_DESC;
-
-#endif  /* __WINE_D3D8TYPES_H */
diff --git a/misc/builddeps/win64/dx/include/d3d9.h b/misc/builddeps/win64/dx/include/d3d9.h
deleted file mode 100644 (file)
index 3f9ebf2..0000000
+++ /dev/null
@@ -1,2031 +0,0 @@
-/*
- * Copyright (C) 2002-2003 Jason Edmeades
- *                         Raphael Junqueira
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D9_H
-#define __WINE_D3D9_H
-
-#ifndef DIRECT3D_VERSION
-#define DIRECT3D_VERSION  0x0900
-#endif
-
-#include <stdlib.h>
-
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-
-#ifndef __WINESRC__
-# include <windows.h>
-#endif
-
-#include <d3d9types.h>
-#include <d3d9caps.h>
-
-/*****************************************************************************
- * Behavior Flags for IDirect3D8::CreateDevice
- */
-#define D3DCREATE_FPU_PRESERVE                  0x00000002L
-#define D3DCREATE_MULTITHREADED                 0x00000004L
-#define D3DCREATE_PUREDEVICE                    0x00000010L
-#define D3DCREATE_SOFTWARE_VERTEXPROCESSING     0x00000020L
-#define D3DCREATE_HARDWARE_VERTEXPROCESSING     0x00000040L
-#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L
-#define D3DCREATE_DISABLE_DRIVER_MANAGEMENT     0x00000100L
-#define D3DCREATE_ADAPTERGROUP_DEVICE           0x00000200L
-
-/*****************************************************************************
- * Flags for SetPrivateData
- */
-#define D3DSPD_IUNKNOWN                         0x00000001L
-
-
-/*****************************************************************************
- * #defines and error codes
- */
-#define D3D_SDK_VERSION                         32
-#define D3DADAPTER_DEFAULT                      0
-#define D3DENUM_NO_WHQL_LEVEL                   0x00000002L
-#define D3DPRESENT_BACK_BUFFERS_MAX             3L
-#define D3DSGR_NO_CALIBRATION                   0x00000000L
-#define D3DSGR_CALIBRATE                        0x00000001L
-
-#define _FACD3D  0x876
-#define MAKE_D3DHRESULT( code )                 MAKE_HRESULT( 1, _FACD3D, code )
-#define MAKE_D3DSTATUS( code )                  MAKE_HRESULT( 0, _FACD3D, code )
-
-/*****************************************************************************
- * Direct3D Errors
- */
-#define D3D_OK                                  S_OK
-#define D3DERR_WRONGTEXTUREFORMAT               MAKE_D3DHRESULT(2072)
-#define D3DERR_UNSUPPORTEDCOLOROPERATION        MAKE_D3DHRESULT(2073)
-#define D3DERR_UNSUPPORTEDCOLORARG              MAKE_D3DHRESULT(2074)
-#define D3DERR_UNSUPPORTEDALPHAOPERATION        MAKE_D3DHRESULT(2075)
-#define D3DERR_UNSUPPORTEDALPHAARG              MAKE_D3DHRESULT(2076)
-#define D3DERR_TOOMANYOPERATIONS                MAKE_D3DHRESULT(2077)
-#define D3DERR_CONFLICTINGTEXTUREFILTER         MAKE_D3DHRESULT(2078)
-#define D3DERR_UNSUPPORTEDFACTORVALUE           MAKE_D3DHRESULT(2079)
-#define D3DERR_CONFLICTINGRENDERSTATE           MAKE_D3DHRESULT(2081)
-#define D3DERR_UNSUPPORTEDTEXTUREFILTER         MAKE_D3DHRESULT(2082)
-#define D3DERR_CONFLICTINGTEXTUREPALETTE        MAKE_D3DHRESULT(2086)
-#define D3DERR_DRIVERINTERNALERROR              MAKE_D3DHRESULT(2087)
-#define D3DERR_NOTFOUND                         MAKE_D3DHRESULT(2150)
-#define D3DERR_MOREDATA                         MAKE_D3DHRESULT(2151)
-#define D3DERR_DEVICELOST                       MAKE_D3DHRESULT(2152)
-#define D3DERR_DEVICENOTRESET                   MAKE_D3DHRESULT(2153)
-#define D3DERR_NOTAVAILABLE                     MAKE_D3DHRESULT(2154)
-#define D3DERR_OUTOFVIDEOMEMORY                 MAKE_D3DHRESULT(380)
-#define D3DERR_INVALIDDEVICE                    MAKE_D3DHRESULT(2155)
-#define D3DERR_INVALIDCALL                      MAKE_D3DHRESULT(2156)
-#define D3DERR_DRIVERINVALIDCALL                MAKE_D3DHRESULT(2157)
-#define D3DERR_WASSTILLDRAWING                  MAKE_D3DHRESULT(540)
-#define D3DOK_NOAUTOGEN                         MAKE_D3DSTATUS(2159)
-
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID(IID_IDirect3D9,                   0x81BDCBCA, 0x64D4, 0x426D, 0xAE, 0x8D, 0xAD, 0x1, 0x47, 0xF4, 0x27, 0x5C);
-typedef struct IDirect3D9 *LPDIRECT3D9, *PDIRECT3D9;
-
-DEFINE_GUID(IID_IDirect3D9Ex,                 0x02177241, 0x69FC, 0x400C, 0x8F, 0xF1, 0x93, 0xA4, 0x4D, 0xF6, 0x86, 0x1D);
-typedef struct IDirect3D9Ex *LPDIRECT3D9EX, *PDIRECT3D9EX;
-
-DEFINE_GUID(IID_IDirect3DDevice9,             0xd0223b96, 0xbf7a, 0x43fd, 0x92, 0xbd, 0xa4, 0x3b, 0xd, 0x82, 0xb9, 0xeb);
-typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9;
-
-DEFINE_GUID(IID_IDirect3DDevice9Ex,           0xb18b10ce, 0x2649, 0x405a, 0x87, 0xf, 0x95, 0xf7, 0x77, 0xd4, 0x31, 0x3a);
-typedef struct IDirect3DDevice9Ex *LPDIRECT3DDEVICE9EX, *PDIRECT3DDEVICE9EX;
-
-DEFINE_GUID(IID_IDirect3DResource9,           0x5eec05d, 0x8f7d, 0x4362, 0xb9, 0x99, 0xd1, 0xba, 0xf3, 0x57, 0xc7, 0x4);
-typedef struct IDirect3DResource9 *LPDIRECT3DRESOURCE9, *PDIRECT3DRESOURCE9;
-
-DEFINE_GUID(IID_IDirect3DVertexBuffer9,       0xb64bb1b5, 0xfd70, 0x4df6, 0xbf, 0x91, 0x19, 0xd0, 0xa1, 0x24, 0x55, 0xe3);
-typedef struct IDirect3DVertexBuffer9 *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;
-
-DEFINE_GUID(IID_IDirect3DVolume9,             0x24f416e6, 0x1f67, 0x4aa7, 0xb8, 0x8e, 0xd3, 0x3f, 0x6f, 0x31, 0x28, 0xa1);
-typedef struct IDirect3DVolume9 *LPDIRECT3DVOLUME9, *PDIRECT3DVOLUME9;
-
-DEFINE_GUID(IID_IDirect3DSwapChain9,          0x794950f2, 0xadfc, 0x458a, 0x90, 0x5e, 0x10, 0xa1, 0xb, 0xb, 0x50, 0x3b);
-typedef struct IDirect3DSwapChain9 *LPDIRECT3DSWAPCHAIN9, *PDIRECT3DSWAPCHAIN9;
-
-DEFINE_GUID(IID_IDirect3DSwapChain9Ex,        0x91886caf, 0x1c3d, 0x4d2e, 0xa0, 0xab, 0x3e, 0x4c, 0x7d, 0x8d, 0x33, 0x3);
-typedef struct IDirect3DSwapChain9Ex *LPDIRECT3DSWAPCHAIN9EX, *PDIRECT3DSWAPCHAIN9EX;
-
-DEFINE_GUID(IID_IDirect3DSurface9,            0xcfbaf3a, 0x9ff6, 0x429a, 0x99, 0xb3, 0xa2, 0x79, 0x6a, 0xf8, 0xb8, 0x9b);
-typedef struct IDirect3DSurface9 *LPDIRECT3DSURFACE9, *PDIRECT3DSURFACE9;
-
-DEFINE_GUID(IID_IDirect3DIndexBuffer9,        0x7c9dd65e, 0xd3f7, 0x4529, 0xac, 0xee, 0x78, 0x58, 0x30, 0xac, 0xde, 0x35);
-typedef struct IDirect3DIndexBuffer9 *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;
-
-DEFINE_GUID(IID_IDirect3DBaseTexture9,        0x580ca87e, 0x1d3c, 0x4d54, 0x99, 0x1d, 0xb7, 0xd3, 0xe3, 0xc2, 0x98, 0xce);
-typedef struct IDirect3DBaseTexture9 *LPDIRECT3DBASETEXTURE9, *PDIRECT3DBASETEXTURE9;
-
-DEFINE_GUID(IID_IDirect3DTexture9,            0x85c31227, 0x3de5, 0x4f00, 0x9b, 0x3a, 0xf1, 0x1a, 0xc3, 0x8c, 0x18, 0xb5);
-typedef struct IDirect3DTexture9 *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;
-
-DEFINE_GUID(IID_IDirect3DCubeTexture9,        0xfff32f81, 0xd953, 0x473a, 0x92, 0x23, 0x93, 0xd6, 0x52, 0xab, 0xa9, 0x3f);
-typedef struct IDirect3DCubeTexture9 *LPDIRECT3DCUBETEXTURE9, *PDIRECT3DCUBETEXTURE9;
-
-DEFINE_GUID(IID_IDirect3DVolumeTexture9,      0x2518526c, 0xe789, 0x4111, 0xa7, 0xb9, 0x47, 0xef, 0x32, 0x8d, 0x13, 0xe6);
-typedef struct IDirect3DVolumeTexture9 *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;
-
-DEFINE_GUID(IID_IDirect3DVertexDeclaration9,  0xdd13c59c, 0x36fa, 0x4098, 0xa8, 0xfb, 0xc7, 0xed, 0x39, 0xdc, 0x85, 0x46);
-typedef struct IDirect3DVertexDeclaration9 *LPDIRECT3DVERTEXDECLARATION9;
-
-DEFINE_GUID(IID_IDirect3DVertexShader9,       0xefc5557e, 0x6265, 0x4613, 0x8a, 0x94, 0x43, 0x85, 0x78, 0x89, 0xeb, 0x36);
-typedef struct IDirect3DVertexShader9 *LPDIRECT3DVERTEXSHADER9;
-
-DEFINE_GUID(IID_IDirect3DPixelShader9,        0x6d3bdbdc, 0x5b02, 0x4415, 0xb8, 0x52, 0xce, 0x5e, 0x8b, 0xcc, 0xb2, 0x89);
-typedef struct IDirect3DPixelShader9 *LPDIRECT3DPIXELSHADER9;
-
-DEFINE_GUID(IID_IDirect3DStateBlock9,         0xb07c4fe5, 0x310d, 0x4ba8, 0xa2, 0x3c, 0x4f, 0xf, 0x20, 0x6f, 0x21, 0x8b);
-typedef struct IDirect3DStateBlock9 *LPDIRECT3DSTATEBLOCK9;
-
-DEFINE_GUID(IID_IDirect3DQuery9,              0xd9771460, 0xa695, 0x4f26, 0xbb, 0xd3, 0x27, 0xb8, 0x40, 0xb5, 0x41, 0xcc);
-typedef struct IDirect3DQuery9 *LPDIRECT3DQUERY9, *PDIRECT3DQUERY9;
-
-/*****************************************************************************
- * IDirect3D9 interface
- */
-#undef INTERFACE
-#define INTERFACE IDirect3D9
-DECLARE_INTERFACE_(IDirect3D9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D9 methods ***/
-    STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
-    STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
-    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) PURE;
-    STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter, D3DFORMAT Format) PURE;
-    STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(CheckDeviceType)(THIS_ UINT iAdapter, D3DDEVTYPE DevType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed) PURE;
-    STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) PURE;
-    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels) PURE;
-    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) PURE;
-    STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) PURE;
-    STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
-    STDMETHOD(CreateDevice)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, struct IDirect3DDevice9** ppReturnedDeviceInterface) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D9_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D9_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D9 methods ***/
-#define IDirect3D9_RegisterSoftwareDevice(p,a)                (p)->lpVtbl->RegisterSoftwareDevice(p,a)
-#define IDirect3D9_GetAdapterCount(p)                         (p)->lpVtbl->GetAdapterCount(p)
-#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)              (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
-#define IDirect3D9_GetAdapterModeCount(p,a,b)                 (p)->lpVtbl->GetAdapterModeCount(p,a,b)
-#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
-#define IDirect3D9_GetAdapterDisplayMode(p,a,b)               (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
-#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)               (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
-#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
-#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
-#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
-#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
-#define IDirect3D9_GetDeviceCaps(p,a,b,c)                     (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
-#define IDirect3D9_GetAdapterMonitor(p,a)                     (p)->lpVtbl->GetAdapterMonitor(p,a)
-#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)                (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D9_AddRef(p)             (p)->AddRef()
-#define IDirect3D9_Release(p)            (p)->Release()
-/*** IDirect3D9 methods ***/
-#define IDirect3D9_RegisterSoftwareDevice(p,a)                (p)->RegisterSoftwareDevice(a)
-#define IDirect3D9_GetAdapterCount(p)                         (p)->GetAdapterCount()
-#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)              (p)->GetAdapterIdentifier(a,b,c)
-#define IDirect3D9_GetAdapterModeCount(p,a,b)                 (p)->GetAdapterModeCount(a,b)
-#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)                (p)->EnumAdapterModes(a,b,c,d)
-#define IDirect3D9_GetAdapterDisplayMode(p,a,b)               (p)->GetAdapterDisplayMode(a,b)
-#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)               (p)->CheckDeviceType(a,b,c,d,e)
-#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->CheckDeviceFormat(a,b,c,d,e,f)
-#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
-#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->CheckDepthStencilMatch(a,b,c,d,e)
-#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->CheckDeviceFormatConversion(a,b,c,d)
-#define IDirect3D9_GetDeviceCaps(p,a,b,c)                     (p)->GetDeviceCaps(a,b,c)
-#define IDirect3D9_GetAdapterMonitor(p,a)                     (p)->GetAdapterMonitor(a)
-#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)                (p)->CreateDevice(a,b,c,d,e,f)
-#endif
-
-/*****************************************************************************
- * IDirect3D9Ex interface
- */
-#define INTERFACE IDirect3D9Ex
-DECLARE_INTERFACE_(IDirect3D9Ex,IDirect3D9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3D9 methods ***/
-
-    /* Note: Microsoft's d3d9.h does not declare IDirect3D9Ex::RegisterSoftwareDevice . This would mean that
-     * the offsets of the other methods in the Vtable change too. This is wrong. In Microsoft's
-     * d3d9.dll, the offsets for the other functions are still compatible with IDirect3D9.
-     * This is probably because even in MS's header IDirect3D9Ex inherits from IDirect3D9, which makes the
-     * C++ inferface compatible, and nobody uses the C interface in Windows world.
-     */
-    STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
-
-    STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
-    STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9* pIdentifier) PURE;
-    STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter, D3DFORMAT Format) PURE;
-    STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(CheckDeviceType)(THIS_ UINT iAdapter, D3DDEVTYPE DevType, D3DFORMAT DisplayFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed) PURE;
-    STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) PURE;
-    STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels) PURE;
-    STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) PURE;
-    STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) PURE;
-    STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
-    STDMETHOD(CreateDevice)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, struct IDirect3DDevice9** ppReturnedDeviceInterface) PURE;
-    /*** IDirect3D9Ex methods ***/
-    STDMETHOD_(UINT, GetAdapterModeCountEx)(THIS_ UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter) PURE;
-    STDMETHOD(EnumAdapterModesEx)(THIS_ UINT Adapter, CONST D3DDISPLAYMODEFILTER *pFilter, UINT Mode, D3DDISPLAYMODEEX* pMode) PURE;
-    STDMETHOD(GetAdapterDisplayModeEx)(THIS_ UINT Adapter, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation);
-    STDMETHOD(CreateDeviceEx)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters, D3DDISPLAYMODEEX* pFullscreenDisplayMode, struct IDirect3DDevice9Ex **ppReturnedDeviceInterface) PURE;
-    STDMETHOD(GetAdapterLUID)(THIS_ UINT Adatper, LUID *pLUID) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3D9Ex_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3D9Ex_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3D9Ex_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3D9 methods ***/
-#define IDirect3D9Ex_RegisterSoftwareDevice(p,a)                (p)->lpVtbl->RegisterSoftwareDevice(p,a)
-#define IDirect3D9Ex_GetAdapterCount(p)                         (p)->lpVtbl->GetAdapterCount(p)
-#define IDirect3D9Ex_GetAdapterIdentifier(p,a,b,c)              (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
-#define IDirect3D9Ex_GetAdapterModeCount(p,a,b)                 (p)->lpVtbl->GetAdapterModeCount(p,a,b)
-#define IDirect3D9Ex_EnumAdapterModes(p,a,b,c,d)                (p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
-#define IDirect3D9Ex_GetAdapterDisplayMode(p,a,b)               (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
-#define IDirect3D9Ex_CheckDeviceType(p,a,b,c,d,e)               (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
-#define IDirect3D9Ex_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
-#define IDirect3D9Ex_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
-#define IDirect3D9Ex_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
-#define IDirect3D9Ex_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
-#define IDirect3D9Ex_GetDeviceCaps(p,a,b,c)                     (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
-#define IDirect3D9Ex_GetAdapterMonitor(p,a)                     (p)->lpVtbl->GetAdapterMonitor(p,a)
-#define IDirect3D9Ex_CreateDevice(p,a,b,c,d,e,f)                (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
-/*** IDirect3D9Ex methods ***/
-#define IDirect3D9Ex_GetAdapterModeCountEx(p,a,b)               (p)->lpVtbl->GetAdapterModeCountEx(p,a,b)
-#define IDirect3D9Ex_EnumAdapterModesEx(p,a,b,c,d)              (p)->lpVtbl->EnumAdapterModesEx(p,a,b,c,d)
-#define IDirect3D9Ex_GetAdapterDisplayModeEx(p,a,b,c)           (p)->lpVtbl->GetAdapterDisplayModeEx(p,a,b,c)
-#define IDirect3D9Ex_CreateDeviceEx(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d,e,f,g)
-#define IDirect3D9Ex_GetAdapterLUID(p,a,b)                      (p)->lpVtbl->GetAdapterLUID(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3D9Ex_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3D9Ex_AddRef(p)             (p)->AddRef()
-#define IDirect3D9Ex_Release(p)            (p)->Release()
-/*** IDirect3D9 methods ***/
-#define IDirect3D9Ex_RegisterSoftwareDevice(p,a)                (p)->RegisterSoftwareDevice(a)
-#define IDirect3D9Ex_GetAdapterCount(p)                         (p)->GetAdapterCount()
-#define IDirect3D9Ex_GetAdapterIdentifier(p,a,b,c)              (p)->GetAdapterIdentifier(a,b,c)
-#define IDirect3D9Ex_GetAdapterModeCount(p,a,b)                 (p)->GetAdapterModeCount(a,b)
-#define IDirect3D9Ex_EnumAdapterModes(p,a,b,c,d)                (p)->EnumAdapterModes(a,b,c,d)
-#define IDirect3D9Ex_GetAdapterDisplayMode(p,a,b)               (p)->GetAdapterDisplayMode(a,b)
-#define IDirect3D9Ex_CheckDeviceType(p,a,b,c,d,e)               (p)->CheckDeviceType(a,b,c,d,e)
-#define IDirect3D9Ex_CheckDeviceFormat(p,a,b,c,d,e,f)           (p)->CheckDeviceFormat(a,b,c,d,e,f)
-#define IDirect3D9Ex_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)  (p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
-#define IDirect3D9Ex_CheckDepthStencilMatch(p,a,b,c,d,e)        (p)->CheckDepthStencilMatch(a,b,c,d,e)
-#define IDirect3D9Ex_CheckDeviceFormatConversion(p,a,b,c,d)     (p)->CheckDeviceFormatConversion(a,b,c,d)
-#define IDirect3D9Ex_GetDeviceCaps(p,a,b,c)                     (p)->GetDeviceCaps(a,b,c)
-#define IDirect3D9Ex_GetAdapterMonitor(p,a)                     (p)->GetAdapterMonitor(a)
-#define IDirect3D9Ex_CreateDevice(p,a,b,c,d,e,f)                (p)->CreateDevice(a,b,c,d,e,f)
-#endif
-
-/*****************************************************************************
- * IDirect3DVolume9 interface
- */
-#define INTERFACE IDirect3DVolume9
-DECLARE_INTERFACE_(IDirect3DVolume9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVolume9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD(GetContainer)(THIS_ REFIID riid, void** ppContainer) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC* pDesc) PURE;
-    STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) PURE;
-    STDMETHOD(UnlockBox)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVolume9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVolume9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVolume9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVolume9 methods ***/
-#define IDirect3DVolume9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVolume9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVolume9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVolume9_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
-#define IDirect3DVolume9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#define IDirect3DVolume9_LockBox(p,a,b,c)             (p)->lpVtbl->LockBox(p,a,b,c)
-#define IDirect3DVolume9_UnlockBox(p)                 (p)->lpVtbl->UnlockBox(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVolume9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVolume9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVolume9_Release(p)                   (p)->Release()
-/*** IDirect3DVolume9 methods ***/
-#define IDirect3DVolume9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVolume9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVolume9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVolume9_GetContainer(p,a,b)          (p)->GetContainer(a,b)
-#define IDirect3DVolume9_GetDesc(p,a)                 (p)->GetDesc(a)
-#define IDirect3DVolume9_LockBox(p,a,b,c)             (p)->LockBox(a,b,c)
-#define IDirect3DVolume9_UnlockBox(p)                 (p)->UnlockBox()
-#endif
-
-/*****************************************************************************
- * IDirect3DSwapChain9 interface
- */
-#define INTERFACE IDirect3DSwapChain9
-DECLARE_INTERFACE_(IDirect3DSwapChain9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DSwapChain9 methods ***/
-    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion, DWORD dwFlags) PURE;
-    STDMETHOD(GetFrontBufferData)(THIS_ struct IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, struct IDirect3DSurface9** ppBackBuffer) PURE;
-    STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS* pRasterStatus) PURE;
-    STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(GetPresentParameters)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DSwapChain9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DSwapChain9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DSwapChain9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DSwapChain9 methods ***/
-#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)         (p)->lpVtbl->Present(p,a,b,c,d,e)
-#define IDirect3DSwapChain9_GetFrontBufferData(p,a)      (p)->lpVtbl->GetFrontBufferData(p,a)
-#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)       (p)->lpVtbl->GetBackBuffer(p,a,b,c)
-#define IDirect3DSwapChain9_GetRasterStatus(p,a)         (p)->lpVtbl->GetRasterStatus(p,a)
-#define IDirect3DSwapChain9_GetDisplayMode(p,a)          (p)->lpVtbl->GetDisplayMode(p,a)
-#define IDirect3DSwapChain9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->lpVtbl->GetPresentParameters(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DSwapChain9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DSwapChain9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DSwapChain9_Release(p)                   (p)->Release()
-/*** IDirect3DSwapChain9 methods ***/
-#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)         (p)->Present(a,b,c,d,e)
-#define IDirect3DSwapChain9_GetFrontBufferData(p,a)      (p)->GetFrontBufferData(a)
-#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)       (p)->GetBackBuffer(a,b,c)
-#define IDirect3DSwapChain9_GetRasterStatus(p,a)         (p)->GetRasterStatus(a)
-#define IDirect3DSwapChain9_GetDisplayMode(p,a)          (p)->GetDisplayMode(a)
-#define IDirect3DSwapChain9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->GetPresentParameters(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DResource9 interface
- */
-#define INTERFACE IDirect3DResource9
-DECLARE_INTERFACE_(IDirect3DResource9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DResource9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DResource9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DResource9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DResource9 methods ***/
-#define IDirect3DResource9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DResource9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DResource9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DResource9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DResource9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DResource9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DResource9_GetType(p)                   (p)->lpVtbl->GetType(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DResource9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DResource9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DResource9_Release(p)                   (p)->Release()
-/*** IDirect3DResource9 methods ***/
-#define IDirect3DResource9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DResource9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DResource9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DResource9_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DResource9_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DResource9_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DResource9_GetType(p)                   (p)->GetType()
-#endif
-
-/*****************************************************************************
- * IDirect3DSurface9 interface
- */
-#define INTERFACE IDirect3DSurface9
-DECLARE_INTERFACE_(IDirect3DSurface9,IDirect3DResource9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DSurface9 methods ***/
-    STDMETHOD(GetContainer)(THIS_ REFIID riid, void** ppContainer) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC* pDesc) PURE;
-    STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC* phdc) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC hdc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DSurface9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DSurface9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DSurface9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DSurface9 methods: IDirect3DResource9 ***/
-#define IDirect3DSurface9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DSurface9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DSurface9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DSurface9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DSurface9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DSurface9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DSurface9_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DSurface9 methods ***/
-#define IDirect3DSurface9_GetContainer(p,a,b)          (p)->lpVtbl->GetContainer(p,a,b)
-#define IDirect3DSurface9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#define IDirect3DSurface9_LockRect(p,a,b,c)            (p)->lpVtbl->LockRect(p,a,b,c)
-#define IDirect3DSurface9_UnlockRect(p)                (p)->lpVtbl->UnlockRect(p)
-#define IDirect3DSurface9_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirect3DSurface9_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DSurface9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DSurface9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DSurface9_Release(p)                   (p)->Release()
-/*** IDirect3DSurface9 methods: IDirect3DResource9 ***/
-#define IDirect3DSurface9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DSurface9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DSurface9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DSurface9_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DSurface9_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DSurface9_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DSurface9_GetType(p)                   (p)->GetType()
-/*** IDirect3DSurface9 methods ***/
-#define IDirect3DSurface9_GetContainer(p,a,b)          (p)->GetContainer(a,b)
-#define IDirect3DSurface9_GetDesc(p,a)                 (p)->GetDesc(a)
-#define IDirect3DSurface9_LockRect(p,a,b,c)            (p)->LockRect(a,b,c)
-#define IDirect3DSurface9_UnlockRect(p)                (p)->UnlockRect()
-#define IDirect3DSurface9_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirect3DSurface9_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexBuffer9 interface
- */
-#define INTERFACE IDirect3DVertexBuffer9
-DECLARE_INTERFACE_(IDirect3DVertexBuffer9,IDirect3DResource9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DVertexBuffer9 methods ***/
-    STDMETHOD(Lock)(THIS_ UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC* pDesc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexBuffer9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexBuffer9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexBuffer9 methods: IDirect3DResource9 ***/
-#define IDirect3DVertexBuffer9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVertexBuffer9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVertexBuffer9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DVertexBuffer9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DVertexBuffer9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DVertexBuffer9_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DVertexBuffer9 methods ***/
-#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirect3DVertexBuffer9_Unlock(p)                    (p)->lpVtbl->Unlock(p)
-#define IDirect3DVertexBuffer9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DVertexBuffer9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DVertexBuffer9_Release(p)                   (p)->Release()
-/*** IDirect3DVertexBuffer9 methods: IDirect3DResource9 ***/
-#define IDirect3DVertexBuffer9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DVertexBuffer9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DVertexBuffer9_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DVertexBuffer9_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DVertexBuffer9_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DVertexBuffer9_GetType(p)                   (p)->GetType()
-/*** IDirect3DVertexBuffer9 methods ***/
-#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirect3DVertexBuffer9_Unlock(p)                    (p)->Unlock()
-#define IDirect3DVertexBuffer9_GetDesc(p,a)                 (p)->GetDesc(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DIndexBuffer9 interface
- */
-#define INTERFACE IDirect3DIndexBuffer9
-DECLARE_INTERFACE_(IDirect3DIndexBuffer9,IDirect3DResource9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DIndexBuffer9 methods ***/
-    STDMETHOD(Lock)(THIS_ UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags) PURE;
-    STDMETHOD(Unlock)(THIS) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC* pDesc) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DIndexBuffer9_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DIndexBuffer9_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DIndexBuffer9 methods: IDirect3DResource9 ***/
-#define IDirect3DIndexBuffer9_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DIndexBuffer9_FreePrivateData(p,a)         (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DIndexBuffer9_SetPriority(p,a)             (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DIndexBuffer9_GetPriority(p)               (p)->lpVtbl->GetPriority(p)
-#define IDirect3DIndexBuffer9_PreLoad(p)                   (p)->lpVtbl->PreLoad(p)
-#define IDirect3DIndexBuffer9_GetType(p)                   (p)->lpVtbl->GetType(p)
-/*** IDirect3DIndexBuffer9 methods ***/
-#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirect3DIndexBuffer9_Unlock(p)                    (p)->lpVtbl->Unlock(p)
-#define IDirect3DIndexBuffer9_GetDesc(p,a)                 (p)->lpVtbl->GetDesc(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DIndexBuffer9_AddRef(p)                    (p)->AddRef()
-#define IDirect3DIndexBuffer9_Release(p)                   (p)->Release()
-/*** IDirect3DIndexBuffer9 methods: IDirect3DResource9 ***/
-#define IDirect3DIndexBuffer9_GetDevice(p,a)               (p)->GetDevice(a)
-#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)      (p)->GetPrivateData(a,b,c)
-#define IDirect3DIndexBuffer9_FreePrivateData(p,a)         (p)->FreePrivateData(a)
-#define IDirect3DIndexBuffer9_SetPriority(p,a)             (p)->SetPriority(a)
-#define IDirect3DIndexBuffer9_GetPriority(p)               (p)->GetPriority()
-#define IDirect3DIndexBuffer9_PreLoad(p)                   (p)->PreLoad()
-#define IDirect3DIndexBuffer9_GetType(p)                   (p)->GetType()
-/*** IDirect3DIndexBuffer9 methods ***/
-#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirect3DIndexBuffer9_Unlock(p)                    (p)->Unlock()
-#define IDirect3DIndexBuffer9_GetDesc(p,a)                 (p)->GetDesc(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DBaseTexture9 interface
- */
-#define INTERFACE IDirect3DBaseTexture9
-DECLARE_INTERFACE_(IDirect3DBaseTexture9,IDirect3DResource9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture9 methods ***/
-    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
-    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
-    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
-    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
-    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DBaseTexture9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DBaseTexture9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DBaseTexture9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DBaseTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DBaseTexture9_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)  (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DBaseTexture9_FreePrivateData(p,a)       (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DBaseTexture9_SetPriority(p,a)           (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DBaseTexture9_GetPriority(p)             (p)->lpVtbl->GetPriority(p)
-#define IDirect3DBaseTexture9_PreLoad(p)                 (p)->lpVtbl->PreLoad(p)
-#define IDirect3DBaseTexture9_GetType(p)                 (p)->lpVtbl->GetType(p)
-/*** IDirect3DBaseTexture9 methods ***/
-#define IDirect3DBaseTexture9_SetLOD(p,a)                (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DBaseTexture9_GetLOD(p)                  (p)->lpVtbl->GetLOD(p)
-#define IDirect3DBaseTexture9_GetLevelCount(p)           (p)->lpVtbl->GetLevelCount(p)
-#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)  (p)->lpVtbl->SetAutoGenFilterType(p,a)
-#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
-#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DBaseTexture9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DBaseTexture9_AddRef(p)              (p)->AddRef()
-#define IDirect3DBaseTexture9_Release(p)             (p)->Release()
-/*** IDirect3DBaseTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DBaseTexture9_GetDevice(p,a)             (p)->GetDevice(a)
-#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)  (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
-#define IDirect3DBaseTexture9_FreePrivateData(p,a)       (p)->FreePrivateData(a)
-#define IDirect3DBaseTexture9_SetPriority(p,a)           (p)->SetPriority(a)
-#define IDirect3DBaseTexture9_GetPriority(p)             (p)->GetPriority()
-#define IDirect3DBaseTexture9_PreLoad(p)                 (p)->PreLoad()
-#define IDirect3DBaseTexture9_GetType(p)                 (p)->GetType()
-/*** IDirect3DBaseTexture9 methods ***/
-#define IDirect3DBaseTexture9_SetLOD(p,a)                (p)->SetLOD(a)
-#define IDirect3DBaseTexture9_GetLOD(p)                  (p)->GetLOD()
-#define IDirect3DBaseTexture9_GetLevelCount(p)           (p)->GetLevelCount()
-#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)  (p)->SetAutoGenFilterType(a)
-#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
-#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
-#endif
-
-/*****************************************************************************
- * IDirect3DCubeTexture9 interface
- */
-#define INTERFACE IDirect3DCubeTexture9
-DECLARE_INTERFACE_(IDirect3DCubeTexture9,IDirect3DBaseTexture9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture9 methods ***/
-    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
-    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
-    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
-    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
-    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
-    /*** IDirect3DCubeTexture9 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DSURFACE_DESC* pDesc) PURE;
-    STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level, IDirect3DSurface9** ppCubeMapSurface) PURE;
-    STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES FaceType, UINT Level) PURE;
-    STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES FaceType, CONST RECT* pDirtyRect) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DCubeTexture9_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DCubeTexture9_AddRef(p)                   (p)->lpVtbl->AddRef(p)
-#define IDirect3DCubeTexture9_Release(p)                  (p)->lpVtbl->Release(p)
-/*** IDirect3DCubeTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DCubeTexture9_GetDevice(p,a)              (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)   (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)     (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DCubeTexture9_FreePrivateData(p,a)        (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DCubeTexture9_SetPriority(p,a)            (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DCubeTexture9_GetPriority(p)              (p)->lpVtbl->GetPriority(p)
-#define IDirect3DCubeTexture9_PreLoad(p)                  (p)->lpVtbl->PreLoad(p)
-#define IDirect3DCubeTexture9_GetType(p)                  (p)->lpVtbl->GetType(p)
-/*** IDirect3DCubeTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DCubeTexture9_SetLOD(p,a)                 (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DCubeTexture9_GetLOD(p)                   (p)->lpVtbl->GetLOD(p)
-#define IDirect3DCubeTexture9_GetLevelCount(p)            (p)->lpVtbl->GetLevelCount(p)
-#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)   (p)->lpVtbl->SetAutoGenFilterType(p,a)
-#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)     (p)->lpVtbl->GetAutoGenFilterType(p)
-#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)     (p)->lpVtbl->GenerateMipSubLevels(p)
-/*** IDirect3DCubeTexture9 methods ***/
-#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)         (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)  (p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
-#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)       (p)->lpVtbl->LockRect(p,a,b,c,d,e)
-#define IDirect3DCubeTexture9_UnlockRect(p,a,b)           (p)->lpVtbl->UnlockRect(p,a,b)
-#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)         (p)->lpVtbl->AddDirtyRect(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DCubeTexture9_QueryInterface(p,a,b)       (p)->QueryInterface(a,b)
-#define IDirect3DCubeTexture9_AddRef(p)                   (p)->AddRef()
-#define IDirect3DCubeTexture9_Release(p)                  (p)->Release()
-/*** IDirect3DCubeTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DCubeTexture9_GetDevice(p,a)              (p)->GetDevice(a)
-#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)   (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)     (p)->GetPrivateData(a,b,c)
-#define IDirect3DCubeTexture9_FreePrivateData(p,a)        (p)->FreePrivateData(a)
-#define IDirect3DCubeTexture9_SetPriority(p,a)            (p)->SetPriority(a)
-#define IDirect3DCubeTexture9_GetPriority(p)              (p)->GetPriority()
-#define IDirect3DCubeTexture9_PreLoad(p)                  (p)->PreLoad()
-#define IDirect3DCubeTexture9_GetType(p)                  (p)->GetType()
-/*** IDirect3DCubeTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DCubeTexture9_SetLOD(p,a)                 (p)->SetLOD(a)
-#define IDirect3DCubeTexture9_GetLOD(p)                   (p)->GetLOD()
-#define IDirect3DCubeTexture9_GetLevelCount(p)            (p)->GetLevelCount()
-#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)   (p)->SetAutoGenFilterType(a)
-#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)     (p)->GetAutoGenFilterType()
-#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)     (p)->GenerateMipSubLevels()
-/*** IDirect3DCubeTexture9 methods ***/
-#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)         (p)->GetLevelDesc(a,b)
-#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)  (p)->GetCubeMapSurface(a,b,c)
-#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)       (p)->LockRect(a,b,c,d,e)
-#define IDirect3DCubeTexture9_UnlockRect(p,a,b)           (p)->UnlockRect(a,b)
-#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)         (p)->AddDirtyRect(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DTexture9 interface
- */
-#define INTERFACE IDirect3DTexture9
-DECLARE_INTERFACE_(IDirect3DTexture9,IDirect3DBaseTexture9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture9 methods ***/
-    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
-    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
-    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
-    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
-    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
-    /*** IDirect3DTexture9 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT Level, D3DSURFACE_DESC* pDesc) PURE;
-    STDMETHOD(GetSurfaceLevel)(THIS_ UINT Level, IDirect3DSurface9** ppSurfaceLevel) PURE;
-    STDMETHOD(LockRect)(THIS_ UINT Level, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) PURE;
-    STDMETHOD(UnlockRect)(THIS_ UINT Level) PURE;
-    STDMETHOD(AddDirtyRect)(THIS_ CONST RECT* pDirtyRect) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DTexture9_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DTexture9_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IDirect3DTexture9_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IDirect3DTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DTexture9_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)  (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DTexture9_FreePrivateData(p,a)       (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DTexture9_SetPriority(p,a)           (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DTexture9_GetPriority(p)             (p)->lpVtbl->GetPriority(p)
-#define IDirect3DTexture9_PreLoad(p)                 (p)->lpVtbl->PreLoad(p)
-#define IDirect3DTexture9_GetType(p)                 (p)->lpVtbl->GetType(p)
-/*** IDirect3DTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DTexture9_SetLOD(p,a)                (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DTexture9_GetLOD(p)                  (p)->lpVtbl->GetLOD(p)
-#define IDirect3DTexture9_GetLevelCount(p)           (p)->lpVtbl->GetLevelCount(p)
-#define IDirect3DTexture9_SetAutoGenFilterType(p,a)  (p)->lpVtbl->SetAutoGenFilterType(p,a)
-#define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
-#define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
-/*** IDirect3DTexture9 methods ***/
-#define IDirect3DTexture9_GetLevelDesc(p,a,b)        (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)     (p)->lpVtbl->GetSurfaceLevel(p,a,b)
-#define IDirect3DTexture9_LockRect(p,a,b,c,d)        (p)->lpVtbl->LockRect(p,a,b,c,d)
-#define IDirect3DTexture9_UnlockRect(p,a)            (p)->lpVtbl->UnlockRect(p,a)
-#define IDirect3DTexture9_AddDirtyRect(p,a)          (p)->lpVtbl->AddDirtyRect(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DTexture9_QueryInterface(p,a,b)      (p)->QueryInterface(a,b)
-#define IDirect3DTexture9_AddRef(p)                  (p)->AddRef()
-#define IDirect3DTexture9_Release(p)                 (p)->Release()
-/*** IDirect3DTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DTexture9_GetDevice(p,a)             (p)->GetDevice(a)
-#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)  (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
-#define IDirect3DTexture9_FreePrivateData(p,a)       (p)->FreePrivateData(a)
-#define IDirect3DTexture9_SetPriority(p,a)           (p)->SetPriority(a)
-#define IDirect3DTexture9_GetPriority(p)             (p)->GetPriority()
-#define IDirect3DTexture9_PreLoad(p)                 (p)->PreLoad()
-#define IDirect3DTexture9_GetType(p)                 (p)->GetType()
-/*** IDirect3DTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DTexture9_SetLOD(p,a)                (p)->SetLOD(a)
-#define IDirect3DTexture9_GetLOD(p)                  (p)->GetLOD()
-#define IDirect3DTexture9_GetLevelCount(p)           (p)->GetLevelCount()
-#define IDirect3DTexture9_SetAutoGenFilterType(p,a)  (p)->SetAutoGenFilterType(a)
-#define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
-#define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
-/*** IDirect3DTexture9 methods ***/
-#define IDirect3DTexture9_GetLevelDesc(p,a,b)        (p)->GetLevelDesc(a,b)
-#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)     (p)->GetSurfaceLevel(a,b)
-#define IDirect3DTexture9_LockRect(p,a,b,c,d)        (p)->LockRect(a,b,c,d)
-#define IDirect3DTexture9_UnlockRect(p,a)            (p)->UnlockRect(a)
-#define IDirect3DTexture9_AddDirtyRect(p,a)          (p)->AddDirtyRect(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DVolumeTexture9 interface
- */
-#define INTERFACE IDirect3DVolumeTexture9
-DECLARE_INTERFACE_(IDirect3DVolumeTexture9,IDirect3DBaseTexture9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DResource9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
-    STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
-    STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
-    STDMETHOD_(void, PreLoad)(THIS) PURE;
-    STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
-    /*** IDirect3DBaseTexture9 methods ***/
-    STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
-    STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
-    STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
-    STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
-    STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
-    STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
-    /*** IDirect3DVolumeTexture9 methods ***/
-    STDMETHOD(GetLevelDesc)(THIS_ UINT Level, D3DVOLUME_DESC *pDesc) PURE;
-    STDMETHOD(GetVolumeLevel)(THIS_ UINT Level, IDirect3DVolume9** ppVolumeLevel) PURE;
-    STDMETHOD(LockBox)(THIS_ UINT Level, D3DLOCKED_BOX* pLockedVolume, CONST D3DBOX* pBox, DWORD Flags) PURE;
-    STDMETHOD(UnlockBox)(THIS_ UINT Level) PURE;
-    STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX* pDirtyBox) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVolumeTexture9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVolumeTexture9_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirect3DVolumeTexture9_Release(p) (p)->lpVtbl->Release(p)
-/*** IDirect3DVolumeTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DVolumeTexture9_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirect3DVolumeTexture9_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirect3DVolumeTexture9_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
-#define IDirect3DVolumeTexture9_GetPriority(p) (p)->lpVtbl->GetPriority(p)
-#define IDirect3DVolumeTexture9_PreLoad(p) (p)->lpVtbl->PreLoad(p)
-#define IDirect3DVolumeTexture9_GetType(p) (p)->lpVtbl->GetType(p)
-/*** IDirect3DVolumeTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DVolumeTexture9_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
-#define IDirect3DVolumeTexture9_GetLOD(p) (p)->lpVtbl->GetLOD(p)
-#define IDirect3DVolumeTexture9_GetLevelCount(p) (p)->lpVtbl->GetLevelCount(p)
-#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a) (p)->lpVtbl->SetAutoGenFilterType(p,a)
-#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p) (p)->lpVtbl->GetAutoGenFilterType(p)
-#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p) (p)->lpVtbl->GenerateMipSubLevels(p)
-/*** IDirect3DVolumeTexture9 methods ***/
-#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b) (p)->lpVtbl->GetLevelDesc(p,a,b)
-#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b) (p)->lpVtbl->GetVolumeLevel(p,a,b)
-#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d) (p)->lpVtbl->LockBox(p,a,b,c,d)
-#define IDirect3DVolumeTexture9_UnlockBox(p,a) (p)->lpVtbl->UnlockBox(p,a)
-#define IDirect3DVolumeTexture9_AddDirtyBox(p,a) (p)->lpVtbl->AddDirtyBox(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVolumeTexture9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DVolumeTexture9_AddRef(p) (p)->AddRef()
-#define IDirect3DVolumeTexture9_Release(p) (p)->Release()
-/*** IDirect3DVolumeTexture9 methods: IDirect3DResource9 ***/
-#define IDirect3DVolumeTexture9_GetDevice(p,a) (p)->GetDevice(a)
-#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
-#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
-#define IDirect3DVolumeTexture9_FreePrivateData(p,a) (p)->FreePrivateData(a)
-#define IDirect3DVolumeTexture9_SetPriority(p,a) (p)->SetPriority(a)
-#define IDirect3DVolumeTexture9_GetPriority(p) (p)->GetPriority()
-#define IDirect3DVolumeTexture9_PreLoad(p) (p)->PreLoad()
-#define IDirect3DVolumeTexture9_GetType(p) (p)->GetType()
-/*** IDirect3DVolumeTexture9 methods: IDirect3DBaseTexture9 ***/
-#define IDirect3DVolumeTexture9_SetLOD(p,a) (p)->SetLOD(a)
-#define IDirect3DVolumeTexture9_GetLOD(p) (p)->GetLOD()
-#define IDirect3DVolumeTexture9_GetLevelCount(p) (p)->GetLevelCount()
-#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a) (p)->SetAutoGenFilterType(a)
-#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p) (p)->GetAutoGenFilterType()
-#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p) (p)->GenerateMipSubLevels()
-/*** IDirect3DVolumeTexture9 methods ***/
-#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b) (p)->GetLevelDesc(a,b)
-#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b) (p)->GetVolumeLevel(a,b)
-#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d) (p)->LockBox(a,b,c,d)
-#define IDirect3DVolumeTexture9_UnlockBox(p,a) (p)->UnlockBox(a)
-#define IDirect3DVolumeTexture9_AddDirtyBox(p,a) (p)->AddDirtyBox(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexDeclaration9 interface
- */
-#define INTERFACE IDirect3DVertexDeclaration9
-DECLARE_INTERFACE_(IDirect3DVertexDeclaration9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVertexDeclaration9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9*, UINT* pNumElements) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexDeclaration9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexDeclaration9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexShader9 methods ***/
-#define IDirect3DVertexDeclaration9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)  (p)->lpVtbl->GetDeclaration(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DVertexDeclaration9_AddRef(p)              (p)->AddRef()
-#define IDirect3DVertexDeclaration9_Release(p)             (p)->Release()
-/*** IDirect3DVertexShader9 methods ***/
-#define IDirect3DVertexDeclaration9_GetDevice(p,a)         (p)->GetDevice(a)
-#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)  (p)->GetDeclaration(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DVertexShader9 interface
- */
-#define INTERFACE IDirect3DVertexShader9
-DECLARE_INTERFACE_(IDirect3DVertexShader9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DVertexShader9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DVertexShader9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DVertexShader9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DVertexShader9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DVertexShader9 methods ***/
-#define IDirect3DVertexShader9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DVertexShader9_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DVertexShader9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DVertexShader9_AddRef(p)              (p)->AddRef()
-#define IDirect3DVertexShader9_Release(p)             (p)->Release()
-/*** IDirect3DVertexShader9 methods ***/
-#define IDirect3DVertexShader9_GetDevice(p,a)         (p)->GetDevice(a)
-#define IDirect3DVertexShader9_GetFunction(p,a,b)     (p)->GetFunction(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DPixelShader9 interface
- */
-#define INTERFACE IDirect3DPixelShader9
-DECLARE_INTERFACE_(IDirect3DPixelShader9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DPixelShader9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(GetFunction)(THIS_ void*, UINT* pSizeOfData) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DPixelShader9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DPixelShader9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DPixelShader9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DPixelShader9 methods ***/
-#define IDirect3DPixelShader9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DPixelShader9_GetFunction(p,a,b)     (p)->lpVtbl->GetFunction(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DPixelShader9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DPixelShader9_AddRef(p)              (p)->AddRef()
-#define IDirect3DPixelShader9_Release(p)             (p)->Release()
-/*** IDirect3DPixelShader9 methods ***/
-#define IDirect3DPixelShader9_GetDevice(p,a)         (p)->GetDevice(a)
-#define IDirect3DPixelShader9_GetFunction(p,a,b)     (p)->GetFunction(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DStateBlock9 interface
- */
-#define INTERFACE IDirect3DStateBlock9
-DECLARE_INTERFACE_(IDirect3DStateBlock9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DStateBlock9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD(Capture)(THIS) PURE;
-    STDMETHOD(Apply)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DStateBlock9_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DStateBlock9_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IDirect3DStateBlock9_Release(p)             (p)->lpVtbl->Release(p)
-/*** IDirect3DStateBlock9 methods ***/
-#define IDirect3DStateBlock9_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DStateBlock9_Capture(p)             (p)->lpVtbl->Capture(p)
-#define IDirect3DStateBlock9_Apply(p)               (p)->lpVtbl->Apply(p)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DStateBlock9_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define IDirect3DStateBlock9_AddRef(p)              (p)->AddRef()
-#define IDirect3DStateBlock9_Release(p)             (p)->Release()
-/*** IDirect3DStateBlock9 methods ***/
-#define IDirect3DStateBlock9_GetDevice(p,a)         (p)->GetDevice(a)
-#define IDirect3DStateBlock9_Capture(p)             (p)->Capture()
-#define IDirect3DStateBlock9_Apply(p)               (p)->Apply()
-#endif
-
-/*****************************************************************************
- * IDirect3DQuery9 interface
- */
-#define INTERFACE IDirect3DQuery9
-DECLARE_INTERFACE_(IDirect3DQuery9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DQuery9 methods ***/
-    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9** ppDevice) PURE;
-    STDMETHOD_(D3DQUERYTYPE, GetType)(THIS) PURE;
-    STDMETHOD_(DWORD, GetDataSize)(THIS) PURE;
-    STDMETHOD(Issue)(THIS_ DWORD dwIssueFlags) PURE;
-    STDMETHOD(GetData)(THIS_ void* pData, DWORD dwSize, DWORD dwGetDataFlags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DQuery9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DQuery9_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirect3DQuery9_Release(p) (p)->lpVtbl->Release(p)
-/*** IDirect3DQuery9 ***/
-#define IDirect3DQuery9_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DQuery9_GetType(p) (p)->lpVtbl->GetType(p)
-#define IDirect3DQuery9_GetDataSize(p) (p)->lpVtbl->GetDataSize(p)
-#define IDirect3DQuery9_Issue(p,a) (p)->lpVtbl->Issue(p,a)
-#define IDirect3DQuery9_GetData(p,a,b,c) (p)->lpVtbl->GetData(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DQuery9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DQuery9_AddRef(p) (p)->AddRef()
-#define IDirect3DQuery9_Release(p) (p)->Release()
-/*** IDirect3DQuery9 ***/
-#define IDirect3DQuery9_GetDevice(p,a) (p)->GetDevice(a)
-#define IDirect3DQuery9_GetType(p) (p)->GetType()
-#define IDirect3DQuery9_GetDataSize(p) (p)->GetDataSize()
-#define IDirect3DQuery9_Issue(p,a) (p)->Issue(a)
-#define IDirect3DQuery9_GetData(p,a,b,c) (p)->GetData(a,b,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DDevice9 interface
- */
-#define INTERFACE IDirect3DDevice9
-DECLARE_INTERFACE_(IDirect3DDevice9,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice9 methods ***/
-    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
-    STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE;
-    STDMETHOD(EvictManagedResources)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ IDirect3D9** ppD3D9) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9* pCaps) PURE;
-    STDMETHOD(GetDisplayMode)(THIS_ UINT iSwapChain, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters) PURE;
-    STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) PURE;
-    STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y, DWORD Flags) PURE;
-    STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow) PURE;
-    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) PURE;
-    STDMETHOD(GetSwapChain)(THIS_ UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) PURE;
-    STDMETHOD_(UINT, GetNumberOfSwapChains)(THIS) PURE;
-    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
-    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) PURE;
-    STDMETHOD(GetRasterStatus)(THIS_ UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) PURE;
-    STDMETHOD(SetDialogBoxMode)(THIS_ BOOL bEnableDialogs) PURE;
-    STDMETHOD_(void, SetGammaRamp)(THIS_ UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp) PURE;
-    STDMETHOD_(void, GetGammaRamp)(THIS_ UINT iSwapChain, D3DGAMMARAMP* pRamp) PURE;
-    STDMETHOD(CreateTexture)(THIS_ UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateRenderTarget)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint) PURE;
-    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) PURE;
-    STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(GetFrontBufferData)(THIS_ UINT iSwapChain, IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter) PURE;
-    STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color) PURE;
-    STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget) PURE;
-    STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9* pNewZStencil) PURE;
-    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9** ppZStencilSurface) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE, CONST D3DMATRIX*) PURE;
-    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9* pViewport) PURE;
-    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9* pViewport) PURE;
-    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* pMaterial) PURE;
-    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9* pMaterial) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9*) PURE;
-    STDMETHOD(GetLight)(THIS_ DWORD Index, D3DLIGHT9*) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
-    STDMETHOD(GetLightEnable)(THIS_ DWORD Index, BOOL* pEnable) PURE;
-    STDMETHOD(SetClipPlane)(THIS_ DWORD Index, CONST float* pPlane) PURE;
-    STDMETHOD(GetClipPlane)(THIS_ DWORD Index, float* pPlane) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD* pValue) PURE;
-    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB) PURE;
-    STDMETHOD(BeginStateBlock)(THIS) PURE;
-    STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9** ppSB) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9* pClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9* pClipStatus) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9** ppTexture) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9* pTexture) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
-    STDMETHOD(GetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) PURE;
-    STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
-    STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber, CONST PALETTEENTRY* pEntries) PURE;
-    STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries) PURE;
-    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber) PURE;
-    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber) PURE;
-    STDMETHOD(SetScissorRect)(THIS_ CONST RECT* pRect) PURE;
-    STDMETHOD(GetScissorRect)(THIS_ RECT* pRect) PURE;
-    STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL bSoftware) PURE;
-    STDMETHOD_(BOOL, GetSoftwareVertexProcessing)(THIS) PURE;
-    STDMETHOD(SetNPatchMode)(THIS_ float nSegments) PURE;
-    STDMETHOD_(float, GetNPatchMode)(THIS) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) PURE;
-    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
-    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) PURE;
-    STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl) PURE;
-    STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9* pDecl) PURE;
-    STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9** ppDecl) PURE;
-    STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
-    STDMETHOD(GetFVF)(THIS_ DWORD* pFVF) PURE;
-    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9* pShader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9** ppShader) PURE;
-    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
-    STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
-    STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) PURE;
-    STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* OffsetInBytes, UINT* pStride) PURE;
-    STDMETHOD(SetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT Divider) PURE;
-    STDMETHOD(GetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT* Divider) PURE;
-    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9* pIndexData) PURE;
-    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9** ppIndexData) PURE;
-    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9* pShader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9** ppShader) PURE;
-    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
-    STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
-    STDMETHOD(DrawRectPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo) PURE;
-    STDMETHOD(DrawTriPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
-    STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
-    STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice9_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice9_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice9_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice9 methods ***/
-#define IDirect3DDevice9_TestCooperativeLevel(p)                       (p)->lpVtbl->TestCooperativeLevel(p)
-#define IDirect3DDevice9_GetAvailableTextureMem(p)                     (p)->lpVtbl->GetAvailableTextureMem(p)
-#define IDirect3DDevice9_EvictManagedResources(p)                      (p)->lpVtbl->EvictManagedResources(p)
-#define IDirect3DDevice9_GetDirect3D(p,a)                              (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice9_GetDeviceCaps(p,a)                            (p)->lpVtbl->GetDeviceCaps(p,a)
-#define IDirect3DDevice9_GetDisplayMode(p,a,b)                         (p)->lpVtbl->GetDisplayMode(p,a,b)
-#define IDirect3DDevice9_GetCreationParameters(p,a)                    (p)->lpVtbl->GetCreationParameters(p,a)
-#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)                  (p)->lpVtbl->SetCursorProperties(p,a,b,c)
-#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)                    (p)->lpVtbl->SetCursorPosition(p,a,b,c)
-#define IDirect3DDevice9_ShowCursor(p,a)                               (p)->lpVtbl->ShowCursor(p,a)
-#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)              (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
-#define IDirect3DDevice9_GetSwapChain(p,a,b)                           (p)->lpVtbl->GetSwapChain(p,a,b)
-#define IDirect3DDevice9_GetNumberOfSwapChains(p)                      (p)->lpVtbl->GetNumberOfSwapChains(p)
-#define IDirect3DDevice9_Reset(p,a)                                    (p)->lpVtbl->Reset(p,a)
-#define IDirect3DDevice9_Present(p,a,b,c,d)                            (p)->lpVtbl->Present(p,a,b,c,d)
-#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)                      (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
-#define IDirect3DDevice9_GetRasterStatus(p,a,b)                        (p)->lpVtbl->GetRasterStatus(p,a,b)
-#define IDirect3DDevice9_SetDialogBoxMode(p,a)                         (p)->lpVtbl->SetDialogBoxMode(p,a)
-#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)                         (p)->lpVtbl->SetGammaRamp(p,a,b,c)
-#define IDirect3DDevice9_GetGammaRamp(p,a,b)                           (p)->lpVtbl->GetGammaRamp(p,a,b)
-#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)                      (p)->lpVtbl->UpdateSurface(p,a,b,c,d)
-#define IDirect3DDevice9_UpdateTexture(p,a,b)                          (p)->lpVtbl->UpdateTexture(p,a,b)
-#define IDirect3DDevice9_GetRenderTargetData(p,a,b)                    (p)->lpVtbl->GetRenderTargetData(p,a,b)
-#define IDirect3DDevice9_GetFrontBufferData(p,a,b)                     (p)->lpVtbl->GetFrontBufferData(p,a,b)
-#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)                      (p)->lpVtbl->StretchRect(p,a,b,c,d,e)
-#define IDirect3DDevice9_ColorFill(p,a,b,c)                            (p)->lpVtbl->ColorFill(p,a,b,c)
-#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_SetRenderTarget(p,a,b)                        (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice9_GetRenderTarget(p,a,b)                        (p)->lpVtbl->GetRenderTarget(p,a,b)
-#define IDirect3DDevice9_SetDepthStencilSurface(p,a)                   (p)->lpVtbl->SetDepthStencilSurface(p,a)
-#define IDirect3DDevice9_GetDepthStencilSurface(p,a)                   (p)->lpVtbl->GetDepthStencilSurface(p,a)
-#define IDirect3DDevice9_BeginScene(p)                                 (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice9_EndScene(p)                                   (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)                          (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_SetTransform(p,a,b)                           (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice9_GetTransform(p,a,b)                           (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice9_MultiplyTransform(p,a,b)                      (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice9_SetViewport(p,a)                              (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DDevice9_GetViewport(p,a)                              (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DDevice9_SetMaterial(p,a)                              (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DDevice9_GetMaterial(p,a)                              (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DDevice9_SetLight(p,a,b)                               (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DDevice9_GetLight(p,a,b)                               (p)->lpVtbl->GetLight(p,a,b)
-#define IDirect3DDevice9_LightEnable(p,a,b)                            (p)->lpVtbl->LightEnable(p,a,b)
-#define IDirect3DDevice9_GetLightEnable(p,a,b)                         (p)->lpVtbl->GetLightEnable(p,a,b)
-#define IDirect3DDevice9_SetClipPlane(p,a,b)                           (p)->lpVtbl->SetClipPlane(p,a,b)
-#define IDirect3DDevice9_GetClipPlane(p,a,b)                           (p)->lpVtbl->GetClipPlane(p,a,b)
-#define IDirect3DDevice9_SetRenderState(p,a,b)                         (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice9_GetRenderState(p,a,b)                         (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice9_CreateStateBlock(p,a,b)                       (p)->lpVtbl->CreateStateBlock(p,a,b)
-#define IDirect3DDevice9_BeginStateBlock(p)                            (p)->lpVtbl->BeginStateBlock(p)
-#define IDirect3DDevice9_EndStateBlock(p,a)                            (p)->lpVtbl->EndStateBlock(p,a)
-#define IDirect3DDevice9_SetClipStatus(p,a)                            (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice9_GetClipStatus(p,a)                            (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice9_GetTexture(p,a,b)                             (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice9_SetTexture(p,a,b)                             (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)                 (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)                 (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice9_GetSamplerState(p,a,b,c)                      (p)->lpVtbl->GetSamplerState(p,a,b,c)
-#define IDirect3DDevice9_SetSamplerState(p,a,b,c)                      (p)->lpVtbl->SetSamplerState(p,a,b,c)
-#define IDirect3DDevice9_ValidateDevice(p,a)                           (p)->lpVtbl->ValidateDevice(p,a)
-#define IDirect3DDevice9_SetPaletteEntries(p,a,b)                      (p)->lpVtbl->SetPaletteEntries(p,a,b)
-#define IDirect3DDevice9_GetPaletteEntries(p,a,b)                      (p)->lpVtbl->GetPaletteEntries(p,a,b)
-#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)                 (p)->lpVtbl->SetCurrentTexturePalette(p,a)
-#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)                 (p)->lpVtbl->GetCurrentTexturePalette(p,a)
-#define IDirect3DDevice9_SetScissorRect(p,a)                           (p)->lpVtbl->SetScissorRect(p,a)
-#define IDirect3DDevice9_GetScissorRect(p,a)                           (p)->lpVtbl->GetScissorRect(p,a)
-#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)              (p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
-#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)                (p)->lpVtbl->GetSoftwareVertexProcessing(p)
-#define IDirect3DDevice9_SetNPatchMode(p,a)                            (p)->lpVtbl->SetNPatchMode(p,a)
-#define IDirect3DDevice9_GetNPatchMode(p)                              (p)->lpVtbl->GetNPatchMode(p)
-#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)                        (p)->lpVtbl->DrawPrimitive(p,a,b,c)
-#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)                    (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
-#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)                (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)                (p)->lpVtbl->CreateVertexDeclaration(p,a,b)
-#define IDirect3DDevice9_SetVertexDeclaration(p,a)                     (p)->lpVtbl->SetVertexDeclaration(p,a)
-#define IDirect3DDevice9_GetVertexDeclaration(p,a)                     (p)->lpVtbl->GetVertexDeclaration(p,a)
-#define IDirect3DDevice9_SetFVF(p,a)                                   (p)->lpVtbl->SetFVF(p,a)
-#define IDirect3DDevice9_GetFVF(p,a)                                   (p)->lpVtbl->GetFVF(p,a)
-#define IDirect3DDevice9_CreateVertexShader(p,a,b)                     (p)->lpVtbl->CreateVertexShader(p,a,b)
-#define IDirect3DDevice9_SetVertexShader(p,a)                          (p)->lpVtbl->SetVertexShader(p,a)
-#define IDirect3DDevice9_GetVertexShader(p,a)                          (p)->lpVtbl->GetVertexShader(p,a)
-#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
-#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
-#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->SetStreamSourceFreq(p,a,b)
-#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->GetStreamSourceFreq(p,a,b)
-#define IDirect3DDevice9_SetIndices(p,a)                               (p)->lpVtbl->SetIndices(p,a)
-#define IDirect3DDevice9_GetIndices(p,a)                               (p)->lpVtbl->GetIndices(p,a)
-#define IDirect3DDevice9_CreatePixelShader(p,a,b)                      (p)->lpVtbl->CreatePixelShader(p,a,b)
-#define IDirect3DDevice9_SetPixelShader(p,a)                           (p)->lpVtbl->SetPixelShader(p,a)
-#define IDirect3DDevice9_GetPixelShader(p,a)                           (p)->lpVtbl->GetPixelShader(p,a)
-#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)                        (p)->lpVtbl->DrawRectPatch(p,a,b,c)
-#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)                         (p)->lpVtbl->DrawTriPatch(p,a,b,c)
-#define IDirect3DDevice9_DeletePatch(p,a)                              (p)->lpVtbl->DeletePatch(p,a)
-#define IDirect3DDevice9_CreateQuery(p,a,b)                            (p)->lpVtbl->CreateQuery(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice9_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice9_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice9_Release(p)            (p)->Release()
-/*** IDirect3DDevice9 methods ***/
-#define IDirect3DDevice9_TestCooperativeLevel(p)                       (p)->TestCooperativeLevel()
-#define IDirect3DDevice9_GetAvailableTextureMem(p)                     (p)->GetAvailableTextureMem()
-#define IDirect3DDevice9_EvictManagedResources(p)                      (p)->EvictManagedResources()
-#define IDirect3DDevice9_GetDirect3D(p,a)                              (p)->GetDirect3D(a)
-#define IDirect3DDevice9_GetDeviceCaps(p,a)                            (p)->GetDeviceCaps(a)
-#define IDirect3DDevice9_GetDisplayMode(p,a,b)                         (p)->GetDisplayMode(a,b)
-#define IDirect3DDevice9_GetCreationParameters(p,a)                    (p)->GetCreationParameters(a)
-#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)                  (p)->SetCursorProperties(a,b,c)
-#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)                    (p)->SetCursorPosition(a,b,c)
-#define IDirect3DDevice9_ShowCursor(p,a)                               (p)->ShowCursor(a)
-#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)              (p)->CreateAdditionalSwapChain(a,b)
-#define IDirect3DDevice9_GetSwapChain(p,a,b)                           (p)->GetSwapChain(a,b)
-#define IDirect3DDevice9_GetNumberOfSwapChains(p)                      (p)->GetNumberOfSwapChains()
-#define IDirect3DDevice9_Reset(p,a)                                    (p)->Reset(a)
-#define IDirect3DDevice9_Present(p,a,b,c,d)                            (p)->Present(a,b,c,d)
-#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)                      (p)->GetBackBuffer(a,b,c,d)
-#define IDirect3DDevice9_GetRasterStatus(p,a,b)                        (p)->GetRasterStatus(a,b)
-#define IDirect3DDevice9_SetDialogBoxMode(p,a)                         (p)->SetDialogBoxMode(a)
-#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)                         (p)->SetGammaRamp(a,b,c)
-#define IDirect3DDevice9_GetGammaRamp(p,a,b)                           (p)->GetGammaRamp(a,b)
-#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->CreateTexture(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->CreateCubeTexture(a,b,c,d,e,f,g)
-#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->CreateVertexBuffer(a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->CreateIndexBuffer(a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)                      (p)->UpdateSurface(a,b,c,d)
-#define IDirect3DDevice9_UpdateTexture(p,a,b)                          (p)->UpdateTexture(a,b)
-#define IDirect3DDevice9_GetRenderTargetData(p,a,b)                    (p)->GetRenderTargetData(a,b)
-#define IDirect3DDevice9_GetFrontBufferData(p,a,b)                     (p)->GetFrontBufferData(a,b)
-#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)                      (p)->StretchRect(a,b,c,d,e)
-#define IDirect3DDevice9_ColorFill(p,a,b,c)                            (p)->ColorFill(a,b,c)
-#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
-#define IDirect3DDevice9_SetRenderTarget(p,a,b)                        (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice9_GetRenderTarget(p,a,b)                        (p)->GetRenderTarget(a,b)
-#define IDirect3DDevice9_SetDepthStencilSurface(p,a)                   (p)->SetDepthStencilSurface(a)
-#define IDirect3DDevice9_GetDepthStencilSurface(p,a)                   (p)->GetDepthStencilSurface(a)
-#define IDirect3DDevice9_BeginScene(p)                                 (p)->BeginScene()
-#define IDirect3DDevice9_EndScene(p)                                   (p)->EndScene()
-#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)                          (p)->Clear(a,b,c,d,e,f)
-#define IDirect3DDevice9_SetTransform(p,a,b)                           (p)->SetTransform(a,b)
-#define IDirect3DDevice9_GetTransform(p,a,b)                           (p)->GetTransform(a,b)
-#define IDirect3DDevice9_MultiplyTransform(p,a,b)                      (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice9_SetViewport(p,a)                              (p)->SetViewport(a)
-#define IDirect3DDevice9_GetViewport(p,a)                              (p)->GetViewport(a)
-#define IDirect3DDevice9_SetMaterial(p,a)                              (p)->SetMaterial(a)
-#define IDirect3DDevice9_GetMaterial(p,a)                              (p)->GetMaterial(a)
-#define IDirect3DDevice9_SetLight(p,a,b)                               (p)->SetLight(a,b)
-#define IDirect3DDevice9_GetLight(p,a,b)                               (p)->GetLight(a,b)
-#define IDirect3DDevice9_LightEnable(p,a,b)                            (p)->LightEnable(a,b)
-#define IDirect3DDevice9_GetLightEnable(p,a,b)                         (p)->GetLightEnable(a,b)
-#define IDirect3DDevice9_SetClipPlane(p,a,b)                           (p)->SetClipPlane(a,b)
-#define IDirect3DDevice9_GetClipPlane(p,a,b)                           (p)->GetClipPlane(a,b)
-#define IDirect3DDevice9_SetRenderState(p,a,b)                         (p)->SetRenderState(a,b)
-#define IDirect3DDevice9_GetRenderState(p,a,b)                         (p)->GetRenderState(a,b)
-#define IDirect3DDevice9_CreateStateBlock(p,a,b)                       (p)->CreateStateBlock(a,b)
-#define IDirect3DDevice9_BeginStateBlock(p)                            (p)->BeginStateBlock()
-#define IDirect3DDevice9_EndStateBlock(p,a)                            (p)->EndStateBlock(a)
-#define IDirect3DDevice9_SetClipStatus(p,a)                            (p)->SetClipStatus(a)
-#define IDirect3DDevice9_GetClipStatus(p,a)                            (p)->GetClipStatus(a)
-#define IDirect3DDevice9_GetTexture(p,a,b)                             (p)->GetTexture(a,b)
-#define IDirect3DDevice9_SetTexture(p,a,b)                             (p)->SetTexture(a,b)
-#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)                 (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)                 (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice9_GetSamplerState(p,a,b,c)                      (p)->GetSamplerState(a,b,c)
-#define IDirect3DDevice9_SetSamplerState(p,a,b,c)                      (p)->SetSamplerState(a,b,c)
-#define IDirect3DDevice9_ValidateDevice(p,a)                           (p)->ValidateDevice(a)
-#define IDirect3DDevice9_SetPaletteEntries(p,a,b)                      (p)->SetPaletteEntries(a,b)
-#define IDirect3DDevice9_GetPaletteEntries(p,a,b)                      (p)->GetPaletteEntries(a,b)
-#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)                 (p)->SetCurrentTexturePalette(a)
-#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)                 (p)->GetCurrentTexturePalette(a)
-#define IDirect3DDevice9_SetScissorRect(p,a)                           (p)->SetScissorRect(a)
-#define IDirect3DDevice9_GetScissorRect(p,a)                           (p)->GetScissorRect(a)
-#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)              (p)->SetSoftwareVertexProcessing(a)
-#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)                (p)->GetSoftwareVertexProcessing()
-#define IDirect3DDevice9_SetNPatchMode(p,a)                            (p)->SetNPatchMode(a)
-#define IDirect3DDevice9_GetNPatchMode(p)                              (p)->GetNPatchMode()
-#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)                        (p)->DrawPrimitive(a,b,c)
-#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->DrawIndexedPrimitive(a,b,c,d,e,f)
-#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)                    (p)->DrawPrimitiveUP(a,b,c,d)
-#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)                (p)->ProcessVertices(a,b,c,d,e,f)
-#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)                (p)->CreateVertexDeclaration(a,b)
-#define IDirect3DDevice9_SetVertexDeclaration(p,a)                     (p)->SetVertexDeclaration(a)
-#define IDirect3DDevice9_GetVertexDeclaration(p,a)                     (p)->GetVertexDeclaration(a)
-#define IDirect3DDevice9_SetFVF(p,a)                                   (p)->SetFVF(a)
-#define IDirect3DDevice9_GetFVF(p,a)                                   (p)->GetFVF(a)
-#define IDirect3DDevice9_CreateVertexShader(p,a,b)                     (p)->CreateVertexShader(a,b)
-#define IDirect3DDevice9_SetVertexShader(p,a)                          (p)->SetVertexShader(a)
-#define IDirect3DDevice9_GetVertexShader(p,a)                          (p)->GetVertexShader(a)
-#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)             (p)->SetVertexShaderConstantF(a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)             (p)->GetVertexShaderConstantF(a,b,c)
-#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)             (p)->SetVertexShaderConstantI(a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)             (p)->GetVertexShaderConstantI(a,b,c)
-#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)             (p)->SetVertexShaderConstantB(a,b,c)
-#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)             (p)->GetVertexShaderConstantB(a,b,c)
-#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)                    (p)->SetStreamSource(a,b,c,d)
-#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)                    (p)->GetStreamSource(a,b,c,d)
-#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)                    (p)->SetStreamSourceFreq(a,b)
-#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)                    (p)->GetStreamSourceFreq(a,b)
-#define IDirect3DDevice9_SetIndices(p,a)                               (p)->SetIndices(a)
-#define IDirect3DDevice9_GetIndices(p,a)                               (p)->GetIndices(a)
-#define IDirect3DDevice9_CreatePixelShader(p,a,b)                      (p)->CreatePixelShader(a,b)
-#define IDirect3DDevice9_SetPixelShader(p,a)                           (p)->SetPixelShader(a)
-#define IDirect3DDevice9_GetPixelShader(p,a)                           (p)->GetPixelShader(a)
-#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)              (p)->SetPixelShaderConstantF(a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)              (p)->GetPixelShaderConstantF(a,b,c)
-#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)              (p)->SetPixelShaderConstantI(a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)              (p)->GetPixelShaderConstantI(a,b,c)
-#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)              (p)->SetPixelShaderConstantB(a,b,c)
-#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)              (p)->GetPixelShaderConstantB(a,b,c)
-#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)                        (p)->DrawRectPatch(a,b,c)
-#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)                         (p)->DrawTriPatch(a,b,c)
-#define IDirect3DDevice9_DeletePatch(p,a)                              (p)->DeletePatch(a)
-#define IDirect3DDevice9_CreateQuery(p,a,b)                            (p)->CreateQuery(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirect3DDevice9Ex interface
- */
-#define INTERFACE IDirect3DDevice9Ex
-DECLARE_INTERFACE_(IDirect3DDevice9Ex,IDirect3DDevice9)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DDevice9 methods ***/
-    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
-    STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE;
-    STDMETHOD(EvictManagedResources)(THIS) PURE;
-    STDMETHOD(GetDirect3D)(THIS_ IDirect3D9** ppD3D9) PURE;
-    STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9* pCaps) PURE;
-    STDMETHOD(GetDisplayMode)(THIS_ UINT iSwapChain, D3DDISPLAYMODE* pMode) PURE;
-    STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters) PURE;
-    STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) PURE;
-    STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y, DWORD Flags) PURE;
-    STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow) PURE;
-    STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) PURE;
-    STDMETHOD(GetSwapChain)(THIS_ UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) PURE;
-    STDMETHOD_(UINT, GetNumberOfSwapChains)(THIS) PURE;
-    STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
-    STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) PURE;
-    STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) PURE;
-    STDMETHOD(GetRasterStatus)(THIS_ UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) PURE;
-    STDMETHOD(SetDialogBoxMode)(THIS_ BOOL bEnableDialogs) PURE;
-    STDMETHOD_(void, SetGammaRamp)(THIS_ UINT iSwapChain, DWORD Flags, CONST D3DGAMMARAMP* pRamp) PURE;
-    STDMETHOD_(void, GetGammaRamp)(THIS_ UINT iSwapChain, D3DGAMMARAMP* pRamp) PURE;
-    STDMETHOD(CreateTexture)(THIS_ UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateRenderTarget)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestPoint) PURE;
-    STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) PURE;
-    STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(GetFrontBufferData)(THIS_ UINT iSwapChain, IDirect3DSurface9* pDestSurface) PURE;
-    STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestSurface, CONST RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter) PURE;
-    STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9* pSurface, CONST RECT* pRect, D3DCOLOR color) PURE;
-    STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) PURE;
-    STDMETHOD(SetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) PURE;
-    STDMETHOD(GetRenderTarget)(THIS_ DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget) PURE;
-    STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9* pNewZStencil) PURE;
-    STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9** ppZStencilSurface) PURE;
-    STDMETHOD(BeginScene)(THIS) PURE;
-    STDMETHOD(EndScene)(THIS) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD Count, CONST D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil) PURE;
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE, CONST D3DMATRIX*) PURE;
-    STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9* pViewport) PURE;
-    STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9* pViewport) PURE;
-    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* pMaterial) PURE;
-    STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9* pMaterial) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9*) PURE;
-    STDMETHOD(GetLight)(THIS_ DWORD Index, D3DLIGHT9*) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
-    STDMETHOD(GetLightEnable)(THIS_ DWORD Index, BOOL* pEnable) PURE;
-    STDMETHOD(SetClipPlane)(THIS_ DWORD Index, CONST float* pPlane) PURE;
-    STDMETHOD(GetClipPlane)(THIS_ DWORD Index, float* pPlane) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
-    STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD* pValue) PURE;
-    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB) PURE;
-    STDMETHOD(BeginStateBlock)(THIS) PURE;
-    STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9** ppSB) PURE;
-    STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9* pClipStatus) PURE;
-    STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9* pClipStatus) PURE;
-    STDMETHOD(GetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9** ppTexture) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD Stage, IDirect3DBaseTexture9* pTexture) PURE;
-    STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
-    STDMETHOD(GetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) PURE;
-    STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
-    STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
-    STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber, CONST PALETTEENTRY* pEntries) PURE;
-    STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries) PURE;
-    STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber) PURE;
-    STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber) PURE;
-    STDMETHOD(SetScissorRect)(THIS_ CONST RECT* pRect) PURE;
-    STDMETHOD(GetScissorRect)(THIS_ RECT* pRect) PURE;
-    STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL bSoftware) PURE;
-    STDMETHOD_(BOOL, GetSoftwareVertexProcessing)(THIS) PURE;
-    STDMETHOD(SetNPatchMode)(THIS_ float nSegments) PURE;
-    STDMETHOD_(float, GetNPatchMode)(THIS) PURE;
-    STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) PURE;
-    STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) PURE;
-    STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
-    STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) PURE;
-    STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) PURE;
-    STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9* pVertexElements, IDirect3DVertexDeclaration9** ppDecl) PURE;
-    STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9* pDecl) PURE;
-    STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9** ppDecl) PURE;
-    STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
-    STDMETHOD(GetFVF)(THIS_ DWORD* pFVF) PURE;
-    STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction, IDirect3DVertexShader9** ppShader) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9* pShader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9** ppShader) PURE;
-    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
-    STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
-    STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) PURE;
-    STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* OffsetInBytes, UINT* pStride) PURE;
-    STDMETHOD(SetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT Divider) PURE;
-    STDMETHOD(GetStreamSourceFreq)(THIS_ UINT StreamNumber, UINT* Divider) PURE;
-    STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9* pIndexData) PURE;
-    STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9** ppIndexData) PURE;
-    STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction, IDirect3DPixelShader9** ppShader) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9* pShader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9** ppShader) PURE;
-    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT StartRegister, float* pConstantData, UINT Vector4fCount) PURE;
-    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT StartRegister, int* pConstantData, UINT Vector4iCount) PURE;
-    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT StartRegister, CONST BOOL* pConstantData, UINT  BoolCount) PURE;
-    STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT StartRegister, BOOL* pConstantData, UINT BoolCount) PURE;
-    STDMETHOD(DrawRectPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DRECTPATCH_INFO* pRectPatchInfo) PURE;
-    STDMETHOD(DrawTriPatch)(THIS_ UINT Handle, CONST float* pNumSegs, CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
-    STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
-    STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) PURE;
-    /* IDirect3DDevice9Ex methods */
-    STDMETHOD(SetConvolutionMonoKernel)(THIS_ UINT width, UINT height, float *rows, float *columns) PURE;
-    STDMETHOD(ComposeRects)(THIS_ IDirect3DSurface9 *src_surface, IDirect3DSurface9 *dst_surface,
-            IDirect3DVertexBuffer9 *src_descs, UINT rect_count, IDirect3DVertexBuffer9 *dst_descs,
-            D3DCOMPOSERECTSOP operation, INT offset_x, INT offset_y) PURE;
-    STDMETHOD(PresentEx)(THIS_ CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion, DWORD dwFlags) PURE;
-    STDMETHOD(GetGPUThreadPriority)(THIS_ INT *pPriority) PURE;
-    STDMETHOD(SetGPUThreadPriority)(THIS_ INT Priority) PURE;
-    STDMETHOD(WaitForVBlank)(THIS_ UINT iSwapChain) PURE;
-    STDMETHOD(CheckResourceResidency)(THIS_ IDirect3DResource9 **resources, UINT32 resource_count) PURE;
-    STDMETHOD(SetMaximumFrameLatency)(THIS_ UINT MaxLatency) PURE;
-    STDMETHOD(GetMaximumFrameLatency)(THIS_ UINT *pMaxLatenxy) PURE;
-    STDMETHOD(CheckDeviceState)(THIS_ HWND dst_window) PURE;
-    STDMETHOD(CreateRenderTargetEx)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultiSampleQuality, BOOL Lockable, IDirect3DSurface9 ** ppSurface, HANDLE *pSharedHandle, DWORD Usage) PURE;
-    STDMETHOD(CreateOffscreenPlainSurfaceEx)(THIS_ UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle, DWORD Usage) PURE;
-    STDMETHOD(CreateDepthStencilSurfaceEx)(THIS_ UINT width, UINT height, D3DFORMAT format,
-            D3DMULTISAMPLE_TYPE multisample_type, DWORD multisample_quality, BOOL discard,
-            IDirect3DSurface9 **surface, HANDLE *shared_handle, DWORD usage) PURE;
-    STDMETHOD(ResetEx)(THIS_ D3DPRESENT_PARAMETERS *pPresentationParameters, D3DDISPLAYMODEEX *pFullscreenDisplayMode) PURE;
-    STDMETHOD(GetDisplayModeEx)(THIS_ UINT iSwapChain, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DDevice9Ex_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DDevice9Ex_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirect3DDevice9Ex_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirect3DDevice9 methods ***/
-#define IDirect3DDevice9Ex_TestCooperativeLevel(p)                       (p)->lpVtbl->TestCooperativeLevel(p)
-#define IDirect3DDevice9Ex_GetAvailableTextureMem(p)                     (p)->lpVtbl->GetAvailableTextureMem(p)
-#define IDirect3DDevice9Ex_EvictManagedResources(p)                      (p)->lpVtbl->EvictManagedResources(p)
-#define IDirect3DDevice9Ex_GetDirect3D(p,a)                              (p)->lpVtbl->GetDirect3D(p,a)
-#define IDirect3DDevice9Ex_GetDeviceCaps(p,a)                            (p)->lpVtbl->GetDeviceCaps(p,a)
-#define IDirect3DDevice9Ex_GetDisplayMode(p,a,b)                         (p)->lpVtbl->GetDisplayMode(p,a,b)
-#define IDirect3DDevice9Ex_GetCreationParameters(p,a)                    (p)->lpVtbl->GetCreationParameters(p,a)
-#define IDirect3DDevice9Ex_SetCursorProperties(p,a,b,c)                  (p)->lpVtbl->SetCursorProperties(p,a,b,c)
-#define IDirect3DDevice9Ex_SetCursorPosition(p,a,b,c)                    (p)->lpVtbl->SetCursorPosition(p,a,b,c)
-#define IDirect3DDevice9Ex_ShowCursor(p,a)                               (p)->lpVtbl->ShowCursor(p,a)
-#define IDirect3DDevice9Ex_CreateAdditionalSwapChain(p,a,b)              (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
-#define IDirect3DDevice9Ex_GetSwapChain(p,a,b)                           (p)->lpVtbl->GetSwapChain(p,a,b)
-#define IDirect3DDevice9Ex_GetNumberOfSwapChains(p)                      (p)->lpVtbl->GetNumberOfSwapChains(p)
-#define IDirect3DDevice9Ex_Reset(p,a)                                    (p)->lpVtbl->Reset(p,a)
-#define IDirect3DDevice9Ex_Present(p,a,b,c,d)                            (p)->lpVtbl->Present(p,a,b,c,d)
-#define IDirect3DDevice9Ex_GetBackBuffer(p,a,b,c,d)                      (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
-#define IDirect3DDevice9Ex_GetRasterStatus(p,a,b)                        (p)->lpVtbl->GetRasterStatus(p,a,b)
-#define IDirect3DDevice9Ex_SetDialogBoxMode(p,a)                         (p)->lpVtbl->SetDialogBoxMode(p,a)
-#define IDirect3DDevice9Ex_SetGammaRamp(p,a,b,c)                         (p)->lpVtbl->SetGammaRamp(p,a,b,c)
-#define IDirect3DDevice9Ex_GetGammaRamp(p,a,b)                           (p)->lpVtbl->GetGammaRamp(p,a,b)
-#define IDirect3DDevice9Ex_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice9Ex_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_UpdateSurface(p,a,b,c,d)                      (p)->lpVtbl->UpdateSurface(p,a,b,c,d)
-#define IDirect3DDevice9Ex_UpdateTexture(p,a,b)                          (p)->lpVtbl->UpdateTexture(p,a,b)
-#define IDirect3DDevice9Ex_GetRenderTargetData(p,a,b)                    (p)->lpVtbl->GetRenderTargetData(p,a,b)
-#define IDirect3DDevice9Ex_GetFrontBufferData(p,a,b)                     (p)->lpVtbl->GetFrontBufferData(p,a,b)
-#define IDirect3DDevice9Ex_StretchRect(p,a,b,c,d,e)                      (p)->lpVtbl->StretchRect(p,a,b,c,d,e)
-#define IDirect3DDevice9Ex_ColorFill(p,a,b,c)                            (p)->lpVtbl->ColorFill(p,a,b,c)
-#define IDirect3DDevice9Ex_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_SetRenderTarget(p,a,b)                        (p)->lpVtbl->SetRenderTarget(p,a,b)
-#define IDirect3DDevice9Ex_GetRenderTarget(p,a,b)                        (p)->lpVtbl->GetRenderTarget(p,a,b)
-#define IDirect3DDevice9Ex_SetDepthStencilSurface(p,a)                   (p)->lpVtbl->SetDepthStencilSurface(p,a)
-#define IDirect3DDevice9Ex_GetDepthStencilSurface(p,a)                   (p)->lpVtbl->GetDepthStencilSurface(p,a)
-#define IDirect3DDevice9Ex_BeginScene(p)                                 (p)->lpVtbl->BeginScene(p)
-#define IDirect3DDevice9Ex_EndScene(p)                                   (p)->lpVtbl->EndScene(p)
-#define IDirect3DDevice9Ex_Clear(p,a,b,c,d,e,f)                          (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_SetTransform(p,a,b)                           (p)->lpVtbl->SetTransform(p,a,b)
-#define IDirect3DDevice9Ex_GetTransform(p,a,b)                           (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DDevice9Ex_MultiplyTransform(p,a,b)                      (p)->lpVtbl->MultiplyTransform(p,a,b)
-#define IDirect3DDevice9Ex_SetViewport(p,a)                              (p)->lpVtbl->SetViewport(p,a)
-#define IDirect3DDevice9Ex_GetViewport(p,a)                              (p)->lpVtbl->GetViewport(p,a)
-#define IDirect3DDevice9Ex_SetMaterial(p,a)                              (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DDevice9Ex_GetMaterial(p,a)                              (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DDevice9Ex_SetLight(p,a,b)                               (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DDevice9Ex_GetLight(p,a,b)                               (p)->lpVtbl->GetLight(p,a,b)
-#define IDirect3DDevice9Ex_LightEnable(p,a,b)                            (p)->lpVtbl->LightEnable(p,a,b)
-#define IDirect3DDevice9Ex_GetLightEnable(p,a,b)                         (p)->lpVtbl->GetLightEnable(p,a,b)
-#define IDirect3DDevice9Ex_SetClipPlane(p,a,b)                           (p)->lpVtbl->SetClipPlane(p,a,b)
-#define IDirect3DDevice9Ex_GetClipPlane(p,a,b)                           (p)->lpVtbl->GetClipPlane(p,a,b)
-#define IDirect3DDevice9Ex_SetRenderState(p,a,b)                         (p)->lpVtbl->SetRenderState(p,a,b)
-#define IDirect3DDevice9Ex_GetRenderState(p,a,b)                         (p)->lpVtbl->GetRenderState(p,a,b)
-#define IDirect3DDevice9Ex_CreateStateBlock(p,a,b)                       (p)->lpVtbl->CreateStateBlock(p,a,b)
-#define IDirect3DDevice9Ex_BeginStateBlock(p)                            (p)->lpVtbl->BeginStateBlock(p)
-#define IDirect3DDevice9Ex_EndStateBlock(p,a)                            (p)->lpVtbl->EndStateBlock(p,a)
-#define IDirect3DDevice9Ex_SetClipStatus(p,a)                            (p)->lpVtbl->SetClipStatus(p,a)
-#define IDirect3DDevice9Ex_GetClipStatus(p,a)                            (p)->lpVtbl->GetClipStatus(p,a)
-#define IDirect3DDevice9Ex_GetTexture(p,a,b)                             (p)->lpVtbl->GetTexture(p,a,b)
-#define IDirect3DDevice9Ex_SetTexture(p,a,b)                             (p)->lpVtbl->SetTexture(p,a,b)
-#define IDirect3DDevice9Ex_GetTextureStageState(p,a,b,c)                 (p)->lpVtbl->GetTextureStageState(p,a,b,c)
-#define IDirect3DDevice9Ex_SetTextureStageState(p,a,b,c)                 (p)->lpVtbl->SetTextureStageState(p,a,b,c)
-#define IDirect3DDevice9Ex_GetSamplerState(p,a,b,c)                      (p)->lpVtbl->GetSamplerState(p,a,b,c)
-#define IDirect3DDevice9Ex_SetSamplerState(p,a,b,c)                      (p)->lpVtbl->SetSamplerState(p,a,b,c)
-#define IDirect3DDevice9Ex_ValidateDevice(p,a)                           (p)->lpVtbl->ValidateDevice(p,a)
-#define IDirect3DDevice9Ex_SetPaletteEntries(p,a,b)                      (p)->lpVtbl->SetPaletteEntries(p,a,b)
-#define IDirect3DDevice9Ex_GetPaletteEntries(p,a,b)                      (p)->lpVtbl->GetPaletteEntries(p,a,b)
-#define IDirect3DDevice9Ex_SetCurrentTexturePalette(p,a)                 (p)->lpVtbl->SetCurrentTexturePalette(p,a)
-#define IDirect3DDevice9Ex_GetCurrentTexturePalette(p,a)                 (p)->lpVtbl->GetCurrentTexturePalette(p,a)
-#define IDirect3DDevice9Ex_SetScissorRect(p,a)                           (p)->lpVtbl->SetScissorRect(p,a)
-#define IDirect3DDevice9Ex_GetScissorRect(p,a)                           (p)->lpVtbl->GetScissorRect(p,a)
-#define IDirect3DDevice9Ex_SetSoftwareVertexProcessing(p,a)              (p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
-#define IDirect3DDevice9Ex_GetSoftwareVertexProcessing(p)                (p)->lpVtbl->GetSoftwareVertexProcessing(p)
-#define IDirect3DDevice9Ex_SetNPatchMode(p,a)                            (p)->lpVtbl->SetNPatchMode(p,a)
-#define IDirect3DDevice9Ex_GetNPatchMode(p)                              (p)->lpVtbl->GetNPatchMode(p)
-#define IDirect3DDevice9Ex_DrawPrimitive(p,a,b,c)                        (p)->lpVtbl->DrawPrimitive(p,a,b,c)
-#define IDirect3DDevice9Ex_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_DrawPrimitiveUP(p,a,b,c,d)                    (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
-#define IDirect3DDevice9Ex_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_ProcessVertices(p,a,b,c,d,e,f)                (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateVertexDeclaration(p,a,b)                (p)->lpVtbl->CreateVertexDeclaration(p,a,b)
-#define IDirect3DDevice9Ex_SetVertexDeclaration(p,a)                     (p)->lpVtbl->SetVertexDeclaration(p,a)
-#define IDirect3DDevice9Ex_GetVertexDeclaration(p,a)                     (p)->lpVtbl->GetVertexDeclaration(p,a)
-#define IDirect3DDevice9Ex_SetFVF(p,a)                                   (p)->lpVtbl->SetFVF(p,a)
-#define IDirect3DDevice9Ex_GetFVF(p,a)                                   (p)->lpVtbl->GetFVF(p,a)
-#define IDirect3DDevice9Ex_CreateVertexShader(p,a,b)                     (p)->lpVtbl->CreateVertexShader(p,a,b)
-#define IDirect3DDevice9Ex_SetVertexShader(p,a)                          (p)->lpVtbl->SetVertexShader(p,a)
-#define IDirect3DDevice9Ex_GetVertexShader(p,a)                          (p)->lpVtbl->GetVertexShader(p,a)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantF(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantI(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantB(p,a,b,c)             (p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9Ex_SetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
-#define IDirect3DDevice9Ex_GetStreamSource(p,a,b,c,d)                    (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
-#define IDirect3DDevice9Ex_SetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->SetStreamSourceFreq(p,a,b)
-#define IDirect3DDevice9Ex_GetStreamSourceFreq(p,a,b)                    (p)->lpVtbl->GetStreamSourceFreq(p,a,b)
-#define IDirect3DDevice9Ex_SetIndices(p,a)                               (p)->lpVtbl->SetIndices(p,a)
-#define IDirect3DDevice9Ex_GetIndices(p,a)                               (p)->lpVtbl->GetIndices(p,a)
-#define IDirect3DDevice9Ex_CreatePixelShader(p,a,b)                      (p)->lpVtbl->CreatePixelShader(p,a,b)
-#define IDirect3DDevice9Ex_SetPixelShader(p,a)                           (p)->lpVtbl->SetPixelShader(p,a)
-#define IDirect3DDevice9Ex_GetPixelShader(p,a)                           (p)->lpVtbl->GetPixelShader(p,a)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantF(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantI(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantB(p,a,b,c)              (p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
-#define IDirect3DDevice9Ex_DrawRectPatch(p,a,b,c)                        (p)->lpVtbl->DrawRectPatch(p,a,b,c)
-#define IDirect3DDevice9Ex_DrawTriPatch(p,a,b,c)                         (p)->lpVtbl->DrawTriPatch(p,a,b,c)
-#define IDirect3DDevice9Ex_DeletePatch(p,a)                              (p)->lpVtbl->DeletePatch(p,a)
-#define IDirect3DDevice9Ex_CreateQuery(p,a,b)                            (p)->lpVtbl->CreateQuery(p,a,b)
-/* IDirect3DDevice9Ex */
-#define IDirect3DDevice9Ex_SetConvolutionMonoKernel(p,a,b,c,d)           (p)->lpVtbl->SetConvolutionMonoKernel(p,a,b,c,d)
-#define IDirect3DDevice9Ex_ComposeRects(p,a,b,c,d,e,f,g,h)               (p)->lpVtbl->ComposeRects(p,a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_PresentEx(p,a,b,c,d,e)                        (p)->lpVtbl->PresentEx(p,a,b,c,d,e)
-#define IDirect3DDevice9Ex_GetGPUThreadPriority(p,a)                     (p)->lpVtbl->GetGPUThreadPriority(p,a)
-#define IDirect3DDevice9Ex_SetGPUThreadPriority(p,a)                     (p)->lpVtbl->SetGPUThreadPriority(p,a)
-#define IDirect3DDevice9Ex_WaitForVBlank(p,a)                            (p)->lpVtbl->WaitForVBlank(p,a)
-#define IDirect3DDevice9Ex_CheckResourceResidency(p,a,b)                 (p)->lpVtbl->CheckResourceResidency(p,a,b)
-#define IDirect3DDevice9Ex_SetMaximumFrameLatency(p,a)                   (p)->lpVtbl->SetMaximumFrameLatency(p,a)
-#define IDirect3DDevice9Ex_GetMaximumFrameLatency(p,a)                   (p)->lpVtbl->GetMaximumFrameLatency(p,a)
-#define IDirect3DDevice9Ex_CheckDeviceState(p,a)                         (p)->lpVtbl->CheckDeviceState(p,a)
-#define IDirect3DDevice9Ex_CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)     (p)->lpVtbl->CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)(p)->lpVtbl->CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)
-#define IDirect3DDevice9Ex_CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)(p)->lpVtbl->CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_ResetEx(p,a,b)                                 (p)->lpVtbl->ResetEx(p,a,b)
-#define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c)                     (p)->lpVtbl->GetDisplayModeEx(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DDevice9Ex_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirect3DDevice9Ex_AddRef(p)             (p)->AddRef()
-#define IDirect3DDevice9Ex_Release(p)            (p)->Release()
-/*** IDirect3DDevice9 methods ***/
-#define IDirect3DDevice9Ex_TestCooperativeLevel(p)                       (p)->TestCooperativeLevel()
-#define IDirect3DDevice9Ex_GetAvailableTextureMem(p)                     (p)->GetAvailableTextureMem()
-#define IDirect3DDevice9Ex_EvictManagedResources(p)                      (p)->EvictManagedResources()
-#define IDirect3DDevice9Ex_GetDirect3D(p,a)                              (p)->GetDirect3D(a)
-#define IDirect3DDevice9Ex_GetDeviceCaps(p,a)                            (p)->GetDeviceCaps(a)
-#define IDirect3DDevice9Ex_GetDisplayMode(p,a,b)                         (p)->GetDisplayMode(a,b)
-#define IDirect3DDevice9Ex_GetCreationParameters(p,a)                    (p)->GetCreationParameters(a)
-#define IDirect3DDevice9Ex_SetCursorProperties(p,a,b,c)                  (p)->SetCursorProperties(a,b,c)
-#define IDirect3DDevice9Ex_SetCursorPosition(p,a,b,c)                    (p)->SetCursorPosition(a,b,c)
-#define IDirect3DDevice9Ex_ShowCursor(p,a)                               (p)->ShowCursor(a)
-#define IDirect3DDevice9Ex_CreateAdditionalSwapChain(p,a,b)              (p)->CreateAdditionalSwapChain(a,b)
-#define IDirect3DDevice9Ex_GetSwapChain(p,a,b)                           (p)->GetSwapChain(a,b)
-#define IDirect3DDevice9Ex_GetNumberOfSwapChains(p)                      (p)->GetNumberOfSwapChains()
-#define IDirect3DDevice9Ex_Reset(p,a)                                    (p)->Reset(a)
-#define IDirect3DDevice9Ex_Present(p,a,b,c,d)                            (p)->Present(a,b,c,d)
-#define IDirect3DDevice9Ex_GetBackBuffer(p,a,b,c,d)                      (p)->GetBackBuffer(a,b,c,d)
-#define IDirect3DDevice9Ex_GetRasterStatus(p,a,b)                        (p)->GetRasterStatus(a,b)
-#define IDirect3DDevice9Ex_SetDialogBoxMode(p,a)                         (p)->SetDialogBoxMode(a)
-#define IDirect3DDevice9Ex_SetGammaRamp(p,a,b,c)                         (p)->SetGammaRamp(a,b,c)
-#define IDirect3DDevice9Ex_GetGammaRamp(p,a,b)                           (p)->GetGammaRamp(a,b)
-#define IDirect3DDevice9Ex_CreateTexture(p,a,b,c,d,e,f,g,h)              (p)->CreateTexture(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)      (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_CreateCubeTexture(p,a,b,c,d,e,f,g)            (p)->CreateCubeTexture(a,b,c,d,e,f,g)
-#define IDirect3DDevice9Ex_CreateVertexBuffer(p,a,b,c,d,e,f)             (p)->CreateVertexBuffer(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateIndexBuffer(p,a,b,c,d,e,f)              (p)->CreateIndexBuffer(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateRenderTarget(p,a,b,c,d,e,f,g,h)         (p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)  (p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_UpdateSurface(p,a,b,c,d)                      (p)->UpdateSurface(a,b,c,d)
-#define IDirect3DDevice9Ex_UpdateTexture(p,a,b)                          (p)->UpdateTexture(a,b)
-#define IDirect3DDevice9Ex_GetRenderTargetData(p,a,b)                    (p)->GetRenderTargetData(a,b)
-#define IDirect3DDevice9Ex_GetFrontBufferData(p,a,b)                     (p)->GetFrontBufferData(a,b)
-#define IDirect3DDevice9Ex_StretchRect(p,a,b,c,d,e)                      (p)->StretchRect(a,b,c,d,e)
-#define IDirect3DDevice9Ex_ColorFill(p,a,b,c)                            (p)->ColorFill(a,b,c)
-#define IDirect3DDevice9Ex_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_SetRenderTarget(p,a,b)                        (p)->SetRenderTarget(a,b)
-#define IDirect3DDevice9Ex_GetRenderTarget(p,a,b)                        (p)->GetRenderTarget(a,b)
-#define IDirect3DDevice9Ex_SetDepthStencilSurface(p,a)                   (p)->SetDepthStencilSurface(a)
-#define IDirect3DDevice9Ex_GetDepthStencilSurface(p,a)                   (p)->GetDepthStencilSurface(a)
-#define IDirect3DDevice9Ex_BeginScene(p)                                 (p)->BeginScene()
-#define IDirect3DDevice9Ex_EndScene(p)                                   (p)->EndScene()
-#define IDirect3DDevice9Ex_Clear(p,a,b,c,d,e,f)                          (p)->Clear(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_SetTransform(p,a,b)                           (p)->SetTransform(a,b)
-#define IDirect3DDevice9Ex_GetTransform(p,a,b)                           (p)->GetTransform(a,b)
-#define IDirect3DDevice9Ex_MultiplyTransform(p,a,b)                      (p)->MultiplyTransform(a,b)
-#define IDirect3DDevice9Ex_SetViewport(p,a)                              (p)->SetViewport(a)
-#define IDirect3DDevice9Ex_GetViewport(p,a)                              (p)->GetViewport(a)
-#define IDirect3DDevice9Ex_SetMaterial(p,a)                              (p)->SetMaterial(a)
-#define IDirect3DDevice9Ex_GetMaterial(p,a)                              (p)->GetMaterial(a)
-#define IDirect3DDevice9Ex_SetLight(p,a,b)                               (p)->SetLight(a,b)
-#define IDirect3DDevice9Ex_GetLight(p,a,b)                               (p)->GetLight(a,b)
-#define IDirect3DDevice9Ex_LightEnable(p,a,b)                            (p)->LightEnable(a,b)
-#define IDirect3DDevice9Ex_GetLightEnable(p,a,b)                         (p)->GetLightEnable(a,b)
-#define IDirect3DDevice9Ex_SetClipPlane(p,a,b)                           (p)->SetClipPlane(a,b)
-#define IDirect3DDevice9Ex_GetClipPlane(p,a,b)                           (p)->GetClipPlane(a,b)
-#define IDirect3DDevice9Ex_SetRenderState(p,a,b)                         (p)->SetRenderState(a,b)
-#define IDirect3DDevice9Ex_GetRenderState(p,a,b)                         (p)->GetRenderState(a,b)
-#define IDirect3DDevice9Ex_CreateStateBlock(p,a,b)                       (p)->CreateStateBlock(a,b)
-#define IDirect3DDevice9Ex_BeginStateBlock(p)                            (p)->BeginStateBlock()
-#define IDirect3DDevice9Ex_EndStateBlock(p,a)                            (p)->EndStateBlock(a)
-#define IDirect3DDevice9Ex_SetClipStatus(p,a)                            (p)->SetClipStatus(a)
-#define IDirect3DDevice9Ex_GetClipStatus(p,a)                            (p)->GetClipStatus(a)
-#define IDirect3DDevice9Ex_GetTexture(p,a,b)                             (p)->GetTexture(a,b)
-#define IDirect3DDevice9Ex_SetTexture(p,a,b)                             (p)->SetTexture(a,b)
-#define IDirect3DDevice9Ex_GetTextureStageState(p,a,b,c)                 (p)->GetTextureStageState(a,b,c)
-#define IDirect3DDevice9Ex_SetTextureStageState(p,a,b,c)                 (p)->SetTextureStageState(a,b,c)
-#define IDirect3DDevice9Ex_GetSamplerState(p,a,b,c)                      (p)->GetSamplerState(a,b,c)
-#define IDirect3DDevice9Ex_SetSamplerState(p,a,b,c)                      (p)->SetSamplerState(a,b,c)
-#define IDirect3DDevice9Ex_ValidateDevice(p,a)                           (p)->ValidateDevice(a)
-#define IDirect3DDevice9Ex_SetPaletteEntries(p,a,b)                      (p)->SetPaletteEntries(a,b)
-#define IDirect3DDevice9Ex_GetPaletteEntries(p,a,b)                      (p)->GetPaletteEntries(a,b)
-#define IDirect3DDevice9Ex_SetCurrentTexturePalette(p,a)                 (p)->SetCurrentTexturePalette(a)
-#define IDirect3DDevice9Ex_GetCurrentTexturePalette(p,a)                 (p)->GetCurrentTexturePalette(a)
-#define IDirect3DDevice9Ex_SetScissorRect(p,a)                           (p)->SetScissorRect(a)
-#define IDirect3DDevice9Ex_GetScissorRect(p,a)                           (p)->GetScissorRect(a)
-#define IDirect3DDevice9Ex_SetSoftwareVertexProcessing(p,a)              (p)->SetSoftwareVertexProcessing(a)
-#define IDirect3DDevice9Ex_GetSoftwareVertexProcessing(p)                (p)->GetSoftwareVertexProcessing()
-#define IDirect3DDevice9Ex_SetNPatchMode(p,a)                            (p)->SetNPatchMode(a)
-#define IDirect3DDevice9Ex_GetNPatchMode(p)                              (p)->GetNPatchMode()
-#define IDirect3DDevice9Ex_DrawPrimitive(p,a,b,c)                        (p)->DrawPrimitive(a,b,c)
-#define IDirect3DDevice9Ex_DrawIndexedPrimitive(p,a,b,c,d,e,f)           (p)->DrawIndexedPrimitive(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_DrawPrimitiveUP(p,a,b,c,d)                    (p)->DrawPrimitiveUP(a,b,c,d)
-#define IDirect3DDevice9Ex_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)     (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_ProcessVertices(p,a,b,c,d,e,f)                (p)->ProcessVertices(a,b,c,d,e,f)
-#define IDirect3DDevice9Ex_CreateVertexDeclaration(p,a,b)                (p)->CreateVertexDeclaration(a,b)
-#define IDirect3DDevice9Ex_SetVertexDeclaration(p,a)                     (p)->SetVertexDeclaration(a)
-#define IDirect3DDevice9Ex_GetVertexDeclaration(p,a)                     (p)->GetVertexDeclaration(a)
-#define IDirect3DDevice9Ex_SetFVF(p,a)                                   (p)->SetFVF(a)
-#define IDirect3DDevice9Ex_GetFVF(p,a)                                   (p)->GetFVF(a)
-#define IDirect3DDevice9Ex_CreateVertexShader(p,a,b)                     (p)->CreateVertexShader(a,b)
-#define IDirect3DDevice9Ex_SetVertexShader(p,a)                          (p)->SetVertexShader(a)
-#define IDirect3DDevice9Ex_GetVertexShader(p,a)                          (p)->GetVertexShader(a)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantF(p,a,b,c)             (p)->SetVertexShaderConstantF(a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantF(p,a,b,c)             (p)->GetVertexShaderConstantF(a,b,c)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantI(p,a,b,c)             (p)->SetVertexShaderConstantI(a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantI(p,a,b,c)             (p)->GetVertexShaderConstantI(a,b,c)
-#define IDirect3DDevice9Ex_SetVertexShaderConstantB(p,a,b,c)             (p)->SetVertexShaderConstantB(a,b,c)
-#define IDirect3DDevice9Ex_GetVertexShaderConstantB(p,a,b,c)             (p)->GetVertexShaderConstantB(a,b,c)
-#define IDirect3DDevice9Ex_SetStreamSource(p,a,b,c,d)                    (p)->SetStreamSource(a,b,c,d)
-#define IDirect3DDevice9Ex_GetStreamSource(p,a,b,c,d)                    (p)->GetStreamSource(a,b,c,d)
-#define IDirect3DDevice9Ex_SetStreamSourceFreq(p,a,b)                    (p)->SetStreamSourceFreq(a,b)
-#define IDirect3DDevice9Ex_GetStreamSourceFreq(p,a,b)                    (p)->GetStreamSourceFreq(a,b)
-#define IDirect3DDevice9Ex_SetIndices(p,a)                               (p)->SetIndices(a)
-#define IDirect3DDevice9Ex_GetIndices(p,a)                               (p)->GetIndices(a)
-#define IDirect3DDevice9Ex_CreatePixelShader(p,a,b)                      (p)->CreatePixelShader(a,b)
-#define IDirect3DDevice9Ex_SetPixelShader(p,a)                           (p)->SetPixelShader(a)
-#define IDirect3DDevice9Ex_GetPixelShader(p,a)                           (p)->GetPixelShader(a)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantF(p,a,b,c)              (p)->SetPixelShaderConstantF(a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantF(p,a,b,c)              (p)->GetPixelShaderConstantF(a,b,c)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantI(p,a,b,c)              (p)->SetPixelShaderConstantI(a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantI(p,a,b,c)              (p)->GetPixelShaderConstantI(a,b,c)
-#define IDirect3DDevice9Ex_SetPixelShaderConstantB(p,a,b,c)              (p)->SetPixelShaderConstantB(a,b,c)
-#define IDirect3DDevice9Ex_GetPixelShaderConstantB(p,a,b,c)              (p)->GetPixelShaderConstantB(a,b,c)
-#define IDirect3DDevice9Ex_DrawRectPatch(p,a,b,c)                        (p)->DrawRectPatch(a,b,c)
-#define IDirect3DDevice9Ex_DrawTriPatch(p,a,b,c)                         (p)->DrawTriPatch(a,b,c)
-#define IDirect3DDevice9Ex_DeletePatch(p,a)                              (p)->DeletePatch(a)
-#define IDirect3DDevice9Ex_CreateQuery(p,a,b)                            (p)->CreateQuery(a,b)
-/* IDirect3DDevice9Ex */
-#define IDirect3DDevice9Ex_SetConvolutionMonoKernel(p,a,b,c,d)           (p)->SetConvolutionMonoKernel(a,b,c,d)
-#define IDirect3DDevice9Ex_ComposeRects(p,a,b,c,d,e,f,g,h)               (p)->ComposeRects(a,b,c,d,e,f,g,h)
-#define IDirect3DDevice9Ex_PresentEx(p,a,b,c,d,e)                        (p)->PresentEx(a,b,c,d,e)
-#define IDirect3DDevice9Ex_GetGPUThreadPriority(p,a)                     (p)->GetGPUThreadPriority(a)
-#define IDirect3DDevice9Ex_SetGPUThreadPriority(p,a)                     (p)->SetGPUThreadPriority(a)
-#define IDirect3DDevice9Ex_WaitForVBlank(p,a)                            (p)->WaitForVBlank(a)
-#define IDirect3DDevice9Ex_CheckResourceResidency(p,a,b)                 (p)->CheckResourceResidency(a,b)
-#define IDirect3DDevice9Ex_SetMaximumFrameLatency(p,a)                   (p)->SetMaximumFrameLatency(a)
-#define IDirect3DDevice9Ex_GetMaximumFrameLatency(p,a)                   (p)->GetMaximumFrameLatency(a)
-#define IDirect3DDevice9Ex_CheckDeviceState(p,a)                         (p)->CheckDeviceState(a)
-#define IDirect3DDevice9Ex_CreateRenderTargetEx(p,a,b,c,d,e,f,g,h,i)     (p)->CreateRenderTargetEx(a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_CreateOffscreenPlainSurfaceEx(p,a,b,c,d,e,f,g)(p)->CreateOffscreenPlainSurfaceEx(a,b,c,d,e,f,g)
-#define IDirect3DDevice9Ex_CreateDepthStencilSurfaceEx(p,a,b,c,d,e,f,g,h,i)(p)->CreateDepthStencilSurfaceEx(a,b,c,d,e,f,g,h,i)
-#define IDirect3DDevice9Ex_ResetEx(p,a,b)                                (p)->ResetEx(a,b)
-#define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c)                     (p)->GetDisplayModeEx(a,b,c)
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif  /* defined(__cplusplus) */
-
-int         WINAPI D3DPERF_BeginEvent(D3DCOLOR,LPCWSTR);
-int         WINAPI D3DPERF_EndEvent(void);
-DWORD       WINAPI D3DPERF_GetStatus(void);
-BOOL        WINAPI D3DPERF_QueryRepeatFrame(void);
-void        WINAPI D3DPERF_SetMarker(D3DCOLOR,LPCWSTR);
-void        WINAPI D3DPERF_SetOptions(DWORD);
-void        WINAPI D3DPERF_SetRegion(D3DCOLOR,LPCWSTR);
-
-/* Define the main entrypoint as well */
-IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-
-#endif /* __WINE_D3D9_H */
diff --git a/misc/builddeps/win64/dx/include/d3d9caps.h b/misc/builddeps/win64/dx/include/d3d9caps.h
deleted file mode 100644 (file)
index 8ed6598..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Copyright (C) 2002-2003 Jason Edmeades
- *                         Raphael Junqueira
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D9CAPS_H
-#define __WINE_D3D9CAPS_H
-
-/*
- * Definitions
- */
-#define D3DCAPS_READ_SCANLINE 0x20000
-
-#define D3DCURSORCAPS_COLOR   1
-#define D3DCURSORCAPS_LOWRES  2
-
-
-#define D3DDEVCAPS2_STREAMOFFSET                        0x00000001L
-#define D3DDEVCAPS2_DMAPNPATCH                          0x00000002L
-#define D3DDEVCAPS2_ADAPTIVETESSRTPATCH                 0x00000004L
-#define D3DDEVCAPS2_ADAPTIVETESSNPATCH                  0x00000008L
-#define D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES       0x00000010L
-#define D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH                0x00000020L
-#define D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET  0x00000040L
-
-#define D3DDEVCAPS_EXECUTESYSTEMMEMORY     0x0000010
-#define D3DDEVCAPS_EXECUTEVIDEOMEMORY      0x0000020
-#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY    0x0000040
-#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY     0x0000080
-#define D3DDEVCAPS_TEXTURESYSTEMMEMORY     0x0000100
-#define D3DDEVCAPS_TEXTUREVIDEOMEMORY      0x0000200
-#define D3DDEVCAPS_DRAWPRIMTLVERTEX        0x0000400
-#define D3DDEVCAPS_CANRENDERAFTERFLIP      0x0000800
-#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM   0x0001000
-#define D3DDEVCAPS_DRAWPRIMITIVES2         0x0002000
-#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x0004000
-#define D3DDEVCAPS_DRAWPRIMITIVES2EX       0x0008000
-#define D3DDEVCAPS_HWTRANSFORMANDLIGHT     0x0010000
-#define D3DDEVCAPS_CANBLTSYSTONONLOCAL     0x0020000
-#define D3DDEVCAPS_HWRASTERIZATION         0x0080000
-#define D3DDEVCAPS_PUREDEVICE              0x0100000
-#define D3DDEVCAPS_QUINTICRTPATCHES        0x0200000
-#define D3DDEVCAPS_RTPATCHES               0x0400000
-#define D3DDEVCAPS_RTPATCHHANDLEZERO       0x0800000
-#define D3DDEVCAPS_NPATCHES                0x1000000
-
-#define D3DFVFCAPS_TEXCOORDCOUNTMASK  0x00FFFF
-#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x080000
-#define D3DFVFCAPS_PSIZE              0x100000
-
-#define D3DLINECAPS_TEXTURE           0x01
-#define D3DLINECAPS_ZTEST             0x02
-#define D3DLINECAPS_BLEND             0x04
-#define D3DLINECAPS_ALPHACMP          0x08
-#define D3DLINECAPS_FOG               0x10
-#define D3DLINECAPS_ANTIALIAS         0x20
-
-#define D3DPBLENDCAPS_ZERO            0x00000001
-#define D3DPBLENDCAPS_ONE             0x00000002
-#define D3DPBLENDCAPS_SRCCOLOR        0x00000004
-#define D3DPBLENDCAPS_INVSRCCOLOR     0x00000008
-#define D3DPBLENDCAPS_SRCALPHA        0x00000010
-#define D3DPBLENDCAPS_INVSRCALPHA     0x00000020
-#define D3DPBLENDCAPS_DESTALPHA       0x00000040
-#define D3DPBLENDCAPS_INVDESTALPHA    0x00000080
-#define D3DPBLENDCAPS_DESTCOLOR       0x00000100
-#define D3DPBLENDCAPS_INVDESTCOLOR    0x00000200
-#define D3DPBLENDCAPS_SRCALPHASAT     0x00000400
-#define D3DPBLENDCAPS_BOTHSRCALPHA    0x00000800
-#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000
-#define D3DPBLENDCAPS_BLENDFACTOR     0x00002000
-
-#define D3DPCMPCAPS_NEVER        0x01
-#define D3DPCMPCAPS_LESS         0x02
-#define D3DPCMPCAPS_EQUAL        0x04
-#define D3DPCMPCAPS_LESSEQUAL    0x08
-#define D3DPCMPCAPS_GREATER      0x10
-#define D3DPCMPCAPS_NOTEQUAL     0x20
-#define D3DPCMPCAPS_GREATEREQUAL 0x40
-#define D3DPCMPCAPS_ALWAYS       0x80
-
-#define D3DPMISCCAPS_MASKZ                      0x00000002L
-#define D3DPMISCCAPS_LINEPATTERNREP             0x00000004L
-#define D3DPMISCCAPS_CULLNONE                   0x00000010L
-#define D3DPMISCCAPS_CULLCW                     0x00000020L
-#define D3DPMISCCAPS_CULLCCW                    0x00000040L
-#define D3DPMISCCAPS_COLORWRITEENABLE           0x00000080L
-#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS      0x00000100L
-#define D3DPMISCCAPS_CLIPTLVERTS                0x00000200L
-#define D3DPMISCCAPS_TSSARGTEMP                 0x00000400L
-#define D3DPMISCCAPS_BLENDOP                    0x00000800L
-#define D3DPMISCCAPS_NULLREFERENCE              0x00001000L
-#define D3DPMISCCAPS_INDEPENDENTWRITEMASKS      0x00004000L
-#define D3DPMISCCAPS_PERSTAGECONSTANT           0x00008000L
-#define D3DPMISCCAPS_FOGANDSPECULARALPHA        0x00010000L
-#define D3DPMISCCAPS_SEPARATEALPHABLEND         0x00020000L
-#define D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS    0x00040000L
-#define D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING 0x00080000L
-#define D3DPMISCCAPS_FOGVERTEXCLAMPED           0x00100000L
-
-
-#define D3DPRASTERCAPS_DITHER                     0x00000001L
-#define D3DPRASTERCAPS_PAT                        0x00000008L
-#define D3DPRASTERCAPS_ZTEST                      0x00000010L
-#define D3DPRASTERCAPS_FOGVERTEX                  0x00000080L
-#define D3DPRASTERCAPS_FOGTABLE                   0x00000100L
-#define D3DPRASTERCAPS_ANTIALIASEDGES             0x00001000L
-#define D3DPRASTERCAPS_MIPMAPLODBIAS              0x00002000L
-#define D3DPRASTERCAPS_ZBIAS                      0x00004000L
-#define D3DPRASTERCAPS_ZBUFFERLESSHSR             0x00008000L
-#define D3DPRASTERCAPS_FOGRANGE                   0x00010000L
-#define D3DPRASTERCAPS_ANISOTROPY                 0x00020000L
-#define D3DPRASTERCAPS_WBUFFER                    0x00040000L
-#define D3DPRASTERCAPS_WFOG                       0x00100000L
-#define D3DPRASTERCAPS_ZFOG                       0x00200000L
-#define D3DPRASTERCAPS_COLORPERSPECTIVE           0x00400000L
-#define D3DPRASTERCAPS_SCISSORTEST                0x01000000L
-#define D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS        0x02000000L
-#define D3DPRASTERCAPS_DEPTHBIAS                  0x04000000L 
-#define D3DPRASTERCAPS_MULTISAMPLE_TOGGLE         0x08000000L
-
-#define D3DPRESENT_INTERVAL_DEFAULT               0x00000000
-#define D3DPRESENT_INTERVAL_ONE                   0x00000001
-#define D3DPRESENT_INTERVAL_TWO                   0x00000002
-#define D3DPRESENT_INTERVAL_THREE                 0x00000004
-#define D3DPRESENT_INTERVAL_FOUR                  0x00000008
-#define D3DPRESENT_INTERVAL_IMMEDIATE             0x80000000
-
-#define D3DPSHADECAPS_COLORGOURAUDRGB             0x00008
-#define D3DPSHADECAPS_SPECULARGOURAUDRGB          0x00200
-#define D3DPSHADECAPS_ALPHAGOURAUDBLEND           0x04000
-#define D3DPSHADECAPS_FOGGOURAUD                  0x80000
-
-#define D3DPTADDRESSCAPS_WRAP                     0x01
-#define D3DPTADDRESSCAPS_MIRROR                   0x02
-#define D3DPTADDRESSCAPS_CLAMP                    0x04
-#define D3DPTADDRESSCAPS_BORDER                   0x08
-#define D3DPTADDRESSCAPS_INDEPENDENTUV            0x10
-#define D3DPTADDRESSCAPS_MIRRORONCE               0x20
-
-#define D3DPTEXTURECAPS_PERSPECTIVE              0x00000001L
-#define D3DPTEXTURECAPS_POW2                     0x00000002L
-#define D3DPTEXTURECAPS_ALPHA                    0x00000004L
-#define D3DPTEXTURECAPS_SQUAREONLY               0x00000020L
-#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L
-#define D3DPTEXTURECAPS_ALPHAPALETTE             0x00000080L
-#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL       0x00000100L
-#define D3DPTEXTURECAPS_PROJECTED                0x00000400L
-#define D3DPTEXTURECAPS_CUBEMAP                  0x00000800L
-#define D3DPTEXTURECAPS_VOLUMEMAP                0x00002000L
-#define D3DPTEXTURECAPS_MIPMAP                   0x00004000L
-#define D3DPTEXTURECAPS_MIPVOLUMEMAP             0x00008000L
-#define D3DPTEXTURECAPS_MIPCUBEMAP               0x00010000L
-#define D3DPTEXTURECAPS_CUBEMAP_POW2             0x00020000L
-#define D3DPTEXTURECAPS_VOLUMEMAP_POW2           0x00040000L
-#define D3DPTEXTURECAPS_NOPROJECTEDBUMPENV       0x00200000L
-
-#define D3DPTFILTERCAPS_MINFPOINT                0x00000100
-#define D3DPTFILTERCAPS_MINFLINEAR               0x00000200
-#define D3DPTFILTERCAPS_MINFANISOTROPIC          0x00000400
-#define D3DPTFILTERCAPS_MINFPYRAMIDALQUAD        0x00000800
-#define D3DPTFILTERCAPS_MINFGAUSSIANQUAD         0x00001000
-#define D3DPTFILTERCAPS_MIPFPOINT                0x00010000
-#define D3DPTFILTERCAPS_MIPFLINEAR               0x00020000
-#define D3DPTFILTERCAPS_MAGFPOINT                0x01000000
-#define D3DPTFILTERCAPS_MAGFLINEAR               0x02000000
-#define D3DPTFILTERCAPS_MAGFANISOTROPIC          0x04000000
-#define D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD        0x08000000
-#define D3DPTFILTERCAPS_MAGFGAUSSIANQUAD         0x10000000
-
-#define D3DSTENCILCAPS_KEEP                      0x01
-#define D3DSTENCILCAPS_ZERO                      0x02
-#define D3DSTENCILCAPS_REPLACE                   0x04
-#define D3DSTENCILCAPS_INCRSAT                   0x08
-#define D3DSTENCILCAPS_DECRSAT                   0x10
-#define D3DSTENCILCAPS_INVERT                    0x20
-#define D3DSTENCILCAPS_INCR                      0x40
-#define D3DSTENCILCAPS_DECR                      0x80
-#define D3DSTENCILCAPS_TWOSIDED                  0x100
-
-#define D3DTEXOPCAPS_DISABLE                     0x0000001
-#define D3DTEXOPCAPS_SELECTARG1                  0x0000002
-#define D3DTEXOPCAPS_SELECTARG2                  0x0000004
-#define D3DTEXOPCAPS_MODULATE                    0x0000008
-#define D3DTEXOPCAPS_MODULATE2X                  0x0000010
-#define D3DTEXOPCAPS_MODULATE4X                  0x0000020
-#define D3DTEXOPCAPS_ADD                         0x0000040
-#define D3DTEXOPCAPS_ADDSIGNED                   0x0000080
-#define D3DTEXOPCAPS_ADDSIGNED2X                 0x0000100
-#define D3DTEXOPCAPS_SUBTRACT                    0x0000200
-#define D3DTEXOPCAPS_ADDSMOOTH                   0x0000400
-#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA           0x0000800
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHA           0x0001000
-#define D3DTEXOPCAPS_BLENDFACTORALPHA            0x0002000
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM         0x0004000
-#define D3DTEXOPCAPS_BLENDCURRENTALPHA           0x0008000
-#define D3DTEXOPCAPS_PREMODULATE                 0x0010000
-#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR      0x0020000
-#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA      0x0040000
-#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR   0x0080000
-#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA   0x0100000
-#define D3DTEXOPCAPS_BUMPENVMAP                  0x0200000
-#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE         0x0400000
-#define D3DTEXOPCAPS_DOTPRODUCT3                 0x0800000
-#define D3DTEXOPCAPS_MULTIPLYADD                 0x1000000
-#define D3DTEXOPCAPS_LERP                        0x2000000
-
-#define D3DVTXPCAPS_TEXGEN                         0x00000001L
-#define D3DVTXPCAPS_MATERIALSOURCE7                0x00000002L
-#define D3DVTXPCAPS_DIRECTIONALLIGHTS              0x00000008L
-#define D3DVTXPCAPS_POSITIONALLIGHTS               0x00000010L
-#define D3DVTXPCAPS_LOCALVIEWER                    0x00000020L
-#define D3DVTXPCAPS_TWEENING                       0x00000040L
-#define D3DVTXPCAPS_TEXGEN_SPHEREMAP               0x00000100L
-#define D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER       0x00000200L
-
-#define D3DDTCAPS_UBYTE4                           0x00000001L
-#define D3DDTCAPS_UBYTE4N                          0x00000002L
-#define D3DDTCAPS_SHORT2N                          0x00000004L
-#define D3DDTCAPS_SHORT4N                          0x00000008L
-#define D3DDTCAPS_USHORT2N                         0x00000010L
-#define D3DDTCAPS_USHORT4N                         0x00000020L
-#define D3DDTCAPS_UDEC3                            0x00000040L
-#define D3DDTCAPS_DEC3N                            0x00000080L
-#define D3DDTCAPS_FLOAT16_2                        0x00000100L
-#define D3DDTCAPS_FLOAT16_4                        0x00000200L
-
-#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD  0x00000020L
-#define D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION       0x00000080L
-#define D3DCAPS3_COPY_TO_VIDMEM                    0x00000100L 
-#define D3DCAPS3_COPY_TO_SYSTEMMEM                 0x00000200L
-#define D3DCAPS3_RESERVED                          0x8000001FL
-
-#define D3DCAPS2_NO2DDURING3DSCENE                 0x00000002L
-#define D3DCAPS2_FULLSCREENGAMMA                   0x00020000L
-#define D3DCAPS2_CANRENDERWINDOWED                 0x00080000L
-#define D3DCAPS2_CANCALIBRATEGAMMA                 0x00100000L
-#define D3DCAPS2_RESERVED                          0x02000000L
-#define D3DCAPS2_CANMANAGERESOURCE                 0x10000000L
-#define D3DCAPS2_DYNAMICTEXTURES                   0x20000000L
-#define D3DCAPS2_CANAUTOGENMIPMAP                  0x40000000L
-
-
-#define D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH  24
-#define D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH  0
-#define D3DVS20_MAX_NUMTEMPS                 32
-#define D3DVS20_MIN_NUMTEMPS                 12
-#define D3DVS20_MAX_STATICFLOWCONTROLDEPTH   4
-#define D3DVS20_MIN_STATICFLOWCONTROLDEPTH   1
-
-#define D3DVS20CAPS_PREDICATION              (1 << 0)
-
-#define D3DPS20CAPS_ARBITRARYSWIZZLE         (1 << 0)
-#define D3DPS20CAPS_GRADIENTINSTRUCTIONS     (1 << 1)
-#define D3DPS20CAPS_PREDICATION              (1 << 2)
-#define D3DPS20CAPS_NODEPENDENTREADLIMIT     (1 << 3)
-#define D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT    (1 << 4)
-
-#define D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH  24
-#define D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH  0
-#define D3DPS20_MAX_NUMTEMPS                 32
-#define D3DPS20_MIN_NUMTEMPS                 12
-#define D3DPS20_MAX_STATICFLOWCONTROLDEPTH   4
-#define D3DPS20_MIN_STATICFLOWCONTROLDEPTH   0
-#define D3DPS20_MAX_NUMINSTRUCTIONSLOTS      512
-#define D3DPS20_MIN_NUMINSTRUCTIONSLOTS      96
-
-#define D3DMIN30SHADERINSTRUCTIONS          512
-#define D3DMAX30SHADERINSTRUCTIONS          32768
-
-
-typedef struct _D3DVSHADERCAPS2_0 {
-  DWORD  Caps;
-  INT    DynamicFlowControlDepth;
-  INT    NumTemps;
-  INT    StaticFlowControlDepth;
-} D3DVSHADERCAPS2_0;
-
-typedef struct _D3DPSHADERCAPS2_0 {
-  DWORD  Caps;
-  INT    DynamicFlowControlDepth;
-  INT    NumTemps;
-  INT    StaticFlowControlDepth;
-  INT    NumInstructionSlots;
-} D3DPSHADERCAPS2_0;
-
-/*
- * The d3dcaps9 structure
- */
-typedef struct _D3DCAPS9 {
-  D3DDEVTYPE          DeviceType;
-  UINT                AdapterOrdinal;
-  
-  DWORD               Caps;
-  DWORD               Caps2;
-  DWORD               Caps3;
-  DWORD               PresentationIntervals;
-  
-  DWORD               CursorCaps;
-  
-  DWORD               DevCaps;
-  
-  DWORD               PrimitiveMiscCaps;
-  DWORD               RasterCaps;
-  DWORD               ZCmpCaps;
-  DWORD               SrcBlendCaps;
-  DWORD               DestBlendCaps;
-  DWORD               AlphaCmpCaps;
-  DWORD               ShadeCaps;
-  DWORD               TextureCaps;
-  DWORD               TextureFilterCaps;
-  DWORD               CubeTextureFilterCaps;
-  DWORD               VolumeTextureFilterCaps;
-  DWORD               TextureAddressCaps;
-  DWORD               VolumeTextureAddressCaps;
-  
-  DWORD               LineCaps;
-  
-  DWORD               MaxTextureWidth, MaxTextureHeight;
-  DWORD               MaxVolumeExtent;
-  
-  DWORD               MaxTextureRepeat;
-  DWORD               MaxTextureAspectRatio;
-  DWORD               MaxAnisotropy;
-  float               MaxVertexW;
-  
-  float               GuardBandLeft;
-  float               GuardBandTop;
-  float               GuardBandRight;
-  float               GuardBandBottom;
-  
-  float               ExtentsAdjust;
-  DWORD               StencilCaps;
-  
-  DWORD               FVFCaps;
-  DWORD               TextureOpCaps;
-  DWORD               MaxTextureBlendStages;
-  DWORD               MaxSimultaneousTextures;
-  
-  DWORD               VertexProcessingCaps;
-  DWORD               MaxActiveLights;
-  DWORD               MaxUserClipPlanes;
-  DWORD               MaxVertexBlendMatrices;
-  DWORD               MaxVertexBlendMatrixIndex;
-  
-  float               MaxPointSize;
-  
-  DWORD               MaxPrimitiveCount;
-  DWORD               MaxVertexIndex;
-  DWORD               MaxStreams;
-  DWORD               MaxStreamStride;
-  
-  DWORD               VertexShaderVersion;
-  DWORD               MaxVertexShaderConst;
-  
-  DWORD               PixelShaderVersion;
-  float               PixelShader1xMaxValue;
-
-  /* DX 9 */
-  DWORD               DevCaps2;
-
-  float               MaxNpatchTessellationLevel;
-  DWORD               Reserved5;
-
-  UINT                MasterAdapterOrdinal;   
-  UINT                AdapterOrdinalInGroup;  
-  UINT                NumberOfAdaptersInGroup;
-  DWORD               DeclTypes;              
-  DWORD               NumSimultaneousRTs;     
-  DWORD               StretchRectFilterCaps;  
-  D3DVSHADERCAPS2_0   VS20Caps;
-  D3DPSHADERCAPS2_0   PS20Caps;
-  DWORD               VertexTextureFilterCaps;
-  DWORD               MaxVShaderInstructionsExecuted;
-  DWORD               MaxPShaderInstructionsExecuted;
-  DWORD               MaxVertexShader30InstructionSlots; 
-  DWORD               MaxPixelShader30InstructionSlots;
-
-} D3DCAPS9;
-
-#endif
diff --git a/misc/builddeps/win64/dx/include/d3d9types.h b/misc/builddeps/win64/dx/include/d3d9types.h
deleted file mode 100644 (file)
index e0e11df..0000000
+++ /dev/null
@@ -1,1582 +0,0 @@
-/*
- * Copyright (C) 2002-2003 Jason Edmeades 
- * Copyright (C) 2002-2003 Raphael Junqueira
- * Copyright (C) 2005 Oliver Stieber
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3D9TYPES_H
-#define __WINE_D3D9TYPES_H
-
-#include <_mingw_dxhelper.h>
-
-/*****************************************************************************
- * Direct 3D v9 #defines
- */
-#ifndef D3DCLEAR_TARGET
-#define D3DCLEAR_TARGET   0x00000001L
-#endif
-#ifndef D3DCLEAR_ZBUFFER
-#define D3DCLEAR_ZBUFFER  0x00000002L
-#endif
-#ifndef D3DCLEAR_STENCIL
-#define D3DCLEAR_STENCIL  0x00000004L
-#endif
-
-#define D3DCLIPPLANE0 (1 << 0)
-#define D3DCLIPPLANE1 (1 << 1)
-#define D3DCLIPPLANE2 (1 << 2)
-#define D3DCLIPPLANE3 (1 << 3)
-#define D3DCLIPPLANE4 (1 << 4)
-#define D3DCLIPPLANE5 (1 << 5)
-
-#define D3DCOLOR_ARGB(a,r,g,b)       ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
-#define D3DCOLOR_COLORVALUE(r,g,b,a) D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
-#define D3DCOLOR_RGBA(r,g,b,a)       D3DCOLOR_ARGB(a,r,g,b)
-#define D3DCOLOR_XRGB(r,g,b)         D3DCOLOR_ARGB(0xff,r,g,b)
-#define D3DCOLOR_XYUV(y,u,v)         D3DCOLOR_ARGB(0xFF,y,u,v)
-#define D3DCOLOR_AYUV(a,y,u,v)       D3DCOLOR_ARGB(a,y,u,v)
-
-#define D3DCS_LEFT                   0x001L
-#define D3DCS_RIGHT                  0x002L
-#define D3DCS_TOP                    0x004L
-#define D3DCS_BOTTOM                 0x008L
-#define D3DCS_FRONT                  0x010L
-#define D3DCS_BACK                   0x020L
-#define D3DCS_PLANE0                 0x040L
-#define D3DCS_PLANE1                 0x080L
-#define D3DCS_PLANE2                 0x100L
-#define D3DCS_PLANE3                 0x200L
-#define D3DCS_PLANE4                 0x400L
-#define D3DCS_PLANE5                 0x800L
-#define D3DCS_ALL                    0xFFFL
-
-#define D3DFVF_TEXTUREFORMAT1 3
-#define D3DFVF_TEXTUREFORMAT2 0
-#define D3DFVF_TEXTUREFORMAT3 1
-#define D3DFVF_TEXTUREFORMAT4 2
-#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
-#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
-
-#define D3DLOCK_READONLY           0x0010
-#define D3DLOCK_NOSYSLOCK          0x0800
-#define D3DLOCK_NOOVERWRITE        0x1000
-#define D3DLOCK_DISCARD            0x2000
-#define D3DLOCK_DONOTWAIT          0x4000
-#define D3DLOCK_NO_DIRTY_UPDATE    0x8000
-
-#define D3DMAXUSERCLIPPLANES       32
-#define D3DCLIPPLANE0              (1 << 0)
-#define D3DCLIPPLANE1              (1 << 1)
-#define D3DCLIPPLANE2              (1 << 2)
-#define D3DCLIPPLANE3              (1 << 3)
-#define D3DCLIPPLANE4              (1 << 4)
-#define D3DCLIPPLANE5              (1 << 5)
-
-
-#define D3DRENDERSTATE_WRAPBIAS    128UL
-
-/* MSDN has this in d3d9caps.h, but it should be here */
-#define D3DTSS_TCI_PASSTHRU                       0x00000
-#define D3DTSS_TCI_CAMERASPACENORMAL              0x10000
-#define D3DTSS_TCI_CAMERASPACEPOSITION            0x20000
-#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR    0x30000
-#define D3DTSS_TCI_SPHEREMAP                      0x40000
-
-
-#define D3DTS_WORLD  D3DTS_WORLDMATRIX(0)
-#define D3DTS_WORLD1 D3DTS_WORLDMATRIX(1)
-#define D3DTS_WORLD2 D3DTS_WORLDMATRIX(2)
-#define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3)
-#define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
-
-#define D3DUSAGE_RENDERTARGET       0x00000001L
-#define D3DUSAGE_DEPTHSTENCIL       0x00000002L
-#define D3DUSAGE_WRITEONLY          0x00000008L
-#define D3DUSAGE_SOFTWAREPROCESSING 0x00000010L
-#define D3DUSAGE_DONOTCLIP          0x00000020L
-#define D3DUSAGE_POINTS             0x00000040L
-#define D3DUSAGE_RTPATCHES          0x00000080L
-#define D3DUSAGE_NPATCHES           0x00000100L
-#define D3DUSAGE_DYNAMIC            0x00000200L
-#define D3DUSAGE_AUTOGENMIPMAP      0x00000400L 
-#define D3DUSAGE_DMAP               0x00004000L
-
-#define D3DUSAGE_QUERY_FILTER                   0x00020000L
-#define D3DUSAGE_QUERY_LEGACYBUMPMAP            0x00008000L
-#define D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING 0x00080000L
-#define D3DUSAGE_QUERY_SRGBREAD                 0x00010000L
-#define D3DUSAGE_QUERY_SRGBWRITE                0x00040000L
-#define D3DUSAGE_QUERY_VERTEXTEXTURE            0x00100000L
-#define D3DUSAGE_QUERY_WRAPANDMIP               0x00200000L
-
-#define D3DWRAP_U        1
-#define D3DWRAP_V        2
-#define D3DWRAP_W        4
-#define D3DWRAPCOORD_0   1
-#define D3DWRAPCOORD_1   2
-#define D3DWRAPCOORD_2   4
-#define D3DWRAPCOORD_3   8
-
-#define MAX_DEVICE_IDENTIFIER_STRING        512
-
-#define D3DFVF_RESERVED0           0x0001
-#define D3DFVF_POSITION_MASK       0x400E
-#define D3DFVF_XYZ                 0x0002
-#define D3DFVF_XYZRHW              0x0004
-#define D3DFVF_XYZB1               0x0006
-#define D3DFVF_XYZB2               0x0008
-#define D3DFVF_XYZB3               0x000a
-#define D3DFVF_XYZB4               0x000c
-#define D3DFVF_XYZB5               0x000e
-#define D3DFVF_XYZW                0x4002
-#define D3DFVF_NORMAL              0x0010
-#define D3DFVF_PSIZE               0x0020
-#define D3DFVF_DIFFUSE             0x0040
-#define D3DFVF_SPECULAR            0x0080
-#define D3DFVF_TEXCOUNT_MASK       0x0f00
-#define D3DFVF_TEXCOUNT_SHIFT           8
-#define D3DFVF_TEX0                0x0000
-#define D3DFVF_TEX1                0x0100
-#define D3DFVF_TEX2                0x0200
-#define D3DFVF_TEX3                0x0300
-#define D3DFVF_TEX4                0x0400
-#define D3DFVF_TEX5                0x0500
-#define D3DFVF_TEX6                0x0600
-#define D3DFVF_TEX7                0x0700
-#define D3DFVF_TEX8                0x0800
-#define D3DFVF_LASTBETA_UBYTE4     0x1000
-#define D3DFVF_LASTBETA_D3DCOLOR   0x8000
-#define D3DFVF_RESERVED2           0x6000
-
-#define D3DTA_SELECTMASK        0x0000000f
-#define D3DTA_DIFFUSE           0x00000000
-#define D3DTA_CURRENT           0x00000001
-#define D3DTA_TEXTURE           0x00000002
-#define D3DTA_TFACTOR           0x00000003
-#define D3DTA_SPECULAR          0x00000004
-#define D3DTA_TEMP              0x00000005
-#define D3DTA_CONSTANT          0x00000006
-#define D3DTA_COMPLEMENT        0x00000010
-#define D3DTA_ALPHAREPLICATE    0x00000020
-
-#define D3DCOLORWRITEENABLE_RED   (1L<<0)   
-#define D3DCOLORWRITEENABLE_GREEN (1L<<1)
-#define D3DCOLORWRITEENABLE_BLUE  (1L<<2)
-#define D3DCOLORWRITEENABLE_ALPHA (1L<<3)
-
-#define D3DPV_DONOTCOPYDATA         (1 << 0)
-
-#define D3DSTREAMSOURCE_INDEXEDDATA  (1 << 30)
-#define D3DSTREAMSOURCE_INSTANCEDATA (2 << 30)
-
-#define D3D_MAX_SIMULTANEOUS_RENDERTARGETS 4
-
-#define MAXD3DDECLLENGTH         64 /* +end marker */
-#define MAXD3DDECLMETHOD         D3DDECLMETHOD_LOOKUPPRESAMPLED
-#define MAXD3DDECLTYPE           D3DDECLTYPE_UNUSED
-#define MAXD3DDECLUSAGE          D3DDECLUSAGE_SAMPLE
-#define MAXD3DDECLUSAGEINDEX     15
-
-#define D3DDMAPSAMPLER 256
-#define D3DVERTEXTEXTURESAMPLER0 (D3DDMAPSAMPLER+1)
-#define D3DVERTEXTEXTURESAMPLER1 (D3DDMAPSAMPLER+2)
-#define D3DVERTEXTEXTURESAMPLER2 (D3DDMAPSAMPLER+3)
-#define D3DVERTEXTEXTURESAMPLER3 (D3DDMAPSAMPLER+4)
-
-#ifndef MAKEFOURCC
-#define MAKEFOURCC(ch0, ch1, ch2, ch3)  \
-    ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |  \
-    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
-#endif /* MAKEFOURCC */
-
-/* Constants used by D3DPRESENT_PARAMETERS. when creating a device or swapchain */
-
-#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER  0x00000001 /* Create a lockable backbuffer */
-#define D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL 0x00000002 /* Discard Z buffer */
-#define D3DPRESENTFLAG_DEVICECLIP           0x00000004 /* Clip the window blited into the client area 2k + xp only */
-#define D3DPRESENTFLAG_VIDEO                0x00000010 /* backbuffer 'may' contain video data */
-#define D3DPRESENTFLAG_NOAUTOROTATE         0x00000020 /* d3d9ex, ignore display rotation */
-#define D3DPRESENTFLAG_UNPRUNEDMODE         0x00000040 /* d3d9ex, specify invalid display modes */
-
-#define D3DPRESENT_BACK_BUFFERS_MAX         3L
-#define D3DPRESENT_RATE_DEFAULT             0x00000000
-
-/**************************** 
- * Vertex Shaders Declaration
- */
-
-typedef enum _D3DDECLUSAGE {
-  D3DDECLUSAGE_POSITION     = 0,
-  D3DDECLUSAGE_BLENDWEIGHT  = 1,
-  D3DDECLUSAGE_BLENDINDICES = 2,
-  D3DDECLUSAGE_NORMAL       = 3,      
-  D3DDECLUSAGE_PSIZE        = 4,       
-  D3DDECLUSAGE_TEXCOORD     = 5,    
-  D3DDECLUSAGE_TANGENT      = 6,     
-  D3DDECLUSAGE_BINORMAL     = 7,    
-  D3DDECLUSAGE_TESSFACTOR   = 8,  
-  D3DDECLUSAGE_POSITIONT    = 9,   
-  D3DDECLUSAGE_COLOR        = 10,       
-  D3DDECLUSAGE_FOG          = 11,        
-  D3DDECLUSAGE_DEPTH        = 12,      
-  D3DDECLUSAGE_SAMPLE       = 13     
-} D3DDECLUSAGE;
-
-#define D3DMAXDECLUSAGE         D3DDECLUSAGE_SAMPLE
-#define D3DMAXDECLUSAGEINDEX    15
-#define D3DMAXDECLLENGTH        18
-#define D3DMAXDECLUSAGE_DX8     D3DDECLUSAGE_TEXCOORD
-
-typedef enum _D3DDECLMETHOD {
-  D3DDECLMETHOD_DEFAULT          = 0,
-  D3DDECLMETHOD_PARTIALU         = 1,
-  D3DDECLMETHOD_PARTIALV         = 2,
-  D3DDECLMETHOD_CROSSUV          = 3,
-  D3DDECLMETHOD_UV               = 4,
-  D3DDECLMETHOD_LOOKUP           = 5,
-  D3DDECLMETHOD_LOOKUPPRESAMPLED = 6
-} D3DDECLMETHOD;
-
-
-#define D3DMAXDECLMETHOD        D3DDECLMETHOD_LOOKUPPRESAMPLED
-
-typedef enum _D3DDECLTYPE {
-  D3DDECLTYPE_FLOAT1    =  0,
-  D3DDECLTYPE_FLOAT2    =  1,
-  D3DDECLTYPE_FLOAT3    =  2,
-  D3DDECLTYPE_FLOAT4    =  3,
-  D3DDECLTYPE_D3DCOLOR  =  4,
-  D3DDECLTYPE_UBYTE4    =  5,
-  D3DDECLTYPE_SHORT2    =  6,
-  D3DDECLTYPE_SHORT4    =  7,
-  /* VS 2.0 */
-  D3DDECLTYPE_UBYTE4N   =  8,
-  D3DDECLTYPE_SHORT2N   =  9,
-  D3DDECLTYPE_SHORT4N   = 10,
-  D3DDECLTYPE_USHORT2N  = 11,
-  D3DDECLTYPE_USHORT4N  = 12,
-  D3DDECLTYPE_UDEC3     = 13,
-  D3DDECLTYPE_DEC3N     = 14,
-  D3DDECLTYPE_FLOAT16_2 = 15,
-  D3DDECLTYPE_FLOAT16_4 = 16,
-  D3DDECLTYPE_UNUSED    = 17,
-} D3DDECLTYPE;
-
-#define D3DMAXDECLTYPE          D3DDECLTYPE_UNUSED
-
-typedef struct _D3DVERTEXELEMENT9 {
-  WORD    Stream;
-  WORD    Offset;
-  BYTE    Type;
-  BYTE    Method;
-  BYTE    Usage;
-  BYTE    UsageIndex;
-} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;
-
-
-typedef enum _D3DQUERYTYPE {
-    D3DQUERYTYPE_VCACHE = 4,
-    D3DQUERYTYPE_RESOURCEMANAGER = 5,
-    D3DQUERYTYPE_VERTEXSTATS = 6,
-    D3DQUERYTYPE_EVENT = 8,
-    D3DQUERYTYPE_OCCLUSION = 9,
-    D3DQUERYTYPE_TIMESTAMP = 10,
-    D3DQUERYTYPE_TIMESTAMPDISJOINT = 11,
-    D3DQUERYTYPE_TIMESTAMPFREQ = 12,
-    D3DQUERYTYPE_PIPELINETIMINGS = 13,
-    D3DQUERYTYPE_INTERFACETIMINGS = 14,
-    D3DQUERYTYPE_VERTEXTIMINGS = 15,
-    D3DQUERYTYPE_PIXELTIMINGS = 16,
-    D3DQUERYTYPE_BANDWIDTHTIMINGS = 17,
-    D3DQUERYTYPE_CACHEUTILIZATION = 18
-} D3DQUERYTYPE;
-
-#define D3DISSUE_BEGIN   (1 << 1)
-#define D3DISSUE_END     (1 << 0)
-#define D3DGETDATA_FLUSH (1 << 0)
-
-
-#define D3DDECL_END() {0xFF,0,D3DDECLTYPE_UNUSED,0,0,0}
-#define D3DDP_MAXTEXCOORD   8
-
-
-#define D3DVSD_MAKETOKENTYPE(TokenType) \
-  ((TokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK)
-
-#define D3DVSD_CONST(ConstantAddress, Count) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_CONSTMEM) | ((Count) << D3DVSD_CONSTCOUNTSHIFT) | (ConstantAddress))
-
-#define D3DVSD_END() 0xFFFFFFFF
-
-#define D3DVSD_NOP() 0x00000000
-
-#define D3DVSD_REG(VertexRegister, Type) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | ((Type) << D3DVSD_DATATYPESHIFT) | (VertexRegister))
-
-#define D3DVSD_SKIP(Count) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | 0x10000000 | ((Count) << D3DVSD_SKIPCOUNTSHIFT))
-
-#define D3DVSD_STREAM(StreamNumber) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (StreamNumber))
-
-#define D3DVSD_STREAM_TESS() \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (D3DVSD_STREAMTESSMASK))
-
-#define D3DVSD_TESSNORMAL(RegisterIn, RegisterOut) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | ((RegisterIn) << D3DVSD_VERTEXREGINSHIFT) | ((0x02) << D3DVSD_DATATYPESHIFT) | (RegisterOut))
-
-#define D3DVSD_TESSUV(Register) \
-  (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | 0x10000000 | ((0x01) << D3DVSD_DATATYPESHIFT) | (Register))
-
-
-/********************************
- * Pixel/Vertex Shaders Functions
- */
-
-/** Maximum number of supported texture coordinates sets operation */
-#define D3DDP_MAXTEXCOORD   8
-
-/** opcode token mask */
-#define D3DSI_OPCODE_MASK       0x0000FFFF
-#define D3DSI_INSTLENGTH_MASK   0x0F000000
-#define D3DSI_INSTLENGTH_SHIFT  24
-
-/** opcodes types for PS and VS */
-typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE {
-  D3DSIO_NOP          =  0,
-  D3DSIO_MOV          =  1,
-  D3DSIO_ADD          =  2,
-  D3DSIO_SUB          =  3,
-  D3DSIO_MAD          =  4,
-  D3DSIO_MUL          =  5,
-  D3DSIO_RCP          =  6,
-  D3DSIO_RSQ          =  7,
-  D3DSIO_DP3          =  8,
-  D3DSIO_DP4          =  9,
-  D3DSIO_MIN          = 10,
-  D3DSIO_MAX          = 11,
-  D3DSIO_SLT          = 12,
-  D3DSIO_SGE          = 13,
-  D3DSIO_EXP          = 14,
-  D3DSIO_LOG          = 15,
-  D3DSIO_LIT          = 16,
-  D3DSIO_DST          = 17,
-  D3DSIO_LRP          = 18,
-  D3DSIO_FRC          = 19,
-  D3DSIO_M4x4         = 20,
-  D3DSIO_M4x3         = 21,
-  D3DSIO_M3x4         = 22,
-  D3DSIO_M3x3         = 23,
-  D3DSIO_M3x2         = 24,
-  D3DSIO_CALL         = 25,
-  D3DSIO_CALLNZ       = 26,
-  D3DSIO_LOOP         = 27,
-  D3DSIO_RET          = 28,
-  D3DSIO_ENDLOOP      = 29,
-  D3DSIO_LABEL        = 30,
-  D3DSIO_DCL          = 31,
-  D3DSIO_POW          = 32,
-  D3DSIO_CRS          = 33,
-  D3DSIO_SGN          = 34,
-  D3DSIO_ABS          = 35,
-  D3DSIO_NRM          = 36,
-  D3DSIO_SINCOS       = 37,
-  D3DSIO_REP          = 38,
-  D3DSIO_ENDREP       = 39,
-  D3DSIO_IF           = 40,
-  D3DSIO_IFC          = 41,
-  D3DSIO_ELSE         = 42,
-  D3DSIO_ENDIF        = 43,
-  D3DSIO_BREAK        = 44,
-  D3DSIO_BREAKC       = 45,
-  D3DSIO_MOVA         = 46,
-  D3DSIO_DEFB         = 47,
-  D3DSIO_DEFI         = 48,
-
-  D3DSIO_TEXCOORD     = 64,
-  D3DSIO_TEXKILL      = 65,
-  D3DSIO_TEX          = 66,
-  D3DSIO_TEXBEM       = 67,
-  D3DSIO_TEXBEML      = 68,
-  D3DSIO_TEXREG2AR    = 69,
-  D3DSIO_TEXREG2GB    = 70,
-  D3DSIO_TEXM3x2PAD   = 71,
-  D3DSIO_TEXM3x2TEX   = 72,
-  D3DSIO_TEXM3x3PAD   = 73,
-  D3DSIO_TEXM3x3TEX   = 74,
-  D3DSIO_TEXM3x3DIFF  = 75,
-  D3DSIO_TEXM3x3SPEC  = 76,
-  D3DSIO_TEXM3x3VSPEC = 77,
-  D3DSIO_EXPP         = 78,
-  D3DSIO_LOGP         = 79,
-  D3DSIO_CND          = 80,
-  D3DSIO_DEF          = 81,
-  D3DSIO_TEXREG2RGB   = 82,
-  D3DSIO_TEXDP3TEX    = 83,
-  D3DSIO_TEXM3x2DEPTH = 84,
-  D3DSIO_TEXDP3       = 85,
-  D3DSIO_TEXM3x3      = 86,
-  D3DSIO_TEXDEPTH     = 87,
-  D3DSIO_CMP          = 88,
-  D3DSIO_BEM          = 89,
-  D3DSIO_DP2ADD       = 90,
-  D3DSIO_DSX          = 91,
-  D3DSIO_DSY          = 92,
-  D3DSIO_TEXLDD       = 93,
-  D3DSIO_SETP         = 94,
-  D3DSIO_TEXLDL       = 95,
-  D3DSIO_BREAKP       = 96,
-  
-  D3DSIO_PHASE        = 0xFFFD,
-  D3DSIO_COMMENT      = 0xFFFE,
-  D3DSIO_END          = 0XFFFF,
-
-  D3DSIO_FORCE_DWORD  = 0X7FFFFFFF /** for 32-bit alignment */
-} D3DSHADER_INSTRUCTION_OPCODE_TYPE;
-
-#define D3DSINCOSCONST1   -1.5500992e-006f, -2.1701389e-005f,  0.0026041667f, 0.00026041668f
-#define D3DSINCOSCONST2   -0.020833334f,    -0.12500000f,      1.0f,          0.50000000f
-
-#define D3DSHADER_INSTRUCTION_PREDICATED    (1 << 28)
-
-#define D3DSI_TEXLD_PROJECT 0x00010000
-#define D3DSI_TEXLD_BIAS    0x00020000
-
-/** for parallelism */
-#define D3DSI_COISSUE 0x40000000
-
-#define D3DSP_DCL_USAGE_SHIFT 0
-#define D3DSP_DCL_USAGE_MASK  0x0000000f
-
-#define D3DSP_DCL_USAGEINDEX_SHIFT 16
-#define D3DSP_DCL_USAGEINDEX_MASK  0x000f0000
-
-#define D3DSP_TEXTURETYPE_SHIFT 27
-#define D3DSP_TEXTURETYPE_MASK  0x78000000
-
-typedef enum _D3DSAMPLER_TEXTURE_TYPE {
-  D3DSTT_UNKNOWN      = 0 << D3DSP_TEXTURETYPE_SHIFT,
-  D3DSTT_1D           = 1 << D3DSP_TEXTURETYPE_SHIFT,
-  D3DSTT_2D           = 2 << D3DSP_TEXTURETYPE_SHIFT,
-  D3DSTT_CUBE         = 3 << D3DSP_TEXTURETYPE_SHIFT,
-  D3DSTT_VOLUME       = 4 << D3DSP_TEXTURETYPE_SHIFT,
-
-  D3DSTT_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSAMPLER_TEXTURE_TYPE;
-
-#define D3DSP_REGNUM_MASK       0x000007FF
-
-/** destination parameter modifiers (.xyzw) */
-#define D3DSP_WRITEMASK_0       0x00010000 /* .x r */
-#define D3DSP_WRITEMASK_1       0x00020000 /* .y g */
-#define D3DSP_WRITEMASK_2       0x00040000 /* .z b */
-#define D3DSP_WRITEMASK_3       0x00080000 /* .w a */
-#define D3DSP_WRITEMASK_ALL     0x000F0000 /* all */
-
-#define D3DSP_DSTMOD_SHIFT      20
-#define D3DSP_DSTMOD_MASK       (0xF << D3DSP_DSTMOD_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_DSTMOD_TYPE {
-  D3DSPDM_NONE             = 0 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_SATURATE         = 1 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_PARTIALPRECISION = 2 << D3DSP_DSTMOD_SHIFT,
-  D3DSPDM_MSAMPCENTROID    = 4 << D3DSP_DSTMOD_SHIFT,
-
-  D3DSPDM_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_DSTMOD_TYPE;
-
-/** destination param */
-#define D3DSP_DSTSHIFT_SHIFT     24
-#define D3DSP_DSTSHIFT_MASK      (0xF << D3DSP_DSTSHIFT_SHIFT)
-
-/** destination/source reg type */
-#define D3DSP_REGTYPE_SHIFT      28
-#define D3DSP_REGTYPE_SHIFT2     8
-#define D3DSP_REGTYPE_MASK       (0x7 << D3DSP_REGTYPE_SHIFT)
-#define D3DSP_REGTYPE_MASK2      0x00001800
-
-typedef enum _D3DSHADER_PARAM_REGISTER_TYPE {
-  D3DSPR_TEMP         =  0, 
-  D3DSPR_INPUT        =  1,
-  D3DSPR_CONST        =  2,
-  D3DSPR_ADDR         =  3,
-  D3DSPR_TEXTURE      =  3,
-  D3DSPR_RASTOUT      =  4,
-  D3DSPR_ATTROUT      =  5,
-  D3DSPR_TEXCRDOUT    =  6,
-  D3DSPR_OUTPUT       =  6,
-  D3DSPR_CONSTINT     =  7,
-  D3DSPR_COLOROUT     =  8,
-  D3DSPR_DEPTHOUT     =  9,
-  D3DSPR_SAMPLER      = 10,
-  D3DSPR_CONST2       = 11,
-  D3DSPR_CONST3       = 12,
-  D3DSPR_CONST4       = 13,
-  D3DSPR_CONSTBOOL    = 14,
-  D3DSPR_LOOP         = 15,
-  D3DSPR_TEMPFLOAT16  = 16,
-  D3DSPR_MISCTYPE     = 17,
-  D3DSPR_LABEL        = 18,
-  D3DSPR_PREDICATE    = 19,
-
-  D3DSPR_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_REGISTER_TYPE;
-
-typedef enum _D3DSHADER_MISCTYPE_OFFSETS {
-    D3DSMO_POSITION  = 0,
-    D3DSMO_FACE      = 1
-} D3DSHADER_MISCTYPE_OFFSETS;
-
-typedef enum _D3DVS_RASTOUT_OFFSETS {
-  D3DSRO_POSITION     = 0,
-  D3DSRO_FOG          = 1,
-  D3DSRO_POINT_SIZE   = 2,
-
-  D3DSRO_FORCE_DWORD  = 0x7FFFFFFF
-} D3DVS_RASTOUT_OFFSETS;
-
-#define D3DVS_ADDRESSMODE_SHIFT  13
-#define D3DVS_ADDRESSMODE_MASK   (0x1 << D3DVS_ADDRESSMODE_SHIFT)
-
-typedef enum _D3DVS_ADDRESSMODE_TYPE {
-  D3DVS_ADDRMODE_ABSOLUTE     = 0 << D3DVS_ADDRESSMODE_SHIFT,
-  D3DVS_ADDRMODE_RELATIVE     = 1 << D3DVS_ADDRESSMODE_SHIFT,
-
-  D3DVS_ADDRMODE_FORCE_DWORD  = 0x7FFFFFFF
-} D3DVS_ADDRESSMODE_TYPE;
-
-#define D3DSHADER_ADDRESSMODE_SHIFT 13
-#define D3DSHADER_ADDRESSMODE_MASK  (1 << D3DSHADER_ADDRESSMODE_SHIFT)
-
-typedef enum _D3DSHADER_ADDRESSMODE_TYPE {
-  D3DSHADER_ADDRMODE_ABSOLUTE    = 0 << D3DSHADER_ADDRESSMODE_SHIFT,
-  D3DSHADER_ADDRMODE_RELATIVE    = 1 << D3DSHADER_ADDRESSMODE_SHIFT,
-
-  D3DSHADER_ADDRMODE_FORCE_DWORD = 0x7FFFFFFF
-} D3DSHADER_ADDRESSMODE_TYPE;
-
-
-#define D3DVS_SWIZZLE_SHIFT      16
-#define D3DVS_SWIZZLE_MASK       (0xFF << D3DVS_SWIZZLE_SHIFT)
-
-#define D3DSP_SWIZZLE_SHIFT      16
-#define D3DSP_SWIZZLE_MASK       (0xFF << D3DSP_SWIZZLE_SHIFT)
-
-#define D3DVS_X_X       (0 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_Y       (1 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_Z       (2 << D3DVS_SWIZZLE_SHIFT)
-#define D3DVS_X_W       (3 << D3DVS_SWIZZLE_SHIFT)
-
-#define D3DVS_Y_X       (0 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 2))
-#define D3DVS_Y_W       (3 << (D3DVS_SWIZZLE_SHIFT + 2))
-
-#define D3DVS_Z_X       (0 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 4))
-#define D3DVS_Z_W       (3 << (D3DVS_SWIZZLE_SHIFT + 4))
-
-#define D3DVS_W_X       (0 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_Y       (1 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_Z       (2 << (D3DVS_SWIZZLE_SHIFT + 6))
-#define D3DVS_W_W       (3 << (D3DVS_SWIZZLE_SHIFT + 6))
-
-#define D3DVS_NOSWIZZLE (D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W)
-
-#define D3DSP_NOSWIZZLE \
-    ((0 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
-
-#define D3DSP_SRCMOD_SHIFT      24
-#define D3DSP_SRCMOD_MASK       (0xF << D3DSP_SRCMOD_SHIFT)
-
-typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE {
-  D3DSPSM_NONE         =  0 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_NEG          =  1 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_BIAS         =  2 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_BIASNEG      =  3 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_SIGN         =  4 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_SIGNNEG      =  5 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_COMP         =  6 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_X2           =  7 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_X2NEG        =  8 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_DZ           =  9 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_DW           = 10 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_ABS          = 11 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_ABSNEG       = 12 << D3DSP_SRCMOD_SHIFT,
-  D3DSPSM_NOT          = 13 << D3DSP_SRCMOD_SHIFT,
-
-  D3DSPSM_FORCE_DWORD  = 0x7FFFFFFF
-} D3DSHADER_PARAM_SRCMOD_TYPE;
-
-#define D3DPS_VERSION(major, minor) (0xFFFF0000 | ((major) << 8) | (minor))
-#define D3DVS_VERSION(major, minor) (0xFFFE0000 | ((major) << 8) | (minor))
-#define D3DSHADER_VERSION_MAJOR(version) (((version) >> 8) & 0xFF)
-#define D3DSHADER_VERSION_MINOR(version) (((version) >> 0) & 0xFF)
-
-#define D3DSI_COMMENTSIZE_SHIFT 16
-#define D3DSI_COMMENTSIZE_MASK (0x7FFF << D3DSI_COMMENTSIZE_SHIFT)
-
-#define D3DSHADER_COMMENT(commentSize) \
-  ((((commentSize) << D3DSI_COMMENTSIZE_SHIFT) & D3DSI_COMMENTSIZE_MASK) | D3DSIO_COMMENT)
-
-#define D3DPS_END() 0x0000FFFF
-#define D3DVS_END() 0x0000FFFF
-
-
-/*****************************************************************************
- * Direct 3D v8 enumerated types
- */
-typedef enum _D3DBACKBUFFER_TYPE {
-    D3DBACKBUFFER_TYPE_MONO         = 0,
-    D3DBACKBUFFER_TYPE_LEFT         = 1,
-    D3DBACKBUFFER_TYPE_RIGHT        = 2,
-
-    D3DBACKBUFFER_TYPE_FORCE_DWORD  = 0x7fffffff
-} D3DBACKBUFFER_TYPE;
-
-#define D3DPRESENT_BACK_BUFFER_MAX 3L
-
-typedef enum _D3DBASISTYPE {
-   D3DBASIS_BEZIER        = 0,
-   D3DBASIS_BSPLINE       = 1,
-   D3DBASIS_INTERPOLATE   = 2,
-
-   D3DBASIS_FORCE_DWORD   = 0x7fffffff
-} D3DBASISTYPE;
-
-typedef enum _D3DBLEND {
-    D3DBLEND_ZERO               =  1,
-    D3DBLEND_ONE                =  2,
-    D3DBLEND_SRCCOLOR           =  3,
-    D3DBLEND_INVSRCCOLOR        =  4,
-    D3DBLEND_SRCALPHA           =  5,
-    D3DBLEND_INVSRCALPHA        =  6,
-    D3DBLEND_DESTALPHA          =  7,
-    D3DBLEND_INVDESTALPHA       =  8,
-    D3DBLEND_DESTCOLOR          =  9,
-    D3DBLEND_INVDESTCOLOR       = 10,
-    D3DBLEND_SRCALPHASAT        = 11,
-    D3DBLEND_BOTHSRCALPHA       = 12,
-    D3DBLEND_BOTHINVSRCALPHA    = 13,
-    D3DBLEND_BLENDFACTOR        = 14,
-    D3DBLEND_INVBLENDFACTOR     = 15,
-    D3DBLEND_FORCE_DWORD        = 0x7fffffff
-} D3DBLEND;
-
-typedef enum _D3DBLENDOP {
-    D3DBLENDOP_ADD              = 1,
-    D3DBLENDOP_SUBTRACT         = 2,
-    D3DBLENDOP_REVSUBTRACT      = 3,
-    D3DBLENDOP_MIN              = 4,
-    D3DBLENDOP_MAX              = 5,
-
-    D3DBLENDOP_FORCE_DWORD      = 0x7fffffff
-} D3DBLENDOP;
-
-typedef enum _D3DCMPFUNC {
-    D3DCMP_NEVER                = 1,
-    D3DCMP_LESS                 = 2,
-    D3DCMP_EQUAL                = 3,
-    D3DCMP_LESSEQUAL            = 4,
-    D3DCMP_GREATER              = 5,
-    D3DCMP_NOTEQUAL             = 6,
-    D3DCMP_GREATEREQUAL         = 7,
-    D3DCMP_ALWAYS               = 8,
-
-    D3DCMP_FORCE_DWORD          = 0x7fffffff
-} D3DCMPFUNC;
-
-typedef enum _D3DCUBEMAP_FACES {
-    D3DCUBEMAP_FACE_POSITIVE_X     = 0,
-    D3DCUBEMAP_FACE_NEGATIVE_X     = 1,
-    D3DCUBEMAP_FACE_POSITIVE_Y     = 2,
-    D3DCUBEMAP_FACE_NEGATIVE_Y     = 3,
-    D3DCUBEMAP_FACE_POSITIVE_Z     = 4,
-    D3DCUBEMAP_FACE_NEGATIVE_Z     = 5,
-
-    D3DCUBEMAP_FACE_FORCE_DWORD    = 0xffffffff
-} D3DCUBEMAP_FACES;
-
-typedef enum _D3DCULL {
-    D3DCULL_NONE                = 1,
-    D3DCULL_CW                  = 2,
-    D3DCULL_CCW                 = 3,
-
-    D3DCULL_FORCE_DWORD         = 0x7fffffff
-} D3DCULL;
-
-typedef enum _D3DDEBUGMONITORTOKENS {
-    D3DDMT_ENABLE          = 0,
-    D3DDMT_DISABLE         = 1,
-
-    D3DDMT_FORCE_DWORD     = 0x7fffffff
-} D3DDEBUGMONITORTOKENS;
-
-typedef enum _D3DDEGREETYPE {
-    D3DDEGREE_LINEAR      = 1,
-    D3DDEGREE_QUADRATIC   = 2,
-    D3DDEGREE_CUBIC       = 3,
-    D3DDEGREE_QUINTIC     = 5,
-    
-    D3DDEGREE_FORCE_DWORD   = 0x7fffffff
-} D3DDEGREETYPE;
-
-typedef enum _D3DDEVTYPE {
-    D3DDEVTYPE_HAL         = 1,
-    D3DDEVTYPE_REF         = 2,
-    D3DDEVTYPE_SW          = 3,
-    D3DDEVTYPE_NULLREF     = 4,
-
-    D3DDEVTYPE_FORCE_DWORD = 0xffffffff
-} D3DDEVTYPE;
-
-typedef enum _D3DFILLMODE {
-    D3DFILL_POINT               = 1,
-    D3DFILL_WIREFRAME           = 2,
-    D3DFILL_SOLID               = 3,
-
-    D3DFILL_FORCE_DWORD         = 0x7fffffff
-} D3DFILLMODE;
-
-typedef enum _D3DFOGMODE {
-    D3DFOG_NONE                 = 0,
-    D3DFOG_EXP                  = 1,
-    D3DFOG_EXP2                 = 2,
-    D3DFOG_LINEAR               = 3,
-
-    D3DFOG_FORCE_DWORD          = 0x7fffffff
-} D3DFOGMODE;
-
-typedef enum _D3DFORMAT {
-    D3DFMT_UNKNOWN              =   0,
-
-    D3DFMT_R8G8B8               =  20,
-    D3DFMT_A8R8G8B8             =  21,
-    D3DFMT_X8R8G8B8             =  22,
-    D3DFMT_R5G6B5               =  23,
-    D3DFMT_X1R5G5B5             =  24,
-    D3DFMT_A1R5G5B5             =  25,
-    D3DFMT_A4R4G4B4             =  26,
-    D3DFMT_R3G3B2               =  27,
-    D3DFMT_A8                   =  28,
-    D3DFMT_A8R3G3B2             =  29,
-    D3DFMT_X4R4G4B4             =  30,
-    D3DFMT_A2B10G10R10          =  31,
-    D3DFMT_A8B8G8R8             =  32,
-    D3DFMT_X8B8G8R8             =  33,
-    D3DFMT_G16R16               =  34,
-    D3DFMT_A2R10G10B10          =  35,
-    D3DFMT_A16B16G16R16         =  36,
-  
-
-    D3DFMT_A8P8                 =  40,
-    D3DFMT_P8                   =  41,
-
-    D3DFMT_L8                   =  50,
-    D3DFMT_A8L8                 =  51,
-    D3DFMT_A4L4                 =  52,
-
-    D3DFMT_V8U8                 =  60,
-    D3DFMT_L6V5U5               =  61,
-    D3DFMT_X8L8V8U8             =  62,
-    D3DFMT_Q8W8V8U8             =  63,
-    D3DFMT_V16U16               =  64,
-    D3DFMT_A2W10V10U10          =  67,
-
-    D3DFMT_UYVY                 =  MAKEFOURCC('U', 'Y', 'V', 'Y'),
-    D3DFMT_YUY2                 =  MAKEFOURCC('Y', 'U', 'Y', '2'),
-    D3DFMT_DXT1                 =  MAKEFOURCC('D', 'X', 'T', '1'),
-    D3DFMT_DXT2                 =  MAKEFOURCC('D', 'X', 'T', '2'),
-    D3DFMT_DXT3                 =  MAKEFOURCC('D', 'X', 'T', '3'),
-    D3DFMT_DXT4                 =  MAKEFOURCC('D', 'X', 'T', '4'),
-    D3DFMT_DXT5                 =  MAKEFOURCC('D', 'X', 'T', '5'),
-    D3DFMT_MULTI2_ARGB8         =  MAKEFOURCC('M', 'E', 'T', '1'),
-    D3DFMT_G8R8_G8B8            =  MAKEFOURCC('G', 'R', 'G', 'B'),
-    D3DFMT_R8G8_B8G8            =  MAKEFOURCC('R', 'G', 'B', 'G'),
-
-    D3DFMT_D16_LOCKABLE         =  70,
-    D3DFMT_D32                  =  71,
-    D3DFMT_D15S1                =  73,
-    D3DFMT_D24S8                =  75,
-    D3DFMT_D24X8                =  77,
-    D3DFMT_D24X4S4              =  79,
-    D3DFMT_D16                  =  80,
-    D3DFMT_L16                  =  81,
-    D3DFMT_D32F_LOCKABLE        =  82,
-    D3DFMT_D24FS8               =  83,
-
-    D3DFMT_VERTEXDATA           = 100,
-    D3DFMT_INDEX16              = 101,
-    D3DFMT_INDEX32              = 102,
-    D3DFMT_Q16W16V16U16         = 110,
-    /* Floating point formats */
-    D3DFMT_R16F                 = 111,
-    D3DFMT_G16R16F              = 112,
-    D3DFMT_A16B16G16R16F        = 113,
-    
-    /* IEEE formats */
-    D3DFMT_R32F                 = 114,
-    D3DFMT_G32R32F              = 115,
-    D3DFMT_A32B32G32R32F        = 116,
-    
-    D3DFMT_CxV8U8               = 117,
-
-
-    D3DFMT_FORCE_DWORD          = 0xFFFFFFFF
-} D3DFORMAT;
-
-typedef enum _D3DLIGHTTYPE {
-    D3DLIGHT_POINT          = 1,
-    D3DLIGHT_SPOT           = 2,
-    D3DLIGHT_DIRECTIONAL    = 3,
-
-    D3DLIGHT_FORCE_DWORD    = 0x7fffffff
-} D3DLIGHTTYPE;
-
-typedef enum _D3DMATERIALCOLORSOURCE {
-    D3DMCS_MATERIAL         = 0,
-    D3DMCS_COLOR1           = 1,
-    D3DMCS_COLOR2           = 2,
-
-    D3DMCS_FORCE_DWORD      = 0x7fffffff
-} D3DMATERIALCOLORSOURCE;
-
-typedef enum _D3DMULTISAMPLE_TYPE {
-    D3DMULTISAMPLE_NONE            =  0,
-    D3DMULTISAMPLE_NONMASKABLE     =  1,
-    D3DMULTISAMPLE_2_SAMPLES       =  2,
-    D3DMULTISAMPLE_3_SAMPLES       =  3,
-    D3DMULTISAMPLE_4_SAMPLES       =  4,
-    D3DMULTISAMPLE_5_SAMPLES       =  5,
-    D3DMULTISAMPLE_6_SAMPLES       =  6,
-    D3DMULTISAMPLE_7_SAMPLES       =  7,
-    D3DMULTISAMPLE_8_SAMPLES       =  8,
-    D3DMULTISAMPLE_9_SAMPLES       =  9,
-    D3DMULTISAMPLE_10_SAMPLES      = 10,
-    D3DMULTISAMPLE_11_SAMPLES      = 11,
-    D3DMULTISAMPLE_12_SAMPLES      = 12,
-    D3DMULTISAMPLE_13_SAMPLES      = 13,
-    D3DMULTISAMPLE_14_SAMPLES      = 14,
-    D3DMULTISAMPLE_15_SAMPLES      = 15,
-    D3DMULTISAMPLE_16_SAMPLES      = 16,
-
-    D3DMULTISAMPLE_FORCE_DWORD     = 0x7fffffff
-} D3DMULTISAMPLE_TYPE;
-
-#if 0
-typedef enum _D3DORDERTYPE {
-   D3DORDER_LINEAR      = 1,
-   D3DORDER_QUADRATIC   = 2,
-   D3DORDER_CUBIC       = 3,
-   D3DORDER_QUINTIC     = 5,
-
-   D3DORDER_FORCE_DWORD = 0x7fffffff
-} D3DORDERTYPE;
-#endif
-typedef enum _D3DPATCHEDGESTYLE {
-   D3DPATCHEDGE_DISCRETE    = 0,
-   D3DPATCHEDGE_CONTINUOUS  = 1,
-
-   D3DPATCHEDGE_FORCE_DWORD = 0x7fffffff,
-} D3DPATCHEDGESTYLE;
-
-typedef enum _D3DPOOL {
-    D3DPOOL_DEFAULT                 = 0,
-    D3DPOOL_MANAGED                 = 1,
-    D3DPOOL_SYSTEMMEM               = 2,
-    D3DPOOL_SCRATCH                 = 3,
-
-    D3DPOOL_FORCE_DWORD             = 0x7fffffff
-} D3DPOOL;
-
-typedef enum _D3DPRIMITIVETYPE {
-    D3DPT_POINTLIST             = 1,
-    D3DPT_LINELIST              = 2,
-    D3DPT_LINESTRIP             = 3,
-    D3DPT_TRIANGLELIST          = 4,
-    D3DPT_TRIANGLESTRIP         = 5,
-    D3DPT_TRIANGLEFAN           = 6,
-
-    D3DPT_FORCE_DWORD           = 0x7fffffff
-} D3DPRIMITIVETYPE;
-
-typedef enum _D3DRENDERSTATETYPE {
-    D3DRS_ZENABLE                   =   7,
-    D3DRS_FILLMODE                  =   8,
-    D3DRS_SHADEMODE                 =   9,
-    D3DRS_ZWRITEENABLE              =  14,
-    D3DRS_ALPHATESTENABLE           =  15,
-    D3DRS_LASTPIXEL                 =  16,
-    D3DRS_SRCBLEND                  =  19,
-    D3DRS_DESTBLEND                 =  20,
-    D3DRS_CULLMODE                  =  22,
-    D3DRS_ZFUNC                     =  23,
-    D3DRS_ALPHAREF                  =  24,
-    D3DRS_ALPHAFUNC                 =  25,
-    D3DRS_DITHERENABLE              =  26,
-    D3DRS_ALPHABLENDENABLE          =  27,
-    D3DRS_FOGENABLE                 =  28,
-    D3DRS_SPECULARENABLE            =  29,
-    D3DRS_FOGCOLOR                  =  34,
-    D3DRS_FOGTABLEMODE              =  35,
-    D3DRS_FOGSTART                  =  36,
-    D3DRS_FOGEND                    =  37,
-    D3DRS_FOGDENSITY                =  38,
-    D3DRS_RANGEFOGENABLE            =  48,
-    D3DRS_STENCILENABLE             =  52,
-    D3DRS_STENCILFAIL               =  53,
-    D3DRS_STENCILZFAIL              =  54,
-    D3DRS_STENCILPASS               =  55,
-    D3DRS_STENCILFUNC               =  56,
-    D3DRS_STENCILREF                =  57,
-    D3DRS_STENCILMASK               =  58,
-    D3DRS_STENCILWRITEMASK          =  59,
-    D3DRS_TEXTUREFACTOR             =  60,
-    D3DRS_WRAP0                     = 128,
-    D3DRS_WRAP1                     = 129,
-    D3DRS_WRAP2                     = 130,
-    D3DRS_WRAP3                     = 131,
-    D3DRS_WRAP4                     = 132,
-    D3DRS_WRAP5                     = 133,
-    D3DRS_WRAP6                     = 134,
-    D3DRS_WRAP7                     = 135,
-    D3DRS_CLIPPING                  = 136,
-    D3DRS_LIGHTING                  = 137,
-    D3DRS_AMBIENT                   = 139,
-    D3DRS_FOGVERTEXMODE             = 140,
-    D3DRS_COLORVERTEX               = 141,
-    D3DRS_LOCALVIEWER               = 142,
-    D3DRS_NORMALIZENORMALS          = 143,
-    D3DRS_DIFFUSEMATERIALSOURCE     = 145,
-    D3DRS_SPECULARMATERIALSOURCE    = 146,
-    D3DRS_AMBIENTMATERIALSOURCE     = 147,
-    D3DRS_EMISSIVEMATERIALSOURCE    = 148,
-    D3DRS_VERTEXBLEND               = 151,
-    D3DRS_CLIPPLANEENABLE           = 152,
-    D3DRS_POINTSIZE                 = 154,
-    D3DRS_POINTSIZE_MIN             = 155,
-    D3DRS_POINTSPRITEENABLE         = 156,
-    D3DRS_POINTSCALEENABLE          = 157,
-    D3DRS_POINTSCALE_A              = 158,
-    D3DRS_POINTSCALE_B              = 159,
-    D3DRS_POINTSCALE_C              = 160,
-    D3DRS_MULTISAMPLEANTIALIAS      = 161,
-    D3DRS_MULTISAMPLEMASK           = 162,
-    D3DRS_PATCHEDGESTYLE            = 163,
-    D3DRS_DEBUGMONITORTOKEN         = 165,
-    D3DRS_POINTSIZE_MAX             = 166,
-    D3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
-    D3DRS_COLORWRITEENABLE          = 168,
-    D3DRS_TWEENFACTOR               = 170,
-    D3DRS_BLENDOP                   = 171,
-    D3DRS_POSITIONDEGREE            = 172,
-    D3DRS_NORMALDEGREE              = 173,
-    D3DRS_SCISSORTESTENABLE         = 174,
-    D3DRS_SLOPESCALEDEPTHBIAS       = 175,
-    D3DRS_ANTIALIASEDLINEENABLE     = 176,
-    D3DRS_MINTESSELLATIONLEVEL      = 178,
-    D3DRS_MAXTESSELLATIONLEVEL      = 179,
-    D3DRS_ADAPTIVETESS_X            = 180,
-    D3DRS_ADAPTIVETESS_Y            = 181,
-    D3DRS_ADAPTIVETESS_Z            = 182,
-    D3DRS_ADAPTIVETESS_W            = 183,
-    D3DRS_ENABLEADAPTIVETESSELLATION= 184,
-    D3DRS_TWOSIDEDSTENCILMODE       = 185,
-    D3DRS_CCW_STENCILFAIL           = 186,
-    D3DRS_CCW_STENCILZFAIL          = 187,
-    D3DRS_CCW_STENCILPASS           = 188,
-    D3DRS_CCW_STENCILFUNC           = 189,
-    D3DRS_COLORWRITEENABLE1         = 190,
-    D3DRS_COLORWRITEENABLE2         = 191,
-    D3DRS_COLORWRITEENABLE3         = 192,
-    D3DRS_BLENDFACTOR               = 193,
-    D3DRS_SRGBWRITEENABLE           = 194,
-    D3DRS_DEPTHBIAS                 = 195,
-    D3DRS_WRAP8                     = 198,
-    D3DRS_WRAP9                     = 199,
-    D3DRS_WRAP10                    = 200,
-    D3DRS_WRAP11                    = 201,
-    D3DRS_WRAP12                    = 202,
-    D3DRS_WRAP13                    = 203,
-    D3DRS_WRAP14                    = 204,
-    D3DRS_WRAP15                    = 205,
-    D3DRS_SEPARATEALPHABLENDENABLE  = 206,
-    D3DRS_SRCBLENDALPHA             = 207,
-    D3DRS_DESTBLENDALPHA            = 208,
-    D3DRS_BLENDOPALPHA              = 209,
-
-    D3DRS_FORCE_DWORD               = 0x7fffffff
-} D3DRENDERSTATETYPE;
-
-typedef enum _D3DRESOURCETYPE {
-    D3DRTYPE_SURFACE                =  1,
-    D3DRTYPE_VOLUME                 =  2,
-    D3DRTYPE_TEXTURE                =  3,
-    D3DRTYPE_VOLUMETEXTURE          =  4,
-    D3DRTYPE_CUBETEXTURE            =  5,
-    D3DRTYPE_VERTEXBUFFER           =  6,
-    D3DRTYPE_INDEXBUFFER            =  7,
-
-    D3DRTYPE_FORCE_DWORD            = 0x7fffffff
-} D3DRESOURCETYPE;
-
-#define D3DRTYPECOUNT (D3DRTYPE_INDEXBUFFER+1)
-
-typedef enum _D3DSHADEMODE {
-    D3DSHADE_FLAT               = 1,
-    D3DSHADE_GOURAUD            = 2,
-    D3DSHADE_PHONG              = 3,
-
-    D3DSHADE_FORCE_DWORD        = 0x7fffffff
-} D3DSHADEMODE;
-
-typedef enum _D3DSTATEBLOCKTYPE {
-    D3DSBT_ALL           = 1,
-    D3DSBT_PIXELSTATE    = 2,
-    D3DSBT_VERTEXSTATE   = 3,
-
-    D3DSBT_FORCE_DWORD   = 0xffffffff
-} D3DSTATEBLOCKTYPE;
-
-typedef enum _D3DSTENCILOP {
-    D3DSTENCILOP_KEEP           = 1,
-    D3DSTENCILOP_ZERO           = 2,
-    D3DSTENCILOP_REPLACE        = 3,
-    D3DSTENCILOP_INCRSAT        = 4,
-    D3DSTENCILOP_DECRSAT        = 5,
-    D3DSTENCILOP_INVERT         = 6,
-    D3DSTENCILOP_INCR           = 7,
-    D3DSTENCILOP_DECR           = 8,
-
-    D3DSTENCILOP_FORCE_DWORD    = 0x7fffffff
-} D3DSTENCILOP;
-
-typedef enum _D3DSWAPEFFECT {
-    D3DSWAPEFFECT_DISCARD         = 1,
-    D3DSWAPEFFECT_FLIP            = 2,
-    D3DSWAPEFFECT_COPY            = 3,
-    D3DSWAPEFFECT_FORCE_DWORD     = 0xFFFFFFFF
-} D3DSWAPEFFECT;
-
-typedef enum _D3DTEXTUREADDRESS {
-    D3DTADDRESS_WRAP            = 1,
-    D3DTADDRESS_MIRROR          = 2,
-    D3DTADDRESS_CLAMP           = 3,
-    D3DTADDRESS_BORDER          = 4,
-    D3DTADDRESS_MIRRORONCE      = 5,
-
-    D3DTADDRESS_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTUREADDRESS;
-
-typedef enum _D3DTEXTUREFILTERTYPE {
-    D3DTEXF_NONE            = 0,
-    D3DTEXF_POINT           = 1,
-    D3DTEXF_LINEAR          = 2,
-    D3DTEXF_ANISOTROPIC     = 3,
-    D3DTEXF_FLATCUBIC       = 4,
-    D3DTEXF_GAUSSIANCUBIC   = 5,
-    D3DTEXF_PYRAMIDALQUAD   = 6,
-    D3DTEXF_GAUSSIANQUAD    = 7,
-    D3DTEXF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTUREFILTERTYPE;
-
-typedef enum _D3DTEXTUREOP {
-    D3DTOP_DISABLE                   =  1,
-    D3DTOP_SELECTARG1                =  2,
-    D3DTOP_SELECTARG2                =  3,
-    D3DTOP_MODULATE                  =  4,
-    D3DTOP_MODULATE2X                =  5,
-    D3DTOP_MODULATE4X                =  6,
-    D3DTOP_ADD                       =  7,
-    D3DTOP_ADDSIGNED                 =  8,
-    D3DTOP_ADDSIGNED2X               =  9,
-    D3DTOP_SUBTRACT                  = 10,
-    D3DTOP_ADDSMOOTH                 = 11,
-    D3DTOP_BLENDDIFFUSEALPHA         = 12,
-    D3DTOP_BLENDTEXTUREALPHA         = 13,
-    D3DTOP_BLENDFACTORALPHA          = 14,
-    D3DTOP_BLENDTEXTUREALPHAPM       = 15,
-    D3DTOP_BLENDCURRENTALPHA         = 16,
-    D3DTOP_PREMODULATE               = 17,
-    D3DTOP_MODULATEALPHA_ADDCOLOR    = 18,
-    D3DTOP_MODULATECOLOR_ADDALPHA    = 19,
-    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
-    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
-    D3DTOP_BUMPENVMAP                = 22,
-    D3DTOP_BUMPENVMAPLUMINANCE       = 23,
-    D3DTOP_DOTPRODUCT3               = 24,
-    D3DTOP_MULTIPLYADD               = 25,
-    D3DTOP_LERP                      = 26,
-
-    D3DTOP_FORCE_DWORD               = 0x7fffffff,
-} D3DTEXTUREOP;
-
-typedef enum _D3DTEXTURESTAGESTATETYPE {
-    D3DTSS_COLOROP               =  1,
-    D3DTSS_COLORARG1             =  2,
-    D3DTSS_COLORARG2             =  3,
-    D3DTSS_ALPHAOP               =  4,
-    D3DTSS_ALPHAARG1             =  5,
-    D3DTSS_ALPHAARG2             =  6,
-    D3DTSS_BUMPENVMAT00          =  7,
-    D3DTSS_BUMPENVMAT01          =  8,
-    D3DTSS_BUMPENVMAT10          =  9,
-    D3DTSS_BUMPENVMAT11          = 10,
-    D3DTSS_TEXCOORDINDEX         = 11,
-    D3DTSS_BUMPENVLSCALE         = 22,
-    D3DTSS_BUMPENVLOFFSET        = 23,
-    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
-    D3DTSS_COLORARG0             = 26,
-    D3DTSS_ALPHAARG0             = 27,
-    D3DTSS_RESULTARG             = 28,
-    D3DTSS_CONSTANT              = 32,
-
-    D3DTSS_FORCE_DWORD           = 0x7fffffff
-} D3DTEXTURESTAGESTATETYPE;
-
-typedef enum _D3DTEXTURETRANSFORMFLAGS {
-    D3DTTFF_DISABLE         =   0,
-    D3DTTFF_COUNT1          =   1,
-    D3DTTFF_COUNT2          =   2,
-    D3DTTFF_COUNT3          =   3,
-    D3DTTFF_COUNT4          =   4,
-    D3DTTFF_PROJECTED       = 256,
-
-    D3DTTFF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTURETRANSFORMFLAGS;
-
-typedef enum _D3DTRANSFORMSTATETYPE {
-    D3DTS_VIEW            =  2,
-    D3DTS_PROJECTION      =  3,
-    D3DTS_TEXTURE0        = 16,
-    D3DTS_TEXTURE1        = 17,
-    D3DTS_TEXTURE2        = 18,
-    D3DTS_TEXTURE3        = 19,
-    D3DTS_TEXTURE4        = 20,
-    D3DTS_TEXTURE5        = 21,
-    D3DTS_TEXTURE6        = 22,
-    D3DTS_TEXTURE7        = 23,
-
-    D3DTS_FORCE_DWORD     = 0x7fffffff
-} D3DTRANSFORMSTATETYPE;
-
-typedef enum _D3DVERTEXBLENDFLAGS {
-    D3DVBF_DISABLE  =   0,
-    D3DVBF_1WEIGHTS =   1,
-    D3DVBF_2WEIGHTS =   2,
-    D3DVBF_3WEIGHTS =   3,
-    D3DVBF_TWEENING = 255,
-    D3DVBF_0WEIGHTS = 256
-} D3DVERTEXBLENDFLAGS;
-
-typedef enum _D3DZBUFFERTYPE {
-    D3DZB_FALSE                 = 0,
-    D3DZB_TRUE                  = 1,
-    D3DZB_USEW                  = 2,
-
-    D3DZB_FORCE_DWORD           = 0x7fffffff
-} D3DZBUFFERTYPE;
-
-typedef enum _D3DSAMPLERSTATETYPE {
-    D3DSAMP_ADDRESSU       = 1,
-    D3DSAMP_ADDRESSV       = 2,
-    D3DSAMP_ADDRESSW       = 3,
-    D3DSAMP_BORDERCOLOR    = 4,
-    D3DSAMP_MAGFILTER      = 5,
-    D3DSAMP_MINFILTER      = 6,
-    D3DSAMP_MIPFILTER      = 7,
-    D3DSAMP_MIPMAPLODBIAS  = 8,
-    D3DSAMP_MAXMIPLEVEL    = 9,
-    D3DSAMP_MAXANISOTROPY  = 10,
-    D3DSAMP_SRGBTEXTURE    = 11,
-    D3DSAMP_ELEMENTINDEX   = 12,
-    D3DSAMP_DMAPOFFSET     = 13,
-                                
-    D3DSAMP_FORCE_DWORD   = 0x7fffffff,
-} D3DSAMPLERSTATETYPE;
-
-
-/*****************************************************************************
- * Direct 3D v9 typedefs
- */
-#ifndef D3DCOLOR_DEFINED
-typedef DWORD D3DCOLOR;
-#define D3DCOLOR_DEFINED
-#endif
-
-/*****************************************************************************
- * Direct 3D v9 structures
- */
-typedef struct _D3DADAPTER_IDENTIFIER9 {
-    char            Driver[MAX_DEVICE_IDENTIFIER_STRING];
-    char            Description[MAX_DEVICE_IDENTIFIER_STRING];
-    char            DeviceName[32];
-    LARGE_INTEGER   DriverVersion; 
-
-    DWORD           VendorId;
-    DWORD           DeviceId;
-    DWORD           SubSysId;
-    DWORD           Revision;
-
-    GUID            DeviceIdentifier;
-
-    DWORD           WHQLLevel;
-} D3DADAPTER_IDENTIFIER9;
-
-typedef struct _D3DBOX {
-    UINT                Left;
-    UINT                Top;
-    UINT                Right;
-    UINT                Bottom;
-    UINT                Front;
-    UINT                Back;
-} D3DBOX;
-
-typedef struct _D3DCLIPSTATUS9 {
-   DWORD ClipUnion;
-   DWORD ClipIntersection;
-} D3DCLIPSTATUS9;
-
-#ifndef D3DCOLORVALUE_DEFINED
-typedef struct _D3DCOLORVALUE {
-    float r;
-    float g;
-    float b;
-    float a;
-} D3DCOLORVALUE;
-#define D3DCOLORVALUE_DEFINED
-#endif
-
-typedef struct _D3DDEVICE_CREATION_PARAMETERS {
-    UINT          AdapterOrdinal;
-    D3DDEVTYPE    DeviceType;
-    HWND          hFocusWindow;
-    DWORD         BehaviorFlags;
-} D3DDEVICE_CREATION_PARAMETERS;
-
-typedef struct _D3DDEVINFO_D3D9BANDWIDTHTIMINGS {
-    float         MaxBandwidthUtilized;
-    float         FrontEndUploadMemoryUtilizedPercent;
-    float         VertexRateUtilizedPercent;
-    float         TriangleSetupRateUtilizedPercent;
-    float         FillRateUtilizedPercent;
-} D3DDEVINFO_D3D9BANDWIDTHTIMINGS;
-
-typedef struct _D3DDEVINFO_D3D9CACHEUTILIZATION {
-    float         TextureCacheHitRate;
-    float         PostTransformVertexCacheHitRate;
-} D3DDEVINFO_D3D9CACHEUTILIZATION;
-
-typedef struct _D3DDEVINFO_D3D9INTERFACETIMINGS {
-    float         WaitingForGPUToUseApplicationResourceTimePercent;
-    float         WaitingForGPUToAcceptMoreCommandsTimePercent;
-    float         WaitingForGPUToStayWithinLatencyTimePercent;
-    float         WaitingForGPUExclusiveResourceTimePercent;
-    float         WaitingForGPUOtherTimePercent;
-} D3DDEVINFO_D3D9INTERFACETIMINGS;
-
-typedef struct _D3DDEVINFO_D3D9PIPELINETIMINGS {
-    float         VertexProcessingTimePercent;
-    float         PixelProcessingTimePercent;
-    float         OtherGPUProcessingTimePercent;
-    float         GPUIdleTimePercent;
-} D3DDEVINFO_D3D9PIPELINETIMINGS;
-
-typedef struct _D3DDEVINFO_D3D9STAGETIMINGS {
-    float         MemoryProcessingPercent;
-    float         ComputationProcessingPercent;
-} D3DDEVINFO_D3D9STAGETIMINGS;
-
-
-/* Vertex cache optimization hints. */
-typedef struct D3DDEVINFO_VCACHE {
-    /* Must be a 4 char code FOURCC (e.g. CACH) */
-    DWORD         Pattern; 
-    /* 0 to get the longest  strips, 1 vertex cache */
-    DWORD         OptMethod; 
-     /* Cache size to use (only valid if OptMethod==1) */
-    DWORD         CacheSize;
-    /* internal for deciding when to restart strips, non user modifyable (only valid if OptMethod==1) */
-    DWORD         MagicNumber; 
-} D3DDEVINFO_VCACHE;
-
-typedef struct D3DRESOURCESTATS {
-    BOOL                bThrashing;
-    DWORD               ApproxBytesDownloaded;
-    DWORD               NumEvicts;
-    DWORD               NumVidCreates;
-    DWORD               LastPri;
-    DWORD               NumUsed;
-    DWORD               NumUsedInVidMem;
-    DWORD               WorkingSet;
-    DWORD               WorkingSetBytes;
-    DWORD               TotalManaged;
-    DWORD               TotalBytes;
-} D3DRESOURCESTATS;
-
-typedef struct _D3DDEVINFO_D3DRESOURCEMANAGER {
-    D3DRESOURCESTATS stats[D3DRTYPECOUNT];
-} D3DDEVINFO_D3DRESOURCEMANAGER;
-
-typedef struct _D3DDEVINFO_D3DVERTEXSTATS {
-    DWORD NumRenderedTriangles;
-    DWORD NumExtraClippingTriangles;
-} D3DDEVINFO_D3DVERTEXSTATS;
-
-typedef struct _D3DDISPLAYMODE {
-    UINT            Width;
-    UINT            Height;
-    UINT            RefreshRate;
-    D3DFORMAT       Format;
-} D3DDISPLAYMODE;
-
-typedef struct _D3DGAMMARAMP {
-    WORD                red  [256];
-    WORD                green[256];
-    WORD                blue [256];
-} D3DGAMMARAMP;
-
-typedef struct _D3DINDEXBUFFER_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-} D3DINDEXBUFFER_DESC;
-
-#ifndef D3DVECTOR_DEFINED
-typedef struct _D3DVECTOR {
-    float x;
-    float y;
-    float z;
-} D3DVECTOR;
-#define D3DVECTOR_DEFINED
-#endif
-
-typedef struct _D3DLIGHT9 {
-    D3DLIGHTTYPE    Type;
-    D3DCOLORVALUE   Diffuse;
-    D3DCOLORVALUE   Specular;
-    D3DCOLORVALUE   Ambient;
-    D3DVECTOR       Position;
-    D3DVECTOR       Direction;
-    float           Range;
-    float           Falloff;
-    float           Attenuation0;
-    float           Attenuation1;
-    float           Attenuation2;
-    float           Theta;
-    float           Phi;
-} D3DLIGHT9;
-
-typedef struct _D3DLINEPATTERN {
-    WORD    wRepeatFactor;
-    WORD    wLinePattern;
-} D3DLINEPATTERN;
-
-typedef struct _D3DLOCKED_BOX {
-    INT                 RowPitch;
-    INT                 SlicePitch;
-    void*               pBits;
-} D3DLOCKED_BOX;
-
-typedef struct _D3DLOCKED_RECT {
-    INT                 Pitch;
-    void*               pBits;
-} D3DLOCKED_RECT;
-
-typedef struct _D3DMATERIAL9 {
-    D3DCOLORVALUE   Diffuse;
-    D3DCOLORVALUE   Ambient;
-    D3DCOLORVALUE   Specular;
-    D3DCOLORVALUE   Emissive;
-    float           Power;
-} D3DMATERIAL9;
-
-#ifndef D3DMATRIX_DEFINED
-typedef struct _D3DMATRIX {
-    union {
-        struct {
-            float        _11, _12, _13, _14;
-            float        _21, _22, _23, _24;
-            float        _31, _32, _33, _34;
-            float        _41, _42, _43, _44;
-        } DUMMYSTRUCTNAME;
-        float m[4][4];
-    } DUMMYUNIONNAME;
-} D3DMATRIX;
-#define D3DMATRIX_DEFINED
-#endif
-
-typedef struct _D3DPRESENT_PARAMETERS_ {
-    UINT                    BackBufferWidth;
-    UINT                    BackBufferHeight;
-    D3DFORMAT               BackBufferFormat;
-    UINT                    BackBufferCount;
-
-    D3DMULTISAMPLE_TYPE     MultiSampleType;
-    DWORD                   MultiSampleQuality;
-
-    D3DSWAPEFFECT           SwapEffect;
-    HWND                    hDeviceWindow;
-    BOOL                    Windowed;
-    BOOL                    EnableAutoDepthStencil;
-    D3DFORMAT               AutoDepthStencilFormat;
-    DWORD                   Flags;
-
-    UINT                    FullScreen_RefreshRateInHz;
-    UINT                    PresentationInterval;
-
-} D3DPRESENT_PARAMETERS;
-
-typedef struct _D3DRANGE {
-    UINT                Offset;
-    UINT                Size;
-} D3DRANGE;
-
-typedef struct _D3DRASTER_STATUS {
-    BOOL            InVBlank;
-    UINT            ScanLine;
-} D3DRASTER_STATUS;
-
-#ifndef D3DRECT_DEFINED
-typedef struct _D3DRECT {
-    LONG x1;
-    LONG y1;
-    LONG x2;
-    LONG y2;
-} D3DRECT;
-#define D3DRECT_DEFINED
-#endif
-
-typedef struct _D3DRECTPATCH_INFO {
-    UINT                StartVertexOffsetWidth;
-    UINT                StartVertexOffsetHeight;
-    UINT                Width;
-    UINT                Height;
-    UINT                Stride;
-    D3DBASISTYPE        Basis;
-    D3DDEGREETYPE       Degree;
-} D3DRECTPATCH_INFO;
-
-typedef struct _D3DSURFACE_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    D3DMULTISAMPLE_TYPE MultiSampleType;
-    DWORD               MultiSampleQuality;
-    UINT                Width;
-    UINT                Height;
-} D3DSURFACE_DESC;
-
-typedef struct _D3DTRIPATCH_INFO {
-    UINT                StartVertexOffset;
-    UINT                NumVertices;
-    D3DBASISTYPE        Basis;
-    D3DDEGREETYPE       Degree;
-} D3DTRIPATCH_INFO;
-
-typedef struct _D3DVERTEXBUFFER_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-    UINT                Size;
-    DWORD               FVF;
-} D3DVERTEXBUFFER_DESC;
-
-typedef struct _D3DVIEWPORT9 {
-    DWORD       X;
-    DWORD       Y;
-    DWORD       Width;
-    DWORD       Height;
-    float       MinZ;
-    float       MaxZ;
-} D3DVIEWPORT9;
-
-typedef struct _D3DVOLUME_DESC {
-    D3DFORMAT           Format;
-    D3DRESOURCETYPE     Type;
-    DWORD               Usage;
-    D3DPOOL             Pool;
-
-    UINT                Width;
-    UINT                Height;
-    UINT                Depth;
-} D3DVOLUME_DESC;
-
-/* Parts added with d3d9ex */
-#if !defined(D3D_DISABLE_9EX)
-typedef enum D3DSCANLINEORDERING
-{
-    D3DSCANLINEORDERING_UNKNOWN,
-    D3DSCANLINEORDERING_PROGRESSIVE,
-    D3DSCANLINEORDERING_INTERLACED,
-} D3DSCANLINEORDERING;
-
-
-typedef struct D3DDISPLAYMODEFILTER
-{
-    UINT                Size;
-    D3DFORMAT           Format;
-    D3DSCANLINEORDERING ScanLineOrdering;
-} D3DDISPLAYMODEFILTER;
-
-typedef struct D3DDISPLAYMODEEX
-{
-    UINT                Size;
-    UINT                Width;
-    UINT                Height;
-    UINT                RefreshRate;
-    D3DFORMAT           Format;
-    D3DSCANLINEORDERING ScanLineOrdering;
-} D3DDISPLAYMODEEX;
-
-typedef enum D3DDISPLAYROTATION
-{
-    D3DDISPLAYROTATION_IDENTITY = 1,
-    D3DDISPLAYROTATION_90,
-    D3DDISPLAYROTATION_180,
-    D3DDISPLAYROTATION_270
-} D3DDISPLAYROTATION;
-
-typedef enum _D3DCOMPOSERECTSOP{
-    D3DCOMPOSERECTS_COPY        = 1,
-    D3DCOMPOSERECTS_OR,
-    D3DCOMPOSERECTS_AND,
-    D3DCOMPOSERECTS_NEG,
-    D3DCOMPOSERECTS_FORCE_DWORD = 0x7fffffff
-} D3DCOMPOSERECTSOP;
-#endif /* D3D_DISABLE_9EX */
-
-typedef enum _D3DSHADER_COMPARISON
-{
-    D3DSPC_RESERVED0 = 0,
-    D3DSPC_GT,
-    D3DSPC_EQ,
-    D3DSPC_GE,
-    D3DSPC_LT,
-    D3DSPC_NE,
-    D3DSPC_LE,
-    D3DSPC_RESERVED1,
-} D3DSHADER_COMPARISON;
-
-#endif /* __WINE_D3D9TYPES_H */
diff --git a/misc/builddeps/win64/dx/include/d3dcaps.h b/misc/builddeps/win64/dx/include/d3dcaps.h
deleted file mode 100644 (file)
index b44c49d..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * Copyright (C) 2000 Peter Hunnisett
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3DCAPS_H
-#define __WINE_D3DCAPS_H
-
-#include <ddraw.h>
-
-typedef struct _D3DTRANSFORMCAPS {
-       DWORD dwSize;
-       DWORD dwCaps;
-} D3DTRANSFORMCAPS, *LPD3DTRANSFORMCAPS;
-
-#define D3DTRANSFORMCAPS_CLIP           0x00000001L
-
-typedef struct _D3DLIGHTINGCAPS {
-       DWORD dwSize;
-       DWORD dwCaps;
-       DWORD dwLightingModel;
-       DWORD dwNumLights;
-} D3DLIGHTINGCAPS, *LPD3DLIGHTINGCAPS;
-
-#define D3DLIGHTINGMODEL_RGB            0x00000001
-#define D3DLIGHTINGMODEL_MONO           0x00000002
-
-#define D3DLIGHTCAPS_POINT              0x00000001
-#define D3DLIGHTCAPS_SPOT               0x00000002
-#define D3DLIGHTCAPS_DIRECTIONAL        0x00000004
-#define D3DLIGHTCAPS_PARALLELPOINT      0x00000008
-#define D3DLIGHTCAPS_GLSPOT             0x00000010
-
-typedef struct _D3dPrimCaps {
-    DWORD dwSize;
-    DWORD dwMiscCaps;
-    DWORD dwRasterCaps;
-    DWORD dwZCmpCaps;
-    DWORD dwSrcBlendCaps;
-    DWORD dwDestBlendCaps;
-    DWORD dwAlphaCmpCaps;
-    DWORD dwShadeCaps;
-    DWORD dwTextureCaps;
-    DWORD dwTextureFilterCaps;
-    DWORD dwTextureBlendCaps;
-    DWORD dwTextureAddressCaps;
-    DWORD dwStippleWidth;
-    DWORD dwStippleHeight;
-} D3DPRIMCAPS, *LPD3DPRIMCAPS;
-
-#define D3DPMISCCAPS_MASKPLANES         0x00000001
-#define D3DPMISCCAPS_MASKZ              0x00000002
-#define D3DPMISCCAPS_LINEPATTERNREP     0x00000004
-#define D3DPMISCCAPS_CONFORMANT         0x00000008
-#define D3DPMISCCAPS_CULLNONE           0x00000010
-#define D3DPMISCCAPS_CULLCW             0x00000020
-#define D3DPMISCCAPS_CULLCCW            0x00000040
-
-#define D3DPRASTERCAPS_DITHER                     0x00000001
-#define D3DPRASTERCAPS_ROP2                       0x00000002
-#define D3DPRASTERCAPS_XOR                        0x00000004
-#define D3DPRASTERCAPS_PAT                        0x00000008
-#define D3DPRASTERCAPS_ZTEST                      0x00000010
-#define D3DPRASTERCAPS_SUBPIXEL                   0x00000020
-#define D3DPRASTERCAPS_SUBPIXELX                  0x00000040
-#define D3DPRASTERCAPS_FOGVERTEX                  0x00000080
-#define D3DPRASTERCAPS_FOGTABLE                   0x00000100
-#define D3DPRASTERCAPS_STIPPLE                    0x00000200
-#define D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT     0x00000400
-#define D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT   0x00000800
-#define D3DPRASTERCAPS_ANTIALIASEDGES             0x00001000
-#define D3DPRASTERCAPS_MIPMAPLODBIAS              0x00002000
-#define D3DPRASTERCAPS_ZBIAS                      0x00004000
-#define D3DPRASTERCAPS_ZBUFFERLESSHSR             0x00008000
-#define D3DPRASTERCAPS_FOGRANGE                   0x00010000
-#define D3DPRASTERCAPS_ANISOTROPY                 0x00020000
-#define D3DPRASTERCAPS_WBUFFER                    0x00040000
-#define D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT 0x00080000
-#define D3DPRASTERCAPS_WFOG                       0x00100000
-#define D3DPRASTERCAPS_ZFOG                       0x00200000
-
-#define D3DPCMPCAPS_NEVER               0x00000001
-#define D3DPCMPCAPS_LESS                0x00000002
-#define D3DPCMPCAPS_EQUAL               0x00000004
-#define D3DPCMPCAPS_LESSEQUAL           0x00000008
-#define D3DPCMPCAPS_GREATER             0x00000010
-#define D3DPCMPCAPS_NOTEQUAL            0x00000020
-#define D3DPCMPCAPS_GREATEREQUAL        0x00000040
-#define D3DPCMPCAPS_ALWAYS              0x00000080
-
-#define D3DPBLENDCAPS_ZERO              0x00000001
-#define D3DPBLENDCAPS_ONE               0x00000002
-#define D3DPBLENDCAPS_SRCCOLOR          0x00000004
-#define D3DPBLENDCAPS_INVSRCCOLOR       0x00000008
-#define D3DPBLENDCAPS_SRCALPHA          0x00000010
-#define D3DPBLENDCAPS_INVSRCALPHA       0x00000020
-#define D3DPBLENDCAPS_DESTALPHA         0x00000040
-#define D3DPBLENDCAPS_INVDESTALPHA      0x00000080
-#define D3DPBLENDCAPS_DESTCOLOR         0x00000100
-#define D3DPBLENDCAPS_INVDESTCOLOR      0x00000200
-#define D3DPBLENDCAPS_SRCALPHASAT       0x00000400
-#define D3DPBLENDCAPS_BOTHSRCALPHA      0x00000800
-#define D3DPBLENDCAPS_BOTHINVSRCALPHA   0x00001000
-
-#define D3DPSHADECAPS_COLORFLATMONO     0x00000001
-#define D3DPSHADECAPS_COLORFLATRGB      0x00000002
-#define D3DPSHADECAPS_COLORGOURAUDMONO  0x00000004
-#define D3DPSHADECAPS_COLORGOURAUDRGB   0x00000008
-#define D3DPSHADECAPS_COLORPHONGMONO    0x00000010
-#define D3DPSHADECAPS_COLORPHONGRGB     0x00000020
-
-#define D3DPSHADECAPS_SPECULARFLATMONO    0x00000040
-#define D3DPSHADECAPS_SPECULARFLATRGB     0x00000080
-#define D3DPSHADECAPS_SPECULARGOURAUDMONO 0x00000100
-#define D3DPSHADECAPS_SPECULARGOURAUDRGB  0x00000200
-#define D3DPSHADECAPS_SPECULARPHONGMONO   0x00000400
-#define D3DPSHADECAPS_SPECULARPHONGRGB    0x00000800
-
-#define D3DPSHADECAPS_ALPHAFLATBLEND       0x00001000
-#define D3DPSHADECAPS_ALPHAFLATSTIPPLED    0x00002000
-#define D3DPSHADECAPS_ALPHAGOURAUDBLEND    0x00004000
-#define D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED 0x00008000
-#define D3DPSHADECAPS_ALPHAPHONGBLEND      0x00010000
-#define D3DPSHADECAPS_ALPHAPHONGSTIPPLED   0x00020000
-
-#define D3DPSHADECAPS_FOGFLAT           0x00040000
-#define D3DPSHADECAPS_FOGGOURAUD        0x00080000
-#define D3DPSHADECAPS_FOGPHONG          0x00100000
-
-#define D3DPTEXTURECAPS_PERSPECTIVE              0x00000001
-#define D3DPTEXTURECAPS_POW2                     0x00000002
-#define D3DPTEXTURECAPS_ALPHA                    0x00000004
-#define D3DPTEXTURECAPS_TRANSPARENCY             0x00000008
-#define D3DPTEXTURECAPS_BORDER                   0x00000010
-#define D3DPTEXTURECAPS_SQUAREONLY               0x00000020
-#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040
-#define D3DPTEXTURECAPS_ALPHAPALETTE             0x00000080
-#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL  0x00000100L
-/* yes actually 0x00000200 is unused - or at least unreleased */
-#define D3DPTEXTURECAPS_PROJECTED                0x00000400
-#define D3DPTEXTURECAPS_CUBEMAP                  0x00000800
-#define D3DPTEXTURECAPS_COLORKEYBLEND            0x00001000
-
-#define D3DPTFILTERCAPS_NEAREST           0x00000001
-#define D3DPTFILTERCAPS_LINEAR            0x00000002
-#define D3DPTFILTERCAPS_MIPNEAREST        0x00000004
-#define D3DPTFILTERCAPS_MIPLINEAR         0x00000008
-#define D3DPTFILTERCAPS_LINEARMIPNEAREST  0x00000010
-#define D3DPTFILTERCAPS_LINEARMIPLINEAR   0x00000020
-/* yes - missing numbers */
-#define D3DPTFILTERCAPS_MINFPOINT         0x00000100
-#define D3DPTFILTERCAPS_MINFLINEAR        0x00000200
-#define D3DPTFILTERCAPS_MINFANISOTROPIC   0x00000400
-/* yes - missing numbers */
-#define D3DPTFILTERCAPS_MIPFPOINT         0x00010000
-#define D3DPTFILTERCAPS_MIPFLINEAR        0x00020000
-/* yes - missing numbers */
-#define D3DPTFILTERCAPS_MAGFPOINT         0x01000000
-#define D3DPTFILTERCAPS_MAGFLINEAR        0x02000000
-#define D3DPTFILTERCAPS_MAGFANISOTROPIC   0x04000000
-#define D3DPTFILTERCAPS_MAGFAFLATCUBIC    0x08000000
-#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000
-
-#define D3DPTBLENDCAPS_DECAL            0x00000001
-#define D3DPTBLENDCAPS_MODULATE         0x00000002
-#define D3DPTBLENDCAPS_DECALALPHA       0x00000004
-#define D3DPTBLENDCAPS_MODULATEALPHA    0x00000008
-#define D3DPTBLENDCAPS_DECALMASK        0x00000010
-#define D3DPTBLENDCAPS_MODULATEMASK     0x00000020
-#define D3DPTBLENDCAPS_COPY             0x00000040
-#define D3DPTBLENDCAPS_ADD              0x00000080
-
-#define D3DPTADDRESSCAPS_WRAP           0x00000001
-#define D3DPTADDRESSCAPS_MIRROR         0x00000002
-#define D3DPTADDRESSCAPS_CLAMP          0x00000004
-#define D3DPTADDRESSCAPS_BORDER         0x00000008
-#define D3DPTADDRESSCAPS_INDEPENDENTUV  0x00000010
-
-
-typedef struct _D3DDeviceDesc {
-        DWORD           dwSize;
-        DWORD           dwFlags;
-        D3DCOLORMODEL   dcmColorModel;
-        DWORD           dwDevCaps;
-        D3DTRANSFORMCAPS dtcTransformCaps;
-        BOOL            bClipping;
-        D3DLIGHTINGCAPS dlcLightingCaps;
-        D3DPRIMCAPS     dpcLineCaps;
-        D3DPRIMCAPS     dpcTriCaps;
-        DWORD           dwDeviceRenderBitDepth;
-        DWORD           dwDeviceZBufferBitDepth;
-        DWORD           dwMaxBufferSize;
-        DWORD           dwMaxVertexCount;
-
-        DWORD           dwMinTextureWidth,dwMinTextureHeight;
-        DWORD           dwMaxTextureWidth,dwMaxTextureHeight;
-        DWORD           dwMinStippleWidth,dwMaxStippleWidth;
-        DWORD           dwMinStippleHeight,dwMaxStippleHeight;
-
-        DWORD       dwMaxTextureRepeat;
-        DWORD       dwMaxTextureAspectRatio;
-        DWORD       dwMaxAnisotropy;
-
-        D3DVALUE    dvGuardBandLeft;
-        D3DVALUE    dvGuardBandTop;
-        D3DVALUE    dvGuardBandRight;
-        D3DVALUE    dvGuardBandBottom;
-
-        D3DVALUE    dvExtentsAdjust;
-        DWORD       dwStencilCaps;
-
-        DWORD       dwFVFCaps;
-        DWORD       dwTextureOpCaps;
-        WORD        wMaxTextureBlendStages;
-        WORD        wMaxSimultaneousTextures;
-} D3DDEVICEDESC,*LPD3DDEVICEDESC;
-#define D3DDEVICEDESCSIZE (sizeof(D3DDEVICEDESC))
-
-typedef struct _D3DDeviceDesc7 {
-        DWORD            dwDevCaps;
-        D3DPRIMCAPS      dpcLineCaps;
-        D3DPRIMCAPS      dpcTriCaps;
-        DWORD            dwDeviceRenderBitDepth;
-        DWORD            dwDeviceZBufferBitDepth;
-
-        DWORD       dwMinTextureWidth, dwMinTextureHeight;
-        DWORD       dwMaxTextureWidth, dwMaxTextureHeight;
-
-        DWORD       dwMaxTextureRepeat;
-        DWORD       dwMaxTextureAspectRatio;
-        DWORD       dwMaxAnisotropy;
-
-        D3DVALUE    dvGuardBandLeft;
-        D3DVALUE    dvGuardBandTop;
-        D3DVALUE    dvGuardBandRight;
-        D3DVALUE    dvGuardBandBottom;
-
-        D3DVALUE    dvExtentsAdjust;
-        DWORD       dwStencilCaps;
-        DWORD       dwFVFCaps;
-        DWORD       dwTextureOpCaps;
-        WORD        wMaxTextureBlendStages;
-        WORD        wMaxSimultaneousTextures;
-
-        DWORD       dwMaxActiveLights;
-        D3DVALUE    dvMaxVertexW;
-        GUID        deviceGUID;
-
-        WORD        wMaxUserClipPlanes;
-        WORD        wMaxVertexBlendMatrices;
-
-        DWORD       dwVertexProcessingCaps;
-
-        DWORD       dwReserved1;
-        DWORD       dwReserved2;
-        DWORD       dwReserved3;
-        DWORD       dwReserved4;
-} D3DDEVICEDESC7, *LPD3DDEVICEDESC7;
-#define D3DDEVICEDESC7SIZE (sizeof(D3DDEVICEDESC7))
-
-#define D3DDD_COLORMODEL                0x00000001
-#define D3DDD_DEVCAPS                   0x00000002
-#define D3DDD_TRANSFORMCAPS             0x00000004
-#define D3DDD_LIGHTINGCAPS              0x00000008
-#define D3DDD_BCLIPPING                 0x00000010
-#define D3DDD_LINECAPS                  0x00000020
-#define D3DDD_TRICAPS                   0x00000040
-#define D3DDD_DEVICERENDERBITDEPTH      0x00000080
-#define D3DDD_DEVICEZBUFFERBITDEPTH     0x00000100
-#define D3DDD_MAXBUFFERSIZE             0x00000200
-#define D3DDD_MAXVERTEXCOUNT            0x00000400
-
-#define D3DDEVCAPS_FLOATTLVERTEX           0x00000001
-#define D3DDEVCAPS_SORTINCREASINGZ         0x00000002
-#define D3DDEVCAPS_SORTDECREASINGZ         0X00000004
-#define D3DDEVCAPS_SORTEXACT               0x00000008
-#define D3DDEVCAPS_EXECUTESYSTEMMEMORY     0x00000010
-#define D3DDEVCAPS_EXECUTEVIDEOMEMORY      0x00000020
-#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY    0x00000040
-#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY     0x00000080
-#define D3DDEVCAPS_TEXTURESYSTEMMEMORY     0x00000100
-#define D3DDEVCAPS_TEXTUREVIDEOMEMORY      0x00000200
-#define D3DDEVCAPS_DRAWPRIMTLVERTEX        0x00000400
-#define D3DDEVCAPS_CANRENDERAFTERFLIP      0x00000800
-#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM   0x00001000
-#define D3DDEVCAPS_DRAWPRIMITIVES2         0x00002000
-#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000
-#define D3DDEVCAPS_DRAWPRIMITIVES2EX       0x00008000
-#define D3DDEVCAPS_HWTRANSFORMANDLIGHT     0x00010000
-#define D3DDEVCAPS_CANBLTSYSTONONLOCAL     0x00020000
-#define D3DDEVCAPS_HWRASTERIZATION         0x00080000
-
-#define D3DSTENCILCAPS_KEEP     0x00000001
-#define D3DSTENCILCAPS_ZERO     0x00000002
-#define D3DSTENCILCAPS_REPLACE  0x00000004
-#define D3DSTENCILCAPS_INCRSAT  0x00000008
-#define D3DSTENCILCAPS_DECRSAT  0x00000010
-#define D3DSTENCILCAPS_INVERT   0x00000020
-#define D3DSTENCILCAPS_INCR     0x00000040
-#define D3DSTENCILCAPS_DECR     0x00000080
-
-#define D3DTEXOPCAPS_DISABLE                    0x00000001
-#define D3DTEXOPCAPS_SELECTARG1                 0x00000002
-#define D3DTEXOPCAPS_SELECTARG2                 0x00000004
-#define D3DTEXOPCAPS_MODULATE                   0x00000008
-#define D3DTEXOPCAPS_MODULATE2X                 0x00000010
-#define D3DTEXOPCAPS_MODULATE4X                 0x00000020
-#define D3DTEXOPCAPS_ADD                        0x00000040
-#define D3DTEXOPCAPS_ADDSIGNED                  0x00000080
-#define D3DTEXOPCAPS_ADDSIGNED2X                0x00000100
-#define D3DTEXOPCAPS_SUBTRACT                   0x00000200
-#define D3DTEXOPCAPS_ADDSMOOTH                  0x00000400
-#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA          0x00000800
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHA          0x00001000
-#define D3DTEXOPCAPS_BLENDFACTORALPHA           0x00002000
-#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM        0x00004000
-#define D3DTEXOPCAPS_BLENDCURRENTALPHA          0x00008000
-#define D3DTEXOPCAPS_PREMODULATE                0x00010000
-#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR     0x00020000
-#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA     0x00040000
-#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR  0x00080000
-#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA  0x00100000
-#define D3DTEXOPCAPS_BUMPENVMAP                 0x00200000
-#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE        0x00400000
-#define D3DTEXOPCAPS_DOTPRODUCT3                0x00800000
-
-#define D3DFVFCAPS_TEXCOORDCOUNTMASK    0x0000FFFF
-#define D3DFVFCAPS_DONOTSTRIPELEMENTS   0x00080000
-
-#define D3DVTXPCAPS_TEXGEN              0x00000001
-#define D3DVTXPCAPS_MATERIALSOURCE7     0x00000002
-#define D3DVTXPCAPS_VERTEXFOG           0x00000004
-#define D3DVTXPCAPS_DIRECTIONALLIGHTS   0x00000008
-#define D3DVTXPCAPS_POSITIONALLIGHTS    0x00000010
-#define D3DVTXPCAPS_LOCALVIEWER         0x00000020
-
-typedef HRESULT (CALLBACK *LPD3DENUMDEVICESCALLBACK)(LPGUID lpGuid,LPSTR lpDeviceDescription,LPSTR lpDeviceName,LPD3DDEVICEDESC,LPD3DDEVICEDESC,LPVOID);
-typedef HRESULT (CALLBACK *LPD3DENUMDEVICESCALLBACK7)(LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC7, LPVOID);
-
-#define D3DFDS_COLORMODEL          0x00000001
-#define D3DFDS_GUID                0x00000002
-#define D3DFDS_HARDWARE            0x00000004
-#define D3DFDS_TRIANGLES           0x00000008
-#define D3DFDS_LINES               0x00000010
-#define D3DFDS_MISCCAPS            0x00000020
-#define D3DFDS_RASTERCAPS          0x00000040
-#define D3DFDS_ZCMPCAPS            0x00000080
-#define D3DFDS_ALPHACMPCAPS        0x00000100
-#define D3DFDS_SRCBLENDCAPS        0x00000200
-#define D3DFDS_DSTBLENDCAPS        0x00000400
-#define D3DFDS_SHADECAPS           0x00000800
-#define D3DFDS_TEXTURECAPS         0x00001000
-#define D3DFDS_TEXTUREFILTERCAPS   0x00002000
-#define D3DFDS_TEXTUREBLENDCAPS    0x00004000
-#define D3DFDS_TEXTUREADDRESSCAPS  0x00008000
-
-typedef struct _D3DFINDDEVICESEARCH {
-    DWORD               dwSize;
-    DWORD               dwFlags;
-    BOOL                bHardware;
-    D3DCOLORMODEL       dcmColorModel;
-    GUID                guid;
-    DWORD               dwCaps;
-    D3DPRIMCAPS         dpcPrimCaps;
-} D3DFINDDEVICESEARCH,*LPD3DFINDDEVICESEARCH;
-
-typedef struct _D3DFINDDEVICERESULT {
-    DWORD               dwSize;
-    GUID                guid;
-    D3DDEVICEDESC       ddHwDesc;
-    D3DDEVICEDESC       ddSwDesc;
-} D3DFINDDEVICERESULT,*LPD3DFINDDEVICERESULT;
-
-typedef struct _D3DExecuteBufferDesc {
-  DWORD  dwSize;
-  DWORD  dwFlags;
-  DWORD  dwCaps;
-  DWORD  dwBufferSize;
-  LPVOID lpData;
-} D3DEXECUTEBUFFERDESC, *LPD3DEXECUTEBUFFERDESC;
-
-#define D3DDEB_BUFSIZE          0x00000001
-#define D3DDEB_CAPS             0x00000002
-#define D3DDEB_LPDATA           0x00000004
-
-#define D3DDEBCAPS_SYSTEMMEMORY 0x00000001
-#define D3DDEBCAPS_VIDEOMEMORY  0x00000002
-#define D3DDEBCAPS_MEM          (D3DDEBCAPS_SYSTEMMEMORY|D3DDEBCAPS_VIDEOMEMORY) /* = 0x3 */
-
-typedef struct _D3DDEVINFO_TEXTUREMANAGER {
-       BOOL    bThrashing;
-       DWORD   dwApproxBytesDownloaded;
-       DWORD   dwNumEvicts;
-       DWORD   dwNumVidCreates;
-       DWORD   dwNumTexturesUsed;
-       DWORD   dwNumUsedTexInVid;
-       DWORD   dwWorkingSet;
-       DWORD   dwWorkingSetBytes;
-       DWORD   dwTotalManaged;
-       DWORD   dwTotalBytes;
-       DWORD   dwLastPri;
-} D3DDEVINFO_TEXTUREMANAGER, *LPD3DDEVINFO_TEXTUREMANAGER;
-
-typedef struct _D3DDEVINFO_TEXTURING {
-       DWORD   dwNumLoads;
-       DWORD   dwApproxBytesLoaded;
-       DWORD   dwNumPreLoads;
-       DWORD   dwNumSet;
-       DWORD   dwNumCreates;
-       DWORD   dwNumDestroys;
-       DWORD   dwNumSetPriorities;
-       DWORD   dwNumSetLODs;
-       DWORD   dwNumLocks;
-       DWORD   dwNumGetDCs;
-} D3DDEVINFO_TEXTURING, *LPD3DDEVINFO_TEXTURING;
-
-
-
-#endif
diff --git a/misc/builddeps/win64/dx/include/d3dhal.h b/misc/builddeps/win64/dx/include/d3dhal.h
deleted file mode 100644 (file)
index 806f299..0000000
+++ /dev/null
@@ -1,535 +0,0 @@
-/*
- * Direct3D driver interface
- * (DirectX 7 version)
- *
- * Copyright (C) 2001 Ove Kaaven
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef _D3DHAL_H_
-#define _D3DHAL_H_
-
-#include <_mingw_dxhelper.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <d3d.h>
-
-/*****************************************************************************
- * device info structures
- */
-typedef struct _D3DDeviceDesc_V1 {
-  DWORD                        dwSize;
-  DWORD                        dwFlags;
-  D3DCOLORMODEL                dcmColorModel;
-  DWORD                        dwDevCaps;
-  D3DTRANSFORMCAPS     dtcTransformCaps;
-  WINBOOL              bClipping;
-  D3DLIGHTINGCAPS      dlcLightingCaps;
-  D3DPRIMCAPS          dpcLineCaps;
-  D3DPRIMCAPS          dpcTriCaps;
-  DWORD                        dwDeviceRenderBitDepth;
-  DWORD                        dwDeviceZBufferBitDepth;
-  DWORD                        dwMaxBufferSize;
-  DWORD                        dwMaxVertexCount;
-} D3DDEVICEDESC_V1,*LPD3DDEVICEDESC_V1;
-
-/* this is to allow keeping the bulk of our OpenGL code out of x11drv */
-#define D3DDD_WINE_OPENGL_DEVICE 0x00008000
-
-typedef struct _D3DHAL_GLOBALDRIVERDATA {
-  DWORD                        dwSize;
-  D3DDEVICEDESC_V1     hwCaps;
-  DWORD                        dwNumVertices;
-  DWORD                        dwNumClipVertices;
-  DWORD                        dwNumTextureFormats;
-  LPDDSURFACEDESC      lpTextureFormats;
-} D3DHAL_GLOBALDRIVERDATA;
-
-#ifndef D3DHAL_GLOBALDRIVERDATA_DEFINED
-typedef D3DHAL_GLOBALDRIVERDATA *LPD3DHAL_GLOBALDRIVERDATA;
-#define D3DHAL_GLOBALDRIVERDATA_DEFINED
-#endif
-
-typedef struct _D3DHAL_D3DEXTENDEDCAPS {
-  DWORD                        dwSize;
-  /* DirectX 5 */
-  DWORD                        dwMinTextureWidth, dwMaxTextureWidth;
-  DWORD                        dwMinTextureHeight, dwMaxTextureHeight;
-  DWORD                        dwMinStippleWidth, dwMaxStippleWidth;
-  DWORD                        dwMinStippleHeight, dwMaxStippleHeight;
-  /* DirectX 6 */
-  DWORD                        dwMaxTextureRepeat;
-  DWORD                        dwMaxTextureAspectRatio;
-  DWORD                        dwMaxAnisotropy;
-  D3DVALUE             dvGuardBandLeft;
-  D3DVALUE             dvGuardBandTop;
-  D3DVALUE             dvGuardBandRight;
-  D3DVALUE             dvGuardBandBottom;
-  D3DVALUE             dvExtentsAdjust;
-  DWORD                        dwStencilCaps;
-  DWORD                        dwFVFCaps;
-  DWORD                        dwTextureOpCaps;
-  WORD                 wMaxTextureBlendStages;
-  WORD                 wMaxSimultaneousTextures;
-  /* DirectX 7 */
-  DWORD                        dwMaxActiveLights;
-  D3DVALUE             dvMaxVertexW;
-  WORD                 wMaxUserClipPlanes;
-  WORD                 wMaxVertexBlendMatrices;
-  DWORD                        dwVertexProcessingCaps;
-  DWORD                        dwReserved1;
-  DWORD                        dwReserved2;
-  DWORD                        dwReserved3;
-  DWORD                        dwReserved4;
-} D3DHAL_D3DEXTENDEDCAPS,*LPD3DHAL_D3DEXTENDEDCAPS;
-
-/*****************************************************************************
- * d3d->driver callbacks
- */
-typedef struct _D3DHAL_CONTEXTCREATEDATA       *LPD3DHAL_CONTEXTCREATEDATA;
-typedef struct _D3DHAL_CONTEXTDESTROYDATA      *LPD3DHAL_CONTEXTDESTROYDATA;
-typedef struct _D3DHAL_CONTEXTDESTROYALLDATA   *LPD3DHAL_CONTEXTDESTROYALLDATA;
-typedef struct _D3DHAL_SCENECAPTUREDATA                *LPD3DHAL_SCENECAPTUREDATA;
-typedef struct _D3DHAL_RENDERSTATEDATA         *LPD3DHAL_RENDERSTATEDATA;
-typedef struct _D3DHAL_RENDERPRIMITIVEDATA     *LPD3DHAL_RENDERPRIMITIVEDATA;
-typedef struct _D3DHAL_TEXTURECREATEDATA       *LPD3DHAL_TEXTURECREATEDATA;
-typedef struct _D3DHAL_TEXTUREDESTROYDATA      *LPD3DHAL_TEXTUREDESTROYDATA;
-typedef struct _D3DHAL_TEXTURESWAPDATA         *LPD3DHAL_TEXTURESWAPDATA;
-typedef struct _D3DHAL_TEXTUREGETSURFDATA      *LPD3DHAL_TEXTUREGETSURFDATA;
-typedef struct _D3DHAL_GETSTATEDATA            *LPD3DHAL_GETSTATEDATA;
-
-typedef DWORD (PASCAL *LPD3DHAL_CONTEXTCREATECB)    (LPD3DHAL_CONTEXTCREATEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYCB)   (LPD3DHAL_CONTEXTDESTROYDATA);
-typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYALLCB)(LPD3DHAL_CONTEXTDESTROYALLDATA);
-typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB)            (LPD3DHAL_SCENECAPTUREDATA);
-typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB)     (LPD3DHAL_RENDERSTATEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_RENDERPRIMITIVECB)  (LPD3DHAL_RENDERPRIMITIVEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_TEXTURECREATECB)    (LPD3DHAL_TEXTURECREATEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_TEXTUREDESTROYCB)   (LPD3DHAL_TEXTUREDESTROYDATA);
-typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB)     (LPD3DHAL_TEXTURESWAPDATA);
-typedef DWORD (PASCAL *LPD3DHAL_TEXTUREGETSURFCB)   (LPD3DHAL_TEXTUREGETSURFDATA);
-typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB)        (LPD3DHAL_GETSTATEDATA);
-
-typedef struct _D3DHAL_CALLBACKS {
-  DWORD                                dwSize;
-  LPD3DHAL_CONTEXTCREATECB     ContextCreate;
-  LPD3DHAL_CONTEXTDESTROYCB    ContextDestroy;
-  LPD3DHAL_CONTEXTDESTROYALLCB ContextDestroyAll;
-  LPD3DHAL_SCENECAPTURECB      SceneCapture;
-  LPVOID                       lpReserved10;
-  LPVOID                       lpReserved11;
-  LPD3DHAL_RENDERSTATECB       RenderState;
-  LPD3DHAL_RENDERPRIMITIVECB   RenderPrimitive;
-  DWORD                                dwReserved;
-  LPD3DHAL_TEXTURECREATECB     TextureCreate;
-  LPD3DHAL_TEXTUREDESTROYCB    TextureDestroy;
-  LPD3DHAL_TEXTURESWAPCB       TextureSwap;
-  LPD3DHAL_TEXTUREGETSURFCB    TextureGetSurf;
-  /* now why did MS create CALLBACKS2 and CALLBACKS3 structures if
-   * all these reserved fields were available? we may never know */
-  LPVOID                       lpReserved12;
-  LPVOID                       lpReserved13;
-  LPVOID                       lpReserved14;
-  LPVOID                       lpReserved15;
-  LPVOID                       lpReserved16;
-  LPVOID                       lpReserved17;
-  LPVOID                       lpReserved18;
-  LPVOID                       lpReserved19;
-  LPVOID                       lpReserved20;
-  LPVOID                       lpReserved21;
-  LPD3DHAL_GETSTATECB          GetState;
-  DWORD                                dwReserved0;
-  DWORD                                dwReserved1;
-  DWORD                                dwReserved2;
-  DWORD                                dwReserved3;
-  DWORD                                dwReserved4;
-  DWORD                                dwReserved5;
-  DWORD                                dwReserved6;
-  DWORD                                dwReserved7;
-  DWORD                                dwReserved8;
-  DWORD                                dwReserved9;
-} D3DHAL_CALLBACKS;
-
-#ifndef D3DHAL_CALLBACKS_DEFINED
-typedef D3DHAL_CALLBACKS *LPD3DHAL_CALLBACKS;
-#define D3DHAL_CALLBACKS_DEFINED
-#endif
-
-typedef struct _D3DHAL_SETRENDERTARGETDATA             *LPD3DHAL_SETRENDERTARGETDATA;
-typedef struct _D3DHAL_CLEARDATA                       *LPD3DHAL_CLEARDATA;
-typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA            *LPD3DHAL_DRAWONEPRIMITIVEDATA;
-typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA     *LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA;
-typedef struct _D3DHAL_DRAWPRIMITIVESDATA              *LPD3DHAL_DRAWPRIMITIVESDATA;
-
-typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB)       (LPD3DHAL_SETRENDERTARGETDATA);
-typedef DWORD (PASCAL *LPD3DHAL_CLEARCB)                 (LPD3DHAL_CLEARDATA);
-typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB)      (LPD3DHAL_DRAWONEPRIMITIVEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB)        (LPD3DHAL_DRAWPRIMITIVESDATA);
-
-typedef struct _D3DHAL_CALLBACKS2 {
-  DWORD                                        dwSize;
-  DWORD                                        dwFlags;
-  LPD3DHAL_SETRENDERTARGETCB           SetRenderTarget;
-  LPD3DHAL_CLEARCB                     Clear;
-  LPD3DHAL_DRAWONEPRIMITIVECB          DrawOnePrimitive;
-  LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB   DrawOneIndexedPrimitive;
-  LPD3DHAL_DRAWPRIMITIVESCB            DrawPrimitives;
-} D3DHAL_CALLBACKS2,*LPD3DHAL_CALLBACKS2;
-
-typedef struct _D3DHAL_CLEAR2DATA                      *LPD3DHAL_CLEAR2DATA;
-typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA   *LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA;
-typedef struct _D3DHAL_DRAWPRIMITIVES2DATA             *LPD3DHAL_DRAWPRIMITIVES2DATA;
-
-typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB)                (LPD3DHAL_CLEAR2DATA);
-typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA);
-typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB)       (LPD3DHAL_DRAWPRIMITIVES2DATA);
-
-typedef struct _D3DHAL_CALLBACKS3 {
-  DWORD                                        dwSize;
-  DWORD                                        dwFlags;
-  LPD3DHAL_CLEAR2CB                    Clear2;
-  LPVOID                               lpvReserved;
-  LPD3DHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState;
-  LPD3DHAL_DRAWPRIMITIVES2CB           DrawPrimitives2;
-} D3DHAL_CALLBACKS3,*LPD3DHAL_CALLBACKS3;
-
-/*****************************************************************************
- * parameter structures
- */
-typedef struct _D3DHAL_CONTEXTCREATEDATA {
-  union {
-    LPDDRAWI_DIRECTDRAW_GBL    lpDDGbl; /* pre-DirectX 7 */
-    LPDDRAWI_DIRECTDRAW_LCL    lpDDLcl; /* DirectX 7 */
-  } DUMMYUNIONNAME1;
-  union {
-    LPDIRECTDRAWSURFACE                lpDDS;
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDSLcl; /* DirectX 7 */
-  } DUMMYUNIONNAME2;
-  union {
-    LPDIRECTDRAWSURFACE                lpDDSZ;
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDSZLcl; /* DirectX 7 */
-  } DUMMYUNIONNAME3;
-  union {
-    DWORD                      dwPID;
-    ULONG_PTR                  dwrstates;
-  } DUMMYUNIONNAME4;
-  ULONG_PTR                    dwhContext;
-  HRESULT                      ddrval;
-} D3DHAL_CONTEXTCREATEDATA;
-
-typedef struct _D3DHAL_CONTEXTDESTROYDATA {
-  ULONG_PTR                    dwhContext;
-  HRESULT                      ddrval;
-} D3DHAL_CONTEXTDESTROYDATA;
-
-typedef struct _D3DHAL_CONTEXTDESTROYALLDATA {
-  DWORD                                dwPID;
-  HRESULT                      ddrval;
-} D3DHAL_CONTEXTDESTROYALLDATA;
-
-typedef struct _D3DHAL_SCENECAPTUREDATA {
-  ULONG_PTR                    dwhContext;
-  DWORD                                dwFlag;
-  HRESULT                      ddrval;
-} D3DHAL_SCENECAPTUREDATA;
-
-#define D3DHAL_SCENE_CAPTURE_START     0x00000000
-#define D3DHAL_SCENE_CAPTURE_END       0x00000001
-
-typedef struct _D3DHAL_SETRENDERTARGETDATA {
-  ULONG_PTR                    dwhContext;
-  union {
-    LPDIRECTDRAWSURFACE                lpDDS;
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDSLcl;
-  } DUMMYUNIONNAME1;
-  union {
-    LPDIRECTDRAWSURFACE                lpDDSZ;
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDSZLcl;
-  } DUMMYUNIONNAME2;
-  HRESULT                      ddrval;
-} D3DHAL_SETRENDERTARGETDATA;
-
-typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
-  ULONG_PTR                    dwhContext;
-  DWORD                                dwFlags;
-  DWORD                                dwVertexType;
-  LPDDRAWI_DDRAWSURFACE_LCL    lpDDCommands;
-  DWORD                                dwCommandOffset;
-  DWORD                                dwCommandLength;
-  union {
-    LPDDRAWI_DDRAWSURFACE_LCL  lpDDVertex;
-    LPVOID                     lpVertices;
-  } DUMMYUNIONNAME1;
-  DWORD                                dwVertexOffset;
-  DWORD                                dwVertexLength;
-  DWORD                                dwReqVertexBufSize;
-  DWORD                                dwReqCommandBufSize;
-  LPDWORD                      lpdwRStates;
-  union {
-    DWORD                      dwVertexSize;
-    HRESULT                    ddrval;
-  } DUMMYUNIONNAME2;
-  DWORD                                dwErrorOffset;
-} D3DHAL_DRAWPRIMITIVES2DATA;
-
-#define D3DHALDP2_USERMEMVERTICES      0x00000001
-#define D3DHALDP2_EXECUTEBUFFER                0x00000002
-#define D3DHALDP2_SWAPVERTEXBUFFER     0x00000004
-#define D3DHALDP2_SWAPCOMMANDBUFFER    0x00000008
-#define D3DHALDP2_REQVERTEXBUFSIZE     0x00000010
-#define D3DHALDP2_REQCOMMANDBUFSIZE    0x00000020
-#define D3DHALDP2_VIDMEMVERTEXBUF      0x00000040
-#define D3DHALDP2_VIDMEMCOMMANDBUF     0x00000080
-
-/*****************************************************************************
- * DrawPrimitives2 command structures
- */
-typedef struct _D3DHAL_DP2COMMAND {
-  BYTE bCommand;
-  BYTE bReserved;
-  union {
-    WORD wPrimitiveCount;
-    WORD wStateCount;
-  } DUMMYUNIONNAME;
-} D3DHAL_DP2COMMAND,*LPD3DHAL_DP2COMMAND;
-
-typedef enum _D3DHAL_DP2OPERATION {
-  D3DDP2OP_POINTS              = 1,
-  D3DDP2OP_INDEXEDLINELIST     = 2,
-  D3DDP2OP_INDEXEDTRIANGLELIST = 3,
-  D3DDP2OP_RENDERSTATE         = 8,
-  D3DDP2OP_LINELIST            = 15,
-  D3DDP2OP_LINESTRIP           = 16,
-  D3DDP2OP_INDEXEDLINESTRIP    = 17,
-  D3DDP2OP_TRIANGLELIST                = 18,
-  D3DDP2OP_TRIANGLESTRIP       = 19,
-  D3DDP2OP_INDEXEDTRIANGLESTRIP        = 20,
-  D3DDP2OP_TRIANGLEFAN         = 21,
-  D3DDP2OP_INDEXEDTRIANGLEFAN  = 22,
-  D3DDP2OP_TRIANGLEFAN_IMM     = 23,
-  D3DDP2OP_LINELIST_IMM                = 24,
-  D3DDP2OP_TEXTURESTAGESTATE   = 25,
-  D3DDP2OP_INDEXEDTRIANGLELIST2        = 26,
-  D3DDP2OP_INDEXEDLINELIST2    = 27,
-  D3DDP2OP_VIEWPORTINFO                = 28,
-  D3DDP2OP_WINFO               = 29,
-  /* pre-DirectX 7 interfaces */
-  D3DDP2OP_SETPALETTE          = 30,
-  D3DDP2OP_UPDATEPALETTE       = 31,
-  /* DirectX 7 interfaces */
-  D3DDP2OP_ZRANGE              = 32,
-  D3DDP2OP_SETMATERIAL         = 33,
-  D3DDP2OP_SETLIGHT            = 34,
-  D3DDP2OP_CREATELIGHT         = 35,
-  D3DDP2OP_SETTRANSFORM                = 36,
-  D3DDP2OP_TEXBLT              = 38,
-  D3DDP2OP_STATESET            = 39,
-  D3DDP2OP_SETPRIORITY         = 40,
-  /* all interfaces */
-  D3DDP2OP_SETRENDERTARGET     = 41,
-  D3DDP2OP_CLEAR               = 42,
-  /* DirectX 7 interfaces */
-  D3DDP2OP_SETTEXLOD           = 43,
-  D3DPP2OP_SETCLIPPLANE                = 44,
-} D3DHAL_DP2OPERATION;
-
-/* point primitives */
-
-typedef struct _D3DHAL_POINTS {
-  WORD wCount;
-  WORD wVStart;
-} D3DHAL_DP2POINTS,*LPD3DHAL_DP2POINTS;
-
-/* line primitives */
-
-typedef struct _D3DHAL_DP2STARTVERTEX {
-  WORD wVStart;
-} D3DHAL_DP2STARTVERTEX,*LPD3DHAL_DP2STARTVERTEX;
-
-typedef struct _D3DHAL_DP2LINELIST {
-  WORD wVStart;
-} D3DHAL_DP2LINELIST,*LPD3DHAL_DP2LINELIST;
-
-typedef struct _D3DHAL_DP2INDEXEDLINELIST {
-  WORD wV1;
-  WORD wV2;
-} D3DHAL_DP2INDEXEDLINELIST,*LPD3DHAL_DP2INDEXEDLINELIST;
-
-typedef struct _D3DHAL_DP2LINESTRIP {
-  WORD wVStart;
-} D3DHAL_DP2LINESTRIP,*LPD3DHAL_DP2LINESTRIP;
-
-typedef struct _D3DHAL_DP2INDEXEDLINESTRIP {
-  WORD wV[2];
-} D3DHAL_DP2INDEXEDLINESTRIP,*LPD3DHAL_DP2INDEXEDLINESTRIP;
-
-/* triangle primitives */
-
-typedef struct _D3DHAL_DP2TRIANGLELIST {
-  WORD wVStart;
-} D3DHAL_DP2TRIANGLELIST,*LPD3DHAL_DP2TRIANGLELIST;
-
-typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST {
-  WORD wV1;
-  WORD wV2;
-  WORD wV3;
-  WORD wFlags;
-} D3DHAL_DP2INDEXEDTRIANGLELIST,*LPD3DHAL_DP2INDEXEDTRIANGLELIST;
-
-typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2 {
-  WORD wV1;
-  WORD wV2;
-  WORD wV3;
-} D3DHAL_DP2INDEXEDTRIANGLELIST2,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2;
-
-typedef struct _D3DHAL_DP2TRIANGLESTRIP {
-  WORD wVStart;
-} D3DHAL_DP2TRIANGLESTRIP,*LPD3DHAL_DP2TRIANGLESTRIP;
-
-typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP {
-  WORD wV[3];
-} D3DHAL_DP2INDEXEDTRIANGLESTRIP,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP;
-
-typedef struct _D3DHAL_DP2TRIANGLEFAN {
-  WORD wVStart;
-} D3DHAL_DP2TRIANGLEFAN,*LPD3DHAL_DP2TRIANGLEFAN;
-
-typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN {
-  WORD wV[3];
-} D3DHAL_DP2INDEXEDTRIANGLEFAN,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN;
-
-typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM {
-  DWORD dwEdgeFlags;
-} D3DHAL_DP2TRIANGLEFAN_IMM,*LPD3DHAL_DP2TRIANGLEFAN_IMM;
-
-/* render states */
-typedef struct _D3DHAL_DP2RENDERSTATE {
-  D3DRENDERSTATETYPE   RenderState;
-  union {
-    D3DVALUE dvState;
-    DWORD dwState;
-  } DUMMYUNIONNAME;
-} D3DHAL_DP2RENDERSTATE,*LPD3DHAL_DP2RENDERSTATE;
-
-typedef struct _D3DHAL_DP2TEXTURESTAGESTATE {
-  WORD wStage;
-  WORD TSState;
-  DWORD dwValue;
-} D3DHAL_DP2TEXTURESTAGESTATE,*LPD3DHAL_DP2TEXTURESTAGESTATE;
-
-#define D3DTSS_TEXTUREMAP 0
-
-typedef struct _D3DHAL_DP2VIEWPORTINFO {
-  DWORD dwX;
-  DWORD dwY;
-  DWORD dwWidth;
-  DWORD dwHeight;
-} D3DHAL_DP2VIEWPORTINFO,*LPD3DHAL_DP2VIEWPORTINFO;
-
-typedef struct _D3DHAL_DP2WINFO {
-  D3DVALUE dwWNear;
-  D3DVALUE dwWFar;
-} D3DHAL_DP2WINFO,*LPD3DHAL_DP2WINFO;
-
-typedef struct _D3DHAL_DP2SETPALETTE {
-  DWORD dwPaletteHandle;
-  DWORD dwPaletteFlags;
-  DWORD dwSurfaceHandle;
-} D3DHAL_DP2SETPALETTE,*LPD3DHAL_DP2SETPALETTE;
-
-typedef struct _D3DHAL_DP2UPDATEPALETTE {
-  DWORD dwPaletteHandle;
-  WORD wStartIndex;
-  WORD wNumEntries;
-} D3DHAL_DP2UPDATEPALETTE,*LPD3DHAL_DP2UPDATEPALETTE;
-
-typedef struct _D3DHAL_DP2ZRANGE {
-  D3DVALUE dvMinZ;
-  D3DVALUE dvMaxZ;
-} D3DHAL_DP2ZRANGE,*LPD3DHAL_DP2ZRANGE;
-
-typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL,*LPD3DHAL_DP2SETMATERIAL;
-
-typedef struct _D3DHAL_DP2SETLIGHT {
-  DWORD dwIndex;
-  DWORD dwDataType;
-} D3DHAL_DP2SETLIGHT,*LPD3DHAL_DP2SETLIGHT;
-
-#define D3DHAL_SETLIGHT_ENABLE 0
-#define D3DHAL_SETLIGHT_DISABLE        1
-#define D3DHAL_SETLIGHT_DATA   2
-
-typedef struct _D3DHAL_DP2CREATELIGHT {
-  DWORD dwIndex;
-} D3DHAL_DP2CREATELIGHT,*LPD3DHAL_DP2CREATELIGHT;
-
-typedef struct _D3DHAL_DP2SETTRANSFORM {
-  D3DTRANSFORMSTATETYPE        xfrmType;
-  D3DMATRIX            matrix;
-} D3DHAL_DP2SETTRANSFORM,*LPD3DHAL_DP2SETTRANSFORM;
-
-typedef struct _D3DHAL_DP2TEXBLT {
-  DWORD dwDDDestSurface;
-  DWORD dwDDSrcSurface;
-  POINT pDest;
-  RECTL rSrc;
-  DWORD dwFlags;
-} D3DHAL_DP2TEXBLT,*LPD3DHAL_DP2TEXBLT;
-
-typedef struct _D3DHAL_DP2STATESET {
-  DWORD               dwOperation;
-  DWORD               dwParam;
-  D3DSTATEBLOCKTYPE   sbType;
-} D3DHAL_DP2STATESET,*LPD3DHAL_DP2STATESET;
-
-#define D3DHAL_STATESETBEGIN   0
-#define D3DHAL_STATESETEND     1
-#define D3DHAL_STATESETDELETE  2
-#define D3DHAL_STATESETEXECUTE 3
-#define D3DHAL_STATESETCAPTURE 4
-
-typedef struct _D3DHAL_DP2SETPRIORITY {
-  DWORD dwDDSurface;
-  DWORD dwPriority;
-} D3DHAL_DP2SETPRIORITY,*LPD3DHAL_DP2SETPRIORITY;
-
-typedef struct _D3DHAL_DP2SETRENDERTARGET {
-  DWORD hRenderTarget;
-  DWORD hZBuffer;
-} D3DHAL_DP2SETRENDERTARGET,*LPD3DHAL_DP2SETRENDERTARGET;
-
-typedef struct _D3DHAL_DP2CLEAR {
-  DWORD                dwFlags;
-  DWORD                dwFillColor;
-  D3DVALUE     dvFillDepth;
-  DWORD                dwFillStencil;
-  RECT         Rects[1];
-} D3DHAL_DP2CLEAR,*LPD3DHAL_DP2CLEAR;
-
-typedef struct _D3DHAL_DP2SETTEXLOD {
-  DWORD dwDDSurface;
-  DWORD dwLOD;
-} D3DHAL_DP2SETTEXLOD,*LPD3DHAL_DP2SETTEXLOD;
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* _D3DHAL_H_ */
diff --git a/misc/builddeps/win64/dx/include/d3drm.h b/misc/builddeps/win64/dx/include/d3drm.h
deleted file mode 100644 (file)
index 240014e..0000000
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
- * Copyright (C) 2005 Peter Berg Larsen
- * Copyright (C) 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DRM_H__
-#define __D3DRM_H__
-
-#include <ddraw.h>
-
-typedef struct IDirect3DRM *LPDIRECT3DRM;
-
-#include <d3drmobj.h>
-
-
-/* Direct3DRM Object CLSID */
-DEFINE_GUID(CLSID_CDirect3DRM,              0x4516ec41, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-
-/* Direct3DRM Interface GUIDs */
-DEFINE_GUID(IID_IDirect3DRM,                0x2bc49361, 0x8327, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRM2,               0x4516ecc8, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRM3,               0x4516ec83, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-
-HRESULT WINAPI Direct3DRMCreate(LPDIRECT3DRM* ppDirect3DRM);
-
-/*****************************************************************************
- * IDirect3DRMObject interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRM
-DECLARE_INTERFACE_(IDirect3DRM,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRM methods ***/
-    STDMETHOD(CreateObject)(THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(CreateFrame)(THIS_ LPDIRECT3DRMFRAME, LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH *) PURE;
-    STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER *) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE *) PURE;
-    STDMETHOD(CreateAnimation)(THIS_ LPDIRECT3DRMANIMATION *) PURE;
-    STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET *) PURE;
-    STDMETHOD(CreateTexture)(THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(CreateLight)(THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateLightRGB)(THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL *) PURE;
-    STDMETHOD(CreateDevice)(THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(CreateDeviceFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack,
-        LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(CreateDeviceFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev, LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(CreateDeviceFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height,
-        LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(CreateShadow)(THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMLIGHT, D3DVALUE px, D3DVALUE py, D3DVALUE pz,
-        D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, LPDIRECT3DRMVISUAL *) PURE;
-    STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE pDDS, LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DRMDEVICE, LPDIRECT3DRMFRAME, DWORD, DWORD, DWORD, DWORD,
-        LPDIRECT3DRMVIEWPORT *) PURE;
-    STDMETHOD(CreateWrap)(THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
-        D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov,
-        D3DVALUE su, D3DVALUE sv, LPDIRECT3DRMWRAP *) PURE;
-    STDMETHOD(CreateUserVisual)(THIS_ D3DRMUSERVISUALCALLBACK, LPVOID pArg, LPDIRECT3DRMUSERVISUAL *) PURE;
-    STDMETHOD(LoadTexture)(THIS_ const char *, LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(LoadTextureFromResource)(THIS_ HRSRC rs, LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(SetSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(AddSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetSearchPath)(THIS_ DWORD *size_return, LPSTR path_return) PURE;
-    STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
-    STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
-    STDMETHOD(GetDevices)(THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
-    STDMETHOD(GetNamedObject)(THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
-    STDMETHOD(EnumerateObjects)(THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS, D3DRMLOADCALLBACK, LPVOID,
-        D3DRMLOADTEXTURECALLBACK, LPVOID, LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(Tick)(THIS_ D3DVALUE) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRM_QueryInterface(p,a,b)                         (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRM_AddRef(p)                                     (p)->lpVtbl->AddRef(p)
-#define IDirect3DRM_Release(p)                                    (p)->lpVtbl->Release(p)
-/*** IDirect3DRM methods ***/
-#define IDirect3DRM_CreateObject(p,a,b,c,d)                       (p)->lpVtbl->CreateObject(p,a,b,d)
-#define IDirect3DRM_CreateFrame(p,a,b)                            (p)->lpVtbl->CreateFrame(p,a,b)
-#define IDirect3DRM_CreateMesh(p,a)                               (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRM_CreateMeshBuilder(p,a)                        (p)->lpVtbl->CreateMeshBuilder(p,a)
-#define IDirect3DRM_CreateFace(p,a)                               (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRM_CreateAnimation(p,a)                          (p)->lpVtbl->CreateAnimation(p,a)
-#define IDirect3DRM_CreateAnimationSet(p,a)                       (p)->lpVtbl->CreateAnimationSet(p,a)
-#define IDirect3DRM_CreateTexture(p,a,b)                          (p)->lpVtbl->CreateTexture(p,a,b)
-#define IDirect3DRM_CreateLight(p,a,b,c)                          (p)->lpVtbl->CreateLight(p,a,b,c)
-#define IDirect3DRM_CreateLightRGB(p,a,b,c,d,e)                   (p)->lpVtbl->CreateLightRGB(p,a,b,c,d,e)
-#define IDirect3DRM_CreateMaterial(p,a,b)                         (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3DRM_CreateDevice(p,a,b,c)                         (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirect3DRM_CreateDeviceFromSurface(p,a,b,c,d)            (p)->lpVtbl->CreateDeviceFromSurface(p,a,b,c,d)
-#define IDirect3DRM_CreateDeviceFromD3D(p,a,b,c)                  (p)->lpVtbl->CreateDeviceFromD3D(p,a,b,c)
-#define IDirect3DRM_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->lpVtbl->CreateDeviceFromClipper(p,a,b,c,d,e)
-#define IDirect3DRM_CreateTextureFromSurface(p,a,b)               (p)->lpVtbl->CreateTextureFromSurface(p,a,b)
-#define IDirect3DRM_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->lpVtbl->CreateShadow(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM_CreateViewport(p,a,b,c,d,e,f,g)               (p)->lpVtbl->CreateViewport(p,a,b,c,d,e,f,g)
-#define IDirect3DRM_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q) (p)->lpVtbl->CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q)
-#define IDirect3DRM_CreateUserVisual(p,a,b,c)                     (p)->lpVtbl->CreateUserVisual(p,a,b,c)
-#define IDirect3DRM_LoadTexture(p,a,b)                            (p)->lpVtbl->LoadTexture(p,a,b)
-#define IDirect3DRM_LoadTextureFromResource(p,a,b)                (p)->lpVtbl->LoadTextureFromResource(p,a,b)
-#define IDirect3DRM_SetSearchPath(p,a)                            (p)->lpVtbl->SetSearchPath(p,a)
-#define IDirect3DRM_AddSearchPath(p,a)                            (p)->lpVtbl->AddSearchPath(p,a)
-#define IDirect3DRM_GetSearchPath(p,a,b)                          (p)->lpVtbl->GetSearchPath(p,a,b)
-#define IDirect3DRM_SetDefaultTextureColors(p,a)                  (p)->lpVtbl->SetDefaultTextureColors(p,a)
-#define IDirect3DRM_SetDefaultTextureShades(p,a)                  (p)->lpVtbl->SetDefaultTextureShades(p,a)
-#define IDirect3DRM_GetDevices(p,a)                               (p)->lpVtbl->GetDevices(p,a)
-#define IDirect3DRM_GetNamedObject(p,a,b)                         (p)->lpVtbl->GetNamedObject(p,a,b)
-#define IDirect3DRM_EnumerateObjects(p,a,b)                       (p)->lpVtbl->EnumerateObjects(p,a,b)
-#define IDirect3DRM_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->lpVtbl->Load(p,a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM_Tick(p,a)                                     (p)->lpVtbl->Tick(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRM_QueryInterface(p,a,b)                         (p)->QueryInterface(a,b)
-#define IDirect3DRM_AddRef(p)                                     (p)->AddRef()
-#define IDirect3DRM_Release(p)                                    (p)->Release()
-/*** IDirect3DRM methods ***/
-#define IDirect3DRM_CreateObject(p,a,b,c,d)                       (p)->CreateObject(a,b,d)
-#define IDirect3DRM_CreateFrame(p,a,b)                            (p)->CreateFrame(a,b)
-#define IDirect3DRM_CreateMesh(p,a)                               (p)->CreateMesh(a)
-#define IDirect3DRM_CreateMeshBuilder(p,a)                        (p)->CreateMeshBuilder(a)
-#define IDirect3DRM_CreateFace(p,a)                               (p)->CreateFace(a)
-#define IDirect3DRM_CreateAnimation(p,a)                          (p)->CreateAnimation(a)
-#define IDirect3DRM_CreateAnimationSet(p,a)                       (p)->CreateAnimationSet(a)
-#define IDirect3DRM_CreateTexture(p,a,b)                          (p)->CreateTexture(a,b)
-#define IDirect3DRM_CreateLight(p,a,b,c)                          (p)->CreateLight(a,b,c)
-#define IDirect3DRM_CreateLightRGB(p,a,b,c,d,e)                   (p)->CreateLightRGB(a,b,c,d,e)
-#define IDirect3DRM_CreateMaterial(p,a,b)                         (p)->CreateMaterial(a,b)
-#define IDirect3DRM_CreateDevice(p,a,b,c)                         (p)->CreateDevice(a,b,c)
-#define IDirect3DRM_CreateDeviceFromSurface(p,a,b,c,d)            (p)->CreateDeviceFromSurface(a,b,c,d)
-#define IDirect3DRM_CreateDeviceFromD3D(p,a,b,c)                  (p)->CreateDeviceFromD3D(a,b,c)
-#define IDirect3DRM_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->CreateDeviceFromClipper(a,b,c,d,e)
-#define IDirect3DRM_CreateTextureFromSurface(p,a,b)               (p)->CreateTextureFromSurface(a,b)
-#define IDirect3DRM_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->CreateShadow(a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM_CreateViewport(p,a,b,c,d,e,f,g)               (p)->CreateViewport(a,b,c,d,e,f,g)
-#define IDirect3DRM_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (p)->CreateWrap(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
-#define IDirect3DRM_CreateUserVisual(p,a,b,c)                     (p)->CreateUserVisual(a,b,c)
-#define IDirect3DRM_LoadTexture(p,a,b)                            (p)->LoadTexture(a,b)
-#define IDirect3DRM_LoadTextureFromResource(p,a,b)                (p)->LoadTextureFromResource(a,b)
-#define IDirect3DRM_SetSearchPath(p,a)                            (p)->SetSearchPath(a)
-#define IDirect3DRM_AddSearchPath(p,a)                            (p)->AddSearchPath(a)
-#define IDirect3DRM_GetSearchPath(p,a,b)                          (p)->GetSearchPath(a,b)
-#define IDirect3DRM_SetDefaultTextureColors(p,a)                  (p)->SetDefaultTextureColors(a)
-#define IDirect3DRM_SetDefaultTextureShades(p,a)                  (p)->SetDefaultTextureShades(a)
-#define IDirect3DRM_GetDevices(p,a)                               (p)->GetDevices(a)
-#define IDirect3DRM_GetNamedObject(p,a,b)                         (p)->GetNamedObject(a,b)
-#define IDirect3DRM_EnumerateObjects(p,a,b)                       (p)->EnumerateObjects(a,b)
-#define IDirect3DRM_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->Load(a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM_Tick(p,a)                                     (p)->Tick(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRM2 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRM2
-DECLARE_INTERFACE_(IDirect3DRM2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRM2 methods ***/
-    STDMETHOD(CreateObject)(THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(CreateFrame)(THIS_ LPDIRECT3DRMFRAME, LPDIRECT3DRMFRAME2 *) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH *) PURE;
-    STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER2 *) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE *) PURE;
-    STDMETHOD(CreateAnimation)(THIS_ LPDIRECT3DRMANIMATION *) PURE;
-    STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET *) PURE;
-    STDMETHOD(CreateTexture)(THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE2 *) PURE;
-    STDMETHOD(CreateLight)(THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateLightRGB)(THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL *) PURE;
-    STDMETHOD(CreateDevice)(THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE2 *) PURE;
-    STDMETHOD(CreateDeviceFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack,
-        LPDIRECT3DRMDEVICE2 *) PURE;
-    STDMETHOD(CreateDeviceFromD3D)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev, LPDIRECT3DRMDEVICE2 *) PURE;
-    STDMETHOD(CreateDeviceFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height,
-        LPDIRECT3DRMDEVICE2 *) PURE;
-    STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE pDDS, LPDIRECT3DRMTEXTURE2 *) PURE;
-    STDMETHOD(CreateShadow)(THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMLIGHT, D3DVALUE px, D3DVALUE py, D3DVALUE pz,
-        D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, LPDIRECT3DRMVISUAL *) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DRMDEVICE, LPDIRECT3DRMFRAME, DWORD, DWORD, DWORD, DWORD,
-        LPDIRECT3DRMVIEWPORT *) PURE;
-    STDMETHOD(CreateWrap)(THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
-        D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov,
-        D3DVALUE su, D3DVALUE sv, LPDIRECT3DRMWRAP *) PURE;
-    STDMETHOD(CreateUserVisual)(THIS_ D3DRMUSERVISUALCALLBACK, LPVOID pArg, LPDIRECT3DRMUSERVISUAL *) PURE;
-    STDMETHOD(LoadTexture)(THIS_ const char *, LPDIRECT3DRMTEXTURE2 *) PURE;
-    STDMETHOD(LoadTextureFromResource)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR /* LPCTSTR */ strType, LPDIRECT3DRMTEXTURE2 *) PURE;
-    STDMETHOD(SetSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(AddSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetSearchPath)(THIS_ DWORD *size_return, LPSTR path_return) PURE;
-    STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
-    STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
-    STDMETHOD(GetDevices)(THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
-    STDMETHOD(GetNamedObject)(THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
-    STDMETHOD(EnumerateObjects)(THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS, D3DRMLOADCALLBACK, LPVOID,
-        D3DRMLOADTEXTURECALLBACK, LPVOID, LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(Tick)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRM2_QueryInterface(p,a,b)                         (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRM2_AddRef(p)                                     (p)->lpVtbl->AddRef(p)
-#define IDirect3DRM2_Release(p)                                    (p)->lpVtbl->Release(p)
-/*** IDirect3DRM2 methods ***/
-#define IDirect3DRM2_CreateObject(p,a,b,c,d)                       (p)->lpVtbl->CreateObject(p,a,b,d)
-#define IDirect3DRM2_CreateFrame(p,a,b)                            (p)->lpVtbl->CreateFrame(p,a,b)
-#define IDirect3DRM2_CreateMesh(p,a)                               (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRM2_CreateMeshBuilder(p,a)                        (p)->lpVtbl->CreateMeshBuilder(p,a)
-#define IDirect3DRM2_CreateFace(p,a)                               (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRM2_CreateAnimation(p,a)                          (p)->lpVtbl->CreateAnimation(p,a)
-#define IDirect3DRM2_CreateAnimationSet(p,a)                       (p)->lpVtbl->CreateAnimationSet(p,a)
-#define IDirect3DRM2_CreateTexture(p,a,b)                          (p)->lpVtbl->CreateTexture(p,a,b)
-#define IDirect3DRM2_CreateLight(p,a,b,c)                          (p)->lpVtbl->CreateLight(p,a,b,c)
-#define IDirect3DRM2_CreateLightRGB(p,a,b,c,d,e)                   (p)->lpVtbl->CreateLightRGB(p,a,b,c,d,e)
-#define IDirect3DRM2_CreateMaterial(p,a,b)                         (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3DRM2_CreateDevice(p,a,b,c)                         (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirect3DRM2_CreateDeviceFromSurface(p,a,b,c,d)            (p)->lpVtbl->CreateDeviceFromSurface(p,a,b,c,d)
-#define IDirect3DRM2_CreateDeviceFromD3D(p,a,b,c)                  (p)->lpVtbl->CreateDeviceFromD3D(p,a,b,c)
-#define IDirect3DRM2_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->lpVtbl->CreateDeviceFromClipper(p,a,b,c,d,e)
-#define IDirect3DRM2_CreateTextureFromSurface(p,a,b)               (p)->lpVtbl->CreateTextureFromSurface(p,a,b)
-#define IDirect3DRM2_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->lpVtbl->CreateShadow(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM2_CreateViewport(p,a,b,c,d,e,f,g)               (p)->lpVtbl->CreateViewport(p,a,b,c,d,e,f,g)
-#define IDirect3DRM2_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q) (p)->lpVtbl->CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q)
-#define IDirect3DRM2_CreateUserVisual(p,a,b,c)                     (p)->lpVtbl->CreateUserVisual(p,a,b,c)
-#define IDirect3DRM2_LoadTexture(p,a,b)                            (p)->lpVtbl->LoadTexture(p,a,b)
-#define IDirect3DRM2_LoadTextureFromResource(p,a,b,c,d)            (p)->lpVtbl->LoadTextureFromResource(p,a,b,c,d)
-#define IDirect3DRM2_SetSearchPath(p,a)                            (p)->lpVtbl->SetSearchPath(p,a)
-#define IDirect3DRM2_AddSearchPath(p,a)                            (p)->lpVtbl->AddSearchPath(p,a)
-#define IDirect3DRM2_GetSearchPath(p,a,b)                          (p)->lpVtbl->GetSearchPath(p,a,b)
-#define IDirect3DRM2_SetDefaultTextureColors(p,a)                  (p)->lpVtbl->SetDefaultTextureColors(p,a)
-#define IDirect3DRM2_SetDefaultTextureShades(p,a)                  (p)->lpVtbl->SetDefaultTextureShades(p,a)
-#define IDirect3DRM2_GetDevices(p,a)                               (p)->lpVtbl->GetDevices(p,a)
-#define IDirect3DRM2_GetNamedObject(p,a,b)                         (p)->lpVtbl->GetNamedObject(p,a,b)
-#define IDirect3DRM2_EnumerateObjects(p,a,b)                       (p)->lpVtbl->EnumerateObjects(p,a,b)
-#define IDirect3DRM2_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->lpVtbl->Load(p,a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM2_Tick(p,a)                                     (p)->lpVtbl->Tick(p,a)
-#define IDirect3DRM2_CreateProgressiveMesh(p,a)                    (p)->lpVtbl->CreateProgressiveMesh(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRM2_QueryInterface(p,a,b)                         (p)->QueryInterface(a,b)
-#define IDirect3DRM2_AddRef(p)                                     (p)->AddRef()
-#define IDirect3DRM2_Release(p)                                    (p)->Release()
-/*** IDirect3DRM2 methods ***/
-#define IDirect3DRM2_CreateObject(p,a,b,c,d)                       (p)->CreateObject(a,b,d)
-#define IDirect3DRM2_CreateFrame(p,a,b)                            (p)->CreateFrame(a,b)
-#define IDirect3DRM2_CreateMesh(p,a)                               (p)->CreateMesh(a)
-#define IDirect3DRM2_CreateMeshBuilder(p,a)                        (p)->CreateMeshBuilder(a)
-#define IDirect3DRM2_CreateFace(p,a)                               (p)->CreateFace(a)
-#define IDirect3DRM2_CreateAnimation(p,a)                          (p)->CreateAnimation(a)
-#define IDirect3DRM2_CreateAnimationSet(p,a)                       (p)->CreateAnimationSet(a)
-#define IDirect3DRM2_CreateTexture(p,a,b)                          (p)->CreateTexture(a,b)
-#define IDirect3DRM2_CreateLight(p,a,b,c)                          (p)->CreateLight(a,b,c)
-#define IDirect3DRM2_CreateLightRGB(p,a,b,c,d,e)                   (p)->CreateLightRGB(a,b,c,d,e)
-#define IDirect3DRM2_CreateMaterial(p,a,b)                         (p)->CreateMaterial(a,b)
-#define IDirect3DRM2_CreateDevice(p,a,b,c)                         (p)->CreateDevice(a,b,c)
-#define IDirect3DRM2_CreateDeviceFromSurface(p,a,b,c,d)            (p)->CreateDeviceFromSurface(a,b,c,d)
-#define IDirect3DRM2_CreateDeviceFromD3D(p,a,b,c)                  (p)->CreateDeviceFromD3D(a,b,c)
-#define IDirect3DRM2_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->CreateDeviceFromClipper(a,b,c,d,e)
-#define IDirect3DRM2_CreateTextureFromSurface(p,a,b)               (p)->CreateTextureFromSurface(a,b)
-#define IDirect3DRM2_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->CreateShadow(a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM2_CreateViewport(p,a,b,c,d,e,f,g)               (p)->CreateViewport(a,b,c,d,e,f,g)
-#define IDirect3DRM2_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (p)->CreateWrap(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
-#define IDirect3DRM2_CreateUserVisual(p,a,b,c)                     (p)->CreateUserVisual(a,b,c)
-#define IDirect3DRM2_LoadTexture(p,a,b)                            (p)->LoadTexture(a,b)
-#define IDirect3DRM2_LoadTextureFromResource(p,a,b)                (p)->LoadTextureFromResource(a,b)
-#define IDirect3DRM2_SetSearchPath(p,a)                            (p)->SetSearchPath(a)
-#define IDirect3DRM2_AddSearchPath(p,a)                            (p)->AddSearchPath(a)
-#define IDirect3DRM2_GetSearchPath(p,a,b)                          (p)->GetSearchPath(a,b)
-#define IDirect3DRM2_SetDefaultTextureColors(p,a)                  (p)->SetDefaultTextureColors(a)
-#define IDirect3DRM2_SetDefaultTextureShades(p,a)                  (p)->SetDefaultTextureShades(a)
-#define IDirect3DRM2_GetDevices(p,a)                               (p)->GetDevices(a)
-#define IDirect3DRM2_GetNamedObject(p,a,b)                         (p)->GetNamedObject(a,b)
-#define IDirect3DRM2_EnumerateObjects(p,a,b)                       (p)->EnumerateObjects(a,b)
-#define IDirect3DRM2_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->Load(a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM2_Tick(p,a)                                     (p)->Tick(a)
-#define IDirect3DRM2_CreateProgressiveMesh(p,a)                    (p)->CreateProgressiveMesh(p,a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRM3 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRM3
-DECLARE_INTERFACE_(IDirect3DRM3,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRM2 methods ***/
-    STDMETHOD(CreateObject)(THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(CreateFrame)(THIS_ LPDIRECT3DRMFRAME3, LPDIRECT3DRMFRAME3 *) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH *) PURE;
-    STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3 *) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE2 *) PURE;
-    STDMETHOD(CreateAnimation)(THIS_ LPDIRECT3DRMANIMATION2 *) PURE;
-    STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET2 *) PURE;
-    STDMETHOD(CreateTexture)(THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(CreateLight)(THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateLightRGB)(THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(CreateMaterial)(THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL2 *) PURE;
-    STDMETHOD(CreateDevice)(THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(CreateDeviceFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack,
-        LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(CreateDeviceFromD3D)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev, LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(CreateDeviceFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height,
-        LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE pDDS, LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(CreateShadow)(THIS_ LPUNKNOWN, LPDIRECT3DRMLIGHT, D3DVALUE px, D3DVALUE py, D3DVALUE pz,
-        D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, LPDIRECT3DRMSHADOW2 *) PURE;
-    STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DRMDEVICE3, LPDIRECT3DRMFRAME3, DWORD, DWORD, DWORD, DWORD,
-        LPDIRECT3DRMVIEWPORT2 *) PURE;
-    STDMETHOD(CreateWrap)(THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME3, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
-        D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov,
-        D3DVALUE su, D3DVALUE sv, LPDIRECT3DRMWRAP *) PURE;
-    STDMETHOD(CreateUserVisual)(THIS_ D3DRMUSERVISUALCALLBACK, LPVOID pArg, LPDIRECT3DRMUSERVISUAL *) PURE;
-    STDMETHOD(LoadTexture)(THIS_ const char *, LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(LoadTextureFromResource)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR  /* LPCTSTR */ strType, LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(SetSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(AddSearchPath)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetSearchPath)(THIS_ DWORD *size_return, LPSTR path_return) PURE;
-    STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
-    STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
-    STDMETHOD(GetDevices)(THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
-    STDMETHOD(GetNamedObject)(THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
-    STDMETHOD(EnumerateObjects)(THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS, D3DRMLOADCALLBACK, LPVOID,
-        D3DRMLOADTEXTURECALLBACK, LPVOID, LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(Tick)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH) PURE;
-    STDMETHOD(RegisterClient)(THIS_ REFGUID rguid, LPDWORD lpdwID) PURE;
-    STDMETHOD(UnregisterClient)(THIS_ REFGUID rguid) PURE;
-    STDMETHOD(CreateClippedVisual)(THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMCLIPPEDVISUAL *) PURE;
-    STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOptions)(THIS_ LPDWORD) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRM3_QueryInterface(p,a,b)                         (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRM3_AddRef(p)                                     (p)->lpVtbl->AddRef(p)
-#define IDirect3DRM3_Release(p)                                    (p)->lpVtbl->Release(p)
-/*** IDirect3DRM3 methods ***/
-#define IDirect3DRM3_CreateObject(p,a,b,c,d)                       (p)->lpVtbl->CreateObject(p,a,b,d)
-#define IDirect3DRM3_CreateFrame(p,a,b)                            (p)->lpVtbl->CreateFrame(p,a,b)
-#define IDirect3DRM3_CreateMesh(p,a)                               (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRM3_CreateMeshBuilder(p,a)                        (p)->lpVtbl->CreateMeshBuilder(p,a)
-#define IDirect3DRM3_CreateFace(p,a)                               (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRM3_CreateAnimation(p,a)                          (p)->lpVtbl->CreateAnimation(p,a)
-#define IDirect3DRM3_CreateAnimationSet(p,a)                       (p)->lpVtbl->CreateAnimationSet(p,a)
-#define IDirect3DRM3_CreateTexture(p,a,b)                          (p)->lpVtbl->CreateTexture(p,a,b)
-#define IDirect3DRM3_CreateLight(p,a,b,c)                          (p)->lpVtbl->CreateLight(p,a,b,c)
-#define IDirect3DRM3_CreateLightRGB(p,a,b,c,d,e)                   (p)->lpVtbl->CreateLightRGB(p,a,b,c,d,e)
-#define IDirect3DRM3_CreateMaterial(p,a,b)                         (p)->lpVtbl->CreateMaterial(p,a,b)
-#define IDirect3DRM3_CreateDevice(p,a,b,c)                         (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirect3DRM3_CreateDeviceFromSurface(p,a,b,c,d)            (p)->lpVtbl->CreateDeviceFromSurface(p,a,b,c,d)
-#define IDirect3DRM3_CreateDeviceFromD3D(p,a,b,c)                  (p)->lpVtbl->CreateDeviceFromD3D(p,a,b,c)
-#define IDirect3DRM3_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->lpVtbl->CreateDeviceFromClipper(p,a,b,c,d,e)
-#define IDirect3DRM3_CreateTextureFromSurface(p,a,b)               (p)->lpVtbl->CreateTextureFromSurface(p,a,b)
-#define IDirect3DRM3_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->lpVtbl->CreateShadow(p,a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM3_CreateViewport(p,a,b,c,d,e,f,g)               (p)->lpVtbl->CreateViewport(p,a,b,c,d,e,f,g)
-#define IDirect3DRM3_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q) (p)->lpVtbl->CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,q)
-#define IDirect3DRM3_CreateUserVisual(p,a,b,c)                     (p)->lpVtbl->CreateUserVisual(p,a,b,c)
-#define IDirect3DRM3_LoadTexture(p,a,b)                            (p)->lpVtbl->LoadTexture(p,a,b)
-#define IDirect3DRM3_LoadTextureFromResource(p,a,b,c,d)            (p)->lpVtbl->LoadTextureFromResource(p,a,b,c,d)
-#define IDirect3DRM3_SetSearchPath(p,a)                            (p)->lpVtbl->SetSearchPath(p,a)
-#define IDirect3DRM3_AddSearchPath(p,a)                            (p)->lpVtbl->AddSearchPath(p,a)
-#define IDirect3DRM3_GetSearchPath(p,a,b)                          (p)->lpVtbl->GetSearchPath(p,a,b)
-#define IDirect3DRM3_SetDefaultTextureColors(p,a)                  (p)->lpVtbl->SetDefaultTextureColors(p,a)
-#define IDirect3DRM3_SetDefaultTextureShades(p,a)                  (p)->lpVtbl->SetDefaultTextureShades(p,a)
-#define IDirect3DRM3_GetDevices(p,a)                               (p)->lpVtbl->GetDevices(p,a)
-#define IDirect3DRM3_GetNamedObject(p,a,b)                         (p)->lpVtbl->GetNamedObject(p,a,b)
-#define IDirect3DRM3_EnumerateObjects(p,a,b)                       (p)->lpVtbl->EnumerateObjects(p,a,b)
-#define IDirect3DRM3_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->lpVtbl->Load(p,a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM3_Tick(p,a)                                     (p)->lpVtbl->Tick(p,a)
-#define IDirect3DRM3_CreateProgressiveMesh(p,a)                    (p)->lpVtbl->CreateProgressiveMesh(p,a)
-#define IDirect3DRM3_RegisterClient(p,a,b)                         (p)->lpVtbl->RegisterClient(p,a,b)
-#define IDirect3DRM3_UnregisterClient(p,a)                         (p)->lpVtbl->UnregisterClient(p,a)
-#define IDirect3DRM3_CreateClippedVisual(p,ab)                     (p)->lpVtbl->CreateClippedVisual(p,a,b)
-#define IDirect3DRM3_SetOptions(p,a)                               (p)->lpVtbl->SetOptions(p,a)
-#define IDirect3DRM3_GetOptions(p,a)                               (p)->lpVtbl->GetOptions(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRM3_QueryInterface(p,a,b)                         (p)->QueryInterface(a,b)
-#define IDirect3DRM3_AddRef(p)                                     (p)->AddRef()
-#define IDirect3DRM3_Release(p)                                    (p)->Release()
-/*** IDirect3DRM3 methods ***/
-#define IDirect3DRM3_CreateObject(p,a,b,c,d)                       (p)->CreateObject(a,b,d)
-#define IDirect3DRM3_CreateFrame(p,a,b)                            (p)->CreateFrame(a,b)
-#define IDirect3DRM3_CreateMesh(p,a)                               (p)->CreateMesh(a)
-#define IDirect3DRM3_CreateMeshBuilder(p,a)                        (p)->CreateMeshBuilder(a)
-#define IDirect3DRM3_CreateFace(p,a)                               (p)->CreateFace(a)
-#define IDirect3DRM3_CreateAnimation(p,a)                          (p)->CreateAnimation(a)
-#define IDirect3DRM3_CreateAnimationSet(p,a)                       (p)->CreateAnimationSet(a)
-#define IDirect3DRM3_CreateTexture(p,a,b)                          (p)->CreateTexture(a,b)
-#define IDirect3DRM3_CreateLight(p,a,b,c)                          (p)->CreateLight(a,b,c)
-#define IDirect3DRM3_CreateLightRGB(p,a,b,c,d,e)                   (p)->CreateLightRGB(a,b,c,d,e)
-#define IDirect3DRM3_CreateMaterial(p,a,b)                         (p)->CreateMaterial(a,b)
-#define IDirect3DRM3_CreateDevice(p,a,b,c)                         (p)->CreateDevice(a,b,c)
-#define IDirect3DRM3_CreateDeviceFromSurface(p,a,b,c,d)            (p)->CreateDeviceFromSurface(a,b,c,d)
-#define IDirect3DRM3_CreateDeviceFromD3D(p,a,b,c)                  (p)->CreateDeviceFromD3D(a,b,c)
-#define IDirect3DRM3_CreateDeviceFromClipper(p,a,b,c,d,e)          (p)->CreateDeviceFromClipper(a,b,c,d,e)
-#define IDirect3DRM3_CreateTextureFromSurface(p,a,b)               (p)->CreateTextureFromSurface(a,b)
-#define IDirect3DRM3_CreateShadow(p,a,b,c,d,e,f,g,h,i)             (p)->CreateShadow(a,b,c,d,e,f,g,h,i)
-#define IDirect3DRM3_CreateViewport(p,a,b,c,d,e,f,g)               (p)->CreateViewport(a,b,c,d,e,f,g)
-#define IDirect3DRM3_CreateWrap(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (p)->CreateWrap(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
-#define IDirect3DRM3_CreateUserVisual(p,a,b,c)                     (p)->CreateUserVisual(a,b,c)
-#define IDirect3DRM3_LoadTexture(p,a,b)                            (p)->LoadTexture(a,b)
-#define IDirect3DRM3_LoadTextureFromResource(p,a,b,c,d)            (p)->LoadTextureFromResource(a,b,c,d)
-#define IDirect3DRM3_SetSearchPath(p,a)                            (p)->SetSearchPath(a)
-#define IDirect3DRM3_AddSearchPath(p,a)                            (p)->AddSearchPath(a)
-#define IDirect3DRM3_GetSearchPath(p,a,b)                          (p)->GetSearchPath(a,b)
-#define IDirect3DRM3_SetDefaultTextureColors(p,a)                  (p)->SetDefaultTextureColors(a)
-#define IDirect3DRM3_SetDefaultTextureShades(p,a)                  (p)->SetDefaultTextureShades(a)
-#define IDirect3DRM3_GetDevices(p,a)                               (p)->GetDevices(a)
-#define IDirect3DRM3_GetNamedObject(p,a,b)                         (p)->GetNamedObject(a,b)
-#define IDirect3DRM3_EnumerateObjects(p,a,b)                       (p)->EnumerateObjects(a,b)
-#define IDirect3DRM3_Load(p,a,b,c,d,e,f,g,h,i,j)                   (p)->Load(a,b,c,d,e,f,g,h,i,j)
-#define IDirect3DRM3_Tick(p,a)                                     (p)->Tick(a)
-#define IDirect3DRM3_CreateProgressiveMesh(p,a)                    (p)->CreateProgressiveMesh(p,a)
-#define IDirect3DRM3_RegisterClient(p,a,b)                         (p)->RegisterClient(p,a,b)
-#define IDirect3DRM3_UnregisterClient(p,a)                         (p)->UnregisterClient(p,a)
-#define IDirect3DRM3_CreateClippedVisual(p,ab)                     (p)->CreateClippedVisual(p,a,b)
-#define IDirect3DRM3_SetOptions(p,a)                               (p)->SetOptions(p,a)
-#define IDirect3DRM3_GetOptions(p,a)                               (p)->GetOptions(p,a)
-#endif
-
-#define D3DRM_OK                        DD_OK
-#define D3DRMERR_BADOBJECT              MAKE_DDHRESULT(781)
-#define D3DRMERR_BADTYPE                MAKE_DDHRESULT(782)
-#define D3DRMERR_BADALLOC               MAKE_DDHRESULT(783)
-#define D3DRMERR_FACEUSED               MAKE_DDHRESULT(784)
-#define D3DRMERR_NOTFOUND               MAKE_DDHRESULT(785)
-#define D3DRMERR_NOTDONEYET             MAKE_DDHRESULT(786)
-#define D3DRMERR_FILENOTFOUND           MAKE_DDHRESULT(787)
-#define D3DRMERR_BADFILE                MAKE_DDHRESULT(788)
-#define D3DRMERR_BADDEVICE              MAKE_DDHRESULT(789)
-#define D3DRMERR_BADVALUE               MAKE_DDHRESULT(790)
-#define D3DRMERR_BADMAJORVERSION        MAKE_DDHRESULT(791)
-#define D3DRMERR_BADMINORVERSION        MAKE_DDHRESULT(792)
-#define D3DRMERR_UNABLETOEXECUTE        MAKE_DDHRESULT(793)
-#define D3DRMERR_LIBRARYNOTFOUND        MAKE_DDHRESULT(794)
-#define D3DRMERR_INVALIDLIBRARY         MAKE_DDHRESULT(795)
-#define D3DRMERR_PENDING                MAKE_DDHRESULT(796)
-#define D3DRMERR_NOTENOUGHDATA          MAKE_DDHRESULT(797)
-#define D3DRMERR_REQUESTTOOLARGE        MAKE_DDHRESULT(798)
-#define D3DRMERR_REQUESTTOOSMALL        MAKE_DDHRESULT(799)
-#define D3DRMERR_CONNECTIONLOST         MAKE_DDHRESULT(800)
-#define D3DRMERR_LOADABORTED            MAKE_DDHRESULT(801)
-#define D3DRMERR_NOINTERNET             MAKE_DDHRESULT(802)
-#define D3DRMERR_BADCACHEFILE           MAKE_DDHRESULT(803)
-#define D3DRMERR_BOXNOTSET              MAKE_DDHRESULT(804)
-#define D3DRMERR_BADPMDATA              MAKE_DDHRESULT(805)
-#define D3DRMERR_CLIENTNOTREGISTERED    MAKE_DDHRESULT(806)
-#define D3DRMERR_NOTCREATEDFROMDDS      MAKE_DDHRESULT(807)
-#define D3DRMERR_NOSUCHKEY              MAKE_DDHRESULT(808)
-#define D3DRMERR_INCOMPATABLEKEY        MAKE_DDHRESULT(809)
-#define D3DRMERR_ELEMENTINUSE           MAKE_DDHRESULT(810)
-#define D3DRMERR_TEXTUREFORMATNOTFOUND  MAKE_DDHRESULT(811)
-#define D3DRMERR_NOTAGGREGATED          MAKE_DDHRESULT(812)
-
-#endif /* __D3DRM_H__ */
diff --git a/misc/builddeps/win64/dx/include/d3drmdef.h b/misc/builddeps/win64/dx/include/d3drmdef.h
deleted file mode 100644 (file)
index 80086dc..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright 2007 Vijay Kiran Kamuju
- * Copyright 2007 David ADAM
- * Copyright 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DRMDEFS_H__
-#define __D3DRMDEFS_H__
-
-#include <stddef.h>
-#include <d3dtypes.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef struct _D3DRMVECTOR4D
-{
-    D3DVALUE x;
-    D3DVALUE y;
-    D3DVALUE z;
-    D3DVALUE w;
-} D3DRMVECTOR4D, *LPD3DRMVECTOR4D;
-
-typedef D3DVALUE D3DRMMATRIX4D[4][4];
-
-typedef struct _D3DRMQUATERNION {
-    D3DVALUE s;
-    D3DVECTOR v;
-} D3DRMQUATERNION, *LPD3DRMQUATERNION;
-
-typedef struct _D3DRMRAY {
-    D3DVECTOR dvDir;
-    D3DVECTOR dvPos;
-} D3DRMRAY, *LPD3DRMRAY;
-
-typedef struct _D3DRMBOX {
-    D3DVECTOR min;
-    D3DVECTOR max;
-} D3DRMBOX, *LPD3DRMBOX;
-
-typedef enum _D3DRMLIGHTTYPE {
-    D3DRMLIGHT_AMBIENT,
-    D3DRMLIGHT_POINT,
-    D3DRMLIGHT_SPOT,
-    D3DRMLIGHT_DIRECTIONAL,
-    D3DRMLIGHT_PARALLELPOINT
-} D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE;
-
-typedef DWORD D3DRMRENDERQUALITY, *LPD3DRMRENDERQUALITY;
-
-typedef enum _D3DRMTEXTUREQUALITY {
-    D3DRMTEXTURE_NEAREST,
-    D3DRMTEXTURE_LINEAR,
-    D3DRMTEXTURE_MIPNEAREST,
-    D3DRMTEXTURE_MIPLINEAR,
-    D3DRMTEXTURE_LINEARMIPNEAREST,
-    D3DRMTEXTURE_LINEARMIPLINEAR
-} D3DRMTEXTUREQUALITY, *LPD3DRMTEXTUREQUALITY;
-
-typedef enum _D3DRMCOMBINETYPE {
-    D3DRMCOMBINE_REPLACE,
-    D3DRMCOMBINE_BEFORE,
-    D3DRMCOMBINE_AFTER
-} D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE;
-
-typedef struct _D3DRMPALETTEENTRY {
-    unsigned char red;
-    unsigned char green;
-    unsigned char blue;
-    unsigned char flags;
-} D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY;
-
-typedef struct _D3DRMIMAGE {
-    int width;
-    int height;
-    int aspectx;
-    int aspecty;
-    int depth;
-    int rgb;
-    int bytes_per_line;
-    void* buffer1;
-    void* buffer2;
-    unsigned long red_mask;
-    unsigned long green_mask;
-    unsigned long blue_mask;
-    unsigned long alpha_mask;
-    int palette_size;
-    D3DRMPALETTEENTRY* palette;
-} D3DRMIMAGE, *LPD3DRMIMAGE;
-
-typedef enum _D3DRMWRAPTYPE {
-    D3DRMWRAP_FLAT,
-    D3DRMWRAP_CYLINDER,
-    D3DRMWRAP_SPHERE,
-    D3DRMWRAP_CHROME,
-    D3DRMWRAP_SHEET,
-    D3DRMWRAP_BOX
-} D3DRMWRAPTYPE, *LPD3DRMWRAPTYPE;
-
-typedef enum _D3DRMPROJECTIONTYPE
-{
-    D3DRMPROJECT_PERSPECTIVE,
-    D3DRMPROJECT_ORTHOGRAPHIC,
-    D3DRMPROJECT_RIGHTHANDPERSPECTIVE,
-    D3DRMPROJECT_RIGHTHANDORTHOGRAPHIC
-} D3DRMPROJECTIONTYPE, *LPD3DRMPROJECTIONTYPE;
-
-typedef enum _D3DRMXOFFORMAT {
-    D3DRMXOF_BINARY,
-    D3DRMXOF_COMPRESSED,
-    D3DRMXOF_TEXT
-} D3DRMXOFFORMAT, *LPD3DRMXOFFORMAT;
-
-typedef DWORD D3DRMSAVEOPTIONS;
-
-typedef enum _D3DRMCOLORSOURCE {
-    D3DRMCOLOR_FROMFACE,
-    D3DRMCOLOR_FROMVERTEX
-} D3DRMCOLORSOURCE, *LPD3DRMCOLORSOURCE;
-
-typedef enum _D3DRMFRAMECONSTRAINT {
-    D3DRMCONSTRAIN_Z,
-    D3DRMCONSTRAIN_Y,
-    D3DRMCONSTRAIN_X
-} D3DRMFRAMECONSTRAINT, *LPD3DRMFRAMECONSTRAINT;
-
-typedef enum _D3DRMMATERIALMODE {
-    D3DRMMATERIAL_FROMMESH,
-    D3DRMMATERIAL_FROMPARENT,
-    D3DRMMATERIAL_FROMFRAME
-} D3DRMMATERIALMODE, *LPD3DRMMATERIALMODE;
-
-typedef enum _D3DRMFOGMODE {
-    D3DRMFOG_LINEAR,
-    D3DRMFOG_EXPONENTIAL,
-    D3DRMFOG_EXPONENTIALSQUARED
-} D3DRMFOGMODE, *LPD3DRMFOGMODE;
-
-typedef enum _D3DRMZBUFFERMODE {
-    D3DRMZBUFFER_FROMPARENT,
-    D3DRMZBUFFER_ENABLE,
-    D3DRMZBUFFER_DISABLE
-} D3DRMZBUFFERMODE, *LPD3DRMZBUFFERMODE;
-
-typedef enum _D3DRMSORTMODE {
-    D3DRMSORT_FROMPARENT,
-    D3DRMSORT_NONE,
-    D3DRMSORT_FRONTTOBACK,
-    D3DRMSORT_BACKTOFRONT
-} D3DRMSORTMODE, *LPD3DRMSORTMODE;
-
-typedef struct _D3DRMMATERIALOVERRIDE {
-    DWORD         dwSize;
-    DWORD         dwFlags;
-    D3DCOLORVALUE dcDiffuse;
-    D3DCOLORVALUE dcAmbient;
-    D3DCOLORVALUE dcEmissive;
-    D3DCOLORVALUE dcSpecular;
-    D3DVALUE      dvPower;
-    LPUNKNOWN     lpD3DRMTex;
-} D3DRMMATERIALOVERRIDE, *LPD3DRMMATERIALOVERRIDE;
-
-typedef DWORD D3DRMLOADOPTIONS;
-
-#define D3DRMLOAD_FROMFILE             0x000L
-#define D3DRMLOAD_FROMRESOURCE         0x001L
-#define D3DRMLOAD_FROMMEMORY           0x002L
-#define D3DRMLOAD_FROMSTREAM           0x004L
-#define D3DRMLOAD_FROMURL              0x008L
-
-#define D3DRMLOAD_BYNAME               0x010L
-#define D3DRMLOAD_BYPOSITION           0x020L
-#define D3DRMLOAD_BYGUID               0x040L
-#define D3DRMLOAD_FIRST                0x080L
-
-#define D3DRMLOAD_INSTANCEBYREFERENCE  0x100L
-#define D3DRMLOAD_INSTANCEBYCOPYING    0x200L
-
-#define D3DRMLOAD_ASYNCHRONOUS         0x400L
-
-typedef struct _D3DRMLOADRESOURCE {
-    HMODULE hModule;
-    LPCSTR /*LPCTSTR*/ lpName;
-    LPCSTR /*LPCTSTR*/ lpType;
-} D3DRMLOADRESOURCE, *LPD3DRMLOADRESOURCE;
-
-typedef struct _D3DRMLOADMEMORY {
-    LPVOID lpMemory;
-    DWORD dSize;
-} D3DRMLOADMEMORY, *LPD3DRMLOADMEMORY;
-
-typedef struct _D3DRMPMESHLOADSTATUS {
-    DWORD dwSize;
-    DWORD dwPMeshSize;
-    DWORD dwBaseMeshSize;
-    DWORD dwBytesLoaded;
-    DWORD dwVerticesLoaded;
-    DWORD dwFacesLoaded;
-    HRESULT dwLoadResult;
-    DWORD dwFlags;
-} D3DRMPMESHLOADSTATUS, *LPD3DRMPMESHLOADSTATUS;
-
-typedef enum _D3DRMUSERVISUALREASON {
-    D3DRMUSERVISUAL_CANSEE,
-    D3DRMUSERVISUAL_RENDER
-} D3DRMUSERVISUALREASON, *LPD3DRMUSERVISUALREASON;
-
-typedef DWORD D3DRMMAPPING;
-
-typedef struct _D3DRMVERTEX {
-    D3DVECTOR position;
-    D3DVECTOR normal;
-    D3DVALUE  tu;
-    D3DVALUE  tv;
-    D3DCOLOR  color;
-} D3DRMVERTEX, *LPD3DRMVERTEX;
-
-typedef LONG D3DRMGROUPINDEX;
-
-void WINAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D, LPD3DRMQUATERNION);
-
-LPD3DRMQUATERNION WINAPI D3DRMQuaternionFromRotation(LPD3DRMQUATERNION ,LPD3DVECTOR,D3DVALUE);
-LPD3DRMQUATERNION WINAPI D3DRMQuaternionMultiply(LPD3DRMQUATERNION, LPD3DRMQUATERNION, LPD3DRMQUATERNION);
-LPD3DRMQUATERNION WINAPI D3DRMQuaternionSlerp(LPD3DRMQUATERNION, LPD3DRMQUATERNION, LPD3DRMQUATERNION, D3DVALUE);
-
-LPD3DVECTOR WINAPI D3DRMVectorAdd(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorCrossProduct(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
-D3DVALUE WINAPI D3DRMVectorDotProduct(LPD3DVECTOR, LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorNormalize(LPD3DVECTOR);
-
-#define D3DRMVectorNormalise D3DRMVectorNormalize
-
-D3DVALUE WINAPI D3DRMVectorModulus(LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorRandom(LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorRotate(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR, D3DVALUE);
-LPD3DVECTOR WINAPI D3DRMVectorReflect(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
-LPD3DVECTOR WINAPI D3DRMVectorScale(LPD3DVECTOR, LPD3DVECTOR, D3DVALUE);
-LPD3DVECTOR WINAPI D3DRMVectorSubtract(LPD3DVECTOR, LPD3DVECTOR, LPD3DVECTOR);
-
-D3DCOLOR WINAPI D3DRMCreateColorRGB(D3DVALUE, D3DVALUE, D3DVALUE);
-D3DCOLOR WINAPI D3DRMCreateColorRGBA(D3DVALUE, D3DVALUE, D3DVALUE, D3DVALUE);
-D3DVALUE WINAPI D3DRMColorGetAlpha(D3DCOLOR);
-D3DVALUE WINAPI D3DRMColorGetBlue(D3DCOLOR);
-D3DVALUE WINAPI D3DRMColorGetGreen(D3DCOLOR);
-D3DVALUE WINAPI D3DRMColorGetRed(D3DCOLOR);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/win64/dx/include/d3drmobj.h b/misc/builddeps/win64/dx/include/d3drmobj.h
deleted file mode 100644 (file)
index bd22e89..0000000
+++ /dev/null
@@ -1,3033 +0,0 @@
-/*
- * Copyright (C) 2008 Vijay Kiran Kamuju
- * Copyright (C) 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DRMOBJ_H__
-#define __D3DRMOBJ_H__
-
-#include <objbase.h>
-#define VIRTUAL
-#include <d3drmdef.h>
-#include <d3d.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-
-DEFINE_GUID(IID_IDirect3DRMObject,          0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMObject2,         0x4516ec7c, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMDevice,          0xe9e19280, 0x6e05, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMDevice2,         0x4516ec78, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMDevice3,         0x549f498b, 0xbfeb, 0x11d1, 0x8e, 0xd8, 0x00, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
-DEFINE_GUID(IID_IDirect3DRMViewport,        0xeb16cb02, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMViewport2,       0x4a1b1be6, 0xbfed, 0x11d1, 0x8e, 0xd8, 0x00, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
-DEFINE_GUID(IID_IDirect3DRMFrame,           0xeb16cb03, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMFrame2,          0xc3dfbd60, 0x3988, 0x11d0, 0x9e, 0xc2, 0x00, 0x00, 0xc0, 0x29, 0x1a, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMFrame3,          0xff6b7f70, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMVisual,          0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMesh,            0xa3a80d01, 0x6e12, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMeshBuilder,     0xa3a80d02, 0x6e12, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMeshBuilder2,    0x4516ec77, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMMeshBuilder3,    0x4516ec82, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMFace,            0xeb16cb07, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMFace2,           0x4516ec81, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMLight,           0xeb16cb08, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMTexture,         0xeb16cb09, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMTexture2,        0x120f30c0, 0x1629, 0x11d0, 0x94, 0x1c, 0x00, 0x80, 0xc8, 0x0c, 0xfa, 0x7b);
-DEFINE_GUID(IID_IDirect3DRMTexture3,        0xff6b7f73, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMWrap,            0xeb16cb0a, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMaterial,        0xeb16cb0b, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMMaterial2,       0xff6b7f75, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMAnimation,       0xeb16cb0d, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMAnimation2,      0xff6b7f77, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMAnimationSet,    0xeb16cb0e, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMAnimationSet2,   0xff6b7f79, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
-DEFINE_GUID(IID_IDirect3DRMObjectArray,     0x242f6bc2, 0x3849, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMDeviceArray,     0xeb16cb10, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMViewportArray,   0xeb16cb11, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMFrameArray,      0xeb16cb12, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMVisualArray,     0xeb16cb13, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMLightArray,      0xeb16cb14, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMPickedArray,     0xeb16cb16, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMFaceArray,       0xeb16cb17, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMAnimationArray,  0xd5f1cae0, 0x4bd7, 0x11d1, 0xb9, 0x74, 0x00, 0x60, 0x08, 0x3e, 0x45, 0xf3);
-DEFINE_GUID(IID_IDirect3DRMUserVisual,      0x59163de0, 0x6d43, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMShadow,          0xaf359780, 0x6ba3, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
-DEFINE_GUID(IID_IDirect3DRMShadow2,         0x86b44e25, 0x9c82, 0x11d1, 0xbb, 0x0b, 0x00, 0xa0, 0xc9, 0x81, 0xa0, 0xa6);
-DEFINE_GUID(IID_IDirect3DRMInterpolator,    0x242f6bc1, 0x3849, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMProgressiveMesh, 0x4516ec79, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMPicked2Array,    0x4516ec7b, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
-DEFINE_GUID(IID_IDirect3DRMClippedVisual,   0x5434e733, 0x6d66, 0x11d1, 0xbb, 0x0b, 0x00, 0x00, 0xf8, 0x75, 0x86, 0x5a);
-
-typedef struct IDirect3DRMObject          *LPDIRECT3DRMOBJECT, **LPLPDIRECT3DRMOBJECT;
-typedef struct IDirect3DRMObject2         *LPDIRECT3DRMOBJECT2, **LPLPDIRECT3DRMOBJECT2;
-typedef struct IDirect3DRMDevice          *LPDIRECT3DRMDEVICE, **LPLPDIRECT3DRMDEVICE;
-typedef struct IDirect3DRMDevice2         *LPDIRECT3DRMDEVICE2, **LPLPDIRECT3DRMDEVICE2;
-typedef struct IDirect3DRMDevice3         *LPDIRECT3DRMDEVICE3, **LPLPDIRECT3DRMDEVICE3;
-typedef struct IDirect3DRMViewport        *LPDIRECT3DRMVIEWPORT, **LPLPDIRECT3DRMVIEWPORT;
-typedef struct IDirect3DRMViewport2       *LPDIRECT3DRMVIEWPORT2, **LPLPDIRECT3DRMVIEWPORT2;
-typedef struct IDirect3DRMFrame           *LPDIRECT3DRMFRAME, **LPLPDIRECT3DRMFRAME;
-typedef struct IDirect3DRMFrame2          *LPDIRECT3DRMFRAME2, **LPLPDIRECT3DRMFRAME2;
-typedef struct IDirect3DRMFrame3          *LPDIRECT3DRMFRAME3, **LPLPDIRECT3DRMFRAME3;
-typedef struct IDirect3DRMVisual          *LPDIRECT3DRMVISUAL, **LPLPDIRECT3DRMVISUAL;
-typedef struct IDirect3DRMMesh            *LPDIRECT3DRMMESH, **LPLPDIRECT3DRMMESH;
-typedef struct IDirect3DRMMeshBuilder     *LPDIRECT3DRMMESHBUILDER, **LPLPDIRECT3DRMMESHBUILDER;
-typedef struct IDirect3DRMMeshBuilder2    *LPDIRECT3DRMMESHBUILDER2, **LPLPDIRECT3DRMMESHBUILDER2;
-typedef struct IDirect3DRMMeshBuilder3    *LPDIRECT3DRMMESHBUILDER3, **LPLPDIRECT3DRMMESHBUILDER3;
-typedef struct IDirect3DRMFace            *LPDIRECT3DRMFACE, **LPLPDIRECT3DRMFACE;
-typedef struct IDirect3DRMFace2           *LPDIRECT3DRMFACE2, **LPLPDIRECT3DRMFACE2;
-typedef struct IDirect3DRMLight           *LPDIRECT3DRMLIGHT, **LPLPDIRECT3DRMLIGHT;
-typedef struct IDirect3DRMTexture         *LPDIRECT3DRMTEXTURE, **LPLPDIRECT3DRMTEXTURE;
-typedef struct IDirect3DRMTexture2        *LPDIRECT3DRMTEXTURE2, **LPLPDIRECT3DRMTEXTURE2;
-typedef struct IDirect3DRMTexture3        *LPDIRECT3DRMTEXTURE3, **LPLPDIRECT3DRMTEXTURE3;
-typedef struct IDirect3DRMWrap            *LPDIRECT3DRMWRAP, **LPLPDIRECT3DRMWRAP;
-typedef struct IDirect3DRMMaterial        *LPDIRECT3DRMMATERIAL, **LPLPDIRECT3DRMMATERIAL;
-typedef struct IDirect3DRMMaterial2       *LPDIRECT3DRMMATERIAL2, **LPLPDIRECT3DRMMATERIAL2;
-typedef struct IDirect3DRMAnimation       *LPDIRECT3DRMANIMATION, **LPLPDIRECT3DRMANIMATION;
-typedef struct IDirect3DRMAnimation2      *LPDIRECT3DRMANIMATION2, **LPLPDIRECT3DRMANIMATION2;
-typedef struct IDirect3DRMAnimationSet    *LPDIRECT3DRMANIMATIONSET, **LPLPDIRECT3DRMANIMATIONSET;
-typedef struct IDirect3DRMAnimationSet2   *LPDIRECT3DRMANIMATIONSET2, **LPLPDIRECT3DRMANIMATIONSET2;
-typedef struct IDirect3DRMUserVisual      *LPDIRECT3DRMUSERVISUAL, **LPLPDIRECT3DRMUSERVISUAL;
-typedef struct IDirect3DRMShadow          *LPDIRECT3DRMSHADOW, **LPLPDIRECT3DRMSHADOW;
-typedef struct IDirect3DRMShadow2         *LPDIRECT3DRMSHADOW2, **LPLPDIRECT3DRMSHADOW2;
-typedef struct IDirect3DRMArray           *LPDIRECT3DRMARRAY, **LPLPDIRECT3DRMARRAY;
-typedef struct IDirect3DRMObjectArray     *LPDIRECT3DRMOBJECTARRAY, **LPLPDIRECT3DRMOBJECTARRAY;
-typedef struct IDirect3DRMDeviceArray     *LPDIRECT3DRMDEVICEARRAY, **LPLPDIRECT3DRMDEVICEARRAY;
-typedef struct IDirect3DRMFaceArray       *LPDIRECT3DRMFACEARRAY, **LPLPDIRECT3DRMFACEARRAY;
-typedef struct IDirect3DRMViewportArray   *LPDIRECT3DRMVIEWPORTARRAY, **LPLPDIRECT3DRMVIEWPORTARRAY;
-typedef struct IDirect3DRMFrameArray      *LPDIRECT3DRMFRAMEARRAY, **LPLPDIRECT3DRMFRAMEARRAY;
-typedef struct IDirect3DRMAnimationArray  *LPDIRECT3DRMANIMATIONARRAY, **LPLPDIRECT3DRMANIMATIONARRAY;
-typedef struct IDirect3DRMVisualArray     *LPDIRECT3DRMVISUALARRAY, **LPLPDIRECT3DRMVISUALARRAY;
-typedef struct IDirect3DRMPickedArray     *LPDIRECT3DRMPICKEDARRAY, **LPLPDIRECT3DRMPICKEDARRAY;
-typedef struct IDirect3DRMPicked2Array    *LPDIRECT3DRMPICKED2ARRAY, **LPLPDIRECT3DRMPICKED2ARRAY;
-typedef struct IDirect3DRMLightArray      *LPDIRECT3DRMLIGHTARRAY, **LPLPDIRECT3DRMLIGHTARRAY;
-typedef struct IDirect3DRMProgressiveMesh *LPDIRECT3DRMPROGRESSIVEMESH, **LPLPDIRECT3DRMPROGRESSIVEMESH;
-typedef struct IDirect3DRMClippedVisual   *LPDIRECT3DRMCLIPPEDVISUAL, **LPLPDIRECT3DRMCLIPPEDVISUAL;
-
-/* ********************************************************************
-   Types and structures
-   ******************************************************************** */
-
-typedef void (__cdecl *D3DRMOBJECTCALLBACK)(LPDIRECT3DRMOBJECT obj, LPVOID arg);
-typedef void (__cdecl *D3DRMFRAMEMOVECALLBACK)(LPDIRECT3DRMFRAME obj, LPVOID arg, D3DVALUE delta);
-typedef void (__cdecl *D3DRMFRAME3MOVECALLBACK)(LPDIRECT3DRMFRAME3 obj, LPVOID arg, D3DVALUE delta);
-typedef void (__cdecl *D3DRMUPDATECALLBACK)(LPDIRECT3DRMDEVICE obj, LPVOID arg, int, LPD3DRECT);
-typedef int (__cdecl *D3DRMUSERVISUALCALLBACK)(LPDIRECT3DRMUSERVISUAL obj, LPVOID arg,
-    D3DRMUSERVISUALREASON reason, LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMVIEWPORT view);
-typedef HRESULT (__cdecl *D3DRMLOADTEXTURECALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE *);
-typedef HRESULT (__cdecl *D3DRMLOADTEXTURE3CALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE3 *);
-typedef void (__cdecl *D3DRMLOADCALLBACK)(LPDIRECT3DRMOBJECT object, REFIID objectguid, LPVOID arg);
-
-typedef struct _D3DRMPICKDESC
-{
-    ULONG     ulFaceIdx;
-    LONG      lGroupIdx;
-    D3DVECTOR vPosition;
-} D3DRMPICKDESC, *LPD3DRMPICKDESC;
-
-typedef struct _D3DRMPICKDESC2
-{
-    ULONG     ulFaceIdx;
-    LONG      lGroupIdx;
-    D3DVECTOR vPosition;
-    D3DVALUE  tu;
-    D3DVALUE  tv;
-    D3DVECTOR dvNormal;
-    D3DCOLOR  dcColor;
-} D3DRMPICKDESC2, *LPD3DRMPICKDESC2;
-
-/*****************************************************************************
- * IDirect3DRMObject interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMObject
-DECLARE_INTERFACE_(IDirect3DRMObject,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMObject_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMObject_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMObject_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMObject_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMObject_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMObject_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMObject_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMObject_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMObject_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMObject_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMObject_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMObject_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMObject_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMObject_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMObject_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMObject_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMObject2 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMObject2
-DECLARE_INTERFACE_(IDirect3DRMObject2,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject2 methods ***/
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(GetClientData)(THIS_ DWORD id, LPVOID* ppData) PURE;
-    STDMETHOD(GetDirect3DRM)(THIS_ LPDIRECT3DRM* ppDirect3DRM) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD pSize, LPSTR pName) PURE;
-    STDMETHOD(SetClientData)(THIS_ DWORD id, LPVOID pData, DWORD flags) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR pName) PURE;
-    STDMETHOD(GetAge)(THIS_ DWORD flags, LPDWORD pAge) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMObject2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMObject2_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject2 methods ***/
-#define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->lpVtbl->SetClientData(p,a,b)
-#define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->lpVtbl->GetDirect3DRM(p,a)
-#define IDirect3DRMObject2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->lpVtbl->SetClientData(p,a,b,c)
-#define IDirect3DRMObject2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMObject2_GetAge(p,a,b)                (p)->lpVtbl->GetAge(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMObject2_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMObject2_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject2 methods ***/
-#define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->SetClientData(a,b)
-#define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->GetDirect3DRM(a)
-#define IDirect3DRMObject2_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->SetClientData(a,b,c)
-#define IDirect3DRMObject2_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMObject2_GetAge(p,a,b)                (p)->GetAge(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMVisual interface
- */
-#define INTERFACE IDirect3DRMVisual
-DECLARE_INTERFACE_(IDirect3DRMVisual,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMVisual_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMVisual_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMVisual_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMVisual_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMVisual_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMVisual_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMVisual_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMVisual_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMVisual_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMVisual_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMVisual_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMVisual_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMDevice interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMDevice
-DECLARE_INTERFACE_(IDirect3DRMDevice,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMDevice methods ***/
-    STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
-    STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
-    STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
-    STDMETHOD(Update)(THIS) PURE;
-    STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
-    STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
-    STDMETHOD(SetDither)(THIS_ BOOL) PURE;
-    STDMETHOD(SetShades)(THIS_ DWORD) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
-    STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
-    STDMETHOD_(BOOL, GetDither)(THIS) PURE;
-    STDMETHOD_(DWORD, GetShades)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
-    STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMDevice_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMDevice_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMDevice_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMDevice_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMDevice_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMDevice_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
-#define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice_Update(p)                    (p)->lpVtbl->Update(p)
-#define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
-#define IDirect3DRMDevice_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
-#define IDirect3DRMDevice_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
-#define IDirect3DRMDevice_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
-#define IDirect3DRMDevice_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
-#define IDirect3DRMDevice_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
-#define IDirect3DRMDevice_GetDither(p)                 (p)->lpVtbl->GetDither(p)
-#define IDirect3DRMDevice_GetShades(p)                 (p)->lpVtbl->GetShades(p)
-#define IDirect3DRMDevice_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMDevice_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
-#define IDirect3DRMDevice_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMDevice_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
-#define IDirect3DRMDevice_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
-#define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMDevice_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMDevice_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMDevice_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMDevice_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMDevice_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMDevice_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice_Init(p,a,b)                  (p)->Init(p,a,b)
-#define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice_Update(p)                    (p)->Update(p)
-#define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->SetBufferCount(p,a)
-#define IDirect3DRMDevice_GetBufferCount(p)            (p)->GetBufferCount(p)
-#define IDirect3DRMDevice_SetDither(p,a)               (p)->SetDither(p,a)
-#define IDirect3DRMDevice_SetShades(p,a)               (p)->SetShades(p,a)
-#define IDirect3DRMDevice_SetQuality(p,a)              (p)->SetQuality(p,a)
-#define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->SetTextureQuality(p,a)
-#define IDirect3DRMDevice_GetViewports(p,a)            (p)->GetViewports(p,a)
-#define IDirect3DRMDevice_GetDither(p)                 (p)->GetDither(p)
-#define IDirect3DRMDevice_GetShades(p)                 (p)->GetShades(p)
-#define IDirect3DRMDevice_GetHeight(p)                 (p)->GetHeight(p)
-#define IDirect3DRMDevice_GetWidth(p)                  (p)->GetWidth(p)
-#define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->GetWireframeOptions(p)
-#define IDirect3DRMDevice_GetQuality(p)                (p)->GetQuality(p)
-#define IDirect3DRMDevice_GetColorModel(p)             (p)->GetColorModel(p)
-#define IDirect3DRMDevice_GetTextureQuality(p)         (p)->GetTextureQuality(p)
-#define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(p,a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMDevice2 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMDevice2
-DECLARE_INTERFACE_(IDirect3DRMDevice2,IDirect3DRMDevice)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMDevice methods ***/
-    STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
-    STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
-    STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
-    STDMETHOD(Update)(THIS) PURE;
-    STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
-    STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
-    STDMETHOD(SetDither)(THIS_ BOOL) PURE;
-    STDMETHOD(SetShades)(THIS_ DWORD) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
-    STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
-    STDMETHOD_(BOOL, GetDither)(THIS) PURE;
-    STDMETHOD_(DWORD, GetShades)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
-    STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
-    /*** IDirect3DRMDevice2 methods ***/
-    STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev) PURE;
-    STDMETHOD(InitFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack) PURE;
-    STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
-    STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMDevice2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMDevice2_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMDevice2_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMDevice2_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMDevice2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMDevice2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice2_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
-#define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice2_Update(p)                    (p)->lpVtbl->Update(p)
-#define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
-#define IDirect3DRMDevice2_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
-#define IDirect3DRMDevice2_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
-#define IDirect3DRMDevice2_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
-#define IDirect3DRMDevice2_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
-#define IDirect3DRMDevice2_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
-#define IDirect3DRMDevice2_GetDither(p)                 (p)->lpVtbl->GetDither(p)
-#define IDirect3DRMDevice2_GetShades(p)                 (p)->lpVtbl->GetShades(p)
-#define IDirect3DRMDevice2_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMDevice2_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
-#define IDirect3DRMDevice2_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMDevice2_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
-#define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
-#define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
-/*** IDirect3DRMDevice2 methods ***/
-#define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->lpVtbl->InitFromD3D2(p,a,b)
-#define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->lpVtbl->InitFromSurface(p,a,b,c)
-#define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->lpVtbl->SetRenderMode(p,a)
-#define IDirect3DRMDevice2_GetRenderMode(p)             (p)->lpVtbl->GetRenderMode(p)
-#define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->lpVtbl->GetDirect3DDevice2(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMDevice2_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMDevice2_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMDevice2_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMDevice2_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMDevice2_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMDevice2_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice2_Init(p,a,b)                  (p)->Init(p,a,b)
-#define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice2_Update(p)                    (p)->Update(p)
-#define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->SetBufferCount(p,a)
-#define IDirect3DRMDevice2_GetBufferCount(p)            (p)->GetBufferCount(p)
-#define IDirect3DRMDevice2_SetDither(p,a)               (p)->SetDither(p,a)
-#define IDirect3DRMDevice2_SetShades(p,a)               (p)->SetShades(p,a)
-#define IDirect3DRMDevice2_SetQuality(p,a)              (p)->SetQuality(p,a)
-#define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->SetTextureQuality(p,a)
-#define IDirect3DRMDevice2_GetViewports(p,a)            (p)->GetViewports(p,a)
-#define IDirect3DRMDevice2_GetDither(p)                 (p)->GetDither(p)
-#define IDirect3DRMDevice2_GetShades(p)                 (p)->GetShades(p)
-#define IDirect3DRMDevice2_GetHeight(p)                 (p)->GetHeight(p)
-#define IDirect3DRMDevice2_GetWidth(p)                  (p)->GetWidth(p)
-#define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->GetWireframeOptions(p)
-#define IDirect3DRMDevice2_GetQuality(p)                (p)->GetQuality(p)
-#define IDirect3DRMDevice2_GetColorModel(p)             (p)->GetColorModel(p)
-#define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->GetTextureQuality(p)
-#define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(p,a)
-/*** IDirect3DRMDevice2 methods ***/
-#define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->InitFromD3D2(a,b)
-#define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->InitFromSurface(a,b,c)
-#define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->SetRenderMode(a)
-#define IDirect3DRMDevice2_GetRenderMode(p)             (p)->GetRenderMode()
-#define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->GetDirect3DDevice2(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMDevice3 interface
- */
-#ifdef WINE_NO_UNICODE_MACROS
-#undef GetClassName
-#endif
-#define INTERFACE IDirect3DRMDevice3
-DECLARE_INTERFACE_(IDirect3DRMDevice3,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMDevice methods ***/
-    STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
-    STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev) PURE;
-    STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height) PURE;
-    STDMETHOD(Update)(THIS) PURE;
-    STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
-    STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
-    STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
-    STDMETHOD(SetDither)(THIS_ BOOL) PURE;
-    STDMETHOD(SetShades)(THIS_ DWORD) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
-    STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
-    STDMETHOD_(BOOL, GetDither)(THIS) PURE;
-    STDMETHOD_(DWORD, GetShades)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
-    STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
-    /*** IDirect3DRMDevice2 methods ***/
-    STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 pD3D, LPDIRECT3DDEVICE2 pD3DDev) PURE;
-    STDMETHOD(InitFromSurface)(THIS_ LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack) PURE;
-    STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
-    STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
-    STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
-    /*** IDirect3DRMDevice3 methods ***/
-    STDMETHOD(FindPreferredTextureFormat)(THIS_ DWORD BitDepths, DWORD flags, LPDDPIXELFORMAT pDDPF) PURE;
-    STDMETHOD(RenderStateChange)(THIS_ D3DRENDERSTATETYPE drsType, DWORD val, DWORD flags) PURE;
-    STDMETHOD(LightStateChange)(THIS_ D3DLIGHTSTATETYPE drsType, DWORD val, DWORD flags) PURE;
-    STDMETHOD(GetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, LPDWORD pFlags) PURE;
-    STDMETHOD(SetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, DWORD flags) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMDevice3_AddRef(p)                           (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMDevice3_Release(p)                          (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMDevice3_GetAppData(p)                       (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMDevice3_SetName(p,a)                        (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice3_Init(p,a,b)                         (p)->lpVtbl->Init(p,a,b)
-#define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->lpVtbl->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice3_Update(p)                           (p)->lpVtbl->Update(p)
-#define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->lpVtbl->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->lpVtbl->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->lpVtbl->SetBufferCount(p,a)
-#define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->lpVtbl->GetBufferCount(p)
-#define IDirect3DRMDevice3_SetDither(p,a)                      (p)->lpVtbl->SetDither(p,a)
-#define IDirect3DRMDevice3_SetShades(p,a)                      (p)->lpVtbl->SetShades(p,a)
-#define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->lpVtbl->SetTextureQuality(p,a)
-#define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->lpVtbl->GetViewports(p,a)
-#define IDirect3DRMDevice3_GetDither(p)                        (p)->lpVtbl->GetDither(p)
-#define IDirect3DRMDevice3_GetShades(p)                        (p)->lpVtbl->GetShades(p)
-#define IDirect3DRMDevice3_GetHeight(p)                        (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMDevice3_GetWidth(p)                         (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->lpVtbl->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->lpVtbl->GetWireframeOptions(p)
-#define IDirect3DRMDevice3_GetQuality(p)                       (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMDevice3_GetColorModel(p)                    (p)->lpVtbl->GetColorModel(p)
-#define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->lpVtbl->GetTextureQuality(p)
-#define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->lpVtbl->GetDirect3DDevice(p,a)
-/*** IDirect3DRMDevice2 methods ***/
-#define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->lpVtbl->InitFromD3D2(p,a,b)
-#define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->lpVtbl->InitFromSurface(p,a,b,c)
-#define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->lpVtbl->SetRenderMode(p,a)
-#define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->lpVtbl->GetRenderMode(p)
-#define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->lpVtbl->GetDirect3DDevice2(p,a)
-/*** IDirect3DRMDevice3 methods ***/
-#define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->lpVtbl->FindPreferredTextureFormat(p,a,b)
-#define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->lpVtbl->RenderStateChange(p,a,b)
-#define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->lpVtbl->LightStateChange(p,a,b)
-#define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->GetStateChangeOptions(p,a,b)
-#define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->SetStateChangeOptions(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->QueryInterface(a,b)
-#define IDirect3DRMDevice3_AddRef(p)                           (p)->AddRef()
-#define IDirect3DRMDevice3_Release(p)                          (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->Clone(a,b,c)
-#define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->SetAppData(a)
-#define IDirect3DRMDevice3_GetAppData(p)                       (p)->GetAppData()
-#define IDirect3DRMDevice3_SetName(p,a)                        (p)->SetName(a)
-#define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->GetName(a,b)
-#define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->GetClassName(a,b)
-/*** IDirect3DRMDevice methods ***/
-#define IDirect3DRMDevice3_Init(p,a,b)                         (p)->Init(p,a,b)
-#define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->InitFromD3D(p,a,b)
-#define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->InitFromClipper(p,a,b,c,d)
-#define IDirect3DRMDevice3_Update(p)                           (p)->Update(p)
-#define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->AddUpdateCallback(p,a,b)
-#define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->DeleteUpdateCallback(p,a,b,c)
-#define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->SetBufferCount(p,a)
-#define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->GetBufferCount(p)
-#define IDirect3DRMDevice3_SetDither(p,a)                      (p)->SetDither(p,a)
-#define IDirect3DRMDevice3_SetShades(p,a)                      (p)->SetShades(p,a)
-#define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->SetQuality(p,a)
-#define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->SetTextureQuality(p,a)
-#define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->GetViewports(p,a)
-#define IDirect3DRMDevice3_GetDither(p)                        (p)->GetDither(p)
-#define IDirect3DRMDevice3_GetShades(p)                        (p)->GetShades(p)
-#define IDirect3DRMDevice3_GetHeight(p)                        (p)->GetHeight(p)
-#define IDirect3DRMDevice3_GetWidth(p)                         (p)->GetWidth(p)
-#define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->GetTrianglesDrawn(p)
-#define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->GetWireframeOptions(p)
-#define IDirect3DRMDevice3_GetQuality(p)                       (p)->GetQuality(p)
-#define IDirect3DRMDevice3_GetColorModel(p)                    (p)->GetColorModel(p)
-#define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->GetTextureQuality(p)
-#define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->GetDirect3DDevice(p,a)
-/*** IDirect3DRMDevice2 methods ***/
-#define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->InitFromD3D2(a,b)
-#define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->InitFromSurface(a,b,c)
-#define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->SetRenderMode(a)
-#define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->GetRenderMode()
-#define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->GetDirect3DDevice2(a)
-/*** IDirect3DRMDevice3 methods ***/
-#define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->FindPreferredTextureFormat(a,b,c)
-#define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->RenderStateChange(a,b,c)
-#define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->LightStateChange(a,b,c)
-#define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->GetStateChangeOptions(a,b,c)
-#define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->SetStateChangeOptions(a,b,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMViewport interface
- */
-#define INTERFACE IDirect3DRMViewport
-DECLARE_INTERFACE_(IDirect3DRMViewport,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMViewport methods ***/
-    STDMETHOD(Init) (THIS_ LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMFRAME camera, DWORD xpos, DWORD ypos,
-        DWORD width, DWORD height) PURE;
-    STDMETHOD(Clear)(THIS) PURE;
-    STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
-    STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
-    STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
-    STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
-    STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
-    STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE *) PURE;
-    STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
-    STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
-    STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
-    STDMETHOD_(LONG, GetX)(THIS) PURE;
-    STDMETHOD_(LONG, GetY)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
-    STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
-    STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMViewport_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMViewport_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMViewport_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMViewport_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMViewport_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMViewport_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMViewport methods ***/
-#define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->lpVtbl->Init(p,a,b,c,d)
-#define IDirect3DRMViewport_Clear(p)                     (p)->lpVtbl->Clear(p)
-#define IDirect3DRMViewport_Render(p,a)                  (p)->lpVtbl->Render(p,a)
-#define IDirect3DRMViewport_SetFront(p,a)                (p)->lpVtbl->SetFront(p,a)
-#define IDirect3DRMViewport_SetBack(p,a)                 (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport_SetField(p,a)                (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->lpVtbl->SetUniformScaling(p,a)
-#define IDirect3DRMViewport_SetCamera(p,a)               (p)->lpVtbl->SetCamera(p,a)
-#define IDirect3DRMViewport_SetProjection(p,a)           (p)->lpVtbl->SetProjection(p,a)
-#define IDirect3DRMViewport_Transform(p,a,b)             (p)->lpVtbl->Transform(p,a,b)
-#define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->lpVtbl->(p,a,b)
-#define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->lpVtbl->Configure(p,a,b,c,d)
-#define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
-#define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->lpVtbl->SetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport_GetCamera(p,a)               (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->lpVtbl->GetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->lpVtbl->Pick(p,a,b,c)
-#define IDirect3DRMViewport_GetUniformScaling(p)         (p)->lpVtbl->GetUniformScaling(p)
-#define IDirect3DRMViewport_GetX(p)                      (p)->lpVtbl->GetX(p)
-#define IDirect3DRMViewport_GetY(p)                      (p)->lpVtbl->GetY(p)
-#define IDirect3DRMViewport_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMViewport_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMViewport_GetField(p)                  (p)->lpVtbl->GetField(p)
-#define IDirect3DRMViewport_GetBack(p)                   (p)->lpVtbl->GetBack(p)
-#define IDirect3DRMViewport_GetFront(p)                  (p)->lpVtbl->GetFront(p)
-#define IDirect3DRMViewport_GetProjection(p)             (p)->lpVtbl->GetProjection(p)
-#define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->lpVtbl->GetDirect3DViewport(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirect3DRMViewport_AddRef(p)                    (p)->AddRef()
-#define IDirect3DRMViewport_Release(p)                   (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->Clone(a,b,c)
-#define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMViewport_SetAppData(p,a)              (p)->SetAppData(a)
-#define IDirect3DRMViewport_GetAppData(p)                (p)->GetAppData()
-#define IDirect3DRMViewport_SetName(p,a)                 (p)->SetName(a)
-#define IDirect3DRMViewport_GetName(p,a,b)               (p)->GetName(a,b)
-#define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->GetClassName(a,b)
-/*** IDirect3DRMViewport methods ***/
-#define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->Init(p,a,b,c,d)
-#define IDirect3DRMViewport_Clear(p)                     (p)->Clear(p)
-#define IDirect3DRMViewport_Render(p,a)                  (p)->Render(p,a)
-#define IDirect3DRMViewport_SetFront(p,a)                (p)->SetFront(p,a)
-#define IDirect3DRMViewport_SetBack(p,a)                 (p)->(p,a)
-#define IDirect3DRMViewport_SetField(p,a)                (p)->(p,a)
-#define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->SetUniformScaling(p,a)
-#define IDirect3DRMViewport_SetCamera(p,a)               (p)->SetCamera(p,a)
-#define IDirect3DRMViewport_SetProjection(p,a)           (p)->SetProjection(p,a)
-#define IDirect3DRMViewport_Transform(p,a,b)             (p)->Transform(p,a,b)
-#define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->(p,a,b)
-#define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->Configure(p,a,b,c,d)
-#define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->ForceUpdate(p,a,b,c,d)
-#define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->SetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport_GetCamera(p,a)               (p)->GetCamera(p,a)
-#define IDirect3DRMViewport_GetDevice(p,a)               (p)->GetDevice(p,a)
-#define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->GetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->Pick(p,a,b,c)
-#define IDirect3DRMViewport_GetUniformScaling(p)         (p)->GetUniformScaling(p)
-#define IDirect3DRMViewport_GetX(p)                      (p)->GetX(p)
-#define IDirect3DRMViewport_GetY(p)                      (p)->GetY(p)
-#define IDirect3DRMViewport_GetWidth(p)                  (p)->GetWidth(p)
-#define IDirect3DRMViewport_GetHeight(p)                 (p)->GetHeight(p)
-#define IDirect3DRMViewport_GetField(p)                  (p)->GetField(p)
-#define IDirect3DRMViewport_GetBack(p)                   (p)->GetBack(p)
-#define IDirect3DRMViewport_GetFront(p)                  (p)->GetFront(p)
-#define IDirect3DRMViewport_GetProjection(p)             (p)->GetProjection(p)
-#define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->GetDirect3DViewport(p,a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMViewport2 interface
- */
-#define INTERFACE IDirect3DRMViewport2
-DECLARE_INTERFACE_(IDirect3DRMViewport2,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMViewport2 methods ***/
-    STDMETHOD(Init) (THIS_ LPDIRECT3DRMDEVICE3 dev, LPDIRECT3DRMFRAME3 camera, DWORD xpos, DWORD ypos,
-        DWORD width, DWORD height) PURE;
-    STDMETHOD(Clear)(THIS_ DWORD flags) PURE;
-    STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
-    STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
-    STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
-    STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
-    STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
-    STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
-    STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE3 *) PURE;
-    STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
-    STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
-    STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
-    STDMETHOD_(LONG, GetX)(THIS) PURE;
-    STDMETHOD_(LONG, GetY)(THIS) PURE;
-    STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
-    STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
-    STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
-    STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
-    STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
-    STDMETHOD(TransformVectors)(THIS_ DWORD NumVectors, LPD3DRMVECTOR4D pDstVectors,
-        LPD3DVECTOR pSrcVectors) PURE;
-    STDMETHOD(InverseTransformVectors)(THIS_ DWORD NumVectors, LPD3DVECTOR pDstVectors,
-        LPD3DRMVECTOR4D pSrcVectors) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMViewport2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMViewport2_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMViewport_2Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMViewport2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMViewport2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMViewport2 methods ***/
-#define IDirect3DRMViewport2_Init(p,a,b,c,d,e,f)              (p)->lpVtbl->Init(p,a,b,c,d,e,f)
-#define IDirect3DRMViewport2_Clear(p,a)                       (p)->lpVtbl->Clear(p,a)
-#define IDirect3DRMViewport2_Render(p,a)                      (p)->lpVtbl->Render(p,a)
-#define IDirect3DRMViewport2_SetFront(p,a)                    (p)->lpVtbl->SetFront(p,a)
-#define IDirect3DRMViewport2_SetBack(p,a)                     (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport2_SetField(p,a)                    (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->lpVtbl->SetUniformScaling(p,a)
-#define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->lpVtbl->SetCamera(p,a)
-#define IDirect3DRMViewport2_SetProjection(p,a)               (p)->lpVtbl->SetProjection(p,a)
-#define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
-#define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->lpVtbl->(p,a,b)
-#define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->lpVtbl->Configure(p,a,b,c,d)
-#define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
-#define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->lpVtbl->SetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->lpVtbl->(p,a)
-#define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->lpVtbl->GetDevice(p,a)
-#define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->lpVtbl->GetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->lpVtbl->Pick(p,a,b,c)
-#define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->lpVtbl->GetUniformScaling(p)
-#define IDirect3DRMViewport2_GetX(p)                          (p)->lpVtbl->GetX(p)
-#define IDirect3DRMViewport2_GetY(p)                          (p)->lpVtbl->GetY(p)
-#define IDirect3DRMViewport2_GetWidth(p)                      (p)->lpVtbl->GetWidth(p)
-#define IDirect3DRMViewport2_GetHeight(p)                     (p)->lpVtbl->GetHeight(p)
-#define IDirect3DRMViewport2_GetField(p)                      (p)->lpVtbl->GetField(p)
-#define IDirect3DRMViewport2_GetBack(p)                       (p)->lpVtbl->GetBack(p)
-#define IDirect3DRMViewport2_GetFront(p)                      (p)->lpVtbl->GetFront(p)
-#define IDirect3DRMViewport2_GetProjection(p)                 (p)->lpVtbl->GetProjection(p)
-#define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->lpVtbl->GetDirect3DViewport(p,a)
-#define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->lpVtbl->TransformVectors(p,a,b,c)
-#define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->lpVtbl->InverseTransformVectors(p,ab,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMViewport2_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMViewport2_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMViewport2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMViewport2_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMViewport2_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMViewport2 methods ***/
-#define IDirect3DRMViewport2_Init(p,a,b,c,d)                  (p)->Init(p,a,b,c,d)
-#define IDirect3DRMViewport2_Clear(p)                         (p)->Clear(p)
-#define IDirect3DRMViewport2_Render(p,a)                      (p)->Render(p,a)
-#define IDirect3DRMViewport2_SetFront(p,a)                    (p)->SetFront(p,a)
-#define IDirect3DRMViewport2_SetBack(p,a)                     (p)->(p,a)
-#define IDirect3DRMViewport2_SetField(p,a)                    (p)->(p,a)
-#define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->SetUniformScaling(p,a)
-#define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->SetCamera(p,a)
-#define IDirect3DRMViewport2_SetProjection(p,a)               (p)->SetProjection(p,a)
-#define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->Transform(p,a,b)
-#define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->(p,a,b)
-#define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->Configure(p,a,b,c,d)
-#define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->ForceUpdate(p,a,b,c,d)
-#define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->SetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->GetCamera(p,a)
-#define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->GetDevice(p,a)
-#define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->GetPlane(p,a,b,c,d)
-#define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->Pick(p,a,b,c)
-#define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->GetUniformScaling(p)
-#define IDirect3DRMViewport2_GetX(p)                          (p)->GetX(p)
-#define IDirect3DRMViewport2_GetY(p)                          (p)->GetY(p)
-#define IDirect3DRMViewport2_GetWidth(p)                      (p)->GetWidth(p)
-#define IDirect3DRMViewport2_GetHeight(p)                     (p)->GetHeight(p)
-#define IDirect3DRMViewport2_GetField(p)                      (p)->GetField(p)
-#define IDirect3DRMViewport2_GetBack(p)                       (p)->GetBack(p)
-#define IDirect3DRMViewport2_GetFront(p)                      (p)->GetFront(p)
-#define IDirect3DRMViewport2_GetProjection(p)                 (p)->GetProjection(p)
-#define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->GetDirect3DViewport(p,a)
-#define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->TransformVectors(a,b,c)
-#define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->InverseTransformVectors(ab,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFrame interface
- */
-#define INTERFACE IDirect3DRMFrame
-DECLARE_INTERFACE_(IDirect3DRMFrame,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFrame methods ***/
-    STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
-    STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
-    STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-    STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
-    STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
-    STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
-    STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
-    STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
-    STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
-    STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
-    STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
-        LPVOID pArg)PURE;
-    STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
-    STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
-    STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
-    STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
-    STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
-    STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
-    STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
-    STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
-    STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
-    STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
-    STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
-        D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
-    STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
-    STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFrame_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFrame_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFrame_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFrame_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFrame_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFrame_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFrame methods ***/
-#define IDirect3DRMFrame_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
-#define IDirect3DRMFrame_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
-#define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
-#define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
-#define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
-#define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
-#define IDirect3DRMFrame_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
-#define IDirect3DRMFrame_GetColor(p)                      (p)->lpVtbl->GetColor(p)
-#define IDirect3DRMFrame_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
-#define IDirect3DRMFrame_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
-#define IDirect3DRMFrame_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
-#define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
-#define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
-#define IDirect3DRMFrame_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
-#define IDirect3DRMFrame_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
-#define IDirect3DRMFrame_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFrame_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
-#define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
-#define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
-#define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
-#define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
-#define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
-#define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
-#define IDirect3DRMFrame_Move(p,a)                        (p)->lpVtbl->Move(p,a)
-#define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
-#define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
-#define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
-#define IDirect3DRMFrame_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
-#define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
-#define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
-#define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
-#define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
-#define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
-#define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
-#define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
-#define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
-#define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
-#define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFrame_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
-#define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
-#define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
-#define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
-#define IDirect3DRMFrame_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
-#define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
-#define IDirect3DRMFrame_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMFrame_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMFrame_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFrame_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMFrame_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMFrame_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMFrame_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMFrame methods ***/
-#define IDirect3DRMFrame_AddChild(p,a)                    (p)->AddChild(a)
-#define IDirect3DRMFrame_AddLight(p,a)                    (p)->AddLight(a)
-#define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
-#define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->AddTransform(a,b)
-#define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
-#define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
-#define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
-#define IDirect3DRMFrame_AddVisual(p,a)                   (p)->AddVisual(a)
-#define IDirect3DRMFrame_GetChildren(p,a)                 (p)->GetChildren(a)
-#define IDirect3DRMFrame_GetColor(p)                      (p)->GetColor()
-#define IDirect3DRMFrame_GetLights(p,a)                   (p)->GetLights(a)
-#define IDirect3DRMFrame_GetMaterialMode(p)               (p)->GetMaterialMode()
-#define IDirect3DRMFrame_GetParent(p,a)                   (p)->GetParent(a)
-#define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->GetPosition(a,b)
-#define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
-#define IDirect3DRMFrame_GetScene(p,a)                    (p)->GetScene(a)
-#define IDirect3DRMFrame_GetSortMode(p)                   (p)->GetSortMode()
-#define IDirect3DRMFrame_GetTexture(p,a)                  (p)->GetTexture(a)
-#define IDirect3DRMFrame_GetTransform(p,a)                (p)->GetTransform(a)
-#define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
-#define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
-#define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->GetVisuals(a)
-#define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
-#define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
-#define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
-#define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
-#define IDirect3DRMFrame_Move(p,a)                        (p)->Move(a)
-#define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->DeleteChild(a)
-#define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->DeleteLight(a)
-#define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
-#define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->DeleteVisual(a)
-#define IDirect3DRMFrame_GetSceneBackground(p)            (p)->GetSceneBackground()
-#define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->GetSceneFogColor()
-#define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
-#define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->GetSceneFogMode()
-#define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
-#define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
-#define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
-#define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
-#define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
-#define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
-#define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame_SetColor(p,a)                    (p)->SetColor(a)
-#define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFrame_GetZbufferMode(p)                (p)->GetZbufferMode()
-#define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
-#define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
-#define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
-#define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
-#define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->SetSortMode(a)
-#define IDirect3DRMFrame_SetTexture(p,a)                  (p)->SetTexture(a)
-#define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
-#define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
-#define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
-#define IDirect3DRMFrame_Transform(p,a,b)                 (p)->Transform(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFrame2 interface
- */
-#define INTERFACE IDirect3DRMFrame2
-DECLARE_INTERFACE_(IDirect3DRMFrame2,IDirect3DRMFrame)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFrame methods ***/
-    STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
-    STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
-    STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-    STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
-    STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
-    STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
-    STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
-    STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
-    STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
-    STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
-    STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
-    STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
-        LPVOID pArg)PURE;
-    STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
-    STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
-    STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
-    STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
-    STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
-    STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
-    STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
-    STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
-    STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
-    STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
-    STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
-        D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
-    STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
-    STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    /*** IDirect3DRMFrame2 methods ***/
-    STDMETHOD(AddMoveCallback2)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg, DWORD flags) PURE;
-    STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
-    STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
-    STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
-    STDMETHOD_(BOOL, GetInheritAxes)(THIS);
-    STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
-    STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
-    STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME reference, D3DRMQUATERNION *q) PURE;
-    STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DRMRAY ray, DWORD flags,
-        LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
-    STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFrame2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFrame2_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFrame2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFrame2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFrame methods ***/
-#define IDirect3DRMFrame2_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
-#define IDirect3DRMFrame2_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
-#define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
-#define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
-#define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
-#define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
-#define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
-#define IDirect3DRMFrame2_GetColor(p)                      (p)->lpVtbl->GetColor(p)
-#define IDirect3DRMFrame2_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
-#define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
-#define IDirect3DRMFrame2_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
-#define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
-#define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
-#define IDirect3DRMFrame2_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
-#define IDirect3DRMFrame2_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
-#define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFrame2_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
-#define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
-#define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
-#define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
-#define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
-#define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
-#define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
-#define IDirect3DRMFrame2_Move(p,a)                        (p)->lpVtbl->Move(p,a)
-#define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
-#define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
-#define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
-#define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
-#define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
-#define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
-#define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
-#define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
-#define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
-#define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
-#define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
-#define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
-#define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
-#define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
-#define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
-#define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
-#define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
-#define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
-#define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
-#define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
-/*** IDirect3DRMFrame2 methods ***/
-#define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->lpVtbl->AddMoveCallback2(p,a,b,c)
-#define IDirect3DRMFrame2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->lpVtbl->GetBoxEnable(p)
-#define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->lpVtbl->GetAxes(p,a,b)
-#define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->lpVtbl->GetInheritAxes(p,a,b)
-#define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->lpVtbl->GetHierarchyBox(p,a)
-#define IDirect3DRMFrame2_SetBox(p,a)                      (p)->lpVtbl->SetBox(p,a)
-#define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->lpVtbl->SetBoxEnable(p,a)
-#define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
-#define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->lpVtbl->SetInheritAxes(p,a)
-#define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->lpVtbl->SetQuaternion(p,a,b)
-#define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->lpVtbl->RayPick(p,a,b,c,d)
-#define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMFrame2_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMFrame2_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMFrame2_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMFrame2_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMFrame methods ***/
-#define IDirect3DRMFrame2_AddChild(p,a)                    (p)->AddChild(a)
-#define IDirect3DRMFrame2_AddLight(p,a)                    (p)->AddLight(a)
-#define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
-#define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->AddTransform(a,b)
-#define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
-#define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
-#define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
-#define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->AddVisual(a)
-#define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->GetChildren(a)
-#define IDirect3DRMFrame2_GetColor(p)                      (p)->GetColor()
-#define IDirect3DRMFrame2_GetLights(p,a)                   (p)->GetLights(a)
-#define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->GetMaterialMode()
-#define IDirect3DRMFrame2_GetParent(p,a)                   (p)->GetParent(a)
-#define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->GetPosition(a,b)
-#define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
-#define IDirect3DRMFrame2_GetScene(p,a)                    (p)->GetScene(a)
-#define IDirect3DRMFrame2_GetSortMode(p)                   (p)->GetSortMode()
-#define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->GetTexture(a)
-#define IDirect3DRMFrame2_GetTransform(p,a)                (p)->GetTransform(a)
-#define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
-#define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
-#define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->GetVisuals(a)
-#define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
-#define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
-#define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
-#define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
-#define IDirect3DRMFrame2_Move(p,a)                        (p)->Move(a)
-#define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->DeleteChild(a)
-#define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->DeleteLight(a)
-#define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
-#define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->DeleteVisual(a)
-#define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->GetSceneBackground()
-#define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->GetSceneFogColor()
-#define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
-#define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->GetSceneFogMode()
-#define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
-#define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
-#define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
-#define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
-#define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
-#define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
-#define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame2_SetColor(p,a)                    (p)->SetColor(a)
-#define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->GetZbufferMode()
-#define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
-#define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
-#define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
-#define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
-#define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->SetSortMode(a)
-#define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->SetTexture(a)
-#define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
-#define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
-#define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
-#define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->Transform(a,b)
-/*** IDirect3DRMFrame2 methods ***/
-#define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->AddMoveCallback2(a,b,c)
-#define IDirect3DRMFrame2_GetBox(p,a)                      (p)->GetBox(a)
-#define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->GetBoxEnable()
-#define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->GetAxes(a,b)
-#define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->GetMaterial(a)
-#define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->GetInheritAxes(a,b)
-#define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->GetHierarchyBox(a)
-#define IDirect3DRMFrame2_SetBox(p,a)                      (p)->SetBox(a)
-#define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->SetBoxEnable(a)
-#define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->SetAxes(a,b,c,d,e,f)
-#define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->SetInheritAxes(a)
-#define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->SetMaterial(a)
-#define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->SetQuaternion(a,b)
-#define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->RayPick(a,b,c,d)
-#define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->Save(a,b,c)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFrame3 interface
- */
-#define INTERFACE IDirect3DRMFrame3
-DECLARE_INTERFACE_(IDirect3DRMFrame3,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFrame3 methods ***/
-    STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME3 child) PURE;
-    STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg, DWORD flags) PURE;
-    STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
-    STDMETHOD(AddVisual)(THIS_ LPUNKNOWN) PURE;
-    STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-    STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
-    STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
-    STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_position) PURE;
-    STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
-    STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
-    STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(GetTransform)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMMATRIX4D rmMatrix) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_velocity,
-        BOOL with_rotation) PURE;
-    STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
-    STDMETHOD(GetVisuals)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
-    STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags,
-        D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
-    STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME3 target, LPDIRECT3DRMFRAME3 reference, D3DRMFRAMECONSTRAINT) PURE;
-    STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
-    STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
-    STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg) PURE;
-    STDMETHOD(DeleteVisual)(THIS_ LPUNKNOWN) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
-    STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
-    STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
-    STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
-    STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
-    STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end,
-        D3DVALUE *return_density) PURE;
-    STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
-    STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
-    STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
-    STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
-    STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
-        D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
-    STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
-        D3DVALUE theta) PURE;
-    STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
-    STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z,
-        BOOL with_rotation) PURE;
-    STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
-    STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
-    STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
-    STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
-    STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
-    STDMETHOD_(BOOL, GetInheritAxes)(THIS);
-    STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
-    STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
-    STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
-    STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
-    STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMQUATERNION *q) PURE;
-    STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DRMRAY ray, DWORD flags,
-        LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
-    STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
-    STDMETHOD(TransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
-        LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
-    STDMETHOD(InverseTransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference, DWORD NumVectors,
-        LPD3DVECTOR pDstVectors, LPD3DVECTOR pSrcVectors) PURE;
-    STDMETHOD(SetTraversalOptions)(THIS_ DWORD flags) PURE;
-    STDMETHOD(GetTraversalOptions)(THIS_ LPDWORD pFlags) PURE;
-    STDMETHOD(SetSceneFogMethod)(THIS_ DWORD flags) PURE;
-    STDMETHOD(GetSceneFogMethod)(THIS_ LPDWORD pFlags) PURE;
-    STDMETHOD(SetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
-    STDMETHOD(GetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFrame3_AddRef(p)                          (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFrame3_Release(p)                         (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFrame3_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFrame3_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFrame3 methods ***/
-#define IDirect3DRMFrame3_AddChild(p,a)                      (p)->lpVtbl->AddChild(p,a)
-#define IDirect3DRMFrame3_AddLight(p,a)                      (p)->lpVtbl->AddLight(p,a)
-#define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->lpVtbl->AddMoveCallback(p,a,b,c)
-#define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->lpVtbl->AddTransform(p,a,b)
-#define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->lpVtbl->AddTranslation(p,a,b,c,d)
-#define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->lpVtbl->AddScale(p,a,b,c,d)
-#define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->lpVtbl->AddVisual(p,a)
-#define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->lpVtbl->GetChildren(p,a)
-#define IDirect3DRMFrame3_GetColor(p)                        (p)->lpVtbl->GetColor(p)
-#define IDirect3DRMFrame3_GetLights(p,a)                     (p)->lpVtbl->GetLights(p,a)
-#define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->lpVtbl->GetMaterialMode(p)
-#define IDirect3DRMFrame3_GetParent(p,a)                     (p)->lpVtbl->GetParent(p,a)
-#define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->lpVtbl->GetPosition(p,a,b)
-#define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->lpVtbl->GetRotation(p,a,b,c)
-#define IDirect3DRMFrame3_GetScene(p,a)                      (p)->lpVtbl->GetScene(p,a)
-#define IDirect3DRMFrame3_GetSortMode(p)                     (p)->lpVtbl->GetSortMode(p)
-#define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->lpVtbl->GetTransform(p,a,b)
-#define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->lpVtbl->GetVelocity(p,a,b,c)
-#define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->lpVtbl->GetOrientation(p,a,b,c)
-#define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->lpVtbl->GetVisuals(p,a,b)
-#define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->lpVtbl->InverseTransform(p,a,b)
-#define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->lpVtbl->LookAt(p,a,b,c)
-#define IDirect3DRMFrame3_Move(p,a)                          (p)->lpVtbl->Move(p,a)
-#define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->lpVtbl->DeleteChild(p,a)
-#define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->lpVtbl->DeleteLight(p,a)
-#define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->lpVtbl->DeleteMoveCallback(p,a,b)
-#define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->lpVtbl->DeleteVisual(p,a)
-#define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->lpVtbl->GetSceneBackground(p)
-#define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->lpVtbl->GetSceneFogColor(p)
-#define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->lpVtbl->GetSceneFogEnable(p)
-#define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->lpVtbl->GetSceneFogMode(p)
-#define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->lpVtbl->SetSceneBackground(p,a)
-#define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
-#define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
-#define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->lpVtbl->SetSceneBackgroundImage(p,a)
-#define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->lpVtbl->SetSceneFogEnable(p,a)
-#define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->lpVtbl->SetSceneFogColor(p,a)
-#define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->lpVtbl->SetSceneFogMode(p,a)
-#define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
-#define IDirect3DRMFrame3_SetColor(p,a)                      (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->lpVtbl->GetZbufferMode(p)
-#define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->lpVtbl->SetMaterialMode(p,a)
-#define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
-#define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
-#define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->lpVtbl->SetSortMode(p,a)
-#define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
-#define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->lpVtbl->SetZbufferMode(p,a)
-#define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->lpVtbl->Transform(p,a,b)
-#define IDirect3DRMFrame3_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->lpVtbl->GetBoxEnable(p)
-#define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->lpVtbl->GetAxes(p,a,b)
-#define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->lpVtbl->GetMaterial(p,a)
-#define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->lpVtbl->GetInheritAxes(p)
-#define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->lpVtbl->GetHierarchyBox(p,a)
-#define IDirect3DRMFrame3_SetBox(p,a)                        (p)->lpVtbl->SetBox(p,a)
-#define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->lpVtbl->SetBoxEnable(p,a)
-#define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
-#define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->lpVtbl->SetInheritAxes(p,a)
-#define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->lpVtbl->SetQuaternion(p,a,b)
-#define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->lpVtbl->RayPick(p,a,b,c,d)
-#define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->lpVtbl->Save(p,a,b,c)
-#define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->lpVtbl->TransformVectors(p,a,b,c,d)
-#define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->lpVtbl->InverseTransformVectors(p,a,b,c,d)
-#define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->lpVtbl->SetTraversalOptions(p,a)
-#define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->lpVtbl->GetTraversalOptions(p,a)
-#define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->lpVtbl->SetSceneFogMethod(p,a)
-#define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->lpVtbl->GetSceneFogMethod(p,a)
-#define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->lpVtbl->SetMaterialOverride(p,a)
-#define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->lpVtbl->GetMaterialOverride(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
-#define IDirect3DRMFrame3_AddRef(p)                          (p)->AddRef()
-#define IDirect3DRMFrame3_Release(p)                         (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
-#define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->SetAppData(a)
-#define IDirect3DRMFrame3_GetAppData(p)                      (p)->GetAppData()
-#define IDirect3DRMFrame3_SetName(p,a)                       (p)->SetName(a)
-#define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->GetName(a,b)
-#define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->GetClassName(a,b)
-/*** IDirect3DRMFrame3 methods ***/
-#define IDirect3DRMFrame3_AddChild(p,a)                      (p)->AddChild(a)
-#define IDirect3DRMFrame3_AddLight(p,a)                      (p)->AddLight(a)
-#define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->AddMoveCallback(a,b,c)
-#define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->AddTransform(a,b)
-#define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->AddTranslation(a,b,c,d)
-#define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->AddScale(a,b,c,d)
-#define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->AddRotation(a,b,c,d,e)
-#define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->AddVisual(a)
-#define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->GetChildren(a)
-#define IDirect3DRMFrame3_GetColor(p)                        (p)->GetColor()
-#define IDirect3DRMFrame3_GetLights(p,a)                     (p)->GetLights(a)
-#define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->GetMaterialMode()
-#define IDirect3DRMFrame3_GetParent(p,a)                     (p)->GetParent(a)
-#define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->GetPosition(a,b)
-#define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->GetRotation(a,b,c)
-#define IDirect3DRMFrame3_GetScene(p,a)                      (p)->GetScene(a)
-#define IDirect3DRMFrame3_GetSortMode(p)                     (p)->GetSortMode()
-#define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->GetTexture(a)
-#define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->GetTransform(a,b)
-#define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->GetVelocity(a,b,c)
-#define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->GetOrientation(a,b,c)
-#define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->GetVisuals(a,b)
-#define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->InverseTransform(a,b)
-#define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->Load(a,b,c,d,e)
-#define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->LookAt(a,b,c)
-#define IDirect3DRMFrame3_Move(p,a)                          (p)->Move(a)
-#define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->DeleteChild(a)
-#define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->DeleteLight(a)
-#define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->DeleteMoveCallback(a,b)
-#define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->DeleteVisual(a)
-#define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->GetSceneBackground()
-#define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->GetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->GetSceneFogColor()
-#define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->GetSceneFogEnable()
-#define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->GetSceneFogMode()
-#define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->GetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->SetSceneBackground(a)
-#define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->SetSceneBackgroundRGB(a,b,c)
-#define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->SetSceneBackgroundDepth(a)
-#define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->SetSceneBackgroundImage(a)
-#define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->SetSceneFogEnable(a)
-#define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->SetSceneFogColor(a)
-#define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->SetSceneFogMode(a)
-#define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->SetSceneFogParams(a,b,c)
-#define IDirect3DRMFrame3_SetColor(p,a)                      (p)->SetColor(a)
-#define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->GetZbufferMode()
-#define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->SetMaterialMode(a)
-#define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->SetOrientation(a,b,c,d,e,f,g)
-#define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->SetPosition(a,b,c,d)
-#define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->SetRotation(a,b,c,d,e)
-#define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->SetSortMode(a)
-#define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->SetTexture(a)
-#define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->SetVelocity(a,b,c,d,e)
-#define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->SetZbufferMode(a)
-#define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->Transform(a,b)
-#define IDirect3DRMFrame3_GetBox(p,a)                        (p)->GetBox(a)
-#define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->GetBoxEnable()
-#define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->GetAxes(a,b)
-#define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->GetMaterial(a)
-#define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->GetInheritAxes()
-#define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->GetHierarchyBox(a)
-#define IDirect3DRMFrame3_SetBox(p,a)                        (p)->SetBox(a)
-#define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->SetBoxEnable(a)
-#define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->SetAxes(a,b,c,d,e,f)
-#define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->SetInheritAxes(a)
-#define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->SetMaterial(a)
-#define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->SetQuaternion(a,b)
-#define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->RayPick(a,b,c,d)
-#define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->Save(a,b,c)
-#define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->TransformVectors(a,b,c,d)
-#define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->InverseTransformVectors(a,b,c,d)
-#define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->SetTraversalOptions(a)
-#define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->GetTraversalOptions(a)
-#define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->SetSceneFogMethod(a)
-#define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->GetSceneFogMethod(a)
-#define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->SetMaterialOverride(a)
-#define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->GetMaterialOverride(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMMesh interface
- */
-#define INTERFACE IDirect3DRMMesh
-DECLARE_INTERFACE_(IDirect3DRMMesh,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMMesh methods ***/
-    STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
-    STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
-    STDMETHOD(AddGroup)(THIS_ unsigned vCount, unsigned fCount, unsigned vPerFace, unsigned *fData,
-        D3DRMGROUPINDEX *returnId) PURE;
-    STDMETHOD(SetVertices)(THIS_ D3DRMGROUPINDEX id, unsigned index, unsigned count,
-        D3DRMVERTEX *values) PURE;
-    STDMETHOD(SetGroupColor)(THIS_ D3DRMGROUPINDEX id, D3DCOLOR value) PURE;
-    STDMETHOD(SetGroupColorRGB)(THIS_ D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetGroupMapping)(THIS_ D3DRMGROUPINDEX id, D3DRMMAPPING value) PURE;
-    STDMETHOD(SetGroupQuality)(THIS_ D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value) PURE;
-    STDMETHOD(SetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL value) PURE;
-    STDMETHOD(SetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE value) PURE;
-    STDMETHOD_(unsigned, GetGroupCount)(THIS) PURE;
-    STDMETHOD(GetGroup)(THIS_ D3DRMGROUPINDEX id, unsigned *vCount, unsigned *fCount, unsigned *vPerFace,
-        DWORD *fDataSize, unsigned *fData) PURE;
-    STDMETHOD(GetVertices)(THIS_ D3DRMGROUPINDEX id, DWORD index, DWORD count, D3DRMVERTEX *returnPtr) PURE;
-    STDMETHOD_(D3DCOLOR, GetGroupColor)(THIS_ D3DRMGROUPINDEX id) PURE;
-    STDMETHOD_(D3DRMMAPPING, GetGroupMapping)(THIS_ D3DRMGROUPINDEX id) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetGroupQuality)(THIS_ D3DRMGROUPINDEX id) PURE;
-    STDMETHOD(GetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL *returnPtr) PURE;
-    STDMETHOD(GetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE *returnPtr) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMMesh_AddRef(p)                          (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMMesh_Release(p)                         (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMMesh_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMMesh_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMMesh_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMMesh_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMMesh methods ***/
-#define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->lpVtbl->Scale(p,a,b,c)
-#define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->lpVtbl->Translate(p,a,b,c)
-#define IDirect3DRMMesh_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->lpVtbl->AddGroup(p,a,b,c,d,e)
-#define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->lpVtbl->SetVertices(p,a,b,c,d)
-#define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->lpVtbl->SetGroupColor(p,a,b)
-#define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->lpVtbl->SetGroupColorRGB(p,a,b,c,d)
-#define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->lpVtbl->SetGroupMapping(p,a,b)
-#define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->lpVtbl->SetGroupQuality(p,a,b)
-#define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->lpVtbl->SetGroupMaterial(p,a,b)
-#define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->lpVtbl->SetGroupTexture(p,a,b)
-#define IDirect3DRMMesh_GetGroupCount(p)                   (p)->lpVtbl->GetGroupCount(p)
-#define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->lpVtbl->GetGroup(p,a,b,c,d,e,f)
-#define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->lpVtbl->GetVertices(p,a,b,c,d)
-#define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->lpVtbl->GetGroupColor(p,a)
-#define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->lpVtbl->GetGroupMapping(p,a)
-#define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->lpVtbl->GetGroupQuality(p,a)
-#define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->lpVtbl->GetGroupMaterial(p,a,b)
-#define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->lpVtbl->GetGroupTexture(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
-#define IDirect3DRMMesh_AddRef(p)                          (p)->AddRef()
-#define IDirect3DRMMesh_Release(p)                         (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
-#define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMMesh_SetAppData(p,a)                    (p)->SetAppData(a)
-#define IDirect3DRMMesh_GetAppData(p)                      (p)->GetAppData()
-#define IDirect3DRMMesh_SetName(p,a)                       (p)->SetName(a)
-#define IDirect3DRMMesh_GetName(p,a,b)                     (p)->GetName(a,b)
-#define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->GetClassName(a,b)
-/*** IDirect3DRMMesh methods ***/
-#define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->Scale(a,b,c)
-#define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->Translate(a,b,c)
-#define IDirect3DRMMesh_GetBox(p,a)                        (p)->GetBox(a)
-#define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->AddGroup(a,b,c,d,e)
-#define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->SetVertices(a,b,c,d)
-#define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->SetGroupColor(a,b)
-#define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->SetGroupColorRGB(a,b,c,d)
-#define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->SetGroupMapping(a,b)
-#define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->SetGroupQuality(a,b)
-#define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->SetGroupMaterial(a,b)
-#define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->SetGroupTexture(a,b)
-#define IDirect3DRMMesh_GetGroupCount(p)                   (p)->GetGroupCount()
-#define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->GetGroup(a,b,c,d,e,f)
-#define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->GetVertices(a,b,c,d)
-#define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->GetGroupColor(a)
-#define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->GetGroupMapping(a)
-#define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->GetGroupQuality(a)
-#define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->lpVtbl->GetGroupMaterial(a,b)
-#define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->lpVtbl->GetGroupTexture(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMProgressiveMesh interface
- */
-#define INTERFACE IDirect3DRMProgressiveMesh
-DECLARE_INTERFACE_(IDirect3DRMProgressiveMesh,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMProgressiveMesh methods ***/
-    STDMETHOD(Load) (THIS_ LPVOID pObjLocation, LPVOID pObjId, D3DRMLOADOPTIONS dloLoadflags,
-        D3DRMLOADTEXTURECALLBACK pCallback, LPVOID lpArg) PURE;
-    STDMETHOD(GetLoadStatus) (THIS_ LPD3DRMPMESHLOADSTATUS pStatus) PURE;
-    STDMETHOD(SetMinRenderDetail) (THIS_ D3DVALUE d3dVal) PURE;
-    STDMETHOD(Abort) (THIS_ DWORD flags) PURE;
-    STDMETHOD(GetFaceDetail) (THIS_ LPDWORD pCount) PURE;
-    STDMETHOD(GetVertexDetail) (THIS_ LPDWORD pCount) PURE;
-    STDMETHOD(SetFaceDetail) (THIS_ DWORD count) PURE;
-    STDMETHOD(SetVertexDetail) (THIS_ DWORD count) PURE;
-    STDMETHOD(GetFaceDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
-    STDMETHOD(GetVertexDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
-    STDMETHOD(GetDetail) (THIS_ D3DVALUE *pdvVal) PURE;
-    STDMETHOD(SetDetail) (THIS_ D3DVALUE d3dVal) PURE;
-    STDMETHOD(RegisterEvents) (THIS_ HANDLE event, DWORD flags, DWORD reserved) PURE;
-    STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *ppD3DRMMesh) PURE;
-    STDMETHOD(Duplicate) (THIS_ LPDIRECT3DRMPROGRESSIVEMESH *ppD3DRMPMesh) PURE;
-    STDMETHOD(GetBox) (THIS_ LPD3DRMBOX pBBox) PURE;
-    STDMETHOD(SetQuality) (THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(GetQuality) (THIS_ LPD3DRMRENDERQUALITY pQuality) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMProgressiveMesh_Release(p)                     (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMProgressiveMesh methods ***/
-#define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->lpVtbl->GetLoadStatus(p,a)
-#define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->lpVtbl->SetMinRenderDetail(p,a)
-#define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->lpVtbl->Abort(p,a)
-#define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->lpVtbl->GetFaceDetail(p,a)
-#define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->lpVtbl->GetVertexDetail(p,a)
-#define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->lpVtbl->SetFaceDetail(p,a)
-#define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->lpVtbl->SetVertexDetail(p,a)
-#define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->lpVtbl->GetFaceDetailRange(p,a,b)
-#define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->lpVtbl->GetVertexDetailRange(p,a,b)
-#define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->lpVtbl->GetDetail(p,a)
-#define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->lpVtbl->SetDetail(p,a)
-#define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->lpVtbl->RegisterEvents(p,a,b,c)
-#define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->lpVtbl->Duplicate(p,a)
-#define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->lpVtbl->GetQuality(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
-#define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->AddRef()
-#define IDirect3DRMProgressiveMesh_Release(p)                     (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
-#define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->SetAppData(a)
-#define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->GetAppData()
-#define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->SetName(a)
-#define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->GetName(a,b)
-#define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->GetClassName(a,b)
-/*** IDirect3DRMProgressiveMesh methods ***/
-#define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->Load(a,b,c,d,e)
-#define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->GetLoadStatus(a)
-#define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->SetMinRenderDetail(a)
-#define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->Abort(a)
-#define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->GetFaceDetail(a)
-#define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->GetVertexDetail(a)
-#define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->SetFaceDetail(a)
-#define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->SetVertexDetail(a)
-#define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->GetFaceDetailRange(a,b)
-#define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->GetVertexDetailRange(a,b)
-#define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->GetDetail(a)
-#define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->SetDetail(a)
-#define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->RegisterEvents(a,b,c)
-#define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->CreateMesh(a)
-#define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->Duplicate(a)
-#define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->GetBox(a)
-#define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->SetQuality(a)
-#define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->GetQuality(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMShadow interface
- */
-#define INTERFACE IDirect3DRMShadow
-DECLARE_INTERFACE_(IDirect3DRMShadow,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMShadow methods ***/
-    STDMETHOD(Init)(THIS_ LPDIRECT3DRMVISUAL visual, LPDIRECT3DRMLIGHT light,
-        D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMShadow_AddRef(p)                      (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMShadow_Release(p)                     (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMShadow_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMShadow_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMShadow_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMShadow_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMShadow methods ***/
-#define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Load(p,a,b,c,d,e,f,g)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
-#define IDirect3DRMShadow_AddRef(p)                      (p)->AddRef()
-#define IDirect3DRMShadow_Release(p)                     (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
-#define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMShadow_SetAppData(p,a)                (p)->SetAppData(a)
-#define IDirect3DRMShadow_GetAppData(p)                  (p)->GetAppData()
-#define IDirect3DRMShadow_SetName(p,a)                   (p)->SetName(a)
-#define IDirect3DRMShadow_GetName(p,a,b)                 (p)->GetName(a,b)
-#define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->GetClassName(a,b)
-/*** IDirect3DRMShadow methods ***/
-#define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->Load(a,b,c,d,e,f,g)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMShadow2 interface
- */
-#define INTERFACE IDirect3DRMShadow2
-DECLARE_INTERFACE_(IDirect3DRMShadow2,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMShadow methods ***/
-    STDMETHOD(Init)(THIS_ LPUNKNOWN pUNK, LPDIRECT3DRMLIGHT light,
-        D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
-    /*** IDirect3DRMShadow2 methods ***/
-    STDMETHOD(GetVisual)(THIS_ LPDIRECT3DRMVISUAL *) PURE;
-    STDMETHOD(SetVisual)(THIS_ LPUNKNOWN pUNK, DWORD) PURE;
-    STDMETHOD(GetLight)(THIS_ LPDIRECT3DRMLIGHT *) PURE;
-    STDMETHOD(SetLight)(THIS_ LPDIRECT3DRMLIGHT, DWORD) PURE;
-    STDMETHOD(GetPlane)(THIS_ LPD3DVALUE px, LPD3DVALUE py, LPD3DVALUE pz,
-        LPD3DVALUE nx, LPD3DVALUE ny, LPD3DVALUE nz) PURE;
-    STDMETHOD(SetPlane)(THIS_ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
-        D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, DWORD) PURE;
-    STDMETHOD(GetOptions)(THIS_ LPDWORD) PURE;
-    STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMShadow2_AddRef(p)                      (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMShadow2_Release(p)                     (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMShadow2_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMShadow2_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMShadow2_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMShadow methods ***/
-#define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Init(p,a,b,c,d,e,f,g)
-/*** IDirect3DRMShadow2 methods ***/
-#define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->lpVtbl->GetVisual(p,a)
-#define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->lpVtbl->SetVisual(p,a,b)
-#define IDirect3DRMShadow2_GetLight(p,a)                  (p)->lpVtbl->GetLight(p,a)
-#define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->lpVtbl->SetLight(p,a,b)
-#define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->GetPlane(p,a,b,c,d,e,f)
-#define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->SetPlane(p,a,b,c,d,e,f)
-#define IDirect3DRMShadow2_GetOptions(p,a)                (p)->lpVtbl->GetOptions(p,a)
-#define IDirect3DRMShadow2_SetOptions(p,a)                (p)->lpVtbl->SetOptions(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
-#define IDirect3DRMShadow2_AddRef(p)                      (p)->AddRef()
-#define IDirect3DRMShadow2_Release(p)                     (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
-#define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMShadow2_SetAppData(p,a)                (p)->SetAppData(a)
-#define IDirect3DRMShadow2_GetAppData(p)                  (p)->GetAppData()
-#define IDirect3DRMShadow2_SetName(p,a)                   (p)->SetName(a)
-#define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->GetName(a,b)
-#define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->GetClassName(a,b)
-/*** IDirect3DRMShadow methods ***/
-#define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->Init(a,b,c,d,e,f,g)
-/*** IDirect3DRMShadow2 methods ***/
-#define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->GetVisual(a)
-#define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->SetVisual(a,b)
-#define IDirect3DRMShadow2_GetLight(p,a)                  (p)->GetLight(a)
-#define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->SetLight(a,b)
-#define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->GetPlane(a,b,c,d,e,f)
-#define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->SetPlane(a,b,c,d,e,f)
-#define IDirect3DRMShadow2_GetOptions(p,a)                (p)->GetOptions(a)
-#define IDirect3DRMShadow2_SetOptions(p,a)                (p)->lpVtbl->SetOptions(p,a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFace interface
- */
-#define INTERFACE IDirect3DRMFace
-DECLARE_INTERFACE_(IDirect3DRMFace,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFace methods ***/
-    STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
-    STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
-    STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFace_AddRef(p)                         (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFace_Release(p)                        (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFace_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFace_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFace_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFace_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFace_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFace methods ***/
-#define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
-#define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFace_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFace_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMFace_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
-#define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
-#define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
-#define IDirect3DRMFace_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
-#define IDirect3DRMFace_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFace_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
-#define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
-#define IDirect3DRMFace_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
-#define IDirect3DRMFace_AddRef(p)                         (p)->AddRef()
-#define IDirect3DRMFace_Release(p)                        (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
-#define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFace_SetAppData(p,a)                   (p)->SetAppData(a)
-#define IDirect3DRMFace_GetAppData(p)                     (p)->GetAppData()
-#define IDirect3DRMFace_SetName(p,a)                      (p)->SetName(a)
-#define IDirect3DRMFace_GetName(p,a,b)                    (p)->GetName(a,b)
-#define IDirect3DRMFace_GetClassName(p,a,b)               (p)->GetClassName(a,b)
-/*** IDirect3DRMFace methods ***/
-#define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
-#define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
-#define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFace_SetColor(p,a)                     (p)->SetColor(a)
-#define IDirect3DRMFace_SetTexture(p,a)                   (p)->SetTexture(a)
-#define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMFace_SetMaterial(p,a)                  (p)->SetMaterial(a)
-#define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
-#define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
-#define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
-#define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
-#define IDirect3DRMFace_GetNormal(p,a)                    (p)->GetNormal(a)
-#define IDirect3DRMFace_GetTexture(p,a)                   (p)->GetTexture(a)
-#define IDirect3DRMFace_GetVertexCount(p)                 (p)->GetVertexCount()
-#define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
-#define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
-#define IDirect3DRMFace_GetColor(p,a)                     (p)->GetColor(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMFace2 interface
- */
-#define INTERFACE IDirect3DRMFace2
-DECLARE_INTERFACE_(IDirect3DRMFace2,IDirect3DRMObject)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMFace methods ***/
-    STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
-    STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
-    STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
-    STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
-    STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
-    STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMFace2_AddRef(p)                         (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMFace2_Release(p)                        (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMFace2_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMFace2_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMFace2_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMFace2_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMFace methods ***/
-#define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
-#define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMFace2_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMFace2_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
-#define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
-#define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
-#define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
-#define IDirect3DRMFace2_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
-#define IDirect3DRMFace2_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
-#define IDirect3DRMFace2_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
-#define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
-#define IDirect3DRMFace2_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
-#define IDirect3DRMFace2_AddRef(p)                         (p)->AddRef()
-#define IDirect3DRMFace2_Release(p)                        (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
-#define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMFace2_SetAppData(p,a)                   (p)->SetAppData(a)
-#define IDirect3DRMFace2_GetAppData(p)                     (p)->GetAppData()
-#define IDirect3DRMFace2_SetName(p,a)                      (p)->SetName(a)
-#define IDirect3DRMFace2_GetName(p,a,b)                    (p)->GetName(a,b)
-#define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->GetClassName(a,b)
-/*** IDirect3DRMFace methods ***/
-#define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
-#define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
-#define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMFace2_SetColor(p,a)                     (p)->SetColor(a)
-#define IDirect3DRMFace2_SetTexture(p,a)                   (p)->SetTexture(a)
-#define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->SetMaterial(a)
-#define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
-#define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
-#define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
-#define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
-#define IDirect3DRMFace2_GetNormal(p,a)                    (p)->GetNormal(a)
-#define IDirect3DRMFace2_GetTexture(p,a)                   (p)->GetTexture(a)
-#define IDirect3DRMFace2_GetVertexCount(p)                 (p)->GetVertexCount()
-#define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
-#define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
-#define IDirect3DRMFace2_GetColor(p,a)                     (p)->GetColor(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMMeshBuilder interface
- */
-#define INTERFACE IDirect3DRMMeshBuilder
-DECLARE_INTERFACE_(IDirect3DRMMeshBuilder,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMMeshBuilder methods ***/
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
-    STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
-    STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
-    STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
-    STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
-    STDMETHOD(GenerateNormals)(THIS) PURE;
-    STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
-    STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
-    STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
-    STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
-    STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
-        LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
-    STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
-    STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
-        DWORD *face_data_size, DWORD *face_data) PURE;
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
-    STDMETHOD_(int, GetFaceCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMMeshBuilder_Release(p)                        (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMMeshBuilder methods ***/
-#define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->lpVtbl->Save(p,a,b,c)
-#define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->lpVtbl->Scale(p,a,b,c)
-#define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->lpVtbl->Translate(p,a)
-#define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->lpVtbl->SetColorSource(p,a,b,c)
-#define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->lpVtbl->GenerateNormals(p)
-#define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->lpVtbl->GetColorSource(p)
-#define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)->lpVtbl->AddMesh(p,a)
-#define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->lpVtbl->AddMeshBuilder(p,a)
-#define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->lpVtbl->AddFrame(p,a)
-#define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->lpVtbl->AddFace(p,a)
-#define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->lpVtbl->ReserveSpace(p,a,b,c)
-#define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->lpVtbl->SetMateria(p,a)
-#define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->lpVtbl->SetPerspective(p,a)
-#define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->lpVtbl->SetVertex(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->lpVtbl->SetNormal(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->lpVtbl->SetVertexColor(p,a,b)
-#define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->lpVtbl->GetFaces(p,a)
-#define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->lpVtbl->AddNormal(p,a,b,c)
-#define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->lpVtbl->GetPerspective(p)
-#define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->lpVtbl->GetFaceCount(p)
-#define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->lpVtbl->GetVertexColor(p,a)
-#define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->lpVtbl->CreateMesh(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
-#define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->AddRef()
-#define IDirect3DRMMeshBuilder_Release(p)                        (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
-#define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->SetAppData(a)
-#define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->GetAppData()
-#define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->SetName(a)
-#define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->GetName(a,b)
-#define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->GetClassName(a,b)
-/*** IDirect3DRMMeshBuilder methods ***/
-#define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->Load(a,b,c,d,e)
-#define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->Save(a,b,c)
-#define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->Scale(a,b,c)
-#define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->Translate(a)
-#define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->SetColorSource(a,b,c)
-#define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->GetBox(a)
-#define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->GenerateNormals()
-#define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->GetColorSource()
-#define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)-->AddMesh(a)
-#define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->AddMeshBuilder(a)
-#define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->AddFrame(a)
-#define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->AddFace(a)
-#define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->AddFaces(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->ReserveSpace(a,b,c)
-#define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->SetColor(a)
-#define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->SetTexture(a)
-#define IDirect3DRMMeshBuilder_SetMateria(p,a)                   (p)->SetMateria(a)
-#define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
-#define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->SetQuality(a)
-#define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->SetPerspective(a)
-#define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->SetVertex(a,b,c,d)
-#define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->SetNormal(a,b,c,d)
-#define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->SetVertexColor(a,b)
-#define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->SetVertexColorRGB(a,b,c,d)
-#define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->GetFaces(a)
-#define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->GetVertices(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
-#define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->AddNormal(a,b,c)
-#define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->CreateFace(a)
-#define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->GetQuality()
-#define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->GetPerspective()
-#define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->GetFaceCount()
-#define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->GetVertexCount()
-#define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->GetVertexColor(a)
-#define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->CreateMesh(a)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMMeshBuilder2 interface
- */
-#define INTERFACE IDirect3DRMMeshBuilder2
-DECLARE_INTERFACE_(IDirect3DRMMeshBuilder2,IDirect3DRMMeshBuilder)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMMeshBuilder methods ***/
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
-    STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
-    STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
-    STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
-    STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
-    STDMETHOD(GenerateNormals)(THIS) PURE;
-    STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
-    STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
-    STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
-    STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
-    STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
-    STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
-        LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
-    STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
-    STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
-        DWORD *face_data_size, DWORD *face_data) PURE;
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
-    STDMETHOD_(int, GetFaceCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
-    /*** IDirect3DRMMeshBuilder2 methods ***/
-    STDMETHOD(GenerateNormals2)(THIS_ D3DVALUE crease, DWORD flags) PURE;
-    STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE*) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMMeshBuilder2_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMMeshBuilder methods ***/
-#define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
-#define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->lpVtbl->GenerateNormals(p)
-#define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
-#define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
-#define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
-#define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
-#define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
-#define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
-#define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
-#define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
-#define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
-#define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
-#define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
-#define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
-#define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
-#define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
-/*** IDirect3DRMMeshBuilder2 methods ***/
-#define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->lpVtbl->GenerateNormals2(p,a,b)
-#define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMMeshBuilder2_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMMeshBuilder methods ***/
-#define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
-#define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->Save(a,b,c)
-#define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
-#define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->Translate(a)
-#define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
-#define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->GetBox(a)
-#define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->GenerateNormals()
-#define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->GetColorSource()
-#define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)-->AddMesh(a)
-#define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
-#define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->AddFrame(a)
-#define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->AddFace(a)
-#define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
-#define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->SetColor(a)
-#define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->SetTexture(a)
-#define IDirect3DRMMeshBuilder2_SetMateria(p,a)                  (p)->SetMateria(a)
-#define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
-#define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->SetQuality(a)
-#define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->SetPerspective(a)
-#define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
-#define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
-#define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
-#define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
-#define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->GetFaces(a)
-#define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->GetVertices(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
-#define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
-#define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->CreateFace(a)
-#define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->GetQuality()
-#define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->GetPerspective()
-#define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->GetFaceCount()
-#define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->GetVertexCount()
-#define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->GetVertexColor(a)
-#define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->CreateMesh(a)
-/*** IDirect3DRMMeshBuilder2 methods ***/
-#define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->GenerateNormals2(a,b)
-#define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->GetFace(a,b)
-#endif
-
-/*****************************************************************************
- * IDirect3DRMMeshBuilder3 interface
- */
-#define INTERFACE IDirect3DRMMeshBuilder3
-DECLARE_INTERFACE_(IDirect3DRMMeshBuilder3,IDirect3DRMVisual)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirect3DRMObject methods ***/
-    STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
-    STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
-    STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
-    STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
-    STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
-    STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
-    /*** IDirect3DRMMeshBuilder3 methods ***/
-    STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
-    STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
-    STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
-    STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
-    STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
-    STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
-    STDMETHOD(GenerateNormals)(THIS_ D3DVALUE crease, DWORD flags) PURE;
-    STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
-    STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
-    STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3) PURE;
-    STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME3) PURE;
-    STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
-    STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
-        LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
-    STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
-    STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
-    STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
-    STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
-    STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
-    STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
-    STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
-    STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
-    STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
-    STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
-    STDMETHOD(GetGeometry)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
-        DWORD *face_data_size, DWORD *face_data) PURE;
-    STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
-    STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
-    STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE2*) PURE;
-    STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
-    STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
-    STDMETHOD_(int, GetFaceCount)(THIS) PURE;
-    STDMETHOD_(int, GetVertexCount)(THIS) PURE;
-    STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
-    STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
-    STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE2 *) PURE;
-    STDMETHOD(GetVertex)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
-    STDMETHOD(GetNormal)(THIS_ DWORD index, LPD3DVECTOR pVector) PURE;
-    STDMETHOD(DeleteVertices)(THIS_ DWORD IndexFirst, DWORD count) PURE;
-    STDMETHOD(DeleteNormals)(THIS_ DWORD IndexFirst, DWORD count) PURE;
-    STDMETHOD(DeleteFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
-    STDMETHOD(Empty)(THIS_ DWORD flags) PURE;
-    STDMETHOD(Optimize)(THIS_ DWORD flags) PURE;
-    STDMETHOD(AddFacesIndexed)(THIS_ DWORD flags, DWORD *pvIndices, DWORD *pIndexFirst, DWORD *pCount) PURE;
-    STDMETHOD(CreateSubMesh)(THIS_ LPUNKNOWN *) PURE;
-    STDMETHOD(GetParentMesh)(THIS_ DWORD, LPUNKNOWN *) PURE;
-    STDMETHOD(GetSubMeshes)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
-    STDMETHOD(DeleteSubMesh)(THIS_ LPUNKNOWN) PURE;
-    STDMETHOD(Enable)(THIS_ DWORD) PURE;
-    STDMETHOD(GetEnable)(THIS_ DWORD *) PURE;
-    STDMETHOD(AddTriangles)(THIS_ DWORD flags, DWORD format, DWORD VertexCount, LPVOID pvData) PURE;
-    STDMETHOD(SetVertices)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
-    STDMETHOD(GetVertices)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
-    STDMETHOD(SetNormals)(THIS_ DWORD IndexFirst, DWORD count, LPD3DVECTOR) PURE;
-    STDMETHOD(GetNormals)(THIS_ DWORD IndexFirst, LPDWORD pCount, LPD3DVECTOR) PURE;
-    STDMETHOD_(int, GetNormalCount)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define IDirect3DRMMeshBuilder3_Release(p)                       (p)->lpVtbl->Release(p)
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
-#define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
-#define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
-#define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
-#define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
-/*** IDirect3DRMMeshBuilder3 methods ***/
-#define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
-#define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
-#define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
-#define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->lpVtbl->GenerateNormals(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
-#define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
-#define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
-#define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
-#define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
-#define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
-#define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
-#define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->lpVtbl->SetMateria(p,a)
-#define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
-#define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
-#define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
-#define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
-#define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
-#define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->lpVtbl->GetGeometry(p,a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
-#define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
-#define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
-#define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
-#define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
-#define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
-#define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
-#define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->lpVtbl->GetVertex(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->lpVtbl->GetNormal(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->lpVtbl->DeleteVertices(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->lpVtbl->DeleteNormals(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->lpVtbl->DeleteFace(p,a)
-#define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->lpVtbl->Empty(p,a)
-#define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->lpVtbl->Optimize(p,a)
-#define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->lpVtbl->AddFacesIndexed(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->lpVtbl->CreateSubMesh(p,a)
-#define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->lpVtbl->GetParentMesh(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->lpVtbl->GetSubMeshes(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->lpVtbl->DeleteSubMesh(p,a)
-#define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->lpVtbl->Enable(p,a)
-#define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->lpVtbl->AddTriangles(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->lpVtbl->SetVertices(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->lpVtbl->GetVertices(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->lpVtbl->SetNormals(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->lpVtbl->GetNormals(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->lpVtbl->GetNormalCount(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
-#define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->AddRef()
-#define IDirect3DRMMeshBuilder3_Release(p)                       (p)->Release()
-/*** IDirect3DRMObject methods ***/
-#define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
-#define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
-#define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->SetAppData(a)
-#define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->GetAppData()
-#define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->SetName(a)
-#define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->GetName(a,b)
-#define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->GetClassName(a,b)
-/*** IDirect3DRMMeshBuilder3 methods ***/
-#define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
-#define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->Save(a,b,c)
-#define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
-#define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->Translate(a)
-#define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
-#define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->GetBox(a)
-#define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->GenerateNormals(a,b)
-#define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->GetColorSource()
-#define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)-->AddMesh(a)
-#define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
-#define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->AddFrame(a)
-#define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->AddFace(a)
-#define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
-#define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
-#define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->SetColor(a)
-#define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->SetTexture(a)
-#define IDirect3DRMMeshBuilder3_SetMateria(p,a)                  (p)->SetMateria(a)
-#define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
-#define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->SetQuality(a)
-#define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->SetPerspective(a)
-#define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
-#define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
-#define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->GetFaces(a)
-#define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->GetGeometry(a,b,c,d,e,f)
-#define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
-#define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
-#define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
-#define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->CreateFace(a)
-#define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->GetQuality()
-#define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->GetPerspective()
-#define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->GetFaceCount()
-#define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->GetVertexCount()
-#define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->GetVertexColor(a)
-#define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->CreateMesh(a)
-#define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->GetFace(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->GetVertex(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->GetNormal(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->DeleteVertices(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->DeleteNormals(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->DeleteFace(p,a)
-#define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->Empty(p,a)
-#define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->Optimize(p,a)
-#define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->AddFacesIndexed(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->CreateSubMesh(p,a)
-#define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->GetParentMesh(p,a,b)
-#define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->GetSubMeshes(p,a,b)
-#define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->DeleteSubMesh(p,a)
-#define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->Enable(p,a)
-#define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->AddTriangles(p,a,b,c,d)
-#define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->SetVertices(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->GetVertices(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->SetNormals(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->GetNormals(p,a,b,c)
-#define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->GetNormalCount(p,a)
-#endif
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif /* __D3DRMOBJ_H__ */
diff --git a/misc/builddeps/win64/dx/include/d3dtypes.h b/misc/builddeps/win64/dx/include/d3dtypes.h
deleted file mode 100644 (file)
index 2ac2cff..0000000
+++ /dev/null
@@ -1,1374 +0,0 @@
-/*
- * Copyright (C) 2000 Peter Hunnisett
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-/* FIXME: Need to add C++ code for certain structs for headers - this is going to be a problem
-          if WINE continues to only use C code  - I suppose that we could always inline in
-          the header file to get around that little problem... */
-/* FIXME: We need to implement versioning on everything directx 5 and up if these headers
-          are going to be generically useful for directx stuff */
-
-#ifndef __WINE_D3DTYPES_H
-#define __WINE_D3DTYPES_H
-
-#include <_mingw_dxhelper.h>
-
-#ifndef __WINESRC__
-# include <windows.h>
-#endif
-
-#include <float.h>
-#include <ddraw.h>
-
-#define D3DVALP(val, prec)      ((float)(val))
-#define D3DVAL(val)             ((float)(val))
-#define D3DDivide(a, b)         (float)((double) (a) / (double) (b))
-#define D3DMultiply(a, b)       ((a) * (b))
-
-typedef LONG D3DFIXED;
-
-
-#ifndef RGB_MAKE
-#define CI_GETALPHA(ci)    ((ci) >> 24)
-#define CI_GETINDEX(ci)    (((ci) >> 8) & 0xffff)
-#define CI_GETFRACTION(ci) ((ci) & 0xff)
-#define CI_ROUNDINDEX(ci)  CI_GETINDEX((ci) + 0x80)
-#define CI_MASKALPHA(ci)   ((ci) & 0xffffff)
-#define CI_MAKE(a, i, f)    (((a) << 24) | ((i) << 8) | (f))
-
-#define RGBA_GETALPHA(rgb)      ((rgb) >> 24)
-#define RGBA_GETRED(rgb)        (((rgb) >> 16) & 0xff)
-#define RGBA_GETGREEN(rgb)      (((rgb) >> 8) & 0xff)
-#define RGBA_GETBLUE(rgb)       ((rgb) & 0xff)
-#define RGBA_MAKE(r, g, b, a)   ((D3DCOLOR) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
-
-#define D3DRGB(r, g, b) \
-    (0xff000000 | ( ((LONG)((r) * 255)) << 16) | (((LONG)((g) * 255)) << 8) | (LONG)((b) * 255))
-#define D3DRGBA(r, g, b, a) \
-    (   (((LONG)((a) * 255)) << 24) | (((LONG)((r) * 255)) << 16) \
-    |   (((LONG)((g) * 255)) << 8) | (LONG)((b) * 255) \
-    )
-
-#define RGB_GETRED(rgb)         (((rgb) >> 16) & 0xff)
-#define RGB_GETGREEN(rgb)       (((rgb) >> 8) & 0xff)
-#define RGB_GETBLUE(rgb)        ((rgb) & 0xff)
-#define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
-#define RGB_MAKE(r, g, b)       ((D3DCOLOR) (((r) << 16) | ((g) << 8) | (b)))
-#define RGBA_TORGB(rgba)       ((D3DCOLOR) ((rgba) & 0xffffff))
-#define RGB_TORGBA(rgb)        ((D3DCOLOR) ((rgb) | 0xff000000))
-
-#endif
-
-#define D3DENUMRET_CANCEL                        DDENUMRET_CANCEL
-#define D3DENUMRET_OK                            DDENUMRET_OK
-
-typedef HRESULT (CALLBACK *LPD3DVALIDATECALLBACK)(LPVOID lpUserArg, DWORD dwOffset);
-typedef HRESULT (CALLBACK *LPD3DENUMTEXTUREFORMATSCALLBACK)(LPDDSURFACEDESC lpDdsd, LPVOID lpContext);
-typedef HRESULT (CALLBACK *LPD3DENUMPIXELFORMATSCALLBACK)(LPDDPIXELFORMAT lpDDPixFmt, LPVOID lpContext);
-
-#ifndef DX_SHARED_DEFINES
-
-typedef float D3DVALUE,*LPD3DVALUE;
-
-#ifndef D3DCOLOR_DEFINED
-typedef DWORD D3DCOLOR, *LPD3DCOLOR;
-#define D3DCOLOR_DEFINED
-#endif
-
-#ifndef D3DVECTOR_DEFINED
-typedef struct _D3DVECTOR {
-  union {
-        D3DVALUE        x;
-    D3DVALUE dvX;
-  } DUMMYUNIONNAME1;
-  union {
-        D3DVALUE        y;
-    D3DVALUE dvY;
-  } DUMMYUNIONNAME2;
-  union {
-        D3DVALUE        z;
-    D3DVALUE dvZ;
-  } DUMMYUNIONNAME3;
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-  /* the definitions for these methods are in d3dvec.inl */
-public:
-  /*** constructors ***/
-  _D3DVECTOR() {}
-  _D3DVECTOR(D3DVALUE f);
-  _D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z);
-  _D3DVECTOR(const D3DVALUE f[3]);
-
-  /*** assignment operators ***/
-  _D3DVECTOR& operator += (const _D3DVECTOR& v);
-  _D3DVECTOR& operator -= (const _D3DVECTOR& v);
-  _D3DVECTOR& operator *= (const _D3DVECTOR& v);
-  _D3DVECTOR& operator /= (const _D3DVECTOR& v);
-  _D3DVECTOR& operator *= (D3DVALUE s);
-  _D3DVECTOR& operator /= (D3DVALUE s);
-
-  /*** unary operators ***/
-  friend _D3DVECTOR operator + (const _D3DVECTOR& v);
-  friend _D3DVECTOR operator - (const _D3DVECTOR& v);
-
-  /*** binary operators ***/
-  friend _D3DVECTOR operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
-  friend _D3DVECTOR operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
-
-  friend _D3DVECTOR operator * (const _D3DVECTOR& v, D3DVALUE s);
-  friend _D3DVECTOR operator * (D3DVALUE s, const _D3DVECTOR& v);
-  friend _D3DVECTOR operator / (const _D3DVECTOR& v, D3DVALUE s);
-
-  friend D3DVALUE SquareMagnitude(const _D3DVECTOR& v);
-  friend D3DVALUE Magnitude(const _D3DVECTOR& v);
-
-  friend _D3DVECTOR Normalize(const _D3DVECTOR& v);
-
-  friend D3DVALUE DotProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
-  friend _D3DVECTOR CrossProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
-#endif
-} D3DVECTOR;
-#define D3DVECTOR_DEFINED
-#endif
-
-#ifndef LPD3DVECTOR_DEFINED
-typedef D3DVECTOR *LPD3DVECTOR;
-#define LPD3DVECTOR_DEFINED
-#endif
-
-#define DX_SHARED_DEFINES
-#endif /* DX_SHARED_DEFINES */
-
-typedef DWORD D3DMATERIALHANDLE, *LPD3DMATERIALHANDLE;
-typedef DWORD D3DTEXTUREHANDLE,  *LPD3DTEXTUREHANDLE;
-typedef DWORD D3DMATRIXHANDLE,   *LPD3DMATRIXHANDLE;
-
-typedef struct _D3DCOLORVALUE {
-        union {
-                D3DVALUE r;
-                D3DVALUE dvR;
-        } DUMMYUNIONNAME1;
-        union {
-                D3DVALUE g;
-                D3DVALUE dvG;
-        } DUMMYUNIONNAME2;
-        union {
-                D3DVALUE b;
-                D3DVALUE dvB;
-        } DUMMYUNIONNAME3;
-        union {
-                D3DVALUE a;
-                D3DVALUE dvA;
-        } DUMMYUNIONNAME4;
-} D3DCOLORVALUE,*LPD3DCOLORVALUE;
-
-typedef struct _D3DRECT {
-  union {
-    LONG x1;
-    LONG lX1;
-  } DUMMYUNIONNAME1;
-  union {
-    LONG y1;
-    LONG lY1;
-  } DUMMYUNIONNAME2;
-  union {
-    LONG x2;
-    LONG lX2;
-  } DUMMYUNIONNAME3;
-  union {
-    LONG y2;
-    LONG lY2;
-  } DUMMYUNIONNAME4;
-} D3DRECT, *LPD3DRECT;
-
-typedef struct _D3DHVERTEX {
-    DWORD         dwFlags;
- union {
-    D3DVALUE    hx;
-    D3DVALUE    dvHX;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DVALUE    hy;
-    D3DVALUE    dvHY;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DVALUE    hz;
-    D3DVALUE    dvHZ;
-  } DUMMYUNIONNAME3;
-} D3DHVERTEX, *LPD3DHVERTEX;
-
-/*
- * Transformed/lit vertices
- */
-typedef struct _D3DTLVERTEX {
-  union {
-    D3DVALUE    sx;
-    D3DVALUE    dvSX;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DVALUE    sy;
-    D3DVALUE    dvSY;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DVALUE    sz;
-    D3DVALUE    dvSZ;
-  } DUMMYUNIONNAME3;
-  union {
-    D3DVALUE    rhw;
-    D3DVALUE    dvRHW;
-  } DUMMYUNIONNAME4;
-  union {
-    D3DCOLOR    color;
-    D3DCOLOR    dcColor;
-  } DUMMYUNIONNAME5;
-  union {
-    D3DCOLOR    specular;
-    D3DCOLOR    dcSpecular;
-  } DUMMYUNIONNAME6;
-  union {
-    D3DVALUE    tu;
-    D3DVALUE    dvTU;
-  } DUMMYUNIONNAME7;
-  union {
-    D3DVALUE    tv;
-    D3DVALUE    dvTV;
-  } DUMMYUNIONNAME8;
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-public:
-  _D3DTLVERTEX() {}
-  _D3DTLVERTEX(const D3DVECTOR& v, float _rhw, D3DCOLOR _color, D3DCOLOR _specular, float _tu, float _tv) {
-    sx = v.x; sy = v.y; sz = v.z; rhw = _rhw;
-    color = _color; specular = _specular;
-    tu = _tu; tv = _tv;
-  }
-#endif
-} D3DTLVERTEX, *LPD3DTLVERTEX;
-
-typedef struct _D3DLVERTEX {
-  union {
-    D3DVALUE x;
-    D3DVALUE dvX;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DVALUE y;
-    D3DVALUE dvY;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DVALUE z;
-    D3DVALUE dvZ;
-  } DUMMYUNIONNAME3;
-  DWORD            dwReserved;
-  union {
-    D3DCOLOR     color;
-    D3DCOLOR     dcColor;
-  } DUMMYUNIONNAME4;
-  union {
-    D3DCOLOR     specular;
-    D3DCOLOR     dcSpecular;
-  } DUMMYUNIONNAME5;
-  union {
-    D3DVALUE     tu;
-    D3DVALUE     dvTU;
-  } DUMMYUNIONNAME6;
-  union {
-    D3DVALUE     tv;
-    D3DVALUE     dvTV;
-  } DUMMYUNIONNAME7;
-} D3DLVERTEX, *LPD3DLVERTEX;
-
-typedef struct _D3DVERTEX {
-  union {
-    D3DVALUE     x;
-    D3DVALUE     dvX;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DVALUE     y;
-    D3DVALUE     dvY;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DVALUE     z;
-    D3DVALUE     dvZ;
-  } DUMMYUNIONNAME3;
-  union {
-    D3DVALUE     nx;
-    D3DVALUE     dvNX;
-  } DUMMYUNIONNAME4;
-  union {
-    D3DVALUE     ny;
-    D3DVALUE     dvNY;
-  } DUMMYUNIONNAME5;
-  union {
-    D3DVALUE     nz;
-    D3DVALUE     dvNZ;
-  } DUMMYUNIONNAME6;
-  union {
-    D3DVALUE     tu;
-    D3DVALUE     dvTU;
-  } DUMMYUNIONNAME7;
-  union {
-    D3DVALUE     tv;
-    D3DVALUE     dvTV;
-  } DUMMYUNIONNAME8;
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-public:
-  _D3DVERTEX() {}
-  _D3DVERTEX(const D3DVECTOR& v, const D3DVECTOR& n, float _tu, float _tv) {
-    x  = v.x; y  = v.y; z  = v.z;
-    nx = n.x; ny = n.y; nz = n.z;
-    tu = _tu; tv = _tv;
-  }
-#endif
-} D3DVERTEX, *LPD3DVERTEX;
-
-typedef struct _D3DMATRIX {
-  D3DVALUE        _11, _12, _13, _14;
-  D3DVALUE        _21, _22, _23, _24;
-  D3DVALUE        _31, _32, _33, _34;
-  D3DVALUE        _41, _42, _43, _44;
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-  _D3DMATRIX() { }
-
-    /* This is different from MS, but avoids anonymous structs. */
-    D3DVALUE &operator () (int r, int c)
-       { return ((D3DVALUE [4][4])&_11)[r][c]; }
-    const D3DVALUE &operator() (int r, int c) const
-       { return ((const D3DVALUE [4][4])&_11)[r][c]; }
-#endif
-} D3DMATRIX, *LPD3DMATRIX;
-
-#if defined(__cplusplus) && defined(D3D_OVERLOADS)
-#include <d3dvec.inl>
-#endif
-
-typedef struct _D3DVIEWPORT {
-  DWORD       dwSize;
-  DWORD       dwX;
-  DWORD       dwY;
-  DWORD       dwWidth;
-  DWORD       dwHeight;
-  D3DVALUE    dvScaleX;
-  D3DVALUE    dvScaleY;
-  D3DVALUE    dvMaxX;
-  D3DVALUE    dvMaxY;
-  D3DVALUE    dvMinZ;
-  D3DVALUE    dvMaxZ;
-} D3DVIEWPORT, *LPD3DVIEWPORT;
-
-typedef struct _D3DVIEWPORT2 {
-  DWORD       dwSize;
-  DWORD       dwX;
-  DWORD       dwY;
-  DWORD       dwWidth;
-  DWORD       dwHeight;
-  D3DVALUE    dvClipX;
-  D3DVALUE    dvClipY;
-  D3DVALUE    dvClipWidth;
-  D3DVALUE    dvClipHeight;
-  D3DVALUE    dvMinZ;
-  D3DVALUE    dvMaxZ;
-} D3DVIEWPORT2, *LPD3DVIEWPORT2;
-
-typedef struct _D3DVIEWPORT7 {
-  DWORD       dwX;
-  DWORD       dwY;
-  DWORD       dwWidth;
-  DWORD       dwHeight;
-  D3DVALUE    dvMinZ;
-  D3DVALUE    dvMaxZ;
-} D3DVIEWPORT7, *LPD3DVIEWPORT7;
-
-#define D3DMAXUSERCLIPPLANES 32
-
-#define D3DCLIPPLANE0 (1 << 0)
-#define D3DCLIPPLANE1 (1 << 1)
-#define D3DCLIPPLANE2 (1 << 2)
-#define D3DCLIPPLANE3 (1 << 3)
-#define D3DCLIPPLANE4 (1 << 4)
-#define D3DCLIPPLANE5 (1 << 5)
-
-#define D3DCLIP_LEFT     0x00000001
-#define D3DCLIP_RIGHT    0x00000002
-#define D3DCLIP_TOP      0x00000004
-#define D3DCLIP_BOTTOM   0x00000008
-#define D3DCLIP_FRONT    0x00000010
-#define D3DCLIP_BACK     0x00000020
-#define D3DCLIP_GEN0     0x00000040
-#define D3DCLIP_GEN1     0x00000080
-#define D3DCLIP_GEN2     0x00000100
-#define D3DCLIP_GEN3     0x00000200
-#define D3DCLIP_GEN4     0x00000400
-#define D3DCLIP_GEN5     0x00000800
-
-#define D3DSTATUS_CLIPUNIONLEFT                 D3DCLIP_LEFT
-#define D3DSTATUS_CLIPUNIONRIGHT                D3DCLIP_RIGHT
-#define D3DSTATUS_CLIPUNIONTOP                  D3DCLIP_TOP
-#define D3DSTATUS_CLIPUNIONBOTTOM               D3DCLIP_BOTTOM
-#define D3DSTATUS_CLIPUNIONFRONT                D3DCLIP_FRONT
-#define D3DSTATUS_CLIPUNIONBACK                 D3DCLIP_BACK
-#define D3DSTATUS_CLIPUNIONGEN0                 D3DCLIP_GEN0
-#define D3DSTATUS_CLIPUNIONGEN1                 D3DCLIP_GEN1
-#define D3DSTATUS_CLIPUNIONGEN2                 D3DCLIP_GEN2
-#define D3DSTATUS_CLIPUNIONGEN3                 D3DCLIP_GEN3
-#define D3DSTATUS_CLIPUNIONGEN4                 D3DCLIP_GEN4
-#define D3DSTATUS_CLIPUNIONGEN5                 D3DCLIP_GEN5
-
-#define D3DSTATUS_CLIPINTERSECTIONLEFT          0x00001000
-#define D3DSTATUS_CLIPINTERSECTIONRIGHT         0x00002000
-#define D3DSTATUS_CLIPINTERSECTIONTOP           0x00004000
-#define D3DSTATUS_CLIPINTERSECTIONBOTTOM        0x00008000
-#define D3DSTATUS_CLIPINTERSECTIONFRONT         0x00010000
-#define D3DSTATUS_CLIPINTERSECTIONBACK          0x00020000
-#define D3DSTATUS_CLIPINTERSECTIONGEN0          0x00040000
-#define D3DSTATUS_CLIPINTERSECTIONGEN1          0x00080000
-#define D3DSTATUS_CLIPINTERSECTIONGEN2          0x00100000
-#define D3DSTATUS_CLIPINTERSECTIONGEN3          0x00200000
-#define D3DSTATUS_CLIPINTERSECTIONGEN4          0x00400000
-#define D3DSTATUS_CLIPINTERSECTIONGEN5          0x00800000
-#define D3DSTATUS_ZNOTVISIBLE                   0x01000000
-
-#define D3DSTATUS_CLIPUNIONALL  (               \
-            D3DSTATUS_CLIPUNIONLEFT     |       \
-            D3DSTATUS_CLIPUNIONRIGHT    |       \
-            D3DSTATUS_CLIPUNIONTOP      |       \
-            D3DSTATUS_CLIPUNIONBOTTOM   |       \
-            D3DSTATUS_CLIPUNIONFRONT    |       \
-            D3DSTATUS_CLIPUNIONBACK     |       \
-            D3DSTATUS_CLIPUNIONGEN0     |       \
-            D3DSTATUS_CLIPUNIONGEN1     |       \
-            D3DSTATUS_CLIPUNIONGEN2     |       \
-            D3DSTATUS_CLIPUNIONGEN3     |       \
-            D3DSTATUS_CLIPUNIONGEN4     |       \
-            D3DSTATUS_CLIPUNIONGEN5             \
-            )
-
-#define D3DSTATUS_CLIPINTERSECTIONALL   (               \
-            D3DSTATUS_CLIPINTERSECTIONLEFT      |       \
-            D3DSTATUS_CLIPINTERSECTIONRIGHT     |       \
-            D3DSTATUS_CLIPINTERSECTIONTOP       |       \
-            D3DSTATUS_CLIPINTERSECTIONBOTTOM    |       \
-            D3DSTATUS_CLIPINTERSECTIONFRONT     |       \
-            D3DSTATUS_CLIPINTERSECTIONBACK      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN0      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN1      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN2      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN3      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN4      |       \
-            D3DSTATUS_CLIPINTERSECTIONGEN5              \
-            )
-
-#define D3DSTATUS_DEFAULT       (                       \
-            D3DSTATUS_CLIPINTERSECTIONALL       |       \
-            D3DSTATUS_ZNOTVISIBLE)
-
-#define D3DTRANSFORM_CLIPPED       0x00000001
-#define D3DTRANSFORM_UNCLIPPED     0x00000002
-
-typedef struct _D3DTRANSFORMDATA {
-  DWORD           dwSize;
-  LPVOID          lpIn;
-  DWORD           dwInSize;
-  LPVOID          lpOut;
-  DWORD           dwOutSize;
-  LPD3DHVERTEX    lpHOut;
-  DWORD           dwClip;
-  DWORD           dwClipIntersection;
-  DWORD           dwClipUnion;
-  D3DRECT         drExtent;
-} D3DTRANSFORMDATA, *LPD3DTRANSFORMDATA;
-
-typedef struct _D3DLIGHTINGELEMENT {
-  D3DVECTOR dvPosition;
-  D3DVECTOR dvNormal;
-} D3DLIGHTINGELEMENT, *LPD3DLIGHTINGELEMENT;
-
-typedef struct _D3DMATERIAL {
-  DWORD               dwSize;
-  union {
-    D3DCOLORVALUE   diffuse;
-    D3DCOLORVALUE   dcvDiffuse;
-  } DUMMYUNIONNAME;
-  union {
-    D3DCOLORVALUE   ambient;
-    D3DCOLORVALUE   dcvAmbient;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DCOLORVALUE   specular;
-    D3DCOLORVALUE   dcvSpecular;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DCOLORVALUE   emissive;
-    D3DCOLORVALUE   dcvEmissive;
-  } DUMMYUNIONNAME3;
-  union {
-    D3DVALUE        power;
-    D3DVALUE        dvPower;
-  } DUMMYUNIONNAME4;
-  D3DTEXTUREHANDLE    hTexture;
-  DWORD               dwRampSize;
-} D3DMATERIAL, *LPD3DMATERIAL;
-
-typedef struct _D3DMATERIAL7 {
-  union {
-    D3DCOLORVALUE   diffuse;
-    D3DCOLORVALUE   dcvDiffuse;
-  } DUMMYUNIONNAME;
-  union {
-    D3DCOLORVALUE   ambient;
-    D3DCOLORVALUE   dcvAmbient;
-  } DUMMYUNIONNAME1;
-  union {
-    D3DCOLORVALUE   specular;
-    D3DCOLORVALUE   dcvSpecular;
-  } DUMMYUNIONNAME2;
-  union {
-    D3DCOLORVALUE   emissive;
-    D3DCOLORVALUE   dcvEmissive;
-  } DUMMYUNIONNAME3;
-  union {
-    D3DVALUE        power;
-    D3DVALUE        dvPower;
-  } DUMMYUNIONNAME4;
-} D3DMATERIAL7, *LPD3DMATERIAL7;
-
-typedef enum {
-  D3DLIGHT_POINT          = 1,
-  D3DLIGHT_SPOT           = 2,
-  D3DLIGHT_DIRECTIONAL    = 3,
-  D3DLIGHT_PARALLELPOINT  = 4,
-  D3DLIGHT_GLSPOT         = 5,
-  D3DLIGHT_FORCE_DWORD    = 0x7fffffff
-} D3DLIGHTTYPE;
-
-typedef struct _D3DLIGHT {
-    DWORD           dwSize;
-    D3DLIGHTTYPE    dltType;
-    D3DCOLORVALUE   dcvColor;
-    D3DVECTOR       dvPosition;
-    D3DVECTOR       dvDirection;
-    D3DVALUE        dvRange;
-    D3DVALUE        dvFalloff;
-    D3DVALUE        dvAttenuation0;
-    D3DVALUE        dvAttenuation1;
-    D3DVALUE        dvAttenuation2;
-    D3DVALUE        dvTheta;
-    D3DVALUE        dvPhi;
-} D3DLIGHT,*LPD3DLIGHT;
-
-typedef struct _D3DLIGHT7 {
-    D3DLIGHTTYPE    dltType;
-    D3DCOLORVALUE   dcvDiffuse;
-    D3DCOLORVALUE   dcvSpecular;
-    D3DCOLORVALUE   dcvAmbient;
-    D3DVECTOR       dvPosition;
-    D3DVECTOR       dvDirection;
-    D3DVALUE        dvRange;
-    D3DVALUE        dvFalloff;
-    D3DVALUE        dvAttenuation0;
-    D3DVALUE        dvAttenuation1;
-    D3DVALUE        dvAttenuation2;
-    D3DVALUE        dvTheta;
-    D3DVALUE        dvPhi;
-} D3DLIGHT7, *LPD3DLIGHT7;
-
-#define D3DLIGHT_ACTIVE         0x00000001
-#define D3DLIGHT_NO_SPECULAR    0x00000002
-#define D3DLIGHT_ALL (D3DLIGHT_ACTIVE | D3DLIGHT_NO_SPECULAR) /* 0x3 */
-
-#define D3DLIGHT_RANGE_MAX              ((float)sqrt(FLT_MAX))
-
-typedef struct _D3DLIGHT2 {
-  DWORD           dwSize;
-  D3DLIGHTTYPE    dltType;
-  D3DCOLORVALUE   dcvColor;
-  D3DVECTOR       dvPosition;
-  D3DVECTOR       dvDirection;
-  D3DVALUE        dvRange;
-  D3DVALUE        dvFalloff;
-  D3DVALUE        dvAttenuation0;
-  D3DVALUE        dvAttenuation1;
-  D3DVALUE        dvAttenuation2;
-  D3DVALUE        dvTheta;
-  D3DVALUE        dvPhi;
-  DWORD           dwFlags;
-} D3DLIGHT2, *LPD3DLIGHT2;
-
-typedef struct _D3DLIGHTDATA {
-  DWORD                dwSize;
-  LPD3DLIGHTINGELEMENT lpIn;
-  DWORD                dwInSize;
-  LPD3DTLVERTEX        lpOut;
-  DWORD                dwOutSize;
-} D3DLIGHTDATA, *LPD3DLIGHTDATA;
-
-#define D3DCOLOR_MONO   1
-#define D3DCOLOR_RGB    2
-
-typedef DWORD D3DCOLORMODEL;
-
-
-#ifndef D3DCLEAR_TARGET
-#define D3DCLEAR_TARGET   0x00000001
-#endif
-#ifndef D3DCLEAR_ZBUFFER
-#define D3DCLEAR_ZBUFFER  0x00000002
-#endif
-#ifndef D3DCLEAR_STENCIL
-#define D3DCLEAR_STENCIL  0x00000004
-#endif
-
-typedef enum _D3DOPCODE {
-  D3DOP_POINT           = 1,
-  D3DOP_LINE            = 2,
-  D3DOP_TRIANGLE        = 3,
-  D3DOP_MATRIXLOAD      = 4,
-  D3DOP_MATRIXMULTIPLY  = 5,
-  D3DOP_STATETRANSFORM  = 6,
-  D3DOP_STATELIGHT      = 7,
-  D3DOP_STATERENDER     = 8,
-  D3DOP_PROCESSVERTICES = 9,
-  D3DOP_TEXTURELOAD     = 10,
-  D3DOP_EXIT            = 11,
-  D3DOP_BRANCHFORWARD   = 12,
-  D3DOP_SPAN            = 13,
-  D3DOP_SETSTATUS       = 14,
-
-  D3DOP_FORCE_DWORD     = 0x7fffffff
-} D3DOPCODE;
-
-typedef struct _D3DINSTRUCTION {
-  BYTE bOpcode;
-  BYTE bSize;
-  WORD wCount;
-} D3DINSTRUCTION, *LPD3DINSTRUCTION;
-
-typedef struct _D3DTEXTURELOAD {
-  D3DTEXTUREHANDLE hDestTexture;
-  D3DTEXTUREHANDLE hSrcTexture;
-} D3DTEXTURELOAD, *LPD3DTEXTURELOAD;
-
-typedef struct _D3DPICKRECORD {
-  BYTE     bOpcode;
-  BYTE     bPad;
-  DWORD    dwOffset;
-  D3DVALUE dvZ;
-} D3DPICKRECORD, *LPD3DPICKRECORD;
-
-typedef enum {
-  D3DSHADE_FLAT         = 1,
-  D3DSHADE_GOURAUD      = 2,
-  D3DSHADE_PHONG        = 3,
-  D3DSHADE_FORCE_DWORD  = 0x7fffffff
-} D3DSHADEMODE;
-
-typedef enum {
-  D3DFILL_POINT         = 1,
-  D3DFILL_WIREFRAME     = 2,
-  D3DFILL_SOLID         = 3,
-  D3DFILL_FORCE_DWORD   = 0x7fffffff
-} D3DFILLMODE;
-
-typedef struct _D3DLINEPATTERN {
-  WORD    wRepeatFactor;
-  WORD    wLinePattern;
-} D3DLINEPATTERN;
-
-typedef enum {
-  D3DFILTER_NEAREST          = 1,
-  D3DFILTER_LINEAR           = 2,
-  D3DFILTER_MIPNEAREST       = 3,
-  D3DFILTER_MIPLINEAR        = 4,
-  D3DFILTER_LINEARMIPNEAREST = 5,
-  D3DFILTER_LINEARMIPLINEAR  = 6,
-  D3DFILTER_FORCE_DWORD      = 0x7fffffff
-} D3DTEXTUREFILTER;
-
-typedef enum {
-  D3DBLEND_ZERO            = 1,
-  D3DBLEND_ONE             = 2,
-  D3DBLEND_SRCCOLOR        = 3,
-  D3DBLEND_INVSRCCOLOR     = 4,
-  D3DBLEND_SRCALPHA        = 5,
-  D3DBLEND_INVSRCALPHA     = 6,
-  D3DBLEND_DESTALPHA       = 7,
-  D3DBLEND_INVDESTALPHA    = 8,
-  D3DBLEND_DESTCOLOR       = 9,
-  D3DBLEND_INVDESTCOLOR    = 10,
-  D3DBLEND_SRCALPHASAT     = 11,
-  D3DBLEND_BOTHSRCALPHA    = 12,
-  D3DBLEND_BOTHINVSRCALPHA = 13,
-  D3DBLEND_FORCE_DWORD     = 0x7fffffff
-} D3DBLEND;
-
-typedef enum {
-  D3DTBLEND_DECAL         = 1,
-  D3DTBLEND_MODULATE      = 2,
-  D3DTBLEND_DECALALPHA    = 3,
-  D3DTBLEND_MODULATEALPHA = 4,
-  D3DTBLEND_DECALMASK     = 5,
-  D3DTBLEND_MODULATEMASK  = 6,
-  D3DTBLEND_COPY          = 7,
-  D3DTBLEND_ADD           = 8,
-  D3DTBLEND_FORCE_DWORD   = 0x7fffffff
-} D3DTEXTUREBLEND;
-
-typedef enum _D3DTEXTUREADDRESS {
-    D3DTADDRESS_WRAP           = 1,
-    D3DTADDRESS_MIRROR         = 2,
-    D3DTADDRESS_CLAMP          = 3,
-    D3DTADDRESS_BORDER         = 4,
-    D3DTADDRESS_FORCE_DWORD    = 0x7fffffff
-} D3DTEXTUREADDRESS;
-
-typedef enum {
-  D3DCULL_NONE        = 1,
-  D3DCULL_CW          = 2,
-  D3DCULL_CCW         = 3,
-  D3DCULL_FORCE_DWORD = 0x7fffffff
-} D3DCULL;
-
-typedef enum {
-  D3DCMP_NEVER        = 1,
-  D3DCMP_LESS         = 2,
-  D3DCMP_EQUAL        = 3,
-  D3DCMP_LESSEQUAL    = 4,
-  D3DCMP_GREATER      = 5,
-  D3DCMP_NOTEQUAL     = 6,
-  D3DCMP_GREATEREQUAL = 7,
-  D3DCMP_ALWAYS       = 8,
-  D3DCMP_FORCE_DWORD  = 0x7fffffff
-} D3DCMPFUNC;
-
-typedef enum _D3DSTENCILOP {
-  D3DSTENCILOP_KEEP        = 1,
-  D3DSTENCILOP_ZERO        = 2,
-  D3DSTENCILOP_REPLACE     = 3,
-  D3DSTENCILOP_INCRSAT     = 4,
-  D3DSTENCILOP_DECRSAT     = 5,
-  D3DSTENCILOP_INVERT      = 6,
-  D3DSTENCILOP_INCR        = 7,
-  D3DSTENCILOP_DECR        = 8,
-  D3DSTENCILOP_FORCE_DWORD = 0x7fffffff
-} D3DSTENCILOP;
-
-typedef enum _D3DFOGMODE {
-  D3DFOG_NONE         = 0,
-  D3DFOG_EXP          = 1,
-  D3DFOG_EXP2         = 2,
-  D3DFOG_LINEAR       = 3,
-  D3DFOG_FORCE_DWORD  = 0x7fffffff
-} D3DFOGMODE;
-
-typedef enum _D3DZBUFFERTYPE {
-  D3DZB_FALSE        = 0,
-  D3DZB_TRUE         = 1,
-  D3DZB_USEW         = 2,
-  D3DZB_FORCE_DWORD  = 0x7fffffff
-} D3DZBUFFERTYPE;
-
-typedef enum _D3DANTIALIASMODE {
-  D3DANTIALIAS_NONE            = 0,
-  D3DANTIALIAS_SORTDEPENDENT   = 1,
-  D3DANTIALIAS_SORTINDEPENDENT = 2,
-  D3DANTIALIAS_FORCE_DWORD     = 0x7fffffff
-} D3DANTIALIASMODE;
-
-typedef enum {
-  D3DVT_VERTEX        = 1,
-  D3DVT_LVERTEX       = 2,
-  D3DVT_TLVERTEX      = 3,
-  D3DVT_FORCE_DWORD   = 0x7fffffff
-} D3DVERTEXTYPE;
-
-typedef enum {
-  D3DPT_POINTLIST     = 1,
-  D3DPT_LINELIST      = 2,
-  D3DPT_LINESTRIP     = 3,
-  D3DPT_TRIANGLELIST  = 4,
-  D3DPT_TRIANGLESTRIP = 5,
-  D3DPT_TRIANGLEFAN   = 6,
-  D3DPT_FORCE_DWORD   = 0x7fffffff
-} D3DPRIMITIVETYPE;
-
-#define D3DSTATE_OVERRIDE_BIAS      256
-
-#define D3DSTATE_OVERRIDE(type) (D3DRENDERSTATETYPE)(((DWORD) (type) + D3DSTATE_OVERRIDE_BIAS))
-
-typedef enum _D3DTRANSFORMSTATETYPE {
-    D3DTRANSFORMSTATE_WORLD         = 1,
-    D3DTRANSFORMSTATE_VIEW          = 2,
-    D3DTRANSFORMSTATE_PROJECTION    = 3,
-    D3DTRANSFORMSTATE_WORLD1        = 4,
-    D3DTRANSFORMSTATE_WORLD2        = 5,
-    D3DTRANSFORMSTATE_WORLD3        = 6,
-    D3DTRANSFORMSTATE_TEXTURE0      = 16,
-    D3DTRANSFORMSTATE_TEXTURE1      = 17,
-    D3DTRANSFORMSTATE_TEXTURE2      = 18,
-    D3DTRANSFORMSTATE_TEXTURE3      = 19,
-    D3DTRANSFORMSTATE_TEXTURE4      = 20,
-    D3DTRANSFORMSTATE_TEXTURE5      = 21,
-    D3DTRANSFORMSTATE_TEXTURE6      = 22,
-    D3DTRANSFORMSTATE_TEXTURE7      = 23,
-    D3DTRANSFORMSTATE_FORCE_DWORD   = 0x7fffffff
-} D3DTRANSFORMSTATETYPE;
-
-typedef enum {
-  D3DLIGHTSTATE_MATERIAL      = 1,
-  D3DLIGHTSTATE_AMBIENT       = 2,
-  D3DLIGHTSTATE_COLORMODEL    = 3,
-  D3DLIGHTSTATE_FOGMODE       = 4,
-  D3DLIGHTSTATE_FOGSTART      = 5,
-  D3DLIGHTSTATE_FOGEND        = 6,
-  D3DLIGHTSTATE_FOGDENSITY    = 7,
-  D3DLIGHTSTATE_COLORVERTEX   = 8,
-  D3DLIGHTSTATE_FORCE_DWORD   = 0x7fffffff
-} D3DLIGHTSTATETYPE;
-
-typedef enum {
-  D3DRENDERSTATE_TEXTUREHANDLE      = 1,
-  D3DRENDERSTATE_ANTIALIAS          = 2,
-  D3DRENDERSTATE_TEXTUREADDRESS     = 3,
-  D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4,
-  D3DRENDERSTATE_WRAPU              = 5,
-  D3DRENDERSTATE_WRAPV              = 6,
-  D3DRENDERSTATE_ZENABLE            = 7,
-  D3DRENDERSTATE_FILLMODE           = 8,
-  D3DRENDERSTATE_SHADEMODE          = 9,
-  D3DRENDERSTATE_LINEPATTERN        = 10,
-  D3DRENDERSTATE_MONOENABLE         = 11,
-  D3DRENDERSTATE_ROP2               = 12,
-  D3DRENDERSTATE_PLANEMASK          = 13,
-  D3DRENDERSTATE_ZWRITEENABLE       = 14,
-  D3DRENDERSTATE_ALPHATESTENABLE    = 15,
-  D3DRENDERSTATE_LASTPIXEL          = 16,
-  D3DRENDERSTATE_TEXTUREMAG         = 17,
-  D3DRENDERSTATE_TEXTUREMIN         = 18,
-  D3DRENDERSTATE_SRCBLEND           = 19,
-  D3DRENDERSTATE_DESTBLEND          = 20,
-  D3DRENDERSTATE_TEXTUREMAPBLEND    = 21,
-  D3DRENDERSTATE_CULLMODE           = 22,
-  D3DRENDERSTATE_ZFUNC              = 23,
-  D3DRENDERSTATE_ALPHAREF           = 24,
-  D3DRENDERSTATE_ALPHAFUNC          = 25,
-  D3DRENDERSTATE_DITHERENABLE       = 26,
-  D3DRENDERSTATE_ALPHABLENDENABLE   = 27,
-  D3DRENDERSTATE_FOGENABLE          = 28,
-  D3DRENDERSTATE_SPECULARENABLE     = 29,
-  D3DRENDERSTATE_ZVISIBLE           = 30,
-  D3DRENDERSTATE_SUBPIXEL           = 31,
-  D3DRENDERSTATE_SUBPIXELX          = 32,
-  D3DRENDERSTATE_STIPPLEDALPHA      = 33,
-  D3DRENDERSTATE_FOGCOLOR           = 34,
-  D3DRENDERSTATE_FOGTABLEMODE       = 35,
-  D3DRENDERSTATE_FOGTABLESTART      = 36,
-  D3DRENDERSTATE_FOGTABLEEND        = 37,
-  D3DRENDERSTATE_FOGTABLEDENSITY    = 38,
-  D3DRENDERSTATE_FOGSTART           = 36,
-  D3DRENDERSTATE_FOGEND             = 37,
-  D3DRENDERSTATE_FOGDENSITY         = 38,
-  D3DRENDERSTATE_STIPPLEENABLE      = 39,
-  D3DRENDERSTATE_EDGEANTIALIAS      = 40,
-  D3DRENDERSTATE_COLORKEYENABLE     = 41,
-  D3DRENDERSTATE_BORDERCOLOR        = 43,
-  D3DRENDERSTATE_TEXTUREADDRESSU    = 44,
-  D3DRENDERSTATE_TEXTUREADDRESSV    = 45,
-  D3DRENDERSTATE_MIPMAPLODBIAS      = 46,
-  D3DRENDERSTATE_ZBIAS              = 47,
-  D3DRENDERSTATE_RANGEFOGENABLE     = 48,
-  D3DRENDERSTATE_ANISOTROPY         = 49,
-  D3DRENDERSTATE_FLUSHBATCH         = 50,
-  D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT = 51,
-
-  D3DRENDERSTATE_STENCILENABLE      = 52,
-  D3DRENDERSTATE_STENCILFAIL        = 53,
-  D3DRENDERSTATE_STENCILZFAIL       = 54,
-  D3DRENDERSTATE_STENCILPASS        = 55,
-  D3DRENDERSTATE_STENCILFUNC        = 56,
-  D3DRENDERSTATE_STENCILREF         = 57,
-  D3DRENDERSTATE_STENCILMASK        = 58,
-  D3DRENDERSTATE_STENCILWRITEMASK   = 59,
-  D3DRENDERSTATE_TEXTUREFACTOR      = 60,
-
-  D3DRENDERSTATE_STIPPLEPATTERN00   = 64,
-  D3DRENDERSTATE_STIPPLEPATTERN01   = 65,
-  D3DRENDERSTATE_STIPPLEPATTERN02   = 66,
-  D3DRENDERSTATE_STIPPLEPATTERN03   = 67,
-  D3DRENDERSTATE_STIPPLEPATTERN04   = 68,
-  D3DRENDERSTATE_STIPPLEPATTERN05   = 69,
-  D3DRENDERSTATE_STIPPLEPATTERN06   = 70,
-  D3DRENDERSTATE_STIPPLEPATTERN07   = 71,
-  D3DRENDERSTATE_STIPPLEPATTERN08   = 72,
-  D3DRENDERSTATE_STIPPLEPATTERN09   = 73,
-  D3DRENDERSTATE_STIPPLEPATTERN10   = 74,
-  D3DRENDERSTATE_STIPPLEPATTERN11   = 75,
-  D3DRENDERSTATE_STIPPLEPATTERN12   = 76,
-  D3DRENDERSTATE_STIPPLEPATTERN13   = 77,
-  D3DRENDERSTATE_STIPPLEPATTERN14   = 78,
-  D3DRENDERSTATE_STIPPLEPATTERN15   = 79,
-  D3DRENDERSTATE_STIPPLEPATTERN16   = 80,
-  D3DRENDERSTATE_STIPPLEPATTERN17   = 81,
-  D3DRENDERSTATE_STIPPLEPATTERN18   = 82,
-  D3DRENDERSTATE_STIPPLEPATTERN19   = 83,
-  D3DRENDERSTATE_STIPPLEPATTERN20   = 84,
-  D3DRENDERSTATE_STIPPLEPATTERN21   = 85,
-  D3DRENDERSTATE_STIPPLEPATTERN22   = 86,
-  D3DRENDERSTATE_STIPPLEPATTERN23   = 87,
-  D3DRENDERSTATE_STIPPLEPATTERN24   = 88,
-  D3DRENDERSTATE_STIPPLEPATTERN25   = 89,
-  D3DRENDERSTATE_STIPPLEPATTERN26   = 90,
-  D3DRENDERSTATE_STIPPLEPATTERN27   = 91,
-  D3DRENDERSTATE_STIPPLEPATTERN28   = 92,
-  D3DRENDERSTATE_STIPPLEPATTERN29   = 93,
-  D3DRENDERSTATE_STIPPLEPATTERN30   = 94,
-  D3DRENDERSTATE_STIPPLEPATTERN31   = 95,
-
-  D3DRENDERSTATE_WRAP0              = 128,
-  D3DRENDERSTATE_WRAP1              = 129,
-  D3DRENDERSTATE_WRAP2              = 130,
-  D3DRENDERSTATE_WRAP3              = 131,
-  D3DRENDERSTATE_WRAP4              = 132,
-  D3DRENDERSTATE_WRAP5              = 133,
-  D3DRENDERSTATE_WRAP6              = 134,
-  D3DRENDERSTATE_WRAP7              = 135,
-  D3DRENDERSTATE_CLIPPING            = 136,
-  D3DRENDERSTATE_LIGHTING            = 137,
-  D3DRENDERSTATE_EXTENTS             = 138,
-  D3DRENDERSTATE_AMBIENT             = 139,
-  D3DRENDERSTATE_FOGVERTEXMODE       = 140,
-  D3DRENDERSTATE_COLORVERTEX         = 141,
-  D3DRENDERSTATE_LOCALVIEWER         = 142,
-  D3DRENDERSTATE_NORMALIZENORMALS    = 143,
-  D3DRENDERSTATE_COLORKEYBLENDENABLE = 144,
-  D3DRENDERSTATE_DIFFUSEMATERIALSOURCE    = 145,
-  D3DRENDERSTATE_SPECULARMATERIALSOURCE   = 146,
-  D3DRENDERSTATE_AMBIENTMATERIALSOURCE    = 147,
-  D3DRENDERSTATE_EMISSIVEMATERIALSOURCE   = 148,
-  D3DRENDERSTATE_VERTEXBLEND              = 151,
-  D3DRENDERSTATE_CLIPPLANEENABLE          = 152,
-
-  D3DRENDERSTATE_FORCE_DWORD        = 0x7fffffff
-
-  /* FIXME: We have some retired values that are being reused for DirectX 7 */
-} D3DRENDERSTATETYPE;
-
-typedef enum _D3DMATERIALCOLORSOURCE
-{
-    D3DMCS_MATERIAL = 0,
-    D3DMCS_COLOR1   = 1,
-    D3DMCS_COLOR2   = 2,
-    D3DMCS_FORCE_DWORD = 0x7fffffff
-} D3DMATERIALCOLORSOURCE;
-
-#define D3DRENDERSTATE_BLENDENABLE      D3DRENDERSTATE_ALPHABLENDENABLE
-#define D3DRENDERSTATE_WRAPBIAS                 128UL
-#define D3DWRAP_U   0x00000001L
-#define D3DWRAP_V   0x00000002L
-
-#define D3DWRAPCOORD_0   0x00000001L
-#define D3DWRAPCOORD_1   0x00000002L
-#define D3DWRAPCOORD_2   0x00000004L
-#define D3DWRAPCOORD_3   0x00000008L
-
-#define D3DRENDERSTATE_STIPPLEPATTERN(y) (D3DRENDERSTATE_STIPPLEPATTERN00 + (y))
-
-typedef struct _D3DSTATE {
-  union {
-    D3DTRANSFORMSTATETYPE dtstTransformStateType;
-    D3DLIGHTSTATETYPE     dlstLightStateType;
-    D3DRENDERSTATETYPE    drstRenderStateType;
-  } DUMMYUNIONNAME1;
-  union {
-    DWORD                 dwArg[1];
-    D3DVALUE              dvArg[1];
-  } DUMMYUNIONNAME2;
-} D3DSTATE, *LPD3DSTATE;
-
-typedef struct _D3DMATRIXLOAD {
-  D3DMATRIXHANDLE hDestMatrix;
-  D3DMATRIXHANDLE hSrcMatrix;
-} D3DMATRIXLOAD, *LPD3DMATRIXLOAD;
-
-typedef struct _D3DMATRIXMULTIPLY {
-  D3DMATRIXHANDLE hDestMatrix;
-  D3DMATRIXHANDLE hSrcMatrix1;
-  D3DMATRIXHANDLE hSrcMatrix2;
-} D3DMATRIXMULTIPLY, *LPD3DMATRIXMULTIPLY;
-
-typedef struct _D3DPROCESSVERTICES {
-  DWORD dwFlags;
-  WORD  wStart;
-  WORD  wDest;
-  DWORD dwCount;
-  DWORD dwReserved;
-} D3DPROCESSVERTICES, *LPD3DPROCESSVERTICES;
-
-#define D3DPROCESSVERTICES_TRANSFORMLIGHT       0x00000000L
-#define D3DPROCESSVERTICES_TRANSFORM            0x00000001L
-#define D3DPROCESSVERTICES_COPY                 0x00000002L
-#define D3DPROCESSVERTICES_OPMASK               0x00000007L
-
-#define D3DPROCESSVERTICES_UPDATEEXTENTS        0x00000008L
-#define D3DPROCESSVERTICES_NOCOLOR              0x00000010L
-
-typedef enum _D3DTEXTURESTAGESTATETYPE
-{
-    D3DTSS_COLOROP        =  1,
-    D3DTSS_COLORARG1      =  2,
-    D3DTSS_COLORARG2      =  3,
-    D3DTSS_ALPHAOP        =  4,
-    D3DTSS_ALPHAARG1      =  5,
-    D3DTSS_ALPHAARG2      =  6,
-    D3DTSS_BUMPENVMAT00   =  7,
-    D3DTSS_BUMPENVMAT01   =  8,
-    D3DTSS_BUMPENVMAT10   =  9,
-    D3DTSS_BUMPENVMAT11   = 10,
-    D3DTSS_TEXCOORDINDEX  = 11,
-    D3DTSS_ADDRESS        = 12,
-    D3DTSS_ADDRESSU       = 13,
-    D3DTSS_ADDRESSV       = 14,
-    D3DTSS_BORDERCOLOR    = 15,
-    D3DTSS_MAGFILTER      = 16,
-    D3DTSS_MINFILTER      = 17,
-    D3DTSS_MIPFILTER      = 18,
-    D3DTSS_MIPMAPLODBIAS  = 19,
-    D3DTSS_MAXMIPLEVEL    = 20,
-    D3DTSS_MAXANISOTROPY  = 21,
-    D3DTSS_BUMPENVLSCALE  = 22,
-    D3DTSS_BUMPENVLOFFSET = 23,
-    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
-    D3DTSS_FORCE_DWORD   = 0x7fffffff
-} D3DTEXTURESTAGESTATETYPE;
-
-#define D3DTSS_TCI_PASSTHRU                             0x00000000
-#define D3DTSS_TCI_CAMERASPACENORMAL                    0x00010000
-#define D3DTSS_TCI_CAMERASPACEPOSITION                  0x00020000
-#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR          0x00030000
-
-typedef enum _D3DTEXTUREOP
-{
-    D3DTOP_DISABLE    = 1,
-    D3DTOP_SELECTARG1 = 2,
-    D3DTOP_SELECTARG2 = 3,
-
-    D3DTOP_MODULATE   = 4,
-    D3DTOP_MODULATE2X = 5,
-    D3DTOP_MODULATE4X = 6,
-
-    D3DTOP_ADD          =  7,
-    D3DTOP_ADDSIGNED    =  8,
-    D3DTOP_ADDSIGNED2X  =  9,
-    D3DTOP_SUBTRACT     = 10,
-    D3DTOP_ADDSMOOTH    = 11,
-
-    D3DTOP_BLENDDIFFUSEALPHA    = 12,
-    D3DTOP_BLENDTEXTUREALPHA    = 13,
-    D3DTOP_BLENDFACTORALPHA     = 14,
-    D3DTOP_BLENDTEXTUREALPHAPM  = 15,
-    D3DTOP_BLENDCURRENTALPHA    = 16,
-
-    D3DTOP_PREMODULATE            = 17,
-    D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
-    D3DTOP_MODULATECOLOR_ADDALPHA = 19,
-    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
-    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
-
-    D3DTOP_BUMPENVMAP           = 22,
-    D3DTOP_BUMPENVMAPLUMINANCE  = 23,
-    D3DTOP_DOTPRODUCT3          = 24,
-
-    D3DTOP_FORCE_DWORD = 0x7fffffff
-} D3DTEXTUREOP;
-
-#define D3DTA_SELECTMASK        0x0000000f
-#define D3DTA_DIFFUSE           0x00000000
-#define D3DTA_CURRENT           0x00000001
-#define D3DTA_TEXTURE           0x00000002
-#define D3DTA_TFACTOR           0x00000003
-#define D3DTA_SPECULAR          0x00000004
-#define D3DTA_COMPLEMENT        0x00000010
-#define D3DTA_ALPHAREPLICATE    0x00000020
-
-typedef enum _D3DTEXTUREMAGFILTER
-{
-    D3DTFG_POINT        = 1,
-    D3DTFG_LINEAR       = 2,
-    D3DTFG_FLATCUBIC    = 3,
-    D3DTFG_GAUSSIANCUBIC = 4,
-    D3DTFG_ANISOTROPIC  = 5,
-    D3DTFG_FORCE_DWORD  = 0x7fffffff
-} D3DTEXTUREMAGFILTER;
-
-typedef enum _D3DTEXTUREMINFILTER
-{
-    D3DTFN_POINT        = 1,
-    D3DTFN_LINEAR       = 2,
-    D3DTFN_ANISOTROPIC  = 3,
-    D3DTFN_FORCE_DWORD  = 0x7fffffff
-} D3DTEXTUREMINFILTER;
-
-typedef enum _D3DTEXTUREMIPFILTER
-{
-    D3DTFP_NONE         = 1,
-    D3DTFP_POINT        = 2,
-    D3DTFP_LINEAR       = 3,
-    D3DTFP_FORCE_DWORD  = 0x7fffffff
-} D3DTEXTUREMIPFILTER;
-
-#define D3DTRIFLAG_START                        0x00000000L
-#define D3DTRIFLAG_STARTFLAT(len) (len)
-#define D3DTRIFLAG_ODD                          0x0000001eL
-#define D3DTRIFLAG_EVEN                         0x0000001fL
-
-#define D3DTRIFLAG_EDGEENABLE1                  0x00000100L
-#define D3DTRIFLAG_EDGEENABLE2                  0x00000200L
-#define D3DTRIFLAG_EDGEENABLE3                  0x00000400L
-#define D3DTRIFLAG_EDGEENABLETRIANGLE \
-        (D3DTRIFLAG_EDGEENABLE1 | D3DTRIFLAG_EDGEENABLE2 | D3DTRIFLAG_EDGEENABLE3)
-
-typedef struct _D3DTRIANGLE {
-  union {
-    WORD v1;
-    WORD wV1;
-  } DUMMYUNIONNAME1;
-  union {
-    WORD v2;
-    WORD wV2;
-  } DUMMYUNIONNAME2;
-  union {
-    WORD v3;
-    WORD wV3;
-  } DUMMYUNIONNAME3;
-  WORD     wFlags;
-} D3DTRIANGLE, *LPD3DTRIANGLE;
-
-typedef struct _D3DLINE {
-  union {
-    WORD v1;
-    WORD wV1;
-  } DUMMYUNIONNAME1;
-  union {
-    WORD v2;
-    WORD wV2;
-  } DUMMYUNIONNAME2;
-} D3DLINE, *LPD3DLINE;
-
-typedef struct _D3DSPAN {
-  WORD wCount;
-  WORD wFirst;
-} D3DSPAN, *LPD3DSPAN;
-
-typedef struct _D3DPOINT {
-  WORD wCount;
-  WORD wFirst;
-} D3DPOINT, *LPD3DPOINT;
-
-typedef struct _D3DBRANCH {
-  DWORD dwMask;
-  DWORD dwValue;
-  BOOL  bNegate;
-  DWORD dwOffset;
-} D3DBRANCH, *LPD3DBRANCH;
-
-typedef struct _D3DSTATUS {
-  DWORD   dwFlags;
-  DWORD   dwStatus;
-  D3DRECT drExtent;
-} D3DSTATUS, *LPD3DSTATUS;
-
-#define D3DSETSTATUS_STATUS   0x00000001L
-#define D3DSETSTATUS_EXTENTS  0x00000002L
-#define D3DSETSTATUS_ALL      (D3DSETSTATUS_STATUS | D3DSETSTATUS_EXTENTS)
-
-typedef struct _D3DCLIPSTATUS {
-  DWORD dwFlags;
-  DWORD dwStatus;
-  float minx, maxx;
-  float miny, maxy;
-  float minz, maxz;
-} D3DCLIPSTATUS, *LPD3DCLIPSTATUS;
-
-#define D3DCLIPSTATUS_STATUS        0x00000001L
-#define D3DCLIPSTATUS_EXTENTS2      0x00000002L
-#define D3DCLIPSTATUS_EXTENTS3      0x00000004L
-
-typedef struct {
-  DWORD        dwSize;
-  DWORD        dwTrianglesDrawn;
-  DWORD        dwLinesDrawn;
-  DWORD        dwPointsDrawn;
-  DWORD        dwSpansDrawn;
-  DWORD        dwVerticesProcessed;
-} D3DSTATS, *LPD3DSTATS;
-
-#define D3DEXECUTE_CLIPPED       0x00000001l
-#define D3DEXECUTE_UNCLIPPED     0x00000002l
-
-typedef struct _D3DEXECUTEDATA {
-  DWORD     dwSize;
-  DWORD     dwVertexOffset;
-  DWORD     dwVertexCount;
-  DWORD     dwInstructionOffset;
-  DWORD     dwInstructionLength;
-  DWORD     dwHVertexOffset;
-  D3DSTATUS dsStatus;
-} D3DEXECUTEDATA, *LPD3DEXECUTEDATA;
-
-#define D3DPAL_FREE 0x00
-#define D3DPAL_READONLY 0x40
-#define D3DPAL_RESERVED 0x80
-
-typedef struct _D3DVERTEXBUFFERDESC {
-  DWORD dwSize;
-  DWORD dwCaps;
-  DWORD dwFVF;
-  DWORD dwNumVertices;
-} D3DVERTEXBUFFERDESC, *LPD3DVERTEXBUFFERDESC;
-
-#define D3DVBCAPS_SYSTEMMEMORY      0x00000800l
-#define D3DVBCAPS_WRITEONLY         0x00010000l
-#define D3DVBCAPS_OPTIMIZED         0x80000000l
-#define D3DVBCAPS_DONOTCLIP         0x00000001l
-
-#define D3DVOP_LIGHT       (1 << 10)
-#define D3DVOP_TRANSFORM   (1 << 0)
-#define D3DVOP_CLIP        (1 << 2)
-#define D3DVOP_EXTENTS     (1 << 3)
-
-#define D3DMAXNUMVERTICES    ((1<<16) - 1)
-
-#define D3DMAXNUMPRIMITIVES  ((1<<16) - 1)
-
-#define D3DPV_DONOTCOPYDATA (1 << 0)
-
-#define D3DFVF_RESERVED0        0x001
-#define D3DFVF_POSITION_MASK    0x00E
-#define D3DFVF_XYZ              0x002
-#define D3DFVF_XYZRHW           0x004
-#define D3DFVF_XYZB1            0x006
-#define D3DFVF_XYZB2            0x008
-#define D3DFVF_XYZB3            0x00a
-#define D3DFVF_XYZB4            0x00c
-#define D3DFVF_XYZB5            0x00e
-
-#define D3DFVF_NORMAL           0x010
-#define D3DFVF_RESERVED1        0x020
-#define D3DFVF_DIFFUSE          0x040
-#define D3DFVF_SPECULAR         0x080
-#define D3DFVF_TEXCOUNT_MASK    0xf00
-#define D3DFVF_TEXCOUNT_SHIFT   8
-#define D3DFVF_TEX0             0x000
-#define D3DFVF_TEX1             0x100
-#define D3DFVF_TEX2             0x200
-#define D3DFVF_TEX3             0x300
-#define D3DFVF_TEX4             0x400
-#define D3DFVF_TEX5             0x500
-#define D3DFVF_TEX6             0x600
-#define D3DFVF_TEX7             0x700
-#define D3DFVF_TEX8             0x800
-
-#define D3DFVF_RESERVED2        0xf000
-
-#define D3DFVF_VERTEX ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 )
-#define D3DFVF_LVERTEX ( D3DFVF_XYZ | D3DFVF_RESERVED1 | D3DFVF_DIFFUSE | \
-                         D3DFVF_SPECULAR | D3DFVF_TEX1 )
-#define D3DFVF_TLVERTEX ( D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | \
-                          D3DFVF_TEX1 )
-
-typedef struct _D3DDP_PTRSTRIDE {
-  LPVOID lpvData;
-  DWORD  dwStride;
-} D3DDP_PTRSTRIDE;
-
-#define D3DDP_MAXTEXCOORD 8
-
-typedef struct _D3DDRAWPRIMITIVESTRIDEDDATA  {
-  D3DDP_PTRSTRIDE position;
-  D3DDP_PTRSTRIDE normal;
-  D3DDP_PTRSTRIDE diffuse;
-  D3DDP_PTRSTRIDE specular;
-  D3DDP_PTRSTRIDE textureCoords[D3DDP_MAXTEXCOORD];
-} D3DDRAWPRIMITIVESTRIDEDDATA ,*LPD3DDRAWPRIMITIVESTRIDEDDATA;
-
-#define D3DVIS_INSIDE_FRUSTUM       0
-#define D3DVIS_INTERSECT_FRUSTUM    1
-#define D3DVIS_OUTSIDE_FRUSTUM      2
-#define D3DVIS_INSIDE_LEFT          0
-#define D3DVIS_INTERSECT_LEFT       (1 << 2)
-#define D3DVIS_OUTSIDE_LEFT         (2 << 2)
-#define D3DVIS_INSIDE_RIGHT         0
-#define D3DVIS_INTERSECT_RIGHT      (1 << 4)
-#define D3DVIS_OUTSIDE_RIGHT        (2 << 4)
-#define D3DVIS_INSIDE_TOP           0
-#define D3DVIS_INTERSECT_TOP        (1 << 6)
-#define D3DVIS_OUTSIDE_TOP          (2 << 6)
-#define D3DVIS_INSIDE_BOTTOM        0
-#define D3DVIS_INTERSECT_BOTTOM     (1 << 8)
-#define D3DVIS_OUTSIDE_BOTTOM       (2 << 8)
-#define D3DVIS_INSIDE_NEAR          0
-#define D3DVIS_INTERSECT_NEAR       (1 << 10)
-#define D3DVIS_OUTSIDE_NEAR         (2 << 10)
-#define D3DVIS_INSIDE_FAR           0
-#define D3DVIS_INTERSECT_FAR        (1 << 12)
-#define D3DVIS_OUTSIDE_FAR          (2 << 12)
-
-#define D3DVIS_MASK_FRUSTUM         (3 << 0)
-#define D3DVIS_MASK_LEFT            (3 << 2)
-#define D3DVIS_MASK_RIGHT           (3 << 4)
-#define D3DVIS_MASK_TOP             (3 << 6)
-#define D3DVIS_MASK_BOTTOM          (3 << 8)
-#define D3DVIS_MASK_NEAR            (3 << 10)
-#define D3DVIS_MASK_FAR             (3 << 12)
-
-#define D3DDEVINFOID_TEXTUREMANAGER    1
-#define D3DDEVINFOID_D3DTEXTUREMANAGER 2
-#define D3DDEVINFOID_TEXTURING         3
-
-typedef enum _D3DSTATEBLOCKTYPE
-{
-    D3DSBT_ALL           = 1,
-    D3DSBT_PIXELSTATE    = 2,
-    D3DSBT_VERTEXSTATE   = 3,
-    D3DSBT_FORCE_DWORD   = 0xffffffff
-} D3DSTATEBLOCKTYPE;
-
-typedef enum _D3DVERTEXBLENDFLAGS
-{
-    D3DVBLEND_DISABLE  = 0,
-    D3DVBLEND_1WEIGHT  = 1,
-    D3DVBLEND_2WEIGHTS = 2,
-    D3DVBLEND_3WEIGHTS = 3,
-} D3DVERTEXBLENDFLAGS;
-
-typedef enum _D3DTEXTURETRANSFORMFLAGS {
-    D3DTTFF_DISABLE         = 0,
-    D3DTTFF_COUNT1          = 1,
-    D3DTTFF_COUNT2          = 2,
-    D3DTTFF_COUNT3          = 3,
-    D3DTTFF_COUNT4          = 4,
-    D3DTTFF_PROJECTED       = 256,
-    D3DTTFF_FORCE_DWORD     = 0x7fffffff
-} D3DTEXTURETRANSFORMFLAGS;
-
-#define D3DFVF_TEXTUREFORMAT2 0
-#define D3DFVF_TEXTUREFORMAT1 3
-#define D3DFVF_TEXTUREFORMAT3 1
-#define D3DFVF_TEXTUREFORMAT4 2
-
-#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
-#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
-#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
-
-#endif
diff --git a/misc/builddeps/win64/dx/include/d3dvec.inl b/misc/builddeps/win64/dx/include/d3dvec.inl
deleted file mode 100644 (file)
index 9418dd2..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2000 Ove Kaaven
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_D3DVEC_INL
-#define __WINE_D3DVEC_INL
-
-/*** constructors ***/
-
-inline _D3DVECTOR::_D3DVECTOR(D3DVALUE f)
-{
-  x = y = z = f;
-}
-
-inline _D3DVECTOR::_D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z)
-{
-  x = _x; y = _y; z = _z;
-}
-
-/*** assignment operators ***/
-
-inline _D3DVECTOR& _D3DVECTOR::operator += (const _D3DVECTOR& v)
-{
-  x += v.x; y += v.y; z += v.z;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator -= (const _D3DVECTOR& v)
-{
-  x -= v.x; y -= v.y; z -= v.z;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator *= (const _D3DVECTOR& v)
-{
-  x *= v.x; y *= v.y; z *= v.z;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator /= (const _D3DVECTOR& v)
-{
-  x /= v.x; y /= v.y; z /= v.z;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator *= (D3DVALUE s)
-{
-  x *= s; y *= s; z *= s;
-  return *this;
-}
-
-inline _D3DVECTOR& _D3DVECTOR::operator /= (D3DVALUE s)
-{
-  x /= s; y /= s; z /= s;
-  return *this;
-}
-
-/*** unary operators ***/
-
-inline _D3DVECTOR operator + (const _D3DVECTOR& v)
-{
-  return v;
-}
-
-inline _D3DVECTOR operator - (const _D3DVECTOR& v)
-{
-  return _D3DVECTOR(-v.x, -v.y, -v.z);
-}
-
-/*** binary operators ***/
-
-inline _D3DVECTOR operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
-{
-  return _D3DVECTOR(v1.x+v2.x, v1.y+v2.y, v1.z+v2.z);
-}
-
-inline _D3DVECTOR operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
-{
-  return _D3DVECTOR(v1.x-v2.x, v1.y-v2.y, v1.z-v2.z);
-}
-
-inline _D3DVECTOR operator * (const _D3DVECTOR& v, D3DVALUE s)
-{
-  return _D3DVECTOR(v.x*s, v.y*s, v.z*s);
-}
-
-inline _D3DVECTOR operator * (D3DVALUE s, const _D3DVECTOR& v)
-{
-  return _D3DVECTOR(v.x*s, v.y*s, v.z*s);
-}
-
-inline _D3DVECTOR operator / (const _D3DVECTOR& v, D3DVALUE s)
-{
-  return _D3DVECTOR(v.x/s, v.y/s, v.z/s);
-}
-
-inline D3DVALUE SquareMagnitude(const _D3DVECTOR& v)
-{
-  return v.x*v.x + v.y*v.y + v.z*v.z; /* DotProduct(v, v) */
-}
-
-inline D3DVALUE Magnitude(const _D3DVECTOR& v)
-{
-  return sqrt(SquareMagnitude(v));
-}
-
-inline _D3DVECTOR Normalize(const _D3DVECTOR& v)
-{
-  return v / Magnitude(v);
-}
-
-inline D3DVALUE DotProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2)
-{
-  return v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;
-}
-
-inline _D3DVECTOR CrossProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2)
-{
-  _D3DVECTOR res;
-  /* this is a left-handed cross product, right? */
-  res.x = v1.y * v2.z - v1.z * v2.y;
-  res.y = v1.z * v2.x - v1.x * v2.z;
-  res.z = v1.x * v2.y - v1.y * v2.x;
-  return res;
-}
-
-#endif
diff --git a/misc/builddeps/win64/dx/include/d3dx9.h b/misc/builddeps/win64/dx/include/d3dx9.h
deleted file mode 100644 (file)
index 09ae553..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2007 David Adam
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DX9_H__
-#define __D3DX9_H__
-
-#include <limits.h>
-
-#define D3DX_DEFAULT         ((UINT)-1)
-#define D3DX_DEFAULT_NONPOW2 ((UINT)-2)
-#define D3DX_DEFAULT_FLOAT   FLT_MAX
-#define D3DX_FROM_FILE       ((UINT)-3)
-#define D3DFMT_FROM_FILE     ((D3DFORMAT)-3)
-
-#include "d3d9.h"
-#include "d3dx9math.h"
-#include "d3dx9core.h"
-#include "d3dx9mesh.h"
-#include "d3dx9shader.h"
-#include "d3dx9effect.h"
-#include "d3dx9shape.h"
-#include "d3dx9tex.h"
-
-#define _FACDD 0x876
-#define MAKE_DDHRESULT(code) MAKE_HRESULT(1, _FACDD, code)
-
-enum _D3DXERR {
-    D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
-    D3DXERR_INVALIDMESH             = MAKE_DDHRESULT(2901),
-    D3DXERR_CANNOTATTRSORT          = MAKE_DDHRESULT(2902),
-    D3DXERR_SKINNINGNOTSUPPORTED    = MAKE_DDHRESULT(2903),
-    D3DXERR_TOOMANYINFLUENCES       = MAKE_DDHRESULT(2904),
-    D3DXERR_INVALIDDATA             = MAKE_DDHRESULT(2905),
-    D3DXERR_LOADEDMESHASNODATA      = MAKE_DDHRESULT(2906),
-    D3DXERR_DUPLICATENAMEDFRAGMENT  = MAKE_DDHRESULT(2907),
-    D3DXERR_CANNOTREMOVELASTITEM    = MAKE_DDHRESULT(2908),
-};
-
-#endif
diff --git a/misc/builddeps/win64/dx/include/d3dx9core.h b/misc/builddeps/win64/dx/include/d3dx9core.h
deleted file mode 100644 (file)
index c1b948e..0000000
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <_mingw_dxhelper.h>
-#include <d3dx9.h>
-
-#ifndef __WINE_D3DX9CORE_H
-#define __WINE_D3DX9CORE_H
-
-/**********************************************
- ***************** Definitions ****************
- **********************************************/
-/* D3DX_VERSION will be completely ignored since we are
-    implementing all dlls from d3dx9_24 to d3dx9_36 */
-#define D3DX_VERSION 0x0902
-#define D3DX_SDK_VERSION 36
-#define D3DXSPRITE_DONOTSAVESTATE           1
-#define D3DXSPRITE_DONOTMODIFY_RENDERSTATE  2
-#define D3DXSPRITE_OBJECTSPACE              4
-#define D3DXSPRITE_BILLBOARD                8
-#define D3DXSPRITE_ALPHABLEND              16
-#define D3DXSPRITE_SORT_TEXTURE            32
-#define D3DXSPRITE_SORT_DEPTH_FRONTTOBACK  64
-#define D3DXSPRITE_SORT_DEPTH_BACKTOFRONT 128
-#define D3DXSPRITE_DO_NOT_ADDREF_TEXTURE  256
-
-/**********************************************
- ******************** GUIDs *******************
- **********************************************/
-DEFINE_GUID(IID_ID3DXBuffer, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
-DEFINE_GUID(IID_ID3DXFont, 0xd79dbb70, 0x5f21, 0x4d36, 0xbb, 0xc2, 0xff, 0x52, 0x5c, 0x21, 0x3c, 0xdc);
-DEFINE_GUID(IID_ID3DXLine, 0xd379ba7f, 0x9042, 0x4ac4, 0x9f, 0x5e, 0x58, 0x19, 0x2a, 0x4c, 0x6b, 0xd8);
-DEFINE_GUID(IID_ID3DXRenderToEnvMap, 0x313f1b4b, 0xc7b0, 0x4fa2, 0x9d, 0x9d, 0x8d, 0x38, 0xb, 0x64, 0x38, 0x5e);
-DEFINE_GUID(IID_ID3DXRenderToSurface, 0x6985f346, 0x2c3d, 0x43b3, 0xbe, 0x8b, 0xda, 0xae, 0x8a, 0x3, 0xd8, 0x94);
-DEFINE_GUID(IID_ID3DXSprite, 0xba0b762d, 0x7d28, 0x43ec, 0xb9, 0xdc, 0x2f, 0x84, 0x44, 0x3b, 0x6, 0x14);
-
-/**********************************************
- ****************** typedefs ******************
- **********************************************/
-typedef struct ID3DXBuffer *LPD3DXBUFFER;
-typedef struct ID3DXFont *LPD3DXFONT;
-typedef struct ID3DXLine *LPD3DXLINE;
-typedef struct ID3DXRenderToEnvMap *LPD3DXRenderToEnvMap;
-typedef struct ID3DXRenderToSurface *LPD3DXRENDERTOSURFACE;
-typedef struct ID3DXSprite *LPD3DXSPRITE;
-
-/**********************************************
- *********** interface declarations ***********
- **********************************************/
-#define INTERFACE ID3DXBuffer
-DECLARE_INTERFACE_(ID3DXBuffer, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBuffer methods ***/
-    STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
-    STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define ID3DXBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** ID3DXBuffer methods ***/
-#define ID3DXBuffer_GetBufferPointer(p)   (p)->lpVtbl->GetBufferPointer(p)
-#define ID3DXBuffer_GetBufferSize(p)      (p)->lpVtbl->GetBufferSize(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define ID3DXBuffer_AddRef(p)             (p)->AddRef()
-#define ID3DXBuffer_Release(p)            (p)->Release()
-/*** ID3DXBuffer methods ***/
-#define ID3DXBuffer_GetBufferPointer(p)   (p)->GetBufferPointer()
-#define ID3DXBuffer_GetBufferSize(p)      (p)->GetBufferSize()
-#endif
-
-typedef struct _D3DXFONT_DESCA
-{
-    INT Height;
-    UINT Width;
-    UINT Weight;
-    UINT MipLevels;
-    BOOL Italic;
-    BYTE CharSet;
-    BYTE OutputPrecision;
-    BYTE Quality;
-    BYTE PitchAndFamily;
-    CHAR FaceName[LF_FACESIZE];
-} D3DXFONT_DESCA, *LPD3DXFONT_DESCA;
-
-typedef struct _D3DXFONT_DESCW
-{
-    INT Height;
-    UINT Width;
-    UINT Weight;
-    UINT MipLevels;
-    BOOL Italic;
-    BYTE CharSet;
-    BYTE OutputPrecision;
-    BYTE Quality;
-    BYTE PitchAndFamily;
-    WCHAR FaceName[LF_FACESIZE];
-} D3DXFONT_DESCW, *LPD3DXFONT_DESCW;
-
-DECL_WINELIB_TYPE_AW(D3DXFONT_DESC)
-DECL_WINELIB_TYPE_AW(LPD3DXFONT_DESC)
-
-#define INTERFACE ID3DXFont
-DECLARE_INTERFACE_(ID3DXFont, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXFont methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-    STDMETHOD(GetDescA)(THIS_ D3DXFONT_DESCA *desc) PURE;
-    STDMETHOD(GetDescW)(THIS_ D3DXFONT_DESCW *desc) PURE;
-    STDMETHOD_(BOOL, GetTextMetricsA)(THIS_ TEXTMETRICA *metrics) PURE;
-    STDMETHOD_(BOOL, GetTextMetricsW)(THIS_ TEXTMETRICW *metrics) PURE;
-
-    STDMETHOD_(HDC, GetDC)(THIS) PURE;
-    STDMETHOD(GetGlyphData)(THIS_ UINT glyph, LPDIRECT3DTEXTURE9 *texture, RECT *blackbox, POINT *cellinc) PURE;
-
-    STDMETHOD(PreloadCharacters)(THIS_ UINT first, UINT last) PURE;
-    STDMETHOD(PreloadGlyphs)(THIS_ UINT first, UINT last) PURE;
-    STDMETHOD(PreloadTextA)(THIS_ LPCSTR string, INT count) PURE;
-    STDMETHOD(PreloadTextW)(THIS_ LPCWSTR string, INT count) PURE;
-
-    STDMETHOD_(INT, DrawTextA)(THIS_ LPD3DXSPRITE sprite, LPCSTR string, INT count, LPRECT rect, DWORD format, D3DCOLOR color) PURE;
-    STDMETHOD_(INT, DrawTextW)(THIS_ LPD3DXSPRITE sprite, LPCWSTR string, INT count, LPRECT rect, DWORD format, D3DCOLOR color) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-
-/*** IUnknown methods ***/
-#define ID3DXFont_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXFont_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define ID3DXFont_Release(p)               (p)->lpVtbl->Release(p)
-/*** ID3DXFont methods ***/
-#define ID3DXFont_GetDevice(p,a)           (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXFont_GetDescA(p,a)            (p)->lpVtbl->GetDescA(p,a)
-#define ID3DXFont_GetDescW(p,a)            (p)->lpVtbl->GetDescW(p,a)
-#define ID3DXFont_GetTextMetricsA(p,a)     (p)->lpVtbl->GetTextMetricsA(p,a)
-#define ID3DXFont_GetTextMetricsW(p,a)     (p)->lpVtbl->GetTextMetricsW(p,a)
-#define ID3DXFont_GetDC(p)                 (p)->lpVtbl->GetDC(p)
-#define ID3DXFont_GetGlyphData(p,a,b,c,d)  (p)->lpVtbl->GetGlyphData(p,a,b,c,d)
-#define ID3DXFont_PreloadCharacters(p,a,b) (p)->lpVtbl->PreloadCharacters(p,a,b)
-#define ID3DXFont_PreloadGlyphs(p,a,b)     (p)->lpVtbl->PreloadGlyphs(p,a,b)
-#define ID3DXFont_PreloadTextA(p,a,b)      (p)->lpVtbl->PreloadTextA(p,a,b)
-#define ID3DXFont_PreloadTextW(p,a,b)      (p)->lpVtbl->PreloadTextW(p,a,b)
-#define ID3DXFont_DrawTextA(p,a,b,c,d,e,f) (p)->lpVtbl->DrawTextA(p,a,b,c,d,e,f)
-#define ID3DXFont_DrawTextW(p,a,b,c,d,e,f) (p)->lpVtbl->DrawTextW(p,a,b,c,d,e,f)
-#define ID3DXFont_OnLostDevice(p)          (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXFont_OnResetDevice(p)         (p)->lpVtbl->OnResetDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXFont_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define ID3DXFont_AddRef(p)                (p)->AddRef()
-#define ID3DXFont_Release(p)               (p)->Release()
-/*** ID3DXFont methods ***/
-#define ID3DXFont_GetDevice(p,a)           (p)->GetDevice(a)
-#define ID3DXFont_GetDescA(p,a)            (p)->GetDescA(a)
-#define ID3DXFont_GetDescW(p,a)            (p)->GetDescW(a)
-#define ID3DXFont_GetTextMetricsA(p,a)     (p)->GetTextMetricsA(a)
-#define ID3DXFont_GetTextMetricsW(p,a)     (p)->GetTextMetricsW(a)
-#define ID3DXFont_GetDC(p)                 (p)->GetDC()
-#define ID3DXFont_GetGlyphData(p,a,b,c,d)  (p)->GetGlyphData(a,b,c,d)
-#define ID3DXFont_PreloadCharacters(p,a,b) (p)->PreloadCharacters(a,b)
-#define ID3DXFont_PreloadGlyphs(p,a,b)     (p)->PreloadGlyphs(a,b)
-#define ID3DXFont_PreloadTextA(p,a,b)      (p)->PreloadTextA(a,b)
-#define ID3DXFont_PreloadTextW(p,a,b)      (p)->PreloadTextW(a,b)
-#define ID3DXFont_DrawTextA(p,a,b,c,d,e,f) (p)->DrawTextA(a,b,c,d,e,f)
-#define ID3DXFont_DrawTextW(p,a,b,c,d,e,f) (p)->DrawTextW(a,b,c,d,e,f)
-#define ID3DXFont_OnLostDevice(p)          (p)->OnLostDevice()
-#define ID3DXFont_OnResetDevice(p)         (p)->OnResetDevice()
-#endif
-#define ID3DXFont_DrawText       WINELIB_NAME_AW(ID3DXFont_DrawText)
-#define ID3DXFont_GetDesc        WINELIB_NAME_AW(ID3DXFont_GetDesc)
-#define ID3DXFont_GetTextMetrics WINELIB_NAME_AW(ID3DXFont_GetTextMetrics)
-#define ID3DXFont_PreloadText    WINELIB_NAME_AW(ID3DXFont_PreloadText)
-
-#define INTERFACE ID3DXLine
-DECLARE_INTERFACE_(ID3DXLine, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /*** ID3DXLine methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-
-    STDMETHOD(Begin)(THIS) PURE;
-    STDMETHOD(Draw)(THIS_ CONST D3DXVECTOR2 *vertexlist, DWORD vertexlistcount, D3DCOLOR color) PURE;
-    STDMETHOD(DrawTransform)(THIS_ CONST D3DXVECTOR3 *vertexlist, DWORD vertexlistcount,
-                             CONST D3DXMATRIX *transform, D3DCOLOR color) PURE;
-    STDMETHOD(SetPattern)(THIS_ DWORD pattern) PURE;
-    STDMETHOD_(DWORD, GetPattern)(THIS) PURE;
-    STDMETHOD(SetPatternScale)(THIS_ FLOAT scale) PURE;
-    STDMETHOD_(FLOAT, GetPatternScale)(THIS) PURE;
-    STDMETHOD(SetWidth)(THIS_ FLOAT width) PURE;
-    STDMETHOD_(FLOAT, GetWidth)(THIS) PURE;
-    STDMETHOD(SetAntialias)(THIS_ BOOL antialias) PURE;
-    STDMETHOD_(BOOL, GetAntialias)(THIS) PURE;
-    STDMETHOD(SetGLLines)(THIS_ BOOL gl_lines) PURE;
-    STDMETHOD_(BOOL, GetGLLines)(THIS) PURE;
-    STDMETHOD(End)(THIS) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXLine_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXLine_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define ID3DXLine_Release(p)               (p)->lpVtbl->Release(p)
-/*** ID3DXLine methods ***/
-#define ID3DXLine_GetDevice(p,a)           (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXLine_Begin(p)                 (p)->lpVtbl->Begin(p)
-#define ID3DXLine_Draw(p,a,b,c)            (p)->lpVtbl->Draw(p,a,b,c)
-#define ID3DXLine_DrawTransform(p,a,b,c,d) (p)->lpVtbl->DrawTransform(p,a,b,c,d)
-#define ID3DXLine_SetPattern(p,a)          (p)->lpVtbl->SetPattern(p,a)
-#define ID3DXLine_GetPattern(p)            (p)->lpVtbl->GetPattern(p)
-#define ID3DXLine_SetPatternScale(p,a)     (p)->lpVtbl->SetPatternScale(p,a)
-#define ID3DXLine_GetPatternScale(p)       (p)->lpVtbl->GetPatternScale(p)
-#define ID3DXLine_SetWidth(p,a)            (p)->lpVtbl->SetWidth(p,a)
-#define ID3DXLine_GetWidth(p)              (p)->lpVtbl->GetWidth(p)
-#define ID3DXLine_SetAntialias(p,a)        (p)->lpVtbl->SetAntialias(p,a)
-#define ID3DXLine_GetAntialias(p)          (p)->lpVtbl->GetAntialias(p)
-#define ID3DXLine_SetGLLines(p,a)          (p)->lpVtbl->SetGLLines(p,a)
-#define ID3DXLine_GetGLLines(p)            (p)->lpVtbl->GetGLLines(p)
-#define ID3DXLine_End(p)                   (p)->lpVtbl->End(p)
-#define ID3DXLine_OnLostDevice(p)          (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXLine_OnResetDevice(p)         (p)->lpVtbl->OnResetDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXLine_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define ID3DXLine_AddRef(p)                (p)->AddRef()
-#define ID3DXLine_Release(p)               (p)->Release()
-/*** ID3DXLine methods ***/
-#define ID3DXLine_GetDevice(p,a)           (p)->GetDevice(a)
-#define ID3DXLine_Begin(p)                 (p)->Begin()
-#define ID3DXLine_Draw(p,a,b,c)            (p)->Draw(a,b,c)
-#define ID3DXLine_DrawTransform(p,a,b,c,d) (p)->DrawTransform(a,b,c,d)
-#define ID3DXLine_SetPattern(p,a)          (p)->SetPattern(a)
-#define ID3DXLine_GetPattern(p)            (p)->GetPattern()
-#define ID3DXLine_SetPatternScale(p,a)     (p)->SetPatternScale(a)
-#define ID3DXLine_GetPatternScale(p)       (p)->GetPatternScale()
-#define ID3DXLine_SetWidth(p,a)            (p)->SetWidth(a)
-#define ID3DXLine_GetWidth(p)              (p)->GetWidth()
-#define ID3DXLine_SetAntialias(p,a)        (p)->SetAntialias(a)
-#define ID3DXLine_GetAntialias(p)          (p)->GetAntialias()
-#define ID3DXLine_SetGLLines(p,a)          (p)->SetGLLines(a)
-#define ID3DXLine_GetGLLines(p)            (p)->GetGLLines()
-#define ID3DXLine_End(p)                   (p)->End()
-#define ID3DXLine_OnLostDevice(p)          (p)->OnLostDevice()
-#define ID3DXLine_OnResetDevice(p)         (p)->OnResetDevice()
-#endif
-
-typedef struct _D3DXRTE_DESC
-{
-    UINT Size;
-    UINT MipLevels;
-    D3DFORMAT Format;
-    BOOL DepthStencil;
-    D3DFORMAT DepthStencilFormat;
-} D3DXRTE_DESC;
-
-#define INTERFACE ID3DXRenderToEnvMap
-DECLARE_INTERFACE_(ID3DXRenderToEnvMap, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /*** ID3DXRenderToEnvMap methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DXRTE_DESC *desc) PURE;
-
-    STDMETHOD(BeginCube)(THIS_ LPDIRECT3DCUBETEXTURE9 cubetex) PURE;
-    STDMETHOD(BeginSphere)(THIS_ LPDIRECT3DTEXTURE9 tex) PURE;
-    STDMETHOD(BeginHemisphere)(THIS_ LPDIRECT3DTEXTURE9 texzpos, LPDIRECT3DTEXTURE9 texzneg) PURE;
-    STDMETHOD(BeginParabolic)(THIS_ LPDIRECT3DTEXTURE9 texzpos, LPDIRECT3DTEXTURE9 texzneg) PURE;
-
-    STDMETHOD(Face)(THIS_ D3DCUBEMAP_FACES face, DWORD mipfilter) PURE;
-    STDMETHOD(End)(THIS_ DWORD mipfilter) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXRenderToEnvMap_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXRenderToEnvMap_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define ID3DXRenderToEnvMap_Release(p)             (p)->lpVtbl->Release(p)
-/*** ID3DXRenderToEnvMap methods ***/
-#define ID3DXRenderToEnvMap_GetDevice(p,a)         (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXRenderToEnvMap_GetDesc(p,a)           (p)->lpVtbl->GetDesc(p,a)
-#define ID3DXRenderToEnvMap_BeginCube(p,a)         (p)->lpVtbl->BeginCube(p,a)
-#define ID3DXRenderToEnvMap_BeginSphere(p,a)       (p)->lpVtbl->BeginSphere(p,a)
-#define ID3DXRenderToEnvMap_BeginHemisphere(p,a,b) (p)->lpVtbl->BeginHemisphere(p,a,b)
-#define ID3DXRenderToEnvMap_BeginParabolic(p,a,b)  (p)->lpVtbl->BeginParabolic(p,a,b)
-#define ID3DXRenderToEnvMap_Face(p,a,b)            (p)->lpVtbl->Face(p,a,b)
-#define ID3DXRenderToEnvMap_End(p,a)               (p)->lpVtbl->End(p,a)
-#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->lpVtbl->OnLostDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXRenderToEnvMap_QueryInterface(p,a,b)  (p)->QueryInterface(a,b)
-#define ID3DXRenderToEnvMap_AddRef(p)              (p)->AddRef()
-#define ID3DXRenderToEnvMap_Release(p)             (p)->Release()
-/*** ID3DXRenderToEnvMap methods ***/
-#define ID3DXRenderToEnvMap_GetDevice(p,a)         (p)->GetDevice(a)
-#define ID3DXRenderToEnvMap_GetDesc(p,a)           (p)->GetDesc(a)
-#define ID3DXRenderToEnvMap_BeginCube(p,a)         (p)->BeginCube(a)
-#define ID3DXRenderToEnvMap_BeginSphere(p,a)       (p)->BeginSphere(a)
-#define ID3DXRenderToEnvMap_BeginHemisphere(p,a,b) (p)->BeginHemisphere(a,b)
-#define ID3DXRenderToEnvMap_BeginParabolic(p,a,b)  (p)->BeginParabolic(a,b)
-#define ID3DXRenderToEnvMap_Face(p,a,b)            (p)->Face(a,b)
-#define ID3DXRenderToEnvMap_End(p,a)               (p)->End(a)
-#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->OnLostDevice()
-#define ID3DXRenderToEnvMap_OnLostDevice(p)        (p)->OnLostDevice()
-#endif
-
-typedef struct _D3DXRTS_DESC
-{
-    UINT Width;
-    UINT Height;
-    D3DFORMAT Format;
-    BOOL DepthStencil;
-    D3DFORMAT DepthStencilFormat;
-} D3DXRTS_DESC;
-
-#define INTERFACE ID3DXRenderToSurface
-DECLARE_INTERFACE_(ID3DXRenderToSurface, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXRenderToSurface methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-    STDMETHOD(GetDesc)(THIS_ D3DXRTS_DESC *desc) PURE;
-
-    STDMETHOD(BeginScene)(THIS_ LPDIRECT3DSURFACE9 surface, CONST D3DVIEWPORT9 *viewport) PURE;
-    STDMETHOD(EndScene)(THIS_ DWORD mipfilter) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXRenderToSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXRenderToSurface_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define ID3DXRenderToSurface_Release(p)            (p)->lpVtbl->Release(p)
-/*** ID3DXRenderToSurface methods ***/
-#define ID3DXRenderToSurface_GetDevice(p,a)        (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXRenderToSurface_GetDesc(p,a)          (p)->lpVtbl->GetDesc(p,a)
-#define ID3DXRenderToSurface_BeginScene(p,a,b)     (p)->lpVtbl->BeginScene(p,a,b)
-#define ID3DXRenderToSurface_EndScene(p,a)         (p)->lpVtbl->EndScene(p,a)
-#define ID3DXRenderToSurface_OnLostDevice(p)       (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXRenderToSurface_OnResetDevice(p)      (p)->lpVtbl->OnResetDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXRenderToSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define ID3DXRenderToSurface_AddRef(p)             (p)->AddRef()
-#define ID3DXRenderToSurface_Release(p)            (p)->Release()
-/*** ID3DXRenderToSurface methods ***/
-#define ID3DXRenderToSurface_GetDevice(p,a)        (p)->GetDevice(a)
-#define ID3DXRenderToSurface_GetDesc(p,a)          (p)->GetDesc(a)
-#define ID3DXRenderToSurface_BeginScene(p,a,b)     (p)->BeginScene(a,b)
-#define ID3DXRenderToSurface_EndScene(p,a)         (p)->EndScene(a)
-#define ID3DXRenderToSurface_OnLostDevice(p)       (p)->OnLostDevice()
-#define ID3DXRenderToSurface_OnResetDevice(p)      (p)->OnResetDevice()
-#endif
-
-#define INTERFACE ID3DXSprite
-DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXSprite methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
-
-    STDMETHOD(GetTransform)(THIS_ D3DXMATRIX *transform) PURE;
-    STDMETHOD(SetTransform)(THIS_ CONST D3DXMATRIX *transform) PURE;
-    STDMETHOD(SetWorldViewRH)(THIS_ CONST D3DXMATRIX *world, CONST D3DXMATRIX *view) PURE;
-    STDMETHOD(SetWorldViewLH)(THIS_ CONST D3DXMATRIX *world, CONST D3DXMATRIX *view) PURE;
-
-    STDMETHOD(Begin)(THIS_ DWORD flags) PURE;
-    STDMETHOD(Draw)(THIS_ LPDIRECT3DTEXTURE9 texture, CONST RECT *rect, CONST D3DXVECTOR3 *center, CONST D3DXVECTOR3 *position, D3DCOLOR color) PURE;
-    STDMETHOD(Flush)(THIS) PURE;
-    STDMETHOD(End)(THIS) PURE;
-
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXSprite_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXSprite_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define ID3DXSprite_Release(p)            (p)->lpVtbl->Release(p)
-/*** ID3DXSprite methods ***/
-#define ID3DXSprite_GetDevice(p,a)        (p)->lpVtbl->GetDevice(p,a)
-#define ID3DXSprite_GetTransform(p,a)     (p)->lpVtbl->GetTransform(p,a)
-#define ID3DXSprite_SetTransform(p,a)     (p)->lpVtbl->SetTransform(p,a)
-#define ID3DXSprite_SetWorldViewRH(p,a,b) (p)->lpVtbl->SetWorldViewRH(p,a,b)
-#define ID3DXSprite_SetWorldViewLH(p,a,b) (p)->lpVtbl->SetWorldViewLH(p,a,b)
-#define ID3DXSprite_Begin(p,a)            (p)->lpVtbl->Begin(p,a)
-#define ID3DXSprite_Draw(p,a,b,c,d,e)     (p)->lpVtbl->Draw(p,a,b,c,d,e)
-#define ID3DXSprite_Flush(p)              (p)->lpVtbl->Flush(p)
-#define ID3DXSprite_End(p)                (p)->lpVtbl->End(p)
-#define ID3DXSprite_OnLostDevice(p)       (p)->lpVtbl->OnLostDevice(p)
-#define ID3DXSprite_OnResetDevice(p)      (p)->lpVtbl->OnResetDevice(p)
-#else
-/*** IUnknown methods ***/
-#define ID3DXSprite_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define ID3DXSprite_AddRef(p)                (p)->AddRef()
-#define ID3DXSprite_Release(p)               (p)->Release()
-/*** ID3DXSprite methods ***/
-#define ID3DXSprite_GetDevice(p,a)        (p)->GetDevice(a)
-#define ID3DXSprite_GetTransform(p,a)     (p)->GetTransform(a)
-#define ID3DXSprite_SetTransform(p,a)     (p)->SetTransform(a)
-#define ID3DXSprite_SetWorldViewRH(p,a,b) (p)->SetWorldViewRH(a,b)
-#define ID3DXSprite_SetWorldViewLH(p,a,b) (p)->SetWorldViewLH(a,b)
-#define ID3DXSprite_Begin(p,a)            (p)->Begin(a)
-#define ID3DXSprite_Draw(p,a,b,c,d,e)     (p)->Draw(a,b,c,d,e)
-#define ID3DXSprite_Flush(p)              (p)->Flush()
-#define ID3DXSprite_End(p)                (p)->End()
-#define ID3DXSprite_OnLostDevice(p)       (p)->OnLostDevice()
-#define ID3DXSprite_OnResetDevice(p)      (p)->OnResetDevice()
-#endif
-
-/**********************************************
- ****************** functions *****************
- **********************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-BOOL    WINAPI D3DXCheckVersion(UINT d3dsdkvers, UINT d3dxsdkvers);
-HRESULT WINAPI D3DXCreateFontA(LPDIRECT3DDEVICE9 device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset,
-                               DWORD precision, DWORD quality, DWORD pitchandfamily, LPCSTR facename, LPD3DXFONT *font);
-HRESULT WINAPI D3DXCreateFontW(LPDIRECT3DDEVICE9 device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset,
-                               DWORD precision, DWORD quality, DWORD pitchandfamily, LPCWSTR facename, LPD3DXFONT *font);
-#define        D3DXCreateFont WINELIB_NAME_AW(D3DXCreateFont)
-HRESULT WINAPI D3DXCreateFontIndirectA(LPDIRECT3DDEVICE9 device, CONST D3DXFONT_DESCA *desc, LPD3DXFONT *font);
-HRESULT WINAPI D3DXCreateFontIndirectW(LPDIRECT3DDEVICE9 device, CONST D3DXFONT_DESCW *desc, LPD3DXFONT *font);
-#define        D3DXCreateFontIndirect WINELIB_NAME_AW(D3DXCreateFontIndirect)
-HRESULT WINAPI D3DXCreateLine(LPDIRECT3DDEVICE9 device, LPD3DXLINE *line);
-HRESULT WINAPI D3DXCreateRenderToEnvMap(LPDIRECT3DDEVICE9 device, UINT size, UINT miplevels, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, LPD3DXRenderToEnvMap *rtem);
-HRESULT WINAPI D3DXCreateRenderToSurface(LPDIRECT3DDEVICE9 device, UINT width, UINT height, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, LPD3DXRENDERTOSURFACE *rts);
-HRESULT WINAPI D3DXCreateSprite(LPDIRECT3DDEVICE9 device, LPD3DXSPRITE *sprite);
-BOOL    WINAPI D3DXDebugMute(BOOL mute);
-UINT    WINAPI D3DXGetDriverLevel(LPDIRECT3DDEVICE9 device);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WINE_D3DX9CORE_H */
diff --git a/misc/builddeps/win64/dx/include/d3dx9effect.h b/misc/builddeps/win64/dx/include/d3dx9effect.h
deleted file mode 100644 (file)
index 3bb2878..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * Copyright 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <d3dx9.h>
-
-#ifndef __D3DX9EFFECT_H__
-#define __D3DX9EFFECT_H__
-
-typedef struct _D3DXEFFECT_DESC {
-    LPCSTR Creator;
-    UINT Parameters;
-    UINT Techniques;
-    UINT Functions;
-} D3DXEFFECT_DESC;
-
-typedef struct _D3DXPARAMETER_DESC {
-    LPCSTR Name;
-    LPCSTR Semantic;
-    D3DXPARAMETER_CLASS Class;
-    D3DXPARAMETER_TYPE Type;
-    UINT Rows;
-    UINT Columns;
-    UINT Elements;
-    UINT Annotations;
-    UINT StructMembers;
-    DWORD Flags;
-    UINT Bytes;
-} D3DXPARAMETER_DESC;
-
-typedef struct _D3DXTECHNIQUE_DESC {
-    LPCSTR Name;
-    UINT Passes;
-    UINT Annotations;
-} D3DXTECHNIQUE_DESC;
-
-typedef struct _D3DXPASS_DESC {
-    LPCSTR Name;
-    UINT Annotations;
-    CONST DWORD *pVertexShaderFunction;
-    CONST DWORD *pPixelShaderFunction;
-} D3DXPASS_DESC;
-
-typedef struct _D3DXFUNCTION_DESC {
-    LPCSTR Name;
-    UINT Annotations;
-} D3DXFUNCTION_DESC;
-
-typedef struct ID3DXEffectPool *LPD3DXEFFECTPOOL;
-
-DEFINE_GUID(IID_ID3DXEffectPool, 0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
-
-#undef INTERFACE
-#define INTERFACE ID3DXEffectPool
-
-DECLARE_INTERFACE_(ID3DXEffectPool, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-};
-
-typedef struct ID3DXBaseEffect *LPD3DXBASEEFFECT;
-
-DEFINE_GUID(IID_ID3DXBaseEffect, 0x17c18ac, 0x103f, 0x4417, 0x8c, 0x51, 0x6b, 0xf6, 0xef, 0x1e, 0x56, 0xbe);
-
-#undef INTERFACE
-#define INTERFACE ID3DXBaseEffect
-
-DECLARE_INTERFACE_(ID3DXBaseEffect, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseEffect methods ***/
-    STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* desc) PURE;
-    STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE parameter, D3DXPARAMETER_DESC* desc) PURE;
-    STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE technique, D3DXTECHNIQUE_DESC* desc) PURE;
-    STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE pass, D3DXPASS_DESC* desc) PURE;
-    STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE shader, D3DXFUNCTION_DESC* desc) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE parameter, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE parameter, LPCSTR semantic) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE technique, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE technique, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT index);
-    STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR name);
-    STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE object, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE object, LPCSTR name) PURE;
-    STDMETHOD(SetValue)(THIS_ D3DXHANDLE parameter, LPCVOID data, UINT bytes) PURE;
-    STDMETHOD(GetValue)(THIS_ D3DXHANDLE parameter, LPVOID data, UINT bytes) PURE;
-    STDMETHOD(SetBool)(THIS_ D3DXHANDLE parameter, BOOL b) PURE;
-    STDMETHOD(GetBool)(THIS_ D3DXHANDLE parameter, BOOL* b) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE parameter, CONST BOOL* b, UINT count) PURE;
-    STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE parameter, BOOL* b, UINT count) PURE;
-    STDMETHOD(SetInt)(THIS_ D3DXHANDLE parameter, INT n) PURE;
-    STDMETHOD(GetInt)(THIS_ D3DXHANDLE parameter, INT* n) PURE;
-    STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE parameter, CONST INT* n, UINT count) PURE;
-    STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE parameter, INT* n, UINT count) PURE;
-    STDMETHOD(SetFloat)(THIS_ D3DXHANDLE parameter, FLOAT f) PURE;
-    STDMETHOD(GetFloat)(THIS_ D3DXHANDLE parameter, FLOAT* f) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE parameter, CONST FLOAT* f, UINT count) PURE;
-    STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE parameter, FLOAT* f, UINT count) PURE;
-    STDMETHOD(SetVector)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector) PURE;
-    STDMETHOD(GetVector)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector) PURE;
-    STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetString)(THIS_ D3DXHANDLE parameter, LPCSTR string) PURE;
-    STDMETHOD(GetString)(THIS_ D3DXHANDLE parameter, LPCSTR* string) PURE;
-    STDMETHOD(SetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9 texture) PURE;
-    STDMETHOD(GetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9* texture) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9 pshader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9* pshader) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9 vshader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9* vshader) PURE;
-    STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE parameter, UINT start, UINT end) PURE;
-};
-
-typedef struct ID3DXEffectStateManager *LPD3DXEFFECTSTATEMANAGER;
-
-DEFINE_GUID(IID_ID3DXEffectStateManager, 0x79aab587, 0x6dbc, 0x4fa7, 0x82, 0xde, 0x37, 0xfa, 0x17, 0x81, 0xc5, 0xce);
-
-#undef INTERFACE
-#define INTERFACE ID3DXEffectStateManager
-
-DECLARE_INTERFACE_(ID3DXEffectStateManager, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXEffectStateManager methods ***/
-    STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE state, CONST D3DMATRIX* matrix) PURE;
-    STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9* material) PURE;
-    STDMETHOD(SetLight)(THIS_ DWORD index, CONST D3DLIGHT9* light) PURE;
-    STDMETHOD(LightEnable)(THIS_ DWORD index, BOOL enable) PURE;
-    STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE state, DWORD value) PURE;
-    STDMETHOD(SetTexture)(THIS_ DWORD stage, LPDIRECT3DBASETEXTURE9 texture) PURE;
-    STDMETHOD(SetTextureStageState)(THIS_ DWORD stage, D3DTEXTURESTAGESTATETYPE type, DWORD value) PURE;
-    STDMETHOD(SetSamplerState)(THIS_ DWORD sampler, D3DSAMPLERSTATETYPE type, DWORD value) PURE;
-    STDMETHOD(SetNPatchMode)(THIS_ FLOAT num_segments) PURE;
-    STDMETHOD(SetFVF)(THIS_ DWORD format) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ LPDIRECT3DVERTEXSHADER9 shader) PURE;
-    STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT register_index, CONST FLOAT* constant_data, UINT register_count) PURE;
-    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT register_index, CONST INT* constant_data, UINT register_count) PURE;
-    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT register_index, CONST BOOL* constant_data, UINT register_count) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ LPDIRECT3DPIXELSHADER9 shader) PURE;
-    STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT register_index, CONST FLOAT* constant_data, UINT register_count) PURE;
-    STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT register_index, CONST INT * constant_data, UINT register_count) PURE;
-    STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT register_index, CONST BOOL* constant_data, UINT register_count) PURE;
-};
-
-typedef struct ID3DXEffect *LPD3DXEFFECT;
-
-DEFINE_GUID(IID_ID3DXEffect, 0xf6ceb4b3, 0x4e4c, 0x40dd, 0xb8, 0x83, 0x8d, 0x8d, 0xe5, 0xea, 0xc, 0xd5);
-
-#undef INTERFACE
-#define INTERFACE ID3DXEffect
-
-DECLARE_INTERFACE_(ID3DXEffect, ID3DXBaseEffect)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseEffect methods ***/
-    STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* desc) PURE;
-    STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE parameter, D3DXPARAMETER_DESC* desc) PURE;
-    STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE technique, D3DXTECHNIQUE_DESC* desc) PURE;
-    STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE pass, D3DXPASS_DESC* desc) PURE;
-    STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE shader, D3DXFUNCTION_DESC* desc) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE parameter, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE parameter, LPCSTR semantic) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE technique, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE technique, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT index);
-    STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR name);
-    STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE object, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE object, LPCSTR name) PURE;
-    STDMETHOD(SetValue)(THIS_ D3DXHANDLE parameter, LPCVOID data, UINT bytes) PURE;
-    STDMETHOD(GetValue)(THIS_ D3DXHANDLE parameter, LPVOID data, UINT bytes) PURE;
-    STDMETHOD(SetBool)(THIS_ D3DXHANDLE parameter, BOOL b) PURE;
-    STDMETHOD(GetBool)(THIS_ D3DXHANDLE parameter, BOOL* b) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE parameter, CONST BOOL* b, UINT count) PURE;
-    STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE parameter, BOOL* b, UINT count) PURE;
-    STDMETHOD(SetInt)(THIS_ D3DXHANDLE parameter, INT n) PURE;
-    STDMETHOD(GetInt)(THIS_ D3DXHANDLE parameter, INT* n) PURE;
-    STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE parameter, CONST INT* n, UINT count) PURE;
-    STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE parameter, INT* n, UINT count) PURE;
-    STDMETHOD(SetFloat)(THIS_ D3DXHANDLE parameter, FLOAT f) PURE;
-    STDMETHOD(GetFloat)(THIS_ D3DXHANDLE parameter, FLOAT* f) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE parameter, CONST FLOAT* f, UINT count) PURE;
-    STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE parameter, FLOAT* f, UINT count) PURE;
-    STDMETHOD(SetVector)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector) PURE;
-    STDMETHOD(GetVector)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector) PURE;
-    STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetString)(THIS_ D3DXHANDLE parameter, LPCSTR string) PURE;
-    STDMETHOD(GetString)(THIS_ D3DXHANDLE parameter, LPCSTR* string) PURE;
-    STDMETHOD(SetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9 texture) PURE;
-    STDMETHOD(GetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9* texture) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9* pshader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9* vshader) PURE;
-    STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE parameter, UINT start, UINT end) PURE;
-    /*** ID3DXEffect methods ***/
-    STDMETHOD(GetPool)(THIS_ LPD3DXEFFECTPOOL* pool) PURE;
-    STDMETHOD(SetTechnique)(THIS_ D3DXHANDLE technique) PURE;
-    STDMETHOD_(D3DXHANDLE, GetCurrentTechnique)(THIS) PURE;
-    STDMETHOD(ValidateTechnique)(THIS_ D3DXHANDLE technique) PURE;
-    STDMETHOD(FindNextValidTechnique)(THIS_ D3DXHANDLE technique, D3DXHANDLE* next_technique) PURE;
-    STDMETHOD_(BOOL, IsParameterUsed)(THIS_ D3DXHANDLE parameter, D3DXHANDLE technique) PURE;
-    STDMETHOD(Begin)(THIS_ UINT *passes, DWORD flags) PURE;
-    STDMETHOD(BeginPass)(THIS_ UINT pass) PURE;
-    STDMETHOD(CommitChanges)(THIS) PURE;
-    STDMETHOD(EndPass)(THIS) PURE;
-    STDMETHOD(End)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(OnLostDevice)(THIS) PURE;
-    STDMETHOD(OnResetDevice)(THIS) PURE;
-    STDMETHOD(SetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER manager) PURE;
-    STDMETHOD(GetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER* manager) PURE;
-    STDMETHOD(BeginParameterBlock)(THIS) PURE;
-    STDMETHOD_(D3DXHANDLE, EndParameterBlock)(THIS) PURE;
-    STDMETHOD(ApplyParameterBlock)(THIS_ D3DXHANDLE parameter_block) PURE;
-    STDMETHOD(DeleteParameterBlock)(THIS_ D3DXHANDLE parameter_block) PURE;
-    STDMETHOD(CloneEffect)(THIS_ LPDIRECT3DDEVICE9 device, LPD3DXEFFECT* effect) PURE;
-    STDMETHOD(SetRawValue)(THIS_ D3DXHANDLE parameter, LPCVOID data, UINT byte_offset, UINT bytes) PURE;
-};
-
-typedef struct ID3DXEffectCompiler *LPD3DXEFFECTCOMPILER;
-
-DEFINE_GUID(IID_ID3DXEffectCompiler, 0x51b8a949, 0x1a31, 0x47e6, 0xbe, 0xa0, 0x4b, 0x30, 0xdb, 0x53, 0xf1, 0xe0);
-
-#undef INTERFACE
-#define INTERFACE ID3DXEffectCompiler
-
-DECLARE_INTERFACE_(ID3DXEffectCompiler, ID3DXBaseEffect)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseEffect methods ***/
-    STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* desc) PURE;
-    STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE parameter, D3DXPARAMETER_DESC* desc) PURE;
-    STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE technique, D3DXTECHNIQUE_DESC* desc) PURE;
-    STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE pass, D3DXPASS_DESC* desc) PURE;
-    STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE shader, D3DXFUNCTION_DESC* desc) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE parameter, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE parameter, LPCSTR semantic) PURE;
-    STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE technique, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE technique, LPCSTR name) PURE;
-    STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT index);
-    STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR name);
-    STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE object, UINT index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE object, LPCSTR name) PURE;
-    STDMETHOD(SetValue)(THIS_ D3DXHANDLE parameter, LPCVOID data, UINT bytes) PURE;
-    STDMETHOD(GetValue)(THIS_ D3DXHANDLE parameter, LPVOID data, UINT bytes) PURE;
-    STDMETHOD(SetBool)(THIS_ D3DXHANDLE parameter, BOOL b) PURE;
-    STDMETHOD(GetBool)(THIS_ D3DXHANDLE parameter, BOOL* b) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE parameter, CONST BOOL* b, UINT count) PURE;
-    STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE parameter, BOOL* b, UINT count) PURE;
-    STDMETHOD(SetInt)(THIS_ D3DXHANDLE parameter, INT n) PURE;
-    STDMETHOD(GetInt)(THIS_ D3DXHANDLE parameter, INT* n) PURE;
-    STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE parameter, CONST INT* n, UINT count) PURE;
-    STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE parameter, INT* n, UINT count) PURE;
-    STDMETHOD(SetFloat)(THIS_ D3DXHANDLE parameter, FLOAT f) PURE;
-    STDMETHOD(GetFloat)(THIS_ D3DXHANDLE parameter, FLOAT* f) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE parameter, CONST FLOAT* f, UINT count) PURE;
-    STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE parameter, FLOAT* f, UINT count) PURE;
-    STDMETHOD(SetVector)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector) PURE;
-    STDMETHOD(GetVector)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector) PURE;
-    STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE parameter, CONST D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector, UINT count) PURE;
-    STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix) PURE;
-    STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
-    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, CONST D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
-    STDMETHOD(SetString)(THIS_ D3DXHANDLE parameter, LPCSTR string) PURE;
-    STDMETHOD(GetString)(THIS_ D3DXHANDLE parameter, LPCSTR* string) PURE;
-    STDMETHOD(SetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9 texture) PURE;
-    STDMETHOD(GetTexture)(THIS_ D3DXHANDLE parameter, LPDIRECT3DBASETEXTURE9* texture) PURE;
-    STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9 pshader) PURE;
-    STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DPIXELSHADER9* pshader) PURE;
-    STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9 vshader) PURE;
-    STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE parameter, LPDIRECT3DVERTEXSHADER9* vshader) PURE;
-    STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE parameter, UINT start, UINT end) PURE;
-    /*** ID3DXEffectCompiler methods ***/
-    STDMETHOD(SetLiteral)(THIS_ D3DXHANDLE parameter, BOOL literal) PURE;
-    STDMETHOD(GetLiteral)(THIS_ D3DXHANDLE parameter, BOOL* literal) PURE;
-    STDMETHOD(CompileEffect)(THIS_ DWORD flags, LPD3DXBUFFER* effect, LPD3DXBUFFER* error_msgs) PURE;
-    STDMETHOD(CompileShader)(THIS_ D3DXHANDLE function, LPCSTR target, DWORD flags, LPD3DXBUFFER* shader,
-        LPD3DXBUFFER* error_msgs, LPD3DXCONSTANTTABLE* constant_table) PURE;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3DXCreateEffectPool(LPD3DXEFFECTPOOL* pool);
-
-HRESULT WINAPI D3DXCreateEffect(LPDIRECT3DDEVICE9 device,
-                                LPCVOID srcdata,
-                                UINT srcdatalen,
-                                CONST D3DXMACRO* defines,
-                                LPD3DXINCLUDE include,
-                                DWORD flags,
-                                LPD3DXEFFECTPOOL pool,
-                                LPD3DXEFFECT* effect,
-                                LPD3DXBUFFER* compilation_errors);
-
-HRESULT WINAPI D3DXCreateEffectEx(LPDIRECT3DDEVICE9 device,
-                                  LPCVOID srcdata,
-                                  UINT srcdatalen,
-                                  CONST D3DXMACRO* defines,
-                                  LPD3DXINCLUDE include,
-                                  LPCSTR skip_constants,
-                                  DWORD flags,
-                                  LPD3DXEFFECTPOOL pool,
-                                  LPD3DXEFFECT* effect,
-                                  LPD3DXBUFFER* compilation_errors);
-
-HRESULT WINAPI D3DXCreateEffectCompiler(LPCSTR srcdata,
-                                        UINT srcdatalen,
-                                        CONST D3DXMACRO* defines,
-                                        LPD3DXINCLUDE include,
-                                        DWORD flags,
-                                        LPD3DXEFFECTCOMPILER* compiler,
-                                        LPD3DXBUFFER* parse_errors);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __D3DX9EFFECT_H__ */
diff --git a/misc/builddeps/win64/dx/include/d3dx9math.h b/misc/builddeps/win64/dx/include/d3dx9math.h
deleted file mode 100644 (file)
index f842e3e..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * Copyright (C) 2007 David Adam
- * Copyright (C) 2007 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <d3dx9.h>
-
-#ifndef __D3DX9MATH_H__
-#define __D3DX9MATH_H__
-
-#include <math.h>
-
-#define D3DX_PI    ((FLOAT)3.141592654)
-#define D3DX_1BYPI ((FLOAT)0.318309886)
-
-#define D3DXToRadian(degree) ((degree) * (D3DX_PI / 180.0f))
-#define D3DXToDegree(radian) ((radian) * (180.0f / D3DX_PI))
-
-
-
-typedef struct D3DXVECTOR2
-{
-#ifdef __cplusplus
-    D3DXVECTOR2();
-    D3DXVECTOR2(CONST FLOAT *pf);
-    D3DXVECTOR2(FLOAT fx, FLOAT fy);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXVECTOR2& operator += (CONST D3DXVECTOR2&);
-    D3DXVECTOR2& operator -= (CONST D3DXVECTOR2&);
-    D3DXVECTOR2& operator *= (FLOAT);
-    D3DXVECTOR2& operator /= (FLOAT);
-
-    D3DXVECTOR2 operator + () const;
-    D3DXVECTOR2 operator - () const;
-
-    D3DXVECTOR2 operator + (CONST D3DXVECTOR2&) const;
-    D3DXVECTOR2 operator - (CONST D3DXVECTOR2&) const;
-    D3DXVECTOR2 operator * (FLOAT) const;
-    D3DXVECTOR2 operator / (FLOAT) const;
-
-    friend D3DXVECTOR2 operator * (FLOAT, CONST D3DXVECTOR2&);
-
-    BOOL operator == (CONST D3DXVECTOR2&) const;
-    BOOL operator != (CONST D3DXVECTOR2&) const;
-#endif /* __cplusplus */
-    FLOAT x, y;
-} D3DXVECTOR2, *LPD3DXVECTOR2;
-
-#ifdef __cplusplus
-typedef struct D3DXVECTOR3 : public D3DVECTOR
-{
-    D3DXVECTOR3();
-    D3DXVECTOR3(CONST FLOAT *pf);
-    D3DXVECTOR3(CONST D3DVECTOR& v);
-    D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXVECTOR3& operator += (CONST D3DXVECTOR3&);
-    D3DXVECTOR3& operator -= (CONST D3DXVECTOR3&);
-    D3DXVECTOR3& operator *= (FLOAT);
-    D3DXVECTOR3& operator /= (FLOAT);
-
-    D3DXVECTOR3 operator + () const;
-    D3DXVECTOR3 operator - () const;
-
-    D3DXVECTOR3 operator + (CONST D3DXVECTOR3&) const;
-    D3DXVECTOR3 operator - (CONST D3DXVECTOR3&) const;
-    D3DXVECTOR3 operator * (FLOAT) const;
-    D3DXVECTOR3 operator / (FLOAT) const;
-
-    friend D3DXVECTOR3 operator * (FLOAT, CONST struct D3DXVECTOR3&);
-
-    BOOL operator == (CONST D3DXVECTOR3&) const;
-    BOOL operator != (CONST D3DXVECTOR3&) const;
-} D3DXVECTOR3, *LPD3DXVECTOR3;
-#else /* !__cplusplus */
-typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3;
-#endif /* !__cplusplus */
-
-typedef struct D3DXVECTOR4
-{
-#ifdef __cplusplus
-    D3DXVECTOR4();
-    D3DXVECTOR4(CONST FLOAT *pf);
-    D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXVECTOR4& operator += (CONST D3DXVECTOR4&);
-    D3DXVECTOR4& operator -= (CONST D3DXVECTOR4&);
-    D3DXVECTOR4& operator *= (FLOAT);
-    D3DXVECTOR4& operator /= (FLOAT);
-
-    D3DXVECTOR4 operator + () const;
-    D3DXVECTOR4 operator - () const;
-
-    D3DXVECTOR4 operator + (CONST D3DXVECTOR4&) const;
-    D3DXVECTOR4 operator - (CONST D3DXVECTOR4&) const;
-    D3DXVECTOR4 operator * (FLOAT) const;
-    D3DXVECTOR4 operator / (FLOAT) const;
-
-    friend D3DXVECTOR4 operator * (FLOAT, CONST D3DXVECTOR4&);
-
-    BOOL operator == (CONST D3DXVECTOR4&) const;
-    BOOL operator != (CONST D3DXVECTOR4&) const;
-#endif /* __cplusplus */
-    FLOAT x, y, z, w;
-} D3DXVECTOR4, *LPD3DXVECTOR4;
-
-#ifdef __cplusplus
-typedef struct D3DXMATRIX : public D3DMATRIX
-{
-    D3DXMATRIX();
-    D3DXMATRIX(CONST FLOAT *pf);
-    D3DXMATRIX(CONST D3DMATRIX& mat);
-    D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
-               FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
-               FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
-               FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44);
-
-    FLOAT& operator () (UINT row, UINT col);
-    FLOAT operator () (UINT row, UINT col) const;
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXMATRIX& operator *= (CONST D3DXMATRIX&);
-    D3DXMATRIX& operator += (CONST D3DXMATRIX&);
-    D3DXMATRIX& operator -= (CONST D3DXMATRIX&);
-    D3DXMATRIX& operator *= (FLOAT);
-    D3DXMATRIX& operator /= (FLOAT);
-
-    D3DXMATRIX operator + () const;
-    D3DXMATRIX operator - () const;
-
-    D3DXMATRIX operator * (CONST D3DXMATRIX&) const;
-    D3DXMATRIX operator + (CONST D3DXMATRIX&) const;
-    D3DXMATRIX operator - (CONST D3DXMATRIX&) const;
-    D3DXMATRIX operator * (FLOAT) const;
-    D3DXMATRIX operator / (FLOAT) const;
-
-    friend D3DXMATRIX operator * (FLOAT, CONST D3DXMATRIX&);
-
-    BOOL operator == (CONST D3DXMATRIX&) const;
-    BOOL operator != (CONST D3DXMATRIX&) const;
-} D3DXMATRIX, *LPD3DXMATRIX;
-#else /* !__cplusplus */
-typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX;
-#endif /* !__cplusplus */
-
-typedef struct D3DXQUATERNION
-{
-#ifdef __cplusplus
-    D3DXQUATERNION();
-    D3DXQUATERNION(CONST FLOAT *pf);
-    D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXQUATERNION& operator += (CONST D3DXQUATERNION&);
-    D3DXQUATERNION& operator -= (CONST D3DXQUATERNION&);
-    D3DXQUATERNION& operator *= (CONST D3DXQUATERNION&);
-    D3DXQUATERNION& operator *= (FLOAT);
-    D3DXQUATERNION& operator /= (FLOAT);
-
-    D3DXQUATERNION  operator + () const;
-    D3DXQUATERNION  operator - () const;
-
-    D3DXQUATERNION operator + (CONST D3DXQUATERNION&) const;
-    D3DXQUATERNION operator - (CONST D3DXQUATERNION&) const;
-    D3DXQUATERNION operator * (CONST D3DXQUATERNION&) const;
-    D3DXQUATERNION operator * (FLOAT) const;
-    D3DXQUATERNION operator / (FLOAT) const;
-
-    friend D3DXQUATERNION operator * (FLOAT, CONST D3DXQUATERNION&);
-
-    BOOL operator == (CONST D3DXQUATERNION&) const;
-    BOOL operator != (CONST D3DXQUATERNION&) const;
-#endif /* __cplusplus */
-    FLOAT x, y, z, w;
-} D3DXQUATERNION, *LPD3DXQUATERNION;
-
-typedef struct D3DXPLANE
-{
-#ifdef __cplusplus
-    D3DXPLANE();
-    D3DXPLANE(CONST FLOAT *pf);
-    D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd);
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    D3DXPLANE operator + () const;
-    D3DXPLANE operator - () const;
-
-    BOOL operator == (CONST D3DXPLANE&) const;
-    BOOL operator != (CONST D3DXPLANE&) const;
-#endif /* __cplusplus */
-    FLOAT a, b, c, d;
-} D3DXPLANE, *LPD3DXPLANE;
-
-typedef struct D3DXCOLOR
-{
-#ifdef __cplusplus
-    D3DXCOLOR();
-    D3DXCOLOR(DWORD col);
-    D3DXCOLOR(CONST FLOAT *pf);
-    D3DXCOLOR(CONST D3DCOLORVALUE& col);
-    D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa);
-
-    operator DWORD () const;
-
-    operator FLOAT* ();
-    operator CONST FLOAT* () const;
-
-    operator D3DCOLORVALUE* ();
-    operator CONST D3DCOLORVALUE* () const;
-
-    operator D3DCOLORVALUE& ();
-    operator CONST D3DCOLORVALUE& () const;
-
-    D3DXCOLOR& operator += (CONST D3DXCOLOR&);
-    D3DXCOLOR& operator -= (CONST D3DXCOLOR&);
-    D3DXCOLOR& operator *= (FLOAT);
-    D3DXCOLOR& operator /= (FLOAT);
-
-    D3DXCOLOR operator + () const;
-    D3DXCOLOR operator - () const;
-
-    D3DXCOLOR operator + (CONST D3DXCOLOR&) const;
-    D3DXCOLOR operator - (CONST D3DXCOLOR&) const;
-    D3DXCOLOR operator * (FLOAT) const;
-    D3DXCOLOR operator / (FLOAT) const;
-
-    friend D3DXCOLOR operator * (FLOAT, CONST D3DXCOLOR&);
-
-    BOOL operator == (CONST D3DXCOLOR&) const;
-    BOOL operator != (CONST D3DXCOLOR&) const;
-#endif /* __cplusplus */
-    FLOAT r, g, b, a;
-} D3DXCOLOR, *LPD3DXCOLOR;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-D3DXCOLOR* WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s);
-D3DXCOLOR* WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s);
-
-FLOAT WINAPI D3DXFresnelTerm(FLOAT costheta, FLOAT refractionindex);
-
-D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *pout, FLOAT scaling, CONST D3DXVECTOR3 *rotationcenter, CONST D3DXQUATERNION *rotation, CONST D3DXVECTOR3 *translation);
-D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *pout, FLOAT scaling, CONST D3DXVECTOR2 *protationcenter, FLOAT rotation, CONST D3DXVECTOR2 *ptranslation);
-HRESULT WINAPI D3DXMatrixDecompose(D3DXVECTOR3 *poutscale, D3DXQUATERNION *poutrotation, D3DXVECTOR3 *pouttranslation, CONST D3DXMATRIX *pm);
-FLOAT WINAPI D3DXMatrixDeterminant(CONST D3DXMATRIX *pm);
-D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, CONST D3DXMATRIX *pm);
-D3DXMATRIX* WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup);
-D3DXMATRIX* WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup);
-D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2);
-D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-D3DXMATRIX* WINAPI D3DXMatrixReflect(D3DXMATRIX *pout, CONST D3DXPLANE *pplane);
-D3DXMATRIX* WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pv, FLOAT angle);
-D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pout, CONST D3DXQUATERNION *pq);
-D3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX *pout, FLOAT angle);
-D3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX *pout, FLOAT angle);
-D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
-D3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pout, FLOAT angle);
-D3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT sz);
-D3DXMATRIX* WINAPI D3DXMatrixShadow(D3DXMATRIX *pout, CONST D3DXVECTOR4 *plight, CONST D3DXPLANE *pPlane);
-D3DXMATRIX* WINAPI D3DXMatrixTransformation(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pscalingcenter, CONST D3DXQUATERNION *pscalingrotation, CONST D3DXVECTOR3 *pscaling, CONST D3DXVECTOR3 *protationcenter, CONST D3DXQUATERNION *protation, CONST D3DXVECTOR3 *ptranslation);
-D3DXMATRIX* WINAPI D3DXMatrixTransformation2D(D3DXMATRIX *pout, CONST D3DXVECTOR2 *pscalingcenter, FLOAT scalingrotation, CONST D3DXVECTOR2 *pscaling, CONST D3DXVECTOR2 *protationcenter, FLOAT rotation, CONST D3DXVECTOR2 *ptranslation);
-D3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLOAT z);
-D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm);
-
-D3DXPLANE* WINAPI D3DXPlaneFromPointNormal(D3DXPLANE *pout, CONST D3DXVECTOR3 *pvpoint, CONST D3DXVECTOR3 *pvnormal);
-D3DXPLANE* WINAPI D3DXPlaneFromPoints(D3DXPLANE *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3);
-D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine(D3DXVECTOR3 *pout, CONST D3DXPLANE *pp, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2);
-D3DXPLANE* WINAPI D3DXPlaneNormalize(D3DXPLANE *pout, CONST D3DXPLANE *pp);
-D3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, CONST D3DXPLANE *pplane, CONST D3DXMATRIX *pm);
-D3DXPLANE* WINAPI D3DXPlaneTransformArray(D3DXPLANE *pout, UINT outstride, CONST D3DXPLANE *pplane, UINT pstride, CONST D3DXMATRIX *pm, UINT n);
-
-D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, FLOAT f, FLOAT g);
-D3DXQUATERNION* WINAPI D3DXQuaternionExp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
-D3DXQUATERNION* WINAPI D3DXQuaternionInverse(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
-D3DXQUATERNION* WINAPI D3DXQuaternionLn(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
-D3DXQUATERNION* WINAPI D3DXQuaternionMultiply(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2);
-D3DXQUATERNION* WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);
-D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis(D3DXQUATERNION *pout, CONST D3DXVECTOR3 *pv, FLOAT angle);
-D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *pout, CONST D3DXMATRIX *pm);
-D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
-D3DXQUATERNION* WINAPI D3DXQuaternionSlerp(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, FLOAT t);
-D3DXQUATERNION* WINAPI D3DXQuaternionSquad(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, CONST D3DXQUATERNION *pq4, FLOAT t);
-void WINAPI D3DXQuaternionToAxisAngle(CONST D3DXQUATERNION *pq, D3DXVECTOR3 *paxis, FLOAT *pangle);
-
-D3DXVECTOR2* WINAPI D3DXVec2BaryCentric(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT f, FLOAT g);
-D3DXVECTOR2* WINAPI D3DXVec2CatmullRom(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv0, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT s);
-D3DXVECTOR2* WINAPI D3DXVec2Hermite(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pt1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pt2, FLOAT s);
-D3DXVECTOR2* WINAPI D3DXVec2Normalize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv);
-D3DXVECTOR4* WINAPI D3DXVec2Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR4* WINAPI D3DXVec2TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR2* WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR2* WINAPI D3DXVec2TransformCoordArray(D3DXVECTOR2 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR2* WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR2* WINAPI D3DXVec2TransformNormalArray(D3DXVECTOR2 *pout, UINT outstride, CONST D3DXVECTOR2 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-
-D3DXVECTOR3* WINAPI D3DXVec3BaryCentric(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT f, FLOAT g);
-D3DXVECTOR3* WINAPI D3DXVec3CatmullRom( D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv0, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT s);
-D3DXVECTOR3* WINAPI D3DXVec3Hermite(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pt1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pt2, FLOAT s);
-D3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv);
-D3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld);
-D3DXVECTOR3* WINAPI D3DXVec3ProjectArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld, UINT n);
-D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR4* WINAPI D3DXVec3TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR3* WINAPI D3DXVec3TransformCoordArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR3* WINAPI D3DXVec3TransformNormalArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-D3DXVECTOR3* WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld);
-D3DXVECTOR3* WINAPI D3DXVec3UnprojectArray(D3DXVECTOR3 *pout, UINT outstride, CONST D3DXVECTOR3 *pv, UINT vstride, CONST D3DVIEWPORT9 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld, UINT n);
-
-D3DXVECTOR4* WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT f, FLOAT g);
-D3DXVECTOR4* WINAPI D3DXVec4CatmullRom(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv0, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT s);
-D3DXVECTOR4* WINAPI D3DXVec4Cross(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3);
-D3DXVECTOR4* WINAPI D3DXVec4Hermite(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pt1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pt2, FLOAT s);
-D3DXVECTOR4* WINAPI D3DXVec4Normalize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv);
-D3DXVECTOR4* WINAPI D3DXVec4Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, CONST D3DXMATRIX *pm);
-D3DXVECTOR4* WINAPI D3DXVec4TransformArray(D3DXVECTOR4 *pout, UINT outstride, CONST D3DXVECTOR4 *pv, UINT vstride, CONST D3DXMATRIX *pm, UINT n);
-
-#ifdef __cplusplus
-}
-#endif
-
-typedef interface ID3DXMatrixStack *LPD3DXMATRIXSTACK;
-
-DEFINE_GUID(IID_ID3DXMatrixStack,
-0xc7885ba7, 0xf990, 0x4fe7, 0x92, 0x2d, 0x85, 0x15, 0xe4, 0x77, 0xdd, 0x85);
-
-#undef INTERFACE
-#define INTERFACE ID3DXMatrixStack
-
-DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown)
-{
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    STDMETHOD(Pop)(THIS) PURE;
-    STDMETHOD(Push)(THIS) PURE;
-    STDMETHOD(LoadIdentity)(THIS) PURE;
-    STDMETHOD(LoadMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
-    STDMETHOD(MultMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
-    STDMETHOD(MultMatrixLocal)(THIS_ CONST D3DXMATRIX* pM ) PURE;
-    STDMETHOD(RotateAxis)(THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
-    STDMETHOD(RotateAxisLocal)(THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
-    STDMETHOD(RotateYawPitchRoll)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
-    STDMETHOD(RotateYawPitchRollLocal)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
-    STDMETHOD(Scale)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
-    STDMETHOD(ScaleLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
-    STDMETHOD(Translate)(THIS_ FLOAT x, FLOAT y, FLOAT z ) PURE;
-    STDMETHOD(TranslateLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
-    STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE;
-};
-
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-
-#define ID3DXMatrixStack_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXMatrixStack_AddRef(p)                        (p)->lpVtbl->AddRef(p)
-#define ID3DXMatrixStack_Release(p)                       (p)->lpVtbl->Release(p)
-#define ID3DXMatrixStack_Pop(p)                           (p)->lpVtbl->Pop(p)
-#define ID3DXMatrixStack_Push(p)                          (p)->lpVtbl->Push(p)
-#define ID3DXMatrixStack_LoadIdentity(p)                  (p)->lpVtbl->LoadIdentity(p)
-#define ID3DXMatrixStack_LoadMatrix(p,a)                  (p)->lpVtbl->LoadMatrix(p,a)
-#define ID3DXMatrixStack_MultMatrix(p,a)                  (p)->lpVtbl->MultMatrix(p,a)
-#define ID3DXMatrixStack_MultMatrixLocal(p,a)             (p)->lpVtbl->MultMatrixLocal(p,a)
-#define ID3DXMatrixStack_RotateAxis(p,a,b)                (p)->lpVtbl->RotateAxis(p,a,b)
-#define ID3DXMatrixStack_RotateAxisLocal(p,a,b)           (p)->lpVtbl->RotateAxisLocal(p,a,b)
-#define ID3DXMatrixStack_RotateYawPitchRoll(p,a,b,c)      (p)->lpVtbl->RotateYawPitchRoll(p,a,b,c)
-#define ID3DXMatrixStack_RotateYawPitchRollLocal(p,a,b,c) (p)->lpVtbl->RotateYawPitchRollLocal(p,a,b,c)
-#define ID3DXMatrixStack_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
-#define ID3DXMatrixStack_ScaleLocal(p,a,b,c)              (p)->lpVtbl->ScaleLocal(p,a,b,c)
-#define ID3DXMatrixStack_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a,b,c)
-#define ID3DXMatrixStack_TranslateLocal(p,a,b,c)          (p)->lpVtbl->TranslateLocal(p,a,b,c)
-#define ID3DXMatrixStack_GetTop(p)                        (p)->lpVtbl->GetTop(p)
-
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3DXCreateMatrixStack(DWORD flags, LPD3DXMATRIXSTACK* ppstack);
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <d3dx9math.inl>
-
-#endif /* __D3DX9MATH_H__ */
diff --git a/misc/builddeps/win64/dx/include/d3dx9math.inl b/misc/builddeps/win64/dx/include/d3dx9math.inl
deleted file mode 100644 (file)
index 3cd078a..0000000
+++ /dev/null
@@ -1,1268 +0,0 @@
-/*
- * Copyright (C) 2007 David Adam
- * Copyright (C) 2007 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __D3DX9MATH_INL__
-#define __D3DX9MATH_INL__
-
-/* constructors & operators */
-#ifdef __cplusplus
-
-inline D3DXVECTOR2::D3DXVECTOR2()
-{
-}
-
-inline D3DXVECTOR2::D3DXVECTOR2(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    x = pf[0];
-    y = pf[1];
-}
-
-inline D3DXVECTOR2::D3DXVECTOR2(FLOAT fx, FLOAT fy)
-{
-    x = fx;
-    y = fy;
-}
-
-inline D3DXVECTOR2::operator FLOAT* ()
-{
-    return (FLOAT*)&x;
-}
-
-inline D3DXVECTOR2::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&x;
-}
-
-inline D3DXVECTOR2& D3DXVECTOR2::operator += (CONST D3DXVECTOR2& v)
-{
-    x += v.x;
-    y += v.y;
-    return *this;
-}
-
-inline D3DXVECTOR2& D3DXVECTOR2::operator -= (CONST D3DXVECTOR2& v)
-{
-    x -= v.x;
-    y -= v.y;
-    return *this;
-}
-
-inline D3DXVECTOR2& D3DXVECTOR2::operator *= (FLOAT f)
-{
-    x *= f;
-    y *= f;
-    return *this;
-}
-
-inline D3DXVECTOR2& D3DXVECTOR2::operator /= (FLOAT f)
-{
-    x /= f;
-    y /= f;
-    return *this;
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator + () const
-{
-    return *this;
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator - () const
-{
-    return D3DXVECTOR2(-x, -y);
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator + (CONST D3DXVECTOR2& v) const
-{
-    return D3DXVECTOR2(x + v.x, y + v.y);
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator - (CONST D3DXVECTOR2& v) const
-{
-    return D3DXVECTOR2(x - v.x, y - v.y);
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator * (FLOAT f) const
-{
-    return D3DXVECTOR2(x * f, y * f);
-}
-
-inline D3DXVECTOR2 D3DXVECTOR2::operator / (FLOAT f) const
-{
-    return D3DXVECTOR2(x / f, y / f);
-}
-
-inline D3DXVECTOR2 operator * (FLOAT f, CONST D3DXVECTOR2& v)
-{
-    return D3DXVECTOR2(f * v.x, f * v.y);
-}
-
-inline BOOL D3DXVECTOR2::operator == (CONST D3DXVECTOR2& v) const
-{
-    return x == v.x && y == v.y;
-}
-
-inline BOOL D3DXVECTOR2::operator != (CONST D3DXVECTOR2& v) const
-{
-    return x != v.x || y != v.y;
-}
-
-inline D3DXVECTOR3::D3DXVECTOR3()
-{
-}
-
-inline D3DXVECTOR3::D3DXVECTOR3(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    x = pf[0];
-    y = pf[1];
-    z = pf[2];
-}
-
-inline D3DXVECTOR3::D3DXVECTOR3(CONST D3DVECTOR& v)
-{
-    x = v.x;
-    y = v.y;
-    z = v.z;
-}
-
-inline D3DXVECTOR3::D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz)
-{
-    x = fx;
-    y = fy;
-    z = fz;
-}
-
-inline D3DXVECTOR3::operator FLOAT* ()
-{
-    return (FLOAT*)&x;
-}
-
-inline D3DXVECTOR3::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&x;
-}
-
-inline D3DXVECTOR3& D3DXVECTOR3::operator += (CONST D3DXVECTOR3& v)
-{
-    x += v.x;
-    y += v.y;
-    z += v.z;
-    return *this;
-}
-
-inline D3DXVECTOR3& D3DXVECTOR3::operator -= (CONST D3DXVECTOR3& v)
-{
-    x -= v.x;
-    y -= v.y;
-    z -= v.z;
-    return *this;
-}
-
-inline D3DXVECTOR3& D3DXVECTOR3::operator *= (FLOAT f)
-{
-    x *= f;
-    y *= f;
-    z *= f;
-    return *this;
-}
-
-inline D3DXVECTOR3& D3DXVECTOR3::operator /= (FLOAT f)
-{
-    x /= f;
-    y /= f;
-    z /= f;
-    return *this;
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator + () const
-{
-    return *this;
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator - () const
-{
-    return D3DXVECTOR3(-x, -y, -z);
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator + (CONST D3DXVECTOR3& v) const
-{
-    return D3DXVECTOR3(x + v.x, y + v.y, z + v.z);
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator - (CONST D3DXVECTOR3& v) const
-{
-    return D3DXVECTOR3(x - v.x, y - v.y, z - v.z);
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator * (FLOAT f) const
-{
-    return D3DXVECTOR3(x * f, y * f, z * f);
-}
-
-inline D3DXVECTOR3 D3DXVECTOR3::operator / (FLOAT f) const
-{
-    return D3DXVECTOR3(x / f, y / f, z / f);
-}
-
-inline D3DXVECTOR3 operator * (FLOAT f, CONST D3DXVECTOR3& v)
-{
-    return D3DXVECTOR3(f * v.x, f * v.y, f * v.z);
-}
-
-inline BOOL D3DXVECTOR3::operator == (CONST D3DXVECTOR3& v) const
-{
-    return x == v.x && y == v.y && z == v.z;
-}
-
-inline BOOL D3DXVECTOR3::operator != (CONST D3DXVECTOR3& v) const
-{
-    return x != v.x || y != v.y || z != v.z;
-}
-
-inline D3DXVECTOR4::D3DXVECTOR4()
-{
-}
-
-inline D3DXVECTOR4::D3DXVECTOR4(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    x = pf[0];
-    y = pf[1];
-    z = pf[2];
-    w = pf[3];
-}
-
-inline D3DXVECTOR4::D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
-{
-    x = fx;
-    y = fy;
-    z = fz;
-    w = fw;
-}
-
-inline D3DXVECTOR4::operator FLOAT* ()
-{
-    return (FLOAT*)&x;
-}
-
-inline D3DXVECTOR4::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&x;
-}
-
-inline D3DXVECTOR4& D3DXVECTOR4::operator += (CONST D3DXVECTOR4& v)
-{
-    x += v.x;
-    y += v.y;
-    z += v.z;
-    w += v.w;
-    return *this;
-}
-
-inline D3DXVECTOR4& D3DXVECTOR4::operator -= (CONST D3DXVECTOR4& v)
-{
-    x -= v.x;
-    y -= v.y;
-    z -= v.z;
-    w -= v.w;
-    return *this;
-}
-
-inline D3DXVECTOR4& D3DXVECTOR4::operator *= (FLOAT f)
-{
-    x *= f;
-    y *= f;
-    z *= f;
-    w *= f;
-    return *this;
-}
-
-inline D3DXVECTOR4& D3DXVECTOR4::operator /= (FLOAT f)
-{
-    x /= f;
-    y /= f;
-    z /= f;
-    w /= f;
-    return *this;
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator + () const
-{
-    return *this;
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator - () const
-{
-    return D3DXVECTOR4(-x, -y, -z, -w);
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator + (CONST D3DXVECTOR4& v) const
-{
-    return D3DXVECTOR4(x + v.x, y + v.y, z + v.z, w + v.w);
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator - (CONST D3DXVECTOR4& v) const
-{
-    return D3DXVECTOR4(x - v.x, y - v.y, z - v.z, w - v.w);
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator * (FLOAT f) const
-{
-    return D3DXVECTOR4(x * f, y * f, z * f, w * f);
-}
-
-inline D3DXVECTOR4 D3DXVECTOR4::operator / (FLOAT f) const
-{
-    return D3DXVECTOR4(x / f, y / f, z / f, w / f);
-}
-
-inline D3DXVECTOR4 operator * (FLOAT f, CONST D3DXVECTOR4& v)
-{
-    return D3DXVECTOR4(f * v.x, f * v.y, f * v.z, f * v.w);
-}
-
-inline BOOL D3DXVECTOR4::operator == (CONST D3DXVECTOR4& v) const
-{
-    return x == v.x && y == v.y && z == v.z && w == v.w;
-}
-
-inline BOOL D3DXVECTOR4::operator != (CONST D3DXVECTOR4& v) const
-{
-    return x != v.x || y != v.y || z != v.z || w != v.w;
-}
-
-inline D3DXMATRIX::D3DXMATRIX()
-{
-}
-
-inline D3DXMATRIX::D3DXMATRIX(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    memcpy(&_11, pf, sizeof(D3DXMATRIX));
-}
-
-inline D3DXMATRIX::D3DXMATRIX(CONST D3DMATRIX& mat)
-{
-    memcpy(&_11, &mat, sizeof(D3DXMATRIX));
-}
-
-inline D3DXMATRIX::D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
-                              FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
-                              FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
-                              FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44)
-{
-    _11 = f11; _12 = f12; _13 = f13; _14 = f14;
-    _21 = f21; _22 = f22; _23 = f23; _24 = f24;
-    _31 = f31; _32 = f32; _33 = f33; _34 = f34;
-    _41 = f41; _42 = f42; _43 = f43; _44 = f44;
-}
-
-inline FLOAT& D3DXMATRIX::operator () (UINT row, UINT col)
-{
-    return m[row][col];
-}
-
-inline FLOAT D3DXMATRIX::operator () (UINT row, UINT col) const
-{
-    return m[row][col];
-}
-
-inline D3DXMATRIX::operator FLOAT* ()
-{
-    return (FLOAT*)&_11;
-}
-
-inline D3DXMATRIX::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&_11;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator *= (CONST D3DXMATRIX& mat)
-{
-    D3DXMatrixMultiply(this, this, &mat);
-    return *this;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator += (CONST D3DXMATRIX& mat)
-{
-    _11 += mat._11; _12 += mat._12; _13 += mat._13; _14 += mat._14;
-    _21 += mat._21; _22 += mat._22; _23 += mat._23; _24 += mat._24;
-    _31 += mat._31; _32 += mat._32; _33 += mat._33; _34 += mat._34;
-    _41 += mat._41; _42 += mat._42; _43 += mat._43; _44 += mat._44;
-    return *this;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator -= (CONST D3DXMATRIX& mat)
-{
-    _11 -= mat._11; _12 -= mat._12; _13 -= mat._13; _14 -= mat._14;
-    _21 -= mat._21; _22 -= mat._22; _23 -= mat._23; _24 -= mat._24;
-    _31 -= mat._31; _32 -= mat._32; _33 -= mat._33; _34 -= mat._34;
-    _41 -= mat._41; _42 -= mat._42; _43 -= mat._43; _44 -= mat._44;
-    return *this;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator *= (FLOAT f)
-{
-    _11 *= f; _12 *= f; _13 *= f; _14 *= f;
-    _21 *= f; _22 *= f; _23 *= f; _24 *= f;
-    _31 *= f; _32 *= f; _33 *= f; _34 *= f;
-    _41 *= f; _42 *= f; _43 *= f; _44 *= f;
-    return *this;
-}
-
-inline D3DXMATRIX& D3DXMATRIX::operator /= (FLOAT f)
-{
-    FLOAT inv = 1.0f / f;
-    _11 *= inv; _12 *= inv; _13 *= inv; _14 *= inv;
-    _21 *= inv; _22 *= inv; _23 *= inv; _24 *= inv;
-    _31 *= inv; _32 *= inv; _33 *= inv; _34 *= inv;
-    _41 *= inv; _42 *= inv; _43 *= inv; _44 *= inv;
-    return *this;
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator + () const
-{
-    return *this;
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator - () const
-{
-    return D3DXMATRIX(-_11, -_12, -_13, -_14,
-                      -_21, -_22, -_23, -_24,
-                      -_31, -_32, -_33, -_34,
-                      -_41, -_42, -_43, -_44);
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator * (CONST D3DXMATRIX& mat) const
-{
-    D3DXMATRIX buf;
-    D3DXMatrixMultiply(&buf, this, &mat);
-    return buf;
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator + (CONST D3DXMATRIX& mat) const
-{
-    return D3DXMATRIX(_11 + mat._11, _12 + mat._12, _13 + mat._13, _14 + mat._14,
-                      _21 + mat._21, _22 + mat._22, _23 + mat._23, _24 + mat._24,
-                      _31 + mat._31, _32 + mat._32, _33 + mat._33, _34 + mat._34,
-                      _41 + mat._41, _42 + mat._42, _43 + mat._43, _44 + mat._44);
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator - (CONST D3DXMATRIX& mat) const
-{
-    return D3DXMATRIX(_11 - mat._11, _12 - mat._12, _13 - mat._13, _14 - mat._14,
-                      _21 - mat._21, _22 - mat._22, _23 - mat._23, _24 - mat._24,
-                      _31 - mat._31, _32 - mat._32, _33 - mat._33, _34 - mat._34,
-                      _41 - mat._41, _42 - mat._42, _43 - mat._43, _44 - mat._44);
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator * (FLOAT f) const
-{
-    return D3DXMATRIX(_11 * f, _12 * f, _13 * f, _14 * f,
-                      _21 * f, _22 * f, _23 * f, _24 * f,
-                      _31 * f, _32 * f, _33 * f, _34 * f,
-                      _41 * f, _42 * f, _43 * f, _44 * f);
-}
-
-inline D3DXMATRIX D3DXMATRIX::operator / (FLOAT f) const
-{
-    FLOAT inv = 1.0f / f;
-    return D3DXMATRIX(_11 * inv, _12 * inv, _13 * inv, _14 * inv,
-                      _21 * inv, _22 * inv, _23 * inv, _24 * inv,
-                      _31 * inv, _32 * inv, _33 * inv, _34 * inv,
-                      _41 * inv, _42 * inv, _43 * inv, _44 * inv);
-}
-
-inline D3DXMATRIX operator * (FLOAT f, CONST D3DXMATRIX& mat)
-{
-    return D3DXMATRIX(f * mat._11, f * mat._12, f * mat._13, f * mat._14,
-                      f * mat._21, f * mat._22, f * mat._23, f * mat._24,
-                      f * mat._31, f * mat._32, f * mat._33, f * mat._34,
-                      f * mat._41, f * mat._42, f * mat._43, f * mat._44);
-}
-
-inline BOOL D3DXMATRIX::operator == (CONST D3DXMATRIX& mat) const
-{
-    return (memcmp(this, &mat, sizeof(D3DXMATRIX)) == 0);
-}
-
-inline BOOL D3DXMATRIX::operator != (CONST D3DXMATRIX& mat) const
-{
-    return (memcmp(this, &mat, sizeof(D3DXMATRIX)) != 0);
-}
-
-inline D3DXQUATERNION::D3DXQUATERNION()
-{
-}
-
-inline D3DXQUATERNION::D3DXQUATERNION(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    x = pf[0];
-    y = pf[1];
-    z = pf[2];
-    w = pf[3];
-}
-
-inline D3DXQUATERNION::D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw)
-{
-    x = fx;
-    y = fy;
-    z = fz;
-    w = fw;
-}
-
-inline D3DXQUATERNION::operator FLOAT* ()
-{
-    return (FLOAT*)&x;
-}
-
-inline D3DXQUATERNION::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&x;
-}
-
-inline D3DXQUATERNION& D3DXQUATERNION::operator += (CONST D3DXQUATERNION& quat)
-{
-    x += quat.x;
-    y += quat.y;
-    z += quat.z;
-    w += quat.w;
-    return *this;
-}
-
-inline D3DXQUATERNION& D3DXQUATERNION::operator -= (CONST D3DXQUATERNION& quat)
-{
-    x -= quat.x;
-    y -= quat.y;
-    z -= quat.z;
-    w -= quat.w;
-    return *this;
-}
-
-/* TODO: uncomment this when D3DXQuaternionMultiply has been implemented
-inline D3DXQUATERNION& D3DXQUATERNION::operator *= (CONST D3DXQUATERNION& quat)
-{
-    D3DXQuaternionMultiply(this, this, &quat);
-    return *this;
-}
-*/
-
-inline D3DXQUATERNION& D3DXQUATERNION::operator *= (FLOAT f)
-{
-    x *= f;
-    y *= f;
-    z *= f;
-    w *= f;
-    return *this;
-}
-
-inline D3DXQUATERNION& D3DXQUATERNION::operator /= (FLOAT f)
-{
-    FLOAT inv = 1.0f / f;
-    x *= inv;
-    y *= inv;
-    z *= inv;
-    w *= inv;
-    return *this;
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator + () const
-{
-    return *this;
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator - () const
-{
-    return D3DXQUATERNION(-x, -y, -z, -w);
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator + (CONST D3DXQUATERNION& quat) const
-{
-    return D3DXQUATERNION(x + quat.x, y + quat.y, z + quat.z, w + quat.w);
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator - (CONST D3DXQUATERNION& quat) const
-{
-    return D3DXQUATERNION(x - quat.x, y - quat.y, z - quat.z, w - quat.w);
-}
-
-/* TODO: uncomment this when D3DXQuaternionMultiply has been implemented
-inline D3DXQUATERNION D3DXQUATERNION::operator * (CONST D3DXQUATERNION& quat) const
-{
-    D3DXQUATERNION buf;
-    D3DXQuaternionMultiply(&buf, this, &quat);
-    return buf;
-}
-*/
-
-inline D3DXQUATERNION D3DXQUATERNION::operator * (FLOAT f) const
-{
-    return D3DXQUATERNION(x * f, y * f, z * f, w * f);
-}
-
-inline D3DXQUATERNION D3DXQUATERNION::operator / (FLOAT f) const
-{
-    FLOAT inv = 1.0f / f;
-    return D3DXQUATERNION(x * inv, y * inv, z * inv, w * inv);
-}
-
-inline D3DXQUATERNION operator * (FLOAT f, CONST D3DXQUATERNION& quat)
-{
-    return D3DXQUATERNION(f * quat.x, f * quat.y, f * quat.z, f * quat.w);
-}
-
-inline BOOL D3DXQUATERNION::operator == (CONST D3DXQUATERNION& quat) const
-{
-    return x == quat.x && y == quat.y && z == quat.z && w == quat.w;
-}
-
-inline BOOL D3DXQUATERNION::operator != (CONST D3DXQUATERNION& quat) const
-{
-    return x != quat.x || y != quat.y || z != quat.z || w != quat.w;
-}
-
-inline D3DXPLANE::D3DXPLANE()
-{
-}
-
-inline D3DXPLANE::D3DXPLANE(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    a = pf[0];
-    b = pf[1];
-    c = pf[2];
-    d = pf[3];
-}
-
-inline D3DXPLANE::D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd)
-{
-    a = fa;
-    b = fb;
-    c = fc;
-    d = fd;
-}
-
-inline D3DXPLANE::operator FLOAT* ()
-{
-    return (FLOAT*)&a;
-}
-
-inline D3DXPLANE::operator CONST FLOAT* () const
-{
-    return (CONST FLOAT*)&a;
-}
-
-inline D3DXPLANE D3DXPLANE::operator + () const
-{
-    return *this;
-}
-
-inline D3DXPLANE D3DXPLANE::operator - () const
-{
-    return D3DXPLANE(-a, -b, -c, -d);
-}
-
-inline BOOL D3DXPLANE::operator == (CONST D3DXPLANE& pl) const
-{
-    return a == pl.a && b == pl.b && c == pl.c && d == pl.d;
-}
-
-inline BOOL D3DXPLANE::operator != (CONST D3DXPLANE& pl) const
-{
-    return a != pl.a || b != pl.b || c != pl.c || d != pl.d;
-}
-
-inline D3DXCOLOR::D3DXCOLOR()
-{
-}
-
-inline D3DXCOLOR::D3DXCOLOR(DWORD col)
-{
-    CONST FLOAT f = 1.0f / 255.0f;
-    r = f * (FLOAT)(unsigned char)(col >> 16);
-    g = f * (FLOAT)(unsigned char)(col >>  8);
-    b = f * (FLOAT)(unsigned char)col;
-    a = f * (FLOAT)(unsigned char)(col >> 24);
-}
-
-inline D3DXCOLOR::D3DXCOLOR(CONST FLOAT *pf)
-{
-    if(!pf) return;
-    r = pf[0];
-    g = pf[1];
-    b = pf[2];
-    a = pf[3];
-}
-
-inline D3DXCOLOR::D3DXCOLOR(CONST D3DCOLORVALUE& col)
-{
-    r = col.r;
-    g = col.g;
-    b = col.b;
-    a = col.a;
-}
-
-inline D3DXCOLOR::D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa)
-{
-    r = fr;
-    g = fg;
-    b = fb;
-    a = fa;
-}
-
-inline D3DXCOLOR::operator DWORD () const
-{
-    DWORD _r = r >= 1.0f ? 0xff : r <= 0.0f ? 0x00 : (DWORD)(r * 255.0f + 0.5f);
-    DWORD _g = g >= 1.0f ? 0xff : g <= 0.0f ? 0x00 : (DWORD)(g * 255.0f + 0.5f);
-    DWORD _b = b >= 1.0f ? 0xff : b <= 0.0f ? 0x00 : (DWORD)(b * 255.0f + 0.5f);
-    DWORD _a = a >= 1.0f ? 0xff : a <= 0.0f ? 0x00 : (DWORD)(a * 255.0f + 0.5f);
-
-    return (_a << 24) | (_r << 16) | (_g << 8) | _b;
-}
-
-inline D3DXCOLOR::operator FLOAT * ()
-{
-    return (FLOAT*)&r;
-}
-
-inline D3DXCOLOR::operator CONST FLOAT * () const
-{
-    return (CONST FLOAT*)&r;
-}
-
-inline D3DXCOLOR::operator D3DCOLORVALUE * ()
-{
-    return (D3DCOLORVALUE*)&r;
-}
-
-inline D3DXCOLOR::operator CONST D3DCOLORVALUE * () const
-{
-    return (CONST D3DCOLORVALUE*)&r;
-}
-
-inline D3DXCOLOR::operator D3DCOLORVALUE& ()
-{
-    return *((D3DCOLORVALUE*)&r);
-}
-
-inline D3DXCOLOR::operator CONST D3DCOLORVALUE& () const
-{
-    return *((CONST D3DCOLORVALUE*)&r);
-}
-
-inline D3DXCOLOR& D3DXCOLOR::operator += (CONST D3DXCOLOR& col)
-{
-    r += col.r;
-    g += col.g;
-    b += col.b;
-    a += col.a;
-    return *this;
-}
-
-inline D3DXCOLOR& D3DXCOLOR::operator -= (CONST D3DXCOLOR& col)
-{
-    r -= col.r;
-    g -= col.g;
-    b -= col.b;
-    a -= col.a;
-    return *this;
-}
-
-inline D3DXCOLOR& D3DXCOLOR::operator *= (FLOAT f)
-{
-    r *= f;
-    g *= f;
-    b *= f;
-    a *= f;
-    return *this;
-}
-
-inline D3DXCOLOR& D3DXCOLOR::operator /= (FLOAT f)
-{
-    FLOAT inv = 1.0f / f;
-    r *= inv;
-    g *= inv;
-    b *= inv;
-    a *= inv;
-    return *this;
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator + () const
-{
-    return *this;
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator - () const
-{
-    return D3DXCOLOR(-r, -g, -b, -a);
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator + (CONST D3DXCOLOR& col) const
-{
-    return D3DXCOLOR(r + col.r, g + col.g, b + col.b, a + col.a);
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator - (CONST D3DXCOLOR& col) const
-{
-    return D3DXCOLOR(r - col.r, g - col.g, b - col.b, a - col.a);
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator * (FLOAT f) const
-{
-    return D3DXCOLOR(r * f, g * f, b * f, a * f);
-}
-
-inline D3DXCOLOR D3DXCOLOR::operator / (FLOAT f) const
-{
-    FLOAT inv = 1.0f / f;
-    return D3DXCOLOR(r * inv, g * inv, b * inv, a * inv);
-}
-
-inline D3DXCOLOR operator * (FLOAT f, CONST D3DXCOLOR& col)
-{
-    return D3DXCOLOR(f * col.r, f * col.g, f * col.b, f * col.a);
-}
-
-inline BOOL D3DXCOLOR::operator == (CONST D3DXCOLOR& col) const
-{
-    return r == col.r && g == col.g && b == col.b && a == col.a;
-}
-
-inline BOOL D3DXCOLOR::operator != (CONST D3DXCOLOR& col) const
-{
-    return r != col.r || g != col.g || b != col.b || a != col.a;
-}
-
-#endif /* __cplusplus */
-
-/*_______________D3DXCOLOR_____________________*/
-
-static inline D3DXCOLOR* D3DXColorAdd(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
-{
-    if ( !pout || !pc1 || !pc2 ) return NULL;
-    pout->r = (pc1->r) + (pc2->r);
-    pout->g = (pc1->g) + (pc2->g);
-    pout->b = (pc1->b) + (pc2->b);
-    pout->a = (pc1->a) + (pc2->a);
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorLerp(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2, FLOAT s)
-{
-    if ( !pout || !pc1 || !pc2 ) return NULL;
-    pout->r = (1-s) * (pc1->r) + s *(pc2->r);
-    pout->g = (1-s) * (pc1->g) + s *(pc2->g);
-    pout->b = (1-s) * (pc1->b) + s *(pc2->b);
-    pout->a = (1-s) * (pc1->a) + s *(pc2->a);
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorModulate(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
-{
-    if ( !pout || !pc1 || !pc2 ) return NULL;
-    pout->r = (pc1->r) * (pc2->r);
-    pout->g = (pc1->g) * (pc2->g);
-    pout->b = (pc1->b) * (pc2->b);
-    pout->a = (pc1->a) * (pc2->a);
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorNegative(D3DXCOLOR *pout, CONST D3DXCOLOR *pc)
-{
-    if ( !pout || !pc ) return NULL;
-    pout->r = 1.0f - pc->r;
-    pout->g = 1.0f - pc->g;
-    pout->b = 1.0f - pc->b;
-    pout->a = pc->a;
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorScale(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s)
-{
-    if ( !pout || !pc ) return NULL;
-    pout->r = s* (pc->r);
-    pout->g = s* (pc->g);
-    pout->b = s* (pc->b);
-    pout->a = s* (pc->a);
-    return pout;
-}
-
-static inline D3DXCOLOR* D3DXColorSubtract(D3DXCOLOR *pout, CONST D3DXCOLOR *pc1, CONST D3DXCOLOR *pc2)
-{
-    if ( !pout || !pc1 || !pc2 ) return NULL;
-    pout->r = (pc1->r) - (pc2->r);
-    pout->g = (pc1->g) - (pc2->g);
-    pout->b = (pc1->b) - (pc2->b);
-    pout->a = (pc1->a) - (pc2->a);
-    return pout;
-}
-
-/*_______________D3DXVECTOR2________________________*/
-
-static inline D3DXVECTOR2* D3DXVec2Add(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x + pv2->x;
-    pout->y = pv1->y + pv2->y;
-    return pout;
-}
-
-static inline FLOAT D3DXVec2CCW(CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pv1 || !pv2) return 0.0f;
-    return ( (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x) );
-}
-
-static inline FLOAT D3DXVec2Dot(CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pv1 || !pv2) return 0.0f;
-    return ( (pv1->x * pv2->x + pv1->y * pv2->y) );
-}
-
-static inline FLOAT D3DXVec2Length(CONST D3DXVECTOR2 *pv)
-{
-    if (!pv) return 0.0f;
-    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) );
-}
-
-static inline FLOAT D3DXVec2LengthSq(CONST D3DXVECTOR2 *pv)
-{
-    if (!pv) return 0.0f;
-    return( (pv->x) * (pv->x) + (pv->y) * (pv->y) );
-}
-
-static inline D3DXVECTOR2* D3DXVec2Lerp(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, FLOAT s)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
-    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
-    return pout;
-}
-
-static inline D3DXVECTOR2* D3DXVec2Maximize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = max(pv1->x , pv2->x);
-    pout->y = max(pv1->y , pv2->y);
-    return pout;
-}
-
-static inline D3DXVECTOR2* D3DXVec2Minimize(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = min(pv1->x , pv2->x);
-    pout->y = min(pv1->y , pv2->y);
-    return pout;
-}
-
-static inline D3DXVECTOR2* D3DXVec2Scale(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, FLOAT s)
-{
-    if ( !pout || !pv) return NULL;
-    pout->x = s * (pv->x);
-    pout->y = s * (pv->y);
-    return pout;
-}
-
-static inline D3DXVECTOR2* D3DXVec2Subtract(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x - pv2->x;
-    pout->y = pv1->y - pv2->y;
-    return pout;
-}
-
-/*__________________D3DXVECTOR3_______________________*/
-
-static inline D3DXVECTOR3* D3DXVec3Add(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x + pv2->x;
-    pout->y = pv1->y + pv2->y;
-    pout->z = pv1->z + pv2->z;
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Cross(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = (pv1->y) * (pv2->z) - (pv1->z) * (pv2->y);
-    pout->y = (pv1->z) * (pv2->x) - (pv1->x) * (pv2->z);
-    pout->z = (pv1->x) * (pv2->y) - (pv1->y) * (pv2->x);
-    return pout;
-}
-
-static inline FLOAT D3DXVec3Dot(CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pv1 || !pv2 ) return 0.0f;
-    return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z);
-}
-
-static inline FLOAT D3DXVec3Length(CONST D3DXVECTOR3 *pv)
-{
-    if (!pv) return 0.0f;
-    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) );
-}
-
-static inline FLOAT D3DXVec3LengthSq(CONST D3DXVECTOR3 *pv)
-{
-    if (!pv) return 0.0f;
-    return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z);
-}
-
-static inline D3DXVECTOR3* D3DXVec3Lerp(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, FLOAT s)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
-    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
-    pout->z = (1-s) * (pv1->z) + s * (pv2->z);
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Maximize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = max(pv1->x , pv2->x);
-    pout->y = max(pv1->y , pv2->y);
-    pout->z = max(pv1->z , pv2->z);
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Minimize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = min(pv1->x , pv2->x);
-    pout->y = min(pv1->y , pv2->y);
-    pout->z = min(pv1->z , pv2->z);
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Scale(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, FLOAT s)
-{
-    if ( !pout || !pv) return NULL;
-    pout->x = s * (pv->x);
-    pout->y = s * (pv->y);
-    pout->z = s * (pv->z);
-    return pout;
-}
-
-static inline D3DXVECTOR3* D3DXVec3Subtract(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x - pv2->x;
-    pout->y = pv1->y - pv2->y;
-    pout->z = pv1->z - pv2->z;
-    return pout;
-}
-/*__________________D3DXVECTOR4_______________________*/
-
-static inline D3DXVECTOR4* D3DXVec4Add(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x + pv2->x;
-    pout->y = pv1->y + pv2->y;
-    pout->z = pv1->z + pv2->z;
-    pout->w = pv1->w + pv2->w;
-    return pout;
-}
-
-static inline FLOAT D3DXVec4Dot(CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if (!pv1 || !pv2 ) return 0.0f;
-    return (pv1->x) * (pv2->x) + (pv1->y) * (pv2->y) + (pv1->z) * (pv2->z) + (pv1->w) * (pv2->w);
-}
-
-static inline FLOAT D3DXVec4Length(CONST D3DXVECTOR4 *pv)
-{
-    if (!pv) return 0.0f;
-    return sqrt( (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) + (pv->w) * (pv->w) );
-}
-
-static inline FLOAT D3DXVec4LengthSq(CONST D3DXVECTOR4 *pv)
-{
-    if (!pv) return 0.0f;
-    return (pv->x) * (pv->x) + (pv->y) * (pv->y) + (pv->z) * (pv->z) + (pv->w) * (pv->w);
-}
-
-static inline D3DXVECTOR4* D3DXVec4Lerp(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, FLOAT s)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = (1-s) * (pv1->x) + s * (pv2->x);
-    pout->y = (1-s) * (pv1->y) + s * (pv2->y);
-    pout->z = (1-s) * (pv1->z) + s * (pv2->z);
-    pout->w = (1-s) * (pv1->w) + s * (pv2->w);
-    return pout;
-}
-
-
-static inline D3DXVECTOR4* D3DXVec4Maximize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = max(pv1->x , pv2->x);
-    pout->y = max(pv1->y , pv2->y);
-    pout->z = max(pv1->z , pv2->z);
-    pout->w = max(pv1->w , pv2->w);
-    return pout;
-}
-
-static inline D3DXVECTOR4* D3DXVec4Minimize(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = min(pv1->x , pv2->x);
-    pout->y = min(pv1->y , pv2->y);
-    pout->z = min(pv1->z , pv2->z);
-    pout->w = min(pv1->w , pv2->w);
-    return pout;
-}
-
-static inline D3DXVECTOR4* D3DXVec4Scale(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, FLOAT s)
-{
-    if ( !pout || !pv) return NULL;
-    pout->x = s * (pv->x);
-    pout->y = s * (pv->y);
-    pout->z = s * (pv->z);
-    pout->w = s * (pv->w);
-    return pout;
-}
-
-static inline D3DXVECTOR4* D3DXVec4Subtract(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2)
-{
-    if ( !pout || !pv1 || !pv2) return NULL;
-    pout->x = pv1->x - pv2->x;
-    pout->y = pv1->y - pv2->y;
-    pout->z = pv1->z - pv2->z;
-    pout->w = pv1->w - pv2->w;
-    return pout;
-}
-
-/*__________________D3DXMatrix____________________*/
-#ifdef NONAMELESSUNION
-# define D3DX_U(x)  (x).u
-#else
-# define D3DX_U(x)  (x)
-#endif
-
-static inline D3DXMATRIX* D3DXMatrixIdentity(D3DXMATRIX *pout)
-{
-    if ( !pout ) return NULL;
-    D3DX_U(*pout).m[0][1] = 0.0f;
-    D3DX_U(*pout).m[0][2] = 0.0f;
-    D3DX_U(*pout).m[0][3] = 0.0f;
-    D3DX_U(*pout).m[1][0] = 0.0f;
-    D3DX_U(*pout).m[1][2] = 0.0f;
-    D3DX_U(*pout).m[1][3] = 0.0f;
-    D3DX_U(*pout).m[2][0] = 0.0f;
-    D3DX_U(*pout).m[2][1] = 0.0f;
-    D3DX_U(*pout).m[2][3] = 0.0f;
-    D3DX_U(*pout).m[3][0] = 0.0f;
-    D3DX_U(*pout).m[3][1] = 0.0f;
-    D3DX_U(*pout).m[3][2] = 0.0f;
-    D3DX_U(*pout).m[0][0] = 1.0f;
-    D3DX_U(*pout).m[1][1] = 1.0f;
-    D3DX_U(*pout).m[2][2] = 1.0f;
-    D3DX_U(*pout).m[3][3] = 1.0f;
-    return pout;
-}
-
-static inline BOOL D3DXMatrixIsIdentity(D3DXMATRIX *pm)
-{
-    int i,j;
-    D3DXMATRIX testmatrix;
-
-    if ( !pm ) return FALSE;
-    D3DXMatrixIdentity(&testmatrix);
-    for (i=0; i<4; i++)
-    {
-     for (j=0; j<4; j++)
-     {
-      if ( D3DX_U(*pm).m[i][j] != D3DX_U(testmatrix).m[i][j] ) return FALSE;
-     }
-    }
-    return TRUE;
-}
-#undef D3DX_U
-
-/*__________________D3DXPLANE____________________*/
-
-static inline FLOAT D3DXPlaneDot(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
-{
-    if ( !pp || !pv ) return 0.0f;
-    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) * (pv->w) );
-}
-
-static inline FLOAT D3DXPlaneDotCoord(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
-{
-    if ( !pp || !pv ) return 0.0f;
-    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) + (pp->d) );
-}
-
-static inline FLOAT D3DXPlaneDotNormal(CONST D3DXPLANE *pp, CONST D3DXVECTOR4 *pv)
-{
-    if ( !pp || !pv ) return 0.0f;
-    return ( (pp->a) * (pv->x) + (pp->b) * (pv->y) + (pp->c) * (pv->z) );
-}
-
-/*__________________D3DXQUATERNION____________________*/
-
-static inline D3DXQUATERNION* D3DXQuaternionConjugate(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq)
-{
-    if ( !pout || !pq) return NULL;
-    pout->x = -pq->x;
-    pout->y = -pq->y;
-    pout->z = -pq->z;
-    pout->w = pq->w;
-    return pout;
-}
-
-static inline FLOAT D3DXQuaternionDot(CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2)
-{
-    if ( !pq1 || !pq2 ) return 0.0f;
-    return (pq1->x) * (pq2->x) + (pq1->y) * (pq2->y) + (pq1->z) * (pq2->z) + (pq1->w) * (pq2->w);
-}
-
-static inline D3DXQUATERNION* D3DXQuaternionIdentity(D3DXQUATERNION *pout)
-{
-    if ( !pout) return NULL;
-    pout->x = 0.0f;
-    pout->y = 0.0f;
-    pout->z = 0.0f;
-    pout->w = 1.0f;
-    return pout;
-}
-
-static inline BOOL D3DXQuaternionIsIdentity(D3DXQUATERNION *pq)
-{
-    if ( !pq) return FALSE;
-    return ( (pq->x == 0.0f) && (pq->y == 0.0f) && (pq->z == 0.0f) && (pq->w == 1.0f) );
-}
-
-static inline FLOAT D3DXQuaternionLength(CONST D3DXQUATERNION *pq)
-{
-    if (!pq) return 0.0f;
-    return sqrt( (pq->x) * (pq->x) + (pq->y) * (pq->y) + (pq->z) * (pq->z) + (pq->w) * (pq->w) );
-}
-
-static inline FLOAT D3DXQuaternionLengthSq(CONST D3DXQUATERNION *pq)
-{
-    if (!pq) return 0.0f;
-    return (pq->x) * (pq->x) + (pq->y) * (pq->y) + (pq->z) * (pq->z) + (pq->w) * (pq->w);
-}
-
-#endif
diff --git a/misc/builddeps/win64/dx/include/d3dx9mesh.h b/misc/builddeps/win64/dx/include/d3dx9mesh.h
deleted file mode 100644 (file)
index 5773d24..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2009 David Adam
- * Copyright (C) 2010 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <d3dx9.h>
-
-#ifndef __WINE_D3DX9MESH_H
-#define __WINE_D3DX9MESH_H
-
-DEFINE_GUID(IID_ID3DXBaseMesh, 0x7ed943dd, 0x52e8, 0x40b5, 0xa8, 0xd8, 0x76, 0x68, 0x5c, 0x40, 0x63, 0x30);
-DEFINE_GUID(IID_ID3DXMesh,     0x4020e5c2, 0x1403, 0x4929, 0x88, 0x3f, 0xe2, 0xe8, 0x49, 0xfa, 0xc1, 0x95);
-
-enum _MAX_FVF_DECL_SIZE
-{
-    MAX_FVF_DECL_SIZE = MAXD3DDECLLENGTH + 1
-};
-
-typedef struct ID3DXBaseMesh* LPD3DXBASEMESH;
-typedef struct ID3DXMesh* LPD3DXMESH;
-
-typedef struct _D3DXATTRIBUTERANGE {
-    DWORD AttribId;
-    DWORD FaceStart;
-    DWORD FaceCount;
-    DWORD VertexStart;
-    DWORD VertexCount;
-} D3DXATTRIBUTERANGE;
-
-typedef D3DXATTRIBUTERANGE* LPD3DXATTRIBUTERANGE;
-
-#undef INTERFACE
-#define INTERFACE ID3DXBaseMesh
-
-DECLARE_INTERFACE_(ID3DXBaseMesh, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseMesh ***/
-    STDMETHOD(DrawSubset)(THIS_ DWORD attrib_id) PURE;
-    STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
-    STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
-    STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
-    STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
-    STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
-    STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(CloneMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER9* vertex_buffer) PURE;
-    STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER9* index_buffer) PURE;
-    STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
-    STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
-    STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
-    STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
-    STDMETHOD(GetAttributeTable)(THIS_ D3DXATTRIBUTERANGE* attrib_table, DWORD* attrib_table_size) PURE;
-    STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* point_reps, DWORD* adjacency) PURE;
-    STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* adjacency, DWORD* point_reps) PURE;
-    STDMETHOD(GenerateAdjacency)(THIS_ FLOAT epsilon, DWORD* adjacency) PURE;
-    STDMETHOD(UpdateSemantics)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
-};
-
-
-#undef INTERFACE
-#define INTERFACE ID3DXMesh
-
-DECLARE_INTERFACE_(ID3DXMesh, ID3DXBaseMesh)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* object) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBaseMesh ***/
-    STDMETHOD(DrawSubset)(THIS_ DWORD attrib_id) PURE;
-    STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
-    STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
-    STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
-    STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
-    STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
-    STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(CloneMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER9* vertex_buffer) PURE;
-    STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER9* index_buffer) PURE;
-    STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
-    STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
-    STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
-    STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
-    STDMETHOD(GetAttributeTable)(THIS_ D3DXATTRIBUTERANGE* attrib_table, DWORD* attrib_table_size) PURE;
-    STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* point_reps, DWORD* adjacency) PURE;
-    STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* adjacency, DWORD* point_reps) PURE;
-    STDMETHOD(GenerateAdjacency)(THIS_ FLOAT epsilon, DWORD* adjacency) PURE;
-    STDMETHOD(UpdateSemantics)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
-    /*** ID3DXMesh ***/
-    STDMETHOD(LockAttributeBuffer)(THIS_ DWORD flags, DWORD** data) PURE;
-    STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
-    STDMETHOD(Optimize)(THIS_ DWORD flags, CONST DWORD* adjacency_in, DWORD* adjacency_out,
-        DWORD* face_remap, LPD3DXBUFFER* vertex_remap, LPD3DXMESH* opt_mesh) PURE;
-    STDMETHOD(OptimizeInplace)(THIS_ DWORD flags, CONST DWORD* adjacency_in, DWORD* adjacency_out,
-                     DWORD* face_remap, LPD3DXBUFFER* vertex_remap) PURE;
-    STDMETHOD(SetAttributeTable)(THIS_ CONST D3DXATTRIBUTERANGE* attrib_table, DWORD attrib_table_size) PURE;
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3DXCreateBuffer(DWORD, LPD3DXBUFFER*);
-UINT    WINAPI D3DXGetDeclVertexSize(const D3DVERTEXELEMENT9 *decl, DWORD stream_idx);
-UINT    WINAPI D3DXGetFVFVertexSize(DWORD);
-BOOL    WINAPI D3DXBoxBoundProbe(CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *);
-BOOL    WINAPI D3DXSphereBoundProbe(CONST D3DXVECTOR3 *,FLOAT,CONST D3DXVECTOR3 *,CONST D3DXVECTOR3 *);
-HRESULT WINAPI D3DXComputeBoundingBox(CONST D3DXVECTOR3 *, DWORD, DWORD, D3DXVECTOR3 *, D3DXVECTOR3 *);
-HRESULT WINAPI D3DXComputeBoundingSphere(CONST D3DXVECTOR3 *, DWORD, DWORD, D3DXVECTOR3 *, FLOAT *);
-HRESULT WINAPI D3DXDeclaratorFromFVF(DWORD, D3DVERTEXELEMENT9[MAX_FVF_DECL_SIZE]);
-BOOL    WINAPI D3DXIntersectTri(CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3*, FLOAT *, FLOAT *, FLOAT *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WINE_D3DX9MESH_H */
diff --git a/misc/builddeps/win64/dx/include/d3dx9shader.h b/misc/builddeps/win64/dx/include/d3dx9shader.h
deleted file mode 100644 (file)
index c8380bc..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * Copyright 2008 Luis Busquets
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "d3dx9.h"
-
-#ifndef __D3DX9SHADER_H__
-#define __D3DX9SHADER_H__
-
-#define D3DXSHADER_DEBUG                          0x1
-#define D3DXSHADER_SKIPVALIDATION                 0x2
-#define D3DXSHADER_SKIPOPTIMIZATION               0x4
-#define D3DXSHADER_PACKMATRIX_ROWMAJOR            0x8
-#define D3DXSHADER_PACKMATRIX_COLUMNMAJOR         0x10
-#define D3DXSHADER_PARTIALPRECISION               0x20
-#define D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT        0x40
-#define D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT        0x80
-#define D3DXSHADER_NO_PRESHADER                   0x100
-#define D3DXSHADER_AVOID_FLOW_CONTROL             0x200
-#define D3DXSHADER_PREFER_FLOW_CONTROL            0x400
-#define D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY 0x1000
-#define D3DXSHADER_IEEE_STRICTNESS                0x2000
-
-#define D3DXSHADER_OPTIMIZATION_LEVEL0            0x4000
-#define D3DXSHADER_OPTIMIZATION_LEVEL1            0x0
-#define D3DXSHADER_OPTIMIZATION_LEVEL2            0xC000
-#define D3DXSHADER_OPTIMIZATION_LEVEL3            0x8000
-
-#define D3DXSHADER_USE_LEGACY_D3DX9_31_DLL        0x10000
-
-typedef LPCSTR D3DXHANDLE;
-
-typedef enum _D3DXREGISTER_SET
-{
-    D3DXRS_BOOL,
-    D3DXRS_INT4,
-    D3DXRS_FLOAT4,
-    D3DXRS_SAMPLER,
-    D3DXRS_FORCE_DWORD = 0x7fffffff
-} D3DXREGISTER_SET, *LPD3DXREGISTER_SET;
-
-typedef enum D3DXPARAMETER_CLASS
-{
-    D3DXPC_SCALAR,
-    D3DXPC_VECTOR,
-    D3DXPC_MATRIX_ROWS,
-    D3DXPC_MATRIX_COLUMNS,
-    D3DXPC_OBJECT,
-    D3DXPC_STRUCT,
-    D3DXPC_FORCE_DWORD = 0x7fffffff,
-} D3DXPARAMETER_CLASS, *LPD3DXPARAMETER_CLASS;
-
-typedef enum D3DXPARAMETER_TYPE
-{
-    D3DXPT_VOID,
-    D3DXPT_BOOL,
-    D3DXPT_INT,
-    D3DXPT_FLOAT,
-    D3DXPT_STRING,
-    D3DXPT_TEXTURE,
-    D3DXPT_TEXTURE1D,
-    D3DXPT_TEXTURE2D,
-    D3DXPT_TEXTURE3D,
-    D3DXPT_TEXTURECUBE,
-    D3DXPT_SAMPLER,
-    D3DXPT_SAMPLER1D,
-    D3DXPT_SAMPLER2D,
-    D3DXPT_SAMPLER3D,
-    D3DXPT_SAMPLERCUBE,
-    D3DXPT_PIXELSHADER,
-    D3DXPT_VERTEXSHADER,
-    D3DXPT_PIXELFRAGMENT,
-    D3DXPT_VERTEXFRAGMENT,
-    D3DXPT_UNSUPPORTED,
-    D3DXPT_FORCE_DWORD = 0x7fffffff,
-} D3DXPARAMETER_TYPE, *LPD3DXPARAMETER_TYPE;
-
-typedef struct _D3DXCONSTANTTABLE_DESC
-{
-    LPCSTR Creator;
-    DWORD Version;
-    UINT Constants;
-} D3DXCONSTANTTABLE_DESC, *LPD3DXCONSTANTTABLE_DESC;
-
-typedef struct _D3DXCONSTANT_DESC
-{
-    LPCSTR Name;
-    D3DXREGISTER_SET RegisterSet;
-    UINT RegisterIndex;
-    UINT RegisterCount;
-    D3DXPARAMETER_CLASS Class;
-    D3DXPARAMETER_TYPE Type;
-    UINT Rows;
-    UINT Columns;
-    UINT Elements;
-    UINT StructMembers;
-    UINT Bytes;
-    LPCVOID DefaultValue;
-} D3DXCONSTANT_DESC, *LPD3DXCONSTANT_DESC;
-
-DEFINE_GUID(IID_ID3DXConstantTable, 0x9dca3190, 0x38b9, 0x4fc3, 0x92, 0xe3, 0x39, 0xc6, 0xdd, 0xfb, 0x35, 0x8b);
-
-#undef INTERFACE
-#define INTERFACE ID3DXConstantTable
-
-DECLARE_INTERFACE_(ID3DXConstantTable, ID3DXBuffer)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-    /*** ID3DXBuffer methods ***/
-    STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
-    STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
-    /*** ID3DXConstantTable methods ***/
-    STDMETHOD(GetDesc)(THIS_ D3DXCONSTANTTABLE_DESC *pDesc) PURE;
-    STDMETHOD(GetConstantDesc)(THIS_ D3DXHANDLE hConstant, D3DXCONSTANT_DESC *pConstantDesc, UINT *pCount) PURE;
-    STDMETHOD_(UINT, GetSamplerIndex)(THIS_ D3DXHANDLE hConstant) PURE;
-    STDMETHOD_(D3DXHANDLE, GetConstant)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
-    STDMETHOD_(D3DXHANDLE, GetConstantByName)(THIS_ D3DXHANDLE hConstant, LPCSTR pName) PURE;
-    STDMETHOD_(D3DXHANDLE, GetConstantElement)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
-    STDMETHOD(SetDefaults)(THIS_ LPDIRECT3DDEVICE9 pDevice) PURE;
-    STDMETHOD(SetValue)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, LPCVOID pData, UINT Bytes) PURE;
-    STDMETHOD(SetBool)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, BOOL b) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST BOOL* pb, UINT Count) PURE;
-    STDMETHOD(SetInt)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, INT n) PURE;
-    STDMETHOD(SetIntArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST INT* pn, UINT Count) PURE;
-    STDMETHOD(SetFloat)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, FLOAT f) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST FLOAT* pf, UINT Count) PURE;
-    STDMETHOD(SetVector)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector) PURE;
-    STDMETHOD(SetVectorArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
-    STDMETHOD(SetMatrix)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
-    STDMETHOD(SetMatrixPointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
-    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define ID3DXConstantTable_QueryInterface(p,a,b)                      (p)->lpVtbl->QueryInterface(p,a,b)
-#define ID3DXConstantTable_AddRef(p)                                  (p)->lpVtbl->AddRef(p)
-#define ID3DXConstantTable_Release(p)                                 (p)->lpVtbl->Release(p)
-/*** ID3DXBuffer methods ***/
-#define ID3DXConstantTable_GetBufferPointer(p)                        (p)->lpVtbl->GetBufferPointer(p)
-#define ID3DXConstantTable_GetBufferSize(p)                           (p)->lpVtbl->GetBufferSize(p)
-/*** ID3DXConstantTable methods ***/
-#define ID3DXConstantTable_GetDesc(p,a)                               (p)->lpVtbl->GetDesc(p,a)
-#define ID3DXConstantTable_GetConstantDesc(p,a,b,c)                   (p)->lpVtbl->GetConstantDesc(p,a,b,c)
-#define ID3DXConstantTable_GetSamplerIndex(p,a)                       (p)->lpVtbl->GetSamplerIndex(p,a)
-#define ID3DXConstantTable_GetConstant(p,a,b)                         (p)->lpVtbl->GetConstant(p,a,b)
-#define ID3DXConstantTable_GetConstantByName(p,a,b)                   (p)->lpVtbl->GetConstantByName(p,a,b)
-#define ID3DXConstantTable_GetConstantElement(p,a,b)                  (p)->lpVtbl->GetConstantElement(p,a,b)
-#define ID3DXConstantTable_SetDefaults(p,a)                           (p)->lpVtbl->SetDefaults(p,a)
-#define ID3DXConstantTable_SetValue(p,a,b,c,d)                        (p)->lpVtbl->SetValue(p,a,b,c,d)
-#define ID3DXConstantTable_SetBool(p,a,b,c)                           (p)->lpVtbl->SetBool(p,a,b,c)
-#define ID3DXConstantTable_SetBoolArray(p,a,b,c,d)                    (p)->lpVtbl->SetBoolArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetInt(p,a,b,c)                            (p)->lpVtbl->SetInt(p,a,b,c)
-#define ID3DXConstantTable_SetIntArray(p,a,b,c,d)                     (p)->lpVtbl->SetIntArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetFloat(p,a,b,c)                          (p)->lpVtbl->SetFloat(p,a,b,c)
-#define ID3DXConstantTable_SetFloatArray(p,a,b,c,d)                   (p)->lpVtbl->SetFloatArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetVector(p,a,b,c)                         (p)->lpVtbl->SetVector(p,a,b,c)
-#define ID3DXConstantTable_SetVectorArray(p,a,b,c,d)                  (p)->lpVtbl->SetVectorArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetMatrix(p,a,b,c)                         (p)->lpVtbl->SetMatrix(p,a,b,c)
-#define ID3DXConstantTable_SetMatrixArray(p,a,b,c,d)                  (p)->lpVtbl->SetMatrixArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetMatrixPointerArray(p,a,b,c,d)           (p)->lpVtbl->SetMatrixPointerArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetMatrixTranspose(p,a,b,c)                (p)->lpVtbl->SetMatrixTranspose(p,a,b,c)
-#define ID3DXConstantTable_SetMatrixTransposeArray(p,a,b,c,d)         (p)->lpVtbl->SetMatrixTransposeArray(p,a,b,c,d)
-#define ID3DXConstantTable_SetMatrixTransposePointerArray(p,a,b,c,d)  (p)->lpVtbl->SetMatrixTransposePointerArray(p,a,b,c,d)
-#else
-/*** IUnknown methods ***/
-#define ID3DXConstantTable_QueryInterface(p,a,b)                      (p)->QueryInterface(a,b)
-#define ID3DXConstantTable_AddRef(p)                                  (p)->AddRef()
-#define ID3DXConstantTable_Release(p)                                 (p)->Release()
-/*** ID3DXBuffer methods ***/
-#define ID3DXConstantTable_GetBufferPointer(p)                        (p)->GetBufferPointer()
-#define ID3DXConstantTable_GetBufferSize(p)                           (p)->GetBufferSize()
-/*** ID3DXConstantTable methods ***/
-#define ID3DXConstantTable_GetDesc(p,a)                               (p)->GetDesc(a)
-#define ID3DXConstantTable_GetConstantDesc(p,a,b,c)                   (p)->GetConstantDesc(a,b,c)
-#define ID3DXConstantTable_GetSamplerIndex(p,a)                       (p)->GetConstantDesc(a)
-#define ID3DXConstantTable_GetConstant(p,a,b)                         (p)->GetConstant(a,b)
-#define ID3DXConstantTable_GetConstantByName(p,a,b)                   (p)->GetConstantByName(a,b)
-#define ID3DXConstantTable_GetConstantElement(p,a,b)                  (p)->GetConstantElement(a,b)
-#define ID3DXConstantTable_SetDefaults(p,a)                           (p)->SetDefaults(a)
-#define ID3DXConstantTable_SetValue(p,a,b,c,d)                        (p)->SetValue(a,b,c,d)
-#define ID3DXConstantTable_SetBool(p,a,b,c)                           (p)->SetBool(a,b,c)
-#define ID3DXConstantTable_SetBoolArray(p,a,b,c,d)                    (p)->SetBoolArray(a,b,c,d)
-#define ID3DXConstantTable_SetInt(p,a,b,c)                            (p)->SetInt(a,b,c)
-#define ID3DXConstantTable_SetIntArray(p,a,b,c,d)                     (p)->SetIntArray(a,b,c,d)
-#define ID3DXConstantTable_SetFloat(p,a,b,c)                          (p)->SetFloat(a,b,c)
-#define ID3DXConstantTable_SetFloatArray(p,a,b,c,d)                   (p)->SetFloatArray(a,b,c,d)
-#define ID3DXConstantTable_SetVector(p,a,b,c)                         (p)->SetVector(a,b,c)
-#define ID3DXConstantTable_SetVectorArray(p,a,b,c,d)                  (p)->SetVectorArray(a,b,c,d)
-#define ID3DXConstantTable_SetMatrix(p,a,b,c)                         (p)->SetMatrix(a,b,c)
-#define ID3DXConstantTable_SetMatrixArray(p,a,b,c,d)                  (p)->SetMatrixArray(a,b,c,d)
-#define ID3DXConstantTable_SetMatrixPointerArray(p,a,b,c,d)           (p)->SetMatrixPointerArray(a,b,c,d)
-#define ID3DXConstantTable_SetMatrixTranspose(p,a,b,c)                (p)->SetMatrixTranspose(a,b,c)
-#define ID3DXConstantTable_SetMatrixTransposeArray(p,a,b,c,d)         (p)->SetMatrixTransposeArray(a,b,c,d)
-#define ID3DXConstantTable_SetMatrixTransposePointerArray(p,a,b,c,d)  (p)->SetMatrixTransposePointerArray(a,b,c,d)
-#endif
-
-typedef struct ID3DXConstantTable *LPD3DXCONSTANTTABLE;
-
-typedef struct _D3DXMACRO {
-    LPCSTR Name;
-    LPCSTR Definition;
-} D3DXMACRO, *LPD3DXMACRO;
-
-typedef struct _D3DXSEMANTIC {
-    UINT Usage;
-    UINT UsageIndex;
-} D3DXSEMANTIC, *LPD3DXSEMANTIC;
-
-typedef enum _D3DXINCLUDE_TYPE
-{
-    D3DXINC_LOCAL,
-    D3DXINC_SYSTEM,
-    D3DXINC_FORCE_DWORD = 0x7fffffff,
-} D3DXINCLUDE_TYPE, *LPD3DXINCLUDE_TYPE;
-
-#undef INTERFACE
-#define INTERFACE ID3DXInclude
-
-DECLARE_INTERFACE(ID3DXInclude)
-{
-    STDMETHOD(Open)(THIS_ D3DXINCLUDE_TYPE include_type, LPCSTR filename, LPCVOID parent_data, LPCVOID *data, UINT *bytes) PURE;
-    STDMETHOD(Close)(THIS_ LPCVOID data) PURE;
-};
-
-#define ID3DXInclude_Open(p,a,b,c,d,e)  (p)->lpVtbl->Open(p,a,b,c,d,e)
-#define ID3DXInclude_Close(p,a)         (p)->lpVtbl->Close(p,a)
-
-typedef struct ID3DXInclude *LPD3DXINCLUDE;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LPCSTR WINAPI D3DXGetPixelShaderProfile(LPDIRECT3DDEVICE9 device);
-UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code);
-DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code);
-LPCSTR WINAPI D3DXGetVertexShaderProfile(LPDIRECT3DDEVICE9 device);
-HRESULT WINAPI D3DXFindShaderComment(CONST DWORD* byte_code, DWORD fourcc, LPCVOID* data, UINT* size);
-
-HRESULT WINAPI D3DXAssembleShaderFromFileA(LPCSTR filename,
-                                           CONST D3DXMACRO* defines,
-                                           LPD3DXINCLUDE include,
-                                           DWORD flags,
-                                           LPD3DXBUFFER* shader,
-                                           LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXAssembleShaderFromFileW(LPCWSTR filename,
-                                           CONST D3DXMACRO* defines,
-                                           LPD3DXINCLUDE include,
-                                           DWORD flags,
-                                           LPD3DXBUFFER* shader,
-                                           LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE module,
-                                               LPCSTR resource,
-                                               CONST D3DXMACRO* defines,
-                                               LPD3DXINCLUDE include,
-                                               DWORD flags,
-                                               LPD3DXBUFFER* shader,
-                                               LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXAssembleShaderFromResourceW(HMODULE module,
-                                               LPCWSTR resource,
-                                               CONST D3DXMACRO* defines,
-                                               LPD3DXINCLUDE include,
-                                               DWORD flags,
-                                               LPD3DXBUFFER* shader,
-                                               LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXAssembleShader(LPCSTR data,
-                                  UINT data_len,
-                                  CONST D3DXMACRO* defines,
-                                  LPD3DXINCLUDE include,
-                                  DWORD flags,
-                                  LPD3DXBUFFER* shader,
-                                  LPD3DXBUFFER* error_messages);
-
-HRESULT WINAPI D3DXGetShaderConstantTableEx(CONST DWORD* byte_code,
-                                            DWORD flags,
-                                            LPD3DXCONSTANTTABLE* constant_table);
-
-HRESULT WINAPI D3DXGetShaderConstantTable(CONST DWORD* byte_code,
-                                          LPD3DXCONSTANTTABLE* constant_table);
-
-#ifdef __cplusplus
-}
-#endif
-
-typedef struct _D3DXSHADER_CONSTANTTABLE
-{
-    DWORD Size;
-    DWORD Creator;
-    DWORD Version;
-    DWORD Constants;
-    DWORD ConstantInfo;
-    DWORD Flags;
-    DWORD Target;
-} D3DXSHADER_CONSTANTTABLE, *LPD3DXSHADER_CONSTANTTABLE;
-
-typedef struct _D3DXSHADER_CONSTANTINFO
-{
-    DWORD Name;
-    WORD  RegisterSet;
-    WORD  RegisterIndex;
-    WORD  RegisterCount;
-    WORD  Reserved;
-    DWORD TypeInfo;
-    DWORD DefaultValue;
-} D3DXSHADER_CONSTANTINFO, *LPD3DXSHADER_CONSTANTINFO;
-
-typedef struct _D3DXSHADER_TYPEINFO
-{
-    WORD  Class;
-    WORD  Type;
-    WORD  Rows;
-    WORD  Columns;
-    WORD  Elements;
-    WORD  StructMembers;
-    DWORD StructMemberInfo;
-} D3DXSHADER_TYPEINFO, *LPD3DXSHADER_TYPEINFO;
-
-typedef struct _D3DXSHADER_STRUCTMEMBERINFO
-{
-    DWORD Name;
-    DWORD TypeInfo;
-} D3DXSHADER_STRUCTMEMBERINFO, *LPD3DXSHADER_STRUCTMEMBERINFO;
-
-#endif /* __D3DX9SHADER_H__ */
diff --git a/misc/builddeps/win64/dx/include/d3dx9shape.h b/misc/builddeps/win64/dx/include/d3dx9shape.h
deleted file mode 100644 (file)
index e1bf231..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "d3dx9.h"
-
-#ifndef __D3DX9SHAPE_H__
-#define __D3DX9SHAPE_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3DXCreateBox(LPDIRECT3DDEVICE9 device,
-                             FLOAT width,
-                             FLOAT height,
-                             FLOAT depth,
-                             LPD3DXMESH* mesh,
-                             LPD3DXBUFFER* adjacency);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __D3DX9SHAPE_H__ */
diff --git a/misc/builddeps/win64/dx/include/d3dx9tex.h b/misc/builddeps/win64/dx/include/d3dx9tex.h
deleted file mode 100644 (file)
index 019a4da..0000000
+++ /dev/null
@@ -1,698 +0,0 @@
-/*
- * Copyright (C) 2008 Tony Wasserka
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include <_mingw_dxhelper.h>
-#include <d3dx9.h>
-
-#ifndef __WINE_D3DX9TEX_H
-#define __WINE_D3DX9TEX_H
-
-/**********************************************
- ***************** Definitions ****************
- **********************************************/
-#define D3DX_FILTER_NONE                 0x00000001
-#define D3DX_FILTER_POINT                0x00000002
-#define D3DX_FILTER_LINEAR               0x00000003
-#define D3DX_FILTER_TRIANGLE             0x00000004
-#define D3DX_FILTER_BOX                  0x00000005
-#define D3DX_FILTER_MIRROR_U             0x00010000
-#define D3DX_FILTER_MIRROR_V             0x00020000
-#define D3DX_FILTER_MIRROR_W             0x00040000
-#define D3DX_FILTER_MIRROR               0x00070000
-#define D3DX_FILTER_DITHER               0x00080000
-#define D3DX_FILTER_DITHER_DIFFUSION     0x00100000
-#define D3DX_FILTER_SRGB_IN              0x00200000
-#define D3DX_FILTER_SRGB_OUT             0x00400000
-#define D3DX_FILTER_SRGB                 0x00600000
-
-#define D3DX_NORMALMAP_MIRROR_U          0x00010000
-#define D3DX_NORMALMAP_MIRROR_V          0x00020000
-#define D3DX_NORMALMAP_MIRROR            0x00030000
-#define D3DX_NORMALMAP_INVERTSIGN        0x00080000
-#define D3DX_NORMALMAP_COMPUTE_OCCLUSION 0x00100000
-
-#define D3DX_CHANNEL_RED                 0x00000001
-#define D3DX_CHANNEL_BLUE                0x00000002
-#define D3DX_CHANNEL_GREEN               0x00000004
-#define D3DX_CHANNEL_ALPHA               0x00000008
-#define D3DX_CHANNEL_LUMINANCE           0x00000010
-
-/**********************************************
- **************** Typedefs ****************
- **********************************************/
-typedef enum _D3DXIMAGE_FILEFORMAT
-{
-    D3DXIFF_BMP,
-    D3DXIFF_JPG,
-    D3DXIFF_TGA,
-    D3DXIFF_PNG,
-    D3DXIFF_DDS,
-    D3DXIFF_PPM,
-    D3DXIFF_DIB,
-    D3DXIFF_FORCE_DWORD = 0x7fffffff
-} D3DXIMAGE_FILEFORMAT;
-
-typedef struct _D3DXIMAGE_INFO
-{
-    UINT Width;
-    UINT Height;
-    UINT Depth;
-    UINT MipLevels;
-    D3DFORMAT Format;
-    D3DRESOURCETYPE ResourceType;
-    D3DXIMAGE_FILEFORMAT ImageFileFormat;
-} D3DXIMAGE_INFO;
-
-/**********************************************
- ****************** Functions *****************
- **********************************************/
-/* Typedefs for callback functions */
-typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *out, CONST D3DXVECTOR2 *texcoord, CONST D3DXVECTOR2 *texelsize, LPVOID data);
-typedef VOID (WINAPI *LPD3DXFILL3D)(D3DXVECTOR4 *out, CONST D3DXVECTOR3 *texcoord, CONST D3DXVECTOR3 *texelsize, LPVOID data);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Image Information */
-HRESULT WINAPI D3DXGetImageInfoFromFileA(LPCSTR file, D3DXIMAGE_INFO *info);
-HRESULT WINAPI D3DXGetImageInfoFromFileW(LPCWSTR file, D3DXIMAGE_INFO *info);
-#define        D3DXGetImageInfoFromFile WINELIB_NAME_AW(D3DXGetImageInfoFromFile)
-
-HRESULT WINAPI D3DXGetImageInfoFromResourceA(HMODULE module, LPCSTR resource, D3DXIMAGE_INFO *info);
-HRESULT WINAPI D3DXGetImageInfoFromResourceW(HMODULE module, LPCWSTR resource, D3DXIMAGE_INFO *info);
-#define        D3DXGetImageInfoFromResource WINELIB_NAME_AW(D3DXGetImageInfoFromResource)
-
-HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(LPCVOID data, UINT datasize, D3DXIMAGE_INFO *info);
-
-
-/* Surface Loading/Saving */
-HRESULT WINAPI D3DXLoadSurfaceFromFileA(       LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               LPCSTR srcfile,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadSurfaceFromFileW(       LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               LPCWSTR srcfile,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-#define        D3DXLoadSurfaceFromFile WINELIB_NAME_AW(D3DXLoadSurfaceFromFile)
-
-HRESULT WINAPI D3DXLoadSurfaceFromResourceA(   LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               HMODULE srcmodule,
-                                               LPCSTR resource,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadSurfaceFromResourceW(   LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               HMODULE srcmodule,
-                                               LPCWSTR resource,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-#define        D3DXLoadSurfaceFromResource WINELIB_NAME_AW(D3DXLoadSurfaceFromResource)
-
-HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT*destrect,
-                                               LPCVOID srcdata,
-                                               UINT srcdatasize,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey,
-                                               D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadSurfaceFromSurface(     LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               LPDIRECT3DSURFACE9 srcsurface,
-                                               CONST PALETTEENTRY *srcpalette,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey);
-
-HRESULT WINAPI D3DXLoadSurfaceFromMemory(      LPDIRECT3DSURFACE9 destsurface,
-                                               CONST PALETTEENTRY *destpalette,
-                                               CONST RECT *destrect,
-                                               LPCVOID srcmemory,
-                                               D3DFORMAT srcformat,
-                                               UINT srcpitch,
-                                               CONST PALETTEENTRY *srcpalette,
-                                               CONST RECT *srcrect,
-                                               DWORD filter,
-                                               D3DCOLOR colorkey);
-
-HRESULT WINAPI D3DXSaveSurfaceToFileA(         LPCSTR destfile,
-                                               D3DXIMAGE_FILEFORMAT destformat,
-                                               LPDIRECT3DSURFACE9 srcsurface,
-                                               CONST PALETTEENTRY *srcpalette,
-                                               CONST RECT *srcrect);
-
-HRESULT WINAPI D3DXSaveSurfaceToFileW(         LPCWSTR destfile,
-                                               D3DXIMAGE_FILEFORMAT destformat,
-                                               LPDIRECT3DSURFACE9 srcsurface,
-                                               CONST PALETTEENTRY *srcpalette,
-                                               CONST RECT *srcrect);
-#define        D3DXSaveSurfaceToFile WINELIB_NAME_AW(D3DXSaveSurfaceToFile)
-
-
-/* Volume Loading/Saving */
-HRESULT WINAPI D3DXLoadVolumeFromFileA(       LPDIRECT3DVOLUME9 destvolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPCSTR srcfile,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadVolumeFromFileW(       LPDIRECT3DVOLUME9 destVolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPCWSTR srcfile,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-#define        D3DXLoadVolumeFromFile WINELIB_NAME_AW(D3DXLoadVolumeFromFile)
-
-HRESULT WINAPI D3DXLoadVolumeFromResourceA(   LPDIRECT3DVOLUME9 destVolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              HMODULE srcmodule,
-                                              LPCSTR resource,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadVolumeFromResourceW(   LPDIRECT3DVOLUME9 destVolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              HMODULE srcmodule,
-                                              LPCWSTR resource,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-#define        D3DXLoadVolumeFromResource WINELIB_NAME_AW(D3DXLoadVolumeFromResource)
-
-HRESULT WINAPI D3DXLoadVolumeFromFileInMemory(LPDIRECT3DVOLUME9 destvolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPCVOID srcdata,
-                                              UINT srcdatasize,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey,
-                                              D3DXIMAGE_INFO *srcinfo);
-
-HRESULT WINAPI D3DXLoadVolumeFromVolume(      LPDIRECT3DVOLUME9 destvolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPDIRECT3DVOLUME9 srcvolume,
-                                              CONST PALETTEENTRY *srcpalette,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey);
-
-HRESULT WINAPI D3DXLoadVolumeFromMemory(      LPDIRECT3DVOLUME9 destvolume,
-                                              CONST PALETTEENTRY *destpalette,
-                                              CONST D3DBOX *destbox,
-                                              LPCVOID srcmemory,
-                                              D3DFORMAT srcformat,
-                                              UINT srcrowpitch,
-                                              UINT srcslicepitch,
-                                              CONST PALETTEENTRY *srcpalette,
-                                              CONST D3DBOX *srcbox,
-                                              DWORD filter,
-                                              D3DCOLOR colorkey);
-
-HRESULT WINAPI D3DXSaveVolumeToFileA(         LPCSTR destfile,
-                                              D3DXIMAGE_FILEFORMAT destformat,
-                                              LPDIRECT3DVOLUME9 srcvolume,
-                                              CONST PALETTEENTRY *srcpalette,
-                                              CONST D3DBOX *srcbox);
-
-HRESULT WINAPI D3DXSaveVolumeToFileW(         LPCWSTR destfile,
-                                              D3DXIMAGE_FILEFORMAT destformat,
-                                              LPDIRECT3DVOLUME9 srcvolume,
-                                              CONST PALETTEENTRY *srcpalette,
-                                              CONST D3DBOX *srcbox);
-#define        D3DXSaveVolumeToFile WINELIB_NAME_AW(D3DXSaveVolumeToFile)
-
-
-/* Texture, cube texture and volume texture creation */
-HRESULT WINAPI D3DXCheckTextureRequirements(      LPDIRECT3DDEVICE9 device,
-                                                  UINT *width,
-                                                  UINT *height,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool);
-HRESULT WINAPI D3DXCheckCubeTextureRequirements(  LPDIRECT3DDEVICE9 device,
-                                                  UINT *size,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool);
-
-HRESULT WINAPI D3DXCheckVolumeTextureRequirements(LPDIRECT3DDEVICE9 device,
-                                                  UINT *width,
-                                                  UINT *height,
-                                                  UINT *depth,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool);
-
-HRESULT WINAPI D3DXCreateTexture(      LPDIRECT3DDEVICE9 device,
-                                       UINT width,
-                                       UINT height,
-                                       UINT miplevels,
-                                       DWORD usage,
-                                       D3DFORMAT format,
-                                       D3DPOOL pool,
-                                       LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateCubeTexture(  LPDIRECT3DDEVICE9 device,
-                                       UINT size,
-                                       UINT miplevels,
-                                       DWORD usage,
-                                       D3DFORMAT format,
-                                       D3DPOOL pool,
-                                       LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateVolumeTexture(LPDIRECT3DDEVICE9 device,
-                                       UINT width,
-                                       UINT height,
-                                       UINT depth,
-                                       UINT miplevels,
-                                       DWORD usage,
-                                       D3DFORMAT format,
-                                       D3DPOOL pool,
-                                       LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateTextureFromFileA(      LPDIRECT3DDEVICE9 device,
-                                                LPCSTR srcfile,
-                                                LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateTextureFromFileW(      LPDIRECT3DDEVICE9 device,
-                                                LPCWSTR srcfile,
-                                                LPDIRECT3DTEXTURE9 *texture);
-#define        D3DXCreateTextureFromFile WINELIB_NAME_AW(D3DXCreateTextureFromFile)
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileA(  LPDIRECT3DDEVICE9 device,
-                                                LPCSTR srcfile,
-                                                LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileW(  LPDIRECT3DDEVICE9 device,
-                                                LPCWSTR srcfile,
-                                                LPDIRECT3DCUBETEXTURE9 *cube);
-#define        D3DXCreateCubeTextureFromFile WINELIB_NAME_AW(D3DXCreateCubeTextureFromFile)
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileA(LPDIRECT3DDEVICE9 device,
-                                                LPCSTR srcfile,
-                                                LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileW(LPDIRECT3DDEVICE9 device,
-                                                LPCWSTR srcfile,
-                                                LPDIRECT3DVOLUMETEXTURE9 *volume);
-#define        D3DXCreateVolumeTextureFromFile WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFile)
-
-HRESULT WINAPI D3DXCreateTextureFromResourceA(      LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCSTR resource,
-                                                    LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateTextureFromResourceW(      LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCWSTR resource,
-                                                    LPDIRECT3DTEXTURE9 *texture);
-#define        D3DXCreateTextureFromResource WINELIB_NAME_AW(D3DXCreateTextureFromResource)
-
-HRESULT WINAPI D3DXCreateCubeTextureFromResourceA(  LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCSTR resource,
-                                                    LPDIRECT3DCUBETEXTURE9 *cube);
-HRESULT WINAPI D3DXCreateCubeTextureFromResourceW(  LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCWSTR resource,
-                                                    LPDIRECT3DCUBETEXTURE9 *cube);
-#define        D3DXCreateCubeTextureFromResource WINELIB_NAME_AW(D3DXCreateCubeTextureFromResource)
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromResourceA(LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCSTR resource,
-                                                    LPDIRECT3DVOLUMETEXTURE9 *volume);
-HRESULT WINAPI D3DXCreateVolumeTextureFromResourceW(LPDIRECT3DDEVICE9 device,
-                                                    HMODULE srcmodule,
-                                                    LPCWSTR resource,
-                                                    LPDIRECT3DVOLUMETEXTURE9 *volume);
-#define        D3DXCreateVolumeTextureFromResource WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResource)
-
-HRESULT WINAPI D3DXCreateTextureFromFileExA(      LPDIRECT3DDEVICE9 device,
-                                                  LPCSTR srcfile,
-                                                  UINT width,
-                                                  UINT height,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateTextureFromFileExW(      LPDIRECT3DDEVICE9 device,
-                                                  LPCWSTR srcfile,
-                                                  UINT width,
-                                                  UINT height,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DTEXTURE9 *texture);
-#define        D3DXCreateTextureFromFileEx WINELIB_NAME_AW(D3DXCreateTextureFromFileEx)
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileExA(  LPDIRECT3DDEVICE9 device,
-                                                  LPCSTR srcfile,
-                                                  UINT size,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileExW(  LPDIRECT3DDEVICE9 device,
-                                                  LPCWSTR srcfile,
-                                                  UINT size,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DCUBETEXTURE9 *cube);
-#define        D3DXCreateCubeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromFileEx)
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileExA(LPDIRECT3DDEVICE9 device,
-                                                  LPCSTR srcfile,
-                                                  UINT width,
-                                                  UINT height,
-                                                  UINT depth,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileExW(LPDIRECT3DDEVICE9 device,
-                                                  LPCWSTR srcfile,
-                                                  UINT width,
-                                                  UINT height,
-                                                  UINT depth,
-                                                  UINT miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT format,
-                                                  D3DPOOL pool,
-                                                  DWORD filter,
-                                                  DWORD mipfilter,
-                                                  D3DCOLOR colorkey,
-                                                  D3DXIMAGE_INFO *srcinfo,
-                                                  PALETTEENTRY *palette,
-                                                  LPDIRECT3DVOLUMETEXTURE9 *volume);
-#define        D3DXCreateVolumeTextureFromFileEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromFileEx)
-
-HRESULT WINAPI D3DXCreateTextureFromResourceExA(      LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCSTR resource,
-                                                      UINT width,
-                                                      UINT height,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateTextureFromResourceExW(      LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCWSTR resource,
-                                                      UINT width,
-                                                      UINT height,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DTEXTURE9 *texture);
-#define        D3DXCreateTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateTextureFromResourceEx)
-
-HRESULT WINAPI D3DXCreateCubeTextureFromResourceExA(  LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCSTR resource,
-                                                      UINT size,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromResourceExW(  LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCWSTR resource,
-                                                      UINT size,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DCUBETEXTURE9 *cube);
-#define        D3DXCreateCubeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateCubeTextureFromResourceEx)
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExA(LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCSTR resource,
-                                                      UINT width,
-                                                      UINT height,
-                                                      UINT depth,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromResourceExW(LPDIRECT3DDEVICE9 device,
-                                                      HMODULE srcmodule,
-                                                      LPCWSTR resource,
-                                                      UINT width,
-                                                      UINT height,
-                                                      UINT depth,
-                                                      UINT miplevels,
-                                                      DWORD usage,
-                                                      D3DFORMAT format,
-                                                      D3DPOOL pool,
-                                                      DWORD filter,
-                                                      DWORD mipfilter,
-                                                      D3DCOLOR colorkey,
-                                                      D3DXIMAGE_INFO *srcinfo,
-                                                      PALETTEENTRY *palette,
-                                                      LPDIRECT3DVOLUMETEXTURE9 *volume);
-#define        D3DXCreateVolumeTextureFromResourceEx WINELIB_NAME_AW(D3DXCreateVolumeTextureFromResourceEx)
-
-HRESULT WINAPI D3DXCreateTextureFromFileInMemory(      LPDIRECT3DDEVICE9 device,
-                                                       LPCVOID srcdata,
-                                                       UINT srcdatasize,
-                                                       LPDIRECT3DTEXTURE9* texture);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemory(  LPDIRECT3DDEVICE9 device,
-                                                       LPCVOID srcdata,
-                                                       UINT srcdatasize,
-                                                       LPDIRECT3DCUBETEXTURE9* cube);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemory(LPDIRECT3DDEVICE9 device,
-                                                       LPCVOID srcdata,
-                                                       UINT srcdatasize,
-                                                       LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXCreateTextureFromFileInMemoryEx(      LPDIRECT3DDEVICE9 device,
-                                                         LPCVOID srcdata,
-                                                         UINT srcdatasize,
-                                                         UINT width,
-                                                         UINT height,
-                                                         UINT miplevels,
-                                                         DWORD usage,
-                                                         D3DFORMAT format,
-                                                         D3DPOOL pool,
-                                                         DWORD filter,
-                                                         DWORD mipfilter,
-                                                         D3DCOLOR colorkey,
-                                                         D3DXIMAGE_INFO *srcinfo,
-                                                         PALETTEENTRY *palette,
-                                                         LPDIRECT3DTEXTURE9 *texture);
-
-HRESULT WINAPI D3DXCreateCubeTextureFromFileInMemoryEx(  LPDIRECT3DDEVICE9 device,
-                                                         LPCVOID srcdata,
-                                                         UINT srcdatasize,
-                                                         UINT size,
-                                                         UINT miplevels,
-                                                         DWORD usage,
-                                                         D3DFORMAT format,
-                                                         D3DPOOL pool,
-                                                         DWORD filter,
-                                                         DWORD mipfilter,
-                                                         D3DCOLOR colorkey,
-                                                         D3DXIMAGE_INFO *srcinfo,
-                                                         PALETTEENTRY *palette,
-                                                         LPDIRECT3DCUBETEXTURE9 *cube);
-
-HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemoryEx(LPDIRECT3DDEVICE9 device,
-                                                         LPCVOID srcdata,
-                                                         UINT srcdatasize,
-                                                         UINT width,
-                                                         UINT height,
-                                                         UINT depth,
-                                                         UINT miplevels,
-                                                         DWORD usage,
-                                                         D3DFORMAT format,
-                                                         D3DPOOL pool,
-                                                         DWORD filter,
-                                                         DWORD mipfilter,
-                                                         D3DCOLOR colorkey,
-                                                         D3DXIMAGE_INFO *srcinfo,
-                                                         PALETTEENTRY *palette,
-                                                         LPDIRECT3DVOLUMETEXTURE9 *volume);
-
-HRESULT WINAPI D3DXSaveTextureToFileA(LPCSTR destfile,
-                                      D3DXIMAGE_FILEFORMAT destformat,
-                                      LPDIRECT3DBASETEXTURE9 srctexture,
-                                      CONST PALETTEENTRY *srcpalette);
-HRESULT WINAPI D3DXSaveTextureToFileW(LPCWSTR destfile,
-                                      D3DXIMAGE_FILEFORMAT destformat,
-                                      LPDIRECT3DBASETEXTURE9 srctexture,
-                                      CONST PALETTEENTRY *srcpalette);
-#define        D3DXSaveTextureToFile WINELIB_NAME_AW(D3DXSaveTextureToFile)
-
-
-/* Other functions */
-HRESULT WINAPI D3DXFilterTexture(      LPDIRECT3DBASETEXTURE9 texture,
-                                       CONST PALETTEENTRY *palette,
-                                       UINT srclevel,
-                                       DWORD filter);
-#define D3DXFilterCubeTexture D3DXFilterTexture
-#define D3DXFilterVolumeTexture D3DXFilterTexture
-
-HRESULT WINAPI D3DXFillTexture(        LPDIRECT3DTEXTURE9 texture,
-                                       LPD3DXFILL2D function,
-                                       LPVOID data);
-
-HRESULT WINAPI D3DXFillCubeTexture(    LPDIRECT3DCUBETEXTURE9 cube,
-                                       LPD3DXFILL3D function,
-                                       LPVOID data);
-
-HRESULT WINAPI D3DXFillVolumeTexture(  LPDIRECT3DVOLUMETEXTURE9 volume,
-                                       LPD3DXFILL3D function,
-                                       LPVOID data);
-
-HRESULT WINAPI D3DXFillTextureTX(      LPDIRECT3DTEXTURE9 texture,
-                                       CONST DWORD *function,
-                                       CONST D3DXVECTOR4 *constants,
-                                       UINT numconstants);
-
-HRESULT WINAPI D3DXFillCubeTextureTX(  LPDIRECT3DCUBETEXTURE9 cube,
-                                       CONST DWORD *function,
-                                       CONST D3DXVECTOR4 *constants,
-                                       UINT numconstants);
-
-HRESULT WINAPI D3DXFillVolumeTextureTX(LPDIRECT3DVOLUMETEXTURE9 volume,
-                                       CONST DWORD *function,
-                                       CONST D3DXVECTOR4 *constants,
-                                       UINT numconstants);
-
-HRESULT WINAPI D3DXComputeNormalMap(   LPDIRECT3DTEXTURE9 texture,
-                                       LPDIRECT3DTEXTURE9 srctexture,
-                                       CONST PALETTEENTRY *srcpalette,
-                                       DWORD flags,
-                                       DWORD channel,
-                                       FLOAT amplitude);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __WINE_D3DX9TEX_H */
diff --git a/misc/builddeps/win64/dx/include/ddraw.h b/misc/builddeps/win64/dx/include/ddraw.h
deleted file mode 100644 (file)
index feaec69..0000000
+++ /dev/null
@@ -1,4844 +0,0 @@
-/*==========================================================================;
- *
- *  Copyright (C) 1994-1997 Microsoft Corporation.  All Rights Reserved.
- *
- *  File:      ddraw.h
- *  Content:   DirectDraw include file
- *
- ***************************************************************************/
-
-#ifndef __DDRAW_INCLUDED__
-#define __DDRAW_INCLUDED__
-
-/*
- * If you wish an application built against the newest version of DirectDraw
- * to run against an older DirectDraw run time then define DIRECTDRAW_VERSION
- * to be the earlies version of DirectDraw you wish to run against. For,
- * example if you wish an application to run against a DX 3 runtime define
- * DIRECTDRAW_VERSION to be 0x0300.
- */
-#ifndef   DIRECTDRAW_VERSION
-#define   DIRECTDRAW_VERSION 0x0600
-#endif /* DIRECTDRAW_VERSION */
-
-#if defined( _WIN32 )  && !defined( _NO_COM )
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#else
-#define IUnknown           void
-#if !defined( NT_BUILD_ENVIRONMENT ) && !defined(WINNT)
-       #define CO_E_NOTINITIALIZED 0x800401F0L
-#endif
-#endif
-
-#define _FACDD 0x876
-#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-//
-// For compilers that don't support nameless unions, do a
-//
-// #define NONAMELESSUNION
-//
-// before #include <ddraw.h>
-//
-#ifndef DUMMYUNIONNAMEN
-#if defined(__cplusplus) || !defined(NONAMELESSUNION)
-#define DUMMYUNIONNAMEN(n)
-#else
-#define DUMMYUNIONNAMEN(n)      u##n
-#endif
-#endif
-
-#ifndef MAKEFOURCC
-    #define MAKEFOURCC(ch0, ch1, ch2, ch3)                              \
-                ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |   \
-                ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
-#endif //defined(MAKEFOURCC)
-
-/*
- * FOURCC codes for DX compressed-texture pixel formats
- */
-#define FOURCC_DXT1  (MAKEFOURCC('D','X','T','1'))
-#define FOURCC_DXT2  (MAKEFOURCC('D','X','T','2'))
-#define FOURCC_DXT3  (MAKEFOURCC('D','X','T','3'))
-#define FOURCC_DXT4  (MAKEFOURCC('D','X','T','4'))
-#define FOURCC_DXT5  (MAKEFOURCC('D','X','T','5'))
-
-/*
- * GUIDS used by DirectDraw objects
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-
-DEFINE_GUID( CLSID_DirectDraw,                 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
-DEFINE_GUID( CLSID_DirectDrawClipper,           0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
-DEFINE_GUID( IID_IDirectDraw,                  0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDraw2,                  0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
-DEFINE_GUID( IID_IDirectDraw4,                  0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
-DEFINE_GUID( IID_IDirectDrawSurface,           0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDrawSurface2,          0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
-DEFINE_GUID( IID_IDirectDrawSurface3,           0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
-DEFINE_GUID( IID_IDirectDrawSurface4,           0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
-
-DEFINE_GUID( IID_IDirectDrawPalette,           0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDrawClipper,           0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
-DEFINE_GUID( IID_IDirectDrawColorControl,      0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
-DEFINE_GUID( IID_IDirectDrawGammaControl,       0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
-
-#endif
-
-/*============================================================================
- *
- * DirectDraw Structures
- *
- * Various structures used to invoke DirectDraw.
- *
- *==========================================================================*/
-
-struct IDirectDraw;
-struct IDirectDrawSurface;
-struct IDirectDrawPalette;
-struct IDirectDrawClipper;
-
-typedef struct IDirectDraw              FAR *LPDIRECTDRAW;
-typedef struct IDirectDraw2             FAR *LPDIRECTDRAW2;
-typedef struct IDirectDraw4             FAR *LPDIRECTDRAW4;
-typedef struct IDirectDrawSurface       FAR *LPDIRECTDRAWSURFACE;
-typedef struct IDirectDrawSurface2      FAR *LPDIRECTDRAWSURFACE2;
-typedef struct IDirectDrawSurface3      FAR *LPDIRECTDRAWSURFACE3;
-typedef struct IDirectDrawSurface4      FAR *LPDIRECTDRAWSURFACE4;
-
-typedef struct IDirectDrawPalette              FAR *LPDIRECTDRAWPALETTE;
-typedef struct IDirectDrawClipper              FAR *LPDIRECTDRAWCLIPPER;
-typedef struct IDirectDrawColorControl         FAR *LPDIRECTDRAWCOLORCONTROL;
-typedef struct IDirectDrawGammaControl          FAR *LPDIRECTDRAWGAMMACONTROL;
-
-typedef struct _DDFXROP                        FAR *LPDDFXROP;
-typedef struct _DDSURFACEDESC          FAR *LPDDSURFACEDESC;
-typedef struct _DDSURFACEDESC2         FAR *LPDDSURFACEDESC2;
-typedef struct _DDCOLORCONTROL                 FAR *LPDDCOLORCONTROL;
-
-/*
- * API's
- */
-#if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM )
-//#if defined( _WIN32 ) && !defined( _NO_ENUM )
-    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
-    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
-    extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
-    extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
-    /*
-     * Protect against old SDKs
-     */
-    #ifndef SM_CMONITORS
-        #define HMONITOR    HANDLE
-    #endif
-    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
-    typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
-    extern HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
-    extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
-    typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
-    typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
-
-    #ifdef UNICODE
-       typedef LPDDENUMCALLBACKW           LPDDENUMCALLBACK;
-       #define DirectDrawEnumerate         DirectDrawEnumerateW
-       typedef LPDDENUMCALLBACKEXW         LPDDENUMCALLBACKEX;
-       typedef LPDIRECTDRAWENUMERATEEXW        LPDIRECTDRAWENUMERATEEX;
-       #define DirectDrawEnumerateEx       DirectDrawEnumerateExW
-    #else
-       typedef LPDDENUMCALLBACKA           LPDDENUMCALLBACK;
-       #define DirectDrawEnumerate         DirectDrawEnumerateA
-       typedef LPDDENUMCALLBACKEXA         LPDDENUMCALLBACKEX;
-       typedef LPDIRECTDRAWENUMERATEEXA        LPDIRECTDRAWENUMERATEEX;
-        #define DirectDrawEnumerateEx      DirectDrawEnumerateExA
-    #endif
-    extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
-    extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
-#endif
-/*
- * Flags for DirectDrawEnumerateEx
- * DirectDrawEnumerateEx supercedes DirectDrawEnumerate. You must use GetProcAddress to
- * obtain a function pointer (of type LPDIRECTDRAWENUMERATEEX) to DirectDrawEnumerateEx.
- * By default, only the primary display device is enumerated.
- * DirectDrawEnumerate is equivalent to DirectDrawEnumerate(,,DDENUM_NONDISPLAYDEVICES)
- */
-
-/*
- * This flag causes enumeration of any GDI display devices which are part of
- * the Windows Desktop
- */
-#define DDENUM_ATTACHEDSECONDARYDEVICES     0x00000001L
-
-/*
- * This flag causes enumeration of any GDI display devices which are not
- * part of the Windows Desktop
- */
-#define DDENUM_DETACHEDSECONDARYDEVICES     0x00000002L
-
-/*
- * This flag causes enumeration of non-display devices
- */
-#define DDENUM_NONDISPLAYDEVICES            0x00000004L
-
-
-#define REGSTR_KEY_DDHW_DESCRIPTION    "Description"
-#define REGSTR_KEY_DDHW_DRIVERNAME     "DriverName"
-#define REGSTR_PATH_DDHW               "Hardware\\DirectDrawDrivers"
-
-#define DDCREATE_HARDWAREONLY          0x00000001l
-#define DDCREATE_EMULATIONONLY         0x00000002l
-
-#if defined(WINNT) || !defined(WIN32)
-typedef long HRESULT;
-#endif
-
-//#ifndef WINNT
-typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
-typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
-typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
-typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
-//#endif
-
-/*
- * Generic pixel format with 8-bit RGB and alpha components
- */
-typedef struct _DDRGBA
-{
-    BYTE red;
-    BYTE green;
-    BYTE blue;
-    BYTE alpha;
-} DDRGBA;
-
-typedef DDRGBA FAR *LPDDRGBA;
-
-/*
- * DDCOLORKEY
- */
-typedef struct _DDCOLORKEY
-{
-    DWORD      dwColorSpaceLowValue;   // low boundary of color space that is to
-                                       // be treated as Color Key, inclusive
-    DWORD      dwColorSpaceHighValue;  // high boundary of color space that is
-                                       // to be treated as Color Key, inclusive
-} DDCOLORKEY;
-
-typedef DDCOLORKEY FAR* LPDDCOLORKEY;
-
-/*
- * DDBLTFX
- * Used to pass override information to the DIRECTDRAWSURFACE callback Blt.
- */
-typedef struct _DDBLTFX
-{
-    DWORD      dwSize;                         // size of structure
-    DWORD      dwDDFX;                         // FX operations
-    DWORD      dwROP;                          // Win32 raster operations
-    DWORD      dwDDROP;                        // Raster operations new for DirectDraw
-    DWORD      dwRotationAngle;                // Rotation angle for blt
-    DWORD      dwZBufferOpCode;                // ZBuffer compares
-    DWORD      dwZBufferLow;                   // Low limit of Z buffer
-    DWORD      dwZBufferHigh;                  // High limit of Z buffer
-    DWORD      dwZBufferBaseDest;              // Destination base value
-    DWORD      dwZDestConstBitDepth;           // Bit depth used to specify Z constant for destination
-    union
-    {
-       DWORD   dwZDestConst;                   // Constant to use as Z buffer for dest
-       LPDIRECTDRAWSURFACE lpDDSZBufferDest;   // Surface to use as Z buffer for dest
-    } DUMMYUNIONNAMEN(1);
-    DWORD      dwZSrcConstBitDepth;            // Bit depth used to specify Z constant for source
-    union
-    {
-       DWORD   dwZSrcConst;                    // Constant to use as Z buffer for src
-       LPDIRECTDRAWSURFACE lpDDSZBufferSrc;    // Surface to use as Z buffer for src
-    } DUMMYUNIONNAMEN(2);
-    DWORD      dwAlphaEdgeBlendBitDepth;       // Bit depth used to specify constant for alpha edge blend
-    DWORD      dwAlphaEdgeBlend;               // Alpha for edge blending
-    DWORD      dwReserved;
-    DWORD      dwAlphaDestConstBitDepth;       // Bit depth used to specify alpha constant for destination
-    union
-    {
-       DWORD   dwAlphaDestConst;               // Constant to use as Alpha Channel
-       LPDIRECTDRAWSURFACE lpDDSAlphaDest;     // Surface to use as Alpha Channel
-    } DUMMYUNIONNAMEN(3);
-    DWORD      dwAlphaSrcConstBitDepth;        // Bit depth used to specify alpha constant for source
-    union
-    {
-       DWORD   dwAlphaSrcConst;                // Constant to use as Alpha Channel
-       LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      // Surface to use as Alpha Channel
-    } DUMMYUNIONNAMEN(4);
-    union
-    {
-       DWORD   dwFillColor;                    // color in RGB or Palettized
-       DWORD   dwFillDepth;                    // depth value for z-buffer
-       DWORD   dwFillPixel;                    // pixel value for RGBA or RGBZ
-       LPDIRECTDRAWSURFACE lpDDSPattern;       // Surface to use as pattern
-    } DUMMYUNIONNAMEN(5);
-    DDCOLORKEY ddckDestColorkey;               // DestColorkey override
-    DDCOLORKEY ddckSrcColorkey;                // SrcColorkey override
-} DDBLTFX;
-
-typedef DDBLTFX FAR* LPDDBLTFX;
-
-
-/*
- * DDSCAPS
- */
-typedef struct _DDSCAPS
-{
-    DWORD      dwCaps;         // capabilities of surface wanted
-} DDSCAPS;
-
-typedef DDSCAPS FAR* LPDDSCAPS;
-
-
-/*
- * DDOSCAPS
- */
-typedef struct _DDOSCAPS
-{
-    DWORD      dwCaps;         // capabilities of surface wanted
-} DDOSCAPS;
-
-typedef DDOSCAPS FAR* LPDDOSCAPS;
-
-/*
- * This structure is used internally by DirectDraw.
- */
-typedef struct _DDSCAPSEX
-{
-    DWORD       dwCaps2;
-    DWORD       dwCaps3;
-    DWORD       dwCaps4;
-} DDSCAPSEX, FAR * LPDDSCAPSEX;
-
-/*
- * DDSCAPS2
- */
-typedef struct _DDSCAPS2
-{
-    DWORD      dwCaps;         // capabilities of surface wanted
-    DWORD       dwCaps2;
-    DWORD       dwCaps3;
-    DWORD       dwCaps4;
-} DDSCAPS2;
-
-typedef DDSCAPS2 FAR* LPDDSCAPS2;
-
-/*
- * DDCAPS
- */
-#define DD_ROP_SPACE           (256/32)        // space required to store ROP array
-
-/*
- * This structure is the DDCAPS structure as it was in version 2 and 3 of Direct X.
- * It is present for back compatability.
- */
-typedef struct _DDCAPS_DX3
-{
-    DWORD      dwSize;                 // size of the DDDRIVERCAPS structure
-    DWORD      dwCaps;                 // driver specific capabilities
-    DWORD      dwCaps2;                // more driver specific capabilites
-    DWORD      dwCKeyCaps;             // color key capabilities of the surface
-    DWORD      dwFXCaps;               // driver specific stretching and effects capabilites
-    DWORD      dwFXAlphaCaps;          // alpha driver specific capabilities
-    DWORD      dwPalCaps;              // palette capabilities
-    DWORD      dwSVCaps;               // stereo vision capabilities
-    DWORD      dwAlphaBltConstBitDepths;       // DDBD_2,4,8
-    DWORD      dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
-    DWORD      dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
-    DWORD      dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
-    DWORD      dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
-    DWORD      dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
-    DWORD      dwZBufferBitDepths;             // DDBD_8,16,24,32
-    DWORD      dwVidMemTotal;          // total amount of video memory
-    DWORD      dwVidMemFree;           // amount of free video memory
-    DWORD      dwMaxVisibleOverlays;   // maximum number of visible overlays
-    DWORD      dwCurrVisibleOverlays;  // current number of visible overlays
-    DWORD      dwNumFourCCCodes;       // number of four cc codes
-    DWORD      dwAlignBoundarySrc;     // source rectangle alignment
-    DWORD      dwAlignSizeSrc;         // source rectangle byte size
-    DWORD      dwAlignBoundaryDest;    // dest rectangle alignment
-    DWORD      dwAlignSizeDest;        // dest rectangle byte size
-    DWORD      dwAlignStrideAlign;     // stride alignment
-    DWORD      dwRops[DD_ROP_SPACE];   // ROPS supported
-    DDSCAPS    ddsCaps;                // DDSCAPS structure has all the general capabilities
-    DWORD      dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-    DWORD      dwReserved1;            // reserved
-    DWORD      dwReserved2;            // reserved
-    DWORD      dwReserved3;            // reserved
-    DWORD      dwSVBCaps;              // driver specific capabilities for System->Vmem blts
-    DWORD      dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
-    DWORD      dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
-    DWORD      dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
-    DWORD      dwVSBCaps;              // driver specific capabilities for Vmem->System blts
-    DWORD      dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
-    DWORD      dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
-    DWORD      dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
-    DWORD      dwSSBCaps;              // driver specific capabilities for System->System blts
-    DWORD      dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
-    DWORD      dwSSBFXCaps;            // driver FX capabilities for System->System blts
-    DWORD      dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
-    DWORD      dwReserved4;            // reserved
-    DWORD      dwReserved5;            // reserved
-    DWORD      dwReserved6;            // reserved
-} DDCAPS_DX3;
-typedef DDCAPS_DX3 FAR* LPDDCAPS_DX3;
-
-/*
- * This structure is the DDCAPS structure as it was in version 5 of Direct X.
- * It is present for back compatability.
- */
-typedef struct _DDCAPS_DX5
-{
-/*  0*/ DWORD  dwSize;                 // size of the DDDRIVERCAPS structure
-/*  4*/ DWORD  dwCaps;                 // driver specific capabilities
-/*  8*/ DWORD  dwCaps2;                // more driver specific capabilites
-/*  c*/ DWORD  dwCKeyCaps;             // color key capabilities of the surface
-/* 10*/ DWORD  dwFXCaps;               // driver specific stretching and effects capabilites
-/* 14*/ DWORD  dwFXAlphaCaps;          // alpha driver specific capabilities
-/* 18*/ DWORD  dwPalCaps;              // palette capabilities
-/* 1c*/ DWORD  dwSVCaps;               // stereo vision capabilities
-/* 20*/ DWORD  dwAlphaBltConstBitDepths;       // DDBD_2,4,8
-/* 24*/ DWORD  dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
-/* 28*/ DWORD  dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
-/* 2c*/ DWORD  dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
-/* 30*/ DWORD  dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
-/* 34*/ DWORD  dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
-/* 38*/ DWORD  dwZBufferBitDepths;             // DDBD_8,16,24,32
-/* 3c*/ DWORD  dwVidMemTotal;          // total amount of video memory
-/* 40*/ DWORD  dwVidMemFree;           // amount of free video memory
-/* 44*/ DWORD  dwMaxVisibleOverlays;   // maximum number of visible overlays
-/* 48*/ DWORD  dwCurrVisibleOverlays;  // current number of visible overlays
-/* 4c*/ DWORD  dwNumFourCCCodes;       // number of four cc codes
-/* 50*/ DWORD  dwAlignBoundarySrc;     // source rectangle alignment
-/* 54*/ DWORD  dwAlignSizeSrc;         // source rectangle byte size
-/* 58*/ DWORD  dwAlignBoundaryDest;    // dest rectangle alignment
-/* 5c*/ DWORD  dwAlignSizeDest;        // dest rectangle byte size
-/* 60*/ DWORD  dwAlignStrideAlign;     // stride alignment
-/* 64*/ DWORD  dwRops[DD_ROP_SPACE];   // ROPS supported
-/* 84*/ DDSCAPS        ddsCaps;                // DDSCAPS structure has all the general capabilities
-/* 88*/ DWORD  dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 8c*/ DWORD  dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 90*/ DWORD  dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 94*/ DWORD  dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 98*/ DWORD  dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 9c*/ DWORD  dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* a0*/ DWORD  dwReserved1;            // reserved
-/* a4*/ DWORD  dwReserved2;            // reserved
-/* a8*/ DWORD  dwReserved3;            // reserved
-/* ac*/ DWORD  dwSVBCaps;              // driver specific capabilities for System->Vmem blts
-/* b0*/ DWORD  dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
-/* b4*/ DWORD  dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
-/* b8*/ DWORD  dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
-/* d8*/ DWORD  dwVSBCaps;              // driver specific capabilities for Vmem->System blts
-/* dc*/ DWORD  dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
-/* e0*/ DWORD  dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
-/* e4*/ DWORD  dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
-/*104*/ DWORD  dwSSBCaps;              // driver specific capabilities for System->System blts
-/*108*/ DWORD  dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
-/*10c*/ DWORD  dwSSBFXCaps;            // driver FX capabilities for System->System blts
-/*110*/ DWORD  dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
-// Members added for DX5:
-/*130*/ DWORD  dwMaxVideoPorts;        // maximum number of usable video ports
-/*134*/ DWORD  dwCurrVideoPorts;       // current number of video ports used
-/*138*/ DWORD  dwSVBCaps2;             // more driver specific capabilities for System->Vmem blts
-/*13c*/ DWORD  dwNLVBCaps;               // driver specific capabilities for non-local->local vidmem blts
-/*140*/ DWORD  dwNLVBCaps2;              // more driver specific capabilities non-local->local vidmem blts
-/*144*/ DWORD  dwNLVBCKeyCaps;           // driver color key capabilities for non-local->local vidmem blts
-/*148*/ DWORD  dwNLVBFXCaps;             // driver FX capabilities for non-local->local blts
-/*14c*/ DWORD  dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
-} DDCAPS_DX5;
-typedef DDCAPS_DX5 FAR* LPDDCAPS_DX5;
-
-typedef struct _DDCAPS_DX6
-{
-/*  0*/ DWORD  dwSize;                 // size of the DDDRIVERCAPS structure
-/*  4*/ DWORD  dwCaps;                 // driver specific capabilities
-/*  8*/ DWORD  dwCaps2;                // more driver specific capabilites
-/*  c*/ DWORD  dwCKeyCaps;             // color key capabilities of the surface
-/* 10*/ DWORD  dwFXCaps;               // driver specific stretching and effects capabilites
-/* 14*/ DWORD  dwFXAlphaCaps;          // alpha caps
-/* 18*/ DWORD  dwPalCaps;              // palette capabilities
-/* 1c*/ DWORD  dwSVCaps;               // stereo vision capabilities
-/* 20*/ DWORD  dwAlphaBltConstBitDepths;       // DDBD_2,4,8
-/* 24*/ DWORD  dwAlphaBltPixelBitDepths;       // DDBD_1,2,4,8
-/* 28*/ DWORD  dwAlphaBltSurfaceBitDepths;     // DDBD_1,2,4,8
-/* 2c*/ DWORD  dwAlphaOverlayConstBitDepths;   // DDBD_2,4,8
-/* 30*/ DWORD  dwAlphaOverlayPixelBitDepths;   // DDBD_1,2,4,8
-/* 34*/ DWORD  dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
-/* 38*/ DWORD  dwZBufferBitDepths;             // DDBD_8,16,24,32
-/* 3c*/ DWORD  dwVidMemTotal;          // total amount of video memory
-/* 40*/ DWORD  dwVidMemFree;           // amount of free video memory
-/* 44*/ DWORD  dwMaxVisibleOverlays;   // maximum number of visible overlays
-/* 48*/ DWORD  dwCurrVisibleOverlays;  // current number of visible overlays
-/* 4c*/ DWORD  dwNumFourCCCodes;       // number of four cc codes
-/* 50*/ DWORD  dwAlignBoundarySrc;     // source rectangle alignment
-/* 54*/ DWORD  dwAlignSizeSrc;         // source rectangle byte size
-/* 58*/ DWORD  dwAlignBoundaryDest;    // dest rectangle alignment
-/* 5c*/ DWORD  dwAlignSizeDest;        // dest rectangle byte size
-/* 60*/ DWORD  dwAlignStrideAlign;     // stride alignment
-/* 64*/ DWORD  dwRops[DD_ROP_SPACE];   // ROPS supported
-/* 84*/ DDSCAPS        ddsOldCaps;             // Was DDSCAPS  ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
-/* 88*/ DWORD  dwMinOverlayStretch;    // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 8c*/ DWORD  dwMaxOverlayStretch;    // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 90*/ DWORD  dwMinLiveVideoStretch;  // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 94*/ DWORD  dwMaxLiveVideoStretch;  // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 98*/ DWORD  dwMinHwCodecStretch;    // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* 9c*/ DWORD  dwMaxHwCodecStretch;    // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
-/* a0*/ DWORD  dwReserved1;            // reserved
-/* a4*/ DWORD  dwReserved2;            // reserved
-/* a8*/ DWORD  dwReserved3;            // reserved
-/* ac*/ DWORD  dwSVBCaps;              // driver specific capabilities for System->Vmem blts
-/* b0*/ DWORD  dwSVBCKeyCaps;          // driver color key capabilities for System->Vmem blts
-/* b4*/ DWORD  dwSVBFXCaps;            // driver FX capabilities for System->Vmem blts
-/* b8*/ DWORD  dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
-/* d8*/ DWORD  dwVSBCaps;              // driver specific capabilities for Vmem->System blts
-/* dc*/ DWORD  dwVSBCKeyCaps;          // driver color key capabilities for Vmem->System blts
-/* e0*/ DWORD  dwVSBFXCaps;            // driver FX capabilities for Vmem->System blts
-/* e4*/ DWORD  dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
-/*104*/ DWORD  dwSSBCaps;              // driver specific capabilities for System->System blts
-/*108*/ DWORD  dwSSBCKeyCaps;          // driver color key capabilities for System->System blts
-/*10c*/ DWORD  dwSSBFXCaps;            // driver FX capabilities for System->System blts
-/*110*/ DWORD  dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
-/*130*/ DWORD  dwMaxVideoPorts;        // maximum number of usable video ports
-/*134*/ DWORD  dwCurrVideoPorts;       // current number of video ports used
-/*138*/ DWORD  dwSVBCaps2;             // more driver specific capabilities for System->Vmem blts
-/*13c*/ DWORD  dwNLVBCaps;               // driver specific capabilities for non-local->local vidmem blts
-/*140*/ DWORD  dwNLVBCaps2;              // more driver specific capabilities non-local->local vidmem blts
-/*144*/ DWORD  dwNLVBCKeyCaps;           // driver color key capabilities for non-local->local vidmem blts
-/*148*/ DWORD  dwNLVBFXCaps;             // driver FX capabilities for non-local->local blts
-/*14c*/ DWORD  dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
-// Members added for DX6 release
-/*16c*/ DDSCAPS2 ddsCaps;               // Surface Caps
-} DDCAPS_DX6;
-typedef DDCAPS_DX6 FAR* LPDDCAPS_DX6;
-
-
-#if DIRECTDRAW_VERSION <= 0x300
-    typedef DDCAPS_DX3 DDCAPS;
-#elif DIRECTDRAW_VERSION <= 0x500
-    typedef DDCAPS_DX5 DDCAPS;
-#else
-    typedef DDCAPS_DX6 DDCAPS;
-#endif
-
-typedef DDCAPS FAR* LPDDCAPS;
-
-
-
-/*
- * DDPIXELFORMAT
- */
-typedef struct _DDPIXELFORMAT
-{
-    DWORD      dwSize;                 // size of structure
-    DWORD      dwFlags;                // pixel format flags
-    DWORD      dwFourCC;               // (FOURCC code)
-    union
-    {
-       DWORD   dwRGBBitCount;          // how many bits per pixel
-       DWORD   dwYUVBitCount;          // how many bits per pixel
-       DWORD   dwZBufferBitDepth;      // how many total bits/pixel in z buffer (including any stencil bits)
-       DWORD   dwAlphaBitDepth;        // how many bits for alpha channels
-       DWORD   dwLuminanceBitCount;    // how many bits per pixel
-        DWORD   dwBumpBitCount;         // how many bits per "buxel", total
-    } DUMMYUNIONNAMEN(1);
-    union
-    {
-       DWORD   dwRBitMask;             // mask for red bit
-       DWORD   dwYBitMask;             // mask for Y bits
-       DWORD   dwStencilBitDepth;      // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits)
-       DWORD   dwLuminanceBitMask;     // mask for luminance bits
-        DWORD   dwBumpDuBitMask;        // mask for bump map U delta bits
-    } DUMMYUNIONNAMEN(2);
-    union
-    {
-       DWORD   dwGBitMask;             // mask for green bits
-       DWORD   dwUBitMask;             // mask for U bits
-       DWORD   dwZBitMask;             // mask for Z bits
-        DWORD   dwBumpDvBitMask;        // mask for bump map V delta bits
-    } DUMMYUNIONNAMEN(3);
-    union
-    {
-       DWORD   dwBBitMask;             // mask for blue bits
-       DWORD   dwVBitMask;             // mask for V bits
-       DWORD   dwStencilBitMask;       // mask for stencil bits
-        DWORD   dwBumpLuminanceBitMask; // mask for luminance in bump map
-    } DUMMYUNIONNAMEN(4);
-    union
-    {
-       DWORD   dwRGBAlphaBitMask;      // mask for alpha channel
-       DWORD   dwYUVAlphaBitMask;      // mask for alpha channel
-        DWORD   dwLuminanceAlphaBitMask;// mask for alpha channel
-       DWORD   dwRGBZBitMask;          // mask for Z channel
-       DWORD   dwYUVZBitMask;          // mask for Z channel
-    } DUMMYUNIONNAMEN(5);
-} DDPIXELFORMAT;
-
-typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT;
-
-/*
- * DDOVERLAYFX
- */
-typedef struct _DDOVERLAYFX
-{
-    DWORD      dwSize;                         // size of structure
-    DWORD      dwAlphaEdgeBlendBitDepth;       // Bit depth used to specify constant for alpha edge blend
-    DWORD      dwAlphaEdgeBlend;               // Constant to use as alpha for edge blend
-    DWORD      dwReserved;
-    DWORD      dwAlphaDestConstBitDepth;       // Bit depth used to specify alpha constant for destination
-    union
-    {
-       DWORD   dwAlphaDestConst;               // Constant to use as alpha channel for dest
-       LPDIRECTDRAWSURFACE lpDDSAlphaDest;     // Surface to use as alpha channel for dest
-    } DUMMYUNIONNAMEN(1);
-    DWORD      dwAlphaSrcConstBitDepth;        // Bit depth used to specify alpha constant for source
-    union
-    {
-       DWORD   dwAlphaSrcConst;                // Constant to use as alpha channel for src
-       LPDIRECTDRAWSURFACE lpDDSAlphaSrc;      // Surface to use as alpha channel for src
-    } DUMMYUNIONNAMEN(2);
-    DDCOLORKEY dckDestColorkey;                // DestColorkey override
-    DDCOLORKEY dckSrcColorkey;                 // DestColorkey override
-    DWORD       dwDDFX;                         // Overlay FX
-    DWORD      dwFlags;                        // flags
-} DDOVERLAYFX;
-
-typedef DDOVERLAYFX FAR *LPDDOVERLAYFX;
-
-
-/*
- * DDBLTBATCH: BltBatch entry structure
- */
-typedef struct _DDBLTBATCH
-{
-    LPRECT             lprDest;
-    LPDIRECTDRAWSURFACE        lpDDSSrc;
-    LPRECT             lprSrc;
-    DWORD              dwFlags;
-    LPDDBLTFX          lpDDBltFx;
-} DDBLTBATCH;
-
-typedef DDBLTBATCH FAR * LPDDBLTBATCH;
-
-
-/*
- * DDGAMMARAMP
- */
-typedef struct _DDGAMMARAMP
-{
-    WORD                red[256];
-    WORD                green[256];
-    WORD                blue[256];
-} DDGAMMARAMP;
-typedef DDGAMMARAMP FAR * LPDDGAMMARAMP;
-
-/*
- *  This is the structure within which DirectDraw returns data about the current graphics driver and chipset
- */
-
-#define MAX_DDDEVICEID_STRING          512
-
-typedef struct tagDDDEVICEIDENTIFIER
-{
-    /*
-     * These elements are for presentation to the user only. They should not be used to identify particular
-     * drivers, since this is unreliable and many different strings may be associated with the same
-     * device, and the same driver from different vendors.
-     */
-    char    szDriver[MAX_DDDEVICEID_STRING];
-    char    szDescription[MAX_DDDEVICEID_STRING];
-
-    /*
-     * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
-     * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
-     * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
-     *
-     * This version has the form:
-     *  wProduct = HIWORD(liDriverVersion.HighPart)
-     *  wVersion = LOWORD(liDriverVersion.HighPart)
-     *  wSubVersion = HIWORD(liDriverVersion.LowPart)
-     *  wBuild = LOWORD(liDriverVersion.LowPart)
-     */
-#ifdef _WIN32
-    LARGE_INTEGER liDriverVersion;      /* Defined for applications and other 32 bit components */
-#else
-    DWORD   dwDriverVersionLowPart;     /* Defined for 16 bit driver components */
-    DWORD   dwDriverVersionHighPart;
-#endif
-
-
-    /*
-     * These elements can be used to identify particular chipsets. Use with extreme caution. 
-     *   dwVendorId     Identifies the manufacturer. May be zero if unknown.
-     *   dwDeviceId     Identifies the type of chipset. May be zero if unknown.
-     *   dwSubSysId     Identifies the subsystem, typically this means the particular board. May be zero if unknown.
-     *   dwRevision     Identifies the revision level of the chipset. May be zero if unknown.
-     */
-    DWORD   dwVendorId;
-    DWORD   dwDeviceId;
-    DWORD   dwSubSysId;
-    DWORD   dwRevision;
-
-    /*
-     * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
-     * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
-     * reprofile the graphics subsystem.
-     * This element can also be used to identify particular problematic drivers.
-     */
-    GUID    guidDeviceIdentifier;
-} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
-
-/*
- * Flags for the IDirectDraw4::GetDeviceIdentifier method
- */
-
-/*
- * This flag causes GetDeviceIdentifier to return information about the host (typically 2D) adapter in a system equipped
- * with a stacked secondary 3D adapter. Such an adapter appears to the application as if it were part of the
- * host adapter, but is typically physcially located on a separate card. The stacked secondary's information is
- * returned when GetDeviceIdentifier's dwFlags field is zero, since this most accurately reflects the qualities
- * of the DirectDraw object involved.
- */
-#define DDGDI_GETHOSTIDENTIFIER         0x00000001L
-
-
-
-/*
- * callbacks
- */
-typedef DWORD  (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
-#ifdef STREAMING
-typedef DWORD  (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD);
-#endif
-
-
-/*
- * INTERACES FOLLOW:
- *     IDirectDraw
- *     IDirectDrawClipper
- *     IDirectDrawPalette
- *     IDirectDrawSurface
- */
-
-/*
- * IDirectDraw
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDraw
-DECLARE_INTERFACE_( IDirectDraw, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDraw methods ***/
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
-    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
-    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
-    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
-    STDMETHOD(FlipToGDISurface)(THIS) PURE;
-    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
-    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
-    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
-    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
-    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
-    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
-    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
-    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDraw_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDraw_AddRef(p)                       (p)->lpVtbl->AddRef(p)
-#define IDirectDraw_Release(p)                      (p)->lpVtbl->Release(p)
-#define IDirectDraw_Compact(p)                      (p)->lpVtbl->Compact(p)
-#define IDirectDraw_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
-#define IDirectDraw_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
-#define IDirectDraw_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
-#define IDirectDraw_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
-#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
-#define IDirectDraw_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
-#define IDirectDraw_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
-#define IDirectDraw_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
-#define IDirectDraw_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
-#define IDirectDraw_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
-#define IDirectDraw_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
-#define IDirectDraw_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
-#define IDirectDraw_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
-#define IDirectDraw_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
-#define IDirectDraw_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
-#define IDirectDraw_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
-#define IDirectDraw_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
-#define IDirectDraw_SetDisplayMode(p, a, b, c)      (p)->lpVtbl->SetDisplayMode(p, a, b, c)
-#define IDirectDraw_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
-#else
-#define IDirectDraw_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
-#define IDirectDraw_AddRef(p)                       (p)->AddRef()
-#define IDirectDraw_Release(p)                      (p)->Release()
-#define IDirectDraw_Compact(p)                      (p)->Compact()
-#define IDirectDraw_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
-#define IDirectDraw_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
-#define IDirectDraw_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
-#define IDirectDraw_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
-#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
-#define IDirectDraw_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
-#define IDirectDraw_FlipToGDISurface(p)             (p)->FlipToGDISurface()
-#define IDirectDraw_GetCaps(p, a, b)                (p)->GetCaps(a, b)
-#define IDirectDraw_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
-#define IDirectDraw_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
-#define IDirectDraw_GetGDISurface(p, a)             (p)->GetGDISurface(a)
-#define IDirectDraw_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
-#define IDirectDraw_GetScanLine(p, a)               (p)->GetScanLine(a)
-#define IDirectDraw_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
-#define IDirectDraw_Initialize(p, a)                (p)->Initialize(a)
-#define IDirectDraw_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
-#define IDirectDraw_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
-#define IDirectDraw_SetDisplayMode(p, a, b, c)      (p)->SetDisplayMode(a, b, c)
-#define IDirectDraw_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
-#endif
-
-#endif
-
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDraw2
-DECLARE_INTERFACE_( IDirectDraw2, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDraw methods ***/
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
-    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
-    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
-    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
-    STDMETHOD(FlipToGDISurface)(THIS) PURE;
-    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
-    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
-    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
-    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
-    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
-    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
-    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
-    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
-};
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDraw2_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDraw2_AddRef(p)                       (p)->lpVtbl->AddRef(p)
-#define IDirectDraw2_Release(p)                      (p)->lpVtbl->Release(p)
-#define IDirectDraw2_Compact(p)                      (p)->lpVtbl->Compact(p)
-#define IDirectDraw2_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
-#define IDirectDraw2_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
-#define IDirectDraw2_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
-#define IDirectDraw2_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
-#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
-#define IDirectDraw2_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
-#define IDirectDraw2_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
-#define IDirectDraw2_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
-#define IDirectDraw2_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
-#define IDirectDraw2_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
-#define IDirectDraw2_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
-#define IDirectDraw2_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
-#define IDirectDraw2_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
-#define IDirectDraw2_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
-#define IDirectDraw2_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
-#define IDirectDraw2_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
-#define IDirectDraw2_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
-#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
-#define IDirectDraw2_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
-#define IDirectDraw2_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
-#else
-#define IDirectDraw2_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
-#define IDirectDraw2_AddRef(p)                       (p)->AddRef()
-#define IDirectDraw2_Release(p)                      (p)->Release()
-#define IDirectDraw2_Compact(p)                      (p)->Compact()
-#define IDirectDraw2_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
-#define IDirectDraw2_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
-#define IDirectDraw2_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
-#define IDirectDraw2_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
-#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
-#define IDirectDraw2_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
-#define IDirectDraw2_FlipToGDISurface(p)             (p)->FlipToGDISurface()
-#define IDirectDraw2_GetCaps(p, a, b)                (p)->GetCaps(a, b)
-#define IDirectDraw2_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
-#define IDirectDraw2_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
-#define IDirectDraw2_GetGDISurface(p, a)             (p)->GetGDISurface(a)
-#define IDirectDraw2_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
-#define IDirectDraw2_GetScanLine(p, a)               (p)->GetScanLine(a)
-#define IDirectDraw2_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
-#define IDirectDraw2_Initialize(p, a)                (p)->Initialize(a)
-#define IDirectDraw2_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
-#define IDirectDraw2_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
-#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
-#define IDirectDraw2_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
-#define IDirectDraw2_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
-#endif
-
-#endif
-
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDraw4
-DECLARE_INTERFACE_( IDirectDraw4, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDraw methods ***/
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
-    STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 FAR *, IUnknown FAR *) PURE;
-    STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 FAR * ) PURE;
-    STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
-    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ) PURE;
-    STDMETHOD(FlipToGDISurface)(THIS) PURE;
-    STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
-    STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
-    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
-    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4 FAR *) PURE;
-    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
-    STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
-    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
-    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
-    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
-    /*** Added in the V4 Interface ***/
-    STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE;
-    STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
-    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
-    STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER, DWORD ) PURE;
-};
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDraw4_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDraw4_AddRef(p)                       (p)->lpVtbl->AddRef(p)
-#define IDirectDraw4_Release(p)                      (p)->lpVtbl->Release(p)
-#define IDirectDraw4_Compact(p)                      (p)->lpVtbl->Compact(p)
-#define IDirectDraw4_CreateClipper(p, a, b, c)       (p)->lpVtbl->CreateClipper(p, a, b, c)
-#define IDirectDraw4_CreatePalette(p, a, b, c, d)    (p)->lpVtbl->CreatePalette(p, a, b, c, d)
-#define IDirectDraw4_CreateSurface(p, a, b, c)       (p)->lpVtbl->CreateSurface(p, a, b, c)
-#define IDirectDraw4_DuplicateSurface(p, a, b)       (p)->lpVtbl->DuplicateSurface(p, a, b)
-#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
-#define IDirectDraw4_EnumSurfaces(p, a, b, c, d)     (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
-#define IDirectDraw4_FlipToGDISurface(p)             (p)->lpVtbl->FlipToGDISurface(p)
-#define IDirectDraw4_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
-#define IDirectDraw4_GetDisplayMode(p, a)            (p)->lpVtbl->GetDisplayMode(p, a)
-#define IDirectDraw4_GetFourCCCodes(p, a, b)         (p)->lpVtbl->GetFourCCCodes(p, a, b)
-#define IDirectDraw4_GetGDISurface(p, a)             (p)->lpVtbl->GetGDISurface(p, a)
-#define IDirectDraw4_GetMonitorFrequency(p, a)       (p)->lpVtbl->GetMonitorFrequency(p, a)
-#define IDirectDraw4_GetScanLine(p, a)               (p)->lpVtbl->GetScanLine(p, a)
-#define IDirectDraw4_GetVerticalBlankStatus(p, a)    (p)->lpVtbl->GetVerticalBlankStatus(p, a)
-#define IDirectDraw4_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
-#define IDirectDraw4_RestoreDisplayMode(p)           (p)->lpVtbl->RestoreDisplayMode(p)
-#define IDirectDraw4_SetCooperativeLevel(p, a, b)    (p)->lpVtbl->SetCooperativeLevel(p, a, b)
-#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
-#define IDirectDraw4_WaitForVerticalBlank(p, a, b)   (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
-#define IDirectDraw4_GetAvailableVidMem(p, a, b, c)  (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
-#define IDirectDraw4_GetSurfaceFromDC(p, a, b)       (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
-#define IDirectDraw4_RestoreAllSurfaces(p)           (p)->lpVtbl->RestoreAllSurfaces(p)
-#define IDirectDraw4_TestCooperativeLevel(p)         (p)->lpVtbl->TestCooperativeLevel(p)
-#define IDirectDraw4_GetDeviceIdentifier(p,a,b)      (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
-#else
-#define IDirectDraw4_QueryInterface(p, a, b)         (p)->QueryInterface(a, b)
-#define IDirectDraw4_AddRef(p)                       (p)->AddRef()
-#define IDirectDraw4_Release(p)                      (p)->Release()
-#define IDirectDraw4_Compact(p)                      (p)->Compact()
-#define IDirectDraw4_CreateClipper(p, a, b, c)       (p)->CreateClipper(a, b, c)
-#define IDirectDraw4_CreatePalette(p, a, b, c, d)    (p)->CreatePalette(a, b, c, d)
-#define IDirectDraw4_CreateSurface(p, a, b, c)       (p)->CreateSurface(a, b, c)
-#define IDirectDraw4_DuplicateSurface(p, a, b)       (p)->DuplicateSurface(a, b)
-#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
-#define IDirectDraw4_EnumSurfaces(p, a, b, c, d)     (p)->EnumSurfaces(a, b, c, d)
-#define IDirectDraw4_FlipToGDISurface(p)             (p)->FlipToGDISurface()
-#define IDirectDraw4_GetCaps(p, a, b)                (p)->GetCaps(a, b)
-#define IDirectDraw4_GetDisplayMode(p, a)            (p)->GetDisplayMode(a)
-#define IDirectDraw4_GetFourCCCodes(p, a, b)         (p)->GetFourCCCodes(a, b)
-#define IDirectDraw4_GetGDISurface(p, a)             (p)->GetGDISurface(a)
-#define IDirectDraw4_GetMonitorFrequency(p, a)       (p)->GetMonitorFrequency(a)
-#define IDirectDraw4_GetScanLine(p, a)               (p)->GetScanLine(a)
-#define IDirectDraw4_GetVerticalBlankStatus(p, a)    (p)->GetVerticalBlankStatus(a)
-#define IDirectDraw4_Initialize(p, a)                (p)->Initialize(a)
-#define IDirectDraw4_RestoreDisplayMode(p)           (p)->RestoreDisplayMode()
-#define IDirectDraw4_SetCooperativeLevel(p, a, b)    (p)->SetCooperativeLevel(a, b)
-#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
-#define IDirectDraw4_WaitForVerticalBlank(p, a, b)   (p)->WaitForVerticalBlank(a, b)
-#define IDirectDraw4_GetAvailableVidMem(p, a, b, c)  (p)->GetAvailableVidMem(a, b, c)
-#define IDirectDraw4_GetSurfaceFromDC(p, a, b)       (p)->GetSurfaceFromDC(a, b)
-#define IDirectDraw4_RestoreAllSurfaces(p)           (p)->RestoreAllSurfaces()
-#define IDirectDraw4_TestCooperativeLevel(p)         (p)->TestCooperativeLevel()
-#define IDirectDraw4_GetDeviceIdentifier(p,a,b)      (p)->GetDeviceIdentifier(a,b)
-#endif
-
-#endif
-
-
-/*
- * IDirectDrawPalette
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawPalette
-DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawPalette methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
-    STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
-    STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawPalette_QueryInterface(p, a, b)      (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDrawPalette_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawPalette_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawPalette_GetCaps(p, a)                (p)->lpVtbl->GetCaps(p, a)
-#define IDirectDrawPalette_GetEntries(p, a, b, c, d)    (p)->lpVtbl->GetEntries(p, a, b, c, d)
-#define IDirectDrawPalette_Initialize(p, a, b, c)       (p)->lpVtbl->Initialize(p, a, b, c)
-#define IDirectDrawPalette_SetEntries(p, a, b, c, d)    (p)->lpVtbl->SetEntries(p, a, b, c, d)
-#else
-#define IDirectDrawPalette_QueryInterface(p, a, b)      (p)->QueryInterface(a, b)
-#define IDirectDrawPalette_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawPalette_Release(p)                   (p)->Release()
-#define IDirectDrawPalette_GetCaps(p, a)                (p)->GetCaps(a)
-#define IDirectDrawPalette_GetEntries(p, a, b, c, d)    (p)->GetEntries(a, b, c, d)
-#define IDirectDrawPalette_Initialize(p, a, b, c)       (p)->Initialize(a, b, c)
-#define IDirectDrawPalette_SetEntries(p, a, b, c, d)    (p)->SetEntries(a, b, c, d)
-#endif
-
-#endif
-
-
-
-/*
- * IDirectDrawClipper
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawClipper
-DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawClipper methods ***/
-    STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
-    STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE;
-    STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE;
-    STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE;
-    STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawClipper_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDrawClipper_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IDirectDrawClipper_Release(p)               (p)->lpVtbl->Release(p)
-#define IDirectDrawClipper_GetClipList(p, a, b, c)  (p)->lpVtbl->GetClipList(p, a, b, c)
-#define IDirectDrawClipper_GetHWnd(p, a)            (p)->lpVtbl->GetHWnd(p, a)
-#define IDirectDrawClipper_Initialize(p, a, b)      (p)->lpVtbl->Initialize(p, a, b)
-#define IDirectDrawClipper_IsClipListChanged(p, a)  (p)->lpVtbl->IsClipListChanged(p, a)
-#define IDirectDrawClipper_SetClipList(p, a, b)     (p)->lpVtbl->SetClipList(p, a, b)
-#define IDirectDrawClipper_SetHWnd(p, a, b)         (p)->lpVtbl->SetHWnd(p, a, b)
-#else
-#define IDirectDrawClipper_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
-#define IDirectDrawClipper_AddRef(p)                (p)->AddRef()
-#define IDirectDrawClipper_Release(p)               (p)->Release()
-#define IDirectDrawClipper_GetClipList(p, a, b, c)  (p)->GetClipList(a, b, c)
-#define IDirectDrawClipper_GetHWnd(p, a)            (p)->GetHWnd(a)
-#define IDirectDrawClipper_Initialize(p, a, b)      (p)->Initialize(a, b)
-#define IDirectDrawClipper_IsClipListChanged(p, a)  (p)->IsClipListChanged(a)
-#define IDirectDrawClipper_SetClipList(p, a, b)     (p)->SetClipList(a, b)
-#define IDirectDrawClipper_SetHWnd(p, a, b)         (p)->SetHWnd(a, b)
-#endif
-
-#endif
-
-/*
- * IDirectDrawSurface and related interfaces
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface
-DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawSurface methods ***/
-    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
-    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
-    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
-    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
-    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
-    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
-    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE;
-    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
-    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
-    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
-    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
-    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
-    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
-    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
-    STDMETHOD(IsLost)(THIS) PURE;
-    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
-    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
-    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
-    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
-    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
-    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawSurface_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectDrawSurface_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawSurface_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
-#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
-#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
-#define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
-#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
-#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
-#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
-#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
-#define IDirectDrawSurface_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
-#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
-#define IDirectDrawSurface_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
-#define IDirectDrawSurface_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
-#define IDirectDrawSurface_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
-#define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
-#define IDirectDrawSurface_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
-#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
-#define IDirectDrawSurface_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
-#define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
-#define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
-#define IDirectDrawSurface_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectDrawSurface_IsLost(p)                    (p)->lpVtbl->IsLost(p)
-#define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirectDrawSurface_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#define IDirectDrawSurface_Restore(p)                   (p)->lpVtbl->Restore(p)
-#define IDirectDrawSurface_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
-#define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
-#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
-#define IDirectDrawSurface_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
-#define IDirectDrawSurface_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
-#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
-#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
-#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
-#else
-#define IDirectDrawSurface_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectDrawSurface_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawSurface_Release(p)                   (p)->Release()
-#define IDirectDrawSurface_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
-#define IDirectDrawSurface_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
-#define IDirectDrawSurface_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
-#define IDirectDrawSurface_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
-#define IDirectDrawSurface_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
-#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
-#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
-#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
-#define IDirectDrawSurface_Flip(p,a,b)                  (p)->Flip(a,b)
-#define IDirectDrawSurface_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
-#define IDirectDrawSurface_GetBltStatus(p,a)            (p)->GetBltStatus(a)
-#define IDirectDrawSurface_GetCaps(p,b)                 (p)->GetCaps(b)
-#define IDirectDrawSurface_GetClipper(p,a)              (p)->GetClipper(a)
-#define IDirectDrawSurface_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
-#define IDirectDrawSurface_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirectDrawSurface_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
-#define IDirectDrawSurface_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
-#define IDirectDrawSurface_GetPalette(p,a)              (p)->GetPalette(a)
-#define IDirectDrawSurface_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
-#define IDirectDrawSurface_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
-#define IDirectDrawSurface_Initialize(p,a,b)            (p)->Initialize(a,b)
-#define IDirectDrawSurface_IsLost(p)                    (p)->IsLost()
-#define IDirectDrawSurface_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirectDrawSurface_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#define IDirectDrawSurface_Restore(p)                   (p)->Restore()
-#define IDirectDrawSurface_SetClipper(p,a)              (p)->SetClipper(a)
-#define IDirectDrawSurface_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
-#define IDirectDrawSurface_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
-#define IDirectDrawSurface_SetPalette(p,a)              (p)->SetPalette(a)
-#define IDirectDrawSurface_Unlock(p,b)                  (p)->Unlock(b)
-#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
-#define IDirectDrawSurface_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
-#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
-#endif
-
-/*
- * IDirectDrawSurface2 and related interfaces
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface2
-DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawSurface methods ***/
-    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE;
-    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
-    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE;
-    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
-    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE;
-    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE;
-    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE;
-    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE;
-    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
-    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
-    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
-    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
-    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
-    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
-    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
-    STDMETHOD(IsLost)(THIS) PURE;
-    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
-    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
-    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
-    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
-    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
-    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
-    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
-    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawSurface2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectDrawSurface2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawSurface2_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
-#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
-#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
-#define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
-#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
-#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
-#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
-#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
-#define IDirectDrawSurface2_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
-#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
-#define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
-#define IDirectDrawSurface2_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
-#define IDirectDrawSurface2_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
-#define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
-#define IDirectDrawSurface2_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
-#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
-#define IDirectDrawSurface2_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
-#define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
-#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
-#define IDirectDrawSurface2_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectDrawSurface2_IsLost(p)                    (p)->lpVtbl->IsLost(p)
-#define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#define IDirectDrawSurface2_Restore(p)                   (p)->lpVtbl->Restore(p)
-#define IDirectDrawSurface2_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
-#define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
-#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
-#define IDirectDrawSurface2_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
-#define IDirectDrawSurface2_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
-#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
-#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
-#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
-#define IDirectDrawSurface2_GetDDInterface(p,a)                 (p)->lpVtbl->GetDDInterface(p,a)
-#define IDirectDrawSurface2_PageLock(p,a)               (p)->lpVtbl->PageLock(p,a)
-#define IDirectDrawSurface2_PageUnlock(p,a)             (p)->lpVtbl->PageUnlock(p,a)
-#else
-#define IDirectDrawSurface2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectDrawSurface2_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawSurface2_Release(p)                   (p)->Release()
-#define IDirectDrawSurface2_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
-#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
-#define IDirectDrawSurface2_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
-#define IDirectDrawSurface2_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
-#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
-#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
-#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
-#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
-#define IDirectDrawSurface2_Flip(p,a,b)                  (p)->Flip(a,b)
-#define IDirectDrawSurface2_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
-#define IDirectDrawSurface2_GetBltStatus(p,a)            (p)->GetBltStatus(a)
-#define IDirectDrawSurface2_GetCaps(p,b)                 (p)->GetCaps(b)
-#define IDirectDrawSurface2_GetClipper(p,a)              (p)->GetClipper(a)
-#define IDirectDrawSurface2_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
-#define IDirectDrawSurface2_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirectDrawSurface2_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
-#define IDirectDrawSurface2_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
-#define IDirectDrawSurface2_GetPalette(p,a)              (p)->GetPalette(a)
-#define IDirectDrawSurface2_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
-#define IDirectDrawSurface2_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
-#define IDirectDrawSurface2_Initialize(p,a,b)            (p)->Initialize(a,b)
-#define IDirectDrawSurface2_IsLost(p)                    (p)->IsLost()
-#define IDirectDrawSurface2_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirectDrawSurface2_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#define IDirectDrawSurface2_Restore(p)                   (p)->Restore()
-#define IDirectDrawSurface2_SetClipper(p,a)              (p)->SetClipper(a)
-#define IDirectDrawSurface2_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
-#define IDirectDrawSurface2_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
-#define IDirectDrawSurface2_SetPalette(p,a)              (p)->SetPalette(a)
-#define IDirectDrawSurface2_Unlock(p,b)                  (p)->Unlock(b)
-#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
-#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
-#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
-#define IDirectDrawSurface2_GetDDInterface(p,a)                 (p)->GetDDInterface(a)
-#define IDirectDrawSurface2_PageLock(p,a)               (p)->PageLock(a)
-#define IDirectDrawSurface2_PageUnlock(p,a)             (p)->PageUnlock(a)
-#endif
-
-/*
- * IDirectDrawSurface3 and related interfaces
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface3
-DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawSurface methods ***/
-    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE;
-    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
-    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE;
-    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
-    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE;
-    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE;
-    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
-    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE;
-    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE;
-    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
-    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
-    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
-    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
-    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
-    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
-    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
-    STDMETHOD(IsLost)(THIS) PURE;
-    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
-    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
-    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
-    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
-    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
-    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
-    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
-    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
-    /*** Added in the V3 interface ***/
-    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawSurface3_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectDrawSurface3_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawSurface3_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
-#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
-#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
-#define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
-#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
-#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
-#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
-#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
-#define IDirectDrawSurface3_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
-#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
-#define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
-#define IDirectDrawSurface3_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
-#define IDirectDrawSurface3_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
-#define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
-#define IDirectDrawSurface3_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
-#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
-#define IDirectDrawSurface3_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
-#define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
-#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
-#define IDirectDrawSurface3_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectDrawSurface3_IsLost(p)                    (p)->lpVtbl->IsLost(p)
-#define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#define IDirectDrawSurface3_Restore(p)                   (p)->lpVtbl->Restore(p)
-#define IDirectDrawSurface3_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
-#define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
-#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
-#define IDirectDrawSurface3_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
-#define IDirectDrawSurface3_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
-#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
-#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
-#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
-#define IDirectDrawSurface3_GetDDInterface(p,a)                 (p)->lpVtbl->GetDDInterface(p,a)
-#define IDirectDrawSurface3_PageLock(p,a)               (p)->lpVtbl->PageLock(p,a)
-#define IDirectDrawSurface3_PageUnlock(p,a)             (p)->lpVtbl->PageUnlock(p,a)
-#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b)       (p)->lpVtbl->SetSurfaceDesc(p,a,b)
-#else
-#define IDirectDrawSurface3_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectDrawSurface3_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawSurface3_Release(p)                   (p)->Release()
-#define IDirectDrawSurface3_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
-#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
-#define IDirectDrawSurface3_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
-#define IDirectDrawSurface3_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
-#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
-#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
-#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
-#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
-#define IDirectDrawSurface3_Flip(p,a,b)                  (p)->Flip(a,b)
-#define IDirectDrawSurface3_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
-#define IDirectDrawSurface3_GetBltStatus(p,a)            (p)->GetBltStatus(a)
-#define IDirectDrawSurface3_GetCaps(p,b)                 (p)->GetCaps(b)
-#define IDirectDrawSurface3_GetClipper(p,a)              (p)->GetClipper(a)
-#define IDirectDrawSurface3_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
-#define IDirectDrawSurface3_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirectDrawSurface3_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
-#define IDirectDrawSurface3_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
-#define IDirectDrawSurface3_GetPalette(p,a)              (p)->GetPalette(a)
-#define IDirectDrawSurface3_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
-#define IDirectDrawSurface3_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
-#define IDirectDrawSurface3_Initialize(p,a,b)            (p)->Initialize(a,b)
-#define IDirectDrawSurface3_IsLost(p)                    (p)->IsLost()
-#define IDirectDrawSurface3_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirectDrawSurface3_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#define IDirectDrawSurface3_Restore(p)                   (p)->Restore()
-#define IDirectDrawSurface3_SetClipper(p,a)              (p)->SetClipper(a)
-#define IDirectDrawSurface3_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
-#define IDirectDrawSurface3_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
-#define IDirectDrawSurface3_SetPalette(p,a)              (p)->SetPalette(a)
-#define IDirectDrawSurface3_Unlock(p,b)                  (p)->Unlock(b)
-#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
-#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
-#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
-#define IDirectDrawSurface3_GetDDInterface(p,a)                 (p)->GetDDInterface(a)
-#define IDirectDrawSurface3_PageLock(p,a)               (p)->PageLock(a)
-#define IDirectDrawSurface3_PageUnlock(p,a)             (p)->PageUnlock(a)
-#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b)       (p)->SetSurfaceDesc(a,b)
-#endif
-
-/*
- * IDirectDrawSurface4 and related interfaces
- */
-#undef INTERFACE
-#define INTERFACE IDirectDrawSurface4
-DECLARE_INTERFACE_( IDirectDrawSurface4, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawSurface methods ***/
-    STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4) PURE;
-    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
-    STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX) PURE;
-    STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
-    STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD) PURE;
-    STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE4) PURE;
-    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
-    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
-    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4, DWORD) PURE;
-    STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE4 FAR *) PURE;
-    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
-    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
-    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
-    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
-    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
-    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
-    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
-    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
-    STDMETHOD(IsLost)(THIS) PURE;
-    STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
-    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
-    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
-    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
-    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
-    STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
-    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
-    STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
-    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE4) PURE;
-    /*** Added in the v2 interface ***/
-    STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
-    STDMETHOD(PageLock)(THIS_ DWORD) PURE;
-    STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
-    /*** Added in the v3 interface ***/
-    STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
-    /*** Added in the v4 interface ***/
-    STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
-    STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
-    STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
-    STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
-    STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawSurface4_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectDrawSurface4_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectDrawSurface4_Release(p)                   (p)->lpVtbl->Release(p)
-#define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->lpVtbl->AddAttachedSurface(p,a)
-#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->lpVtbl->AddOverlayDirtyRect(p,a)
-#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->lpVtbl->Blt(p,a,b,c,d,e)
-#define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->lpVtbl->BltBatch(p,a,b,c)
-#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->lpVtbl->BltFast(p,a,b,c,d,e)
-#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
-#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
-#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
-#define IDirectDrawSurface4_Flip(p,a,b)                  (p)->lpVtbl->Flip(p,a,b)
-#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->lpVtbl->GetAttachedSurface(p,a,b)
-#define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->lpVtbl->GetBltStatus(p,a)
-#define IDirectDrawSurface4_GetCaps(p,b)                 (p)->lpVtbl->GetCaps(p,b)
-#define IDirectDrawSurface4_GetClipper(p,a)              (p)->lpVtbl->GetClipper(p,a)
-#define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->lpVtbl->GetColorKey(p,a,b)
-#define IDirectDrawSurface4_GetDC(p,a)                   (p)->lpVtbl->GetDC(p,a)
-#define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->lpVtbl->GetFlipStatus(p,a)
-#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->lpVtbl->GetOverlayPosition(p,a,b)
-#define IDirectDrawSurface4_GetPalette(p,a)              (p)->lpVtbl->GetPalette(p,a)
-#define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->lpVtbl->GetPixelFormat(p,a)
-#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->lpVtbl->GetSurfaceDesc(p,a)
-#define IDirectDrawSurface4_Initialize(p,a,b)            (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectDrawSurface4_IsLost(p)                    (p)->lpVtbl->IsLost(p)
-#define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->lpVtbl->Lock(p,a,b,c,d)
-#define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->lpVtbl->ReleaseDC(p,a)
-#define IDirectDrawSurface4_Restore(p)                   (p)->lpVtbl->Restore(p)
-#define IDirectDrawSurface4_SetClipper(p,a)              (p)->lpVtbl->SetClipper(p,a)
-#define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->lpVtbl->SetColorKey(p,a,b)
-#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->lpVtbl->SetOverlayPosition(p,a,b)
-#define IDirectDrawSurface4_SetPalette(p,a)              (p)->lpVtbl->SetPalette(p,a)
-#define IDirectDrawSurface4_Unlock(p,b)                  (p)->lpVtbl->Unlock(p,b)
-#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
-#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->lpVtbl->UpdateOverlayDisplay(p,a)
-#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
-#define IDirectDrawSurface4_GetDDInterface(p,a)                 (p)->lpVtbl->GetDDInterface(p,a)
-#define IDirectDrawSurface4_PageLock(p,a)               (p)->lpVtbl->PageLock(p,a)
-#define IDirectDrawSurface4_PageUnlock(p,a)             (p)->lpVtbl->PageUnlock(p,a)
-#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b)       (p)->lpVtbl->SetSurfaceDesc(p,a,b)
-#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d)   (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
-#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)     (p)->lpVtbl->GetPrivateData(p,a,b,c)
-#define IDirectDrawSurface4_FreePrivateData(p,a)        (p)->lpVtbl->FreePrivateData(p,a)
-#define IDirectDrawSurface4_GetUniquenessValue(p, a)     (p)->lpVtbl->GetUniquenessValue(p, a)
-#define IDirectDrawSurface4_ChangeUniquenessValue(p)     (p)->lpVtbl->ChangeUniquenessValue(p)
-#else
-#define IDirectDrawSurface4_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectDrawSurface4_AddRef(p)                    (p)->AddRef()
-#define IDirectDrawSurface4_Release(p)                   (p)->Release()
-#define IDirectDrawSurface4_AddAttachedSurface(p,a)      (p)->AddAttachedSurface(a)
-#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a)     (p)->AddOverlayDirtyRect(a)
-#define IDirectDrawSurface4_Blt(p,a,b,c,d,e)             (p)->Blt(a,b,c,d,e)
-#define IDirectDrawSurface4_BltBatch(p,a,b,c)            (p)->BltBatch(a,b,c)
-#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e)         (p)->BltFast(a,b,c,d,e)
-#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
-#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b)  (p)->EnumAttachedSurfaces(a,b)
-#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c)  (p)->EnumOverlayZOrders(a,b,c)
-#define IDirectDrawSurface4_Flip(p,a,b)                  (p)->Flip(a,b)
-#define IDirectDrawSurface4_GetAttachedSurface(p,a,b)    (p)->GetAttachedSurface(a,b)
-#define IDirectDrawSurface4_GetBltStatus(p,a)            (p)->GetBltStatus(a)
-#define IDirectDrawSurface4_GetCaps(p,b)                 (p)->GetCaps(b)
-#define IDirectDrawSurface4_GetClipper(p,a)              (p)->GetClipper(a)
-#define IDirectDrawSurface4_GetColorKey(p,a,b)           (p)->GetColorKey(a,b)
-#define IDirectDrawSurface4_GetDC(p,a)                   (p)->GetDC(a)
-#define IDirectDrawSurface4_GetFlipStatus(p,a)           (p)->GetFlipStatus(a)
-#define IDirectDrawSurface4_GetOverlayPosition(p,a,b)    (p)->GetOverlayPosition(a,b)
-#define IDirectDrawSurface4_GetPalette(p,a)              (p)->GetPalette(a)
-#define IDirectDrawSurface4_GetPixelFormat(p,a)          (p)->GetPixelFormat(a)
-#define IDirectDrawSurface4_GetSurfaceDesc(p,a)          (p)->GetSurfaceDesc(a)
-#define IDirectDrawSurface4_Initialize(p,a,b)            (p)->Initialize(a,b)
-#define IDirectDrawSurface4_IsLost(p)                    (p)->IsLost()
-#define IDirectDrawSurface4_Lock(p,a,b,c,d)              (p)->Lock(a,b,c,d)
-#define IDirectDrawSurface4_ReleaseDC(p,a)               (p)->ReleaseDC(a)
-#define IDirectDrawSurface4_Restore(p)                   (p)->Restore()
-#define IDirectDrawSurface4_SetClipper(p,a)              (p)->SetClipper(a)
-#define IDirectDrawSurface4_SetColorKey(p,a,b)           (p)->SetColorKey(a,b)
-#define IDirectDrawSurface4_SetOverlayPosition(p,a,b)    (p)->SetOverlayPosition(a,b)
-#define IDirectDrawSurface4_SetPalette(p,a)              (p)->SetPalette(a)
-#define IDirectDrawSurface4_Unlock(p,b)                  (p)->Unlock(b)
-#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e)   (p)->UpdateOverlay(a,b,c,d,e)
-#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a)    (p)->UpdateOverlayDisplay(a)
-#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b)   (p)->UpdateOverlayZOrder(a,b)
-#define IDirectDrawSurface4_GetDDInterface(p,a)                 (p)->GetDDInterface(a)
-#define IDirectDrawSurface4_PageLock(p,a)               (p)->PageLock(a)
-#define IDirectDrawSurface4_PageUnlock(p,a)             (p)->PageUnlock(a)
-#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b)       (p)->SetSurfaceDesc(a,b)
-#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d)   (p)->SetPrivateData(a,b,c,d)
-#define IDirectDrawSurface4_GetPrivateData(p,a,b,c)     (p)->GetPrivateData(a,b,c)
-#define IDirectDrawSurface4_FreePrivateData(p,a)        (p)->FreePrivateData(a)
-#define IDirectDrawSurface4_GetUniquenessValue(p, a)     (p)->GetUniquenessValue(a)
-#define IDirectDrawSurface4_ChangeUniquenessValue(p)     (p)->ChangeUniquenessValue()
-#endif
-
-
-
-/*
- * IDirectDrawColorControl
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawColorControl
-DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawColorControl methods ***/
-    STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
-    STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawColorControl_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDrawColorControl_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IDirectDrawColorControl_Release(p)               (p)->lpVtbl->Release(p)
-#define IDirectDrawColorControl_GetColorControls(p, a)   (p)->lpVtbl->GetColorControls(p, a)
-#define IDirectDrawColorControl_SetColorControls(p, a)   (p)->lpVtbl->SetColorControls(p, a)
-#else
-#define IDirectDrawColorControl_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
-#define IDirectDrawColorControl_AddRef(p)                (p)->AddRef()
-#define IDirectDrawColorControl_Release(p)               (p)->Release()
-#define IDirectDrawColorControl_GetColorControls(p, a)   (p)->GetColorControls(a)
-#define IDirectDrawColorControl_SetColorControls(p, a)   (p)->SetColorControls(a)
-#endif
-
-#endif
-
-
-/*
- * IDirectDrawGammaControl
- */
-#if defined( _WIN32 ) && !defined( _NO_COM )
-#undef INTERFACE
-#define INTERFACE IDirectDrawGammaControl
-DECLARE_INTERFACE_( IDirectDrawGammaControl, IUnknown )
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IDirectDrawColorControl methods ***/
-    STDMETHOD(GetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
-    STDMETHOD(SetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectDrawGammaControl_QueryInterface(p, a, b)  (p)->lpVtbl->QueryInterface(p, a, b)
-#define IDirectDrawGammaControl_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IDirectDrawGammaControl_Release(p)               (p)->lpVtbl->Release(p)
-#define IDirectDrawGammaControl_GetGammaRamp(p, a, b)    (p)->lpVtbl->GetGammaRamp(p, a, b)
-#define IDirectDrawGammaControl_SetGammaRamp(p, a, b)    (p)->lpVtbl->SetGammaRamp(p, a, b)
-#else
-#define IDirectDrawGammaControl_QueryInterface(p, a, b)  (p)->QueryInterface(a, b)
-#define IDirectDrawGammaControl_AddRef(p)                (p)->AddRef()
-#define IDirectDrawGammaControl_Release(p)               (p)->Release()
-#define IDirectDrawGammaControl_GetGammaRamp(p, a, b)    (p)->GetGammaRamp(a, b)
-#define IDirectDrawGammaControl_SetGammaRamp(p, a, b)    (p)->SetGammaRamp(a, b)
-#endif
-
-#endif
-
-
-
-#endif
-
-
-/*
- * DDSURFACEDESC
- */
-typedef struct _DDSURFACEDESC
-{
-    DWORD              dwSize;                 // size of the DDSURFACEDESC structure
-    DWORD              dwFlags;                // determines what fields are valid
-    DWORD              dwHeight;               // height of surface to be created
-    DWORD              dwWidth;                // width of input surface
-    union
-    {
-        LONG           lPitch;                 // distance to start of next line (return value only)
-        DWORD           dwLinearSize;           // Formless late-allocated optimized surface size
-    } DUMMYUNIONNAMEN(1);
-    DWORD              dwBackBufferCount;      // number of back buffers requested
-    union
-    {
-        DWORD           dwMipMapCount;          // number of mip-map levels requested
-       DWORD           dwZBufferBitDepth;      // depth of Z buffer requested
-       DWORD           dwRefreshRate;          // refresh rate (used when display mode is described)
-    } DUMMYUNIONNAMEN(2);
-    DWORD              dwAlphaBitDepth;        // depth of alpha buffer requested
-    DWORD              dwReserved;             // reserved
-    LPVOID             lpSurface;              // pointer to the associated surface memory
-    DDCOLORKEY         ddckCKDestOverlay;      // color key for destination overlay use
-    DDCOLORKEY         ddckCKDestBlt;          // color key for destination blt use
-    DDCOLORKEY         ddckCKSrcOverlay;       // color key for source overlay use
-    DDCOLORKEY         ddckCKSrcBlt;           // color key for source blt use
-    DDPIXELFORMAT      ddpfPixelFormat;        // pixel format description of the surface
-    DDSCAPS            ddsCaps;                // direct draw surface capabilities
-} DDSURFACEDESC;
-
-/*
- * DDSURFACEDESC2
- */
-typedef struct _DDSURFACEDESC2
-{
-    DWORD              dwSize;                 // size of the DDSURFACEDESC structure
-    DWORD              dwFlags;                // determines what fields are valid
-    DWORD              dwHeight;               // height of surface to be created
-    DWORD              dwWidth;                // width of input surface
-    union
-    {
-        LONG           lPitch;                 // distance to start of next line (return value only)
-        DWORD           dwLinearSize;           // Formless late-allocated optimized surface size
-    } DUMMYUNIONNAMEN(1);
-    DWORD              dwBackBufferCount;      // number of back buffers requested
-    union
-    {
-        DWORD           dwMipMapCount;          // number of mip-map levels requestde
-                                                // dwZBufferBitDepth removed, use ddpfPixelFormat one instead
-       DWORD           dwRefreshRate;          // refresh rate (used when display mode is described)
-    } DUMMYUNIONNAMEN(2);
-    DWORD              dwAlphaBitDepth;        // depth of alpha buffer requested
-    DWORD              dwReserved;             // reserved
-    LPVOID             lpSurface;              // pointer to the associated surface memory
-    DDCOLORKEY         ddckCKDestOverlay;      // color key for destination overlay use
-    DDCOLORKEY         ddckCKDestBlt;          // color key for destination blt use
-    DDCOLORKEY         ddckCKSrcOverlay;       // color key for source overlay use
-    DDCOLORKEY         ddckCKSrcBlt;           // color key for source blt use
-    DDPIXELFORMAT      ddpfPixelFormat;        // pixel format description of the surface
-    DDSCAPS2           ddsCaps;                // direct draw surface capabilities
-    DWORD               dwTextureStage;         // stage in multitexture cascade
-} DDSURFACEDESC2;
-
-/*
- * ddsCaps field is valid.
- */
-#define DDSD_CAPS              0x00000001l     // default
-
-/*
- * dwHeight field is valid.
- */
-#define DDSD_HEIGHT            0x00000002l
-
-/*
- * dwWidth field is valid.
- */
-#define DDSD_WIDTH             0x00000004l
-
-/*
- * lPitch is valid.
- */
-#define DDSD_PITCH             0x00000008l
-
-/*
- * dwBackBufferCount is valid.
- */
-#define DDSD_BACKBUFFERCOUNT   0x00000020l
-
-/*
- * dwZBufferBitDepth is valid.  (shouldnt be used in DDSURFACEDESC2)
- */
-#define DDSD_ZBUFFERBITDEPTH   0x00000040l
-
-/*
- * dwAlphaBitDepth is valid.
- */
-#define DDSD_ALPHABITDEPTH     0x00000080l
-
-
-/*
- * lpSurface is valid.
- */
-#define DDSD_LPSURFACE         0x00000800l
-
-/*
- * ddpfPixelFormat is valid.
- */
-#define DDSD_PIXELFORMAT       0x00001000l
-
-/*
- * ddckCKDestOverlay is valid.
- */
-#define DDSD_CKDESTOVERLAY     0x00002000l
-
-/*
- * ddckCKDestBlt is valid.
- */
-#define DDSD_CKDESTBLT         0x00004000l
-
-/*
- * ddckCKSrcOverlay is valid.
- */
-#define DDSD_CKSRCOVERLAY      0x00008000l
-
-/*
- * ddckCKSrcBlt is valid.
- */
-#define DDSD_CKSRCBLT          0x00010000l
-
-/*
- * dwMipMapCount is valid.
- */
-#define DDSD_MIPMAPCOUNT        0x00020000l
-
- /*
-  * dwRefreshRate is valid
-  */
-#define DDSD_REFRESHRATE       0x00040000l
-
-/*
- * dwLinearSize is valid
- */
-#define DDSD_LINEARSIZE                0x00080000l
-
-/*
- * dwTextureStage is valid
- */
-#define DDSD_TEXTURESTAGE       0x00100000l
-/*
- * All input fields are valid.
- */
-#define DDSD_ALL               0x001ff9eel
-
-
-/*
- * DDOPTSURFACEDESC
- */
-typedef struct _DDOPTSURFACEDESC
-{
-    DWORD       dwSize;             // size of the DDOPTSURFACEDESC structure
-    DWORD       dwFlags;            // determines what fields are valid
-    DDSCAPS2    ddSCaps;            // Common caps like: Memory type
-    DDOSCAPS    ddOSCaps;           // Common caps like: Memory type
-    GUID        guid;               // Compression technique GUID
-    DWORD       dwCompressionRatio; // Compression ratio
-} DDOPTSURFACEDESC;
-
-/*
- * guid field is valid.
- */
-#define DDOSD_GUID                  0x00000001l
-
-/*
- * dwCompressionRatio field is valid.
- */
-#define DDOSD_COMPRESSION_RATIO     0x00000002l
-
-/*
- * ddSCaps field is valid.
- */
-#define DDOSD_SCAPS                 0x00000004l
-
-/*
- * ddOSCaps field is valid.
- */
-#define DDOSD_OSCAPS                0x00000008l
-
-/*
- * All input fields are valid.
- */
-#define DDOSD_ALL                   0x0000000fl
-
-/*
- * The surface's optimized pixelformat is compressed
- */
-#define DDOSDCAPS_OPTCOMPRESSED                        0x00000001l
-
-/*
- * The surface's optimized pixelformat is reordered
- */
-#define DDOSDCAPS_OPTREORDERED                 0x00000002l
-
-/*
- * The opt surface is a monolithic mipmap
- */
-#define DDOSDCAPS_MONOLITHICMIPMAP             0x00000004l
-
-/*
- * The valid Surf caps:
- * #define DDSCAPS_SYSTEMMEMORY                        0x00000800l
- * #define DDSCAPS_VIDEOMEMORY         0x00004000l
- * #define DDSCAPS_LOCALVIDMEM          0x10000000l
- * #define DDSCAPS_NONLOCALVIDMEM       0x20000000l
- */
-#define DDOSDCAPS_VALIDSCAPS           0x30004800l
-
-/*
- * The valid OptSurf caps
- */
-#define DDOSDCAPS_VALIDOSCAPS          0x00000007l
-
-
-/*
- * DDCOLORCONTROL
- */
-typedef struct _DDCOLORCONTROL
-{
-    DWORD              dwSize;
-    DWORD              dwFlags;
-    LONG               lBrightness;
-    LONG               lContrast;
-    LONG               lHue;
-    LONG               lSaturation;
-    LONG               lSharpness;
-    LONG               lGamma;
-    LONG               lColorEnable;
-    DWORD              dwReserved1;
-} DDCOLORCONTROL;
-
-
-/*
- * lBrightness field is valid.
- */
-#define DDCOLOR_BRIGHTNESS             0x00000001l
-
-/*
- * lContrast field is valid.
- */
-#define DDCOLOR_CONTRAST               0x00000002l
-
-/*
- * lHue field is valid.
- */
-#define DDCOLOR_HUE                    0x00000004l
-
-/*
- * lSaturation field is valid.
- */
-#define DDCOLOR_SATURATION             0x00000008l
-
-/*
- * lSharpness field is valid.
- */
-#define DDCOLOR_SHARPNESS              0x00000010l
-
-/*
- * lGamma field is valid.
- */
-#define DDCOLOR_GAMMA                  0x00000020l
-
-/*
- * lColorEnable field is valid.
- */
-#define DDCOLOR_COLORENABLE            0x00000040l
-
-
-
-/*============================================================================
- *
- * Direct Draw Capability Flags
- *
- * These flags are used to describe the capabilities of a given Surface.
- * All flags are bit flags.
- *
- *==========================================================================*/
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * This bit is reserved. It should not be specified.
- */
-#define DDSCAPS_RESERVED1                      0x00000001l
-
-/*
- * Indicates that this surface contains alpha-only information.
- * (To determine if a surface is RGBA/YUVA, the pixel format must be
- * interrogated.)
- */
-#define DDSCAPS_ALPHA                          0x00000002l
-
-/*
- * Indicates that this surface is a backbuffer.         It is generally
- * set by CreateSurface when the DDSCAPS_FLIP capability bit is set.
- * It indicates that this surface is THE back buffer of a surface
- * flipping structure. DirectDraw supports N surfaces in a
- * surface flipping structure. Only the surface that immediately
- * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set.
- * The other surfaces are identified as back buffers by the presence
- * of the DDSCAPS_FLIP capability, their attachment order, and the
- * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER
- * capabilities.  The bit is sent to CreateSurface when a standalone
- * back buffer is being created.  This surface could be attached to
- * a front buffer and/or back buffers to form a flipping surface
- * structure after the CreateSurface call.  See AddAttachments for
- * a detailed description of the behaviors in this case.
- */
-#define DDSCAPS_BACKBUFFER                     0x00000004l
-
-/*
- * Indicates a complex surface structure is being described.  A
- * complex surface structure results in the creation of more than
- * one surface.         The additional surfaces are attached to the root
- * surface.  The complex structure can only be destroyed by
- * destroying the root.
- */
-#define DDSCAPS_COMPLEX                                0x00000008l
-
-/*
- * Indicates that this surface is a part of a surface flipping structure.
- * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and
- * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface
- * on the resulting creations. The dwBackBufferCount field in the
- * DDSURFACEDESC structure must be set to at least 1 in order for
- * the CreateSurface call to succeed.  The DDSCAPS_COMPLEX capability
- * must always be set with creating multiple surfaces through CreateSurface.
- */
-#define DDSCAPS_FLIP                           0x00000010l
-
-/*
- * Indicates that this surface is THE front buffer of a surface flipping
- * structure.  It is generally set by CreateSurface when the DDSCAPS_FLIP
- * capability bit is set.
- * If this capability is sent to CreateSurface then a standalonw front buffer
- * is created. This surface will not have the DDSCAPS_FLIP capability.
- * It can be attached to other back buffers to form a flipping structure.
- * See AddAttachments for a detailed description of the behaviors in this
- * case.
- */
-#define DDSCAPS_FRONTBUFFER                    0x00000020l
-
-/*
- * Indicates that this surface is any offscreen surface that is not an overlay,
- * texture, zbuffer, front buffer, back buffer, or alpha surface.  It is used
- * to identify plain vanilla surfaces.
- */
-#define DDSCAPS_OFFSCREENPLAIN                 0x00000040l
-
-/*
- * Indicates that this surface is an overlay.  It may or may not be directly visible
- * depending on whether or not it is currently being overlayed onto the primary
- * surface.  DDSCAPS_VISIBLE can be used to determine whether or not it is being
- * overlayed at the moment.
- */
-#define DDSCAPS_OVERLAY                                0x00000080l
-
-/*
- * Indicates that unique DirectDrawPalette objects can be created and
- * attached to this surface.
- */
-#define DDSCAPS_PALETTE                                0x00000100l
-
-/*
- * Indicates that this surface is the primary surface. The primary
- * surface represents what the user is seeing at the moment.
- */
-#define DDSCAPS_PRIMARYSURFACE                 0x00000200l
-
-/*
- * Indicates that this surface is the primary surface for the left eye.
- * The primary surface for the left eye represents what the user is seeing
- * at the moment with the users left eye.  When this surface is created the
- * DDSCAPS_PRIMARYSURFACE represents what the user is seeing with the users
- * right eye.
- */
-#define DDSCAPS_PRIMARYSURFACELEFT             0x00000400l
-
-/*
- * Indicates that this surface memory was allocated in system memory
- */
-#define DDSCAPS_SYSTEMMEMORY                   0x00000800l
-
-/*
- * Indicates that this surface can be used as a 3D texture.  It does not
- * indicate whether or not the surface is being used for that purpose.
- */
-#define DDSCAPS_TEXTURE                                0x00001000l
-
-/*
- * Indicates that a surface may be a destination for 3D rendering.  This
- * bit must be set in order to query for a Direct3D Device Interface
- * from this surface.
- */
-#define DDSCAPS_3DDEVICE                        0x00002000l
-
-/*
- * Indicates that this surface exists in video memory.
- */
-#define DDSCAPS_VIDEOMEMORY                    0x00004000l
-
-/*
- * Indicates that changes made to this surface are immediately visible.
- * It is always set for the primary surface and is set for overlays while
- * they are being overlayed and texture maps while they are being textured.
- */
-#define DDSCAPS_VISIBLE                                0x00008000l
-
-/*
- * Indicates that only writes are permitted to the surface.  Read accesses
- * from the surface may or may not generate a protection fault, but the
- * results of a read from this surface will not be meaningful. READ ONLY.
- */
-#define DDSCAPS_WRITEONLY                      0x00010000l
-
-/*
- * Indicates that this surface is a z buffer. A z buffer does not contain
- * displayable information.  Instead it contains bit depth information that is
- * used to determine which pixels are visible and which are obscured.
- */
-#define DDSCAPS_ZBUFFER                                0x00020000l
-
-/*
- * Indicates surface will have a DC associated long term
- */
-#define DDSCAPS_OWNDC                          0x00040000l
-
-/*
- * Indicates surface should be able to receive live video
- */
-#define DDSCAPS_LIVEVIDEO                      0x00080000l
-
-/*
- * Indicates surface should be able to have a stream decompressed
- * to it by the hardware.
- */
-#define DDSCAPS_HWCODEC                                0x00100000l
-
-/*
- * Surface is a ModeX surface.
- *
- */
-#define DDSCAPS_MODEX                          0x00200000l
-
-/*
- * Indicates surface is one level of a mip-map. This surface will
- * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map.
- * This can be done explicitly, by creating a number of surfaces and
- * attaching them with AddAttachedSurface or by implicitly by CreateSurface.
- * If this bit is set then DDSCAPS_TEXTURE must also be set.
- */
-#define DDSCAPS_MIPMAP                          0x00400000l
-
-/*
- * This bit is reserved. It should not be specified.
- */
-#define DDSCAPS_RESERVED2                       0x00800000l
-
-
-/*
- * Indicates that memory for the surface is not allocated until the surface
- * is loaded (via the Direct3D texture Load() function).
- */
-#define DDSCAPS_ALLOCONLOAD                     0x04000000l
-
-/*
- * Indicates that the surface will recieve data from a video port.
- */
-#define DDSCAPS_VIDEOPORT                      0x08000000l
-
-/*
- * Indicates that a video memory surface is resident in true, local video
- * memory rather than non-local video memory. If this flag is specified then
- * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
- * DDSCAPS_NONLOCALVIDMEM.
- */
-#define DDSCAPS_LOCALVIDMEM                     0x10000000l
-
-/*
- * Indicates that a video memory surface is resident in non-local video
- * memory rather than true, local video memory. If this flag is specified
- * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
- * DDSCAPS_LOCALVIDMEM.
- */
-#define DDSCAPS_NONLOCALVIDMEM                  0x20000000l
-
-/*
- * Indicates that this surface is a standard VGA mode surface, and not a
- * ModeX surface. (This flag will never be set in combination with the
- * DDSCAPS_MODEX flag).
- */
-#define DDSCAPS_STANDARDVGAMODE                 0x40000000l
-
-/*
- * Indicates that this surface will be an optimized surface. This flag is
- * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface
- * will be created without any underlying video memory until loaded.
- */
-#define DDSCAPS_OPTIMIZED                       0x80000000l
-
-
-
-
-/*
- * Indicates that this surface will receive data from a video port using
- * the de-interlacing hardware.  This allows the driver to allocate memory
- * for any extra buffers that may be required.  The DDSCAPS_VIDEOPORT and
- * DDSCAPS_OVERLAY flags must also be set.
- */
-#define DDSCAPS2_HARDWAREDEINTERLACE            0x00000002L
-
-/*
- * Indicates to the driver that this surface will be locked very frequently
- * (for procedural textures, dynamic lightmaps, etc). Surfaces with this cap
- * set must also have DDSCAPS_TEXTURE. This cap cannot be used with
- * DDSCAPS2_HINTSTATIC and DDSCAPS2_OPAQUE.
- */
-#define DDSCAPS2_HINTDYNAMIC                   0x00000004L
-
-/*
- * Indicates to the driver that this surface can be re-ordered/retiled on
- * load. This operation will not change the size of the texture. It is
- * relatively fast and symmetrical, since the application may lock these
- * bits (although it will take a performance hit when doing so). Surfaces
- * with this cap set must also have DDSCAPS_TEXTURE. This cap cannot be
- * used with DDSCAPS2_HINTDYNAMIC and DDSCAPS2_OPAQUE.
- */
-#define DDSCAPS2_HINTSTATIC                    0x00000008L
-
-/*
- * Indicates that the client would like this texture surface to be managed by the
- * DirectDraw/Direct3D runtime. Surfaces with this cap set must also have
- * DDSCAPS_TEXTURE set.
- */
-#define DDSCAPS2_TEXTUREMANAGE                  0x00000010L
-
-/*
- * These bits are reserved for internal use */
-#define DDSCAPS2_RESERVED1                      0x00000020L
-#define DDSCAPS2_RESERVED2                      0x00000040L
-
-/*
- * Indicates to the driver that this surface will never be locked again.
- * The driver is free to optimize this surface via retiling and actual compression.
- * All calls to Lock() or Blts from this surface will fail. Surfaces with this
- * cap set must also have DDSCAPS_TEXTURE. This cap cannot be used with
- * DDSCAPS2_HINTDYNAMIC and DDSCAPS2_HINTSTATIC.
- */
-#define DDSCAPS2_OPAQUE                         0x00000080L
-
-/*
- * Applications should set this bit at CreateSurface time to indicate that they
- * intend to use antialiasing. Only valid if DDSCAPS_3DDEVICE is also set.
- */
-#define DDSCAPS2_HINTANTIALIASING               0x00000100L
-
-
-
-
- /****************************************************************************
- *
- * DIRECTDRAW DRIVER CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Display hardware has 3D acceleration.
- */
-#define DDCAPS_3D                      0x00000001l
-
-/*
- * Indicates that DirectDraw will support only dest rectangles that are aligned
- * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
- * READ ONLY.
- */
-#define DDCAPS_ALIGNBOUNDARYDEST       0x00000002l
-
-/*
- * Indicates that DirectDraw will support only source rectangles  whose sizes in
- * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively.  READ ONLY.
- */
-#define DDCAPS_ALIGNSIZEDEST           0x00000004l
-/*
- * Indicates that DirectDraw will support only source rectangles that are aligned
- * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
- * READ ONLY.
- */
-#define DDCAPS_ALIGNBOUNDARYSRC                0x00000008l
-
-/*
- * Indicates that DirectDraw will support only source rectangles  whose sizes in
- * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively.  READ ONLY.
- */
-#define DDCAPS_ALIGNSIZESRC            0x00000010l
-
-/*
- * Indicates that DirectDraw will create video memory surfaces that have a stride
- * alignment equal to DIRECTDRAWCAPS.dwAlignStride.  READ ONLY.
- */
-#define DDCAPS_ALIGNSTRIDE             0x00000020l
-
-/*
- * Display hardware is capable of blt operations.
- */
-#define DDCAPS_BLT                     0x00000040l
-
-/*
- * Display hardware is capable of asynchronous blt operations.
- */
-#define DDCAPS_BLTQUEUE                        0x00000080l
-
-/*
- * Display hardware is capable of color space conversions during the blt operation.
- */
-#define DDCAPS_BLTFOURCC               0x00000100l
-
-/*
- * Display hardware is capable of stretching during blt operations.
- */
-#define DDCAPS_BLTSTRETCH              0x00000200l
-
-/*
- * Display hardware is shared with GDI.
- */
-#define DDCAPS_GDI                     0x00000400l
-
-/*
- * Display hardware can overlay.
- */
-#define DDCAPS_OVERLAY                 0x00000800l
-
-/*
- * Set if display hardware supports overlays but can not clip them.
- */
-#define DDCAPS_OVERLAYCANTCLIP         0x00001000l
-
-/*
- * Indicates that overlay hardware is capable of color space conversions during
- * the overlay operation.
- */
-#define DDCAPS_OVERLAYFOURCC           0x00002000l
-
-/*
- * Indicates that stretching can be done by the overlay hardware.
- */
-#define DDCAPS_OVERLAYSTRETCH          0x00004000l
-
-/*
- * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
- * other than the primary surface.
- */
-#define DDCAPS_PALETTE                 0x00008000l
-
-/*
- * Indicates that palette changes can be syncd with the veritcal refresh.
- */
-#define DDCAPS_PALETTEVSYNC            0x00010000l
-
-/*
- * Display hardware can return the current scan line.
- */
-#define DDCAPS_READSCANLINE            0x00020000l
-
-/*
- * Display hardware has stereo vision capabilities.  DDSCAPS_PRIMARYSURFACELEFT
- * can be created.
- */
-#define DDCAPS_STEREOVIEW              0x00040000l
-
-/*
- * Display hardware is capable of generating a vertical blank interrupt.
- */
-#define DDCAPS_VBI                     0x00080000l
-
-/*
- * Supports the use of z buffers with blt operations.
- */
-#define DDCAPS_ZBLTS                   0x00100000l
-
-/*
- * Supports Z Ordering of overlays.
- */
-#define DDCAPS_ZOVERLAYS               0x00200000l
-
-/*
- * Supports color key
- */
-#define DDCAPS_COLORKEY                        0x00400000l
-
-/*
- * Supports alpha surfaces
- */
-#define DDCAPS_ALPHA                   0x00800000l
-
-/*
- * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
- */
-#define DDCAPS_COLORKEYHWASSIST                0x01000000l
-
-/*
- * no hardware support at all
- */
-#define DDCAPS_NOHARDWARE              0x02000000l
-
-/*
- * Display hardware is capable of color fill with bltter
- */
-#define DDCAPS_BLTCOLORFILL            0x04000000l
-
-/*
- * Display hardware is bank switched, and potentially very slow at
- * random access to VRAM.
- */
-#define DDCAPS_BANKSWITCHED            0x08000000l
-
-/*
- * Display hardware is capable of depth filling Z-buffers with bltter
- */
-#define DDCAPS_BLTDEPTHFILL            0x10000000l
-
-/*
- * Display hardware is capable of clipping while bltting.
- */
-#define DDCAPS_CANCLIP                 0x20000000l
-
-/*
- * Display hardware is capable of clipping while stretch bltting.
- */
-#define DDCAPS_CANCLIPSTRETCHED                0x40000000l
-
-/*
- * Display hardware is capable of bltting to or from system memory
- */
-#define DDCAPS_CANBLTSYSMEM            0x80000000l
-
-
- /****************************************************************************
- *
- * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
- *
- ****************************************************************************/
-
-/*
- * Display hardware is certified
- */
-#define DDCAPS2_CERTIFIED              0x00000001l
-
-/*
- * Driver cannot interleave 2D operations (lock and blt) to surfaces with
- * Direct3D rendering operations between calls to BeginScene() and EndScene()
- */
-#define DDCAPS2_NO2DDURING3DSCENE       0x00000002l
-
-/*
- * Display hardware contains a video port
- */
-#define DDCAPS2_VIDEOPORT               0x00000004l
-
-/*
- * The overlay can be automatically flipped according to the video port
- * VSYNCs, providing automatic doubled buffered display of video port
- * data using an overlay
- */
-#define DDCAPS2_AUTOFLIPOVERLAY         0x00000008l
-
-/*
- * Overlay can display each field of interlaced data individually while
- * it is interleaved in memory without causing jittery artifacts.
- */
-#define DDCAPS2_CANBOBINTERLEAVED       0x00000010l
-
-/*
- * Overlay can display each field of interlaced data individually while
- * it is not interleaved in memory without causing jittery artifacts.
- */
-#define DDCAPS2_CANBOBNONINTERLEAVED    0x00000020l
-
-/*
- * The overlay surface contains color controls (brightness, sharpness, etc.)
- */
-#define DDCAPS2_COLORCONTROLOVERLAY     0x00000040l
-
-/*
- * The primary surface contains color controls (gamma, etc.)
- */
-#define DDCAPS2_COLORCONTROLPRIMARY     0x00000080l
-
-/*
- * RGBZ -> RGB supported for 16:16 RGB:Z
- */
-#define DDCAPS2_CANDROPZ16BIT           0x00000100l
-
-/*
- * Driver supports non-local video memory.
- */
-#define DDCAPS2_NONLOCALVIDMEM          0x00000200l
-
-/*
- * Dirver supports non-local video memory but has different capabilities for
- * non-local video memory surfaces. If this bit is set then so must
- * DDCAPS2_NONLOCALVIDMEM.
- */
-#define DDCAPS2_NONLOCALVIDMEMCAPS      0x00000400l
-
-/*
- * Driver neither requires nor prefers surfaces to be pagelocked when performing
- * blts involving system memory surfaces
- */
-#define DDCAPS2_NOPAGELOCKREQUIRED      0x00000800l
-
-/*
- * Driver can create surfaces which are wider than the primary surface
- */
-#define DDCAPS2_WIDESURFACES            0x00001000l
-
-/*
- * Driver supports bob without using a video port by handling the
- * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip.
- */
-#define DDCAPS2_CANFLIPODDEVEN          0x00002000l
-
-/*
- * Driver supports bob using hardware
- */
-#define DDCAPS2_CANBOBHARDWARE          0x00004000l
-
-/*
- * Driver supports bltting any FOURCC surface to another surface of the same FOURCC
- */
-#define DDCAPS2_COPYFOURCC              0x00008000l
-
-
-/*
- * Driver supports loadable gamma ramps for the primary surface
- */
-#define DDCAPS2_PRIMARYGAMMA            0x00020000l
-
-/*
- * Driver can render in windowed mode.
- */
-#define DDCAPS2_CANRENDERWINDOWED       0x00080000l
-
-/*
- * A calibrator is available to adjust the gamma ramp according to the
- * physical display properties so that the result will be identical on
- * all calibrated systems.
- */
-#define DDCAPS2_CANCALIBRATEGAMMA       0x00100000l
-
-/*
- * Indicates that the driver will respond to DDFLIP_INTERVALn flags
- */
-#define DDCAPS2_FLIPINTERVAL            0x00200000l
-
-/*
- * Indicates that the driver will respond to DDFLIP_NOVSYNC
- */
-#define DDCAPS2_FLIPNOVSYNC             0x00400000l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW FX ALPHA CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Supports alpha blending around the edge of a source color keyed surface.
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHAEDGEBLEND                0x00000001l
-
-/*
- * Supports alpha information in the pixel format.  The bit depth of alpha
- * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
- * more opaque as the alpha value increases.  (0 is transparent.)
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHAPIXELS           0x00000002l
-
-/*
- * Supports alpha information in the pixel format.  The bit depth of alpha
- * information in the pixel format can be 1,2,4, or 8. The alpha value
- * becomes more transparent as the alpha value increases.  (0 is opaque.)
- * This flag can only be set if DDCAPS_ALPHA is set.
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHAPIXELSNEG                0x00000004l
-
-/*
- * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
- * 1,2,4, or 8.         The alpha value becomes more opaque as the alpha value increases.
- * (0 is transparent.)
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHASURFACES         0x00000008l
-
-/*
- * The depth of the alpha channel data can range can be 1,2,4, or 8.
- * The NEG suffix indicates that this alpha channel becomes more transparent
- * as the alpha value increases. (0 is opaque.)         This flag can only be set if
- * DDCAPS_ALPHA is set.
- * For Blt.
- */
-#define DDFXALPHACAPS_BLTALPHASURFACESNEG      0x00000010l
-
-/*
- * Supports alpha blending around the edge of a source color keyed surface.
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND    0x00000020l
-
-/*
- * Supports alpha information in the pixel format.  The bit depth of alpha
- * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
- * more opaque as the alpha value increases.  (0 is transparent.)
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHAPIXELS       0x00000040l
-
-/*
- * Supports alpha information in the pixel format.  The bit depth of alpha
- * information in the pixel format can be 1,2,4, or 8. The alpha value
- * becomes more transparent as the alpha value increases.  (0 is opaque.)
- * This flag can only be set if DDCAPS_ALPHA is set.
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG    0x00000080l
-
-/*
- * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
- * 1,2,4, or 8.         The alpha value becomes more opaque as the alpha value increases.
- * (0 is transparent.)
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHASURFACES     0x00000100l
-
-/*
- * The depth of the alpha channel data can range can be 1,2,4, or 8.
- * The NEG suffix indicates that this alpha channel becomes more transparent
- * as the alpha value increases. (0 is opaque.)         This flag can only be set if
- * DDCAPS_ALPHA is set.
- * For Overlays.
- */
-#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG  0x00000200l
-
-#if DIRECTDRAW_VERSION < 0x0600
-#endif  //DIRECTDRAW_VERSION
-
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAW FX CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Uses arithmetic operations to stretch and shrink surfaces during blt
- * rather than pixel doubling techniques.  Along the Y axis.
- */
-#define DDFXCAPS_BLTARITHSTRETCHY      0x00000020l
-
-/*
- * Uses arithmetic operations to stretch during blt
- * rather than pixel doubling techniques.  Along the Y axis. Only
- * works for x1, x2, etc.
- */
-#define DDFXCAPS_BLTARITHSTRETCHYN     0x00000010l
-
-/*
- * Supports mirroring left to right in blt.
- */
-#define DDFXCAPS_BLTMIRRORLEFTRIGHT    0x00000040l
-
-/*
- * Supports mirroring top to bottom in blt.
- */
-#define DDFXCAPS_BLTMIRRORUPDOWN       0x00000080l
-
-/*
- * Supports arbitrary rotation for blts.
- */
-#define DDFXCAPS_BLTROTATION           0x00000100l
-
-/*
- * Supports 90 degree rotations for blts.
- */
-#define DDFXCAPS_BLTROTATION90         0x00000200l
-
-/*
- * DirectDraw supports arbitrary shrinking of a surface along the
- * x axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSHRINKX            0x00000400l
-
-/*
- * DirectDraw supports integer shrinking (1x,2x,) of a surface
- * along the x axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSHRINKXN           0x00000800l
-
-/*
- * DirectDraw supports arbitrary shrinking of a surface along the
- * y axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSHRINKY            0x00001000l
-
-/*
- * DirectDraw supports integer shrinking (1x,2x,) of a surface
- * along the y axis (vertical direction) for blts.
- */
-#define DDFXCAPS_BLTSHRINKYN           0x00002000l
-
-/*
- * DirectDraw supports arbitrary stretching of a surface along the
- * x axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSTRETCHX           0x00004000l
-
-/*
- * DirectDraw supports integer stretching (1x,2x,) of a surface
- * along the x axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSTRETCHXN          0x00008000l
-
-/*
- * DirectDraw supports arbitrary stretching of a surface along the
- * y axis (horizontal direction) for blts.
- */
-#define DDFXCAPS_BLTSTRETCHY           0x00010000l
-
-/*
- * DirectDraw supports integer stretching (1x,2x,) of a surface
- * along the y axis (vertical direction) for blts.
- */
-#define DDFXCAPS_BLTSTRETCHYN          0x00020000l
-
-/*
- * Uses arithmetic operations to stretch and shrink surfaces during
- * overlay rather than pixel doubling techniques.  Along the Y axis
- * for overlays.
- */
-#define DDFXCAPS_OVERLAYARITHSTRETCHY  0x00040000l
-
-/*
- * Uses arithmetic operations to stretch surfaces during
- * overlay rather than pixel doubling techniques.  Along the Y axis
- * for overlays. Only works for x1, x2, etc.
- */
-#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l
-
-/*
- * DirectDraw supports arbitrary shrinking of a surface along the
- * x axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSHRINKX                0x00080000l
-
-/*
- * DirectDraw supports integer shrinking (1x,2x,) of a surface
- * along the x axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSHRINKXN       0x00100000l
-
-/*
- * DirectDraw supports arbitrary shrinking of a surface along the
- * y axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSHRINKY                0x00200000l
-
-/*
- * DirectDraw supports integer shrinking (1x,2x,) of a surface
- * along the y axis (vertical direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSHRINKYN       0x00400000l
-
-/*
- * DirectDraw supports arbitrary stretching of a surface along the
- * x axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSTRETCHX       0x00800000l
-
-/*
- * DirectDraw supports integer stretching (1x,2x,) of a surface
- * along the x axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSTRETCHXN      0x01000000l
-
-/*
- * DirectDraw supports arbitrary stretching of a surface along the
- * y axis (horizontal direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSTRETCHY       0x02000000l
-
-/*
- * DirectDraw supports integer stretching (1x,2x,) of a surface
- * along the y axis (vertical direction) for overlays.
- */
-#define DDFXCAPS_OVERLAYSTRETCHYN      0x04000000l
-
-/*
- * DirectDraw supports mirroring of overlays across the vertical axis
- */
-#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT        0x08000000l
-
-/*
- * DirectDraw supports mirroring of overlays across the horizontal axis
- */
-#define DDFXCAPS_OVERLAYMIRRORUPDOWN   0x10000000l
-
-/*
- * Driver can do alpha blending for blits.
- */
-#define DDFXCAPS_BLTALPHA              0x00000001l
-
-/*
- * Driver can do geometric transformations (or warps) for blits.
- */
-#define DDFXCAPS_BLTTRANSFORM          0x00000002l
-
-/*
- * Driver can do surface-reconstruction filtering for warped blits.
- */
-#define DDFXCAPS_BLTFILTER             DDFXCAPS_BLTARITHSTRETCHY
-
-/*
- * Driver can do alpha blending for overlays.
- */
-#define DDFXCAPS_OVERLAYALPHA          0x00000004l
-
-/*
- * Driver can do geometric transformations (or warps) for overlays.
- */
-#define DDFXCAPS_OVERLAYTRANSFORM      0x20000000l
-
-/*
- * Driver can do surface-reconstruction filtering for warped overlays.
- */
-#define DDFXCAPS_OVERLAYFILTER                 DDFXCAPS_OVERLAYARITHSTRETCHY
-
-
-/****************************************************************************
- *
- * DIRECTDRAW STEREO VIEW CAPABILITIES
- *
- ****************************************************************************/
-
-/*
- * The stereo view is accomplished via enigma encoding.
- */
-#define DDSVCAPS_ENIGMA                        0x00000001l
-
-/*
- * The stereo view is accomplished via high frequency flickering.
- */
-#define DDSVCAPS_FLICKER               0x00000002l
-
-/*
- * The stereo view is accomplished via red and blue filters applied
- * to the left and right eyes. All images must adapt their colorspaces
- * for this process.
- */
-#define DDSVCAPS_REDBLUE               0x00000004l
-
-/*
- * The stereo view is accomplished with split screen technology.
- */
-#define DDSVCAPS_SPLIT                 0x00000008l
-
-/****************************************************************************
- *
- * DIRECTDRAWPALETTE CAPABILITIES
- *
- ****************************************************************************/
-
-/*
- * Index is 4 bits.  There are sixteen color entries in the palette table.
- */
-#define DDPCAPS_4BIT                   0x00000001l
-
-/*
- * Index is onto a 8 bit color index.  This field is only valid with the
- * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target
- * surface is in 8bpp. Each color entry is one byte long and is an index
- * into destination surface's 8bpp palette.
- */
-#define DDPCAPS_8BITENTRIES            0x00000002l
-
-/*
- * Index is 8 bits.  There are 256 color entries in the palette table.
- */
-#define DDPCAPS_8BIT                   0x00000004l
-
-/*
- * Indicates that this DIRECTDRAWPALETTE should use the palette color array
- * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE
- * object.
- */
-#define DDPCAPS_INITIALIZE             0x00000008l
-
-/*
- * This palette is the one attached to the primary surface.  Changing this
- * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified
- * and supported.
- */
-#define DDPCAPS_PRIMARYSURFACE         0x00000010l
-
-/*
- * This palette is the one attached to the primary surface left.  Changing
- * this table has immediate effect on the display for the left eye unless
- * DDPSETPAL_VSYNC is specified and supported.
- */
-#define DDPCAPS_PRIMARYSURFACELEFT     0x00000020l
-
-/*
- * This palette can have all 256 entries defined
- */
-#define DDPCAPS_ALLOW256               0x00000040l
-
-/*
- * This palette can have modifications to it synced with the monitors
- * refresh rate.
- */
-#define DDPCAPS_VSYNC                  0x00000080l
-
-/*
- * Index is 1 bit.  There are two color entries in the palette table.
- */
-#define DDPCAPS_1BIT                   0x00000100l
-
-/*
- * Index is 2 bit.  There are four color entries in the palette table.
- */
-#define DDPCAPS_2BIT                   0x00000200l
-
-/*
- * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value
- */
-#define DDPCAPS_ALPHA                  0x00000400l
-
-
-/****************************************************************************
- *
- * DIRECTDRAWPALETTE SETENTRY CONSTANTS
- *
- ****************************************************************************/
-
-
-/****************************************************************************
- *
- * DIRECTDRAWPALETTE GETENTRY CONSTANTS
- *
- ****************************************************************************/
-
-/* 0 is the only legal value */
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS
- *
- ****************************************************************************/
-
-/*
- * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData
- * must be set to sizeof(IUnknown*). DirectDraw will call AddRef through this
- * pointer and Release when the private data is destroyed. This includes when
- * the surface or palette is destroyed before such priovate data is destroyed.
- */
-#define DDSPD_IUNKNOWNPOINTER           0x00000001L
-
-/*
- * Private data is only valid for the current state of the object,
- * as determined by the uniqueness value.
- */
-#define DDSPD_VOLATILE                  0x00000002L
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE SETPALETTE CONSTANTS
- *
- ****************************************************************************/
-
-
-/****************************************************************************
- *
- * DIRECTDRAW BITDEPTH CONSTANTS
- *
- * NOTE:  These are only used to indicate supported bit depths.   These
- * are flags only, they are not to be used as an actual bit depth.   The
- * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual
- * bit depths in a surface or for changing the display mode.
- *
- ****************************************************************************/
-
-/*
- * 1 bit per pixel.
- */
-#define DDBD_1                 0x00004000l
-
-/*
- * 2 bits per pixel.
- */
-#define DDBD_2                 0x00002000l
-
-/*
- * 4 bits per pixel.
- */
-#define DDBD_4                 0x00001000l
-
-/*
- * 8 bits per pixel.
- */
-#define DDBD_8                 0x00000800l
-
-/*
- * 16 bits per pixel.
- */
-#define DDBD_16                        0x00000400l
-
-/*
- * 24 bits per pixel.
- */
-#define DDBD_24                        0X00000200l
-
-/*
- * 32 bits per pixel.
- */
-#define DDBD_32                        0x00000100l
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Set if the structure contains a color space.         Not set if the structure
- * contains a single color key.
- */
-#define DDCKEY_COLORSPACE      0x00000001l
-
-/*
- * Set if the structure specifies a color key or color space which is to be
- * used as a destination color key for blt operations.
- */
-#define DDCKEY_DESTBLT         0x00000002l
-
-/*
- * Set if the structure specifies a color key or color space which is to be
- * used as a destination color key for overlay operations.
- */
-#define DDCKEY_DESTOVERLAY     0x00000004l
-
-/*
- * Set if the structure specifies a color key or color space which is to be
- * used as a source color key for blt operations.
- */
-#define DDCKEY_SRCBLT          0x00000008l
-
-/*
- * Set if the structure specifies a color key or color space which is to be
- * used as a source color key for overlay operations.
- */
-#define DDCKEY_SRCOVERLAY      0x00000010l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW COLOR KEY CAPABILITY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Supports transparent blting using a color key to identify the replaceable
- * bits of the destination surface for RGB colors.
- */
-#define DDCKEYCAPS_DESTBLT                     0x00000001l
-
-/*
- * Supports transparent blting using a color space to identify the replaceable
- * bits of the destination surface for RGB colors.
- */
-#define DDCKEYCAPS_DESTBLTCLRSPACE             0x00000002l
-
-/*
- * Supports transparent blting using a color space to identify the replaceable
- * bits of the destination surface for YUV colors.
- */
-#define DDCKEYCAPS_DESTBLTCLRSPACEYUV          0x00000004l
-
-/*
- * Supports transparent blting using a color key to identify the replaceable
- * bits of the destination surface for YUV colors.
- */
-#define DDCKEYCAPS_DESTBLTYUV                  0x00000008l
-
-/*
- * Supports overlaying using colorkeying of the replaceable bits of the surface
- * being overlayed for RGB colors.
- */
-#define DDCKEYCAPS_DESTOVERLAY                 0x00000010l
-
-/*
- * Supports a color space as the color key for the destination for RGB colors.
- */
-#define DDCKEYCAPS_DESTOVERLAYCLRSPACE         0x00000020l
-
-/*
- * Supports a color space as the color key for the destination for YUV colors.
- */
-#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV      0x00000040l
-
-/*
- * Supports only one active destination color key value for visible overlay
- * surfaces.
- */
-#define DDCKEYCAPS_DESTOVERLAYONEACTIVE                0x00000080l
-
-/*
- * Supports overlaying using colorkeying of the replaceable bits of the
- * surface being overlayed for YUV colors.
- */
-#define DDCKEYCAPS_DESTOVERLAYYUV              0x00000100l
-
-/*
- * Supports transparent blting using the color key for the source with
- * this surface for RGB colors.
- */
-#define DDCKEYCAPS_SRCBLT                      0x00000200l
-
-/*
- * Supports transparent blting using a color space for the source with
- * this surface for RGB colors.
- */
-#define DDCKEYCAPS_SRCBLTCLRSPACE              0x00000400l
-
-/*
- * Supports transparent blting using a color space for the source with
- * this surface for YUV colors.
- */
-#define DDCKEYCAPS_SRCBLTCLRSPACEYUV           0x00000800l
-
-/*
- * Supports transparent blting using the color key for the source with
- * this surface for YUV colors.
- */
-#define DDCKEYCAPS_SRCBLTYUV                   0x00001000l
-
-/*
- * Supports overlays using the color key for the source with this
- * overlay surface for RGB colors.
- */
-#define DDCKEYCAPS_SRCOVERLAY                  0x00002000l
-
-/*
- * Supports overlays using a color space as the source color key for
- * the overlay surface for RGB colors.
- */
-#define DDCKEYCAPS_SRCOVERLAYCLRSPACE          0x00004000l
-
-/*
- * Supports overlays using a color space as the source color key for
- * the overlay surface for YUV colors.
- */
-#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV       0x00008000l
-
-/*
- * Supports only one active source color key value for visible
- * overlay surfaces.
- */
-#define DDCKEYCAPS_SRCOVERLAYONEACTIVE         0x00010000l
-
-/*
- * Supports overlays using the color key for the source with this
- * overlay surface for YUV colors.
- */
-#define DDCKEYCAPS_SRCOVERLAYYUV               0x00020000l
-
-/*
- * there are no bandwidth trade-offs for using colorkey with an overlay
- */
-#define DDCKEYCAPS_NOCOSTOVERLAY               0x00040000l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW PIXELFORMAT FLAGS
- *
- ****************************************************************************/
-
-/*
- * The surface has alpha channel information in the pixel format.
- */
-#define DDPF_ALPHAPIXELS                       0x00000001l
-
-/*
- * The pixel format contains alpha only information
- */
-#define DDPF_ALPHA                             0x00000002l
-
-/*
- * The FourCC code is valid.
- */
-#define DDPF_FOURCC                            0x00000004l
-
-/*
- * The surface is 4-bit color indexed.
- */
-#define DDPF_PALETTEINDEXED4                   0x00000008l
-
-/*
- * The surface is indexed into a palette which stores indices
- * into the destination surface's 8-bit palette.
- */
-#define DDPF_PALETTEINDEXEDTO8                 0x00000010l
-
-/*
- * The surface is 8-bit color indexed.
- */
-#define DDPF_PALETTEINDEXED8                   0x00000020l
-
-/*
- * The RGB data in the pixel format structure is valid.
- */
-#define DDPF_RGB                               0x00000040l
-
-/*
- * The surface will accept pixel data in the format specified
- * and compress it during the write.
- */
-#define DDPF_COMPRESSED                                0x00000080l
-
-/*
- * The surface will accept RGB data and translate it during
- * the write to YUV data.  The format of the data to be written
- * will be contained in the pixel format structure.  The DDPF_RGB
- * flag will be set.
- */
-#define DDPF_RGBTOYUV                          0x00000100l
-
-/*
- * pixel format is YUV - YUV data in pixel format struct is valid
- */
-#define DDPF_YUV                               0x00000200l
-
-/*
- * pixel format is a z buffer only surface
- */
-#define DDPF_ZBUFFER                           0x00000400l
-
-/*
- * The surface is 1-bit color indexed.
- */
-#define DDPF_PALETTEINDEXED1                   0x00000800l
-
-/*
- * The surface is 2-bit color indexed.
- */
-#define DDPF_PALETTEINDEXED2                   0x00001000l
-
-/*
- * The surface contains Z information in the pixels
- */
-#define DDPF_ZPIXELS                           0x00002000l
-
-/*
- * The surface contains stencil information along with Z
- */
-#define DDPF_STENCILBUFFER                     0x00004000l
-
-/*
- * Premultiplied alpha format -- the color components have been
- * premultiplied by the alpha component.
- */
-#define DDPF_ALPHAPREMULT                      0x00008000l
-
-
-/*
- * Luminance data in the pixel format is valid.
- * Use this flag for luminance-only or luminance+alpha surfaces,
- * the bit depth is then ddpf.dwLuminanceBitCount.
- */
-#define DDPF_LUMINANCE                          0x00020000l
-
-/*
- * Luminance data in the pixel format is valid.
- * Use this flag when hanging luminance off bumpmap surfaces,
- * the bit mask for the luminance portion of the pixel is then
- * ddpf.dwBumpLuminanceBitMask
- */
-#define DDPF_BUMPLUMINANCE                      0x00040000l
-
-/*
- * Bump map dUdV data in the pixel format is valid.
- */
-#define DDPF_BUMPDUDV                           0x00080000l
-
-/*===========================================================================
- *
- *
- * DIRECTDRAW CALLBACK FLAGS
- *
- *
- *==========================================================================*/
-
-/****************************************************************************
- *
- * DIRECTDRAW ENUMSURFACES FLAGS
- *
- ****************************************************************************/
-
-/*
- * Enumerate all of the surfaces that meet the search criterion.
- */
-#define DDENUMSURFACES_ALL                     0x00000001l
-
-/*
- * A search hit is a surface that matches the surface description.
- */
-#define DDENUMSURFACES_MATCH                   0x00000002l
-
-/*
- * A search hit is a surface that does not match the surface description.
- */
-#define DDENUMSURFACES_NOMATCH                 0x00000004l
-
-/*
- * Enumerate the first surface that can be created which meets the search criterion.
- */
-#define DDENUMSURFACES_CANBECREATED            0x00000008l
-
-/*
- * Enumerate the surfaces that already exist that meet the search criterion.
- */
-#define DDENUMSURFACES_DOESEXIST               0x00000010l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW SETDISPLAYMODE FLAGS
- *
- ****************************************************************************/
-
-/*
- * The desired mode is a standard VGA mode
- */
-#define DDSDM_STANDARDVGAMODE                   0x00000001l
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAW ENUMDISPLAYMODES FLAGS
- *
- ****************************************************************************/
-
-/*
- * Enumerate Modes with different refresh rates.  EnumDisplayModes guarantees
- * that a particular mode will be enumerated only once.  This flag specifies whether
- * the refresh rate is taken into account when determining if a mode is unique.
- */
-#define DDEDM_REFRESHRATES                     0x00000001l
-
-/*
- * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA
- * modes such as mode 0x13 in addition to the usual ModeX modes (which are always
- * enumerated if the application has previously called SetCooperativeLevel with the
- * DDSCL_ALLOWMODEX flag set).
- */
-#define DDEDM_STANDARDVGAMODES                  0x00000002L
-
-
-/****************************************************************************
- *
- * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
- *
- ****************************************************************************/
-
-/*
- * Exclusive mode owner will be responsible for the entire primary surface.
- * GDI can be ignored. used with DD
- */
-#define DDSCL_FULLSCREEN                       0x00000001l
-
-/*
- * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
- */
-#define DDSCL_ALLOWREBOOT                      0x00000002l
-
-/*
- * prevents DDRAW from modifying the application window.
- * prevents DDRAW from minimize/restore the application window on activation.
- */
-#define DDSCL_NOWINDOWCHANGES                  0x00000004l
-
-/*
- * app wants to work as a regular Windows application
- */
-#define DDSCL_NORMAL                           0x00000008l
-
-/*
- * app wants exclusive access
- */
-#define DDSCL_EXCLUSIVE                         0x00000010l
-
-
-/*
- * app can deal with non-windows display modes
- */
-#define DDSCL_ALLOWMODEX                        0x00000040l
-
-/*
- * this window will receive the focus messages
- */
-#define DDSCL_SETFOCUSWINDOW                    0x00000080l
-
-/*
- * this window is associated with the DDRAW object and will
- * cover the screen in fullscreen mode
- */
-#define DDSCL_SETDEVICEWINDOW                   0x00000100l
-
-/*
- * app wants DDRAW to create a window to be associated with the
- * DDRAW object
- */
-#define DDSCL_CREATEDEVICEWINDOW                0x00000200l
-
-/*
- * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D
- * take the global crtisec more frequently.
- */
-#define DDSCL_MULTITHREADED                     0x00000400l
-
-/*
- * App hints that it would like to keep the FPU set up for optimal Direct3D
- * performance (single precision and exceptions disabled) so Direct3D
- * does not need to explicitly set the FPU each time
- */
-#define DDSCL_FPUSETUP                          0x00000800l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW BLT FLAGS
- *
- ****************************************************************************/
-
-/*
- * Use the alpha information in the pixel format or the alpha channel surface
- * attached to the destination surface as the alpha channel for this blt.
- */
-#define DDBLT_ALPHADEST                                0x00000001l
-
-/*
- * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
- * for the destination surface for this blt.
- */
-#define DDBLT_ALPHADESTCONSTOVERRIDE           0x00000002l
-
-/*
- * The NEG suffix indicates that the destination surface becomes more
- * transparent as the alpha value increases. (0 is opaque)
- */
-#define DDBLT_ALPHADESTNEG                     0x00000004l
-
-/*
- * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
- * channel for the destination for this blt.
- */
-#define DDBLT_ALPHADESTSURFACEOVERRIDE         0x00000008l
-
-/*
- * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel
- * for the edges of the image that border the color key colors.
- */
-#define DDBLT_ALPHAEDGEBLEND                   0x00000010l
-
-/*
- * Use the alpha information in the pixel format or the alpha channel surface
- * attached to the source surface as the alpha channel for this blt.
- */
-#define DDBLT_ALPHASRC                         0x00000020l
-
-/*
- * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
- * for the source for this blt.
- */
-#define DDBLT_ALPHASRCCONSTOVERRIDE            0x00000040l
-
-/*
- * The NEG suffix indicates that the source surface becomes more transparent
- * as the alpha value increases. (0 is opaque)
- */
-#define DDBLT_ALPHASRCNEG                      0x00000080l
-
-/*
- * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
- * for the source for this blt.
- */
-#define DDBLT_ALPHASRCSURFACEOVERRIDE          0x00000100l
-
-/*
- * Do this blt asynchronously through the FIFO in the order received.  If
- * there is no room in the hardware FIFO fail the call.
- */
-#define DDBLT_ASYNC                            0x00000200l
-
-/*
- * Uses the dwFillColor field in the DDBLTFX structure as the RGB color
- * to fill the destination rectangle on the destination surface with.
- */
-#define DDBLT_COLORFILL                                0x00000400l
-
-/*
- * Uses the dwDDFX field in the DDBLTFX structure to specify the effects
- * to use for the blt.
- */
-#define DDBLT_DDFX                             0x00000800l
-
-/*
- * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
- * that are not part of the Win32 API.
- */
-#define DDBLT_DDROPS                           0x00001000l
-
-/*
- * Use the color key associated with the destination surface.
- */
-#define DDBLT_KEYDEST                          0x00002000l
-
-/*
- * Use the dckDestColorkey field in the DDBLTFX structure as the color key
- * for the destination surface.
- */
-#define DDBLT_KEYDESTOVERRIDE                  0x00004000l
-
-/*
- * Use the color key associated with the source surface.
- */
-#define DDBLT_KEYSRC                           0x00008000l
-
-/*
- * Use the dckSrcColorkey field in the DDBLTFX structure as the color key
- * for the source surface.
- */
-#define DDBLT_KEYSRCOVERRIDE                   0x00010000l
-
-/*
- * Use the dwROP field in the DDBLTFX structure for the raster operation
- * for this blt.  These ROPs are the same as the ones defined in the Win32 API.
- */
-#define DDBLT_ROP                              0x00020000l
-
-/*
- * Use the dwRotationAngle field in the DDBLTFX structure as the angle
- * (specified in 1/100th of a degree) to rotate the surface.
- */
-#define DDBLT_ROTATIONANGLE                    0x00040000l
-
-/*
- * Z-buffered blt using the z-buffers attached to the source and destination
- * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the
- * z-buffer opcode.
- */
-#define DDBLT_ZBUFFER                          0x00080000l
-
-/*
- * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field
- * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
- * for the destination.
- */
-#define DDBLT_ZBUFFERDESTCONSTOVERRIDE         0x00100000l
-
-/*
- * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode
- * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
- * respectively for the destination.
- */
-#define DDBLT_ZBUFFERDESTOVERRIDE              0x00200000l
-
-/*
- * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field
- * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
- * for the source.
- */
-#define DDBLT_ZBUFFERSRCCONSTOVERRIDE          0x00400000l
-
-/*
- * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode
- * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
- * respectively for the source.
- */
-#define DDBLT_ZBUFFERSRCOVERRIDE                0x00800000l
-
-/*
- * wait until the device is ready to handle the blt
- * this will cause blt to not return DDERR_WASSTILLDRAWING
- */
-#define DDBLT_WAIT                              0x01000000l
-
-/*
- * Uses the dwFillDepth field in the DDBLTFX structure as the depth value
- * to fill the destination rectangle on the destination Z-buffer surface
- * with.
- */
-#define DDBLT_DEPTHFILL                                0x02000000l
-
-
-/****************************************************************************
- *
- * BLTFAST FLAGS
- *
- ****************************************************************************/
-
-#define DDBLTFAST_NOCOLORKEY                    0x00000000
-#define DDBLTFAST_SRCCOLORKEY                   0x00000001
-#define DDBLTFAST_DESTCOLORKEY                  0x00000002
-#define DDBLTFAST_WAIT                          0x00000010
-
-
-
-
-/****************************************************************************
- *
- * FLIP FLAGS
- *
- ****************************************************************************/
-
-#define DDFLIP_WAIT                          0x00000001L
-
-/*
- * Indicates that the target surface contains the even field of video data.
- * This flag is only valid with an overlay surface.
- */
-#define DDFLIP_EVEN                          0x00000002L
-
-/*
- * Indicates that the target surface contains the odd field of video data.
- * This flag is only valid with an overlay surface.
- */
-#define DDFLIP_ODD                           0x00000004L
-
-/*
- * Causes DirectDraw to perform the physical flip immediately and return
- * to the application. Typically, what was the front buffer but is now the back
- * buffer will still be visible (depending on timing) until the next vertical 
- * retrace. Subsequent operations involving the two flipped surfaces will
- * not check to see if the physical flip has finished (i.e. will not return
- * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)).
- * This allows an application to perform Flips at a higher frequency than the
- * monitor refresh rate, but may introduce visible artifacts.
- * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set, 
- * DDFLIP_NOVSYNC has no effect.
- */
-#define DDFLIP_NOVSYNC                       0x00000008L
-
-
-/*
- * Flip Interval Flags. These flags indicate how many vertical retraces to wait between
- * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each
- * surface involved in the flip until the specified number of vertical retraces has
- * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set, 
- * DDFLIP_INTERVALn has no effect.
- */
-
-/*
- * DirectDraw will flip on every other vertical sync
- */
-#define DDFLIP_INTERVAL2                     0x02000000L
-
-
-/*
- * DirectDraw will flip on every third vertical sync
- */
-#define DDFLIP_INTERVAL3                     0x03000000L
-
-
-/*
- * DirectDraw will flip on every fourth vertical sync
- */
-#define DDFLIP_INTERVAL4                     0x04000000L
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAW SURFACE OVERLAY FLAGS
- *
- ****************************************************************************/
-
-/*
- * Use the alpha information in the pixel format or the alpha channel surface
- * attached to the destination surface as the alpha channel for the
- * destination overlay.
- */
-#define DDOVER_ALPHADEST                       0x00000001l
-
-/*
- * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
- * destination alpha channel for this overlay.
- */
-#define DDOVER_ALPHADESTCONSTOVERRIDE          0x00000002l
-
-/*
- * The NEG suffix indicates that the destination surface becomes more
- * transparent as the alpha value increases.
- */
-#define DDOVER_ALPHADESTNEG                    0x00000004l
-
-/*
- * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
- * channel destination for this overlay.
- */
-#define DDOVER_ALPHADESTSURFACEOVERRIDE                0x00000008l
-
-/*
- * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha
- * channel for the edges of the image that border the color key colors.
- */
-#define DDOVER_ALPHAEDGEBLEND                  0x00000010l
-
-/*
- * Use the alpha information in the pixel format or the alpha channel surface
- * attached to the source surface as the source alpha channel for this overlay.
- */
-#define DDOVER_ALPHASRC                                0x00000020l
-
-/*
- * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
- * alpha channel for this overlay.
- */
-#define DDOVER_ALPHASRCCONSTOVERRIDE           0x00000040l
-
-/*
- * The NEG suffix indicates that the source surface becomes more transparent
- * as the alpha value increases.
- */
-#define DDOVER_ALPHASRCNEG                     0x00000080l
-
-/*
- * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
- * source for this overlay.
- */
-#define DDOVER_ALPHASRCSURFACEOVERRIDE         0x00000100l
-
-/*
- * Turn this overlay off.
- */
-#define DDOVER_HIDE                            0x00000200l
-
-/*
- * Use the color key associated with the destination surface.
- */
-#define DDOVER_KEYDEST                         0x00000400l
-
-/*
- * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
- * for the destination surface
- */
-#define DDOVER_KEYDESTOVERRIDE                 0x00000800l
-
-/*
- * Use the color key associated with the source surface.
- */
-#define DDOVER_KEYSRC                          0x00001000l
-
-/*
- * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
- * for the source surface.
- */
-#define DDOVER_KEYSRCOVERRIDE                  0x00002000l
-
-/*
- * Turn this overlay on.
- */
-#define DDOVER_SHOW                            0x00004000l
-
-/*
- * Add a dirty rect to an emulated overlayed surface.
- */
-#define DDOVER_ADDDIRTYRECT                     0x00008000l
-
-/*
- * Redraw all dirty rects on an emulated overlayed surface.
- */
-#define DDOVER_REFRESHDIRTYRECTS               0x00010000l
-
-/*
- * Redraw the entire surface on an emulated overlayed surface.
- */
-#define DDOVER_REFRESHALL                      0x00020000l
-
-
-/*
- * Use the overlay FX flags to define special overlay FX
- */
-#define DDOVER_DDFX                            0x00080000l
-
-/*
- * Autoflip the overlay when ever the video port autoflips
- */
-#define DDOVER_AUTOFLIP                        0x00100000l
-
-/*
- * Display each field of video port data individually without
- * causing any jittery artifacts
- */
-#define DDOVER_BOB                             0x00200000l
-
-/*
- * Indicates that bob/weave decisions should not be overridden by other
- * interfaces.
- */
-#define DDOVER_OVERRIDEBOBWEAVE                        0x00400000l
-
-/*
- * Indicates that the surface memory is composed of interleaved fields.
- */
-#define DDOVER_INTERLEAVED                     0x00800000l
-
-/*
- * Indicates that bob will be performed using hardware rather than
- * software or emulated.
- */
-#define DDOVER_BOBHARDWARE                     0x01000000l
-
-
-
-
-
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE LOCK FLAGS
- *
- ****************************************************************************/
-
-/*
- * The default.         Set to indicate that Lock should return a valid memory pointer
- * to the top of the specified rectangle.  If no rectangle is specified then a
- * pointer to the top of the surface is returned.
- */
-#define DDLOCK_SURFACEMEMORYPTR                        0x00000000L     // default
-
-/*
- * Set to indicate that Lock should wait until it can obtain a valid memory
- * pointer before returning.  If this bit is set, Lock will never return
- * DDERR_WASSTILLDRAWING.
- */
-#define DDLOCK_WAIT                            0x00000001L
-
-/*
- * Set if an event handle is being passed to Lock.  Lock will trigger the event
- * when it can return the surface memory pointer requested.
- */
-#define DDLOCK_EVENT                           0x00000002L
-
-/*
- * Indicates that the surface being locked will only be read from.
- */
-#define DDLOCK_READONLY                                0x00000010L
-
-/*
- * Indicates that the surface being locked will only be written to
- */
-#define DDLOCK_WRITEONLY                       0x00000020L
-
-
-/*
- * Indicates that a system wide lock should not be taken when this surface
- * is locked. This has several advantages (cursor responsiveness, ability
- * to call more Windows functions, easier debugging) when locking video
- * memory surfaces. However, an application specifying this flag must
- * comply with a number of conditions documented in the help file.
- * Furthermore, this flag cannot be specified when locking the primary.
- */
-#define DDLOCK_NOSYSLOCK                        0x00000800L
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE PAGELOCK FLAGS
- *
- ****************************************************************************/
-
-/*
- * No flags defined at present
- */
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS
- *
- ****************************************************************************/
-
-/*
- * No flags defined at present
- */
-
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE BLT FX FLAGS
- *
- ****************************************************************************/
-
-/*
- * If stretching, use arithmetic stretching along the Y axis for this blt.
- */
-#define DDBLTFX_ARITHSTRETCHY                  0x00000001l
-
-/*
- * Do this blt mirroring the surface left to right.  Spin the
- * surface around its y-axis.
- */
-#define DDBLTFX_MIRRORLEFTRIGHT                        0x00000002l
-
-/*
- * Do this blt mirroring the surface up and down.  Spin the surface
- * around its x-axis.
- */
-#define DDBLTFX_MIRRORUPDOWN                   0x00000004l
-
-/*
- * Schedule this blt to avoid tearing.
- */
-#define DDBLTFX_NOTEARING                      0x00000008l
-
-/*
- * Do this blt rotating the surface one hundred and eighty degrees.
- */
-#define DDBLTFX_ROTATE180                      0x00000010l
-
-/*
- * Do this blt rotating the surface two hundred and seventy degrees.
- */
-#define DDBLTFX_ROTATE270                      0x00000020l
-
-/*
- * Do this blt rotating the surface ninety degrees.
- */
-#define DDBLTFX_ROTATE90                       0x00000040l
-
-/*
- * Do this z blt using dwZBufferLow and dwZBufferHigh as  range values
- * specified to limit the bits copied from the source surface.
- */
-#define DDBLTFX_ZBUFFERRANGE                   0x00000080l
-
-/*
- * Do this z blt adding the dwZBufferBaseDest to each of the sources z values
- * before comparing it with the desting z values.
- */
-#define DDBLTFX_ZBUFFERBASEDEST                        0x00000100l
-
-/****************************************************************************
- *
- * DIRECTDRAWSURFACE OVERLAY FX FLAGS
- *
- ****************************************************************************/
-
-/*
- * If stretching, use arithmetic stretching along the Y axis for this overlay.
- */
-#define DDOVERFX_ARITHSTRETCHY                 0x00000001l
-
-/*
- * Mirror the overlay across the vertical axis
- */
-#define DDOVERFX_MIRRORLEFTRIGHT               0x00000002l
-
-/*
- * Mirror the overlay across the horizontal axis
- */
-#define DDOVERFX_MIRRORUPDOWN                  0x00000004l
-
-/****************************************************************************
- *
- * Flags for dwDDFX member of DDSPRITEFX structure
- *
- ****************************************************************************/
-/*
- * Use affine transformation matrix in fTransform member.
- */
-#define DDSPRITEFX_AFFINETRANSFORM             0x00000001l
-
-/*
- * Use RGBA scaling factors in ddrgbaScaleFactors member.
- */
-#define DDSPRITEFX_RGBASCALING                 0x00000002l
-
-/*
- * Degrade RGBA scaling factors to accommodate driver's capabilities.
- */
-#define DDSPRITEFX_DEGRADERGBASCALING          0x00000004l
-
-/*
- * Do bilinear filtering of stretched or warped sprite.
- */
-#define DDSPRITEFX_BILINEARFILTER              0x00000008l
-
-/*
- * Do "blur" filtering of stretched or warped sprite.
- */
-#define DDSPRITEFX_BLURFILTER                  0x00000010l
-
-/*
- * Do "flat" filtering of stretched or warped sprite.
- */
-#define DDSPRITEFX_FLATFILTER                  0x00000020l
-
-/*
- * Degrade filtering operation to accommodate driver's capabilities.
- */
-#define DDSPRITEFX_DEGRADEFILTER               0x00000040l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW WAITFORVERTICALBLANK FLAGS
- *
- ****************************************************************************/
-
-/*
- * return when the vertical blank interval begins
- */
-#define DDWAITVB_BLOCKBEGIN                    0x00000001l
-
-/*
- * set up an event to trigger when the vertical blank begins
- */
-#define DDWAITVB_BLOCKBEGINEVENT               0x00000002l
-
-/*
- * return when the vertical blank interval ends and display begins
- */
-#define DDWAITVB_BLOCKEND                      0x00000004l
-
-/****************************************************************************
- *
- * DIRECTDRAW GETFLIPSTATUS FLAGS
- *
- ****************************************************************************/
-
-/*
- * is it OK to flip now?
- */
-#define DDGFS_CANFLIP                  0x00000001l
-
-/*
- * is the last flip finished?
- */
-#define DDGFS_ISFLIPDONE               0x00000002l
-
-/****************************************************************************
- *
- * DIRECTDRAW GETBLTSTATUS FLAGS
- *
- ****************************************************************************/
-
-/*
- * is it OK to blt now?
- */
-#define DDGBS_CANBLT                   0x00000001l
-
-/*
- * is the blt to the surface finished?
- */
-#define DDGBS_ISBLTDONE                        0x00000002l
-
-
-/****************************************************************************
- *
- * DIRECTDRAW ENUMOVERLAYZORDER FLAGS
- *
- ****************************************************************************/
-
-/*
- * Enumerate overlays back to front.
- */
-#define DDENUMOVERLAYZ_BACKTOFRONT     0x00000000l
-
-/*
- * Enumerate overlays front to back
- */
-#define DDENUMOVERLAYZ_FRONTTOBACK     0x00000001l
-
-/****************************************************************************
- *
- * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
- *
- ****************************************************************************/
-
-/*
- * Send overlay to front
- */
-#define DDOVERZ_SENDTOFRONT            0x00000000l
-
-/*
- * Send overlay to back
- */
-#define DDOVERZ_SENDTOBACK             0x00000001l
-
-/*
- * Move Overlay forward
- */
-#define DDOVERZ_MOVEFORWARD            0x00000002l
-
-/*
- * Move Overlay backward
- */
-#define DDOVERZ_MOVEBACKWARD           0x00000003l
-
-/*
- * Move Overlay in front of relative surface
- */
-#define DDOVERZ_INSERTINFRONTOF                0x00000004l
-
-/*
- * Move Overlay in back of relative surface
- */
-#define DDOVERZ_INSERTINBACKOF         0x00000005l
-
-
-
-/****************************************************************************
- *
- * DIRECTDRAW SETGAMMARAMP FLAGS
- *
- ****************************************************************************/
-
-/*
- * Request calibrator to adjust the gamma ramp according to the physical
- * properties of the display so that the result should appear identical
- * on all systems.
- */
-#define DDSGR_CALIBRATE                        0x00000001L
-
-
-/*===========================================================================
- *
- *
- * DIRECTDRAW RETURN CODES
- *
- * The return values from DirectDraw Commands and Surface that return an HRESULT
- * are codes from DirectDraw concerning the results of the action
- * requested by DirectDraw.
- *
- *==========================================================================*/
-
-/*
- * Status is OK
- *
- * Issued by: DirectDraw Commands and all callbacks
- */
-#define DD_OK                                  0
-#define DD_FALSE                                S_FALSE
-
-/****************************************************************************
- *
- * DIRECTDRAW ENUMCALLBACK RETURN VALUES
- *
- * EnumCallback returns are used to control the flow of the DIRECTDRAW and
- * DIRECTDRAWSURFACE object enumerations.   They can only be returned by
- * enumeration callback routines.
- *
- ****************************************************************************/
-
-/*
- * stop the enumeration
- */
-#define DDENUMRET_CANCEL                       0
-
-/*
- * continue the enumeration
- */
-#define DDENUMRET_OK                           1
-
-/****************************************************************************
- *
- * DIRECTDRAW ERRORS
- *
- * Errors are represented by negative values and cannot be combined.
- *
- ****************************************************************************/
-
-/*
- * This object is already initialized
- */
-#define DDERR_ALREADYINITIALIZED               MAKE_DDHRESULT( 5 )
-
-/*
- * This surface can not be attached to the requested surface.
- */
-#define DDERR_CANNOTATTACHSURFACE              MAKE_DDHRESULT( 10 )
-
-/*
- * This surface can not be detached from the requested surface.
- */
-#define DDERR_CANNOTDETACHSURFACE              MAKE_DDHRESULT( 20 )
-
-/*
- * Support is currently not available.
- */
-#define DDERR_CURRENTLYNOTAVAIL                        MAKE_DDHRESULT( 40 )
-
-/*
- * An exception was encountered while performing the requested operation
- */
-#define DDERR_EXCEPTION                                MAKE_DDHRESULT( 55 )
-
-/*
- * Generic failure.
- */
-#define DDERR_GENERIC                          E_FAIL
-
-/*
- * Height of rectangle provided is not a multiple of reqd alignment
- */
-#define DDERR_HEIGHTALIGN                      MAKE_DDHRESULT( 90 )
-
-/*
- * Unable to match primary surface creation request with existing
- * primary surface.
- */
-#define DDERR_INCOMPATIBLEPRIMARY              MAKE_DDHRESULT( 95 )
-
-/*
- * One or more of the caps bits passed to the callback are incorrect.
- */
-#define DDERR_INVALIDCAPS                      MAKE_DDHRESULT( 100 )
-
-/*
- * DirectDraw does not support provided Cliplist.
- */
-#define DDERR_INVALIDCLIPLIST                  MAKE_DDHRESULT( 110 )
-
-/*
- * DirectDraw does not support the requested mode
- */
-#define DDERR_INVALIDMODE                      MAKE_DDHRESULT( 120 )
-
-/*
- * DirectDraw received a pointer that was an invalid DIRECTDRAW object.
- */
-#define DDERR_INVALIDOBJECT                    MAKE_DDHRESULT( 130 )
-
-/*
- * One or more of the parameters passed to the callback function are
- * incorrect.
- */
-#define DDERR_INVALIDPARAMS                    E_INVALIDARG
-
-/*
- * pixel format was invalid as specified
- */
-#define DDERR_INVALIDPIXELFORMAT               MAKE_DDHRESULT( 145 )
-
-/*
- * Rectangle provided was invalid.
- */
-#define DDERR_INVALIDRECT                      MAKE_DDHRESULT( 150 )
-
-/*
- * Operation could not be carried out because one or more surfaces are locked
- */
-#define DDERR_LOCKEDSURFACES                   MAKE_DDHRESULT( 160 )
-
-/*
- * There is no 3D present.
- */
-#define DDERR_NO3D                             MAKE_DDHRESULT( 170 )
-
-/*
- * Operation could not be carried out because there is no alpha accleration
- * hardware present or available.
- */
-#define DDERR_NOALPHAHW                                MAKE_DDHRESULT( 180 )
-
-
-/*
- * no clip list available
- */
-#define DDERR_NOCLIPLIST                       MAKE_DDHRESULT( 205 )
-
-/*
- * Operation could not be carried out because there is no color conversion
- * hardware present or available.
- */
-#define DDERR_NOCOLORCONVHW                    MAKE_DDHRESULT( 210 )
-
-/*
- * Create function called without DirectDraw object method SetCooperativeLevel
- * being called.
- */
-#define DDERR_NOCOOPERATIVELEVELSET            MAKE_DDHRESULT( 212 )
-
-/*
- * Surface doesn't currently have a color key
- */
-#define DDERR_NOCOLORKEY                       MAKE_DDHRESULT( 215 )
-
-/*
- * Operation could not be carried out because there is no hardware support
- * of the dest color key.
- */
-#define DDERR_NOCOLORKEYHW                     MAKE_DDHRESULT( 220 )
-
-/*
- * No DirectDraw support possible with current display driver
- */
-#define DDERR_NODIRECTDRAWSUPPORT              MAKE_DDHRESULT( 222 )
-
-/*
- * Operation requires the application to have exclusive mode but the
- * application does not have exclusive mode.
- */
-#define DDERR_NOEXCLUSIVEMODE                  MAKE_DDHRESULT( 225 )
-
-/*
- * Flipping visible surfaces is not supported.
- */
-#define DDERR_NOFLIPHW                         MAKE_DDHRESULT( 230 )
-
-/*
- * There is no GDI present.
- */
-#define DDERR_NOGDI                            MAKE_DDHRESULT( 240 )
-
-/*
- * Operation could not be carried out because there is no hardware present
- * or available.
- */
-#define DDERR_NOMIRRORHW                       MAKE_DDHRESULT( 250 )
-
-/*
- * Requested item was not found
- */
-#define DDERR_NOTFOUND                         MAKE_DDHRESULT( 255 )
-
-/*
- * Operation could not be carried out because there is no overlay hardware
- * present or available.
- */
-#define DDERR_NOOVERLAYHW                      MAKE_DDHRESULT( 260 )
-
-/*
- * Operation could not be carried out because the source and destination
- * rectangles are on the same surface and overlap each other.
- */
-#define DDERR_OVERLAPPINGRECTS                 MAKE_DDHRESULT( 270 )
-
-/*
- * Operation could not be carried out because there is no appropriate raster
- * op hardware present or available.
- */
-#define DDERR_NORASTEROPHW                     MAKE_DDHRESULT( 280 )
-
-/*
- * Operation could not be carried out because there is no rotation hardware
- * present or available.
- */
-#define DDERR_NOROTATIONHW                     MAKE_DDHRESULT( 290 )
-
-/*
- * Operation could not be carried out because there is no hardware support
- * for stretching
- */
-#define DDERR_NOSTRETCHHW                      MAKE_DDHRESULT( 310 )
-
-/*
- * DirectDrawSurface is not in 4 bit color palette and the requested operation
- * requires 4 bit color palette.
- */
-#define DDERR_NOT4BITCOLOR                     MAKE_DDHRESULT( 316 )
-
-/*
- * DirectDrawSurface is not in 4 bit color index palette and the requested
- * operation requires 4 bit color index palette.
- */
-#define DDERR_NOT4BITCOLORINDEX                        MAKE_DDHRESULT( 317 )
-
-/*
- * DirectDraw Surface is not in 8 bit color mode and the requested operation
- * requires 8 bit color.
- */
-#define DDERR_NOT8BITCOLOR                     MAKE_DDHRESULT( 320 )
-
-/*
- * Operation could not be carried out because there is no texture mapping
- * hardware present or available.
- */
-#define DDERR_NOTEXTUREHW                      MAKE_DDHRESULT( 330 )
-
-/*
- * Operation could not be carried out because there is no hardware support
- * for vertical blank synchronized operations.
- */
-#define DDERR_NOVSYNCHW                                MAKE_DDHRESULT( 335 )
-
-/*
- * Operation could not be carried out because there is no hardware support
- * for zbuffer blting.
- */
-#define DDERR_NOZBUFFERHW                      MAKE_DDHRESULT( 340 )
-
-/*
- * Overlay surfaces could not be z layered based on their BltOrder because
- * the hardware does not support z layering of overlays.
- */
-#define DDERR_NOZOVERLAYHW                     MAKE_DDHRESULT( 350 )
-
-/*
- * The hardware needed for the requested operation has already been
- * allocated.
- */
-#define DDERR_OUTOFCAPS                                MAKE_DDHRESULT( 360 )
-
-/*
- * DirectDraw does not have enough memory to perform the operation.
- */
-#define DDERR_OUTOFMEMORY                      E_OUTOFMEMORY
-
-/*
- * DirectDraw does not have enough memory to perform the operation.
- */
-#define DDERR_OUTOFVIDEOMEMORY                 MAKE_DDHRESULT( 380 )
-
-/*
- * hardware does not support clipped overlays
- */
-#define DDERR_OVERLAYCANTCLIP                  MAKE_DDHRESULT( 382 )
-
-/*
- * Can only have ony color key active at one time for overlays
- */
-#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE     MAKE_DDHRESULT( 384 )
-
-/*
- * Access to this palette is being refused because the palette is already
- * locked by another thread.
- */
-#define DDERR_PALETTEBUSY                      MAKE_DDHRESULT( 387 )
-
-/*
- * No src color key specified for this operation.
- */
-#define DDERR_COLORKEYNOTSET                   MAKE_DDHRESULT( 400 )
-
-/*
- * This surface is already attached to the surface it is being attached to.
- */
-#define DDERR_SURFACEALREADYATTACHED           MAKE_DDHRESULT( 410 )
-
-/*
- * This surface is already a dependency of the surface it is being made a
- * dependency of.
- */
-#define DDERR_SURFACEALREADYDEPENDENT          MAKE_DDHRESULT( 420 )
-
-/*
- * Access to this surface is being refused because the surface is already
- * locked by another thread.
- */
-#define DDERR_SURFACEBUSY                      MAKE_DDHRESULT( 430 )
-
-/*
- * Access to this surface is being refused because no driver exists
- * which can supply a pointer to the surface.
- * This is most likely to happen when attempting to lock the primary
- * surface when no DCI provider is present.
- * Will also happen on attempts to lock an optimized surface.
- */
-#define DDERR_CANTLOCKSURFACE                   MAKE_DDHRESULT( 435 )
-
-/*
- * Access to Surface refused because Surface is obscured.
- */
-#define DDERR_SURFACEISOBSCURED                        MAKE_DDHRESULT( 440 )
-
-/*
- * Access to this surface is being refused because the surface is gone.
- * The DIRECTDRAWSURFACE object representing this surface should
- * have Restore called on it.
- */
-#define DDERR_SURFACELOST                      MAKE_DDHRESULT( 450 )
-
-/*
- * The requested surface is not attached.
- */
-#define DDERR_SURFACENOTATTACHED               MAKE_DDHRESULT( 460 )
-
-/*
- * Height requested by DirectDraw is too large.
- */
-#define DDERR_TOOBIGHEIGHT                     MAKE_DDHRESULT( 470 )
-
-/*
- * Size requested by DirectDraw is too large --         The individual height and
- * width are OK.
- */
-#define DDERR_TOOBIGSIZE                       MAKE_DDHRESULT( 480 )
-
-/*
- * Width requested by DirectDraw is too large.
- */
-#define DDERR_TOOBIGWIDTH                      MAKE_DDHRESULT( 490 )
-
-/*
- * Action not supported.
- */
-#define DDERR_UNSUPPORTED                      E_NOTIMPL
-
-/*
- * FOURCC format requested is unsupported by DirectDraw
- */
-#define DDERR_UNSUPPORTEDFORMAT                        MAKE_DDHRESULT( 510 )
-
-/*
- * Bitmask in the pixel format requested is unsupported by DirectDraw
- */
-#define DDERR_UNSUPPORTEDMASK                  MAKE_DDHRESULT( 520 )
-
-/*
- * The specified stream contains invalid data
- */
-#define DDERR_INVALIDSTREAM                     MAKE_DDHRESULT( 521 )
-
-/*
- * vertical blank is in progress
- */
-#define DDERR_VERTICALBLANKINPROGRESS          MAKE_DDHRESULT( 537 )
-
-/*
- * Informs DirectDraw that the previous Blt which is transfering information
- * to or from this Surface is incomplete.
- */
-#define DDERR_WASSTILLDRAWING                  MAKE_DDHRESULT( 540 )
-
-
-/*
- * Rectangle provided was not horizontally aligned on reqd. boundary
- */
-#define DDERR_XALIGN                           MAKE_DDHRESULT( 560 )
-
-/*
- * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver
- * identifier.
- */
-#define DDERR_INVALIDDIRECTDRAWGUID            MAKE_DDHRESULT( 561 )
-
-/*
- * A DirectDraw object representing this driver has already been created
- * for this process.
- */
-#define DDERR_DIRECTDRAWALREADYCREATED         MAKE_DDHRESULT( 562 )
-
-/*
- * A hardware only DirectDraw object creation was attempted but the driver
- * did not support any hardware.
- */
-#define DDERR_NODIRECTDRAWHW                   MAKE_DDHRESULT( 563 )
-
-/*
- * this process already has created a primary surface
- */
-#define DDERR_PRIMARYSURFACEALREADYEXISTS      MAKE_DDHRESULT( 564 )
-
-/*
- * software emulation not available.
- */
-#define DDERR_NOEMULATION                      MAKE_DDHRESULT( 565 )
-
-/*
- * region passed to Clipper::GetClipList is too small.
- */
-#define DDERR_REGIONTOOSMALL                   MAKE_DDHRESULT( 566 )
-
-/*
- * an attempt was made to set a clip list for a clipper objec that
- * is already monitoring an hwnd.
- */
-#define DDERR_CLIPPERISUSINGHWND               MAKE_DDHRESULT( 567 )
-
-/*
- * No clipper object attached to surface object
- */
-#define DDERR_NOCLIPPERATTACHED                        MAKE_DDHRESULT( 568 )
-
-/*
- * Clipper notification requires an HWND or
- * no HWND has previously been set as the CooperativeLevel HWND.
- */
-#define DDERR_NOHWND                           MAKE_DDHRESULT( 569 )
-
-/*
- * HWND used by DirectDraw CooperativeLevel has been subclassed,
- * this prevents DirectDraw from restoring state.
- */
-#define DDERR_HWNDSUBCLASSED                   MAKE_DDHRESULT( 570 )
-
-/*
- * The CooperativeLevel HWND has already been set.
- * It can not be reset while the process has surfaces or palettes created.
- */
-#define DDERR_HWNDALREADYSET                   MAKE_DDHRESULT( 571 )
-
-/*
- * No palette object attached to this surface.
- */
-#define DDERR_NOPALETTEATTACHED                        MAKE_DDHRESULT( 572 )
-
-/*
- * No hardware support for 16 or 256 color palettes.
- */
-#define DDERR_NOPALETTEHW                      MAKE_DDHRESULT( 573 )
-
-/*
- * If a clipper object is attached to the source surface passed into a
- * BltFast call.
- */
-#define DDERR_BLTFASTCANTCLIP                  MAKE_DDHRESULT( 574 )
-
-/*
- * No blter.
- */
-#define DDERR_NOBLTHW                          MAKE_DDHRESULT( 575 )
-
-/*
- * No DirectDraw ROP hardware.
- */
-#define DDERR_NODDROPSHW                       MAKE_DDHRESULT( 576 )
-
-/*
- * returned when GetOverlayPosition is called on a hidden overlay
- */
-#define DDERR_OVERLAYNOTVISIBLE                        MAKE_DDHRESULT( 577 )
-
-/*
- * returned when GetOverlayPosition is called on a overlay that UpdateOverlay
- * has never been called on to establish a destionation.
- */
-#define DDERR_NOOVERLAYDEST                    MAKE_DDHRESULT( 578 )
-
-/*
- * returned when the position of the overlay on the destionation is no longer
- * legal for that destionation.
- */
-#define DDERR_INVALIDPOSITION                  MAKE_DDHRESULT( 579 )
-
-/*
- * returned when an overlay member is called for a non-overlay surface
- */
-#define DDERR_NOTAOVERLAYSURFACE               MAKE_DDHRESULT( 580 )
-
-/*
- * An attempt was made to set the cooperative level when it was already
- * set to exclusive.
- */
-#define DDERR_EXCLUSIVEMODEALREADYSET          MAKE_DDHRESULT( 581 )
-
-/*
- * An attempt has been made to flip a surface that is not flippable.
- */
-#define DDERR_NOTFLIPPABLE                     MAKE_DDHRESULT( 582 )
-
-/*
- * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly
- * created.
- */
-#define DDERR_CANTDUPLICATE                    MAKE_DDHRESULT( 583 )
-
-/*
- * Surface was not locked.  An attempt to unlock a surface that was not
- * locked at all, or by this process, has been attempted.
- */
-#define DDERR_NOTLOCKED                                MAKE_DDHRESULT( 584 )
-
-/*
- * Windows can not create any more DCs, or a DC was requested for a paltte-indexed
- * surface when the surface had no palette AND the display mode was not palette-indexed
- * (in this case DirectDraw cannot select a proper palette into the DC)
- */
-#define DDERR_CANTCREATEDC                     MAKE_DDHRESULT( 585 )
-
-/*
- * No DC was ever created for this surface.
- */
-#define DDERR_NODC                             MAKE_DDHRESULT( 586 )
-
-/*
- * This surface can not be restored because it was created in a different
- * mode.
- */
-#define DDERR_WRONGMODE                                MAKE_DDHRESULT( 587 )
-
-/*
- * This surface can not be restored because it is an implicitly created
- * surface.
- */
-#define DDERR_IMPLICITLYCREATED                        MAKE_DDHRESULT( 588 )
-
-/*
- * The surface being used is not a palette-based surface
- */
-#define DDERR_NOTPALETTIZED                    MAKE_DDHRESULT( 589 )
-
-
-/*
- * The display is currently in an unsupported mode
- */
-#define DDERR_UNSUPPORTEDMODE                  MAKE_DDHRESULT( 590 )
-
-/*
- * Operation could not be carried out because there is no mip-map
- * texture mapping hardware present or available.
- */
-#define DDERR_NOMIPMAPHW                       MAKE_DDHRESULT( 591 )
-
-/*
- * The requested action could not be performed because the surface was of
- * the wrong type.
- */
-#define DDERR_INVALIDSURFACETYPE                MAKE_DDHRESULT( 592 )
-
-
-
-/*
- * Device does not support optimized surfaces, therefore no video memory optimized surfaces
- */
-#define DDERR_NOOPTIMIZEHW                      MAKE_DDHRESULT( 600 )
-
-/*
- * Surface is an optimized surface, but has not yet been allocated any memory
- */
-#define DDERR_NOTLOADED                         MAKE_DDHRESULT( 601 )
-
-/*
- * Attempt was made to create or set a device window without first setting
- * the focus window
- */
-#define DDERR_NOFOCUSWINDOW                     MAKE_DDHRESULT( 602 )
-
-/*
- * A DC has already been returned for this surface. Only one DC can be
- * retrieved per surface.
- */
-#define DDERR_DCALREADYCREATED                 MAKE_DDHRESULT( 620 )
-
-/*
- * An attempt was made to allocate non-local video memory from a device
- * that does not support non-local video memory.
- */
-#define DDERR_NONONLOCALVIDMEM                  MAKE_DDHRESULT( 630 )
-
-/*
- * The attempt to page lock a surface failed.
- */
-#define DDERR_CANTPAGELOCK                     MAKE_DDHRESULT( 640 )
-
-
-/*
- * The attempt to page unlock a surface failed.
- */
-#define DDERR_CANTPAGEUNLOCK                   MAKE_DDHRESULT( 660 )
-
-/*
- * An attempt was made to page unlock a surface with no outstanding page locks.
- */
-#define DDERR_NOTPAGELOCKED                    MAKE_DDHRESULT( 680 )
-
-/*
- * There is more data available than the specified buffer size could hold
- */
-#define DDERR_MOREDATA                                 MAKE_DDHRESULT( 690 )
-
-/*
- * The data has expired and is therefore no longer valid.
- */
-#define DDERR_EXPIRED                           MAKE_DDHRESULT( 691 )
-
-/*
- * The video port is not active
- */
-#define DDERR_VIDEONOTACTIVE                           MAKE_DDHRESULT( 695 )
-
-/*
- * Surfaces created by one direct draw device cannot be used directly by
- * another direct draw device.
- */
-#define DDERR_DEVICEDOESNTOWNSURFACE                   MAKE_DDHRESULT( 699 )
-
-
-/*
- * An attempt was made to invoke an interface member of a DirectDraw object
- * created by CoCreateInstance() before it was initialized.
- */
-#define DDERR_NOTINITIALIZED                    CO_E_NOTINITIALIZED
-
-
-/* Alpha bit depth constants */
-
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
-
diff --git a/misc/builddeps/win64/dx/include/dinput.h b/misc/builddeps/win64/dx/include/dinput.h
deleted file mode 100644 (file)
index 5bf9f5a..0000000
+++ /dev/null
@@ -1,1849 +0,0 @@
-/****************************************************************************
- *
- *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
- *
- *  File:       dinput.h
- *  Content:    DirectInput include file
- *
- ****************************************************************************/
-
-#ifndef __DINPUT_INCLUDED__
-#define __DINPUT_INCLUDED__
-
-#ifndef DIJ_RINGZERO
-
-#ifdef _WIN32
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef DIRECTINPUT_VERSION
-#define DIRECTINPUT_VERSION         0x0500
-#endif
-
-#ifndef DIJ_RINGZERO
-/****************************************************************************
- *
- *      Class IDs
- *
- ****************************************************************************/
-
-DEFINE_GUID(CLSID_DirectInput,      0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(CLSID_DirectInputDevice,0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-/****************************************************************************
- *
- *      Interfaces
- *
- ****************************************************************************/
-
-DEFINE_GUID(IID_IDirectInputA,     0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputW,     0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInput2A,    0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInput2W,    0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputDevice2A,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputDevice2W,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(IID_IDirectInputEffect,  0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-
-/****************************************************************************
- *
- *      Predefined object types
- *
- ****************************************************************************/
-
-DEFINE_GUID(GUID_XAxis,   0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_YAxis,   0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_ZAxis,   0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_RxAxis,  0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_RyAxis,  0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_RzAxis,  0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_Slider,  0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(GUID_Button,  0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_Key,     0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(GUID_POV,     0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(GUID_Unknown, 0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-/****************************************************************************
- *
- *      Predefined product GUIDs
- *
- ****************************************************************************/
-
-DEFINE_GUID(GUID_SysMouse,   0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_Joystick   ,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-/****************************************************************************
- *
- *      Predefined force feedback effects
- *
- ****************************************************************************/
-
-DEFINE_GUID(GUID_ConstantForce,0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_RampForce,    0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Square,       0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Sine,         0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Triangle,     0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_SawtoothUp,   0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Spring,       0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Damper,       0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Inertia,      0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Friction,     0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_CustomForce,  0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *      Interfaces and Structures...
- *
- ****************************************************************************/
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-
-/****************************************************************************
- *
- *      IDirectInputEffect
- *
- ****************************************************************************/
-
-#define DIEFT_ALL                   0x00000000
-
-#define DIEFT_CONSTANTFORCE         0x00000001
-#define DIEFT_RAMPFORCE             0x00000002
-#define DIEFT_PERIODIC              0x00000003
-#define DIEFT_CONDITION             0x00000004
-#define DIEFT_CUSTOMFORCE           0x00000005
-#define DIEFT_HARDWARE              0x000000FF
-
-#define DIEFT_FFATTACK              0x00000200
-#define DIEFT_FFFADE                0x00000400
-#define DIEFT_SATURATION            0x00000800
-#define DIEFT_POSNEGCOEFFICIENTS    0x00001000
-#define DIEFT_POSNEGSATURATION      0x00002000
-#define DIEFT_DEADBAND              0x00004000
-
-#define DIEFT_GETTYPE(n)            LOBYTE(n)
-
-#define DI_DEGREES                  100
-#define DI_FFNOMINALMAX             10000
-#define DI_SECONDS                  1000000
-
-typedef struct DICONSTANTFORCE {
-    LONG  lMagnitude;
-} DICONSTANTFORCE, *LPDICONSTANTFORCE;
-typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;
-
-typedef struct DIRAMPFORCE {
-    LONG  lStart;
-    LONG  lEnd;
-} DIRAMPFORCE, *LPDIRAMPFORCE;
-typedef const DIRAMPFORCE *LPCDIRAMPFORCE;
-
-typedef struct DIPERIODIC {
-    DWORD dwMagnitude;
-    LONG  lOffset;
-    DWORD dwPhase;
-    DWORD dwPeriod;
-} DIPERIODIC, *LPDIPERIODIC;
-typedef const DIPERIODIC *LPCDIPERIODIC;
-
-typedef struct DICONDITION {
-    LONG  lOffset;
-    LONG  lPositiveCoefficient;
-    LONG  lNegativeCoefficient;
-    DWORD dwPositiveSaturation;
-    DWORD dwNegativeSaturation;
-    LONG  lDeadBand;
-} DICONDITION, *LPDICONDITION;
-typedef const DICONDITION *LPCDICONDITION;
-
-typedef struct DICUSTOMFORCE {
-    DWORD cChannels;
-    DWORD dwSamplePeriod;
-    DWORD cSamples;
-    LPLONG rglForceData;
-} DICUSTOMFORCE, *LPDICUSTOMFORCE;
-typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;
-
-typedef struct DIENVELOPE {
-    DWORD dwSize;                   /* sizeof(DIENVELOPE)   */
-    DWORD dwAttackLevel;
-    DWORD dwAttackTime;             /* Microseconds         */
-    DWORD dwFadeLevel;
-    DWORD dwFadeTime;               /* Microseconds         */
-} DIENVELOPE, *LPDIENVELOPE;
-typedef const DIENVELOPE *LPCDIENVELOPE;
-
-typedef struct DIEFFECT {
-    DWORD dwSize;                   /* sizeof(DIEFFECT)     */
-    DWORD dwFlags;                  /* DIEFF_*              */
-    DWORD dwDuration;               /* Microseconds         */
-    DWORD dwSamplePeriod;           /* Microseconds         */
-    DWORD dwGain;
-    DWORD dwTriggerButton;          /* or DIEB_NOTRIGGER    */
-    DWORD dwTriggerRepeatInterval;  /* Microseconds         */
-    DWORD cAxes;                    /* Number of axes       */
-    LPDWORD rgdwAxes;               /* Array of axes        */
-    LPLONG rglDirection;            /* Array of directions  */
-    LPDIENVELOPE lpEnvelope;        /* Optional             */
-    DWORD cbTypeSpecificParams;     /* Size of params       */
-    LPVOID lpvTypeSpecificParams;   /* Pointer to params    */
-} DIEFFECT, *LPDIEFFECT;
-typedef const DIEFFECT *LPCDIEFFECT;
-
-#define DIEFF_OBJECTIDS             0x00000001
-#define DIEFF_OBJECTOFFSETS         0x00000002
-#define DIEFF_CARTESIAN             0x00000010
-#define DIEFF_POLAR                 0x00000020
-#define DIEFF_SPHERICAL             0x00000040
-
-#define DIEP_DURATION               0x00000001
-#define DIEP_SAMPLEPERIOD           0x00000002
-#define DIEP_GAIN                   0x00000004
-#define DIEP_TRIGGERBUTTON          0x00000008
-#define DIEP_TRIGGERREPEATINTERVAL  0x00000010
-#define DIEP_AXES                   0x00000020
-#define DIEP_DIRECTION              0x00000040
-#define DIEP_ENVELOPE               0x00000080
-#define DIEP_TYPESPECIFICPARAMS     0x00000100
-#define DIEP_ALLPARAMS              0x000001FF
-#define DIEP_START                  0x20000000
-#define DIEP_NORESTART              0x40000000
-#define DIEP_NODOWNLOAD             0x80000000
-#define DIEB_NOTRIGGER              0xFFFFFFFF
-
-#define DIES_SOLO                   0x00000001
-#define DIES_NODOWNLOAD             0x80000000
-
-#define DIEGES_PLAYING              0x00000001
-#define DIEGES_EMULATED             0x00000002
-
-typedef struct DIEFFESCAPE {
-    DWORD   dwSize;
-    DWORD   dwCommand;
-    LPVOID  lpvInBuffer;
-    DWORD   cbInBuffer;
-    LPVOID  lpvOutBuffer;
-    DWORD   cbOutBuffer;
-} DIEFFESCAPE, *LPDIEFFESCAPE;
-
-#ifndef DIJ_RINGZERO
-
-#undef INTERFACE
-#define INTERFACE IDirectInputEffect
-
-DECLARE_INTERFACE_(IDirectInputEffect, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputEffect methods ***/
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-    STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE;
-    STDMETHOD(GetParameters)(THIS_ LPDIEFFECT,DWORD) PURE;
-    STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT,DWORD) PURE;
-    STDMETHOD(Start)(THIS_ DWORD,DWORD) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE;
-    STDMETHOD(Download)(THIS) PURE;
-    STDMETHOD(Unload)(THIS) PURE;
-    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
-};
-
-typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
-#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a)
-#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b)
-#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b)
-#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b)
-#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p)
-#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a)
-#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p)
-#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p)
-#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a)
-#else
-#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInputEffect_AddRef(p) (p)->AddRef()
-#define IDirectInputEffect_Release(p) (p)->Release()
-#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
-#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a)
-#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b)
-#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b)
-#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b)
-#define IDirectInputEffect_Stop(p) (p)->Stop()
-#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a)
-#define IDirectInputEffect_Download(p) (p)->Download()
-#define IDirectInputEffect_Unload(p) (p)->Unload()
-#define IDirectInputEffect_Escape(p,a) (p)->Escape(a)
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-/****************************************************************************
- *
- *      IDirectInputDevice
- *
- ****************************************************************************/
-
-#define DIDEVTYPE_DEVICE    1
-#define DIDEVTYPE_MOUSE     2
-#define DIDEVTYPE_KEYBOARD  3
-#define DIDEVTYPE_JOYSTICK  4
-#define DIDEVTYPE_HID       0x00010000
-
-#define DIDEVTYPEMOUSE_UNKNOWN          1
-#define DIDEVTYPEMOUSE_TRADITIONAL      2
-#define DIDEVTYPEMOUSE_FINGERSTICK      3
-#define DIDEVTYPEMOUSE_TOUCHPAD         4
-#define DIDEVTYPEMOUSE_TRACKBALL        5
-
-#define DIDEVTYPEKEYBOARD_UNKNOWN       0
-#define DIDEVTYPEKEYBOARD_PCXT          1
-#define DIDEVTYPEKEYBOARD_OLIVETTI      2
-#define DIDEVTYPEKEYBOARD_PCAT          3
-#define DIDEVTYPEKEYBOARD_PCENH         4
-#define DIDEVTYPEKEYBOARD_NOKIA1050     5
-#define DIDEVTYPEKEYBOARD_NOKIA9140     6
-#define DIDEVTYPEKEYBOARD_NEC98         7
-#define DIDEVTYPEKEYBOARD_NEC98LAPTOP   8
-#define DIDEVTYPEKEYBOARD_NEC98106      9
-#define DIDEVTYPEKEYBOARD_JAPAN106     10
-#define DIDEVTYPEKEYBOARD_JAPANAX      11
-#define DIDEVTYPEKEYBOARD_J3100        12
-
-#define DIDEVTYPEJOYSTICK_UNKNOWN       1
-#define DIDEVTYPEJOYSTICK_TRADITIONAL   2
-#define DIDEVTYPEJOYSTICK_FLIGHTSTICK   3
-#define DIDEVTYPEJOYSTICK_GAMEPAD       4
-#define DIDEVTYPEJOYSTICK_RUDDER        5
-#define DIDEVTYPEJOYSTICK_WHEEL         6
-#define DIDEVTYPEJOYSTICK_HEADTRACKER   7
-
-#define GET_DIDEVICE_TYPE(dwDevType)    LOBYTE(dwDevType)
-#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-/* This structure is defined for DirectX 3.0 compatibility */
-
-typedef struct DIDEVCAPS_DX3 {
-    DWORD   dwSize;
-    DWORD   dwFlags;
-    DWORD   dwDevType;
-    DWORD   dwAxes;
-    DWORD   dwButtons;
-    DWORD   dwPOVs;
-} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIDEVCAPS {
-    DWORD   dwSize;
-    DWORD   dwFlags;
-    DWORD   dwDevType;
-    DWORD   dwAxes;
-    DWORD   dwButtons;
-    DWORD   dwPOVs;
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    DWORD   dwFFSamplePeriod;
-    DWORD   dwFFMinTimeResolution;
-    DWORD   dwFirmwareRevision;
-    DWORD   dwHardwareRevision;
-    DWORD   dwFFDriverVersion;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVCAPS, *LPDIDEVCAPS;
-
-#define DIDC_ATTACHED           0x00000001
-#define DIDC_POLLEDDEVICE       0x00000002
-#define DIDC_EMULATED           0x00000004
-#define DIDC_POLLEDDATAFORMAT   0x00000008
-#if(DIRECTINPUT_VERSION >= 0x0500)
-#define DIDC_FORCEFEEDBACK      0x00000100
-#define DIDC_FFATTACK           0x00000200
-#define DIDC_FFFADE             0x00000400
-#define DIDC_SATURATION         0x00000800
-#define DIDC_POSNEGCOEFFICIENTS 0x00001000
-#define DIDC_POSNEGSATURATION   0x00002000
-#define DIDC_DEADBAND           0x00004000
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-#define DIDFT_ALL           0x00000000
-
-#define DIDFT_RELAXIS       0x00000001
-#define DIDFT_ABSAXIS       0x00000002
-#define DIDFT_AXIS          0x00000003
-
-#define DIDFT_PSHBUTTON     0x00000004
-#define DIDFT_TGLBUTTON     0x00000008
-#define DIDFT_BUTTON        0x0000000C
-
-#define DIDFT_POV           0x00000010
-
-#define DIDFT_COLLECTION    0x00000040
-#define DIDFT_NODATA        0x00000080
-
-#define DIDFT_ANYINSTANCE   0x00FFFF00
-#define DIDFT_INSTANCEMASK  DIDFT_ANYINSTANCE
-#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8)
-#define DIDFT_GETTYPE(n)     LOBYTE(n)
-#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8)
-#define DIDFT_FFACTUATOR        0x01000000
-#define DIDFT_FFEFFECTTRIGGER   0x02000000
-
-#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)
-#define DIDFT_NOCOLLECTION      0x00FFFF00
-
-
-#ifndef DIJ_RINGZERO
-
-typedef struct _DIOBJECTDATAFORMAT {
-    const GUID *pguid;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;
-typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;
-
-typedef struct _DIDATAFORMAT {
-    DWORD   dwSize;
-    DWORD   dwObjSize;
-    DWORD   dwFlags;
-    DWORD   dwDataSize;
-    DWORD   dwNumObjs;
-    LPDIOBJECTDATAFORMAT rgodf;
-} DIDATAFORMAT, *LPDIDATAFORMAT;
-typedef const DIDATAFORMAT *LPCDIDATAFORMAT;
-
-#define DIDF_ABSAXIS            0x00000001
-#define DIDF_RELAXIS            0x00000002
-
-extern const DIDATAFORMAT c_dfDIMouse;
-extern const DIDATAFORMAT c_dfDIKeyboard;
-extern const DIDATAFORMAT c_dfDIJoystick;
-extern const DIDATAFORMAT c_dfDIJoystick2;
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-/* These structures are defined for DirectX 3.0 compatibility */
-
-typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    CHAR    tszName[MAX_PATH];
-} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A;
-typedef struct DIDEVICEOBJECTINSTANCE_DX3W {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    WCHAR   tszName[MAX_PATH];
-} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W;
-#ifdef UNICODE
-typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3;
-typedef LPDIDEVICEOBJECTINSTANCE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3;
-#else
-typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3;
-typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3;
-#endif // UNICODE
-typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;
-typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;
-typedef const DIDEVICEOBJECTINSTANCE_DX3  *LPCDIDEVICEOBJECTINSTANCE_DX3;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIDEVICEOBJECTINSTANCEA {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    CHAR    tszName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    DWORD   dwFFMaxForce;
-    DWORD   dwFFForceResolution;
-    WORD    wCollectionNumber;
-    WORD    wDesignatorIndex;
-    WORD    wUsagePage;
-    WORD    wUsage;
-    DWORD   dwDimension;
-    WORD    wExponent;
-    WORD    wReserved;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;
-typedef struct DIDEVICEOBJECTINSTANCEW {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    WCHAR   tszName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    DWORD   dwFFMaxForce;
-    DWORD   dwFFForceResolution;
-    WORD    wCollectionNumber;
-    WORD    wDesignatorIndex;
-    WORD    wUsagePage;
-    WORD    wUsage;
-    DWORD   dwDimension;
-    WORD    wExponent;
-    WORD    wReserved;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;
-#ifdef UNICODE
-typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE;
-typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE;
-#else
-typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE;
-typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE;
-#endif // UNICODE
-typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;
-typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;
-typedef const DIDEVICEOBJECTINSTANCE  *LPCDIDEVICEOBJECTINSTANCE;
-
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID);
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID);
-#ifdef UNICODE
-#define LPDIENUMDEVICEOBJECTSCALLBACK  LPDIENUMDEVICEOBJECTSCALLBACKW
-#else
-#define LPDIENUMDEVICEOBJECTSCALLBACK  LPDIENUMDEVICEOBJECTSCALLBACKA
-#endif // !UNICODE
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-#define DIDOI_FFACTUATOR        0x00000001
-#define DIDOI_FFEFFECTTRIGGER   0x00000002
-#define DIDOI_POLLED            0x00008000
-#define DIDOI_ASPECTPOSITION    0x00000100
-#define DIDOI_ASPECTVELOCITY    0x00000200
-#define DIDOI_ASPECTACCEL       0x00000300
-#define DIDOI_ASPECTFORCE       0x00000400
-#define DIDOI_ASPECTMASK        0x00000F00
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIPROPHEADER {
-    DWORD   dwSize;
-    DWORD   dwHeaderSize;
-    DWORD   dwObj;
-    DWORD   dwHow;
-} DIPROPHEADER, *LPDIPROPHEADER;
-typedef const DIPROPHEADER *LPCDIPROPHEADER;
-
-#define DIPH_DEVICE             0
-#define DIPH_BYOFFSET           1
-#define DIPH_BYID               2
-
-typedef struct DIPROPDWORD {
-    DIPROPHEADER diph;
-    DWORD   dwData;
-} DIPROPDWORD, *LPDIPROPDWORD;
-typedef const DIPROPDWORD *LPCDIPROPDWORD;
-
-typedef struct DIPROPRANGE {
-    DIPROPHEADER diph;
-    LONG    lMin;
-    LONG    lMax;
-} DIPROPRANGE, *LPDIPROPRANGE;
-typedef const DIPROPRANGE *LPCDIPROPRANGE;
-
-#define DIPROPRANGE_NOMIN       ((LONG)0x80000000)
-#define DIPROPRANGE_NOMAX       ((LONG)0x7FFFFFFF)
-
-#ifdef __cplusplus
-#define MAKEDIPROP(prop)    (*(const GUID *)(prop))
-#else
-#define MAKEDIPROP(prop)    ((REFGUID)(prop))
-#endif
-
-#define DIPROP_BUFFERSIZE       MAKEDIPROP(1)
-
-#define DIPROP_AXISMODE         MAKEDIPROP(2)
-
-#define DIPROPAXISMODE_ABS      0
-#define DIPROPAXISMODE_REL      1
-
-#define DIPROP_GRANULARITY      MAKEDIPROP(3)
-
-#define DIPROP_RANGE            MAKEDIPROP(4)
-
-#define DIPROP_DEADZONE         MAKEDIPROP(5)
-
-#define DIPROP_SATURATION       MAKEDIPROP(6)
-
-#define DIPROP_FFGAIN           MAKEDIPROP(7)
-
-#define DIPROP_FFLOAD           MAKEDIPROP(8)
-
-#define DIPROP_AUTOCENTER       MAKEDIPROP(9)
-
-#define DIPROPAUTOCENTER_OFF    0
-#define DIPROPAUTOCENTER_ON     1
-
-#define DIPROP_CALIBRATIONMODE  MAKEDIPROP(10)
-
-#define DIPROPCALIBRATIONMODE_COOKED    0
-#define DIPROPCALIBRATIONMODE_RAW       1
-
-typedef struct DIDEVICEOBJECTDATA {
-    DWORD   dwOfs;
-    DWORD   dwData;
-    DWORD   dwTimeStamp;
-    DWORD   dwSequence;
-} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;
-typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;
-
-#define DIGDD_PEEK          0x00000001
-
-#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \
-                        ((int)((dwSequence1) - (dwSequence2)) cmp 0)
-#define DISCL_EXCLUSIVE     0x00000001
-#define DISCL_NONEXCLUSIVE  0x00000002
-#define DISCL_FOREGROUND    0x00000004
-#define DISCL_BACKGROUND    0x00000008
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-/* These structures are defined for DirectX 3.0 compatibility */
-
-typedef struct DIDEVICEINSTANCE_DX3A {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    CHAR    tszInstanceName[MAX_PATH];
-    CHAR    tszProductName[MAX_PATH];
-} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A;
-typedef struct DIDEVICEINSTANCE_DX3W {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    WCHAR   tszInstanceName[MAX_PATH];
-    WCHAR   tszProductName[MAX_PATH];
-} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W;
-#ifdef UNICODE
-typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3;
-typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3;
-#else
-typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3;
-typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3;
-#endif // UNICODE
-typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;
-typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;
-typedef const DIDEVICEINSTANCE_DX3  *LPCDIDEVICEINSTANCE_DX3;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIDEVICEINSTANCEA {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    CHAR    tszInstanceName[MAX_PATH];
-    CHAR    tszProductName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    GUID    guidFFDriver;
-    WORD    wUsagePage;
-    WORD    wUsage;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA;
-typedef struct DIDEVICEINSTANCEW {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    WCHAR   tszInstanceName[MAX_PATH];
-    WCHAR   tszProductName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    GUID    guidFFDriver;
-    WORD    wUsagePage;
-    WORD    wUsage;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW;
-#ifdef UNICODE
-typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
-typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE;
-#else
-typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
-typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE;
-#endif // UNICODE
-typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;
-typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;
-typedef const DIDEVICEINSTANCE  *LPCDIDEVICEINSTANCE;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDeviceW
-
-DECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceW methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-};
-
-typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDeviceA
-
-DECLARE_INTERFACE_(IDirectInputDeviceA, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceA methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-};
-
-typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;
-
-#ifdef UNICODE
-#define IID_IDirectInputDevice IID_IDirectInputDeviceW
-#define IDirectInputDevice IDirectInputDeviceW
-#define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl
-#else
-#define IID_IDirectInputDevice IID_IDirectInputDeviceA
-#define IDirectInputDevice IDirectInputDeviceA
-#define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl
-#endif
-typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
-#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
-#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
-#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
-#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p)
-#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p)
-#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
-#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
-#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
-#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
-#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
-#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
-#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
-#else
-#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInputDevice_AddRef(p) (p)->AddRef()
-#define IDirectInputDevice_Release(p) (p)->Release()
-#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a)
-#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
-#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b)
-#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b)
-#define IDirectInputDevice_Acquire(p) (p)->Acquire()
-#define IDirectInputDevice_Unacquire(p) (p)->Unacquire()
-#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
-#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
-#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a)
-#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a)
-#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
-#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
-#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
-#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-
-#define DISFFC_RESET            0x00000001
-#define DISFFC_STOPALL          0x00000002
-#define DISFFC_PAUSE            0x00000004
-#define DISFFC_CONTINUE         0x00000008
-#define DISFFC_SETACTUATORSON   0x00000010
-#define DISFFC_SETACTUATORSOFF  0x00000020
-
-#define DIGFFS_EMPTY            0x00000001
-#define DIGFFS_STOPPED          0x00000002
-#define DIGFFS_PAUSED           0x00000004
-#define DIGFFS_ACTUATORSON      0x00000010
-#define DIGFFS_ACTUATORSOFF     0x00000020
-#define DIGFFS_POWERON          0x00000040
-#define DIGFFS_POWEROFF         0x00000080
-#define DIGFFS_SAFETYSWITCHON   0x00000100
-#define DIGFFS_SAFETYSWITCHOFF  0x00000200
-#define DIGFFS_USERFFSWITCHON   0x00000400
-#define DIGFFS_USERFFSWITCHOFF  0x00000800
-#define DIGFFS_DEVICELOST       0x80000000
-
-#ifndef DIJ_RINGZERO
-
-typedef struct DIEFFECTINFOA {
-    DWORD   dwSize;
-    GUID    guid;
-    DWORD   dwEffType;
-    DWORD   dwStaticParams;
-    DWORD   dwDynamicParams;
-    CHAR    tszName[MAX_PATH];
-} DIEFFECTINFOA, *LPDIEFFECTINFOA;
-typedef struct DIEFFECTINFOW {
-    DWORD   dwSize;
-    GUID    guid;
-    DWORD   dwEffType;
-    DWORD   dwStaticParams;
-    DWORD   dwDynamicParams;
-    WCHAR   tszName[MAX_PATH];
-} DIEFFECTINFOW, *LPDIEFFECTINFOW;
-#ifdef UNICODE
-typedef DIEFFECTINFOW DIEFFECTINFO;
-typedef LPDIEFFECTINFOW LPDIEFFECTINFO;
-#else
-typedef DIEFFECTINFOA DIEFFECTINFO;
-typedef LPDIEFFECTINFOA LPDIEFFECTINFO;
-#endif // UNICODE
-typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;
-typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;
-typedef const DIEFFECTINFO  *LPCDIEFFECTINFO;
-
-typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);
-typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);
-#ifdef UNICODE
-#define LPDIENUMEFFECTSCALLBACK  LPDIENUMEFFECTSCALLBACKW
-#else
-#define LPDIENUMEFFECTSCALLBACK  LPDIENUMEFFECTSCALLBACKA
-#endif // !UNICODE
-typedef BOOL (FAR PASCAL * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDevice2W
-
-DECLARE_INTERFACE_(IDirectInputDevice2W, IDirectInputDeviceW)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceW methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-
-    /*** IDirectInputDevice2W methods ***/
-    STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE;
-    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
-    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
-    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
-    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
-    STDMETHOD(Poll)(THIS) PURE;
-    STDMETHOD(SendDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-};
-
-typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDevice2A
-
-DECLARE_INTERFACE_(IDirectInputDevice2A, IDirectInputDeviceA)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceA methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-
-    /*** IDirectInputDevice2A methods ***/
-    STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
-    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
-    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
-    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
-    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
-    STDMETHOD(Poll)(THIS) PURE;
-    STDMETHOD(SendDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-};
-
-typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;
-
-#ifdef UNICODE
-#define IID_IDirectInputDevice2 IID_IDirectInputDevice2W
-#define IDirectInputDevice2 IDirectInputDevice2W
-#define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl
-#else
-#define IID_IDirectInputDevice2 IID_IDirectInputDevice2A
-#define IDirectInputDevice2 IDirectInputDevice2A
-#define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl
-#endif
-typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
-#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
-#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
-#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
-#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p)
-#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p)
-#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
-#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
-#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
-#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
-#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
-#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
-#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
-#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)
-#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)
-#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)
-#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)
-#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
-#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
-#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a)
-#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p)
-#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
-#else
-#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInputDevice2_AddRef(p) (p)->AddRef()
-#define IDirectInputDevice2_Release(p) (p)->Release()
-#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a)
-#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
-#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b)
-#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b)
-#define IDirectInputDevice2_Acquire(p) (p)->Acquire()
-#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire()
-#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
-#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
-#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a)
-#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a)
-#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
-#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
-#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
-#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
-#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)
-#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)
-#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)
-#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)
-#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)
-#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
-#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a)
-#define IDirectInputDevice2_Poll(p) (p)->Poll()
-#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-/****************************************************************************
- *
- *      Mouse
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-typedef struct _DIMOUSESTATE {
-    LONG    lX;
-    LONG    lY;
-    LONG    lZ;
-    BYTE    rgbButtons[4];
-} DIMOUSESTATE, *LPDIMOUSESTATE;
-
-#define DIMOFS_X        FIELD_OFFSET(DIMOUSESTATE, lX)
-#define DIMOFS_Y        FIELD_OFFSET(DIMOUSESTATE, lY)
-#define DIMOFS_Z        FIELD_OFFSET(DIMOUSESTATE, lZ)
-#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0)
-#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1)
-#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2)
-#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3)
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *      Keyboard
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-/****************************************************************************
- *
- *      DirectInput keyboard scan codes
- *
- ****************************************************************************/
-
-#define DIK_ESCAPE          0x01
-#define DIK_1               0x02
-#define DIK_2               0x03
-#define DIK_3               0x04
-#define DIK_4               0x05
-#define DIK_5               0x06
-#define DIK_6               0x07
-#define DIK_7               0x08
-#define DIK_8               0x09
-#define DIK_9               0x0A
-#define DIK_0               0x0B
-#define DIK_MINUS           0x0C    /* - on main keyboard */
-#define DIK_EQUALS          0x0D
-#define DIK_BACK            0x0E    /* backspace */
-#define DIK_TAB             0x0F
-#define DIK_Q               0x10
-#define DIK_W               0x11
-#define DIK_E               0x12
-#define DIK_R               0x13
-#define DIK_T               0x14
-#define DIK_Y               0x15
-#define DIK_U               0x16
-#define DIK_I               0x17
-#define DIK_O               0x18
-#define DIK_P               0x19
-#define DIK_LBRACKET        0x1A
-#define DIK_RBRACKET        0x1B
-#define DIK_RETURN          0x1C    /* Enter on main keyboard */
-#define DIK_LCONTROL        0x1D
-#define DIK_A               0x1E
-#define DIK_S               0x1F
-#define DIK_D               0x20
-#define DIK_F               0x21
-#define DIK_G               0x22
-#define DIK_H               0x23
-#define DIK_J               0x24
-#define DIK_K               0x25
-#define DIK_L               0x26
-#define DIK_SEMICOLON       0x27
-#define DIK_APOSTROPHE      0x28
-#define DIK_GRAVE           0x29    /* accent grave */
-#define DIK_LSHIFT          0x2A
-#define DIK_BACKSLASH       0x2B
-#define DIK_Z               0x2C
-#define DIK_X               0x2D
-#define DIK_C               0x2E
-#define DIK_V               0x2F
-#define DIK_B               0x30
-#define DIK_N               0x31
-#define DIK_M               0x32
-#define DIK_COMMA           0x33
-#define DIK_PERIOD          0x34    /* . on main keyboard */
-#define DIK_SLASH           0x35    /* / on main keyboard */
-#define DIK_RSHIFT          0x36
-#define DIK_MULTIPLY        0x37    /* * on numeric keypad */
-#define DIK_LMENU           0x38    /* left Alt */
-#define DIK_SPACE           0x39
-#define DIK_CAPITAL         0x3A
-#define DIK_F1              0x3B
-#define DIK_F2              0x3C
-#define DIK_F3              0x3D
-#define DIK_F4              0x3E
-#define DIK_F5              0x3F
-#define DIK_F6              0x40
-#define DIK_F7              0x41
-#define DIK_F8              0x42
-#define DIK_F9              0x43
-#define DIK_F10             0x44
-#define DIK_NUMLOCK         0x45
-#define DIK_SCROLL          0x46    /* Scroll Lock */
-#define DIK_NUMPAD7         0x47
-#define DIK_NUMPAD8         0x48
-#define DIK_NUMPAD9         0x49
-#define DIK_SUBTRACT        0x4A    /* - on numeric keypad */
-#define DIK_NUMPAD4         0x4B
-#define DIK_NUMPAD5         0x4C
-#define DIK_NUMPAD6         0x4D
-#define DIK_ADD             0x4E    /* + on numeric keypad */
-#define DIK_NUMPAD1         0x4F
-#define DIK_NUMPAD2         0x50
-#define DIK_NUMPAD3         0x51
-#define DIK_NUMPAD0         0x52
-#define DIK_DECIMAL         0x53    /* . on numeric keypad */
-#define DIK_F11             0x57
-#define DIK_F12             0x58
-
-#define DIK_F13             0x64    /*                     (NEC PC98) */
-#define DIK_F14             0x65    /*                     (NEC PC98) */
-#define DIK_F15             0x66    /*                     (NEC PC98) */
-
-#define DIK_KANA            0x70    /* (Japanese keyboard)            */
-#define DIK_CONVERT         0x79    /* (Japanese keyboard)            */
-#define DIK_NOCONVERT       0x7B    /* (Japanese keyboard)            */
-#define DIK_YEN             0x7D    /* (Japanese keyboard)            */
-#define DIK_NUMPADEQUALS    0x8D    /* = on numeric keypad (NEC PC98) */
-#define DIK_CIRCUMFLEX      0x90    /* (Japanese keyboard)            */
-#define DIK_AT              0x91    /*                     (NEC PC98) */
-#define DIK_COLON           0x92    /*                     (NEC PC98) */
-#define DIK_UNDERLINE       0x93    /*                     (NEC PC98) */
-#define DIK_KANJI           0x94    /* (Japanese keyboard)            */
-#define DIK_STOP            0x95    /*                     (NEC PC98) */
-#define DIK_AX              0x96    /*                     (Japan AX) */
-#define DIK_UNLABELED       0x97    /*                        (J3100) */
-#define DIK_NUMPADENTER     0x9C    /* Enter on numeric keypad */
-#define DIK_RCONTROL        0x9D
-#define DIK_NUMPADCOMMA     0xB3    /* , on numeric keypad (NEC PC98) */
-#define DIK_DIVIDE          0xB5    /* / on numeric keypad */
-#define DIK_SYSRQ           0xB7
-#define DIK_RMENU           0xB8    /* right Alt */
-#define DIK_HOME            0xC7    /* Home on arrow keypad */
-#define DIK_UP              0xC8    /* UpArrow on arrow keypad */
-#define DIK_PRIOR           0xC9    /* PgUp on arrow keypad */
-#define DIK_LEFT            0xCB    /* LeftArrow on arrow keypad */
-#define DIK_RIGHT           0xCD    /* RightArrow on arrow keypad */
-#define DIK_END             0xCF    /* End on arrow keypad */
-#define DIK_DOWN            0xD0    /* DownArrow on arrow keypad */
-#define DIK_NEXT            0xD1    /* PgDn on arrow keypad */
-#define DIK_INSERT          0xD2    /* Insert on arrow keypad */
-#define DIK_DELETE          0xD3    /* Delete on arrow keypad */
-#define DIK_LWIN            0xDB    /* Left Windows key */
-#define DIK_RWIN            0xDC    /* Right Windows key */
-#define DIK_APPS            0xDD    /* AppMenu key */
-
-/*
- *  Alternate names for keys, to facilitate transition from DOS.
- */
-#define DIK_BACKSPACE       DIK_BACK            /* backspace */
-#define DIK_NUMPADSTAR      DIK_MULTIPLY        /* * on numeric keypad */
-#define DIK_LALT            DIK_LMENU           /* left Alt */
-#define DIK_CAPSLOCK        DIK_CAPITAL         /* CapsLock */
-#define DIK_NUMPADMINUS     DIK_SUBTRACT        /* - on numeric keypad */
-#define DIK_NUMPADPLUS      DIK_ADD             /* + on numeric keypad */
-#define DIK_NUMPADPERIOD    DIK_DECIMAL         /* . on numeric keypad */
-#define DIK_NUMPADSLASH     DIK_DIVIDE          /* / on numeric keypad */
-#define DIK_RALT            DIK_RMENU           /* right Alt */
-#define DIK_UPARROW         DIK_UP              /* UpArrow on arrow keypad */
-#define DIK_PGUP            DIK_PRIOR           /* PgUp on arrow keypad */
-#define DIK_LEFTARROW       DIK_LEFT            /* LeftArrow on arrow keypad */
-#define DIK_RIGHTARROW      DIK_RIGHT           /* RightArrow on arrow keypad */
-#define DIK_DOWNARROW       DIK_DOWN            /* DownArrow on arrow keypad */
-#define DIK_PGDN            DIK_NEXT            /* PgDn on arrow keypad */
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *      Joystick
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-typedef struct DIJOYSTATE {
-    LONG    lX;                     /* x-axis position              */
-    LONG    lY;                     /* y-axis position              */
-    LONG    lZ;                     /* z-axis position              */
-    LONG    lRx;                    /* x-axis rotation              */
-    LONG    lRy;                    /* y-axis rotation              */
-    LONG    lRz;                    /* z-axis rotation              */
-    LONG    rglSlider[2];           /* extra axes positions         */
-    DWORD   rgdwPOV[4];             /* POV directions               */
-    BYTE    rgbButtons[32];         /* 32 buttons                   */
-} DIJOYSTATE, *LPDIJOYSTATE;
-
-typedef struct DIJOYSTATE2 {
-    LONG    lX;                     /* x-axis position              */
-    LONG    lY;                     /* y-axis position              */
-    LONG    lZ;                     /* z-axis position              */
-    LONG    lRx;                    /* x-axis rotation              */
-    LONG    lRy;                    /* y-axis rotation              */
-    LONG    lRz;                    /* z-axis rotation              */
-    LONG    rglSlider[2];           /* extra axes positions         */
-    DWORD   rgdwPOV[4];             /* POV directions               */
-    BYTE    rgbButtons[128];        /* 128 buttons                  */
-    LONG    lVX;                    /* x-axis velocity              */
-    LONG    lVY;                    /* y-axis velocity              */
-    LONG    lVZ;                    /* z-axis velocity              */
-    LONG    lVRx;                   /* x-axis angular velocity      */
-    LONG    lVRy;                   /* y-axis angular velocity      */
-    LONG    lVRz;                   /* z-axis angular velocity      */
-    LONG    rglVSlider[2];          /* extra axes velocities        */
-    LONG    lAX;                    /* x-axis acceleration          */
-    LONG    lAY;                    /* y-axis acceleration          */
-    LONG    lAZ;                    /* z-axis acceleration          */
-    LONG    lARx;                   /* x-axis angular acceleration  */
-    LONG    lARy;                   /* y-axis angular acceleration  */
-    LONG    lARz;                   /* z-axis angular acceleration  */
-    LONG    rglASlider[2];          /* extra axes accelerations     */
-    LONG    lFX;                    /* x-axis force                 */
-    LONG    lFY;                    /* y-axis force                 */
-    LONG    lFZ;                    /* z-axis force                 */
-    LONG    lFRx;                   /* x-axis torque                */
-    LONG    lFRy;                   /* y-axis torque                */
-    LONG    lFRz;                   /* z-axis torque                */
-    LONG    rglFSlider[2];          /* extra axes forces            */
-} DIJOYSTATE2, *LPDIJOYSTATE2;
-
-#define DIJOFS_X            FIELD_OFFSET(DIJOYSTATE, lX)
-#define DIJOFS_Y            FIELD_OFFSET(DIJOYSTATE, lY)
-#define DIJOFS_Z            FIELD_OFFSET(DIJOYSTATE, lZ)
-#define DIJOFS_RX           FIELD_OFFSET(DIJOYSTATE, lRx)
-#define DIJOFS_RY           FIELD_OFFSET(DIJOYSTATE, lRy)
-#define DIJOFS_RZ           FIELD_OFFSET(DIJOYSTATE, lRz)
-#define DIJOFS_SLIDER(n)   (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
-                                                        (n) * sizeof(LONG))
-#define DIJOFS_POV(n)      (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
-                                                        (n) * sizeof(DWORD))
-#define DIJOFS_BUTTON(n)   (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
-#define DIJOFS_BUTTON0      DIJOFS_BUTTON(0)
-#define DIJOFS_BUTTON1      DIJOFS_BUTTON(1)
-#define DIJOFS_BUTTON2      DIJOFS_BUTTON(2)
-#define DIJOFS_BUTTON3      DIJOFS_BUTTON(3)
-#define DIJOFS_BUTTON4      DIJOFS_BUTTON(4)
-#define DIJOFS_BUTTON5      DIJOFS_BUTTON(5)
-#define DIJOFS_BUTTON6      DIJOFS_BUTTON(6)
-#define DIJOFS_BUTTON7      DIJOFS_BUTTON(7)
-#define DIJOFS_BUTTON8      DIJOFS_BUTTON(8)
-#define DIJOFS_BUTTON9      DIJOFS_BUTTON(9)
-#define DIJOFS_BUTTON10     DIJOFS_BUTTON(10)
-#define DIJOFS_BUTTON11     DIJOFS_BUTTON(11)
-#define DIJOFS_BUTTON12     DIJOFS_BUTTON(12)
-#define DIJOFS_BUTTON13     DIJOFS_BUTTON(13)
-#define DIJOFS_BUTTON14     DIJOFS_BUTTON(14)
-#define DIJOFS_BUTTON15     DIJOFS_BUTTON(15)
-#define DIJOFS_BUTTON16     DIJOFS_BUTTON(16)
-#define DIJOFS_BUTTON17     DIJOFS_BUTTON(17)
-#define DIJOFS_BUTTON18     DIJOFS_BUTTON(18)
-#define DIJOFS_BUTTON19     DIJOFS_BUTTON(19)
-#define DIJOFS_BUTTON20     DIJOFS_BUTTON(20)
-#define DIJOFS_BUTTON21     DIJOFS_BUTTON(21)
-#define DIJOFS_BUTTON22     DIJOFS_BUTTON(22)
-#define DIJOFS_BUTTON23     DIJOFS_BUTTON(23)
-#define DIJOFS_BUTTON24     DIJOFS_BUTTON(24)
-#define DIJOFS_BUTTON25     DIJOFS_BUTTON(25)
-#define DIJOFS_BUTTON26     DIJOFS_BUTTON(26)
-#define DIJOFS_BUTTON27     DIJOFS_BUTTON(27)
-#define DIJOFS_BUTTON28     DIJOFS_BUTTON(28)
-#define DIJOFS_BUTTON29     DIJOFS_BUTTON(29)
-#define DIJOFS_BUTTON30     DIJOFS_BUTTON(30)
-#define DIJOFS_BUTTON31     DIJOFS_BUTTON(31)
-
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *  IDirectInput
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-#define DIENUM_STOP             0
-#define DIENUM_CONTINUE         1
-
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID);
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID);
-#ifdef UNICODE
-#define LPDIENUMDEVICESCALLBACK  LPDIENUMDEVICESCALLBACKW
-#else
-#define LPDIENUMDEVICESCALLBACK  LPDIENUMDEVICESCALLBACKA
-#endif // !UNICODE
-
-#define DIEDFL_ALLDEVICES       0x00000000
-#define DIEDFL_ATTACHEDONLY     0x00000001
-#if(DIRECTINPUT_VERSION >= 0x0500)
-#define DIEDFL_FORCEFEEDBACK    0x00000100
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-#undef INTERFACE
-#define INTERFACE IDirectInputW
-
-DECLARE_INTERFACE_(IDirectInputW, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputW methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-};
-
-typedef struct IDirectInputW *LPDIRECTINPUTW;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputA
-
-DECLARE_INTERFACE_(IDirectInputA, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputA methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-};
-
-typedef struct IDirectInputA *LPDIRECTINPUTA;
-
-#ifdef UNICODE
-#define IID_IDirectInput IID_IDirectInputW
-#define IDirectInput IDirectInputW
-#define IDirectInputVtbl IDirectInputWVtbl
-#else
-#define IID_IDirectInput IID_IDirectInputA
-#define IDirectInput IDirectInputA
-#define IDirectInputVtbl IDirectInputAVtbl
-#endif
-typedef struct IDirectInput *LPDIRECTINPUT;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInput_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
-#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
-#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
-#else
-#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInput_AddRef(p) (p)->AddRef()
-#define IDirectInput_Release(p) (p)->Release()
-#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
-#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
-#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
-#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b)
-#endif
-
-#undef INTERFACE
-#define INTERFACE IDirectInput2W
-
-DECLARE_INTERFACE_(IDirectInput2W, IDirectInputW)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputW methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-
-    /*** IDirectInput2W methods ***/
-    STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE;
-};
-
-typedef struct IDirectInput2W *LPDIRECTINPUT2W;
-
-#undef INTERFACE
-#define INTERFACE IDirectInput2A
-
-DECLARE_INTERFACE_(IDirectInput2A, IDirectInputA)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputA methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-
-    /*** IDirectInput2A methods ***/
-    STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE;
-};
-
-typedef struct IDirectInput2A *LPDIRECTINPUT2A;
-
-#ifdef UNICODE
-#define IID_IDirectInput2 IID_IDirectInput2W
-#define IDirectInput2 IDirectInput2W
-#define IDirectInput2Vtbl IDirectInput2WVtbl
-#else
-#define IID_IDirectInput2 IID_IDirectInput2A
-#define IDirectInput2 IDirectInput2A
-#define IDirectInput2Vtbl IDirectInput2AVtbl
-#endif
-typedef struct IDirectInput2 *LPDIRECTINPUT2;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
-#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
-#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)
-#else
-#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInput2_AddRef(p) (p)->AddRef()
-#define IDirectInput2_Release(p) (p)->Release()
-#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
-#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
-#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
-#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b)
-#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)
-#endif
-
-extern HRESULT WINAPI DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter);
-extern HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter);
-#ifdef UNICODE
-#define DirectInputCreate  DirectInputCreateW
-#else
-#define DirectInputCreate  DirectInputCreateA
-#endif // !UNICODE
-
-#endif /* DIJ_RINGZERO */
-
-
-/****************************************************************************
- *
- *  Return Codes
- *
- ****************************************************************************/
-
-/*
- *  The operation completed successfully.
- */
-#define DI_OK                           S_OK
-
-/*
- *  The device exists but is not currently attached.
- */
-#define DI_NOTATTACHED                  S_FALSE
-
-/*
- *  The device buffer overflowed.  Some input was lost.
- */
-#define DI_BUFFEROVERFLOW               S_FALSE
-
-/*
- *  The change in device properties had no effect.
- */
-#define DI_PROPNOEFFECT                 S_FALSE
-
-/*
- *  The operation had no effect.
- */
-#define DI_NOEFFECT                     S_FALSE
-
-/*
- *  The device is a polled device.  As a result, device buffering
- *  will not collect any data and event notifications will not be
- *  signalled until GetDeviceState is called.
- */
-#define DI_POLLEDDEVICE                 ((HRESULT)0x00000002L)
-
-/*
- *  The parameters of the effect were successfully updated by
- *  IDirectInputEffect::SetParameters, but the effect was not
- *  downloaded because the device is not exclusively acquired
- *  or because the DIEP_NODOWNLOAD flag was passed.
- */
-#define DI_DOWNLOADSKIPPED              ((HRESULT)0x00000003L)
-
-/*
- *  The parameters of the effect were successfully updated by
- *  IDirectInputEffect::SetParameters, but in order to change
- *  the parameters, the effect needed to be restarted.
- */
-#define DI_EFFECTRESTARTED              ((HRESULT)0x00000004L)
-
-/*
- *  The parameters of the effect were successfully updated by
- *  IDirectInputEffect::SetParameters, but some of them were
- *  beyond the capabilities of the device and were truncated.
- */
-#define DI_TRUNCATED                    ((HRESULT)0x00000008L)
-
-/*
- *  Equal to DI_EFFECTRESTARTED | DI_TRUNCATED.
- */
-#define DI_TRUNCATEDANDRESTARTED        ((HRESULT)0x0000000CL)
-
-/*
- *  The application requires a newer version of DirectInput.
- */
-#define DIERR_OLDDIRECTINPUTVERSION     \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION)
-
-/*
- *  The application was written for an unsupported prerelease version
- *  of DirectInput.
- */
-#define DIERR_BETADIRECTINPUTVERSION    \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP)
-
-/*
- *  The object could not be created due to an incompatible driver version
- *  or mismatched or incomplete driver components.
- */
-#define DIERR_BADDRIVERVER              \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL)
-
-/*
- * The device or device instance or effect is not registered with DirectInput.
- */
-#define DIERR_DEVICENOTREG              REGDB_E_CLASSNOTREG
-
-/*
- * The requested object does not exist.
- */
-#define DIERR_NOTFOUND                  \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
-
-/*
- * The requested object does not exist.
- */
-#define DIERR_OBJECTNOTFOUND            \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
-
-/*
- * An invalid parameter was passed to the returning function,
- * or the object was not in a state that admitted the function
- * to be called.
- */
-#define DIERR_INVALIDPARAM              E_INVALIDARG
-
-/*
- * The specified interface is not supported by the object
- */
-#define DIERR_NOINTERFACE               E_NOINTERFACE
-
-/*
- * An undetermined error occured inside the DInput subsystem
- */
-#define DIERR_GENERIC                   E_FAIL
-
-/*
- * The DInput subsystem couldn't allocate sufficient memory to complete the
- * caller's request.
- */
-#define DIERR_OUTOFMEMORY               E_OUTOFMEMORY
-
-/*
- * The function called is not supported at this time
- */
-#define DIERR_UNSUPPORTED               E_NOTIMPL
-
-/*
- * This object has not been initialized
- */
-#define DIERR_NOTINITIALIZED            \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY)
-
-/*
- * This object is already initialized
- */
-#define DIERR_ALREADYINITIALIZED        \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED)
-
-/*
- * This object does not support aggregation
- */
-#define DIERR_NOAGGREGATION             CLASS_E_NOAGGREGATION
-
-/*
- * Another app has a higher priority level, preventing this call from
- * succeeding.
- */
-#define DIERR_OTHERAPPHASPRIO           E_ACCESSDENIED
-
-/*
- * Access to the device has been lost.  It must be re-acquired.
- */
-#define DIERR_INPUTLOST                 \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT)
-
-/*
- * The operation cannot be performed while the device is acquired.
- */
-#define DIERR_ACQUIRED                  \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY)
-
-/*
- * The operation cannot be performed unless the device is acquired.
- */
-#define DIERR_NOTACQUIRED               \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS)
-
-/*
- * The specified property cannot be changed.
- */
-#define DIERR_READONLY                  E_ACCESSDENIED
-
-/*
- * The device already has an event notification associated with it.
- */
-#define DIERR_HANDLEEXISTS              E_ACCESSDENIED
-
-/*
- * Data is not yet available.
- */
-#ifndef E_PENDING
-#define E_PENDING                       0x80070007L
-#endif
-
-/*
- * Unable to IDirectInputJoyConfig_Acquire because the user
- * does not have sufficient privileges to change the joystick
- * configuration.
- */
-#define DIERR_INSUFFICIENTPRIVS         0x80040200L
-
-/*
- * The device is full.
- */
-#define DIERR_DEVICEFULL                0x80040201L
-
-/*
- * Not all the requested information fit into the buffer.
- */
-#define DIERR_MOREDATA                  0x80040202L
-
-/*
- * The effect is not downloaded.
- */
-#define DIERR_NOTDOWNLOADED             0x80040203L
-
-/*
- *  The device cannot be reinitialized because there are still effects
- *  attached to it.
- */
-#define DIERR_HASEFFECTS                0x80040204L
-
-/*
- *  The operation cannot be performed unless the device is acquired
- *  in DISCL_EXCLUSIVE mode.
- */
-#define DIERR_NOTEXCLUSIVEACQUIRED      0x80040205L
-
-/*
- *  The effect could not be downloaded because essential information
- *  is missing.  For example, no axes have been associated with the
- *  effect, or no type-specific information has been created.
- */
-#define DIERR_INCOMPLETEEFFECT          0x80040206L
-
-/*
- *  Attempted to read buffered device data from a device that is
- *  not buffered.
- */
-#define DIERR_NOTBUFFERED               0x80040207L
-
-/*
- *  An attempt was made to modify parameters of an effect while it is
- *  playing.  Not all hardware devices support altering the parameters
- *  of an effect while it is playing.
- */
-#define DIERR_EFFECTPLAYING             0x80040208L
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif  /* __DINPUT_INCLUDED__ */
-
-/****************************************************************************
- *
- *  Definitions for non-IDirectInput (VJoyD) features defined more recently
- *  than the current sdk files
- *
- ****************************************************************************/
-
-#ifdef _INC_MMSYSTEM
-#ifndef MMNOJOY
-
-#ifndef __VJOYDX_INCLUDED__
-#define __VJOYDX_INCLUDED__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure
- * contains mini-driver specific data to be passed by VJoyD to the mini-
- * driver instead of doing a poll.
- */
-#define JOY_PASSDRIVERDATA          0x10000000l
-
-/*
- * Informs the joystick driver that the configuration has been changed
- * and should be reloaded from the registery.
- * dwFlags is reserved and should be set to zero
- */
-WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags );
-
-/*
- * Hardware Setting indicating that the device is a headtracker
- */
-#define JOY_HWS_ISHEADTRACKER       0x02000000l
-
-/*
- * Hardware Setting indicating that the VxD is used to replace
- * the standard analog polling
- */
-#define JOY_HWS_ISGAMEPORTDRIVER    0x04000000l
-
-/*
- * Hardware Setting indicating that the driver needs a standard
- * gameport in order to communicate with the device.
- */
-#define JOY_HWS_ISANALOGPORTDRIVER  0x08000000l 
-
-/*
- * Hardware Setting indicating that VJoyD should not load this 
- * driver, it will be loaded externally and will register with
- * VJoyD of it's own accord.
- */
-#define JOY_HWS_AUTOLOAD            0x10000000l
-
-/*
- * Hardware Setting indicating that the driver acquires any 
- * resources needed without needing a devnode through VJoyD.
- */
-#define JOY_HWS_NODEVNODE           0x20000000l
-
-/*
- * Hardware Setting indicating that the VxD can be used as
- * a port 201h emulator.
- */
-#define JOY_HWS_ISGAMEPORTEMULATOR  0x40000000l
-
-
-/*
- * Usage Setting indicating that the settings are volatile and
- * should be removed if still present on a reboot.
- */
-#define JOY_US_VOLATILE             0x00000008L
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif  /* __VJOYDX_INCLUDED__ */
-
-#endif  /* not MMNOJOY */
-#endif  /* _INC_MMSYSTEM */
-
-/****************************************************************************
- *
- *  Definitions for non-IDirectInput (VJoyD) features defined more recently
- *  than the current ddk files
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-#ifdef _INC_MMDDK
-#ifndef MMNOJOYDEV
-
-#ifndef __VJOYDXD_INCLUDED__
-#define __VJOYDXD_INCLUDED__
-/*
- * Poll type in which the do_other field of the JOYOEMPOLLDATA
- * structure contains mini-driver specific data passed from an app.
- */
-#define JOY_OEMPOLL_PASSDRIVERDATA  7
-
-#endif  /* __VJOYDXD_INCLUDED__ */
-
-#endif  /* not MMNOJOYDEV */
-#endif  /* _INC_MMDDK */
-
-#endif /* DIJ_RINGZERO */
diff --git a/misc/builddeps/win64/dx/include/dsound.h b/misc/builddeps/win64/dx/include/dsound.h
deleted file mode 100644 (file)
index 599b80a..0000000
+++ /dev/null
@@ -1,1200 +0,0 @@
-/*
- * Copyright (C) the Wine project
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_DSOUND_H
-#define __WINE_DSOUND_H
-#define __DSOUND_INCLUDED__
-
-#include <_mingw_dxhelper.h>
-#ifndef DIRECTSOUND_VERSION
-#define DIRECTSOUND_VERSION 0x0900
-#endif
-
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#include <float.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-#ifndef DX_SHARED_DEFINES
-
-typedef float D3DVALUE, *LPD3DVALUE;
-
-#ifndef D3DCOLOR_DEFINED
-typedef DWORD D3DCOLOR, *LPD3DCOLOR;
-#define D3DCOLOR_DEFINED
-#endif
-
-#ifndef D3DVECTOR_DEFINED
-typedef struct _D3DVECTOR {
-    float x;
-    float y;
-    float z;
-} D3DVECTOR;
-#define D3DVECTOR_DEFINED
-#endif
-
-#ifndef LPD3DVECTOR_DEFINED
-typedef D3DVECTOR *LPD3DVECTOR;
-#define LPD3DVECTOR_DEFINED
-#endif
-
-#define DX_SHARED_DEFINES
-#endif /* DX_SHARED_DEFINES */
-
-/*****************************************************************************
- * Predeclare the interfaces
- */
-DEFINE_GUID(CLSID_DirectSound,         0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
-DEFINE_GUID(CLSID_DirectSound8,                0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b);
-DEFINE_GUID(CLSID_DirectSoundCapture,  0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x08, 0x00, 0xa0, 0xc9, 0x25, 0xcd, 0x16);
-DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1);
-DEFINE_GUID(CLSID_DirectSoundFullDuplex,0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d);
-
-DEFINE_GUID(IID_IDirectSound,          0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
-typedef struct IDirectSound *LPDIRECTSOUND,**LPLPDIRECTSOUND;
-
-DEFINE_GUID(IID_IDirectSound8,         0xC50A7E93,0xF395,0x4834,0x9E,0xF6,0x7F,0xA9,0x9D,0xE5,0x09,0x66);
-typedef struct IDirectSound8 *LPDIRECTSOUND8,**LPLPDIRECTSOUND8;
-
-DEFINE_GUID(IID_IDirectSoundBuffer,    0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
-typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER,**LPLPDIRECTSOUNDBUFFER;
-
-DEFINE_GUID(IID_IDirectSoundBuffer8,   0x6825A449,0x7524,0x4D82,0x92,0x0F,0x50,0xE3,0x6A,0xB3,0xAB,0x1E);
-typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8,**LPLPDIRECTSOUNDBUFFER8;
-
-DEFINE_GUID(IID_IDirectSoundNotify,    0xB0210783,0x89cd,0x11d0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
-typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY,**LPLPDIRECTSOUNDNOTIFY;
-#define        IID_IDirectSoundNotify8         IID_IDirectSoundNotify
-
-DEFINE_GUID(IID_IDirectSound3DListener,        0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
-typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER,**LPLPDIRECTSOUND3DLISTENER;
-
-DEFINE_GUID(IID_IDirectSound3DBuffer,  0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
-typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER,**LPLPDIRECTSOUND3DBUFFER;
-
-DEFINE_GUID(IID_IDirectSoundCapture,   0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
-typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE,**LPLPDIRECTSOUNDCAPTURE;
-#define        IID_IDirectSoundCapture8        IID_IDirectSoundCapture
-typedef struct IDirectSoundCapture IDirectSoundCapture8,*LPDIRECTSOUNDCAPTURE8,**LPLPDIRECTSOUNDCAPTURE8;
-
-DEFINE_GUID(IID_IDirectSoundCaptureBuffer,0xB0210782,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
-typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER,**LPLPDIRECTSOUNDCAPTUREBUFFER;
-
-DEFINE_GUID(IID_IDirectSoundCaptureBuffer8,0x00990DF4,0x0DBB,0x4872,0x83,0x3E,0x6D,0x30,0x3E,0x80,0xAE,0xB6);
-typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8,**LPLPDIRECTSOUNDCAPTUREBUFFER8;
-
-DEFINE_GUID(IID_IDirectSoundFullDuplex,        0xEDCB4C7A,0xDAAB,0x4216,0xA4,0x2E,0x6C,0x50,0x59,0x6D,0xDC,0x1D);
-typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX,**LPLPDIRECTSOUNDFULLDUPLEX;
-#define        IID_IDirectSoundFullDuplex8     IID_IDirectSoundFullDuplex
-
-DEFINE_GUID(DSDEVID_DefaultPlayback,     0xDEF00000,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
-DEFINE_GUID(DSDEVID_DefaultCapture,      0xDEF00001,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
-DEFINE_GUID(DSDEVID_DefaultVoicePlayback,0xDEF00002,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
-DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xDEF00003,0x9C6D,0x47ED,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
-
-DEFINE_GUID(DSDEVID_WinePlayback,        0x40316A1D,0x605B,0xD611,0x87,0xC6,0x00,0x80,0xAD,0x00,0x02,0xFE);
-
-#define        _FACDS          0x878
-#define        MAKE_DSHRESULT(code)            MAKE_HRESULT(1,_FACDS,code)
-
-#define DS_OK                          0
-#define DS_NO_VIRTUALIZATION            MAKE_HRESULT(0, _FACDS, 10)
-#define DS_INCOMPLETE                   MAKE_HRESULT(0, _FACDS, 20)
-#define DSERR_ALLOCATED                        MAKE_DSHRESULT(10)
-#define DSERR_CONTROLUNAVAIL           MAKE_DSHRESULT(30)
-#define DSERR_INVALIDPARAM             E_INVALIDARG
-#define DSERR_INVALIDCALL              MAKE_DSHRESULT(50)
-#define DSERR_GENERIC                  E_FAIL
-#define DSERR_PRIOLEVELNEEDED          MAKE_DSHRESULT(70)
-#define DSERR_OUTOFMEMORY              E_OUTOFMEMORY
-#define DSERR_BADFORMAT                        MAKE_DSHRESULT(100)
-#define DSERR_UNSUPPORTED              E_NOTIMPL
-#define DSERR_NODRIVER                 MAKE_DSHRESULT(120)
-#define DSERR_ALREADYINITIALIZED       MAKE_DSHRESULT(130)
-#define DSERR_NOAGGREGATION            CLASS_E_NOAGGREGATION
-#define DSERR_BUFFERLOST               MAKE_DSHRESULT(150)
-#define DSERR_OTHERAPPHASPRIO          MAKE_DSHRESULT(160)
-#define DSERR_UNINITIALIZED            MAKE_DSHRESULT(170)
-#define DSERR_NOINTERFACE               E_NOINTERFACE
-#define DSERR_ACCESSDENIED              E_ACCESSDENIED
-#define DSERR_BUFFERTOOSMALL            MAKE_DSHRESULT(180)
-#define DSERR_DS8_REQUIRED              MAKE_DSHRESULT(190)
-#define DSERR_SENDLOOP                  MAKE_DSHRESULT(200)
-#define DSERR_BADSENDBUFFERGUID         MAKE_DSHRESULT(210)
-#define DSERR_FXUNAVAILABLE             MAKE_DSHRESULT(220)
-#define DSERR_OBJECTNOTFOUND            MAKE_DSHRESULT(4449)
-
-#define DSCAPS_PRIMARYMONO          0x00000001
-#define DSCAPS_PRIMARYSTEREO        0x00000002
-#define DSCAPS_PRIMARY8BIT          0x00000004
-#define DSCAPS_PRIMARY16BIT         0x00000008
-#define DSCAPS_CONTINUOUSRATE       0x00000010
-#define DSCAPS_EMULDRIVER           0x00000020
-#define DSCAPS_CERTIFIED            0x00000040
-#define DSCAPS_SECONDARYMONO        0x00000100
-#define DSCAPS_SECONDARYSTEREO      0x00000200
-#define DSCAPS_SECONDARY8BIT        0x00000400
-#define DSCAPS_SECONDARY16BIT       0x00000800
-
-#define        DSSCL_NORMAL            1
-#define        DSSCL_PRIORITY          2
-#define        DSSCL_EXCLUSIVE         3
-#define        DSSCL_WRITEPRIMARY      4
-
-typedef struct _DSCAPS
-{
-    DWORD      dwSize;
-    DWORD      dwFlags;
-    DWORD      dwMinSecondarySampleRate;
-    DWORD      dwMaxSecondarySampleRate;
-    DWORD      dwPrimaryBuffers;
-    DWORD      dwMaxHwMixingAllBuffers;
-    DWORD      dwMaxHwMixingStaticBuffers;
-    DWORD      dwMaxHwMixingStreamingBuffers;
-    DWORD      dwFreeHwMixingAllBuffers;
-    DWORD      dwFreeHwMixingStaticBuffers;
-    DWORD      dwFreeHwMixingStreamingBuffers;
-    DWORD      dwMaxHw3DAllBuffers;
-    DWORD      dwMaxHw3DStaticBuffers;
-    DWORD      dwMaxHw3DStreamingBuffers;
-    DWORD      dwFreeHw3DAllBuffers;
-    DWORD      dwFreeHw3DStaticBuffers;
-    DWORD      dwFreeHw3DStreamingBuffers;
-    DWORD      dwTotalHwMemBytes;
-    DWORD      dwFreeHwMemBytes;
-    DWORD      dwMaxContigFreeHwMemBytes;
-    DWORD      dwUnlockTransferRateHwBuffers;
-    DWORD      dwPlayCpuOverheadSwBuffers;
-    DWORD      dwReserved1;
-    DWORD      dwReserved2;
-} DSCAPS,*LPDSCAPS;
-typedef const DSCAPS *LPCDSCAPS;
-
-#define DSBPLAY_LOOPING             0x00000001
-#define DSBPLAY_LOCHARDWARE         0x00000002
-#define DSBPLAY_LOCSOFTWARE         0x00000004
-#define DSBPLAY_TERMINATEBY_TIME    0x00000008
-#define DSBPLAY_TERMINATEBY_DISTANCE    0x000000010
-#define DSBPLAY_TERMINATEBY_PRIORITY    0x000000020
-
-#define DSBSTATUS_PLAYING           0x00000001
-#define DSBSTATUS_BUFFERLOST        0x00000002
-#define DSBSTATUS_LOOPING           0x00000004
-#define DSBSTATUS_LOCHARDWARE       0x00000008
-#define DSBSTATUS_LOCSOFTWARE       0x00000010
-#define DSBSTATUS_TERMINATED        0x00000020
-
-#define DSBLOCK_FROMWRITECURSOR     0x00000001
-#define DSBLOCK_ENTIREBUFFER        0x00000002
-
-#define DSBCAPS_PRIMARYBUFFER       0x00000001
-#define DSBCAPS_STATIC              0x00000002
-#define DSBCAPS_LOCHARDWARE         0x00000004
-#define DSBCAPS_LOCSOFTWARE         0x00000008
-#define DSBCAPS_CTRL3D              0x00000010
-#define DSBCAPS_CTRLFREQUENCY       0x00000020
-#define DSBCAPS_CTRLPAN             0x00000040
-#define DSBCAPS_CTRLVOLUME          0x00000080
-#define DSBCAPS_CTRLDEFAULT         0x000000E0  /* Pan + volume + frequency. */
-#define DSBCAPS_CTRLPOSITIONNOTIFY  0x00000100
-#define DSBCAPS_CTRLFX              0x00000200
-#define DSBCAPS_CTRLALL             0x000001F0  /* All control capabilities */
-#define DSBCAPS_STICKYFOCUS         0x00004000
-#define DSBCAPS_GLOBALFOCUS         0x00008000
-#define DSBCAPS_GETCURRENTPOSITION2 0x00010000  /* More accurate play cursor under emulation*/
-#define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000
-#define DSBCAPS_LOCDEFER            0x00040000
-
-#define DSBSIZE_MIN                 4
-#define DSBSIZE_MAX                 0xFFFFFFF
-#define DSBPAN_LEFT                 -10000
-#define DSBPAN_CENTER               0
-#define DSBPAN_RIGHT                 10000
-#define DSBVOLUME_MAX                    0
-#define DSBVOLUME_MIN               -10000
-#define DSBFREQUENCY_MIN            100
-#define DSBFREQUENCY_MAX            200000
-#define DSBFREQUENCY_ORIGINAL       0
-
-typedef struct _DSBCAPS
-{
-    DWORD      dwSize;
-    DWORD      dwFlags;
-    DWORD      dwBufferBytes;
-    DWORD      dwUnlockTransferRate;
-    DWORD      dwPlayCpuOverhead;
-} DSBCAPS,*LPDSBCAPS;
-typedef const DSBCAPS *LPCDSBCAPS;
-
-#define DSSCL_NORMAL                1
-#define DSSCL_PRIORITY              2
-#define DSSCL_EXCLUSIVE             3
-#define DSSCL_WRITEPRIMARY          4
-
-typedef struct _DSEFFECTDESC
-{
-    DWORD      dwSize;
-    DWORD      dwFlags;
-    GUID       guidDSFXClass;
-    DWORD_PTR  dwReserved1;
-    DWORD_PTR  dwReserved2;
-} DSEFFECTDESC,*LPDSEFFECTDESC;
-typedef const DSEFFECTDESC *LPCDSEFFECTDESC;
-
-#define DSFX_LOCHARDWARE    0x00000001
-#define DSFX_LOCSOFTWARE    0x00000002
-
-enum
-{
-    DSFXR_PRESENT,
-    DSFXR_LOCHARDWARE,
-    DSFXR_LOCSOFTWARE,
-    DSFXR_UNALLOCATED,
-    DSFXR_FAILED,
-    DSFXR_UNKNOWN,
-    DSFXR_SENDLOOP
-};
-
-typedef struct _DSBUFFERDESC1
-{
-    DWORD              dwSize;
-    DWORD              dwFlags;
-    DWORD              dwBufferBytes;
-    DWORD              dwReserved;
-    LPWAVEFORMATEX     lpwfxFormat;
-} DSBUFFERDESC1,*LPDSBUFFERDESC1;
-typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1;
-
-typedef struct _DSBUFFERDESC
-{
-    DWORD              dwSize;
-    DWORD              dwFlags;
-    DWORD              dwBufferBytes;
-    DWORD              dwReserved;
-    LPWAVEFORMATEX     lpwfxFormat;
-    GUID               guid3DAlgorithm;
-} DSBUFFERDESC,*LPDSBUFFERDESC;
-typedef const DSBUFFERDESC *LPCDSBUFFERDESC;
-
-typedef struct _DSBPOSITIONNOTIFY
-{
-    DWORD      dwOffset;
-    HANDLE     hEventNotify;
-} DSBPOSITIONNOTIFY,*LPDSBPOSITIONNOTIFY;
-typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
-
-#define DSSPEAKER_HEADPHONE     1
-#define DSSPEAKER_MONO          2
-#define DSSPEAKER_QUAD          3
-#define DSSPEAKER_STEREO        4
-#define DSSPEAKER_SURROUND      5
-#define DSSPEAKER_5POINT1       6
-#define DSSPEAKER_7POINT1       7
-
-#define DSSPEAKER_GEOMETRY_MIN      0x00000005  /* 5 degrees */
-#define DSSPEAKER_GEOMETRY_NARROW   0x0000000A  /* 10 degrees */
-#define DSSPEAKER_GEOMETRY_WIDE     0x00000014  /* 20 degrees */
-#define DSSPEAKER_GEOMETRY_MAX      0x000000B4  /* 180 degrees */
-
-#define DSSPEAKER_COMBINED(c, g)    ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16))
-#define DSSPEAKER_CONFIG(a)         ((BYTE)(a))
-#define DSSPEAKER_GEOMETRY(a)       ((BYTE)(((DWORD)(a) >> 16) & 0x00FF))
-
-#define DS_CERTIFIED                0x00000000
-#define DS_UNCERTIFIED              0x00000001
-
-typedef struct _DSCEFFECTDESC
-{
-    DWORD       dwSize;
-    DWORD       dwFlags;
-    GUID        guidDSCFXClass;
-    GUID        guidDSCFXInstance;
-    DWORD       dwReserved1;
-    DWORD       dwReserved2;
-} DSCEFFECTDESC, *LPDSCEFFECTDESC;
-typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC;
-
-#define DSCFX_LOCHARDWARE   0x00000001
-#define DSCFX_LOCSOFTWARE   0x00000002
-
-#define DSCFXR_LOCHARDWARE  0x00000010
-#define DSCFXR_LOCSOFTWARE  0x00000020
-
-typedef struct _DSCBUFFERDESC1
-{
-  DWORD           dwSize;
-  DWORD           dwFlags;
-  DWORD           dwBufferBytes;
-  DWORD           dwReserved;
-  LPWAVEFORMATEX  lpwfxFormat;
-} DSCBUFFERDESC1, *LPDSCBUFFERDESC1;
-
-typedef struct _DSCBUFFERDESC
-{
-  DWORD           dwSize;
-  DWORD           dwFlags;
-  DWORD           dwBufferBytes;
-  DWORD           dwReserved;
-  LPWAVEFORMATEX  lpwfxFormat;
-  DWORD           dwFXCount;
-  LPDSCEFFECTDESC lpDSCFXDesc;
-} DSCBUFFERDESC, *LPDSCBUFFERDESC;
-typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC;
-
-typedef struct _DSCCAPS
-{
-  DWORD dwSize;
-  DWORD dwFlags;
-  DWORD dwFormats;
-  DWORD dwChannels;
-} DSCCAPS, *LPDSCCAPS;
-typedef const DSCCAPS *LPCDSCCAPS;
-
-typedef struct _DSCBCAPS
-{
-  DWORD dwSize;
-  DWORD dwFlags;
-  DWORD dwBufferBytes;
-  DWORD dwReserved;
-} DSCBCAPS, *LPDSCBCAPS;
-typedef const DSCBCAPS *LPCDSCBCAPS;
-
-#define DSCCAPS_EMULDRIVER          DSCAPS_EMULDRIVER
-#define DSCCAPS_CERTIFIED           DSCAPS_CERTIFIED
-#define DSCCAPS_MULTIPLECAPTURE     0x00000001
-
-#define DSCBCAPS_WAVEMAPPED         0x80000000
-#define DSCBCAPS_CTRLFX             0x00000200
-
-#define DSCBLOCK_ENTIREBUFFER       0x00000001
-#define DSCBSTART_LOOPING           0x00000001
-#define DSCBPN_OFFSET_STOP          0xffffffff
-
-#define DSCBSTATUS_CAPTURING        0x00000001
-#define DSCBSTATUS_LOOPING          0x00000002
-
-#ifndef __LPCGUID_DEFINED__
-#define __LPCGUID_DEFINED__
-typedef const GUID *LPCGUID;
-#endif
-
-typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID,LPCWSTR,LPCWSTR,LPVOID);
-typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID,LPCSTR,LPCSTR,LPVOID);
-DECL_WINELIB_TYPE_AW(LPDSENUMCALLBACK)
-
-extern HRESULT WINAPI DirectSoundCreate(LPCGUID lpGUID,LPDIRECTSOUND *ppDS,LPUNKNOWN pUnkOuter);
-extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA, LPVOID);
-extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW, LPVOID);
-#define DirectSoundEnumerate WINELIB_NAME_AW(DirectSoundEnumerate)
-extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter);
-extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA, LPVOID);
-extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW, LPVOID);
-#define DirectSoundCaptureEnumerate WINELIB_NAME_AW(DirectSoundCaptureEnumerate)
-
-extern HRESULT WINAPI DirectSoundCreate8(LPCGUID lpGUID,LPDIRECTSOUND8 *ppDS8,LPUNKNOWN pUnkOuter);
-extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter);
-extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice,
-    LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, DWORD dwLevel,
-    LPDIRECTSOUNDFULLDUPLEX *ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter);
-#define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate
-extern HRESULT WINAPI GetDeviceID(LPCGUID lpGuidSrc, LPGUID lpGuidDest);
-
-
-/*****************************************************************************
- * IDirectSound interface
- */
-#undef INTERFACE
-#define INTERFACE IDirectSound
-DECLARE_INTERFACE_(IDirectSound,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSound methods ***/
-    STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
-    STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
-    STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
-    STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSound_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSound_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSound_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSound methods ***/
-#define IDirectSound_CreateSoundBuffer(p,a,b,c)  (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
-#define IDirectSound_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
-#define IDirectSound_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectSound_Compact(p)                  (p)->lpVtbl->Compact(p)
-#define IDirectSound_GetSpeakerConfig(p,a)       (p)->lpVtbl->GetSpeakerConfig(p,a)
-#define IDirectSound_SetSpeakerConfig(p,a)       (p)->lpVtbl->SetSpeakerConfig(p,a)
-#define IDirectSound_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirectSound_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSound_AddRef(p)             (p)->AddRef()
-#define IDirectSound_Release(p)            (p)->Release()
-/*** IDirectSound methods ***/
-#define IDirectSound_CreateSoundBuffer(p,a,b,c)  (p)->CreateSoundBuffer(a,b,c)
-#define IDirectSound_GetCaps(p,a)                (p)->GetCaps(a)
-#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b)
-#define IDirectSound_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
-#define IDirectSound_Compact(p)                  (p)->Compact()
-#define IDirectSound_GetSpeakerConfig(p,a)       (p)->GetSpeakerConfig(a)
-#define IDirectSound_SetSpeakerConfig(p,a)       (p)->SetSpeakerConfig(a)
-#define IDirectSound_Initialize(p,a)             (p)->Initialize(a)
-#endif
-
-
-/*****************************************************************************
- * IDirectSound8 interface
- */
-#define INTERFACE IDirectSound8
-DECLARE_INTERFACE_(IDirectSound8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSound8 methods ***/
-    STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
-    STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
-    STDMETHOD(Compact)(THIS) PURE;
-    STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
-    STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
-    STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
-    STDMETHOD(VerifyCertification)(THIS_ LPDWORD pdwCertified) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSound8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSound8_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSound8_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSound methods ***/
-#define IDirectSound8_CreateSoundBuffer(p,a,b,c)  (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
-#define IDirectSound8_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
-#define IDirectSound8_SetCooperativeLevel(p,a,b)  (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectSound8_Compact(p)                  (p)->lpVtbl->Compact(p)
-#define IDirectSound8_GetSpeakerConfig(p,a)       (p)->lpVtbl->GetSpeakerConfig(p,a)
-#define IDirectSound8_SetSpeakerConfig(p,a)       (p)->lpVtbl->SetSpeakerConfig(p,a)
-#define IDirectSound8_Initialize(p,a)             (p)->lpVtbl->Initialize(p,a)
-/*** IDirectSound8 methods ***/
-#define IDirectSound8_VerifyCertification(p,a)    (p)->lpVtbl->VerifyCertification(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirectSound8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSound8_AddRef(p)             (p)->AddRef()
-#define IDirectSound8_Release(p)            (p)->Release()
-/*** IDirectSound methods ***/
-#define IDirectSound8_CreateSoundBuffer(p,a,b,c)  (p)->CreateSoundBuffer(a,b,c)
-#define IDirectSound8_GetCaps(p,a)                (p)->GetCaps(a)
-#define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b)
-#define IDirectSound8_SetCooperativeLevel(p,a,b)  (p)->SetCooperativeLevel(a,b)
-#define IDirectSound8_Compact(p)                  (p)->Compact()
-#define IDirectSound8_GetSpeakerConfig(p,a)       (p)->GetSpeakerConfig(a)
-#define IDirectSound8_SetSpeakerConfig(p,a)       (p)->SetSpeakerConfig(a)
-#define IDirectSound8_Initialize(p,a)             (p)->Initialize(a)
-/*** IDirectSound8 methods ***/
-#define IDirectSound8_VerifyCertification(p,a)    (p)->VerifyCertification(a)
-#endif
-
-
-/*****************************************************************************
- * IDirectSoundBuffer interface
- */
-#define INTERFACE IDirectSoundBuffer
-DECLARE_INTERFACE_(IDirectSoundBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundBuffer methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE;
-    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE;
-    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
-    STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE;
-    STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE;
-    STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
-    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE;
-    STDMETHOD(Lock)(THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE;
-    STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE;
-    STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE;
-    STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE;
-    STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE;
-    STDMETHOD(SetPan)(THIS_ LONG lPan) PURE;
-    STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioPtr2) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSoundBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSoundBuffer methods ***/
-#define IDirectSoundBuffer_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundBuffer_GetCurrentPosition(p,a,b)   (p)->lpVtbl->GetCurrentPosition(p,a,b)
-#define IDirectSoundBuffer_GetFormat(p,a,b,c)          (p)->lpVtbl->GetFormat(p,a,b,c)
-#define IDirectSoundBuffer_GetVolume(p,a)              (p)->lpVtbl->GetVolume(p,a)
-#define IDirectSoundBuffer_GetPan(p,a)                 (p)->lpVtbl->GetPan(p,a)
-#define IDirectSoundBuffer_GetFrequency(p,a)           (p)->lpVtbl->GetFrequency(p,a)
-#define IDirectSoundBuffer_GetStatus(p,a)              (p)->lpVtbl->GetStatus(p,a)
-#define IDirectSoundBuffer_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g)       (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
-#define IDirectSoundBuffer_Play(p,a,b,c)               (p)->lpVtbl->Play(p,a,b,c)
-#define IDirectSoundBuffer_SetCurrentPosition(p,a)     (p)->lpVtbl->SetCurrentPosition(p,a)
-#define IDirectSoundBuffer_SetFormat(p,a)              (p)->lpVtbl->SetFormat(p,a)
-#define IDirectSoundBuffer_SetVolume(p,a)              (p)->lpVtbl->SetVolume(p,a)
-#define IDirectSoundBuffer_SetPan(p,a)                 (p)->lpVtbl->SetPan(p,a)
-#define IDirectSoundBuffer_SetFrequency(p,a)           (p)->lpVtbl->SetFrequency(p,a)
-#define IDirectSoundBuffer_Stop(p)                     (p)->lpVtbl->Stop(p)
-#define IDirectSoundBuffer_Unlock(p,a,b,c,d)           (p)->lpVtbl->Unlock(p,a,b,c,d)
-#define IDirectSoundBuffer_Restore(p)                  (p)->lpVtbl->Restore(p)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSoundBuffer_AddRef(p)             (p)->AddRef()
-#define IDirectSoundBuffer_Release(p)            (p)->Release()
-/*** IDirectSoundBuffer methods ***/
-#define IDirectSoundBuffer_GetCaps(p,a)                (p)->GetCaps(a)
-#define IDirectSoundBuffer_GetCurrentPosition(p,a,b)   (p)->GetCurrentPosition(a,b)
-#define IDirectSoundBuffer_GetFormat(p,a,b,c)          (p)->GetFormat(a,b,c)
-#define IDirectSoundBuffer_GetVolume(p,a)              (p)->GetVolume(a)
-#define IDirectSoundBuffer_GetPan(p,a)                 (p)->GetPan(a)
-#define IDirectSoundBuffer_GetFrequency(p,a)           (p)->GetFrequency(a)
-#define IDirectSoundBuffer_GetStatus(p,a)              (p)->GetStatus(a)
-#define IDirectSoundBuffer_Initialize(p,a,b)           (p)->Initialize(a,b)
-#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g)       (p)->Lock(a,b,c,d,e,f,g)
-#define IDirectSoundBuffer_Play(p,a,b,c)               (p)->Play(a,b,c)
-#define IDirectSoundBuffer_SetCurrentPosition(p,a)     (p)->SetCurrentPosition(a)
-#define IDirectSoundBuffer_SetFormat(p,a)              (p)->SetFormat(a)
-#define IDirectSoundBuffer_SetVolume(p,a)              (p)->SetVolume(a)
-#define IDirectSoundBuffer_SetPan(p,a)                 (p)->SetPan(a)
-#define IDirectSoundBuffer_SetFrequency(p,a)           (p)->SetFrequency(a)
-#define IDirectSoundBuffer_Stop(p)                     (p)->Stop()
-#define IDirectSoundBuffer_Unlock(p,a,b,c,d)           (p)->Unlock(a,b,c,d)
-#define IDirectSoundBuffer_Restore(p)                  (p)->Restore()
-#endif
-
-
-/*****************************************************************************
- * IDirectSoundBuffer8 interface
- */
-#define INTERFACE IDirectSoundBuffer8
-DECLARE_INTERFACE_(IDirectSoundBuffer8,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundBuffer8 methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDSBCAPS lpDSBufferCaps) PURE;
-    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor) PURE;
-    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
-    STDMETHOD(GetVolume)(THIS_ LPLONG lplVolume) PURE;
-    STDMETHOD(GetPan)(THIS_ LPLONG lplpan) PURE;
-    STDMETHOD(GetFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
-    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUND lpDirectSound, LPCDSBUFFERDESC lpcDSBufferDesc) PURE;
-    STDMETHOD(Lock)(THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE;
-    STDMETHOD(Play)(THIS_ DWORD dwReserved1, DWORD dwReserved2, DWORD dwFlags) PURE;
-    STDMETHOD(SetCurrentPosition)(THIS_ DWORD dwNewPosition) PURE;
-    STDMETHOD(SetFormat)(THIS_ LPCWAVEFORMATEX lpcfxFormat) PURE;
-    STDMETHOD(SetVolume)(THIS_ LONG lVolume) PURE;
-    STDMETHOD(SetPan)(THIS_ LONG lPan) PURE;
-    STDMETHOD(SetFrequency)(THIS_ DWORD dwFrequency) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioPtr2) PURE;
-    STDMETHOD(Restore)(THIS) PURE;
-    STDMETHOD(SetFX)(THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE;
-    STDMETHOD(AcquireResources)(THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE;
-    STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundBuffer8_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSoundBuffer8_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSoundBuffer methods ***/
-#define IDirectSoundBuffer8_GetCaps(p,a)                (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b)   (p)->lpVtbl->GetCurrentPosition(p,a,b)
-#define IDirectSoundBuffer8_GetFormat(p,a,b,c)          (p)->lpVtbl->GetFormat(p,a,b,c)
-#define IDirectSoundBuffer8_GetVolume(p,a)              (p)->lpVtbl->GetVolume(p,a)
-#define IDirectSoundBuffer8_GetPan(p,a)                 (p)->lpVtbl->GetPan(p,a)
-#define IDirectSoundBuffer8_GetFrequency(p,a)           (p)->lpVtbl->GetFrequency(p,a)
-#define IDirectSoundBuffer8_GetStatus(p,a)              (p)->lpVtbl->GetStatus(p,a)
-#define IDirectSoundBuffer8_Initialize(p,a,b)           (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g)       (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
-#define IDirectSoundBuffer8_Play(p,a,b,c)               (p)->lpVtbl->Play(p,a,b,c)
-#define IDirectSoundBuffer8_SetCurrentPosition(p,a)     (p)->lpVtbl->SetCurrentPosition(p,a)
-#define IDirectSoundBuffer8_SetFormat(p,a)              (p)->lpVtbl->SetFormat(p,a)
-#define IDirectSoundBuffer8_SetVolume(p,a)              (p)->lpVtbl->SetVolume(p,a)
-#define IDirectSoundBuffer8_SetPan(p,a)                 (p)->lpVtbl->SetPan(p,a)
-#define IDirectSoundBuffer8_SetFrequency(p,a)           (p)->lpVtbl->SetFrequency(p,a)
-#define IDirectSoundBuffer8_Stop(p)                     (p)->lpVtbl->Stop(p)
-#define IDirectSoundBuffer8_Unlock(p,a,b,c,d)           (p)->lpVtbl->Unlock(p,a,b,c,d)
-#define IDirectSoundBuffer8_Restore(p)                  (p)->lpVtbl->Restore(p)
-/*** IDirectSoundBuffer8 methods ***/
-#define IDirectSoundBuffer8_SetFX(p,a,b,c)              (p)->lpVtbl->SetFX(p,a,b,c)
-#define IDirectSoundBuffer8_AcquireResources(p,a,b,c)   (p)->lpVtbl->AcquireResources(p,a,b,c)
-#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d)  (p)->lpVtbl->GetObjectInPath(p,a,b,c,d)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundBuffer8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSoundBuffer8_AddRef(p)             (p)->AddRef()
-#define IDirectSoundBuffer8_Release(p)            (p)->Release()
-/*** IDirectSoundBuffer methods ***/
-#define IDirectSoundBuffer8_GetCaps(p,a)                (p)->GetCaps(a)
-#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b)   (p)->GetCurrentPosition(a,b)
-#define IDirectSoundBuffer8_GetFormat(p,a,b,c)          (p)->GetFormat(a,b,c)
-#define IDirectSoundBuffer8_GetVolume(p,a)              (p)->GetVolume(a)
-#define IDirectSoundBuffer8_GetPan(p,a)                 (p)->GetPan(a)
-#define IDirectSoundBuffer8_GetFrequency(p,a)           (p)->GetFrequency(a)
-#define IDirectSoundBuffer8_GetStatus(p,a)              (p)->GetStatus(a)
-#define IDirectSoundBuffer8_Initialize(p,a,b)           (p)->Initialize(a,b)
-#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g)       (p)->Lock(a,b,c,d,e,f,g)
-#define IDirectSoundBuffer8_Play(p,a,b,c)               (p)->Play(a,b,c)
-#define IDirectSoundBuffer8_SetCurrentPosition(p,a)     (p)->SetCurrentPosition(a)
-#define IDirectSoundBuffer8_SetFormat(p,a)              (p)->SetFormat(a)
-#define IDirectSoundBuffer8_SetVolume(p,a)              (p)->SetVolume(a)
-#define IDirectSoundBuffer8_SetPan(p,a)                 (p)->SetPan(a)
-#define IDirectSoundBuffer8_SetFrequency(p,a)           (p)->SetFrequency(a)
-#define IDirectSoundBuffer8_Stop(p)                     (p)->Stop()
-#define IDirectSoundBuffer8_Unlock(p,a,b,c,d)           (p)->Unlock(a,b,c,d)
-#define IDirectSoundBuffer8_Restore(p)                  (p)->Restore()
-/*** IDirectSoundBuffer8 methods ***/
-#define IDirectSoundBuffer8_SetFX(p,a,b,c)              (p)->SetFX(a,b,c)
-#define IDirectSoundBuffer8_AcquireResources(p,a,b,c)   (p)->AcquireResources(a,b,c)
-#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d)  (p)->GetObjectInPath(a,b,c,d)
-#endif
-
-
-/*****************************************************************************
- * IDirectSoundCapture interface
- */
-#define INTERFACE IDirectSoundCapture
-DECLARE_INTERFACE_(IDirectSoundCapture,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundCapture methods ***/
-    STDMETHOD(CreateCaptureBuffer)(THIS_ LPCDSCBUFFERDESC lpcDSCBufferDesc,LPDIRECTSOUNDCAPTUREBUFFER *lplpDSCaptureBuffer, LPUNKNOWN pUnk) PURE;
-    STDMETHOD(GetCaps)(THIS_ LPDSCCAPS lpDSCCaps) PURE;
-    STDMETHOD(Initialize)(THIS_ LPCGUID lpcGUID) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundCapture_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundCapture_AddRef(p)                    (p)->lpVtbl->AddRef(p)
-#define IDirectSoundCapture_Release(p)                   (p)->lpVtbl->Release(p)
-/*** IDirectSoundCapture methods ***/
-#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c)
-#define IDirectSoundCapture_GetCaps(p,a)                 (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundCapture_Initialize(p,a)              (p)->lpVtbl->Initialize(p,a)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundCapture_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
-#define IDirectSoundCapture_AddRef(p)                    (p)->AddRef()
-#define IDirectSoundCapture_Release(p)                   (p)->Release()
-/*** IDirectSoundCapture methods ***/
-#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c)
-#define IDirectSoundCapture_GetCaps(p,a)                 (p)->GetCaps(a)
-#define IDirectSoundCapture_Initialize(p,a)              (p)->Initialize(a)
-#endif
-
-/*****************************************************************************
- * IDirectSoundCaptureBuffer interface
- */
-#define INTERFACE IDirectSoundCaptureBuffer
-DECLARE_INTERFACE_(IDirectSoundCaptureBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundCaptureBuffer methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE;
-    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE;
-    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
-    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE;
-    STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
-    STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b)     (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundCaptureBuffer_AddRef(p)                 (p)->lpVtbl->AddRef(p)
-#define IDirectSoundCaptureBuffer_Release(p)                (p)->lpVtbl->Release(p)
-/*** IDirectSoundCaptureBuffer methods ***/
-#define IDirectSoundCaptureBuffer_GetCaps(p,a)              (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b)
-#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c)        (p)->lpVtbl->GetFormat(p,a,b,c)
-#define IDirectSoundCaptureBuffer_GetStatus(p,a)            (p)->lpVtbl->GetStatus(p,a)
-#define IDirectSoundCaptureBuffer_Initialize(p,a,b)         (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g)     (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
-#define IDirectSoundCaptureBuffer_Start(p,a)                (p)->lpVtbl->Start(p,a)
-#define IDirectSoundCaptureBuffer_Stop(p)                   (p)->lpVtbl->Stop(p)
-#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d)         (p)->lpVtbl->Unlock(p,a,b,c,d)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b)     (p)->QueryInterface(a,b)
-#define IDirectSoundCaptureBuffer_AddRef(p)                 (p)->AddRef()
-#define IDirectSoundCaptureBuffer_Release(p)                (p)->Release()
-/*** IDirectSoundCaptureBuffer methods ***/
-#define IDirectSoundCaptureBuffer_GetCaps(p,a)              (p)->GetCaps(a)
-#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b)
-#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c)        (p)->GetFormat(a,b,c)
-#define IDirectSoundCaptureBuffer_GetStatus(p,a)            (p)->GetStatus(a)
-#define IDirectSoundCaptureBuffer_Initialize(p,a,b)         (p)->Initialize(a,b)
-#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g)     (p)->Lock(a,b,c,d,e,f,g)
-#define IDirectSoundCaptureBuffer_Start(p,a)                (p)->Start(a)
-#define IDirectSoundCaptureBuffer_Stop(p)                   (p)->Stop()
-#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d)         (p)->Unlock(a,b,c,d)
-#endif
-
-/*****************************************************************************
- * IDirectSoundCaptureBuffer8 interface
- */
-#define INTERFACE IDirectSoundCaptureBuffer8
-DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8,IDirectSoundCaptureBuffer)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundCaptureBuffer methods ***/
-    STDMETHOD(GetCaps)(THIS_ LPDSCBCAPS lpDSCBCaps) PURE;
-    STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD lpdwCapturePosition,LPDWORD lpdwReadPosition) PURE;
-    STDMETHOD(GetFormat)(THIS_ LPWAVEFORMATEX lpwfxFormat, DWORD dwSizeAllocated, LPDWORD lpdwSizeWritten) PURE;
-    STDMETHOD(GetStatus)(THIS_ LPDWORD lpdwStatus) PURE;
-    STDMETHOD(Initialize)(THIS_ LPDIRECTSOUNDCAPTURE lpDSC, LPCDSCBUFFERDESC lpcDSCBDesc) PURE;
-    STDMETHOD(Lock)(THIS_ DWORD dwReadCusor, DWORD dwReadBytes, LPVOID *lplpvAudioPtr1, LPDWORD lpdwAudioBytes1, LPVOID *lplpvAudioPtr2, LPDWORD lpdwAudioBytes2, DWORD dwFlags) PURE;
-    STDMETHOD(Start)(THIS_ DWORD dwFlags) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(Unlock)(THIS_ LPVOID lpvAudioPtr1, DWORD dwAudioBytes1, LPVOID lpvAudioPtr2, DWORD dwAudioBytes2) PURE;
-    /*** IDirectSoundCaptureBuffer8 methods ***/
-    STDMETHOD(GetObjectInPath)(THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE;
-    STDMETHOD(GetFXStatus)(THIS_ DWORD dwFXCount, LPDWORD pdwFXStatus) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundCaptureBuffer8_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IDirectSoundCaptureBuffer8_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IDirectSoundCaptureBuffer methods ***/
-#define IDirectSoundCaptureBuffer8_GetCaps(p,a)               (p)->lpVtbl->GetCaps(p,a)
-#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b)  (p)->lpVtbl->GetCurrentPosition(p,a,b)
-#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c)         (p)->lpVtbl->GetFormat(p,a,b,c)
-#define IDirectSoundCaptureBuffer8_GetStatus(p,a)             (p)->lpVtbl->GetStatus(p,a)
-#define IDirectSoundCaptureBuffer8_Initialize(p,a,b)          (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g)      (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
-#define IDirectSoundCaptureBuffer8_Start(p,a)                 (p)->lpVtbl->Start(p,a)
-#define IDirectSoundCaptureBuffer8_Stop(p)                    (p)->lpVtbl->Stop(p)
-#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d)          (p)->lpVtbl->Unlock(p,a,b,c,d)
-/*** IDirectSoundCaptureBuffer8 methods ***/
-#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d)
-#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b)         (p)->lpVtbl->GetFXStatus(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b)      (p)->QueryInterface(a,b)
-#define IDirectSoundCaptureBuffer8_AddRef(p)                  (p)->AddRef()
-#define IDirectSoundCaptureBuffer8_Release(p)                 (p)->Release()
-/*** IDirectSoundCaptureBuffer methods ***/
-#define IDirectSoundCaptureBuffer8_GetCaps(p,a)               (p)->GetCaps(a)
-#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b)  (p)->GetCurrentPosition(a,b)
-#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c)         (p)->GetFormat(a,b,c)
-#define IDirectSoundCaptureBuffer8_GetStatus(p,a)             (p)->GetStatus(a)
-#define IDirectSoundCaptureBuffer8_Initialize(p,a,b)          (p)->Initialize(a,b)
-#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g)      (p)->Lock(a,b,c,d,e,f,g)
-#define IDirectSoundCaptureBuffer8_Start(p,a)                 (p)->Start(a)
-#define IDirectSoundCaptureBuffer8_Stop(p)                    (p)->Stop()
-#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d)          (p)->Unlock(a,b,c,d)
-/*** IDirectSoundCaptureBuffer8 methods ***/
-#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d)
-#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b)         (p)->GetFXStatus(a,b)
-#endif
-
-/*****************************************************************************
- * IDirectSoundNotify interface
- */
-#define WINE_NOBUFFER                   0x80000000
-
-#define DSBPN_OFFSETSTOP               -1
-
-#define DSBNOTIFICATIONS_MAX           100000UL
-
-#define INTERFACE IDirectSoundNotify
-DECLARE_INTERFACE_(IDirectSoundNotify,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundNotify methods ***/
-    STDMETHOD(SetNotificationPositions)(THIS_ DWORD cPositionNotifies, LPCDSBPOSITIONNOTIFY lpcPositionNotifies) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundNotify_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSoundNotify_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSoundNotify methods ***/
-#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundNotify_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSoundNotify_AddRef(p)             (p)->AddRef()
-#define IDirectSoundNotify_Release(p)            (p)->Release()
-/*** IDirectSoundNotify methods ***/
-#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b)
-#endif
-
-
-/*****************************************************************************
- * IDirectSound3DListener interface
- */
-#define DS3DMODE_NORMAL             0x00000000
-#define DS3DMODE_HEADRELATIVE       0x00000001
-#define DS3DMODE_DISABLE            0x00000002
-
-#define DS3D_IMMEDIATE              0x00000000
-#define DS3D_DEFERRED               0x00000001
-
-#define DS3D_MINDISTANCEFACTOR      FLT_MIN
-#define DS3D_MAXDISTANCEFACTOR      FLT_MAX
-#define DS3D_DEFAULTDISTANCEFACTOR  1.0f
-
-#define DS3D_MINROLLOFFFACTOR       0.0f
-#define DS3D_MAXROLLOFFFACTOR       10.0f
-#define DS3D_DEFAULTROLLOFFFACTOR   1.0f
-
-#define DS3D_MINDOPPLERFACTOR       0.0f
-#define DS3D_MAXDOPPLERFACTOR       10.0f
-#define DS3D_DEFAULTDOPPLERFACTOR   1.0f
-
-#define DS3D_DEFAULTMINDISTANCE     1.0f
-#define DS3D_DEFAULTMAXDISTANCE     1000000000.0f
-
-#define DS3D_MINCONEANGLE           0
-#define DS3D_MAXCONEANGLE           360
-#define DS3D_DEFAULTCONEANGLE       360
-
-#define DS3D_DEFAULTCONEOUTSIDEVOLUME   DSBVOLUME_MAX
-
-typedef struct _DS3DLISTENER {
-       DWORD                           dwSize;
-       D3DVECTOR                       vPosition;
-       D3DVECTOR                       vVelocity;
-       D3DVECTOR                       vOrientFront;
-       D3DVECTOR                       vOrientTop;
-       D3DVALUE                        flDistanceFactor;
-       D3DVALUE                        flRolloffFactor;
-       D3DVALUE                        flDopplerFactor;
-} DS3DLISTENER, *LPDS3DLISTENER;
-
-typedef const DS3DLISTENER *LPCDS3DLISTENER;
-
-#define INTERFACE IDirectSound3DListener
-DECLARE_INTERFACE_(IDirectSound3DListener,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSound3DListener methods ***/
-    STDMETHOD(GetAllParameters)(THIS_ LPDS3DLISTENER lpListener) PURE;
-    STDMETHOD(GetDistanceFactor)(THIS_ LPD3DVALUE lpflDistanceFactor) PURE;
-    STDMETHOD(GetDopplerFactor)(THIS_ LPD3DVALUE lpflDopplerFactor) PURE;
-    STDMETHOD(GetOrientation)(THIS_ LPD3DVECTOR lpvOrientFront, LPD3DVECTOR lpvOrientTop) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE;
-    STDMETHOD(GetRolloffFactor)(THIS_ LPD3DVALUE lpflRolloffFactor) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE;
-    STDMETHOD(SetAllParameters)(THIS_ LPCDS3DLISTENER lpcListener, DWORD dwApply) PURE;
-    STDMETHOD(SetDistanceFactor)(THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE;
-    STDMETHOD(SetDopplerFactor)(THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE;
-    STDMETHOD(SetOrientation)(THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE;
-    STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-    STDMETHOD(SetRolloffFactor)(THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE;
-    STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-    STDMETHOD(CommitDeferredSettings)(THIS) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSound3DListener_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSound3DListener_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSound3DListener_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSound3DListener methods ***/
-#define IDirectSound3DListener_GetAllParameters(p,a)           (p)->lpVtbl->GetAllParameters(p,a)
-#define IDirectSound3DListener_GetDistanceFactor(p,a)          (p)->lpVtbl->GetDistanceFactor(p,a)
-#define IDirectSound3DListener_GetDopplerFactor(p,a)           (p)->lpVtbl->GetDopplerFactor(p,a)
-#define IDirectSound3DListener_GetOrientation(p,a,b)           (p)->lpVtbl->GetOrientation(p,a,b)
-#define IDirectSound3DListener_GetPosition(p,a)                (p)->lpVtbl->GetPosition(p,a)
-#define IDirectSound3DListener_GetRolloffFactor(p,a)           (p)->lpVtbl->GetRolloffFactor(p,a)
-#define IDirectSound3DListener_GetVelocity(p,a)                (p)->lpVtbl->GetVelocity(p,a)
-#define IDirectSound3DListener_SetAllParameters(p,a,b)         (p)->lpVtbl->SetAllParameters(p,a,b)
-#define IDirectSound3DListener_SetDistanceFactor(p,a,b)        (p)->lpVtbl->SetDistanceFactor(p,a,b)
-#define IDirectSound3DListener_SetDopplerFactor(p,a,b)         (p)->lpVtbl->SetDopplerFactor(p,a,b)
-#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
-#define IDirectSound3DListener_SetPosition(p,a,b,c,d)          (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirectSound3DListener_SetRolloffFactor(p,a,b)         (p)->lpVtbl->SetRolloffFactor(p,a,b)
-#define IDirectSound3DListener_SetVelocity(p,a,b,c,d)          (p)->lpVtbl->SetVelocity(p,a,b,c,d)
-#define IDirectSound3DListener_CommitDeferredSettings(p)       (p)->lpVtbl->CommitDeferredSettings(p)
-#else
-/*** IUnknown methods ***/
-#define IDirectSound3DListener_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSound3DListener_AddRef(p)             (p)->AddRef()
-#define IDirectSound3DListener_Release(p)            (p)->Release()
-/*** IDirectSound3DListener methods ***/
-#define IDirectSound3DListener_GetAllParameters(p,a)           (p)->GetAllParameters(a)
-#define IDirectSound3DListener_GetDistanceFactor(p,a)          (p)->GetDistanceFactor(a)
-#define IDirectSound3DListener_GetDopplerFactor(p,a)           (p)->GetDopplerFactor(a)
-#define IDirectSound3DListener_GetOrientation(p,a,b)           (p)->GetOrientation(a,b)
-#define IDirectSound3DListener_GetPosition(p,a)                (p)->GetPosition(a)
-#define IDirectSound3DListener_GetRolloffFactor(p,a)           (p)->GetRolloffFactor(a)
-#define IDirectSound3DListener_GetVelocity(p,a)                (p)->GetVelocity(a)
-#define IDirectSound3DListener_SetAllParameters(p,a,b)         (p)->SetAllParameters(a,b)
-#define IDirectSound3DListener_SetDistanceFactor(p,a,b)        (p)->SetDistanceFactor(a,b)
-#define IDirectSound3DListener_SetDopplerFactor(p,a,b)         (p)->SetDopplerFactor(a,b)
-#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g)
-#define IDirectSound3DListener_SetPosition(p,a,b,c,d)          (p)->SetPosition(a,b,c,d)
-#define IDirectSound3DListener_SetRolloffFactor(p,a,b)         (p)->SetRolloffFactor(a,b)
-#define IDirectSound3DListener_SetVelocity(p,a,b,c,d)          (p)->SetVelocity(a,b,c,d)
-#define IDirectSound3DListener_CommitDeferredSettings(p)       (p)->CommitDeferredSettings()
-#endif
-
-
-/*****************************************************************************
- * IDirectSound3DBuffer interface
- */
-typedef struct  _DS3DBUFFER {
-       DWORD                           dwSize;
-       D3DVECTOR                       vPosition;
-       D3DVECTOR                       vVelocity;
-       DWORD                           dwInsideConeAngle;
-       DWORD                           dwOutsideConeAngle;
-       D3DVECTOR                       vConeOrientation;
-       LONG                            lConeOutsideVolume;
-       D3DVALUE                        flMinDistance;
-       D3DVALUE                        flMaxDistance;
-       DWORD                           dwMode;
-} DS3DBUFFER, *LPDS3DBUFFER;
-
-typedef const DS3DBUFFER *LPCDS3DBUFFER;
-
-#define INTERFACE IDirectSound3DBuffer
-DECLARE_INTERFACE_(IDirectSound3DBuffer,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSound3DBuffer methods ***/
-    STDMETHOD(GetAllParameters)(THIS_ LPDS3DBUFFER lpDs3dBuffer) PURE;
-    STDMETHOD(GetConeAngles)(THIS_ LPDWORD lpdwInsideConeAngle, LPDWORD lpdwOutsideConeAngle) PURE;
-    STDMETHOD(GetConeOrientation)(THIS_ LPD3DVECTOR lpvOrientation) PURE;
-    STDMETHOD(GetConeOutsideVolume)(THIS_ LPLONG lplConeOutsideVolume) PURE;
-    STDMETHOD(GetMaxDistance)(THIS_ LPD3DVALUE lpflMaxDistance) PURE;
-    STDMETHOD(GetMinDistance)(THIS_ LPD3DVALUE lpflMinDistance) PURE;
-    STDMETHOD(GetMode)(THIS_ LPDWORD lpwdMode) PURE;
-    STDMETHOD(GetPosition)(THIS_ LPD3DVECTOR lpvPosition) PURE;
-    STDMETHOD(GetVelocity)(THIS_ LPD3DVECTOR lpvVelocity) PURE;
-    STDMETHOD(SetAllParameters)(THIS_ LPCDS3DBUFFER lpcDs3dBuffer, DWORD dwApply) PURE;
-    STDMETHOD(SetConeAngles)(THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE;
-    STDMETHOD(SetConeOrientation)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-    STDMETHOD(SetConeOutsideVolume)(THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE;
-    STDMETHOD(SetMaxDistance)(THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE;
-    STDMETHOD(SetMinDistance)(THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE;
-    STDMETHOD(SetMode)(THIS_ DWORD dwMode, DWORD dwApply) PURE;
-    STDMETHOD(SetPosition)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-    STDMETHOD(SetVelocity)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSound3DBuffer_AddRef(p)             (p)->lpVtbl->AddRef(p)
-#define IDirectSound3DBuffer_Release(p)            (p)->lpVtbl->Release(p)
-/*** IDirectSound3DBuffer methods ***/
-#define IDirectSound3DBuffer_GetAllParameters(p,a)         (p)->lpVtbl->GetAllParameters(p,a)
-#define IDirectSound3DBuffer_GetConeAngles(p,a,b)          (p)->lpVtbl->GetConeAngles(p,a,b)
-#define IDirectSound3DBuffer_GetConeOrientation(p,a)       (p)->lpVtbl->GetConeOrientation(p,a)
-#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a)     (p)->lpVtbl->GetConeOutsideVolume(p,a)
-#define IDirectSound3DBuffer_GetMaxDistance(p,a)           (p)->lpVtbl->GetMaxDistance(p,a)
-#define IDirectSound3DBuffer_GetMinDistance(p,a)           (p)->lpVtbl->GetMinDistance(p,a)
-#define IDirectSound3DBuffer_GetMode(p,a)                  (p)->lpVtbl->GetMode(p,a)
-#define IDirectSound3DBuffer_GetPosition(p,a)              (p)->lpVtbl->GetPosition(p,a)
-#define IDirectSound3DBuffer_GetVelocity(p,a)              (p)->lpVtbl->GetVelocity(p,a)
-#define IDirectSound3DBuffer_SetAllParameters(p,a,b)       (p)->lpVtbl->SetAllParameters(p,a,b)
-#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c)        (p)->lpVtbl->SetConeAngles(p,a,b,c)
-#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d)
-#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b)   (p)->lpVtbl->SetConeOutsideVolume(p,a,b)
-#define IDirectSound3DBuffer_SetMaxDistance(p,a,b)         (p)->lpVtbl->SetMaxDistance(p,a,b)
-#define IDirectSound3DBuffer_SetMinDistance(p,a,b)         (p)->lpVtbl->SetMinDistance(p,a,b)
-#define IDirectSound3DBuffer_SetMode(p,a,b)                (p)->lpVtbl->SetMode(p,a,b)
-#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d)        (p)->lpVtbl->SetPosition(p,a,b,c,d)
-#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d)        (p)->lpVtbl->SetVelocity(p,a,b,c,d)
-#else
-/*** IUnknown methods ***/
-#define IDirectSound3DBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectSound3DBuffer_AddRef(p)             (p)->AddRef()
-#define IDirectSound3DBuffer_Release(p)            (p)->Release()
-/*** IDirectSound3DBuffer methods ***/
-#define IDirectSound3DBuffer_GetAllParameters(p,a)         (p)->GetAllParameters(a)
-#define IDirectSound3DBuffer_GetConeAngles(p,a,b)          (p)->GetConeAngles(a,b)
-#define IDirectSound3DBuffer_GetConeOrientation(p,a)       (p)->GetConeOrientation(a)
-#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a)     (p)->GetConeOutsideVolume(a)
-#define IDirectSound3DBuffer_GetMaxDistance(p,a)           (p)->GetMaxDistance(a)
-#define IDirectSound3DBuffer_GetMinDistance(p,a)           (p)->GetMinDistance(a)
-#define IDirectSound3DBuffer_GetMode(p,a)                  (p)->GetMode(a)
-#define IDirectSound3DBuffer_GetPosition(p,a)              (p)->GetPosition(a)
-#define IDirectSound3DBuffer_GetVelocity(p,a)              (p)->GetVelocity(a)
-#define IDirectSound3DBuffer_SetAllParameters(p,a,b)       (p)->SetAllParameters(a,b)
-#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c)        (p)->SetConeAngles(a,b,c)
-#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d)
-#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b)   (p)->SetConeOutsideVolume(a,b)
-#define IDirectSound3DBuffer_SetMaxDistance(p,a,b)         (p)->SetMaxDistance(a,b)
-#define IDirectSound3DBuffer_SetMinDistance(p,a,b)         (p)->SetMinDistance(a,b)
-#define IDirectSound3DBuffer_SetMode(p,a,b)                (p)->SetMode(a,b)
-#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d)        (p)->SetPosition(a,b,c,d)
-#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d)        (p)->SetVelocity(a,b,c,d)
-#endif
-
-/*****************************************************************************
- * IKsPropertySet interface
- */
-#ifndef _IKsPropertySet_
-#define _IKsPropertySet_
-
-typedef struct IKsPropertySet *LPKSPROPERTYSET;
-
-DEFINE_GUID(IID_IKsPropertySet,0x31EFAC30,0x515C,0x11D0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93);
-
-#define KSPROPERTY_SUPPORT_GET 1
-#define KSPROPERTY_SUPPORT_SET 2
-
-#define INTERFACE IKsPropertySet
-DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IKsPropertySet methods ***/
-    STDMETHOD(Get)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3,ULONG *px4) PURE;
-    STDMETHOD(Set)(THIS_ REFGUID rgid,ULONG x1,LPVOID p1,ULONG x2,LPVOID p2,ULONG x3) PURE;
-    STDMETHOD(QuerySupport)(THIS_ REFGUID rgid,ULONG x1,ULONG *px2) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IKsPropertySet_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
-#define IKsPropertySet_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IKsPropertySet_Release(p)               (p)->lpVtbl->Release(p)
-/*** IKsPropertySet methods ***/
-#define IKsPropertySet_Get(p,a,b,c,d,e,f,g)     (p)->lpVtbl->Get(p,a,b,c,d,e,f,g)
-#define IKsPropertySet_Set(p,a,b,c,d,e,f)       (p)->lpVtbl->Set(p,a,b,c,d,e,f)
-#define IKsPropertySet_QuerySupport(p,a,b,c)    (p)->lpVtbl->QuerySupport(p,a,b,c)
-#else
-/*** IUnknown methods ***/
-#define IKsPropertySet_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define IKsPropertySet_AddRef(p)                (p)->AddRef()
-#define IKsPropertySet_Release(p)               (p)->Release()
-/*** IKsPropertySet methods ***/
-#define IKsPropertySet_Get(p,a,b,c,d,e,f,g)     (p)->Get(a,b,c,d,e,f,g)
-#define IKsPropertySet_Set(p,a,b,c,d,e,f)       (p)->Set(a,b,c,d,e,f)
-#define IKsPropertySet_QuerySupport(p,a,b,c)    (p)->QuerySupport(a,b,c)
-#endif
-
-#endif /* _IKsPropertySet_ */
-
-/*****************************************************************************
- * IDirectSoundFullDuplex interface
- */
-#define INTERFACE IDirectSoundFullDuplex
-DECLARE_INTERFACE_(IDirectSoundFullDuplex,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IDirectSoundFullDuplex methods ***/
-    STDMETHOD(Initialize)(THIS_ LPCGUID pCaptureGuid,LPCGUID pRendererGuid,LPCDSCBUFFERDESC lpDscBufferDesc,LPCDSBUFFERDESC lpDsBufferDesc,HWND hWnd,DWORD dwLevel,LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8,LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IDirectSoundFullDuplex_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectSoundFullDuplex_AddRef(p)                (p)->lpVtbl->AddRef(p)
-#define IDirectSoundFullDuplex_Release(p)               (p)->lpVtbl->Release(p)
-/*** IDirectSoundFullDuplex methods ***/
-#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h)
-#else
-/*** IUnknown methods ***/
-#define IDirectSoundFullDuplex_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
-#define IDirectSoundFullDuplex_AddRef(p)                (p)->AddRef()
-#define IDirectSoundFullDuplex_Release(p)               (p)->Release()
-/*** IDirectSoundFullDuplex methods ***/
-#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h)    (p)->Initialize(a,b,c,d,e,f,g,h)
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __WINE_DSOUND_H */
diff --git a/misc/builddeps/win64/dx/include/zconf.h b/misc/builddeps/win64/dx/include/zconf.h
deleted file mode 100644 (file)
index 51c80ac..0000000
+++ /dev/null
@@ -1,466 +0,0 @@
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2011 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#ifndef ZCONF_H
-#define ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- * Even better than compiling with -DZ_PREFIX would be to use configure to set
- * this permanently in zconf.h using "./configure --zprefix".
- */
-#ifdef Z_PREFIX     /* may be set to #if 1 by ./configure */
-#  define Z_PREFIX_SET
-
-/* all linked symbols */
-#  define _dist_code            z__dist_code
-#  define _length_code          z__length_code
-#  define _tr_align             z__tr_align
-#  define _tr_flush_block       z__tr_flush_block
-#  define _tr_init              z__tr_init
-#  define _tr_stored_block      z__tr_stored_block
-#  define _tr_tally             z__tr_tally
-#  define adler32               z_adler32
-#  define adler32_combine       z_adler32_combine
-#  define adler32_combine64     z_adler32_combine64
-#  ifndef Z_SOLO
-#    define compress              z_compress
-#    define compress2             z_compress2
-#    define compressBound         z_compressBound
-#  endif
-#  define crc32                 z_crc32
-#  define crc32_combine         z_crc32_combine
-#  define crc32_combine64       z_crc32_combine64
-#  define deflate               z_deflate
-#  define deflateBound          z_deflateBound
-#  define deflateCopy           z_deflateCopy
-#  define deflateEnd            z_deflateEnd
-#  define deflateInit2_         z_deflateInit2_
-#  define deflateInit_          z_deflateInit_
-#  define deflateParams         z_deflateParams
-#  define deflatePending        z_deflatePending
-#  define deflatePrime          z_deflatePrime
-#  define deflateReset          z_deflateReset
-#  define deflateResetKeep      z_deflateResetKeep
-#  define deflateSetDictionary  z_deflateSetDictionary
-#  define deflateSetHeader      z_deflateSetHeader
-#  define deflateTune           z_deflateTune
-#  define deflate_copyright     z_deflate_copyright
-#  define get_crc_table         z_get_crc_table
-#  ifndef Z_SOLO
-#    define gz_error              z_gz_error
-#    define gz_intmax             z_gz_intmax
-#    define gz_strwinerror        z_gz_strwinerror
-#    define gzbuffer              z_gzbuffer
-#    define gzclearerr            z_gzclearerr
-#    define gzclose               z_gzclose
-#    define gzclose_r             z_gzclose_r
-#    define gzclose_w             z_gzclose_w
-#    define gzdirect              z_gzdirect
-#    define gzdopen               z_gzdopen
-#    define gzeof                 z_gzeof
-#    define gzerror               z_gzerror
-#    define gzflags               z_gzflags
-#    define gzflush               z_gzflush
-#    define gzgetc                z_gzgetc
-#    define gzgetc_               z_gzgetc_
-#    define gzgets                z_gzgets
-#    define gzoffset              z_gzoffset
-#    define gzoffset64            z_gzoffset64
-#    define gzopen                z_gzopen
-#    define gzopen64              z_gzopen64
-#    define gzprintf              z_gzprintf
-#    define gzputc                z_gzputc
-#    define gzputs                z_gzputs
-#    define gzread                z_gzread
-#    define gzrewind              z_gzrewind
-#    define gzseek                z_gzseek
-#    define gzseek64              z_gzseek64
-#    define gzsetparams           z_gzsetparams
-#    define gztell                z_gztell
-#    define gztell64              z_gztell64
-#    define gzungetc              z_gzungetc
-#    define gzwrite               z_gzwrite
-#  endif
-#  define inflate               z_inflate
-#  define inflateBack           z_inflateBack
-#  define inflateBackEnd        z_inflateBackEnd
-#  define inflateBackInit_      z_inflateBackInit_
-#  define inflateCopy           z_inflateCopy
-#  define inflateEnd            z_inflateEnd
-#  define inflateGetHeader      z_inflateGetHeader
-#  define inflateInit2_         z_inflateInit2_
-#  define inflateInit_          z_inflateInit_
-#  define inflateMark           z_inflateMark
-#  define inflatePrime          z_inflatePrime
-#  define inflateReset          z_inflateReset
-#  define inflateReset2         z_inflateReset2
-#  define inflateSetDictionary  z_inflateSetDictionary
-#  define inflateSync           z_inflateSync
-#  define inflateSyncPoint      z_inflateSyncPoint
-#  define inflateUndermine      z_inflateUndermine
-#  define inflateResetKeep      z_inflateResetKeep
-#  define inflate_copyright     z_inflate_copyright
-#  define inflate_fast          z_inflate_fast
-#  define inflate_table         z_inflate_table
-#  ifndef Z_SOLO
-#    define uncompress            z_uncompress
-#  endif
-#  define zError                z_zError
-#  ifndef Z_SOLO
-#    define zcalloc               z_zcalloc
-#    define zcfree                z_zcfree
-#  endif
-#  define zlibCompileFlags      z_zlibCompileFlags
-#  define zlibVersion           z_zlibVersion
-
-/* all zlib typedefs in zlib.h and zconf.h */
-#  define Byte                  z_Byte
-#  define Bytef                 z_Bytef
-#  define alloc_func            z_alloc_func
-#  define charf                 z_charf
-#  define free_func             z_free_func
-#  ifndef Z_SOLO
-#    define gzFile                z_gzFile
-#    define gz_header             z_gz_header
-#    define gz_headerp            z_gz_headerp
-#  endif
-#  define in_func               z_in_func
-#  define intf                  z_intf
-#  define out_func              z_out_func
-#  define uInt                  z_uInt
-#  define uIntf                 z_uIntf
-#  define uLong                 z_uLong
-#  define uLongf                z_uLongf
-#  define voidp                 z_voidp
-#  define voidpc                z_voidpc
-#  define voidpf                z_voidpf
-
-/* all zlib structs in zlib.h and zconf.h */
-#  ifndef Z_SOLO
-#    define gz_header_s           z_gz_header_s
-#  endif
-#  define internal_state        z_internal_state
-
-#endif
-
-#if defined(__MSDOS__) && !defined(MSDOS)
-#  define MSDOS
-#endif
-#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
-#  define OS2
-#endif
-#if defined(_WINDOWS) && !defined(WINDOWS)
-#  define WINDOWS
-#endif
-#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
-#  ifndef WIN32
-#    define WIN32
-#  endif
-#endif
-#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
-#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
-#    ifndef SYS16BIT
-#      define SYS16BIT
-#    endif
-#  endif
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#ifdef SYS16BIT
-#  define MAXSEG_64K
-#endif
-#ifdef MSDOS
-#  define UNALIGNED_OK
-#endif
-
-#ifdef __STDC_VERSION__
-#  ifndef STDC
-#    define STDC
-#  endif
-#  if __STDC_VERSION__ >= 199901L
-#    ifndef STDC99
-#      define STDC99
-#    endif
-#  endif
-#endif
-#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
-#  define STDC
-#endif
-
-#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
-#  define STDC
-#endif
-
-#ifndef STDC
-#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-#    define const       /* note: need a more gentle solution here */
-#  endif
-#endif
-
-#if defined(ZLIB_CONST) && !defined(z_const)
-#  define z_const const
-#else
-#  define z_const
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
-#  define NO_DUMMY_DECL
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-#  ifdef MAXSEG_64K
-#    define MAX_MEM_LEVEL 8
-#  else
-#    define MAX_MEM_LEVEL 9
-#  endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2.
- * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
- * created by gzip. (Files created by minigzip can still be extracted by
- * gzip.)
- */
-#ifndef MAX_WBITS
-#  define MAX_WBITS   15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
-            (1 << (windowBits+2)) +  (1 << (memLevel+9))
- that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
-     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
-   The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
-                        /* Type declarations */
-
-#ifndef OF /* function prototypes */
-#  ifdef STDC
-#    define OF(args)  args
-#  else
-#    define OF(args)  ()
-#  endif
-#endif
-
-#ifndef Z_ARG /* function prototypes for stdarg */
-#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
-#    define Z_ARG(args)  args
-#  else
-#    define Z_ARG(args)  ()
-#  endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#ifdef SYS16BIT
-#  if defined(M_I86SM) || defined(M_I86MM)
-     /* MSC small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef _MSC_VER
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#  if (defined(__SMALL__) || defined(__MEDIUM__))
-     /* Turbo C small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef __BORLANDC__
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#endif
-
-#if defined(WINDOWS) || defined(WIN32)
-   /* If building or using zlib as a DLL, define ZLIB_DLL.
-    * This is not mandatory, but it offers a little performance increase.
-    */
-#  ifdef ZLIB_DLL
-#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
-#      ifdef ZLIB_INTERNAL
-#        define ZEXTERN extern __declspec(dllexport)
-#      else
-#        define ZEXTERN extern __declspec(dllimport)
-#      endif
-#    endif
-#  endif  /* ZLIB_DLL */
-   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
-    * define ZLIB_WINAPI.
-    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
-    */
-#  ifdef ZLIB_WINAPI
-#    ifdef FAR
-#      undef FAR
-#    endif
-#    include <windows.h>
-     /* No need for _export, use ZLIB.DEF instead. */
-     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
-#    define ZEXPORT WINAPI
-#    ifdef WIN32
-#      define ZEXPORTVA WINAPIV
-#    else
-#      define ZEXPORTVA FAR CDECL
-#    endif
-#  endif
-#endif
-
-#if defined (__BEOS__)
-#  ifdef ZLIB_DLL
-#    ifdef ZLIB_INTERNAL
-#      define ZEXPORT   __declspec(dllexport)
-#      define ZEXPORTVA __declspec(dllexport)
-#    else
-#      define ZEXPORT   __declspec(dllimport)
-#      define ZEXPORTVA __declspec(dllimport)
-#    endif
-#  endif
-#endif
-
-#ifndef ZEXTERN
-#  define ZEXTERN extern
-#endif
-#ifndef ZEXPORT
-#  define ZEXPORT
-#endif
-#ifndef ZEXPORTVA
-#  define ZEXPORTVA
-#endif
-
-#ifndef FAR
-#  define FAR
-#endif
-
-#if !defined(__MACTYPES__)
-typedef unsigned char  Byte;  /* 8 bits */
-#endif
-typedef unsigned int   uInt;  /* 16 bits or more */
-typedef unsigned long  uLong; /* 32 bits or more */
-
-#ifdef SMALL_MEDIUM
-   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
-#  define Bytef Byte FAR
-#else
-   typedef Byte  FAR Bytef;
-#endif
-typedef char  FAR charf;
-typedef int   FAR intf;
-typedef uInt  FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
-   typedef void const *voidpc;
-   typedef void FAR   *voidpf;
-   typedef void       *voidp;
-#else
-   typedef Byte const *voidpc;
-   typedef Byte FAR   *voidpf;
-   typedef Byte       *voidp;
-#endif
-
-#ifdef HAVE_UNISTD_H    /* may be set to #if 1 by ./configure */
-#  define Z_HAVE_UNISTD_H
-#endif
-
-#ifdef HAVE_STDARG_H    /* may be set to #if 1 by ./configure */
-#  define Z_HAVE_STDARG_H
-#endif
-
-#ifdef STDC
-#  ifndef Z_SOLO
-#    include <sys/types.h>      /* for off_t */
-#  endif
-#endif
-
-/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
- * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
- * though the former does not conform to the LFS document), but considering
- * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
- * equivalently requesting no 64-bit operations
- */
-#if -_LARGEFILE64_SOURCE - -1 == 1
-#  undef _LARGEFILE64_SOURCE
-#endif
-
-#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
-#  define Z_LARGE
-#endif
-
-#if (defined(Z_HAVE_UNISTD_H) || defined(Z_LARGE)) && !defined(Z_SOLO)
-#  include <unistd.h>       /* for SEEK_* and off_t */
-#  ifdef VMS
-#    include <unixio.h>     /* for off_t */
-#  endif
-#  ifndef z_off_t
-#    define z_off_t off_t
-#  endif
-#endif
-
-#if !defined(SEEK_SET) && !defined(Z_SOLO)
-#  define SEEK_SET        0       /* Seek from beginning of file.  */
-#  define SEEK_CUR        1       /* Seek from current position.  */
-#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
-#endif
-
-#ifndef z_off_t
-#  define z_off_t long
-#endif
-
-#if !defined(_WIN32) && (defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0)
-#  define z_off64_t off64_t
-#else
-#  if defined(_WIN32)
-#    define z_off64_t __int64
-#  else
-#  define z_off64_t z_off_t
-#endif
-#endif
-
-/* MVS linker does not support external names larger than 8 bytes */
-#if defined(__MVS__)
-  #pragma map(deflateInit_,"DEIN")
-  #pragma map(deflateInit2_,"DEIN2")
-  #pragma map(deflateEnd,"DEEND")
-  #pragma map(deflateBound,"DEBND")
-  #pragma map(inflateInit_,"ININ")
-  #pragma map(inflateInit2_,"ININ2")
-  #pragma map(inflateEnd,"INEND")
-  #pragma map(inflateSync,"INSY")
-  #pragma map(inflateSetDictionary,"INSEDI")
-  #pragma map(compressBound,"CMBND")
-  #pragma map(inflate_table,"INTABL")
-  #pragma map(inflate_fast,"INFA")
-  #pragma map(inflate_copyright,"INCOPY")
-#endif
-
-#endif /* ZCONF_H */
diff --git a/misc/builddeps/win64/gmp/bin/libgmp-10.dll b/misc/builddeps/win64/gmp/bin/libgmp-10.dll
deleted file mode 100755 (executable)
index c8679dd..0000000
Binary files a/misc/builddeps/win64/gmp/bin/libgmp-10.dll and /dev/null differ
diff --git a/misc/builddeps/win64/gmp/include/gmp.h b/misc/builddeps/win64/gmp/include/gmp.h
deleted file mode 100644 (file)
index 02b9d9f..0000000
+++ /dev/null
@@ -1,2280 +0,0 @@
-/* Definitions for GNU multiple precision functions.   -*- mode: c -*-
-
-Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-The GNU MP Library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
-
-#ifndef __GMP_H__
-
-#if defined (__cplusplus)
-#include <iosfwd>   /* for std::istream, std::ostream, std::string */
-#include <cstdio>
-#endif
-
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-#define __GMP_HAVE_HOST_CPU_FAMILY_power   0
-#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0
-#define GMP_LIMB_BITS                      64
-#define GMP_NAIL_BITS                      0
-#endif
-#define GMP_NUMB_BITS     (GMP_LIMB_BITS - GMP_NAIL_BITS)
-#define GMP_NUMB_MASK     ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)
-#define GMP_NUMB_MAX      GMP_NUMB_MASK
-#define GMP_NAIL_MASK     (~ GMP_NUMB_MASK)
-
-
-/* The following (everything under ifndef __GNU_MP__) must be identical in
-   gmp.h and mp.h to allow both to be included in an application or during
-   the library build.  */
-#ifndef __GNU_MP__
-#define __GNU_MP__ 5
-
-#define __need_size_t  /* tell gcc stddef.h we only want size_t */
-#if defined (__cplusplus)
-#include <cstddef>     /* for size_t */
-#else
-#include <stddef.h>    /* for size_t */
-#endif
-#undef __need_size_t
-
-/* Instantiated by configure. */
-#if ! defined (__GMP_WITHIN_CONFIGURE)
-#define _LONG_LONG_LIMB 1
-#define __GMP_LIBGMP_DLL  1
-#endif
-
-
-/* __STDC__ - some ANSI compilers define this only to 0, hence the use of
-       "defined" and not "__STDC__-0".  In particular Sun workshop C 5.0
-       sets __STDC__ to 0, but requires "##" for token pasting.
-
-   _AIX - gnu ansidecl.h asserts that all known AIX compilers are ANSI but
-       don't always define __STDC__.
-
-   __DECC - current versions of DEC C (5.9 for instance) for alpha are ANSI,
-       but don't define __STDC__ in their default mode.  Don't know if old
-       versions might have been K&R, but let's not worry about that unless
-       someone is still using one.
-
-   _mips - gnu ansidecl.h says the RISC/OS MIPS compiler is ANSI in SVR4
-       mode, but doesn't define __STDC__.
-
-   _MSC_VER - Microsoft C is ANSI, but __STDC__ is undefined unless the /Za
-       option is given (in which case it's 1).
-
-   _WIN32 - tested for by gnu ansidecl.h, no doubt on the assumption that
-      all w32 compilers are ansi.
-
-   Note: This same set of tests is used by gen-psqr.c and
-   demos/expr/expr-impl.h, so if anything needs adding, then be sure to
-   update those too.  */
-
-#if  defined (__STDC__)                                 \
-  || defined (__cplusplus)                              \
-  || defined (_AIX)                                     \
-  || defined (__DECC)                                   \
-  || (defined (__mips) && defined (_SYSTYPE_SVR4))      \
-  || defined (_MSC_VER)                                 \
-  || defined (_WIN32)
-#define __GMP_HAVE_CONST        1
-#define __GMP_HAVE_PROTOTYPES   1
-#define __GMP_HAVE_TOKEN_PASTE  1
-#else
-#define __GMP_HAVE_CONST        0
-#define __GMP_HAVE_PROTOTYPES   0
-#define __GMP_HAVE_TOKEN_PASTE  0
-#endif
-
-
-#if __GMP_HAVE_CONST
-#define __gmp_const   const
-#define __gmp_signed  signed
-#else
-#define __gmp_const
-#define __gmp_signed
-#endif
-
-
-/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in
-   all other circumstances.
-
-   When compiling objects for libgmp, __GMP_DECLSPEC is an export directive,
-   or when compiling for an application it's an import directive.  The two
-   cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles
-   (and not defined from an application).
-
-   __GMP_DECLSPEC_XX is similarly used for libgmpxx.  __GMP_WITHIN_GMPXX
-   indicates when building libgmpxx, and in that case libgmpxx functions are
-   exports, but libgmp functions which might get called are imports.
-
-   libmp.la uses __GMP_DECLSPEC, just as if it were libgmp.la.  libgmp and
-   libmp don't call each other, so there's no conflict or confusion.
-
-   Libtool DLL_EXPORT define is not used.
-
-   There's no attempt to support GMP built both static and DLL.  Doing so
-   would mean applications would have to tell us which of the two is going
-   to be used when linking, and that seems very tedious and error prone if
-   using GMP by hand, and equally tedious from a package since autoconf and
-   automake don't give much help.
-
-   __GMP_DECLSPEC is required on all documented global functions and
-   variables, the various internals in gmp-impl.h etc can be left unadorned.
-   But internals used by the test programs or speed measuring programs
-   should have __GMP_DECLSPEC, and certainly constants or variables must
-   have it or the wrong address will be resolved.
-
-   In gcc __declspec can go at either the start or end of a prototype.
-
-   In Microsoft C __declspec must go at the start, or after the type like
-   void __declspec(...) *foo()".  There's no __dllexport or anything to
-   guard against someone foolish #defining dllexport.  _export used to be
-   available, but no longer.
-
-   In Borland C _export still exists, but needs to go after the type, like
-   "void _export foo();".  Would have to change the __GMP_DECLSPEC syntax to
-   make use of that.  Probably more trouble than it's worth.  */
-
-#if defined (__GNUC__)
-#define __GMP_DECLSPEC_EXPORT  __declspec(__dllexport__)
-#define __GMP_DECLSPEC_IMPORT  __declspec(__dllimport__)
-#endif
-#if defined (_MSC_VER) || defined (__BORLANDC__)
-#define __GMP_DECLSPEC_EXPORT  __declspec(dllexport)
-#define __GMP_DECLSPEC_IMPORT  __declspec(dllimport)
-#endif
-#ifdef __WATCOMC__
-#define __GMP_DECLSPEC_EXPORT  __export
-#define __GMP_DECLSPEC_IMPORT  __import
-#endif
-#ifdef __IBMC__
-#define __GMP_DECLSPEC_EXPORT  _Export
-#define __GMP_DECLSPEC_IMPORT  _Import
-#endif
-
-#if __GMP_LIBGMP_DLL
-#if __GMP_WITHIN_GMP
-/* compiling to go into a DLL libgmp */
-#define __GMP_DECLSPEC  __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into an application which will link to a DLL libgmp */
-#define __GMP_DECLSPEC  __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC
-#endif
-
-
-#ifdef __GMP_SHORT_LIMB
-typedef unsigned int           mp_limb_t;
-typedef int                    mp_limb_signed_t;
-#else
-#ifdef _LONG_LONG_LIMB
-typedef unsigned long long int mp_limb_t;
-typedef long long int          mp_limb_signed_t;
-#else
-typedef unsigned long int      mp_limb_t;
-typedef long int               mp_limb_signed_t;
-#endif
-#endif
-typedef unsigned long int      mp_bitcnt_t;
-
-/* For reference, note that the name __mpz_struct gets into C++ mangled
-   function names, which means although the "__" suggests an internal, we
-   must leave this name for binary compatibility.  */
-typedef struct
-{
-  int _mp_alloc;               /* Number of *limbs* allocated and pointed
-                                  to by the _mp_d field.  */
-  int _mp_size;                        /* abs(_mp_size) is the number of limbs the
-                                  last field points to.  If _mp_size is
-                                  negative this is a negative number.  */
-  mp_limb_t *_mp_d;            /* Pointer to the limbs.  */
-} __mpz_struct;
-
-#endif /* __GNU_MP__ */
-
-
-typedef __mpz_struct MP_INT;    /* gmp 1 source compatibility */
-typedef __mpz_struct mpz_t[1];
-
-typedef mp_limb_t *            mp_ptr;
-typedef __gmp_const mp_limb_t *        mp_srcptr;
-#if defined (_CRAY) && ! defined (_CRAYMPP)
-/* plain `int' is much faster (48 bits) */
-#define __GMP_MP_SIZE_T_INT     1
-typedef int                    mp_size_t;
-typedef int                    mp_exp_t;
-#else
-#define __GMP_MP_SIZE_T_INT     0
-typedef long int               mp_size_t;
-typedef long int               mp_exp_t;
-#endif
-
-typedef struct
-{
-  __mpz_struct _mp_num;
-  __mpz_struct _mp_den;
-} __mpq_struct;
-
-typedef __mpq_struct MP_RAT;    /* gmp 1 source compatibility */
-typedef __mpq_struct mpq_t[1];
-
-typedef struct
-{
-  int _mp_prec;                        /* Max precision, in number of `mp_limb_t's.
-                                  Set by mpf_init and modified by
-                                  mpf_set_prec.  The area pointed to by the
-                                  _mp_d field contains `prec' + 1 limbs.  */
-  int _mp_size;                        /* abs(_mp_size) is the number of limbs the
-                                  last field points to.  If _mp_size is
-                                  negative this is a negative number.  */
-  mp_exp_t _mp_exp;            /* Exponent, in the base of `mp_limb_t'.  */
-  mp_limb_t *_mp_d;            /* Pointer to the limbs.  */
-} __mpf_struct;
-
-/* typedef __mpf_struct MP_FLOAT; */
-typedef __mpf_struct mpf_t[1];
-
-/* Available random number generation algorithms.  */
-typedef enum
-{
-  GMP_RAND_ALG_DEFAULT = 0,
-  GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential.  */
-} gmp_randalg_t;
-
-/* Random state struct.  */
-typedef struct
-{
-  mpz_t _mp_seed;        /* _mp_d member points to state of the generator. */
-  gmp_randalg_t _mp_alg;  /* Currently unused. */
-  union {
-    void *_mp_lc;         /* Pointer to function pointers structure.  */
-  } _mp_algdata;
-} __gmp_randstate_struct;
-typedef __gmp_randstate_struct gmp_randstate_t[1];
-
-/* Types for function declarations in gmp files.  */
-/* ??? Should not pollute user name space with these ??? */
-typedef __gmp_const __mpz_struct *mpz_srcptr;
-typedef __mpz_struct *mpz_ptr;
-typedef __gmp_const __mpf_struct *mpf_srcptr;
-typedef __mpf_struct *mpf_ptr;
-typedef __gmp_const __mpq_struct *mpq_srcptr;
-typedef __mpq_struct *mpq_ptr;
-
-
-/* This is not wanted in mp.h, so put it outside the __GNU_MP__ common
-   section. */
-#if __GMP_LIBGMP_DLL
-#if __GMP_WITHIN_GMPXX
-/* compiling to go into a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_EXPORT
-#else
-/* compiling to go into a application which will link to a DLL libgmpxx */
-#define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_IMPORT
-#endif
-#else
-/* all other cases */
-#define __GMP_DECLSPEC_XX
-#endif
-
-
-#if __GMP_HAVE_PROTOTYPES
-#define __GMP_PROTO(x) x
-#else
-#define __GMP_PROTO(x) ()
-#endif
-
-#ifndef __MPN
-#if __GMP_HAVE_TOKEN_PASTE
-#define __MPN(x) __gmpn_##x
-#else
-#define __MPN(x) __gmpn_/**/x
-#endif
-#endif
-
-/* For reference, "defined(EOF)" cannot be used here.  In g++ 2.95.4,
-   <iostream> defines EOF but not FILE.  */
-#if defined (FILE)                                              \
-  || defined (H_STDIO)                                          \
-  || defined (_H_STDIO)               /* AIX */                 \
-  || defined (_STDIO_H)               /* glibc, Sun, SCO */     \
-  || defined (_STDIO_H_)              /* BSD, OSF */            \
-  || defined (__STDIO_H)              /* Borland */             \
-  || defined (__STDIO_H__)            /* IRIX */                \
-  || defined (_STDIO_INCLUDED)        /* HPUX */                \
-  || defined (__dj_include_stdio_h_)  /* DJGPP */               \
-  || defined (_FILE_DEFINED)          /* Microsoft */           \
-  || defined (__STDIO__)              /* Apple MPW MrC */       \
-  || defined (_MSL_STDIO_H)           /* Metrowerks */          \
-  || defined (_STDIO_H_INCLUDED)      /* QNX4 */               \
-  || defined (_ISO_STDIO_ISO_H)       /* Sun C++ */
-#define _GMP_H_HAVE_FILE 1
-#endif
-
-/* In ISO C, if a prototype involving "struct obstack *" is given without
-   that structure defined, then the struct is scoped down to just the
-   prototype, causing a conflict if it's subsequently defined for real.  So
-   only give prototypes if we've got obstack.h.  */
-#if defined (_OBSTACK_H)   /* glibc <obstack.h> */
-#define _GMP_H_HAVE_OBSTACK 1
-#endif
-
-/* The prototypes for gmp_vprintf etc are provided only if va_list is
-   available, via an application having included <stdarg.h> or <varargs.h>.
-   Usually va_list is a typedef so can't be tested directly, but C99
-   specifies that va_start is a macro (and it was normally a macro on past
-   systems too), so look for that.
-
-   <stdio.h> will define some sort of va_list for vprintf and vfprintf, but
-   let's not bother trying to use that since it's not standard and since
-   application uses for gmp_vprintf etc will almost certainly require the
-   whole <stdarg.h> or <varargs.h> anyway.  */
-
-#ifdef va_start
-#define _GMP_H_HAVE_VA_LIST 1
-#endif
-
-/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
-#if defined (__GNUC__) && defined (__GNUC_MINOR__)
-#define __GMP_GNUC_PREREQ(maj, min) \
-  ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-#else
-#define __GMP_GNUC_PREREQ(maj, min)  0
-#endif
-
-/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes".  Basically
-   it means a function does nothing but examine its arguments and memory
-   (global or via arguments) to generate a return value, but changes nothing
-   and has no side-effects.  __GMP_NO_ATTRIBUTE_CONST_PURE lets
-   tune/common.c etc turn this off when trying to write timing loops.  */
-#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE)
-#define __GMP_ATTRIBUTE_PURE   __attribute__ ((__pure__))
-#else
-#define __GMP_ATTRIBUTE_PURE
-#endif
-
-
-/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean
-   to "g++ -Wold-style-cast".
-
-   Casts in "extern inline" code within an extern "C" block don't induce
-   these warnings, so __GMP_CAST only needs to be used on documented
-   macros.  */
-
-#ifdef __cplusplus
-#define __GMP_CAST(type, expr)  (static_cast<type> (expr))
-#else
-#define __GMP_CAST(type, expr)  ((type) (expr))
-#endif
-
-
-/* An empty "throw ()" means the function doesn't throw any C++ exceptions,
-   this can save some stack frame info in applications.
-
-   Currently it's given only on functions which never divide-by-zero etc,
-   don't allocate memory, and are expected to never need to allocate memory.
-   This leaves open the possibility of a C++ throw from a future GMP
-   exceptions scheme.
-
-   mpz_set_ui etc are omitted to leave open the lazy allocation scheme
-   described in doc/tasks.html.  mpz_get_d etc are omitted to leave open
-   exceptions for float overflows.
-
-   Note that __GMP_NOTHROW must be given on any inlines the same as on their
-   prototypes (for g++ at least, where they're used together).  Note also
-   that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like
-   __GMP_ATTRIBUTE_PURE.  */
-
-#if defined (__cplusplus)
-#define __GMP_NOTHROW  throw ()
-#else
-#define __GMP_NOTHROW
-#endif
-
-
-/* PORTME: What other compilers have a useful "extern inline"?  "static
-   inline" would be an acceptable substitute if the compiler (or linker)
-   discards unused statics.  */
-
- /* gcc has __inline__ in all modes, including strict ansi.  Give a prototype
-    for an inline too, so as to correctly specify "dllimport" on windows, in
-    case the function is called rather than inlined.
-    GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
-    inline semantics, unless -fgnu89-inline is used.  */
-#ifdef __GNUC__
-#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2)
-#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
-#else
-#define __GMP_EXTERN_INLINE      extern __inline__
-#endif
-#define __GMP_INLINE_PROTOTYPES  1
-#endif
-
-/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1
-   strict ANSI mode.  Inlining is done even when not optimizing (ie. -O0
-   mode, which is the default), but an unnecessary local copy of foo is
-   emitted unless -O is used.  "extern __inline" is accepted, but the
-   "extern" appears to be ignored, ie. it becomes a plain global function
-   but which is inlined within its file.  Don't know if all old versions of
-   DEC C supported __inline, but as a start let's do the right thing for
-   current versions.  */
-#ifdef __DECC
-#define __GMP_EXTERN_INLINE  static __inline
-#endif
-
-/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict
-   ANSI mode (__STDC__ is 1 in that mode).  Inlining only actually takes
-   place under -O.  Without -O "foo" seems to be emitted whether it's used
-   or not, which is wasteful.  "extern inline foo()" isn't useful, the
-   "extern" is apparently ignored, so foo is inlined if possible but also
-   emitted as a global, which causes multiple definition errors when
-   building a shared libgmp.  */
-#ifdef __SCO_VERSION__
-#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  static inline
-#endif
-#endif
-
-/* Microsoft's C compiler accepts __inline */
-#ifdef _MSC_VER
-#define __GMP_EXTERN_INLINE  __inline
-#endif
-
-/* Recent enough Sun C compilers want "inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  inline
-#endif
-
-/* Somewhat older Sun C compilers want "static inline" */
-#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \
-  && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  static inline
-#endif
-
-
-/* C++ always has "inline" and since it's a normal feature the linker should
-   discard duplicate non-inlined copies, or if it doesn't then that's a
-   problem for everyone, not just GMP.  */
-#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE)
-#define __GMP_EXTERN_INLINE  inline
-#endif
-
-/* Don't do any inlining within a configure run, since if the compiler ends
-   up emitting copies of the code into the object file it can end up
-   demanding the various support routines (like mpn_popcount) for linking,
-   making the "alloca" test and perhaps others fail.  And on hppa ia64 a
-   pre-release gcc 3.2 was seen not respecting the "extern" in "extern
-   __inline__", triggering this problem too.  */
-#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE
-#undef __GMP_EXTERN_INLINE
-#endif
-
-/* By default, don't give a prototype when there's going to be an inline
-   version.  Note in particular that Cray C++ objects to the combination of
-   prototype and inline.  */
-#ifdef __GMP_EXTERN_INLINE
-#ifndef __GMP_INLINE_PROTOTYPES
-#define __GMP_INLINE_PROTOTYPES  0
-#endif
-#else
-#define __GMP_INLINE_PROTOTYPES  1
-#endif
-
-
-#define __GMP_ABS(x)   ((x) >= 0 ? (x) : -(x))
-#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i))
-
-/* __GMP_USHRT_MAX is not "~ (unsigned short) 0" because short is promoted
-   to int by "~".  */
-#define __GMP_UINT_MAX   (~ (unsigned) 0)
-#define __GMP_ULONG_MAX  (~ (unsigned long) 0)
-#define __GMP_USHRT_MAX  ((unsigned short) ~0)
-
-
-/* __builtin_expect is in gcc 3.0, and not in 2.95. */
-#if __GMP_GNUC_PREREQ (3,0)
-#define __GMP_LIKELY(cond)    __builtin_expect ((cond) != 0, 1)
-#define __GMP_UNLIKELY(cond)  __builtin_expect ((cond) != 0, 0)
-#else
-#define __GMP_LIKELY(cond)    (cond)
-#define __GMP_UNLIKELY(cond)  (cond)
-#endif
-
-#ifdef _CRAY
-#define __GMP_CRAY_Pragma(str)  _Pragma (str)
-#else
-#define __GMP_CRAY_Pragma(str)
-#endif
-
-
-/* Allow direct user access to numerator and denominator of a mpq_t object.  */
-#define mpq_numref(Q) (&((Q)->_mp_num))
-#define mpq_denref(Q) (&((Q)->_mp_den))
-
-
-#if defined (__cplusplus)
-extern "C" {
-using std::FILE;
-#endif
-
-#define mp_set_memory_functions __gmp_set_memory_functions
-__GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t),
-                                     void *(*) (void *, size_t, size_t),
-                                     void (*) (void *, size_t))) __GMP_NOTHROW;
-
-#define mp_get_memory_functions __gmp_get_memory_functions
-__GMP_DECLSPEC void mp_get_memory_functions __GMP_PROTO ((void *(**) (size_t),
-                                      void *(**) (void *, size_t, size_t),
-                                      void (**) (void *, size_t))) __GMP_NOTHROW;
-
-#define mp_bits_per_limb __gmp_bits_per_limb
-__GMP_DECLSPEC extern __gmp_const int mp_bits_per_limb;
-
-#define gmp_errno __gmp_errno
-__GMP_DECLSPEC extern int gmp_errno;
-
-#define gmp_version __gmp_version
-__GMP_DECLSPEC extern __gmp_const char * __gmp_const gmp_version;
-
-
-/**************** Random number routines.  ****************/
-
-/* obsolete */
-#define gmp_randinit __gmp_randinit
-__GMP_DECLSPEC void gmp_randinit __GMP_PROTO ((gmp_randstate_t, gmp_randalg_t, ...));
-
-#define gmp_randinit_default __gmp_randinit_default
-__GMP_DECLSPEC void gmp_randinit_default __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp
-__GMP_DECLSPEC void gmp_randinit_lc_2exp __GMP_PROTO ((gmp_randstate_t,
-                                                      mpz_srcptr, unsigned long int,
-                                                      mp_bitcnt_t));
-
-#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size
-__GMP_DECLSPEC int gmp_randinit_lc_2exp_size __GMP_PROTO ((gmp_randstate_t, mp_bitcnt_t));
-
-#define gmp_randinit_mt __gmp_randinit_mt
-__GMP_DECLSPEC void gmp_randinit_mt __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_randinit_set __gmp_randinit_set
-__GMP_DECLSPEC void gmp_randinit_set __GMP_PROTO ((gmp_randstate_t, __gmp_const __gmp_randstate_struct *));
-
-#define gmp_randseed __gmp_randseed
-__GMP_DECLSPEC void gmp_randseed __GMP_PROTO ((gmp_randstate_t, mpz_srcptr));
-
-#define gmp_randseed_ui __gmp_randseed_ui
-__GMP_DECLSPEC void gmp_randseed_ui __GMP_PROTO ((gmp_randstate_t, unsigned long int));
-
-#define gmp_randclear __gmp_randclear
-__GMP_DECLSPEC void gmp_randclear __GMP_PROTO ((gmp_randstate_t));
-
-#define gmp_urandomb_ui __gmp_urandomb_ui
-__GMP_DECLSPEC unsigned long gmp_urandomb_ui __GMP_PROTO ((gmp_randstate_t, unsigned long));
-
-#define gmp_urandomm_ui __gmp_urandomm_ui
-__GMP_DECLSPEC unsigned long gmp_urandomm_ui __GMP_PROTO ((gmp_randstate_t, unsigned long));
-
-
-/**************** Formatted output routines.  ****************/
-
-#define gmp_asprintf __gmp_asprintf
-__GMP_DECLSPEC int gmp_asprintf __GMP_PROTO ((char **, __gmp_const char *, ...));
-
-#define gmp_fprintf __gmp_fprintf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fprintf __GMP_PROTO ((FILE *, __gmp_const char *, ...));
-#endif
-
-#define gmp_obstack_printf __gmp_obstack_printf
-#if defined (_GMP_H_HAVE_OBSTACK)
-__GMP_DECLSPEC int gmp_obstack_printf __GMP_PROTO ((struct obstack *, __gmp_const char *, ...));
-#endif
-
-#define gmp_obstack_vprintf __gmp_obstack_vprintf
-#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_obstack_vprintf __GMP_PROTO ((struct obstack *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_printf __gmp_printf
-__GMP_DECLSPEC int gmp_printf __GMP_PROTO ((__gmp_const char *, ...));
-
-#define gmp_snprintf __gmp_snprintf
-__GMP_DECLSPEC int gmp_snprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, ...));
-
-#define gmp_sprintf __gmp_sprintf
-__GMP_DECLSPEC int gmp_sprintf __GMP_PROTO ((char *, __gmp_const char *, ...));
-
-#define gmp_vasprintf __gmp_vasprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vasprintf __GMP_PROTO ((char **, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vfprintf __gmp_vfprintf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfprintf __GMP_PROTO ((FILE *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vprintf __gmp_vprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vprintf __GMP_PROTO ((__gmp_const char *, va_list));
-#endif
-
-#define gmp_vsnprintf __gmp_vsnprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsnprintf __GMP_PROTO ((char *, size_t, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vsprintf __gmp_vsprintf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsprintf __GMP_PROTO ((char *, __gmp_const char *, va_list));
-#endif
-
-
-/**************** Formatted input routines.  ****************/
-
-#define gmp_fscanf __gmp_fscanf
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC int gmp_fscanf __GMP_PROTO ((FILE *, __gmp_const char *, ...));
-#endif
-
-#define gmp_scanf __gmp_scanf
-__GMP_DECLSPEC int gmp_scanf __GMP_PROTO ((__gmp_const char *, ...));
-
-#define gmp_sscanf __gmp_sscanf
-__GMP_DECLSPEC int gmp_sscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, ...));
-
-#define gmp_vfscanf __gmp_vfscanf
-#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vfscanf __GMP_PROTO ((FILE *, __gmp_const char *, va_list));
-#endif
-
-#define gmp_vscanf __gmp_vscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vscanf __GMP_PROTO ((__gmp_const char *, va_list));
-#endif
-
-#define gmp_vsscanf __gmp_vsscanf
-#if defined (_GMP_H_HAVE_VA_LIST)
-__GMP_DECLSPEC int gmp_vsscanf __GMP_PROTO ((__gmp_const char *, __gmp_const char *, va_list));
-#endif
-
-
-/**************** Integer (i.e. Z) routines.  ****************/
-
-#define _mpz_realloc __gmpz_realloc
-#define mpz_realloc __gmpz_realloc
-__GMP_DECLSPEC void *_mpz_realloc __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_abs __gmpz_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)
-__GMP_DECLSPEC void mpz_abs __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-#endif
-
-#define mpz_add __gmpz_add
-__GMP_DECLSPEC void mpz_add __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_add_ui __gmpz_add_ui
-__GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_addmul __gmpz_addmul
-__GMP_DECLSPEC void mpz_addmul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_addmul_ui __gmpz_addmul_ui
-__GMP_DECLSPEC void mpz_addmul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_and __gmpz_and
-__GMP_DECLSPEC void mpz_and __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_array_init __gmpz_array_init
-__GMP_DECLSPEC void mpz_array_init __GMP_PROTO ((mpz_ptr, mp_size_t, mp_size_t));
-
-#define mpz_bin_ui __gmpz_bin_ui
-__GMP_DECLSPEC void mpz_bin_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_bin_uiui __gmpz_bin_uiui
-__GMP_DECLSPEC void mpz_bin_uiui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int));
-
-#define mpz_cdiv_q __gmpz_cdiv_q
-__GMP_DECLSPEC void mpz_cdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp
-__GMP_DECLSPEC void mpz_cdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_qr __gmpz_cdiv_qr
-__GMP_DECLSPEC void mpz_cdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_r __gmpz_cdiv_r
-__GMP_DECLSPEC void mpz_cdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp
-__GMP_DECLSPEC void mpz_cdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_cdiv_ui __gmpz_cdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_cdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_clear __gmpz_clear
-__GMP_DECLSPEC void mpz_clear __GMP_PROTO ((mpz_ptr));
-
-#define mpz_clears __gmpz_clears
-__GMP_DECLSPEC void mpz_clears __GMP_PROTO ((mpz_ptr, ...));
-
-#define mpz_clrbit __gmpz_clrbit
-__GMP_DECLSPEC void mpz_clrbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_cmp __gmpz_cmp
-__GMP_DECLSPEC int mpz_cmp __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmp_d __gmpz_cmp_d
-__GMP_DECLSPEC int mpz_cmp_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_si __gmpz_cmp_si
-__GMP_DECLSPEC int _mpz_cmp_si __GMP_PROTO ((mpz_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define _mpz_cmp_ui __gmpz_cmp_ui
-__GMP_DECLSPEC int _mpz_cmp_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs __gmpz_cmpabs
-__GMP_DECLSPEC int mpz_cmpabs __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_d __gmpz_cmpabs_d
-__GMP_DECLSPEC int mpz_cmpabs_d __GMP_PROTO ((mpz_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_cmpabs_ui __gmpz_cmpabs_ui
-__GMP_DECLSPEC int mpz_cmpabs_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_com __gmpz_com
-__GMP_DECLSPEC void mpz_com __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_combit __gmpz_combit
-__GMP_DECLSPEC void mpz_combit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_congruent_p __gmpz_congruent_p
-__GMP_DECLSPEC int mpz_congruent_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p
-__GMP_DECLSPEC int mpz_congruent_2exp_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_congruent_ui_p __gmpz_congruent_ui_p
-__GMP_DECLSPEC int mpz_congruent_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divexact __gmpz_divexact
-__GMP_DECLSPEC void mpz_divexact __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_divexact_ui __gmpz_divexact_ui
-__GMP_DECLSPEC void mpz_divexact_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_divisible_p __gmpz_divisible_p
-__GMP_DECLSPEC int mpz_divisible_p __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_ui_p __gmpz_divisible_ui_p
-__GMP_DECLSPEC int mpz_divisible_ui_p __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p
-__GMP_DECLSPEC int mpz_divisible_2exp_p __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_dump __gmpz_dump
-__GMP_DECLSPEC void mpz_dump __GMP_PROTO ((mpz_srcptr));
-
-#define mpz_export __gmpz_export
-__GMP_DECLSPEC void *mpz_export __GMP_PROTO ((void *, size_t *, int, size_t, int, size_t, mpz_srcptr));
-
-#define mpz_fac_ui __gmpz_fac_ui
-__GMP_DECLSPEC void mpz_fac_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_fdiv_q __gmpz_fdiv_q
-__GMP_DECLSPEC void mpz_fdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
-__GMP_DECLSPEC void mpz_fdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_qr __gmpz_fdiv_qr
-__GMP_DECLSPEC void mpz_fdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_r __gmpz_fdiv_r
-__GMP_DECLSPEC void mpz_fdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
-__GMP_DECLSPEC void mpz_fdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_fdiv_ui __gmpz_fdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_fdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fib_ui __gmpz_fib_ui
-__GMP_DECLSPEC void mpz_fib_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_fib2_ui __gmpz_fib2_ui
-__GMP_DECLSPEC void mpz_fib2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int));
-
-#define mpz_fits_sint_p __gmpz_fits_sint_p
-__GMP_DECLSPEC int mpz_fits_sint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_slong_p __gmpz_fits_slong_p
-__GMP_DECLSPEC int mpz_fits_slong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_sshort_p __gmpz_fits_sshort_p
-__GMP_DECLSPEC int mpz_fits_sshort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_fits_uint_p __gmpz_fits_uint_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_DECLSPEC int mpz_fits_uint_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ulong_p __gmpz_fits_ulong_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_DECLSPEC int mpz_fits_ulong_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_fits_ushort_p __gmpz_fits_ushort_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_DECLSPEC int mpz_fits_ushort_p __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_gcd __gmpz_gcd
-__GMP_DECLSPEC void mpz_gcd __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_gcd_ui __gmpz_gcd_ui
-__GMP_DECLSPEC unsigned long int mpz_gcd_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_gcdext __gmpz_gcdext
-__GMP_DECLSPEC void mpz_gcdext __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_get_d __gmpz_get_d
-__GMP_DECLSPEC double mpz_get_d __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_d_2exp __gmpz_get_d_2exp
-__GMP_DECLSPEC double mpz_get_d_2exp __GMP_PROTO ((signed long int *, mpz_srcptr));
-
-#define mpz_get_si __gmpz_get_si
-__GMP_DECLSPEC /* signed */ long int mpz_get_si __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_get_str __gmpz_get_str
-__GMP_DECLSPEC char *mpz_get_str __GMP_PROTO ((char *, int, mpz_srcptr));
-
-#define mpz_get_ui __gmpz_get_ui
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)
-__GMP_DECLSPEC unsigned long int mpz_get_ui __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_getlimbn __gmpz_getlimbn
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_DECLSPEC mp_limb_t mpz_getlimbn __GMP_PROTO ((mpz_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_hamdist __gmpz_hamdist
-__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_import __gmpz_import
-__GMP_DECLSPEC void mpz_import __GMP_PROTO ((mpz_ptr, size_t, int, size_t, int, size_t, __gmp_const void *));
-
-#define mpz_init __gmpz_init
-__GMP_DECLSPEC void mpz_init __GMP_PROTO ((mpz_ptr));
-
-#define mpz_init2 __gmpz_init2
-__GMP_DECLSPEC void mpz_init2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_inits __gmpz_inits
-__GMP_DECLSPEC void mpz_inits __GMP_PROTO ((mpz_ptr, ...));
-
-#define mpz_init_set __gmpz_init_set
-__GMP_DECLSPEC void mpz_init_set __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_init_set_d __gmpz_init_set_d
-__GMP_DECLSPEC void mpz_init_set_d __GMP_PROTO ((mpz_ptr, double));
-
-#define mpz_init_set_si __gmpz_init_set_si
-__GMP_DECLSPEC void mpz_init_set_si __GMP_PROTO ((mpz_ptr, signed long int));
-
-#define mpz_init_set_str __gmpz_init_set_str
-__GMP_DECLSPEC int mpz_init_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int));
-
-#define mpz_init_set_ui __gmpz_init_set_ui
-__GMP_DECLSPEC void mpz_init_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_inp_raw __gmpz_inp_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_raw __GMP_PROTO ((mpz_ptr, FILE *));
-#endif
-
-#define mpz_inp_str __gmpz_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_inp_str __GMP_PROTO ((mpz_ptr, FILE *, int));
-#endif
-
-#define mpz_invert __gmpz_invert
-__GMP_DECLSPEC int mpz_invert __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_ior __gmpz_ior
-__GMP_DECLSPEC void mpz_ior __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_jacobi __gmpz_jacobi
-__GMP_DECLSPEC int mpz_jacobi __GMP_PROTO ((mpz_srcptr, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker mpz_jacobi  /* alias */
-
-#define mpz_kronecker_si __gmpz_kronecker_si
-__GMP_DECLSPEC int mpz_kronecker_si __GMP_PROTO ((mpz_srcptr, long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_kronecker_ui __gmpz_kronecker_ui
-__GMP_DECLSPEC int mpz_kronecker_ui __GMP_PROTO ((mpz_srcptr, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_si_kronecker __gmpz_si_kronecker
-__GMP_DECLSPEC int mpz_si_kronecker __GMP_PROTO ((long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_kronecker __gmpz_ui_kronecker
-__GMP_DECLSPEC int mpz_ui_kronecker __GMP_PROTO ((unsigned long, mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_lcm __gmpz_lcm
-__GMP_DECLSPEC void mpz_lcm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_lcm_ui __gmpz_lcm_ui
-__GMP_DECLSPEC void mpz_lcm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long));
-
-#define mpz_legendre mpz_jacobi  /* alias */
-
-#define mpz_lucnum_ui __gmpz_lucnum_ui
-__GMP_DECLSPEC void mpz_lucnum_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_lucnum2_ui __gmpz_lucnum2_ui
-__GMP_DECLSPEC void mpz_lucnum2_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, unsigned long int));
-
-#define mpz_millerrabin __gmpz_millerrabin
-__GMP_DECLSPEC int mpz_millerrabin __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_mod __gmpz_mod
-__GMP_DECLSPEC void mpz_mod __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */
-
-#define mpz_mul __gmpz_mul
-__GMP_DECLSPEC void mpz_mul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_mul_2exp __gmpz_mul_2exp
-__GMP_DECLSPEC void mpz_mul_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_mul_si __gmpz_mul_si
-__GMP_DECLSPEC void mpz_mul_si __GMP_PROTO ((mpz_ptr, mpz_srcptr, long int));
-
-#define mpz_mul_ui __gmpz_mul_ui
-__GMP_DECLSPEC void mpz_mul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_neg __gmpz_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)
-__GMP_DECLSPEC void mpz_neg __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-#endif
-
-#define mpz_nextprime __gmpz_nextprime
-__GMP_DECLSPEC void mpz_nextprime __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_out_raw __gmpz_out_raw
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_raw __GMP_PROTO ((FILE *, mpz_srcptr));
-#endif
-
-#define mpz_out_str __gmpz_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpz_out_str __GMP_PROTO ((FILE *, int, mpz_srcptr));
-#endif
-
-#define mpz_perfect_power_p __gmpz_perfect_power_p
-__GMP_DECLSPEC int mpz_perfect_power_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_perfect_square_p __gmpz_perfect_square_p
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_DECLSPEC int mpz_perfect_square_p __GMP_PROTO ((mpz_srcptr)) __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_popcount __gmpz_popcount
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpz_popcount __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_pow_ui __gmpz_pow_ui
-__GMP_DECLSPEC void mpz_pow_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_powm __gmpz_powm
-__GMP_DECLSPEC void mpz_powm __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_powm_sec __gmpz_powm_sec
-__GMP_DECLSPEC void mpz_powm_sec __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_powm_ui __gmpz_powm_ui
-__GMP_DECLSPEC void mpz_powm_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr));
-
-#define mpz_probab_prime_p __gmpz_probab_prime_p
-__GMP_DECLSPEC int mpz_probab_prime_p __GMP_PROTO ((mpz_srcptr, int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_random __gmpz_random
-__GMP_DECLSPEC void mpz_random __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_random2 __gmpz_random2
-__GMP_DECLSPEC void mpz_random2 __GMP_PROTO ((mpz_ptr, mp_size_t));
-
-#define mpz_realloc2 __gmpz_realloc2
-__GMP_DECLSPEC void mpz_realloc2 __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_remove __gmpz_remove
-__GMP_DECLSPEC unsigned long int mpz_remove __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_root __gmpz_root
-__GMP_DECLSPEC int mpz_root __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_rootrem __gmpz_rootrem
-__GMP_DECLSPEC void mpz_rootrem __GMP_PROTO ((mpz_ptr,mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_rrandomb __gmpz_rrandomb
-__GMP_DECLSPEC void mpz_rrandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
-
-#define mpz_scan0 __gmpz_scan0
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_scan1 __gmpz_scan1
-__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_set __gmpz_set
-__GMP_DECLSPEC void mpz_set __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_set_d __gmpz_set_d
-__GMP_DECLSPEC void mpz_set_d __GMP_PROTO ((mpz_ptr, double));
-
-#define mpz_set_f __gmpz_set_f
-__GMP_DECLSPEC void mpz_set_f __GMP_PROTO ((mpz_ptr, mpf_srcptr));
-
-#define mpz_set_q __gmpz_set_q
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)
-__GMP_DECLSPEC void mpz_set_q __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-#endif
-
-#define mpz_set_si __gmpz_set_si
-__GMP_DECLSPEC void mpz_set_si __GMP_PROTO ((mpz_ptr, signed long int));
-
-#define mpz_set_str __gmpz_set_str
-__GMP_DECLSPEC int mpz_set_str __GMP_PROTO ((mpz_ptr, __gmp_const char *, int));
-
-#define mpz_set_ui __gmpz_set_ui
-__GMP_DECLSPEC void mpz_set_ui __GMP_PROTO ((mpz_ptr, unsigned long int));
-
-#define mpz_setbit __gmpz_setbit
-__GMP_DECLSPEC void mpz_setbit __GMP_PROTO ((mpz_ptr, mp_bitcnt_t));
-
-#define mpz_size __gmpz_size
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)
-__GMP_DECLSPEC size_t mpz_size __GMP_PROTO ((mpz_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpz_sizeinbase __gmpz_sizeinbase
-__GMP_DECLSPEC size_t mpz_sizeinbase __GMP_PROTO ((mpz_srcptr, int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_sqrt __gmpz_sqrt
-__GMP_DECLSPEC void mpz_sqrt __GMP_PROTO ((mpz_ptr, mpz_srcptr));
-
-#define mpz_sqrtrem __gmpz_sqrtrem
-__GMP_DECLSPEC void mpz_sqrtrem __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr));
-
-#define mpz_sub __gmpz_sub
-__GMP_DECLSPEC void mpz_sub __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_sub_ui __gmpz_sub_ui
-__GMP_DECLSPEC void mpz_sub_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_ui_sub __gmpz_ui_sub
-__GMP_DECLSPEC void mpz_ui_sub __GMP_PROTO ((mpz_ptr, unsigned long int, mpz_srcptr));
-
-#define mpz_submul __gmpz_submul
-__GMP_DECLSPEC void mpz_submul __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_submul_ui __gmpz_submul_ui
-__GMP_DECLSPEC void mpz_submul_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_swap __gmpz_swap
-__GMP_DECLSPEC void mpz_swap __GMP_PROTO ((mpz_ptr, mpz_ptr)) __GMP_NOTHROW;
-
-#define mpz_tdiv_ui __gmpz_tdiv_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_ui __GMP_PROTO ((mpz_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpz_tdiv_q __gmpz_tdiv_q
-__GMP_DECLSPEC void mpz_tdiv_q __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
-__GMP_DECLSPEC void mpz_tdiv_q_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tdiv_qr __gmpz_tdiv_qr
-__GMP_DECLSPEC void mpz_tdiv_qr __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui __GMP_PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tdiv_r __gmpz_tdiv_r
-__GMP_DECLSPEC void mpz_tdiv_r __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
-__GMP_DECLSPEC void mpz_tdiv_r_2exp __GMP_PROTO ((mpz_ptr, mpz_srcptr, mp_bitcnt_t));
-
-#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
-__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-#define mpz_tstbit __gmpz_tstbit
-__GMP_DECLSPEC int mpz_tstbit __GMP_PROTO ((mpz_srcptr, mp_bitcnt_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpz_ui_pow_ui __gmpz_ui_pow_ui
-__GMP_DECLSPEC void mpz_ui_pow_ui __GMP_PROTO ((mpz_ptr, unsigned long int, unsigned long int));
-
-#define mpz_urandomb __gmpz_urandomb
-__GMP_DECLSPEC void mpz_urandomb __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mp_bitcnt_t));
-
-#define mpz_urandomm __gmpz_urandomm
-__GMP_DECLSPEC void mpz_urandomm __GMP_PROTO ((mpz_ptr, gmp_randstate_t, mpz_srcptr));
-
-#define mpz_xor __gmpz_xor
-#define mpz_eor __gmpz_xor
-__GMP_DECLSPEC void mpz_xor __GMP_PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-
-/**************** Rational (i.e. Q) routines.  ****************/
-
-#define mpq_abs __gmpq_abs
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)
-__GMP_DECLSPEC void mpq_abs __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-#endif
-
-#define mpq_add __gmpq_add
-__GMP_DECLSPEC void mpq_add __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_canonicalize __gmpq_canonicalize
-__GMP_DECLSPEC void mpq_canonicalize __GMP_PROTO ((mpq_ptr));
-
-#define mpq_clear __gmpq_clear
-__GMP_DECLSPEC void mpq_clear __GMP_PROTO ((mpq_ptr));
-
-#define mpq_clears __gmpq_clears
-__GMP_DECLSPEC void mpq_clears __GMP_PROTO ((mpq_ptr, ...));
-
-#define mpq_cmp __gmpq_cmp
-__GMP_DECLSPEC int mpq_cmp __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_si __gmpq_cmp_si
-__GMP_DECLSPEC int _mpq_cmp_si __GMP_PROTO ((mpq_srcptr, long, unsigned long)) __GMP_ATTRIBUTE_PURE;
-
-#define _mpq_cmp_ui __gmpq_cmp_ui
-__GMP_DECLSPEC int _mpq_cmp_ui __GMP_PROTO ((mpq_srcptr, unsigned long int, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_div __gmpq_div
-__GMP_DECLSPEC void mpq_div __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_div_2exp __gmpq_div_2exp
-__GMP_DECLSPEC void mpq_div_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t));
-
-#define mpq_equal __gmpq_equal
-__GMP_DECLSPEC int mpq_equal __GMP_PROTO ((mpq_srcptr, mpq_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_num __gmpq_get_num
-__GMP_DECLSPEC void mpq_get_num __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-
-#define mpq_get_den __gmpq_get_den
-__GMP_DECLSPEC void mpq_get_den __GMP_PROTO ((mpz_ptr, mpq_srcptr));
-
-#define mpq_get_d __gmpq_get_d
-__GMP_DECLSPEC double mpq_get_d __GMP_PROTO ((mpq_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpq_get_str __gmpq_get_str
-__GMP_DECLSPEC char *mpq_get_str __GMP_PROTO ((char *, int, mpq_srcptr));
-
-#define mpq_init __gmpq_init
-__GMP_DECLSPEC void mpq_init __GMP_PROTO ((mpq_ptr));
-
-#define mpq_inits __gmpq_inits
-__GMP_DECLSPEC void mpq_inits __GMP_PROTO ((mpq_ptr, ...));
-
-#define mpq_inp_str __gmpq_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_inp_str __GMP_PROTO ((mpq_ptr, FILE *, int));
-#endif
-
-#define mpq_inv __gmpq_inv
-__GMP_DECLSPEC void mpq_inv __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-
-#define mpq_mul __gmpq_mul
-__GMP_DECLSPEC void mpq_mul __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_mul_2exp __gmpq_mul_2exp
-__GMP_DECLSPEC void mpq_mul_2exp __GMP_PROTO ((mpq_ptr, mpq_srcptr, mp_bitcnt_t));
-
-#define mpq_neg __gmpq_neg
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)
-__GMP_DECLSPEC void mpq_neg __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-#endif
-
-#define mpq_out_str __gmpq_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpq_out_str __GMP_PROTO ((FILE *, int, mpq_srcptr));
-#endif
-
-#define mpq_set __gmpq_set
-__GMP_DECLSPEC void mpq_set __GMP_PROTO ((mpq_ptr, mpq_srcptr));
-
-#define mpq_set_d __gmpq_set_d
-__GMP_DECLSPEC void mpq_set_d __GMP_PROTO ((mpq_ptr, double));
-
-#define mpq_set_den __gmpq_set_den
-__GMP_DECLSPEC void mpq_set_den __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_set_f __gmpq_set_f
-__GMP_DECLSPEC void mpq_set_f __GMP_PROTO ((mpq_ptr, mpf_srcptr));
-
-#define mpq_set_num __gmpq_set_num
-__GMP_DECLSPEC void mpq_set_num __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_set_si __gmpq_set_si
-__GMP_DECLSPEC void mpq_set_si __GMP_PROTO ((mpq_ptr, signed long int, unsigned long int));
-
-#define mpq_set_str __gmpq_set_str
-__GMP_DECLSPEC int mpq_set_str __GMP_PROTO ((mpq_ptr, __gmp_const char *, int));
-
-#define mpq_set_ui __gmpq_set_ui
-__GMP_DECLSPEC void mpq_set_ui __GMP_PROTO ((mpq_ptr, unsigned long int, unsigned long int));
-
-#define mpq_set_z __gmpq_set_z
-__GMP_DECLSPEC void mpq_set_z __GMP_PROTO ((mpq_ptr, mpz_srcptr));
-
-#define mpq_sub __gmpq_sub
-__GMP_DECLSPEC void mpq_sub __GMP_PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-
-#define mpq_swap __gmpq_swap
-__GMP_DECLSPEC void mpq_swap __GMP_PROTO ((mpq_ptr, mpq_ptr)) __GMP_NOTHROW;
-
-
-/**************** Float (i.e. F) routines.  ****************/
-
-#define mpf_abs __gmpf_abs
-__GMP_DECLSPEC void mpf_abs __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_add __gmpf_add
-__GMP_DECLSPEC void mpf_add __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_add_ui __gmpf_add_ui
-__GMP_DECLSPEC void mpf_add_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-#define mpf_ceil __gmpf_ceil
-__GMP_DECLSPEC void mpf_ceil __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_clear __gmpf_clear
-__GMP_DECLSPEC void mpf_clear __GMP_PROTO ((mpf_ptr));
-
-#define mpf_clears __gmpf_clears
-__GMP_DECLSPEC void mpf_clears __GMP_PROTO ((mpf_ptr, ...));
-
-#define mpf_cmp __gmpf_cmp
-__GMP_DECLSPEC int mpf_cmp __GMP_PROTO ((mpf_srcptr, mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_d __gmpf_cmp_d
-__GMP_DECLSPEC int mpf_cmp_d __GMP_PROTO ((mpf_srcptr, double)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_si __gmpf_cmp_si
-__GMP_DECLSPEC int mpf_cmp_si __GMP_PROTO ((mpf_srcptr, signed long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_cmp_ui __gmpf_cmp_ui
-__GMP_DECLSPEC int mpf_cmp_ui __GMP_PROTO ((mpf_srcptr, unsigned long int)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_div __gmpf_div
-__GMP_DECLSPEC void mpf_div __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_div_2exp __gmpf_div_2exp
-__GMP_DECLSPEC void mpf_div_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t));
-
-#define mpf_div_ui __gmpf_div_ui
-__GMP_DECLSPEC void mpf_div_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_dump __gmpf_dump
-__GMP_DECLSPEC void mpf_dump __GMP_PROTO ((mpf_srcptr));
-
-#define mpf_eq __gmpf_eq
-__GMP_DECLSPEC int mpf_eq __GMP_PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sint_p __gmpf_fits_sint_p
-__GMP_DECLSPEC int mpf_fits_sint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_slong_p __gmpf_fits_slong_p
-__GMP_DECLSPEC int mpf_fits_slong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_sshort_p __gmpf_fits_sshort_p
-__GMP_DECLSPEC int mpf_fits_sshort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_uint_p __gmpf_fits_uint_p
-__GMP_DECLSPEC int mpf_fits_uint_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ulong_p __gmpf_fits_ulong_p
-__GMP_DECLSPEC int mpf_fits_ulong_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_fits_ushort_p __gmpf_fits_ushort_p
-__GMP_DECLSPEC int mpf_fits_ushort_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_floor __gmpf_floor
-__GMP_DECLSPEC void mpf_floor __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_get_d __gmpf_get_d
-__GMP_DECLSPEC double mpf_get_d __GMP_PROTO ((mpf_srcptr)) __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_d_2exp __gmpf_get_d_2exp
-__GMP_DECLSPEC double mpf_get_d_2exp __GMP_PROTO ((signed long int *, mpf_srcptr));
-
-#define mpf_get_default_prec __gmpf_get_default_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec __GMP_PROTO ((void)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_prec __gmpf_get_prec
-__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_si __gmpf_get_si
-__GMP_DECLSPEC long mpf_get_si __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_get_str __gmpf_get_str
-__GMP_DECLSPEC char *mpf_get_str __GMP_PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr));
-
-#define mpf_get_ui __gmpf_get_ui
-__GMP_DECLSPEC unsigned long mpf_get_ui __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_init __gmpf_init
-__GMP_DECLSPEC void mpf_init __GMP_PROTO ((mpf_ptr));
-
-#define mpf_init2 __gmpf_init2
-__GMP_DECLSPEC void mpf_init2 __GMP_PROTO ((mpf_ptr, mp_bitcnt_t));
-
-#define mpf_inits __gmpf_inits
-__GMP_DECLSPEC void mpf_inits __GMP_PROTO ((mpf_ptr, ...));
-
-#define mpf_init_set __gmpf_init_set
-__GMP_DECLSPEC void mpf_init_set __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_init_set_d __gmpf_init_set_d
-__GMP_DECLSPEC void mpf_init_set_d __GMP_PROTO ((mpf_ptr, double));
-
-#define mpf_init_set_si __gmpf_init_set_si
-__GMP_DECLSPEC void mpf_init_set_si __GMP_PROTO ((mpf_ptr, signed long int));
-
-#define mpf_init_set_str __gmpf_init_set_str
-__GMP_DECLSPEC int mpf_init_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int));
-
-#define mpf_init_set_ui __gmpf_init_set_ui
-__GMP_DECLSPEC void mpf_init_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_inp_str __gmpf_inp_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_inp_str __GMP_PROTO ((mpf_ptr, FILE *, int));
-#endif
-
-#define mpf_integer_p __gmpf_integer_p
-__GMP_DECLSPEC int mpf_integer_p __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_mul __gmpf_mul
-__GMP_DECLSPEC void mpf_mul __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_mul_2exp __gmpf_mul_2exp
-__GMP_DECLSPEC void mpf_mul_2exp __GMP_PROTO ((mpf_ptr, mpf_srcptr, mp_bitcnt_t));
-
-#define mpf_mul_ui __gmpf_mul_ui
-__GMP_DECLSPEC void mpf_mul_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_neg __gmpf_neg
-__GMP_DECLSPEC void mpf_neg __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_out_str __gmpf_out_str
-#ifdef _GMP_H_HAVE_FILE
-__GMP_DECLSPEC size_t mpf_out_str __GMP_PROTO ((FILE *, int, size_t, mpf_srcptr));
-#endif
-
-#define mpf_pow_ui __gmpf_pow_ui
-__GMP_DECLSPEC void mpf_pow_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_random2 __gmpf_random2
-__GMP_DECLSPEC void mpf_random2 __GMP_PROTO ((mpf_ptr, mp_size_t, mp_exp_t));
-
-#define mpf_reldiff __gmpf_reldiff
-__GMP_DECLSPEC void mpf_reldiff __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_set __gmpf_set
-__GMP_DECLSPEC void mpf_set __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_set_d __gmpf_set_d
-__GMP_DECLSPEC void mpf_set_d __GMP_PROTO ((mpf_ptr, double));
-
-#define mpf_set_default_prec __gmpf_set_default_prec
-__GMP_DECLSPEC void mpf_set_default_prec __GMP_PROTO ((mp_bitcnt_t)) __GMP_NOTHROW;
-
-#define mpf_set_prec __gmpf_set_prec
-__GMP_DECLSPEC void mpf_set_prec __GMP_PROTO ((mpf_ptr, mp_bitcnt_t));
-
-#define mpf_set_prec_raw __gmpf_set_prec_raw
-__GMP_DECLSPEC void mpf_set_prec_raw __GMP_PROTO ((mpf_ptr, mp_bitcnt_t)) __GMP_NOTHROW;
-
-#define mpf_set_q __gmpf_set_q
-__GMP_DECLSPEC void mpf_set_q __GMP_PROTO ((mpf_ptr, mpq_srcptr));
-
-#define mpf_set_si __gmpf_set_si
-__GMP_DECLSPEC void mpf_set_si __GMP_PROTO ((mpf_ptr, signed long int));
-
-#define mpf_set_str __gmpf_set_str
-__GMP_DECLSPEC int mpf_set_str __GMP_PROTO ((mpf_ptr, __gmp_const char *, int));
-
-#define mpf_set_ui __gmpf_set_ui
-__GMP_DECLSPEC void mpf_set_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_set_z __gmpf_set_z
-__GMP_DECLSPEC void mpf_set_z __GMP_PROTO ((mpf_ptr, mpz_srcptr));
-
-#define mpf_size __gmpf_size
-__GMP_DECLSPEC size_t mpf_size __GMP_PROTO ((mpf_srcptr)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpf_sqrt __gmpf_sqrt
-__GMP_DECLSPEC void mpf_sqrt __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_sqrt_ui __gmpf_sqrt_ui
-__GMP_DECLSPEC void mpf_sqrt_ui __GMP_PROTO ((mpf_ptr, unsigned long int));
-
-#define mpf_sub __gmpf_sub
-__GMP_DECLSPEC void mpf_sub __GMP_PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-
-#define mpf_sub_ui __gmpf_sub_ui
-__GMP_DECLSPEC void mpf_sub_ui __GMP_PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-#define mpf_swap __gmpf_swap
-__GMP_DECLSPEC void mpf_swap __GMP_PROTO ((mpf_ptr, mpf_ptr)) __GMP_NOTHROW;
-
-#define mpf_trunc __gmpf_trunc
-__GMP_DECLSPEC void mpf_trunc __GMP_PROTO ((mpf_ptr, mpf_srcptr));
-
-#define mpf_ui_div __gmpf_ui_div
-__GMP_DECLSPEC void mpf_ui_div __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-
-#define mpf_ui_sub __gmpf_ui_sub
-__GMP_DECLSPEC void mpf_ui_sub __GMP_PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-
-#define mpf_urandomb __gmpf_urandomb
-__GMP_DECLSPEC void mpf_urandomb __GMP_PROTO ((mpf_t, gmp_randstate_t, mp_bitcnt_t));
-
-
-/************ Low level positive-integer (i.e. N) routines.  ************/
-
-/* This is ugly, but we need to make user calls reach the prefixed function. */
-
-#define mpn_add __MPN(add)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)
-__GMP_DECLSPEC mp_limb_t mpn_add __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-#endif
-
-#define mpn_add_1 __MPN(add_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)
-__GMP_DECLSPEC mp_limb_t mpn_add_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW;
-#endif
-
-#define mpn_add_n __MPN(add_n)
-__GMP_DECLSPEC mp_limb_t mpn_add_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_addmul_1 __MPN(addmul_1)
-__GMP_DECLSPEC mp_limb_t mpn_addmul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_cmp __MPN(cmp)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)
-__GMP_DECLSPEC int mpn_cmp __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-#endif
-
-#define mpn_divexact_by3(dst,src,size) \
-  mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))
-
-#define mpn_divexact_by3c __MPN(divexact_by3c)
-__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_divmod_1(qp,np,nsize,dlimb) \
-  mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)
-
-#define mpn_divrem __MPN(divrem)
-__GMP_DECLSPEC mp_limb_t mpn_divrem __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_divrem_1 __MPN(divrem_1)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_1 __GMP_PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_divrem_2 __MPN(divrem_2)
-__GMP_DECLSPEC mp_limb_t mpn_divrem_2 __GMP_PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr));
-
-#define mpn_gcd __MPN(gcd)
-__GMP_DECLSPEC mp_size_t mpn_gcd __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-
-#define mpn_gcd_1 __MPN(gcd_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcd_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_gcdext_1 __MPN(gcdext_1)
-__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 __GMP_PROTO ((mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t));
-
-#define mpn_gcdext __MPN(gcdext)
-__GMP_DECLSPEC mp_size_t mpn_gcdext __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-
-#define mpn_get_str __MPN(get_str)
-__GMP_DECLSPEC size_t mpn_get_str __GMP_PROTO ((unsigned char *, int, mp_ptr, mp_size_t));
-
-#define mpn_hamdist __MPN(hamdist)
-__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist __GMP_PROTO ((mp_srcptr, mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_lshift __MPN(lshift)
-__GMP_DECLSPEC mp_limb_t mpn_lshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-
-#define mpn_mod_1 __MPN(mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_mul __MPN(mul)
-__GMP_DECLSPEC mp_limb_t mpn_mul __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_mul_1 __MPN(mul_1)
-__GMP_DECLSPEC mp_limb_t mpn_mul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_mul_n __MPN(mul_n)
-__GMP_DECLSPEC void mpn_mul_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_sqr __MPN(sqr)
-__GMP_DECLSPEC void mpn_sqr __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-
-#define mpn_neg __MPN(neg)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)
-__GMP_DECLSPEC mp_limb_t mpn_neg __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#endif
-
-#define mpn_com __MPN(com)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_com)
-__GMP_DECLSPEC void mpn_com __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#endif
-
-#define mpn_perfect_square_p __MPN(perfect_square_p)
-__GMP_DECLSPEC int mpn_perfect_square_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_perfect_power_p __MPN(perfect_power_p)
-__GMP_DECLSPEC int mpn_perfect_power_p __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_popcount __MPN(popcount)
-__GMP_DECLSPEC mp_bitcnt_t mpn_popcount __GMP_PROTO ((mp_srcptr, mp_size_t)) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
-
-#define mpn_pow_1 __MPN(pow_1)
-__GMP_DECLSPEC mp_size_t mpn_pow_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr));
-
-/* undocumented now, but retained here for upward compatibility */
-#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
-__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 __GMP_PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_random __MPN(random)
-__GMP_DECLSPEC void mpn_random __GMP_PROTO ((mp_ptr, mp_size_t));
-
-#define mpn_random2 __MPN(random2)
-__GMP_DECLSPEC void mpn_random2 __GMP_PROTO ((mp_ptr, mp_size_t));
-
-#define mpn_rshift __MPN(rshift)
-__GMP_DECLSPEC mp_limb_t mpn_rshift __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-
-#define mpn_scan0 __MPN(scan0)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_scan1 __MPN(scan1)
-__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 __GMP_PROTO ((mp_srcptr, mp_bitcnt_t)) __GMP_ATTRIBUTE_PURE;
-
-#define mpn_set_str __MPN(set_str)
-__GMP_DECLSPEC mp_size_t mpn_set_str __GMP_PROTO ((mp_ptr, __gmp_const unsigned char *, size_t, int));
-
-#define mpn_sqrtrem __MPN(sqrtrem)
-__GMP_DECLSPEC mp_size_t mpn_sqrtrem __GMP_PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t));
-
-#define mpn_sub __MPN(sub)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)
-__GMP_DECLSPEC mp_limb_t mpn_sub __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-#endif
-
-#define mpn_sub_1 __MPN(sub_1)
-#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)
-__GMP_DECLSPEC mp_limb_t mpn_sub_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t)) __GMP_NOTHROW;
-#endif
-
-#define mpn_sub_n __MPN(sub_n)
-__GMP_DECLSPEC mp_limb_t mpn_sub_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_submul_1 __MPN(submul_1)
-__GMP_DECLSPEC mp_limb_t mpn_submul_1 __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-
-#define mpn_tdiv_qr __MPN(tdiv_qr)
-__GMP_DECLSPEC void mpn_tdiv_qr __GMP_PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
-
-#define mpn_and_n __MPN(and_n)
-__GMP_DECLSPEC void mpn_and_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_andn_n __MPN(andn_n)
-__GMP_DECLSPEC void mpn_andn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nand_n __MPN(nand_n)
-__GMP_DECLSPEC void mpn_nand_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_ior_n __MPN(ior_n)
-__GMP_DECLSPEC void mpn_ior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_iorn_n __MPN(iorn_n)
-__GMP_DECLSPEC void mpn_iorn_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_nior_n __MPN(nior_n)
-__GMP_DECLSPEC void mpn_nior_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xor_n __MPN(xor_n)
-__GMP_DECLSPEC void mpn_xor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-#define mpn_xnor_n __MPN(xnor_n)
-__GMP_DECLSPEC void mpn_xnor_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-
-#define mpn_copyi __MPN(copyi)
-__GMP_DECLSPEC void mpn_copyi __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_copyd __MPN(copyd)
-__GMP_DECLSPEC void mpn_copyd __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));
-#define mpn_zero __MPN(zero)
-__GMP_DECLSPEC void mpn_zero __GMP_PROTO ((mp_ptr, mp_size_t));
-
-/**************** mpz inlines ****************/
-
-/* The following are provided as inlines where possible, but always exist as
-   library functions too, for binary compatibility.
-
-   Within gmp itself this inlining generally isn't relied on, since it
-   doesn't get done for all compilers, whereas if something is worth
-   inlining then it's worth arranging always.
-
-   There are two styles of inlining here.  When the same bit of code is
-   wanted for the inline as for the library version, then __GMP_FORCE_foo
-   arranges for that code to be emitted and the __GMP_EXTERN_INLINE
-   directive suppressed, eg. mpz_fits_uint_p.  When a different bit of code
-   is wanted for the inline than for the library version, then
-   __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs.  */
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs)
-__GMP_EXTERN_INLINE void
-mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpz_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size);
-}
-#endif
-
-#if GMP_NAIL_BITS == 0
-#define __GMPZ_FITS_UTYPE_P(z,maxval)                                  \
-  mp_size_t  __gmp_n = z->_mp_size;                                    \
-  mp_ptr  __gmp_p = z->_mp_d;                                          \
-  return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval));
-#else
-#define __GMPZ_FITS_UTYPE_P(z,maxval)                                  \
-  mp_size_t  __gmp_n = z->_mp_size;                                    \
-  mp_ptr  __gmp_p = z->_mp_d;                                          \
-  return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)       \
-         || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS)));
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p)
-#if ! defined (__GMP_FORCE_mpz_fits_uint_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_UINT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ulong_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_ULONG_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p)
-#if ! defined (__GMP_FORCE_mpz_fits_ushort_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  __GMPZ_FITS_UTYPE_P (__gmp_z, __GMP_USHRT_MAX);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui)
-#if ! defined (__GMP_FORCE_mpz_get_ui)
-__GMP_EXTERN_INLINE
-#endif
-unsigned long
-mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  mp_ptr __gmp_p = __gmp_z->_mp_d;
-  mp_size_t __gmp_n = __gmp_z->_mp_size;
-  mp_limb_t __gmp_l = __gmp_p[0];
-  /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings
-     about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland
-     C++ 6.0 warnings about condition always true for something like
-     "__GMP_ULONG_MAX < GMP_NUMB_MASK".  */
-#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB)
-  /* limb==long and no nails, or limb==longlong, one limb is enough */
-  return (__gmp_n != 0 ? __gmp_l : 0);
-#else
-  /* limb==long and nails, need two limbs when available */
-  __gmp_n = __GMP_ABS (__gmp_n);
-  if (__gmp_n <= 1)
-    return (__gmp_n != 0 ? __gmp_l : 0);
-  else
-    return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS);
-#endif
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn)
-#if ! defined (__GMP_FORCE_mpz_getlimbn)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_result = 0;
-  if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size)))
-    __gmp_result = __gmp_z->_mp_d[__gmp_n];
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg)
-__GMP_EXTERN_INLINE void
-mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpz_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_size = - __gmp_w->_mp_size;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p)
-#if ! defined (__GMP_FORCE_mpz_perfect_square_p)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpz_perfect_square_p (mpz_srcptr __gmp_a)
-{
-  mp_size_t __gmp_asize;
-  int       __gmp_result;
-
-  __gmp_asize = __gmp_a->_mp_size;
-  __gmp_result = (__gmp_asize >= 0);  /* zero is a square, negatives are not */
-  if (__GMP_LIKELY (__gmp_asize > 0))
-    __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount)
-#if ! defined (__GMP_FORCE_mpz_popcount)
-__GMP_EXTERN_INLINE
-#endif
-mp_bitcnt_t
-mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW
-{
-  mp_size_t      __gmp_usize;
-  mp_bitcnt_t    __gmp_result;
-
-  __gmp_usize = __gmp_u->_mp_size;
-  __gmp_result = (__gmp_usize < 0 ? __GMP_ULONG_MAX : 0);
-  if (__GMP_LIKELY (__gmp_usize > 0))
-    __gmp_result =  mpn_popcount (__gmp_u->_mp_d, __gmp_usize);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q)
-#if ! defined (__GMP_FORCE_mpz_set_q)
-__GMP_EXTERN_INLINE
-#endif
-void
-mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u));
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size)
-#if ! defined (__GMP_FORCE_mpz_size)
-__GMP_EXTERN_INLINE
-#endif
-size_t
-mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW
-{
-  return __GMP_ABS (__gmp_z->_mp_size);
-}
-#endif
-
-
-/**************** mpq inlines ****************/
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs)
-__GMP_EXTERN_INLINE void
-mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpq_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size);
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg)
-__GMP_EXTERN_INLINE void
-mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
-{
-  if (__gmp_w != __gmp_u)
-    mpq_set (__gmp_w, __gmp_u);
-  __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
-}
-#endif
-
-
-/**************** mpn inlines ****************/
-
-/* The comments with __GMPN_ADD_1 below apply here too.
-
-   The test for FUNCTION returning 0 should predict well.  If it's assumed
-   {yp,ysize} will usually have a random number of bits then the high limb
-   won't be full and a carry out will occur a good deal less than 50% of the
-   time.
-
-   ysize==0 isn't a documented feature, but is used internally in a few
-   places.
-
-   Producing cout last stops it using up a register during the main part of
-   the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))"
-   doesn't seem able to move the true and false legs of the conditional up
-   to the two places cout is generated.  */
-
-#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST)     \
-  do {                                                                  \
-    mp_size_t  __gmp_i;                                                 \
-    mp_limb_t  __gmp_x;                                                 \
-                                                                        \
-    /* ASSERT ((ysize) >= 0); */                                        \
-    /* ASSERT ((xsize) >= (ysize)); */                                  \
-    /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */      \
-    /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */      \
-                                                                        \
-    __gmp_i = (ysize);                                                  \
-    if (__gmp_i != 0)                                                   \
-      {                                                                 \
-        if (FUNCTION (wp, xp, yp, __gmp_i))                             \
-          {                                                             \
-            do                                                          \
-              {                                                         \
-                if (__gmp_i >= (xsize))                                 \
-                  {                                                     \
-                    (cout) = 1;                                         \
-                    goto __gmp_done;                                    \
-                  }                                                     \
-                __gmp_x = (xp)[__gmp_i];                                \
-              }                                                         \
-            while (TEST);                                               \
-          }                                                             \
-      }                                                                 \
-    if ((wp) != (xp))                                                   \
-      __GMPN_COPY_REST (wp, xp, xsize, __gmp_i);                        \
-    (cout) = 0;                                                         \
-  __gmp_done:                                                           \
-    ;                                                                   \
-  } while (0)
-
-#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize)              \
-  __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n,       \
-               (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0))
-#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize)              \
-  __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n,       \
-               (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0))
-
-
-/* The use of __gmp_i indexing is designed to ensure a compile time src==dst
-   remains nice and clear to the compiler, so that __GMPN_COPY_REST can
-   disappear, and the load/add/store gets a chance to become a
-   read-modify-write on CISC CPUs.
-
-   Alternatives:
-
-   Using a pair of pointers instead of indexing would be possible, but gcc
-   isn't able to recognise compile-time src==dst in that case, even when the
-   pointers are incremented more or less together.  Other compilers would
-   very likely have similar difficulty.
-
-   gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or
-   similar to detect a compile-time src==dst.  This works nicely on gcc
-   2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems
-   to be always false, for a pointer p.  But the current code form seems
-   good enough for src==dst anyway.
-
-   gcc on x86 as usual doesn't give particularly good flags handling for the
-   carry/borrow detection.  It's tempting to want some multi instruction asm
-   blocks to help it, and this was tried, but in truth there's only a few
-   instructions to save and any gain is all too easily lost by register
-   juggling setting up for the asm.  */
-
-#if GMP_NAIL_BITS == 0
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)            \
-  do {                                                         \
-    mp_size_t  __gmp_i;                                                \
-    mp_limb_t  __gmp_x, __gmp_r;                                \
-                                                               \
-    /* ASSERT ((n) >= 1); */                                   \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */       \
-                                                               \
-    __gmp_x = (src)[0];                                                \
-    __gmp_r = __gmp_x OP (v);                                   \
-    (dst)[0] = __gmp_r;                                                \
-    if (CB (__gmp_r, __gmp_x, (v)))                             \
-      {                                                                \
-       (cout) = 1;                                             \
-       for (__gmp_i = 1; __gmp_i < (n);)                       \
-         {                                                     \
-           __gmp_x = (src)[__gmp_i];                           \
-           __gmp_r = __gmp_x OP 1;                             \
-           (dst)[__gmp_i] = __gmp_r;                           \
-           ++__gmp_i;                                          \
-           if (!CB (__gmp_r, __gmp_x, 1))                      \
-             {                                                 \
-               if ((src) != (dst))                             \
-                 __GMPN_COPY_REST (dst, src, n, __gmp_i);      \
-               (cout) = 0;                                     \
-               break;                                          \
-             }                                                 \
-         }                                                     \
-      }                                                                \
-    else                                                       \
-      {                                                                \
-       if ((src) != (dst))                                     \
-         __GMPN_COPY_REST (dst, src, n, 1);                    \
-       (cout) = 0;                                             \
-      }                                                                \
-  } while (0)
-#endif
-
-#if GMP_NAIL_BITS >= 1
-#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)            \
-  do {                                                         \
-    mp_size_t  __gmp_i;                                                \
-    mp_limb_t  __gmp_x, __gmp_r;                               \
-                                                               \
-    /* ASSERT ((n) >= 1); */                                   \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */       \
-                                                               \
-    __gmp_x = (src)[0];                                                \
-    __gmp_r = __gmp_x OP (v);                                  \
-    (dst)[0] = __gmp_r & GMP_NUMB_MASK;                                \
-    if (__gmp_r >> GMP_NUMB_BITS != 0)                         \
-      {                                                                \
-       (cout) = 1;                                             \
-       for (__gmp_i = 1; __gmp_i < (n);)                       \
-         {                                                     \
-           __gmp_x = (src)[__gmp_i];                           \
-           __gmp_r = __gmp_x OP 1;                             \
-           (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK;           \
-           ++__gmp_i;                                          \
-           if (__gmp_r >> GMP_NUMB_BITS == 0)                  \
-             {                                                 \
-               if ((src) != (dst))                             \
-                 __GMPN_COPY_REST (dst, src, n, __gmp_i);      \
-               (cout) = 0;                                     \
-               break;                                          \
-             }                                                 \
-         }                                                     \
-      }                                                                \
-    else                                                       \
-      {                                                                \
-       if ((src) != (dst))                                     \
-         __GMPN_COPY_REST (dst, src, n, 1);                    \
-       (cout) = 0;                                             \
-      }                                                                \
-  } while (0)
-#endif
-
-#define __GMPN_ADDCB(r,x,y) ((r) < (y))
-#define __GMPN_SUBCB(r,x,y) ((x) < (y))
-
-#define __GMPN_ADD_1(cout, dst, src, n, v)          \
-  __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB)
-#define __GMPN_SUB_1(cout, dst, src, n, v)          \
-  __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB)
-
-
-/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or
-   negative.  size==0 is allowed.  On random data usually only one limb will
-   need to be examined to get a result, so it's worth having it inline.  */
-#define __GMPN_CMP(result, xp, yp, size)                                \
-  do {                                                                  \
-    mp_size_t  __gmp_i;                                                 \
-    mp_limb_t  __gmp_x, __gmp_y;                                        \
-                                                                        \
-    /* ASSERT ((size) >= 0); */                                         \
-                                                                        \
-    (result) = 0;                                                       \
-    __gmp_i = (size);                                                   \
-    while (--__gmp_i >= 0)                                              \
-      {                                                                 \
-        __gmp_x = (xp)[__gmp_i];                                        \
-        __gmp_y = (yp)[__gmp_i];                                        \
-        if (__gmp_x != __gmp_y)                                         \
-          {                                                             \
-            /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */   \
-            (result) = (__gmp_x > __gmp_y ? 1 : -1);                    \
-            break;                                                      \
-          }                                                             \
-      }                                                                 \
-  } while (0)
-
-
-#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start)                 \
-  do {                                                          \
-    /* ASSERT ((start) >= 0); */                                \
-    /* ASSERT ((start) <= (size)); */                           \
-    __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \
-  } while (0)
-#endif
-
-/* Copy {src,size} to {dst,size}, starting at "start".  This is designed to
-   keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1,
-   __GMPN_ADD, etc.  */
-#if ! defined (__GMPN_COPY_REST)
-#define __GMPN_COPY_REST(dst, src, size, start)                 \
-  do {                                                          \
-    mp_size_t __gmp_j;                                          \
-    /* ASSERT ((size) >= 0); */                                 \
-    /* ASSERT ((start) >= 0); */                                \
-    /* ASSERT ((start) <= (size)); */                           \
-    /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */     \
-    __GMP_CRAY_Pragma ("_CRI ivdep");                           \
-    for (__gmp_j = (start); __gmp_j < (size); __gmp_j++)        \
-      (dst)[__gmp_j] = (src)[__gmp_j];                          \
-  } while (0)
-#endif
-
-/* Enhancement: Use some of the smarter code from gmp-impl.h.  Maybe use
-   mpn_copyi if there's a native version, and if we don't mind demanding
-   binary compatibility for it (on targets which use it).  */
-
-#if ! defined (__GMPN_COPY)
-#define __GMPN_COPY(dst, src, size)   __GMPN_COPY_REST (dst, src, size, 0)
-#endif
-
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add)
-#if ! defined (__GMP_FORCE_mpn_add)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1)
-#if ! defined (__GMP_FORCE_mpn_add_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp)
-#if ! defined (__GMP_FORCE_mpn_cmp)
-__GMP_EXTERN_INLINE
-#endif
-int
-mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW
-{
-  int __gmp_result;
-  __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size);
-  return __gmp_result;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub)
-#if ! defined (__GMP_FORCE_mpn_sub)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1)
-#if ! defined (__GMP_FORCE_mpn_sub_1)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
-{
-  mp_limb_t  __gmp_c;
-  __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
-  return __gmp_c;
-}
-#endif
-
-#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg)
-#if ! defined (__GMP_FORCE_mpn_neg)
-__GMP_EXTERN_INLINE
-#endif
-mp_limb_t
-mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
-{
-  mp_limb_t __gmp_ul, __gmp_cy;
-  __gmp_cy = 0;
-  do {
-      __gmp_ul = *__gmp_up++;
-      *__gmp_rp++ = -__gmp_ul - __gmp_cy;
-      __gmp_cy |= __gmp_ul != 0;
-  } while (--__gmp_n != 0);
-  return __gmp_cy;
-}
-#endif
-
-#if defined (__cplusplus)
-}
-#endif
-
-
-/* Allow faster testing for negative, zero, and positive.  */
-#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)
-#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)
-#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)
-
-/* When using GCC, optimize certain common comparisons.  */
-#if defined (__GNUC__) && __GNUC__ >= 2
-#define mpz_cmp_ui(Z,UI) \
-  (__builtin_constant_p (UI) && (UI) == 0                              \
-   ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))
-#define mpz_cmp_si(Z,SI) \
-  (__builtin_constant_p (SI) && (SI) == 0 ? mpz_sgn (Z)                        \
-   : __builtin_constant_p (SI) && (SI) > 0                             \
-    ? _mpz_cmp_ui (Z, __GMP_CAST (unsigned long int, SI))              \
-   : _mpz_cmp_si (Z,SI))
-#define mpq_cmp_ui(Q,NUI,DUI) \
-  (__builtin_constant_p (NUI) && (NUI) == 0                            \
-   ? mpq_sgn (Q) : _mpq_cmp_ui (Q,NUI,DUI))
-#define mpq_cmp_si(q,n,d)                       \
-  (__builtin_constant_p ((n) >= 0) && (n) >= 0  \
-   ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \
-   : _mpq_cmp_si (q, n, d))
-#else
-#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI)
-#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI)
-#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI)
-#define mpq_cmp_si(q,n,d)  _mpq_cmp_si(q,n,d)
-#endif
-
-
-/* Using "&" rather than "&&" means these can come out branch-free.  Every
-   mpz_t has at least one limb allocated, so fetching the low limb is always
-   allowed.  */
-#define mpz_odd_p(z)   (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0]))
-#define mpz_even_p(z)  (! mpz_odd_p (z))
-
-
-/**************** C++ routines ****************/
-
-#ifdef __cplusplus
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);
-__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);
-__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);
-#endif
-
-
-/* Source-level compatibility with GMP 2 and earlier. */
-#define mpn_divmod(qp,np,nsize,dp,dsize) \
-  mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize)
-
-/* Source-level compatibility with GMP 1.  */
-#define mpz_mdiv       mpz_fdiv_q
-#define mpz_mdivmod    mpz_fdiv_qr
-#define mpz_mmod       mpz_fdiv_r
-#define mpz_mdiv_ui    mpz_fdiv_q_ui
-#define mpz_mdivmod_ui(q,r,n,d) \
-  (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))
-#define mpz_mmod_ui(r,n,d) \
-  (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))
-
-/* Useful synonyms, but not quite compatible with GMP 1.  */
-#define mpz_div                mpz_fdiv_q
-#define mpz_divmod     mpz_fdiv_qr
-#define mpz_div_ui     mpz_fdiv_q_ui
-#define mpz_divmod_ui  mpz_fdiv_qr_ui
-#define mpz_div_2exp   mpz_fdiv_q_2exp
-#define mpz_mod_2exp   mpz_fdiv_r_2exp
-
-enum
-{
-  GMP_ERROR_NONE = 0,
-  GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
-  GMP_ERROR_DIVISION_BY_ZERO = 2,
-  GMP_ERROR_SQRT_OF_NEGATIVE = 4,
-  GMP_ERROR_INVALID_ARGUMENT = 8
-};
-
-/* Define CC and CFLAGS which were used to build this version of GMP */
-#define __GMP_CC "x86_64-w64-mingw32-gcc"
-#define __GMP_CFLAGS "-O2 -pedantic -m64 -std=gnu99 -mtune=k8 -march=k8"
-
-/* Major version number is the value of __GNU_MP__ too, above and in mp.h. */
-#define __GNU_MP_VERSION 5
-#define __GNU_MP_VERSION_MINOR 0
-#define __GNU_MP_VERSION_PATCHLEVEL 1
-#define __GMP_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)
-
-#define __GMP_H__
-#endif /* __GMP_H__ */
diff --git a/misc/builddeps/win64/gmp/lib/libgmp.dll.a b/misc/builddeps/win64/gmp/lib/libgmp.dll.a
deleted file mode 100755 (executable)
index 1744e9b..0000000
Binary files a/misc/builddeps/win64/gmp/lib/libgmp.dll.a and /dev/null differ
diff --git a/misc/builddeps/win64/gmp/lib/libgmp.la b/misc/builddeps/win64/gmp/lib/libgmp.la
deleted file mode 100755 (executable)
index 1240f17..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libgmp.la - a libtool library file
-# Generated by ltmain.sh (GNU libtool) 2.2.6b
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='../bin/libgmp-10.dll'
-
-# Names of this library.
-library_names='libgmp.dll.a'
-
-# The name of the static archive.
-old_library=''
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libgmp.
-current=10
-age=0
-revision=1
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/tmp/gmp/lib'
diff --git a/misc/builddeps/win64/gmp/share/info/gmp.info b/misc/builddeps/win64/gmp/share/info/gmp.info
deleted file mode 100644 (file)
index d65ab79..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-Indirect:
-gmp.info-1: 981
-gmp.info-2: 300864
-\1f
-Tag Table:
-(Indirect)
-Node: Top\7f981
-Node: Copying\7f3211
-Node: Introduction to GMP\7f5062
-Node: Installing GMP\7f7773
-Node: Build Options\7f8505
-Node: ABI and ISA\7f24573
-Node: Notes for Package Builds\7f34251
-Node: Notes for Particular Systems\7f37338
-Node: Known Build Problems\7f43895
-Node: Performance optimization\7f47429
-Node: GMP Basics\7f48563
-Node: Headers and Libraries\7f49211
-Node: Nomenclature and Types\7f50635
-Node: Function Classes\7f52632
-Node: Variable Conventions\7f54325
-Node: Parameter Conventions\7f55934
-Node: Memory Management\7f57990
-Node: Reentrancy\7f59118
-Node: Useful Macros and Constants\7f60991
-Node: Compatibility with older versions\7f61989
-Node: Demonstration Programs\7f62950
-Node: Efficiency\7f64815
-Node: Debugging\7f72439
-Node: Profiling\7f78997
-Node: Autoconf\7f82988
-Node: Emacs\7f84767
-Node: Reporting Bugs\7f85373
-Node: Integer Functions\7f87916
-Node: Initializing Integers\7f88692
-Node: Assigning Integers\7f90839
-Node: Simultaneous Integer Init & Assign\7f92426
-Node: Converting Integers\7f94051
-Node: Integer Arithmetic\7f96973
-Node: Integer Division\7f98559
-Node: Integer Exponentiation\7f104869
-Node: Integer Roots\7f106309
-Node: Number Theoretic Functions\7f107983
-Node: Integer Comparisons\7f114126
-Node: Integer Logic and Bit Fiddling\7f115504
-Node: I/O of Integers\7f118051
-Node: Integer Random Numbers\7f120935
-Node: Integer Import and Export\7f123546
-Node: Miscellaneous Integer Functions\7f127556
-Node: Integer Special Functions\7f129416
-Node: Rational Number Functions\7f132503
-Node: Initializing Rationals\7f133696
-Node: Rational Conversions\7f136157
-Node: Rational Arithmetic\7f137888
-Node: Comparing Rationals\7f139192
-Node: Applying Integer Functions\7f140559
-Node: I/O of Rationals\7f142042
-Node: Floating-point Functions\7f143902
-Node: Initializing Floats\7f146787
-Node: Assigning Floats\7f150874
-Node: Simultaneous Float Init & Assign\7f153441
-Node: Converting Floats\7f154969
-Node: Float Arithmetic\7f158217
-Node: Float Comparison\7f160230
-Node: I/O of Floats\7f161811
-Node: Miscellaneous Float Functions\7f164409
-Node: Low-level Functions\7f166303
-Node: Random Number Functions\7f190437
-Node: Random State Initialization\7f191505
-Node: Random State Seeding\7f194363
-Node: Random State Miscellaneous\7f195752
-Node: Formatted Output\7f196393
-Node: Formatted Output Strings\7f196638
-Node: Formatted Output Functions\7f201852
-Node: C++ Formatted Output\7f205927
-Node: Formatted Input\7f208609
-Node: Formatted Input Strings\7f208845
-Node: Formatted Input Functions\7f213497
-Node: C++ Formatted Input\7f216466
-Node: C++ Class Interface\7f218369
-Node: C++ Interface General\7f219370
-Node: C++ Interface Integers\7f222440
-Node: C++ Interface Rationals\7f225871
-Node: C++ Interface Floats\7f229548
-Node: C++ Interface Random Numbers\7f234830
-Node: C++ Interface Limitations\7f237236
-Node: BSD Compatible Functions\7f240056
-Node: Custom Allocation\7f244767
-Node: Language Bindings\7f249085
-Node: Algorithms\7f253038
-Node: Multiplication Algorithms\7f253738
-Node: Basecase Multiplication\7f254710
-Node: Karatsuba Multiplication\7f256618
-Node: Toom 3-Way Multiplication\7f260243
-Node: Toom 4-Way Multiplication\7f266657
-Node: FFT Multiplication\7f268029
-Node: Other Multiplication\7f273365
-Node: Unbalanced Multiplication\7f275839
-Node: Division Algorithms\7f276627
-Node: Single Limb Division\7f277006
-Node: Basecase Division\7f279897
-Node: Divide and Conquer Division\7f281100
-Node: Block-Wise Barrett Division\7f283169
-Node: Exact Division\7f283821
-Node: Exact Remainder\7f286986
-Node: Small Quotient Division\7f289213
-Node: Greatest Common Divisor Algorithms\7f290811
-Node: Binary GCD\7f291108
-Node: Lehmer's Algorithm\7f293957
-Node: Subquadratic GCD\7f296177
-Node: Extended GCD\7f298636
-Node: Jacobi Symbol\7f299948
-Node: Powering Algorithms\7f300864
-Node: Normal Powering Algorithm\7f301127
-Node: Modular Powering Algorithm\7f301655
-Node: Root Extraction Algorithms\7f302435
-Node: Square Root Algorithm\7f302750
-Node: Nth Root Algorithm\7f304891
-Node: Perfect Square Algorithm\7f305676
-Node: Perfect Power Algorithm\7f307762
-Node: Radix Conversion Algorithms\7f308383
-Node: Binary to Radix\7f308759
-Node: Radix to Binary\7f312688
-Node: Other Algorithms\7f314776
-Node: Prime Testing Algorithm\7f315128
-Node: Factorial Algorithm\7f316312
-Node: Binomial Coefficients Algorithm\7f317715
-Node: Fibonacci Numbers Algorithm\7f318609
-Node: Lucas Numbers Algorithm\7f321083
-Node: Random Number Algorithms\7f321804
-Node: Assembly Coding\7f323925
-Node: Assembly Code Organisation\7f324885
-Node: Assembly Basics\7f325852
-Node: Assembly Carry Propagation\7f327002
-Node: Assembly Cache Handling\7f328833
-Node: Assembly Functional Units\7f330994
-Node: Assembly Floating Point\7f332607
-Node: Assembly SIMD Instructions\7f336385
-Node: Assembly Software Pipelining\7f337367
-Node: Assembly Loop Unrolling\7f338429
-Node: Assembly Writing Guide\7f340644
-Node: Internals\7f343409
-Node: Integer Internals\7f343921
-Node: Rational Internals\7f346177
-Node: Float Internals\7f347415
-Node: Raw Output Internals\7f354829
-Node: C++ Interface Internals\7f356023
-Node: Contributors\7f359309
-Node: References\7f364267
-Node: GNU Free Documentation License\7f369925
-Node: Concept Index\7f395094
-Node: Function Index\7f441276
-\1f
-End Tag Table
diff --git a/misc/builddeps/win64/gmp/share/info/gmp.info-1 b/misc/builddeps/win64/gmp/share/info/gmp.info-1
deleted file mode 100644 (file)
index d136059..0000000
+++ /dev/null
@@ -1,7084 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-File: gmp.info,  Node: Top,  Next: Copying,  Prev: (dir),  Up: (dir)
-
-GNU MP
-******
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-
-* Menu:
-
-* Copying::                    GMP Copying Conditions (LGPL).
-* Introduction to GMP::        Brief introduction to GNU MP.
-* Installing GMP::             How to configure and compile the GMP library.
-* GMP Basics::                 What every GMP user should know.
-* Reporting Bugs::             How to usefully report bugs.
-* Integer Functions::          Functions for arithmetic on signed integers.
-* Rational Number Functions::  Functions for arithmetic on rational numbers.
-* Floating-point Functions::   Functions for arithmetic on floats.
-* Low-level Functions::        Fast functions for natural numbers.
-* Random Number Functions::    Functions for generating random numbers.
-* Formatted Output::           `printf' style output.
-* Formatted Input::            `scanf' style input.
-* C++ Class Interface::        Class wrappers around GMP types.
-* BSD Compatible Functions::   All functions found in BSD MP.
-* Custom Allocation::          How to customize the internal allocation.
-* Language Bindings::          Using GMP from other languages.
-* Algorithms::                 What happens behind the scenes.
-* Internals::                  How values are represented behind the scenes.
-
-* Contributors::               Who brings you this library?
-* References::                 Some useful papers and books to read.
-* GNU Free Documentation License::
-* Concept Index::
-* Function Index::
-
-\1f
-File: gmp.info,  Node: Copying,  Next: Introduction to GMP,  Prev: Top,  Up: Top
-
-GNU MP Copying Conditions
-*************************
-
-This library is "free"; this means that everyone is free to use it and
-free to redistribute it on a free basis.  The library is not in the
-public domain; it is copyrighted and there are restrictions on its
-distribution, but these restrictions are designed to permit everything
-that a good cooperating citizen would want to do.  What is not allowed
-is to try to prevent others from further sharing any version of this
-library that they might get from you.
-
-   Specifically, we want to make sure that you have the right to give
-away copies of the library, that you receive source code or else can
-get it if you want it, that you can change this library or use pieces
-of it in new free programs, and that you know you can do these things.
-
-   To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights.  For example, if you distribute
-copies of the GNU MP library, you must give the recipients all the
-rights that you have.  You must make sure that they, too, receive or
-can get the source code.  And you must tell them their rights.
-
-   Also, for our own protection, we must make certain that everyone
-finds out that there is no warranty for the GNU MP library.  If it is
-modified by someone else and passed on, we want their recipients to
-know that what they have is not what we distributed, so that any
-problems introduced by others will not reflect on our reputation.
-
-   The precise conditions of the license for the GNU MP library are
-found in the Lesser General Public License version 3 that accompanies
-the source code, see `COPYING.LIB'.  Certain demonstration programs are
-provided under the terms of the plain General Public License version 3,
-see `COPYING'.
-
-\1f
-File: gmp.info,  Node: Introduction to GMP,  Next: Installing GMP,  Prev: Copying,  Up: Top
-
-1 Introduction to GNU MP
-************************
-
-GNU MP is a portable library written in C for arbitrary precision
-arithmetic on integers, rational numbers, and floating-point numbers.
-It aims to provide the fastest possible arithmetic for all applications
-that need higher precision than is directly supported by the basic C
-types.
-
-   Many applications use just a few hundred bits of precision; but some
-applications may need thousands or even millions of bits.  GMP is
-designed to give good performance for both, by choosing algorithms
-based on the sizes of the operands, and by carefully keeping the
-overhead at a minimum.
-
-   The speed of GMP is achieved by using fullwords as the basic
-arithmetic type, by using sophisticated algorithms, by including
-carefully optimized assembly code for the most common inner loops for
-many different CPUs, and by a general emphasis on speed (as opposed to
-simplicity or elegance).
-
-   There is assembly code for these CPUs: ARM, DEC Alpha 21064, 21164,
-and 21264, AMD 29000, AMD K6, K6-2, Athlon, and Athlon64, Hitachi
-SuperH and SH-2, HPPA 1.0, 1.1 and 2.0, Intel Pentium, Pentium
-Pro/II/III, Pentium 4, generic x86, Intel IA-64, i960, Motorola
-MC68000, MC68020, MC88100, and MC88110, Motorola/IBM PowerPC 32 and 64,
-National NS32000, IBM POWER, MIPS R3000, R4000, SPARCv7, SuperSPARC,
-generic SPARCv8, UltraSPARC, DEC VAX, and Zilog Z8000.  Some
-optimizations also for Cray vector systems, Clipper, IBM ROMP (RT), and
-Pyramid AP/XP.
-
-For up-to-date information on GMP, please see the GMP web pages at
-
-     `http://gmplib.org/'
-
-The latest version of the library is available at
-
-     `ftp://ftp.gnu.org/gnu/gmp/'
-
-   Many sites around the world mirror `ftp.gnu.org', please use a mirror
-near you, see `http://www.gnu.org/order/ftp.html' for a full list.
-
-   There are three public mailing lists of interest.  One for release
-announcements, one for general questions and discussions about usage of
-the GMP library and one for bug reports.  For more information, see
-
-     `http://gmplib.org/mailman/listinfo/'.
-
-   The proper place for bug reports is <gmp-bugs@gmplib.org>.  See
-*Note Reporting Bugs:: for information about reporting bugs.
-
-
-1.1 How to use this Manual
-==========================
-
-Everyone should read *Note GMP Basics::.  If you need to install the
-library yourself, then read *Note Installing GMP::.  If you have a
-system with multiple ABIs, then read *Note ABI and ISA::, for the
-compiler options that must be used on applications.
-
-   The rest of the manual can be used for later reference, although it
-is probably a good idea to glance through it.
-
-\1f
-File: gmp.info,  Node: Installing GMP,  Next: GMP Basics,  Prev: Introduction to GMP,  Up: Top
-
-2 Installing GMP
-****************
-
-GMP has an autoconf/automake/libtool based configuration system.  On a
-Unix-like system a basic build can be done with
-
-     ./configure
-     make
-
-Some self-tests can be run with
-
-     make check
-
-And you can install (under `/usr/local' by default) with
-
-     make install
-
-   If you experience problems, please report them to
-<gmp-bugs@gmplib.org>.  See *Note Reporting Bugs::, for information on
-what to include in useful bug reports.
-
-* Menu:
-
-* Build Options::
-* ABI and ISA::
-* Notes for Package Builds::
-* Notes for Particular Systems::
-* Known Build Problems::
-* Performance optimization::
-
-\1f
-File: gmp.info,  Node: Build Options,  Next: ABI and ISA,  Prev: Installing GMP,  Up: Installing GMP
-
-2.1 Build Options
-=================
-
-All the usual autoconf configure options are available, run `./configure
---help' for a summary.  The file `INSTALL.autoconf' has some generic
-installation information too.
-
-Tools
-     `configure' requires various Unix-like tools.  See *Note Notes for
-     Particular Systems::, for some options on non-Unix systems.
-
-     It might be possible to build without the help of `configure',
-     certainly all the code is there, but unfortunately you'll be on
-     your own.
-
-Build Directory
-     To compile in a separate build directory, `cd' to that directory,
-     and prefix the configure command with the path to the GMP source
-     directory.  For example
-
-          cd /my/build/dir
-          /my/sources/gmp-5.0.1/configure
-
-     Not all `make' programs have the necessary features (`VPATH') to
-     support this.  In particular, SunOS and Slowaris `make' have bugs
-     that make them unable to build in a separate directory.  Use GNU
-     `make' instead.
-
-`--prefix' and `--exec-prefix'
-     The `--prefix' option can be used in the normal way to direct GMP
-     to install under a particular tree.  The default is `/usr/local'.
-
-     `--exec-prefix' can be used to direct architecture-dependent files
-     like `libgmp.a' to a different location.  This can be used to share
-     architecture-independent parts like the documentation, but
-     separate the dependent parts.  Note however that `gmp.h' and
-     `mp.h' are architecture-dependent since they encode certain
-     aspects of `libgmp', so it will be necessary to ensure both
-     `$prefix/include' and `$exec_prefix/include' are available to the
-     compiler.
-
-`--disable-shared', `--disable-static'
-     By default both shared and static libraries are built (where
-     possible), but one or other can be disabled.  Shared libraries
-     result in smaller executables and permit code sharing between
-     separate running processes, but on some CPUs are slightly slower,
-     having a small cost on each function call.
-
-Native Compilation, `--build=CPU-VENDOR-OS'
-     For normal native compilation, the system can be specified with
-     `--build'.  By default `./configure' uses the output from running
-     `./config.guess'.  On some systems `./config.guess' can determine
-     the exact CPU type, on others it will be necessary to give it
-     explicitly.  For example,
-
-          ./configure --build=ultrasparc-sun-solaris2.7
-
-     In all cases the `OS' part is important, since it controls how
-     libtool generates shared libraries.  Running `./config.guess' is
-     the simplest way to see what it should be, if you don't know
-     already.
-
-Cross Compilation, `--host=CPU-VENDOR-OS'
-     When cross-compiling, the system used for compiling is given by
-     `--build' and the system where the library will run is given by
-     `--host'.  For example when using a FreeBSD Athlon system to build
-     GNU/Linux m68k binaries,
-
-          ./configure --build=athlon-pc-freebsd3.5 --host=m68k-mac-linux-gnu
-
-     Compiler tools are sought first with the host system type as a
-     prefix.  For example `m68k-mac-linux-gnu-ranlib' is tried, then
-     plain `ranlib'.  This makes it possible for a set of
-     cross-compiling tools to co-exist with native tools.  The prefix
-     is the argument to `--host', and this can be an alias, such as
-     `m68k-linux'.  But note that tools don't have to be setup this
-     way, it's enough to just have a `PATH' with a suitable
-     cross-compiling `cc' etc.
-
-     Compiling for a different CPU in the same family as the build
-     system is a form of cross-compilation, though very possibly this
-     would merely be special options on a native compiler.  In any case
-     `./configure' avoids depending on being able to run code on the
-     build system, which is important when creating binaries for a
-     newer CPU since they very possibly won't run on the build system.
-
-     In all cases the compiler must be able to produce an executable
-     (of whatever format) from a standard C `main'.  Although only
-     object files will go to make up `libgmp', `./configure' uses
-     linking tests for various purposes, such as determining what
-     functions are available on the host system.
-
-     Currently a warning is given unless an explicit `--build' is used
-     when cross-compiling, because it may not be possible to correctly
-     guess the build system type if the `PATH' has only a
-     cross-compiling `cc'.
-
-     Note that the `--target' option is not appropriate for GMP.  It's
-     for use when building compiler tools, with `--host' being where
-     they will run, and `--target' what they'll produce code for.
-     Ordinary programs or libraries like GMP are only interested in the
-     `--host' part, being where they'll run.  (Some past versions of
-     GMP used `--target' incorrectly.)
-
-CPU types
-     In general, if you want a library that runs as fast as possible,
-     you should configure GMP for the exact CPU type your system uses.
-     However, this may mean the binaries won't run on older members of
-     the family, and might run slower on other members, older or newer.
-     The best idea is always to build GMP for the exact machine type
-     you intend to run it on.
-
-     The following CPUs have specific support.  See `configure.in' for
-     details of what code and compiler options they select.
-
-        * Alpha: alpha, alphaev5, alphaev56, alphapca56, alphapca57,
-          alphaev6, alphaev67, alphaev68 alphaev7
-
-        * Cray: c90, j90, t90, sv1
-
-        * HPPA: hppa1.0, hppa1.1, hppa2.0, hppa2.0n, hppa2.0w, hppa64
-
-        * IA-64: ia64, itanium, itanium2
-
-        * MIPS: mips, mips3, mips64
-
-        * Motorola: m68k, m68000, m68010, m68020, m68030, m68040,
-          m68060, m68302, m68360, m88k, m88110
-
-        * POWER: power, power1, power2, power2sc
-
-        * PowerPC: powerpc, powerpc64, powerpc401, powerpc403,
-          powerpc405, powerpc505, powerpc601, powerpc602, powerpc603,
-          powerpc603e, powerpc604, powerpc604e, powerpc620, powerpc630,
-          powerpc740, powerpc7400, powerpc7450, powerpc750, powerpc801,
-          powerpc821, powerpc823, powerpc860, powerpc970
-
-        * SPARC: sparc, sparcv8, microsparc, supersparc, sparcv9,
-          ultrasparc, ultrasparc2, ultrasparc2i, ultrasparc3, sparc64
-
-        * x86 family: i386, i486, i586, pentium, pentiummmx, pentiumpro,
-          pentium2, pentium3, pentium4, k6, k62, k63, athlon, amd64,
-          viac3, viac32
-
-        * Other: a29k, arm, clipper, i960, ns32k, pyramid, sh, sh2, vax,
-          z8k
-
-     CPUs not listed will use generic C code.
-
-Generic C Build
-     If some of the assembly code causes problems, or if otherwise
-     desired, the generic C code can be selected with CPU `none'.  For
-     example,
-
-          ./configure --host=none-unknown-freebsd3.5
-
-     Note that this will run quite slowly, but it should be portable
-     and should at least make it possible to get something running if
-     all else fails.
-
-Fat binary, `--enable-fat'
-     Using `--enable-fat' selects a "fat binary" build on x86, where
-     optimized low level subroutines are chosen at runtime according to
-     the CPU detected.  This means more code, but gives good
-     performance on all x86 chips.  (This option might become available
-     for more architectures in the future.)
-
-`ABI'
-     On some systems GMP supports multiple ABIs (application binary
-     interfaces), meaning data type sizes and calling conventions.  By
-     default GMP chooses the best ABI available, but a particular ABI
-     can be selected.  For example
-
-          ./configure --host=mips64-sgi-irix6 ABI=n32
-
-     See *Note ABI and ISA::, for the available choices on relevant
-     CPUs, and what applications need to do.
-
-`CC', `CFLAGS'
-     By default the C compiler used is chosen from among some likely
-     candidates, with `gcc' normally preferred if it's present.  The
-     usual `CC=whatever' can be passed to `./configure' to choose
-     something different.
-
-     For various systems, default compiler flags are set based on the
-     CPU and compiler.  The usual `CFLAGS="-whatever"' can be passed to
-     `./configure' to use something different or to set good flags for
-     systems GMP doesn't otherwise know.
-
-     The `CC' and `CFLAGS' used are printed during `./configure', and
-     can be found in each generated `Makefile'.  This is the easiest way
-     to check the defaults when considering changing or adding
-     something.
-
-     Note that when `CC' and `CFLAGS' are specified on a system
-     supporting multiple ABIs it's important to give an explicit
-     `ABI=whatever', since GMP can't determine the ABI just from the
-     flags and won't be able to select the correct assembly code.
-
-     If just `CC' is selected then normal default `CFLAGS' for that
-     compiler will be used (if GMP recognises it).  For example
-     `CC=gcc' can be used to force the use of GCC, with default flags
-     (and default ABI).
-
-`CPPFLAGS'
-     Any flags like `-D' defines or `-I' includes required by the
-     preprocessor should be set in `CPPFLAGS' rather than `CFLAGS'.
-     Compiling is done with both `CPPFLAGS' and `CFLAGS', but
-     preprocessing uses just `CPPFLAGS'.  This distinction is because
-     most preprocessors won't accept all the flags the compiler does.
-     Preprocessing is done separately in some configure tests, and in
-     the `ansi2knr' support for K&R compilers.
-
-`CC_FOR_BUILD'
-     Some build-time programs are compiled and run to generate
-     host-specific data tables.  `CC_FOR_BUILD' is the compiler used
-     for this.  It doesn't need to be in any particular ABI or mode, it
-     merely needs to generate executables that can run.  The default is
-     to try the selected `CC' and some likely candidates such as `cc'
-     and `gcc', looking for something that works.
-
-     No flags are used with `CC_FOR_BUILD' because a simple invocation
-     like `cc foo.c' should be enough.  If some particular options are
-     required they can be included as for instance `CC_FOR_BUILD="cc
-     -whatever"'.
-
-C++ Support, `--enable-cxx'
-     C++ support in GMP can be enabled with `--enable-cxx', in which
-     case a C++ compiler will be required.  As a convenience
-     `--enable-cxx=detect' can be used to enable C++ support only if a
-     compiler can be found.  The C++ support consists of a library
-     `libgmpxx.la' and header file `gmpxx.h' (*note Headers and
-     Libraries::).
-
-     A separate `libgmpxx.la' has been adopted rather than having C++
-     objects within `libgmp.la' in order to ensure dynamic linked C
-     programs aren't bloated by a dependency on the C++ standard
-     library, and to avoid any chance that the C++ compiler could be
-     required when linking plain C programs.
-
-     `libgmpxx.la' will use certain internals from `libgmp.la' and can
-     only be expected to work with `libgmp.la' from the same GMP
-     version.  Future changes to the relevant internals will be
-     accompanied by renaming, so a mismatch will cause unresolved
-     symbols rather than perhaps mysterious misbehaviour.
-
-     In general `libgmpxx.la' will be usable only with the C++ compiler
-     that built it, since name mangling and runtime support are usually
-     incompatible between different compilers.
-
-`CXX', `CXXFLAGS'
-     When C++ support is enabled, the C++ compiler and its flags can be
-     set with variables `CXX' and `CXXFLAGS' in the usual way.  The
-     default for `CXX' is the first compiler that works from a list of
-     likely candidates, with `g++' normally preferred when available.
-     The default for `CXXFLAGS' is to try `CFLAGS', `CFLAGS' without
-     `-g', then for `g++' either `-g -O2' or `-O2', or for other
-     compilers `-g' or nothing.  Trying `CFLAGS' this way is convenient
-     when using `gcc' and `g++' together, since the flags for `gcc' will
-     usually suit `g++'.
-
-     It's important that the C and C++ compilers match, meaning their
-     startup and runtime support routines are compatible and that they
-     generate code in the same ABI (if there's a choice of ABIs on the
-     system).  `./configure' isn't currently able to check these things
-     very well itself, so for that reason `--disable-cxx' is the
-     default, to avoid a build failure due to a compiler mismatch.
-     Perhaps this will change in the future.
-
-     Incidentally, it's normally not good enough to set `CXX' to the
-     same as `CC'.  Although `gcc' for instance recognises `foo.cc' as
-     C++ code, only `g++' will invoke the linker the right way when
-     building an executable or shared library from C++ object files.
-
-Temporary Memory, `--enable-alloca=<choice>'
-     GMP allocates temporary workspace using one of the following three
-     methods, which can be selected with for instance
-     `--enable-alloca=malloc-reentrant'.
-
-        * `alloca' - C library or compiler builtin.
-
-        * `malloc-reentrant' - the heap, in a re-entrant fashion.
-
-        * `malloc-notreentrant' - the heap, with global variables.
-
-     For convenience, the following choices are also available.
-     `--disable-alloca' is the same as `no'.
-
-        * `yes' - a synonym for `alloca'.
-
-        * `no' - a synonym for `malloc-reentrant'.
-
-        * `reentrant' - `alloca' if available, otherwise
-          `malloc-reentrant'.  This is the default.
-
-        * `notreentrant' - `alloca' if available, otherwise
-          `malloc-notreentrant'.
-
-     `alloca' is reentrant and fast, and is recommended.  It actually
-     allocates just small blocks on the stack; larger ones use
-     malloc-reentrant.
-
-     `malloc-reentrant' is, as the name suggests, reentrant and thread
-     safe, but `malloc-notreentrant' is faster and should be used if
-     reentrancy is not required.
-
-     The two malloc methods in fact use the memory allocation functions
-     selected by `mp_set_memory_functions', these being `malloc' and
-     friends by default.  *Note Custom Allocation::.
-
-     An additional choice `--enable-alloca=debug' is available, to help
-     when debugging memory related problems (*note Debugging::).
-
-FFT Multiplication, `--disable-fft'
-     By default multiplications are done using Karatsuba, 3-way Toom,
-     and Fermat FFT.  The FFT is only used on large to very large
-     operands and can be disabled to save code size if desired.
-
-Berkeley MP, `--enable-mpbsd'
-     The Berkeley MP compatibility library (`libmp') and header file
-     (`mp.h') are built and installed only if `--enable-mpbsd' is used.
-     *Note BSD Compatible Functions::.
-
-Assertion Checking, `--enable-assert'
-     This option enables some consistency checking within the library.
-     This can be of use while debugging, *note Debugging::.
-
-Execution Profiling, `--enable-profiling=prof/gprof/instrument'
-     Enable profiling support, in one of various styles, *note
-     Profiling::.
-
-`MPN_PATH'
-     Various assembly versions of each mpn subroutines are provided.
-     For a given CPU, a search is made though a path to choose a
-     version of each.  For example `sparcv8' has
-
-          MPN_PATH="sparc32/v8 sparc32 generic"
-
-     which means look first for v8 code, then plain sparc32 (which is
-     v7), and finally fall back on generic C.  Knowledgeable users with
-     special requirements can specify a different path.  Normally this
-     is completely unnecessary.
-
-Documentation
-     The source for the document you're now reading is `doc/gmp.texi',
-     in Texinfo format, see *Note Texinfo: (texinfo)Top.
-
-     Info format `doc/gmp.info' is included in the distribution.  The
-     usual automake targets are available to make PostScript, DVI, PDF
-     and HTML (these will require various TeX and Texinfo tools).
-
-     DocBook and XML can be generated by the Texinfo `makeinfo' program
-     too, see *Note Options for `makeinfo': (texinfo)makeinfo options.
-
-     Some supplementary notes can also be found in the `doc'
-     subdirectory.
-
-
-\1f
-File: gmp.info,  Node: ABI and ISA,  Next: Notes for Package Builds,  Prev: Build Options,  Up: Installing GMP
-
-2.2 ABI and ISA
-===============
-
-ABI (Application Binary Interface) refers to the calling conventions
-between functions, meaning what registers are used and what sizes the
-various C data types are.  ISA (Instruction Set Architecture) refers to
-the instructions and registers a CPU has available.
-
-   Some 64-bit ISA CPUs have both a 64-bit ABI and a 32-bit ABI
-defined, the latter for compatibility with older CPUs in the family.
-GMP supports some CPUs like this in both ABIs.  In fact within GMP
-`ABI' means a combination of chip ABI, plus how GMP chooses to use it.
-For example in some 32-bit ABIs, GMP may support a limb as either a
-32-bit `long' or a 64-bit `long long'.
-
-   By default GMP chooses the best ABI available for a given system,
-and this generally gives significantly greater speed.  But an ABI can
-be chosen explicitly to make GMP compatible with other libraries, or
-particular application requirements.  For example,
-
-     ./configure ABI=32
-
-   In all cases it's vital that all object code used in a given program
-is compiled for the same ABI.
-
-   Usually a limb is implemented as a `long'.  When a `long long' limb
-is used this is encoded in the generated `gmp.h'.  This is convenient
-for applications, but it does mean that `gmp.h' will vary, and can't be
-just copied around.  `gmp.h' remains compiler independent though, since
-all compilers for a particular ABI will be expected to use the same
-limb type.
-
-   Currently no attempt is made to follow whatever conventions a system
-has for installing library or header files built for a particular ABI.
-This will probably only matter when installing multiple builds of GMP,
-and it might be as simple as configuring with a special `libdir', or it
-might require more than that.  Note that builds for different ABIs need
-to done separately, with a fresh `./configure' and `make' each.
-
-
-AMD64 (`x86_64')
-     On AMD64 systems supporting both 32-bit and 64-bit modes for
-     applications, the following ABI choices are available.
-
-    `ABI=64'
-          The 64-bit ABI uses 64-bit limbs and pointers and makes full
-          use of the chip architecture.  This is the default.
-          Applications will usually not need special compiler flags,
-          but for reference the option is
-
-               gcc  -m64
-
-    `ABI=32'
-          The 32-bit ABI is the usual i386 conventions.  This will be
-          slower, and is not recommended except for inter-operating
-          with other code not yet 64-bit capable.  Applications must be
-          compiled with
-
-               gcc  -m32
-
-          (In GCC 2.95 and earlier there's no `-m32' option, it's the
-          only mode.)
-
-
-HPPA 2.0 (`hppa2.0*', `hppa64')
-
-    `ABI=2.0w'
-          The 2.0w ABI uses 64-bit limbs and pointers and is available
-          on HP-UX 11 or up.  Applications must be compiled with
-
-               gcc [built for 2.0w]
-               cc  +DD64
-
-    `ABI=2.0n'
-          The 2.0n ABI means the 32-bit HPPA 1.0 ABI and all its normal
-          calling conventions, but with 64-bit instructions permitted
-          within functions.  GMP uses a 64-bit `long long' for a limb.
-          This ABI is available on hppa64 GNU/Linux and on HP-UX 10 or
-          higher.  Applications must be compiled with
-
-               gcc [built for 2.0n]
-               cc  +DA2.0 +e
-
-          Note that current versions of GCC (eg. 3.2) don't generate
-          64-bit instructions for `long long' operations and so may be
-          slower than for 2.0w.  (The GMP assembly code is the same
-          though.)
-
-    `ABI=1.0'
-          HPPA 2.0 CPUs can run all HPPA 1.0 and 1.1 code in the 32-bit
-          HPPA 1.0 ABI.  No special compiler options are needed for
-          applications.
-
-     All three ABIs are available for CPU types `hppa2.0w', `hppa2.0'
-     and `hppa64', but for CPU type `hppa2.0n' only 2.0n or 1.0 are
-     considered.
-
-     Note that GCC on HP-UX has no options to choose between 2.0n and
-     2.0w modes, unlike HP `cc'.  Instead it must be built for one or
-     the other ABI.  GMP will detect how it was built, and skip to the
-     corresponding `ABI'.
-
-
-IA-64 under HP-UX (`ia64*-*-hpux*', `itanium*-*-hpux*')
-     HP-UX supports two ABIs for IA-64.  GMP performance is the same in
-     both.
-
-    `ABI=32'
-          In the 32-bit ABI, pointers, `int's and `long's are 32 bits
-          and GMP uses a 64 bit `long long' for a limb.  Applications
-          can be compiled without any special flags since this ABI is
-          the default in both HP C and GCC, but for reference the flags
-          are
-
-               gcc  -milp32
-               cc   +DD32
-
-    `ABI=64'
-          In the 64-bit ABI, `long's and pointers are 64 bits and GMP
-          uses a `long' for a limb.  Applications must be compiled with
-
-               gcc  -mlp64
-               cc   +DD64
-
-     On other IA-64 systems, GNU/Linux for instance, `ABI=64' is the
-     only choice.
-
-
-MIPS under IRIX 6 (`mips*-*-irix[6789]')
-     IRIX 6 always has a 64-bit MIPS 3 or better CPU, and supports ABIs
-     o32, n32, and 64.  n32 or 64 are recommended, and GMP performance
-     will be the same in each.  The default is n32.
-
-    `ABI=o32'
-          The o32 ABI is 32-bit pointers and integers, and no 64-bit
-          operations.  GMP will be slower than in n32 or 64, this
-          option only exists to support old compilers, eg. GCC 2.7.2.
-          Applications can be compiled with no special flags on an old
-          compiler, or on a newer compiler with
-
-               gcc  -mabi=32
-               cc   -32
-
-    `ABI=n32'
-          The n32 ABI is 32-bit pointers and integers, but with a
-          64-bit limb using a `long long'.  Applications must be
-          compiled with
-
-               gcc  -mabi=n32
-               cc   -n32
-
-    `ABI=64'
-          The 64-bit ABI is 64-bit pointers and integers.  Applications
-          must be compiled with
-
-               gcc  -mabi=64
-               cc   -64
-
-     Note that MIPS GNU/Linux, as of kernel version 2.2, doesn't have
-     the necessary support for n32 or 64 and so only gets a 32-bit limb
-     and the MIPS 2 code.
-
-
-PowerPC 64 (`powerpc64', `powerpc620', `powerpc630', `powerpc970', `power4', `power5')
-
-    `ABI=aix64'
-          The AIX 64 ABI uses 64-bit limbs and pointers and is the
-          default on PowerPC 64 `*-*-aix*' systems.  Applications must
-          be compiled with
-
-               gcc  -maix64
-               xlc  -q64
-
-    `ABI=mode64'
-          The `mode64' ABI uses 64-bit limbs and pointers, and is the
-          default on 64-bit GNU/Linux, BSD, and Mac OS X/Darwin
-          systems.  Applications must be compiled with
-
-               gcc  -m64
-
-    `ABI=mode32'
-          The `mode32' ABI uses a 64-bit `long long' limb but with the
-          chip still in 32-bit mode and using 32-bit calling
-          conventions.  This is the default on for systems where the
-          true 64-bit ABIs are unavailable.  No special compiler
-          options are needed for applications.
-
-    `ABI=32'
-          This is the basic 32-bit PowerPC ABI, with a 32-bit limb.  No
-          special compiler options are needed for applications.
-
-     GMP speed is greatest in `aix64' and `mode32'.  In `ABI=32' only
-     the 32-bit ISA is used and this doesn't make full use of a 64-bit
-     chip.  On a suitable system we could perhaps use more of the ISA,
-     but there are no plans to do so.
-
-
-Sparc V9 (`sparc64', `sparcv9', `ultrasparc*')
-
-    `ABI=64'
-          The 64-bit V9 ABI is available on the various BSD sparc64
-          ports, recent versions of Sparc64 GNU/Linux, and Solaris 2.7
-          and up (when the kernel is in 64-bit mode).  GCC 3.2 or
-          higher, or Sun `cc' is required.  On GNU/Linux, depending on
-          the default `gcc' mode, applications must be compiled with
-
-               gcc  -m64
-
-          On Solaris applications must be compiled with
-
-               gcc  -m64 -mptr64 -Wa,-xarch=v9 -mcpu=v9
-               cc   -xarch=v9
-
-          On the BSD sparc64 systems no special options are required,
-          since 64-bits is the only ABI available.
-
-    `ABI=32'
-          For the basic 32-bit ABI, GMP still uses as much of the V9
-          ISA as it can.  In the Sun documentation this combination is
-          known as "v8plus".  On GNU/Linux, depending on the default
-          `gcc' mode, applications may need to be compiled with
-
-               gcc  -m32
-
-          On Solaris, no special compiler options are required for
-          applications, though using something like the following is
-          recommended.  (`gcc' 2.8 and earlier only support `-mv8'
-          though.)
-
-               gcc  -mv8plus
-               cc   -xarch=v8plus
-
-     GMP speed is greatest in `ABI=64', so it's the default where
-     available.  The speed is partly because there are extra registers
-     available and partly because 64-bits is considered the more
-     important case and has therefore had better code written for it.
-
-     Don't be confused by the names of the `-m' and `-x' compiler
-     options, they're called `arch' but effectively control both ABI
-     and ISA.
-
-     On Solaris 2.6 and earlier, only `ABI=32' is available since the
-     kernel doesn't save all registers.
-
-     On Solaris 2.7 with the kernel in 32-bit mode, a normal native
-     build will reject `ABI=64' because the resulting executables won't
-     run.  `ABI=64' can still be built if desired by making it look
-     like a cross-compile, for example
-
-          ./configure --build=none --host=sparcv9-sun-solaris2.7 ABI=64
-
-\1f
-File: gmp.info,  Node: Notes for Package Builds,  Next: Notes for Particular Systems,  Prev: ABI and ISA,  Up: Installing GMP
-
-2.3 Notes for Package Builds
-============================
-
-GMP should present no great difficulties for packaging in a binary
-distribution.
-
-   Libtool is used to build the library and `-version-info' is set
-appropriately, having started from `3:0:0' in GMP 3.0 (*note Library
-interface versions: (libtool)Versioning.).
-
-   The GMP 4 series will be upwardly binary compatible in each release
-and will be upwardly binary compatible with all of the GMP 3 series.
-Additional function interfaces may be added in each release, so on
-systems where libtool versioning is not fully checked by the loader an
-auxiliary mechanism may be needed to express that a dynamic linked
-application depends on a new enough GMP.
-
-   An auxiliary mechanism may also be needed to express that
-`libgmpxx.la' (from `--enable-cxx', *note Build Options::) requires
-`libgmp.la' from the same GMP version, since this is not done by the
-libtool versioning, nor otherwise.  A mismatch will result in
-unresolved symbols from the linker, or perhaps the loader.
-
-   When building a package for a CPU family, care should be taken to use
-`--host' (or `--build') to choose the least common denominator among
-the CPUs which might use the package.  For example this might mean plain
-`sparc' (meaning V7) for SPARCs.
-
-   For x86s, `--enable-fat' sets things up for a fat binary build,
-making a runtime selection of optimized low level routines.  This is a
-good choice for packaging to run on a range of x86 chips.
-
-   Users who care about speed will want GMP built for their exact CPU
-type, to make best use of the available optimizations.  Providing a way
-to suitably rebuild a package may be useful.  This could be as simple
-as making it possible for a user to omit `--build' (and `--host') so
-`./config.guess' will detect the CPU.  But a way to manually specify a
-`--build' will be wanted for systems where `./config.guess' is inexact.
-
-   On systems with multiple ABIs, a packaged build will need to decide
-which among the choices is to be provided, see *Note ABI and ISA::.  A
-given run of `./configure' etc will only build one ABI.  If a second
-ABI is also required then a second run of `./configure' etc must be
-made, starting from a clean directory tree (`make distclean').
-
-   As noted under "ABI and ISA", currently no attempt is made to follow
-system conventions for install locations that vary with ABI, such as
-`/usr/lib/sparcv9' for `ABI=64' as opposed to `/usr/lib' for `ABI=32'.
-A package build can override `libdir' and other standard variables as
-necessary.
-
-   Note that `gmp.h' is a generated file, and will be architecture and
-ABI dependent.  When attempting to install two ABIs simultaneously it
-will be important that an application compile gets the correct `gmp.h'
-for its desired ABI.  If compiler include paths don't vary with ABI
-options then it might be necessary to create a `/usr/include/gmp.h'
-which tests preprocessor symbols and chooses the correct actual `gmp.h'.
-
-\1f
-File: gmp.info,  Node: Notes for Particular Systems,  Next: Known Build Problems,  Prev: Notes for Package Builds,  Up: Installing GMP
-
-2.4 Notes for Particular Systems
-================================
-
-AIX 3 and 4
-     On systems `*-*-aix[34]*' shared libraries are disabled by
-     default, since some versions of the native `ar' fail on the
-     convenience libraries used.  A shared build can be attempted with
-
-          ./configure --enable-shared --disable-static
-
-     Note that the `--disable-static' is necessary because in a shared
-     build libtool makes `libgmp.a' a symlink to `libgmp.so',
-     apparently for the benefit of old versions of `ld' which only
-     recognise `.a', but unfortunately this is done even if a fully
-     functional `ld' is available.
-
-ARM
-     On systems `arm*-*-*', versions of GCC up to and including 2.95.3
-     have a bug in unsigned division, giving wrong results for some
-     operands.  GMP `./configure' will demand GCC 2.95.4 or later.
-
-Compaq C++
-     Compaq C++ on OSF 5.1 has two flavours of `iostream', a standard
-     one and an old pre-standard one (see `man iostream_intro').  GMP
-     can only use the standard one, which unfortunately is not the
-     default but must be selected by defining `__USE_STD_IOSTREAM'.
-     Configure with for instance
-
-          ./configure --enable-cxx CPPFLAGS=-D__USE_STD_IOSTREAM
-
-Floating Point Mode
-     On some systems, the hardware floating point has a control mode
-     which can set all operations to be done in a particular precision,
-     for instance single, double or extended on x86 systems (x87
-     floating point).  The GMP functions involving a `double' cannot be
-     expected to operate to their full precision when the hardware is
-     in single precision mode.  Of course this affects all code,
-     including application code, not just GMP.
-
-MS-DOS and MS Windows
-     On an MS-DOS system DJGPP can be used to build GMP, and on an MS
-     Windows system Cygwin, DJGPP and MINGW can be used.  All three are
-     excellent ports of GCC and the various GNU tools.
-
-          `http://www.cygwin.com/'
-          `http://www.delorie.com/djgpp/'
-          `http://www.mingw.org/'
-
-     Microsoft also publishes an Interix "Services for Unix" which can
-     be used to build GMP on Windows (with a normal `./configure'), but
-     it's not free software.
-
-MS Windows DLLs
-     On systems `*-*-cygwin*', `*-*-mingw*' and `*-*-pw32*' by default
-     GMP builds only a static library, but a DLL can be built instead
-     using
-
-          ./configure --disable-static --enable-shared
-
-     Static and DLL libraries can't both be built, since certain export
-     directives in `gmp.h' must be different.
-
-     A MINGW DLL build of GMP can be used with Microsoft C.  Libtool
-     doesn't install a `.lib' format import library, but it can be
-     created with MS `lib' as follows, and copied to the install
-     directory.  Similarly for `libmp' and `libgmpxx'.
-
-          cd .libs
-          lib /def:libgmp-3.dll.def /out:libgmp-3.lib
-
-     MINGW uses the C runtime library `msvcrt.dll' for I/O, so
-     applications wanting to use the GMP I/O routines must be compiled
-     with `cl /MD' to do the same.  If one of the other C runtime
-     library choices provided by MS C is desired then the suggestion is
-     to use the GMP string functions and confine I/O to the application.
-
-Motorola 68k CPU Types
-     `m68k' is taken to mean 68000.  `m68020' or higher will give a
-     performance boost on applicable CPUs.  `m68360' can be used for
-     CPU32 series chips.  `m68302' can be used for "Dragonball" series
-     chips, though this is merely a synonym for `m68000'.
-
-OpenBSD 2.6
-     `m4' in this release of OpenBSD has a bug in `eval' that makes it
-     unsuitable for `.asm' file processing.  `./configure' will detect
-     the problem and either abort or choose another m4 in the `PATH'.
-     The bug is fixed in OpenBSD 2.7, so either upgrade or use GNU m4.
-
-Power CPU Types
-     In GMP, CPU types `power*' and `powerpc*' will each use
-     instructions not available on the other, so it's important to
-     choose the right one for the CPU that will be used.  Currently GMP
-     has no assembly code support for using just the common instruction
-     subset.  To get executables that run on both, the current
-     suggestion is to use the generic C code (CPU `none'), possibly
-     with appropriate compiler options (like `-mcpu=common' for `gcc').
-     CPU `rs6000' (which is not a CPU but a family of workstations) is
-     accepted by `config.sub', but is currently equivalent to `none'.
-
-Sparc CPU Types
-     `sparcv8' or `supersparc' on relevant systems will give a
-     significant performance increase over the V7 code selected by plain
-     `sparc'.
-
-Sparc App Regs
-     The GMP assembly code for both 32-bit and 64-bit Sparc clobbers the
-     "application registers" `g2', `g3' and `g4', the same way that the
-     GCC default `-mapp-regs' does (*note SPARC Options: (gcc)SPARC
-     Options.).
-
-     This makes that code unsuitable for use with the special V9
-     `-mcmodel=embmedany' (which uses `g4' as a data segment pointer),
-     and for applications wanting to use those registers for special
-     purposes.  In these cases the only suggestion currently is to
-     build GMP with CPU `none' to avoid the assembly code.
-
-SunOS 4
-     `/usr/bin/m4' lacks various features needed to process `.asm'
-     files, and instead `./configure' will automatically use
-     `/usr/5bin/m4', which we believe is always available (if not then
-     use GNU m4).
-
-x86 CPU Types
-     `i586', `pentium' or `pentiummmx' code is good for its intended P5
-     Pentium chips, but quite slow when run on Intel P6 class chips
-     (PPro, P-II, P-III).  `i386' is a better choice when making
-     binaries that must run on both.
-
-x86 MMX and SSE2 Code
-     If the CPU selected has MMX code but the assembler doesn't support
-     it, a warning is given and non-MMX code is used instead.  This
-     will be an inferior build, since the MMX code that's present is
-     there because it's faster than the corresponding plain integer
-     code.  The same applies to SSE2.
-
-     Old versions of `gas' don't support MMX instructions, in particular
-     version 1.92.3 that comes with FreeBSD 2.2.8 or the more recent
-     OpenBSD 3.1 doesn't.
-
-     Solaris 2.6 and 2.7 `as' generate incorrect object code for
-     register to register `movq' instructions, and so can't be used for
-     MMX code.  Install a recent `gas' if MMX code is wanted on these
-     systems.
-
-\1f
-File: gmp.info,  Node: Known Build Problems,  Next: Performance optimization,  Prev: Notes for Particular Systems,  Up: Installing GMP
-
-2.5 Known Build Problems
-========================
-
-You might find more up-to-date information at `http://gmplib.org/'.
-
-Compiler link options
-     The version of libtool currently in use rather aggressively strips
-     compiler options when linking a shared library.  This will
-     hopefully be relaxed in the future, but for now if this is a
-     problem the suggestion is to create a little script to hide them,
-     and for instance configure with
-
-          ./configure CC=gcc-with-my-options
-
-DJGPP (`*-*-msdosdjgpp*')
-     The DJGPP port of `bash' 2.03 is unable to run the `configure'
-     script, it exits silently, having died writing a preamble to
-     `config.log'.  Use `bash' 2.04 or higher.
-
-     `make all' was found to run out of memory during the final
-     `libgmp.la' link on one system tested, despite having 64Mb
-     available.  Running `make libgmp.la' directly helped, perhaps
-     recursing into the various subdirectories uses up memory.
-
-GNU binutils `strip' prior to 2.12
-     `strip' from GNU binutils 2.11 and earlier should not be used on
-     the static libraries `libgmp.a' and `libmp.a' since it will
-     discard all but the last of multiple archive members with the same
-     name, like the three versions of `init.o' in `libgmp.a'.  Binutils
-     2.12 or higher can be used successfully.
-
-     The shared libraries `libgmp.so' and `libmp.so' are not affected by
-     this and any version of `strip' can be used on them.
-
-`make' syntax error
-     On certain versions of SCO OpenServer 5 and IRIX 6.5 the native
-     `make' is unable to handle the long dependencies list for
-     `libgmp.la'.  The symptom is a "syntax error" on the following
-     line of the top-level `Makefile'.
-
-          libgmp.la: $(libgmp_la_OBJECTS) $(libgmp_la_DEPENDENCIES)
-
-     Either use GNU Make, or as a workaround remove
-     `$(libgmp_la_DEPENDENCIES)' from that line (which will make the
-     initial build work, but if any recompiling is done `libgmp.la'
-     might not be rebuilt).
-
-MacOS X (`*-*-darwin*')
-     Libtool currently only knows how to create shared libraries on
-     MacOS X using the native `cc' (which is a modified GCC), not a
-     plain GCC.  A static-only build should work though
-     (`--disable-shared').
-
-NeXT prior to 3.3
-     The system compiler on old versions of NeXT was a massacred and
-     old GCC, even if it called itself `cc'.  This compiler cannot be
-     used to build GMP, you need to get a real GCC, and install that.
-     (NeXT may have fixed this in release 3.3 of their system.)
-
-POWER and PowerPC
-     Bugs in GCC 2.7.2 (and 2.6.3) mean it can't be used to compile GMP
-     on POWER or PowerPC.  If you want to use GCC for these machines,
-     get GCC 2.7.2.1 (or later).
-
-Sequent Symmetry
-     Use the GNU assembler instead of the system assembler, since the
-     latter has serious bugs.
-
-Solaris 2.6
-     The system `sed' prints an error "Output line too long" when
-     libtool builds `libgmp.la'.  This doesn't seem to cause any
-     obvious ill effects, but GNU `sed' is recommended, to avoid any
-     doubt.
-
-Sparc Solaris 2.7 with gcc 2.95.2 in `ABI=32'
-     A shared library build of GMP seems to fail in this combination,
-     it builds but then fails the tests, apparently due to some
-     incorrect data relocations within `gmp_randinit_lc_2exp_size'.
-     The exact cause is unknown, `--disable-shared' is recommended.
-
-\1f
-File: gmp.info,  Node: Performance optimization,  Prev: Known Build Problems,  Up: Installing GMP
-
-2.6 Performance optimization
-============================
-
-For optimal performance, build GMP for the exact CPU type of the target
-computer, see *Note Build Options::.
-
-   Unlike what is the case for most other programs, the compiler
-typically doesn't matter much, since GMP uses assembly language for the
-most critical operation.
-
-   In particular for long-running GMP applications, and applications
-demanding extremely large numbers, building and running the `tuneup'
-program in the `tune' subdirectory, can be important.  For example,
-
-     cd tune
-     make tuneup
-     ./tuneup
-
-   will generate better contents for the `gmp-mparam.h' parameter file.
-
-   To use the results, put the output in the file file indicated in the
-`Parameters for ...' header.  Then recompile from scratch.
-
-   The `tuneup' program takes one useful parameter, `-f NNN', which
-instructs the program how long to check FFT multiply parameters.  If
-you're going to use GMP for extremely large numbers, you may want to
-run `tuneup' with a large NNN value.
-
-\1f
-File: gmp.info,  Node: GMP Basics,  Next: Reporting Bugs,  Prev: Installing GMP,  Up: Top
-
-3 GMP Basics
-************
-
-*Using functions, macros, data types, etc. not documented in this
-manual is strongly discouraged.  If you do so your application is
-guaranteed to be incompatible with future versions of GMP.*
-
-* Menu:
-
-* Headers and Libraries::
-* Nomenclature and Types::
-* Function Classes::
-* Variable Conventions::
-* Parameter Conventions::
-* Memory Management::
-* Reentrancy::
-* Useful Macros and Constants::
-* Compatibility with older versions::
-* Demonstration Programs::
-* Efficiency::
-* Debugging::
-* Profiling::
-* Autoconf::
-* Emacs::
-
-\1f
-File: gmp.info,  Node: Headers and Libraries,  Next: Nomenclature and Types,  Prev: GMP Basics,  Up: GMP Basics
-
-3.1 Headers and Libraries
-=========================
-
-All declarations needed to use GMP are collected in the include file
-`gmp.h'.  It is designed to work with both C and C++ compilers.
-
-     #include <gmp.h>
-
-   Note however that prototypes for GMP functions with `FILE *'
-parameters are only provided if `<stdio.h>' is included too.
-
-     #include <stdio.h>
-     #include <gmp.h>
-
-   Likewise `<stdarg.h>' (or `<varargs.h>') is required for prototypes
-with `va_list' parameters, such as `gmp_vprintf'.  And `<obstack.h>'
-for prototypes with `struct obstack' parameters, such as
-`gmp_obstack_printf', when available.
-
-   All programs using GMP must link against the `libgmp' library.  On a
-typical Unix-like system this can be done with `-lgmp', for example
-
-     gcc myprogram.c -lgmp
-
-   GMP C++ functions are in a separate `libgmpxx' library.  This is
-built and installed if C++ support has been enabled (*note Build
-Options::).  For example,
-
-     g++ mycxxprog.cc -lgmpxx -lgmp
-
-   GMP is built using Libtool and an application can use that to link
-if desired, *note GNU Libtool: (libtool)Top.
-
-   If GMP has been installed to a non-standard location then it may be
-necessary to use `-I' and `-L' compiler options to point to the right
-directories, and some sort of run-time path for a shared library.
-
-\1f
-File: gmp.info,  Node: Nomenclature and Types,  Next: Function Classes,  Prev: Headers and Libraries,  Up: GMP Basics
-
-3.2 Nomenclature and Types
-==========================
-
-In this manual, "integer" usually means a multiple precision integer, as
-defined by the GMP library.  The C data type for such integers is
-`mpz_t'.  Here are some examples of how to declare such integers:
-
-     mpz_t sum;
-
-     struct foo { mpz_t x, y; };
-
-     mpz_t vec[20];
-
-   "Rational number" means a multiple precision fraction.  The C data
-type for these fractions is `mpq_t'.  For example:
-
-     mpq_t quotient;
-
-   "Floating point number" or "Float" for short, is an arbitrary
-precision mantissa with a limited precision exponent.  The C data type
-for such objects is `mpf_t'.  For example:
-
-     mpf_t fp;
-
-   The floating point functions accept and return exponents in the C
-type `mp_exp_t'.  Currently this is usually a `long', but on some
-systems it's an `int' for efficiency.
-
-   A "limb" means the part of a multi-precision number that fits in a
-single machine word.  (We chose this word because a limb of the human
-body is analogous to a digit, only larger, and containing several
-digits.)  Normally a limb is 32 or 64 bits.  The C data type for a limb
-is `mp_limb_t'.
-
-   Counts of limbs of a multi-precision number represented in the C type
-`mp_size_t'.  Currently this is normally a `long', but on some systems
-it's an `int' for efficiency, and on some systems it will be `long
-long' in the future.
-
-   Counts of bits of a multi-precision number are represented in the C
-type `mp_bitcnt_t'.  Currently this is always an `unsigned long', but on
-some systems it will be an `unsigned long long' in the future .
-
-   "Random state" means an algorithm selection and current state data.
-The C data type for such objects is `gmp_randstate_t'.  For example:
-
-     gmp_randstate_t rstate;
-
-   Also, in general `mp_bitcnt_t' is used for bit counts and ranges, and
-`size_t' is used for byte or character counts.
-
-\1f
-File: gmp.info,  Node: Function Classes,  Next: Variable Conventions,  Prev: Nomenclature and Types,  Up: GMP Basics
-
-3.3 Function Classes
-====================
-
-There are six classes of functions in the GMP library:
-
-  1. Functions for signed integer arithmetic, with names beginning with
-     `mpz_'.  The associated type is `mpz_t'.  There are about 150
-     functions in this class.  (*note Integer Functions::)
-
-  2. Functions for rational number arithmetic, with names beginning with
-     `mpq_'.  The associated type is `mpq_t'.  There are about 40
-     functions in this class, but the integer functions can be used for
-     arithmetic on the numerator and denominator separately.  (*note
-     Rational Number Functions::)
-
-  3. Functions for floating-point arithmetic, with names beginning with
-     `mpf_'.  The associated type is `mpf_t'.  There are about 60
-     functions is this class.  (*note Floating-point Functions::)
-
-  4. Functions compatible with Berkeley MP, such as `itom', `madd', and
-     `mult'.  The associated type is `MINT'.  (*note BSD Compatible
-     Functions::)
-
-  5. Fast low-level functions that operate on natural numbers.  These
-     are used by the functions in the preceding groups, and you can
-     also call them directly from very time-critical user programs.
-     These functions' names begin with `mpn_'.  The associated type is
-     array of `mp_limb_t'.  There are about 30 (hard-to-use) functions
-     in this class.  (*note Low-level Functions::)
-
-  6. Miscellaneous functions.  Functions for setting up custom
-     allocation and functions for generating random numbers.  (*note
-     Custom Allocation::, and *note Random Number Functions::)
-
-\1f
-File: gmp.info,  Node: Variable Conventions,  Next: Parameter Conventions,  Prev: Function Classes,  Up: GMP Basics
-
-3.4 Variable Conventions
-========================
-
-GMP functions generally have output arguments before input arguments.
-This notation is by analogy with the assignment operator.  The BSD MP
-compatibility functions are exceptions, having the output arguments
-last.
-
-   GMP lets you use the same variable for both input and output in one
-call.  For example, the main function for integer multiplication,
-`mpz_mul', can be used to square `x' and put the result back in `x' with
-
-     mpz_mul (x, x, x);
-
-   Before you can assign to a GMP variable, you need to initialize it
-by calling one of the special initialization functions.  When you're
-done with a variable, you need to clear it out, using one of the
-functions for that purpose.  Which function to use depends on the type
-of variable.  See the chapters on integer functions, rational number
-functions, and floating-point functions for details.
-
-   A variable should only be initialized once, or at least cleared
-between each initialization.  After a variable has been initialized, it
-may be assigned to any number of times.
-
-   For efficiency reasons, avoid excessive initializing and clearing.
-In general, initialize near the start of a function and clear near the
-end.  For example,
-
-     void
-     foo (void)
-     {
-       mpz_t  n;
-       int    i;
-       mpz_init (n);
-       for (i = 1; i < 100; i++)
-         {
-           mpz_mul (n, ...);
-           mpz_fdiv_q (n, ...);
-           ...
-         }
-       mpz_clear (n);
-     }
-
-\1f
-File: gmp.info,  Node: Parameter Conventions,  Next: Memory Management,  Prev: Variable Conventions,  Up: GMP Basics
-
-3.5 Parameter Conventions
-=========================
-
-When a GMP variable is used as a function parameter, it's effectively a
-call-by-reference, meaning if the function stores a value there it will
-change the original in the caller.  Parameters which are input-only can
-be designated `const' to provoke a compiler error or warning on
-attempting to modify them.
-
-   When a function is going to return a GMP result, it should designate
-a parameter that it sets, like the library functions do.  More than one
-value can be returned by having more than one output parameter, again
-like the library functions.  A `return' of an `mpz_t' etc doesn't
-return the object, only a pointer, and this is almost certainly not
-what's wanted.
-
-   Here's an example accepting an `mpz_t' parameter, doing a
-calculation, and storing the result to the indicated parameter.
-
-     void
-     foo (mpz_t result, const mpz_t param, unsigned long n)
-     {
-       unsigned long  i;
-       mpz_mul_ui (result, param, n);
-       for (i = 1; i < n; i++)
-         mpz_add_ui (result, result, i*7);
-     }
-
-     int
-     main (void)
-     {
-       mpz_t  r, n;
-       mpz_init (r);
-       mpz_init_set_str (n, "123456", 0);
-       foo (r, n, 20L);
-       gmp_printf ("%Zd\n", r);
-       return 0;
-     }
-
-   `foo' works even if the mainline passes the same variable for
-`param' and `result', just like the library functions.  But sometimes
-it's tricky to make that work, and an application might not want to
-bother supporting that sort of thing.
-
-   For interest, the GMP types `mpz_t' etc are implemented as
-one-element arrays of certain structures.  This is why declaring a
-variable creates an object with the fields GMP needs, but then using it
-as a parameter passes a pointer to the object.  Note that the actual
-fields in each `mpz_t' etc are for internal use only and should not be
-accessed directly by code that expects to be compatible with future GMP
-releases.
-
-\1f
-File: gmp.info,  Node: Memory Management,  Next: Reentrancy,  Prev: Parameter Conventions,  Up: GMP Basics
-
-3.6 Memory Management
-=====================
-
-The GMP types like `mpz_t' are small, containing only a couple of sizes,
-and pointers to allocated data.  Once a variable is initialized, GMP
-takes care of all space allocation.  Additional space is allocated
-whenever a variable doesn't have enough.
-
-   `mpz_t' and `mpq_t' variables never reduce their allocated space.
-Normally this is the best policy, since it avoids frequent reallocation.
-Applications that need to return memory to the heap at some particular
-point can use `mpz_realloc2', or clear variables no longer needed.
-
-   `mpf_t' variables, in the current implementation, use a fixed amount
-of space, determined by the chosen precision and allocated at
-initialization, so their size doesn't change.
-
-   All memory is allocated using `malloc' and friends by default, but
-this can be changed, see *Note Custom Allocation::.  Temporary memory
-on the stack is also used (via `alloca'), but this can be changed at
-build-time if desired, see *Note Build Options::.
-
-\1f
-File: gmp.info,  Node: Reentrancy,  Next: Useful Macros and Constants,  Prev: Memory Management,  Up: GMP Basics
-
-3.7 Reentrancy
-==============
-
-GMP is reentrant and thread-safe, with some exceptions:
-
-   * If configured with `--enable-alloca=malloc-notreentrant' (or with
-     `--enable-alloca=notreentrant' when `alloca' is not available),
-     then naturally GMP is not reentrant.
-
-   * `mpf_set_default_prec' and `mpf_init' use a global variable for the
-     selected precision.  `mpf_init2' can be used instead, and in the
-     C++ interface an explicit precision to the `mpf_class' constructor.
-
-   * `mpz_random' and the other old random number functions use a global
-     random state and are hence not reentrant.  The newer random number
-     functions that accept a `gmp_randstate_t' parameter can be used
-     instead.
-
-   * `gmp_randinit' (obsolete) returns an error indication through a
-     global variable, which is not thread safe.  Applications are
-     advised to use `gmp_randinit_default' or `gmp_randinit_lc_2exp'
-     instead.
-
-   * `mp_set_memory_functions' uses global variables to store the
-     selected memory allocation functions.
-
-   * If the memory allocation functions set by a call to
-     `mp_set_memory_functions' (or `malloc' and friends by default) are
-     not reentrant, then GMP will not be reentrant either.
-
-   * If the standard I/O functions such as `fwrite' are not reentrant
-     then the GMP I/O functions using them will not be reentrant either.
-
-   * It's safe for two threads to read from the same GMP variable
-     simultaneously, but it's not safe for one to read while the
-     another might be writing, nor for two threads to write
-     simultaneously.  It's not safe for two threads to generate a
-     random number from the same `gmp_randstate_t' simultaneously,
-     since this involves an update of that variable.
-
-\1f
-File: gmp.info,  Node: Useful Macros and Constants,  Next: Compatibility with older versions,  Prev: Reentrancy,  Up: GMP Basics
-
-3.8 Useful Macros and Constants
-===============================
-
- -- Global Constant: const int mp_bits_per_limb
-     The number of bits per limb.
-
- -- Macro: __GNU_MP_VERSION
- -- Macro: __GNU_MP_VERSION_MINOR
- -- Macro: __GNU_MP_VERSION_PATCHLEVEL
-     The major and minor GMP version, and patch level, respectively, as
-     integers.  For GMP i.j, these numbers will be i, j, and 0,
-     respectively.  For GMP i.j.k, these numbers will be i, j, and k,
-     respectively.
-
- -- Global Constant: const char * const gmp_version
-     The GMP version number, as a null-terminated string, in the form
-     "i.j.k".  This release is "5.0.1".  Note that the format "i.j" was
-     used when k was zero was used before version 4.3.0.
-
- -- Macro: __GMP_CC
- -- Macro: __GMP_CFLAGS
-     The compiler and compiler flags, respectively, used when compiling
-     GMP, as strings.
-
-\1f
-File: gmp.info,  Node: Compatibility with older versions,  Next: Demonstration Programs,  Prev: Useful Macros and Constants,  Up: GMP Basics
-
-3.9 Compatibility with older versions
-=====================================
-
-This version of GMP is upwardly binary compatible with all 4.x and 3.x
-versions, and upwardly compatible at the source level with all 2.x
-versions, with the following exceptions.
-
-   * `mpn_gcd' had its source arguments swapped as of GMP 3.0, for
-     consistency with other `mpn' functions.
-
-   * `mpf_get_prec' counted precision slightly differently in GMP 3.0
-     and 3.0.1, but in 3.1 reverted to the 2.x style.
-
-   There are a number of compatibility issues between GMP 1 and GMP 2
-that of course also apply when porting applications from GMP 1 to GMP
-4.  Please see the GMP 2 manual for details.
-
-   The Berkeley MP compatibility library (*note BSD Compatible
-Functions::) is source and binary compatible with the standard `libmp'.
-
-\1f
-File: gmp.info,  Node: Demonstration Programs,  Next: Efficiency,  Prev: Compatibility with older versions,  Up: GMP Basics
-
-3.10 Demonstration programs
-===========================
-
-The `demos' subdirectory has some sample programs using GMP.  These
-aren't built or installed, but there's a `Makefile' with rules for them.
-For instance,
-
-     make pexpr
-     ./pexpr 68^975+10
-
-The following programs are provided
-
-   * `pexpr' is an expression evaluator, the program used on the GMP
-     web page.
-
-   * The `calc' subdirectory has a similar but simpler evaluator using
-     `lex' and `yacc'.
-
-   * The `expr' subdirectory is yet another expression evaluator, a
-     library designed for ease of use within a C program.  See
-     `demos/expr/README' for more information.
-
-   * `factorize' is a Pollard-Rho factorization program.
-
-   * `isprime' is a command-line interface to the `mpz_probab_prime_p'
-     function.
-
-   * `primes' counts or lists primes in an interval, using a sieve.
-
-   * `qcn' is an example use of `mpz_kronecker_ui' to estimate quadratic
-     class numbers.
-
-   * The `perl' subdirectory is a comprehensive perl interface to GMP.
-     See `demos/perl/INSTALL' for more information.  Documentation is
-     in POD format in `demos/perl/GMP.pm'.
-
-   As an aside, consideration has been given at various times to some
-sort of expression evaluation within the main GMP library.  Going
-beyond something minimal quickly leads to matters like user-defined
-functions, looping, fixnums for control variables, etc, which are
-considered outside the scope of GMP (much closer to language
-interpreters or compilers, *Note Language Bindings::.)  Something
-simple for program input convenience may yet be a possibility, a
-combination of the `expr' demo and the `pexpr' tree back-end perhaps.
-But for now the above evaluators are offered as illustrations.
-
-\1f
-File: gmp.info,  Node: Efficiency,  Next: Debugging,  Prev: Demonstration Programs,  Up: GMP Basics
-
-3.11 Efficiency
-===============
-
-Small Operands
-     On small operands, the time for function call overheads and memory
-     allocation can be significant in comparison to actual calculation.
-     This is unavoidable in a general purpose variable precision
-     library, although GMP attempts to be as efficient as it can on
-     both large and small operands.
-
-Static Linking
-     On some CPUs, in particular the x86s, the static `libgmp.a' should
-     be used for maximum speed, since the PIC code in the shared
-     `libgmp.so' will have a small overhead on each function call and
-     global data address.  For many programs this will be
-     insignificant, but for long calculations there's a gain to be had.
-
-Initializing and Clearing
-     Avoid excessive initializing and clearing of variables, since this
-     can be quite time consuming, especially in comparison to otherwise
-     fast operations like addition.
-
-     A language interpreter might want to keep a free list or stack of
-     initialized variables ready for use.  It should be possible to
-     integrate something like that with a garbage collector too.
-
-Reallocations
-     An `mpz_t' or `mpq_t' variable used to hold successively increasing
-     values will have its memory repeatedly `realloc'ed, which could be
-     quite slow or could fragment memory, depending on the C library.
-     If an application can estimate the final size then `mpz_init2' or
-     `mpz_realloc2' can be called to allocate the necessary space from
-     the beginning (*note Initializing Integers::).
-
-     It doesn't matter if a size set with `mpz_init2' or `mpz_realloc2'
-     is too small, since all functions will do a further reallocation
-     if necessary.  Badly overestimating memory required will waste
-     space though.
-
-`2exp' Functions
-     It's up to an application to call functions like `mpz_mul_2exp'
-     when appropriate.  General purpose functions like `mpz_mul' make
-     no attempt to identify powers of two or other special forms,
-     because such inputs will usually be very rare and testing every
-     time would be wasteful.
-
-`ui' and `si' Functions
-     The `ui' functions and the small number of `si' functions exist for
-     convenience and should be used where applicable.  But if for
-     example an `mpz_t' contains a value that fits in an `unsigned
-     long' there's no need extract it and call a `ui' function, just
-     use the regular `mpz' function.
-
-In-Place Operations
-     `mpz_abs', `mpq_abs', `mpf_abs', `mpz_neg', `mpq_neg' and
-     `mpf_neg' are fast when used for in-place operations like
-     `mpz_abs(x,x)', since in the current implementation only a single
-     field of `x' needs changing.  On suitable compilers (GCC for
-     instance) this is inlined too.
-
-     `mpz_add_ui', `mpz_sub_ui', `mpf_add_ui' and `mpf_sub_ui' benefit
-     from an in-place operation like `mpz_add_ui(x,x,y)', since usually
-     only one or two limbs of `x' will need to be changed.  The same
-     applies to the full precision `mpz_add' etc if `y' is small.  If
-     `y' is big then cache locality may be helped, but that's all.
-
-     `mpz_mul' is currently the opposite, a separate destination is
-     slightly better.  A call like `mpz_mul(x,x,y)' will, unless `y' is
-     only one limb, make a temporary copy of `x' before forming the
-     result.  Normally that copying will only be a tiny fraction of the
-     time for the multiply, so this is not a particularly important
-     consideration.
-
-     `mpz_set', `mpq_set', `mpq_set_num', `mpf_set', etc, make no
-     attempt to recognise a copy of something to itself, so a call like
-     `mpz_set(x,x)' will be wasteful.  Naturally that would never be
-     written deliberately, but if it might arise from two pointers to
-     the same object then a test to avoid it might be desirable.
-
-          if (x != y)
-            mpz_set (x, y);
-
-     Note that it's never worth introducing extra `mpz_set' calls just
-     to get in-place operations.  If a result should go to a particular
-     variable then just direct it there and let GMP take care of data
-     movement.
-
-Divisibility Testing (Small Integers)
-     `mpz_divisible_ui_p' and `mpz_congruent_ui_p' are the best
-     functions for testing whether an `mpz_t' is divisible by an
-     individual small integer.  They use an algorithm which is faster
-     than `mpz_tdiv_ui', but which gives no useful information about
-     the actual remainder, only whether it's zero (or a particular
-     value).
-
-     However when testing divisibility by several small integers, it's
-     best to take a remainder modulo their product, to save
-     multi-precision operations.  For instance to test whether a number
-     is divisible by any of 23, 29 or 31 take a remainder modulo
-     23*29*31 = 20677 and then test that.
-
-     The division functions like `mpz_tdiv_q_ui' which give a quotient
-     as well as a remainder are generally a little slower than the
-     remainder-only functions like `mpz_tdiv_ui'.  If the quotient is
-     only rarely wanted then it's probably best to just take a
-     remainder and then go back and calculate the quotient if and when
-     it's wanted (`mpz_divexact_ui' can be used if the remainder is
-     zero).
-
-Rational Arithmetic
-     The `mpq' functions operate on `mpq_t' values with no common
-     factors in the numerator and denominator.  Common factors are
-     checked-for and cast out as necessary.  In general, cancelling
-     factors every time is the best approach since it minimizes the
-     sizes for subsequent operations.
-
-     However, applications that know something about the factorization
-     of the values they're working with might be able to avoid some of
-     the GCDs used for canonicalization, or swap them for divisions.
-     For example when multiplying by a prime it's enough to check for
-     factors of it in the denominator instead of doing a full GCD.  Or
-     when forming a big product it might be known that very little
-     cancellation will be possible, and so canonicalization can be left
-     to the end.
-
-     The `mpq_numref' and `mpq_denref' macros give access to the
-     numerator and denominator to do things outside the scope of the
-     supplied `mpq' functions.  *Note Applying Integer Functions::.
-
-     The canonical form for rationals allows mixed-type `mpq_t' and
-     integer additions or subtractions to be done directly with
-     multiples of the denominator.  This will be somewhat faster than
-     `mpq_add'.  For example,
-
-          /* mpq increment */
-          mpz_add (mpq_numref(q), mpq_numref(q), mpq_denref(q));
-
-          /* mpq += unsigned long */
-          mpz_addmul_ui (mpq_numref(q), mpq_denref(q), 123UL);
-
-          /* mpq -= mpz */
-          mpz_submul (mpq_numref(q), mpq_denref(q), z);
-
-Number Sequences
-     Functions like `mpz_fac_ui', `mpz_fib_ui' and `mpz_bin_uiui' are
-     designed for calculating isolated values.  If a range of values is
-     wanted it's probably best to call to get a starting point and
-     iterate from there.
-
-Text Input/Output
-     Hexadecimal or octal are suggested for input or output in text
-     form.  Power-of-2 bases like these can be converted much more
-     efficiently than other bases, like decimal.  For big numbers
-     there's usually nothing of particular interest to be seen in the
-     digits, so the base doesn't matter much.
-
-     Maybe we can hope octal will one day become the normal base for
-     everyday use, as proposed by King Charles XII of Sweden and later
-     reformers.
-
-\1f
-File: gmp.info,  Node: Debugging,  Next: Profiling,  Prev: Efficiency,  Up: GMP Basics
-
-3.12 Debugging
-==============
-
-Stack Overflow
-     Depending on the system, a segmentation violation or bus error
-     might be the only indication of stack overflow.  See
-     `--enable-alloca' choices in *Note Build Options::, for how to
-     address this.
-
-     In new enough versions of GCC, `-fstack-check' may be able to
-     ensure an overflow is recognised by the system before too much
-     damage is done, or `-fstack-limit-symbol' or
-     `-fstack-limit-register' may be able to add checking if the system
-     itself doesn't do any (*note Options for Code Generation:
-     (gcc)Code Gen Options.).  These options must be added to the
-     `CFLAGS' used in the GMP build (*note Build Options::), adding
-     them just to an application will have no effect.  Note also
-     they're a slowdown, adding overhead to each function call and each
-     stack allocation.
-
-Heap Problems
-     The most likely cause of application problems with GMP is heap
-     corruption.  Failing to `init' GMP variables will have
-     unpredictable effects, and corruption arising elsewhere in a
-     program may well affect GMP.  Initializing GMP variables more than
-     once or failing to clear them will cause memory leaks.
-
-     In all such cases a `malloc' debugger is recommended.  On a GNU or
-     BSD system the standard C library `malloc' has some diagnostic
-     facilities, see *Note Allocation Debugging: (libc)Allocation
-     Debugging, or `man 3 malloc'.  Other possibilities, in no
-     particular order, include
-
-          `http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/'
-          `http://dmalloc.com/'
-          `http://www.perens.com/FreeSoftware/'  (electric fence)
-          `http://packages.debian.org/stable/devel/fda'
-          `http://www.gnupdate.org/components/leakbug/'
-          `http://people.redhat.com/~otaylor/memprof/'
-          `http://www.cbmamiga.demon.co.uk/mpatrol/'
-
-     The GMP default allocation routines in `memory.c' also have a
-     simple sentinel scheme which can be enabled with `#define DEBUG'
-     in that file.  This is mainly designed for detecting buffer
-     overruns during GMP development, but might find other uses.
-
-Stack Backtraces
-     On some systems the compiler options GMP uses by default can
-     interfere with debugging.  In particular on x86 and 68k systems
-     `-fomit-frame-pointer' is used and this generally inhibits stack
-     backtracing.  Recompiling without such options may help while
-     debugging, though the usual caveats about it potentially moving a
-     memory problem or hiding a compiler bug will apply.
-
-GDB, the GNU Debugger
-     A sample `.gdbinit' is included in the distribution, showing how
-     to call some undocumented dump functions to print GMP variables
-     from within GDB.  Note that these functions shouldn't be used in
-     final application code since they're undocumented and may be
-     subject to incompatible changes in future versions of GMP.
-
-Source File Paths
-     GMP has multiple source files with the same name, in different
-     directories.  For example `mpz', `mpq' and `mpf' each have an
-     `init.c'.  If the debugger can't already determine the right one
-     it may help to build with absolute paths on each C file.  One way
-     to do that is to use a separate object directory with an absolute
-     path to the source directory.
-
-          cd /my/build/dir
-          /my/source/dir/gmp-5.0.1/configure
-
-     This works via `VPATH', and might require GNU `make'.  Alternately
-     it might be possible to change the `.c.lo' rules appropriately.
-
-Assertion Checking
-     The build option `--enable-assert' is available to add some
-     consistency checks to the library (see *Note Build Options::).
-     These are likely to be of limited value to most applications.
-     Assertion failures are just as likely to indicate memory
-     corruption as a library or compiler bug.
-
-     Applications using the low-level `mpn' functions, however, will
-     benefit from `--enable-assert' since it adds checks on the
-     parameters of most such functions, many of which have subtle
-     restrictions on their usage.  Note however that only the generic C
-     code has checks, not the assembly code, so CPU `none' should be
-     used for maximum checking.
-
-Temporary Memory Checking
-     The build option `--enable-alloca=debug' arranges that each block
-     of temporary memory in GMP is allocated with a separate call to
-     `malloc' (or the allocation function set with
-     `mp_set_memory_functions').
-
-     This can help a malloc debugger detect accesses outside the
-     intended bounds, or detect memory not released.  In a normal
-     build, on the other hand, temporary memory is allocated in blocks
-     which GMP divides up for its own use, or may be allocated with a
-     compiler builtin `alloca' which will go nowhere near any malloc
-     debugger hooks.
-
-Maximum Debuggability
-     To summarize the above, a GMP build for maximum debuggability
-     would be
-
-          ./configure --disable-shared --enable-assert \
-            --enable-alloca=debug --host=none CFLAGS=-g
-
-     For C++, add `--enable-cxx CXXFLAGS=-g'.
-
-Checker
-     The GCC checker (`http://savannah.nongnu.org/projects/checker/')
-     can be used with GMP.  It contains a stub library which means GMP
-     applications compiled with checker can use a normal GMP build.
-
-     A build of GMP with checking within GMP itself can be made.  This
-     will run very very slowly.  On GNU/Linux for example,
-
-          ./configure --host=none-pc-linux-gnu CC=checkergcc
-
-     `--host=none' must be used, since the GMP assembly code doesn't
-     support the checking scheme.  The GMP C++ features cannot be used,
-     since current versions of checker (0.9.9.1) don't yet support the
-     standard C++ library.
-
-Valgrind
-     The valgrind program (`http://valgrind.org/') is a memory checker
-     for x86s.  It translates and emulates machine instructions to do
-     strong checks for uninitialized data (at the level of individual
-     bits), memory accesses through bad pointers, and memory leaks.
-
-     Recent versions of Valgrind are getting support for MMX and
-     SSE/SSE2 instructions, for past versions GMP will need to be
-     configured not to use those, ie. for an x86 without them (for
-     instance plain `i486').
-
-Other Problems
-     Any suspected bug in GMP itself should be isolated to make sure
-     it's not an application problem, see *Note Reporting Bugs::.
-
-\1f
-File: gmp.info,  Node: Profiling,  Next: Autoconf,  Prev: Debugging,  Up: GMP Basics
-
-3.13 Profiling
-==============
-
-Running a program under a profiler is a good way to find where it's
-spending most time and where improvements can be best sought.  The
-profiling choices for a GMP build are as follows.
-
-`--disable-profiling'
-     The default is to add nothing special for profiling.
-
-     It should be possible to just compile the mainline of a program
-     with `-p' and use `prof' to get a profile consisting of
-     timer-based sampling of the program counter.  Most of the GMP
-     assembly code has the necessary symbol information.
-
-     This approach has the advantage of minimizing interference with
-     normal program operation, but on most systems the resolution of
-     the sampling is quite low (10 milliseconds for instance),
-     requiring long runs to get accurate information.
-
-`--enable-profiling=prof'
-     Build with support for the system `prof', which means `-p' added
-     to the `CFLAGS'.
-
-     This provides call counting in addition to program counter
-     sampling, which allows the most frequently called routines to be
-     identified, and an average time spent in each routine to be
-     determined.
-
-     The x86 assembly code has support for this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-p' and therefore won't appear in the call counts.
-
-     On some systems, such as GNU/Linux, `-p' in fact means `-pg' and in
-     this case `--enable-profiling=gprof' described below should be used
-     instead.
-
-`--enable-profiling=gprof'
-     Build with support for `gprof', which means `-pg' added to the
-     `CFLAGS'.
-
-     This provides call graph construction in addition to call counting
-     and program counter sampling, which makes it possible to count
-     calls coming from different locations.  For example the number of
-     calls to `mpn_mul' from `mpz_mul' versus the number from
-     `mpf_mul'.  The program counter sampling is still flat though, so
-     only a total time in `mpn_mul' would be accumulated, not a
-     separate amount for each call site.
-
-     The x86 assembly code has support for this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-pg' and therefore not be included in the call counts.
-
-     On x86 and m68k systems `-pg' and `-fomit-frame-pointer' are
-     incompatible, so the latter is omitted from the default flags in
-     that case, which might result in poorer code generation.
-
-     Incidentally, it should be possible to use the `gprof' program
-     with a plain `--enable-profiling=prof' build.  But in that case
-     only the `gprof -p' flat profile and call counts can be expected
-     to be valid, not the `gprof -q' call graph.
-
-`--enable-profiling=instrument'
-     Build with the GCC option `-finstrument-functions' added to the
-     `CFLAGS' (*note Options for Code Generation: (gcc)Code Gen
-     Options.).
-
-     This inserts special instrumenting calls at the start and end of
-     each function, allowing exact timing and full call graph
-     construction.
-
-     This instrumenting is not normally a standard system feature and
-     will require support from an external library, such as
-
-          `http://sourceforge.net/projects/fnccheck/'
-
-     This should be included in `LIBS' during the GMP configure so that
-     test programs will link.  For example,
-
-          ./configure --enable-profiling=instrument LIBS=-lfc
-
-     On a GNU system the C library provides dummy instrumenting
-     functions, so programs compiled with this option will link.  In
-     this case it's only necessary to ensure the correct library is
-     added when linking an application.
-
-     The x86 assembly code supports this option, but on other
-     processors the assembly routines will be as if compiled without
-     `-finstrument-functions' meaning time spent in them will
-     effectively be attributed to their caller.
-
-\1f
-File: gmp.info,  Node: Autoconf,  Next: Emacs,  Prev: Profiling,  Up: GMP Basics
-
-3.14 Autoconf
-=============
-
-Autoconf based applications can easily check whether GMP is installed.
-The only thing to be noted is that GMP library symbols from version 3
-onwards have prefixes like `__gmpz'.  The following therefore would be
-a simple test,
-
-     AC_CHECK_LIB(gmp, __gmpz_init)
-
-   This just uses the default `AC_CHECK_LIB' actions for found or not
-found, but an application that must have GMP would want to generate an
-error if not found.  For example,
-
-     AC_CHECK_LIB(gmp, __gmpz_init, ,
-       [AC_MSG_ERROR([GNU MP not found, see http://gmplib.org/])])
-
-   If functions added in some particular version of GMP are required,
-then one of those can be used when checking.  For example `mpz_mul_si'
-was added in GMP 3.1,
-
-     AC_CHECK_LIB(gmp, __gmpz_mul_si, ,
-       [AC_MSG_ERROR(
-       [GNU MP not found, or not 3.1 or up, see http://gmplib.org/])])
-
-   An alternative would be to test the version number in `gmp.h' using
-say `AC_EGREP_CPP'.  That would make it possible to test the exact
-version, if some particular sub-minor release is known to be necessary.
-
-   In general it's recommended that applications should simply demand a
-new enough GMP rather than trying to provide supplements for features
-not available in past versions.
-
-   Occasionally an application will need or want to know the size of a
-type at configuration or preprocessing time, not just with `sizeof' in
-the code.  This can be done in the normal way with `mp_limb_t' etc, but
-GMP 4.0 or up is best for this, since prior versions needed certain
-`-D' defines on systems using a `long long' limb.  The following would
-suit Autoconf 2.50 or up,
-
-     AC_CHECK_SIZEOF(mp_limb_t, , [#include <gmp.h>])
-
-\1f
-File: gmp.info,  Node: Emacs,  Prev: Autoconf,  Up: GMP Basics
-
-3.15 Emacs
-==========
-
-<C-h C-i> (`info-lookup-symbol') is a good way to find documentation on
-C functions while editing (*note Info Documentation Lookup: (emacs)Info
-Lookup.).
-
-   The GMP manual can be included in such lookups by putting the
-following in your `.emacs',
-
-     (eval-after-load "info-look"
-       '(let ((mode-value (assoc 'c-mode (assoc 'symbol info-lookup-alist))))
-          (setcar (nthcdr 3 mode-value)
-                  (cons '("(gmp)Function Index" nil "^ -.* " "\\>")
-                        (nth 3 mode-value)))))
-
-\1f
-File: gmp.info,  Node: Reporting Bugs,  Next: Integer Functions,  Prev: GMP Basics,  Up: Top
-
-4 Reporting Bugs
-****************
-
-If you think you have found a bug in the GMP library, please
-investigate it and report it.  We have made this library available to
-you, and it is not too much to ask you to report the bugs you find.
-
-   Before you report a bug, check it's not already addressed in *Note
-Known Build Problems::, or perhaps *Note Notes for Particular
-Systems::.  You may also want to check `http://gmplib.org/' for patches
-for this release.
-
-   Please include the following in any report,
-
-   * The GMP version number, and if pre-packaged or patched then say so.
-
-   * A test program that makes it possible for us to reproduce the bug.
-     Include instructions on how to run the program.
-
-   * A description of what is wrong.  If the results are incorrect, in
-     what way.  If you get a crash, say so.
-
-   * If you get a crash, include a stack backtrace from the debugger if
-     it's informative (`where' in `gdb', or `$C' in `adb').
-
-   * Please do not send core dumps, executables or `strace's.
-
-   * The configuration options you used when building GMP, if any.
-
-   * The name of the compiler and its version.  For `gcc', get the
-     version with `gcc -v', otherwise perhaps `what `which cc`', or
-     similar.
-
-   * The output from running `uname -a'.
-
-   * The output from running `./config.guess', and from running
-     `./configfsf.guess' (might be the same).
-
-   * If the bug is related to `configure', then the compressed contents
-     of `config.log'.
-
-   * If the bug is related to an `asm' file not assembling, then the
-     contents of `config.m4' and the offending line or lines from the
-     temporary `mpn/tmp-<file>.s'.
-
-   Please make an effort to produce a self-contained report, with
-something definite that can be tested or debugged.  Vague queries or
-piecemeal messages are difficult to act on and don't help the
-development effort.
-
-   It is not uncommon that an observed problem is actually due to a bug
-in the compiler; the GMP code tends to explore interesting corners in
-compilers.
-
-   If your bug report is good, we will do our best to help you get a
-corrected version of the library; if the bug report is poor, we won't
-do anything about it (except maybe ask you to send a better report).
-
-   Send your report to: <gmp-bugs@gmplib.org>.
-
-   If you think something in this manual is unclear, or downright
-incorrect, or if the language needs to be improved, please send a note
-to the same address.
-
-\1f
-File: gmp.info,  Node: Integer Functions,  Next: Rational Number Functions,  Prev: Reporting Bugs,  Up: Top
-
-5 Integer Functions
-*******************
-
-This chapter describes the GMP functions for performing integer
-arithmetic.  These functions start with the prefix `mpz_'.
-
-   GMP integers are stored in objects of type `mpz_t'.
-
-* Menu:
-
-* Initializing Integers::
-* Assigning Integers::
-* Simultaneous Integer Init & Assign::
-* Converting Integers::
-* Integer Arithmetic::
-* Integer Division::
-* Integer Exponentiation::
-* Integer Roots::
-* Number Theoretic Functions::
-* Integer Comparisons::
-* Integer Logic and Bit Fiddling::
-* I/O of Integers::
-* Integer Random Numbers::
-* Integer Import and Export::
-* Miscellaneous Integer Functions::
-* Integer Special Functions::
-
-\1f
-File: gmp.info,  Node: Initializing Integers,  Next: Assigning Integers,  Prev: Integer Functions,  Up: Integer Functions
-
-5.1 Initialization Functions
-============================
-
-The functions for integer arithmetic assume that all integer objects are
-initialized.  You do that by calling the function `mpz_init'.  For
-example,
-
-     {
-       mpz_t integ;
-       mpz_init (integ);
-       ...
-       mpz_add (integ, ...);
-       ...
-       mpz_sub (integ, ...);
-
-       /* Unless the program is about to exit, do ... */
-       mpz_clear (integ);
-     }
-
-   As you can see, you can store new values any number of times, once an
-object is initialized.
-
- -- Function: void mpz_init (mpz_t X)
-     Initialize X, and set its value to 0.
-
- -- Function: void mpz_inits (mpz_t X, ...)
-     Initialize a NULL-terminated list of `mpz_t' variables, and set
-     their values to 0.
-
- -- Function: void mpz_init2 (mpz_t X, mp_bitcnt_t N)
-     Initialize X, with space for N-bit numbers, and set its value to 0.
-     Calling this function instead of `mpz_init' or `mpz_inits' is never
-     necessary; reallocation is handled automatically by GMP when
-     needed.
-
-     N is only the initial space, X will grow automatically in the
-     normal way, if necessary, for subsequent values stored.
-     `mpz_init2' makes it possible to avoid such reallocations if a
-     maximum size is known in advance.
-
- -- Function: void mpz_clear (mpz_t X)
-     Free the space occupied by X.  Call this function for all `mpz_t'
-     variables when you are done with them.
-
- -- Function: void mpz_clears (mpz_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpz_t'
-     variables.
-
- -- Function: void mpz_realloc2 (mpz_t X, mp_bitcnt_t N)
-     Change the space allocated for X to N bits.  The value in X is
-     preserved if it fits, or is set to 0 if not.
-
-     Calling this function is never necessary; reallocation is handled
-     automatically by GMP when needed.  But this function can be used
-     to increase the space for a variable in order to avoid repeated
-     automatic reallocations, or to decrease it to give memory back to
-     the heap.
-
-\1f
-File: gmp.info,  Node: Assigning Integers,  Next: Simultaneous Integer Init & Assign,  Prev: Initializing Integers,  Up: Integer Functions
-
-5.2 Assignment Functions
-========================
-
-These functions assign new values to already initialized integers
-(*note Initializing Integers::).
-
- -- Function: void mpz_set (mpz_t ROP, mpz_t OP)
- -- Function: void mpz_set_ui (mpz_t ROP, unsigned long int OP)
- -- Function: void mpz_set_si (mpz_t ROP, signed long int OP)
- -- Function: void mpz_set_d (mpz_t ROP, double OP)
- -- Function: void mpz_set_q (mpz_t ROP, mpq_t OP)
- -- Function: void mpz_set_f (mpz_t ROP, mpf_t OP)
-     Set the value of ROP from OP.
-
-     `mpz_set_d', `mpz_set_q' and `mpz_set_f' truncate OP to make it an
-     integer.
-
- -- Function: int mpz_set_str (mpz_t ROP, char *STR, int BASE)
-     Set the value of ROP from STR, a null-terminated C string in base
-     BASE.  White space is allowed in the string, and is simply ignored.
-
-     The BASE may vary from 2 to 62, or if BASE is 0, then the leading
-     characters are used: `0x' and `0X' for hexadecimal, `0b' and `0B'
-     for binary, `0' for octal, or decimal otherwise.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value.  For bases 37 to 62, upper-case
-     letter represent the usual 10..35 while lower-case letter
-     represent 36..61.
-
-     This function returns 0 if the entire string is a valid number in
-     base BASE.  Otherwise it returns -1.
-
- -- Function: void mpz_swap (mpz_t ROP1, mpz_t ROP2)
-     Swap the values ROP1 and ROP2 efficiently.
-
-\1f
-File: gmp.info,  Node: Simultaneous Integer Init & Assign,  Next: Converting Integers,  Prev: Assigning Integers,  Up: Integer Functions
-
-5.3 Combined Initialization and Assignment Functions
-====================================================
-
-For convenience, GMP provides a parallel series of initialize-and-set
-functions which initialize the output and then store the value there.
-These functions' names have the form `mpz_init_set...'
-
-   Here is an example of using one:
-
-     {
-       mpz_t pie;
-       mpz_init_set_str (pie, "3141592653589793238462643383279502884", 10);
-       ...
-       mpz_sub (pie, ...);
-       ...
-       mpz_clear (pie);
-     }
-
-Once the integer has been initialized by any of the `mpz_init_set...'
-functions, it can be used as the source or destination operand for the
-ordinary integer functions.  Don't use an initialize-and-set function
-on a variable already initialized!
-
- -- Function: void mpz_init_set (mpz_t ROP, mpz_t OP)
- -- Function: void mpz_init_set_ui (mpz_t ROP, unsigned long int OP)
- -- Function: void mpz_init_set_si (mpz_t ROP, signed long int OP)
- -- Function: void mpz_init_set_d (mpz_t ROP, double OP)
-     Initialize ROP with limb space and set the initial numeric value
-     from OP.
-
- -- Function: int mpz_init_set_str (mpz_t ROP, char *STR, int BASE)
-     Initialize ROP and set its value like `mpz_set_str' (see its
-     documentation above for details).
-
-     If the string is a correct base BASE number, the function returns
-     0; if an error occurs it returns -1.  ROP is initialized even if
-     an error occurs.  (I.e., you have to call `mpz_clear' for it.)
-
-\1f
-File: gmp.info,  Node: Converting Integers,  Next: Integer Arithmetic,  Prev: Simultaneous Integer Init & Assign,  Up: Integer Functions
-
-5.4 Conversion Functions
-========================
-
-This section describes functions for converting GMP integers to
-standard C types.  Functions for converting _to_ GMP integers are
-described in *Note Assigning Integers:: and *Note I/O of Integers::.
-
- -- Function: unsigned long int mpz_get_ui (mpz_t OP)
-     Return the value of OP as an `unsigned long'.
-
-     If OP is too big to fit an `unsigned long' then just the least
-     significant bits that do fit are returned.  The sign of OP is
-     ignored, only the absolute value is used.
-
- -- Function: signed long int mpz_get_si (mpz_t OP)
-     If OP fits into a `signed long int' return the value of OP.
-     Otherwise return the least significant part of OP, with the same
-     sign as OP.
-
-     If OP is too big to fit in a `signed long int', the returned
-     result is probably not very useful.  To find out if the value will
-     fit, use the function `mpz_fits_slong_p'.
-
- -- Function: double mpz_get_d (mpz_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent from the conversion is too big, the result is
-     system dependent.  An infinity is returned where available.  A
-     hardware overflow trap may or may not occur.
-
- -- Function: double mpz_get_d_2exp (signed long int *EXP, mpz_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero), and returning the exponent separately.
-
-     The return value is in the range 0.5<=abs(D)<1 and the exponent is
-     stored to `*EXP'.  D * 2^EXP is the (truncated) OP value.  If OP
-     is zero, the return is 0.0 and 0 is stored to `*EXP'.
-
-     This is similar to the standard C `frexp' function (*note
-     Normalization Functions: (libc)Normalization Functions.).
-
- -- Function: char * mpz_get_str (char *STR, int BASE, mpz_t OP)
-     Convert OP to a string of digits in base BASE.  The base argument
-     may vary from 2 to 62 or from -2 to -36.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of storage large
-     enough for the result, that being `mpz_sizeinbase (OP, BASE) + 2'.
-     The two extra bytes are for a possible minus sign, and the
-     null-terminator.
-
-     A pointer to the result string is returned, being either the
-     allocated block, or the given STR.
-
-\1f
-File: gmp.info,  Node: Integer Arithmetic,  Next: Integer Division,  Prev: Converting Integers,  Up: Integer Functions
-
-5.5 Arithmetic Functions
-========================
-
- -- Function: void mpz_add (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_add_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 + OP2.
-
- -- Function: void mpz_sub (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_sub_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
- -- Function: void mpz_ui_sub (mpz_t ROP, unsigned long int OP1, mpz_t
-          OP2)
-     Set ROP to OP1 - OP2.
-
- -- Function: void mpz_mul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_mul_si (mpz_t ROP, mpz_t OP1, long int OP2)
- -- Function: void mpz_mul_ui (mpz_t ROP, mpz_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 times OP2.
-
- -- Function: void mpz_addmul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_addmul_ui (mpz_t ROP, mpz_t OP1, unsigned long
-          int OP2)
-     Set ROP to ROP + OP1 times OP2.
-
- -- Function: void mpz_submul (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_submul_ui (mpz_t ROP, mpz_t OP1, unsigned long
-          int OP2)
-     Set ROP to ROP - OP1 times OP2.
-
- -- Function: void mpz_mul_2exp (mpz_t ROP, mpz_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.  This operation can also be
-     defined as a left shift by OP2 bits.
-
- -- Function: void mpz_neg (mpz_t ROP, mpz_t OP)
-     Set ROP to -OP.
-
- -- Function: void mpz_abs (mpz_t ROP, mpz_t OP)
-     Set ROP to the absolute value of OP.
-
-\1f
-File: gmp.info,  Node: Integer Division,  Next: Integer Exponentiation,  Prev: Integer Arithmetic,  Up: Integer Functions
-
-5.6 Division Functions
-======================
-
-Division is undefined if the divisor is zero.  Passing a zero divisor
-to the division or modulo functions (including the modular powering
-functions `mpz_powm' and `mpz_powm_ui'), will cause an intentional
-division by zero.  This lets a program handle arithmetic exceptions in
-these functions the same way as for normal C `int' arithmetic.
-
- -- Function: void mpz_cdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_cdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_cdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_cdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_cdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_cdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_cdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
- -- Function: void mpz_fdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_fdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_fdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_fdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_fdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_fdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_fdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
- -- Function: void mpz_tdiv_q (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_tdiv_r (mpz_t R, mpz_t N, mpz_t D)
- -- Function: void mpz_tdiv_qr (mpz_t Q, mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_tdiv_q_ui (mpz_t Q, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_r_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_qr_ui (mpz_t Q, mpz_t R,
-          mpz_t N, unsigned long int D)
- -- Function: unsigned long int mpz_tdiv_ui (mpz_t N,
-          unsigned long int D)
- -- Function: void mpz_tdiv_q_2exp (mpz_t Q, mpz_t N, mp_bitcnt_t B)
- -- Function: void mpz_tdiv_r_2exp (mpz_t R, mpz_t N, mp_bitcnt_t B)
-
-     Divide N by D, forming a quotient Q and/or remainder R.  For the
-     `2exp' functions, D=2^B.  The rounding is in three styles, each
-     suiting different applications.
-
-        * `cdiv' rounds Q up towards +infinity, and R will have the
-          opposite sign to D.  The `c' stands for "ceil".
-
-        * `fdiv' rounds Q down towards -infinity, and R will have the
-          same sign as D.  The `f' stands for "floor".
-
-        * `tdiv' rounds Q towards zero, and R will have the same sign
-          as N.  The `t' stands for "truncate".
-
-     In all cases Q and R will satisfy N=Q*D+R, and R will satisfy
-     0<=abs(R)<abs(D).
-
-     The `q' functions calculate only the quotient, the `r' functions
-     only the remainder, and the `qr' functions calculate both.  Note
-     that for `qr' the same variable cannot be passed for both Q and R,
-     or results will be unpredictable.
-
-     For the `ui' variants the return value is the remainder, and in
-     fact returning the remainder is all the `div_ui' functions do.  For
-     `tdiv' and `cdiv' the remainder can be negative, so for those the
-     return value is the absolute value of the remainder.
-
-     For the `2exp' variants the divisor is 2^B.  These functions are
-     implemented as right shifts and bit masks, but of course they
-     round the same as the other functions.
-
-     For positive N both `mpz_fdiv_q_2exp' and `mpz_tdiv_q_2exp' are
-     simple bitwise right shifts.  For negative N, `mpz_fdiv_q_2exp' is
-     effectively an arithmetic right shift treating N as twos complement
-     the same as the bitwise logical functions do, whereas
-     `mpz_tdiv_q_2exp' effectively treats N as sign and magnitude.
-
- -- Function: void mpz_mod (mpz_t R, mpz_t N, mpz_t D)
- -- Function: unsigned long int mpz_mod_ui (mpz_t R, mpz_t N,
-          unsigned long int D)
-     Set R to N `mod' D.  The sign of the divisor is ignored; the
-     result is always non-negative.
-
-     `mpz_mod_ui' is identical to `mpz_fdiv_r_ui' above, returning the
-     remainder as well as setting R.  See `mpz_fdiv_ui' above if only
-     the return value is wanted.
-
- -- Function: void mpz_divexact (mpz_t Q, mpz_t N, mpz_t D)
- -- Function: void mpz_divexact_ui (mpz_t Q, mpz_t N, unsigned long D)
-     Set Q to N/D.  These functions produce correct results only when
-     it is known in advance that D divides N.
-
-     These routines are much faster than the other division functions,
-     and are the best choice when exact division is known to occur, for
-     example reducing a rational to lowest terms.
-
- -- Function: int mpz_divisible_p (mpz_t N, mpz_t D)
- -- Function: int mpz_divisible_ui_p (mpz_t N, unsigned long int D)
- -- Function: int mpz_divisible_2exp_p (mpz_t N, mp_bitcnt_t B)
-     Return non-zero if N is exactly divisible by D, or in the case of
-     `mpz_divisible_2exp_p' by 2^B.
-
-     N is divisible by D if there exists an integer Q satisfying N =
-     Q*D.  Unlike the other division functions, D=0 is accepted and
-     following the rule it can be seen that only 0 is considered
-     divisible by 0.
-
- -- Function: int mpz_congruent_p (mpz_t N, mpz_t C, mpz_t D)
- -- Function: int mpz_congruent_ui_p (mpz_t N, unsigned long int C,
-          unsigned long int D)
- -- Function: int mpz_congruent_2exp_p (mpz_t N, mpz_t C, mp_bitcnt_t B)
-     Return non-zero if N is congruent to C modulo D, or in the case of
-     `mpz_congruent_2exp_p' modulo 2^B.
-
-     N is congruent to C mod D if there exists an integer Q satisfying
-     N = C + Q*D.  Unlike the other division functions, D=0 is accepted
-     and following the rule it can be seen that N and C are considered
-     congruent mod 0 only when exactly equal.
-
-\1f
-File: gmp.info,  Node: Integer Exponentiation,  Next: Integer Roots,  Prev: Integer Division,  Up: Integer Functions
-
-5.7 Exponentiation Functions
-============================
-
- -- Function: void mpz_powm (mpz_t ROP, mpz_t BASE, mpz_t EXP, mpz_t
-          MOD)
- -- Function: void mpz_powm_ui (mpz_t ROP, mpz_t BASE, unsigned long
-          int EXP, mpz_t MOD)
-     Set ROP to (BASE raised to EXP) modulo MOD.
-
-     Negative EXP is supported if an inverse BASE^-1 mod MOD exists
-     (see `mpz_invert' in *Note Number Theoretic Functions::).  If an
-     inverse doesn't exist then a divide by zero is raised.
-
- -- Function: void mpz_powm_sec (mpz_t ROP, mpz_t BASE, mpz_t EXP,
-          mpz_t MOD)
-     Set ROP to (BASE raised to EXP) modulo MOD.
-
-     It is required that EXP > 0 and that MOD is odd.
-
-     This function is designed to take the same time and have the same
-     cache access patterns for any two same-size arguments, assuming
-     that function arguments are placed at the same position and that
-     the machine state is identical upon function entry.  This function
-     is intended for cryptographic purposes, where resilience to
-     side-channel attacks is desired.
-
- -- Function: void mpz_pow_ui (mpz_t ROP, mpz_t BASE, unsigned long int
-          EXP)
- -- Function: void mpz_ui_pow_ui (mpz_t ROP, unsigned long int BASE,
-          unsigned long int EXP)
-     Set ROP to BASE raised to EXP.  The case 0^0 yields 1.
-
-\1f
-File: gmp.info,  Node: Integer Roots,  Next: Number Theoretic Functions,  Prev: Integer Exponentiation,  Up: Integer Functions
-
-5.8 Root Extraction Functions
-=============================
-
- -- Function: int mpz_root (mpz_t ROP, mpz_t OP, unsigned long int N)
-     Set ROP to  the truncated integer part of the Nth root of OP.
-     Return non-zero if the computation was exact, i.e., if OP is ROP
-     to the Nth power.
-
- -- Function: void mpz_rootrem (mpz_t ROOT, mpz_t REM, mpz_t U,
-          unsigned long int N)
-     Set ROOT to  the truncated integer part of the Nth root of U.  Set
-     REM to the remainder, U-ROOT**N.
-
- -- Function: void mpz_sqrt (mpz_t ROP, mpz_t OP)
-     Set ROP to  the truncated integer part of the square root of OP.
-
- -- Function: void mpz_sqrtrem (mpz_t ROP1, mpz_t ROP2, mpz_t OP)
-     Set ROP1 to the truncated integer part of the square root of OP,
-     like `mpz_sqrt'.  Set ROP2 to the remainder OP-ROP1*ROP1, which
-     will be zero if OP is a perfect square.
-
-     If ROP1 and ROP2 are the same variable, the results are undefined.
-
- -- Function: int mpz_perfect_power_p (mpz_t OP)
-     Return non-zero if OP is a perfect power, i.e., if there exist
-     integers A and B, with B>1, such that OP equals A raised to the
-     power B.
-
-     Under this definition both 0 and 1 are considered to be perfect
-     powers.  Negative values of OP are accepted, but of course can
-     only be odd perfect powers.
-
- -- Function: int mpz_perfect_square_p (mpz_t OP)
-     Return non-zero if OP is a perfect square, i.e., if the square
-     root of OP is an integer.  Under this definition both 0 and 1 are
-     considered to be perfect squares.
-
-\1f
-File: gmp.info,  Node: Number Theoretic Functions,  Next: Integer Comparisons,  Prev: Integer Roots,  Up: Integer Functions
-
-5.9 Number Theoretic Functions
-==============================
-
- -- Function: int mpz_probab_prime_p (mpz_t N, int REPS)
-     Determine whether N is prime.  Return 2 if N is definitely prime,
-     return 1 if N is probably prime (without being certain), or return
-     0 if N is definitely composite.
-
-     This function does some trial divisions, then some Miller-Rabin
-     probabilistic primality tests.  REPS controls how many such tests
-     are done, 5 to 10 is a reasonable number, more will reduce the
-     chances of a composite being returned as "probably prime".
-
-     Miller-Rabin and similar tests can be more properly called
-     compositeness tests.  Numbers which fail are known to be composite
-     but those which pass might be prime or might be composite.  Only a
-     few composites pass, hence those which pass are considered
-     probably prime.
-
- -- Function: void mpz_nextprime (mpz_t ROP, mpz_t OP)
-     Set ROP to the next prime greater than OP.
-
-     This function uses a probabilistic algorithm to identify primes.
-     For practical purposes it's adequate, the chance of a composite
-     passing will be extremely small.
-
- -- Function: void mpz_gcd (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to the greatest common divisor of OP1 and OP2.  The result
-     is always positive even if one or both input operands are negative.
-
- -- Function: unsigned long int mpz_gcd_ui (mpz_t ROP, mpz_t OP1,
-          unsigned long int OP2)
-     Compute the greatest common divisor of OP1 and OP2.  If ROP is not
-     `NULL', store the result there.
-
-     If the result is small enough to fit in an `unsigned long int', it
-     is returned.  If the result does not fit, 0 is returned, and the
-     result is equal to the argument OP1.  Note that the result will
-     always fit if OP2 is non-zero.
-
- -- Function: void mpz_gcdext (mpz_t G, mpz_t S, mpz_t T, mpz_t A,
-          mpz_t B)
-     Set G to the greatest common divisor of A and B, and in addition
-     set S and T to coefficients satisfying A*S + B*T = G.  The value
-     in G is always positive, even if one or both of A and B are
-     negative.  The values in S and T are chosen such that abs(S) <=
-     abs(B) and abs(T) <= abs(A).
-
-     If T is `NULL' then that value is not computed.
-
- -- Function: void mpz_lcm (mpz_t ROP, mpz_t OP1, mpz_t OP2)
- -- Function: void mpz_lcm_ui (mpz_t ROP, mpz_t OP1, unsigned long OP2)
-     Set ROP to the least common multiple of OP1 and OP2.  ROP is
-     always positive, irrespective of the signs of OP1 and OP2.  ROP
-     will be zero if either OP1 or OP2 is zero.
-
- -- Function: int mpz_invert (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Compute the inverse of OP1 modulo OP2 and put the result in ROP.
-     If the inverse exists, the return value is non-zero and ROP will
-     satisfy 0 <= ROP < OP2.  If an inverse doesn't exist the return
-     value is zero and ROP is undefined.
-
- -- Function: int mpz_jacobi (mpz_t A, mpz_t B)
-     Calculate the Jacobi symbol (A/B).  This is defined only for B odd.
-
- -- Function: int mpz_legendre (mpz_t A, mpz_t P)
-     Calculate the Legendre symbol (A/P).  This is defined only for P
-     an odd positive prime, and for such P it's identical to the Jacobi
-     symbol.
-
- -- Function: int mpz_kronecker (mpz_t A, mpz_t B)
- -- Function: int mpz_kronecker_si (mpz_t A, long B)
- -- Function: int mpz_kronecker_ui (mpz_t A, unsigned long B)
- -- Function: int mpz_si_kronecker (long A, mpz_t B)
- -- Function: int mpz_ui_kronecker (unsigned long A, mpz_t B)
-     Calculate the Jacobi symbol (A/B) with the Kronecker extension
-     (a/2)=(2/a) when a odd, or (a/2)=0 when a even.
-
-     When B is odd the Jacobi symbol and Kronecker symbol are
-     identical, so `mpz_kronecker_ui' etc can be used for mixed
-     precision Jacobi symbols too.
-
-     For more information see Henri Cohen section 1.4.2 (*note
-     References::), or any number theory textbook.  See also the
-     example program `demos/qcn.c' which uses `mpz_kronecker_ui'.
-
- -- Function: mp_bitcnt_t mpz_remove (mpz_t ROP, mpz_t OP, mpz_t F)
-     Remove all occurrences of the factor F from OP and store the
-     result in ROP.  The return value is how many such occurrences were
-     removed.
-
- -- Function: void mpz_fac_ui (mpz_t ROP, unsigned long int OP)
-     Set ROP to OP!, the factorial of OP.
-
- -- Function: void mpz_bin_ui (mpz_t ROP, mpz_t N, unsigned long int K)
- -- Function: void mpz_bin_uiui (mpz_t ROP, unsigned long int N,
-          unsigned long int K)
-     Compute the binomial coefficient N over K and store the result in
-     ROP.  Negative values of N are supported by `mpz_bin_ui', using
-     the identity bin(-n,k) = (-1)^k * bin(n+k-1,k), see Knuth volume 1
-     section 1.2.6 part G.
-
- -- Function: void mpz_fib_ui (mpz_t FN, unsigned long int N)
- -- Function: void mpz_fib2_ui (mpz_t FN, mpz_t FNSUB1, unsigned long
-          int N)
-     `mpz_fib_ui' sets FN to to F[n], the N'th Fibonacci number.
-     `mpz_fib2_ui' sets FN to F[n], and FNSUB1 to F[n-1].
-
-     These functions are designed for calculating isolated Fibonacci
-     numbers.  When a sequence of values is wanted it's best to start
-     with `mpz_fib2_ui' and iterate the defining F[n+1]=F[n]+F[n-1] or
-     similar.
-
- -- Function: void mpz_lucnum_ui (mpz_t LN, unsigned long int N)
- -- Function: void mpz_lucnum2_ui (mpz_t LN, mpz_t LNSUB1, unsigned
-          long int N)
-     `mpz_lucnum_ui' sets LN to to L[n], the N'th Lucas number.
-     `mpz_lucnum2_ui' sets LN to L[n], and LNSUB1 to L[n-1].
-
-     These functions are designed for calculating isolated Lucas
-     numbers.  When a sequence of values is wanted it's best to start
-     with `mpz_lucnum2_ui' and iterate the defining L[n+1]=L[n]+L[n-1]
-     or similar.
-
-     The Fibonacci numbers and Lucas numbers are related sequences, so
-     it's never necessary to call both `mpz_fib2_ui' and
-     `mpz_lucnum2_ui'.  The formulas for going from Fibonacci to Lucas
-     can be found in *Note Lucas Numbers Algorithm::, the reverse is
-     straightforward too.
-
-\1f
-File: gmp.info,  Node: Integer Comparisons,  Next: Integer Logic and Bit Fiddling,  Prev: Number Theoretic Functions,  Up: Integer Functions
-
-5.10 Comparison Functions
-=========================
-
- -- Function: int mpz_cmp (mpz_t OP1, mpz_t OP2)
- -- Function: int mpz_cmp_d (mpz_t OP1, double OP2)
- -- Macro: int mpz_cmp_si (mpz_t OP1, signed long int OP2)
- -- Macro: int mpz_cmp_ui (mpz_t OP1, unsigned long int OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, or a negative value if OP1 < OP2.
-
-     `mpz_cmp_ui' and `mpz_cmp_si' are macros and will evaluate their
-     arguments more than once.  `mpz_cmp_d' can be called with an
-     infinity, but results are undefined for a NaN.
-
- -- Function: int mpz_cmpabs (mpz_t OP1, mpz_t OP2)
- -- Function: int mpz_cmpabs_d (mpz_t OP1, double OP2)
- -- Function: int mpz_cmpabs_ui (mpz_t OP1, unsigned long int OP2)
-     Compare the absolute values of OP1 and OP2.  Return a positive
-     value if abs(OP1) > abs(OP2), zero if abs(OP1) = abs(OP2), or a
-     negative value if abs(OP1) < abs(OP2).
-
-     `mpz_cmpabs_d' can be called with an infinity, but results are
-     undefined for a NaN.
-
- -- Macro: int mpz_sgn (mpz_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates
-     its argument multiple times.
-
-\1f
-File: gmp.info,  Node: Integer Logic and Bit Fiddling,  Next: I/O of Integers,  Prev: Integer Comparisons,  Up: Integer Functions
-
-5.11 Logical and Bit Manipulation Functions
-===========================================
-
-These functions behave as if twos complement arithmetic were used
-(although sign-magnitude is the actual implementation).  The least
-significant bit is number 0.
-
- -- Function: void mpz_and (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise-and OP2.
-
- -- Function: void mpz_ior (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise inclusive-or OP2.
-
- -- Function: void mpz_xor (mpz_t ROP, mpz_t OP1, mpz_t OP2)
-     Set ROP to OP1 bitwise exclusive-or OP2.
-
- -- Function: void mpz_com (mpz_t ROP, mpz_t OP)
-     Set ROP to the one's complement of OP.
-
- -- Function: mp_bitcnt_t mpz_popcount (mpz_t OP)
-     If OP>=0, return the population count of OP, which is the number
-     of 1 bits in the binary representation.  If OP<0, the number of 1s
-     is infinite, and the return value is the largest possible
-     `mp_bitcnt_t'.
-
- -- Function: mp_bitcnt_t mpz_hamdist (mpz_t OP1, mpz_t OP2)
-     If OP1 and OP2 are both >=0 or both <0, return the hamming
-     distance between the two operands, which is the number of bit
-     positions where OP1 and OP2 have different bit values.  If one
-     operand is >=0 and the other <0 then the number of bits different
-     is infinite, and the return value is the largest possible
-     `mp_bitcnt_t'.
-
- -- Function: mp_bitcnt_t mpz_scan0 (mpz_t OP, mp_bitcnt_t STARTING_BIT)
- -- Function: mp_bitcnt_t mpz_scan1 (mpz_t OP, mp_bitcnt_t STARTING_BIT)
-     Scan OP, starting from bit STARTING_BIT, towards more significant
-     bits, until the first 0 or 1 bit (respectively) is found.  Return
-     the index of the found bit.
-
-     If the bit at STARTING_BIT is already what's sought, then
-     STARTING_BIT is returned.
-
-     If there's no bit found, then the largest possible `mp_bitcnt_t' is
-     returned.  This will happen in `mpz_scan0' past the end of a
-     negative number, or `mpz_scan1' past the end of a nonnegative
-     number.
-
- -- Function: void mpz_setbit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Set bit BIT_INDEX in ROP.
-
- -- Function: void mpz_clrbit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Clear bit BIT_INDEX in ROP.
-
- -- Function: void mpz_combit (mpz_t ROP, mp_bitcnt_t BIT_INDEX)
-     Complement bit BIT_INDEX in ROP.
-
- -- Function: int mpz_tstbit (mpz_t OP, mp_bitcnt_t BIT_INDEX)
-     Test bit BIT_INDEX in OP and return 0 or 1 accordingly.
-
-\1f
-File: gmp.info,  Node: I/O of Integers,  Next: Integer Random Numbers,  Prev: Integer Logic and Bit Fiddling,  Up: Integer Functions
-
-5.12 Input and Output Functions
-===============================
-
-Functions that perform input from a stdio stream, and functions that
-output to a stdio stream.  Passing a `NULL' pointer for a STREAM
-argument to any of these functions will make them read from `stdin' and
-write to `stdout', respectively.
-
-   When using any of these functions, it is a good idea to include
-`stdio.h' before `gmp.h', since that will allow `gmp.h' to define
-prototypes for these functions.
-
- -- Function: size_t mpz_out_str (FILE *STREAM, int BASE, mpz_t OP)
-     Output OP on stdio stream STREAM, as a string of digits in base
-     BASE.  The base argument may vary from 2 to 62 or from -2 to -36.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
- -- Function: size_t mpz_inp_str (mpz_t ROP, FILE *STREAM, int BASE)
-     Input a possibly white-space preceded string in base BASE from
-     stdio stream STREAM, and put the read integer in ROP.
-
-     The BASE may vary from 2 to 62, or if BASE is 0, then the leading
-     characters are used: `0x' and `0X' for hexadecimal, `0b' and `0B'
-     for binary, `0' for octal, or decimal otherwise.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value.  For bases 37 to 62, upper-case
-     letter represent the usual 10..35 while lower-case letter
-     represent 36..61.
-
-     Return the number of bytes read, or if an error occurred, return 0.
-
- -- Function: size_t mpz_out_raw (FILE *STREAM, mpz_t OP)
-     Output OP on stdio stream STREAM, in raw binary format.  The
-     integer is written in a portable format, with 4 bytes of size
-     information, and that many bytes of limbs.  Both the size and the
-     limbs are written in decreasing significance order (i.e., in
-     big-endian).
-
-     The output can be read with `mpz_inp_raw'.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
-     The output of this can not be read by `mpz_inp_raw' from GMP 1,
-     because of changes necessary for compatibility between 32-bit and
-     64-bit machines.
-
- -- Function: size_t mpz_inp_raw (mpz_t ROP, FILE *STREAM)
-     Input from stdio stream STREAM in the format written by
-     `mpz_out_raw', and put the result in ROP.  Return the number of
-     bytes read, or if an error occurred, return 0.
-
-     This routine can read the output from `mpz_out_raw' also from GMP
-     1, in spite of changes necessary for compatibility between 32-bit
-     and 64-bit machines.
-
-\1f
-File: gmp.info,  Node: Integer Random Numbers,  Next: Integer Import and Export,  Prev: I/O of Integers,  Up: Integer Functions
-
-5.13 Random Number Functions
-============================
-
-The random number functions of GMP come in two groups; older function
-that rely on a global state, and newer functions that accept a state
-parameter that is read and modified.  Please see the *Note Random
-Number Functions:: for more information on how to use and not to use
-random number functions.
-
- -- Function: void mpz_urandomb (mpz_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t N)
-     Generate a uniformly distributed random integer in the range 0 to
-     2^N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_urandomm (mpz_t ROP, gmp_randstate_t STATE,
-          mpz_t N)
-     Generate a uniform random integer in the range 0 to N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_rrandomb (mpz_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t N)
-     Generate a random integer with long strings of zeros and ones in
-     the binary representation.  Useful for testing functions and
-     algorithms, since this kind of random numbers have proven to be
-     more likely to trigger corner-case bugs.  The random number will
-     be in the range 0 to 2^N-1, inclusive.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpz_random (mpz_t ROP, mp_size_t MAX_SIZE)
-     Generate a random integer of at most MAX_SIZE limbs.  The generated
-     random number doesn't satisfy any particular requirements of
-     randomness.  Negative random numbers are generated when MAX_SIZE
-     is negative.
-
-     This function is obsolete.  Use `mpz_urandomb' or `mpz_urandomm'
-     instead.
-
- -- Function: void mpz_random2 (mpz_t ROP, mp_size_t MAX_SIZE)
-     Generate a random integer of at most MAX_SIZE limbs, with long
-     strings of zeros and ones in the binary representation.  Useful
-     for testing functions and algorithms, since this kind of random
-     numbers have proven to be more likely to trigger corner-case bugs.
-     Negative random numbers are generated when MAX_SIZE is negative.
-
-     This function is obsolete.  Use `mpz_rrandomb' instead.
-
-\1f
-File: gmp.info,  Node: Integer Import and Export,  Next: Miscellaneous Integer Functions,  Prev: Integer Random Numbers,  Up: Integer Functions
-
-5.14 Integer Import and Export
-==============================
-
-`mpz_t' variables can be converted to and from arbitrary words of binary
-data with the following functions.
-
- -- Function: void mpz_import (mpz_t ROP, size_t COUNT, int ORDER,
-          size_t SIZE, int ENDIAN, size_t NAILS, const void *OP)
-     Set ROP from an array of word data at OP.
-
-     The parameters specify the format of the data.  COUNT many words
-     are read, each SIZE bytes.  ORDER can be 1 for most significant
-     word first or -1 for least significant first.  Within each word
-     ENDIAN can be 1 for most significant byte first, -1 for least
-     significant first, or 0 for the native endianness of the host CPU.
-     The most significant NAILS bits of each word are skipped, this
-     can be 0 to use the full words.
-
-     There is no sign taken from the data, ROP will simply be a positive
-     integer.  An application can handle any sign itself, and apply it
-     for instance with `mpz_neg'.
-
-     There are no data alignment restrictions on OP, any address is
-     allowed.
-
-     Here's an example converting an array of `unsigned long' data, most
-     significant element first, and host byte order within each value.
-
-          unsigned long  a[20];
-          /* Initialize Z and A */
-          mpz_import (z, 20, 1, sizeof(a[0]), 0, 0, a);
-
-     This example assumes the full `sizeof' bytes are used for data in
-     the given type, which is usually true, and certainly true for
-     `unsigned long' everywhere we know of.  However on Cray vector
-     systems it may be noted that `short' and `int' are always stored
-     in 8 bytes (and with `sizeof' indicating that) but use only 32 or
-     46 bits.  The NAILS feature can account for this, by passing for
-     instance `8*sizeof(int)-INT_BIT'.
-
- -- Function: void * mpz_export (void *ROP, size_t *COUNTP, int ORDER,
-          size_t SIZE, int ENDIAN, size_t NAILS, mpz_t OP)
-     Fill ROP with word data from OP.
-
-     The parameters specify the format of the data produced.  Each word
-     will be SIZE bytes and ORDER can be 1 for most significant word
-     first or -1 for least significant first.  Within each word ENDIAN
-     can be 1 for most significant byte first, -1 for least significant
-     first, or 0 for the native endianness of the host CPU.  The most
-     significant NAILS bits of each word are unused and set to zero,
-     this can be 0 to produce full words.
-
-     The number of words produced is written to `*COUNTP', or COUNTP
-     can be `NULL' to discard the count.  ROP must have enough space
-     for the data, or if ROP is `NULL' then a result array of the
-     necessary size is allocated using the current GMP allocation
-     function (*note Custom Allocation::).  In either case the return
-     value is the destination used, either ROP or the allocated block.
-
-     If OP is non-zero then the most significant word produced will be
-     non-zero.  If OP is zero then the count returned will be zero and
-     nothing written to ROP.  If ROP is `NULL' in this case, no block
-     is allocated, just `NULL' is returned.
-
-     The sign of OP is ignored, just the absolute value is exported.  An
-     application can use `mpz_sgn' to get the sign and handle it as
-     desired.  (*note Integer Comparisons::)
-
-     There are no data alignment restrictions on ROP, any address is
-     allowed.
-
-     When an application is allocating space itself the required size
-     can be determined with a calculation like the following.  Since
-     `mpz_sizeinbase' always returns at least 1, `count' here will be
-     at least one, which avoids any portability problems with
-     `malloc(0)', though if `z' is zero no space at all is actually
-     needed (or written).
-
-          numb = 8*size - nail;
-          count = (mpz_sizeinbase (z, 2) + numb-1) / numb;
-          p = malloc (count * size);
-
-\1f
-File: gmp.info,  Node: Miscellaneous Integer Functions,  Next: Integer Special Functions,  Prev: Integer Import and Export,  Up: Integer Functions
-
-5.15 Miscellaneous Functions
-============================
-
- -- Function: int mpz_fits_ulong_p (mpz_t OP)
- -- Function: int mpz_fits_slong_p (mpz_t OP)
- -- Function: int mpz_fits_uint_p (mpz_t OP)
- -- Function: int mpz_fits_sint_p (mpz_t OP)
- -- Function: int mpz_fits_ushort_p (mpz_t OP)
- -- Function: int mpz_fits_sshort_p (mpz_t OP)
-     Return non-zero iff the value of OP fits in an `unsigned long int',
-     `signed long int', `unsigned int', `signed int', `unsigned short
-     int', or `signed short int', respectively.  Otherwise, return zero.
-
- -- Macro: int mpz_odd_p (mpz_t OP)
- -- Macro: int mpz_even_p (mpz_t OP)
-     Determine whether OP is odd or even, respectively.  Return
-     non-zero if yes, zero if no.  These macros evaluate their argument
-     more than once.
-
- -- Function: size_t mpz_sizeinbase (mpz_t OP, int BASE)
-     Return the size of OP measured in number of digits in the given
-     BASE.  BASE can vary from 2 to 62.  The sign of OP is ignored,
-     just the absolute value is used.  The result will be either exact
-     or 1 too big.  If BASE is a power of 2, the result is always
-     exact.  If OP is zero the return value is always 1.
-
-     This function can be used to determine the space required when
-     converting OP to a string.  The right amount of allocation is
-     normally two more than the value returned by `mpz_sizeinbase', one
-     extra for a minus sign and one for the null-terminator.
-
-     It will be noted that `mpz_sizeinbase(OP,2)' can be used to locate
-     the most significant 1 bit in OP, counting from 1.  (Unlike the
-     bitwise functions which start from 0, *Note Logical and Bit
-     Manipulation Functions: Integer Logic and Bit Fiddling.)
-
-\1f
-File: gmp.info,  Node: Integer Special Functions,  Prev: Miscellaneous Integer Functions,  Up: Integer Functions
-
-5.16 Special Functions
-======================
-
-The functions in this section are for various special purposes.  Most
-applications will not need them.
-
- -- Function: void mpz_array_init (mpz_t INTEGER_ARRAY, mp_size_t
-          ARRAY_SIZE, mp_size_t FIXED_NUM_BITS)
-     This is a special type of initialization.  *Fixed* space of
-     FIXED_NUM_BITS is allocated to each of the ARRAY_SIZE integers in
-     INTEGER_ARRAY.  There is no way to free the storage allocated by
-     this function.  Don't call `mpz_clear'!
-
-     The INTEGER_ARRAY parameter is the first `mpz_t' in the array.  For
-     example,
-
-          mpz_t  arr[20000];
-          mpz_array_init (arr[0], 20000, 512);
-
-     This function is only intended for programs that create a large
-     number of integers and need to reduce memory usage by avoiding the
-     overheads of allocating and reallocating lots of small blocks.  In
-     normal programs this function is not recommended.
-
-     The space allocated to each integer by this function will not be
-     automatically increased, unlike the normal `mpz_init', so an
-     application must ensure it is sufficient for any value stored.
-     The following space requirements apply to various routines,
-
-        * `mpz_abs', `mpz_neg', `mpz_set', `mpz_set_si' and
-          `mpz_set_ui' need room for the value they store.
-
-        * `mpz_add', `mpz_add_ui', `mpz_sub' and `mpz_sub_ui' need room
-          for the larger of the two operands, plus an extra
-          `mp_bits_per_limb'.
-
-        * `mpz_mul', `mpz_mul_ui' and `mpz_mul_ui' need room for the sum
-          of the number of bits in their operands, but each rounded up
-          to a multiple of `mp_bits_per_limb'.
-
-        * `mpz_swap' can be used between two array variables, but not
-          between an array and a normal variable.
-
-     For other functions, or if in doubt, the suggestion is to
-     calculate in a regular `mpz_init' variable and copy the result to
-     an array variable with `mpz_set'.
-
- -- Function: void * _mpz_realloc (mpz_t INTEGER, mp_size_t NEW_ALLOC)
-     Change the space for INTEGER to NEW_ALLOC limbs.  The value in
-     INTEGER is preserved if it fits, or is set to 0 if not.  The return
-     value is not useful to applications and should be ignored.
-
-     `mpz_realloc2' is the preferred way to accomplish allocation
-     changes like this.  `mpz_realloc2' and `_mpz_realloc' are the same
-     except that `_mpz_realloc' takes its size in limbs.
-
- -- Function: mp_limb_t mpz_getlimbn (mpz_t OP, mp_size_t N)
-     Return limb number N from OP.  The sign of OP is ignored, just the
-     absolute value is used.  The least significant limb is number 0.
-
-     `mpz_size' can be used to find how many limbs make up OP.
-     `mpz_getlimbn' returns zero if N is outside the range 0 to
-     `mpz_size(OP)-1'.
-
- -- Function: size_t mpz_size (mpz_t OP)
-     Return the size of OP measured in number of limbs.  If OP is zero,
-     the returned value will be zero.
-
-\1f
-File: gmp.info,  Node: Rational Number Functions,  Next: Floating-point Functions,  Prev: Integer Functions,  Up: Top
-
-6 Rational Number Functions
-***************************
-
-This chapter describes the GMP functions for performing arithmetic on
-rational numbers.  These functions start with the prefix `mpq_'.
-
-   Rational numbers are stored in objects of type `mpq_t'.
-
-   All rational arithmetic functions assume operands have a canonical
-form, and canonicalize their result.  The canonical from means that the
-denominator and the numerator have no common factors, and that the
-denominator is positive.  Zero has the unique representation 0/1.
-
-   Pure assignment functions do not canonicalize the assigned variable.
-It is the responsibility of the user to canonicalize the assigned
-variable before any arithmetic operations are performed on that
-variable.
-
- -- Function: void mpq_canonicalize (mpq_t OP)
-     Remove any factors that are common to the numerator and
-     denominator of OP, and make the denominator positive.
-
-* Menu:
-
-* Initializing Rationals::
-* Rational Conversions::
-* Rational Arithmetic::
-* Comparing Rationals::
-* Applying Integer Functions::
-* I/O of Rationals::
-
-\1f
-File: gmp.info,  Node: Initializing Rationals,  Next: Rational Conversions,  Prev: Rational Number Functions,  Up: Rational Number Functions
-
-6.1 Initialization and Assignment Functions
-===========================================
-
- -- Function: void mpq_init (mpq_t X)
-     Initialize X and set it to 0/1.  Each variable should normally
-     only be initialized once, or at least cleared out (using the
-     function `mpq_clear') between each initialization.
-
- -- Function: void mpq_inits (mpq_t X, ...)
-     Initialize a NULL-terminated list of `mpq_t' variables, and set
-     their values to 0/1.
-
- -- Function: void mpq_clear (mpq_t X)
-     Free the space occupied by X.  Make sure to call this function for
-     all `mpq_t' variables when you are done with them.
-
- -- Function: void mpq_clears (mpq_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpq_t'
-     variables.
-
- -- Function: void mpq_set (mpq_t ROP, mpq_t OP)
- -- Function: void mpq_set_z (mpq_t ROP, mpz_t OP)
-     Assign ROP from OP.
-
- -- Function: void mpq_set_ui (mpq_t ROP, unsigned long int OP1,
-          unsigned long int OP2)
- -- Function: void mpq_set_si (mpq_t ROP, signed long int OP1, unsigned
-          long int OP2)
-     Set the value of ROP to OP1/OP2.  Note that if OP1 and OP2 have
-     common factors, ROP has to be passed to `mpq_canonicalize' before
-     any operations are performed on ROP.
-
- -- Function: int mpq_set_str (mpq_t ROP, char *STR, int BASE)
-     Set ROP from a null-terminated string STR in the given BASE.
-
-     The string can be an integer like "41" or a fraction like
-     "41/152".  The fraction must be in canonical form (*note Rational
-     Number Functions::), or if not then `mpq_canonicalize' must be
-     called.
-
-     The numerator and optional denominator are parsed the same as in
-     `mpz_set_str' (*note Assigning Integers::).  White space is
-     allowed in the string, and is simply ignored.  The BASE can vary
-     from 2 to 62, or if BASE is 0 then the leading characters are
-     used: `0x' or `0X' for hex, `0b' or `0B' for binary, `0' for
-     octal, or decimal otherwise.  Note that this is done separately
-     for the numerator and denominator, so for instance `0xEF/100' is
-     239/100, whereas `0xEF/0x100' is 239/256.
-
-     The return value is 0 if the entire string is a valid number, or
-     -1 if not.
-
- -- Function: void mpq_swap (mpq_t ROP1, mpq_t ROP2)
-     Swap the values ROP1 and ROP2 efficiently.
-
-\1f
-File: gmp.info,  Node: Rational Conversions,  Next: Rational Arithmetic,  Prev: Initializing Rationals,  Up: Rational Number Functions
-
-6.2 Conversion Functions
-========================
-
- -- Function: double mpq_get_d (mpq_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent from the conversion is too big or too small to fit
-     a `double' then the result is system dependent.  For too big an
-     infinity is returned when available.  For too small 0.0 is
-     normally returned.  Hardware overflow, underflow and denorm traps
-     may or may not occur.
-
- -- Function: void mpq_set_d (mpq_t ROP, double OP)
- -- Function: void mpq_set_f (mpq_t ROP, mpf_t OP)
-     Set ROP to the value of OP.  There is no rounding, this conversion
-     is exact.
-
- -- Function: char * mpq_get_str (char *STR, int BASE, mpq_t OP)
-     Convert OP to a string of digits in base BASE.  The base may vary
-     from 2 to 36.  The string will be of the form `num/den', or if the
-     denominator is 1 then just `num'.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of storage large
-     enough for the result, that being
-
-          mpz_sizeinbase (mpq_numref(OP), BASE)
-          + mpz_sizeinbase (mpq_denref(OP), BASE) + 3
-
-     The three extra bytes are for a possible minus sign, possible
-     slash, and the null-terminator.
-
-     A pointer to the result string is returned, being either the
-     allocated block, or the given STR.
-
-\1f
-File: gmp.info,  Node: Rational Arithmetic,  Next: Comparing Rationals,  Prev: Rational Conversions,  Up: Rational Number Functions
-
-6.3 Arithmetic Functions
-========================
-
- -- Function: void mpq_add (mpq_t SUM, mpq_t ADDEND1, mpq_t ADDEND2)
-     Set SUM to ADDEND1 + ADDEND2.
-
- -- Function: void mpq_sub (mpq_t DIFFERENCE, mpq_t MINUEND, mpq_t
-          SUBTRAHEND)
-     Set DIFFERENCE to MINUEND - SUBTRAHEND.
-
- -- Function: void mpq_mul (mpq_t PRODUCT, mpq_t MULTIPLIER, mpq_t
-          MULTIPLICAND)
-     Set PRODUCT to MULTIPLIER times MULTIPLICAND.
-
- -- Function: void mpq_mul_2exp (mpq_t ROP, mpq_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.
-
- -- Function: void mpq_div (mpq_t QUOTIENT, mpq_t DIVIDEND, mpq_t
-          DIVISOR)
-     Set QUOTIENT to DIVIDEND/DIVISOR.
-
- -- Function: void mpq_div_2exp (mpq_t ROP, mpq_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 divided by 2 raised to OP2.
-
- -- Function: void mpq_neg (mpq_t NEGATED_OPERAND, mpq_t OPERAND)
-     Set NEGATED_OPERAND to -OPERAND.
-
- -- Function: void mpq_abs (mpq_t ROP, mpq_t OP)
-     Set ROP to the absolute value of OP.
-
- -- Function: void mpq_inv (mpq_t INVERTED_NUMBER, mpq_t NUMBER)
-     Set INVERTED_NUMBER to 1/NUMBER.  If the new denominator is zero,
-     this routine will divide by zero.
-
-\1f
-File: gmp.info,  Node: Comparing Rationals,  Next: Applying Integer Functions,  Prev: Rational Arithmetic,  Up: Rational Number Functions
-
-6.4 Comparison Functions
-========================
-
- -- Function: int mpq_cmp (mpq_t OP1, mpq_t OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
-     To determine if two rationals are equal, `mpq_equal' is faster than
-     `mpq_cmp'.
-
- -- Macro: int mpq_cmp_ui (mpq_t OP1, unsigned long int NUM2, unsigned
-          long int DEN2)
- -- Macro: int mpq_cmp_si (mpq_t OP1, long int NUM2, unsigned long int
-          DEN2)
-     Compare OP1 and NUM2/DEN2.  Return a positive value if OP1 >
-     NUM2/DEN2, zero if OP1 = NUM2/DEN2, and a negative value if OP1 <
-     NUM2/DEN2.
-
-     NUM2 and DEN2 are allowed to have common factors.
-
-     These functions are implemented as a macros and evaluate their
-     arguments multiple times.
-
- -- Macro: int mpq_sgn (mpq_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates its
-     arguments multiple times.
-
- -- Function: int mpq_equal (mpq_t OP1, mpq_t OP2)
-     Return non-zero if OP1 and OP2 are equal, zero if they are
-     non-equal.  Although `mpq_cmp' can be used for the same purpose,
-     this function is much faster.
-
-\1f
-File: gmp.info,  Node: Applying Integer Functions,  Next: I/O of Rationals,  Prev: Comparing Rationals,  Up: Rational Number Functions
-
-6.5 Applying Integer Functions to Rationals
-===========================================
-
-The set of `mpq' functions is quite small.  In particular, there are few
-functions for either input or output.  The following functions give
-direct access to the numerator and denominator of an `mpq_t'.
-
-   Note that if an assignment to the numerator and/or denominator could
-take an `mpq_t' out of the canonical form described at the start of
-this chapter (*note Rational Number Functions::) then
-`mpq_canonicalize' must be called before any other `mpq' functions are
-applied to that `mpq_t'.
-
- -- Macro: mpz_t mpq_numref (mpq_t OP)
- -- Macro: mpz_t mpq_denref (mpq_t OP)
-     Return a reference to the numerator and denominator of OP,
-     respectively.  The `mpz' functions can be used on the result of
-     these macros.
-
- -- Function: void mpq_get_num (mpz_t NUMERATOR, mpq_t RATIONAL)
- -- Function: void mpq_get_den (mpz_t DENOMINATOR, mpq_t RATIONAL)
- -- Function: void mpq_set_num (mpq_t RATIONAL, mpz_t NUMERATOR)
- -- Function: void mpq_set_den (mpq_t RATIONAL, mpz_t DENOMINATOR)
-     Get or set the numerator or denominator of a rational.  These
-     functions are equivalent to calling `mpz_set' with an appropriate
-     `mpq_numref' or `mpq_denref'.  Direct use of `mpq_numref' or
-     `mpq_denref' is recommended instead of these functions.
-
-\1f
-File: gmp.info,  Node: I/O of Rationals,  Prev: Applying Integer Functions,  Up: Rational Number Functions
-
-6.6 Input and Output Functions
-==============================
-
-When using any of these functions, it's a good idea to include `stdio.h'
-before `gmp.h', since that will allow `gmp.h' to define prototypes for
-these functions.
-
-   Passing a `NULL' pointer for a STREAM argument to any of these
-functions will make them read from `stdin' and write to `stdout',
-respectively.
-
- -- Function: size_t mpq_out_str (FILE *STREAM, int BASE, mpq_t OP)
-     Output OP on stdio stream STREAM, as a string of digits in base
-     BASE.  The base may vary from 2 to 36.  Output is in the form
-     `num/den' or if the denominator is 1 then just `num'.
-
-     Return the number of bytes written, or if an error occurred,
-     return 0.
-
- -- Function: size_t mpq_inp_str (mpq_t ROP, FILE *STREAM, int BASE)
-     Read a string of digits from STREAM and convert them to a rational
-     in ROP.  Any initial white-space characters are read and
-     discarded.  Return the number of characters read (including white
-     space), or 0 if a rational could not be read.
-
-     The input can be a fraction like `17/63' or just an integer like
-     `123'.  Reading stops at the first character not in this form, and
-     white space is not permitted within the string.  If the input
-     might not be in canonical form, then `mpq_canonicalize' must be
-     called (*note Rational Number Functions::).
-
-     The BASE can be between 2 and 36, or can be 0 in which case the
-     leading characters of the string determine the base, `0x' or `0X'
-     for hexadecimal, `0' for octal, or decimal otherwise.  The leading
-     characters are examined separately for the numerator and
-     denominator of a fraction, so for instance `0x10/11' is 16/11,
-     whereas `0x10/0x11' is 16/17.
-
-\1f
-File: gmp.info,  Node: Floating-point Functions,  Next: Low-level Functions,  Prev: Rational Number Functions,  Up: Top
-
-7 Floating-point Functions
-**************************
-
-GMP floating point numbers are stored in objects of type `mpf_t' and
-functions operating on them have an `mpf_' prefix.
-
-   The mantissa of each float has a user-selectable precision, limited
-only by available memory.  Each variable has its own precision, and
-that can be increased or decreased at any time.
-
-   The exponent of each float is a fixed precision, one machine word on
-most systems.  In the current implementation the exponent is a count of
-limbs, so for example on a 32-bit system this means a range of roughly
-2^-68719476768 to 2^68719476736, or on a 64-bit system this will be
-greater.  Note however `mpf_get_str' can only return an exponent which
-fits an `mp_exp_t' and currently `mpf_set_str' doesn't accept exponents
-bigger than a `long'.
-
-   Each variable keeps a size for the mantissa data actually in use.
-This means that if a float is exactly represented in only a few bits
-then only those bits will be used in a calculation, even if the
-selected precision is high.
-
-   All calculations are performed to the precision of the destination
-variable.  Each function is defined to calculate with "infinite
-precision" followed by a truncation to the destination precision, but
-of course the work done is only what's needed to determine a result
-under that definition.
-
-   The precision selected for a variable is a minimum value, GMP may
-increase it a little to facilitate efficient calculation.  Currently
-this means rounding up to a whole limb, and then sometimes having a
-further partial limb, depending on the high limb of the mantissa.  But
-applications shouldn't be concerned by such details.
-
-   The mantissa in stored in binary, as might be imagined from the fact
-precisions are expressed in bits.  One consequence of this is that
-decimal fractions like 0.1 cannot be represented exactly.  The same is
-true of plain IEEE `double' floats.  This makes both highly unsuitable
-for calculations involving money or other values that should be exact
-decimal fractions.  (Suitably scaled integers, or perhaps rationals,
-are better choices.)
-
-   `mpf' functions and variables have no special notion of infinity or
-not-a-number, and applications must take care not to overflow the
-exponent or results will be unpredictable.  This might change in a
-future release.
-
-   Note that the `mpf' functions are _not_ intended as a smooth
-extension to IEEE P754 arithmetic.  In particular results obtained on
-one computer often differ from the results on a computer with a
-different word size.
-
-* Menu:
-
-* Initializing Floats::
-* Assigning Floats::
-* Simultaneous Float Init & Assign::
-* Converting Floats::
-* Float Arithmetic::
-* Float Comparison::
-* I/O of Floats::
-* Miscellaneous Float Functions::
-
-\1f
-File: gmp.info,  Node: Initializing Floats,  Next: Assigning Floats,  Prev: Floating-point Functions,  Up: Floating-point Functions
-
-7.1 Initialization Functions
-============================
-
- -- Function: void mpf_set_default_prec (mp_bitcnt_t PREC)
-     Set the default precision to be *at least* PREC bits.  All
-     subsequent calls to `mpf_init' will use this precision, but
-     previously initialized variables are unaffected.
-
- -- Function: mp_bitcnt_t mpf_get_default_prec (void)
-     Return the default precision actually used.
-
-   An `mpf_t' object must be initialized before storing the first value
-in it.  The functions `mpf_init' and `mpf_init2' are used for that
-purpose.
-
- -- Function: void mpf_init (mpf_t X)
-     Initialize X to 0.  Normally, a variable should be initialized
-     once only or at least be cleared, using `mpf_clear', between
-     initializations.  The precision of X is undefined unless a default
-     precision has already been established by a call to
-     `mpf_set_default_prec'.
-
- -- Function: void mpf_init2 (mpf_t X, mp_bitcnt_t PREC)
-     Initialize X to 0 and set its precision to be *at least* PREC
-     bits.  Normally, a variable should be initialized once only or at
-     least be cleared, using `mpf_clear', between initializations.
-
- -- Function: void mpf_inits (mpf_t X, ...)
-     Initialize a NULL-terminated list of `mpf_t' variables, and set
-     their values to 0.  The precision of the initialized variables is
-     undefined unless a default precision has already been established
-     by a call to `mpf_set_default_prec'.
-
- -- Function: void mpf_clear (mpf_t X)
-     Free the space occupied by X.  Make sure to call this function for
-     all `mpf_t' variables when you are done with them.
-
- -- Function: void mpf_clears (mpf_t X, ...)
-     Free the space occupied by a NULL-terminated list of `mpf_t'
-     variables.
-
-   Here is an example on how to initialize floating-point variables:
-     {
-       mpf_t x, y;
-       mpf_init (x);           /* use default precision */
-       mpf_init2 (y, 256);     /* precision _at least_ 256 bits */
-       ...
-       /* Unless the program is about to exit, do ... */
-       mpf_clear (x);
-       mpf_clear (y);
-     }
-
-   The following three functions are useful for changing the precision
-during a calculation.  A typical use would be for adjusting the
-precision gradually in iterative algorithms like Newton-Raphson, making
-the computation precision closely match the actual accurate part of the
-numbers.
-
- -- Function: mp_bitcnt_t mpf_get_prec (mpf_t OP)
-     Return the current precision of OP, in bits.
-
- -- Function: void mpf_set_prec (mpf_t ROP, mp_bitcnt_t PREC)
-     Set the precision of ROP to be *at least* PREC bits.  The value in
-     ROP will be truncated to the new precision.
-
-     This function requires a call to `realloc', and so should not be
-     used in a tight loop.
-
- -- Function: void mpf_set_prec_raw (mpf_t ROP, mp_bitcnt_t PREC)
-     Set the precision of ROP to be *at least* PREC bits, without
-     changing the memory allocated.
-
-     PREC must be no more than the allocated precision for ROP, that
-     being the precision when ROP was initialized, or in the most recent
-     `mpf_set_prec'.
-
-     The value in ROP is unchanged, and in particular if it had a higher
-     precision than PREC it will retain that higher precision.  New
-     values written to ROP will use the new PREC.
-
-     Before calling `mpf_clear' or the full `mpf_set_prec', another
-     `mpf_set_prec_raw' call must be made to restore ROP to its original
-     allocated precision.  Failing to do so will have unpredictable
-     results.
-
-     `mpf_get_prec' can be used before `mpf_set_prec_raw' to get the
-     original allocated precision.  After `mpf_set_prec_raw' it
-     reflects the PREC value set.
-
-     `mpf_set_prec_raw' is an efficient way to use an `mpf_t' variable
-     at different precisions during a calculation, perhaps to gradually
-     increase precision in an iteration, or just to use various
-     different precisions for different purposes during a calculation.
-
-\1f
-File: gmp.info,  Node: Assigning Floats,  Next: Simultaneous Float Init & Assign,  Prev: Initializing Floats,  Up: Floating-point Functions
-
-7.2 Assignment Functions
-========================
-
-These functions assign new values to already initialized floats (*note
-Initializing Floats::).
-
- -- Function: void mpf_set (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_set_ui (mpf_t ROP, unsigned long int OP)
- -- Function: void mpf_set_si (mpf_t ROP, signed long int OP)
- -- Function: void mpf_set_d (mpf_t ROP, double OP)
- -- Function: void mpf_set_z (mpf_t ROP, mpz_t OP)
- -- Function: void mpf_set_q (mpf_t ROP, mpq_t OP)
-     Set the value of ROP from OP.
-
- -- Function: int mpf_set_str (mpf_t ROP, char *STR, int BASE)
-     Set the value of ROP from the string in STR.  The string is of the
-     form `M@N' or, if the base is 10 or less, alternatively `MeN'.
-     `M' is the mantissa and `N' is the exponent.  The mantissa is
-     always in the specified base.  The exponent is either in the
-     specified base or, if BASE is negative, in decimal.  The decimal
-     point expected is taken from the current locale, on systems
-     providing `localeconv'.
-
-     The argument BASE may be in the ranges 2 to 62, or -62 to -2.
-     Negative values are used to specify that the exponent is in
-     decimal.
-
-     For bases up to 36, case is ignored; upper-case and lower-case
-     letters have the same value; for bases 37 to 62, upper-case letter
-     represent the usual 10..35 while lower-case letter represent
-     36..61.
-
-     Unlike the corresponding `mpz' function, the base will not be
-     determined from the leading characters of the string if BASE is 0.
-     This is so that numbers like `0.23' are not interpreted as octal.
-
-     White space is allowed in the string, and is simply ignored.
-     [This is not really true; white-space is ignored in the beginning
-     of the string and within the mantissa, but not in other places,
-     such as after a minus sign or in the exponent.  We are considering
-     changing the definition of this function, making it fail when
-     there is any white-space in the input, since that makes a lot of
-     sense.  Please tell us your opinion about this change.  Do you
-     really want it to accept "3 14" as meaning 314 as it does now?]
-
-     This function returns 0 if the entire string is a valid number in
-     base BASE.  Otherwise it returns -1.
-
- -- Function: void mpf_swap (mpf_t ROP1, mpf_t ROP2)
-     Swap ROP1 and ROP2 efficiently.  Both the values and the
-     precisions of the two variables are swapped.
-
-\1f
-File: gmp.info,  Node: Simultaneous Float Init & Assign,  Next: Converting Floats,  Prev: Assigning Floats,  Up: Floating-point Functions
-
-7.3 Combined Initialization and Assignment Functions
-====================================================
-
-For convenience, GMP provides a parallel series of initialize-and-set
-functions which initialize the output and then store the value there.
-These functions' names have the form `mpf_init_set...'
-
-   Once the float has been initialized by any of the `mpf_init_set...'
-functions, it can be used as the source or destination operand for the
-ordinary float functions.  Don't use an initialize-and-set function on
-a variable already initialized!
-
- -- Function: void mpf_init_set (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_init_set_ui (mpf_t ROP, unsigned long int OP)
- -- Function: void mpf_init_set_si (mpf_t ROP, signed long int OP)
- -- Function: void mpf_init_set_d (mpf_t ROP, double OP)
-     Initialize ROP and set its value from OP.
-
-     The precision of ROP will be taken from the active default
-     precision, as set by `mpf_set_default_prec'.
-
- -- Function: int mpf_init_set_str (mpf_t ROP, char *STR, int BASE)
-     Initialize ROP and set its value from the string in STR.  See
-     `mpf_set_str' above for details on the assignment operation.
-
-     Note that ROP is initialized even if an error occurs.  (I.e., you
-     have to call `mpf_clear' for it.)
-
-     The precision of ROP will be taken from the active default
-     precision, as set by `mpf_set_default_prec'.
-
-\1f
-File: gmp.info,  Node: Converting Floats,  Next: Float Arithmetic,  Prev: Simultaneous Float Init & Assign,  Up: Floating-point Functions
-
-7.4 Conversion Functions
-========================
-
- -- Function: double mpf_get_d (mpf_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero).
-
-     If the exponent in OP is too big or too small to fit a `double'
-     then the result is system dependent.  For too big an infinity is
-     returned when available.  For too small 0.0 is normally returned.
-     Hardware overflow, underflow and denorm traps may or may not occur.
-
- -- Function: double mpf_get_d_2exp (signed long int *EXP, mpf_t OP)
-     Convert OP to a `double', truncating if necessary (ie. rounding
-     towards zero), and with an exponent returned separately.
-
-     The return value is in the range 0.5<=abs(D)<1 and the exponent is
-     stored to `*EXP'.  D * 2^EXP is the (truncated) OP value.  If OP
-     is zero, the return is 0.0 and 0 is stored to `*EXP'.
-
-     This is similar to the standard C `frexp' function (*note
-     Normalization Functions: (libc)Normalization Functions.).
-
- -- Function: long mpf_get_si (mpf_t OP)
- -- Function: unsigned long mpf_get_ui (mpf_t OP)
-     Convert OP to a `long' or `unsigned long', truncating any fraction
-     part.  If OP is too big for the return type, the result is
-     undefined.
-
-     See also `mpf_fits_slong_p' and `mpf_fits_ulong_p' (*note
-     Miscellaneous Float Functions::).
-
- -- Function: char * mpf_get_str (char *STR, mp_exp_t *EXPPTR, int
-          BASE, size_t N_DIGITS, mpf_t OP)
-     Convert OP to a string of digits in base BASE.  The base argument
-     may vary from 2 to 62 or from -2 to -36.  Up to N_DIGITS digits
-     will be generated.  Trailing zeros are not returned.  No more
-     digits than can be accurately represented by OP are ever
-     generated.  If N_DIGITS is 0 then that accurate maximum number of
-     digits are generated.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     If STR is `NULL', the result string is allocated using the current
-     allocation function (*note Custom Allocation::).  The block will be
-     `strlen(str)+1' bytes, that being exactly enough for the string and
-     null-terminator.
-
-     If STR is not `NULL', it should point to a block of N_DIGITS + 2
-     bytes, that being enough for the mantissa, a possible minus sign,
-     and a null-terminator.  When N_DIGITS is 0 to get all significant
-     digits, an application won't be able to know the space required,
-     and STR should be `NULL' in that case.
-
-     The generated string is a fraction, with an implicit radix point
-     immediately to the left of the first digit.  The applicable
-     exponent is written through the EXPPTR pointer.  For example, the
-     number 3.1416 would be returned as string "31416" and exponent 1.
-
-     When OP is zero, an empty string is produced and the exponent
-     returned is 0.
-
-     A pointer to the result string is returned, being either the
-     allocated block or the given STR.
-
-\1f
-File: gmp.info,  Node: Float Arithmetic,  Next: Float Comparison,  Prev: Converting Floats,  Up: Floating-point Functions
-
-7.5 Arithmetic Functions
-========================
-
- -- Function: void mpf_add (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_add_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 + OP2.
-
- -- Function: void mpf_sub (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_ui_sub (mpf_t ROP, unsigned long int OP1, mpf_t
-          OP2)
- -- Function: void mpf_sub_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 - OP2.
-
- -- Function: void mpf_mul (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_mul_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 times OP2.
-
-   Division is undefined if the divisor is zero, and passing a zero
-divisor to the divide functions will make these functions intentionally
-divide by zero.  This lets the user handle arithmetic exceptions in
-these functions in the same manner as other arithmetic exceptions.
-
- -- Function: void mpf_div (mpf_t ROP, mpf_t OP1, mpf_t OP2)
- -- Function: void mpf_ui_div (mpf_t ROP, unsigned long int OP1, mpf_t
-          OP2)
- -- Function: void mpf_div_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1/OP2.
-
- -- Function: void mpf_sqrt (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_sqrt_ui (mpf_t ROP, unsigned long int OP)
-     Set ROP to the square root of OP.
-
- -- Function: void mpf_pow_ui (mpf_t ROP, mpf_t OP1, unsigned long int
-          OP2)
-     Set ROP to OP1 raised to the power OP2.
-
- -- Function: void mpf_neg (mpf_t ROP, mpf_t OP)
-     Set ROP to -OP.
-
- -- Function: void mpf_abs (mpf_t ROP, mpf_t OP)
-     Set ROP to the absolute value of OP.
-
- -- Function: void mpf_mul_2exp (mpf_t ROP, mpf_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 times 2 raised to OP2.
-
- -- Function: void mpf_div_2exp (mpf_t ROP, mpf_t OP1, mp_bitcnt_t OP2)
-     Set ROP to OP1 divided by 2 raised to OP2.
-
-\1f
-File: gmp.info,  Node: Float Comparison,  Next: I/O of Floats,  Prev: Float Arithmetic,  Up: Floating-point Functions
-
-7.6 Comparison Functions
-========================
-
- -- Function: int mpf_cmp (mpf_t OP1, mpf_t OP2)
- -- Function: int mpf_cmp_d (mpf_t OP1, double OP2)
- -- Function: int mpf_cmp_ui (mpf_t OP1, unsigned long int OP2)
- -- Function: int mpf_cmp_si (mpf_t OP1, signed long int OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
-     `mpf_cmp_d' can be called with an infinity, but results are
-     undefined for a NaN.
-
- -- Function: int mpf_eq (mpf_t OP1, mpf_t OP2, mp_bitcnt_t op3)
-     Return non-zero if the first OP3 bits of OP1 and OP2 are equal,
-     zero otherwise.  I.e., test if OP1 and OP2 are approximately equal.
-
-     Caution 1: All version of GMP up to version 4.2.4 compared just
-     whole limbs, meaning sometimes more than OP3 bits, sometimes fewer.
-
-     Caution 2: This function will consider XXX11...111 and XX100...000
-     different, even if ... is replaced by a semi-infinite number of
-     bits.  Such numbers are really just one ulp off, and should be
-     considered equal.
-
- -- Function: void mpf_reldiff (mpf_t ROP, mpf_t OP1, mpf_t OP2)
-     Compute the relative difference between OP1 and OP2 and store the
-     result in ROP.  This is abs(OP1-OP2)/OP1.
-
- -- Macro: int mpf_sgn (mpf_t OP)
-     Return +1 if OP > 0, 0 if OP = 0, and -1 if OP < 0.
-
-     This function is actually implemented as a macro.  It evaluates
-     its arguments multiple times.
-
-\1f
-File: gmp.info,  Node: I/O of Floats,  Next: Miscellaneous Float Functions,  Prev: Float Comparison,  Up: Floating-point Functions
-
-7.7 Input and Output Functions
-==============================
-
-Functions that perform input from a stdio stream, and functions that
-output to a stdio stream.  Passing a `NULL' pointer for a STREAM
-argument to any of these functions will make them read from `stdin' and
-write to `stdout', respectively.
-
-   When using any of these functions, it is a good idea to include
-`stdio.h' before `gmp.h', since that will allow `gmp.h' to define
-prototypes for these functions.
-
- -- Function: size_t mpf_out_str (FILE *STREAM, int BASE, size_t
-          N_DIGITS, mpf_t OP)
-     Print OP to STREAM, as a string of digits.  Return the number of
-     bytes written, or if an error occurred, return 0.
-
-     The mantissa is prefixed with an `0.' and is in the given BASE,
-     which may vary from 2 to 62 or from -2 to -36.  An exponent is
-     then printed, separated by an `e', or if the base is greater than
-     10 then by an `@'.  The exponent is always in decimal.  The
-     decimal point follows the current locale, on systems providing
-     `localeconv'.
-
-     For BASE in the range 2..36, digits and lower-case letters are
-     used; for -2..-36, digits and upper-case letters are used; for
-     37..62, digits, upper-case letters, and lower-case letters (in
-     that significance order) are used.
-
-     Up to N_DIGITS will be printed from the mantissa, except that no
-     more digits than are accurately representable by OP will be
-     printed.  N_DIGITS can be 0 to select that accurate maximum.
-
- -- Function: size_t mpf_inp_str (mpf_t ROP, FILE *STREAM, int BASE)
-     Read a string in base BASE from STREAM, and put the read float in
-     ROP.  The string is of the form `M@N' or, if the base is 10 or
-     less, alternatively `MeN'.  `M' is the mantissa and `N' is the
-     exponent.  The mantissa is always in the specified base.  The
-     exponent is either in the specified base or, if BASE is negative,
-     in decimal.  The decimal point expected is taken from the current
-     locale, on systems providing `localeconv'.
-
-     The argument BASE may be in the ranges 2 to 36, or -36 to -2.
-     Negative values are used to specify that the exponent is in
-     decimal.
-
-     Unlike the corresponding `mpz' function, the base will not be
-     determined from the leading characters of the string if BASE is 0.
-     This is so that numbers like `0.23' are not interpreted as octal.
-
-     Return the number of bytes read, or if an error occurred, return 0.
-
-\1f
-File: gmp.info,  Node: Miscellaneous Float Functions,  Prev: I/O of Floats,  Up: Floating-point Functions
-
-7.8 Miscellaneous Functions
-===========================
-
- -- Function: void mpf_ceil (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_floor (mpf_t ROP, mpf_t OP)
- -- Function: void mpf_trunc (mpf_t ROP, mpf_t OP)
-     Set ROP to OP rounded to an integer.  `mpf_ceil' rounds to the
-     next higher integer, `mpf_floor' to the next lower, and `mpf_trunc'
-     to the integer towards zero.
-
- -- Function: int mpf_integer_p (mpf_t OP)
-     Return non-zero if OP is an integer.
-
- -- Function: int mpf_fits_ulong_p (mpf_t OP)
- -- Function: int mpf_fits_slong_p (mpf_t OP)
- -- Function: int mpf_fits_uint_p (mpf_t OP)
- -- Function: int mpf_fits_sint_p (mpf_t OP)
- -- Function: int mpf_fits_ushort_p (mpf_t OP)
- -- Function: int mpf_fits_sshort_p (mpf_t OP)
-     Return non-zero if OP would fit in the respective C data type, when
-     truncated to an integer.
-
- -- Function: void mpf_urandomb (mpf_t ROP, gmp_randstate_t STATE,
-          mp_bitcnt_t NBITS)
-     Generate a uniformly distributed random float in ROP, such that 0
-     <= ROP < 1, with NBITS significant bits in the mantissa.
-
-     The variable STATE must be initialized by calling one of the
-     `gmp_randinit' functions (*Note Random State Initialization::)
-     before invoking this function.
-
- -- Function: void mpf_random2 (mpf_t ROP, mp_size_t MAX_SIZE, mp_exp_t
-          EXP)
-     Generate a random float of at most MAX_SIZE limbs, with long
-     strings of zeros and ones in the binary representation.  The
-     exponent of the number is in the interval -EXP to EXP (in limbs).
-     This function is useful for testing functions and algorithms,
-     since these kind of random numbers have proven to be more likely
-     to trigger corner-case bugs.  Negative random numbers are
-     generated when MAX_SIZE is negative.
-
-\1f
-File: gmp.info,  Node: Low-level Functions,  Next: Random Number Functions,  Prev: Floating-point Functions,  Up: Top
-
-8 Low-level Functions
-*********************
-
-This chapter describes low-level GMP functions, used to implement the
-high-level GMP functions, but also intended for time-critical user code.
-
-   These functions start with the prefix `mpn_'.
-
-   The `mpn' functions are designed to be as fast as possible, *not* to
-provide a coherent calling interface.  The different functions have
-somewhat similar interfaces, but there are variations that make them
-hard to use.  These functions do as little as possible apart from the
-real multiple precision computation, so that no time is spent on things
-that not all callers need.
-
-   A source operand is specified by a pointer to the least significant
-limb and a limb count.  A destination operand is specified by just a
-pointer.  It is the responsibility of the caller to ensure that the
-destination has enough space for storing the result.
-
-   With this way of specifying operands, it is possible to perform
-computations on subranges of an argument, and store the result into a
-subrange of a destination.
-
-   A common requirement for all functions is that each source area
-needs at least one limb.  No size argument may be zero.  Unless
-otherwise stated, in-place operations are allowed where source and
-destination are the same, but not where they only partly overlap.
-
-   The `mpn' functions are the base for the implementation of the
-`mpz_', `mpf_', and `mpq_' functions.
-
-   This example adds the number beginning at S1P and the number
-beginning at S2P and writes the sum at DESTP.  All areas have N limbs.
-
-     cy = mpn_add_n (destp, s1p, s2p, n)
-
-   It should be noted that the `mpn' functions make no attempt to
-identify high or low zero limbs on their operands, or other special
-forms.  On random data such cases will be unlikely and it'd be wasteful
-for every function to check every time.  An application knowing
-something about its data can take steps to trim or perhaps split its
-calculations.
-
-
-In the notation used below, a source operand is identified by the
-pointer to the least significant limb, and the limb count in braces.
-For example, {S1P, S1N}.
-
- -- Function: mp_limb_t mpn_add_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Add {S1P, N} and {S2P, N}, and write the N least significant limbs
-     of the result to RP.  Return carry, either 0 or 1.
-
-     This is the lowest-level function for addition.  It is the
-     preferred function for addition, since it is written in assembly
-     for most CPUs.  For addition of a variable to itself (i.e., S1P
-     equals S2P) use `mpn_lshift' with a count of 1 for optimal speed.
-
- -- Function: mp_limb_t mpn_add_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Add {S1P, N} and S2LIMB, and write the N least significant limbs
-     of the result to RP.  Return carry, either 0 or 1.
-
- -- Function: mp_limb_t mpn_add (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Add {S1P, S1N} and {S2P, S2N}, and write the S1N least significant
-     limbs of the result to RP.  Return carry, either 0 or 1.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: mp_limb_t mpn_sub_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Subtract {S2P, N} from {S1P, N}, and write the N least significant
-     limbs of the result to RP.  Return borrow, either 0 or 1.
-
-     This is the lowest-level function for subtraction.  It is the
-     preferred function for subtraction, since it is written in
-     assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_sub_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Subtract S2LIMB from {S1P, N}, and write the N least significant
-     limbs of the result to RP.  Return borrow, either 0 or 1.
-
- -- Function: mp_limb_t mpn_sub (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Subtract {S2P, S2N} from {S1P, S1N}, and write the S1N least
-     significant limbs of the result to RP.  Return borrow, either 0 or
-     1.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: void mpn_neg (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N)
-     Perform the negation of {SP, N}, and write the result to {RP, N}.
-     Return carry-out.
-
- -- Function: void mpn_mul_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Multiply {S1P, N} and {S2P, N}, and write the 2*N-limb result to
-     RP.
-
-     The destination has to have space for 2*N limbs, even if the
-     product's most significant limb is zero.  No overlap is permitted
-     between the destination and either source.
-
-     If the two input operands are the same, use `mpn_sqr'.
-
- -- Function: mp_limb_t mpn_mul (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t S1N, const mp_limb_t *S2P, mp_size_t S2N)
-     Multiply {S1P, S1N} and {S2P, S2N}, and write the (S1N+S2N)-limb
-     result to RP.  Return the most significant limb of the result.
-
-     The destination has to have space for S1N + S2N limbs, even if the
-     product's most significant limb is zero.  No overlap is permitted
-     between the destination and either source.
-
-     This function requires that S1N is greater than or equal to S2N.
-
- -- Function: void mpn_sqr (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Compute the square of {S1P, N} and write the 2*N-limb result to RP.
-
-     The destination has to have space for 2*N limbs, even if the
-     result's most significant limb is zero.  No overlap is permitted
-     between the destination and the source.
-
- -- Function: mp_limb_t mpn_mul_1 (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} by S2LIMB, and write the N least significant
-     limbs of the product to RP.  Return the most significant limb of
-     the product.  {S1P, N} and {RP, N} are allowed to overlap provided
-     RP <= S1P.
-
-     This is a low-level function that is a building block for general
-     multiplication as well as other operations in GMP.  It is written
-     in assembly for most CPUs.
-
-     Don't call this function if S2LIMB is a power of 2; use
-     `mpn_lshift' with a count equal to the logarithm of S2LIMB
-     instead, for optimal speed.
-
- -- Function: mp_limb_t mpn_addmul_1 (mp_limb_t *RP, const mp_limb_t
-          *S1P, mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} and S2LIMB, and add the N least significant
-     limbs of the product to {RP, N} and write the result to RP.
-     Return the most significant limb of the product, plus carry-out
-     from the addition.
-
-     This is a low-level function that is a building block for general
-     multiplication as well as other operations in GMP.  It is written
-     in assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_submul_1 (mp_limb_t *RP, const mp_limb_t
-          *S1P, mp_size_t N, mp_limb_t S2LIMB)
-     Multiply {S1P, N} and S2LIMB, and subtract the N least significant
-     limbs of the product from {RP, N} and write the result to RP.
-     Return the most significant limb of the product, plus borrow-out
-     from the subtraction.
-
-     This is a low-level function that is a building block for general
-     multiplication and division as well as other operations in GMP.
-     It is written in assembly for most CPUs.
-
- -- Function: void mpn_tdiv_qr (mp_limb_t *QP, mp_limb_t *RP, mp_size_t
-          QXN, const mp_limb_t *NP, mp_size_t NN, const mp_limb_t *DP,
-          mp_size_t DN)
-     Divide {NP, NN} by {DP, DN} and put the quotient at {QP, NN-DN+1}
-     and the remainder at {RP, DN}.  The quotient is rounded towards 0.
-
-     No overlap is permitted between arguments, except that NP might
-     equal RP.  The dividend size NN must be greater than or equal to
-     divisor size DN.  The most significant limb of the divisor must be
-     non-zero.  The QXN operand must be zero.
-
- -- Function: mp_limb_t mpn_divrem (mp_limb_t *R1P, mp_size_t QXN,
-          mp_limb_t *RS2P, mp_size_t RS2N, const mp_limb_t *S3P,
-          mp_size_t S3N)
-     [This function is obsolete.  Please call `mpn_tdiv_qr' instead for
-     best performance.]
-
-     Divide {RS2P, RS2N} by {S3P, S3N}, and write the quotient at R1P,
-     with the exception of the most significant limb, which is
-     returned.  The remainder replaces the dividend at RS2P; it will be
-     S3N limbs long (i.e., as many limbs as the divisor).
-
-     In addition to an integer quotient, QXN fraction limbs are
-     developed, and stored after the integral limbs.  For most usages,
-     QXN will be zero.
-
-     It is required that RS2N is greater than or equal to S3N.  It is
-     required that the most significant bit of the divisor is set.
-
-     If the quotient is not needed, pass RS2P + S3N as R1P.  Aside from
-     that special case, no overlap between arguments is permitted.
-
-     Return the most significant limb of the quotient, either 0 or 1.
-
-     The area at R1P needs to be RS2N - S3N + QXN limbs large.
-
- -- Function: mp_limb_t mpn_divrem_1 (mp_limb_t *R1P, mp_size_t QXN,
-          mp_limb_t *S2P, mp_size_t S2N, mp_limb_t S3LIMB)
- -- Macro: mp_limb_t mpn_divmod_1 (mp_limb_t *R1P, mp_limb_t *S2P,
-          mp_size_t S2N, mp_limb_t S3LIMB)
-     Divide {S2P, S2N} by S3LIMB, and write the quotient at R1P.
-     Return the remainder.
-
-     The integer quotient is written to {R1P+QXN, S2N} and in addition
-     QXN fraction limbs are developed and written to {R1P, QXN}.
-     Either or both S2N and QXN can be zero.  For most usages, QXN will
-     be zero.
-
-     `mpn_divmod_1' exists for upward source compatibility and is
-     simply a macro calling `mpn_divrem_1' with a QXN of 0.
-
-     The areas at R1P and S2P have to be identical or completely
-     separate, not partially overlapping.
-
- -- Function: mp_limb_t mpn_divmod (mp_limb_t *R1P, mp_limb_t *RS2P,
-          mp_size_t RS2N, const mp_limb_t *S3P, mp_size_t S3N)
-     [This function is obsolete.  Please call `mpn_tdiv_qr' instead for
-     best performance.]
-
- -- Macro: mp_limb_t mpn_divexact_by3 (mp_limb_t *RP, mp_limb_t *SP,
-          mp_size_t N)
- -- Function: mp_limb_t mpn_divexact_by3c (mp_limb_t *RP, mp_limb_t
-          *SP, mp_size_t N, mp_limb_t CARRY)
-     Divide {SP, N} by 3, expecting it to divide exactly, and writing
-     the result to {RP, N}.  If 3 divides exactly, the return value is
-     zero and the result is the quotient.  If not, the return value is
-     non-zero and the result won't be anything useful.
-
-     `mpn_divexact_by3c' takes an initial carry parameter, which can be
-     the return value from a previous call, so a large calculation can
-     be done piece by piece from low to high.  `mpn_divexact_by3' is
-     simply a macro calling `mpn_divexact_by3c' with a 0 carry
-     parameter.
-
-     These routines use a multiply-by-inverse and will be faster than
-     `mpn_divrem_1' on CPUs with fast multiplication but slow division.
-
-     The source a, result q, size n, initial carry i, and return value
-     c satisfy c*b^n + a-i = 3*q, where b=2^GMP_NUMB_BITS.  The return
-     c is always 0, 1 or 2, and the initial carry i must also be 0, 1
-     or 2 (these are both borrows really).  When c=0 clearly q=(a-i)/3.
-     When c!=0, the remainder (a-i) mod 3 is given by 3-c, because b
-     == 1 mod 3 (when `mp_bits_per_limb' is even, which is always so
-     currently).
-
- -- Function: mp_limb_t mpn_mod_1 (mp_limb_t *S1P, mp_size_t S1N,
-          mp_limb_t S2LIMB)
-     Divide {S1P, S1N} by S2LIMB, and return the remainder.  S1N can be
-     zero.
-
- -- Function: mp_limb_t mpn_lshift (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N, unsigned int COUNT)
-     Shift {SP, N} left by COUNT bits, and write the result to {RP, N}.
-     The bits shifted out at the left are returned in the least
-     significant COUNT bits of the return value (the rest of the return
-     value is zero).
-
-     COUNT must be in the range 1 to mp_bits_per_limb-1.  The regions
-     {SP, N} and {RP, N} may overlap, provided RP >= SP.
-
-     This function is written in assembly for most CPUs.
-
- -- Function: mp_limb_t mpn_rshift (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N, unsigned int COUNT)
-     Shift {SP, N} right by COUNT bits, and write the result to {RP,
-     N}.  The bits shifted out at the right are returned in the most
-     significant COUNT bits of the return value (the rest of the return
-     value is zero).
-
-     COUNT must be in the range 1 to mp_bits_per_limb-1.  The regions
-     {SP, N} and {RP, N} may overlap, provided RP <= SP.
-
-     This function is written in assembly for most CPUs.
-
- -- Function: int mpn_cmp (const mp_limb_t *S1P, const mp_limb_t *S2P,
-          mp_size_t N)
-     Compare {S1P, N} and {S2P, N} and return a positive value if S1 >
-     S2, 0 if they are equal, or a negative value if S1 < S2.
-
- -- Function: mp_size_t mpn_gcd (mp_limb_t *RP, mp_limb_t *XP,
-          mp_size_t XN, mp_limb_t *YP, mp_size_t YN)
-     Set {RP, RETVAL} to the greatest common divisor of {XP, XN} and
-     {YP, YN}.  The result can be up to YN limbs, the return value is
-     the actual number produced.  Both source operands are destroyed.
-
-     {XP, XN} must have at least as many bits as {YP, YN}.  {YP, YN}
-     must be odd.  Both operands must have non-zero most significant
-     limbs.  No overlap is permitted between {XP, XN} and {YP, YN}.
-
- -- Function: mp_limb_t mpn_gcd_1 (const mp_limb_t *XP, mp_size_t XN,
-          mp_limb_t YLIMB)
-     Return the greatest common divisor of {XP, XN} and YLIMB.  Both
-     operands must be non-zero.
-
- -- Function: mp_size_t mpn_gcdext (mp_limb_t *GP, mp_limb_t *SP,
-          mp_size_t *SN, mp_limb_t *XP, mp_size_t XN, mp_limb_t *YP,
-          mp_size_t YN)
-     Let U be defined by {XP, XN} and let V be defined by {YP, YN}.
-
-     Compute the greatest common divisor G of U and V.  Compute a
-     cofactor S such that G = US + VT.  The second cofactor T is not
-     computed but can easily be obtained from (G - U*S) / V (the
-     division will be exact).  It is required that U >= V > 0.
-
-     S satisfies S = 1 or abs(S) < V / (2 G). S = 0 if and only if V
-     divides U (i.e., G = V).
-
-     Store G at GP and let the return value define its limb count.
-     Store S at SP and let |*SN| define its limb count.  S can be
-     negative; when this happens *SN will be negative.  The areas at GP
-     and SP should each have room for XN+1 limbs.
-
-     The areas {XP, XN+1} and {YP, YN+1} are destroyed (i.e. the input
-     operands plus an extra limb past the end of each).
-
-     Compatibility note: GMP 4.3.0 and 4.3.1 defined S less strictly.
-     Earlier as well as later GMP releases define S as described here.
-
- -- Function: mp_size_t mpn_sqrtrem (mp_limb_t *R1P, mp_limb_t *R2P,
-          const mp_limb_t *SP, mp_size_t N)
-     Compute the square root of {SP, N} and put the result at {R1P,
-     ceil(N/2)} and the remainder at {R2P, RETVAL}.  R2P needs space
-     for N limbs, but the return value indicates how many are produced.
-
-     The most significant limb of {SP, N} must be non-zero.  The areas
-     {R1P, ceil(N/2)} and {SP, N} must be completely separate.  The
-     areas {R2P, N} and {SP, N} must be either identical or completely
-     separate.
-
-     If the remainder is not wanted then R2P can be `NULL', and in this
-     case the return value is zero or non-zero according to whether the
-     remainder would have been zero or non-zero.
-
-     A return value of zero indicates a perfect square.  See also
-     `mpz_perfect_square_p'.
-
- -- Function: mp_size_t mpn_get_str (unsigned char *STR, int BASE,
-          mp_limb_t *S1P, mp_size_t S1N)
-     Convert {S1P, S1N} to a raw unsigned char array at STR in base
-     BASE, and return the number of characters produced.  There may be
-     leading zeros in the string.  The string is not in ASCII; to
-     convert it to printable format, add the ASCII codes for `0' or
-     `A', depending on the base and range.  BASE can vary from 2 to 256.
-
-     The most significant limb of the input {S1P, S1N} must be
-     non-zero.  The input {S1P, S1N} is clobbered, except when BASE is
-     a power of 2, in which case it's unchanged.
-
-     The area at STR has to have space for the largest possible number
-     represented by a S1N long limb array, plus one extra character.
-
- -- Function: mp_size_t mpn_set_str (mp_limb_t *RP, const unsigned char
-          *STR, size_t STRSIZE, int BASE)
-     Convert bytes {STR,STRSIZE} in the given BASE to limbs at RP.
-
-     STR[0] is the most significant byte and STR[STRSIZE-1] is the
-     least significant.  Each byte should be a value in the range 0 to
-     BASE-1, not an ASCII character.  BASE can vary from 2 to 256.
-
-     The return value is the number of limbs written to RP.  If the most
-     significant input byte is non-zero then the high limb at RP will be
-     non-zero, and only that exact number of limbs will be required
-     there.
-
-     If the most significant input byte is zero then there may be high
-     zero limbs written to RP and included in the return value.
-
-     STRSIZE must be at least 1, and no overlap is permitted between
-     {STR,STRSIZE} and the result at RP.
-
- -- Function: mp_bitcnt_t mpn_scan0 (const mp_limb_t *S1P, mp_bitcnt_t
-          BIT)
-     Scan S1P from bit position BIT for the next clear bit.
-
-     It is required that there be a clear bit within the area at S1P at
-     or beyond bit position BIT, so that the function has something to
-     return.
-
- -- Function: mp_bitcnt_t mpn_scan1 (const mp_limb_t *S1P, mp_bitcnt_t
-          BIT)
-     Scan S1P from bit position BIT for the next set bit.
-
-     It is required that there be a set bit within the area at S1P at or
-     beyond bit position BIT, so that the function has something to
-     return.
-
- -- Function: void mpn_random (mp_limb_t *R1P, mp_size_t R1N)
- -- Function: void mpn_random2 (mp_limb_t *R1P, mp_size_t R1N)
-     Generate a random number of length R1N and store it at R1P.  The
-     most significant limb is always non-zero.  `mpn_random' generates
-     uniformly distributed limb data, `mpn_random2' generates long
-     strings of zeros and ones in the binary representation.
-
-     `mpn_random2' is intended for testing the correctness of the `mpn'
-     routines.
-
- -- Function: mp_bitcnt_t mpn_popcount (const mp_limb_t *S1P, mp_size_t
-          N)
-     Count the number of set bits in {S1P, N}.
-
- -- Function: mp_bitcnt_t mpn_hamdist (const mp_limb_t *S1P, const
-          mp_limb_t *S2P, mp_size_t N)
-     Compute the hamming distance between {S1P, N} and {S2P, N}, which
-     is the number of bit positions where the two operands have
-     different bit values.
-
- -- Function: int mpn_perfect_square_p (const mp_limb_t *S1P, mp_size_t
-          N)
-     Return non-zero iff {S1P, N} is a perfect square.
-
- -- Function: void mpn_and_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and {S2P, N}, and
-     write the result to {RP, N}.
-
- -- Function: void mpn_ior_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and {S2P, N},
-     and write the result to {RP, N}.
-
- -- Function: void mpn_xor_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical exclusive or of {S1P, N} and {S2P, N},
-     and write the result to {RP, N}.
-
- -- Function: void mpn_andn_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and the bitwise
-     complement of {S2P, N}, and write the result to {RP, N}.
-
- -- Function: void mpn_iorn_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and the
-     bitwise complement of {S2P, N}, and write the result to {RP, N}.
-
- -- Function: void mpn_nand_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical and of {S1P, N} and {S2P, N}, and
-     write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_nior_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical inclusive or of {S1P, N} and {S2P, N},
-     and write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_xnor_n (mp_limb_t *RP, const mp_limb_t *S1P,
-          const mp_limb_t *S2P, mp_size_t N)
-     Perform the bitwise logical exclusive or of {S1P, N} and {S2P, N},
-     and write the bitwise complement of the result to {RP, N}.
-
- -- Function: void mpn_com (mp_limb_t *RP, const mp_limb_t *SP,
-          mp_size_t N)
-     Perform the bitwise complement of {SP, N}, and write the result to
-     {RP, N}.
-
- -- Function: void mpn_copyi (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Copy from {S1P, N} to {RP, N}, increasingly.
-
- -- Function: void mpn_copyd (mp_limb_t *RP, const mp_limb_t *S1P,
-          mp_size_t N)
-     Copy from {S1P, N} to {RP, N}, decreasingly.
-
- -- Function: void mpn_zero (mp_limb_t *RP, mp_size_t N)
-     Zero {RP, N}.
-
-
-8.1 Nails
-=========
-
-*Everything in this section is highly experimental and may disappear or
-be subject to incompatible changes in a future version of GMP.*
-
-   Nails are an experimental feature whereby a few bits are left unused
-at the top of each `mp_limb_t'.  This can significantly improve carry
-handling on some processors.
-
-   All the `mpn' functions accepting limb data will expect the nail
-bits to be zero on entry, and will return data with the nails similarly
-all zero.  This applies both to limb vectors and to single limb
-arguments.
-
-   Nails can be enabled by configuring with `--enable-nails'.  By
-default the number of bits will be chosen according to what suits the
-host processor, but a particular number can be selected with
-`--enable-nails=N'.
-
-   At the mpn level, a nail build is neither source nor binary
-compatible with a non-nail build, strictly speaking.  But programs
-acting on limbs only through the mpn functions are likely to work
-equally well with either build, and judicious use of the definitions
-below should make any program compatible with either build, at the
-source level.
-
-   For the higher level routines, meaning `mpz' etc, a nail build
-should be fully source and binary compatible with a non-nail build.
-
- -- Macro: GMP_NAIL_BITS
- -- Macro: GMP_NUMB_BITS
- -- Macro: GMP_LIMB_BITS
-     `GMP_NAIL_BITS' is the number of nail bits, or 0 when nails are
-     not in use.  `GMP_NUMB_BITS' is the number of data bits in a limb.
-     `GMP_LIMB_BITS' is the total number of bits in an `mp_limb_t'.  In
-     all cases
-
-          GMP_LIMB_BITS == GMP_NAIL_BITS + GMP_NUMB_BITS
-
- -- Macro: GMP_NAIL_MASK
- -- Macro: GMP_NUMB_MASK
-     Bit masks for the nail and number parts of a limb.
-     `GMP_NAIL_MASK' is 0 when nails are not in use.
-
-     `GMP_NAIL_MASK' is not often needed, since the nail part can be
-     obtained with `x >> GMP_NUMB_BITS', and that means one less large
-     constant, which can help various RISC chips.
-
- -- Macro: GMP_NUMB_MAX
-     The maximum value that can be stored in the number part of a limb.
-     This is the same as `GMP_NUMB_MASK', but can be used for clarity
-     when doing comparisons rather than bit-wise operations.
-
-   The term "nails" comes from finger or toe nails, which are at the
-ends of a limb (arm or leg).  "numb" is short for number, but is also
-how the developers felt after trying for a long time to come up with
-sensible names for these things.
-
-   In the future (the distant future most likely) a non-zero nail might
-be permitted, giving non-unique representations for numbers in a limb
-vector.  This would help vector processors since carries would only
-ever need to propagate one or two limbs.
-
-\1f
-File: gmp.info,  Node: Random Number Functions,  Next: Formatted Output,  Prev: Low-level Functions,  Up: Top
-
-9 Random Number Functions
-*************************
-
-Sequences of pseudo-random numbers in GMP are generated using a
-variable of type `gmp_randstate_t', which holds an algorithm selection
-and a current state.  Such a variable must be initialized by a call to
-one of the `gmp_randinit' functions, and can be seeded with one of the
-`gmp_randseed' functions.
-
-   The functions actually generating random numbers are described in
-*Note Integer Random Numbers::, and *Note Miscellaneous Float
-Functions::.
-
-   The older style random number functions don't accept a
-`gmp_randstate_t' parameter but instead share a global variable of that
-type.  They use a default algorithm and are currently not seeded
-(though perhaps that will change in the future).  The new functions
-accepting a `gmp_randstate_t' are recommended for applications that
-care about randomness.
-
-* Menu:
-
-* Random State Initialization::
-* Random State Seeding::
-* Random State Miscellaneous::
-
-\1f
-File: gmp.info,  Node: Random State Initialization,  Next: Random State Seeding,  Prev: Random Number Functions,  Up: Random Number Functions
-
-9.1 Random State Initialization
-===============================
-
- -- Function: void gmp_randinit_default (gmp_randstate_t STATE)
-     Initialize STATE with a default algorithm.  This will be a
-     compromise between speed and randomness, and is recommended for
-     applications with no special requirements.  Currently this is
-     `gmp_randinit_mt'.
-
- -- Function: void gmp_randinit_mt (gmp_randstate_t STATE)
-     Initialize STATE for a Mersenne Twister algorithm.  This algorithm
-     is fast and has good randomness properties.
-
- -- Function: void gmp_randinit_lc_2exp (gmp_randstate_t STATE, mpz_t
-          A, unsigned long C, mp_bitcnt_t M2EXP)
-     Initialize STATE with a linear congruential algorithm X = (A*X +
-     C) mod 2^M2EXP.
-
-     The low bits of X in this algorithm are not very random.  The least
-     significant bit will have a period no more than 2, and the second
-     bit no more than 4, etc.  For this reason only the high half of
-     each X is actually used.
-
-     When a random number of more than M2EXP/2 bits is to be generated,
-     multiple iterations of the recurrence are used and the results
-     concatenated.
-
- -- Function: int gmp_randinit_lc_2exp_size (gmp_randstate_t STATE,
-          mp_bitcnt_t SIZE)
-     Initialize STATE for a linear congruential algorithm as per
-     `gmp_randinit_lc_2exp'.  A, C and M2EXP are selected from a table,
-     chosen so that SIZE bits (or more) of each X will be used, ie.
-     M2EXP/2 >= SIZE.
-
-     If successful the return value is non-zero.  If SIZE is bigger
-     than the table data provides then the return value is zero.  The
-     maximum SIZE currently supported is 128.
-
- -- Function: void gmp_randinit_set (gmp_randstate_t ROP,
-          gmp_randstate_t OP)
-     Initialize ROP with a copy of the algorithm and state from OP.
-
- -- Function: void gmp_randinit (gmp_randstate_t STATE,
-          gmp_randalg_t ALG, ...)
-     *This function is obsolete.*
-
-     Initialize STATE with an algorithm selected by ALG.  The only
-     choice is `GMP_RAND_ALG_LC', which is `gmp_randinit_lc_2exp_size'
-     described above.  A third parameter of type `unsigned long' is
-     required, this is the SIZE for that function.
-     `GMP_RAND_ALG_DEFAULT' or 0 are the same as `GMP_RAND_ALG_LC'.
-
-     `gmp_randinit' sets bits in the global variable `gmp_errno' to
-     indicate an error.  `GMP_ERROR_UNSUPPORTED_ARGUMENT' if ALG is
-     unsupported, or `GMP_ERROR_INVALID_ARGUMENT' if the SIZE parameter
-     is too big.  It may be noted this error reporting is not thread
-     safe (a good reason to use `gmp_randinit_lc_2exp_size' instead).
-
- -- Function: void gmp_randclear (gmp_randstate_t STATE)
-     Free all memory occupied by STATE.
-
-\1f
-File: gmp.info,  Node: Random State Seeding,  Next: Random State Miscellaneous,  Prev: Random State Initialization,  Up: Random Number Functions
-
-9.2 Random State Seeding
-========================
-
- -- Function: void gmp_randseed (gmp_randstate_t STATE, mpz_t SEED)
- -- Function: void gmp_randseed_ui (gmp_randstate_t STATE,
-          unsigned long int SEED)
-     Set an initial seed value into STATE.
-
-     The size of a seed determines how many different sequences of
-     random numbers that it's possible to generate.  The "quality" of
-     the seed is the randomness of a given seed compared to the
-     previous seed used, and this affects the randomness of separate
-     number sequences.  The method for choosing a seed is critical if
-     the generated numbers are to be used for important applications,
-     such as generating cryptographic keys.
-
-     Traditionally the system time has been used to seed, but care
-     needs to be taken with this.  If an application seeds often and
-     the resolution of the system clock is low, then the same sequence
-     of numbers might be repeated.  Also, the system time is quite easy
-     to guess, so if unpredictability is required then it should
-     definitely not be the only source for the seed value.  On some
-     systems there's a special device `/dev/random' which provides
-     random data better suited for use as a seed.
-
-\1f
-File: gmp.info,  Node: Random State Miscellaneous,  Prev: Random State Seeding,  Up: Random Number Functions
-
-9.3 Random State Miscellaneous
-==============================
-
- -- Function: unsigned long gmp_urandomb_ui (gmp_randstate_t STATE,
-          unsigned long N)
-     Return a uniformly distributed random number of N bits, ie. in the
-     range 0 to 2^N-1 inclusive.  N must be less than or equal to the
-     number of bits in an `unsigned long'.
-
- -- Function: unsigned long gmp_urandomm_ui (gmp_randstate_t STATE,
-          unsigned long N)
-     Return a uniformly distributed random number in the range 0 to
-     N-1, inclusive.
-
-\1f
-File: gmp.info,  Node: Formatted Output,  Next: Formatted Input,  Prev: Random Number Functions,  Up: Top
-
-10 Formatted Output
-*******************
-
-* Menu:
-
-* Formatted Output Strings::
-* Formatted Output Functions::
-* C++ Formatted Output::
-
-\1f
-File: gmp.info,  Node: Formatted Output Strings,  Next: Formatted Output Functions,  Prev: Formatted Output,  Up: Formatted Output
-
-10.1 Format Strings
-===================
-
-`gmp_printf' and friends accept format strings similar to the standard C
-`printf' (*note Formatted Output: (libc)Formatted Output.).  A format
-specification is of the form
-
-     % [flags] [width] [.[precision]] [type] conv
-
-   GMP adds types `Z', `Q' and `F' for `mpz_t', `mpq_t' and `mpf_t'
-respectively, `M' for `mp_limb_t', and `N' for an `mp_limb_t' array.
-`Z', `Q', `M' and `N' behave like integers.  `Q' will print a `/' and a
-denominator, if needed.  `F' behaves like a float.  For example,
-
-     mpz_t z;
-     gmp_printf ("%s is an mpz %Zd\n", "here", z);
-
-     mpq_t q;
-     gmp_printf ("a hex rational: %#40Qx\n", q);
-
-     mpf_t f;
-     int   n;
-     gmp_printf ("fixed point mpf %.*Ff with %d digits\n", n, f, n);
-
-     mp_limb_t l;
-     gmp_printf ("limb %Mu\n", l);
-
-     const mp_limb_t *ptr;
-     mp_size_t       size;
-     gmp_printf ("limb array %Nx\n", ptr, size);
-
-   For `N' the limbs are expected least significant first, as per the
-`mpn' functions (*note Low-level Functions::).  A negative size can be
-given to print the value as a negative.
-
-   All the standard C `printf' types behave the same as the C library
-`printf', and can be freely intermixed with the GMP extensions.  In the
-current implementation the standard parts of the format string are
-simply handed to `printf' and only the GMP extensions handled directly.
-
-   The flags accepted are as follows.  GLIBC style ' is only for the
-standard C types (not the GMP types), and only if the C library
-supports it.
-
-     0         pad with zeros (rather than spaces)
-     #         show the base with `0x', `0X' or `0'
-     +         always show a sign
-     (space)   show a space or a `-' sign
-     '         group digits, GLIBC style (not GMP types)
-
-   The optional width and precision can be given as a number within the
-format string, or as a `*' to take an extra parameter of type `int', the
-same as the standard `printf'.
-
-   The standard types accepted are as follows.  `h' and `l' are
-portable, the rest will depend on the compiler (or include files) for
-the type and the C library for the output.
-
-     h         short
-     hh        char
-     j         intmax_t or uintmax_t
-     l         long or wchar_t
-     ll        long long
-     L         long double
-     q         quad_t or u_quad_t
-     t         ptrdiff_t
-     z         size_t
-
-The GMP types are
-
-     F         mpf_t, float conversions
-     Q         mpq_t, integer conversions
-     M         mp_limb_t, integer conversions
-     N         mp_limb_t array, integer conversions
-     Z         mpz_t, integer conversions
-
-   The conversions accepted are as follows.  `a' and `A' are always
-supported for `mpf_t' but depend on the C library for standard C float
-types.  `m' and `p' depend on the C library.
-
-     a A       hex floats, C99 style
-     c         character
-     d         decimal integer
-     e E       scientific format float
-     f         fixed point float
-     i         same as d
-     g G       fixed or scientific float
-     m         `strerror' string, GLIBC style
-     n         store characters written so far
-     o         octal integer
-     p         pointer
-     s         string
-     u         unsigned integer
-     x X       hex integer
-
-   `o', `x' and `X' are unsigned for the standard C types, but for
-types `Z', `Q' and `N' they are signed.  `u' is not meaningful for `Z',
-`Q' and `N'.
-
-   `M' is a proxy for the C library `l' or `L', according to the size
-of `mp_limb_t'.  Unsigned conversions will be usual, but a signed
-conversion can be used and will interpret the value as a twos complement
-negative.
-
-   `n' can be used with any type, even the GMP types.
-
-   Other types or conversions that might be accepted by the C library
-`printf' cannot be used through `gmp_printf', this includes for
-instance extensions registered with GLIBC `register_printf_function'.
-Also currently there's no support for POSIX `$' style numbered arguments
-(perhaps this will be added in the future).
-
-   The precision field has it's usual meaning for integer `Z' and float
-`F' types, but is currently undefined for `Q' and should not be used
-with that.
-
-   `mpf_t' conversions only ever generate as many digits as can be
-accurately represented by the operand, the same as `mpf_get_str' does.
-Zeros will be used if necessary to pad to the requested precision.  This
-happens even for an `f' conversion of an `mpf_t' which is an integer,
-for instance 2^1024 in an `mpf_t' of 128 bits precision will only
-produce about 40 digits, then pad with zeros to the decimal point.  An
-empty precision field like `%.Fe' or `%.Ff' can be used to specifically
-request just the significant digits.
-
-   The decimal point character (or string) is taken from the current
-locale settings on systems which provide `localeconv' (*note Locales
-and Internationalization: (libc)Locales.).  The C library will normally
-do the same for standard float output.
-
-   The format string is only interpreted as plain `char's, multibyte
-characters are not recognised.  Perhaps this will change in the future.
-
-\1f
-File: gmp.info,  Node: Formatted Output Functions,  Next: C++ Formatted Output,  Prev: Formatted Output Strings,  Up: Formatted Output
-
-10.2 Functions
-==============
-
-Each of the following functions is similar to the corresponding C
-library function.  The basic `printf' forms take a variable argument
-list.  The `vprintf' forms take an argument pointer, see *Note Variadic
-Functions: (libc)Variadic Functions, or `man 3 va_start'.
-
-   It should be emphasised that if a format string is invalid, or the
-arguments don't match what the format specifies, then the behaviour of
-any of these functions will be unpredictable.  GCC format string
-checking is not available, since it doesn't recognise the GMP
-extensions.
-
-   The file based functions `gmp_printf' and `gmp_fprintf' will return
--1 to indicate a write error.  Output is not "atomic", so partial
-output may be produced if a write error occurs.  All the functions can
-return -1 if the C library `printf' variant in use returns -1, but this
-shouldn't normally occur.
-
- -- Function: int gmp_printf (const char *FMT, ...)
- -- Function: int gmp_vprintf (const char *FMT, va_list AP)
-     Print to the standard output `stdout'.  Return the number of
-     characters written, or -1 if an error occurred.
-
- -- Function: int gmp_fprintf (FILE *FP, const char *FMT, ...)
- -- Function: int gmp_vfprintf (FILE *FP, const char *FMT, va_list AP)
-     Print to the stream FP.  Return the number of characters written,
-     or -1 if an error occurred.
-
- -- Function: int gmp_sprintf (char *BUF, const char *FMT, ...)
- -- Function: int gmp_vsprintf (char *BUF, const char *FMT, va_list AP)
-     Form a null-terminated string in BUF.  Return the number of
-     characters written, excluding the terminating null.
-
-     No overlap is permitted between the space at BUF and the string
-     FMT.
-
-     These functions are not recommended, since there's no protection
-     against exceeding the space available at BUF.
-
- -- Function: int gmp_snprintf (char *BUF, size_t SIZE, const char
-          *FMT, ...)
- -- Function: int gmp_vsnprintf (char *BUF, size_t SIZE, const char
-          *FMT, va_list AP)
-     Form a null-terminated string in BUF.  No more than SIZE bytes
-     will be written.  To get the full output, SIZE must be enough for
-     the string and null-terminator.
-
-     The return value is the total number of characters which ought to
-     have been produced, excluding the terminating null.  If RETVAL >=
-     SIZE then the actual output has been truncated to the first SIZE-1
-     characters, and a null appended.
-
-     No overlap is permitted between the region {BUF,SIZE} and the FMT
-     string.
-
-     Notice the return value is in ISO C99 `snprintf' style.  This is
-     so even if the C library `vsnprintf' is the older GLIBC 2.0.x
-     style.
-
- -- Function: int gmp_asprintf (char **PP, const char *FMT, ...)
- -- Function: int gmp_vasprintf (char **PP, const char *FMT, va_list AP)
-     Form a null-terminated string in a block of memory obtained from
-     the current memory allocation function (*note Custom
-     Allocation::).  The block will be the size of the string and
-     null-terminator.  The address of the block in stored to *PP.  The
-     return value is the number of characters produced, excluding the
-     null-terminator.
-
-     Unlike the C library `asprintf', `gmp_asprintf' doesn't return -1
-     if there's no more memory available, it lets the current allocation
-     function handle that.
-
- -- Function: int gmp_obstack_printf (struct obstack *OB, const char
-          *FMT, ...)
- -- Function: int gmp_obstack_vprintf (struct obstack *OB, const char
-          *FMT, va_list AP)
-     Append to the current object in OB.  The return value is the
-     number of characters written.  A null-terminator is not written.
-
-     FMT cannot be within the current object in OB, since that object
-     might move as it grows.
-
-     These functions are available only when the C library provides the
-     obstack feature, which probably means only on GNU systems, see
-     *Note Obstacks: (libc)Obstacks.
-
-\1f
-File: gmp.info,  Node: C++ Formatted Output,  Prev: Formatted Output Functions,  Up: Formatted Output
-
-10.3 C++ Formatted Output
-=========================
-
-The following functions are provided in `libgmpxx' (*note Headers and
-Libraries::), which is built if C++ support is enabled (*note Build
-Options::).  Prototypes are available from `<gmp.h>'.
-
- -- Function: ostream& operator<< (ostream& STREAM, mpz_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     In hex or octal, OP is printed as a signed number, the same as for
-     decimal.  This is unlike the standard `operator<<' routines on
-     `int' etc, which instead give twos complement.
-
- -- Function: ostream& operator<< (ostream& STREAM, mpq_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     Output will be a fraction like `5/9', or if the denominator is 1
-     then just a plain integer like `123'.
-
-     In hex or octal, OP is printed as a signed value, the same as for
-     decimal.  If `ios::showbase' is set then a base indicator is shown
-     on both the numerator and denominator (if the denominator is
-     required).
-
- -- Function: ostream& operator<< (ostream& STREAM, mpf_t OP)
-     Print OP to STREAM, using its `ios' formatting settings.
-     `ios::width' is reset to 0 after output, the same as the standard
-     `ostream operator<<' routines do.
-
-     The decimal point follows the standard library float `operator<<',
-     which on recent systems means the `std::locale' imbued on STREAM.
-
-     Hex and octal are supported, unlike the standard `operator<<' on
-     `double'.  The mantissa will be in hex or octal, the exponent will
-     be in decimal.  For hex the exponent delimiter is an `@'.  This is
-     as per `mpf_out_str'.
-
-     `ios::showbase' is supported, and will put a base on the mantissa,
-     for example hex `0x1.8' or `0x0.8', or octal `01.4' or `00.4'.
-     This last form is slightly strange, but at least differentiates
-     itself from decimal.
-
-   These operators mean that GMP types can be printed in the usual C++
-way, for example,
-
-     mpz_t  z;
-     int    n;
-     ...
-     cout << "iteration " << n << " value " << z << "\n";
-
-   But note that `ostream' output (and `istream' input, *note C++
-Formatted Input::) is the only overloading available for the GMP types
-and that for instance using `+' with an `mpz_t' will have unpredictable
-results.  For classes with overloading, see *Note C++ Class Interface::.
-
-\1f
-File: gmp.info,  Node: Formatted Input,  Next: C++ Class Interface,  Prev: Formatted Output,  Up: Top
-
-11 Formatted Input
-******************
-
-* Menu:
-
-* Formatted Input Strings::
-* Formatted Input Functions::
-* C++ Formatted Input::
-
-\1f
-File: gmp.info,  Node: Formatted Input Strings,  Next: Formatted Input Functions,  Prev: Formatted Input,  Up: Formatted Input
-
-11.1 Formatted Input Strings
-============================
-
-`gmp_scanf' and friends accept format strings similar to the standard C
-`scanf' (*note Formatted Input: (libc)Formatted Input.).  A format
-specification is of the form
-
-     % [flags] [width] [type] conv
-
-   GMP adds types `Z', `Q' and `F' for `mpz_t', `mpq_t' and `mpf_t'
-respectively.  `Z' and `Q' behave like integers.  `Q' will read a `/'
-and a denominator, if present.  `F' behaves like a float.
-
-   GMP variables don't require an `&' when passed to `gmp_scanf', since
-they're already "call-by-reference".  For example,
-
-     /* to read say "a(5) = 1234" */
-     int   n;
-     mpz_t z;
-     gmp_scanf ("a(%d) = %Zd\n", &n, z);
-
-     mpq_t q1, q2;
-     gmp_sscanf ("0377 + 0x10/0x11", "%Qi + %Qi", q1, q2);
-
-     /* to read say "topleft (1.55,-2.66)" */
-     mpf_t x, y;
-     char  buf[32];
-     gmp_scanf ("%31s (%Ff,%Ff)", buf, x, y);
-
-   All the standard C `scanf' types behave the same as in the C library
-`scanf', and can be freely intermixed with the GMP extensions.  In the
-current implementation the standard parts of the format string are
-simply handed to `scanf' and only the GMP extensions handled directly.
-
-   The flags accepted are as follows.  `a' and `'' will depend on
-support from the C library, and `'' cannot be used with GMP types.
-
-     *         read but don't store
-     a         allocate a buffer (string conversions)
-     '         grouped digits, GLIBC style (not GMP
-               types)
-
-   The standard types accepted are as follows.  `h' and `l' are
-portable, the rest will depend on the compiler (or include files) for
-the type and the C library for the input.
-
-     h         short
-     hh        char
-     j         intmax_t or uintmax_t
-     l         long int, double or wchar_t
-     ll        long long
-     L         long double
-     q         quad_t or u_quad_t
-     t         ptrdiff_t
-     z         size_t
-
-The GMP types are
-
-     F         mpf_t, float conversions
-     Q         mpq_t, integer conversions
-     Z         mpz_t, integer conversions
-
-   The conversions accepted are as follows.  `p' and `[' will depend on
-support from the C library, the rest are standard.
-
-     c         character or characters
-     d         decimal integer
-     e E f g G float
-     i         integer with base indicator
-     n         characters read so far
-     o         octal integer
-     p         pointer
-     s         string of non-whitespace characters
-     u         decimal integer
-     x X       hex integer
-     [         string of characters in a set
-
-   `e', `E', `f', `g' and `G' are identical, they all read either fixed
-point or scientific format, and either upper or lower case `e' for the
-exponent in scientific format.
-
-   C99 style hex float format (`printf %a', *note Formatted Output
-Strings::) is always accepted for `mpf_t', but for the standard float
-types it will depend on the C library.
-
-   `x' and `X' are identical, both accept both upper and lower case
-hexadecimal.
-
-   `o', `u', `x' and `X' all read positive or negative values.  For the
-standard C types these are described as "unsigned" conversions, but
-that merely affects certain overflow handling, negatives are still
-allowed (per `strtoul', *note Parsing of Integers: (libc)Parsing of
-Integers.).  For GMP types there are no overflows, so `d' and `u' are
-identical.
-
-   `Q' type reads the numerator and (optional) denominator as given.
-If the value might not be in canonical form then `mpq_canonicalize'
-must be called before using it in any calculations (*note Rational
-Number Functions::).
-
-   `Qi' will read a base specification separately for the numerator and
-denominator.  For example `0x10/11' would be 16/11, whereas `0x10/0x11'
-would be 16/17.
-
-   `n' can be used with any of the types above, even the GMP types.
-`*' to suppress assignment is allowed, though in that case it would do
-nothing at all.
-
-   Other conversions or types that might be accepted by the C library
-`scanf' cannot be used through `gmp_scanf'.
-
-   Whitespace is read and discarded before a field, except for `c' and
-`[' conversions.
-
-   For float conversions, the decimal point character (or string)
-expected is taken from the current locale settings on systems which
-provide `localeconv' (*note Locales and Internationalization:
-(libc)Locales.).  The C library will normally do the same for standard
-float input.
-
-   The format string is only interpreted as plain `char's, multibyte
-characters are not recognised.  Perhaps this will change in the future.
-
-\1f
-File: gmp.info,  Node: Formatted Input Functions,  Next: C++ Formatted Input,  Prev: Formatted Input Strings,  Up: Formatted Input
-
-11.2 Formatted Input Functions
-==============================
-
-Each of the following functions is similar to the corresponding C
-library function.  The plain `scanf' forms take a variable argument
-list.  The `vscanf' forms take an argument pointer, see *Note Variadic
-Functions: (libc)Variadic Functions, or `man 3 va_start'.
-
-   It should be emphasised that if a format string is invalid, or the
-arguments don't match what the format specifies, then the behaviour of
-any of these functions will be unpredictable.  GCC format string
-checking is not available, since it doesn't recognise the GMP
-extensions.
-
-   No overlap is permitted between the FMT string and any of the results
-produced.
-
- -- Function: int gmp_scanf (const char *FMT, ...)
- -- Function: int gmp_vscanf (const char *FMT, va_list AP)
-     Read from the standard input `stdin'.
-
- -- Function: int gmp_fscanf (FILE *FP, const char *FMT, ...)
- -- Function: int gmp_vfscanf (FILE *FP, const char *FMT, va_list AP)
-     Read from the stream FP.
-
- -- Function: int gmp_sscanf (const char *S, const char *FMT, ...)
- -- Function: int gmp_vsscanf (const char *S, const char *FMT, va_list
-          AP)
-     Read from a null-terminated string S.
-
-   The return value from each of these functions is the same as the
-standard C99 `scanf', namely the number of fields successfully parsed
-and stored.  `%n' fields and fields read but suppressed by `*' don't
-count towards the return value.
-
-   If end of input (or a file error) is reached before a character for
-a field or a literal, and if no previous non-suppressed fields have
-matched, then the return value is `EOF' instead of 0.  A whitespace
-character in the format string is only an optional match and doesn't
-induce an `EOF' in this fashion.  Leading whitespace read and discarded
-for a field don't count as characters for that field.
-
-   For the GMP types, input parsing follows C99 rules, namely one
-character of lookahead is used and characters are read while they
-continue to meet the format requirements.  If this doesn't provide a
-complete number then the function terminates, with that field not
-stored nor counted towards the return value.  For instance with `mpf_t'
-an input `1.23e-XYZ' would be read up to the `X' and that character
-pushed back since it's not a digit.  The string `1.23e-' would then be
-considered invalid since an `e' must be followed by at least one digit.
-
-   For the standard C types, in the current implementation GMP calls
-the C library `scanf' functions, which might have looser rules about
-what constitutes a valid input.
-
-   Note that `gmp_sscanf' is the same as `gmp_fscanf' and only does one
-character of lookahead when parsing.  Although clearly it could look at
-its entire input, it is deliberately made identical to `gmp_fscanf',
-the same way C99 `sscanf' is the same as `fscanf'.
-
-\1f
-File: gmp.info,  Node: C++ Formatted Input,  Prev: Formatted Input Functions,  Up: Formatted Input
-
-11.3 C++ Formatted Input
-========================
-
-The following functions are provided in `libgmpxx' (*note Headers and
-Libraries::), which is built only if C++ support is enabled (*note
-Build Options::).  Prototypes are available from `<gmp.h>'.
-
- -- Function: istream& operator>> (istream& STREAM, mpz_t ROP)
-     Read ROP from STREAM, using its `ios' formatting settings.
-
- -- Function: istream& operator>> (istream& STREAM, mpq_t ROP)
-     An integer like `123' will be read, or a fraction like `5/9'.  No
-     whitespace is allowed around the `/'.  If the fraction is not in
-     canonical form then `mpq_canonicalize' must be called (*note
-     Rational Number Functions::) before operating on it.
-
-     As per integer input, an `0' or `0x' base indicator is read when
-     none of `ios::dec', `ios::oct' or `ios::hex' are set.  This is
-     done separately for numerator and denominator, so that for instance
-     `0x10/11' is 16/11 and `0x10/0x11' is 16/17.
-
- -- Function: istream& operator>> (istream& STREAM, mpf_t ROP)
-     Read ROP from STREAM, using its `ios' formatting settings.
-
-     Hex or octal floats are not supported, but might be in the future,
-     or perhaps it's best to accept only what the standard float
-     `operator>>' does.
-
-   Note that digit grouping specified by the `istream' locale is
-currently not accepted.  Perhaps this will change in the future.
-
-
-   These operators mean that GMP types can be read in the usual C++
-way, for example,
-
-     mpz_t  z;
-     ...
-     cin >> z;
-
-   But note that `istream' input (and `ostream' output, *note C++
-Formatted Output::) is the only overloading available for the GMP types
-and that for instance using `+' with an `mpz_t' will have unpredictable
-results.  For classes with overloading, see *Note C++ Class Interface::.
-
-\1f
-File: gmp.info,  Node: C++ Class Interface,  Next: BSD Compatible Functions,  Prev: Formatted Input,  Up: Top
-
-12 C++ Class Interface
-**********************
-
-This chapter describes the C++ class based interface to GMP.
-
-   All GMP C language types and functions can be used in C++ programs,
-since `gmp.h' has `extern "C"' qualifiers, but the class interface
-offers overloaded functions and operators which may be more convenient.
-
-   Due to the implementation of this interface, a reasonably recent C++
-compiler is required, one supporting namespaces, partial specialization
-of templates and member templates.  For GCC this means version 2.91 or
-later.
-
-   *Everything described in this chapter is to be considered preliminary
-and might be subject to incompatible changes if some unforeseen
-difficulty reveals itself.*
-
-* Menu:
-
-* C++ Interface General::
-* C++ Interface Integers::
-* C++ Interface Rationals::
-* C++ Interface Floats::
-* C++ Interface Random Numbers::
-* C++ Interface Limitations::
-
-\1f
-File: gmp.info,  Node: C++ Interface General,  Next: C++ Interface Integers,  Prev: C++ Class Interface,  Up: C++ Class Interface
-
-12.1 C++ Interface General
-==========================
-
-All the C++ classes and functions are available with
-
-     #include <gmpxx.h>
-
-   Programs should be linked with the `libgmpxx' and `libgmp'
-libraries.  For example,
-
-     g++ mycxxprog.cc -lgmpxx -lgmp
-
-The classes defined are
-
- -- Class: mpz_class
- -- Class: mpq_class
- -- Class: mpf_class
-
-   The standard operators and various standard functions are overloaded
-to allow arithmetic with these classes.  For example,
-
-     int
-     main (void)
-     {
-       mpz_class a, b, c;
-
-       a = 1234;
-       b = "-5678";
-       c = a+b;
-       cout << "sum is " << c << "\n";
-       cout << "absolute value is " << abs(c) << "\n";
-
-       return 0;
-     }
-
-   An important feature of the implementation is that an expression like
-`a=b+c' results in a single call to the corresponding `mpz_add',
-without using a temporary for the `b+c' part.  Expressions which by
-their nature imply intermediate values, like `a=b*c+d*e', still use
-temporaries though.
-
-   The classes can be freely intermixed in expressions, as can the
-classes and the standard types `long', `unsigned long' and `double'.
-Smaller types like `int' or `float' can also be intermixed, since C++
-will promote them.
-
-   Note that `bool' is not accepted directly, but must be explicitly
-cast to an `int' first.  This is because C++ will automatically convert
-any pointer to a `bool', so if GMP accepted `bool' it would make all
-sorts of invalid class and pointer combinations compile but almost
-certainly not do anything sensible.
-
-   Conversions back from the classes to standard C++ types aren't done
-automatically, instead member functions like `get_si' are provided (see
-the following sections for details).
-
-   Also there are no automatic conversions from the classes to the
-corresponding GMP C types, instead a reference to the underlying C
-object can be obtained with the following functions,
-
- -- Function: mpz_t mpz_class::get_mpz_t ()
- -- Function: mpq_t mpq_class::get_mpq_t ()
- -- Function: mpf_t mpf_class::get_mpf_t ()
-
-   These can be used to call a C function which doesn't have a C++ class
-interface.  For example to set `a' to the GCD of `b' and `c',
-
-     mpz_class a, b, c;
-     ...
-     mpz_gcd (a.get_mpz_t(), b.get_mpz_t(), c.get_mpz_t());
-
-   In the other direction, a class can be initialized from the
-corresponding GMP C type, or assigned to if an explicit constructor is
-used.  In both cases this makes a copy of the value, it doesn't create
-any sort of association.  For example,
-
-     mpz_t z;
-     // ... init and calculate z ...
-     mpz_class x(z);
-     mpz_class y;
-     y = mpz_class (z);
-
-   There are no namespace setups in `gmpxx.h', all types and functions
-are simply put into the global namespace.  This is what `gmp.h' has
-done in the past, and continues to do for compatibility.  The extras
-provided by `gmpxx.h' follow GMP naming conventions and are unlikely to
-clash with anything.
-
-\1f
-File: gmp.info,  Node: C++ Interface Integers,  Next: C++ Interface Rationals,  Prev: C++ Interface General,  Up: C++ Class Interface
-
-12.2 C++ Interface Integers
-===========================
-
- -- Function: void mpz_class::mpz_class (type N)
-     Construct an `mpz_class'.  All the standard C++ types may be used,
-     except `long long' and `long double', and all the GMP C++ classes
-     can be used.  Any necessary conversion follows the corresponding C
-     function, for example `double' follows `mpz_set_d' (*note
-     Assigning Integers::).
-
- -- Function: void mpz_class::mpz_class (mpz_t Z)
-     Construct an `mpz_class' from an `mpz_t'.  The value in Z is
-     copied into the new `mpz_class', there won't be any permanent
-     association between it and Z.
-
- -- Function: void mpz_class::mpz_class (const char *S)
- -- Function: void mpz_class::mpz_class (const char *S, int BASE = 0)
- -- Function: void mpz_class::mpz_class (const string& S)
- -- Function: void mpz_class::mpz_class (const string& S, int BASE = 0)
-     Construct an `mpz_class' converted from a string using
-     `mpz_set_str' (*note Assigning Integers::).
-
-     If the string is not a valid integer, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: mpz_class operator/ (mpz_class A, mpz_class D)
- -- Function: mpz_class operator% (mpz_class A, mpz_class D)
-     Divisions involving `mpz_class' round towards zero, as per the
-     `mpz_tdiv_q' and `mpz_tdiv_r' functions (*note Integer Division::).
-     This is the same as the C99 `/' and `%' operators.
-
-     The `mpz_fdiv...' or `mpz_cdiv...' functions can always be called
-     directly if desired.  For example,
-
-          mpz_class q, a, d;
-          ...
-          mpz_fdiv_q (q.get_mpz_t(), a.get_mpz_t(), d.get_mpz_t());
-
- -- Function: mpz_class abs (mpz_class OP1)
- -- Function: int cmp (mpz_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpz_class OP2)
- -- Function: bool mpz_class::fits_sint_p (void)
- -- Function: bool mpz_class::fits_slong_p (void)
- -- Function: bool mpz_class::fits_sshort_p (void)
- -- Function: bool mpz_class::fits_uint_p (void)
- -- Function: bool mpz_class::fits_ulong_p (void)
- -- Function: bool mpz_class::fits_ushort_p (void)
- -- Function: double mpz_class::get_d (void)
- -- Function: long mpz_class::get_si (void)
- -- Function: string mpz_class::get_str (int BASE = 10)
- -- Function: unsigned long mpz_class::get_ui (void)
- -- Function: int mpz_class::set_str (const char *STR, int BASE)
- -- Function: int mpz_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpz_class OP)
- -- Function: mpz_class sqrt (mpz_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
-
-   Overloaded operators for combinations of `mpz_class' and `double'
-are provided for completeness, but it should be noted that if the given
-`double' is not an integer then the way any rounding is done is
-currently unspecified.  The rounding might take place at the start, in
-the middle, or at the end of the operation, and it might change in the
-future.
-
-   Conversions between `mpz_class' and `double', however, are defined
-to follow the corresponding C functions `mpz_get_d' and `mpz_set_d'.
-And comparisons are always made exactly, as per `mpz_cmp_d'.
-
-\1f
-File: gmp.info,  Node: C++ Interface Rationals,  Next: C++ Interface Floats,  Prev: C++ Interface Integers,  Up: C++ Class Interface
-
-12.3 C++ Interface Rationals
-============================
-
-In all the following constructors, if a fraction is given then it
-should be in canonical form, or if not then `mpq_class::canonicalize'
-called.
-
- -- Function: void mpq_class::mpq_class (type OP)
- -- Function: void mpq_class::mpq_class (integer NUM, integer DEN)
-     Construct an `mpq_class'.  The initial value can be a single value
-     of any type, or a pair of integers (`mpz_class' or standard C++
-     integer types) representing a fraction, except that `long long'
-     and `long double' are not supported.  For example,
-
-          mpq_class q (99);
-          mpq_class q (1.75);
-          mpq_class q (1, 3);
-
- -- Function: void mpq_class::mpq_class (mpq_t Q)
-     Construct an `mpq_class' from an `mpq_t'.  The value in Q is
-     copied into the new `mpq_class', there won't be any permanent
-     association between it and Q.
-
- -- Function: void mpq_class::mpq_class (const char *S)
- -- Function: void mpq_class::mpq_class (const char *S, int BASE = 0)
- -- Function: void mpq_class::mpq_class (const string& S)
- -- Function: void mpq_class::mpq_class (const string& S, int BASE = 0)
-     Construct an `mpq_class' converted from a string using
-     `mpq_set_str' (*note Initializing Rationals::).
-
-     If the string is not a valid rational, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: void mpq_class::canonicalize ()
-     Put an `mpq_class' into canonical form, as per *Note Rational
-     Number Functions::.  All arithmetic operators require their
-     operands in canonical form, and will return results in canonical
-     form.
-
- -- Function: mpq_class abs (mpq_class OP)
- -- Function: int cmp (mpq_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpq_class OP2)
- -- Function: double mpq_class::get_d (void)
- -- Function: string mpq_class::get_str (int BASE = 10)
- -- Function: int mpq_class::set_str (const char *STR, int BASE)
- -- Function: int mpq_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpq_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
- -- Function: mpz_class& mpq_class::get_num ()
- -- Function: mpz_class& mpq_class::get_den ()
-     Get a reference to an `mpz_class' which is the numerator or
-     denominator of an `mpq_class'.  This can be used both for read and
-     write access.  If the object returned is modified, it modifies the
-     original `mpq_class'.
-
-     If direct manipulation might produce a non-canonical value, then
-     `mpq_class::canonicalize' must be called before further operations.
-
- -- Function: mpz_t mpq_class::get_num_mpz_t ()
- -- Function: mpz_t mpq_class::get_den_mpz_t ()
-     Get a reference to the underlying `mpz_t' numerator or denominator
-     of an `mpq_class'.  This can be passed to C functions expecting an
-     `mpz_t'.  Any modifications made to the `mpz_t' will modify the
-     original `mpq_class'.
-
-     If direct manipulation might produce a non-canonical value, then
-     `mpq_class::canonicalize' must be called before further operations.
-
- -- Function: istream& operator>> (istream& STREAM, mpq_class& ROP);
-     Read ROP from STREAM, using its `ios' formatting settings, the
-     same as `mpq_t operator>>' (*note C++ Formatted Input::).
-
-     If the ROP read might not be in canonical form then
-     `mpq_class::canonicalize' must be called.
-
-\1f
-File: gmp.info,  Node: C++ Interface Floats,  Next: C++ Interface Random Numbers,  Prev: C++ Interface Rationals,  Up: C++ Class Interface
-
-12.4 C++ Interface Floats
-=========================
-
-When an expression requires the use of temporary intermediate
-`mpf_class' values, like `f=g*h+x*y', those temporaries will have the
-same precision as the destination `f'.  Explicit constructors can be
-used if this doesn't suit.
-
- -- Function:  mpf_class::mpf_class (type OP)
- -- Function:  mpf_class::mpf_class (type OP, unsigned long PREC)
-     Construct an `mpf_class'.  Any standard C++ type can be used,
-     except `long long' and `long double', and any of the GMP C++
-     classes can be used.
-
-     If PREC is given, the initial precision is that value, in bits.  If
-     PREC is not given, then the initial precision is determined by the
-     type of OP given.  An `mpz_class', `mpq_class', or C++ builtin
-     type will give the default `mpf' precision (*note Initializing
-     Floats::).  An `mpf_class' or expression will give the precision
-     of that value.  The precision of a binary expression is the higher
-     of the two operands.
-
-          mpf_class f(1.5);        // default precision
-          mpf_class f(1.5, 500);   // 500 bits (at least)
-          mpf_class f(x);          // precision of x
-          mpf_class f(abs(x));     // precision of x
-          mpf_class f(-g, 1000);   // 1000 bits (at least)
-          mpf_class f(x+y);        // greater of precisions of x and y
-
- -- Function: void mpf_class::mpf_class (const char *S)
- -- Function: void mpf_class::mpf_class (const char *S, unsigned long
-          PREC, int BASE = 0)
- -- Function: void mpf_class::mpf_class (const string& S)
- -- Function: void mpf_class::mpf_class (const string& S, unsigned long
-          PREC, int BASE = 0)
-     Construct an `mpf_class' converted from a string using
-     `mpf_set_str' (*note Assigning Floats::).  If PREC is given, the
-     initial precision is that value, in bits.  If not, the default
-     `mpf' precision (*note Initializing Floats::) is used.
-
-     If the string is not a valid float, an `std::invalid_argument'
-     exception is thrown.  The same applies to `operator='.
-
- -- Function: mpf_class& mpf_class::operator= (type OP)
-     Convert and store the given OP value to an `mpf_class' object.  The
-     same types are accepted as for the constructors above.
-
-     Note that `operator=' only stores a new value, it doesn't copy or
-     change the precision of the destination, instead the value is
-     truncated if necessary.  This is the same as `mpf_set' etc.  Note
-     in particular this means for `mpf_class' a copy constructor is not
-     the same as a default constructor plus assignment.
-
-          mpf_class x (y);   // x created with precision of y
-
-          mpf_class x;       // x created with default precision
-          x = y;             // value truncated to that precision
-
-     Applications using templated code may need to be careful about the
-     assumptions the code makes in this area, when working with
-     `mpf_class' values of various different or non-default precisions.
-     For instance implementations of the standard `complex' template
-     have been seen in both styles above, though of course `complex' is
-     normally only actually specified for use with the builtin float
-     types.
-
- -- Function: mpf_class abs (mpf_class OP)
- -- Function: mpf_class ceil (mpf_class OP)
- -- Function: int cmp (mpf_class OP1, type OP2)
- -- Function: int cmp (type OP1, mpf_class OP2)
- -- Function: bool mpf_class::fits_sint_p (void)
- -- Function: bool mpf_class::fits_slong_p (void)
- -- Function: bool mpf_class::fits_sshort_p (void)
- -- Function: bool mpf_class::fits_uint_p (void)
- -- Function: bool mpf_class::fits_ulong_p (void)
- -- Function: bool mpf_class::fits_ushort_p (void)
- -- Function: mpf_class floor (mpf_class OP)
- -- Function: mpf_class hypot (mpf_class OP1, mpf_class OP2)
- -- Function: double mpf_class::get_d (void)
- -- Function: long mpf_class::get_si (void)
- -- Function: string mpf_class::get_str (mp_exp_t& EXP, int BASE = 10,
-          size_t DIGITS = 0)
- -- Function: unsigned long mpf_class::get_ui (void)
- -- Function: int mpf_class::set_str (const char *STR, int BASE)
- -- Function: int mpf_class::set_str (const string& STR, int BASE)
- -- Function: int sgn (mpf_class OP)
- -- Function: mpf_class sqrt (mpf_class OP)
- -- Function: mpf_class trunc (mpf_class OP)
-     These functions provide a C++ class interface to the corresponding
-     GMP C routines.
-
-     `cmp' can be used with any of the classes or the standard C++
-     types, except `long long' and `long double'.
-
-     The accuracy provided by `hypot' is not currently guaranteed.
-
- -- Function: mp_bitcnt_t mpf_class::get_prec ()
- -- Function: void mpf_class::set_prec (mp_bitcnt_t PREC)
- -- Function: void mpf_class::set_prec_raw (mp_bitcnt_t PREC)
-     Get or set the current precision of an `mpf_class'.
-
-     The restrictions described for `mpf_set_prec_raw' (*note
-     Initializing Floats::) apply to `mpf_class::set_prec_raw'.  Note
-     in particular that the `mpf_class' must be restored to it's
-     allocated precision before being destroyed.  This must be done by
-     application code, there's no automatic mechanism for it.
-
-\1f
-File: gmp.info,  Node: C++ Interface Random Numbers,  Next: C++ Interface Limitations,  Prev: C++ Interface Floats,  Up: C++ Class Interface
-
-12.5 C++ Interface Random Numbers
-=================================
-
- -- Class: gmp_randclass
-     The C++ class interface to the GMP random number functions uses
-     `gmp_randclass' to hold an algorithm selection and current state,
-     as per `gmp_randstate_t'.
-
- -- Function:  gmp_randclass::gmp_randclass (void (*RANDINIT)
-          (gmp_randstate_t, ...), ...)
-     Construct a `gmp_randclass', using a call to the given RANDINIT
-     function (*note Random State Initialization::).  The arguments
-     expected are the same as RANDINIT, but with `mpz_class' instead of
-     `mpz_t'.  For example,
-
-          gmp_randclass r1 (gmp_randinit_default);
-          gmp_randclass r2 (gmp_randinit_lc_2exp_size, 32);
-          gmp_randclass r3 (gmp_randinit_lc_2exp, a, c, m2exp);
-          gmp_randclass r4 (gmp_randinit_mt);
-
-     `gmp_randinit_lc_2exp_size' will fail if the size requested is too
-     big, an `std::length_error' exception is thrown in that case.
-
- -- Function:  gmp_randclass::gmp_randclass (gmp_randalg_t ALG, ...)
-     Construct a `gmp_randclass' using the same parameters as
-     `gmp_randinit' (*note Random State Initialization::).  This
-     function is obsolete and the above RANDINIT style should be
-     preferred.
-
- -- Function: void gmp_randclass::seed (unsigned long int S)
- -- Function: void gmp_randclass::seed (mpz_class S)
-     Seed a random number generator.  See *note Random Number
-     Functions::, for how to choose a good seed.
-
- -- Function: mpz_class gmp_randclass::get_z_bits (unsigned long BITS)
- -- Function: mpz_class gmp_randclass::get_z_bits (mpz_class BITS)
-     Generate a random integer with a specified number of bits.
-
- -- Function: mpz_class gmp_randclass::get_z_range (mpz_class N)
-     Generate a random integer in the range 0 to N-1 inclusive.
-
- -- Function: mpf_class gmp_randclass::get_f ()
- -- Function: mpf_class gmp_randclass::get_f (unsigned long PREC)
-     Generate a random float F in the range 0 <= F < 1.  F will be to
-     PREC bits precision, or if PREC is not given then to the precision
-     of the destination.  For example,
-
-          gmp_randclass  r;
-          ...
-          mpf_class  f (0, 512);   // 512 bits precision
-          f = r.get_f();           // random number, 512 bits
-
-\1f
-File: gmp.info,  Node: C++ Interface Limitations,  Prev: C++ Interface Random Numbers,  Up: C++ Class Interface
-
-12.6 C++ Interface Limitations
-==============================
-
-`mpq_class' and Templated Reading
-     A generic piece of template code probably won't know that
-     `mpq_class' requires a `canonicalize' call if inputs read with
-     `operator>>' might be non-canonical.  This can lead to incorrect
-     results.
-
-     `operator>>' behaves as it does for reasons of efficiency.  A
-     canonicalize can be quite time consuming on large operands, and is
-     best avoided if it's not necessary.
-
-     But this potential difficulty reduces the usefulness of
-     `mpq_class'.  Perhaps a mechanism to tell `operator>>' what to do
-     will be adopted in the future, maybe a preprocessor define, a
-     global flag, or an `ios' flag pressed into service.  Or maybe, at
-     the risk of inconsistency, the `mpq_class' `operator>>' could
-     canonicalize and leave `mpq_t' `operator>>' not doing so, for use
-     on those occasions when that's acceptable.  Send feedback or
-     alternate ideas to <gmp-bugs@gmplib.org>.
-
-Subclassing
-     Subclassing the GMP C++ classes works, but is not currently
-     recommended.
-
-     Expressions involving subclasses resolve correctly (or seem to),
-     but in normal C++ fashion the subclass doesn't inherit
-     constructors and assignments.  There's many of those in the GMP
-     classes, and a good way to reestablish them in a subclass is not
-     yet provided.
-
-Templated Expressions
-     A subtle difficulty exists when using expressions together with
-     application-defined template functions.  Consider the following,
-     with `T' intended to be some numeric type,
-
-          template <class T>
-          T fun (const T &, const T &);
-
-     When used with, say, plain `mpz_class' variables, it works fine:
-     `T' is resolved as `mpz_class'.
-
-          mpz_class f(1), g(2);
-          fun (f, g);    // Good
-
-     But when one of the arguments is an expression, it doesn't work.
-
-          mpz_class f(1), g(2), h(3);
-          fun (f, g+h);  // Bad
-
-     This is because `g+h' ends up being a certain expression template
-     type internal to `gmpxx.h', which the C++ template resolution
-     rules are unable to automatically convert to `mpz_class'.  The
-     workaround is simply to add an explicit cast.
-
-          mpz_class f(1), g(2), h(3);
-          fun (f, mpz_class(g+h));  // Good
-
-     Similarly, within `fun' it may be necessary to cast an expression
-     to type `T' when calling a templated `fun2'.
-
-          template <class T>
-          void fun (T f, T g)
-          {
-            fun2 (f, f+g);     // Bad
-          }
-
-          template <class T>
-          void fun (T f, T g)
-          {
-            fun2 (f, T(f+g));  // Good
-          }
-
-\1f
-File: gmp.info,  Node: BSD Compatible Functions,  Next: Custom Allocation,  Prev: C++ Class Interface,  Up: Top
-
-13 Berkeley MP Compatible Functions
-***********************************
-
-These functions are intended to be fully compatible with the Berkeley MP
-library which is available on many BSD derived U*ix systems.  The
-`--enable-mpbsd' option must be used when building GNU MP to make these
-available (*note Installing GMP::).
-
-   The original Berkeley MP library has a usage restriction: you cannot
-use the same variable as both source and destination in a single
-function call.  The compatible functions in GNU MP do not share this
-restriction--inputs and outputs may overlap.
-
-   It is not recommended that new programs are written using these
-functions.  Apart from the incomplete set of functions, the interface
-for initializing `MINT' objects is more error prone, and the `pow'
-function collides with `pow' in `libm.a'.
-
-   Include the header `mp.h' to get the definition of the necessary
-types and functions.  If you are on a BSD derived system, make sure to
-include GNU `mp.h' if you are going to link the GNU `libmp.a' to your
-program.  This means that you probably need to give the `-I<dir>'
-option to the compiler, where `<dir>' is the directory where you have
-GNU `mp.h'.
-
- -- Function: MINT * itom (signed short int INITIAL_VALUE)
-     Allocate an integer consisting of a `MINT' object and dynamic limb
-     space.  Initialize the integer to INITIAL_VALUE.  Return a pointer
-     to the `MINT' object.
-
- -- Function: MINT * xtom (char *INITIAL_VALUE)
-     Allocate an integer consisting of a `MINT' object and dynamic limb
-     space.  Initialize the integer from INITIAL_VALUE, a hexadecimal,
-     null-terminated C string.  Return a pointer to the `MINT' object.
-
- -- Function: void move (MINT *SRC, MINT *DEST)
-     Set DEST to SRC by copying.  Both variables must be previously
-     initialized.
-
- -- Function: void madd (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Add SRC_1 and SRC_2 and put the sum in DESTINATION.
-
- -- Function: void msub (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Subtract SRC_2 from SRC_1 and put the difference in DESTINATION.
-
- -- Function: void mult (MINT *SRC_1, MINT *SRC_2, MINT *DESTINATION)
-     Multiply SRC_1 and SRC_2 and put the product in DESTINATION.
-
- -- Function: void mdiv (MINT *DIVIDEND, MINT *DIVISOR, MINT *QUOTIENT,
-          MINT *REMAINDER)
- -- Function: void sdiv (MINT *DIVIDEND, signed short int DIVISOR, MINT
-          *QUOTIENT, signed short int *REMAINDER)
-     Set QUOTIENT to DIVIDEND/DIVISOR, and REMAINDER to DIVIDEND mod
-     DIVISOR.  The quotient is rounded towards zero; the remainder has
-     the same sign as the dividend unless it is zero.
-
-     Some implementations of these functions work differently--or not
-     at all--for negative arguments.
-
- -- Function: void msqrt (MINT *OP, MINT *ROOT, MINT *REMAINDER)
-     Set ROOT to the truncated integer part of the square root of OP,
-     like `mpz_sqrt'.  Set REMAINDER to OP-ROOT*ROOT, i.e.  zero if OP
-     is a perfect square.
-
-     If ROOT and REMAINDER are the same variable, the results are
-     undefined.
-
- -- Function: void pow (MINT *BASE, MINT *EXP, MINT *MOD, MINT *DEST)
-     Set DEST to (BASE raised to EXP) modulo MOD.
-
-     Note that the name `pow' clashes with `pow' from the standard C
-     math library (*note Exponentiation and Logarithms: (libc)Exponents
-     and Logarithms.).  An application will only be able to use one or
-     the other.
-
- -- Function: void rpow (MINT *BASE, signed short int EXP, MINT *DEST)
-     Set DEST to BASE raised to EXP.
-
- -- Function: void gcd (MINT *OP1, MINT *OP2, MINT *RES)
-     Set RES to the greatest common divisor of OP1 and OP2.
-
- -- Function: int mcmp (MINT *OP1, MINT *OP2)
-     Compare OP1 and OP2.  Return a positive value if OP1 > OP2, zero
-     if OP1 = OP2, and a negative value if OP1 < OP2.
-
- -- Function: void min (MINT *DEST)
-     Input a decimal string from `stdin', and put the read integer in
-     DEST.  SPC and TAB are allowed in the number string, and are
-     ignored.
-
- -- Function: void mout (MINT *SRC)
-     Output SRC to `stdout', as a decimal string.  Also output a
-     newline.
-
- -- Function: char * mtox (MINT *OP)
-     Convert OP to a hexadecimal string, and return a pointer to the
-     string.  The returned string is allocated using the default memory
-     allocation function, `malloc' by default.  It will be
-     `strlen(str)+1' bytes, that being exactly enough for the string
-     and null-terminator.
-
- -- Function: void mfree (MINT *OP)
-     De-allocate, the space used by OP.  *This function should only be
-     passed a value returned by `itom' or `xtom'.*
-
-\1f
-File: gmp.info,  Node: Custom Allocation,  Next: Language Bindings,  Prev: BSD Compatible Functions,  Up: Top
-
-14 Custom Allocation
-********************
-
-By default GMP uses `malloc', `realloc' and `free' for memory
-allocation, and if they fail GMP prints a message to the standard error
-output and terminates the program.
-
-   Alternate functions can be specified, to allocate memory in a
-different way or to have a different error action on running out of
-memory.
-
-   This feature is available in the Berkeley compatibility library
-(*note BSD Compatible Functions::) as well as the main GMP library.
-
- -- Function: void mp_set_memory_functions (
-          void *(*ALLOC_FUNC_PTR) (size_t),
-          void *(*REALLOC_FUNC_PTR) (void *, size_t, size_t),
-          void (*FREE_FUNC_PTR) (void *, size_t))
-     Replace the current allocation functions from the arguments.  If
-     an argument is `NULL', the corresponding default function is used.
-
-     These functions will be used for all memory allocation done by
-     GMP, apart from temporary space from `alloca' if that function is
-     available and GMP is configured to use it (*note Build Options::).
-
-     *Be sure to call `mp_set_memory_functions' only when there are no
-     active GMP objects allocated using the previous memory functions!
-     Usually that means calling it before any other GMP function.*
-
-   The functions supplied should fit the following declarations:
-
- -- Function: void * allocate_function (size_t ALLOC_SIZE)
-     Return a pointer to newly allocated space with at least ALLOC_SIZE
-     bytes.
-
- -- Function: void * reallocate_function (void *PTR, size_t OLD_SIZE,
-          size_t NEW_SIZE)
-     Resize a previously allocated block PTR of OLD_SIZE bytes to be
-     NEW_SIZE bytes.
-
-     The block may be moved if necessary or if desired, and in that
-     case the smaller of OLD_SIZE and NEW_SIZE bytes must be copied to
-     the new location.  The return value is a pointer to the resized
-     block, that being the new location if moved or just PTR if not.
-
-     PTR is never `NULL', it's always a previously allocated block.
-     NEW_SIZE may be bigger or smaller than OLD_SIZE.
-
- -- Function: void free_function (void *PTR, size_t SIZE)
-     De-allocate the space pointed to by PTR.
-
-     PTR is never `NULL', it's always a previously allocated block of
-     SIZE bytes.
-
-   A "byte" here means the unit used by the `sizeof' operator.
-
-   The OLD_SIZE parameters to REALLOCATE_FUNCTION and FREE_FUNCTION are
-passed for convenience, but of course can be ignored if not needed.
-The default functions using `malloc' and friends for instance don't use
-them.
-
-   No error return is allowed from any of these functions, if they
-return then they must have performed the specified operation.  In
-particular note that ALLOCATE_FUNCTION or REALLOCATE_FUNCTION mustn't
-return `NULL'.
-
-   Getting a different fatal error action is a good use for custom
-allocation functions, for example giving a graphical dialog rather than
-the default print to `stderr'.  How much is possible when genuinely out
-of memory is another question though.
-
-   There's currently no defined way for the allocation functions to
-recover from an error such as out of memory, they must terminate
-program execution.  A `longjmp' or throwing a C++ exception will have
-undefined results.  This may change in the future.
-
-   GMP may use allocated blocks to hold pointers to other allocated
-blocks.  This will limit the assumptions a conservative garbage
-collection scheme can make.
-
-   Since the default GMP allocation uses `malloc' and friends, those
-functions will be linked in even if the first thing a program does is an
-`mp_set_memory_functions'.  It's necessary to change the GMP sources if
-this is a problem.
-
-
- -- Function: void mp_get_memory_functions (
-          void *(**ALLOC_FUNC_PTR) (size_t),
-          void *(**REALLOC_FUNC_PTR) (void *, size_t, size_t),
-          void (**FREE_FUNC_PTR) (void *, size_t))
-     Get the current allocation functions, storing function pointers to
-     the locations given by the arguments.  If an argument is `NULL',
-     that function pointer is not stored.
-
-     For example, to get just the current free function,
-
-          void (*freefunc) (void *, size_t);
-
-          mp_get_memory_functions (NULL, NULL, &freefunc);
-
-\1f
-File: gmp.info,  Node: Language Bindings,  Next: Algorithms,  Prev: Custom Allocation,  Up: Top
-
-15 Language Bindings
-********************
-
-The following packages and projects offer access to GMP from languages
-other than C, though perhaps with varying levels of functionality and
-efficiency.
-
-
-C++
-        * GMP C++ class interface, *note C++ Class Interface::
-          Straightforward interface, expression templates to eliminate
-          temporaries.
-
-        * ALP `http://www-sop.inria.fr/saga/logiciels/ALP/'
-          Linear algebra and polynomials using templates.
-
-        * Arithmos `http://www.win.ua.ac.be/~cant/arithmos/'
-          Rationals with infinities and square roots.
-
-        * CLN `http://www.ginac.de/CLN/'
-          High level classes for arithmetic.
-
-        * LiDIA `http://www.cdc.informatik.tu-darmstadt.de/TI/LiDIA/'
-          A C++ library for computational number theory.
-
-        * Linbox `http://www.linalg.org/'
-          Sparse vectors and matrices.
-
-        * NTL `http://www.shoup.net/ntl/'
-          A C++ number theory library.
-
-Fortran
-        * Omni F77 `http://phase.hpcc.jp/Omni/home.html'
-          Arbitrary precision floats.
-
-Haskell
-        * Glasgow Haskell Compiler `http://www.haskell.org/ghc/'
-
-Java
-        * Kaffe `http://www.kaffe.org/'
-
-        * Kissme `http://kissme.sourceforge.net/'
-
-Lisp
-        * GNU Common Lisp `http://www.gnu.org/software/gcl/gcl.html'
-
-        * Librep `http://librep.sourceforge.net/'
-
-        * XEmacs (21.5.18 beta and up) `http://www.xemacs.org'
-          Optional big integers, rationals and floats using GMP.
-
-M4
-        * GNU m4 betas `http://www.seindal.dk/rene/gnu/'
-          Optionally provides an arbitrary precision `mpeval'.
-
-ML
-        * MLton compiler `http://mlton.org/'
-
-Objective Caml
-        * MLGMP `http://www.di.ens.fr/~monniaux/programmes.html.en'
-
-        * Numerix `http://pauillac.inria.fr/~quercia/'
-          Optionally using GMP.
-
-Oz
-        * Mozart `http://www.mozart-oz.org/'
-
-Pascal
-        * GNU Pascal Compiler `http://www.gnu-pascal.de/'
-          GMP unit.
-
-        * Numerix `http://pauillac.inria.fr/~quercia/'
-          For Free Pascal, optionally using GMP.
-
-Perl
-        * GMP module, see `demos/perl' in the GMP sources (*note
-          Demonstration Programs::).
-
-        * Math::GMP `http://www.cpan.org/'
-          Compatible with Math::BigInt, but not as many functions as
-          the GMP module above.
-
-        * Math::BigInt::GMP `http://www.cpan.org/'
-          Plug Math::GMP into normal Math::BigInt operations.
-
-Pike
-        * mpz module in the standard distribution,
-          `http://pike.ida.liu.se/'
-
-Prolog
-        * SWI Prolog `http://www.swi-prolog.org/'
-          Arbitrary precision floats.
-
-Python
-        * mpz module in the standard distribution,
-          `http://www.python.org/'
-
-        * GMPY `http://gmpy.sourceforge.net/'
-
-Scheme
-        * GNU Guile (upcoming 1.8)
-          `http://www.gnu.org/software/guile/guile.html'
-
-        * RScheme `http://www.rscheme.org/'
-
-        * STklos `http://www.stklos.org/'
-
-Smalltalk
-        * GNU Smalltalk
-          `http://www.smalltalk.org/versions/GNUSmalltalk.html'
-
-Other
-        * Axiom `http://savannah.nongnu.org/projects/axiom'
-          Computer algebra using GCL.
-
-        * DrGenius `http://drgenius.seul.org/'
-          Geometry system and mathematical programming language.
-
-        * GiNaC `http://www.ginac.de/'
-          C++ computer algebra using CLN.
-
-        * GOO `http://www.googoogaga.org/'
-          Dynamic object oriented language.
-
-        * Maxima `http://www.ma.utexas.edu/users/wfs/maxima.html'
-          Macsyma computer algebra using GCL.
-
-        * Q `http://q-lang.sourceforge.net/'
-          Equational programming system.
-
-        * Regina `http://regina.sourceforge.net/'
-          Topological calculator.
-
-        * Yacas `http://www.xs4all.nl/~apinkus/yacas.html'
-          Yet another computer algebra system.
-
-
-\1f
-File: gmp.info,  Node: Algorithms,  Next: Internals,  Prev: Language Bindings,  Up: Top
-
-16 Algorithms
-*************
-
-This chapter is an introduction to some of the algorithms used for
-various GMP operations.  The code is likely to be hard to understand
-without knowing something about the algorithms.
-
-   Some GMP internals are mentioned, but applications that expect to be
-compatible with future GMP releases should take care to use only the
-documented functions.
-
-* Menu:
-
-* Multiplication Algorithms::
-* Division Algorithms::
-* Greatest Common Divisor Algorithms::
-* Powering Algorithms::
-* Root Extraction Algorithms::
-* Radix Conversion Algorithms::
-* Other Algorithms::
-* Assembly Coding::
-
-\1f
-File: gmp.info,  Node: Multiplication Algorithms,  Next: Division Algorithms,  Prev: Algorithms,  Up: Algorithms
-
-16.1 Multiplication
-===================
-
-NxN limb multiplications and squares are done using one of five
-algorithms, as the size N increases.
-
-     Algorithm      Threshold
-     Basecase       (none)
-     Karatsuba      `MUL_TOOM22_THRESHOLD'
-     Toom-3         `MUL_TOOM33_THRESHOLD'
-     Toom-4         `MUL_TOOM44_THRESHOLD'
-     FFT            `MUL_FFT_THRESHOLD'
-
-   Similarly for squaring, with the `SQR' thresholds.
-
-   NxM multiplications of operands with different sizes above
-`MUL_TOOM22_THRESHOLD' are currently done by special Toom-inspired
-algorithms or directly with FFT, depending on operand size (*note
-Unbalanced Multiplication::).
-
-* Menu:
-
-* Basecase Multiplication::
-* Karatsuba Multiplication::
-* Toom 3-Way Multiplication::
-* Toom 4-Way Multiplication::
-* FFT Multiplication::
-* Other Multiplication::
-* Unbalanced Multiplication::
-
-\1f
-File: gmp.info,  Node: Basecase Multiplication,  Next: Karatsuba Multiplication,  Prev: Multiplication Algorithms,  Up: Multiplication Algorithms
-
-16.1.1 Basecase Multiplication
-------------------------------
-
-Basecase NxM multiplication is a straightforward rectangular set of
-cross-products, the same as long multiplication done by hand and for
-that reason sometimes known as the schoolbook or grammar school method.
-This is an O(N*M) algorithm.  See Knuth section 4.3.1 algorithm M
-(*note References::), and the `mpn/generic/mul_basecase.c' code.
-
-   Assembly implementations of `mpn_mul_basecase' are essentially the
-same as the generic C code, but have all the usual assembly tricks and
-obscurities introduced for speed.
-
-   A square can be done in roughly half the time of a multiply, by
-using the fact that the cross products above and below the diagonal are
-the same.  A triangle of products below the diagonal is formed, doubled
-(left shift by one bit), and then the products on the diagonal added.
-This can be seen in `mpn/generic/sqr_basecase.c'.  Again the assembly
-implementations take essentially the same approach.
-
-          u0  u1  u2  u3  u4
-        +---+---+---+---+---+
-     u0 | d |   |   |   |   |
-        +---+---+---+---+---+
-     u1 |   | d |   |   |   |
-        +---+---+---+---+---+
-     u2 |   |   | d |   |   |
-        +---+---+---+---+---+
-     u3 |   |   |   | d |   |
-        +---+---+---+---+---+
-     u4 |   |   |   |   | d |
-        +---+---+---+---+---+
-
-   In practice squaring isn't a full 2x faster than multiplying, it's
-usually around 1.5x.  Less than 1.5x probably indicates
-`mpn_sqr_basecase' wants improving on that CPU.
-
-   On some CPUs `mpn_mul_basecase' can be faster than the generic C
-`mpn_sqr_basecase' on some small sizes.  `SQR_BASECASE_THRESHOLD' is
-the size at which to use `mpn_sqr_basecase', this will be zero if that
-routine should be used always.
-
-\1f
-File: gmp.info,  Node: Karatsuba Multiplication,  Next: Toom 3-Way Multiplication,  Prev: Basecase Multiplication,  Up: Multiplication Algorithms
-
-16.1.2 Karatsuba Multiplication
--------------------------------
-
-The Karatsuba multiplication algorithm is described in Knuth section
-4.3.3 part A, and various other textbooks.  A brief description is
-given here.
-
-   The inputs x and y are treated as each split into two parts of equal
-length (or the most significant part one limb shorter if N is odd).
-
-      high              low
-     +----------+----------+
-     |    x1    |    x0    |
-     +----------+----------+
-
-     +----------+----------+
-     |    y1    |    y0    |
-     +----------+----------+
-
-   Let b be the power of 2 where the split occurs, ie. if x0 is k limbs
-(y0 the same) then b=2^(k*mp_bits_per_limb).  With that x=x1*b+x0 and
-y=y1*b+y0, and the following holds,
-
-     x*y = (b^2+b)*x1*y1 - b*(x1-x0)*(y1-y0) + (b+1)*x0*y0
-
-   This formula means doing only three multiplies of (N/2)x(N/2) limbs,
-whereas a basecase multiply of NxN limbs is equivalent to four
-multiplies of (N/2)x(N/2).  The factors (b^2+b) etc represent the
-positions where the three products must be added.
-
-      high                              low
-     +--------+--------+ +--------+--------+
-     |      x1*y1      | |      x0*y0      |
-     +--------+--------+ +--------+--------+
-               +--------+--------+
-           add |      x1*y1      |
-               +--------+--------+
-               +--------+--------+
-           add |      x0*y0      |
-               +--------+--------+
-               +--------+--------+
-           sub | (x1-x0)*(y1-y0) |
-               +--------+--------+
-
-   The term (x1-x0)*(y1-y0) is best calculated as an absolute value,
-and the sign used to choose to add or subtract.  Notice the sum
-high(x0*y0)+low(x1*y1) occurs twice, so it's possible to do 5*k limb
-additions, rather than 6*k, but in GMP extra function call overheads
-outweigh the saving.
-
-   Squaring is similar to multiplying, but with x=y the formula reduces
-to an equivalent with three squares,
-
-     x^2 = (b^2+b)*x1^2 - b*(x1-x0)^2 + (b+1)*x0^2
-
-   The final result is accumulated from those three squares the same
-way as for the three multiplies above.  The middle term (x1-x0)^2 is now
-always positive.
-
-   A similar formula for both multiplying and squaring can be
-constructed with a middle term (x1+x0)*(y1+y0).  But those sums can
-exceed k limbs, leading to more carry handling and additions than the
-form above.
-
-   Karatsuba multiplication is asymptotically an O(N^1.585) algorithm,
-the exponent being log(3)/log(2), representing 3 multiplies each 1/2
-the size of the inputs.  This is a big improvement over the basecase
-multiply at O(N^2) and the advantage soon overcomes the extra additions
-Karatsuba performs.  `MUL_TOOM22_THRESHOLD' can be as little as 10
-limbs.  The `SQR' threshold is usually about twice the `MUL'.
-
-   The basecase algorithm will take a time of the form M(N) = a*N^2 +
-b*N + c and the Karatsuba algorithm K(N) = 3*M(N/2) + d*N + e, which
-expands to K(N) = 3/4*a*N^2 + 3/2*b*N + 3*c + d*N + e.  The factor 3/4
-for a means per-crossproduct speedups in the basecase code will
-increase the threshold since they benefit M(N) more than K(N).  And
-conversely the 3/2 for b means linear style speedups of b will increase
-the threshold since they benefit K(N) more than M(N).  The latter can
-be seen for instance when adding an optimized `mpn_sqr_diagonal' to
-`mpn_sqr_basecase'.  Of course all speedups reduce total time, and in
-that sense the algorithm thresholds are merely of academic interest.
-
-\1f
-File: gmp.info,  Node: Toom 3-Way Multiplication,  Next: Toom 4-Way Multiplication,  Prev: Karatsuba Multiplication,  Up: Multiplication Algorithms
-
-16.1.3 Toom 3-Way Multiplication
---------------------------------
-
-The Karatsuba formula is the simplest case of a general approach to
-splitting inputs that leads to both Toom and FFT algorithms.  A
-description of Toom can be found in Knuth section 4.3.3, with an
-example 3-way calculation after Theorem A.  The 3-way form used in GMP
-is described here.
-
-   The operands are each considered split into 3 pieces of equal length
-(or the most significant part 1 or 2 limbs shorter than the other two).
-
-      high                         low
-     +----------+----------+----------+
-     |    x2    |    x1    |    x0    |
-     +----------+----------+----------+
-
-     +----------+----------+----------+
-     |    y2    |    y1    |    y0    |
-     +----------+----------+----------+
-
-These parts are treated as the coefficients of two polynomials
-
-     X(t) = x2*t^2 + x1*t + x0
-     Y(t) = y2*t^2 + y1*t + y0
-
-   Let b equal the power of 2 which is the size of the x0, x1, y0 and
-y1 pieces, ie. if they're k limbs each then b=2^(k*mp_bits_per_limb).
-With this x=X(b) and y=Y(b).
-
-   Let a polynomial W(t)=X(t)*Y(t) and suppose its coefficients are
-
-     W(t) = w4*t^4 + w3*t^3 + w2*t^2 + w1*t + w0
-
-   The w[i] are going to be determined, and when they are they'll give
-the final result using w=W(b), since x*y=X(b)*Y(b)=W(b).  The
-coefficients will be roughly b^2 each, and the final W(b) will be an
-addition like,
-
-      high                                        low
-     +-------+-------+
-     |       w4      |
-     +-------+-------+
-            +--------+-------+
-            |        w3      |
-            +--------+-------+
-                    +--------+-------+
-                    |        w2      |
-                    +--------+-------+
-                            +--------+-------+
-                            |        w1      |
-                            +--------+-------+
-                                     +-------+-------+
-                                     |       w0      |
-                                     +-------+-------+
-
-   The w[i] coefficients could be formed by a simple set of cross
-products, like w4=x2*y2, w3=x2*y1+x1*y2, w2=x2*y0+x1*y1+x0*y2 etc, but
-this would need all nine x[i]*y[j] for i,j=0,1,2, and would be
-equivalent merely to a basecase multiply.  Instead the following
-approach is used.
-
-   X(t) and Y(t) are evaluated and multiplied at 5 points, giving
-values of W(t) at those points.  In GMP the following points are used,
-
-     Point    Value
-     t=0      x0 * y0, which gives w0 immediately
-     t=1      (x2+x1+x0) * (y2+y1+y0)
-     t=-1     (x2-x1+x0) * (y2-y1+y0)
-     t=2      (4*x2+2*x1+x0) * (4*y2+2*y1+y0)
-     t=inf    x2 * y2, which gives w4 immediately
-
-   At t=-1 the values can be negative and that's handled using the
-absolute values and tracking the sign separately.  At t=inf the value
-is actually X(t)*Y(t)/t^4 in the limit as t approaches infinity, but
-it's much easier to think of as simply x2*y2 giving w4 immediately
-(much like x0*y0 at t=0 gives w0 immediately).
-
-   Each of the points substituted into W(t)=w4*t^4+...+w0 gives a
-linear combination of the w[i] coefficients, and the value of those
-combinations has just been calculated.
-
-     W(0)   =                              w0
-     W(1)   =    w4 +   w3 +   w2 +   w1 + w0
-     W(-1)  =    w4 -   w3 +   w2 -   w1 + w0
-     W(2)   = 16*w4 + 8*w3 + 4*w2 + 2*w1 + w0
-     W(inf) =    w4
-
-   This is a set of five equations in five unknowns, and some
-elementary linear algebra quickly isolates each w[i].  This involves
-adding or subtracting one W(t) value from another, and a couple of
-divisions by powers of 2 and one division by 3, the latter using the
-special `mpn_divexact_by3' (*note Exact Division::).
-
-   The conversion of W(t) values to the coefficients is interpolation.
-A polynomial of degree 4 like W(t) is uniquely determined by values
-known at 5 different points.  The points are arbitrary and can be
-chosen to make the linear equations come out with a convenient set of
-steps for quickly isolating the w[i].
-
-   Squaring follows the same procedure as multiplication, but there's
-only one X(t) and it's evaluated at the 5 points, and those values
-squared to give values of W(t).  The interpolation is then identical,
-and in fact the same `toom3_interpolate' subroutine is used for both
-squaring and multiplying.
-
-   Toom-3 is asymptotically O(N^1.465), the exponent being
-log(5)/log(3), representing 5 recursive multiplies of 1/3 the original
-size each.  This is an improvement over Karatsuba at O(N^1.585), though
-Toom does more work in the evaluation and interpolation and so it only
-realizes its advantage above a certain size.
-
-   Near the crossover between Toom-3 and Karatsuba there's generally a
-range of sizes where the difference between the two is small.
-`MUL_TOOM33_THRESHOLD' is a somewhat arbitrary point in that range and
-successive runs of the tune program can give different values due to
-small variations in measuring.  A graph of time versus size for the two
-shows the effect, see `tune/README'.
-
-   At the fairly small sizes where the Toom-3 thresholds occur it's
-worth remembering that the asymptotic behaviour for Karatsuba and
-Toom-3 can't be expected to make accurate predictions, due of course to
-the big influence of all sorts of overheads, and the fact that only a
-few recursions of each are being performed.  Even at large sizes
-there's a good chance machine dependent effects like cache architecture
-will mean actual performance deviates from what might be predicted.
-
-   The formula given for the Karatsuba algorithm (*note Karatsuba
-Multiplication::) has an equivalent for Toom-3 involving only five
-multiplies, but this would be complicated and unenlightening.
-
-   An alternate view of Toom-3 can be found in Zuras (*note
-References::), using a vector to represent the x and y splits and a
-matrix multiplication for the evaluation and interpolation stages.  The
-matrix inverses are not meant to be actually used, and they have
-elements with values much greater than in fact arise in the
-interpolation steps.  The diagram shown for the 3-way is attractive,
-but again doesn't have to be implemented that way and for example with
-a bit of rearrangement just one division by 6 can be done.
-
-\1f
-File: gmp.info,  Node: Toom 4-Way Multiplication,  Next: FFT Multiplication,  Prev: Toom 3-Way Multiplication,  Up: Multiplication Algorithms
-
-16.1.4 Toom 4-Way Multiplication
---------------------------------
-
-Karatsuba and Toom-3 split the operands into 2 and 3 coefficients,
-respectively.  Toom-4 analogously splits the operands into 4
-coefficients.  Using the notation from the section on Toom-3
-multiplication, we form two polynomials:
-
-     X(t) = x3*t^3 + x2*t^2 + x1*t + x0
-     Y(t) = y3*t^3 + y2*t^2 + y1*t + y0
-
-   X(t) and Y(t) are evaluated and multiplied at 7 points, giving
-values of W(t) at those points.  In GMP the following points are used,
-
-     Point    Value
-     t=0      x0 * y0, which gives w0 immediately
-     t=1/2    (x3+2*x2+4*x1+8*x0) * (y3+2*y2+4*y1+8*y0)
-     t=-1/2   (-x3+2*x2-4*x1+8*x0) * (-y3+2*y2-4*y1+8*y0)
-     t=1      (x3+x2+x1+x0) * (y3+y2+y1+y0)
-     t=-1     (-x3+x2-x1+x0) * (-y3+y2-y1+y0)
-     t=2      (8*x3+4*x2+2*x1+x0) * (8*y3+4*y2+2*y1+y0)
-     t=inf    x3 * y3, which gives w6 immediately
-
-   The number of additions and subtractions for Toom-4 is much larger
-than for Toom-3.  But several subexpressions occur multiple times, for
-example x2+x0, occurs for both t=1 and t=-1.
-
-   Toom-4 is asymptotically O(N^1.404), the exponent being
-log(7)/log(4), representing 7 recursive multiplies of 1/4 the original
-size each.
-
-\1f
-File: gmp.info,  Node: FFT Multiplication,  Next: Other Multiplication,  Prev: Toom 4-Way Multiplication,  Up: Multiplication Algorithms
-
-16.1.5 FFT Multiplication
--------------------------
-
-At large to very large sizes a Fermat style FFT multiplication is used,
-following Scho"nhage and Strassen (*note References::).  Descriptions
-of FFTs in various forms can be found in many textbooks, for instance
-Knuth section 4.3.3 part C or Lipson chapter IX.  A brief description
-of the form used in GMP is given here.
-
-   The multiplication done is x*y mod 2^N+1, for a given N.  A full
-product x*y is obtained by choosing N>=bits(x)+bits(y) and padding x
-and y with high zero limbs.  The modular product is the native form for
-the algorithm, so padding to get a full product is unavoidable.
-
-   The algorithm follows a split, evaluate, pointwise multiply,
-interpolate and combine similar to that described above for Karatsuba
-and Toom-3.  A k parameter controls the split, with an FFT-k splitting
-into 2^k pieces of M=N/2^k bits each.  N must be a multiple of
-(2^k)*mp_bits_per_limb so the split falls on limb boundaries, avoiding
-bit shifts in the split and combine stages.
-
-   The evaluations, pointwise multiplications, and interpolation, are
-all done modulo 2^N'+1 where N' is 2M+k+3 rounded up to a multiple of
-2^k and of `mp_bits_per_limb'.  The results of interpolation will be
-the following negacyclic convolution of the input pieces, and the
-choice of N' ensures these sums aren't truncated.
-
-                ---
-                \         b
-     w[n] =     /     (-1) * x[i] * y[j]
-                ---
-            i+j==b*2^k+n
-               b=0,1
-
-   The points used for the evaluation are g^i for i=0 to 2^k-1 where
-g=2^(2N'/2^k).  g is a 2^k'th root of unity mod 2^N'+1, which produces
-necessary cancellations at the interpolation stage, and it's also a
-power of 2 so the fast Fourier transforms used for the evaluation and
-interpolation do only shifts, adds and negations.
-
-   The pointwise multiplications are done modulo 2^N'+1 and either
-recurse into a further FFT or use a plain multiplication (Toom-3,
-Karatsuba or basecase), whichever is optimal at the size N'.  The
-interpolation is an inverse fast Fourier transform.  The resulting set
-of sums of x[i]*y[j] are added at appropriate offsets to give the final
-result.
-
-   Squaring is the same, but x is the only input so it's one transform
-at the evaluate stage and the pointwise multiplies are squares.  The
-interpolation is the same.
-
-   For a mod 2^N+1 product, an FFT-k is an O(N^(k/(k-1))) algorithm,
-the exponent representing 2^k recursed modular multiplies each
-1/2^(k-1) the size of the original.  Each successive k is an asymptotic
-improvement, but overheads mean each is only faster at bigger and
-bigger sizes.  In the code, `MUL_FFT_TABLE' and `SQR_FFT_TABLE' are the
-thresholds where each k is used.  Each new k effectively swaps some
-multiplying for some shifts, adds and overheads.
-
-   A mod 2^N+1 product can be formed with a normal NxN->2N bit multiply
-plus a subtraction, so an FFT and Toom-3 etc can be compared directly.
-A k=4 FFT at O(N^1.333) can be expected to be the first faster than
-Toom-3 at O(N^1.465).  In practice this is what's found, with
-`MUL_FFT_MODF_THRESHOLD' and `SQR_FFT_MODF_THRESHOLD' being between 300
-and 1000 limbs, depending on the CPU.  So far it's been found that only
-very large FFTs recurse into pointwise multiplies above these sizes.
-
-   When an FFT is to give a full product, the change of N to 2N doesn't
-alter the theoretical complexity for a given k, but for the purposes of
-considering where an FFT might be first used it can be assumed that the
-FFT is recursing into a normal multiply and that on that basis it's
-doing 2^k recursed multiplies each 1/2^(k-2) the size of the inputs,
-making it O(N^(k/(k-2))).  This would mean k=7 at O(N^1.4) would be the
-first FFT faster than Toom-3.  In practice `MUL_FFT_THRESHOLD' and
-`SQR_FFT_THRESHOLD' have been found to be in the k=8 range, somewhere
-between 3000 and 10000 limbs.
-
-   The way N is split into 2^k pieces and then 2M+k+3 is rounded up to
-a multiple of 2^k and `mp_bits_per_limb' means that when
-2^k>=mp_bits_per_limb the effective N is a multiple of 2^(2k-1) bits.
-The +k+3 means some values of N just under such a multiple will be
-rounded to the next.  The complexity calculations above assume that a
-favourable size is used, meaning one which isn't padded through
-rounding, and it's also assumed that the extra +k+3 bits are negligible
-at typical FFT sizes.
-
-   The practical effect of the 2^(2k-1) constraint is to introduce a
-step-effect into measured speeds.  For example k=8 will round N up to a
-multiple of 32768 bits, so for a 32-bit limb there'll be 512 limb
-groups of sizes for which `mpn_mul_n' runs at the same speed.  Or for
-k=9 groups of 2048 limbs, k=10 groups of 8192 limbs, etc.  In practice
-it's been found each k is used at quite small multiples of its size
-constraint and so the step effect is quite noticeable in a time versus
-size graph.
-
-   The threshold determinations currently measure at the mid-points of
-size steps, but this is sub-optimal since at the start of a new step it
-can happen that it's better to go back to the previous k for a while.
-Something more sophisticated for `MUL_FFT_TABLE' and `SQR_FFT_TABLE'
-will be needed.
-
-\1f
-File: gmp.info,  Node: Other Multiplication,  Next: Unbalanced Multiplication,  Prev: FFT Multiplication,  Up: Multiplication Algorithms
-
-16.1.6 Other Multiplication
----------------------------
-
-The Toom algorithms described above (*note Toom 3-Way Multiplication::,
-*note Toom 4-Way Multiplication::) generalizes to split into an
-arbitrary number of pieces, as per Knuth section 4.3.3 algorithm C.
-This is not currently used.  The notes here are merely for interest.
-
-   In general a split into r+1 pieces is made, and evaluations and
-pointwise multiplications done at 2*r+1 points.  A 4-way split does 7
-pointwise multiplies, 5-way does 9, etc.  Asymptotically an (r+1)-way
-algorithm is O(N^(log(2*r+1)/log(r+1))).  Only the pointwise
-multiplications count towards big-O complexity, but the time spent in
-the evaluate and interpolate stages grows with r and has a significant
-practical impact, with the asymptotic advantage of each r realized only
-at bigger and bigger sizes.  The overheads grow as O(N*r), whereas in
-an r=2^k FFT they grow only as O(N*log(r)).
-
-   Knuth algorithm C evaluates at points 0,1,2,...,2*r, but exercise 4
-uses -r,...,0,...,r and the latter saves some small multiplies in the
-evaluate stage (or rather trades them for additions), and has a further
-saving of nearly half the interpolate steps.  The idea is to separate
-odd and even final coefficients and then perform algorithm C steps C7
-and C8 on them separately.  The divisors at step C7 become j^2 and the
-multipliers at C8 become 2*t*j-j^2.
-
-   Splitting odd and even parts through positive and negative points
-can be thought of as using -1 as a square root of unity.  If a 4th root
-of unity was available then a further split and speedup would be
-possible, but no such root exists for plain integers.  Going to complex
-integers with i=sqrt(-1) doesn't help, essentially because in Cartesian
-form it takes three real multiplies to do a complex multiply.  The
-existence of 2^k'th roots of unity in a suitable ring or field lets the
-fast Fourier transform keep splitting and get to O(N*log(r)).
-
-   Floating point FFTs use complex numbers approximating Nth roots of
-unity.  Some processors have special support for such FFTs.  But these
-are not used in GMP since it's very difficult to guarantee an exact
-result (to some number of bits).  An occasional difference of 1 in the
-last bit might not matter to a typical signal processing algorithm, but
-is of course of vital importance to GMP.
-
-\1f
-File: gmp.info,  Node: Unbalanced Multiplication,  Prev: Other Multiplication,  Up: Multiplication Algorithms
-
-16.1.7 Unbalanced Multiplication
---------------------------------
-
-Multiplication of operands with different sizes, both below
-`MUL_TOOM22_THRESHOLD' are done with plain schoolbook multiplication
-(*note Basecase Multiplication::).
-
-   For really large operands, we invoke FFT directly.
-
-   For operands between these sizes, we use Toom inspired algorithms
-suggested by Alberto Zanoni and Marco Bodrato.  The idea is to split
-the operands into polynomials of different degree.  GMP currently
-splits the smaller operand onto 2 coefficients, i.e., a polynomial of
-degree 1, but the larger operand can be split into 2, 3, or 4
-coefficients, i.e., a polynomial of degree 1 to 3.
-
-\1f
-File: gmp.info,  Node: Division Algorithms,  Next: Greatest Common Divisor Algorithms,  Prev: Multiplication Algorithms,  Up: Algorithms
-
-16.2 Division Algorithms
-========================
-
-* Menu:
-
-* Single Limb Division::
-* Basecase Division::
-* Divide and Conquer Division::
-* Block-Wise Barrett Division::
-* Exact Division::
-* Exact Remainder::
-* Small Quotient Division::
-
-\1f
-File: gmp.info,  Node: Single Limb Division,  Next: Basecase Division,  Prev: Division Algorithms,  Up: Division Algorithms
-
-16.2.1 Single Limb Division
----------------------------
-
-Nx1 division is implemented using repeated 2x1 divisions from high to
-low, either with a hardware divide instruction or a multiplication by
-inverse, whichever is best on a given CPU.
-
-   The multiply by inverse follows "Improved division by invariant
-integers" by Mo"ller and Granlund (*note References::) and is
-implemented as `udiv_qrnnd_preinv' in `gmp-impl.h'.  The idea is to
-have a fixed-point approximation to 1/d (see `invert_limb') and then
-multiply by the high limb (plus one bit) of the dividend to get a
-quotient q.  With d normalized (high bit set), q is no more than 1 too
-small.  Subtracting q*d from the dividend gives a remainder, and
-reveals whether q or q-1 is correct.
-
-   The result is a division done with two multiplications and four or
-five arithmetic operations.  On CPUs with low latency multipliers this
-can be much faster than a hardware divide, though the cost of
-calculating the inverse at the start may mean it's only better on
-inputs bigger than say 4 or 5 limbs.
-
-   When a divisor must be normalized, either for the generic C
-`__udiv_qrnnd_c' or the multiply by inverse, the division performed is
-actually a*2^k by d*2^k where a is the dividend and k is the power
-necessary to have the high bit of d*2^k set.  The bit shifts for the
-dividend are usually accomplished "on the fly" meaning by extracting
-the appropriate bits at each step.  Done this way the quotient limbs
-come out aligned ready to store.  When only the remainder is wanted, an
-alternative is to take the dividend limbs unshifted and calculate r = a
-mod d*2^k followed by an extra final step r*2^k mod d*2^k.  This can
-help on CPUs with poor bit shifts or few registers.
-
-   The multiply by inverse can be done two limbs at a time.  The
-calculation is basically the same, but the inverse is two limbs and the
-divisor treated as if padded with a low zero limb.  This means more
-work, since the inverse will need a 2x2 multiply, but the four 1x1s to
-do that are independent and can therefore be done partly or wholly in
-parallel.  Likewise for a 2x1 calculating q*d.  The net effect is to
-process two limbs with roughly the same two multiplies worth of latency
-that one limb at a time gives.  This extends to 3 or 4 limbs at a time,
-though the extra work to apply the inverse will almost certainly soon
-reach the limits of multiplier throughput.
-
-   A similar approach in reverse can be taken to process just half a
-limb at a time if the divisor is only a half limb.  In this case the
-1x1 multiply for the inverse effectively becomes two (1/2)x1 for each
-limb, which can be a saving on CPUs with a fast half limb multiply, or
-in fact if the only multiply is a half limb, and especially if it's not
-pipelined.
-
-\1f
-File: gmp.info,  Node: Basecase Division,  Next: Divide and Conquer Division,  Prev: Single Limb Division,  Up: Division Algorithms
-
-16.2.2 Basecase Division
-------------------------
-
-Basecase NxM division is like long division done by hand, but in base
-2^mp_bits_per_limb.  See Knuth section 4.3.1 algorithm D, and
-`mpn/generic/sb_divrem_mn.c'.
-
-   Briefly stated, while the dividend remains larger than the divisor,
-a high quotient limb is formed and the Nx1 product q*d subtracted at
-the top end of the dividend.  With a normalized divisor (most
-significant bit set), each quotient limb can be formed with a 2x1
-division and a 1x1 multiplication plus some subtractions.  The 2x1
-division is by the high limb of the divisor and is done either with a
-hardware divide or a multiply by inverse (the same as in *Note Single
-Limb Division::) whichever is faster.  Such a quotient is sometimes one
-too big, requiring an addback of the divisor, but that happens rarely.
-
-   With Q=N-M being the number of quotient limbs, this is an O(Q*M)
-algorithm and will run at a speed similar to a basecase QxM
-multiplication, differing in fact only in the extra multiply and divide
-for each of the Q quotient limbs.
-
-\1f
-File: gmp.info,  Node: Divide and Conquer Division,  Next: Block-Wise Barrett Division,  Prev: Basecase Division,  Up: Division Algorithms
-
-16.2.3 Divide and Conquer Division
-----------------------------------
-
-For divisors larger than `DC_DIV_QR_THRESHOLD', division is done by
-dividing.  Or to be precise by a recursive divide and conquer algorithm
-based on work by Moenck and Borodin, Jebelean, and Burnikel and Ziegler
-(*note References::).
-
-   The algorithm consists essentially of recognising that a 2NxN
-division can be done with the basecase division algorithm (*note
-Basecase Division::), but using N/2 limbs as a base, not just a single
-limb.  This way the multiplications that arise are (N/2)x(N/2) and can
-take advantage of Karatsuba and higher multiplication algorithms (*note
-Multiplication Algorithms::).  The two "digits" of the quotient are
-formed by recursive Nx(N/2) divisions.
-
-   If the (N/2)x(N/2) multiplies are done with a basecase multiplication
-then the work is about the same as a basecase division, but with more
-function call overheads and with some subtractions separated from the
-multiplies.  These overheads mean that it's only when N/2 is above
-`MUL_TOOM22_THRESHOLD' that divide and conquer is of use.
-
-   `DC_DIV_QR_THRESHOLD' is based on the divisor size N, so it will be
-somewhere above twice `MUL_TOOM22_THRESHOLD', but how much above
-depends on the CPU.  An optimized `mpn_mul_basecase' can lower
-`DC_DIV_QR_THRESHOLD' a little by offering a ready-made advantage over
-repeated `mpn_submul_1' calls.
-
-   Divide and conquer is asymptotically O(M(N)*log(N)) where M(N) is
-the time for an NxN multiplication done with FFTs.  The actual time is
-a sum over multiplications of the recursed sizes, as can be seen near
-the end of section 2.2 of Burnikel and Ziegler.  For example, within
-the Toom-3 range, divide and conquer is 2.63*M(N).  With higher
-algorithms the M(N) term improves and the multiplier tends to log(N).
-In practice, at moderate to large sizes, a 2NxN division is about 2 to
-4 times slower than an NxN multiplication.
-
-\1f
-File: gmp.info,  Node: Block-Wise Barrett Division,  Next: Exact Division,  Prev: Divide and Conquer Division,  Up: Division Algorithms
-
-16.2.4 Block-Wise Barrett Division
-----------------------------------
-
-For the largest divisions, a block-wise Barrett division algorithm is
-used.  Here, the divisor is inverted to a precision determined by the
-relative size of the dividend and divisor.  Blocks of quotient limbs
-are then generated by multiplying blocks from the dividend by the
-inverse.
-
-   Our block-wise algorithm computes a smaller inverse than in the
-plain Barrett algorithm.  For a 2n/n division, the inverse will be just
-ceil(n/2) limbs.
-
-\1f
-File: gmp.info,  Node: Exact Division,  Next: Exact Remainder,  Prev: Block-Wise Barrett Division,  Up: Division Algorithms
-
-16.2.5 Exact Division
----------------------
-
-A so-called exact division is when the dividend is known to be an exact
-multiple of the divisor.  Jebelean's exact division algorithm uses this
-knowledge to make some significant optimizations (*note References::).
-
-   The idea can be illustrated in decimal for example with 368154
-divided by 543.  Because the low digit of the dividend is 4, the low
-digit of the quotient must be 8.  This is arrived at from 4*7 mod 10,
-using the fact 7 is the modular inverse of 3 (the low digit of the
-divisor), since 3*7 == 1 mod 10.  So 8*543=4344 can be subtracted from
-the dividend leaving 363810.  Notice the low digit has become zero.
-
-   The procedure is repeated at the second digit, with the next
-quotient digit 7 (7 == 1*7 mod 10), subtracting 7*543=3801, leaving
-325800.  And finally at the third digit with quotient digit 6 (8*7 mod
-10), subtracting 6*543=3258 leaving 0.  So the quotient is 678.
-
-   Notice however that the multiplies and subtractions don't need to
-extend past the low three digits of the dividend, since that's enough
-to determine the three quotient digits.  For the last quotient digit no
-subtraction is needed at all.  On a 2NxN division like this one, only
-about half the work of a normal basecase division is necessary.
-
-   For an NxM exact division producing Q=N-M quotient limbs, the saving
-over a normal basecase division is in two parts.  Firstly, each of the
-Q quotient limbs needs only one multiply, not a 2x1 divide and
-multiply.  Secondly, the crossproducts are reduced when Q>M to
-Q*M-M*(M+1)/2, or when Q<=M to Q*(Q-1)/2.  Notice the savings are
-complementary.  If Q is big then many divisions are saved, or if Q is
-small then the crossproducts reduce to a small number.
-
-   The modular inverse used is calculated efficiently by `binvert_limb'
-in `gmp-impl.h'.  This does four multiplies for a 32-bit limb, or six
-for a 64-bit limb.  `tune/modlinv.c' has some alternate implementations
-that might suit processors better at bit twiddling than multiplying.
-
-   The sub-quadratic exact division described by Jebelean in "Exact
-Division with Karatsuba Complexity" is not currently implemented.  It
-uses a rearrangement similar to the divide and conquer for normal
-division (*note Divide and Conquer Division::), but operating from low
-to high.  A further possibility not currently implemented is
-"Bidirectional Exact Integer Division" by Krandick and Jebelean which
-forms quotient limbs from both the high and low ends of the dividend,
-and can halve once more the number of crossproducts needed in a 2NxN
-division.
-
-   A special case exact division by 3 exists in `mpn_divexact_by3',
-supporting Toom-3 multiplication and `mpq' canonicalizations.  It forms
-quotient digits with a multiply by the modular inverse of 3 (which is
-`0xAA..AAB') and uses two comparisons to determine a borrow for the next
-limb.  The multiplications don't need to be on the dependent chain, as
-long as the effect of the borrows is applied, which can help chips with
-pipelined multipliers.
-
-\1f
-File: gmp.info,  Node: Exact Remainder,  Next: Small Quotient Division,  Prev: Exact Division,  Up: Division Algorithms
-
-16.2.6 Exact Remainder
-----------------------
-
-If the exact division algorithm is done with a full subtraction at each
-stage and the dividend isn't a multiple of the divisor, then low zero
-limbs are produced but with a remainder in the high limbs.  For
-dividend a, divisor d, quotient q, and b = 2^mp_bits_per_limb, this
-remainder r is of the form
-
-     a = q*d + r*b^n
-
-   n represents the number of zero limbs produced by the subtractions,
-that being the number of limbs produced for q.  r will be in the range
-0<=r<d and can be viewed as a remainder, but one shifted up by a factor
-of b^n.
-
-   Carrying out full subtractions at each stage means the same number
-of cross products must be done as a normal division, but there's still
-some single limb divisions saved.  When d is a single limb some
-simplifications arise, providing good speedups on a number of
-processors.
-
-   `mpn_divexact_by3', `mpn_modexact_1_odd' and the `mpn_redc_X'
-functions differ subtly in how they return r, leading to some negations
-in the above formula, but all are essentially the same.
-
-   Clearly r is zero when a is a multiple of d, and this leads to
-divisibility or congruence tests which are potentially more efficient
-than a normal division.
-
-   The factor of b^n on r can be ignored in a GCD when d is odd, hence
-the use of `mpn_modexact_1_odd' by `mpn_gcd_1' and `mpz_kronecker_ui'
-etc (*note Greatest Common Divisor Algorithms::).
-
-   Montgomery's REDC method for modular multiplications uses operands
-of the form of x*b^-n and y*b^-n and on calculating (x*b^-n)*(y*b^-n)
-uses the factor of b^n in the exact remainder to reach a product in the
-same form (x*y)*b^-n (*note Modular Powering Algorithm::).
-
-   Notice that r generally gives no useful information about the
-ordinary remainder a mod d since b^n mod d could be anything.  If
-however b^n == 1 mod d, then r is the negative of the ordinary
-remainder.  This occurs whenever d is a factor of b^n-1, as for example
-with 3 in `mpn_divexact_by3'.  For a 32 or 64 bit limb other such
-factors include 5, 17 and 257, but no particular use has been found for
-this.
-
-\1f
-File: gmp.info,  Node: Small Quotient Division,  Prev: Exact Remainder,  Up: Division Algorithms
-
-16.2.7 Small Quotient Division
-------------------------------
-
-An NxM division where the number of quotient limbs Q=N-M is small can
-be optimized somewhat.
-
-   An ordinary basecase division normalizes the divisor by shifting it
-to make the high bit set, shifting the dividend accordingly, and
-shifting the remainder back down at the end of the calculation.  This
-is wasteful if only a few quotient limbs are to be formed.  Instead a
-division of just the top 2*Q limbs of the dividend by the top Q limbs
-of the divisor can be used to form a trial quotient.  This requires
-only those limbs normalized, not the whole of the divisor and dividend.
-
-   A multiply and subtract then applies the trial quotient to the M-Q
-unused limbs of the divisor and N-Q dividend limbs (which includes Q
-limbs remaining from the trial quotient division).  The starting trial
-quotient can be 1 or 2 too big, but all cases of 2 too big and most
-cases of 1 too big are detected by first comparing the most significant
-limbs that will arise from the subtraction.  An addback is done if the
-quotient still turns out to be 1 too big.
-
-   This whole procedure is essentially the same as one step of the
-basecase algorithm done in a Q limb base, though with the trial
-quotient test done only with the high limbs, not an entire Q limb
-"digit" product.  The correctness of this weaker test can be
-established by following the argument of Knuth section 4.3.1 exercise
-20 but with the v2*q>b*r+u2 condition appropriately relaxed.
-
-\1f
-File: gmp.info,  Node: Greatest Common Divisor Algorithms,  Next: Powering Algorithms,  Prev: Division Algorithms,  Up: Algorithms
-
-16.3 Greatest Common Divisor
-============================
-
-* Menu:
-
-* Binary GCD::
-* Lehmer's Algorithm::
-* Subquadratic GCD::
-* Extended GCD::
-* Jacobi Symbol::
-
-\1f
-File: gmp.info,  Node: Binary GCD,  Next: Lehmer's Algorithm,  Prev: Greatest Common Divisor Algorithms,  Up: Greatest Common Divisor Algorithms
-
-16.3.1 Binary GCD
------------------
-
-At small sizes GMP uses an O(N^2) binary style GCD.  This is described
-in many textbooks, for example Knuth section 4.5.2 algorithm B.  It
-simply consists of successively reducing odd operands a and b using
-
-     a,b = abs(a-b),min(a,b)
-     strip factors of 2 from a
-
-   The Euclidean GCD algorithm, as per Knuth algorithms E and A,
-repeatedly computes the quotient q = floor(a/b) and replaces a,b by v,
-u - q v. The binary algorithm has so far been found to be faster than
-the Euclidean algorithm everywhere.  One reason the binary method does
-well is that the implied quotient at each step is usually small, so
-often only one or two subtractions are needed to get the same effect as
-a division.  Quotients 1, 2 and 3 for example occur 67.7% of the time,
-see Knuth section 4.5.3 Theorem E.
-
-   When the implied quotient is large, meaning b is much smaller than
-a, then a division is worthwhile.  This is the basis for the initial a
-mod b reductions in `mpn_gcd' and `mpn_gcd_1' (the latter for both Nx1
-and 1x1 cases).  But after that initial reduction, big quotients occur
-too rarely to make it worth checking for them.
-
-
-   The final 1x1 GCD in `mpn_gcd_1' is done in the generic C code as
-described above.  For two N-bit operands, the algorithm takes about
-0.68 iterations per bit.  For optimum performance some attention needs
-to be paid to the way the factors of 2 are stripped from a.
-
-   Firstly it may be noted that in twos complement the number of low
-zero bits on a-b is the same as b-a, so counting or testing can begin on
-a-b without waiting for abs(a-b) to be determined.
-
-   A loop stripping low zero bits tends not to branch predict well,
-since the condition is data dependent.  But on average there's only a
-few low zeros, so an option is to strip one or two bits arithmetically
-then loop for more (as done for AMD K6).  Or use a lookup table to get
-a count for several bits then loop for more (as done for AMD K7).  An
-alternative approach is to keep just one of a or b odd and iterate
-
-     a,b = abs(a-b), min(a,b)
-     a = a/2 if even
-     b = b/2 if even
-
-   This requires about 1.25 iterations per bit, but stripping of a
-single bit at each step avoids any branching.  Repeating the bit strip
-reduces to about 0.9 iterations per bit, which may be a worthwhile
-tradeoff.
-
-   Generally with the above approaches a speed of perhaps 6 cycles per
-bit can be achieved, which is still not terribly fast with for instance
-a 64-bit GCD taking nearly 400 cycles.  It's this sort of time which
-means it's not usually advantageous to combine a set of divisibility
-tests into a GCD.
-
-   Currently, the binary algorithm is used for GCD only when N < 3.
-
-\1f
-File: gmp.info,  Node: Lehmer's Algorithm,  Next: Subquadratic GCD,  Prev: Binary GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.2 Lehmer's algorithm
--------------------------
-
-Lehmer's improvement of the Euclidean algorithms is based on the
-observation that the initial part of the quotient sequence depends only
-on the most significant parts of the inputs. The variant of Lehmer's
-algorithm used in GMP splits off the most significant two limbs, as
-suggested, e.g., in "A Double-Digit Lehmer-Euclid Algorithm" by
-Jebelean (*note References::). The quotients of two double-limb inputs
-are collected as a 2 by 2 matrix with single-limb elements. This is
-done by the function `mpn_hgcd2'. The resulting matrix is applied to
-the inputs using `mpn_mul_1' and `mpn_submul_1'. Each iteration usually
-reduces the inputs by almost one limb. In the rare case of a large
-quotient, no progress can be made by examining just the most
-significant two limbs, and the quotient is computing using plain
-division.
-
-   The resulting algorithm is asymptotically O(N^2), just as the
-Euclidean algorithm and the binary algorithm. The quadratic part of the
-work are the calls to `mpn_mul_1' and `mpn_submul_1'. For small sizes,
-the linear work is also significant. There are roughly N calls to the
-`mpn_hgcd2' function. This function uses a couple of important
-optimizations:
-
-   * It uses the same relaxed notion of correctness as `mpn_hgcd' (see
-     next section). This means that when called with the most
-     significant two limbs of two large numbers, the returned matrix
-     does not always correspond exactly to the initial quotient
-     sequence for the two large numbers; the final quotient may
-     sometimes be one off.
-
-   * It takes advantage of the fact the quotients are usually small.
-     The division operator is not used, since the corresponding
-     assembler instruction is very slow on most architectures. (This
-     code could probably be improved further, it uses many branches
-     that are unfriendly to prediction).
-
-   * It switches from double-limb calculations to single-limb
-     calculations half-way through, when the input numbers have been
-     reduced in size from two limbs to one and a half.
-
-
-\1f
-File: gmp.info,  Node: Subquadratic GCD,  Next: Extended GCD,  Prev: Lehmer's Algorithm,  Up: Greatest Common Divisor Algorithms
-
-16.3.3 Subquadratic GCD
------------------------
-
-For inputs larger than `GCD_DC_THRESHOLD', GCD is computed via the HGCD
-(Half GCD) function, as a generalization to Lehmer's algorithm.
-
-   Let the inputs a,b be of size N limbs each. Put S = floor(N/2) + 1.
-Then HGCD(a,b) returns a transformation matrix T with non-negative
-elements, and reduced numbers (c;d) = T^-1 (a;b). The reduced numbers
-c,d must be larger than S limbs, while their difference abs(c-d) must
-fit in S limbs. The matrix elements will also be of size roughly N/2.
-
-   The HGCD base case uses Lehmer's algorithm, but with the above stop
-condition that returns reduced numbers and the corresponding
-transformation matrix half-way through. For inputs larger than
-`HGCD_THRESHOLD', HGCD is computed recursively, using the divide and
-conquer algorithm in "On Scho"nhage's algorithm and subquadratic
-integer GCD computation" by Mo"ller (*note References::). The recursive
-algorithm consists of these main steps.
-
-   * Call HGCD recursively, on the most significant N/2 limbs. Apply the
-     resulting matrix T_1 to the full numbers, reducing them to a size
-     just above 3N/2.
-
-   * Perform a small number of division or subtraction steps to reduce
-     the numbers to size below 3N/2. This is essential mainly for the
-     unlikely case of large quotients.
-
-   * Call HGCD recursively, on the most significant N/2 limbs of the
-     reduced numbers. Apply the resulting matrix T_2 to the full
-     numbers, reducing them to a size just above N/2.
-
-   * Compute T = T_1 T_2.
-
-   * Perform a small number of division and subtraction steps to
-     satisfy the requirements, and return.
-
-   GCD is then implemented as a loop around HGCD, similarly to Lehmer's
-algorithm. Where Lehmer repeatedly chops off the top two limbs, calls
-`mpn_hgcd2', and applies the resulting matrix to the full numbers, the
-subquadratic GCD chops off the most significant third of the limbs (the
-proportion is a tuning parameter, and 1/3 seems to be more efficient
-than, e.g, 1/2), calls `mpn_hgcd', and applies the resulting matrix.
-Once the input numbers are reduced to size below `GCD_DC_THRESHOLD',
-Lehmer's algorithm is used for the rest of the work.
-
-   The asymptotic running time of both HGCD and GCD is O(M(N)*log(N)),
-where M(N) is the time for multiplying two N-limb numbers.
-
-\1f
-File: gmp.info,  Node: Extended GCD,  Next: Jacobi Symbol,  Prev: Subquadratic GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.4 Extended GCD
--------------------
-
-The extended GCD function, or GCDEXT, calculates gcd(a,b) and also
-cofactors x and y satisfying a*x+b*y=gcd(a,b). All the algorithms used
-for plain GCD are extended to handle this case. The binary algorithm is
-used only for single-limb GCDEXT.  Lehmer's algorithm is used for sizes
-up to `GCDEXT_DC_THRESHOLD'. Above this threshold, GCDEXT is
-implemented as a loop around HGCD, but with more book-keeping to keep
-track of the cofactors. This gives the same asymptotic running time as
-for GCD and HGCD, O(M(N)*log(N))
-
-   One difference to plain GCD is that while the inputs a and b are
-reduced as the algorithm proceeds, the cofactors x and y grow in size.
-This makes the tuning of the chopping-point more difficult. The current
-code chops off the most significant half of the inputs for the call to
-HGCD in the first iteration, and the most significant two thirds for
-the remaining calls. This strategy could surely be improved. Also the
-stop condition for the loop, where Lehmer's algorithm is invoked once
-the inputs are reduced below `GCDEXT_DC_THRESHOLD', could maybe be
-improved by taking into account the current size of the cofactors.
-
-\1f
-File: gmp.info,  Node: Jacobi Symbol,  Prev: Extended GCD,  Up: Greatest Common Divisor Algorithms
-
-16.3.5 Jacobi Symbol
---------------------
-
-`mpz_jacobi' and `mpz_kronecker' are currently implemented with a
-simple binary algorithm similar to that described for the GCDs (*note
-Binary GCD::).  They're not very fast when both inputs are large.
-Lehmer's multi-step improvement or a binary based multi-step algorithm
-is likely to be better.
-
-   When one operand fits a single limb, and that includes
-`mpz_kronecker_ui' and friends, an initial reduction is done with
-either `mpn_mod_1' or `mpn_modexact_1_odd', followed by the binary
-algorithm on a single limb.  The binary algorithm is well suited to a
-single limb, and the whole calculation in this case is quite efficient.
-
-   In all the routines sign changes for the result are accumulated
-using some bit twiddling, avoiding table lookups or conditional jumps.
-
diff --git a/misc/builddeps/win64/gmp/share/info/gmp.info-2 b/misc/builddeps/win64/gmp/share/info/gmp.info-2
deleted file mode 100644 (file)
index 4584623..0000000
+++ /dev/null
@@ -1,3489 +0,0 @@
-This is ../../gmp/doc/gmp.info, produced by makeinfo version 4.8 from
-../../gmp/doc/gmp.texi.
-
-   This manual describes how to install and use the GNU multiple
-precision arithmetic library, version 5.0.1.
-
-   Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version
-1.3 or any later version published by the Free Software Foundation;
-with no Invariant Sections, with the Front-Cover Texts being "A GNU
-Manual", and with the Back-Cover Texts being "You have freedom to copy
-and modify this GNU Manual, like GNU software".  A copy of the license
-is included in *Note GNU Free Documentation License::.
-
-INFO-DIR-SECTION GNU libraries
-START-INFO-DIR-ENTRY
-* gmp: (gmp).                   GNU Multiple Precision Arithmetic Library.
-END-INFO-DIR-ENTRY
-
-\1f
-File: gmp.info,  Node: Powering Algorithms,  Next: Root Extraction Algorithms,  Prev: Greatest Common Divisor Algorithms,  Up: Algorithms
-
-16.4 Powering Algorithms
-========================
-
-* Menu:
-
-* Normal Powering Algorithm::
-* Modular Powering Algorithm::
-
-\1f
-File: gmp.info,  Node: Normal Powering Algorithm,  Next: Modular Powering Algorithm,  Prev: Powering Algorithms,  Up: Powering Algorithms
-
-16.4.1 Normal Powering
-----------------------
-
-Normal `mpz' or `mpf' powering uses a simple binary algorithm,
-successively squaring and then multiplying by the base when a 1 bit is
-seen in the exponent, as per Knuth section 4.6.3.  The "left to right"
-variant described there is used rather than algorithm A, since it's
-just as easy and can be done with somewhat less temporary memory.
-
-\1f
-File: gmp.info,  Node: Modular Powering Algorithm,  Prev: Normal Powering Algorithm,  Up: Powering Algorithms
-
-16.4.2 Modular Powering
------------------------
-
-Modular powering is implemented using a 2^k-ary sliding window
-algorithm, as per "Handbook of Applied Cryptography" algorithm 14.85
-(*note References::).  k is chosen according to the size of the
-exponent.  Larger exponents use larger values of k, the choice being
-made to minimize the average number of multiplications that must
-supplement the squaring.
-
-   The modular multiplies and squares use either a simple division or
-the REDC method by Montgomery (*note References::).  REDC is a little
-faster, essentially saving N single limb divisions in a fashion similar
-to an exact remainder (*note Exact Remainder::).
-
-\1f
-File: gmp.info,  Node: Root Extraction Algorithms,  Next: Radix Conversion Algorithms,  Prev: Powering Algorithms,  Up: Algorithms
-
-16.5 Root Extraction Algorithms
-===============================
-
-* Menu:
-
-* Square Root Algorithm::
-* Nth Root Algorithm::
-* Perfect Square Algorithm::
-* Perfect Power Algorithm::
-
-\1f
-File: gmp.info,  Node: Square Root Algorithm,  Next: Nth Root Algorithm,  Prev: Root Extraction Algorithms,  Up: Root Extraction Algorithms
-
-16.5.1 Square Root
-------------------
-
-Square roots are taken using the "Karatsuba Square Root" algorithm by
-Paul Zimmermann (*note References::).
-
-   An input n is split into four parts of k bits each, so with b=2^k we
-have n = a3*b^3 + a2*b^2 + a1*b + a0.  Part a3 must be "normalized" so
-that either the high or second highest bit is set.  In GMP, k is kept
-on a limb boundary and the input is left shifted (by an even number of
-bits) to normalize.
-
-   The square root of the high two parts is taken, by recursive
-application of the algorithm (bottoming out in a one-limb Newton's
-method),
-
-     s1,r1 = sqrtrem (a3*b + a2)
-
-   This is an approximation to the desired root and is extended by a
-division to give s,r,
-
-     q,u = divrem (r1*b + a1, 2*s1)
-     s = s1*b + q
-     r = u*b + a0 - q^2
-
-   The normalization requirement on a3 means at this point s is either
-correct or 1 too big.  r is negative in the latter case, so
-
-     if r < 0 then
-       r = r + 2*s - 1
-       s = s - 1
-
-   The algorithm is expressed in a divide and conquer form, but as
-noted in the paper it can also be viewed as a discrete variant of
-Newton's method, or as a variation on the schoolboy method (no longer
-taught) for square roots two digits at a time.
-
-   If the remainder r is not required then usually only a few high limbs
-of r and u need to be calculated to determine whether an adjustment to
-s is required.  This optimization is not currently implemented.
-
-   In the Karatsuba multiplication range this algorithm is
-O(1.5*M(N/2)), where M(n) is the time to multiply two numbers of n
-limbs.  In the FFT multiplication range this grows to a bound of
-O(6*M(N/2)).  In practice a factor of about 1.5 to 1.8 is found in the
-Karatsuba and Toom-3 ranges, growing to 2 or 3 in the FFT range.
-
-   The algorithm does all its calculations in integers and the resulting
-`mpn_sqrtrem' is used for both `mpz_sqrt' and `mpf_sqrt'.  The extended
-precision given by `mpf_sqrt_ui' is obtained by padding with zero limbs.
-
-\1f
-File: gmp.info,  Node: Nth Root Algorithm,  Next: Perfect Square Algorithm,  Prev: Square Root Algorithm,  Up: Root Extraction Algorithms
-
-16.5.2 Nth Root
----------------
-
-Integer Nth roots are taken using Newton's method with the following
-iteration, where A is the input and n is the root to be taken.
-
-              1         A
-     a[i+1] = - * ( --------- + (n-1)*a[i] )
-              n     a[i]^(n-1)
-
-   The initial approximation a[1] is generated bitwise by successively
-powering a trial root with or without new 1 bits, aiming to be just
-above the true root.  The iteration converges quadratically when
-started from a good approximation.  When n is large more initial bits
-are needed to get good convergence.  The current implementation is not
-particularly well optimized.
-
-\1f
-File: gmp.info,  Node: Perfect Square Algorithm,  Next: Perfect Power Algorithm,  Prev: Nth Root Algorithm,  Up: Root Extraction Algorithms
-
-16.5.3 Perfect Square
----------------------
-
-A significant fraction of non-squares can be quickly identified by
-checking whether the input is a quadratic residue modulo small integers.
-
-   `mpz_perfect_square_p' first tests the input mod 256, which means
-just examining the low byte.  Only 44 different values occur for
-squares mod 256, so 82.8% of inputs can be immediately identified as
-non-squares.
-
-   On a 32-bit system similar tests are done mod 9, 5, 7, 13 and 17,
-for a total 99.25% of inputs identified as non-squares.  On a 64-bit
-system 97 is tested too, for a total 99.62%.
-
-   These moduli are chosen because they're factors of 2^24-1 (or 2^48-1
-for 64-bits), and such a remainder can be quickly taken just using
-additions (see `mpn_mod_34lsub1').
-
-   When nails are in use moduli are instead selected by the `gen-psqr.c'
-program and applied with an `mpn_mod_1'.  The same 2^24-1 or 2^48-1
-could be done with nails using some extra bit shifts, but this is not
-currently implemented.
-
-   In any case each modulus is applied to the `mpn_mod_34lsub1' or
-`mpn_mod_1' remainder and a table lookup identifies non-squares.  By
-using a "modexact" style calculation, and suitably permuted tables,
-just one multiply each is required, see the code for details.  Moduli
-are also combined to save operations, so long as the lookup tables
-don't become too big.  `gen-psqr.c' does all the pre-calculations.
-
-   A square root must still be taken for any value that passes these
-tests, to verify it's really a square and not one of the small fraction
-of non-squares that get through (ie. a pseudo-square to all the tested
-bases).
-
-   Clearly more residue tests could be done, `mpz_perfect_square_p' only
-uses a compact and efficient set.  Big inputs would probably benefit
-from more residue testing, small inputs might be better off with less.
-The assumed distribution of squares versus non-squares in the input
-would affect such considerations.
-
-\1f
-File: gmp.info,  Node: Perfect Power Algorithm,  Prev: Perfect Square Algorithm,  Up: Root Extraction Algorithms
-
-16.5.4 Perfect Power
---------------------
-
-Detecting perfect powers is required by some factorization algorithms.
-Currently `mpz_perfect_power_p' is implemented using repeated Nth root
-extractions, though naturally only prime roots need to be considered.
-(*Note Nth Root Algorithm::.)
-
-   If a prime divisor p with multiplicity e can be found, then only
-roots which are divisors of e need to be considered, much reducing the
-work necessary.  To this end divisibility by a set of small primes is
-checked.
-
-\1f
-File: gmp.info,  Node: Radix Conversion Algorithms,  Next: Other Algorithms,  Prev: Root Extraction Algorithms,  Up: Algorithms
-
-16.6 Radix Conversion
-=====================
-
-Radix conversions are less important than other algorithms.  A program
-dominated by conversions should probably use a different data
-representation.
-
-* Menu:
-
-* Binary to Radix::
-* Radix to Binary::
-
-\1f
-File: gmp.info,  Node: Binary to Radix,  Next: Radix to Binary,  Prev: Radix Conversion Algorithms,  Up: Radix Conversion Algorithms
-
-16.6.1 Binary to Radix
-----------------------
-
-Conversions from binary to a power-of-2 radix use a simple and fast
-O(N) bit extraction algorithm.
-
-   Conversions from binary to other radices use one of two algorithms.
-Sizes below `GET_STR_PRECOMPUTE_THRESHOLD' use a basic O(N^2) method.
-Repeated divisions by b^n are made, where b is the radix and n is the
-biggest power that fits in a limb.  But instead of simply using the
-remainder r from such divisions, an extra divide step is done to give a
-fractional limb representing r/b^n.  The digits of r can then be
-extracted using multiplications by b rather than divisions.  Special
-case code is provided for decimal, allowing multiplications by 10 to
-optimize to shifts and adds.
-
-   Above `GET_STR_PRECOMPUTE_THRESHOLD' a sub-quadratic algorithm is
-used.  For an input t, powers b^(n*2^i) of the radix are calculated,
-until a power between t and sqrt(t) is reached.  t is then divided by
-that largest power, giving a quotient which is the digits above that
-power, and a remainder which is those below.  These two parts are in
-turn divided by the second highest power, and so on recursively.  When
-a piece has been divided down to less than `GET_STR_DC_THRESHOLD'
-limbs, the basecase algorithm described above is used.
-
-   The advantage of this algorithm is that big divisions can make use
-of the sub-quadratic divide and conquer division (*note Divide and
-Conquer Division::), and big divisions tend to have less overheads than
-lots of separate single limb divisions anyway.  But in any case the
-cost of calculating the powers b^(n*2^i) must first be overcome.
-
-   `GET_STR_PRECOMPUTE_THRESHOLD' and `GET_STR_DC_THRESHOLD' represent
-the same basic thing, the point where it becomes worth doing a big
-division to cut the input in half.  `GET_STR_PRECOMPUTE_THRESHOLD'
-includes the cost of calculating the radix power required, whereas
-`GET_STR_DC_THRESHOLD' assumes that's already available, which is the
-case when recursing.
-
-   Since the base case produces digits from least to most significant
-but they want to be stored from most to least, it's necessary to
-calculate in advance how many digits there will be, or at least be sure
-not to underestimate that.  For GMP the number of input bits is
-multiplied by `chars_per_bit_exactly' from `mp_bases', rounding up.
-The result is either correct or one too big.
-
-   Examining some of the high bits of the input could increase the
-chance of getting the exact number of digits, but an exact result every
-time would not be practical, since in general the difference between
-numbers 100... and 99... is only in the last few bits and the work to
-identify 99...  might well be almost as much as a full conversion.
-
-   `mpf_get_str' doesn't currently use the algorithm described here, it
-multiplies or divides by a power of b to move the radix point to the
-just above the highest non-zero digit (or at worst one above that
-location), then multiplies by b^n to bring out digits.  This is O(N^2)
-and is certainly not optimal.
-
-   The r/b^n scheme described above for using multiplications to bring
-out digits might be useful for more than a single limb.  Some brief
-experiments with it on the base case when recursing didn't give a
-noticeable improvement, but perhaps that was only due to the
-implementation.  Something similar would work for the sub-quadratic
-divisions too, though there would be the cost of calculating a bigger
-radix power.
-
-   Another possible improvement for the sub-quadratic part would be to
-arrange for radix powers that balanced the sizes of quotient and
-remainder produced, ie. the highest power would be an b^(n*k)
-approximately equal to sqrt(t), not restricted to a 2^i factor.  That
-ought to smooth out a graph of times against sizes, but may or may not
-be a net speedup.
-
-\1f
-File: gmp.info,  Node: Radix to Binary,  Prev: Binary to Radix,  Up: Radix Conversion Algorithms
-
-16.6.2 Radix to Binary
-----------------------
-
-*This section needs to be rewritten, it currently describes the
-algorithms used before GMP 4.3.*
-
-   Conversions from a power-of-2 radix into binary use a simple and fast
-O(N) bitwise concatenation algorithm.
-
-   Conversions from other radices use one of two algorithms.  Sizes
-below `SET_STR_PRECOMPUTE_THRESHOLD' use a basic O(N^2) method.  Groups
-of n digits are converted to limbs, where n is the biggest power of the
-base b which will fit in a limb, then those groups are accumulated into
-the result by multiplying by b^n and adding.  This saves
-multi-precision operations, as per Knuth section 4.4 part E (*note
-References::).  Some special case code is provided for decimal, giving
-the compiler a chance to optimize multiplications by 10.
-
-   Above `SET_STR_PRECOMPUTE_THRESHOLD' a sub-quadratic algorithm is
-used.  First groups of n digits are converted into limbs.  Then adjacent
-limbs are combined into limb pairs with x*b^n+y, where x and y are the
-limbs.  Adjacent limb pairs are combined into quads similarly with
-x*b^(2n)+y.  This continues until a single block remains, that being
-the result.
-
-   The advantage of this method is that the multiplications for each x
-are big blocks, allowing Karatsuba and higher algorithms to be used.
-But the cost of calculating the powers b^(n*2^i) must be overcome.
-`SET_STR_PRECOMPUTE_THRESHOLD' usually ends up quite big, around 5000
-digits, and on some processors much bigger still.
-
-   `SET_STR_PRECOMPUTE_THRESHOLD' is based on the input digits (and
-tuned for decimal), though it might be better based on a limb count, so
-as to be independent of the base.  But that sort of count isn't used by
-the base case and so would need some sort of initial calculation or
-estimate.
-
-   The main reason `SET_STR_PRECOMPUTE_THRESHOLD' is so much bigger
-than the corresponding `GET_STR_PRECOMPUTE_THRESHOLD' is that
-`mpn_mul_1' is much faster than `mpn_divrem_1' (often by a factor of 5,
-or more).
-
-\1f
-File: gmp.info,  Node: Other Algorithms,  Next: Assembly Coding,  Prev: Radix Conversion Algorithms,  Up: Algorithms
-
-16.7 Other Algorithms
-=====================
-
-* Menu:
-
-* Prime Testing Algorithm::
-* Factorial Algorithm::
-* Binomial Coefficients Algorithm::
-* Fibonacci Numbers Algorithm::
-* Lucas Numbers Algorithm::
-* Random Number Algorithms::
-
-\1f
-File: gmp.info,  Node: Prime Testing Algorithm,  Next: Factorial Algorithm,  Prev: Other Algorithms,  Up: Other Algorithms
-
-16.7.1 Prime Testing
---------------------
-
-The primality testing in `mpz_probab_prime_p' (*note Number Theoretic
-Functions::) first does some trial division by small factors and then
-uses the Miller-Rabin probabilistic primality testing algorithm, as
-described in Knuth section 4.5.4 algorithm P (*note References::).
-
-   For an odd input n, and with n = q*2^k+1 where q is odd, this
-algorithm selects a random base x and tests whether x^q mod n is 1 or
--1, or an x^(q*2^j) mod n is 1, for 1<=j<=k.  If so then n is probably
-prime, if not then n is definitely composite.
-
-   Any prime n will pass the test, but some composites do too.  Such
-composites are known as strong pseudoprimes to base x.  No n is a
-strong pseudoprime to more than 1/4 of all bases (see Knuth exercise
-22), hence with x chosen at random there's no more than a 1/4 chance a
-"probable prime" will in fact be composite.
-
-   In fact strong pseudoprimes are quite rare, making the test much more
-powerful than this analysis would suggest, but 1/4 is all that's proven
-for an arbitrary n.
-
-\1f
-File: gmp.info,  Node: Factorial Algorithm,  Next: Binomial Coefficients Algorithm,  Prev: Prime Testing Algorithm,  Up: Other Algorithms
-
-16.7.2 Factorial
-----------------
-
-Factorials are calculated by a combination of removal of twos,
-powering, and binary splitting.  The procedure can be best illustrated
-with an example,
-
-     23! = 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23
-
-has factors of two removed,
-
-     23! = 2^19.1.1.3.1.5.3.7.1.9.5.11.3.13.7.15.1.17.9.19.5.21.11.23
-
-and the resulting terms collected up according to their multiplicity,
-
-     23! = 2^19.(3.5)^3.(7.9.11)^2.(13.15.17.19.21.23)
-
-   Each sequence such as 13.15.17.19.21.23 is evaluated by splitting
-into every second term, as for instance (13.17.21).(15.19.23), and the
-same recursively on each half.  This is implemented iteratively using
-some bit twiddling.
-
-   Such splitting is more efficient than repeated Nx1 multiplies since
-it forms big multiplies, allowing Karatsuba and higher algorithms to be
-used.  And even below the Karatsuba threshold a big block of work can
-be more efficient for the basecase algorithm.
-
-   Splitting into subsequences of every second term keeps the resulting
-products more nearly equal in size than would the simpler approach of
-say taking the first half and second half of the sequence.  Nearly
-equal products are more efficient for the current multiply
-implementation.
-
-\1f
-File: gmp.info,  Node: Binomial Coefficients Algorithm,  Next: Fibonacci Numbers Algorithm,  Prev: Factorial Algorithm,  Up: Other Algorithms
-
-16.7.3 Binomial Coefficients
-----------------------------
-
-Binomial coefficients C(n,k) are calculated by first arranging k <= n/2
-using C(n,k) = C(n,n-k) if necessary, and then evaluating the following
-product simply from i=2 to i=k.
-
-                           k  (n-k+i)
-     C(n,k) =  (n-k+1) * prod -------
-                          i=2    i
-
-   It's easy to show that each denominator i will divide the product so
-far, so the exact division algorithm is used (*note Exact Division::).
-
-   The numerators n-k+i and denominators i are first accumulated into
-as many fit a limb, to save multi-precision operations, though for
-`mpz_bin_ui' this applies only to the divisors, since n is an `mpz_t'
-and n-k+i in general won't fit in a limb at all.
-
-\1f
-File: gmp.info,  Node: Fibonacci Numbers Algorithm,  Next: Lucas Numbers Algorithm,  Prev: Binomial Coefficients Algorithm,  Up: Other Algorithms
-
-16.7.4 Fibonacci Numbers
-------------------------
-
-The Fibonacci functions `mpz_fib_ui' and `mpz_fib2_ui' are designed for
-calculating isolated F[n] or F[n],F[n-1] values efficiently.
-
-   For small n, a table of single limb values in `__gmp_fib_table' is
-used.  On a 32-bit limb this goes up to F[47], or on a 64-bit limb up
-to F[93].  For convenience the table starts at F[-1].
-
-   Beyond the table, values are generated with a binary powering
-algorithm, calculating a pair F[n] and F[n-1] working from high to low
-across the bits of n.  The formulas used are
-
-     F[2k+1] = 4*F[k]^2 - F[k-1]^2 + 2*(-1)^k
-     F[2k-1] =   F[k]^2 + F[k-1]^2
-
-     F[2k] = F[2k+1] - F[2k-1]
-
-   At each step, k is the high b bits of n.  If the next bit of n is 0
-then F[2k],F[2k-1] is used, or if it's a 1 then F[2k+1],F[2k] is used,
-and the process repeated until all bits of n are incorporated.  Notice
-these formulas require just two squares per bit of n.
-
-   It'd be possible to handle the first few n above the single limb
-table with simple additions, using the defining Fibonacci recurrence
-F[k+1]=F[k]+F[k-1], but this is not done since it usually turns out to
-be faster for only about 10 or 20 values of n, and including a block of
-code for just those doesn't seem worthwhile.  If they really mattered
-it'd be better to extend the data table.
-
-   Using a table avoids lots of calculations on small numbers, and
-makes small n go fast.  A bigger table would make more small n go fast,
-it's just a question of balancing size against desired speed.  For GMP
-the code is kept compact, with the emphasis primarily on a good
-powering algorithm.
-
-   `mpz_fib2_ui' returns both F[n] and F[n-1], but `mpz_fib_ui' is only
-interested in F[n].  In this case the last step of the algorithm can
-become one multiply instead of two squares.  One of the following two
-formulas is used, according as n is odd or even.
-
-     F[2k]   = F[k]*(F[k]+2F[k-1])
-
-     F[2k+1] = (2F[k]+F[k-1])*(2F[k]-F[k-1]) + 2*(-1)^k
-
-   F[2k+1] here is the same as above, just rearranged to be a multiply.
-For interest, the 2*(-1)^k term both here and above can be applied
-just to the low limb of the calculation, without a carry or borrow into
-further limbs, which saves some code size.  See comments with
-`mpz_fib_ui' and the internal `mpn_fib2_ui' for how this is done.
-
-\1f
-File: gmp.info,  Node: Lucas Numbers Algorithm,  Next: Random Number Algorithms,  Prev: Fibonacci Numbers Algorithm,  Up: Other Algorithms
-
-16.7.5 Lucas Numbers
---------------------
-
-`mpz_lucnum2_ui' derives a pair of Lucas numbers from a pair of
-Fibonacci numbers with the following simple formulas.
-
-     L[k]   =   F[k] + 2*F[k-1]
-     L[k-1] = 2*F[k] -   F[k-1]
-
-   `mpz_lucnum_ui' is only interested in L[n], and some work can be
-saved.  Trailing zero bits on n can be handled with a single square
-each.
-
-     L[2k] = L[k]^2 - 2*(-1)^k
-
-   And the lowest 1 bit can be handled with one multiply of a pair of
-Fibonacci numbers, similar to what `mpz_fib_ui' does.
-
-     L[2k+1] = 5*F[k-1]*(2*F[k]+F[k-1]) - 4*(-1)^k
-
-\1f
-File: gmp.info,  Node: Random Number Algorithms,  Prev: Lucas Numbers Algorithm,  Up: Other Algorithms
-
-16.7.6 Random Numbers
----------------------
-
-For the `urandomb' functions, random numbers are generated simply by
-concatenating bits produced by the generator.  As long as the generator
-has good randomness properties this will produce well-distributed N bit
-numbers.
-
-   For the `urandomm' functions, random numbers in a range 0<=R<N are
-generated by taking values R of ceil(log2(N)) bits each until one
-satisfies R<N.  This will normally require only one or two attempts,
-but the attempts are limited in case the generator is somehow
-degenerate and produces only 1 bits or similar.
-
-   The Mersenne Twister generator is by Matsumoto and Nishimura (*note
-References::).  It has a non-repeating period of 2^19937-1, which is a
-Mersenne prime, hence the name of the generator.  The state is 624
-words of 32-bits each, which is iterated with one XOR and shift for each
-32-bit word generated, making the algorithm very fast.  Randomness
-properties are also very good and this is the default algorithm used by
-GMP.
-
-   Linear congruential generators are described in many text books, for
-instance Knuth volume 2 (*note References::).  With a modulus M and
-parameters A and C, a integer state S is iterated by the formula S <-
-A*S+C mod M.  At each step the new state is a linear function of the
-previous, mod M, hence the name of the generator.
-
-   In GMP only moduli of the form 2^N are supported, and the current
-implementation is not as well optimized as it could be.  Overheads are
-significant when N is small, and when N is large clearly the multiply
-at each step will become slow.  This is not a big concern, since the
-Mersenne Twister generator is better in every respect and is therefore
-recommended for all normal applications.
-
-   For both generators the current state can be deduced by observing
-enough output and applying some linear algebra (over GF(2) in the case
-of the Mersenne Twister).  This generally means raw output is
-unsuitable for cryptographic applications without further hashing or
-the like.
-
-\1f
-File: gmp.info,  Node: Assembly Coding,  Prev: Other Algorithms,  Up: Algorithms
-
-16.8 Assembly Coding
-====================
-
-The assembly subroutines in GMP are the most significant source of
-speed at small to moderate sizes.  At larger sizes algorithm selection
-becomes more important, but of course speedups in low level routines
-will still speed up everything proportionally.
-
-   Carry handling and widening multiplies that are important for GMP
-can't be easily expressed in C.  GCC `asm' blocks help a lot and are
-provided in `longlong.h', but hand coding low level routines invariably
-offers a speedup over generic C by a factor of anything from 2 to 10.
-
-* Menu:
-
-* Assembly Code Organisation::
-* Assembly Basics::
-* Assembly Carry Propagation::
-* Assembly Cache Handling::
-* Assembly Functional Units::
-* Assembly Floating Point::
-* Assembly SIMD Instructions::
-* Assembly Software Pipelining::
-* Assembly Loop Unrolling::
-* Assembly Writing Guide::
-
-\1f
-File: gmp.info,  Node: Assembly Code Organisation,  Next: Assembly Basics,  Prev: Assembly Coding,  Up: Assembly Coding
-
-16.8.1 Code Organisation
-------------------------
-
-The various `mpn' subdirectories contain machine-dependent code, written
-in C or assembly.  The `mpn/generic' subdirectory contains default code,
-used when there's no machine-specific version of a particular file.
-
-   Each `mpn' subdirectory is for an ISA family.  Generally 32-bit and
-64-bit variants in a family cannot share code and have separate
-directories.  Within a family further subdirectories may exist for CPU
-variants.
-
-   In each directory a `nails' subdirectory may exist, holding code with
-nails support for that CPU variant.  A `NAILS_SUPPORT' directive in each
-file indicates the nails values the code handles.  Nails code only
-exists where it's faster, or promises to be faster, than plain code.
-There's no effort put into nails if they're not going to enhance a
-given CPU.
-
-\1f
-File: gmp.info,  Node: Assembly Basics,  Next: Assembly Carry Propagation,  Prev: Assembly Code Organisation,  Up: Assembly Coding
-
-16.8.2 Assembly Basics
-----------------------
-
-`mpn_addmul_1' and `mpn_submul_1' are the most important routines for
-overall GMP performance.  All multiplications and divisions come down to
-repeated calls to these.  `mpn_add_n', `mpn_sub_n', `mpn_lshift' and
-`mpn_rshift' are next most important.
-
-   On some CPUs assembly versions of the internal functions
-`mpn_mul_basecase' and `mpn_sqr_basecase' give significant speedups,
-mainly through avoiding function call overheads.  They can also
-potentially make better use of a wide superscalar processor, as can
-bigger primitives like `mpn_addmul_2' or `mpn_addmul_4'.
-
-   The restrictions on overlaps between sources and destinations (*note
-Low-level Functions::) are designed to facilitate a variety of
-implementations.  For example, knowing `mpn_add_n' won't have partly
-overlapping sources and destination means reading can be done far ahead
-of writing on superscalar processors, and loops can be vectorized on a
-vector processor, depending on the carry handling.
-
-\1f
-File: gmp.info,  Node: Assembly Carry Propagation,  Next: Assembly Cache Handling,  Prev: Assembly Basics,  Up: Assembly Coding
-
-16.8.3 Carry Propagation
-------------------------
-
-The problem that presents most challenges in GMP is propagating carries
-from one limb to the next.  In functions like `mpn_addmul_1' and
-`mpn_add_n', carries are the only dependencies between limb operations.
-
-   On processors with carry flags, a straightforward CISC style `adc' is
-generally best.  AMD K6 `mpn_addmul_1' however is an example of an
-unusual set of circumstances where a branch works out better.
-
-   On RISC processors generally an add and compare for overflow is
-used.  This sort of thing can be seen in `mpn/generic/aors_n.c'.  Some
-carry propagation schemes require 4 instructions, meaning at least 4
-cycles per limb, but other schemes may use just 1 or 2.  On wide
-superscalar processors performance may be completely determined by the
-number of dependent instructions between carry-in and carry-out for
-each limb.
-
-   On vector processors good use can be made of the fact that a carry
-bit only very rarely propagates more than one limb.  When adding a
-single bit to a limb, there's only a carry out if that limb was
-`0xFF...FF' which on random data will be only 1 in 2^mp_bits_per_limb.
-`mpn/cray/add_n.c' is an example of this, it adds all limbs in
-parallel, adds one set of carry bits in parallel and then only rarely
-needs to fall through to a loop propagating further carries.
-
-   On the x86s, GCC (as of version 2.95.2) doesn't generate
-particularly good code for the RISC style idioms that are necessary to
-handle carry bits in C.  Often conditional jumps are generated where
-`adc' or `sbb' forms would be better.  And so unfortunately almost any
-loop involving carry bits needs to be coded in assembly for best
-results.
-
-\1f
-File: gmp.info,  Node: Assembly Cache Handling,  Next: Assembly Functional Units,  Prev: Assembly Carry Propagation,  Up: Assembly Coding
-
-16.8.4 Cache Handling
----------------------
-
-GMP aims to perform well both on operands that fit entirely in L1 cache
-and those which don't.
-
-   Basic routines like `mpn_add_n' or `mpn_lshift' are often used on
-large operands, so L2 and main memory performance is important for them.
-`mpn_mul_1' and `mpn_addmul_1' are mostly used for multiply and square
-basecases, so L1 performance matters most for them, unless assembly
-versions of `mpn_mul_basecase' and `mpn_sqr_basecase' exist, in which
-case the remaining uses are mostly for larger operands.
-
-   For L2 or main memory operands, memory access times will almost
-certainly be more than the calculation time.  The aim therefore is to
-maximize memory throughput, by starting a load of the next cache line
-while processing the contents of the previous one.  Clearly this is
-only possible if the chip has a lock-up free cache or some sort of
-prefetch instruction.  Most current chips have both these features.
-
-   Prefetching sources combines well with loop unrolling, since a
-prefetch can be initiated once per unrolled loop (or more than once if
-the loop covers more than one cache line).
-
-   On CPUs without write-allocate caches, prefetching destinations will
-ensure individual stores don't go further down the cache hierarchy,
-limiting bandwidth.  Of course for calculations which are slow anyway,
-like `mpn_divrem_1', write-throughs might be fine.
-
-   The distance ahead to prefetch will be determined by memory latency
-versus throughput.  The aim of course is to have data arriving
-continuously, at peak throughput.  Some CPUs have limits on the number
-of fetches or prefetches in progress.
-
-   If a special prefetch instruction doesn't exist then a plain load
-can be used, but in that case care must be taken not to attempt to read
-past the end of an operand, since that might produce a segmentation
-violation.
-
-   Some CPUs or systems have hardware that detects sequential memory
-accesses and initiates suitable cache movements automatically, making
-life easy.
-
-\1f
-File: gmp.info,  Node: Assembly Functional Units,  Next: Assembly Floating Point,  Prev: Assembly Cache Handling,  Up: Assembly Coding
-
-16.8.5 Functional Units
------------------------
-
-When choosing an approach for an assembly loop, consideration is given
-to what operations can execute simultaneously and what throughput can
-thereby be achieved.  In some cases an algorithm can be tweaked to
-accommodate available resources.
-
-   Loop control will generally require a counter and pointer updates,
-costing as much as 5 instructions, plus any delays a branch introduces.
-CPU addressing modes might reduce pointer updates, perhaps by allowing
-just one updating pointer and others expressed as offsets from it, or
-on CISC chips with all addressing done with the loop counter as a
-scaled index.
-
-   The final loop control cost can be amortised by processing several
-limbs in each iteration (*note Assembly Loop Unrolling::).  This at
-least ensures loop control isn't a big fraction the work done.
-
-   Memory throughput is always a limit.  If perhaps only one load or
-one store can be done per cycle then 3 cycles/limb will the top speed
-for "binary" operations like `mpn_add_n', and any code achieving that
-is optimal.
-
-   Integer resources can be freed up by having the loop counter in a
-float register, or by pressing the float units into use for some
-multiplying, perhaps doing every second limb on the float side (*note
-Assembly Floating Point::).
-
-   Float resources can be freed up by doing carry propagation on the
-integer side, or even by doing integer to float conversions in integers
-using bit twiddling.
-
-\1f
-File: gmp.info,  Node: Assembly Floating Point,  Next: Assembly SIMD Instructions,  Prev: Assembly Functional Units,  Up: Assembly Coding
-
-16.8.6 Floating Point
----------------------
-
-Floating point arithmetic is used in GMP for multiplications on CPUs
-with poor integer multipliers.  It's mostly useful for `mpn_mul_1',
-`mpn_addmul_1' and `mpn_submul_1' on 64-bit machines, and
-`mpn_mul_basecase' on both 32-bit and 64-bit machines.
-
-   With IEEE 53-bit double precision floats, integer multiplications
-producing up to 53 bits will give exact results.  Breaking a 64x64
-multiplication into eight 16x32->48 bit pieces is convenient.  With
-some care though six 21x32->53 bit products can be used, if one of the
-lower two 21-bit pieces also uses the sign bit.
-
-   For the `mpn_mul_1' family of functions on a 64-bit machine, the
-invariant single limb is split at the start, into 3 or 4 pieces.
-Inside the loop, the bignum operand is split into 32-bit pieces.  Fast
-conversion of these unsigned 32-bit pieces to floating point is highly
-machine-dependent.  In some cases, reading the data into the integer
-unit, zero-extending to 64-bits, then transferring to the floating
-point unit back via memory is the only option.
-
-   Converting partial products back to 64-bit limbs is usually best
-done as a signed conversion.  Since all values are smaller than 2^53,
-signed and unsigned are the same, but most processors lack unsigned
-conversions.
-
-
-
-   Here is a diagram showing 16x32 bit products for an `mpn_mul_1' or
-`mpn_addmul_1' with a 64-bit limb.  The single limb operand V is split
-into four 16-bit parts.  The multi-limb operand U is split in the loop
-into two 32-bit parts.
-
-                     +---+---+---+---+
-                     |v48|v32|v16|v00|    V operand
-                     +---+---+---+---+
-
-                     +-------+---+---+
-                 x   |  u32  |  u00  |    U operand (one limb)
-                     +---------------+
-
-     ---------------------------------
-
-                         +-----------+
-                         | u00 x v00 |    p00    48-bit products
-                         +-----------+
-                     +-----------+
-                     | u00 x v16 |        p16
-                     +-----------+
-                 +-----------+
-                 | u00 x v32 |            p32
-                 +-----------+
-             +-----------+
-             | u00 x v48 |                p48
-             +-----------+
-                 +-----------+
-                 | u32 x v00 |            r32
-                 +-----------+
-             +-----------+
-             | u32 x v16 |                r48
-             +-----------+
-         +-----------+
-         | u32 x v32 |                    r64
-         +-----------+
-     +-----------+
-     | u32 x v48 |                        r80
-     +-----------+
-
-   p32 and r32 can be summed using floating-point addition, and
-likewise p48 and r48.  p00 and p16 can be summed with r64 and r80 from
-the previous iteration.
-
-   For each loop then, four 49-bit quantities are transferred to the
-integer unit, aligned as follows,
-
-     |-----64bits----|-----64bits----|
-                        +------------+
-                        | p00 + r64' |    i00
-                        +------------+
-                    +------------+
-                    | p16 + r80' |        i16
-                    +------------+
-                +------------+
-                | p32 + r32  |            i32
-                +------------+
-            +------------+
-            | p48 + r48  |                i48
-            +------------+
-
-   The challenge then is to sum these efficiently and add in a carry
-limb, generating a low 64-bit result limb and a high 33-bit carry limb
-(i48 extends 33 bits into the high half).
-
-\1f
-File: gmp.info,  Node: Assembly SIMD Instructions,  Next: Assembly Software Pipelining,  Prev: Assembly Floating Point,  Up: Assembly Coding
-
-16.8.7 SIMD Instructions
-------------------------
-
-The single-instruction multiple-data support in current microprocessors
-is aimed at signal processing algorithms where each data point can be
-treated more or less independently.  There's generally not much support
-for propagating the sort of carries that arise in GMP.
-
-   SIMD multiplications of say four 16x16 bit multiplies only do as much
-work as one 32x32 from GMP's point of view, and need some shifts and
-adds besides.  But of course if say the SIMD form is fully pipelined
-and uses less instruction decoding then it may still be worthwhile.
-
-   On the x86 chips, MMX has so far found a use in `mpn_rshift' and
-`mpn_lshift', and is used in a special case for 16-bit multipliers in
-the P55 `mpn_mul_1'.  SSE2 is used for Pentium 4 `mpn_mul_1',
-`mpn_addmul_1', and `mpn_submul_1'.
-
-\1f
-File: gmp.info,  Node: Assembly Software Pipelining,  Next: Assembly Loop Unrolling,  Prev: Assembly SIMD Instructions,  Up: Assembly Coding
-
-16.8.8 Software Pipelining
---------------------------
-
-Software pipelining consists of scheduling instructions around the
-branch point in a loop.  For example a loop might issue a load not for
-use in the present iteration but the next, thereby allowing extra
-cycles for the data to arrive from memory.
-
-   Naturally this is wanted only when doing things like loads or
-multiplies that take several cycles to complete, and only where a CPU
-has multiple functional units so that other work can be done in the
-meantime.
-
-   A pipeline with several stages will have a data value in progress at
-each stage and each loop iteration moves them along one stage.  This is
-like juggling.
-
-   If the latency of some instruction is greater than the loop time
-then it will be necessary to unroll, so one register has a result ready
-to use while another (or multiple others) are still in progress.
-(*note Assembly Loop Unrolling::).
-
-\1f
-File: gmp.info,  Node: Assembly Loop Unrolling,  Next: Assembly Writing Guide,  Prev: Assembly Software Pipelining,  Up: Assembly Coding
-
-16.8.9 Loop Unrolling
----------------------
-
-Loop unrolling consists of replicating code so that several limbs are
-processed in each loop.  At a minimum this reduces loop overheads by a
-corresponding factor, but it can also allow better register usage, for
-example alternately using one register combination and then another.
-Judicious use of `m4' macros can help avoid lots of duplication in the
-source code.
-
-   Any amount of unrolling can be handled with a loop counter that's
-decremented by N each time, stopping when the remaining count is less
-than the further N the loop will process.  Or by subtracting N at the
-start, the termination condition becomes when the counter C is less
-than 0 (and the count of remaining limbs is C+N).
-
-   Alternately for a power of 2 unroll the loop count and remainder can
-be established with a shift and mask.  This is convenient if also
-making a computed jump into the middle of a large loop.
-
-   The limbs not a multiple of the unrolling can be handled in various
-ways, for example
-
-   * A simple loop at the end (or the start) to process the excess.
-     Care will be wanted that it isn't too much slower than the
-     unrolled part.
-
-   * A set of binary tests, for example after an 8-limb unrolling, test
-     for 4 more limbs to process, then a further 2 more or not, and
-     finally 1 more or not.  This will probably take more code space
-     than a simple loop.
-
-   * A `switch' statement, providing separate code for each possible
-     excess, for example an 8-limb unrolling would have separate code
-     for 0 remaining, 1 remaining, etc, up to 7 remaining.  This might
-     take a lot of code, but may be the best way to optimize all cases
-     in combination with a deep pipelined loop.
-
-   * A computed jump into the middle of the loop, thus making the first
-     iteration handle the excess.  This should make times smoothly
-     increase with size, which is attractive, but setups for the jump
-     and adjustments for pointers can be tricky and could become quite
-     difficult in combination with deep pipelining.
-
-\1f
-File: gmp.info,  Node: Assembly Writing Guide,  Prev: Assembly Loop Unrolling,  Up: Assembly Coding
-
-16.8.10 Writing Guide
----------------------
-
-This is a guide to writing software pipelined loops for processing limb
-vectors in assembly.
-
-   First determine the algorithm and which instructions are needed.
-Code it without unrolling or scheduling, to make sure it works.  On a
-3-operand CPU try to write each new value to a new register, this will
-greatly simplify later steps.
-
-   Then note for each instruction the functional unit and/or issue port
-requirements.  If an instruction can use either of two units, like U0
-or U1 then make a category "U0/U1".  Count the total using each unit
-(or combined unit), and count all instructions.
-
-   Figure out from those counts the best possible loop time.  The goal
-will be to find a perfect schedule where instruction latencies are
-completely hidden.  The total instruction count might be the limiting
-factor, or perhaps a particular functional unit.  It might be possible
-to tweak the instructions to help the limiting factor.
-
-   Suppose the loop time is N, then make N issue buckets, with the
-final loop branch at the end of the last.  Now fill the buckets with
-dummy instructions using the functional units desired.  Run this to
-make sure the intended speed is reached.
-
-   Now replace the dummy instructions with the real instructions from
-the slow but correct loop you started with.  The first will typically
-be a load instruction.  Then the instruction using that value is placed
-in a bucket an appropriate distance down.  Run the loop again, to check
-it still runs at target speed.
-
-   Keep placing instructions, frequently measuring the loop.  After a
-few you will need to wrap around from the last bucket back to the top
-of the loop.  If you used the new-register for new-value strategy above
-then there will be no register conflicts.  If not then take care not to
-clobber something already in use.  Changing registers at this time is
-very error prone.
-
-   The loop will overlap two or more of the original loop iterations,
-and the computation of one vector element result will be started in one
-iteration of the new loop, and completed one or several iterations
-later.
-
-   The final step is to create feed-in and wind-down code for the loop.
-A good way to do this is to make a copy (or copies) of the loop at the
-start and delete those instructions which don't have valid antecedents,
-and at the end replicate and delete those whose results are unwanted
-(including any further loads).
-
-   The loop will have a minimum number of limbs loaded and processed,
-so the feed-in code must test if the request size is smaller and skip
-either to a suitable part of the wind-down or to special code for small
-sizes.
-
-\1f
-File: gmp.info,  Node: Internals,  Next: Contributors,  Prev: Algorithms,  Up: Top
-
-17 Internals
-************
-
-*This chapter is provided only for informational purposes and the
-various internals described here may change in future GMP releases.
-Applications expecting to be compatible with future releases should use
-only the documented interfaces described in previous chapters.*
-
-* Menu:
-
-* Integer Internals::
-* Rational Internals::
-* Float Internals::
-* Raw Output Internals::
-* C++ Interface Internals::
-
-\1f
-File: gmp.info,  Node: Integer Internals,  Next: Rational Internals,  Prev: Internals,  Up: Internals
-
-17.1 Integer Internals
-======================
-
-`mpz_t' variables represent integers using sign and magnitude, in space
-dynamically allocated and reallocated.  The fields are as follows.
-
-`_mp_size'
-     The number of limbs, or the negative of that when representing a
-     negative integer.  Zero is represented by `_mp_size' set to zero,
-     in which case the `_mp_d' data is unused.
-
-`_mp_d'
-     A pointer to an array of limbs which is the magnitude.  These are
-     stored "little endian" as per the `mpn' functions, so `_mp_d[0]'
-     is the least significant limb and `_mp_d[ABS(_mp_size)-1]' is the
-     most significant.  Whenever `_mp_size' is non-zero, the most
-     significant limb is non-zero.
-
-     Currently there's always at least one limb allocated, so for
-     instance `mpz_set_ui' never needs to reallocate, and `mpz_get_ui'
-     can fetch `_mp_d[0]' unconditionally (though its value is then
-     only wanted if `_mp_size' is non-zero).
-
-`_mp_alloc'
-     `_mp_alloc' is the number of limbs currently allocated at `_mp_d',
-     and naturally `_mp_alloc >= ABS(_mp_size)'.  When an `mpz' routine
-     is about to (or might be about to) increase `_mp_size', it checks
-     `_mp_alloc' to see whether there's enough space, and reallocates
-     if not.  `MPZ_REALLOC' is generally used for this.
-
-   The various bitwise logical functions like `mpz_and' behave as if
-negative values were twos complement.  But sign and magnitude is always
-used internally, and necessary adjustments are made during the
-calculations.  Sometimes this isn't pretty, but sign and magnitude are
-best for other routines.
-
-   Some internal temporary variables are setup with `MPZ_TMP_INIT' and
-these have `_mp_d' space obtained from `TMP_ALLOC' rather than the
-memory allocation functions.  Care is taken to ensure that these are
-big enough that no reallocation is necessary (since it would have
-unpredictable consequences).
-
-   `_mp_size' and `_mp_alloc' are `int', although `mp_size_t' is
-usually a `long'.  This is done to make the fields just 32 bits on some
-64 bits systems, thereby saving a few bytes of data space but still
-providing plenty of range.
-
-\1f
-File: gmp.info,  Node: Rational Internals,  Next: Float Internals,  Prev: Integer Internals,  Up: Internals
-
-17.2 Rational Internals
-=======================
-
-`mpq_t' variables represent rationals using an `mpz_t' numerator and
-denominator (*note Integer Internals::).
-
-   The canonical form adopted is denominator positive (and non-zero),
-no common factors between numerator and denominator, and zero uniquely
-represented as 0/1.
-
-   It's believed that casting out common factors at each stage of a
-calculation is best in general.  A GCD is an O(N^2) operation so it's
-better to do a few small ones immediately than to delay and have to do
-a big one later.  Knowing the numerator and denominator have no common
-factors can be used for example in `mpq_mul' to make only two cross
-GCDs necessary, not four.
-
-   This general approach to common factors is badly sub-optimal in the
-presence of simple factorizations or little prospect for cancellation,
-but GMP has no way to know when this will occur.  As per *Note
-Efficiency::, that's left to applications.  The `mpq_t' framework might
-still suit, with `mpq_numref' and `mpq_denref' for direct access to the
-numerator and denominator, or of course `mpz_t' variables can be used
-directly.
-
-\1f
-File: gmp.info,  Node: Float Internals,  Next: Raw Output Internals,  Prev: Rational Internals,  Up: Internals
-
-17.3 Float Internals
-====================
-
-Efficient calculation is the primary aim of GMP floats and the use of
-whole limbs and simple rounding facilitates this.
-
-   `mpf_t' floats have a variable precision mantissa and a single
-machine word signed exponent.  The mantissa is represented using sign
-and magnitude.
-
-        most                   least
-     significant            significant
-        limb                   limb
-
-                                 _mp_d
-      |---- _mp_exp --->           |
-       _____ _____ _____ _____ _____
-      |_____|_____|_____|_____|_____|
-                        . <------------ radix point
-
-       <-------- _mp_size --------->
-
-The fields are as follows.
-
-`_mp_size'
-     The number of limbs currently in use, or the negative of that when
-     representing a negative value.  Zero is represented by `_mp_size'
-     and `_mp_exp' both set to zero, and in that case the `_mp_d' data
-     is unused.  (In the future `_mp_exp' might be undefined when
-     representing zero.)
-
-`_mp_prec'
-     The precision of the mantissa, in limbs.  In any calculation the
-     aim is to produce `_mp_prec' limbs of result (the most significant
-     being non-zero).
-
-`_mp_d'
-     A pointer to the array of limbs which is the absolute value of the
-     mantissa.  These are stored "little endian" as per the `mpn'
-     functions, so `_mp_d[0]' is the least significant limb and
-     `_mp_d[ABS(_mp_size)-1]' the most significant.
-
-     The most significant limb is always non-zero, but there are no
-     other restrictions on its value, in particular the highest 1 bit
-     can be anywhere within the limb.
-
-     `_mp_prec+1' limbs are allocated to `_mp_d', the extra limb being
-     for convenience (see below).  There are no reallocations during a
-     calculation, only in a change of precision with `mpf_set_prec'.
-
-`_mp_exp'
-     The exponent, in limbs, determining the location of the implied
-     radix point.  Zero means the radix point is just above the most
-     significant limb.  Positive values mean a radix point offset
-     towards the lower limbs and hence a value >= 1, as for example in
-     the diagram above.  Negative exponents mean a radix point further
-     above the highest limb.
-
-     Naturally the exponent can be any value, it doesn't have to fall
-     within the limbs as the diagram shows, it can be a long way above
-     or a long way below.  Limbs other than those included in the
-     `{_mp_d,_mp_size}' data are treated as zero.
-
-   The `_mp_size' and `_mp_prec' fields are `int', although the
-`mp_size_t' type is usually a `long'.  The `_mp_exp' field is usually
-`long'.  This is done to make some fields just 32 bits on some 64 bits
-systems, thereby saving a few bytes of data space but still providing
-plenty of precision and a very large range.
-
-
-The following various points should be noted.
-
-Low Zeros
-     The least significant limbs `_mp_d[0]' etc can be zero, though
-     such low zeros can always be ignored.  Routines likely to produce
-     low zeros check and avoid them to save time in subsequent
-     calculations, but for most routines they're quite unlikely and
-     aren't checked.
-
-Mantissa Size Range
-     The `_mp_size' count of limbs in use can be less than `_mp_prec' if
-     the value can be represented in less.  This means low precision
-     values or small integers stored in a high precision `mpf_t' can
-     still be operated on efficiently.
-
-     `_mp_size' can also be greater than `_mp_prec'.  Firstly a value is
-     allowed to use all of the `_mp_prec+1' limbs available at `_mp_d',
-     and secondly when `mpf_set_prec_raw' lowers `_mp_prec' it leaves
-     `_mp_size' unchanged and so the size can be arbitrarily bigger than
-     `_mp_prec'.
-
-Rounding
-     All rounding is done on limb boundaries.  Calculating `_mp_prec'
-     limbs with the high non-zero will ensure the application requested
-     minimum precision is obtained.
-
-     The use of simple "trunc" rounding towards zero is efficient,
-     since there's no need to examine extra limbs and increment or
-     decrement.
-
-Bit Shifts
-     Since the exponent is in limbs, there are no bit shifts in basic
-     operations like `mpf_add' and `mpf_mul'.  When differing exponents
-     are encountered all that's needed is to adjust pointers to line up
-     the relevant limbs.
-
-     Of course `mpf_mul_2exp' and `mpf_div_2exp' will require bit
-     shifts, but the choice is between an exponent in limbs which
-     requires shifts there, or one in bits which requires them almost
-     everywhere else.
-
-Use of `_mp_prec+1' Limbs
-     The extra limb on `_mp_d' (`_mp_prec+1' rather than just
-     `_mp_prec') helps when an `mpf' routine might get a carry from its
-     operation.  `mpf_add' for instance will do an `mpn_add' of
-     `_mp_prec' limbs.  If there's no carry then that's the result, but
-     if there is a carry then it's stored in the extra limb of space and
-     `_mp_size' becomes `_mp_prec+1'.
-
-     Whenever `_mp_prec+1' limbs are held in a variable, the low limb
-     is not needed for the intended precision, only the `_mp_prec' high
-     limbs.  But zeroing it out or moving the rest down is unnecessary.
-     Subsequent routines reading the value will simply take the high
-     limbs they need, and this will be `_mp_prec' if their target has
-     that same precision.  This is no more than a pointer adjustment,
-     and must be checked anyway since the destination precision can be
-     different from the sources.
-
-     Copy functions like `mpf_set' will retain a full `_mp_prec+1' limbs
-     if available.  This ensures that a variable which has `_mp_size'
-     equal to `_mp_prec+1' will get its full exact value copied.
-     Strictly speaking this is unnecessary since only `_mp_prec' limbs
-     are needed for the application's requested precision, but it's
-     considered that an `mpf_set' from one variable into another of the
-     same precision ought to produce an exact copy.
-
-Application Precisions
-     `__GMPF_BITS_TO_PREC' converts an application requested precision
-     to an `_mp_prec'.  The value in bits is rounded up to a whole limb
-     then an extra limb is added since the most significant limb of
-     `_mp_d' is only non-zero and therefore might contain only one bit.
-
-     `__GMPF_PREC_TO_BITS' does the reverse conversion, and removes the
-     extra limb from `_mp_prec' before converting to bits.  The net
-     effect of reading back with `mpf_get_prec' is simply the precision
-     rounded up to a multiple of `mp_bits_per_limb'.
-
-     Note that the extra limb added here for the high only being
-     non-zero is in addition to the extra limb allocated to `_mp_d'.
-     For example with a 32-bit limb, an application request for 250
-     bits will be rounded up to 8 limbs, then an extra added for the
-     high being only non-zero, giving an `_mp_prec' of 9.  `_mp_d' then
-     gets 10 limbs allocated.  Reading back with `mpf_get_prec' will
-     take `_mp_prec' subtract 1 limb and multiply by 32, giving 256
-     bits.
-
-     Strictly speaking, the fact the high limb has at least one bit
-     means that a float with, say, 3 limbs of 32-bits each will be
-     holding at least 65 bits, but for the purposes of `mpf_t' it's
-     considered simply to be 64 bits, a nice multiple of the limb size.
-
-\1f
-File: gmp.info,  Node: Raw Output Internals,  Next: C++ Interface Internals,  Prev: Float Internals,  Up: Internals
-
-17.4 Raw Output Internals
-=========================
-
-`mpz_out_raw' uses the following format.
-
-     +------+------------------------+
-     | size |       data bytes       |
-     +------+------------------------+
-
-   The size is 4 bytes written most significant byte first, being the
-number of subsequent data bytes, or the twos complement negative of
-that when a negative integer is represented.  The data bytes are the
-absolute value of the integer, written most significant byte first.
-
-   The most significant data byte is always non-zero, so the output is
-the same on all systems, irrespective of limb size.
-
-   In GMP 1, leading zero bytes were written to pad the data bytes to a
-multiple of the limb size.  `mpz_inp_raw' will still accept this, for
-compatibility.
-
-   The use of "big endian" for both the size and data fields is
-deliberate, it makes the data easy to read in a hex dump of a file.
-Unfortunately it also means that the limb data must be reversed when
-reading or writing, so neither a big endian nor little endian system
-can just read and write `_mp_d'.
-
-\1f
-File: gmp.info,  Node: C++ Interface Internals,  Prev: Raw Output Internals,  Up: Internals
-
-17.5 C++ Interface Internals
-============================
-
-A system of expression templates is used to ensure something like
-`a=b+c' turns into a simple call to `mpz_add' etc.  For `mpf_class' the
-scheme also ensures the precision of the final destination is used for
-any temporaries within a statement like `f=w*x+y*z'.  These are
-important features which a naive implementation cannot provide.
-
-   A simplified description of the scheme follows.  The true scheme is
-complicated by the fact that expressions have different return types.
-For detailed information, refer to the source code.
-
-   To perform an operation, say, addition, we first define a "function
-object" evaluating it,
-
-     struct __gmp_binary_plus
-     {
-       static void eval(mpf_t f, mpf_t g, mpf_t h) { mpf_add(f, g, h); }
-     };
-
-And an "additive expression" object,
-
-     __gmp_expr<__gmp_binary_expr<mpf_class, mpf_class, __gmp_binary_plus> >
-     operator+(const mpf_class &f, const mpf_class &g)
-     {
-       return __gmp_expr
-         <__gmp_binary_expr<mpf_class, mpf_class, __gmp_binary_plus> >(f, g);
-     }
-
-   The seemingly redundant `__gmp_expr<__gmp_binary_expr<...>>' is used
-to encapsulate any possible kind of expression into a single template
-type.  In fact even `mpf_class' etc are `typedef' specializations of
-`__gmp_expr'.
-
-   Next we define assignment of `__gmp_expr' to `mpf_class'.
-
-     template <class T>
-     mpf_class & mpf_class::operator=(const __gmp_expr<T> &expr)
-     {
-       expr.eval(this->get_mpf_t(), this->precision());
-       return *this;
-     }
-
-     template <class Op>
-     void __gmp_expr<__gmp_binary_expr<mpf_class, mpf_class, Op> >::eval
-     (mpf_t f, mp_bitcnt_t precision)
-     {
-       Op::eval(f, expr.val1.get_mpf_t(), expr.val2.get_mpf_t());
-     }
-
-   where `expr.val1' and `expr.val2' are references to the expression's
-operands (here `expr' is the `__gmp_binary_expr' stored within the
-`__gmp_expr').
-
-   This way, the expression is actually evaluated only at the time of
-assignment, when the required precision (that of `f') is known.
-Furthermore the target `mpf_t' is now available, thus we can call
-`mpf_add' directly with `f' as the output argument.
-
-   Compound expressions are handled by defining operators taking
-subexpressions as their arguments, like this:
-
-     template <class T, class U>
-     __gmp_expr
-     <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, __gmp_binary_plus> >
-     operator+(const __gmp_expr<T> &expr1, const __gmp_expr<U> &expr2)
-     {
-       return __gmp_expr
-         <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, __gmp_binary_plus> >
-         (expr1, expr2);
-     }
-
-   And the corresponding specializations of `__gmp_expr::eval':
-
-     template <class T, class U, class Op>
-     void __gmp_expr
-     <__gmp_binary_expr<__gmp_expr<T>, __gmp_expr<U>, Op> >::eval
-     (mpf_t f, mp_bitcnt_t precision)
-     {
-       // declare two temporaries
-       mpf_class temp1(expr.val1, precision), temp2(expr.val2, precision);
-       Op::eval(f, temp1.get_mpf_t(), temp2.get_mpf_t());
-     }
-
-   The expression is thus recursively evaluated to any level of
-complexity and all subexpressions are evaluated to the precision of `f'.
-
-\1f
-File: gmp.info,  Node: Contributors,  Next: References,  Prev: Internals,  Up: Top
-
-Appendix A Contributors
-***********************
-
-Torbjo"rn Granlund wrote the original GMP library and is still the main
-developer.  Code not explicitly attributed to others, was contributed by
-Torbjo"rn.  Several other individuals and organizations have contributed
-GMP.  Here is a list in chronological order on first contribution:
-
-   Gunnar Sjo"din and Hans Riesel helped with mathematical problems in
-early versions of the library.
-
-   Richard Stallman helped with the interface design and revised the
-first version of this manual.
-
-   Brian Beuning and Doug Lea helped with testing of early versions of
-the library and made creative suggestions.
-
-   John Amanatides of York University in Canada contributed the function
-`mpz_probab_prime_p'.
-
-   Paul Zimmermann wrote the REDC-based mpz_powm code, the
-Scho"nhage-Strassen FFT multiply code, and the Karatsuba square root
-code.  He also improved the Toom3 code for GMP 4.2.  Paul sparked the
-development of GMP 2, with his comparisons between bignum packages.
-The ECMNET project Paul is organizing was a driving force behind many
-of the optimizations in GMP 3.  Paul also wrote the new GMP 4.3 nth
-root code (with Torbjo"rn).
-
-   Ken Weber (Kent State University, Universidade Federal do Rio Grande
-do Sul) contributed now defunct versions of `mpz_gcd', `mpz_divexact',
-`mpn_gcd', and `mpn_bdivmod', partially supported by CNPq (Brazil)
-grant 301314194-2.
-
-   Per Bothner of Cygnus Support helped to set up GMP to use Cygnus'
-configure.  He has also made valuable suggestions and tested numerous
-intermediary releases.
-
-   Joachim Hollman was involved in the design of the `mpf' interface,
-and in the `mpz' design revisions for version 2.
-
-   Bennet Yee contributed the initial versions of `mpz_jacobi' and
-`mpz_legendre'.
-
-   Andreas Schwab contributed the files `mpn/m68k/lshift.S' and
-`mpn/m68k/rshift.S' (now in `.asm' form).
-
-   Robert Harley of Inria, France and David Seal of ARM, England,
-suggested clever improvements for population count.  Robert also wrote
-highly optimized Karatsuba and 3-way Toom multiplication functions for
-GMP 3, and contributed the ARM assembly code.
-
-   Torsten Ekedahl of the Mathematical department of Stockholm
-University provided significant inspiration during several phases of
-the GMP development.  His mathematical expertise helped improve several
-algorithms.
-
-   Linus Nordberg wrote the new configure system based on autoconf and
-implemented the new random functions.
-
-   Kevin Ryde worked on a large number of things: optimized x86 code,
-m4 asm macros, parameter tuning, speed measuring, the configure system,
-function inlining, divisibility tests, bit scanning, Jacobi symbols,
-Fibonacci and Lucas number functions, printf and scanf functions, perl
-interface, demo expression parser, the algorithms chapter in the
-manual, `gmpasm-mode.el', and various miscellaneous improvements
-elsewhere.
-
-   Kent Boortz made the Mac OS 9 port.
-
-   Steve Root helped write the optimized alpha 21264 assembly code.
-
-   Gerardo Ballabio wrote the `gmpxx.h' C++ class interface and the C++
-`istream' input routines.
-
-   Jason Moxham rewrote `mpz_fac_ui'.
-
-   Pedro Gimeno implemented the Mersenne Twister and made other random
-number improvements.
-
-   Niels Mo"ller wrote the sub-quadratic GCD and extended GCD code, the
-quadratic Hensel division code, and (with Torbjo"rn) the new divide and
-conquer division code for GMP 4.3.  Niels also helped implement the new
-Toom multiply code for GMP 4.3 and implemented helper functions to
-simplify Toom evaluations for GMP 5.0.  He wrote the original version
-of mpn_mulmod_bnm1.
-
-   Alberto Zanoni and Marco Bodrato suggested the unbalanced multiply
-strategy, and found the optimal strategies for evaluation and
-interpolation in Toom multiplication.
-
-   Marco Bodrato helped implement the new Toom multiply code for GMP
-4.3 and implemented most of the new Toom multiply and squaring code for
-5.0.  He is the main author of the current mpn_mulmod_bnm1 and
-mpn_mullo_n.  Marco also wrote the functions mpn_invert and
-mpn_invertappr.
-
-   David Harvey suggested the internal function `mpn_bdiv_dbm1',
-implementing division relevant to Toom multiplication.  He also worked
-on fast assembly sequences, in particular on a fast AMD64
-`mpn_mul_basecase'.
-
-   Martin Boij wrote `mpn_perfect_power_p'.
-
-   (This list is chronological, not ordered after significance.  If you
-have contributed to GMP but are not listed above, please tell
-<gmp-devel@gmplib.org> about the omission!)
-
-   The development of floating point functions of GNU MP 2, were
-supported in part by the ESPRIT-BRA (Basic Research Activities) 6846
-project POSSO (POlynomial System SOlving).
-
-   The development of GMP 2, 3, and 4 was supported in part by the IDA
-Center for Computing Sciences.
-
-   Thanks go to Hans Thorsen for donating an SGI system for the GMP
-test system environment.
-
-\1f
-File: gmp.info,  Node: References,  Next: GNU Free Documentation License,  Prev: Contributors,  Up: Top
-
-Appendix B References
-*********************
-
-B.1 Books
-=========
-
-   * Jonathan M. Borwein and Peter B. Borwein, "Pi and the AGM: A Study
-     in Analytic Number Theory and Computational Complexity", Wiley,
-     1998.
-
-   * Richard Crandall and Carl Pomerance, "Prime Numbers: A
-     Computational Perspective", 2nd edition, Springer-Verlag, 2005.
-     `http://math.dartmouth.edu/~carlp/'
-
-   * Henri Cohen, "A Course in Computational Algebraic Number Theory",
-     Graduate Texts in Mathematics number 138, Springer-Verlag, 1993.
-     `http://www.math.u-bordeaux.fr/~cohen/'
-
-   * Donald E. Knuth, "The Art of Computer Programming", volume 2,
-     "Seminumerical Algorithms", 3rd edition, Addison-Wesley, 1998.
-     `http://www-cs-faculty.stanford.edu/~knuth/taocp.html'
-
-   * John D. Lipson, "Elements of Algebra and Algebraic Computing", The
-     Benjamin Cummings Publishing Company Inc, 1981.
-
-   * Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone,
-     "Handbook of Applied Cryptography",
-     `http://www.cacr.math.uwaterloo.ca/hac/'
-
-   * Richard M. Stallman and the GCC Developer Community, "Using the
-     GNU Compiler Collection", Free Software Foundation, 2008,
-     available online `http://gcc.gnu.org/onlinedocs/', and in the GCC
-     package `ftp://ftp.gnu.org/gnu/gcc/'
-
-B.2 Papers
-==========
-
-   * Yves Bertot, Nicolas Magaud and Paul Zimmermann, "A Proof of GMP
-     Square Root", Journal of Automated Reasoning, volume 29, 2002, pp.
-     225-252.  Also available online as INRIA Research Report 4475,
-     June 2001, `http://www.inria.fr/rrrt/rr-4475.html'
-
-   * Christoph Burnikel and Joachim Ziegler, "Fast Recursive Division",
-     Max-Planck-Institut fuer Informatik Research Report MPI-I-98-1-022,
-     `http://data.mpi-sb.mpg.de/internet/reports.nsf/NumberView/1998-1-022'
-
-   * Torbjo"rn Granlund and Peter L. Montgomery, "Division by Invariant
-     Integers using Multiplication", in Proceedings of the SIGPLAN
-     PLDI'94 Conference, June 1994.  Also available
-     `ftp://ftp.cwi.nl/pub/pmontgom/divcnst.psa4.gz' (and .psl.gz).
-
-   * Niels Mo"ller and Torbjo"rn Granlund, "Improved division by
-     invariant integers", to appear.
-
-   * Torbjo"rn Granlund and Niels Mo"ller, "Division of integers large
-     and small", to appear.
-
-   * Tudor Jebelean, "An algorithm for exact division", Journal of
-     Symbolic Computation, volume 15, 1993, pp. 169-180.  Research
-     report version available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1992/92-35.ps.gz'
-
-   * Tudor Jebelean, "Exact Division with Karatsuba Complexity -
-     Extended Abstract", RISC-Linz technical report 96-31,
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1996/96-31.ps.gz'
-
-   * Tudor Jebelean, "Practical Integer Division with Karatsuba
-     Complexity", ISSAC 97, pp. 339-341.  Technical report available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1996/96-29.ps.gz'
-
-   * Tudor Jebelean, "A Generalization of the Binary GCD Algorithm",
-     ISSAC 93, pp. 111-116.  Technical report version available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1993/93-01.ps.gz'
-
-   * Tudor Jebelean, "A Double-Digit Lehmer-Euclid Algorithm for
-     Finding the GCD of Long Integers", Journal of Symbolic
-     Computation, volume 19, 1995, pp. 145-157.  Technical report
-     version also available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1992/92-69.ps.gz'
-
-   * Werner Krandick and Tudor Jebelean, "Bidirectional Exact Integer
-     Division", Journal of Symbolic Computation, volume 21, 1996, pp.
-     441-455.  Early technical report version also available
-     `ftp://ftp.risc.uni-linz.ac.at/pub/techreports/1994/94-50.ps.gz'
-
-   * Makoto Matsumoto and Takuji Nishimura, "Mersenne Twister: A
-     623-dimensionally equidistributed uniform pseudorandom number
-     generator", ACM Transactions on Modelling and Computer Simulation,
-     volume 8, January 1998, pp. 3-30.  Available online
-     `http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/mt.ps.gz'
-     (or .pdf)
-
-   * R. Moenck and A. Borodin, "Fast Modular Transforms via Division",
-     Proceedings of the 13th Annual IEEE Symposium on Switching and
-     Automata Theory, October 1972, pp. 90-96.  Reprinted as "Fast
-     Modular Transforms", Journal of Computer and System Sciences,
-     volume 8, number 3, June 1974, pp. 366-386.
-
-   * Niels Mo"ller, "On Scho"nhage's algorithm and subquadratic integer
-     GCD   computation", in Mathematics of Computation, volume 77,
-     January 2008, pp.    589-607.
-
-   * Peter L. Montgomery, "Modular Multiplication Without Trial
-     Division", in Mathematics of Computation, volume 44, number 170,
-     April 1985.
-
-   * Arnold Scho"nhage and Volker Strassen, "Schnelle Multiplikation
-     grosser Zahlen", Computing 7, 1971, pp. 281-292.
-
-   * Kenneth Weber, "The accelerated integer GCD algorithm", ACM
-     Transactions on Mathematical Software, volume 21, number 1, March
-     1995, pp. 111-122.
-
-   * Paul Zimmermann, "Karatsuba Square Root", INRIA Research Report
-     3805, November 1999, `http://www.inria.fr/rrrt/rr-3805.html'
-
-   * Paul Zimmermann, "A Proof of GMP Fast Division and Square Root
-     Implementations",
-     `http://www.loria.fr/~zimmerma/papers/proof-div-sqrt.ps.gz'
-
-   * Dan Zuras, "On Squaring and Multiplying Large Integers", ARITH-11:
-     IEEE Symposium on Computer Arithmetic, 1993, pp. 260 to 271.
-     Reprinted as "More on Multiplying and Squaring Large Integers",
-     IEEE Transactions on Computers, volume 43, number 8, August 1994,
-     pp. 899-908.
-
-\1f
-File: gmp.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: References,  Up: Top
-
-Appendix C GNU Free Documentation License
-*****************************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     `http://fsf.org/'
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.
-     We recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it
-     can be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You
-     accept the license if you copy, modify or distribute the work in a
-     way requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in
-     the notice that says that the Document is released under this
-     License.  If a section does not fit the above definition of
-     Secondary then it is not allowed to be designated as Invariant.
-     The Document may contain zero Invariant Sections.  If the Document
-     does not identify any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images
-     composed of pixels) generic paint programs or (for drawings) some
-     widely available drawing editor, and that is suitable for input to
-     text formatters or for automatic translation to a variety of
-     formats suitable for input to text formatters.  A copy made in an
-     otherwise Transparent file format whose markup, or absence of
-     markup, has been arranged to thwart or discourage subsequent
-     modification by readers is not Transparent.  An image format is
-     not Transparent if used for any substantial amount of text.  A
-     copy that is not "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and
-     standard-conforming simple HTML, PostScript or PDF designed for
-     human modification.  Examples of transparent image formats include
-     PNG, XCF and JPG.  Opaque formats include proprietary formats that
-     can be read and edited only by proprietary word processors, SGML or
-     XML for which the DTD and/or processing tools are not generally
-     available, and the machine-generated HTML, PostScript or PDF
-     produced by some word processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow
-     the conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the
-     title equally prominent and visible.  You may add other material
-     on the covers in addition.  Copying with changes limited to the
-     covers, as long as they preserve the title of the Document and
-     satisfy these conditions, can be treated as verbatim copying in
-     other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a
-     machine-readable Transparent copy along with each Opaque copy, or
-     state in or with each Opaque copy a computer-network location from
-     which the general network-using public has access to download
-     using public-standard network protocols a complete Transparent
-     copy of the Document, free of added material.  If you use the
-     latter option, you must take reasonably prudent steps, when you
-     begin distribution of Opaque copies in quantity, to ensure that
-     this Transparent copy will remain thus accessible at the stated
-     location until at least one year after the last time you
-     distribute an Opaque copy (directly or through your agents or
-     retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of
-     copies, to give them a chance to provide you with an updated
-     version of the Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with
-     the Modified Version filling the role of the Document, thus
-     licensing distribution and modification of the Modified Version to
-     whoever possesses a copy of it.  In addition, you must do these
-     things in the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of
-          previous versions (which should, if there were any, be listed
-          in the History section of the Document).  You may use the
-          same title as a previous version if the original publisher of
-          that version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on
-          the Title Page.  If there is no section Entitled "History" in
-          the Document, create one stating the title, year, authors,
-          and publisher of the Document as given on its Title Page,
-          then add an item describing the Modified Version as stated in
-          the previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in
-          the "History" section.  You may omit a network location for a
-          work that was published at least four years before the
-          Document itself, or if the original publisher of the version
-          it refers to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the
-          section all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document,
-          unaltered in their text and in their titles.  Section numbers
-          or the equivalent are not considered part of the section
-          titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option
-     designate some or all of these sections as invariant.  To do this,
-     add their titles to the list of Invariant Sections in the Modified
-     Version's license notice.  These titles must be distinct from any
-     other section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end
-     of the list of Cover Texts in the Modified Version.  Only one
-     passage of Front-Cover Text and one of Back-Cover Text may be
-     added by (or through arrangements made by) any one entity.  If the
-     Document already includes a cover text for the same cover,
-     previously added by you or by arrangement made by the same entity
-     you are acting on behalf of, you may not add another; but you may
-     replace the old one, on explicit permission from the previous
-     publisher that added the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination
-     all of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the
-     documents in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow
-     this License in all other respects regarding verbatim copying of
-     that document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of
-     a storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly
-     and finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from
-     you under this License.  If your rights have been terminated and
-     not permanently reinstated, receipt of a copy of some or all of
-     the same material does not give you any rights to use it.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     `http://www.gnu.org/copyleft/'.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If
-     the Document does not specify a version number of this License,
-     you may choose any version ever published (not as a draft) by the
-     Free Software Foundation.  If the Document specifies that a proxy
-     can decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
- 11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts." line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License, to
-permit their use in free software.
-
-\1f
-File: gmp.info,  Node: Concept Index,  Next: Function Index,  Prev: GNU Free Documentation License,  Up: Top
-
-Concept Index
-*************
-
-\0\b[index\0\b]
-* Menu:
-
-* #include:                              Headers and Libraries.
-                                                              (line   6)
-* --build:                               Build Options.       (line  52)
-* --disable-fft:                         Build Options.       (line 317)
-* --disable-shared:                      Build Options.       (line  45)
-* --disable-static:                      Build Options.       (line  45)
-* --enable-alloca:                       Build Options.       (line 278)
-* --enable-assert:                       Build Options.       (line 327)
-* --enable-cxx:                          Build Options.       (line 230)
-* --enable-fat:                          Build Options.       (line 164)
-* --enable-mpbsd:                        Build Options.       (line 322)
-* --enable-profiling <1>:                Profiling.           (line   6)
-* --enable-profiling:                    Build Options.       (line 331)
-* --exec-prefix:                         Build Options.       (line  32)
-* --host:                                Build Options.       (line  66)
-* --prefix:                              Build Options.       (line  32)
-* -finstrument-functions:                Profiling.           (line  66)
-* 2exp functions:                        Efficiency.          (line  43)
-* 68000:                                 Notes for Particular Systems.
-                                                              (line  80)
-* 80x86:                                 Notes for Particular Systems.
-                                                              (line 126)
-* ABI <1>:                               Build Options.       (line 171)
-* ABI:                                   ABI and ISA.         (line   6)
-* About this manual:                     Introduction to GMP. (line  58)
-* AC_CHECK_LIB:                          Autoconf.            (line  11)
-* AIX <1>:                               ABI and ISA.         (line 184)
-* AIX <2>:                               Notes for Particular Systems.
-                                                              (line   7)
-* AIX:                                   ABI and ISA.         (line 169)
-* Algorithms:                            Algorithms.          (line   6)
-* alloca:                                Build Options.       (line 278)
-* Allocation of memory:                  Custom Allocation.   (line   6)
-* AMD64:                                 ABI and ISA.         (line  44)
-* Anonymous FTP of latest version:       Introduction to GMP. (line  38)
-* Application Binary Interface:          ABI and ISA.         (line   6)
-* Arithmetic functions <1>:              Float Arithmetic.    (line   6)
-* Arithmetic functions <2>:              Integer Arithmetic.  (line   6)
-* Arithmetic functions:                  Rational Arithmetic. (line   6)
-* ARM:                                   Notes for Particular Systems.
-                                                              (line  20)
-* Assembly cache handling:               Assembly Cache Handling.
-                                                              (line   6)
-* Assembly carry propagation:            Assembly Carry Propagation.
-                                                              (line   6)
-* Assembly code organisation:            Assembly Code Organisation.
-                                                              (line   6)
-* Assembly coding:                       Assembly Coding.     (line   6)
-* Assembly floating Point:               Assembly Floating Point.
-                                                              (line   6)
-* Assembly loop unrolling:               Assembly Loop Unrolling.
-                                                              (line   6)
-* Assembly SIMD:                         Assembly SIMD Instructions.
-                                                              (line   6)
-* Assembly software pipelining:          Assembly Software Pipelining.
-                                                              (line   6)
-* Assembly writing guide:                Assembly Writing Guide.
-                                                              (line   6)
-* Assertion checking <1>:                Debugging.           (line  79)
-* Assertion checking:                    Build Options.       (line 327)
-* Assignment functions <1>:              Assigning Floats.    (line   6)
-* Assignment functions <2>:              Initializing Rationals.
-                                                              (line   6)
-* Assignment functions <3>:              Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Assignment functions <4>:              Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Assignment functions:                  Assigning Integers.  (line   6)
-* Autoconf:                              Autoconf.            (line   6)
-* Basics:                                GMP Basics.          (line   6)
-* Berkeley MP compatible functions <1>:  Build Options.       (line 322)
-* Berkeley MP compatible functions:      BSD Compatible Functions.
-                                                              (line   6)
-* Binomial coefficient algorithm:        Binomial Coefficients Algorithm.
-                                                              (line   6)
-* Binomial coefficient functions:        Number Theoretic Functions.
-                                                              (line 100)
-* Binutils strip:                        Known Build Problems.
-                                                              (line  28)
-* Bit manipulation functions:            Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Bit scanning functions:                Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* Bit shift left:                        Integer Arithmetic.  (line  35)
-* Bit shift right:                       Integer Division.    (line  53)
-* Bits per limb:                         Useful Macros and Constants.
-                                                              (line   7)
-* BSD MP compatible functions <1>:       Build Options.       (line 322)
-* BSD MP compatible functions:           BSD Compatible Functions.
-                                                              (line   6)
-* Bug reporting:                         Reporting Bugs.      (line   6)
-* Build directory:                       Build Options.       (line  19)
-* Build notes for binary packaging:      Notes for Package Builds.
-                                                              (line   6)
-* Build notes for particular systems:    Notes for Particular Systems.
-                                                              (line   6)
-* Build options:                         Build Options.       (line   6)
-* Build problems known:                  Known Build Problems.
-                                                              (line   6)
-* Build system:                          Build Options.       (line  52)
-* Building GMP:                          Installing GMP.      (line   6)
-* Bus error:                             Debugging.           (line   7)
-* C compiler:                            Build Options.       (line 182)
-* C++ compiler:                          Build Options.       (line 254)
-* C++ interface:                         C++ Class Interface. (line   6)
-* C++ interface internals:               C++ Interface Internals.
-                                                              (line   6)
-* C++ istream input:                     C++ Formatted Input. (line   6)
-* C++ ostream output:                    C++ Formatted Output.
-                                                              (line   6)
-* C++ support:                           Build Options.       (line 230)
-* CC:                                    Build Options.       (line 182)
-* CC_FOR_BUILD:                          Build Options.       (line 217)
-* CFLAGS:                                Build Options.       (line 182)
-* Checker:                               Debugging.           (line 115)
-* checkergcc:                            Debugging.           (line 122)
-* Code organisation:                     Assembly Code Organisation.
-                                                              (line   6)
-* Compaq C++:                            Notes for Particular Systems.
-                                                              (line  25)
-* Comparison functions <1>:              Integer Comparisons. (line   6)
-* Comparison functions <2>:              Comparing Rationals. (line   6)
-* Comparison functions:                  Float Comparison.    (line   6)
-* Compatibility with older versions:     Compatibility with older versions.
-                                                              (line   6)
-* Conditions for copying GNU MP:         Copying.             (line   6)
-* Configuring GMP:                       Installing GMP.      (line   6)
-* Congruence algorithm:                  Exact Remainder.     (line  29)
-* Congruence functions:                  Integer Division.    (line 124)
-* Constants:                             Useful Macros and Constants.
-                                                              (line   6)
-* Contributors:                          Contributors.        (line   6)
-* Conventions for parameters:            Parameter Conventions.
-                                                              (line   6)
-* Conventions for variables:             Variable Conventions.
-                                                              (line   6)
-* Conversion functions <1>:              Converting Integers. (line   6)
-* Conversion functions <2>:              Converting Floats.   (line   6)
-* Conversion functions:                  Rational Conversions.
-                                                              (line   6)
-* Copying conditions:                    Copying.             (line   6)
-* CPPFLAGS:                              Build Options.       (line 208)
-* CPU types <1>:                         Introduction to GMP. (line  24)
-* CPU types:                             Build Options.       (line 108)
-* Cross compiling:                       Build Options.       (line  66)
-* Custom allocation:                     Custom Allocation.   (line   6)
-* CXX:                                   Build Options.       (line 254)
-* CXXFLAGS:                              Build Options.       (line 254)
-* Cygwin:                                Notes for Particular Systems.
-                                                              (line  43)
-* Darwin:                                Known Build Problems.
-                                                              (line  51)
-* Debugging:                             Debugging.           (line   6)
-* Demonstration programs:                Demonstration Programs.
-                                                              (line   6)
-* Digits in an integer:                  Miscellaneous Integer Functions.
-                                                              (line  23)
-* Divisibility algorithm:                Exact Remainder.     (line  29)
-* Divisibility functions:                Integer Division.    (line 124)
-* Divisibility testing:                  Efficiency.          (line  91)
-* Division algorithms:                   Division Algorithms. (line   6)
-* Division functions <1>:                Rational Arithmetic. (line  22)
-* Division functions <2>:                Integer Division.    (line   6)
-* Division functions:                    Float Arithmetic.    (line  33)
-* DJGPP <1>:                             Notes for Particular Systems.
-                                                              (line  43)
-* DJGPP:                                 Known Build Problems.
-                                                              (line  18)
-* DLLs:                                  Notes for Particular Systems.
-                                                              (line  56)
-* DocBook:                               Build Options.       (line 354)
-* Documentation formats:                 Build Options.       (line 347)
-* Documentation license:                 GNU Free Documentation License.
-                                                              (line   6)
-* DVI:                                   Build Options.       (line 350)
-* Efficiency:                            Efficiency.          (line   6)
-* Emacs:                                 Emacs.               (line   6)
-* Exact division functions:              Integer Division.    (line 102)
-* Exact remainder:                       Exact Remainder.     (line   6)
-* Example programs:                      Demonstration Programs.
-                                                              (line   6)
-* Exec prefix:                           Build Options.       (line  32)
-* Execution profiling <1>:               Profiling.           (line   6)
-* Execution profiling:                   Build Options.       (line 331)
-* Exponentiation functions <1>:          Integer Exponentiation.
-                                                              (line   6)
-* Exponentiation functions:              Float Arithmetic.    (line  41)
-* Export:                                Integer Import and Export.
-                                                              (line  45)
-* Expression parsing demo:               Demonstration Programs.
-                                                              (line  18)
-* Extended GCD:                          Number Theoretic Functions.
-                                                              (line  45)
-* Factor removal functions:              Number Theoretic Functions.
-                                                              (line  90)
-* Factorial algorithm:                   Factorial Algorithm. (line   6)
-* Factorial functions:                   Number Theoretic Functions.
-                                                              (line  95)
-* Factorization demo:                    Demonstration Programs.
-                                                              (line  25)
-* Fast Fourier Transform:                FFT Multiplication.  (line   6)
-* Fat binary:                            Build Options.       (line 164)
-* FFT multiplication <1>:                FFT Multiplication.  (line   6)
-* FFT multiplication:                    Build Options.       (line 317)
-* Fibonacci number algorithm:            Fibonacci Numbers Algorithm.
-                                                              (line   6)
-* Fibonacci sequence functions:          Number Theoretic Functions.
-                                                              (line 108)
-* Float arithmetic functions:            Float Arithmetic.    (line   6)
-* Float assignment functions <1>:        Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Float assignment functions:            Assigning Floats.    (line   6)
-* Float comparison functions:            Float Comparison.    (line   6)
-* Float conversion functions:            Converting Floats.   (line   6)
-* Float functions:                       Floating-point Functions.
-                                                              (line   6)
-* Float initialization functions <1>:    Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Float initialization functions:        Initializing Floats. (line   6)
-* Float input and output functions:      I/O of Floats.       (line   6)
-* Float internals:                       Float Internals.     (line   6)
-* Float miscellaneous functions:         Miscellaneous Float Functions.
-                                                              (line   6)
-* Float random number functions:         Miscellaneous Float Functions.
-                                                              (line  27)
-* Float rounding functions:              Miscellaneous Float Functions.
-                                                              (line   9)
-* Float sign tests:                      Float Comparison.    (line  33)
-* Floating point mode:                   Notes for Particular Systems.
-                                                              (line  34)
-* Floating-point functions:              Floating-point Functions.
-                                                              (line   6)
-* Floating-point number:                 Nomenclature and Types.
-                                                              (line  21)
-* fnccheck:                              Profiling.           (line  77)
-* Formatted input:                       Formatted Input.     (line   6)
-* Formatted output:                      Formatted Output.    (line   6)
-* Free Documentation License:            GNU Free Documentation License.
-                                                              (line   6)
-* frexp <1>:                             Converting Floats.   (line  23)
-* frexp:                                 Converting Integers. (line  42)
-* FTP of latest version:                 Introduction to GMP. (line  38)
-* Function classes:                      Function Classes.    (line   6)
-* FunctionCheck:                         Profiling.           (line  77)
-* GCC Checker:                           Debugging.           (line 115)
-* GCD algorithms:                        Greatest Common Divisor Algorithms.
-                                                              (line   6)
-* GCD extended:                          Number Theoretic Functions.
-                                                              (line  45)
-* GCD functions:                         Number Theoretic Functions.
-                                                              (line  30)
-* GDB:                                   Debugging.           (line  58)
-* Generic C:                             Build Options.       (line 153)
-* GMP Perl module:                       Demonstration Programs.
-                                                              (line  35)
-* GMP version number:                    Useful Macros and Constants.
-                                                              (line  12)
-* gmp.h:                                 Headers and Libraries.
-                                                              (line   6)
-* gmpxx.h:                               C++ Interface General.
-                                                              (line   8)
-* GNU Debugger:                          Debugging.           (line  58)
-* GNU Free Documentation License:        GNU Free Documentation License.
-                                                              (line   6)
-* GNU strip:                             Known Build Problems.
-                                                              (line  28)
-* gprof:                                 Profiling.           (line  41)
-* Greatest common divisor algorithms:    Greatest Common Divisor Algorithms.
-                                                              (line   6)
-* Greatest common divisor functions:     Number Theoretic Functions.
-                                                              (line  30)
-* Hardware floating point mode:          Notes for Particular Systems.
-                                                              (line  34)
-* Headers:                               Headers and Libraries.
-                                                              (line   6)
-* Heap problems:                         Debugging.           (line  24)
-* Home page:                             Introduction to GMP. (line  34)
-* Host system:                           Build Options.       (line  66)
-* HP-UX:                                 ABI and ISA.         (line 107)
-* HPPA:                                  ABI and ISA.         (line  68)
-* I/O functions <1>:                     I/O of Integers.     (line   6)
-* I/O functions <2>:                     I/O of Rationals.    (line   6)
-* I/O functions:                         I/O of Floats.       (line   6)
-* i386:                                  Notes for Particular Systems.
-                                                              (line 126)
-* IA-64:                                 ABI and ISA.         (line 107)
-* Import:                                Integer Import and Export.
-                                                              (line  11)
-* In-place operations:                   Efficiency.          (line  57)
-* Include files:                         Headers and Libraries.
-                                                              (line   6)
-* info-lookup-symbol:                    Emacs.               (line   6)
-* Initialization functions <1>:          Initializing Integers.
-                                                              (line   6)
-* Initialization functions <2>:          Initializing Rationals.
-                                                              (line   6)
-* Initialization functions <3>:          Random State Initialization.
-                                                              (line   6)
-* Initialization functions <4>:          Simultaneous Float Init & Assign.
-                                                              (line   6)
-* Initialization functions <5>:          Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Initialization functions:              Initializing Floats. (line   6)
-* Initializing and clearing:             Efficiency.          (line  21)
-* Input functions <1>:                   I/O of Integers.     (line   6)
-* Input functions <2>:                   I/O of Rationals.    (line   6)
-* Input functions <3>:                   I/O of Floats.       (line   6)
-* Input functions:                       Formatted Input Functions.
-                                                              (line   6)
-* Install prefix:                        Build Options.       (line  32)
-* Installing GMP:                        Installing GMP.      (line   6)
-* Instruction Set Architecture:          ABI and ISA.         (line   6)
-* instrument-functions:                  Profiling.           (line  66)
-* Integer:                               Nomenclature and Types.
-                                                              (line   6)
-* Integer arithmetic functions:          Integer Arithmetic.  (line   6)
-* Integer assignment functions <1>:      Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Integer assignment functions:          Assigning Integers.  (line   6)
-* Integer bit manipulation functions:    Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Integer comparison functions:          Integer Comparisons. (line   6)
-* Integer conversion functions:          Converting Integers. (line   6)
-* Integer division functions:            Integer Division.    (line   6)
-* Integer exponentiation functions:      Integer Exponentiation.
-                                                              (line   6)
-* Integer export:                        Integer Import and Export.
-                                                              (line  45)
-* Integer functions:                     Integer Functions.   (line   6)
-* Integer import:                        Integer Import and Export.
-                                                              (line  11)
-* Integer initialization functions <1>:  Simultaneous Integer Init & Assign.
-                                                              (line   6)
-* Integer initialization functions:      Initializing Integers.
-                                                              (line   6)
-* Integer input and output functions:    I/O of Integers.     (line   6)
-* Integer internals:                     Integer Internals.   (line   6)
-* Integer logical functions:             Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Integer miscellaneous functions:       Miscellaneous Integer Functions.
-                                                              (line   6)
-* Integer random number functions:       Integer Random Numbers.
-                                                              (line   6)
-* Integer root functions:                Integer Roots.       (line   6)
-* Integer sign tests:                    Integer Comparisons. (line  28)
-* Integer special functions:             Integer Special Functions.
-                                                              (line   6)
-* Interix:                               Notes for Particular Systems.
-                                                              (line  51)
-* Internals:                             Internals.           (line   6)
-* Introduction:                          Introduction to GMP. (line   6)
-* Inverse modulo functions:              Number Theoretic Functions.
-                                                              (line  60)
-* IRIX <1>:                              Known Build Problems.
-                                                              (line  38)
-* IRIX:                                  ABI and ISA.         (line 132)
-* ISA:                                   ABI and ISA.         (line   6)
-* istream input:                         C++ Formatted Input. (line   6)
-* Jacobi symbol algorithm:               Jacobi Symbol.       (line   6)
-* Jacobi symbol functions:               Number Theoretic Functions.
-                                                              (line  66)
-* Karatsuba multiplication:              Karatsuba Multiplication.
-                                                              (line   6)
-* Karatsuba square root algorithm:       Square Root Algorithm.
-                                                              (line   6)
-* Kronecker symbol functions:            Number Theoretic Functions.
-                                                              (line  78)
-* Language bindings:                     Language Bindings.   (line   6)
-* Latest version of GMP:                 Introduction to GMP. (line  38)
-* LCM functions:                         Number Theoretic Functions.
-                                                              (line  55)
-* Least common multiple functions:       Number Theoretic Functions.
-                                                              (line  55)
-* Legendre symbol functions:             Number Theoretic Functions.
-                                                              (line  69)
-* libgmp:                                Headers and Libraries.
-                                                              (line  22)
-* libgmpxx:                              Headers and Libraries.
-                                                              (line  27)
-* Libraries:                             Headers and Libraries.
-                                                              (line  22)
-* Libtool:                               Headers and Libraries.
-                                                              (line  33)
-* Libtool versioning:                    Notes for Package Builds.
-                                                              (line   9)
-* License conditions:                    Copying.             (line   6)
-* Limb:                                  Nomenclature and Types.
-                                                              (line  31)
-* Limb size:                             Useful Macros and Constants.
-                                                              (line   7)
-* Linear congruential algorithm:         Random Number Algorithms.
-                                                              (line  25)
-* Linear congruential random numbers:    Random State Initialization.
-                                                              (line  32)
-* Linking:                               Headers and Libraries.
-                                                              (line  22)
-* Logical functions:                     Integer Logic and Bit Fiddling.
-                                                              (line   6)
-* Low-level functions:                   Low-level Functions. (line   6)
-* Lucas number algorithm:                Lucas Numbers Algorithm.
-                                                              (line   6)
-* Lucas number functions:                Number Theoretic Functions.
-                                                              (line 119)
-* MacOS X:                               Known Build Problems.
-                                                              (line  51)
-* Mailing lists:                         Introduction to GMP. (line  45)
-* Malloc debugger:                       Debugging.           (line  30)
-* Malloc problems:                       Debugging.           (line  24)
-* Memory allocation:                     Custom Allocation.   (line   6)
-* Memory management:                     Memory Management.   (line   6)
-* Mersenne twister algorithm:            Random Number Algorithms.
-                                                              (line  17)
-* Mersenne twister random numbers:       Random State Initialization.
-                                                              (line  13)
-* MINGW:                                 Notes for Particular Systems.
-                                                              (line  43)
-* MIPS:                                  ABI and ISA.         (line 132)
-* Miscellaneous float functions:         Miscellaneous Float Functions.
-                                                              (line   6)
-* Miscellaneous integer functions:       Miscellaneous Integer Functions.
-                                                              (line   6)
-* MMX:                                   Notes for Particular Systems.
-                                                              (line 132)
-* Modular inverse functions:             Number Theoretic Functions.
-                                                              (line  60)
-* Most significant bit:                  Miscellaneous Integer Functions.
-                                                              (line  34)
-* mp.h:                                  BSD Compatible Functions.
-                                                              (line  21)
-* MPN_PATH:                              Build Options.       (line 335)
-* MS Windows:                            Notes for Particular Systems.
-                                                              (line  56)
-* MS-DOS:                                Notes for Particular Systems.
-                                                              (line  43)
-* Multi-threading:                       Reentrancy.          (line   6)
-* Multiplication algorithms:             Multiplication Algorithms.
-                                                              (line   6)
-* Nails:                                 Low-level Functions. (line 478)
-* Native compilation:                    Build Options.       (line  52)
-* NeXT:                                  Known Build Problems.
-                                                              (line  57)
-* Next prime function:                   Number Theoretic Functions.
-                                                              (line  23)
-* Nomenclature:                          Nomenclature and Types.
-                                                              (line   6)
-* Non-Unix systems:                      Build Options.       (line  11)
-* Nth root algorithm:                    Nth Root Algorithm.  (line   6)
-* Number sequences:                      Efficiency.          (line 147)
-* Number theoretic functions:            Number Theoretic Functions.
-                                                              (line   6)
-* Numerator and denominator:             Applying Integer Functions.
-                                                              (line   6)
-* obstack output:                        Formatted Output Functions.
-                                                              (line  81)
-* OpenBSD:                               Notes for Particular Systems.
-                                                              (line  86)
-* Optimizing performance:                Performance optimization.
-                                                              (line   6)
-* ostream output:                        C++ Formatted Output.
-                                                              (line   6)
-* Other languages:                       Language Bindings.   (line   6)
-* Output functions <1>:                  I/O of Floats.       (line   6)
-* Output functions <2>:                  I/O of Rationals.    (line   6)
-* Output functions <3>:                  Formatted Output Functions.
-                                                              (line   6)
-* Output functions:                      I/O of Integers.     (line   6)
-* Packaged builds:                       Notes for Package Builds.
-                                                              (line   6)
-* Parameter conventions:                 Parameter Conventions.
-                                                              (line   6)
-* Parsing expressions demo:              Demonstration Programs.
-                                                              (line  21)
-* Particular systems:                    Notes for Particular Systems.
-                                                              (line   6)
-* Past GMP versions:                     Compatibility with older versions.
-                                                              (line   6)
-* PDF:                                   Build Options.       (line 350)
-* Perfect power algorithm:               Perfect Power Algorithm.
-                                                              (line   6)
-* Perfect power functions:               Integer Roots.       (line  27)
-* Perfect square algorithm:              Perfect Square Algorithm.
-                                                              (line   6)
-* Perfect square functions:              Integer Roots.       (line  36)
-* perl:                                  Demonstration Programs.
-                                                              (line  35)
-* Perl module:                           Demonstration Programs.
-                                                              (line  35)
-* Postscript:                            Build Options.       (line 350)
-* Power/PowerPC <1>:                     Known Build Problems.
-                                                              (line  63)
-* Power/PowerPC:                         Notes for Particular Systems.
-                                                              (line  92)
-* Powering algorithms:                   Powering Algorithms. (line   6)
-* Powering functions <1>:                Float Arithmetic.    (line  41)
-* Powering functions:                    Integer Exponentiation.
-                                                              (line   6)
-* PowerPC:                               ABI and ISA.         (line 167)
-* Precision of floats:                   Floating-point Functions.
-                                                              (line   6)
-* Precision of hardware floating point:  Notes for Particular Systems.
-                                                              (line  34)
-* Prefix:                                Build Options.       (line  32)
-* Prime testing algorithms:              Prime Testing Algorithm.
-                                                              (line   6)
-* Prime testing functions:               Number Theoretic Functions.
-                                                              (line   7)
-* printf formatted output:               Formatted Output.    (line   6)
-* Probable prime testing functions:      Number Theoretic Functions.
-                                                              (line   7)
-* prof:                                  Profiling.           (line  24)
-* Profiling:                             Profiling.           (line   6)
-* Radix conversion algorithms:           Radix Conversion Algorithms.
-                                                              (line   6)
-* Random number algorithms:              Random Number Algorithms.
-                                                              (line   6)
-* Random number functions <1>:           Integer Random Numbers.
-                                                              (line   6)
-* Random number functions <2>:           Miscellaneous Float Functions.
-                                                              (line  27)
-* Random number functions:               Random Number Functions.
-                                                              (line   6)
-* Random number seeding:                 Random State Seeding.
-                                                              (line   6)
-* Random number state:                   Random State Initialization.
-                                                              (line   6)
-* Random state:                          Nomenclature and Types.
-                                                              (line  46)
-* Rational arithmetic:                   Efficiency.          (line 113)
-* Rational arithmetic functions:         Rational Arithmetic. (line   6)
-* Rational assignment functions:         Initializing Rationals.
-                                                              (line   6)
-* Rational comparison functions:         Comparing Rationals. (line   6)
-* Rational conversion functions:         Rational Conversions.
-                                                              (line   6)
-* Rational initialization functions:     Initializing Rationals.
-                                                              (line   6)
-* Rational input and output functions:   I/O of Rationals.    (line   6)
-* Rational internals:                    Rational Internals.  (line   6)
-* Rational number:                       Nomenclature and Types.
-                                                              (line  16)
-* Rational number functions:             Rational Number Functions.
-                                                              (line   6)
-* Rational numerator and denominator:    Applying Integer Functions.
-                                                              (line   6)
-* Rational sign tests:                   Comparing Rationals. (line  27)
-* Raw output internals:                  Raw Output Internals.
-                                                              (line   6)
-* Reallocations:                         Efficiency.          (line  30)
-* Reentrancy:                            Reentrancy.          (line   6)
-* References:                            References.          (line   6)
-* Remove factor functions:               Number Theoretic Functions.
-                                                              (line  90)
-* Reporting bugs:                        Reporting Bugs.      (line   6)
-* Root extraction algorithm:             Nth Root Algorithm.  (line   6)
-* Root extraction algorithms:            Root Extraction Algorithms.
-                                                              (line   6)
-* Root extraction functions <1>:         Float Arithmetic.    (line  37)
-* Root extraction functions:             Integer Roots.       (line   6)
-* Root testing functions:                Integer Roots.       (line  36)
-* Rounding functions:                    Miscellaneous Float Functions.
-                                                              (line   9)
-* Sample programs:                       Demonstration Programs.
-                                                              (line   6)
-* Scan bit functions:                    Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* scanf formatted input:                 Formatted Input.     (line   6)
-* SCO:                                   Known Build Problems.
-                                                              (line  38)
-* Seeding random numbers:                Random State Seeding.
-                                                              (line   6)
-* Segmentation violation:                Debugging.           (line   7)
-* Sequent Symmetry:                      Known Build Problems.
-                                                              (line  68)
-* Services for Unix:                     Notes for Particular Systems.
-                                                              (line  51)
-* Shared library versioning:             Notes for Package Builds.
-                                                              (line   9)
-* Sign tests <1>:                        Float Comparison.    (line  33)
-* Sign tests <2>:                        Integer Comparisons. (line  28)
-* Sign tests:                            Comparing Rationals. (line  27)
-* Size in digits:                        Miscellaneous Integer Functions.
-                                                              (line  23)
-* Small operands:                        Efficiency.          (line   7)
-* Solaris <1>:                           ABI and ISA.         (line 201)
-* Solaris:                               Known Build Problems.
-                                                              (line  78)
-* Sparc:                                 Notes for Particular Systems.
-                                                              (line 108)
-* Sparc V9:                              ABI and ISA.         (line 201)
-* Special integer functions:             Integer Special Functions.
-                                                              (line   6)
-* Square root algorithm:                 Square Root Algorithm.
-                                                              (line   6)
-* SSE2:                                  Notes for Particular Systems.
-                                                              (line 132)
-* Stack backtrace:                       Debugging.           (line  50)
-* Stack overflow <1>:                    Debugging.           (line   7)
-* Stack overflow:                        Build Options.       (line 278)
-* Static linking:                        Efficiency.          (line  14)
-* stdarg.h:                              Headers and Libraries.
-                                                              (line  17)
-* stdio.h:                               Headers and Libraries.
-                                                              (line  11)
-* Stripped libraries:                    Known Build Problems.
-                                                              (line  28)
-* Sun:                                   ABI and ISA.         (line 201)
-* SunOS:                                 Notes for Particular Systems.
-                                                              (line 120)
-* Systems:                               Notes for Particular Systems.
-                                                              (line   6)
-* Temporary memory:                      Build Options.       (line 278)
-* Texinfo:                               Build Options.       (line 347)
-* Text input/output:                     Efficiency.          (line 153)
-* Thread safety:                         Reentrancy.          (line   6)
-* Toom multiplication <1>:               Other Multiplication.
-                                                              (line   6)
-* Toom multiplication <2>:               Toom 4-Way Multiplication.
-                                                              (line   6)
-* Toom multiplication:                   Toom 3-Way Multiplication.
-                                                              (line   6)
-* Types:                                 Nomenclature and Types.
-                                                              (line   6)
-* ui and si functions:                   Efficiency.          (line  50)
-* Unbalanced multiplication:             Unbalanced Multiplication.
-                                                              (line   6)
-* Upward compatibility:                  Compatibility with older versions.
-                                                              (line   6)
-* Useful macros and constants:           Useful Macros and Constants.
-                                                              (line   6)
-* User-defined precision:                Floating-point Functions.
-                                                              (line   6)
-* Valgrind:                              Debugging.           (line 130)
-* Variable conventions:                  Variable Conventions.
-                                                              (line   6)
-* Version number:                        Useful Macros and Constants.
-                                                              (line  12)
-* Web page:                              Introduction to GMP. (line  34)
-* Windows:                               Notes for Particular Systems.
-                                                              (line  56)
-* x86:                                   Notes for Particular Systems.
-                                                              (line 126)
-* x87:                                   Notes for Particular Systems.
-                                                              (line  34)
-* XML:                                   Build Options.       (line 354)
-
-\1f
-File: gmp.info,  Node: Function Index,  Prev: Concept Index,  Up: Top
-
-Function and Type Index
-***********************
-
-\0\b[index\0\b]
-* Menu:
-
-* __GMP_CC:                              Useful Macros and Constants.
-                                                              (line  23)
-* __GMP_CFLAGS:                          Useful Macros and Constants.
-                                                              (line  24)
-* __GNU_MP_VERSION:                      Useful Macros and Constants.
-                                                              (line  10)
-* __GNU_MP_VERSION_MINOR:                Useful Macros and Constants.
-                                                              (line  11)
-* __GNU_MP_VERSION_PATCHLEVEL:           Useful Macros and Constants.
-                                                              (line  12)
-* _mpz_realloc:                          Integer Special Functions.
-                                                              (line  51)
-* abs <1>:                               C++ Interface Rationals.
-                                                              (line  43)
-* abs <2>:                               C++ Interface Integers.
-                                                              (line  42)
-* abs:                                   C++ Interface Floats.
-                                                              (line  70)
-* ceil:                                  C++ Interface Floats.
-                                                              (line  71)
-* cmp <1>:                               C++ Interface Floats.
-                                                              (line  72)
-* cmp <2>:                               C++ Interface Rationals.
-                                                              (line  44)
-* cmp <3>:                               C++ Interface Integers.
-                                                              (line  44)
-* cmp:                                   C++ Interface Rationals.
-                                                              (line  45)
-* floor:                                 C++ Interface Floats.
-                                                              (line  80)
-* gcd:                                   BSD Compatible Functions.
-                                                              (line  82)
-* gmp_asprintf:                          Formatted Output Functions.
-                                                              (line  65)
-* gmp_errno:                             Random State Initialization.
-                                                              (line  55)
-* GMP_ERROR_INVALID_ARGUMENT:            Random State Initialization.
-                                                              (line  55)
-* GMP_ERROR_UNSUPPORTED_ARGUMENT:        Random State Initialization.
-                                                              (line  55)
-* gmp_fprintf:                           Formatted Output Functions.
-                                                              (line  29)
-* gmp_fscanf:                            Formatted Input Functions.
-                                                              (line  25)
-* GMP_LIMB_BITS:                         Low-level Functions. (line 508)
-* GMP_NAIL_BITS:                         Low-level Functions. (line 506)
-* GMP_NAIL_MASK:                         Low-level Functions. (line 516)
-* GMP_NUMB_BITS:                         Low-level Functions. (line 507)
-* GMP_NUMB_MASK:                         Low-level Functions. (line 517)
-* GMP_NUMB_MAX:                          Low-level Functions. (line 525)
-* gmp_obstack_printf:                    Formatted Output Functions.
-                                                              (line  79)
-* gmp_obstack_vprintf:                   Formatted Output Functions.
-                                                              (line  81)
-* gmp_printf:                            Formatted Output Functions.
-                                                              (line  24)
-* GMP_RAND_ALG_DEFAULT:                  Random State Initialization.
-                                                              (line  49)
-* GMP_RAND_ALG_LC:                       Random State Initialization.
-                                                              (line  49)
-* gmp_randclass:                         C++ Interface Random Numbers.
-                                                              (line   7)
-* gmp_randclass::get_f:                  C++ Interface Random Numbers.
-                                                              (line  45)
-* gmp_randclass::get_z_bits:             C++ Interface Random Numbers.
-                                                              (line  39)
-* gmp_randclass::get_z_range:            C++ Interface Random Numbers.
-                                                              (line  42)
-* gmp_randclass::gmp_randclass:          C++ Interface Random Numbers.
-                                                              (line  13)
-* gmp_randclass::seed:                   C++ Interface Random Numbers.
-                                                              (line  33)
-* gmp_randclear:                         Random State Initialization.
-                                                              (line  62)
-* gmp_randinit:                          Random State Initialization.
-                                                              (line  47)
-* gmp_randinit_default:                  Random State Initialization.
-                                                              (line   7)
-* gmp_randinit_lc_2exp:                  Random State Initialization.
-                                                              (line  18)
-* gmp_randinit_lc_2exp_size:             Random State Initialization.
-                                                              (line  32)
-* gmp_randinit_mt:                       Random State Initialization.
-                                                              (line  13)
-* gmp_randinit_set:                      Random State Initialization.
-                                                              (line  43)
-* gmp_randseed:                          Random State Seeding.
-                                                              (line   7)
-* gmp_randseed_ui:                       Random State Seeding.
-                                                              (line   9)
-* gmp_randstate_t:                       Nomenclature and Types.
-                                                              (line  46)
-* gmp_scanf:                             Formatted Input Functions.
-                                                              (line  21)
-* gmp_snprintf:                          Formatted Output Functions.
-                                                              (line  46)
-* gmp_sprintf:                           Formatted Output Functions.
-                                                              (line  34)
-* gmp_sscanf:                            Formatted Input Functions.
-                                                              (line  29)
-* gmp_urandomb_ui:                       Random State Miscellaneous.
-                                                              (line   8)
-* gmp_urandomm_ui:                       Random State Miscellaneous.
-                                                              (line  14)
-* gmp_vasprintf:                         Formatted Output Functions.
-                                                              (line  66)
-* gmp_version:                           Useful Macros and Constants.
-                                                              (line  18)
-* gmp_vfprintf:                          Formatted Output Functions.
-                                                              (line  30)
-* gmp_vfscanf:                           Formatted Input Functions.
-                                                              (line  26)
-* gmp_vprintf:                           Formatted Output Functions.
-                                                              (line  25)
-* gmp_vscanf:                            Formatted Input Functions.
-                                                              (line  22)
-* gmp_vsnprintf:                         Formatted Output Functions.
-                                                              (line  48)
-* gmp_vsprintf:                          Formatted Output Functions.
-                                                              (line  35)
-* gmp_vsscanf:                           Formatted Input Functions.
-                                                              (line  31)
-* hypot:                                 C++ Interface Floats.
-                                                              (line  81)
-* itom:                                  BSD Compatible Functions.
-                                                              (line  29)
-* madd:                                  BSD Compatible Functions.
-                                                              (line  43)
-* mcmp:                                  BSD Compatible Functions.
-                                                              (line  85)
-* mdiv:                                  BSD Compatible Functions.
-                                                              (line  53)
-* mfree:                                 BSD Compatible Functions.
-                                                              (line 105)
-* min:                                   BSD Compatible Functions.
-                                                              (line  89)
-* MINT:                                  BSD Compatible Functions.
-                                                              (line  21)
-* mout:                                  BSD Compatible Functions.
-                                                              (line  94)
-* move:                                  BSD Compatible Functions.
-                                                              (line  39)
-* mp_bitcnt_t:                           Nomenclature and Types.
-                                                              (line  42)
-* mp_bits_per_limb:                      Useful Macros and Constants.
-                                                              (line   7)
-* mp_exp_t:                              Nomenclature and Types.
-                                                              (line  27)
-* mp_get_memory_functions:               Custom Allocation.   (line  93)
-* mp_limb_t:                             Nomenclature and Types.
-                                                              (line  31)
-* mp_set_memory_functions:               Custom Allocation.   (line  21)
-* mp_size_t:                             Nomenclature and Types.
-                                                              (line  37)
-* mpf_abs:                               Float Arithmetic.    (line  47)
-* mpf_add:                               Float Arithmetic.    (line   7)
-* mpf_add_ui:                            Float Arithmetic.    (line   9)
-* mpf_ceil:                              Miscellaneous Float Functions.
-                                                              (line   7)
-* mpf_class:                             C++ Interface General.
-                                                              (line  20)
-* mpf_class::fits_sint_p:                C++ Interface Floats.
-                                                              (line  74)
-* mpf_class::fits_slong_p:               C++ Interface Floats.
-                                                              (line  75)
-* mpf_class::fits_sshort_p:              C++ Interface Floats.
-                                                              (line  76)
-* mpf_class::fits_uint_p:                C++ Interface Floats.
-                                                              (line  77)
-* mpf_class::fits_ulong_p:               C++ Interface Floats.
-                                                              (line  78)
-* mpf_class::fits_ushort_p:              C++ Interface Floats.
-                                                              (line  79)
-* mpf_class::get_d:                      C++ Interface Floats.
-                                                              (line  82)
-* mpf_class::get_mpf_t:                  C++ Interface General.
-                                                              (line  66)
-* mpf_class::get_prec:                   C++ Interface Floats.
-                                                              (line 100)
-* mpf_class::get_si:                     C++ Interface Floats.
-                                                              (line  83)
-* mpf_class::get_str:                    C++ Interface Floats.
-                                                              (line  85)
-* mpf_class::get_ui:                     C++ Interface Floats.
-                                                              (line  86)
-* mpf_class::mpf_class:                  C++ Interface Floats.
-                                                              (line  38)
-* mpf_class::operator=:                  C++ Interface Floats.
-                                                              (line  47)
-* mpf_class::set_prec:                   C++ Interface Floats.
-                                                              (line 101)
-* mpf_class::set_prec_raw:               C++ Interface Floats.
-                                                              (line 102)
-* mpf_class::set_str:                    C++ Interface Floats.
-                                                              (line  88)
-* mpf_clear:                             Initializing Floats. (line  37)
-* mpf_clears:                            Initializing Floats. (line  41)
-* mpf_cmp:                               Float Comparison.    (line   7)
-* mpf_cmp_d:                             Float Comparison.    (line   8)
-* mpf_cmp_si:                            Float Comparison.    (line  10)
-* mpf_cmp_ui:                            Float Comparison.    (line   9)
-* mpf_div:                               Float Arithmetic.    (line  29)
-* mpf_div_2exp:                          Float Arithmetic.    (line  53)
-* mpf_div_ui:                            Float Arithmetic.    (line  33)
-* mpf_eq:                                Float Comparison.    (line  17)
-* mpf_fits_sint_p:                       Miscellaneous Float Functions.
-                                                              (line  20)
-* mpf_fits_slong_p:                      Miscellaneous Float Functions.
-                                                              (line  18)
-* mpf_fits_sshort_p:                     Miscellaneous Float Functions.
-                                                              (line  22)
-* mpf_fits_uint_p:                       Miscellaneous Float Functions.
-                                                              (line  19)
-* mpf_fits_ulong_p:                      Miscellaneous Float Functions.
-                                                              (line  17)
-* mpf_fits_ushort_p:                     Miscellaneous Float Functions.
-                                                              (line  21)
-* mpf_floor:                             Miscellaneous Float Functions.
-                                                              (line   8)
-* mpf_get_d:                             Converting Floats.   (line   7)
-* mpf_get_d_2exp:                        Converting Floats.   (line  16)
-* mpf_get_default_prec:                  Initializing Floats. (line  12)
-* mpf_get_prec:                          Initializing Floats. (line  62)
-* mpf_get_si:                            Converting Floats.   (line  27)
-* mpf_get_str:                           Converting Floats.   (line  37)
-* mpf_get_ui:                            Converting Floats.   (line  28)
-* mpf_init:                              Initializing Floats. (line  19)
-* mpf_init2:                             Initializing Floats. (line  26)
-* mpf_init_set:                          Simultaneous Float Init & Assign.
-                                                              (line  16)
-* mpf_init_set_d:                        Simultaneous Float Init & Assign.
-                                                              (line  19)
-* mpf_init_set_si:                       Simultaneous Float Init & Assign.
-                                                              (line  18)
-* mpf_init_set_str:                      Simultaneous Float Init & Assign.
-                                                              (line  25)
-* mpf_init_set_ui:                       Simultaneous Float Init & Assign.
-                                                              (line  17)
-* mpf_inits:                             Initializing Floats. (line  31)
-* mpf_inp_str:                           I/O of Floats.       (line  37)
-* mpf_integer_p:                         Miscellaneous Float Functions.
-                                                              (line  14)
-* mpf_mul:                               Float Arithmetic.    (line  19)
-* mpf_mul_2exp:                          Float Arithmetic.    (line  50)
-* mpf_mul_ui:                            Float Arithmetic.    (line  21)
-* mpf_neg:                               Float Arithmetic.    (line  44)
-* mpf_out_str:                           I/O of Floats.       (line  17)
-* mpf_pow_ui:                            Float Arithmetic.    (line  41)
-* mpf_random2:                           Miscellaneous Float Functions.
-                                                              (line  36)
-* mpf_reldiff:                           Float Comparison.    (line  29)
-* mpf_set:                               Assigning Floats.    (line  10)
-* mpf_set_d:                             Assigning Floats.    (line  13)
-* mpf_set_default_prec:                  Initializing Floats. (line   7)
-* mpf_set_prec:                          Initializing Floats. (line  65)
-* mpf_set_prec_raw:                      Initializing Floats. (line  72)
-* mpf_set_q:                             Assigning Floats.    (line  15)
-* mpf_set_si:                            Assigning Floats.    (line  12)
-* mpf_set_str:                           Assigning Floats.    (line  18)
-* mpf_set_ui:                            Assigning Floats.    (line  11)
-* mpf_set_z:                             Assigning Floats.    (line  14)
-* mpf_sgn:                               Float Comparison.    (line  33)
-* mpf_sqrt:                              Float Arithmetic.    (line  36)
-* mpf_sqrt_ui:                           Float Arithmetic.    (line  37)
-* mpf_sub:                               Float Arithmetic.    (line  12)
-* mpf_sub_ui:                            Float Arithmetic.    (line  16)
-* mpf_swap:                              Assigning Floats.    (line  52)
-* mpf_t:                                 Nomenclature and Types.
-                                                              (line  21)
-* mpf_trunc:                             Miscellaneous Float Functions.
-                                                              (line   9)
-* mpf_ui_div:                            Float Arithmetic.    (line  31)
-* mpf_ui_sub:                            Float Arithmetic.    (line  14)
-* mpf_urandomb:                          Miscellaneous Float Functions.
-                                                              (line  27)
-* mpn_add:                               Low-level Functions. (line  69)
-* mpn_add_1:                             Low-level Functions. (line  64)
-* mpn_add_n:                             Low-level Functions. (line  54)
-* mpn_addmul_1:                          Low-level Functions. (line 148)
-* mpn_and_n:                             Low-level Functions. (line 420)
-* mpn_andn_n:                            Low-level Functions. (line 435)
-* mpn_cmp:                               Low-level Functions. (line 284)
-* mpn_com:                               Low-level Functions. (line 460)
-* mpn_copyd:                             Low-level Functions. (line 469)
-* mpn_copyi:                             Low-level Functions. (line 465)
-* mpn_divexact_by3:                      Low-level Functions. (line 229)
-* mpn_divexact_by3c:                     Low-level Functions. (line 231)
-* mpn_divmod:                            Low-level Functions. (line 224)
-* mpn_divmod_1:                          Low-level Functions. (line 208)
-* mpn_divrem:                            Low-level Functions. (line 182)
-* mpn_divrem_1:                          Low-level Functions. (line 206)
-* mpn_gcd:                               Low-level Functions. (line 289)
-* mpn_gcd_1:                             Low-level Functions. (line 299)
-* mpn_gcdext:                            Low-level Functions. (line 305)
-* mpn_get_str:                           Low-level Functions. (line 346)
-* mpn_hamdist:                           Low-level Functions. (line 410)
-* mpn_ior_n:                             Low-level Functions. (line 425)
-* mpn_iorn_n:                            Low-level Functions. (line 440)
-* mpn_lshift:                            Low-level Functions. (line 260)
-* mpn_mod_1:                             Low-level Functions. (line 255)
-* mpn_mul:                               Low-level Functions. (line 114)
-* mpn_mul_1:                             Low-level Functions. (line 133)
-* mpn_mul_n:                             Low-level Functions. (line 103)
-* mpn_nand_n:                            Low-level Functions. (line 445)
-* mpn_neg:                               Low-level Functions. (line  98)
-* mpn_nior_n:                            Low-level Functions. (line 450)
-* mpn_perfect_square_p:                  Low-level Functions. (line 416)
-* mpn_popcount:                          Low-level Functions. (line 406)
-* mpn_random:                            Low-level Functions. (line 395)
-* mpn_random2:                           Low-level Functions. (line 396)
-* mpn_rshift:                            Low-level Functions. (line 272)
-* mpn_scan0:                             Low-level Functions. (line 380)
-* mpn_scan1:                             Low-level Functions. (line 388)
-* mpn_set_str:                           Low-level Functions. (line 361)
-* mpn_sqr:                               Low-level Functions. (line 125)
-* mpn_sqrtrem:                           Low-level Functions. (line 328)
-* mpn_sub:                               Low-level Functions. (line  90)
-* mpn_sub_1:                             Low-level Functions. (line  85)
-* mpn_sub_n:                             Low-level Functions. (line  76)
-* mpn_submul_1:                          Low-level Functions. (line 159)
-* mpn_tdiv_qr:                           Low-level Functions. (line 171)
-* mpn_xnor_n:                            Low-level Functions. (line 455)
-* mpn_xor_n:                             Low-level Functions. (line 430)
-* mpn_zero:                              Low-level Functions. (line 472)
-* mpq_abs:                               Rational Arithmetic. (line  31)
-* mpq_add:                               Rational Arithmetic. (line   7)
-* mpq_canonicalize:                      Rational Number Functions.
-                                                              (line  22)
-* mpq_class:                             C++ Interface General.
-                                                              (line  19)
-* mpq_class::canonicalize:               C++ Interface Rationals.
-                                                              (line  37)
-* mpq_class::get_d:                      C++ Interface Rationals.
-                                                              (line  46)
-* mpq_class::get_den:                    C++ Interface Rationals.
-                                                              (line  58)
-* mpq_class::get_den_mpz_t:              C++ Interface Rationals.
-                                                              (line  68)
-* mpq_class::get_mpq_t:                  C++ Interface General.
-                                                              (line  65)
-* mpq_class::get_num:                    C++ Interface Rationals.
-                                                              (line  57)
-* mpq_class::get_num_mpz_t:              C++ Interface Rationals.
-                                                              (line  67)
-* mpq_class::get_str:                    C++ Interface Rationals.
-                                                              (line  47)
-* mpq_class::mpq_class:                  C++ Interface Rationals.
-                                                              (line  22)
-* mpq_class::set_str:                    C++ Interface Rationals.
-                                                              (line  49)
-* mpq_clear:                             Initializing Rationals.
-                                                              (line  16)
-* mpq_clears:                            Initializing Rationals.
-                                                              (line  20)
-* mpq_cmp:                               Comparing Rationals. (line   7)
-* mpq_cmp_si:                            Comparing Rationals. (line  17)
-* mpq_cmp_ui:                            Comparing Rationals. (line  15)
-* mpq_denref:                            Applying Integer Functions.
-                                                              (line  18)
-* mpq_div:                               Rational Arithmetic. (line  22)
-* mpq_div_2exp:                          Rational Arithmetic. (line  25)
-* mpq_equal:                             Comparing Rationals. (line  33)
-* mpq_get_d:                             Rational Conversions.
-                                                              (line   7)
-* mpq_get_den:                           Applying Integer Functions.
-                                                              (line  24)
-* mpq_get_num:                           Applying Integer Functions.
-                                                              (line  23)
-* mpq_get_str:                           Rational Conversions.
-                                                              (line  22)
-* mpq_init:                              Initializing Rationals.
-                                                              (line   7)
-* mpq_inits:                             Initializing Rationals.
-                                                              (line  12)
-* mpq_inp_str:                           I/O of Rationals.    (line  23)
-* mpq_inv:                               Rational Arithmetic. (line  34)
-* mpq_mul:                               Rational Arithmetic. (line  15)
-* mpq_mul_2exp:                          Rational Arithmetic. (line  18)
-* mpq_neg:                               Rational Arithmetic. (line  28)
-* mpq_numref:                            Applying Integer Functions.
-                                                              (line  17)
-* mpq_out_str:                           I/O of Rationals.    (line  15)
-* mpq_set:                               Initializing Rationals.
-                                                              (line  24)
-* mpq_set_d:                             Rational Conversions.
-                                                              (line  17)
-* mpq_set_den:                           Applying Integer Functions.
-                                                              (line  26)
-* mpq_set_f:                             Rational Conversions.
-                                                              (line  18)
-* mpq_set_num:                           Applying Integer Functions.
-                                                              (line  25)
-* mpq_set_si:                            Initializing Rationals.
-                                                              (line  31)
-* mpq_set_str:                           Initializing Rationals.
-                                                              (line  36)
-* mpq_set_ui:                            Initializing Rationals.
-                                                              (line  29)
-* mpq_set_z:                             Initializing Rationals.
-                                                              (line  25)
-* mpq_sgn:                               Comparing Rationals. (line  27)
-* mpq_sub:                               Rational Arithmetic. (line  11)
-* mpq_swap:                              Initializing Rationals.
-                                                              (line  56)
-* mpq_t:                                 Nomenclature and Types.
-                                                              (line  16)
-* mpz_abs:                               Integer Arithmetic.  (line  42)
-* mpz_add:                               Integer Arithmetic.  (line   7)
-* mpz_add_ui:                            Integer Arithmetic.  (line   9)
-* mpz_addmul:                            Integer Arithmetic.  (line  25)
-* mpz_addmul_ui:                         Integer Arithmetic.  (line  27)
-* mpz_and:                               Integer Logic and Bit Fiddling.
-                                                              (line  11)
-* mpz_array_init:                        Integer Special Functions.
-                                                              (line  11)
-* mpz_bin_ui:                            Number Theoretic Functions.
-                                                              (line  98)
-* mpz_bin_uiui:                          Number Theoretic Functions.
-                                                              (line 100)
-* mpz_cdiv_q:                            Integer Division.    (line  13)
-* mpz_cdiv_q_2exp:                       Integer Division.    (line  24)
-* mpz_cdiv_q_ui:                         Integer Division.    (line  17)
-* mpz_cdiv_qr:                           Integer Division.    (line  15)
-* mpz_cdiv_qr_ui:                        Integer Division.    (line  21)
-* mpz_cdiv_r:                            Integer Division.    (line  14)
-* mpz_cdiv_r_2exp:                       Integer Division.    (line  25)
-* mpz_cdiv_r_ui:                         Integer Division.    (line  19)
-* mpz_cdiv_ui:                           Integer Division.    (line  23)
-* mpz_class:                             C++ Interface General.
-                                                              (line  18)
-* mpz_class::fits_sint_p:                C++ Interface Integers.
-                                                              (line  45)
-* mpz_class::fits_slong_p:               C++ Interface Integers.
-                                                              (line  46)
-* mpz_class::fits_sshort_p:              C++ Interface Integers.
-                                                              (line  47)
-* mpz_class::fits_uint_p:                C++ Interface Integers.
-                                                              (line  48)
-* mpz_class::fits_ulong_p:               C++ Interface Integers.
-                                                              (line  49)
-* mpz_class::fits_ushort_p:              C++ Interface Integers.
-                                                              (line  50)
-* mpz_class::get_d:                      C++ Interface Integers.
-                                                              (line  51)
-* mpz_class::get_mpz_t:                  C++ Interface General.
-                                                              (line  64)
-* mpz_class::get_si:                     C++ Interface Integers.
-                                                              (line  52)
-* mpz_class::get_str:                    C++ Interface Integers.
-                                                              (line  53)
-* mpz_class::get_ui:                     C++ Interface Integers.
-                                                              (line  54)
-* mpz_class::mpz_class:                  C++ Interface Integers.
-                                                              (line   7)
-* mpz_class::set_str:                    C++ Interface Integers.
-                                                              (line  56)
-* mpz_clear:                             Initializing Integers.
-                                                              (line  44)
-* mpz_clears:                            Initializing Integers.
-                                                              (line  48)
-* mpz_clrbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  54)
-* mpz_cmp:                               Integer Comparisons. (line   7)
-* mpz_cmp_d:                             Integer Comparisons. (line   8)
-* mpz_cmp_si:                            Integer Comparisons. (line   9)
-* mpz_cmp_ui:                            Integer Comparisons. (line  10)
-* mpz_cmpabs:                            Integer Comparisons. (line  18)
-* mpz_cmpabs_d:                          Integer Comparisons. (line  19)
-* mpz_cmpabs_ui:                         Integer Comparisons. (line  20)
-* mpz_com:                               Integer Logic and Bit Fiddling.
-                                                              (line  20)
-* mpz_combit:                            Integer Logic and Bit Fiddling.
-                                                              (line  57)
-* mpz_congruent_2exp_p:                  Integer Division.    (line 124)
-* mpz_congruent_p:                       Integer Division.    (line 121)
-* mpz_congruent_ui_p:                    Integer Division.    (line 123)
-* mpz_divexact:                          Integer Division.    (line 101)
-* mpz_divexact_ui:                       Integer Division.    (line 102)
-* mpz_divisible_2exp_p:                  Integer Division.    (line 112)
-* mpz_divisible_p:                       Integer Division.    (line 110)
-* mpz_divisible_ui_p:                    Integer Division.    (line 111)
-* mpz_even_p:                            Miscellaneous Integer Functions.
-                                                              (line  18)
-* mpz_export:                            Integer Import and Export.
-                                                              (line  45)
-* mpz_fac_ui:                            Number Theoretic Functions.
-                                                              (line  95)
-* mpz_fdiv_q:                            Integer Division.    (line  27)
-* mpz_fdiv_q_2exp:                       Integer Division.    (line  38)
-* mpz_fdiv_q_ui:                         Integer Division.    (line  31)
-* mpz_fdiv_qr:                           Integer Division.    (line  29)
-* mpz_fdiv_qr_ui:                        Integer Division.    (line  35)
-* mpz_fdiv_r:                            Integer Division.    (line  28)
-* mpz_fdiv_r_2exp:                       Integer Division.    (line  39)
-* mpz_fdiv_r_ui:                         Integer Division.    (line  33)
-* mpz_fdiv_ui:                           Integer Division.    (line  37)
-* mpz_fib2_ui:                           Number Theoretic Functions.
-                                                              (line 108)
-* mpz_fib_ui:                            Number Theoretic Functions.
-                                                              (line 106)
-* mpz_fits_sint_p:                       Miscellaneous Integer Functions.
-                                                              (line  10)
-* mpz_fits_slong_p:                      Miscellaneous Integer Functions.
-                                                              (line   8)
-* mpz_fits_sshort_p:                     Miscellaneous Integer Functions.
-                                                              (line  12)
-* mpz_fits_uint_p:                       Miscellaneous Integer Functions.
-                                                              (line   9)
-* mpz_fits_ulong_p:                      Miscellaneous Integer Functions.
-                                                              (line   7)
-* mpz_fits_ushort_p:                     Miscellaneous Integer Functions.
-                                                              (line  11)
-* mpz_gcd:                               Number Theoretic Functions.
-                                                              (line  30)
-* mpz_gcd_ui:                            Number Theoretic Functions.
-                                                              (line  35)
-* mpz_gcdext:                            Number Theoretic Functions.
-                                                              (line  45)
-* mpz_get_d:                             Converting Integers. (line  27)
-* mpz_get_d_2exp:                        Converting Integers. (line  35)
-* mpz_get_si:                            Converting Integers. (line  18)
-* mpz_get_str:                           Converting Integers. (line  46)
-* mpz_get_ui:                            Converting Integers. (line  11)
-* mpz_getlimbn:                          Integer Special Functions.
-                                                              (line  60)
-* mpz_hamdist:                           Integer Logic and Bit Fiddling.
-                                                              (line  29)
-* mpz_import:                            Integer Import and Export.
-                                                              (line  11)
-* mpz_init:                              Initializing Integers.
-                                                              (line  26)
-* mpz_init2:                             Initializing Integers.
-                                                              (line  33)
-* mpz_init_set:                          Simultaneous Integer Init & Assign.
-                                                              (line  27)
-* mpz_init_set_d:                        Simultaneous Integer Init & Assign.
-                                                              (line  30)
-* mpz_init_set_si:                       Simultaneous Integer Init & Assign.
-                                                              (line  29)
-* mpz_init_set_str:                      Simultaneous Integer Init & Assign.
-                                                              (line  34)
-* mpz_init_set_ui:                       Simultaneous Integer Init & Assign.
-                                                              (line  28)
-* mpz_inits:                             Initializing Integers.
-                                                              (line  29)
-* mpz_inp_raw:                           I/O of Integers.     (line  59)
-* mpz_inp_str:                           I/O of Integers.     (line  28)
-* mpz_invert:                            Number Theoretic Functions.
-                                                              (line  60)
-* mpz_ior:                               Integer Logic and Bit Fiddling.
-                                                              (line  14)
-* mpz_jacobi:                            Number Theoretic Functions.
-                                                              (line  66)
-* mpz_kronecker:                         Number Theoretic Functions.
-                                                              (line  74)
-* mpz_kronecker_si:                      Number Theoretic Functions.
-                                                              (line  75)
-* mpz_kronecker_ui:                      Number Theoretic Functions.
-                                                              (line  76)
-* mpz_lcm:                               Number Theoretic Functions.
-                                                              (line  54)
-* mpz_lcm_ui:                            Number Theoretic Functions.
-                                                              (line  55)
-* mpz_legendre:                          Number Theoretic Functions.
-                                                              (line  69)
-* mpz_lucnum2_ui:                        Number Theoretic Functions.
-                                                              (line 119)
-* mpz_lucnum_ui:                         Number Theoretic Functions.
-                                                              (line 117)
-* mpz_mod:                               Integer Division.    (line  91)
-* mpz_mod_ui:                            Integer Division.    (line  93)
-* mpz_mul:                               Integer Arithmetic.  (line  19)
-* mpz_mul_2exp:                          Integer Arithmetic.  (line  35)
-* mpz_mul_si:                            Integer Arithmetic.  (line  20)
-* mpz_mul_ui:                            Integer Arithmetic.  (line  22)
-* mpz_neg:                               Integer Arithmetic.  (line  39)
-* mpz_nextprime:                         Number Theoretic Functions.
-                                                              (line  23)
-* mpz_odd_p:                             Miscellaneous Integer Functions.
-                                                              (line  17)
-* mpz_out_raw:                           I/O of Integers.     (line  43)
-* mpz_out_str:                           I/O of Integers.     (line  16)
-* mpz_perfect_power_p:                   Integer Roots.       (line  27)
-* mpz_perfect_square_p:                  Integer Roots.       (line  36)
-* mpz_popcount:                          Integer Logic and Bit Fiddling.
-                                                              (line  23)
-* mpz_pow_ui:                            Integer Exponentiation.
-                                                              (line  31)
-* mpz_powm:                              Integer Exponentiation.
-                                                              (line   8)
-* mpz_powm_sec:                          Integer Exponentiation.
-                                                              (line  18)
-* mpz_powm_ui:                           Integer Exponentiation.
-                                                              (line  10)
-* mpz_probab_prime_p:                    Number Theoretic Functions.
-                                                              (line   7)
-* mpz_random:                            Integer Random Numbers.
-                                                              (line  42)
-* mpz_random2:                           Integer Random Numbers.
-                                                              (line  51)
-* mpz_realloc2:                          Initializing Integers.
-                                                              (line  52)
-* mpz_remove:                            Number Theoretic Functions.
-                                                              (line  90)
-* mpz_root:                              Integer Roots.       (line   7)
-* mpz_rootrem:                           Integer Roots.       (line  13)
-* mpz_rrandomb:                          Integer Random Numbers.
-                                                              (line  31)
-* mpz_scan0:                             Integer Logic and Bit Fiddling.
-                                                              (line  37)
-* mpz_scan1:                             Integer Logic and Bit Fiddling.
-                                                              (line  38)
-* mpz_set:                               Assigning Integers.  (line  10)
-* mpz_set_d:                             Assigning Integers.  (line  13)
-* mpz_set_f:                             Assigning Integers.  (line  15)
-* mpz_set_q:                             Assigning Integers.  (line  14)
-* mpz_set_si:                            Assigning Integers.  (line  12)
-* mpz_set_str:                           Assigning Integers.  (line  21)
-* mpz_set_ui:                            Assigning Integers.  (line  11)
-* mpz_setbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  51)
-* mpz_sgn:                               Integer Comparisons. (line  28)
-* mpz_si_kronecker:                      Number Theoretic Functions.
-                                                              (line  77)
-* mpz_size:                              Integer Special Functions.
-                                                              (line  68)
-* mpz_sizeinbase:                        Miscellaneous Integer Functions.
-                                                              (line  23)
-* mpz_sqrt:                              Integer Roots.       (line  17)
-* mpz_sqrtrem:                           Integer Roots.       (line  20)
-* mpz_sub:                               Integer Arithmetic.  (line  12)
-* mpz_sub_ui:                            Integer Arithmetic.  (line  14)
-* mpz_submul:                            Integer Arithmetic.  (line  30)
-* mpz_submul_ui:                         Integer Arithmetic.  (line  32)
-* mpz_swap:                              Assigning Integers.  (line  37)
-* mpz_t:                                 Nomenclature and Types.
-                                                              (line   6)
-* mpz_tdiv_q:                            Integer Division.    (line  41)
-* mpz_tdiv_q_2exp:                       Integer Division.    (line  52)
-* mpz_tdiv_q_ui:                         Integer Division.    (line  45)
-* mpz_tdiv_qr:                           Integer Division.    (line  43)
-* mpz_tdiv_qr_ui:                        Integer Division.    (line  49)
-* mpz_tdiv_r:                            Integer Division.    (line  42)
-* mpz_tdiv_r_2exp:                       Integer Division.    (line  53)
-* mpz_tdiv_r_ui:                         Integer Division.    (line  47)
-* mpz_tdiv_ui:                           Integer Division.    (line  51)
-* mpz_tstbit:                            Integer Logic and Bit Fiddling.
-                                                              (line  60)
-* mpz_ui_kronecker:                      Number Theoretic Functions.
-                                                              (line  78)
-* mpz_ui_pow_ui:                         Integer Exponentiation.
-                                                              (line  33)
-* mpz_ui_sub:                            Integer Arithmetic.  (line  16)
-* mpz_urandomb:                          Integer Random Numbers.
-                                                              (line  14)
-* mpz_urandomm:                          Integer Random Numbers.
-                                                              (line  23)
-* mpz_xor:                               Integer Logic and Bit Fiddling.
-                                                              (line  17)
-* msqrt:                                 BSD Compatible Functions.
-                                                              (line  63)
-* msub:                                  BSD Compatible Functions.
-                                                              (line  46)
-* mtox:                                  BSD Compatible Functions.
-                                                              (line  98)
-* mult:                                  BSD Compatible Functions.
-                                                              (line  49)
-* operator%:                             C++ Interface Integers.
-                                                              (line  30)
-* operator/:                             C++ Interface Integers.
-                                                              (line  29)
-* operator<<:                            C++ Formatted Output.
-                                                              (line  20)
-* operator>> <1>:                        C++ Formatted Input. (line  11)
-* operator>>:                            C++ Interface Rationals.
-                                                              (line  77)
-* pow:                                   BSD Compatible Functions.
-                                                              (line  71)
-* rpow:                                  BSD Compatible Functions.
-                                                              (line  79)
-* sdiv:                                  BSD Compatible Functions.
-                                                              (line  55)
-* sgn <1>:                               C++ Interface Rationals.
-                                                              (line  50)
-* sgn <2>:                               C++ Interface Integers.
-                                                              (line  57)
-* sgn:                                   C++ Interface Floats.
-                                                              (line  89)
-* sqrt <1>:                              C++ Interface Integers.
-                                                              (line  58)
-* sqrt:                                  C++ Interface Floats.
-                                                              (line  90)
-* trunc:                                 C++ Interface Floats.
-                                                              (line  91)
-* xtom:                                  BSD Compatible Functions.
-                                                              (line  34)
-
-
diff --git a/misc/builddeps/win64/sdl/bin/sdl2-config b/misc/builddeps/win64/sdl/bin/sdl2-config
deleted file mode 100755 (executable)
index 2bbf13d..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/sh
-
-prefix=${0%/bin/sdl2-config}
-exec_prefix=${prefix}
-exec_prefix_set=no
-libdir=${exec_prefix}/lib
-
-#usage="\
-#Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]"
-usage="\
-Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs] [--static-libs]"
-
-if test $# -eq 0; then
-      echo "${usage}" 1>&2
-      exit 1
-fi
-
-while test $# -gt 0; do
-  case "$1" in
-  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) optarg= ;;
-  esac
-
-  case $1 in
-    --prefix=*)
-      prefix=$optarg
-      if test $exec_prefix_set = no ; then
-        exec_prefix=$optarg
-      fi
-      ;;
-    --prefix)
-      echo $prefix
-      ;;
-    --exec-prefix=*)
-      exec_prefix=$optarg
-      exec_prefix_set=yes
-      ;;
-    --exec-prefix)
-      echo $exec_prefix
-      ;;
-    --version)
-      echo 2.0.10
-      ;;
-    --cflags)
-      echo -I${prefix}/include/SDL2  -Dmain=SDL_main
-      ;;
-#    --libs)
-#      echo -L${exec_prefix}/lib  -lmingw32 -lSDL2main -lSDL2 -mwindows
-#      ;;
-#    --static-libs)
-    --libs|--static-libs)
-      echo -L${exec_prefix}/lib  -lmingw32 -lSDL2main -lSDL2 -mwindows  -Wl,--no-undefined -Wl,--dynamicbase -Wl,--nxcompat -Wl,--high-entropy-va -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid -static-libgcc
-      ;;
-    *)
-      echo "${usage}" 1>&2
-      exit 1
-      ;;
-  esac
-  shift
-done
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL.h b/misc/builddeps/win64/sdl/include/SDL2/SDL.h
deleted file mode 100644 (file)
index 88dce0c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL.h
- *
- *  Main include header for the SDL library
- */
-
-
-#ifndef SDL_h_
-#define SDL_h_
-
-#include "SDL_main.h"
-#include "SDL_stdinc.h"
-#include "SDL_assert.h"
-#include "SDL_atomic.h"
-#include "SDL_audio.h"
-#include "SDL_clipboard.h"
-#include "SDL_cpuinfo.h"
-#include "SDL_endian.h"
-#include "SDL_error.h"
-#include "SDL_events.h"
-#include "SDL_filesystem.h"
-#include "SDL_gamecontroller.h"
-#include "SDL_haptic.h"
-#include "SDL_hints.h"
-#include "SDL_joystick.h"
-#include "SDL_loadso.h"
-#include "SDL_log.h"
-#include "SDL_messagebox.h"
-#include "SDL_mutex.h"
-#include "SDL_power.h"
-#include "SDL_render.h"
-#include "SDL_rwops.h"
-#include "SDL_sensor.h"
-#include "SDL_shape.h"
-#include "SDL_system.h"
-#include "SDL_thread.h"
-#include "SDL_timer.h"
-#include "SDL_version.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* As of version 0.5, SDL is loaded dynamically into the application */
-
-/**
- *  \name SDL_INIT_*
- *
- *  These are the flags which may be passed to SDL_Init().  You should
- *  specify the subsystems which you will be using in your application.
- */
-/* @{ */
-#define SDL_INIT_TIMER          0x00000001u
-#define SDL_INIT_AUDIO          0x00000010u
-#define SDL_INIT_VIDEO          0x00000020u  /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
-#define SDL_INIT_JOYSTICK       0x00000200u  /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
-#define SDL_INIT_HAPTIC         0x00001000u
-#define SDL_INIT_GAMECONTROLLER 0x00002000u  /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
-#define SDL_INIT_EVENTS         0x00004000u
-#define SDL_INIT_SENSOR         0x00008000u
-#define SDL_INIT_NOPARACHUTE    0x00100000u  /**< compatibility; this flag is ignored. */
-#define SDL_INIT_EVERYTHING ( \
-                SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
-                SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \
-            )
-/* @} */
-
-/**
- *  This function initializes  the subsystems specified by \c flags
- */
-extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
-
-/**
- *  This function initializes specific SDL subsystems
- *
- *  Subsystem initialization is ref-counted, you must call
- *  SDL_QuitSubSystem() for each SDL_InitSubSystem() to correctly
- *  shutdown a subsystem manually (or call SDL_Quit() to force shutdown).
- *  If a subsystem is already loaded then this call will
- *  increase the ref-count and return.
- */
-extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);
-
-/**
- *  This function cleans up specific SDL subsystems
- */
-extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
-
-/**
- *  This function returns a mask of the specified subsystems which have
- *  previously been initialized.
- *
- *  If \c flags is 0, it returns a mask of all initialized subsystems.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);
-
-/**
- *  This function cleans up all initialized subsystems. You should
- *  call it upon all exit conditions.
- */
-extern DECLSPEC void SDLCALL SDL_Quit(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_assert.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_assert.h
deleted file mode 100644 (file)
index 8baecb6..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_assert_h_
-#define SDL_assert_h_
-
-#include "SDL_config.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef SDL_ASSERT_LEVEL
-#ifdef SDL_DEFAULT_ASSERT_LEVEL
-#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL
-#elif defined(_DEBUG) || defined(DEBUG) || \
-      (defined(__GNUC__) && !defined(__OPTIMIZE__))
-#define SDL_ASSERT_LEVEL 2
-#else
-#define SDL_ASSERT_LEVEL 1
-#endif
-#endif /* SDL_ASSERT_LEVEL */
-
-/*
-These are macros and not first class functions so that the debugger breaks
-on the assertion line and not in some random guts of SDL, and so each
-assert can have unique static variables associated with it.
-*/
-
-#if defined(_MSC_VER)
-/* Don't include intrin.h here because it contains C++ code */
-    extern void __cdecl __debugbreak(void);
-    #define SDL_TriggerBreakpoint() __debugbreak()
-#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) )
-    #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" )
-#elif defined(__386__) && defined(__WATCOMC__)
-    #define SDL_TriggerBreakpoint() { _asm { int 0x03 } }
-#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__)
-    #include <signal.h>
-    #define SDL_TriggerBreakpoint() raise(SIGTRAP)
-#else
-    /* How do we trigger breakpoints on this platform? */
-    #define SDL_TriggerBreakpoint()
-#endif
-
-#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
-#   define SDL_FUNCTION __func__
-#elif ((__GNUC__ >= 2) || defined(_MSC_VER) || defined (__WATCOMC__))
-#   define SDL_FUNCTION __FUNCTION__
-#else
-#   define SDL_FUNCTION "???"
-#endif
-#define SDL_FILE    __FILE__
-#define SDL_LINE    __LINE__
-
-/*
-sizeof (x) makes the compiler still parse the expression even without
-assertions enabled, so the code is always checked at compile time, but
-doesn't actually generate code for it, so there are no side effects or
-expensive checks at run time, just the constant size of what x WOULD be,
-which presumably gets optimized out as unused.
-This also solves the problem of...
-
-    int somevalue = blah();
-    SDL_assert(somevalue == 1);
-
-...which would cause compiles to complain that somevalue is unused if we
-disable assertions.
-*/
-
-/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking
-    this condition isn't constant. And looks like an owl's face! */
-#ifdef _MSC_VER  /* stupid /W4 warnings. */
-#define SDL_NULL_WHILE_LOOP_CONDITION (0,0)
-#else
-#define SDL_NULL_WHILE_LOOP_CONDITION (0)
-#endif
-
-#define SDL_disabled_assert(condition) \
-    do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)
-
-typedef enum
-{
-    SDL_ASSERTION_RETRY,  /**< Retry the assert immediately. */
-    SDL_ASSERTION_BREAK,  /**< Make the debugger trigger a breakpoint. */
-    SDL_ASSERTION_ABORT,  /**< Terminate the program. */
-    SDL_ASSERTION_IGNORE,  /**< Ignore the assert. */
-    SDL_ASSERTION_ALWAYS_IGNORE  /**< Ignore the assert from now on. */
-} SDL_AssertState;
-
-typedef struct SDL_AssertData
-{
-    int always_ignore;
-    unsigned int trigger_count;
-    const char *condition;
-    const char *filename;
-    int linenum;
-    const char *function;
-    const struct SDL_AssertData *next;
-} SDL_AssertData;
-
-#if (SDL_ASSERT_LEVEL > 0)
-
-/* Never call this directly. Use the SDL_assert* macros. */
-extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
-                                                             const char *,
-                                                             const char *, int)
-#if defined(__clang__)
-#if __has_feature(attribute_analyzer_noreturn)
-/* this tells Clang's static analysis that we're a custom assert function,
-   and that the analyzer should assume the condition was always true past this
-   SDL_assert test. */
-   __attribute__((analyzer_noreturn))
-#endif
-#endif
-;
-
-/* the do {} while(0) avoids dangling else problems:
-    if (x) SDL_assert(y); else blah();
-       ... without the do/while, the "else" could attach to this macro's "if".
-   We try to handle just the minimum we need here in a macro...the loop,
-   the static vars, and break points. The heavy lifting is handled in
-   SDL_ReportAssertion(), in SDL_assert.c.
-*/
-#define SDL_enabled_assert(condition) \
-    do { \
-        while ( !(condition) ) { \
-            static struct SDL_AssertData sdl_assert_data = { \
-                0, 0, #condition, 0, 0, 0, 0 \
-            }; \
-            const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \
-            if (sdl_assert_state == SDL_ASSERTION_RETRY) { \
-                continue; /* go again. */ \
-            } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \
-                SDL_TriggerBreakpoint(); \
-            } \
-            break; /* not retrying. */ \
-        } \
-    } while (SDL_NULL_WHILE_LOOP_CONDITION)
-
-#endif  /* enabled assertions support code */
-
-/* Enable various levels of assertions. */
-#if SDL_ASSERT_LEVEL == 0   /* assertions disabled */
-#   define SDL_assert(condition) SDL_disabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_disabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 1  /* release settings. */
-#   define SDL_assert(condition) SDL_disabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 2  /* normal settings. */
-#   define SDL_assert(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 3  /* paranoid settings. */
-#   define SDL_assert(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)
-#else
-#   error Unknown assertion level.
-#endif
-
-/* this assertion is never disabled at any level. */
-#define SDL_assert_always(condition) SDL_enabled_assert(condition)
-
-
-typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
-                                 const SDL_AssertData* data, void* userdata);
-
-/**
- *  \brief Set an application-defined assertion handler.
- *
- *  This allows an app to show its own assertion UI and/or force the
- *  response to an assertion failure. If the app doesn't provide this, SDL
- *  will try to do the right thing, popping up a system-specific GUI dialog,
- *  and probably minimizing any fullscreen windows.
- *
- *  This callback may fire from any thread, but it runs wrapped in a mutex, so
- *  it will only fire from one thread at a time.
- *
- *  Setting the callback to NULL restores SDL's original internal handler.
- *
- *  This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
- *
- *  Return SDL_AssertState value of how to handle the assertion failure.
- *
- *  \param handler Callback function, called when an assertion fails.
- *  \param userdata A pointer passed to the callback as-is.
- */
-extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
-                                            SDL_AssertionHandler handler,
-                                            void *userdata);
-
-/**
- *  \brief Get the default assertion handler.
- *
- *  This returns the function pointer that is called by default when an
- *   assertion is triggered. This is an internal function provided by SDL,
- *   that is used for assertions when SDL_SetAssertionHandler() hasn't been
- *   used to provide a different function.
- *
- *  \return The default SDL_AssertionHandler that is called when an assert triggers.
- */
-extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);
-
-/**
- *  \brief Get the current assertion handler.
- *
- *  This returns the function pointer that is called when an assertion is
- *   triggered. This is either the value last passed to
- *   SDL_SetAssertionHandler(), or if no application-specified function is
- *   set, is equivalent to calling SDL_GetDefaultAssertionHandler().
- *
- *   \param puserdata Pointer to a void*, which will store the "userdata"
- *                    pointer that was passed to SDL_SetAssertionHandler().
- *                    This value will always be NULL for the default handler.
- *                    If you don't care about this data, it is safe to pass
- *                    a NULL pointer to this function to ignore it.
- *  \return The SDL_AssertionHandler that is called when an assert triggers.
- */
-extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);
-
-/**
- *  \brief Get a list of all assertion failures.
- *
- *  Get all assertions triggered since last call to SDL_ResetAssertionReport(),
- *  or the start of the program.
- *
- *  The proper way to examine this data looks something like this:
- *
- *  <code>
- *  const SDL_AssertData *item = SDL_GetAssertionReport();
- *  while (item) {
- *      printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n",
- *             item->condition, item->function, item->filename,
- *             item->linenum, item->trigger_count,
- *             item->always_ignore ? "yes" : "no");
- *      item = item->next;
- *  }
- *  </code>
- *
- *  \return List of all assertions.
- *  \sa SDL_ResetAssertionReport
- */
-extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void);
-
-/**
- *  \brief Reset the list of all assertion failures.
- *
- *  Reset list of all assertions triggered.
- *
- *  \sa SDL_GetAssertionReport
- */
-extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);
-
-
-/* these had wrong naming conventions until 2.0.4. Please update your app! */
-#define SDL_assert_state SDL_AssertState
-#define SDL_assert_data SDL_AssertData
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_assert_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_atomic.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_atomic.h
deleted file mode 100644 (file)
index deee35f..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_atomic.h
- *
- * Atomic operations.
- *
- * IMPORTANT:
- * If you are not an expert in concurrent lockless programming, you should
- * only be using the atomic lock and reference counting functions in this
- * file.  In all other cases you should be protecting your data structures
- * with full mutexes.
- *
- * The list of "safe" functions to use are:
- *  SDL_AtomicLock()
- *  SDL_AtomicUnlock()
- *  SDL_AtomicIncRef()
- *  SDL_AtomicDecRef()
- *
- * Seriously, here be dragons!
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- *
- * You can find out a little more about lockless programming and the
- * subtle issues that can arise here:
- * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx
- *
- * There's also lots of good information here:
- * http://www.1024cores.net/home/lock-free-algorithms
- * http://preshing.com/
- *
- * These operations may or may not actually be implemented using
- * processor specific atomic operations. When possible they are
- * implemented as true processor specific atomic operations. When that
- * is not possible the are implemented using locks that *do* use the
- * available atomic operations.
- *
- * All of the atomic operations that modify memory are full memory barriers.
- */
-
-#ifndef SDL_atomic_h_
-#define SDL_atomic_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_platform.h"
-
-#include "begin_code.h"
-
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \name SDL AtomicLock
- *
- * The atomic locks are efficient spinlocks using CPU instructions,
- * but are vulnerable to starvation and can spin forever if a thread
- * holding a lock has been terminated.  For this reason you should
- * minimize the code executed inside an atomic lock and never do
- * expensive things like API or system calls while holding them.
- *
- * The atomic locks are not safe to lock recursively.
- *
- * Porting Note:
- * The spin lock functions and type are required and can not be
- * emulated because they are used in the atomic emulation code.
- */
-/* @{ */
-
-typedef int SDL_SpinLock;
-
-/**
- * \brief Try to lock a spin lock by setting it to a non-zero value.
- *
- * \param lock Points to the lock.
- *
- * \return SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already held.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock);
-
-/**
- * \brief Lock a spin lock by setting it to a non-zero value.
- *
- * \param lock Points to the lock.
- */
-extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock);
-
-/**
- * \brief Unlock a spin lock by setting it to 0. Always returns immediately
- *
- * \param lock Points to the lock.
- */
-extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock);
-
-/* @} *//* SDL AtomicLock */
-
-
-/**
- * The compiler barrier prevents the compiler from reordering
- * reads and writes to globally visible variables across the call.
- */
-#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__)
-void _ReadWriteBarrier(void);
-#pragma intrinsic(_ReadWriteBarrier)
-#define SDL_CompilerBarrier()   _ReadWriteBarrier()
-#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
-/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */
-#define SDL_CompilerBarrier()   __asm__ __volatile__ ("" : : : "memory")
-#elif defined(__WATCOMC__)
-extern _inline void SDL_CompilerBarrier (void);
-#pragma aux SDL_CompilerBarrier = "" parm [] modify exact [];
-#else
-#define SDL_CompilerBarrier()   \
-{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); }
-#endif
-
-/**
- * Memory barriers are designed to prevent reads and writes from being
- * reordered by the compiler and being seen out of order on multi-core CPUs.
- *
- * A typical pattern would be for thread A to write some data and a flag,
- * and for thread B to read the flag and get the data. In this case you
- * would insert a release barrier between writing the data and the flag,
- * guaranteeing that the data write completes no later than the flag is
- * written, and you would insert an acquire barrier between reading the
- * flag and reading the data, to ensure that all the reads associated
- * with the flag have completed.
- *
- * In this pattern you should always see a release barrier paired with
- * an acquire barrier and you should gate the data reads/writes with a
- * single flag variable.
- *
- * For more information on these semantics, take a look at the blog post:
- * http://preshing.com/20120913/acquire-and-release-semantics
- */
-extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void);
-extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
-
-#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("lwsync" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("lwsync" : : : "memory")
-#elif defined(__GNUC__) && defined(__aarch64__)
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#elif defined(__GNUC__) && defined(__arm__)
-#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */
-/* Information from:
-   https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19
-
-   The Linux kernel provides a helper function which provides the right code for a memory barrier,
-   hard-coded at address 0xffff0fa0
-*/
-typedef void (*SDL_KernelMemoryBarrierFunc)();
-#define SDL_MemoryBarrierRelease()     ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
-#define SDL_MemoryBarrierAcquire()     ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
-#elif 0 /* defined(__QNXNTO__) */
-#include <sys/cpuinline.h>
-
-#define SDL_MemoryBarrierRelease()   __cpu_membarrier()
-#define SDL_MemoryBarrierAcquire()   __cpu_membarrier()
-#else
-#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__)
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__)
-#ifdef __thumb__
-/* The mcr instruction isn't available in thumb mode, use real functions */
-#define SDL_MEMORY_BARRIER_USES_FUNCTION
-#define SDL_MemoryBarrierRelease()   SDL_MemoryBarrierReleaseFunction()
-#define SDL_MemoryBarrierAcquire()   SDL_MemoryBarrierAcquireFunction()
-#else
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
-#endif /* __thumb__ */
-#else
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("" : : : "memory")
-#endif /* __LINUX__ || __ANDROID__ */
-#endif /* __GNUC__ && __arm__ */
-#else
-#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
-/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */
-#include <mbarrier.h>
-#define SDL_MemoryBarrierRelease()  __machine_rel_barrier()
-#define SDL_MemoryBarrierAcquire()  __machine_acq_barrier()
-#else
-/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */
-#define SDL_MemoryBarrierRelease()  SDL_CompilerBarrier()
-#define SDL_MemoryBarrierAcquire()  SDL_CompilerBarrier()
-#endif
-#endif
-
-/**
- * \brief A type representing an atomic integer value.  It is a struct
- *        so people don't accidentally use numeric operations on it.
- */
-typedef struct { int value; } SDL_atomic_t;
-
-/**
- * \brief Set an atomic variable to a new value if it is currently an old value.
- *
- * \return SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.
- *
- * \note If you don't know what this function is for, you shouldn't use it!
-*/
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval);
-
-/**
- * \brief Set an atomic variable to a value.
- *
- * \return The previous value of the atomic variable.
- */
-extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);
-
-/**
- * \brief Get the value of an atomic variable
- */
-extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);
-
-/**
- * \brief Add to an atomic variable.
- *
- * \return The previous value of the atomic variable.
- *
- * \note This same style can be used for any number operation
- */
-extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
-
-/**
- * \brief Increment an atomic variable used as a reference count.
- */
-#ifndef SDL_AtomicIncRef
-#define SDL_AtomicIncRef(a)    SDL_AtomicAdd(a, 1)
-#endif
-
-/**
- * \brief Decrement an atomic variable used as a reference count.
- *
- * \return SDL_TRUE if the variable reached zero after decrementing,
- *         SDL_FALSE otherwise
- */
-#ifndef SDL_AtomicDecRef
-#define SDL_AtomicDecRef(a)    (SDL_AtomicAdd(a, -1) == 1)
-#endif
-
-/**
- * \brief Set a pointer to a new value if it is currently an old value.
- *
- * \return SDL_TRUE if the pointer was set, SDL_FALSE otherwise.
- *
- * \note If you don't know what this function is for, you shouldn't use it!
-*/
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval);
-
-/**
- * \brief Set a pointer to a value atomically.
- *
- * \return The previous value of the pointer.
- */
-extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);
-
-/**
- * \brief Get the value of a pointer atomically.
- */
-extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-
-#include "close_code.h"
-
-#endif /* SDL_atomic_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_audio.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_audio.h
deleted file mode 100644 (file)
index 305c01a..0000000
+++ /dev/null
@@ -1,859 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_audio.h
- *
- *  Access to the raw audio mixing buffer for the SDL library.
- */
-
-#ifndef SDL_audio_h_
-#define SDL_audio_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_endian.h"
-#include "SDL_mutex.h"
-#include "SDL_thread.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Audio format flags.
- *
- *  These are what the 16 bits in SDL_AudioFormat currently mean...
- *  (Unspecified bits are always zero).
- *
- *  \verbatim
-    ++-----------------------sample is signed if set
-    ||
-    ||       ++-----------sample is bigendian if set
-    ||       ||
-    ||       ||          ++---sample is float if set
-    ||       ||          ||
-    ||       ||          || +---sample bit size---+
-    ||       ||          || |                     |
-    15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
-    \endverbatim
- *
- *  There are macros in SDL 2.0 and later to query these bits.
- */
-typedef Uint16 SDL_AudioFormat;
-
-/**
- *  \name Audio flags
- */
-/* @{ */
-
-#define SDL_AUDIO_MASK_BITSIZE       (0xFF)
-#define SDL_AUDIO_MASK_DATATYPE      (1<<8)
-#define SDL_AUDIO_MASK_ENDIAN        (1<<12)
-#define SDL_AUDIO_MASK_SIGNED        (1<<15)
-#define SDL_AUDIO_BITSIZE(x)         (x & SDL_AUDIO_MASK_BITSIZE)
-#define SDL_AUDIO_ISFLOAT(x)         (x & SDL_AUDIO_MASK_DATATYPE)
-#define SDL_AUDIO_ISBIGENDIAN(x)     (x & SDL_AUDIO_MASK_ENDIAN)
-#define SDL_AUDIO_ISSIGNED(x)        (x & SDL_AUDIO_MASK_SIGNED)
-#define SDL_AUDIO_ISINT(x)           (!SDL_AUDIO_ISFLOAT(x))
-#define SDL_AUDIO_ISLITTLEENDIAN(x)  (!SDL_AUDIO_ISBIGENDIAN(x))
-#define SDL_AUDIO_ISUNSIGNED(x)      (!SDL_AUDIO_ISSIGNED(x))
-
-/**
- *  \name Audio format flags
- *
- *  Defaults to LSB byte order.
- */
-/* @{ */
-#define AUDIO_U8        0x0008  /**< Unsigned 8-bit samples */
-#define AUDIO_S8        0x8008  /**< Signed 8-bit samples */
-#define AUDIO_U16LSB    0x0010  /**< Unsigned 16-bit samples */
-#define AUDIO_S16LSB    0x8010  /**< Signed 16-bit samples */
-#define AUDIO_U16MSB    0x1010  /**< As above, but big-endian byte order */
-#define AUDIO_S16MSB    0x9010  /**< As above, but big-endian byte order */
-#define AUDIO_U16       AUDIO_U16LSB
-#define AUDIO_S16       AUDIO_S16LSB
-/* @} */
-
-/**
- *  \name int32 support
- */
-/* @{ */
-#define AUDIO_S32LSB    0x8020  /**< 32-bit integer samples */
-#define AUDIO_S32MSB    0x9020  /**< As above, but big-endian byte order */
-#define AUDIO_S32       AUDIO_S32LSB
-/* @} */
-
-/**
- *  \name float32 support
- */
-/* @{ */
-#define AUDIO_F32LSB    0x8120  /**< 32-bit floating point samples */
-#define AUDIO_F32MSB    0x9120  /**< As above, but big-endian byte order */
-#define AUDIO_F32       AUDIO_F32LSB
-/* @} */
-
-/**
- *  \name Native audio byte ordering
- */
-/* @{ */
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-#define AUDIO_U16SYS    AUDIO_U16LSB
-#define AUDIO_S16SYS    AUDIO_S16LSB
-#define AUDIO_S32SYS    AUDIO_S32LSB
-#define AUDIO_F32SYS    AUDIO_F32LSB
-#else
-#define AUDIO_U16SYS    AUDIO_U16MSB
-#define AUDIO_S16SYS    AUDIO_S16MSB
-#define AUDIO_S32SYS    AUDIO_S32MSB
-#define AUDIO_F32SYS    AUDIO_F32MSB
-#endif
-/* @} */
-
-/**
- *  \name Allow change flags
- *
- *  Which audio format changes are allowed when opening a device.
- */
-/* @{ */
-#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE    0x00000001
-#define SDL_AUDIO_ALLOW_FORMAT_CHANGE       0x00000002
-#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE     0x00000004
-#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE      0x00000008
-#define SDL_AUDIO_ALLOW_ANY_CHANGE          (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE)
-/* @} */
-
-/* @} *//* Audio flags */
-
-/**
- *  This function is called when the audio device needs more data.
- *
- *  \param userdata An application-specific parameter saved in
- *                  the SDL_AudioSpec structure
- *  \param stream A pointer to the audio data buffer.
- *  \param len    The length of that buffer in bytes.
- *
- *  Once the callback returns, the buffer will no longer be valid.
- *  Stereo samples are stored in a LRLRLR ordering.
- *
- *  You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
- *  you like. Just open your audio device with a NULL callback.
- */
-typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
-                                            int len);
-
-/**
- *  The calculated values in this structure are calculated by SDL_OpenAudio().
- *
- *  For multi-channel audio, the default SDL channel mapping is:
- *  2:  FL FR                       (stereo)
- *  3:  FL FR LFE                   (2.1 surround)
- *  4:  FL FR BL BR                 (quad)
- *  5:  FL FR FC BL BR              (quad + center)
- *  6:  FL FR FC LFE SL SR          (5.1 surround - last two can also be BL BR)
- *  7:  FL FR FC LFE BC SL SR       (6.1 surround)
- *  8:  FL FR FC LFE BL BR SL SR    (7.1 surround)
- */
-typedef struct SDL_AudioSpec
-{
-    int freq;                   /**< DSP frequency -- samples per second */
-    SDL_AudioFormat format;     /**< Audio data format */
-    Uint8 channels;             /**< Number of channels: 1 mono, 2 stereo */
-    Uint8 silence;              /**< Audio buffer silence value (calculated) */
-    Uint16 samples;             /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */
-    Uint16 padding;             /**< Necessary for some compile environments */
-    Uint32 size;                /**< Audio buffer size in bytes (calculated) */
-    SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
-    void *userdata;             /**< Userdata passed to callback (ignored for NULL callbacks). */
-} SDL_AudioSpec;
-
-
-struct SDL_AudioCVT;
-typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
-                                          SDL_AudioFormat format);
-
-/**
- *  \brief Upper limit of filters in SDL_AudioCVT
- *
- *  The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is
- *  currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers,
- *  one of which is the terminating NULL pointer.
- */
-#define SDL_AUDIOCVT_MAX_FILTERS 9
-
-/**
- *  \struct SDL_AudioCVT
- *  \brief A structure to hold a set of audio conversion filters and buffers.
- *
- *  Note that various parts of the conversion pipeline can take advantage
- *  of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require
- *  you to pass it aligned data, but can possibly run much faster if you
- *  set both its (buf) field to a pointer that is aligned to 16 bytes, and its
- *  (len) field to something that's a multiple of 16, if possible.
- */
-#ifdef __GNUC__
-/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't
-   pad it out to 88 bytes to guarantee ABI compatibility between compilers.
-   vvv
-   The next time we rev the ABI, make sure to size the ints and add padding.
-*/
-#define SDL_AUDIOCVT_PACKED __attribute__((packed))
-#else
-#define SDL_AUDIOCVT_PACKED
-#endif
-/* */
-typedef struct SDL_AudioCVT
-{
-    int needed;                 /**< Set to 1 if conversion possible */
-    SDL_AudioFormat src_format; /**< Source audio format */
-    SDL_AudioFormat dst_format; /**< Target audio format */
-    double rate_incr;           /**< Rate conversion increment */
-    Uint8 *buf;                 /**< Buffer to hold entire audio data */
-    int len;                    /**< Length of original audio buffer */
-    int len_cvt;                /**< Length of converted audio buffer */
-    int len_mult;               /**< buffer must be len*len_mult big */
-    double len_ratio;           /**< Given len, final size is len*len_ratio */
-    SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */
-    int filter_index;           /**< Current audio conversion function */
-} SDL_AUDIOCVT_PACKED SDL_AudioCVT;
-
-
-/* Function prototypes */
-
-/**
- *  \name Driver discovery functions
- *
- *  These functions return the list of built in audio drivers, in the
- *  order that they are normally initialized by default.
- */
-/* @{ */
-extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
-extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
-/* @} */
-
-/**
- *  \name Initialization and cleanup
- *
- *  \internal These functions are used internally, and should not be used unless
- *            you have a specific need to specify the audio driver you want to
- *            use.  You should normally use SDL_Init() or SDL_InitSubSystem().
- */
-/* @{ */
-extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);
-extern DECLSPEC void SDLCALL SDL_AudioQuit(void);
-/* @} */
-
-/**
- *  This function returns the name of the current audio driver, or NULL
- *  if no driver has been initialized.
- */
-extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
-
-/**
- *  This function opens the audio device with the desired parameters, and
- *  returns 0 if successful, placing the actual hardware parameters in the
- *  structure pointed to by \c obtained.  If \c obtained is NULL, the audio
- *  data passed to the callback function will be guaranteed to be in the
- *  requested format, and will be automatically converted to the hardware
- *  audio format if necessary.  This function returns -1 if it failed
- *  to open the audio device, or couldn't set up the audio thread.
- *
- *  When filling in the desired audio spec structure,
- *    - \c desired->freq should be the desired audio frequency in samples-per-
- *      second.
- *    - \c desired->format should be the desired audio format.
- *    - \c desired->samples is the desired size of the audio buffer, in
- *      samples.  This number should be a power of two, and may be adjusted by
- *      the audio driver to a value more suitable for the hardware.  Good values
- *      seem to range between 512 and 8096 inclusive, depending on the
- *      application and CPU speed.  Smaller values yield faster response time,
- *      but can lead to underflow if the application is doing heavy processing
- *      and cannot fill the audio buffer in time.  A stereo sample consists of
- *      both right and left channels in LR ordering.
- *      Note that the number of samples is directly related to time by the
- *      following formula:  \code ms = (samples*1000)/freq \endcode
- *    - \c desired->size is the size in bytes of the audio buffer, and is
- *      calculated by SDL_OpenAudio().
- *    - \c desired->silence is the value used to set the buffer to silence,
- *      and is calculated by SDL_OpenAudio().
- *    - \c desired->callback should be set to a function that will be called
- *      when the audio device is ready for more data.  It is passed a pointer
- *      to the audio buffer, and the length in bytes of the audio buffer.
- *      This function usually runs in a separate thread, and so you should
- *      protect data structures that it accesses by calling SDL_LockAudio()
- *      and SDL_UnlockAudio() in your code. Alternately, you may pass a NULL
- *      pointer here, and call SDL_QueueAudio() with some frequency, to queue
- *      more audio samples to be played (or for capture devices, call
- *      SDL_DequeueAudio() with some frequency, to obtain audio samples).
- *    - \c desired->userdata is passed as the first parameter to your callback
- *      function. If you passed a NULL callback, this value is ignored.
- *
- *  The audio device starts out playing silence when it's opened, and should
- *  be enabled for playing by calling \c SDL_PauseAudio(0) when you are ready
- *  for your audio callback function to be called.  Since the audio driver
- *  may modify the requested size of the audio buffer, you should allocate
- *  any local mixing buffers after you open the audio device.
- */
-extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
-                                          SDL_AudioSpec * obtained);
-
-/**
- *  SDL Audio Device IDs.
- *
- *  A successful call to SDL_OpenAudio() is always device id 1, and legacy
- *  SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
- *  always returns devices >= 2 on success. The legacy calls are good both
- *  for backwards compatibility and when you don't care about multiple,
- *  specific, or capture devices.
- */
-typedef Uint32 SDL_AudioDeviceID;
-
-/**
- *  Get the number of available devices exposed by the current driver.
- *  Only valid after a successfully initializing the audio subsystem.
- *  Returns -1 if an explicit list of devices can't be determined; this is
- *  not an error. For example, if SDL is set up to talk to a remote audio
- *  server, it can't list every one available on the Internet, but it will
- *  still allow a specific host to be specified to SDL_OpenAudioDevice().
- *
- *  In many common cases, when this function returns a value <= 0, it can still
- *  successfully open the default device (NULL for first argument of
- *  SDL_OpenAudioDevice()).
- */
-extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);
-
-/**
- *  Get the human-readable name of a specific audio device.
- *  Must be a value between 0 and (number of audio devices-1).
- *  Only valid after a successfully initializing the audio subsystem.
- *  The values returned by this function reflect the latest call to
- *  SDL_GetNumAudioDevices(); recall that function to redetect available
- *  hardware.
- *
- *  The string returned by this function is UTF-8 encoded, read-only, and
- *  managed internally. You are not to free it. If you need to keep the
- *  string for any length of time, you should make your own copy of it, as it
- *  will be invalid next time any of several other SDL functions is called.
- */
-extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
-                                                           int iscapture);
-
-
-/**
- *  Open a specific audio device. Passing in a device name of NULL requests
- *  the most reasonable default (and is equivalent to calling SDL_OpenAudio()).
- *
- *  The device name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
- *  some drivers allow arbitrary and driver-specific strings, such as a
- *  hostname/IP address for a remote audio server, or a filename in the
- *  diskaudio driver.
- *
- *  \return 0 on error, a valid device ID that is >= 2 on success.
- *
- *  SDL_OpenAudio(), unlike this function, always acts on device ID 1.
- */
-extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(const char
-                                                              *device,
-                                                              int iscapture,
-                                                              const
-                                                              SDL_AudioSpec *
-                                                              desired,
-                                                              SDL_AudioSpec *
-                                                              obtained,
-                                                              int
-                                                              allowed_changes);
-
-
-
-/**
- *  \name Audio state
- *
- *  Get the current audio state.
- */
-/* @{ */
-typedef enum
-{
-    SDL_AUDIO_STOPPED = 0,
-    SDL_AUDIO_PLAYING,
-    SDL_AUDIO_PAUSED
-} SDL_AudioStatus;
-extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
-
-extern DECLSPEC SDL_AudioStatus SDLCALL
-SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
-/* @} *//* Audio State */
-
-/**
- *  \name Pause audio functions
- *
- *  These functions pause and unpause the audio callback processing.
- *  They should be called with a parameter of 0 after opening the audio
- *  device to start playing sound.  This is so you can safely initialize
- *  data for your callback function after opening the audio device.
- *  Silence will be written to the audio device during the pause.
- */
-/* @{ */
-extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
-extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
-                                                  int pause_on);
-/* @} *//* Pause audio functions */
-
-/**
- *  \brief Load the audio data of a WAVE file into memory
- *
- *  Loading a WAVE file requires \c src, \c spec, \c audio_buf and \c audio_len
- *  to be valid pointers. The entire data portion of the file is then loaded
- *  into memory and decoded if necessary.
- *
- *  If \c freesrc is non-zero, the data source gets automatically closed and
- *  freed before the function returns.
- *
- *  Supported are RIFF WAVE files with the formats PCM (8, 16, 24, and 32 bits),
- *  IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and A-law and
- *  Âµ-law (8 bits). Other formats are currently unsupported and cause an error.
- *
- *  If this function succeeds, the pointer returned by it is equal to \c spec
- *  and the pointer to the audio data allocated by the function is written to
- *  \c audio_buf and its length in bytes to \c audio_len. The \ref SDL_AudioSpec
- *  members \c freq, \c channels, and \c format are set to the values of the
- *  audio data in the buffer. The \c samples member is set to a sane default and
- *  all others are set to zero.
- *
- *  It's necessary to use SDL_FreeWAV() to free the audio data returned in
- *  \c audio_buf when it is no longer used.
- *
- *  Because of the underspecification of the Waveform format, there are many
- *  problematic files in the wild that cause issues with strict decoders. To
- *  provide compatibility with these files, this decoder is lenient in regards
- *  to the truncation of the file, the fact chunk, and the size of the RIFF
- *  chunk. The hints SDL_HINT_WAVE_RIFF_CHUNK_SIZE, SDL_HINT_WAVE_TRUNCATION,
- *  and SDL_HINT_WAVE_FACT_CHUNK can be used to tune the behavior of the
- *  loading process.
- *
- *  Any file that is invalid (due to truncation, corruption, or wrong values in
- *  the headers), too big, or unsupported causes an error. Additionally, any
- *  critical I/O error from the data source will terminate the loading process
- *  with an error. The function returns NULL on error and in all cases (with the
- *  exception of \c src being NULL), an appropriate error message will be set.
- *
- *  It is required that the data source supports seeking.
- *
- *  Example:
- *  \code
- *      SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...);
- *  \endcode
- *
- *  \param src The data source with the WAVE data
- *  \param freesrc A integer value that makes the function close the data source if non-zero
- *  \param spec A pointer filled with the audio format of the audio data
- *  \param audio_buf A pointer filled with the audio data allocated by the function
- *  \param audio_len A pointer filled with the length of the audio data buffer in bytes
- *  \return NULL on error, or non-NULL on success.
- */
-extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
-                                                      int freesrc,
-                                                      SDL_AudioSpec * spec,
-                                                      Uint8 ** audio_buf,
-                                                      Uint32 * audio_len);
-
-/**
- *  Loads a WAV from a file.
- *  Compatibility convenience function.
- */
-#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
-    SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
-
-/**
- *  This function frees data previously allocated with SDL_LoadWAV_RW()
- */
-extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
-
-/**
- *  This function takes a source format and rate and a destination format
- *  and rate, and initializes the \c cvt structure with information needed
- *  by SDL_ConvertAudio() to convert a buffer of audio data from one format
- *  to the other. An unsupported format causes an error and -1 will be returned.
- *
- *  \return 0 if no conversion is needed, 1 if the audio filter is set up,
- *  or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
-                                              SDL_AudioFormat src_format,
-                                              Uint8 src_channels,
-                                              int src_rate,
-                                              SDL_AudioFormat dst_format,
-                                              Uint8 dst_channels,
-                                              int dst_rate);
-
-/**
- *  Once you have initialized the \c cvt structure using SDL_BuildAudioCVT(),
- *  created an audio buffer \c cvt->buf, and filled it with \c cvt->len bytes of
- *  audio data in the source format, this function will convert it in-place
- *  to the desired format.
- *
- *  The data conversion may expand the size of the audio data, so the buffer
- *  \c cvt->buf should be allocated after the \c cvt structure is initialized by
- *  SDL_BuildAudioCVT(), and should be \c cvt->len*cvt->len_mult bytes long.
- *
- *  \return 0 on success or -1 if \c cvt->buf is NULL.
- */
-extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
-
-/* SDL_AudioStream is a new audio conversion interface.
-   The benefits vs SDL_AudioCVT:
-    - it can handle resampling data in chunks without generating
-      artifacts, when it doesn't have the complete buffer available.
-    - it can handle incoming data in any variable size.
-    - You push data as you have it, and pull it when you need it
- */
-/* this is opaque to the outside world. */
-struct _SDL_AudioStream;
-typedef struct _SDL_AudioStream SDL_AudioStream;
-
-/**
- *  Create a new audio stream
- *
- *  \param src_format The format of the source audio
- *  \param src_channels The number of channels of the source audio
- *  \param src_rate The sampling rate of the source audio
- *  \param dst_format The format of the desired audio output
- *  \param dst_channels The number of channels of the desired audio output
- *  \param dst_rate The sampling rate of the desired audio output
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format,
-                                           const Uint8 src_channels,
-                                           const int src_rate,
-                                           const SDL_AudioFormat dst_format,
-                                           const Uint8 dst_channels,
-                                           const int dst_rate);
-
-/**
- *  Add data to be converted/resampled to the stream
- *
- *  \param stream The stream the audio data is being added to
- *  \param buf A pointer to the audio data to add
- *  \param len The number of bytes to write to the stream
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len);
-
-/**
- *  Get converted/resampled data from the stream
- *
- *  \param stream The stream the audio is being requested from
- *  \param buf A buffer to fill with audio data
- *  \param len The maximum number of bytes to fill
- *  \return The number of bytes read from the stream, or -1 on error
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len);
-
-/**
- * Get the number of converted/resampled bytes available. The stream may be
- *  buffering data behind the scenes until it has enough to resample
- *  correctly, so this number might be lower than what you expect, or even
- *  be zero. Add more data or flush the stream if you need the data now.
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream);
-
-/**
- * Tell the stream that you're done sending data, and anything being buffered
- *  should be converted/resampled and made available immediately.
- *
- * It is legal to add more data to a stream after flushing, but there will
- *  be audio gaps in the output. Generally this is intended to signal the
- *  end of input, so the complete output becomes available.
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream);
-
-/**
- *  Clear any pending data in the stream without converting it
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream);
-
-/**
- * Free an audio stream
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- */
-extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream);
-
-#define SDL_MIX_MAXVOLUME 128
-/**
- *  This takes two audio buffers of the playing audio format and mixes
- *  them, performing addition, volume adjustment, and overflow clipping.
- *  The volume ranges from 0 - 128, and should be set to ::SDL_MIX_MAXVOLUME
- *  for full audio volume.  Note this does not change hardware volume.
- *  This is provided for convenience -- you can mix your own audio data.
- */
-extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
-                                          Uint32 len, int volume);
-
-/**
- *  This works like SDL_MixAudio(), but you specify the audio format instead of
- *  using the format of audio device 1. Thus it can be used when no audio
- *  device is open at all.
- */
-extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
-                                                const Uint8 * src,
-                                                SDL_AudioFormat format,
-                                                Uint32 len, int volume);
-
-/**
- *  Queue more audio on non-callback devices.
- *
- *  (If you are looking to retrieve queued audio from a non-callback capture
- *  device, you want SDL_DequeueAudio() instead. This will return -1 to
- *  signify an error if you use it with capture devices.)
- *
- *  SDL offers two ways to feed audio to the device: you can either supply a
- *  callback that SDL triggers with some frequency to obtain more audio
- *  (pull method), or you can supply no callback, and then SDL will expect
- *  you to supply data at regular intervals (push method) with this function.
- *
- *  There are no limits on the amount of data you can queue, short of
- *  exhaustion of address space. Queued data will drain to the device as
- *  necessary without further intervention from you. If the device needs
- *  audio but there is not enough queued, it will play silence to make up
- *  the difference. This means you will have skips in your audio playback
- *  if you aren't routinely queueing sufficient data.
- *
- *  This function copies the supplied data, so you are safe to free it when
- *  the function returns. This function is thread-safe, but queueing to the
- *  same device from two threads at once does not promise which buffer will
- *  be queued first.
- *
- *  You may not queue audio on a device that is using an application-supplied
- *  callback; doing so returns an error. You have to use the audio callback
- *  or queue audio with this function, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before queueing; SDL
- *  handles locking internally for this function.
- *
- *  \param dev The device ID to which we will queue audio.
- *  \param data The data to queue to the device for later playback.
- *  \param len The number of bytes (not samples!) to which (data) points.
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_GetQueuedAudioSize
- *  \sa SDL_ClearQueuedAudio
- */
-extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
-
-/**
- *  Dequeue more audio on non-callback devices.
- *
- *  (If you are looking to queue audio for output on a non-callback playback
- *  device, you want SDL_QueueAudio() instead. This will always return 0
- *  if you use it with playback devices.)
- *
- *  SDL offers two ways to retrieve audio from a capture device: you can
- *  either supply a callback that SDL triggers with some frequency as the
- *  device records more audio data, (push method), or you can supply no
- *  callback, and then SDL will expect you to retrieve data at regular
- *  intervals (pull method) with this function.
- *
- *  There are no limits on the amount of data you can queue, short of
- *  exhaustion of address space. Data from the device will keep queuing as
- *  necessary without further intervention from you. This means you will
- *  eventually run out of memory if you aren't routinely dequeueing data.
- *
- *  Capture devices will not queue data when paused; if you are expecting
- *  to not need captured audio for some length of time, use
- *  SDL_PauseAudioDevice() to stop the capture device from queueing more
- *  data. This can be useful during, say, level loading times. When
- *  unpaused, capture devices will start queueing data from that point,
- *  having flushed any capturable data available while paused.
- *
- *  This function is thread-safe, but dequeueing from the same device from
- *  two threads at once does not promise which thread will dequeued data
- *  first.
- *
- *  You may not dequeue audio from a device that is using an
- *  application-supplied callback; doing so returns an error. You have to use
- *  the audio callback, or dequeue audio with this function, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before queueing; SDL
- *  handles locking internally for this function.
- *
- *  \param dev The device ID from which we will dequeue audio.
- *  \param data A pointer into where audio data should be copied.
- *  \param len The number of bytes (not samples!) to which (data) points.
- *  \return number of bytes dequeued, which could be less than requested.
- *
- *  \sa SDL_GetQueuedAudioSize
- *  \sa SDL_ClearQueuedAudio
- */
-extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len);
-
-/**
- *  Get the number of bytes of still-queued audio.
- *
- *  For playback device:
- *
- *    This is the number of bytes that have been queued for playback with
- *    SDL_QueueAudio(), but have not yet been sent to the hardware. This
- *    number may shrink at any time, so this only informs of pending data.
- *
- *    Once we've sent it to the hardware, this function can not decide the
- *    exact byte boundary of what has been played. It's possible that we just
- *    gave the hardware several kilobytes right before you called this
- *    function, but it hasn't played any of it yet, or maybe half of it, etc.
- *
- *  For capture devices:
- *
- *    This is the number of bytes that have been captured by the device and
- *    are waiting for you to dequeue. This number may grow at any time, so
- *    this only informs of the lower-bound of available data.
- *
- *  You may not queue audio on a device that is using an application-supplied
- *  callback; calling this function on such a device always returns 0.
- *  You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use
- *  the audio callback, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before querying; SDL
- *  handles locking internally for this function.
- *
- *  \param dev The device ID of which we will query queued audio size.
- *  \return Number of bytes (not samples!) of queued audio.
- *
- *  \sa SDL_QueueAudio
- *  \sa SDL_ClearQueuedAudio
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
-
-/**
- *  Drop any queued audio data. For playback devices, this is any queued data
- *  still waiting to be submitted to the hardware. For capture devices, this
- *  is any data that was queued by the device that hasn't yet been dequeued by
- *  the application.
- *
- *  Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For
- *  playback devices, the hardware will start playing silence if more audio
- *  isn't queued. Unpaused capture devices will start filling the queue again
- *  as soon as they have more data available (which, depending on the state
- *  of the hardware and the thread, could be before this function call
- *  returns!).
- *
- *  This will not prevent playback of queued audio that's already been sent
- *  to the hardware, as we can not undo that, so expect there to be some
- *  fraction of a second of audio that might still be heard. This can be
- *  useful if you want to, say, drop any pending music during a level change
- *  in your game.
- *
- *  You may not queue audio on a device that is using an application-supplied
- *  callback; calling this function on such a device is always a no-op.
- *  You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use
- *  the audio callback, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before clearing the
- *  queue; SDL handles locking internally for this function.
- *
- *  This function always succeeds and thus returns void.
- *
- *  \param dev The device ID of which to clear the audio queue.
- *
- *  \sa SDL_QueueAudio
- *  \sa SDL_GetQueuedAudioSize
- */
-extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
-
-
-/**
- *  \name Audio lock functions
- *
- *  The lock manipulated by these functions protects the callback function.
- *  During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that
- *  the callback function is not running.  Do not call these from the callback
- *  function or you will cause deadlock.
- */
-/* @{ */
-extern DECLSPEC void SDLCALL SDL_LockAudio(void);
-extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
-extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
-extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
-/* @} *//* Audio lock functions */
-
-/**
- *  This function shuts down audio processing and closes the audio device.
- */
-extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
-extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_audio_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_bits.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_bits.h
deleted file mode 100644 (file)
index b116cc8..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_bits.h
- *
- *  Functions for fiddling with bits and bitmasks.
- */
-
-#ifndef SDL_bits_h_
-#define SDL_bits_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_bits.h
- */
-
-/**
- *  Get the index of the most significant bit. Result is undefined when called
- *  with 0. This operation can also be stated as "count leading zeroes" and
- *  "log base 2".
- *
- *  \return Index of the most significant bit, or -1 if the value is 0.
- */
-#if defined(__WATCOMC__) && defined(__386__)
-extern _inline int _SDL_clz_watcom (Uint32);
-#pragma aux _SDL_clz_watcom = \
-    "bsr eax, eax" \
-    "xor eax, 31" \
-    parm [eax] nomemory \
-    value [eax] \
-    modify exact [eax] nomemory;
-#endif
-
-SDL_FORCE_INLINE int
-SDL_MostSignificantBitIndex32(Uint32 x)
-{
-#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-    /* Count Leading Zeroes builtin in GCC.
-     * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html
-     */
-    if (x == 0) {
-        return -1;
-    }
-    return 31 - __builtin_clz(x);
-#elif defined(__WATCOMC__) && defined(__386__)
-    if (x == 0) {
-        return -1;
-    }
-    return 31 - _SDL_clz_watcom(x);
-#else
-    /* Based off of Bit Twiddling Hacks by Sean Eron Anderson
-     * <seander@cs.stanford.edu>, released in the public domain.
-     * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
-     */
-    const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
-    const int    S[] = {1, 2, 4, 8, 16};
-
-    int msbIndex = 0;
-    int i;
-
-    if (x == 0) {
-        return -1;
-    }
-
-    for (i = 4; i >= 0; i--)
-    {
-        if (x & b[i])
-        {
-            x >>= S[i];
-            msbIndex |= S[i];
-        }
-    }
-
-    return msbIndex;
-#endif
-}
-
-SDL_FORCE_INLINE SDL_bool
-SDL_HasExactlyOneBitSet32(Uint32 x)
-{
-    if (x && !(x & (x - 1))) {
-        return SDL_TRUE;
-    }
-    return SDL_FALSE;
-}
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_bits_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_blendmode.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_blendmode.h
deleted file mode 100644 (file)
index 6f0a22b..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_blendmode.h
- *
- *  Header file declaring the SDL_BlendMode enumeration
- */
-
-#ifndef SDL_blendmode_h_
-#define SDL_blendmode_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief The blend mode used in SDL_RenderCopy() and drawing operations.
- */
-typedef enum
-{
-    SDL_BLENDMODE_NONE = 0x00000000,     /**< no blending
-                                              dstRGBA = srcRGBA */
-    SDL_BLENDMODE_BLEND = 0x00000001,    /**< alpha blending
-                                              dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))
-                                              dstA = srcA + (dstA * (1-srcA)) */
-    SDL_BLENDMODE_ADD = 0x00000002,      /**< additive blending
-                                              dstRGB = (srcRGB * srcA) + dstRGB
-                                              dstA = dstA */
-    SDL_BLENDMODE_MOD = 0x00000004,      /**< color modulate
-                                              dstRGB = srcRGB * dstRGB
-                                              dstA = dstA */
-    SDL_BLENDMODE_INVALID = 0x7FFFFFFF
-
-    /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */
-
-} SDL_BlendMode;
-
-/**
- *  \brief The blend operation used when combining source and destination pixel components
- */
-typedef enum
-{
-    SDL_BLENDOPERATION_ADD              = 0x1,  /**< dst + src: supported by all renderers */
-    SDL_BLENDOPERATION_SUBTRACT         = 0x2,  /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
-    SDL_BLENDOPERATION_REV_SUBTRACT     = 0x3,  /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
-    SDL_BLENDOPERATION_MINIMUM          = 0x4,  /**< min(dst, src) : supported by D3D11 */
-    SDL_BLENDOPERATION_MAXIMUM          = 0x5   /**< max(dst, src) : supported by D3D11 */
-
-} SDL_BlendOperation;
-
-/**
- *  \brief The normalized factor used to multiply pixel components
- */
-typedef enum
-{
-    SDL_BLENDFACTOR_ZERO                = 0x1,  /**< 0, 0, 0, 0 */
-    SDL_BLENDFACTOR_ONE                 = 0x2,  /**< 1, 1, 1, 1 */
-    SDL_BLENDFACTOR_SRC_COLOR           = 0x3,  /**< srcR, srcG, srcB, srcA */
-    SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4,  /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */
-    SDL_BLENDFACTOR_SRC_ALPHA           = 0x5,  /**< srcA, srcA, srcA, srcA */
-    SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6,  /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */
-    SDL_BLENDFACTOR_DST_COLOR           = 0x7,  /**< dstR, dstG, dstB, dstA */
-    SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8,  /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */
-    SDL_BLENDFACTOR_DST_ALPHA           = 0x9,  /**< dstA, dstA, dstA, dstA */
-    SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA   /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */
-
-} SDL_BlendFactor;
-
-/**
- *  \brief Create a custom blend mode, which may or may not be supported by a given renderer
- *
- *  \param srcColorFactor source color factor
- *  \param dstColorFactor destination color factor
- *  \param colorOperation color operation
- *  \param srcAlphaFactor source alpha factor
- *  \param dstAlphaFactor destination alpha factor
- *  \param alphaOperation alpha operation
- *
- *  The result of the blend mode operation will be:
- *      dstRGB = dstRGB * dstColorFactor colorOperation srcRGB * srcColorFactor
- *  and
- *      dstA = dstA * dstAlphaFactor alphaOperation srcA * srcAlphaFactor
- */
-extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor,
-                                                                 SDL_BlendFactor dstColorFactor,
-                                                                 SDL_BlendOperation colorOperation,
-                                                                 SDL_BlendFactor srcAlphaFactor,
-                                                                 SDL_BlendFactor dstAlphaFactor,
-                                                                 SDL_BlendOperation alphaOperation);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_blendmode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_clipboard.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_clipboard.h
deleted file mode 100644 (file)
index c4f8766..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_clipboard.h
- *
- * Include file for SDL clipboard handling
- */
-
-#ifndef SDL_clipboard_h_
-#define SDL_clipboard_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-/**
- * \brief Put UTF-8 text into the clipboard
- *
- * \sa SDL_GetClipboardText()
- */
-extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text);
-
-/**
- * \brief Get UTF-8 text from the clipboard, which must be freed with SDL_free()
- *
- * \sa SDL_SetClipboardText()
- */
-extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void);
-
-/**
- * \brief Returns a flag indicating whether the clipboard exists and contains a text string that is non-empty
- *
- * \sa SDL_GetClipboardText()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_clipboard_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_config.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_config.h
deleted file mode 100644 (file)
index 395ad7c..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_config_windows_h_
-#define SDL_config_windows_h_
-#define SDL_config_h_
-
-#include "SDL_platform.h"
-
-/* This is a set of defines to configure the SDL features */
-
-#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
-#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
-#define HAVE_STDINT_H   1
-#elif defined(_MSC_VER)
-typedef signed __int8 int8_t;
-typedef unsigned __int8 uint8_t;
-typedef signed __int16 int16_t;
-typedef unsigned __int16 uint16_t;
-typedef signed __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef signed __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#ifndef _UINTPTR_T_DEFINED
-#ifdef  _WIN64
-typedef unsigned __int64 uintptr_t;
-#else
-typedef unsigned int uintptr_t;
-#endif
-#define _UINTPTR_T_DEFINED
-#endif
-/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
-#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
-#define DWORD_PTR DWORD
-#endif
-#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
-#define LONG_PTR LONG
-#endif
-#else /* !__GNUC__ && !_MSC_VER */
-typedef signed char int8_t;
-typedef unsigned char uint8_t;
-typedef signed short int16_t;
-typedef unsigned short uint16_t;
-typedef signed int int32_t;
-typedef unsigned int uint32_t;
-typedef signed long long int64_t;
-typedef unsigned long long uint64_t;
-#ifndef _SIZE_T_DEFINED_
-#define _SIZE_T_DEFINED_
-typedef unsigned int size_t;
-#endif
-typedef unsigned int uintptr_t;
-#endif /* __GNUC__ || _MSC_VER */
-#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
-
-#ifdef _WIN64
-# define SIZEOF_VOIDP 8
-#else
-# define SIZEOF_VOIDP 4
-#endif
-
-#define HAVE_DDRAW_H 1
-#define HAVE_DINPUT_H 1
-#define HAVE_DSOUND_H 1
-#define HAVE_DXGI_H 1
-#define HAVE_XINPUT_H 1
-#define HAVE_MMDEVICEAPI_H 1
-#define HAVE_AUDIOCLIENT_H 1
-#define HAVE_ENDPOINTVOLUME_H 1
-
-/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
-#ifdef HAVE_LIBC
-/* Useful headers */
-#define STDC_HEADERS 1
-#define HAVE_CTYPE_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_MATH_H 1
-#define HAVE_SIGNAL_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_STRING_H 1
-
-/* C library functions */
-#define HAVE_MALLOC 1
-#define HAVE_CALLOC 1
-#define HAVE_REALLOC 1
-#define HAVE_FREE 1
-#define HAVE_ALLOCA 1
-#define HAVE_QSORT 1
-#define HAVE_ABS 1
-#define HAVE_MEMSET 1
-#define HAVE_MEMCPY 1
-#define HAVE_MEMMOVE 1
-#define HAVE_MEMCMP 1
-#define HAVE_STRLEN 1
-#define HAVE__STRREV 1
-/* These functions have security warnings, so we won't use them */
-/* #undef HAVE__STRUPR */
-/* #undef HAVE__STRLWR */
-#define HAVE_STRCHR 1
-#define HAVE_STRRCHR 1
-#define HAVE_STRSTR 1
-/* These functions have security warnings, so we won't use them */
-/* #undef HAVE__LTOA */
-/* #undef HAVE__ULTOA */
-#define HAVE_STRTOL 1
-#define HAVE_STRTOUL 1
-#define HAVE_STRTOD 1
-#define HAVE_ATOI 1
-#define HAVE_ATOF 1
-#define HAVE_STRCMP 1
-#define HAVE_STRNCMP 1
-#define HAVE__STRICMP 1
-#define HAVE__STRNICMP 1
-#define HAVE_ACOS   1
-#define HAVE_ACOSF  1
-#define HAVE_ASIN   1
-#define HAVE_ASINF  1
-#define HAVE_ATAN   1
-#define HAVE_ATANF  1
-#define HAVE_ATAN2  1
-#define HAVE_ATAN2F 1
-#define HAVE_CEILF  1
-#define HAVE__COPYSIGN  1
-#define HAVE_COS    1
-#define HAVE_COSF   1
-#define HAVE_EXP    1
-#define HAVE_EXPF   1
-#define HAVE_FABS   1
-#define HAVE_FABSF  1
-#define HAVE_FLOOR  1
-#define HAVE_FLOORF 1
-#define HAVE_FMOD   1
-#define HAVE_FMODF  1
-#define HAVE_LOG    1
-#define HAVE_LOGF   1
-#define HAVE_LOG10  1
-#define HAVE_LOG10F 1
-#define HAVE_POW    1
-#define HAVE_POWF   1
-#define HAVE_SIN    1
-#define HAVE_SINF   1
-#define HAVE_SQRT   1
-#define HAVE_SQRTF  1
-#define HAVE_TAN    1
-#define HAVE_TANF   1
-#if defined(_MSC_VER)
-/* These functions were added with the VC++ 2013 C runtime library */
-#if _MSC_VER >= 1800
-#define HAVE_STRTOLL 1
-#define HAVE_VSSCANF 1
-#define HAVE_SCALBN 1
-#define HAVE_SCALBNF    1
-#endif
-/* This function is available with at least the VC++ 2008 C runtime library */
-#if _MSC_VER >= 1400
-#define HAVE__FSEEKI64 1
-#endif
-#endif
-#if !defined(_MSC_VER) || defined(_USE_MATH_DEFINES)
-#define HAVE_M_PI 1
-#endif
-#else
-#define HAVE_STDARG_H   1
-#define HAVE_STDDEF_H   1
-#endif
-
-/* Enable various audio drivers */
-#define SDL_AUDIO_DRIVER_WASAPI 1
-#define SDL_AUDIO_DRIVER_DSOUND 1
-#define SDL_AUDIO_DRIVER_WINMM  1
-#define SDL_AUDIO_DRIVER_DISK   1
-#define SDL_AUDIO_DRIVER_DUMMY  1
-
-/* Enable various input drivers */
-#define SDL_JOYSTICK_DINPUT 1
-#define SDL_JOYSTICK_XINPUT 1
-#define SDL_JOYSTICK_HIDAPI 1
-#define SDL_HAPTIC_DINPUT   1
-#define SDL_HAPTIC_XINPUT   1
-
-/* Enable the dummy sensor driver */
-#define SDL_SENSOR_DUMMY  1
-
-/* Enable various shared object loading systems */
-#define SDL_LOADSO_WINDOWS  1
-
-/* Enable various threading systems */
-#define SDL_THREAD_WINDOWS  1
-
-/* Enable various timer systems */
-#define SDL_TIMER_WINDOWS   1
-
-/* Enable various video drivers */
-#define SDL_VIDEO_DRIVER_DUMMY  1
-#define SDL_VIDEO_DRIVER_WINDOWS    1
-
-#ifndef SDL_VIDEO_RENDER_D3D
-#define SDL_VIDEO_RENDER_D3D    1
-#endif
-#ifndef SDL_VIDEO_RENDER_D3D11
-#define SDL_VIDEO_RENDER_D3D11  0
-#endif
-
-/* Enable OpenGL support */
-#ifndef SDL_VIDEO_OPENGL
-#define SDL_VIDEO_OPENGL    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_WGL
-#define SDL_VIDEO_OPENGL_WGL    1
-#endif
-#ifndef SDL_VIDEO_RENDER_OGL
-#define SDL_VIDEO_RENDER_OGL    1
-#endif
-#ifndef SDL_VIDEO_RENDER_OGL_ES2
-#define SDL_VIDEO_RENDER_OGL_ES2    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_ES2
-#define SDL_VIDEO_OPENGL_ES2    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_EGL
-#define SDL_VIDEO_OPENGL_EGL    1
-#endif
-
-/* Enable Vulkan support */
-#define SDL_VIDEO_VULKAN 1
-
-/* Enable system power support */
-#define SDL_POWER_WINDOWS 1
-
-/* Enable filesystem support */
-#define SDL_FILESYSTEM_WINDOWS  1
-
-/* Enable assembly routines (Win64 doesn't have inline asm) */
-#ifndef _WIN64
-#define SDL_ASSEMBLY_ROUTINES   1
-#endif
-
-#endif /* SDL_config_windows_h_ */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_cpuinfo.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_cpuinfo.h
deleted file mode 100644 (file)
index 296df01..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_cpuinfo.h
- *
- *  CPU feature detection for SDL.
- */
-
-#ifndef SDL_cpuinfo_h_
-#define SDL_cpuinfo_h_
-
-#include "SDL_stdinc.h"
-
-/* Need to do this here because intrin.h has C++ code in it */
-/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64))
-#ifdef __clang__
-/* Many of the intrinsics SDL uses are not implemented by clang with Visual Studio */
-#undef __MMX__
-#undef __SSE__
-#undef __SSE2__
-#else
-#include <intrin.h>
-#ifndef _WIN64
-#ifndef __MMX__
-#define __MMX__
-#endif
-#ifndef __3dNOW__
-#define __3dNOW__
-#endif
-#endif
-#ifndef __SSE__
-#define __SSE__
-#endif
-#ifndef __SSE2__
-#define __SSE2__
-#endif
-#endif /* __clang__ */
-#elif defined(__MINGW64_VERSION_MAJOR)
-#include <intrin.h>
-#else
-/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */
-#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H)
-#include <altivec.h>
-#endif
-#if !defined(SDL_DISABLE_ARM_NEON_H)
-#  if defined(__ARM_NEON)
-#    include <arm_neon.h>
-#  elif defined(__WINDOWS__) || defined(__WINRT__)
-/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */
-#    if defined(_M_ARM)
-#      include <armintr.h>
-#      include <arm_neon.h>
-#      define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
-#    endif
-#    if defined (_M_ARM64)
-#      include <armintr.h>
-#      include <arm_neon.h>
-#      define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
-#    endif
-#  endif
-#endif
-#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H)
-#include <mm3dnow.h>
-#endif
-#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H)
-#include <immintrin.h>
-#else
-#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H)
-#include <mmintrin.h>
-#endif
-#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H)
-#include <xmmintrin.h>
-#endif
-#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H)
-#include <emmintrin.h>
-#endif
-#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H)
-#include <pmmintrin.h>
-#endif
-#endif /* HAVE_IMMINTRIN_H */
-#endif /* compiler version */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This is a guess for the cacheline size used for padding.
- * Most x86 processors have a 64 byte cache line.
- * The 64-bit PowerPC processors have a 128 byte cache line.
- * We'll use the larger value to be generally safe.
- */
-#define SDL_CACHELINE_SIZE  128
-
-/**
- *  This function returns the number of CPU cores available.
- */
-extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
-
-/**
- *  This function returns the L1 cache line size of the CPU
- *
- *  This is useful for determining multi-threaded structure padding
- *  or SIMD prefetch sizes.
- */
-extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
-
-/**
- *  This function returns true if the CPU has the RDTSC instruction.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
-
-/**
- *  This function returns true if the CPU has AltiVec features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
-
-/**
- *  This function returns true if the CPU has MMX features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
-
-/**
- *  This function returns true if the CPU has 3DNow! features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);
-
-/**
- *  This function returns true if the CPU has SSE features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
-
-/**
- *  This function returns true if the CPU has SSE2 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
-
-/**
- *  This function returns true if the CPU has SSE3 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
-
-/**
- *  This function returns true if the CPU has SSE4.1 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
-
-/**
- *  This function returns true if the CPU has SSE4.2 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
-
-/**
- *  This function returns true if the CPU has AVX features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);
-
-/**
- *  This function returns true if the CPU has AVX2 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void);
-
-/**
- *  This function returns true if the CPU has AVX-512F (foundation) features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void);
-
-/**
- *  This function returns true if the CPU has NEON (ARM SIMD) features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void);
-
-/**
- *  This function returns the amount of RAM configured in the system, in MB.
- */
-extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
-
-/**
- * \brief Report the alignment this system needs for SIMD allocations.
- *
- * This will return the minimum number of bytes to which a pointer must be
- *  aligned to be compatible with SIMD instructions on the current machine.
- *  For example, if the machine supports SSE only, it will return 16, but if
- *  it supports AVX-512F, it'll return 64 (etc). This only reports values for
- *  instruction sets SDL knows about, so if your SDL build doesn't have
- *  SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and
- *  not 64 for the AVX-512 instructions that exist but SDL doesn't know about.
- *  Plan accordingly.
- */
-extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
-
-/**
- * \brief Allocate memory in a SIMD-friendly way.
- *
- * This will allocate a block of memory that is suitable for use with SIMD
- *  instructions. Specifically, it will be properly aligned and padded for
- *  the system's supported vector instructions.
- *
- * The memory returned will be padded such that it is safe to read or write
- *  an incomplete vector at the end of the memory block. This can be useful
- *  so you don't have to drop back to a scalar fallback at the end of your
- *  SIMD processing loop to deal with the final elements without overflowing
- *  the allocated buffer.
- *
- * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free()
- *  or delete[], etc.
- *
- * Note that SDL will only deal with SIMD instruction sets it is aware of;
- *  for example, SDL 2.0.8 knows that SSE wants 16-byte vectors
- *  (SDL_HasSSE()), and AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't
- *  know that AVX-512 wants 64. To be clear: if you can't decide to use an
- *  instruction set with an SDL_Has*() function, don't use that instruction
- *  set with memory allocated through here.
- *
- * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't
- *  out of memory.
- *
- *  \param len The length, in bytes, of the block to allocated. The actual
- *             allocated block might be larger due to padding, etc.
- * \return Pointer to newly-allocated block, NULL if out of memory.
- *
- * \sa SDL_SIMDAlignment
- * \sa SDL_SIMDFree
- */
-extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len);
-
-/**
- * \brief Deallocate memory obtained from SDL_SIMDAlloc
- *
- * It is not valid to use this function on a pointer from anything but
- *  SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc,
- *  SDL_malloc, memalign, new[], etc.
- *
- * However, SDL_SIMDFree(NULL) is a legal no-op.
- *
- * \sa SDL_SIMDAlloc
- */
-extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr);
-
-/* vi: set ts=4 sw=4 expandtab: */
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_cpuinfo_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_egl.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_egl.h
deleted file mode 100644 (file)
index f50fa5c..0000000
+++ /dev/null
@@ -1,1673 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_egl.h
- *
- *  This is a simple file to encapsulate the EGL API headers.
- */
-#if !defined(_MSC_VER) && !defined(__ANDROID__)
-
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-
-#else /* _MSC_VER */
-
-/* EGL headers for Visual Studio */
-
-#ifndef __khrplatform_h_
-#define __khrplatform_h_
-
-/*
-** Copyright (c) 2008-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Khronos platform-specific types and definitions.
-*
-* $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
-*
-* Adopters may modify this file to suit their platform. Adopters are
-* encouraged to submit platform specific modifications to the Khronos
-* group so that they can be included in future versions of this file.
-* Please submit changes by sending them to the public Khronos Bugzilla
-* (http://khronos.org/bugzilla) by filing a bug against product
-* "Khronos (general)" component "Registry".
-*
-* A predefined template which fills in some of the bug fields can be
-* reached using http://tinyurl.com/khrplatform-h-bugreport, but you
-* must create a Bugzilla login first.
-*
-*
-* See the Implementer's Guidelines for information about where this file
-* should be located on your system and for more details of its use:
-*    http://www.khronos.org/registry/implementers_guide.pdf
-*
-* This file should be included as
-*        #include <KHR/khrplatform.h>
-* by Khronos client API header files that use its types and defines.
-*
-* The types in khrplatform.h should only be used to define API-specific types.
-*
-* Types defined in khrplatform.h:
-*    khronos_int8_t              signed   8  bit
-*    khronos_uint8_t             unsigned 8  bit
-*    khronos_int16_t             signed   16 bit
-*    khronos_uint16_t            unsigned 16 bit
-*    khronos_int32_t             signed   32 bit
-*    khronos_uint32_t            unsigned 32 bit
-*    khronos_int64_t             signed   64 bit
-*    khronos_uint64_t            unsigned 64 bit
-*    khronos_intptr_t            signed   same number of bits as a pointer
-*    khronos_uintptr_t           unsigned same number of bits as a pointer
-*    khronos_ssize_t             signed   size
-*    khronos_usize_t             unsigned size
-*    khronos_float_t             signed   32 bit floating point
-*    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
-*    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
-*                                         nanoseconds
-*    khronos_stime_nanoseconds_t signed time interval in nanoseconds
-*    khronos_boolean_enum_t      enumerated boolean type. This should
-*      only be used as a base type when a client API's boolean type is
-*      an enum. Client APIs which use an integer or other type for
-*      booleans cannot use this as the base type for their boolean.
-*
-* Tokens defined in khrplatform.h:
-*
-*    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
-*
-*    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
-*    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
-*
-* Calling convention macros defined in this file:
-*    KHRONOS_APICALL
-*    KHRONOS_APIENTRY
-*    KHRONOS_APIATTRIBUTES
-*
-* These may be used in function prototypes as:
-*
-*      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
-*                                  int arg1,
-*                                  int arg2) KHRONOS_APIATTRIBUTES;
-*/
-
-/*-------------------------------------------------------------------------
-* Definition of KHRONOS_APICALL
-*-------------------------------------------------------------------------
-* This precedes the return type of the function in the function prototype.
-*/
-#if defined(_WIN32) && !defined(__SCITECH_SNAP__) && !defined(SDL_VIDEO_STATIC_ANGLE)
-#   define KHRONOS_APICALL __declspec(dllimport)
-#elif defined (__SYMBIAN32__)
-#   define KHRONOS_APICALL IMPORT_C
-#else
-#   define KHRONOS_APICALL
-#endif
-
-/*-------------------------------------------------------------------------
-* Definition of KHRONOS_APIENTRY
-*-------------------------------------------------------------------------
-* This follows the return type of the function  and precedes the function
-* name in the function prototype.
-*/
-#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
-/* Win32 but not WinCE */
-#   define KHRONOS_APIENTRY __stdcall
-#else
-#   define KHRONOS_APIENTRY
-#endif
-
-/*-------------------------------------------------------------------------
-* Definition of KHRONOS_APIATTRIBUTES
-*-------------------------------------------------------------------------
-* This follows the closing parenthesis of the function prototype arguments.
-*/
-#if defined (__ARMCC_2__)
-#define KHRONOS_APIATTRIBUTES __softfp
-#else
-#define KHRONOS_APIATTRIBUTES
-#endif
-
-/*-------------------------------------------------------------------------
-* basic type definitions
-*-----------------------------------------------------------------------*/
-#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
-
-
-/*
-* Using <stdint.h>
-*/
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__VMS ) || defined(__sgi)
-
-/*
-* Using <inttypes.h>
-*/
-#include <inttypes.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
-
-/*
-* Win32
-*/
-typedef __int32                 khronos_int32_t;
-typedef unsigned __int32        khronos_uint32_t;
-typedef __int64                 khronos_int64_t;
-typedef unsigned __int64        khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__sun__) || defined(__digital__)
-
-/*
-* Sun or Digital
-*/
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#if defined(__arch64__) || defined(_LP64)
-typedef long int                khronos_int64_t;
-typedef unsigned long int       khronos_uint64_t;
-#else
-typedef long long int           khronos_int64_t;
-typedef unsigned long long int  khronos_uint64_t;
-#endif /* __arch64__ */
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif 0
-
-/*
-* Hypothetical platform with no float or int64 support
-*/
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#define KHRONOS_SUPPORT_INT64   0
-#define KHRONOS_SUPPORT_FLOAT   0
-
-#else
-
-/*
-* Generic fallback
-*/
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#endif
-
-
-/*
-* Types that are (so far) the same on all platforms
-*/
-typedef signed   char          khronos_int8_t;
-typedef unsigned char          khronos_uint8_t;
-typedef signed   short int     khronos_int16_t;
-typedef unsigned short int     khronos_uint16_t;
-
-/*
-* Types that differ between LLP64 and LP64 architectures - in LLP64,
-* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
-* to be the only LLP64 architecture in current use.
-*/
-#ifdef _WIN64
-typedef signed   long long int khronos_intptr_t;
-typedef unsigned long long int khronos_uintptr_t;
-typedef signed   long long int khronos_ssize_t;
-typedef unsigned long long int khronos_usize_t;
-#else
-typedef signed   long  int     khronos_intptr_t;
-typedef unsigned long  int     khronos_uintptr_t;
-typedef signed   long  int     khronos_ssize_t;
-typedef unsigned long  int     khronos_usize_t;
-#endif
-
-#if KHRONOS_SUPPORT_FLOAT
-/*
-* Float type
-*/
-typedef          float         khronos_float_t;
-#endif
-
-#if KHRONOS_SUPPORT_INT64
-/* Time types
-*
-* These types can be used to represent a time interval in nanoseconds or
-* an absolute Unadjusted System Time.  Unadjusted System Time is the number
-* of nanoseconds since some arbitrary system event (e.g. since the last
-* time the system booted).  The Unadjusted System Time is an unsigned
-* 64 bit value that wraps back to 0 every 584 years.  Time intervals
-* may be either signed or unsigned.
-*/
-typedef khronos_uint64_t       khronos_utime_nanoseconds_t;
-typedef khronos_int64_t        khronos_stime_nanoseconds_t;
-#endif
-
-/*
-* Dummy value used to pad enum types to 32 bits.
-*/
-#ifndef KHRONOS_MAX_ENUM
-#define KHRONOS_MAX_ENUM 0x7FFFFFFF
-#endif
-
-/*
-* Enumerated boolean type
-*
-* Values other than zero should be considered to be true.  Therefore
-* comparisons should not be made against KHRONOS_TRUE.
-*/
-typedef enum {
-    KHRONOS_FALSE = 0,
-    KHRONOS_TRUE = 1,
-    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
-} khronos_boolean_enum_t;
-
-#endif /* __khrplatform_h_ */
-
-
-#ifndef __eglplatform_h_
-#define __eglplatform_h_
-
-/*
-** Copyright (c) 2007-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Platform-specific types and definitions for egl.h
-* $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $
-*
-* Adopters may modify khrplatform.h and this file to suit their platform.
-* You are encouraged to submit all modifications to the Khronos group so that
-* they can be included in future versions of this file.  Please submit changes
-* by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
-* by filing a bug against product "EGL" component "Registry".
-*/
-
-/*#include <KHR/khrplatform.h>*/
-
-/* Macros used in EGL function prototype declarations.
-*
-* EGL functions should be prototyped as:
-*
-* EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
-* typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
-*
-* KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
-*/
-
-#ifndef EGLAPI
-#define EGLAPI KHRONOS_APICALL
-#endif
-
-#ifndef EGLAPIENTRY
-#define EGLAPIENTRY  KHRONOS_APIENTRY
-#endif
-#define EGLAPIENTRYP EGLAPIENTRY*
-
-/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
-* are aliases of window-system-dependent types, such as X Display * or
-* Windows Device Context. They must be defined in platform-specific
-* code below. The EGL-prefixed versions of Native*Type are the same
-* types, renamed in EGL 1.3 so all types in the API start with "EGL".
-*
-* Khronos STRONGLY RECOMMENDS that you use the default definitions
-* provided below, since these changes affect both binary and source
-* portability of applications using EGL running on different EGL
-* implementations.
-*/
-
-#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#include <windows.h>
-
-#if __WINRT__
-#include <Unknwn.h>
-typedef IUnknown * EGLNativeWindowType;
-typedef IUnknown * EGLNativePixmapType;
-typedef IUnknown * EGLNativeDisplayType;
-#else
-typedef HDC     EGLNativeDisplayType;
-typedef HBITMAP EGLNativePixmapType;
-typedef HWND    EGLNativeWindowType;
-#endif
-
-#elif defined(__WINSCW__) || defined(__SYMBIAN32__)  /* Symbian */
-
-typedef int   EGLNativeDisplayType;
-typedef void *EGLNativeWindowType;
-typedef void *EGLNativePixmapType;
-
-#elif defined(WL_EGL_PLATFORM)
-
-typedef struct wl_display     *EGLNativeDisplayType;
-typedef struct wl_egl_pixmap  *EGLNativePixmapType;
-typedef struct wl_egl_window  *EGLNativeWindowType;
-
-#elif defined(__GBM__)
-
-typedef struct gbm_device  *EGLNativeDisplayType;
-typedef struct gbm_bo      *EGLNativePixmapType;
-typedef void               *EGLNativeWindowType;
-
-#elif defined(__ANDROID__) /* Android */
-
-struct ANativeWindow;
-struct egl_native_pixmap_t;
-
-typedef struct ANativeWindow        *EGLNativeWindowType;
-typedef struct egl_native_pixmap_t  *EGLNativePixmapType;
-typedef void                        *EGLNativeDisplayType;
-
-#elif defined(MIR_EGL_PLATFORM)
-
-#include <mir_toolkit/mir_client_library.h>
-typedef MirEGLNativeDisplayType EGLNativeDisplayType;
-typedef void                   *EGLNativePixmapType;
-typedef MirEGLNativeWindowType  EGLNativeWindowType;
-
-#elif defined(__unix__)
-
-#ifdef MESA_EGL_NO_X11_HEADERS
-
-typedef void            *EGLNativeDisplayType;
-typedef khronos_uintptr_t EGLNativePixmapType;
-typedef khronos_uintptr_t EGLNativeWindowType;
-
-#else
-
-/* X11 (tentative)  */
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-typedef Display *EGLNativeDisplayType;
-typedef Pixmap   EGLNativePixmapType;
-typedef Window   EGLNativeWindowType;
-
-#endif /* MESA_EGL_NO_X11_HEADERS */
-
-#else
-#error "Platform not recognized"
-#endif
-
-/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
-typedef EGLNativeDisplayType NativeDisplayType;
-typedef EGLNativePixmapType  NativePixmapType;
-typedef EGLNativeWindowType  NativeWindowType;
-
-
-/* Define EGLint. This must be a signed integral type large enough to contain
-* all legal attribute names and values passed into and out of EGL, whether
-* their type is boolean, bitmask, enumerant (symbolic constant), integer,
-* handle, or other.  While in general a 32-bit integer will suffice, if
-* handles are 64 bit types, then EGLint should be defined as a signed 64-bit
-* integer type.
-*/
-typedef khronos_int32_t EGLint;
-
-#endif /* __eglplatform_h */
-
-#ifndef __egl_h_
-#define __egl_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2013-2015 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
-** This header is generated from the Khronos OpenGL / OpenGL ES XML
-** API Registry. The current version of the Registry, generator scripts
-** used to make the header, and the header can be found at
-**   http://www.opengl.org/registry/
-**
-** Khronos $Revision: 31566 $ on $Date: 2015-06-23 08:48:48 -0700 (Tue, 23 Jun 2015) $
-*/
-
-/*#include <EGL/eglplatform.h>*/
-
-/* Generated on date 20150623 */
-
-/* Generated C header for:
- * API: egl
- * Versions considered: .*
- * Versions emitted: .*
- * Default extensions included: None
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef EGL_VERSION_1_0
-#define EGL_VERSION_1_0 1
-typedef unsigned int EGLBoolean;
-typedef void *EGLDisplay;
-typedef void *EGLConfig;
-typedef void *EGLSurface;
-typedef void *EGLContext;
-typedef void (*__eglMustCastToProperFunctionPointerType)(void);
-#define EGL_ALPHA_SIZE                    0x3021
-#define EGL_BAD_ACCESS                    0x3002
-#define EGL_BAD_ALLOC                     0x3003
-#define EGL_BAD_ATTRIBUTE                 0x3004
-#define EGL_BAD_CONFIG                    0x3005
-#define EGL_BAD_CONTEXT                   0x3006
-#define EGL_BAD_CURRENT_SURFACE           0x3007
-#define EGL_BAD_DISPLAY                   0x3008
-#define EGL_BAD_MATCH                     0x3009
-#define EGL_BAD_NATIVE_PIXMAP             0x300A
-#define EGL_BAD_NATIVE_WINDOW             0x300B
-#define EGL_BAD_PARAMETER                 0x300C
-#define EGL_BAD_SURFACE                   0x300D
-#define EGL_BLUE_SIZE                     0x3022
-#define EGL_BUFFER_SIZE                   0x3020
-#define EGL_CONFIG_CAVEAT                 0x3027
-#define EGL_CONFIG_ID                     0x3028
-#define EGL_CORE_NATIVE_ENGINE            0x305B
-#define EGL_DEPTH_SIZE                    0x3025
-#define EGL_DONT_CARE                     ((EGLint)-1)
-#define EGL_DRAW                          0x3059
-#define EGL_EXTENSIONS                    0x3055
-#define EGL_FALSE                         0
-#define EGL_GREEN_SIZE                    0x3023
-#define EGL_HEIGHT                        0x3056
-#define EGL_LARGEST_PBUFFER               0x3058
-#define EGL_LEVEL                         0x3029
-#define EGL_MAX_PBUFFER_HEIGHT            0x302A
-#define EGL_MAX_PBUFFER_PIXELS            0x302B
-#define EGL_MAX_PBUFFER_WIDTH             0x302C
-#define EGL_NATIVE_RENDERABLE             0x302D
-#define EGL_NATIVE_VISUAL_ID              0x302E
-#define EGL_NATIVE_VISUAL_TYPE            0x302F
-#define EGL_NONE                          0x3038
-#define EGL_NON_CONFORMANT_CONFIG         0x3051
-#define EGL_NOT_INITIALIZED               0x3001
-#define EGL_NO_CONTEXT                    ((EGLContext)0)
-#define EGL_NO_DISPLAY                    ((EGLDisplay)0)
-#define EGL_NO_SURFACE                    ((EGLSurface)0)
-#define EGL_PBUFFER_BIT                   0x0001
-#define EGL_PIXMAP_BIT                    0x0002
-#define EGL_READ                          0x305A
-#define EGL_RED_SIZE                      0x3024
-#define EGL_SAMPLES                       0x3031
-#define EGL_SAMPLE_BUFFERS                0x3032
-#define EGL_SLOW_CONFIG                   0x3050
-#define EGL_STENCIL_SIZE                  0x3026
-#define EGL_SUCCESS                       0x3000
-#define EGL_SURFACE_TYPE                  0x3033
-#define EGL_TRANSPARENT_BLUE_VALUE        0x3035
-#define EGL_TRANSPARENT_GREEN_VALUE       0x3036
-#define EGL_TRANSPARENT_RED_VALUE         0x3037
-#define EGL_TRANSPARENT_RGB               0x3052
-#define EGL_TRANSPARENT_TYPE              0x3034
-#define EGL_TRUE                          1
-#define EGL_VENDOR                        0x3053
-#define EGL_VERSION                       0x3054
-#define EGL_WIDTH                         0x3057
-#define EGL_WINDOW_BIT                    0x0004
-EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
-EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void);
-EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id);
-EGLAPI EGLint EGLAPIENTRY eglGetError (void);
-EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
-EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
-EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
-EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine);
-#endif /* EGL_VERSION_1_0 */
-
-#ifndef EGL_VERSION_1_1
-#define EGL_VERSION_1_1 1
-#define EGL_BACK_BUFFER                   0x3084
-#define EGL_BIND_TO_TEXTURE_RGB           0x3039
-#define EGL_BIND_TO_TEXTURE_RGBA          0x303A
-#define EGL_CONTEXT_LOST                  0x300E
-#define EGL_MIN_SWAP_INTERVAL             0x303B
-#define EGL_MAX_SWAP_INTERVAL             0x303C
-#define EGL_MIPMAP_TEXTURE                0x3082
-#define EGL_MIPMAP_LEVEL                  0x3083
-#define EGL_NO_TEXTURE                    0x305C
-#define EGL_TEXTURE_2D                    0x305F
-#define EGL_TEXTURE_FORMAT                0x3080
-#define EGL_TEXTURE_RGB                   0x305D
-#define EGL_TEXTURE_RGBA                  0x305E
-#define EGL_TEXTURE_TARGET                0x3081
-EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval);
-#endif /* EGL_VERSION_1_1 */
-
-#ifndef EGL_VERSION_1_2
-#define EGL_VERSION_1_2 1
-typedef unsigned int EGLenum;
-typedef void *EGLClientBuffer;
-#define EGL_ALPHA_FORMAT                  0x3088
-#define EGL_ALPHA_FORMAT_NONPRE           0x308B
-#define EGL_ALPHA_FORMAT_PRE              0x308C
-#define EGL_ALPHA_MASK_SIZE               0x303E
-#define EGL_BUFFER_PRESERVED              0x3094
-#define EGL_BUFFER_DESTROYED              0x3095
-#define EGL_CLIENT_APIS                   0x308D
-#define EGL_COLORSPACE                    0x3087
-#define EGL_COLORSPACE_sRGB               0x3089
-#define EGL_COLORSPACE_LINEAR             0x308A
-#define EGL_COLOR_BUFFER_TYPE             0x303F
-#define EGL_CONTEXT_CLIENT_TYPE           0x3097
-#define EGL_DISPLAY_SCALING               10000
-#define EGL_HORIZONTAL_RESOLUTION         0x3090
-#define EGL_LUMINANCE_BUFFER              0x308F
-#define EGL_LUMINANCE_SIZE                0x303D
-#define EGL_OPENGL_ES_BIT                 0x0001
-#define EGL_OPENVG_BIT                    0x0002
-#define EGL_OPENGL_ES_API                 0x30A0
-#define EGL_OPENVG_API                    0x30A1
-#define EGL_OPENVG_IMAGE                  0x3096
-#define EGL_PIXEL_ASPECT_RATIO            0x3092
-#define EGL_RENDERABLE_TYPE               0x3040
-#define EGL_RENDER_BUFFER                 0x3086
-#define EGL_RGB_BUFFER                    0x308E
-#define EGL_SINGLE_BUFFER                 0x3085
-#define EGL_SWAP_BEHAVIOR                 0x3093
-#define EGL_UNKNOWN                       ((EGLint)-1)
-#define EGL_VERTICAL_RESOLUTION           0x3091
-EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api);
-EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void);
-#endif /* EGL_VERSION_1_2 */
-
-#ifndef EGL_VERSION_1_3
-#define EGL_VERSION_1_3 1
-#define EGL_CONFORMANT                    0x3042
-#define EGL_CONTEXT_CLIENT_VERSION        0x3098
-#define EGL_MATCH_NATIVE_PIXMAP           0x3041
-#define EGL_OPENGL_ES2_BIT                0x0004
-#define EGL_VG_ALPHA_FORMAT               0x3088
-#define EGL_VG_ALPHA_FORMAT_NONPRE        0x308B
-#define EGL_VG_ALPHA_FORMAT_PRE           0x308C
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT       0x0040
-#define EGL_VG_COLORSPACE                 0x3087
-#define EGL_VG_COLORSPACE_sRGB            0x3089
-#define EGL_VG_COLORSPACE_LINEAR          0x308A
-#define EGL_VG_COLORSPACE_LINEAR_BIT      0x0020
-#endif /* EGL_VERSION_1_3 */
-
-#ifndef EGL_VERSION_1_4
-#define EGL_VERSION_1_4 1
-#define EGL_DEFAULT_DISPLAY               ((EGLNativeDisplayType)0)
-#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT   0x0200
-#define EGL_MULTISAMPLE_RESOLVE           0x3099
-#define EGL_MULTISAMPLE_RESOLVE_DEFAULT   0x309A
-#define EGL_MULTISAMPLE_RESOLVE_BOX       0x309B
-#define EGL_OPENGL_API                    0x30A2
-#define EGL_OPENGL_BIT                    0x0008
-#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT   0x0400
-EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void);
-#endif /* EGL_VERSION_1_4 */
-
-#ifndef EGL_VERSION_1_5
-#define EGL_VERSION_1_5 1
-typedef void *EGLSync;
-typedef intptr_t EGLAttrib;
-typedef khronos_utime_nanoseconds_t EGLTime;
-typedef void *EGLImage;
-#define EGL_CONTEXT_MAJOR_VERSION         0x3098
-#define EGL_CONTEXT_MINOR_VERSION         0x30FB
-#define EGL_CONTEXT_OPENGL_PROFILE_MASK   0x30FD
-#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
-#define EGL_NO_RESET_NOTIFICATION         0x31BE
-#define EGL_LOSE_CONTEXT_ON_RESET         0x31BF
-#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
-#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
-#define EGL_CONTEXT_OPENGL_DEBUG          0x31B0
-#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
-#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS  0x31B2
-#define EGL_OPENGL_ES3_BIT                0x00000040
-#define EGL_CL_EVENT_HANDLE               0x309C
-#define EGL_SYNC_CL_EVENT                 0x30FE
-#define EGL_SYNC_CL_EVENT_COMPLETE        0x30FF
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE  0x30F0
-#define EGL_SYNC_TYPE                     0x30F7
-#define EGL_SYNC_STATUS                   0x30F1
-#define EGL_SYNC_CONDITION                0x30F8
-#define EGL_SIGNALED                      0x30F2
-#define EGL_UNSIGNALED                    0x30F3
-#define EGL_SYNC_FLUSH_COMMANDS_BIT       0x0001
-#define EGL_FOREVER                       0xFFFFFFFFFFFFFFFFull
-#define EGL_TIMEOUT_EXPIRED               0x30F5
-#define EGL_CONDITION_SATISFIED           0x30F6
-#define EGL_NO_SYNC                       ((EGLSync)0)
-#define EGL_SYNC_FENCE                    0x30F9
-#define EGL_GL_COLORSPACE                 0x309D
-#define EGL_GL_COLORSPACE_SRGB            0x3089
-#define EGL_GL_COLORSPACE_LINEAR          0x308A
-#define EGL_GL_RENDERBUFFER               0x30B9
-#define EGL_GL_TEXTURE_2D                 0x30B1
-#define EGL_GL_TEXTURE_LEVEL              0x30BC
-#define EGL_GL_TEXTURE_3D                 0x30B2
-#define EGL_GL_TEXTURE_ZOFFSET            0x30BD
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
-#define EGL_IMAGE_PRESERVED               0x30D2
-#define EGL_NO_IMAGE                      ((EGLImage)0)
-EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
-EGLAPI EGLImage EGLAPIENTRY eglCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage (EGLDisplay dpy, EGLImage image);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags);
-#endif /* EGL_VERSION_1_5 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __egl_h_ */
-
-
-
-#ifndef __eglext_h_
-#define __eglext_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2013-2015 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
-** This header is generated from the Khronos OpenGL / OpenGL ES XML
-** API Registry. The current version of the Registry, generator scripts
-** used to make the header, and the header can be found at
-**   http://www.opengl.org/registry/
-**
-** Khronos $Revision: 31566 $ on $Date: 2015-06-23 08:48:48 -0700 (Tue, 23 Jun 2015) $
-*/
-
-/*#include <EGL/eglplatform.h>*/
-
-#define EGL_EGLEXT_VERSION 20150623
-
-/* Generated C header for:
- * API: egl
- * Versions considered: .*
- * Versions emitted: _nomatch_^
- * Default extensions included: egl
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef EGL_KHR_cl_event
-#define EGL_KHR_cl_event 1
-#define EGL_CL_EVENT_HANDLE_KHR           0x309C
-#define EGL_SYNC_CL_EVENT_KHR             0x30FE
-#define EGL_SYNC_CL_EVENT_COMPLETE_KHR    0x30FF
-#endif /* EGL_KHR_cl_event */
-
-#ifndef EGL_KHR_cl_event2
-#define EGL_KHR_cl_event2 1
-typedef void *EGLSyncKHR;
-typedef intptr_t EGLAttribKHR;
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
-#endif
-#endif /* EGL_KHR_cl_event2 */
-
-#ifndef EGL_KHR_client_get_all_proc_addresses
-#define EGL_KHR_client_get_all_proc_addresses 1
-#endif /* EGL_KHR_client_get_all_proc_addresses */
-
-#ifndef EGL_KHR_config_attribs
-#define EGL_KHR_config_attribs 1
-#define EGL_CONFORMANT_KHR                0x3042
-#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR  0x0020
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR   0x0040
-#endif /* EGL_KHR_config_attribs */
-
-#ifndef EGL_KHR_create_context
-#define EGL_KHR_create_context 1
-#define EGL_CONTEXT_MAJOR_VERSION_KHR     0x3098
-#define EGL_CONTEXT_MINOR_VERSION_KHR     0x30FB
-#define EGL_CONTEXT_FLAGS_KHR             0x30FC
-#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
-#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
-#define EGL_NO_RESET_NOTIFICATION_KHR     0x31BE
-#define EGL_LOSE_CONTEXT_ON_RESET_KHR     0x31BF
-#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR  0x00000001
-#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
-#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
-#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
-#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
-#define EGL_OPENGL_ES3_BIT_KHR            0x00000040
-#endif /* EGL_KHR_create_context */
-
-#ifndef EGL_KHR_create_context_no_error
-#define EGL_KHR_create_context_no_error 1
-#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR   0x31B3
-#endif /* EGL_KHR_create_context_no_error */
-
-#ifndef EGL_KHR_fence_sync
-#define EGL_KHR_fence_sync 1
-typedef khronos_utime_nanoseconds_t EGLTimeKHR;
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
-#define EGL_SYNC_CONDITION_KHR            0x30F8
-#define EGL_SYNC_FENCE_KHR                0x30F9
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_fence_sync */
-
-#ifndef EGL_KHR_get_all_proc_addresses
-#define EGL_KHR_get_all_proc_addresses 1
-#endif /* EGL_KHR_get_all_proc_addresses */
-
-#ifndef EGL_KHR_gl_colorspace
-#define EGL_KHR_gl_colorspace 1
-#define EGL_GL_COLORSPACE_KHR             0x309D
-#define EGL_GL_COLORSPACE_SRGB_KHR        0x3089
-#define EGL_GL_COLORSPACE_LINEAR_KHR      0x308A
-#endif /* EGL_KHR_gl_colorspace */
-
-#ifndef EGL_KHR_gl_renderbuffer_image
-#define EGL_KHR_gl_renderbuffer_image 1
-#define EGL_GL_RENDERBUFFER_KHR           0x30B9
-#endif /* EGL_KHR_gl_renderbuffer_image */
-
-#ifndef EGL_KHR_gl_texture_2D_image
-#define EGL_KHR_gl_texture_2D_image 1
-#define EGL_GL_TEXTURE_2D_KHR             0x30B1
-#define EGL_GL_TEXTURE_LEVEL_KHR          0x30BC
-#endif /* EGL_KHR_gl_texture_2D_image */
-
-#ifndef EGL_KHR_gl_texture_3D_image
-#define EGL_KHR_gl_texture_3D_image 1
-#define EGL_GL_TEXTURE_3D_KHR             0x30B2
-#define EGL_GL_TEXTURE_ZOFFSET_KHR        0x30BD
-#endif /* EGL_KHR_gl_texture_3D_image */
-
-#ifndef EGL_KHR_gl_texture_cubemap_image
-#define EGL_KHR_gl_texture_cubemap_image 1
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
-#endif /* EGL_KHR_gl_texture_cubemap_image */
-
-#ifndef EGL_KHR_image
-#define EGL_KHR_image 1
-typedef void *EGLImageKHR;
-#define EGL_NATIVE_PIXMAP_KHR             0x30B0
-#define EGL_NO_IMAGE_KHR                  ((EGLImageKHR)0)
-typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
-#endif
-#endif /* EGL_KHR_image */
-
-#ifndef EGL_KHR_image_base
-#define EGL_KHR_image_base 1
-#define EGL_IMAGE_PRESERVED_KHR           0x30D2
-#endif /* EGL_KHR_image_base */
-
-#ifndef EGL_KHR_image_pixmap
-#define EGL_KHR_image_pixmap 1
-#endif /* EGL_KHR_image_pixmap */
-
-#ifndef EGL_KHR_lock_surface
-#define EGL_KHR_lock_surface 1
-#define EGL_READ_SURFACE_BIT_KHR          0x0001
-#define EGL_WRITE_SURFACE_BIT_KHR         0x0002
-#define EGL_LOCK_SURFACE_BIT_KHR          0x0080
-#define EGL_OPTIMAL_FORMAT_BIT_KHR        0x0100
-#define EGL_MATCH_FORMAT_KHR              0x3043
-#define EGL_FORMAT_RGB_565_EXACT_KHR      0x30C0
-#define EGL_FORMAT_RGB_565_KHR            0x30C1
-#define EGL_FORMAT_RGBA_8888_EXACT_KHR    0x30C2
-#define EGL_FORMAT_RGBA_8888_KHR          0x30C3
-#define EGL_MAP_PRESERVE_PIXELS_KHR       0x30C4
-#define EGL_LOCK_USAGE_HINT_KHR           0x30C5
-#define EGL_BITMAP_POINTER_KHR            0x30C6
-#define EGL_BITMAP_PITCH_KHR              0x30C7
-#define EGL_BITMAP_ORIGIN_KHR             0x30C8
-#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR   0x30C9
-#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
-#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR  0x30CB
-#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
-#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
-#define EGL_LOWER_LEFT_KHR                0x30CE
-#define EGL_UPPER_LEFT_KHR                0x30CF
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface);
-#endif
-#endif /* EGL_KHR_lock_surface */
-
-#ifndef EGL_KHR_lock_surface2
-#define EGL_KHR_lock_surface2 1
-#define EGL_BITMAP_PIXEL_SIZE_KHR         0x3110
-#endif /* EGL_KHR_lock_surface2 */
-
-#ifndef EGL_KHR_lock_surface3
-#define EGL_KHR_lock_surface3 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
-#endif
-#endif /* EGL_KHR_lock_surface3 */
-
-#ifndef EGL_KHR_partial_update
-#define EGL_KHR_partial_update 1
-#define EGL_BUFFER_AGE_KHR                0x313D
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#endif
-#endif /* EGL_KHR_partial_update */
-
-#ifndef EGL_KHR_platform_android
-#define EGL_KHR_platform_android 1
-#define EGL_PLATFORM_ANDROID_KHR          0x3141
-#endif /* EGL_KHR_platform_android */
-
-#ifndef EGL_KHR_platform_gbm
-#define EGL_KHR_platform_gbm 1
-#define EGL_PLATFORM_GBM_KHR              0x31D7
-#endif /* EGL_KHR_platform_gbm */
-
-#ifndef EGL_KHR_platform_wayland
-#define EGL_KHR_platform_wayland 1
-#define EGL_PLATFORM_WAYLAND_KHR          0x31D8
-#endif /* EGL_KHR_platform_wayland */
-
-#ifndef EGL_KHR_platform_x11
-#define EGL_KHR_platform_x11 1
-#define EGL_PLATFORM_X11_KHR              0x31D5
-#define EGL_PLATFORM_X11_SCREEN_KHR       0x31D6
-#endif /* EGL_KHR_platform_x11 */
-
-#ifndef EGL_KHR_reusable_sync
-#define EGL_KHR_reusable_sync 1
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_SYNC_STATUS_KHR               0x30F1
-#define EGL_SIGNALED_KHR                  0x30F2
-#define EGL_UNSIGNALED_KHR                0x30F3
-#define EGL_TIMEOUT_EXPIRED_KHR           0x30F5
-#define EGL_CONDITION_SATISFIED_KHR       0x30F6
-#define EGL_SYNC_TYPE_KHR                 0x30F7
-#define EGL_SYNC_REUSABLE_KHR             0x30FA
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR   0x0001
-#define EGL_FOREVER_KHR                   0xFFFFFFFFFFFFFFFFull
-#define EGL_NO_SYNC_KHR                   ((EGLSyncKHR)0)
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_reusable_sync */
-
-#ifndef EGL_KHR_stream
-#define EGL_KHR_stream 1
-typedef void *EGLStreamKHR;
-typedef khronos_uint64_t EGLuint64KHR;
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_NO_STREAM_KHR                 ((EGLStreamKHR)0)
-#define EGL_CONSUMER_LATENCY_USEC_KHR     0x3210
-#define EGL_PRODUCER_FRAME_KHR            0x3212
-#define EGL_CONSUMER_FRAME_KHR            0x3213
-#define EGL_STREAM_STATE_KHR              0x3214
-#define EGL_STREAM_STATE_CREATED_KHR      0x3215
-#define EGL_STREAM_STATE_CONNECTING_KHR   0x3216
-#define EGL_STREAM_STATE_EMPTY_KHR        0x3217
-#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
-#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
-#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
-#define EGL_BAD_STREAM_KHR                0x321B
-#define EGL_BAD_STATE_KHR                 0x321C
-typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_stream */
-
-#ifndef EGL_KHR_stream_consumer_gltexture
-#define EGL_KHR_stream_consumer_gltexture 1
-#ifdef EGL_KHR_stream
-#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_consumer_gltexture */
-
-#ifndef EGL_KHR_stream_cross_process_fd
-#define EGL_KHR_stream_cross_process_fd 1
-typedef int EGLNativeFileDescriptorKHR;
-#ifdef EGL_KHR_stream
-#define EGL_NO_FILE_DESCRIPTOR_KHR        ((EGLNativeFileDescriptorKHR)(-1))
-typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_cross_process_fd */
-
-#ifndef EGL_KHR_stream_fifo
-#define EGL_KHR_stream_fifo 1
-#ifdef EGL_KHR_stream
-#define EGL_STREAM_FIFO_LENGTH_KHR        0x31FC
-#define EGL_STREAM_TIME_NOW_KHR           0x31FD
-#define EGL_STREAM_TIME_CONSUMER_KHR      0x31FE
-#define EGL_STREAM_TIME_PRODUCER_KHR      0x31FF
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_fifo */
-
-#ifndef EGL_KHR_stream_producer_aldatalocator
-#define EGL_KHR_stream_producer_aldatalocator 1
-#ifdef EGL_KHR_stream
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_producer_aldatalocator */
-
-#ifndef EGL_KHR_stream_producer_eglsurface
-#define EGL_KHR_stream_producer_eglsurface 1
-#ifdef EGL_KHR_stream
-#define EGL_STREAM_BIT_KHR                0x0800
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_producer_eglsurface */
-
-#ifndef EGL_KHR_surfaceless_context
-#define EGL_KHR_surfaceless_context 1
-#endif /* EGL_KHR_surfaceless_context */
-
-#ifndef EGL_KHR_swap_buffers_with_damage
-#define EGL_KHR_swap_buffers_with_damage 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#endif
-#endif /* EGL_KHR_swap_buffers_with_damage */
-
-#ifndef EGL_KHR_vg_parent_image
-#define EGL_KHR_vg_parent_image 1
-#define EGL_VG_PARENT_IMAGE_KHR           0x30BA
-#endif /* EGL_KHR_vg_parent_image */
-
-#ifndef EGL_KHR_wait_sync
-#define EGL_KHR_wait_sync 1
-typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
-#endif
-#endif /* EGL_KHR_wait_sync */
-
-#ifndef EGL_ANDROID_blob_cache
-#define EGL_ANDROID_blob_cache 1
-typedef khronos_ssize_t EGLsizeiANDROID;
-typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
-typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
-typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
-#endif
-#endif /* EGL_ANDROID_blob_cache */
-
-#ifndef EGL_ANDROID_framebuffer_target
-#define EGL_ANDROID_framebuffer_target 1
-#define EGL_FRAMEBUFFER_TARGET_ANDROID    0x3147
-#endif /* EGL_ANDROID_framebuffer_target */
-
-#ifndef EGL_ANDROID_image_native_buffer
-#define EGL_ANDROID_image_native_buffer 1
-#define EGL_NATIVE_BUFFER_ANDROID         0x3140
-#endif /* EGL_ANDROID_image_native_buffer */
-
-#ifndef EGL_ANDROID_native_fence_sync
-#define EGL_ANDROID_native_fence_sync 1
-#define EGL_SYNC_NATIVE_FENCE_ANDROID     0x3144
-#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID  0x3145
-#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
-#define EGL_NO_NATIVE_FENCE_FD_ANDROID    -1
-typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync);
-#endif
-#endif /* EGL_ANDROID_native_fence_sync */
-
-#ifndef EGL_ANDROID_recordable
-#define EGL_ANDROID_recordable 1
-#define EGL_RECORDABLE_ANDROID            0x3142
-#endif /* EGL_ANDROID_recordable */
-
-#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
-#define EGL_ANGLE_d3d_share_handle_client_buffer 1
-#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
-#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
-
-#ifndef EGL_ANGLE_device_d3d
-#define EGL_ANGLE_device_d3d 1
-#define EGL_D3D9_DEVICE_ANGLE             0x33A0
-#define EGL_D3D11_DEVICE_ANGLE            0x33A1
-#endif /* EGL_ANGLE_device_d3d */
-
-#ifndef EGL_ANGLE_query_surface_pointer
-#define EGL_ANGLE_query_surface_pointer 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
-#endif
-#endif /* EGL_ANGLE_query_surface_pointer */
-
-#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
-#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
-#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
-
-#ifndef EGL_ANGLE_window_fixed_size
-#define EGL_ANGLE_window_fixed_size 1
-#define EGL_FIXED_SIZE_ANGLE              0x3201
-#endif /* EGL_ANGLE_window_fixed_size */
-
-#ifndef EGL_ARM_pixmap_multisample_discard
-#define EGL_ARM_pixmap_multisample_discard 1
-#define EGL_DISCARD_SAMPLES_ARM           0x3286
-#endif /* EGL_ARM_pixmap_multisample_discard */
-
-#ifndef EGL_EXT_buffer_age
-#define EGL_EXT_buffer_age 1
-#define EGL_BUFFER_AGE_EXT                0x313D
-#endif /* EGL_EXT_buffer_age */
-
-#ifndef EGL_EXT_client_extensions
-#define EGL_EXT_client_extensions 1
-#endif /* EGL_EXT_client_extensions */
-
-#ifndef EGL_EXT_create_context_robustness
-#define EGL_EXT_create_context_robustness 1
-#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
-#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
-#define EGL_NO_RESET_NOTIFICATION_EXT     0x31BE
-#define EGL_LOSE_CONTEXT_ON_RESET_EXT     0x31BF
-#endif /* EGL_EXT_create_context_robustness */
-
-#ifndef EGL_EXT_device_base
-#define EGL_EXT_device_base 1
-typedef void *EGLDeviceEXT;
-#define EGL_NO_DEVICE_EXT                 ((EGLDeviceEXT)(0))
-#define EGL_BAD_DEVICE_EXT                0x322B
-#define EGL_DEVICE_EXT                    0x322C
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
-EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
-#endif
-#endif /* EGL_EXT_device_base */
-
-#ifndef EGL_EXT_device_drm
-#define EGL_EXT_device_drm 1
-#define EGL_DRM_DEVICE_FILE_EXT           0x3233
-#endif /* EGL_EXT_device_drm */
-
-#ifndef EGL_EXT_device_enumeration
-#define EGL_EXT_device_enumeration 1
-#endif /* EGL_EXT_device_enumeration */
-
-#ifndef EGL_EXT_device_openwf
-#define EGL_EXT_device_openwf 1
-#define EGL_OPENWF_DEVICE_ID_EXT          0x3237
-#endif /* EGL_EXT_device_openwf */
-
-#ifndef EGL_EXT_device_query
-#define EGL_EXT_device_query 1
-#endif /* EGL_EXT_device_query */
-
-#ifndef EGL_EXT_image_dma_buf_import
-#define EGL_EXT_image_dma_buf_import 1
-#define EGL_LINUX_DMA_BUF_EXT             0x3270
-#define EGL_LINUX_DRM_FOURCC_EXT          0x3271
-#define EGL_DMA_BUF_PLANE0_FD_EXT         0x3272
-#define EGL_DMA_BUF_PLANE0_OFFSET_EXT     0x3273
-#define EGL_DMA_BUF_PLANE0_PITCH_EXT      0x3274
-#define EGL_DMA_BUF_PLANE1_FD_EXT         0x3275
-#define EGL_DMA_BUF_PLANE1_OFFSET_EXT     0x3276
-#define EGL_DMA_BUF_PLANE1_PITCH_EXT      0x3277
-#define EGL_DMA_BUF_PLANE2_FD_EXT         0x3278
-#define EGL_DMA_BUF_PLANE2_OFFSET_EXT     0x3279
-#define EGL_DMA_BUF_PLANE2_PITCH_EXT      0x327A
-#define EGL_YUV_COLOR_SPACE_HINT_EXT      0x327B
-#define EGL_SAMPLE_RANGE_HINT_EXT         0x327C
-#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
-#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
-#define EGL_ITU_REC601_EXT                0x327F
-#define EGL_ITU_REC709_EXT                0x3280
-#define EGL_ITU_REC2020_EXT               0x3281
-#define EGL_YUV_FULL_RANGE_EXT            0x3282
-#define EGL_YUV_NARROW_RANGE_EXT          0x3283
-#define EGL_YUV_CHROMA_SITING_0_EXT       0x3284
-#define EGL_YUV_CHROMA_SITING_0_5_EXT     0x3285
-#endif /* EGL_EXT_image_dma_buf_import */
-
-#ifndef EGL_EXT_multiview_window
-#define EGL_EXT_multiview_window 1
-#define EGL_MULTIVIEW_VIEW_COUNT_EXT      0x3134
-#endif /* EGL_EXT_multiview_window */
-
-#ifndef EGL_EXT_output_base
-#define EGL_EXT_output_base 1
-typedef void *EGLOutputLayerEXT;
-typedef void *EGLOutputPortEXT;
-#define EGL_NO_OUTPUT_LAYER_EXT           ((EGLOutputLayerEXT)0)
-#define EGL_NO_OUTPUT_PORT_EXT            ((EGLOutputPortEXT)0)
-#define EGL_BAD_OUTPUT_LAYER_EXT          0x322D
-#define EGL_BAD_OUTPUT_PORT_EXT           0x322E
-#define EGL_SWAP_INTERVAL_EXT             0x322F
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
-EGLAPI EGLBoolean EGLAPIENTRY eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
-EGLAPI const char *EGLAPIENTRY eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
-EGLAPI const char *EGLAPIENTRY eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
-#endif
-#endif /* EGL_EXT_output_base */
-
-#ifndef EGL_EXT_output_drm
-#define EGL_EXT_output_drm 1
-#define EGL_DRM_CRTC_EXT                  0x3234
-#define EGL_DRM_PLANE_EXT                 0x3235
-#define EGL_DRM_CONNECTOR_EXT             0x3236
-#endif /* EGL_EXT_output_drm */
-
-#ifndef EGL_EXT_output_openwf
-#define EGL_EXT_output_openwf 1
-#define EGL_OPENWF_PIPELINE_ID_EXT        0x3238
-#define EGL_OPENWF_PORT_ID_EXT            0x3239
-#endif /* EGL_EXT_output_openwf */
-
-#ifndef EGL_EXT_platform_base
-#define EGL_EXT_platform_base 1
-typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
-#endif
-#endif /* EGL_EXT_platform_base */
-
-#ifndef EGL_EXT_platform_device
-#define EGL_EXT_platform_device 1
-#define EGL_PLATFORM_DEVICE_EXT           0x313F
-#endif /* EGL_EXT_platform_device */
-
-#ifndef EGL_EXT_platform_wayland
-#define EGL_EXT_platform_wayland 1
-#define EGL_PLATFORM_WAYLAND_EXT          0x31D8
-#endif /* EGL_EXT_platform_wayland */
-
-#ifndef EGL_EXT_platform_x11
-#define EGL_EXT_platform_x11 1
-#define EGL_PLATFORM_X11_EXT              0x31D5
-#define EGL_PLATFORM_X11_SCREEN_EXT       0x31D6
-#endif /* EGL_EXT_platform_x11 */
-
-#ifndef EGL_EXT_protected_surface
-#define EGL_EXT_protected_surface 1
-#define EGL_PROTECTED_CONTENT_EXT         0x32C0
-#endif /* EGL_EXT_protected_surface */
-
-#ifndef EGL_EXT_stream_consumer_egloutput
-#define EGL_EXT_stream_consumer_egloutput 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
-#endif
-#endif /* EGL_EXT_stream_consumer_egloutput */
-
-#ifndef EGL_EXT_swap_buffers_with_damage
-#define EGL_EXT_swap_buffers_with_damage 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#endif
-#endif /* EGL_EXT_swap_buffers_with_damage */
-
-#ifndef EGL_EXT_yuv_surface
-#define EGL_EXT_yuv_surface 1
-#define EGL_YUV_ORDER_EXT                 0x3301
-#define EGL_YUV_NUMBER_OF_PLANES_EXT      0x3311
-#define EGL_YUV_SUBSAMPLE_EXT             0x3312
-#define EGL_YUV_DEPTH_RANGE_EXT           0x3317
-#define EGL_YUV_CSC_STANDARD_EXT          0x330A
-#define EGL_YUV_PLANE_BPP_EXT             0x331A
-#define EGL_YUV_BUFFER_EXT                0x3300
-#define EGL_YUV_ORDER_YUV_EXT             0x3302
-#define EGL_YUV_ORDER_YVU_EXT             0x3303
-#define EGL_YUV_ORDER_YUYV_EXT            0x3304
-#define EGL_YUV_ORDER_UYVY_EXT            0x3305
-#define EGL_YUV_ORDER_YVYU_EXT            0x3306
-#define EGL_YUV_ORDER_VYUY_EXT            0x3307
-#define EGL_YUV_ORDER_AYUV_EXT            0x3308
-#define EGL_YUV_SUBSAMPLE_4_2_0_EXT       0x3313
-#define EGL_YUV_SUBSAMPLE_4_2_2_EXT       0x3314
-#define EGL_YUV_SUBSAMPLE_4_4_4_EXT       0x3315
-#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT   0x3318
-#define EGL_YUV_DEPTH_RANGE_FULL_EXT      0x3319
-#define EGL_YUV_CSC_STANDARD_601_EXT      0x330B
-#define EGL_YUV_CSC_STANDARD_709_EXT      0x330C
-#define EGL_YUV_CSC_STANDARD_2020_EXT     0x330D
-#define EGL_YUV_PLANE_BPP_0_EXT           0x331B
-#define EGL_YUV_PLANE_BPP_8_EXT           0x331C
-#define EGL_YUV_PLANE_BPP_10_EXT          0x331D
-#endif /* EGL_EXT_yuv_surface */
-
-#ifndef EGL_HI_clientpixmap
-#define EGL_HI_clientpixmap 1
-struct EGLClientPixmapHI {
-    void  *pData;
-    EGLint iWidth;
-    EGLint iHeight;
-    EGLint iStride;
-};
-#define EGL_CLIENT_PIXMAP_POINTER_HI      0x8F74
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
-#endif
-#endif /* EGL_HI_clientpixmap */
-
-#ifndef EGL_HI_colorformats
-#define EGL_HI_colorformats 1
-#define EGL_COLOR_FORMAT_HI               0x8F70
-#define EGL_COLOR_RGB_HI                  0x8F71
-#define EGL_COLOR_RGBA_HI                 0x8F72
-#define EGL_COLOR_ARGB_HI                 0x8F73
-#endif /* EGL_HI_colorformats */
-
-#ifndef EGL_IMG_context_priority
-#define EGL_IMG_context_priority 1
-#define EGL_CONTEXT_PRIORITY_LEVEL_IMG    0x3100
-#define EGL_CONTEXT_PRIORITY_HIGH_IMG     0x3101
-#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG   0x3102
-#define EGL_CONTEXT_PRIORITY_LOW_IMG      0x3103
-#endif /* EGL_IMG_context_priority */
-
-#ifndef EGL_MESA_drm_image
-#define EGL_MESA_drm_image 1
-#define EGL_DRM_BUFFER_FORMAT_MESA        0x31D0
-#define EGL_DRM_BUFFER_USE_MESA           0x31D1
-#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
-#define EGL_DRM_BUFFER_MESA               0x31D3
-#define EGL_DRM_BUFFER_STRIDE_MESA        0x31D4
-#define EGL_DRM_BUFFER_USE_SCANOUT_MESA   0x00000001
-#define EGL_DRM_BUFFER_USE_SHARE_MESA     0x00000002
-typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
-#endif
-#endif /* EGL_MESA_drm_image */
-
-#ifndef EGL_MESA_image_dma_buf_export
-#define EGL_MESA_image_dma_buf_export 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
-#endif
-#endif /* EGL_MESA_image_dma_buf_export */
-
-#ifndef EGL_MESA_platform_gbm
-#define EGL_MESA_platform_gbm 1
-#define EGL_PLATFORM_GBM_MESA             0x31D7
-#endif /* EGL_MESA_platform_gbm */
-
-#ifndef EGL_NOK_swap_region
-#define EGL_NOK_swap_region 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#endif
-#endif /* EGL_NOK_swap_region */
-
-#ifndef EGL_NOK_swap_region2
-#define EGL_NOK_swap_region2 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#endif
-#endif /* EGL_NOK_swap_region2 */
-
-#ifndef EGL_NOK_texture_from_pixmap
-#define EGL_NOK_texture_from_pixmap 1
-#define EGL_Y_INVERTED_NOK                0x307F
-#endif /* EGL_NOK_texture_from_pixmap */
-
-#ifndef EGL_NV_3dvision_surface
-#define EGL_NV_3dvision_surface 1
-#define EGL_AUTO_STEREO_NV                0x3136
-#endif /* EGL_NV_3dvision_surface */
-
-#ifndef EGL_NV_coverage_sample
-#define EGL_NV_coverage_sample 1
-#define EGL_COVERAGE_BUFFERS_NV           0x30E0
-#define EGL_COVERAGE_SAMPLES_NV           0x30E1
-#endif /* EGL_NV_coverage_sample */
-
-#ifndef EGL_NV_coverage_sample_resolve
-#define EGL_NV_coverage_sample_resolve 1
-#define EGL_COVERAGE_SAMPLE_RESOLVE_NV    0x3131
-#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
-#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
-#endif /* EGL_NV_coverage_sample_resolve */
-
-#ifndef EGL_NV_cuda_event
-#define EGL_NV_cuda_event 1
-#define EGL_CUDA_EVENT_HANDLE_NV          0x323B
-#define EGL_SYNC_CUDA_EVENT_NV            0x323C
-#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV   0x323D
-#endif /* EGL_NV_cuda_event */
-
-#ifndef EGL_NV_depth_nonlinear
-#define EGL_NV_depth_nonlinear 1
-#define EGL_DEPTH_ENCODING_NV             0x30E2
-#define EGL_DEPTH_ENCODING_NONE_NV        0
-#define EGL_DEPTH_ENCODING_NONLINEAR_NV   0x30E3
-#endif /* EGL_NV_depth_nonlinear */
-
-#ifndef EGL_NV_device_cuda
-#define EGL_NV_device_cuda 1
-#define EGL_CUDA_DEVICE_NV                0x323A
-#endif /* EGL_NV_device_cuda */
-
-#ifndef EGL_NV_native_query
-#define EGL_NV_native_query 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
-#endif
-#endif /* EGL_NV_native_query */
-
-#ifndef EGL_NV_post_convert_rounding
-#define EGL_NV_post_convert_rounding 1
-#endif /* EGL_NV_post_convert_rounding */
-
-#ifndef EGL_NV_post_sub_buffer
-#define EGL_NV_post_sub_buffer 1
-#define EGL_POST_SUB_BUFFER_SUPPORTED_NV  0x30BE
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
-#endif
-#endif /* EGL_NV_post_sub_buffer */
-
-#ifndef EGL_NV_stream_sync
-#define EGL_NV_stream_sync 1
-#define EGL_SYNC_NEW_FRAME_NV             0x321F
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
-#endif
-#endif /* EGL_NV_stream_sync */
-
-#ifndef EGL_NV_sync
-#define EGL_NV_sync 1
-typedef void *EGLSyncNV;
-typedef khronos_utime_nanoseconds_t EGLTimeNV;
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
-#define EGL_SYNC_STATUS_NV                0x30E7
-#define EGL_SIGNALED_NV                   0x30E8
-#define EGL_UNSIGNALED_NV                 0x30E9
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV    0x0001
-#define EGL_FOREVER_NV                    0xFFFFFFFFFFFFFFFFull
-#define EGL_ALREADY_SIGNALED_NV           0x30EA
-#define EGL_TIMEOUT_EXPIRED_NV            0x30EB
-#define EGL_CONDITION_SATISFIED_NV        0x30EC
-#define EGL_SYNC_TYPE_NV                  0x30ED
-#define EGL_SYNC_CONDITION_NV             0x30EE
-#define EGL_SYNC_FENCE_NV                 0x30EF
-#define EGL_NO_SYNC_NV                    ((EGLSyncNV)0)
-typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync);
-EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_NV_sync */
-
-#ifndef EGL_NV_system_time
-#define EGL_NV_system_time 1
-typedef khronos_utime_nanoseconds_t EGLuint64NV;
-#ifdef KHRONOS_SUPPORT_INT64
-typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
-typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void);
-EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_NV_system_time */
-
-#ifndef EGL_TIZEN_image_native_buffer
-#define EGL_TIZEN_image_native_buffer 1
-#define EGL_NATIVE_BUFFER_TIZEN           0x32A0
-#endif /* EGL_TIZEN_image_native_buffer */
-
-#ifndef EGL_TIZEN_image_native_surface
-#define EGL_TIZEN_image_native_surface 1
-#define EGL_NATIVE_SURFACE_TIZEN          0x32A1
-#endif /* EGL_TIZEN_image_native_surface */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __eglext_h_ */
-
-
-#endif /* _MSC_VER */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_endian.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_endian.h
deleted file mode 100644 (file)
index 54d5d48..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_endian.h
- *
- *  Functions for reading and writing endian-specific values
- */
-
-#ifndef SDL_endian_h_
-#define SDL_endian_h_
-
-#include "SDL_stdinc.h"
-
-/**
- *  \name The two types of endianness
- */
-/* @{ */
-#define SDL_LIL_ENDIAN  1234
-#define SDL_BIG_ENDIAN  4321
-/* @} */
-
-#ifndef SDL_BYTEORDER           /* Not defined in SDL_config.h? */
-#ifdef __linux__
-#include <endian.h>
-#define SDL_BYTEORDER  __BYTE_ORDER
-#else /* __linux__ */
-#if defined(__hppa__) || \
-    defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
-    (defined(__MIPS__) && defined(__MISPEB__)) || \
-    defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \
-    defined(__sparc__)
-#define SDL_BYTEORDER   SDL_BIG_ENDIAN
-#else
-#define SDL_BYTEORDER   SDL_LIL_ENDIAN
-#endif
-#endif /* __linux__ */
-#endif /* !SDL_BYTEORDER */
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_endian.h
- */
-#if defined(__GNUC__) && defined(__i386__) && \
-   !(__GNUC__ == 2 && __GNUC_MINOR__ == 95 /* broken gcc version */)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-  __asm__("xchgb %b0,%h0": "=q"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && defined(__x86_64__)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-  __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-    int result;
-
-  __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x));
-    return (Uint16)result;
-}
-#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-  __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
-    return x;
-}
-#elif defined(__WATCOMC__) && defined(__386__)
-extern _inline Uint16 SDL_Swap16(Uint16);
-#pragma aux SDL_Swap16 = \
-  "xchg al, ah" \
-  parm   [ax]   \
-  modify [ax];
-#else
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-    return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));
-}
-#endif
-
-#if defined(__GNUC__) && defined(__i386__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-  __asm__("bswap %0": "=r"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && defined(__x86_64__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-  __asm__("bswapl %0": "=r"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-    Uint32 result;
-
-  __asm__("rlwimi %0,%2,24,16,23": "=&r"(result):"0"(x >> 24), "r"(x));
-  __asm__("rlwimi %0,%2,8,8,15": "=&r"(result):"0"(result), "r"(x));
-  __asm__("rlwimi %0,%2,24,0,7": "=&r"(result):"0"(result), "r"(x));
-    return result;
-}
-#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-  __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
-    return x;
-}
-#elif defined(__WATCOMC__) && defined(__386__)
-extern _inline Uint32 SDL_Swap32(Uint32);
-#ifndef __SW_3 /* 486+ */
-#pragma aux SDL_Swap32 = \
-  "bswap eax"  \
-  parm   [eax] \
-  modify [eax];
-#else  /* 386-only */
-#pragma aux SDL_Swap32 = \
-  "xchg al, ah"  \
-  "ror  eax, 16" \
-  "xchg al, ah"  \
-  parm   [eax]   \
-  modify [eax];
-#endif
-#else
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-    return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |
-                                    ((x >> 8) & 0x0000FF00) | (x >> 24)));
-}
-#endif
-
-#if defined(__GNUC__) && defined(__i386__)
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
-    union
-    {
-        struct
-        {
-            Uint32 a, b;
-        } s;
-        Uint64 u;
-    } v;
-    v.u = x;
-  __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1": "=r"(v.s.a), "=r"(v.s.b):"0"(v.s.a),
-            "1"(v.s.
-                b));
-    return v.u;
-}
-#elif defined(__GNUC__) && defined(__x86_64__)
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
-  __asm__("bswapq %0": "=r"(x):"0"(x));
-    return x;
-}
-#else
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
-    Uint32 hi, lo;
-
-    /* Separate into high and low 32-bit values and swap them */
-    lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
-    x >>= 32;
-    hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
-    x = SDL_Swap32(lo);
-    x <<= 32;
-    x |= SDL_Swap32(hi);
-    return (x);
-}
-#endif
-
-
-SDL_FORCE_INLINE float
-SDL_SwapFloat(float x)
-{
-    union
-    {
-        float f;
-        Uint32 ui32;
-    } swapper;
-    swapper.f = x;
-    swapper.ui32 = SDL_Swap32(swapper.ui32);
-    return swapper.f;
-}
-
-
-/**
- *  \name Swap to native
- *  Byteswap item from the specified endianness to the native endianness.
- */
-/* @{ */
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-#define SDL_SwapLE16(X) (X)
-#define SDL_SwapLE32(X) (X)
-#define SDL_SwapLE64(X) (X)
-#define SDL_SwapFloatLE(X)  (X)
-#define SDL_SwapBE16(X) SDL_Swap16(X)
-#define SDL_SwapBE32(X) SDL_Swap32(X)
-#define SDL_SwapBE64(X) SDL_Swap64(X)
-#define SDL_SwapFloatBE(X)  SDL_SwapFloat(X)
-#else
-#define SDL_SwapLE16(X) SDL_Swap16(X)
-#define SDL_SwapLE32(X) SDL_Swap32(X)
-#define SDL_SwapLE64(X) SDL_Swap64(X)
-#define SDL_SwapFloatLE(X)  SDL_SwapFloat(X)
-#define SDL_SwapBE16(X) (X)
-#define SDL_SwapBE32(X) (X)
-#define SDL_SwapBE64(X) (X)
-#define SDL_SwapFloatBE(X)  (X)
-#endif
-/* @} *//* Swap to native */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_endian_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_error.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_error.h
deleted file mode 100644 (file)
index 24416e6..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_error.h
- *
- *  Simple error message routines for SDL.
- */
-
-#ifndef SDL_error_h_
-#define SDL_error_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Public functions */
-/* SDL_SetError() unconditionally returns -1. */
-extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-extern DECLSPEC const char *SDLCALL SDL_GetError(void);
-extern DECLSPEC void SDLCALL SDL_ClearError(void);
-
-/**
- *  \name Internal error functions
- *
- *  \internal
- *  Private error reporting function - used internally.
- */
-/* @{ */
-#define SDL_OutOfMemory()   SDL_Error(SDL_ENOMEM)
-#define SDL_Unsupported()   SDL_Error(SDL_UNSUPPORTED)
-#define SDL_InvalidParamError(param)    SDL_SetError("Parameter '%s' is invalid", (param))
-typedef enum
-{
-    SDL_ENOMEM,
-    SDL_EFREAD,
-    SDL_EFWRITE,
-    SDL_EFSEEK,
-    SDL_UNSUPPORTED,
-    SDL_LASTERROR
-} SDL_errorcode;
-/* SDL_Error() unconditionally returns -1. */
-extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code);
-/* @} *//* Internal error functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_error_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_events.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_events.h
deleted file mode 100644 (file)
index 282b9fb..0000000
+++ /dev/null
@@ -1,791 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_events.h
- *
- *  Include file for SDL event handling.
- */
-
-#ifndef SDL_events_h_
-#define SDL_events_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-#include "SDL_keyboard.h"
-#include "SDL_mouse.h"
-#include "SDL_joystick.h"
-#include "SDL_gamecontroller.h"
-#include "SDL_quit.h"
-#include "SDL_gesture.h"
-#include "SDL_touch.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* General keyboard/mouse state definitions */
-#define SDL_RELEASED    0
-#define SDL_PRESSED 1
-
-/**
- * \brief The types of events that can be delivered.
- */
-typedef enum
-{
-    SDL_FIRSTEVENT     = 0,     /**< Unused (do not remove) */
-
-    /* Application events */
-    SDL_QUIT           = 0x100, /**< User-requested quit */
-
-    /* These application events have special meaning on iOS, see README-ios.md for details */
-    SDL_APP_TERMINATING,        /**< The application is being terminated by the OS
-                                     Called on iOS in applicationWillTerminate()
-                                     Called on Android in onDestroy()
-                                */
-    SDL_APP_LOWMEMORY,          /**< The application is low on memory, free memory if possible.
-                                     Called on iOS in applicationDidReceiveMemoryWarning()
-                                     Called on Android in onLowMemory()
-                                */
-    SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
-                                     Called on iOS in applicationWillResignActive()
-                                     Called on Android in onPause()
-                                */
-    SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
-                                     Called on iOS in applicationDidEnterBackground()
-                                     Called on Android in onPause()
-                                */
-    SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
-                                     Called on iOS in applicationWillEnterForeground()
-                                     Called on Android in onResume()
-                                */
-    SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
-                                     Called on iOS in applicationDidBecomeActive()
-                                     Called on Android in onResume()
-                                */
-
-    /* Display events */
-    SDL_DISPLAYEVENT   = 0x150,  /**< Display state change */
-
-    /* Window events */
-    SDL_WINDOWEVENT    = 0x200, /**< Window state change */
-    SDL_SYSWMEVENT,             /**< System specific event */
-
-    /* Keyboard events */
-    SDL_KEYDOWN        = 0x300, /**< Key pressed */
-    SDL_KEYUP,                  /**< Key released */
-    SDL_TEXTEDITING,            /**< Keyboard text editing (composition) */
-    SDL_TEXTINPUT,              /**< Keyboard text input */
-    SDL_KEYMAPCHANGED,          /**< Keymap changed due to a system event such as an
-                                     input language or keyboard layout change.
-                                */
-
-    /* Mouse events */
-    SDL_MOUSEMOTION    = 0x400, /**< Mouse moved */
-    SDL_MOUSEBUTTONDOWN,        /**< Mouse button pressed */
-    SDL_MOUSEBUTTONUP,          /**< Mouse button released */
-    SDL_MOUSEWHEEL,             /**< Mouse wheel motion */
-
-    /* Joystick events */
-    SDL_JOYAXISMOTION  = 0x600, /**< Joystick axis motion */
-    SDL_JOYBALLMOTION,          /**< Joystick trackball motion */
-    SDL_JOYHATMOTION,           /**< Joystick hat position change */
-    SDL_JOYBUTTONDOWN,          /**< Joystick button pressed */
-    SDL_JOYBUTTONUP,            /**< Joystick button released */
-    SDL_JOYDEVICEADDED,         /**< A new joystick has been inserted into the system */
-    SDL_JOYDEVICEREMOVED,       /**< An opened joystick has been removed */
-
-    /* Game controller events */
-    SDL_CONTROLLERAXISMOTION  = 0x650, /**< Game controller axis motion */
-    SDL_CONTROLLERBUTTONDOWN,          /**< Game controller button pressed */
-    SDL_CONTROLLERBUTTONUP,            /**< Game controller button released */
-    SDL_CONTROLLERDEVICEADDED,         /**< A new Game controller has been inserted into the system */
-    SDL_CONTROLLERDEVICEREMOVED,       /**< An opened Game controller has been removed */
-    SDL_CONTROLLERDEVICEREMAPPED,      /**< The controller mapping was updated */
-
-    /* Touch events */
-    SDL_FINGERDOWN      = 0x700,
-    SDL_FINGERUP,
-    SDL_FINGERMOTION,
-
-    /* Gesture events */
-    SDL_DOLLARGESTURE   = 0x800,
-    SDL_DOLLARRECORD,
-    SDL_MULTIGESTURE,
-
-    /* Clipboard events */
-    SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */
-
-    /* Drag and drop events */
-    SDL_DROPFILE        = 0x1000, /**< The system requests a file open */
-    SDL_DROPTEXT,                 /**< text/plain drag-and-drop event */
-    SDL_DROPBEGIN,                /**< A new set of drops is beginning (NULL filename) */
-    SDL_DROPCOMPLETE,             /**< Current set of drops is now complete (NULL filename) */
-
-    /* Audio hotplug events */
-    SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
-    SDL_AUDIODEVICEREMOVED,        /**< An audio device has been removed. */
-
-    /* Sensor events */
-    SDL_SENSORUPDATE = 0x1200,     /**< A sensor was updated */
-
-    /* Render events */
-    SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
-    SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
-
-    /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
-     *  and should be allocated with SDL_RegisterEvents()
-     */
-    SDL_USEREVENT    = 0x8000,
-
-    /**
-     *  This last event is only for bounding internal arrays
-     */
-    SDL_LASTEVENT    = 0xFFFF
-} SDL_EventType;
-
-/**
- *  \brief Fields shared by every event
- */
-typedef struct SDL_CommonEvent
-{
-    Uint32 type;
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_CommonEvent;
-
-/**
- *  \brief Display state change event data (event.display.*)
- */
-typedef struct SDL_DisplayEvent
-{
-    Uint32 type;        /**< ::SDL_DISPLAYEVENT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 display;     /**< The associated display index */
-    Uint8 event;        /**< ::SDL_DisplayEventID */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint32 data1;       /**< event dependent data */
-} SDL_DisplayEvent;
-
-/**
- *  \brief Window state change event data (event.window.*)
- */
-typedef struct SDL_WindowEvent
-{
-    Uint32 type;        /**< ::SDL_WINDOWEVENT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The associated window */
-    Uint8 event;        /**< ::SDL_WindowEventID */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint32 data1;       /**< event dependent data */
-    Sint32 data2;       /**< event dependent data */
-} SDL_WindowEvent;
-
-/**
- *  \brief Keyboard button event structure (event.key.*)
- */
-typedef struct SDL_KeyboardEvent
-{
-    Uint32 type;        /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with keyboard focus, if any */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 repeat;       /**< Non-zero if this is a key repeat */
-    Uint8 padding2;
-    Uint8 padding3;
-    SDL_Keysym keysym;  /**< The key that was pressed or released */
-} SDL_KeyboardEvent;
-
-#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
-/**
- *  \brief Keyboard text editing event structure (event.edit.*)
- */
-typedef struct SDL_TextEditingEvent
-{
-    Uint32 type;                                /**< ::SDL_TEXTEDITING */
-    Uint32 timestamp;                           /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;                            /**< The window with keyboard focus, if any */
-    char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE];  /**< The editing text */
-    Sint32 start;                               /**< The start cursor of selected editing text */
-    Sint32 length;                              /**< The length of selected editing text */
-} SDL_TextEditingEvent;
-
-
-#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
-/**
- *  \brief Keyboard text input event structure (event.text.*)
- */
-typedef struct SDL_TextInputEvent
-{
-    Uint32 type;                              /**< ::SDL_TEXTINPUT */
-    Uint32 timestamp;                         /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;                          /**< The window with keyboard focus, if any */
-    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];  /**< The input text */
-} SDL_TextInputEvent;
-
-/**
- *  \brief Mouse motion event structure (event.motion.*)
- */
-typedef struct SDL_MouseMotionEvent
-{
-    Uint32 type;        /**< ::SDL_MOUSEMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
-    Uint32 state;       /**< The current button state */
-    Sint32 x;           /**< X coordinate, relative to window */
-    Sint32 y;           /**< Y coordinate, relative to window */
-    Sint32 xrel;        /**< The relative motion in the X direction */
-    Sint32 yrel;        /**< The relative motion in the Y direction */
-} SDL_MouseMotionEvent;
-
-/**
- *  \brief Mouse button event structure (event.button.*)
- */
-typedef struct SDL_MouseButtonEvent
-{
-    Uint32 type;        /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
-    Uint8 button;       /**< The mouse button index */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 clicks;       /**< 1 for single-click, 2 for double-click, etc. */
-    Uint8 padding1;
-    Sint32 x;           /**< X coordinate, relative to window */
-    Sint32 y;           /**< Y coordinate, relative to window */
-} SDL_MouseButtonEvent;
-
-/**
- *  \brief Mouse wheel event structure (event.wheel.*)
- */
-typedef struct SDL_MouseWheelEvent
-{
-    Uint32 type;        /**< ::SDL_MOUSEWHEEL */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
-    Sint32 x;           /**< The amount scrolled horizontally, positive to the right and negative to the left */
-    Sint32 y;           /**< The amount scrolled vertically, positive away from the user and negative toward the user */
-    Uint32 direction;   /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
-} SDL_MouseWheelEvent;
-
-/**
- *  \brief Joystick axis motion event structure (event.jaxis.*)
- */
-typedef struct SDL_JoyAxisEvent
-{
-    Uint32 type;        /**< ::SDL_JOYAXISMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 axis;         /**< The joystick axis index */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
-    Uint16 padding4;
-} SDL_JoyAxisEvent;
-
-/**
- *  \brief Joystick trackball motion event structure (event.jball.*)
- */
-typedef struct SDL_JoyBallEvent
-{
-    Uint32 type;        /**< ::SDL_JOYBALLMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 ball;         /**< The joystick trackball index */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint16 xrel;        /**< The relative motion in the X direction */
-    Sint16 yrel;        /**< The relative motion in the Y direction */
-} SDL_JoyBallEvent;
-
-/**
- *  \brief Joystick hat position change event structure (event.jhat.*)
- */
-typedef struct SDL_JoyHatEvent
-{
-    Uint32 type;        /**< ::SDL_JOYHATMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 hat;          /**< The joystick hat index */
-    Uint8 value;        /**< The hat position value.
-                         *   \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
-                         *   \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
-                         *   \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
-                         *
-                         *   Note that zero means the POV is centered.
-                         */
-    Uint8 padding1;
-    Uint8 padding2;
-} SDL_JoyHatEvent;
-
-/**
- *  \brief Joystick button event structure (event.jbutton.*)
- */
-typedef struct SDL_JoyButtonEvent
-{
-    Uint32 type;        /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 button;       /**< The joystick button index */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 padding1;
-    Uint8 padding2;
-} SDL_JoyButtonEvent;
-
-/**
- *  \brief Joystick device event structure (event.jdevice.*)
- */
-typedef struct SDL_JoyDeviceEvent
-{
-    Uint32 type;        /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
-} SDL_JoyDeviceEvent;
-
-
-/**
- *  \brief Game controller axis motion event structure (event.caxis.*)
- */
-typedef struct SDL_ControllerAxisEvent
-{
-    Uint32 type;        /**< ::SDL_CONTROLLERAXISMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 axis;         /**< The controller axis (SDL_GameControllerAxis) */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
-    Uint16 padding4;
-} SDL_ControllerAxisEvent;
-
-
-/**
- *  \brief Game controller button event structure (event.cbutton.*)
- */
-typedef struct SDL_ControllerButtonEvent
-{
-    Uint32 type;        /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 button;       /**< The controller button (SDL_GameControllerButton) */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 padding1;
-    Uint8 padding2;
-} SDL_ControllerButtonEvent;
-
-
-/**
- *  \brief Controller device event structure (event.cdevice.*)
- */
-typedef struct SDL_ControllerDeviceEvent
-{
-    Uint32 type;        /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
-} SDL_ControllerDeviceEvent;
-
-/**
- *  \brief Audio device event structure (event.adevice.*)
- */
-typedef struct SDL_AudioDeviceEvent
-{
-    Uint32 type;        /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 which;       /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
-    Uint8 iscapture;    /**< zero if an output device, non-zero if a capture device. */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-} SDL_AudioDeviceEvent;
-
-
-/**
- *  \brief Touch finger event structure (event.tfinger.*)
- */
-typedef struct SDL_TouchFingerEvent
-{
-    Uint32 type;        /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_TouchID touchId; /**< The touch device id */
-    SDL_FingerID fingerId;
-    float x;            /**< Normalized in the range 0...1 */
-    float y;            /**< Normalized in the range 0...1 */
-    float dx;           /**< Normalized in the range -1...1 */
-    float dy;           /**< Normalized in the range -1...1 */
-    float pressure;     /**< Normalized in the range 0...1 */
-} SDL_TouchFingerEvent;
-
-
-/**
- *  \brief Multiple Finger Gesture Event (event.mgesture.*)
- */
-typedef struct SDL_MultiGestureEvent
-{
-    Uint32 type;        /**< ::SDL_MULTIGESTURE */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_TouchID touchId; /**< The touch device id */
-    float dTheta;
-    float dDist;
-    float x;
-    float y;
-    Uint16 numFingers;
-    Uint16 padding;
-} SDL_MultiGestureEvent;
-
-
-/**
- * \brief Dollar Gesture Event (event.dgesture.*)
- */
-typedef struct SDL_DollarGestureEvent
-{
-    Uint32 type;        /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_TouchID touchId; /**< The touch device id */
-    SDL_GestureID gestureId;
-    Uint32 numFingers;
-    float error;
-    float x;            /**< Normalized center of gesture */
-    float y;            /**< Normalized center of gesture */
-} SDL_DollarGestureEvent;
-
-
-/**
- *  \brief An event used to request a file open by the system (event.drop.*)
- *         This event is enabled by default, you can disable it with SDL_EventState().
- *  \note If this event is enabled, you must free the filename in the event.
- */
-typedef struct SDL_DropEvent
-{
-    Uint32 type;        /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    char *file;         /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
-    Uint32 windowID;    /**< The window that was dropped on, if any */
-} SDL_DropEvent;
-
-
-/**
- *  \brief Sensor event structure (event.sensor.*)
- */
-typedef struct SDL_SensorEvent
-{
-    Uint32 type;        /**< ::SDL_SENSORUPDATE */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Sint32 which;       /**< The instance ID of the sensor */
-    float data[6];      /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */
-} SDL_SensorEvent;
-
-/**
- *  \brief The "quit requested" event
- */
-typedef struct SDL_QuitEvent
-{
-    Uint32 type;        /**< ::SDL_QUIT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_QuitEvent;
-
-/**
- *  \brief OS Specific event
- */
-typedef struct SDL_OSEvent
-{
-    Uint32 type;        /**< ::SDL_QUIT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_OSEvent;
-
-/**
- *  \brief A user-defined event type (event.user.*)
- */
-typedef struct SDL_UserEvent
-{
-    Uint32 type;        /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The associated window if any */
-    Sint32 code;        /**< User defined event code */
-    void *data1;        /**< User defined data pointer */
-    void *data2;        /**< User defined data pointer */
-} SDL_UserEvent;
-
-
-struct SDL_SysWMmsg;
-typedef struct SDL_SysWMmsg SDL_SysWMmsg;
-
-/**
- *  \brief A video driver dependent system event (event.syswm.*)
- *         This event is disabled by default, you can enable it with SDL_EventState()
- *
- *  \note If you want to use this event, you should include SDL_syswm.h.
- */
-typedef struct SDL_SysWMEvent
-{
-    Uint32 type;        /**< ::SDL_SYSWMEVENT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_SysWMmsg *msg;  /**< driver dependent data, defined in SDL_syswm.h */
-} SDL_SysWMEvent;
-
-/**
- *  \brief General event structure
- */
-typedef union SDL_Event
-{
-    Uint32 type;                    /**< Event type, shared with all events */
-    SDL_CommonEvent common;         /**< Common event data */
-    SDL_DisplayEvent display;       /**< Window event data */
-    SDL_WindowEvent window;         /**< Window event data */
-    SDL_KeyboardEvent key;          /**< Keyboard event data */
-    SDL_TextEditingEvent edit;      /**< Text editing event data */
-    SDL_TextInputEvent text;        /**< Text input event data */
-    SDL_MouseMotionEvent motion;    /**< Mouse motion event data */
-    SDL_MouseButtonEvent button;    /**< Mouse button event data */
-    SDL_MouseWheelEvent wheel;      /**< Mouse wheel event data */
-    SDL_JoyAxisEvent jaxis;         /**< Joystick axis event data */
-    SDL_JoyBallEvent jball;         /**< Joystick ball event data */
-    SDL_JoyHatEvent jhat;           /**< Joystick hat event data */
-    SDL_JoyButtonEvent jbutton;     /**< Joystick button event data */
-    SDL_JoyDeviceEvent jdevice;     /**< Joystick device change event data */
-    SDL_ControllerAxisEvent caxis;      /**< Game Controller axis event data */
-    SDL_ControllerButtonEvent cbutton;  /**< Game Controller button event data */
-    SDL_ControllerDeviceEvent cdevice;  /**< Game Controller device event data */
-    SDL_AudioDeviceEvent adevice;   /**< Audio device event data */
-    SDL_SensorEvent sensor;         /**< Sensor event data */
-    SDL_QuitEvent quit;             /**< Quit request event data */
-    SDL_UserEvent user;             /**< Custom event data */
-    SDL_SysWMEvent syswm;           /**< System dependent window event data */
-    SDL_TouchFingerEvent tfinger;   /**< Touch finger event data */
-    SDL_MultiGestureEvent mgesture; /**< Gesture event data */
-    SDL_DollarGestureEvent dgesture; /**< Gesture event data */
-    SDL_DropEvent drop;             /**< Drag and drop event data */
-
-    /* This is necessary for ABI compatibility between Visual C++ and GCC
-       Visual C++ will respect the push pack pragma and use 52 bytes for
-       this structure, and GCC will use the alignment of the largest datatype
-       within the union, which is 8 bytes.
-
-       So... we'll add padding to force the size to be 56 bytes for both.
-    */
-    Uint8 padding[56];
-} SDL_Event;
-
-/* Make sure we haven't broken binary compatibility */
-SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == 56);
-
-
-/* Function prototypes */
-
-/**
- *  Pumps the event loop, gathering events from the input devices.
- *
- *  This function updates the event queue and internal input device state.
- *
- *  This should only be run in the thread that sets the video mode.
- */
-extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
-
-/* @{ */
-typedef enum
-{
-    SDL_ADDEVENT,
-    SDL_PEEKEVENT,
-    SDL_GETEVENT
-} SDL_eventaction;
-
-/**
- *  Checks the event queue for messages and optionally returns them.
- *
- *  If \c action is ::SDL_ADDEVENT, up to \c numevents events will be added to
- *  the back of the event queue.
- *
- *  If \c action is ::SDL_PEEKEVENT, up to \c numevents events at the front
- *  of the event queue, within the specified minimum and maximum type,
- *  will be returned and will not be removed from the queue.
- *
- *  If \c action is ::SDL_GETEVENT, up to \c numevents events at the front
- *  of the event queue, within the specified minimum and maximum type,
- *  will be returned and will be removed from the queue.
- *
- *  \return The number of events actually stored, or -1 if there was an error.
- *
- *  This function is thread-safe.
- */
-extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
-                                           SDL_eventaction action,
-                                           Uint32 minType, Uint32 maxType);
-/* @} */
-
-/**
- *  Checks to see if certain event types are in the event queue.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);
-extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);
-
-/**
- *  This function clears events from the event queue
- *  This function only affects currently queued events. If you want to make
- *  sure that all pending OS events are flushed, you can call SDL_PumpEvents()
- *  on the main thread immediately before the flush call.
- */
-extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);
-extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
-
-/**
- *  \brief Polls for currently pending events.
- *
- *  \return 1 if there are any pending events, or 0 if there are none available.
- *
- *  \param event If not NULL, the next event is removed from the queue and
- *               stored in that area.
- */
-extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
-
-/**
- *  \brief Waits indefinitely for the next available event.
- *
- *  \return 1, or 0 if there was an error while waiting for events.
- *
- *  \param event If not NULL, the next event is removed from the queue and
- *               stored in that area.
- */
-extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
-
-/**
- *  \brief Waits until the specified timeout (in milliseconds) for the next
- *         available event.
- *
- *  \return 1, or 0 if there was an error while waiting for events.
- *
- *  \param event If not NULL, the next event is removed from the queue and
- *               stored in that area.
- *  \param timeout The timeout (in milliseconds) to wait for next event.
- */
-extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,
-                                                 int timeout);
-
-/**
- *  \brief Add an event to the event queue.
- *
- *  \return 1 on success, 0 if the event was filtered, or -1 if the event queue
- *          was full or there was some other error.
- */
-extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
-
-typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
-
-/**
- *  Sets up a filter to process all events before they change internal state and
- *  are posted to the internal event queue.
- *
- *  The filter is prototyped as:
- *  \code
- *      int SDL_EventFilter(void *userdata, SDL_Event * event);
- *  \endcode
- *
- *  If the filter returns 1, then the event will be added to the internal queue.
- *  If it returns 0, then the event will be dropped from the queue, but the
- *  internal state will still be updated.  This allows selective filtering of
- *  dynamically arriving events.
- *
- *  \warning  Be very careful of what you do in the event filter function, as
- *            it may run in a different thread!
- *
- *  There is one caveat when dealing with the ::SDL_QuitEvent event type.  The
- *  event filter is only called when the window manager desires to close the
- *  application window.  If the event filter returns 1, then the window will
- *  be closed, otherwise the window will remain open if possible.
- *
- *  If the quit event is generated by an interrupt signal, it will bypass the
- *  internal queue and be delivered to the application at the next event poll.
- */
-extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,
-                                                void *userdata);
-
-/**
- *  Return the current event filter - can be used to "chain" filters.
- *  If there is no event filter set, this function returns SDL_FALSE.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,
-                                                    void **userdata);
-
-/**
- *  Add a function which is called when an event is added to the queue.
- */
-extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
-                                               void *userdata);
-
-/**
- *  Remove an event watch function added with SDL_AddEventWatch()
- */
-extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
-                                               void *userdata);
-
-/**
- *  Run the filter function on the current event queue, removing any
- *  events for which the filter returns 0.
- */
-extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,
-                                              void *userdata);
-
-/* @{ */
-#define SDL_QUERY   -1
-#define SDL_IGNORE   0
-#define SDL_DISABLE  0
-#define SDL_ENABLE   1
-
-/**
- *  This function allows you to set the state of processing certain events.
- *   - If \c state is set to ::SDL_IGNORE, that event will be automatically
- *     dropped from the event queue and will not be filtered.
- *   - If \c state is set to ::SDL_ENABLE, that event will be processed
- *     normally.
- *   - If \c state is set to ::SDL_QUERY, SDL_EventState() will return the
- *     current processing state of the specified event.
- */
-extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
-/* @} */
-#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)
-
-/**
- *  This function allocates a set of user-defined events, and returns
- *  the beginning event number for that set of events.
- *
- *  If there aren't enough user-defined events left, this function
- *  returns (Uint32)-1
- */
-extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_events_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_filesystem.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_filesystem.h
deleted file mode 100644 (file)
index 6d97e58..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_filesystem.h
- *
- *  \brief Include file for filesystem SDL API functions
- */
-
-#ifndef SDL_filesystem_h_
-#define SDL_filesystem_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Get the path where the application resides.
- *
- * Get the "base path". This is the directory where the application was run
- *  from, which is probably the installation directory, and may or may not
- *  be the process's current working directory.
- *
- * This returns an absolute path in UTF-8 encoding, and is guaranteed to
- *  end with a path separator ('\\' on Windows, '/' most other places).
- *
- * The pointer returned by this function is owned by you. Please call
- *  SDL_free() on the pointer when you are done with it, or it will be a
- *  memory leak. This is not necessarily a fast call, though, so you should
- *  call this once near startup and save the string if you need it.
- *
- * Some platforms can't determine the application's path, and on other
- *  platforms, this might be meaningless. In such cases, this function will
- *  return NULL.
- *
- *  \return String of base dir in UTF-8 encoding, or NULL on error.
- *
- * \sa SDL_GetPrefPath
- */
-extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
-
-/**
- * \brief Get the user-and-app-specific path where files can be written.
- *
- * Get the "pref dir". This is meant to be where users can write personal
- *  files (preferences and save games, etc) that are specific to your
- *  application. This directory is unique per user, per application.
- *
- * This function will decide the appropriate location in the native filesystem,
- *  create the directory if necessary, and return a string of the absolute
- *  path to the directory in UTF-8 encoding.
- *
- * On Windows, the string might look like:
- *  "C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\"
- *
- * On Linux, the string might look like:
- *  "/home/bob/.local/share/My Program Name/"
- *
- * On Mac OS X, the string might look like:
- *  "/Users/bob/Library/Application Support/My Program Name/"
- *
- * (etc.)
- *
- * You specify the name of your organization (if it's not a real organization,
- *  your name or an Internet domain you own might do) and the name of your
- *  application. These should be untranslated proper names.
- *
- * Both the org and app strings may become part of a directory name, so
- *  please follow these rules:
- *
- *    - Try to use the same org string (including case-sensitivity) for
- *      all your applications that use this function.
- *    - Always use a unique app string for each one, and make sure it never
- *      changes for an app once you've decided on it.
- *    - Unicode characters are legal, as long as it's UTF-8 encoded, but...
- *    - ...only use letters, numbers, and spaces. Avoid punctuation like
- *      "Game Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
- *
- * This returns an absolute path in UTF-8 encoding, and is guaranteed to
- *  end with a path separator ('\\' on Windows, '/' most other places).
- *
- * The pointer returned by this function is owned by you. Please call
- *  SDL_free() on the pointer when you are done with it, or it will be a
- *  memory leak. This is not necessarily a fast call, though, so you should
- *  call this once near startup and save the string if you need it.
- *
- * You should assume the path returned by this function is the only safe
- *  place to write files (and that SDL_GetBasePath(), while it might be
- *  writable, or even the parent of the returned path, aren't where you
- *  should be writing things).
- *
- * Some platforms can't determine the pref path, and on other
- *  platforms, this might be meaningless. In such cases, this function will
- *  return NULL.
- *
- *   \param org The name of your organization.
- *   \param app The name of your application.
- *  \return UTF-8 string of user dir in platform-dependent notation. NULL
- *          if there's a problem (creating directory failed, etc).
- *
- * \sa SDL_GetBasePath
- */
-extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_filesystem_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_gamecontroller.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_gamecontroller.h
deleted file mode 100644 (file)
index ebde387..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_gamecontroller.h
- *
- *  Include file for SDL game controller event handling
- */
-
-#ifndef SDL_gamecontroller_h_
-#define SDL_gamecontroller_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_rwops.h"
-#include "SDL_joystick.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_gamecontroller.h
- *
- *  In order to use these functions, SDL_Init() must have been called
- *  with the ::SDL_INIT_GAMECONTROLLER flag.  This causes SDL to scan the system
- *  for game controllers, and load appropriate drivers.
- *
- *  If you would like to receive controller updates while the application
- *  is in the background, you should set the following hint before calling
- *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
- */
-
-/**
- * The gamecontroller structure used to identify an SDL game controller
- */
-struct _SDL_GameController;
-typedef struct _SDL_GameController SDL_GameController;
-
-
-typedef enum
-{
-    SDL_CONTROLLER_BINDTYPE_NONE = 0,
-    SDL_CONTROLLER_BINDTYPE_BUTTON,
-    SDL_CONTROLLER_BINDTYPE_AXIS,
-    SDL_CONTROLLER_BINDTYPE_HAT
-} SDL_GameControllerBindType;
-
-/**
- *  Get the SDL joystick layer binding for this controller button/axis mapping
- */
-typedef struct SDL_GameControllerButtonBind
-{
-    SDL_GameControllerBindType bindType;
-    union
-    {
-        int button;
-        int axis;
-        struct {
-            int hat;
-            int hat_mask;
-        } hat;
-    } value;
-
-} SDL_GameControllerButtonBind;
-
-
-/**
- *  To count the number of game controllers in the system for the following:
- *  int nJoysticks = SDL_NumJoysticks();
- *  int nGameControllers = 0;
- *  for (int i = 0; i < nJoysticks; i++) {
- *      if (SDL_IsGameController(i)) {
- *          nGameControllers++;
- *      }
- *  }
- *
- *  Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is:
- *  guid,name,mappings
- *
- *  Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones.
- *  Under Windows there is a reserved GUID of "xinput" that covers any XInput devices.
- *  The mapping format for joystick is:
- *      bX - a joystick button, index X
- *      hX.Y - hat X with value Y
- *      aX - axis X of the joystick
- *  Buttons can be used as a controller axis and vice versa.
- *
- *  This string shows an example of a valid mapping for a controller
- *  "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7",
- *
- */
-
-/**
- *  Load a set of mappings from a seekable SDL data stream (memory or file), filtered by the current SDL_GetPlatform()
- *  A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
- *
- *  If \c freerw is non-zero, the stream will be closed after being read.
- * 
- * \return number of mappings added, -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw);
-
-/**
- *  Load a set of mappings from a file, filtered by the current SDL_GetPlatform()
- *
- *  Convenience macro.
- */
-#define SDL_GameControllerAddMappingsFromFile(file)   SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
-
-/**
- *  Add or update an existing mapping configuration
- *
- * \return 1 if mapping is added, 0 if updated, -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString);
-
-/**
- *  Get the number of mappings installed
- *
- *  \return the number of mappings
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void);
-
-/**
- *  Get the mapping at a particular index.
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if the index is out of range.
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index);
-
-/**
- *  Get a mapping string for a GUID
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if no mapping is available
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid);
-
-/**
- *  Get a mapping string for an open GameController
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if no mapping is available
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController * gamecontroller);
-
-/**
- *  Is the joystick on this index supported by the game controller interface?
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
-
-/**
- *  Get the implementation dependent name of a game controller.
- *  This can be called before any controllers are opened.
- *  If no name can be found, this function returns NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index);
-
-/**
- *  Get the mapping of a game controller.
- *  This can be called before any controllers are opened.
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if no mapping is available
- */
-extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index);
-
-/**
- *  Open a game controller for use.
- *  The index passed as an argument refers to the N'th game controller on the system.
- *  This index is not the value which will identify this controller in future
- *  controller events.  The joystick's instance id (::SDL_JoystickID) will be
- *  used there instead.
- *
- *  \return A controller identifier, or NULL if an error occurred.
- */
-extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
-
-/**
- * Return the SDL_GameController associated with an instance id.
- */
-extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);
-
-/**
- *  Return the name for this currently opened controller
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller);
-
-/**
- *  Get the player index of an opened game controller, or -1 if it's not available
- *
- *  For XInput controllers this returns the XInput user index.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller);
-
-/**
- *  Get the USB vendor ID of an opened controller, if available.
- *  If the vendor ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController * gamecontroller);
-
-/**
- *  Get the USB product ID of an opened controller, if available.
- *  If the product ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController * gamecontroller);
-
-/**
- *  Get the product version of an opened controller, if available.
- *  If the product version isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController * gamecontroller);
-
-/**
- *  Returns SDL_TRUE if the controller has been opened and currently connected,
- *  or SDL_FALSE if it has not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller);
-
-/**
- *  Get the underlying joystick object used by a controller
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller);
-
-/**
- *  Enable/disable controller event polling.
- *
- *  If controller events are disabled, you must call SDL_GameControllerUpdate()
- *  yourself and check the state of the controller when you want controller
- *  information.
- *
- *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state);
-
-/**
- *  Update the current state of the open game controllers.
- *
- *  This is called automatically by the event loop if any game controller
- *  events are enabled.
- */
-extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
-
-
-/**
- *  The list of axes available from a controller
- *
- *  Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX,
- *  and are centered within ~8000 of zero, though advanced UI will allow users to set
- *  or autodetect the dead zone, which varies between controllers.
- *
- *  Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX.
- */
-typedef enum
-{
-    SDL_CONTROLLER_AXIS_INVALID = -1,
-    SDL_CONTROLLER_AXIS_LEFTX,
-    SDL_CONTROLLER_AXIS_LEFTY,
-    SDL_CONTROLLER_AXIS_RIGHTX,
-    SDL_CONTROLLER_AXIS_RIGHTY,
-    SDL_CONTROLLER_AXIS_TRIGGERLEFT,
-    SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
-    SDL_CONTROLLER_AXIS_MAX
-} SDL_GameControllerAxis;
-
-/**
- *  turn this string into a axis mapping
- */
-extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *pchString);
-
-/**
- *  turn this axis enum into a string mapping
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis);
-
-/**
- *  Get the SDL joystick layer binding for this controller button mapping
- */
-extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
-SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,
-                                 SDL_GameControllerAxis axis);
-
-/**
- *  Get the current state of an axis control on a game controller.
- *
- *  The state is a value ranging from -32768 to 32767 (except for the triggers,
- *  which range from 0 to 32767).
- *
- *  The axis indices start at index 0.
- */
-extern DECLSPEC Sint16 SDLCALL
-SDL_GameControllerGetAxis(SDL_GameController *gamecontroller,
-                          SDL_GameControllerAxis axis);
-
-/**
- *  The list of buttons available from a controller
- */
-typedef enum
-{
-    SDL_CONTROLLER_BUTTON_INVALID = -1,
-    SDL_CONTROLLER_BUTTON_A,
-    SDL_CONTROLLER_BUTTON_B,
-    SDL_CONTROLLER_BUTTON_X,
-    SDL_CONTROLLER_BUTTON_Y,
-    SDL_CONTROLLER_BUTTON_BACK,
-    SDL_CONTROLLER_BUTTON_GUIDE,
-    SDL_CONTROLLER_BUTTON_START,
-    SDL_CONTROLLER_BUTTON_LEFTSTICK,
-    SDL_CONTROLLER_BUTTON_RIGHTSTICK,
-    SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
-    SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
-    SDL_CONTROLLER_BUTTON_DPAD_UP,
-    SDL_CONTROLLER_BUTTON_DPAD_DOWN,
-    SDL_CONTROLLER_BUTTON_DPAD_LEFT,
-    SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
-    SDL_CONTROLLER_BUTTON_MAX
-} SDL_GameControllerButton;
-
-/**
- *  turn this string into a button mapping
- */
-extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *pchString);
-
-/**
- *  turn this button enum into a string mapping
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button);
-
-/**
- *  Get the SDL joystick layer binding for this controller button mapping
- */
-extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
-SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,
-                                   SDL_GameControllerButton button);
-
-
-/**
- *  Get the current state of a button on a game controller.
- *
- *  The button indices start at index 0.
- */
-extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller,
-                                                          SDL_GameControllerButton button);
-
-/**
- *  Trigger a rumble effect
- *  Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling.
- *
- *  \param gamecontroller The controller to vibrate
- *  \param low_frequency_rumble The intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF
- *  \param high_frequency_rumble The intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF
- *  \param duration_ms The duration of the rumble effect, in milliseconds
- *
- *  \return 0, or -1 if rumble isn't supported on this joystick
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
-
-/**
- *  Close a controller previously opened with SDL_GameControllerOpen().
- */
-extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_gamecontroller_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_gesture.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_gesture.h
deleted file mode 100644 (file)
index 9d25e9c..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_gesture.h
- *
- *  Include file for SDL gesture event handling.
- */
-
-#ifndef SDL_gesture_h_
-#define SDL_gesture_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "SDL_touch.h"
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef Sint64 SDL_GestureID;
-
-/* Function prototypes */
-
-/**
- *  \brief Begin Recording a gesture on the specified touch, or all touches (-1)
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId);
-
-
-/**
- *  \brief Save all currently loaded Dollar Gesture templates
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst);
-
-/**
- *  \brief Save a currently loaded Dollar Gesture template
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst);
-
-
-/**
- *  \brief Load Dollar Gesture templates from a file
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_gesture_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_haptic.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_haptic.h
deleted file mode 100644 (file)
index 0756276..0000000
+++ /dev/null
@@ -1,1238 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_haptic.h
- *
- *  \brief The SDL haptic subsystem allows you to control haptic (force feedback)
- *         devices.
- *
- *  The basic usage is as follows:
- *   - Initialize the subsystem (::SDL_INIT_HAPTIC).
- *   - Open a haptic device.
- *    - SDL_HapticOpen() to open from index.
- *    - SDL_HapticOpenFromJoystick() to open from an existing joystick.
- *   - Create an effect (::SDL_HapticEffect).
- *   - Upload the effect with SDL_HapticNewEffect().
- *   - Run the effect with SDL_HapticRunEffect().
- *   - (optional) Free the effect with SDL_HapticDestroyEffect().
- *   - Close the haptic device with SDL_HapticClose().
- *
- * \par Simple rumble example:
- * \code
- *    SDL_Haptic *haptic;
- *
- *    // Open the device
- *    haptic = SDL_HapticOpen( 0 );
- *    if (haptic == NULL)
- *       return -1;
- *
- *    // Initialize simple rumble
- *    if (SDL_HapticRumbleInit( haptic ) != 0)
- *       return -1;
- *
- *    // Play effect at 50% strength for 2 seconds
- *    if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0)
- *       return -1;
- *    SDL_Delay( 2000 );
- *
- *    // Clean up
- *    SDL_HapticClose( haptic );
- * \endcode
- *
- * \par Complete example:
- * \code
- * int test_haptic( SDL_Joystick * joystick ) {
- *    SDL_Haptic *haptic;
- *    SDL_HapticEffect effect;
- *    int effect_id;
- *
- *    // Open the device
- *    haptic = SDL_HapticOpenFromJoystick( joystick );
- *    if (haptic == NULL) return -1; // Most likely joystick isn't haptic
- *
- *    // See if it can do sine waves
- *    if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) {
- *       SDL_HapticClose(haptic); // No sine effect
- *       return -1;
- *    }
- *
- *    // Create the effect
- *    memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default
- *    effect.type = SDL_HAPTIC_SINE;
- *    effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates
- *    effect.periodic.direction.dir[0] = 18000; // Force comes from south
- *    effect.periodic.period = 1000; // 1000 ms
- *    effect.periodic.magnitude = 20000; // 20000/32767 strength
- *    effect.periodic.length = 5000; // 5 seconds long
- *    effect.periodic.attack_length = 1000; // Takes 1 second to get max strength
- *    effect.periodic.fade_length = 1000; // Takes 1 second to fade away
- *
- *    // Upload the effect
- *    effect_id = SDL_HapticNewEffect( haptic, &effect );
- *
- *    // Test the effect
- *    SDL_HapticRunEffect( haptic, effect_id, 1 );
- *    SDL_Delay( 5000); // Wait for the effect to finish
- *
- *    // We destroy the effect, although closing the device also does this
- *    SDL_HapticDestroyEffect( haptic, effect_id );
- *
- *    // Close the device
- *    SDL_HapticClose(haptic);
- *
- *    return 0; // Success
- * }
- * \endcode
- */
-
-#ifndef SDL_haptic_h_
-#define SDL_haptic_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_joystick.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF).
- *
- * At the moment the magnitude variables are mixed between signed/unsigned, and
- * it is also not made clear that ALL of those variables expect a max of 0x7FFF.
- *
- * Some platforms may have higher precision than that (Linux FF, Windows XInput)
- * so we should fix the inconsistency in favor of higher possible precision,
- * adjusting for platforms that use different scales.
- * -flibit
- */
-
-/**
- *  \typedef SDL_Haptic
- *
- *  \brief The haptic structure used to identify an SDL haptic.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticOpenFromJoystick
- *  \sa SDL_HapticClose
- */
-struct _SDL_Haptic;
-typedef struct _SDL_Haptic SDL_Haptic;
-
-
-/**
- *  \name Haptic features
- *
- *  Different haptic features a device can have.
- */
-/* @{ */
-
-/**
- *  \name Haptic effects
- */
-/* @{ */
-
-/**
- *  \brief Constant effect supported.
- *
- *  Constant haptic effect.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_CONSTANT   (1u<<0)
-
-/**
- *  \brief Sine wave effect supported.
- *
- *  Periodic haptic effect that simulates sine waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SINE       (1u<<1)
-
-/**
- *  \brief Left/Right effect supported.
- *
- *  Haptic effect for direct control over high/low frequency motors.
- *
- *  \sa SDL_HapticLeftRight
- * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry,
- *          we ran out of bits, and this is important for XInput devices.
- */
-#define SDL_HAPTIC_LEFTRIGHT     (1u<<2)
-
-/* !!! FIXME: put this back when we have more bits in 2.1 */
-/* #define SDL_HAPTIC_SQUARE     (1<<2) */
-
-/**
- *  \brief Triangle wave effect supported.
- *
- *  Periodic haptic effect that simulates triangular waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_TRIANGLE   (1u<<3)
-
-/**
- *  \brief Sawtoothup wave effect supported.
- *
- *  Periodic haptic effect that simulates saw tooth up waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SAWTOOTHUP (1u<<4)
-
-/**
- *  \brief Sawtoothdown wave effect supported.
- *
- *  Periodic haptic effect that simulates saw tooth down waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5)
-
-/**
- *  \brief Ramp effect supported.
- *
- *  Ramp haptic effect.
- *
- *  \sa SDL_HapticRamp
- */
-#define SDL_HAPTIC_RAMP       (1u<<6)
-
-/**
- *  \brief Spring effect supported - uses axes position.
- *
- *  Condition haptic effect that simulates a spring.  Effect is based on the
- *  axes position.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_SPRING     (1u<<7)
-
-/**
- *  \brief Damper effect supported - uses axes velocity.
- *
- *  Condition haptic effect that simulates dampening.  Effect is based on the
- *  axes velocity.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_DAMPER     (1u<<8)
-
-/**
- *  \brief Inertia effect supported - uses axes acceleration.
- *
- *  Condition haptic effect that simulates inertia.  Effect is based on the axes
- *  acceleration.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_INERTIA    (1u<<9)
-
-/**
- *  \brief Friction effect supported - uses axes movement.
- *
- *  Condition haptic effect that simulates friction.  Effect is based on the
- *  axes movement.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_FRICTION   (1u<<10)
-
-/**
- *  \brief Custom effect is supported.
- *
- *  User defined custom haptic effect.
- */
-#define SDL_HAPTIC_CUSTOM     (1u<<11)
-
-/* @} *//* Haptic effects */
-
-/* These last few are features the device has, not effects */
-
-/**
- *  \brief Device can set global gain.
- *
- *  Device supports setting the global gain.
- *
- *  \sa SDL_HapticSetGain
- */
-#define SDL_HAPTIC_GAIN       (1u<<12)
-
-/**
- *  \brief Device can set autocenter.
- *
- *  Device supports setting autocenter.
- *
- *  \sa SDL_HapticSetAutocenter
- */
-#define SDL_HAPTIC_AUTOCENTER (1u<<13)
-
-/**
- *  \brief Device can be queried for effect status.
- *
- *  Device supports querying effect status.
- *
- *  \sa SDL_HapticGetEffectStatus
- */
-#define SDL_HAPTIC_STATUS     (1u<<14)
-
-/**
- *  \brief Device can be paused.
- *
- *  Devices supports being paused.
- *
- *  \sa SDL_HapticPause
- *  \sa SDL_HapticUnpause
- */
-#define SDL_HAPTIC_PAUSE      (1u<<15)
-
-
-/**
- * \name Direction encodings
- */
-/* @{ */
-
-/**
- *  \brief Uses polar coordinates for the direction.
- *
- *  \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_POLAR      0
-
-/**
- *  \brief Uses cartesian coordinates for the direction.
- *
- *  \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_CARTESIAN  1
-
-/**
- *  \brief Uses spherical coordinates for the direction.
- *
- *  \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_SPHERICAL  2
-
-/* @} *//* Direction encodings */
-
-/* @} *//* Haptic features */
-
-/*
- * Misc defines.
- */
-
-/**
- * \brief Used to play a device an infinite number of times.
- *
- * \sa SDL_HapticRunEffect
- */
-#define SDL_HAPTIC_INFINITY   4294967295U
-
-
-/**
- *  \brief Structure that represents a haptic direction.
- *
- *  This is the direction where the force comes from,
- *  instead of the direction in which the force is exerted.
- *
- *  Directions can be specified by:
- *   - ::SDL_HAPTIC_POLAR : Specified by polar coordinates.
- *   - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates.
- *   - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates.
- *
- *  Cardinal directions of the haptic device are relative to the positioning
- *  of the device.  North is considered to be away from the user.
- *
- *  The following diagram represents the cardinal directions:
- *  \verbatim
-                 .--.
-                 |__| .-------.
-                 |=.| |.-----.|
-                 |--| ||     ||
-                 |  | |'-----'|
-                 |__|~')_____('
-                   [ COMPUTER ]
-
-
-                     North (0,-1)
-                         ^
-                         |
-                         |
-   (-1,0)  West <----[ HAPTIC ]----> East (1,0)
-                         |
-                         |
-                         v
-                      South (0,1)
-
-
-                      [ USER ]
-                        \|||/
-                        (o o)
-                  ---ooO-(_)-Ooo---
-    \endverbatim
- *
- *  If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a
- *  degree starting north and turning clockwise.  ::SDL_HAPTIC_POLAR only uses
- *  the first \c dir parameter.  The cardinal directions would be:
- *   - North: 0 (0 degrees)
- *   - East: 9000 (90 degrees)
- *   - South: 18000 (180 degrees)
- *   - West: 27000 (270 degrees)
- *
- *  If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions
- *  (X axis, Y axis and Z axis (with 3 axes)).  ::SDL_HAPTIC_CARTESIAN uses
- *  the first three \c dir parameters.  The cardinal directions would be:
- *   - North:  0,-1, 0
- *   - East:   1, 0, 0
- *   - South:  0, 1, 0
- *   - West:  -1, 0, 0
- *
- *  The Z axis represents the height of the effect if supported, otherwise
- *  it's unused.  In cartesian encoding (1, 2) would be the same as (2, 4), you
- *  can use any multiple you want, only the direction matters.
- *
- *  If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations.
- *  The first two \c dir parameters are used.  The \c dir parameters are as
- *  follows (all values are in hundredths of degrees):
- *   - Degrees from (1, 0) rotated towards (0, 1).
- *   - Degrees towards (0, 0, 1) (device needs at least 3 axes).
- *
- *
- *  Example of force coming from the south with all encodings (force coming
- *  from the south means the user will have to pull the stick to counteract):
- *  \code
- *  SDL_HapticDirection direction;
- *
- *  // Cartesian directions
- *  direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding.
- *  direction.dir[0] = 0; // X position
- *  direction.dir[1] = 1; // Y position
- *  // Assuming the device has 2 axes, we don't need to specify third parameter.
- *
- *  // Polar directions
- *  direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding.
- *  direction.dir[0] = 18000; // Polar only uses first parameter
- *
- *  // Spherical coordinates
- *  direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding
- *  direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters.
- *  \endcode
- *
- *  \sa SDL_HAPTIC_POLAR
- *  \sa SDL_HAPTIC_CARTESIAN
- *  \sa SDL_HAPTIC_SPHERICAL
- *  \sa SDL_HapticEffect
- *  \sa SDL_HapticNumAxes
- */
-typedef struct SDL_HapticDirection
-{
-    Uint8 type;         /**< The type of encoding. */
-    Sint32 dir[3];      /**< The encoded direction. */
-} SDL_HapticDirection;
-
-
-/**
- *  \brief A structure containing a template for a Constant effect.
- *
- *  This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect.
- *
- *  A constant effect applies a constant force in the specified direction
- *  to the joystick.
- *
- *  \sa SDL_HAPTIC_CONSTANT
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticConstant
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_CONSTANT */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Constant */
-    Sint16 level;           /**< Strength of the constant effect. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length;     /**< Duration of the fade. */
-    Uint16 fade_level;      /**< Level at the end of the fade. */
-} SDL_HapticConstant;
-
-/**
- *  \brief A structure containing a template for a Periodic effect.
- *
- *  The struct handles the following effects:
- *   - ::SDL_HAPTIC_SINE
- *   - ::SDL_HAPTIC_LEFTRIGHT
- *   - ::SDL_HAPTIC_TRIANGLE
- *   - ::SDL_HAPTIC_SAWTOOTHUP
- *   - ::SDL_HAPTIC_SAWTOOTHDOWN
- *
- *  A periodic effect consists in a wave-shaped effect that repeats itself
- *  over time.  The type determines the shape of the wave and the parameters
- *  determine the dimensions of the wave.
- *
- *  Phase is given by hundredth of a degree meaning that giving the phase a value
- *  of 9000 will displace it 25% of its period.  Here are sample values:
- *   -     0: No phase displacement.
- *   -  9000: Displaced 25% of its period.
- *   - 18000: Displaced 50% of its period.
- *   - 27000: Displaced 75% of its period.
- *   - 36000: Displaced 100% of its period, same as 0, but 0 is preferred.
- *
- *  Examples:
- *  \verbatim
-    SDL_HAPTIC_SINE
-      __      __      __      __
-     /  \    /  \    /  \    /
-    /    \__/    \__/    \__/
-
-    SDL_HAPTIC_SQUARE
-     __    __    __    __    __
-    |  |  |  |  |  |  |  |  |  |
-    |  |__|  |__|  |__|  |__|  |
-
-    SDL_HAPTIC_TRIANGLE
-      /\    /\    /\    /\    /\
-     /  \  /  \  /  \  /  \  /
-    /    \/    \/    \/    \/
-
-    SDL_HAPTIC_SAWTOOTHUP
-      /|  /|  /|  /|  /|  /|  /|
-     / | / | / | / | / | / | / |
-    /  |/  |/  |/  |/  |/  |/  |
-
-    SDL_HAPTIC_SAWTOOTHDOWN
-    \  |\  |\  |\  |\  |\  |\  |
-     \ | \ | \ | \ | \ | \ | \ |
-      \|  \|  \|  \|  \|  \|  \|
-    \endverbatim
- *
- *  \sa SDL_HAPTIC_SINE
- *  \sa SDL_HAPTIC_LEFTRIGHT
- *  \sa SDL_HAPTIC_TRIANGLE
- *  \sa SDL_HAPTIC_SAWTOOTHUP
- *  \sa SDL_HAPTIC_SAWTOOTHDOWN
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticPeriodic
-{
-    /* Header */
-    Uint16 type;        /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT,
-                             ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or
-                             ::SDL_HAPTIC_SAWTOOTHDOWN */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;      /**< Duration of the effect. */
-    Uint16 delay;       /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;      /**< Button that triggers the effect. */
-    Uint16 interval;    /**< How soon it can be triggered again after button. */
-
-    /* Periodic */
-    Uint16 period;      /**< Period of the wave. */
-    Sint16 magnitude;   /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */
-    Sint16 offset;      /**< Mean value of the wave. */
-    Uint16 phase;       /**< Positive phase shift given by hundredth of a degree. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length; /**< Duration of the fade. */
-    Uint16 fade_level;  /**< Level at the end of the fade. */
-} SDL_HapticPeriodic;
-
-/**
- *  \brief A structure containing a template for a Condition effect.
- *
- *  The struct handles the following effects:
- *   - ::SDL_HAPTIC_SPRING: Effect based on axes position.
- *   - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity.
- *   - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration.
- *   - ::SDL_HAPTIC_FRICTION: Effect based on axes movement.
- *
- *  Direction is handled by condition internals instead of a direction member.
- *  The condition effect specific members have three parameters.  The first
- *  refers to the X axis, the second refers to the Y axis and the third
- *  refers to the Z axis.  The right terms refer to the positive side of the
- *  axis and the left terms refer to the negative side of the axis.  Please
- *  refer to the ::SDL_HapticDirection diagram for which side is positive and
- *  which is negative.
- *
- *  \sa SDL_HapticDirection
- *  \sa SDL_HAPTIC_SPRING
- *  \sa SDL_HAPTIC_DAMPER
- *  \sa SDL_HAPTIC_INERTIA
- *  \sa SDL_HAPTIC_FRICTION
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticCondition
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER,
-                                 ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */
-    SDL_HapticDirection direction;  /**< Direction of the effect - Not used ATM. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Condition */
-    Uint16 right_sat[3];    /**< Level when joystick is to the positive side; max 0xFFFF. */
-    Uint16 left_sat[3];     /**< Level when joystick is to the negative side; max 0xFFFF. */
-    Sint16 right_coeff[3];  /**< How fast to increase the force towards the positive side. */
-    Sint16 left_coeff[3];   /**< How fast to increase the force towards the negative side. */
-    Uint16 deadband[3];     /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */
-    Sint16 center[3];       /**< Position of the dead zone. */
-} SDL_HapticCondition;
-
-/**
- *  \brief A structure containing a template for a Ramp effect.
- *
- *  This struct is exclusively for the ::SDL_HAPTIC_RAMP effect.
- *
- *  The ramp effect starts at start strength and ends at end strength.
- *  It augments in linear fashion.  If you use attack and fade with a ramp
- *  the effects get added to the ramp effect making the effect become
- *  quadratic instead of linear.
- *
- *  \sa SDL_HAPTIC_RAMP
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticRamp
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_RAMP */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Ramp */
-    Sint16 start;           /**< Beginning strength level. */
-    Sint16 end;             /**< Ending strength level. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length;     /**< Duration of the fade. */
-    Uint16 fade_level;      /**< Level at the end of the fade. */
-} SDL_HapticRamp;
-
-/**
- * \brief A structure containing a template for a Left/Right effect.
- *
- * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect.
- *
- * The Left/Right effect is used to explicitly control the large and small
- * motors, commonly found in modern game controllers. The small (right) motor
- * is high frequency, and the large (left) motor is low frequency.
- *
- * \sa SDL_HAPTIC_LEFTRIGHT
- * \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticLeftRight
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_LEFTRIGHT */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect in milliseconds. */
-
-    /* Rumble */
-    Uint16 large_magnitude; /**< Control of the large controller motor. */
-    Uint16 small_magnitude; /**< Control of the small controller motor. */
-} SDL_HapticLeftRight;
-
-/**
- *  \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect.
- *
- *  This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect.
- *
- *  A custom force feedback effect is much like a periodic effect, where the
- *  application can define its exact shape.  You will have to allocate the
- *  data yourself.  Data should consist of channels * samples Uint16 samples.
- *
- *  If channels is one, the effect is rotated using the defined direction.
- *  Otherwise it uses the samples in data for the different axes.
- *
- *  \sa SDL_HAPTIC_CUSTOM
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticCustom
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_CUSTOM */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Custom */
-    Uint8 channels;         /**< Axes to use, minimum of one. */
-    Uint16 period;          /**< Sample periods. */
-    Uint16 samples;         /**< Amount of samples. */
-    Uint16 *data;           /**< Should contain channels*samples items. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length;     /**< Duration of the fade. */
-    Uint16 fade_level;      /**< Level at the end of the fade. */
-} SDL_HapticCustom;
-
-/**
- *  \brief The generic template for any haptic effect.
- *
- *  All values max at 32767 (0x7FFF).  Signed values also can be negative.
- *  Time values unless specified otherwise are in milliseconds.
- *
- *  You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767
- *  value.  Neither delay, interval, attack_length nor fade_length support
- *  ::SDL_HAPTIC_INFINITY.  Fade will also not be used since effect never ends.
- *
- *  Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of
- *  ::SDL_HAPTIC_INFINITY.
- *
- *  Button triggers may not be supported on all devices, it is advised to not
- *  use them if possible.  Buttons start at index 1 instead of index 0 like
- *  the joystick.
- *
- *  If both attack_length and fade_level are 0, the envelope is not used,
- *  otherwise both values are used.
- *
- *  Common parts:
- *  \code
- *  // Replay - All effects have this
- *  Uint32 length;        // Duration of effect (ms).
- *  Uint16 delay;         // Delay before starting effect.
- *
- *  // Trigger - All effects have this
- *  Uint16 button;        // Button that triggers effect.
- *  Uint16 interval;      // How soon before effect can be triggered again.
- *
- *  // Envelope - All effects except condition effects have this
- *  Uint16 attack_length; // Duration of the attack (ms).
- *  Uint16 attack_level;  // Level at the start of the attack.
- *  Uint16 fade_length;   // Duration of the fade out (ms).
- *  Uint16 fade_level;    // Level at the end of the fade.
- *  \endcode
- *
- *
- *  Here we have an example of a constant effect evolution in time:
- *  \verbatim
-    Strength
-    ^
-    |
-    |    effect level -->  _________________
-    |                     /                 \
-    |                    /                   \
-    |                   /                     \
-    |                  /                       \
-    | attack_level --> |                        \
-    |                  |                        |  <---  fade_level
-    |
-    +--------------------------------------------------> Time
-                       [--]                 [---]
-                       attack_length        fade_length
-
-    [------------------][-----------------------]
-    delay               length
-    \endverbatim
- *
- *  Note either the attack_level or the fade_level may be above the actual
- *  effect level.
- *
- *  \sa SDL_HapticConstant
- *  \sa SDL_HapticPeriodic
- *  \sa SDL_HapticCondition
- *  \sa SDL_HapticRamp
- *  \sa SDL_HapticLeftRight
- *  \sa SDL_HapticCustom
- */
-typedef union SDL_HapticEffect
-{
-    /* Common for all force feedback effects */
-    Uint16 type;                    /**< Effect type. */
-    SDL_HapticConstant constant;    /**< Constant effect. */
-    SDL_HapticPeriodic periodic;    /**< Periodic effect. */
-    SDL_HapticCondition condition;  /**< Condition effect. */
-    SDL_HapticRamp ramp;            /**< Ramp effect. */
-    SDL_HapticLeftRight leftright;  /**< Left/Right effect. */
-    SDL_HapticCustom custom;        /**< Custom effect. */
-} SDL_HapticEffect;
-
-
-/* Function prototypes */
-/**
- *  \brief Count the number of haptic devices attached to the system.
- *
- *  \return Number of haptic devices detected on the system.
- */
-extern DECLSPEC int SDLCALL SDL_NumHaptics(void);
-
-/**
- *  \brief Get the implementation dependent name of a haptic device.
- *
- *  This can be called before any joysticks are opened.
- *  If no name can be found, this function returns NULL.
- *
- *  \param device_index Index of the device to get its name.
- *  \return Name of the device or NULL on error.
- *
- *  \sa SDL_NumHaptics
- */
-extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);
-
-/**
- *  \brief Opens a haptic device for use.
- *
- *  The index passed as an argument refers to the N'th haptic device on this
- *  system.
- *
- *  When opening a haptic device, its gain will be set to maximum and
- *  autocenter will be disabled.  To modify these values use
- *  SDL_HapticSetGain() and SDL_HapticSetAutocenter().
- *
- *  \param device_index Index of the device to open.
- *  \return Device identifier or NULL on error.
- *
- *  \sa SDL_HapticIndex
- *  \sa SDL_HapticOpenFromMouse
- *  \sa SDL_HapticOpenFromJoystick
- *  \sa SDL_HapticClose
- *  \sa SDL_HapticSetGain
- *  \sa SDL_HapticSetAutocenter
- *  \sa SDL_HapticPause
- *  \sa SDL_HapticStopAll
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index);
-
-/**
- *  \brief Checks if the haptic device at index has been opened.
- *
- *  \param device_index Index to check to see if it has been opened.
- *  \return 1 if it has been opened or 0 if it hasn't.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticIndex
- */
-extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index);
-
-/**
- *  \brief Gets the index of a haptic device.
- *
- *  \param haptic Haptic device to get the index of.
- *  \return The index of the haptic device or -1 on error.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticOpened
- */
-extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic);
-
-/**
- *  \brief Gets whether or not the current mouse has haptic capabilities.
- *
- *  \return SDL_TRUE if the mouse is haptic, SDL_FALSE if it isn't.
- *
- *  \sa SDL_HapticOpenFromMouse
- */
-extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void);
-
-/**
- *  \brief Tries to open a haptic device from the current mouse.
- *
- *  \return The haptic device identifier or NULL on error.
- *
- *  \sa SDL_MouseIsHaptic
- *  \sa SDL_HapticOpen
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void);
-
-/**
- *  \brief Checks to see if a joystick has haptic features.
- *
- *  \param joystick Joystick to test for haptic capabilities.
- *  \return SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't
- *          or -1 if an error occurred.
- *
- *  \sa SDL_HapticOpenFromJoystick
- */
-extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick);
-
-/**
- *  \brief Opens a haptic device for use from a joystick device.
- *
- *  You must still close the haptic device separately.  It will not be closed
- *  with the joystick.
- *
- *  When opening from a joystick you should first close the haptic device before
- *  closing the joystick device.  If not, on some implementations the haptic
- *  device will also get unallocated and you'll be unable to use force feedback
- *  on that device.
- *
- *  \param joystick Joystick to create a haptic device from.
- *  \return A valid haptic device identifier on success or NULL on error.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticClose
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick *
-                                                               joystick);
-
-/**
- *  \brief Closes a haptic device previously opened with SDL_HapticOpen().
- *
- *  \param haptic Haptic device to close.
- */
-extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic);
-
-/**
- *  \brief Returns the number of effects a haptic device can store.
- *
- *  On some platforms this isn't fully supported, and therefore is an
- *  approximation.  Always check to see if your created effect was actually
- *  created and do not rely solely on SDL_HapticNumEffects().
- *
- *  \param haptic The haptic device to query effect max.
- *  \return The number of effects the haptic device can store or
- *          -1 on error.
- *
- *  \sa SDL_HapticNumEffectsPlaying
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic);
-
-/**
- *  \brief Returns the number of effects a haptic device can play at the same
- *         time.
- *
- *  This is not supported on all platforms, but will always return a value.
- *  Added here for the sake of completeness.
- *
- *  \param haptic The haptic device to query maximum playing effects.
- *  \return The number of effects the haptic device can play at the same time
- *          or -1 on error.
- *
- *  \sa SDL_HapticNumEffects
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic);
-
-/**
- *  \brief Gets the haptic device's supported features in bitwise manner.
- *
- *  Example:
- *  \code
- *  if (SDL_HapticQuery(haptic) & SDL_HAPTIC_CONSTANT) {
- *      printf("We have constant haptic effect!\n");
- *  }
- *  \endcode
- *
- *  \param haptic The haptic device to query.
- *  \return Haptic features in bitwise manner (OR'd).
- *
- *  \sa SDL_HapticNumEffects
- *  \sa SDL_HapticEffectSupported
- */
-extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic);
-
-
-/**
- *  \brief Gets the number of haptic axes the device has.
- *
- *  \sa SDL_HapticDirection
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic);
-
-/**
- *  \brief Checks to see if effect is supported by haptic.
- *
- *  \param haptic Haptic device to check on.
- *  \param effect Effect to check to see if it is supported.
- *  \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error.
- *
- *  \sa SDL_HapticQuery
- *  \sa SDL_HapticNewEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic,
-                                                      SDL_HapticEffect *
-                                                      effect);
-
-/**
- *  \brief Creates a new haptic effect on the device.
- *
- *  \param haptic Haptic device to create the effect on.
- *  \param effect Properties of the effect to create.
- *  \return The identifier of the effect on success or -1 on error.
- *
- *  \sa SDL_HapticUpdateEffect
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticDestroyEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic,
-                                                SDL_HapticEffect * effect);
-
-/**
- *  \brief Updates the properties of an effect.
- *
- *  Can be used dynamically, although behavior when dynamically changing
- *  direction may be strange.  Specifically the effect may reupload itself
- *  and start playing from the start.  You cannot change the type either when
- *  running SDL_HapticUpdateEffect().
- *
- *  \param haptic Haptic device that has the effect.
- *  \param effect Identifier of the effect to update.
- *  \param data New effect properties to use.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticNewEffect
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticDestroyEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic,
-                                                   int effect,
-                                                   SDL_HapticEffect * data);
-
-/**
- *  \brief Runs the haptic effect on its associated haptic device.
- *
- *  If iterations are ::SDL_HAPTIC_INFINITY, it'll run the effect over and over
- *  repeating the envelope (attack and fade) every time.  If you only want the
- *  effect to last forever, set ::SDL_HAPTIC_INFINITY in the effect's length
- *  parameter.
- *
- *  \param haptic Haptic device to run the effect on.
- *  \param effect Identifier of the haptic effect to run.
- *  \param iterations Number of iterations to run the effect. Use
- *         ::SDL_HAPTIC_INFINITY for infinity.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticStopEffect
- *  \sa SDL_HapticDestroyEffect
- *  \sa SDL_HapticGetEffectStatus
- */
-extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic,
-                                                int effect,
-                                                Uint32 iterations);
-
-/**
- *  \brief Stops the haptic effect on its associated haptic device.
- *
- *  \param haptic Haptic device to stop the effect on.
- *  \param effect Identifier of the effect to stop.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticDestroyEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic,
-                                                 int effect);
-
-/**
- *  \brief Destroys a haptic effect on the device.
- *
- *  This will stop the effect if it's running.  Effects are automatically
- *  destroyed when the device is closed.
- *
- *  \param haptic Device to destroy the effect on.
- *  \param effect Identifier of the effect to destroy.
- *
- *  \sa SDL_HapticNewEffect
- */
-extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic,
-                                                     int effect);
-
-/**
- *  \brief Gets the status of the current effect on the haptic device.
- *
- *  Device must support the ::SDL_HAPTIC_STATUS feature.
- *
- *  \param haptic Haptic device to query the effect status on.
- *  \param effect Identifier of the effect to query its status.
- *  \return 0 if it isn't playing, 1 if it is playing or -1 on error.
- *
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticStopEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic,
-                                                      int effect);
-
-/**
- *  \brief Sets the global gain of the device.
- *
- *  Device must support the ::SDL_HAPTIC_GAIN feature.
- *
- *  The user may specify the maximum gain by setting the environment variable
- *  SDL_HAPTIC_GAIN_MAX which should be between 0 and 100.  All calls to
- *  SDL_HapticSetGain() will scale linearly using SDL_HAPTIC_GAIN_MAX as the
- *  maximum.
- *
- *  \param haptic Haptic device to set the gain on.
- *  \param gain Value to set the gain to, should be between 0 and 100.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain);
-
-/**
- *  \brief Sets the global autocenter of the device.
- *
- *  Autocenter should be between 0 and 100.  Setting it to 0 will disable
- *  autocentering.
- *
- *  Device must support the ::SDL_HAPTIC_AUTOCENTER feature.
- *
- *  \param haptic Haptic device to set autocentering on.
- *  \param autocenter Value to set autocenter to, 0 disables autocentering.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic,
-                                                    int autocenter);
-
-/**
- *  \brief Pauses a haptic device.
- *
- *  Device must support the ::SDL_HAPTIC_PAUSE feature.  Call
- *  SDL_HapticUnpause() to resume playback.
- *
- *  Do not modify the effects nor add new ones while the device is paused.
- *  That can cause all sorts of weird errors.
- *
- *  \param haptic Haptic device to pause.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticUnpause
- */
-extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic);
-
-/**
- *  \brief Unpauses a haptic device.
- *
- *  Call to unpause after SDL_HapticPause().
- *
- *  \param haptic Haptic device to unpause.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticPause
- */
-extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic);
-
-/**
- *  \brief Stops all the currently playing effects on a haptic device.
- *
- *  \param haptic Haptic device to stop.
- *  \return 0 on success or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic);
-
-/**
- *  \brief Checks to see if rumble is supported on a haptic device.
- *
- *  \param haptic Haptic device to check to see if it supports rumble.
- *  \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error.
- *
- *  \sa SDL_HapticRumbleInit
- *  \sa SDL_HapticRumblePlay
- *  \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic);
-
-/**
- *  \brief Initializes the haptic device for simple rumble playback.
- *
- *  \param haptic Haptic device to initialize for simple rumble playback.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticRumbleSupported
- *  \sa SDL_HapticRumblePlay
- *  \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic);
-
-/**
- *  \brief Runs simple rumble on a haptic device
- *
- *  \param haptic Haptic device to play rumble effect on.
- *  \param strength Strength of the rumble to play as a 0-1 float value.
- *  \param length Length of the rumble to play in milliseconds.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticRumbleSupported
- *  \sa SDL_HapticRumbleInit
- *  \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length );
-
-/**
- *  \brief Stops the simple rumble on a haptic device.
- *
- *  \param haptic Haptic to stop the rumble on.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticRumbleSupported
- *  \sa SDL_HapticRumbleInit
- *  \sa SDL_HapticRumblePlay
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_haptic_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_hints.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_hints.h
deleted file mode 100644 (file)
index 8fa0dd6..0000000
+++ /dev/null
@@ -1,1266 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_hints.h
- *
- *  Official documentation for SDL configuration variables
- *
- *  This file contains functions to set and get configuration hints,
- *  as well as listing each of them alphabetically.
- *
- *  The convention for naming hints is SDL_HINT_X, where "SDL_X" is
- *  the environment variable that can be used to override the default.
- *
- *  In general these hints are just that - they may or may not be
- *  supported or applicable on any given platform, but they provide
- *  a way for an application or user to give the library a hint as
- *  to how they would like the library to work.
- */
-
-#ifndef SDL_hints_h_
-#define SDL_hints_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief  A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
- *
- *  SDL can try to accelerate the SDL screen surface by using streaming
- *  textures with a 3D rendering engine.  This variable controls whether and
- *  how this is done.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable 3D acceleration
- *    "1"       - Enable 3D acceleration, using the default renderer.
- *    "X"       - Enable 3D acceleration, using X where X is one of the valid rendering drivers.  (e.g. "direct3d", "opengl", etc.)
- *
- *  By default SDL tries to make a best guess for each platform whether
- *  to use acceleration or not.
- */
-#define SDL_HINT_FRAMEBUFFER_ACCELERATION   "SDL_FRAMEBUFFER_ACCELERATION"
-
-/**
- *  \brief  A variable specifying which render driver to use.
- *
- *  If the application doesn't pick a specific renderer to use, this variable
- *  specifies the name of the preferred renderer.  If the preferred renderer
- *  can't be initialized, the normal default renderer is used.
- *
- *  This variable is case insensitive and can be set to the following values:
- *    "direct3d"
- *    "opengl"
- *    "opengles2"
- *    "opengles"
- *    "metal"
- *    "software"
- *
- *  The default varies by platform, but it's the first one in the list that
- *  is available on the current platform.
- */
-#define SDL_HINT_RENDER_DRIVER              "SDL_RENDER_DRIVER"
-
-/**
- *  \brief  A variable controlling whether the OpenGL render driver uses shaders if they are available.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable shaders
- *    "1"       - Enable shaders
- *
- *  By default shaders are used if OpenGL supports them.
- */
-#define SDL_HINT_RENDER_OPENGL_SHADERS      "SDL_RENDER_OPENGL_SHADERS"
-
-/**
- *  \brief  A variable controlling whether the Direct3D device is initialized for thread-safe operations.
- *
- *  This variable can be set to the following values:
- *    "0"       - Thread-safety is not enabled (faster)
- *    "1"       - Thread-safety is enabled
- *
- *  By default the Direct3D device is created with thread-safety disabled.
- */
-#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
-
-/**
- *  \brief  A variable controlling whether to enable Direct3D 11+'s Debug Layer.
- *
- *  This variable does not have any effect on the Direct3D 9 based renderer.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable Debug Layer use
- *    "1"       - Enable Debug Layer use
- *
- *  By default, SDL does not use Direct3D Debug Layer.
- */
-#define SDL_HINT_RENDER_DIRECT3D11_DEBUG    "SDL_RENDER_DIRECT3D11_DEBUG"
-
-/**
- *  \brief  A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
- *
- *  This variable can be set to the following values:
- *    "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen
- *    "1" or "overscan"  - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen
- *
- *  By default letterbox is used
- */
-#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE       "SDL_RENDER_LOGICAL_SIZE_MODE"
-
-/**
- *  \brief  A variable controlling the scaling quality
- *
- *  This variable can be set to the following values:
- *    "0" or "nearest" - Nearest pixel sampling
- *    "1" or "linear"  - Linear filtering (supported by OpenGL and Direct3D)
- *    "2" or "best"    - Currently this is the same as "linear"
- *
- *  By default nearest pixel sampling is used
- */
-#define SDL_HINT_RENDER_SCALE_QUALITY       "SDL_RENDER_SCALE_QUALITY"
-
-/**
- *  \brief  A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable vsync
- *    "1"       - Enable vsync
- *
- *  By default SDL does not sync screen surface updates with vertical refresh.
- */
-#define SDL_HINT_RENDER_VSYNC               "SDL_RENDER_VSYNC"
-
-/**
- *  \brief  A variable controlling whether the screensaver is enabled. 
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable screensaver
- *    "1"       - Enable screensaver
- *
- *  By default SDL will disable the screensaver.
- */
-#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER    "SDL_VIDEO_ALLOW_SCREENSAVER"
-
-/**
- *  \brief  A variable controlling whether the X11 VidMode extension should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable XVidMode
- *    "1"       - Enable XVidMode
- *
- *  By default SDL will use XVidMode if it is available.
- */
-#define SDL_HINT_VIDEO_X11_XVIDMODE         "SDL_VIDEO_X11_XVIDMODE"
-
-/**
- *  \brief  A variable controlling whether the X11 Xinerama extension should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable Xinerama
- *    "1"       - Enable Xinerama
- *
- *  By default SDL will use Xinerama if it is available.
- */
-#define SDL_HINT_VIDEO_X11_XINERAMA         "SDL_VIDEO_X11_XINERAMA"
-
-/**
- *  \brief  A variable controlling whether the X11 XRandR extension should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable XRandR
- *    "1"       - Enable XRandR
- *
- *  By default SDL will not use XRandR because of window manager issues.
- */
-#define SDL_HINT_VIDEO_X11_XRANDR           "SDL_VIDEO_X11_XRANDR"
-
-/**
- *  \brief  A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable _NET_WM_PING
- *    "1"       - Enable _NET_WM_PING
- *
- *  By default SDL will use _NET_WM_PING, but for applications that know they
- *  will not always be able to respond to ping requests in a timely manner they can
- *  turn it off to avoid the window manager thinking the app is hung.
- *  The hint is checked in CreateWindow.
- */
-#define SDL_HINT_VIDEO_X11_NET_WM_PING      "SDL_VIDEO_X11_NET_WM_PING"
-
-/**
- * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.
- * 
- * This variable can be set to the following values:
- * "0" - Disable _NET_WM_BYPASS_COMPOSITOR
- * "1" - Enable _NET_WM_BYPASS_COMPOSITOR
- * 
- * By default SDL will use _NET_WM_BYPASS_COMPOSITOR
- * 
- */
-#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
-
-/**
- *  \brief  A variable controlling whether the window frame and title bar are interactive when the cursor is hidden 
- *
- *  This variable can be set to the following values:
- *    "0"       - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
- *    "1"       - The window frame is interactive when the cursor is hidden
- *
- *  By default SDL will allow interaction with the window frame when the cursor is hidden
- */
-#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN    "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
-
-/**
- * \brief A variable to specify custom icon resource id from RC file on Windows platform 
- */
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON       "SDL_WINDOWS_INTRESOURCE_ICON"
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
-
-/**
- *  \brief  A variable controlling whether the windows message loop is processed by SDL 
- *
- *  This variable can be set to the following values:
- *    "0"       - The window message loop is not run
- *    "1"       - The window message loop is processed in SDL_PumpEvents()
- *
- *  By default SDL will process the windows message loop
- */
-#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
-
-/**
- *  \brief  A variable controlling whether grabbing input grabs the keyboard
- *
- *  This variable can be set to the following values:
- *    "0"       - Grab will affect only the mouse
- *    "1"       - Grab will affect mouse and keyboard
- *
- *  By default SDL will not grab the keyboard so system shortcuts still work.
- */
-#define SDL_HINT_GRAB_KEYBOARD              "SDL_GRAB_KEYBOARD"
-
-/**
- *  \brief  A variable setting the double click time, in milliseconds.
- */
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME    "SDL_MOUSE_DOUBLE_CLICK_TIME"
-
-/**
- *  \brief  A variable setting the double click radius, in pixels.
- */
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS    "SDL_MOUSE_DOUBLE_CLICK_RADIUS"
-
-/**
- *  \brief  A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode
- */
-#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE    "SDL_MOUSE_NORMAL_SPEED_SCALE"
-
-/**
- *  \brief  A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode
- */
-#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE    "SDL_MOUSE_RELATIVE_SPEED_SCALE"
-
-/**
- *  \brief  A variable controlling whether relative mouse mode is implemented using mouse warping
- *
- *  This variable can be set to the following values:
- *    "0"       - Relative mouse mode uses raw input
- *    "1"       - Relative mouse mode uses mouse warping
- *
- *  By default SDL will use raw input for relative mouse mode
- */
-#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP    "SDL_MOUSE_RELATIVE_MODE_WARP"
-
-/**
- *  \brief Allow mouse click events when clicking to focus an SDL window
- *
- *  This variable can be set to the following values:
- *    "0"       - Ignore mouse clicks that activate a window
- *    "1"       - Generate events for mouse clicks that activate a window
- *
- *  By default SDL will ignore mouse clicks that activate a window
- */
-#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH"
-
-/**
- *  \brief  A variable controlling whether touch events should generate synthetic mouse events
- *
- *  This variable can be set to the following values:
- *    "0"       - Touch events will not generate mouse events
- *    "1"       - Touch events will generate mouse events
- *
- *  By default SDL will generate mouse events for touch events
- */
-#define SDL_HINT_TOUCH_MOUSE_EVENTS    "SDL_TOUCH_MOUSE_EVENTS"
-
-/**
- *  \brief  A variable controlling whether mouse events should generate synthetic touch events
- *
- *  This variable can be set to the following values:
- *    "0"       - Mouse events will not generate touch events (default for desktop platforms)
- *    "1"       - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)
- */
-
-#define SDL_HINT_MOUSE_TOUCH_EVENTS    "SDL_MOUSE_TOUCH_EVENTS"
-
-/**
- *  \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true.
- *
- */
-#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS   "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
-
-/**
- *  \brief  A variable controlling whether the idle timer is disabled on iOS.
- *
- *  When an iOS app does not receive touches for some time, the screen is
- *  dimmed automatically. For games where the accelerometer is the only input
- *  this is problematic. This functionality can be disabled by setting this
- *  hint.
- *
- *  As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
- *  accomplish the same thing on iOS. They should be preferred over this hint.
- *
- *  This variable can be set to the following values:
- *    "0"       - Enable idle timer
- *    "1"       - Disable idle timer
- */
-#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
-
-/**
- *  \brief  A variable controlling which orientations are allowed on iOS/Android.
- *
- *  In some circumstances it is necessary to be able to explicitly control
- *  which UI orientations are allowed.
- *
- *  This variable is a space delimited list of the following values:
- *    "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
- */
-#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
-
-/**
- *  \brief  A variable controlling whether controllers used with the Apple TV
- *  generate UI events.
- *
- * When UI events are generated by controller input, the app will be
- * backgrounded when the Apple TV remote's menu button is pressed, and when the
- * pause or B buttons on gamepads are pressed.
- *
- * More information about properly making use of controllers for the Apple TV
- * can be found here:
- * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/
- *
- *  This variable can be set to the following values:
- *    "0"       - Controller input does not generate UI events (the default).
- *    "1"       - Controller input generates UI events.
- */
-#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS"
-
-/**
- * \brief  A variable controlling whether the Apple TV remote's joystick axes
- *         will automatically match the rotation of the remote.
- *
- *  This variable can be set to the following values:
- *    "0"       - Remote orientation does not affect joystick axes (the default).
- *    "1"       - Joystick axes are based on the orientation of the remote.
- */
-#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
-
-/**
- * \brief  A variable controlling whether the home indicator bar on iPhone X
- *         should be hidden.
- *
- *  This variable can be set to the following values:
- *    "0"       - The indicator bar is not hidden (default for windowed applications)
- *    "1"       - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications)
- *    "2"       - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications)
- */
-#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR"
-
-/**
- *  \brief  A variable controlling whether the Android / iOS built-in
- *  accelerometer should be listed as a joystick device.
- *
- *  This variable can be set to the following values:
- *    "0"       - The accelerometer is not listed as a joystick
- *    "1"       - The accelerometer is available as a 3 axis joystick (the default).
- */
-#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
-
-/**
- *  \brief  A variable controlling whether the Android / tvOS remotes
- *  should be listed as joystick devices, instead of sending keyboard events.
- *
- *  This variable can be set to the following values:
- *    "0"       - Remotes send enter/escape/arrow key events
- *    "1"       - Remotes are available as 2 axis, 2 button joysticks (the default).
- */
-#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK"
-
-/**
- *  \brief  A variable that lets you disable the detection and use of Xinput gamepad devices
- *
- *  The variable can be set to the following values:
- *    "0"       - Disable XInput detection (only uses direct input)
- *    "1"       - Enable XInput detection (the default)
- */
-#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
-
-/**
- *  \brief  A variable that causes SDL to use the old axis and button mapping for XInput devices.
- *
- *  This hint is for backwards compatibility only and will be removed in SDL 2.1
- *
- *  The default value is "0".  This hint must be set before SDL_Init()
- */
-#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
-
-/**
- *  \brief  A variable that lets you manually hint extra gamecontroller db entries.
- *
- *  The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
- *
- *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
- */
-#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
-
-/**
- *  \brief  A variable that lets you provide a file with extra gamecontroller db entries.
- *
- *  The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h
- *
- *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
- */
-#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE"
-
-/**
- *  \brief  A variable containing a list of devices to skip when scanning for game controllers.
- *
- *  The format of the string is a comma separated list of USB VID/PID pairs
- *  in hexadecimal form, e.g.
- *
- *      0xAAAA/0xBBBB,0xCCCC/0xDDDD
- *
- *  The variable can also take the form of @file, in which case the named
- *  file will be loaded and interpreted as the value of the variable.
- */
-#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES"
-
-/**
- *  \brief  If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.
- *
- *  The format of the string is a comma separated list of USB VID/PID pairs
- *  in hexadecimal form, e.g.
- *
- *      0xAAAA/0xBBBB,0xCCCC/0xDDDD
- *
- *  The variable can also take the form of @file, in which case the named
- *  file will be loaded and interpreted as the value of the variable.
- */
-#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
-
-/**
- *  \brief  A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
- *
- *  The variable can be set to the following values:
- *    "0"       - Disable joystick & gamecontroller input events when the
- *                application is in the background.
- *    "1"       - Enable joystick & gamecontroller input events when the
- *                application is in the background.
- *
- *  The default value is "0".  This hint may be set at any time.
- */
-#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI joystick drivers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI drivers are not used
- *    "1"       - HIDAPI drivers are used (the default)
- *
- *  This variable is the default for all drivers, but can be overridden by the hints for specific drivers below.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for PS4 controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4"
-
-/**
- *  \brief  A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver.
- *
- *  This variable can be set to the following values:
- *    "0"       - extended reports are not enabled (the default)
- *    "1"       - extended reports
- *
- *  Extended input reports allow rumble on Bluetooth PS4 controllers, but
- *  break DirectInput handling for applications that don't use SDL.
- *
- *  Once extended reports are enabled, they can not be disabled without
- *  power cycling the controller.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for Steam Controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for XBox controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_XBOX   "SDL_JOYSTICK_HIDAPI_XBOX"
-
-/**
- *  \brief  A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs
- *
- *  The variable can be set to the following values:
- *    "0"       - Do not scan for Steam Controllers
- *    "1"       - Scan for Steam Controllers (the default)
- *
- *  The default value is "1".  This hint must be set before initializing the joystick subsystem.
- */
-#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS"
-
-
-/**
- *  \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
- *      This is a debugging aid for developers and not expected to be used by end users. The default is "1"
- *
- *  This variable can be set to the following values:
- *    "0"       - don't allow topmost
- *    "1"       - allow topmost
- */
-#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
-
-/**
- *  \brief A variable that controls the timer resolution, in milliseconds.
- *
- *  The higher resolution the timer, the more frequently the CPU services
- *  timer interrupts, and the more precise delays are, but this takes up
- *  power and CPU time.  This hint is only used on Windows 7 and earlier.
- *
- *  See this blog post for more information:
- *  http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
- *
- *  If this variable is set to "0", the system timer resolution is not set.
- *
- *  The default value is "1". This hint may be set at any time.
- */
-#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
-
-
-/**
- *  \brief  A variable describing the content orientation on QtWayland-based platforms.
- *
- *  On QtWayland platforms, windows are rotated client-side to allow for custom
- *  transitions. In order to correctly position overlays (e.g. volume bar) and
- *  gestures (e.g. events view, close/minimize gestures), the system needs to
- *  know in which orientation the application is currently drawing its contents.
- *
- *  This does not cause the window to be rotated or resized, the application
- *  needs to take care of drawing the content in the right orientation (the
- *  framebuffer is always in portrait mode).
- *
- *  This variable can be one of the following values:
- *    "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape"
- */
-#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION"
-
-/**
- *  \brief  Flags to set on QtWayland windows to integrate with the native window manager.
- *
- *  On QtWayland platforms, this hint controls the flags to set on the windows.
- *  For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures.
- *
- *  This variable is a space-separated list of the following values (empty = no flags):
- *    "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager"
- */
-#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS"
-
-/**
-*  \brief  A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
-*
-*  Use this hint in case you need to set SDL's threads stack size to other than the default.
-*  This is specially useful if you build SDL against a non glibc libc library (such as musl) which
-*  provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
-*  Support for this hint is currently available only in the pthread, Windows, and PSP backend.
-*
-*  Instead of this hint, in 2.0.9 and later, you can use
-*  SDL_CreateThreadWithStackSize(). This hint only works with the classic
-*  SDL_CreateThread().
-*/
-#define SDL_HINT_THREAD_STACK_SIZE              "SDL_THREAD_STACK_SIZE"
-
-/**
- *  \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
- */
-#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
-
-/**
- *  \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
- *
- *  If present, holding ctrl while left clicking will generate a right click
- *  event when on Mac.
- */
-#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
-
-/**
-*  \brief  A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
-*
-*  SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
-*  can use two different sets of binaries, those compiled by the user from source
-*  or those provided by the Chrome browser. In the later case, these binaries require
-*  that SDL loads a DLL providing the shader compiler.
-*
-*  This variable can be set to the following values:
-*    "d3dcompiler_46.dll" - default, best for Vista or later.
-*    "d3dcompiler_43.dll" - for XP support.
-*    "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
-*
-*/
-#define SDL_HINT_VIDEO_WIN_D3DCOMPILER              "SDL_VIDEO_WIN_D3DCOMPILER"
-
-/**
-*  \brief  A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
-*  
-*  If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
-*  SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly 
-*  created SDL_Window:
-*
-*  1. Its pixel format will be set to the same pixel format as this SDL_Window.  This is
-*  needed for example when sharing an OpenGL context across multiple windows.
-*
-*  2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
-*  OpenGL rendering.
-*
-*  This variable can be set to the following values:
-*    The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
-*    share a pixel format with.
-*/
-#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT    "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
-
-/**
- *  \brief A URL to a WinRT app's privacy policy
- *
- *  All network-enabled WinRT apps must make a privacy policy available to its
- *  users.  On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
- *  be available in the Windows Settings charm, as accessed from within the app.
- *  SDL provides code to add a URL-based link there, which can point to the app's
- *  privacy policy.
- *
- *  To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
- *  before calling any SDL_Init() functions.  The contents of the hint should
- *  be a valid URL.  For example, "http://www.example.com".
- *
- *  The default value is "", which will prevent SDL from adding a privacy policy
- *  link to the Settings charm.  This hint should only be set during app init.
- *
- *  The label text of an app's "Privacy Policy" link may be customized via another
- *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- *  Please note that on Windows Phone, Microsoft does not provide standard UI
- *  for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
- *  will not get used on that platform.  Network-enabled phone apps should display
- *  their privacy policy through some other, in-app means.
- */
-#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
-
-/** \brief Label text for a WinRT app's privacy policy link
- *
- *  Network-enabled WinRT apps must include a privacy policy.  On Windows 8, 8.1, and RT,
- *  Microsoft mandates that this policy be available via the Windows Settings charm.
- *  SDL provides code to add a link there, with its label text being set via the
- *  optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- *  Please note that a privacy policy's contents are not set via this hint.  A separate
- *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
- *  policy.
- *
- *  The contents of this hint should be encoded as a UTF8 string.
- *
- *  The default value is "Privacy Policy".  This hint should only be set during app
- *  initialization, preferably before any calls to SDL_Init().
- *
- *  For additional information on linking to a privacy policy, see the documentation for
- *  SDL_HINT_WINRT_PRIVACY_POLICY_URL.
- */
-#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
-
-/** \brief Allows back-button-press events on Windows Phone to be marked as handled
- *
- *  Windows Phone devices typically feature a Back button.  When pressed,
- *  the OS will emit back-button-press events, which apps are expected to
- *  handle in an appropriate manner.  If apps do not explicitly mark these
- *  events as 'Handled', then the OS will invoke its default behavior for
- *  unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
- *  terminate the app (and attempt to switch to the previous app, or to the
- *  device's home screen).
- *
- *  Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
- *  to mark back-button-press events as Handled, if and when one is sent to
- *  the app.
- *
- *  Internally, Windows Phone sends back button events as parameters to
- *  special back-button-press callback functions.  Apps that need to respond
- *  to back-button-press events are expected to register one or more
- *  callback functions for such, shortly after being launched (during the
- *  app's initialization phase).  After the back button is pressed, the OS
- *  will invoke these callbacks.  If the app's callback(s) do not explicitly
- *  mark the event as handled by the time they return, or if the app never
- *  registers one of these callback, the OS will consider the event
- *  un-handled, and it will apply its default back button behavior (terminate
- *  the app).
- *
- *  SDL registers its own back-button-press callback with the Windows Phone
- *  OS.  This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
- *  and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
- *  it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
- *  If the hint's value is set to "1", the back button event's Handled
- *  property will get set to 'true'.  If the hint's value is set to something
- *  else, or if it is unset, SDL will leave the event's Handled property
- *  alone.  (By default, the OS sets this property to 'false', to note.)
- *
- *  SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
- *  back button is pressed, or can set it in direct-response to a back button
- *  being pressed.
- *
- *  In order to get notified when a back button is pressed, SDL apps should
- *  register a callback function with SDL_AddEventWatch(), and have it listen
- *  for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
- *  (Alternatively, SDL_KEYUP events can be listened-for.  Listening for
- *  either event type is suitable.)  Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
- *  set by such a callback, will be applied to the OS' current
- *  back-button-press event.
- *
- *  More details on back button behavior in Windows Phone apps can be found
- *  at the following page, on Microsoft's developer site:
- *  http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
- */
-#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
-
-/**
- *  \brief  A variable that dictates policy for fullscreen Spaces on Mac OS X.
- *
- *  This hint only applies to Mac OS X.
- *
- *  The variable can be set to the following values:
- *    "0"       - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
- *                SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
- *                button on their titlebars).
- *    "1"       - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
- *                SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
- *                button on their titlebars).
- *
- *  The default value is "1". Spaces are disabled regardless of this hint if
- *   the OS isn't at least Mac OS X Lion (10.7). This hint must be set before
- *   any windows are created.
- */
-#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES    "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
-
-/**
-*  \brief  When set don't force the SDL app to become a foreground process
-*
-*  This hint only applies to Mac OS X.
-*
-*/
-#define SDL_HINT_MAC_BACKGROUND_APP    "SDL_MAC_BACKGROUND_APP"
-
-/**
- * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
- *
- * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- *
- * By default this hint is not set and the APK expansion files are not searched.
- */
-#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
-/**
- * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
- *
- * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- *
- * By default this hint is not set and the APK expansion files are not searched.
- */
-#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
-
-/**
- * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL_TEXTEDITING events are sent, and it is the application's
- *               responsibility to render the text from these events and 
- *               differentiate it somehow from committed text. (default)
- *   "1"       - If supported by the IME then SDL_TEXTEDITING events are not sent, 
- *               and text that is being composed will be rendered in its own UI.
- */
-#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
-
-/**
- * \brief A variable to control whether we trap the Android back button to handle it manually.
- *        This is necessary for the right mouse button to work on some Android devices, or
- *        to be able to trap the back button for use in your code reliably.  If set to true,
- *        the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of 
- *        SDL_SCANCODE_AC_BACK.
- *
- * The variable can be set to the following values:
- *   "0"       - Back button will be handled as usual for system. (default)
- *   "1"       - Back button will be trapped, allowing you to handle the key press
- *               manually.  (This will also let right mouse click work on systems 
- *               where the right mouse button functions as back.)
- *
- * The value of this hint is used at runtime, so it can be changed at any time.
- */
-#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON"
-
-/**
- * \brief A variable to control whether the event loop will block itself when the app is paused.
- *
- * The variable can be set to the following values:
- *   "0"       - Non blocking.
- *   "1"       - Blocking. (default)
- *
- * The value should be set before SDL is initialized.
- */
-#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE"
-
- /**
- * \brief A variable to control whether the return key on the soft keyboard
- *        should hide the soft keyboard on Android and iOS.
- *
- * The variable can be set to the following values:
- *   "0"       - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)
- *   "1"       - The return key will hide the keyboard.
- *
- * The value of this hint is used at runtime, so it can be changed at any time.
- */
-#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME"
-
-/**
- *  \brief override the binding element for keyboard inputs for Emscripten builds
- *
- * This hint only applies to the emscripten platform
- *
- * The variable can be one of
- *    "#window"      - The javascript window object (this is the default)
- *    "#document"    - The javascript document object
- *    "#screen"      - the javascript window.screen object
- *    "#canvas"      - the WebGL canvas element
- *    any other string without a leading # sign applies to the element on the page with that ID.
- */
-#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT   "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
-
-/**
- *  \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
- *
- * This hint only applies to Unix-like platforms.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL will install a SIGINT and SIGTERM handler, and when it
- *               catches a signal, convert it into an SDL_QUIT event.
- *   "1"       - SDL will not install a signal handler at all.
- */
-#define SDL_HINT_NO_SIGNAL_HANDLERS   "SDL_NO_SIGNAL_HANDLERS"
-
-/**
- *  \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL will generate a window-close event when it sees Alt+F4.
- *   "1"       - SDL will only do normal key handling for Alt+F4.
- */
-#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
-
-/**
- *  \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
- *
- * The bitmap header version 4 is required for proper alpha channel support and
- * SDL will use it when required. Should this not be desired, this hint can
- * force the use of the 40 byte header version which is supported everywhere.
- *
- * The variable can be set to the following values:
- *   "0"       - Surfaces with a colorkey or an alpha channel are saved to a
- *               32-bit BMP file with an alpha mask. SDL will use the bitmap
- *               header version 4 and set the alpha mask accordingly.
- *   "1"       - Surfaces with a colorkey or an alpha channel are saved to a
- *               32-bit BMP file without an alpha mask. The alpha channel data
- *               will be in the file, but applications are going to ignore it.
- *
- * The default value is "0".
- */
-#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"
-
-/**
- * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception.
- *        The 0x406D1388 Exception is a trick used to inform Visual Studio of a
- *        thread's name, but it tends to cause problems with other debuggers,
- *        and the .NET runtime. Note that SDL 2.0.6 and later will still use
- *        the (safer) SetThreadDescription API, introduced in the Windows 10
- *        Creators Update, if available.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL will raise the 0x406D1388 Exception to name threads.
- *               This is the default behavior of SDL <= 2.0.4.
- *   "1"       - SDL will not raise this exception, and threads will be unnamed. (default)
- *               This is necessary with .NET languages or debuggers that aren't Visual Studio.
- */
-#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING"
-
-/**
- * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI
- *
- * Also known as Z-order. The variable can take a negative or positive value.
- * The default is 10000.
- */
-#define SDL_HINT_RPI_VIDEO_LAYER           "SDL_RPI_VIDEO_LAYER"
-
-/**
- * \brief Tell the video driver that we only want a double buffer.
- *
- * By default, most lowlevel 2D APIs will use a triple buffer scheme that 
- * wastes no CPU time on waiting for vsync after issuing a flip, but
- * introduces a frame of latency. On the other hand, using a double buffer
- * scheme instead is recommended for cases where low latency is an important
- * factor because we save a whole frame of latency.
- * We do so by waiting for vsync immediately after issuing a flip, usually just
- * after eglSwapBuffers call in the backend's *_SwapWindow function.
- *
- * Since it's driver-specific, it's only supported where possible and
- * implemented. Currently supported the following drivers:
- * - KMSDRM (kmsdrm)
- * - Raspberry Pi (raspberrypi)
- */
-#define SDL_HINT_VIDEO_DOUBLE_BUFFER      "SDL_VIDEO_DOUBLE_BUFFER"
-
-/**
- *  \brief  A variable controlling what driver to use for OpenGL ES contexts.
- *
- *  On some platforms, currently Windows and X11, OpenGL drivers may support
- *  creating contexts with an OpenGL ES profile. By default SDL uses these
- *  profiles, when available, otherwise it attempts to load an OpenGL ES
- *  library, e.g. that provided by the ANGLE project. This variable controls
- *  whether SDL follows this default behaviour or will always load an
- *  OpenGL ES library.
- *
- *  Circumstances where this is useful include
- *  - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,
- *    or emulator, e.g. those from ARM, Imagination or Qualcomm.
- *  - Resolving OpenGL ES function addresses at link time by linking with
- *    the OpenGL ES library instead of querying them at run time with
- *    SDL_GL_GetProcAddress().
- *
- *  Caution: for an application to work with the default behaviour across
- *  different OpenGL drivers it must query the OpenGL ES function
- *  addresses at run time using SDL_GL_GetProcAddress().
- *
- *  This variable is ignored on most platforms because OpenGL ES is native
- *  or not supported.
- *
- *  This variable can be set to the following values:
- *    "0"       - Use ES profile of OpenGL, if available. (Default when not set.)
- *    "1"       - Load OpenGL ES library using the default library names.
- *
- */
-#define SDL_HINT_OPENGL_ES_DRIVER   "SDL_OPENGL_ES_DRIVER"
-
-/**
- *  \brief  A variable controlling speed/quality tradeoff of audio resampling.
- *
- *  If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
- *  to handle audio resampling. There are different resampling modes available
- *  that produce different levels of quality, using more CPU.
- *
- *  If this hint isn't specified to a valid setting, or libsamplerate isn't
- *  available, SDL will use the default, internal resampling algorithm.
- *
- *  Note that this is currently only applicable to resampling audio that is
- *  being written to a device for playback or audio being read from a device
- *  for capture. SDL_AudioCVT always uses the default resampler (although this
- *  might change for SDL 2.1).
- *
- *  This hint is currently only checked at audio subsystem initialization.
- *
- *  This variable can be set to the following values:
- *
- *    "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
- *    "1" or "fast"    - Use fast, slightly higher quality resampling, if available
- *    "2" or "medium"  - Use medium quality resampling, if available
- *    "3" or "best"    - Use high quality resampling, if available
- */
-#define SDL_HINT_AUDIO_RESAMPLING_MODE   "SDL_AUDIO_RESAMPLING_MODE"
-
-/**
- *  \brief  A variable controlling the audio category on iOS and Mac OS X
- *
- *  This variable can be set to the following values:
- *
- *    "ambient"     - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default)
- *    "playback"    - Use the AVAudioSessionCategoryPlayback category
- *
- *  For more information, see Apple's documentation:
- *  https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html
- */
-#define SDL_HINT_AUDIO_CATEGORY   "SDL_AUDIO_CATEGORY"
-
-/**
- *  \brief  A variable controlling whether the 2D render API is compatible or efficient.
- *
- *  This variable can be set to the following values:
- *
- *    "0"     - Don't use batching to make rendering more efficient.
- *    "1"     - Use batching, but might cause problems if app makes its own direct OpenGL calls.
- *
- *  Up to SDL 2.0.9, the render API would draw immediately when requested. Now
- *  it batches up draw requests and sends them all to the GPU only when forced
- *  to (during SDL_RenderPresent, when changing render targets, by updating a
- *  texture that the batch needs, etc). This is significantly more efficient,
- *  but it can cause problems for apps that expect to render on top of the
- *  render API's output. As such, SDL will disable batching if a specific
- *  render backend is requested (since this might indicate that the app is
- *  planning to use the underlying graphics API directly). This hint can
- *  be used to explicitly request batching in this instance. It is a contract
- *  that you will either never use the underlying graphics API directly, or
- *  if you do, you will call SDL_RenderFlush() before you do so any current
- *  batch goes to the GPU before your work begins. Not following this contract
- *  will result in undefined behavior.
- */
-#define SDL_HINT_RENDER_BATCHING  "SDL_RENDER_BATCHING"
-
-
-/**
- *  \brief  A variable controlling whether SDL logs all events pushed onto its internal queue.
- *
- *  This variable can be set to the following values:
- *
- *    "0"     - Don't log any events (default)
- *    "1"     - Log all events except mouse and finger motion, which are pretty spammy.
- *    "2"     - Log all events.
- *
- *  This is generally meant to be used to debug SDL itself, but can be useful
- *  for application developers that need better visibility into what is going
- *  on in the event queue. Logged events are sent through SDL_Log(), which
- *  means by default they appear on stdout on most platforms or maybe
- *  OutputDebugString() on Windows, and can be funneled by the app with
- *  SDL_LogSetOutputFunction(), etc.
- *
- *  This hint can be toggled on and off at runtime, if you only need to log
- *  events for a small subset of program execution.
- */
-#define SDL_HINT_EVENT_LOGGING   "SDL_EVENT_LOGGING"
-
-
-
-/**
- *  \brief  Controls how the size of the RIFF chunk affects the loading of a WAVE file.
- *
- *  The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
- *  file) is not always reliable. In case the size is wrong, it's possible to
- *  just ignore it and step through the chunks until a fixed limit is reached.
- *
- *  Note that files that have trailing data unrelated to the WAVE file or
- *  corrupt files may slow down the loading process without a reliable boundary.
- *  By default, SDL stops after 10000 chunks to prevent wasting time. Use the
- *  environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.
- *
- *  This variable can be set to the following values:
- *
- *    "force"        - Always use the RIFF chunk size as a boundary for the chunk search
- *    "ignorezero"   - Like "force", but a zero size searches up to 4 GiB (default)
- *    "ignore"       - Ignore the RIFF chunk size and always search up to 4 GiB
- *    "maximum"      - Search for chunks until the end of file (not recommended)
- */
-#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE   "SDL_WAVE_RIFF_CHUNK_SIZE"
-
-/**
- *  \brief  Controls how a truncated WAVE file is handled.
- *
- *  A WAVE file is considered truncated if any of the chunks are incomplete or
- *  the data chunk size is not a multiple of the block size. By default, SDL
- *  decodes until the first incomplete block, as most applications seem to do.
- *
- *  This variable can be set to the following values:
- *
- *    "verystrict" - Raise an error if the file is truncated
- *    "strict"     - Like "verystrict", but the size of the RIFF chunk is ignored
- *    "dropframe"  - Decode until the first incomplete sample frame
- *    "dropblock"  - Decode until the first incomplete block (default)
- */
-#define SDL_HINT_WAVE_TRUNCATION   "SDL_WAVE_TRUNCATION"
-
-/**
- *  \brief  Controls how the fact chunk affects the loading of a WAVE file.
- *
- *  The fact chunk stores information about the number of samples of a WAVE
- *  file. The Standards Update from Microsoft notes that this value can be used
- *  to 'determine the length of the data in seconds'. This is especially useful
- *  for compressed formats (for which this is a mandatory chunk) if they produce
- *  multiple sample frames per block and truncating the block is not allowed.
- *  The fact chunk can exactly specify how many sample frames there should be
- *  in this case.
- *
- *  Unfortunately, most application seem to ignore the fact chunk and so SDL
- *  ignores it by default as well.
- *
- *  This variable can be set to the following values:
- *
- *    "truncate"    - Use the number of samples to truncate the wave data if
- *                    the fact chunk is present and valid
- *    "strict"      - Like "truncate", but raise an error if the fact chunk
- *                    is invalid, not present for non-PCM formats, or if the
- *                    data chunk doesn't have that many samples
- *    "ignorezero"  - Like "truncate", but ignore fact chunk if the number of
- *                    samples is zero
- *    "ignore"      - Ignore fact chunk entirely (default)
- */
-#define SDL_HINT_WAVE_FACT_CHUNK   "SDL_WAVE_FACT_CHUNK"
-
-/**
- *  \brief  An enumeration of hint priorities
- */
-typedef enum
-{
-    SDL_HINT_DEFAULT,
-    SDL_HINT_NORMAL,
-    SDL_HINT_OVERRIDE
-} SDL_HintPriority;
-
-
-/**
- *  \brief Set a hint with a specific priority
- *
- *  The priority controls the behavior when setting a hint that already
- *  has a value.  Hints will replace existing hints of their priority and
- *  lower.  Environment variables are considered to have override priority.
- *
- *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
-                                                         const char *value,
-                                                         SDL_HintPriority priority);
-
-/**
- *  \brief Set a hint with normal priority
- *
- *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
-                                             const char *value);
-
-/**
- *  \brief Get a hint
- *
- *  \return The string value of a hint variable.
- */
-extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
-
-/**
- *  \brief Get a hint
- *
- *  \return The boolean value of a hint variable.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value);
-
-/**
- * \brief type definition of the hint callback function.
- */
-typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
-
-/**
- *  \brief Add a function to watch a particular hint
- *
- *  \param name The hint to watch
- *  \param callback The function to call when the hint value changes
- *  \param userdata A pointer to pass to the callback function
- */
-extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
-                                                 SDL_HintCallback callback,
-                                                 void *userdata);
-
-/**
- *  \brief Remove a function watching a particular hint
- *
- *  \param name The hint being watched
- *  \param callback The function being called when the hint value changes
- *  \param userdata A pointer being passed to the callback function
- */
-extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
-                                                 SDL_HintCallback callback,
-                                                 void *userdata);
-
-/**
- *  \brief  Clear all hints
- *
- *  This function is called during SDL_Quit() to free stored hints.
- */
-extern DECLSPEC void SDLCALL SDL_ClearHints(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_hints_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_joystick.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_joystick.h
deleted file mode 100644 (file)
index 3a4c5d1..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_joystick.h
- *
- *  Include file for SDL joystick event handling
- *
- * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick
- *   behind a device_index changing as joysticks are plugged and unplugged.
- *
- * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted
- *   then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in.
- *
- * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of
- *   the device (a X360 wired controller for example). This identifier is platform dependent.
- *
- *
- */
-
-#ifndef SDL_joystick_h_
-#define SDL_joystick_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_joystick.h
- *
- *  In order to use these functions, SDL_Init() must have been called
- *  with the ::SDL_INIT_JOYSTICK flag.  This causes SDL to scan the system
- *  for joysticks, and load appropriate drivers.
- *
- *  If you would like to receive joystick updates while the application
- *  is in the background, you should set the following hint before calling
- *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
- */
-
-/**
- * The joystick structure used to identify an SDL joystick
- */
-struct _SDL_Joystick;
-typedef struct _SDL_Joystick SDL_Joystick;
-
-/* A structure that encodes the stable unique id for a joystick device */
-typedef struct {
-    Uint8 data[16];
-} SDL_JoystickGUID;
-
-/**
- * This is a unique ID for a joystick for the time it is connected to the system,
- * and is never reused for the lifetime of the application. If the joystick is
- * disconnected and reconnected, it will get a new ID.
- *
- * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
- */
-typedef Sint32 SDL_JoystickID;
-
-typedef enum
-{
-    SDL_JOYSTICK_TYPE_UNKNOWN,
-    SDL_JOYSTICK_TYPE_GAMECONTROLLER,
-    SDL_JOYSTICK_TYPE_WHEEL,
-    SDL_JOYSTICK_TYPE_ARCADE_STICK,
-    SDL_JOYSTICK_TYPE_FLIGHT_STICK,
-    SDL_JOYSTICK_TYPE_DANCE_PAD,
-    SDL_JOYSTICK_TYPE_GUITAR,
-    SDL_JOYSTICK_TYPE_DRUM_KIT,
-    SDL_JOYSTICK_TYPE_ARCADE_PAD,
-    SDL_JOYSTICK_TYPE_THROTTLE
-} SDL_JoystickType;
-
-typedef enum
-{
-    SDL_JOYSTICK_POWER_UNKNOWN = -1,
-    SDL_JOYSTICK_POWER_EMPTY,   /* <= 5% */
-    SDL_JOYSTICK_POWER_LOW,     /* <= 20% */
-    SDL_JOYSTICK_POWER_MEDIUM,  /* <= 70% */
-    SDL_JOYSTICK_POWER_FULL,    /* <= 100% */
-    SDL_JOYSTICK_POWER_WIRED,
-    SDL_JOYSTICK_POWER_MAX
-} SDL_JoystickPowerLevel;
-
-/* Function prototypes */
-
-/**
- * Locking for multi-threaded access to the joystick API
- *
- * If you are using the joystick API or handling events from multiple threads
- * you should use these locking functions to protect access to the joysticks.
- *
- * In particular, you are guaranteed that the joystick list won't change, so
- * the API functions that take a joystick index will be valid, and joystick
- * and game controller events will not be delivered.
- */
-extern DECLSPEC void SDLCALL SDL_LockJoysticks(void);
-extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void);
-
-/**
- *  Count the number of joysticks attached to the system right now
- */
-extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
-
-/**
- *  Get the implementation dependent name of a joystick.
- *  This can be called before any joysticks are opened.
- *  If no name can be found, this function returns NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
-
-/**
- *  Get the player index of a joystick, or -1 if it's not available
- *  This can be called before any joysticks are opened.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index);
-
-/**
- *  Return the GUID for the joystick at this index
- *  This can be called before any joysticks are opened.
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index);
-
-/**
- *  Get the USB vendor ID of a joystick, if available.
- *  This can be called before any joysticks are opened.
- *  If the vendor ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index);
-
-/**
- *  Get the USB product ID of a joystick, if available.
- *  This can be called before any joysticks are opened.
- *  If the product ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);
-
-/**
- *  Get the product version of a joystick, if available.
- *  This can be called before any joysticks are opened.
- *  If the product version isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index);
-
-/**
- *  Get the type of a joystick, if available.
- *  This can be called before any joysticks are opened.
- */
-extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index);
-
-/**
- *  Get the instance ID of a joystick.
- *  This can be called before any joysticks are opened.
- *  If the index is out of range, this function will return -1.
- */
-extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index);
-
-/**
- *  Open a joystick for use.
- *  The index passed as an argument refers to the N'th joystick on the system.
- *  This index is not the value which will identify this joystick in future
- *  joystick events.  The joystick's instance id (::SDL_JoystickID) will be used
- *  there instead.
- *
- *  \return A joystick identifier, or NULL if an error occurred.
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
-
-/**
- * Return the SDL_Joystick associated with an instance id.
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID joyid);
-
-/**
- *  Return the name for this currently opened joystick.
- *  If no name can be found, this function returns NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick * joystick);
-
-/**
- *  Get the player index of an opened joystick, or -1 if it's not available
- *
- *  For XInput controllers this returns the XInput user index.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick * joystick);
-
-/**
- *  Return the GUID for this opened joystick
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick * joystick);
-
-/**
- *  Get the USB vendor ID of an opened joystick, if available.
- *  If the vendor ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick * joystick);
-
-/**
- *  Get the USB product ID of an opened joystick, if available.
- *  If the product ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick * joystick);
-
-/**
- *  Get the product version of an opened joystick, if available.
- *  If the product version isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick * joystick);
-
-/**
- *  Get the type of an opened joystick.
- */
-extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick * joystick);
-
-/**
- *  Return a string representation for this guid. pszGUID must point to at least 33 bytes
- *  (32 for the string plus a NULL terminator).
- */
-extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID);
-
-/**
- *  Convert a string into a joystick guid
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);
-
-/**
- *  Returns SDL_TRUE if the joystick has been opened and currently connected, or SDL_FALSE if it has not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick * joystick);
-
-/**
- *  Get the instance ID of an opened joystick or -1 if the joystick is invalid.
- */
-extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick * joystick);
-
-/**
- *  Get the number of general axis controls on a joystick.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick * joystick);
-
-/**
- *  Get the number of trackballs on a joystick.
- *
- *  Joystick trackballs have only relative motion events associated
- *  with them and their state cannot be polled.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick * joystick);
-
-/**
- *  Get the number of POV hats on a joystick.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick * joystick);
-
-/**
- *  Get the number of buttons on a joystick.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick * joystick);
-
-/**
- *  Update the current state of the open joysticks.
- *
- *  This is called automatically by the event loop if any joystick
- *  events are enabled.
- */
-extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
-
-/**
- *  Enable/disable joystick event polling.
- *
- *  If joystick events are disabled, you must call SDL_JoystickUpdate()
- *  yourself and check the state of the joystick when you want joystick
- *  information.
- *
- *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
-
-#define SDL_JOYSTICK_AXIS_MAX   32767
-#define SDL_JOYSTICK_AXIS_MIN   -32768
-/**
- *  Get the current state of an axis control on a joystick.
- *
- *  The state is a value ranging from -32768 to 32767.
- *
- *  The axis indices start at index 0.
- */
-extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick * joystick,
-                                                   int axis);
-
-/**
- *  Get the initial state of an axis control on a joystick.
- *
- *  The state is a value ranging from -32768 to 32767.
- *
- *  The axis indices start at index 0.
- *
- *  \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick * joystick,
-                                                   int axis, Sint16 *state);
-
-/**
- *  \name Hat positions
- */
-/* @{ */
-#define SDL_HAT_CENTERED    0x00
-#define SDL_HAT_UP          0x01
-#define SDL_HAT_RIGHT       0x02
-#define SDL_HAT_DOWN        0x04
-#define SDL_HAT_LEFT        0x08
-#define SDL_HAT_RIGHTUP     (SDL_HAT_RIGHT|SDL_HAT_UP)
-#define SDL_HAT_RIGHTDOWN   (SDL_HAT_RIGHT|SDL_HAT_DOWN)
-#define SDL_HAT_LEFTUP      (SDL_HAT_LEFT|SDL_HAT_UP)
-#define SDL_HAT_LEFTDOWN    (SDL_HAT_LEFT|SDL_HAT_DOWN)
-/* @} */
-
-/**
- *  Get the current state of a POV hat on a joystick.
- *
- *  The hat indices start at index 0.
- *
- *  \return The return value is one of the following positions:
- *           - ::SDL_HAT_CENTERED
- *           - ::SDL_HAT_UP
- *           - ::SDL_HAT_RIGHT
- *           - ::SDL_HAT_DOWN
- *           - ::SDL_HAT_LEFT
- *           - ::SDL_HAT_RIGHTUP
- *           - ::SDL_HAT_RIGHTDOWN
- *           - ::SDL_HAT_LEFTUP
- *           - ::SDL_HAT_LEFTDOWN
- */
-extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick * joystick,
-                                                 int hat);
-
-/**
- *  Get the ball axis change since the last poll.
- *
- *  \return 0, or -1 if you passed it invalid parameters.
- *
- *  The ball indices start at index 0.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick * joystick,
-                                                int ball, int *dx, int *dy);
-
-/**
- *  Get the current state of a button on a joystick.
- *
- *  The button indices start at index 0.
- */
-extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick * joystick,
-                                                    int button);
-
-/**
- *  Trigger a rumble effect
- *  Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling.
- *
- *  \param joystick The joystick to vibrate
- *  \param low_frequency_rumble The intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF
- *  \param high_frequency_rumble The intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF
- *  \param duration_ms The duration of the rumble effect, in milliseconds
- *
- *  \return 0, or -1 if rumble isn't supported on this joystick
- */
-extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick * joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
-
-/**
- *  Close a joystick previously opened with SDL_JoystickOpen().
- */
-extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick * joystick);
-
-/**
- *  Return the battery level of this joystick
- */
-extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick * joystick);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_joystick_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_keyboard.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_keyboard.h
deleted file mode 100644 (file)
index 4b2a055..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_keyboard.h
- *
- *  Include file for SDL keyboard event handling
- */
-
-#ifndef SDL_keyboard_h_
-#define SDL_keyboard_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_keycode.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief The SDL keysym structure, used in key events.
- *
- *  \note  If you are looking for translated character input, see the ::SDL_TEXTINPUT event.
- */
-typedef struct SDL_Keysym
-{
-    SDL_Scancode scancode;      /**< SDL physical key code - see ::SDL_Scancode for details */
-    SDL_Keycode sym;            /**< SDL virtual key code - see ::SDL_Keycode for details */
-    Uint16 mod;                 /**< current key modifiers */
-    Uint32 unused;
-} SDL_Keysym;
-
-/* Function prototypes */
-
-/**
- *  \brief Get the window which currently has keyboard focus.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
-
-/**
- *  \brief Get a snapshot of the current state of the keyboard.
- *
- *  \param numkeys if non-NULL, receives the length of the returned array.
- *
- *  \return An array of key states. Indexes into this array are obtained by using ::SDL_Scancode values.
- *
- *  \b Example:
- *  \code
- *  const Uint8 *state = SDL_GetKeyboardState(NULL);
- *  if ( state[SDL_SCANCODE_RETURN] )   {
- *      printf("<RETURN> is pressed.\n");
- *  }
- *  \endcode
- */
-extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys);
-
-/**
- *  \brief Get the current key modifier state for the keyboard.
- */
-extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
-
-/**
- *  \brief Set the current key modifier state for the keyboard.
- *
- *  \note This does not change the keyboard state, only the key modifier flags.
- */
-extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
-
-/**
- *  \brief Get the key code corresponding to the given scancode according
- *         to the current keyboard layout.
- *
- *  See ::SDL_Keycode for details.
- *
- *  \sa SDL_GetKeyName()
- */
-extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode);
-
-/**
- *  \brief Get the scancode corresponding to the given key code according to the
- *         current keyboard layout.
- *
- *  See ::SDL_Scancode for details.
- *
- *  \sa SDL_GetScancodeName()
- */
-extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key);
-
-/**
- *  \brief Get a human-readable name for a scancode.
- *
- *  \return A pointer to the name for the scancode.
- *          If the scancode doesn't have a name, this function returns
- *          an empty string ("").
- *
- *  \sa SDL_Scancode
- */
-extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);
-
-/**
- *  \brief Get a scancode from a human-readable name
- *
- *  \return scancode, or SDL_SCANCODE_UNKNOWN if the name wasn't recognized
- *
- *  \sa SDL_Scancode
- */
-extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);
-
-/**
- *  \brief Get a human-readable name for a key.
- *
- *  \return A pointer to a UTF-8 string that stays valid at least until the next
- *          call to this function. If you need it around any longer, you must
- *          copy it.  If the key doesn't have a name, this function returns an
- *          empty string ("").
- *
- *  \sa SDL_Keycode
- */
-extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key);
-
-/**
- *  \brief Get a key code from a human-readable name
- *
- *  \return key code, or SDLK_UNKNOWN if the name wasn't recognized
- *
- *  \sa SDL_Keycode
- */
-extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
-
-/**
- *  \brief Start accepting Unicode text input events.
- *         This function will show the on-screen keyboard if supported.
- *
- *  \sa SDL_StopTextInput()
- *  \sa SDL_SetTextInputRect()
- *  \sa SDL_HasScreenKeyboardSupport()
- */
-extern DECLSPEC void SDLCALL SDL_StartTextInput(void);
-
-/**
- *  \brief Return whether or not Unicode text input events are enabled.
- *
- *  \sa SDL_StartTextInput()
- *  \sa SDL_StopTextInput()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void);
-
-/**
- *  \brief Stop receiving any text input events.
- *         This function will hide the on-screen keyboard if supported.
- *
- *  \sa SDL_StartTextInput()
- *  \sa SDL_HasScreenKeyboardSupport()
- */
-extern DECLSPEC void SDLCALL SDL_StopTextInput(void);
-
-/**
- *  \brief Set the rectangle used to type Unicode text inputs.
- *         This is used as a hint for IME and on-screen keyboard placement.
- *
- *  \sa SDL_StartTextInput()
- */
-extern DECLSPEC void SDLCALL SDL_SetTextInputRect(SDL_Rect *rect);
-
-/**
- *  \brief Returns whether the platform has some screen keyboard support.
- *
- *  \return SDL_TRUE if some keyboard support is available else SDL_FALSE.
- *
- *  \note Not all screen keyboard functions are supported on all platforms.
- *
- *  \sa SDL_IsScreenKeyboardShown()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void);
-
-/**
- *  \brief Returns whether the screen keyboard is shown for given window.
- *
- *  \param window The window for which screen keyboard should be queried.
- *
- *  \return SDL_TRUE if screen keyboard is shown else SDL_FALSE.
- *
- *  \sa SDL_HasScreenKeyboardSupport()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_keyboard_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_keycode.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_keycode.h
deleted file mode 100644 (file)
index 3bceb41..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_keycode.h
- *
- *  Defines constants which identify keyboard keys and modifiers.
- */
-
-#ifndef SDL_keycode_h_
-#define SDL_keycode_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_scancode.h"
-
-/**
- *  \brief The SDL virtual key representation.
- *
- *  Values of this type are used to represent keyboard keys using the current
- *  layout of the keyboard.  These values include Unicode values representing
- *  the unmodified character that would be generated by pressing the key, or
- *  an SDLK_* constant for those keys that do not generate characters.
- *
- *  A special exception is the number keys at the top of the keyboard which
- *  always map to SDLK_0...SDLK_9, regardless of layout.
- */
-typedef Sint32 SDL_Keycode;
-
-#define SDLK_SCANCODE_MASK (1<<30)
-#define SDL_SCANCODE_TO_KEYCODE(X)  (X | SDLK_SCANCODE_MASK)
-
-enum
-{
-    SDLK_UNKNOWN = 0,
-
-    SDLK_RETURN = '\r',
-    SDLK_ESCAPE = '\033',
-    SDLK_BACKSPACE = '\b',
-    SDLK_TAB = '\t',
-    SDLK_SPACE = ' ',
-    SDLK_EXCLAIM = '!',
-    SDLK_QUOTEDBL = '"',
-    SDLK_HASH = '#',
-    SDLK_PERCENT = '%',
-    SDLK_DOLLAR = '$',
-    SDLK_AMPERSAND = '&',
-    SDLK_QUOTE = '\'',
-    SDLK_LEFTPAREN = '(',
-    SDLK_RIGHTPAREN = ')',
-    SDLK_ASTERISK = '*',
-    SDLK_PLUS = '+',
-    SDLK_COMMA = ',',
-    SDLK_MINUS = '-',
-    SDLK_PERIOD = '.',
-    SDLK_SLASH = '/',
-    SDLK_0 = '0',
-    SDLK_1 = '1',
-    SDLK_2 = '2',
-    SDLK_3 = '3',
-    SDLK_4 = '4',
-    SDLK_5 = '5',
-    SDLK_6 = '6',
-    SDLK_7 = '7',
-    SDLK_8 = '8',
-    SDLK_9 = '9',
-    SDLK_COLON = ':',
-    SDLK_SEMICOLON = ';',
-    SDLK_LESS = '<',
-    SDLK_EQUALS = '=',
-    SDLK_GREATER = '>',
-    SDLK_QUESTION = '?',
-    SDLK_AT = '@',
-    /*
-       Skip uppercase letters
-     */
-    SDLK_LEFTBRACKET = '[',
-    SDLK_BACKSLASH = '\\',
-    SDLK_RIGHTBRACKET = ']',
-    SDLK_CARET = '^',
-    SDLK_UNDERSCORE = '_',
-    SDLK_BACKQUOTE = '`',
-    SDLK_a = 'a',
-    SDLK_b = 'b',
-    SDLK_c = 'c',
-    SDLK_d = 'd',
-    SDLK_e = 'e',
-    SDLK_f = 'f',
-    SDLK_g = 'g',
-    SDLK_h = 'h',
-    SDLK_i = 'i',
-    SDLK_j = 'j',
-    SDLK_k = 'k',
-    SDLK_l = 'l',
-    SDLK_m = 'm',
-    SDLK_n = 'n',
-    SDLK_o = 'o',
-    SDLK_p = 'p',
-    SDLK_q = 'q',
-    SDLK_r = 'r',
-    SDLK_s = 's',
-    SDLK_t = 't',
-    SDLK_u = 'u',
-    SDLK_v = 'v',
-    SDLK_w = 'w',
-    SDLK_x = 'x',
-    SDLK_y = 'y',
-    SDLK_z = 'z',
-
-    SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK),
-
-    SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1),
-    SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2),
-    SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3),
-    SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4),
-    SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5),
-    SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6),
-    SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7),
-    SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8),
-    SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9),
-    SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10),
-    SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11),
-    SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12),
-
-    SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN),
-    SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK),
-    SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE),
-    SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT),
-    SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME),
-    SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP),
-    SDLK_DELETE = '\177',
-    SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END),
-    SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN),
-    SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT),
-    SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT),
-    SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN),
-    SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP),
-
-    SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR),
-    SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE),
-    SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY),
-    SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS),
-    SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS),
-    SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER),
-    SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1),
-    SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2),
-    SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3),
-    SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4),
-    SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5),
-    SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6),
-    SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7),
-    SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8),
-    SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9),
-    SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0),
-    SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD),
-
-    SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION),
-    SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER),
-    SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS),
-    SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13),
-    SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14),
-    SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15),
-    SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16),
-    SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17),
-    SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18),
-    SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19),
-    SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20),
-    SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21),
-    SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22),
-    SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23),
-    SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24),
-    SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE),
-    SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP),
-    SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU),
-    SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT),
-    SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP),
-    SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN),
-    SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO),
-    SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT),
-    SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY),
-    SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE),
-    SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND),
-    SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE),
-    SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP),
-    SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN),
-    SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA),
-    SDLK_KP_EQUALSAS400 =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400),
-
-    SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE),
-    SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ),
-    SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL),
-    SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR),
-    SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR),
-    SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2),
-    SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR),
-    SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT),
-    SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER),
-    SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN),
-    SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL),
-    SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL),
-
-    SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00),
-    SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000),
-    SDLK_THOUSANDSSEPARATOR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR),
-    SDLK_DECIMALSEPARATOR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR),
-    SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT),
-    SDLK_CURRENCYSUBUNIT =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT),
-    SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN),
-    SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN),
-    SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE),
-    SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE),
-    SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB),
-    SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE),
-    SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A),
-    SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B),
-    SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C),
-    SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D),
-    SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E),
-    SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F),
-    SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR),
-    SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER),
-    SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT),
-    SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS),
-    SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER),
-    SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND),
-    SDLK_KP_DBLAMPERSAND =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND),
-    SDLK_KP_VERTICALBAR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR),
-    SDLK_KP_DBLVERTICALBAR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR),
-    SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON),
-    SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH),
-    SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE),
-    SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT),
-    SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM),
-    SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE),
-    SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL),
-    SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR),
-    SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD),
-    SDLK_KP_MEMSUBTRACT =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT),
-    SDLK_KP_MEMMULTIPLY =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY),
-    SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE),
-    SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS),
-    SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR),
-    SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY),
-    SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY),
-    SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL),
-    SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL),
-    SDLK_KP_HEXADECIMAL =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL),
-
-    SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL),
-    SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT),
-    SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT),
-    SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI),
-    SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL),
-    SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT),
-    SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT),
-    SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI),
-
-    SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE),
-
-    SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT),
-    SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV),
-    SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP),
-    SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY),
-    SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE),
-    SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT),
-    SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW),
-    SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL),
-    SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR),
-    SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER),
-    SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH),
-    SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME),
-    SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK),
-    SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD),
-    SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP),
-    SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH),
-    SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS),
-
-    SDLK_BRIGHTNESSDOWN =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN),
-    SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP),
-    SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH),
-    SDLK_KBDILLUMTOGGLE =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE),
-    SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN),
-    SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP),
-    SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT),
-    SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP),
-    SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1),
-    SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2),
-
-    SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND),
-    SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD)
-};
-
-/**
- * \brief Enumeration of valid key mods (possibly OR'd together).
- */
-typedef enum
-{
-    KMOD_NONE = 0x0000,
-    KMOD_LSHIFT = 0x0001,
-    KMOD_RSHIFT = 0x0002,
-    KMOD_LCTRL = 0x0040,
-    KMOD_RCTRL = 0x0080,
-    KMOD_LALT = 0x0100,
-    KMOD_RALT = 0x0200,
-    KMOD_LGUI = 0x0400,
-    KMOD_RGUI = 0x0800,
-    KMOD_NUM = 0x1000,
-    KMOD_CAPS = 0x2000,
-    KMOD_MODE = 0x4000,
-    KMOD_RESERVED = 0x8000
-} SDL_Keymod;
-
-#define KMOD_CTRL   (KMOD_LCTRL|KMOD_RCTRL)
-#define KMOD_SHIFT  (KMOD_LSHIFT|KMOD_RSHIFT)
-#define KMOD_ALT    (KMOD_LALT|KMOD_RALT)
-#define KMOD_GUI    (KMOD_LGUI|KMOD_RGUI)
-
-#endif /* SDL_keycode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_loadso.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_loadso.h
deleted file mode 100644 (file)
index 793ba53..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_loadso.h
- *
- *  System dependent library loading routines
- *
- *  Some things to keep in mind:
- *  \li These functions only work on C function names.  Other languages may
- *      have name mangling and intrinsic language support that varies from
- *      compiler to compiler.
- *  \li Make sure you declare your function pointers with the same calling
- *      convention as the actual library function.  Your code will crash
- *      mysteriously if you do not do this.
- *  \li Avoid namespace collisions.  If you load a symbol from the library,
- *      it is not defined whether or not it goes into the global symbol
- *      namespace for the application.  If it does and it conflicts with
- *      symbols in your code or other shared libraries, you will not get
- *      the results you expect. :)
- */
-
-#ifndef SDL_loadso_h_
-#define SDL_loadso_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  This function dynamically loads a shared object and returns a pointer
- *  to the object handle (or NULL if there was an error).
- *  The 'sofile' parameter is a system dependent name of the object file.
- */
-extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile);
-
-/**
- *  Given an object handle, this function looks up the address of the
- *  named function in the shared object and returns it.  This address
- *  is no longer valid after calling SDL_UnloadObject().
- */
-extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle,
-                                               const char *name);
-
-/**
- *  Unload a shared object from memory.
- */
-extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_loadso_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_log.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_log.h
deleted file mode 100644 (file)
index 40f768d..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_log.h
- *
- *  Simple log messages with categories and priorities.
- *
- *  By default logs are quiet, but if you're debugging SDL you might want:
- *
- *      SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);
- *
- *  Here's where the messages go on different platforms:
- *      Windows: debug output stream
- *      Android: log output
- *      Others: standard error output (stderr)
- */
-
-#ifndef SDL_log_h_
-#define SDL_log_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- *  \brief The maximum size of a log message
- *
- *  Messages longer than the maximum size will be truncated
- */
-#define SDL_MAX_LOG_MESSAGE 4096
-
-/**
- *  \brief The predefined log categories
- *
- *  By default the application category is enabled at the INFO level,
- *  the assert category is enabled at the WARN level, test is enabled
- *  at the VERBOSE level and all other categories are enabled at the
- *  CRITICAL level.
- */
-enum
-{
-    SDL_LOG_CATEGORY_APPLICATION,
-    SDL_LOG_CATEGORY_ERROR,
-    SDL_LOG_CATEGORY_ASSERT,
-    SDL_LOG_CATEGORY_SYSTEM,
-    SDL_LOG_CATEGORY_AUDIO,
-    SDL_LOG_CATEGORY_VIDEO,
-    SDL_LOG_CATEGORY_RENDER,
-    SDL_LOG_CATEGORY_INPUT,
-    SDL_LOG_CATEGORY_TEST,
-
-    /* Reserved for future SDL library use */
-    SDL_LOG_CATEGORY_RESERVED1,
-    SDL_LOG_CATEGORY_RESERVED2,
-    SDL_LOG_CATEGORY_RESERVED3,
-    SDL_LOG_CATEGORY_RESERVED4,
-    SDL_LOG_CATEGORY_RESERVED5,
-    SDL_LOG_CATEGORY_RESERVED6,
-    SDL_LOG_CATEGORY_RESERVED7,
-    SDL_LOG_CATEGORY_RESERVED8,
-    SDL_LOG_CATEGORY_RESERVED9,
-    SDL_LOG_CATEGORY_RESERVED10,
-
-    /* Beyond this point is reserved for application use, e.g.
-       enum {
-           MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM,
-           MYAPP_CATEGORY_AWESOME2,
-           MYAPP_CATEGORY_AWESOME3,
-           ...
-       };
-     */
-    SDL_LOG_CATEGORY_CUSTOM
-};
-
-/**
- *  \brief The predefined log priorities
- */
-typedef enum
-{
-    SDL_LOG_PRIORITY_VERBOSE = 1,
-    SDL_LOG_PRIORITY_DEBUG,
-    SDL_LOG_PRIORITY_INFO,
-    SDL_LOG_PRIORITY_WARN,
-    SDL_LOG_PRIORITY_ERROR,
-    SDL_LOG_PRIORITY_CRITICAL,
-    SDL_NUM_LOG_PRIORITIES
-} SDL_LogPriority;
-
-
-/**
- *  \brief Set the priority of all log categories
- */
-extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority);
-
-/**
- *  \brief Set the priority of a particular log category
- */
-extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category,
-                                                SDL_LogPriority priority);
-
-/**
- *  \brief Get the priority of a particular log category
- */
-extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category);
-
-/**
- *  \brief Reset all priorities to default.
- *
- *  \note This is called in SDL_Quit().
- */
-extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void);
-
-/**
- *  \brief Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO
- */
-extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_VERBOSE
- */
-extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_DEBUG
- */
-extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_INFO
- */
-extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_WARN
- */
-extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_ERROR
- */
-extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_CRITICAL
- */
-extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with the specified category and priority.
- */
-extern DECLSPEC void SDLCALL SDL_LogMessage(int category,
-                                            SDL_LogPriority priority,
-                                            SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3);
-
-/**
- *  \brief Log a message with the specified category and priority.
- */
-extern DECLSPEC void SDLCALL SDL_LogMessageV(int category,
-                                             SDL_LogPriority priority,
-                                             const char *fmt, va_list ap);
-
-/**
- *  \brief The prototype for the log output function
- */
-typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message);
-
-/**
- *  \brief Get the current log output function.
- */
-extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata);
-
-/**
- *  \brief This function allows you to replace the default log output
- *         function with one of your own.
- */
-extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_log_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_main.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_main.h
deleted file mode 100644 (file)
index 623f2d0..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_main_h_
-#define SDL_main_h_
-
-#include "SDL_stdinc.h"
-
-/**
- *  \file SDL_main.h
- *
- *  Redefine main() on some platforms so that it is called by SDL.
- */
-
-#ifndef SDL_MAIN_HANDLED
-#if defined(__WIN32__)
-/* On Windows SDL provides WinMain(), which parses the command line and passes
-   the arguments to your main function.
-
-   If you provide your own WinMain(), you may define SDL_MAIN_HANDLED
- */
-#define SDL_MAIN_AVAILABLE
-
-#elif defined(__WINRT__)
-/* On WinRT, SDL provides a main function that initializes CoreApplication,
-   creating an instance of IFrameworkView in the process.
-
-   Please note that #include'ing SDL_main.h is not enough to get a main()
-   function working.  In non-XAML apps, the file,
-   src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled
-   into the app itself.  In XAML apps, the function, SDL_WinRTRunApp must be
-   called, with a pointer to the Direct3D-hosted XAML control passed in.
-*/
-#define SDL_MAIN_NEEDED
-
-#elif defined(__IPHONEOS__)
-/* On iOS SDL provides a main function that creates an application delegate
-   and starts the iOS application run loop.
-
-   If you link with SDL dynamically on iOS, the main function can't be in a
-   shared library, so you need to link with libSDLmain.a, which includes a
-   stub main function that calls into the shared library to start execution.
-
-   See src/video/uikit/SDL_uikitappdelegate.m for more details.
- */
-#define SDL_MAIN_NEEDED
-
-#elif defined(__ANDROID__)
-/* On Android SDL provides a Java class in SDLActivity.java that is the
-   main activity entry point.
-
-   See docs/README-android.md for more details on extending that class.
- */
-#define SDL_MAIN_NEEDED
-
-/* We need to export SDL_main so it can be launched from Java */
-#define SDLMAIN_DECLSPEC    DECLSPEC
-
-#elif defined(__NACL__)
-/* On NACL we use ppapi_simple to set up the application helper code,
-   then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before 
-   starting the user main function.
-   All user code is run in a separate thread by ppapi_simple, thus 
-   allowing for blocking io to take place via nacl_io
-*/
-#define SDL_MAIN_NEEDED
-
-#endif
-#endif /* SDL_MAIN_HANDLED */
-
-#ifndef SDLMAIN_DECLSPEC
-#define SDLMAIN_DECLSPEC
-#endif
-
-/**
- *  \file SDL_main.h
- *
- *  The application's main() function must be called with C linkage,
- *  and should be declared like this:
- *  \code
- *  #ifdef __cplusplus
- *  extern "C"
- *  #endif
- *  int main(int argc, char *argv[])
- *  {
- *  }
- *  \endcode
- */
-
-#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
-#define main    SDL_main
-#endif
-
-#include "begin_code.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  The prototype for the application's main() function
- */
-typedef int (*SDL_main_func)(int argc, char *argv[]);
-extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]);
-
-
-/**
- *  This is called by the real SDL main function to let the rest of the
- *  library know that initialization was done properly.
- *
- *  Calling this yourself without knowing what you're doing can cause
- *  crashes and hard to diagnose problems with your application.
- */
-extern DECLSPEC void SDLCALL SDL_SetMainReady(void);
-
-#ifdef __WIN32__
-
-/**
- *  This can be called to set the application class at startup
- */
-extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, void *hInst);
-extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
-
-#endif /* __WIN32__ */
-
-
-#ifdef __WINRT__
-
-/**
- *  \brief Initializes and launches an SDL/WinRT application.
- *
- *  \param mainFunction The SDL app's C-style main().
- *  \param reserved Reserved for future use; should be NULL
- *  \return 0 on success, -1 on failure.  On failure, use SDL_GetError to retrieve more
- *      information on the failure.
- */
-extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved);
-
-#endif /* __WINRT__ */
-
-#if defined(__IPHONEOS__)
-
-/**
- *  \brief Initializes and launches an SDL application.
- *
- *  \param argc The argc parameter from the application's main() function
- *  \param argv The argv parameter from the application's main() function
- *  \param mainFunction The SDL app's C-style main().
- *  \return the return value from mainFunction
- */
-extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction);
-
-#endif /* __IPHONEOS__ */
-
-
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_main_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_messagebox.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_messagebox.h
deleted file mode 100644 (file)
index e34b554..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_messagebox_h_
-#define SDL_messagebox_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_video.h"      /* For SDL_Window */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief SDL_MessageBox flags. If supported will display warning icon, etc.
- */
-typedef enum
-{
-    SDL_MESSAGEBOX_ERROR        = 0x00000010,   /**< error dialog */
-    SDL_MESSAGEBOX_WARNING      = 0x00000020,   /**< warning dialog */
-    SDL_MESSAGEBOX_INFORMATION  = 0x00000040    /**< informational dialog */
-} SDL_MessageBoxFlags;
-
-/**
- * \brief Flags for SDL_MessageBoxButtonData.
- */
-typedef enum
-{
-    SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001,  /**< Marks the default button when return is hit */
-    SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002   /**< Marks the default button when escape is hit */
-} SDL_MessageBoxButtonFlags;
-
-/**
- *  \brief Individual button data.
- */
-typedef struct
-{
-    Uint32 flags;       /**< ::SDL_MessageBoxButtonFlags */
-    int buttonid;       /**< User defined button id (value returned via SDL_ShowMessageBox) */
-    const char * text;  /**< The UTF-8 button text */
-} SDL_MessageBoxButtonData;
-
-/**
- * \brief RGB value used in a message box color scheme
- */
-typedef struct
-{
-    Uint8 r, g, b;
-} SDL_MessageBoxColor;
-
-typedef enum
-{
-    SDL_MESSAGEBOX_COLOR_BACKGROUND,
-    SDL_MESSAGEBOX_COLOR_TEXT,
-    SDL_MESSAGEBOX_COLOR_BUTTON_BORDER,
-    SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND,
-    SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED,
-    SDL_MESSAGEBOX_COLOR_MAX
-} SDL_MessageBoxColorType;
-
-/**
- * \brief A set of colors to use for message box dialogs
- */
-typedef struct
-{
-    SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];
-} SDL_MessageBoxColorScheme;
-
-/**
- *  \brief MessageBox structure containing title, text, window, etc.
- */
-typedef struct
-{
-    Uint32 flags;                       /**< ::SDL_MessageBoxFlags */
-    SDL_Window *window;                 /**< Parent window, can be NULL */
-    const char *title;                  /**< UTF-8 title */
-    const char *message;                /**< UTF-8 message text */
-
-    int numbuttons;
-    const SDL_MessageBoxButtonData *buttons;
-
-    const SDL_MessageBoxColorScheme *colorScheme;   /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */
-} SDL_MessageBoxData;
-
-/**
- *  \brief Create a modal message box.
- *
- *  \param messageboxdata The SDL_MessageBoxData structure with title, text, etc.
- *  \param buttonid The pointer to which user id of hit button should be copied.
- *
- *  \return -1 on error, otherwise 0 and buttonid contains user id of button
- *          hit or -1 if dialog was closed.
- *
- *  \note This function should be called on the thread that created the parent
- *        window, or on the main thread if the messagebox has no parent.  It will
- *        block execution of that thread until the user clicks a button or
- *        closes the messagebox.
- */
-extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid);
-
-/**
- *  \brief Create a simple modal message box
- *
- *  \param flags    ::SDL_MessageBoxFlags
- *  \param title    UTF-8 title text
- *  \param message  UTF-8 message text
- *  \param window   The parent window, or NULL for no parent
- *
- *  \return 0 on success, -1 on error
- *
- *  \sa SDL_ShowMessageBox
- */
-extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_messagebox_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_mouse.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_mouse.h
deleted file mode 100644 (file)
index 277559d..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_mouse.h
- *
- *  Include file for SDL mouse event handling.
- */
-
-#ifndef SDL_mouse_h_
-#define SDL_mouse_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct SDL_Cursor SDL_Cursor;   /**< Implementation dependent */
-
-/**
- * \brief Cursor types for SDL_CreateSystemCursor().
- */
-typedef enum
-{
-    SDL_SYSTEM_CURSOR_ARROW,     /**< Arrow */
-    SDL_SYSTEM_CURSOR_IBEAM,     /**< I-beam */
-    SDL_SYSTEM_CURSOR_WAIT,      /**< Wait */
-    SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */
-    SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */
-    SDL_SYSTEM_CURSOR_SIZENWSE,  /**< Double arrow pointing northwest and southeast */
-    SDL_SYSTEM_CURSOR_SIZENESW,  /**< Double arrow pointing northeast and southwest */
-    SDL_SYSTEM_CURSOR_SIZEWE,    /**< Double arrow pointing west and east */
-    SDL_SYSTEM_CURSOR_SIZENS,    /**< Double arrow pointing north and south */
-    SDL_SYSTEM_CURSOR_SIZEALL,   /**< Four pointed arrow pointing north, south, east, and west */
-    SDL_SYSTEM_CURSOR_NO,        /**< Slashed circle or crossbones */
-    SDL_SYSTEM_CURSOR_HAND,      /**< Hand */
-    SDL_NUM_SYSTEM_CURSORS
-} SDL_SystemCursor;
-
-/**
- * \brief Scroll direction types for the Scroll event
- */
-typedef enum
-{
-    SDL_MOUSEWHEEL_NORMAL,    /**< The scroll direction is normal */
-    SDL_MOUSEWHEEL_FLIPPED    /**< The scroll direction is flipped / natural */
-} SDL_MouseWheelDirection;
-
-/* Function prototypes */
-
-/**
- *  \brief Get the window which currently has mouse focus.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void);
-
-/**
- *  \brief Retrieve the current state of the mouse.
- *
- *  The current button state is returned as a button bitmask, which can
- *  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
- *  mouse cursor position relative to the focus window for the currently
- *  selected mouse.  You can pass NULL for either x or y.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y);
-
-/**
- *  \brief Get the current state of the mouse, in relation to the desktop
- *
- *  This works just like SDL_GetMouseState(), but the coordinates will be
- *  reported relative to the top-left of the desktop. This can be useful if
- *  you need to track the mouse outside of a specific window and
- *  SDL_CaptureMouse() doesn't fit your needs. For example, it could be
- *  useful if you need to track the mouse while dragging a window, where
- *  coordinates relative to a window might not be in sync at all times.
- *
- *  \note SDL_GetMouseState() returns the mouse position as SDL understands
- *        it from the last pump of the event queue. This function, however,
- *        queries the OS for the current mouse position, and as such, might
- *        be a slightly less efficient function. Unless you know what you're
- *        doing and have a good reason to use this function, you probably want
- *        SDL_GetMouseState() instead.
- *
- *  \param x Returns the current X coord, relative to the desktop. Can be NULL.
- *  \param y Returns the current Y coord, relative to the desktop. Can be NULL.
- *  \return The current button state as a bitmask, which can be tested using the SDL_BUTTON(X) macros.
- *
- *  \sa SDL_GetMouseState
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y);
-
-/**
- *  \brief Retrieve the relative state of the mouse.
- *
- *  The current button state is returned as a button bitmask, which can
- *  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
- *  mouse deltas since the last call to SDL_GetRelativeMouseState().
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
-
-/**
- *  \brief Moves the mouse to the given position within the window.
- *
- *  \param window The window to move the mouse into, or NULL for the current mouse focus
- *  \param x The x coordinate within the window
- *  \param y The y coordinate within the window
- *
- *  \note This function generates a mouse motion event
- */
-extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
-                                                   int x, int y);
-
-/**
- *  \brief Moves the mouse to the given position in global screen space.
- *
- *  \param x The x coordinate
- *  \param y The y coordinate
- *  \return 0 on success, -1 on error (usually: unsupported by a platform).
- *
- *  \note This function generates a mouse motion event
- */
-extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y);
-
-/**
- *  \brief Set relative mouse mode.
- *
- *  \param enabled Whether or not to enable relative mode
- *
- *  \return 0 on success, or -1 if relative mode is not supported.
- *
- *  While the mouse is in relative mode, the cursor is hidden, and the
- *  driver will try to report continuous motion in the current window.
- *  Only relative motion events will be delivered, the mouse position
- *  will not change.
- *
- *  \note This function will flush any pending mouse motion.
- *
- *  \sa SDL_GetRelativeMouseMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled);
-
-/**
- *  \brief Capture the mouse, to track input outside an SDL window.
- *
- *  \param enabled Whether or not to enable capturing
- *
- *  Capturing enables your app to obtain mouse events globally, instead of
- *  just within your window. Not all video targets support this function.
- *  When capturing is enabled, the current window will get all mouse events,
- *  but unlike relative mode, no change is made to the cursor and it is
- *  not restrained to your window.
- *
- *  This function may also deny mouse input to other windows--both those in
- *  your application and others on the system--so you should use this
- *  function sparingly, and in small bursts. For example, you might want to
- *  track the mouse while the user is dragging something, until the user
- *  releases a mouse button. It is not recommended that you capture the mouse
- *  for long periods of time, such as the entire time your app is running.
- *
- *  While captured, mouse events still report coordinates relative to the
- *  current (foreground) window, but those coordinates may be outside the
- *  bounds of the window (including negative values). Capturing is only
- *  allowed for the foreground window. If the window loses focus while
- *  capturing, the capture will be disabled automatically.
- *
- *  While capturing is enabled, the current window will have the
- *  SDL_WINDOW_MOUSE_CAPTURE flag set.
- *
- *  \return 0 on success, or -1 if not supported.
- */
-extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled);
-
-/**
- *  \brief Query whether relative mouse mode is enabled.
- *
- *  \sa SDL_SetRelativeMouseMode()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
-
-/**
- *  \brief Create a cursor, using the specified bitmap data and
- *         mask (in MSB format).
- *
- *  The cursor width must be a multiple of 8 bits.
- *
- *  The cursor is created in black and white according to the following:
- *  <table>
- *  <tr><td> data </td><td> mask </td><td> resulting pixel on screen </td></tr>
- *  <tr><td>  0   </td><td>  1   </td><td> White </td></tr>
- *  <tr><td>  1   </td><td>  1   </td><td> Black </td></tr>
- *  <tr><td>  0   </td><td>  0   </td><td> Transparent </td></tr>
- *  <tr><td>  1   </td><td>  0   </td><td> Inverted color if possible, black
- *                                         if not. </td></tr>
- *  </table>
- *
- *  \sa SDL_FreeCursor()
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,
-                                                     const Uint8 * mask,
-                                                     int w, int h, int hot_x,
-                                                     int hot_y);
-
-/**
- *  \brief Create a color cursor.
- *
- *  \sa SDL_FreeCursor()
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface,
-                                                          int hot_x,
-                                                          int hot_y);
-
-/**
- *  \brief Create a system cursor.
- *
- *  \sa SDL_FreeCursor()
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id);
-
-/**
- *  \brief Set the active cursor.
- */
-extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor);
-
-/**
- *  \brief Return the active cursor.
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void);
-
-/**
- *  \brief Return the default cursor.
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void);
-
-/**
- *  \brief Frees a cursor created with SDL_CreateCursor() or similar functions.
- *
- *  \sa SDL_CreateCursor()
- *  \sa SDL_CreateColorCursor()
- *  \sa SDL_CreateSystemCursor()
- */
-extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);
-
-/**
- *  \brief Toggle whether or not the cursor is shown.
- *
- *  \param toggle 1 to show the cursor, 0 to hide it, -1 to query the current
- *                state.
- *
- *  \return 1 if the cursor is shown, or 0 if the cursor is hidden.
- */
-extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
-
-/**
- *  Used as a mask when testing buttons in buttonstate.
- *   - Button 1:  Left mouse button
- *   - Button 2:  Middle mouse button
- *   - Button 3:  Right mouse button
- */
-#define SDL_BUTTON(X)       (1 << ((X)-1))
-#define SDL_BUTTON_LEFT     1
-#define SDL_BUTTON_MIDDLE   2
-#define SDL_BUTTON_RIGHT    3
-#define SDL_BUTTON_X1       4
-#define SDL_BUTTON_X2       5
-#define SDL_BUTTON_LMASK    SDL_BUTTON(SDL_BUTTON_LEFT)
-#define SDL_BUTTON_MMASK    SDL_BUTTON(SDL_BUTTON_MIDDLE)
-#define SDL_BUTTON_RMASK    SDL_BUTTON(SDL_BUTTON_RIGHT)
-#define SDL_BUTTON_X1MASK   SDL_BUTTON(SDL_BUTTON_X1)
-#define SDL_BUTTON_X2MASK   SDL_BUTTON(SDL_BUTTON_X2)
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_mouse_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_mutex.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_mutex.h
deleted file mode 100644 (file)
index 970e787..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_mutex_h_
-#define SDL_mutex_h_
-
-/**
- *  \file SDL_mutex.h
- *
- *  Functions to provide thread synchronization primitives.
- */
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  Synchronization functions which can time out return this value
- *  if they time out.
- */
-#define SDL_MUTEX_TIMEDOUT  1
-
-/**
- *  This is the timeout value which corresponds to never time out.
- */
-#define SDL_MUTEX_MAXWAIT   (~(Uint32)0)
-
-
-/**
- *  \name Mutex functions
- */
-/* @{ */
-
-/* The SDL mutex structure, defined in SDL_sysmutex.c */
-struct SDL_mutex;
-typedef struct SDL_mutex SDL_mutex;
-
-/**
- *  Create a mutex, initialized unlocked.
- */
-extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);
-
-/**
- *  Lock the mutex.
- *
- *  \return 0, or -1 on error.
- */
-#define SDL_mutexP(m)   SDL_LockMutex(m)
-extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex);
-
-/**
- *  Try to lock the mutex
- *
- *  \return 0, SDL_MUTEX_TIMEDOUT, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex);
-
-/**
- *  Unlock the mutex.
- *
- *  \return 0, or -1 on error.
- *
- *  \warning It is an error to unlock a mutex that has not been locked by
- *           the current thread, and doing so results in undefined behavior.
- */
-#define SDL_mutexV(m)   SDL_UnlockMutex(m)
-extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex);
-
-/**
- *  Destroy a mutex.
- */
-extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex);
-
-/* @} *//* Mutex functions */
-
-
-/**
- *  \name Semaphore functions
- */
-/* @{ */
-
-/* The SDL semaphore structure, defined in SDL_syssem.c */
-struct SDL_semaphore;
-typedef struct SDL_semaphore SDL_sem;
-
-/**
- *  Create a semaphore, initialized with value, returns NULL on failure.
- */
-extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value);
-
-/**
- *  Destroy a semaphore.
- */
-extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem);
-
-/**
- *  This function suspends the calling thread until the semaphore pointed
- *  to by \c sem has a positive count. It then atomically decreases the
- *  semaphore count.
- */
-extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);
-
-/**
- *  Non-blocking variant of SDL_SemWait().
- *
- *  \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait would
- *          block, and -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);
-
-/**
- *  Variant of SDL_SemWait() with a timeout in milliseconds.
- *
- *  \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait does not
- *          succeed in the allotted time, and -1 on error.
- *
- *  \warning On some platforms this function is implemented by looping with a
- *           delay of 1 ms, and so should be avoided if possible.
- */
-extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem * sem, Uint32 ms);
-
-/**
- *  Atomically increases the semaphore's count (not blocking).
- *
- *  \return 0, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem);
-
-/**
- *  Returns the current count of the semaphore.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem);
-
-/* @} *//* Semaphore functions */
-
-
-/**
- *  \name Condition variable functions
- */
-/* @{ */
-
-/* The SDL condition variable structure, defined in SDL_syscond.c */
-struct SDL_cond;
-typedef struct SDL_cond SDL_cond;
-
-/**
- *  Create a condition variable.
- *
- *  Typical use of condition variables:
- *
- *  Thread A:
- *    SDL_LockMutex(lock);
- *    while ( ! condition ) {
- *        SDL_CondWait(cond, lock);
- *    }
- *    SDL_UnlockMutex(lock);
- *
- *  Thread B:
- *    SDL_LockMutex(lock);
- *    ...
- *    condition = true;
- *    ...
- *    SDL_CondSignal(cond);
- *    SDL_UnlockMutex(lock);
- *
- *  There is some discussion whether to signal the condition variable
- *  with the mutex locked or not.  There is some potential performance
- *  benefit to unlocking first on some platforms, but there are some
- *  potential race conditions depending on how your code is structured.
- *
- *  In general it's safer to signal the condition variable while the
- *  mutex is locked.
- */
-extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void);
-
-/**
- *  Destroy a condition variable.
- */
-extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond);
-
-/**
- *  Restart one of the threads that are waiting on the condition variable.
- *
- *  \return 0 or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond);
-
-/**
- *  Restart all threads that are waiting on the condition variable.
- *
- *  \return 0 or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);
-
-/**
- *  Wait on the condition variable, unlocking the provided mutex.
- *
- *  \warning The mutex must be locked before entering this function!
- *
- *  The mutex is re-locked once the condition variable is signaled.
- *
- *  \return 0 when it is signaled, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
-
-/**
- *  Waits for at most \c ms milliseconds, and returns 0 if the condition
- *  variable is signaled, ::SDL_MUTEX_TIMEDOUT if the condition is not
- *  signaled in the allotted time, and -1 on error.
- *
- *  \warning On some platforms this function is implemented by looping with a
- *           delay of 1 ms, and so should be avoided if possible.
- */
-extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond,
-                                                SDL_mutex * mutex, Uint32 ms);
-
-/* @} *//* Condition variable functions */
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_mutex_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_name.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_name.h
deleted file mode 100644 (file)
index 690a819..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDLname_h_
-#define SDLname_h_
-
-#if defined(__STDC__) || defined(__cplusplus)
-#define NeedFunctionPrototypes 1
-#endif
-
-#define SDL_NAME(X) SDL_##X
-
-#endif /* SDLname_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_opengl.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_opengl.h
deleted file mode 100644 (file)
index 6685be7..0000000
+++ /dev/null
@@ -1,2183 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_opengl.h
- *
- *  This is a simple file to encapsulate the OpenGL API headers.
- */
-
-/**
- *  \def NO_SDL_GLEXT
- *
- *  Define this if you have your own version of glext.h and want to disable the
- *  version included in SDL_opengl.h.
- */
-
-#ifndef SDL_opengl_h_
-#define SDL_opengl_h_
-
-#include "SDL_config.h"
-
-#ifndef __IPHONEOS__  /* No OpenGL on iOS. */
-
-/*
- * Mesa 3-D graphics library
- *
- * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
- * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#ifndef __gl_h_
-#define __gl_h_
-
-#if defined(USE_MGL_NAMESPACE)
-#include "gl_mangle.h"
-#endif
-
-
-/**********************************************************************
- * Begin system-specific stuff.
- */
-
-#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__)
-#define __WIN32__
-#endif
-
-#if defined(__WIN32__) && !defined(__CYGWIN__)
-#  if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
-#    define GLAPI __declspec(dllexport)
-#  elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
-#    define GLAPI __declspec(dllimport)
-#  else /* for use with static link lib build of Win32 edition only */
-#    define GLAPI extern
-#  endif /* _STATIC_MESA support */
-#  if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE)  /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */
-#    define GLAPIENTRY 
-#  else
-#    define GLAPIENTRY __stdcall
-#  endif
-#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
-#  define GLAPI extern
-#  define GLAPIENTRY __stdcall
-#elif defined(__OS2__) || defined(__EMX__) /* native os/2 opengl */
-#  define GLAPI extern
-#  define GLAPIENTRY _System
-#  define APIENTRY _System
-#  if defined(__GNUC__) && !defined(_System)
-#    define _System
-#  endif
-#elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-#  define GLAPI __attribute__((visibility("default")))
-#  define GLAPIENTRY
-#endif /* WIN32 && !CYGWIN */
-
-/*
- * WINDOWS: Include windows.h here to define APIENTRY.
- * It is also useful when applications include this file by
- * including only glut.h, since glut.h depends on windows.h.
- * Applications needing to include windows.h with parms other
- * than "WIN32_LEAN_AND_MEAN" may include windows.h before
- * glut.h or gl.h.
- */
-#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#ifndef NOMINMAX   /* don't define min() and max(). */
-#define NOMINMAX
-#endif
-#include <windows.h>
-#endif
-
-#ifndef GLAPI
-#define GLAPI extern
-#endif
-
-#ifndef GLAPIENTRY
-#define GLAPIENTRY
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY GLAPIENTRY
-#endif
-
-/* "P" suffix to be used for a pointer to a function */
-#ifndef APIENTRYP
-#define APIENTRYP APIENTRY *
-#endif
-
-#ifndef GLAPIENTRYP
-#define GLAPIENTRYP GLAPIENTRY *
-#endif
-
-#if defined(PRAGMA_EXPORT_SUPPORTED)
-#pragma export on
-#endif
-
-/*
- * End system-specific stuff.
- **********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define GL_VERSION_1_1   1
-#define GL_VERSION_1_2   1
-#define GL_VERSION_1_3   1
-#define GL_ARB_imaging   1
-
-
-/*
- * Datatypes
- */
-typedef unsigned int   GLenum;
-typedef unsigned char  GLboolean;
-typedef unsigned int   GLbitfield;
-typedef void           GLvoid;
-typedef signed char    GLbyte;         /* 1-byte signed */
-typedef short          GLshort;        /* 2-byte signed */
-typedef int            GLint;          /* 4-byte signed */
-typedef unsigned char  GLubyte;        /* 1-byte unsigned */
-typedef unsigned short GLushort;       /* 2-byte unsigned */
-typedef unsigned int   GLuint;         /* 4-byte unsigned */
-typedef int            GLsizei;        /* 4-byte signed */
-typedef float          GLfloat;        /* single precision float */
-typedef float          GLclampf;       /* single precision float in [0,1] */
-typedef double         GLdouble;       /* double precision float */
-typedef double         GLclampd;       /* double precision float in [0,1] */
-
-
-
-/*
- * Constants
- */
-
-/* Boolean values */
-#define GL_FALSE                               0
-#define GL_TRUE                                        1
-
-/* Data types */
-#define GL_BYTE                                        0x1400
-#define GL_UNSIGNED_BYTE                       0x1401
-#define GL_SHORT                               0x1402
-#define GL_UNSIGNED_SHORT                      0x1403
-#define GL_INT                                 0x1404
-#define GL_UNSIGNED_INT                                0x1405
-#define GL_FLOAT                               0x1406
-#define GL_2_BYTES                             0x1407
-#define GL_3_BYTES                             0x1408
-#define GL_4_BYTES                             0x1409
-#define GL_DOUBLE                              0x140A
-
-/* Primitives */
-#define GL_POINTS                              0x0000
-#define GL_LINES                               0x0001
-#define GL_LINE_LOOP                           0x0002
-#define GL_LINE_STRIP                          0x0003
-#define GL_TRIANGLES                           0x0004
-#define GL_TRIANGLE_STRIP                      0x0005
-#define GL_TRIANGLE_FAN                                0x0006
-#define GL_QUADS                               0x0007
-#define GL_QUAD_STRIP                          0x0008
-#define GL_POLYGON                             0x0009
-
-/* Vertex Arrays */
-#define GL_VERTEX_ARRAY                                0x8074
-#define GL_NORMAL_ARRAY                                0x8075
-#define GL_COLOR_ARRAY                         0x8076
-#define GL_INDEX_ARRAY                         0x8077
-#define GL_TEXTURE_COORD_ARRAY                 0x8078
-#define GL_EDGE_FLAG_ARRAY                     0x8079
-#define GL_VERTEX_ARRAY_SIZE                   0x807A
-#define GL_VERTEX_ARRAY_TYPE                   0x807B
-#define GL_VERTEX_ARRAY_STRIDE                 0x807C
-#define GL_NORMAL_ARRAY_TYPE                   0x807E
-#define GL_NORMAL_ARRAY_STRIDE                 0x807F
-#define GL_COLOR_ARRAY_SIZE                    0x8081
-#define GL_COLOR_ARRAY_TYPE                    0x8082
-#define GL_COLOR_ARRAY_STRIDE                  0x8083
-#define GL_INDEX_ARRAY_TYPE                    0x8085
-#define GL_INDEX_ARRAY_STRIDE                  0x8086
-#define GL_TEXTURE_COORD_ARRAY_SIZE            0x8088
-#define GL_TEXTURE_COORD_ARRAY_TYPE            0x8089
-#define GL_TEXTURE_COORD_ARRAY_STRIDE          0x808A
-#define GL_EDGE_FLAG_ARRAY_STRIDE              0x808C
-#define GL_VERTEX_ARRAY_POINTER                        0x808E
-#define GL_NORMAL_ARRAY_POINTER                        0x808F
-#define GL_COLOR_ARRAY_POINTER                 0x8090
-#define GL_INDEX_ARRAY_POINTER                 0x8091
-#define GL_TEXTURE_COORD_ARRAY_POINTER         0x8092
-#define GL_EDGE_FLAG_ARRAY_POINTER             0x8093
-#define GL_V2F                                 0x2A20
-#define GL_V3F                                 0x2A21
-#define GL_C4UB_V2F                            0x2A22
-#define GL_C4UB_V3F                            0x2A23
-#define GL_C3F_V3F                             0x2A24
-#define GL_N3F_V3F                             0x2A25
-#define GL_C4F_N3F_V3F                         0x2A26
-#define GL_T2F_V3F                             0x2A27
-#define GL_T4F_V4F                             0x2A28
-#define GL_T2F_C4UB_V3F                                0x2A29
-#define GL_T2F_C3F_V3F                         0x2A2A
-#define GL_T2F_N3F_V3F                         0x2A2B
-#define GL_T2F_C4F_N3F_V3F                     0x2A2C
-#define GL_T4F_C4F_N3F_V4F                     0x2A2D
-
-/* Matrix Mode */
-#define GL_MATRIX_MODE                         0x0BA0
-#define GL_MODELVIEW                           0x1700
-#define GL_PROJECTION                          0x1701
-#define GL_TEXTURE                             0x1702
-
-/* Points */
-#define GL_POINT_SMOOTH                                0x0B10
-#define GL_POINT_SIZE                          0x0B11
-#define GL_POINT_SIZE_GRANULARITY              0x0B13
-#define GL_POINT_SIZE_RANGE                    0x0B12
-
-/* Lines */
-#define GL_LINE_SMOOTH                         0x0B20
-#define GL_LINE_STIPPLE                                0x0B24
-#define GL_LINE_STIPPLE_PATTERN                        0x0B25
-#define GL_LINE_STIPPLE_REPEAT                 0x0B26
-#define GL_LINE_WIDTH                          0x0B21
-#define GL_LINE_WIDTH_GRANULARITY              0x0B23
-#define GL_LINE_WIDTH_RANGE                    0x0B22
-
-/* Polygons */
-#define GL_POINT                               0x1B00
-#define GL_LINE                                        0x1B01
-#define GL_FILL                                        0x1B02
-#define GL_CW                                  0x0900
-#define GL_CCW                                 0x0901
-#define GL_FRONT                               0x0404
-#define GL_BACK                                        0x0405
-#define GL_POLYGON_MODE                                0x0B40
-#define GL_POLYGON_SMOOTH                      0x0B41
-#define GL_POLYGON_STIPPLE                     0x0B42
-#define GL_EDGE_FLAG                           0x0B43
-#define GL_CULL_FACE                           0x0B44
-#define GL_CULL_FACE_MODE                      0x0B45
-#define GL_FRONT_FACE                          0x0B46
-#define GL_POLYGON_OFFSET_FACTOR               0x8038
-#define GL_POLYGON_OFFSET_UNITS                        0x2A00
-#define GL_POLYGON_OFFSET_POINT                        0x2A01
-#define GL_POLYGON_OFFSET_LINE                 0x2A02
-#define GL_POLYGON_OFFSET_FILL                 0x8037
-
-/* Display Lists */
-#define GL_COMPILE                             0x1300
-#define GL_COMPILE_AND_EXECUTE                 0x1301
-#define GL_LIST_BASE                           0x0B32
-#define GL_LIST_INDEX                          0x0B33
-#define GL_LIST_MODE                           0x0B30
-
-/* Depth buffer */
-#define GL_NEVER                               0x0200
-#define GL_LESS                                        0x0201
-#define GL_EQUAL                               0x0202
-#define GL_LEQUAL                              0x0203
-#define GL_GREATER                             0x0204
-#define GL_NOTEQUAL                            0x0205
-#define GL_GEQUAL                              0x0206
-#define GL_ALWAYS                              0x0207
-#define GL_DEPTH_TEST                          0x0B71
-#define GL_DEPTH_BITS                          0x0D56
-#define GL_DEPTH_CLEAR_VALUE                   0x0B73
-#define GL_DEPTH_FUNC                          0x0B74
-#define GL_DEPTH_RANGE                         0x0B70
-#define GL_DEPTH_WRITEMASK                     0x0B72
-#define GL_DEPTH_COMPONENT                     0x1902
-
-/* Lighting */
-#define GL_LIGHTING                            0x0B50
-#define GL_LIGHT0                              0x4000
-#define GL_LIGHT1                              0x4001
-#define GL_LIGHT2                              0x4002
-#define GL_LIGHT3                              0x4003
-#define GL_LIGHT4                              0x4004
-#define GL_LIGHT5                              0x4005
-#define GL_LIGHT6                              0x4006
-#define GL_LIGHT7                              0x4007
-#define GL_SPOT_EXPONENT                       0x1205
-#define GL_SPOT_CUTOFF                         0x1206
-#define GL_CONSTANT_ATTENUATION                        0x1207
-#define GL_LINEAR_ATTENUATION                  0x1208
-#define GL_QUADRATIC_ATTENUATION               0x1209
-#define GL_AMBIENT                             0x1200
-#define GL_DIFFUSE                             0x1201
-#define GL_SPECULAR                            0x1202
-#define GL_SHININESS                           0x1601
-#define GL_EMISSION                            0x1600
-#define GL_POSITION                            0x1203
-#define GL_SPOT_DIRECTION                      0x1204
-#define GL_AMBIENT_AND_DIFFUSE                 0x1602
-#define GL_COLOR_INDEXES                       0x1603
-#define GL_LIGHT_MODEL_TWO_SIDE                        0x0B52
-#define GL_LIGHT_MODEL_LOCAL_VIEWER            0x0B51
-#define GL_LIGHT_MODEL_AMBIENT                 0x0B53
-#define GL_FRONT_AND_BACK                      0x0408
-#define GL_SHADE_MODEL                         0x0B54
-#define GL_FLAT                                        0x1D00
-#define GL_SMOOTH                              0x1D01
-#define GL_COLOR_MATERIAL                      0x0B57
-#define GL_COLOR_MATERIAL_FACE                 0x0B55
-#define GL_COLOR_MATERIAL_PARAMETER            0x0B56
-#define GL_NORMALIZE                           0x0BA1
-
-/* User clipping planes */
-#define GL_CLIP_PLANE0                         0x3000
-#define GL_CLIP_PLANE1                         0x3001
-#define GL_CLIP_PLANE2                         0x3002
-#define GL_CLIP_PLANE3                         0x3003
-#define GL_CLIP_PLANE4                         0x3004
-#define GL_CLIP_PLANE5                         0x3005
-
-/* Accumulation buffer */
-#define GL_ACCUM_RED_BITS                      0x0D58
-#define GL_ACCUM_GREEN_BITS                    0x0D59
-#define GL_ACCUM_BLUE_BITS                     0x0D5A
-#define GL_ACCUM_ALPHA_BITS                    0x0D5B
-#define GL_ACCUM_CLEAR_VALUE                   0x0B80
-#define GL_ACCUM                               0x0100
-#define GL_ADD                                 0x0104
-#define GL_LOAD                                        0x0101
-#define GL_MULT                                        0x0103
-#define GL_RETURN                              0x0102
-
-/* Alpha testing */
-#define GL_ALPHA_TEST                          0x0BC0
-#define GL_ALPHA_TEST_REF                      0x0BC2
-#define GL_ALPHA_TEST_FUNC                     0x0BC1
-
-/* Blending */
-#define GL_BLEND                               0x0BE2
-#define GL_BLEND_SRC                           0x0BE1
-#define GL_BLEND_DST                           0x0BE0
-#define GL_ZERO                                        0
-#define GL_ONE                                 1
-#define GL_SRC_COLOR                           0x0300
-#define GL_ONE_MINUS_SRC_COLOR                 0x0301
-#define GL_SRC_ALPHA                           0x0302
-#define GL_ONE_MINUS_SRC_ALPHA                 0x0303
-#define GL_DST_ALPHA                           0x0304
-#define GL_ONE_MINUS_DST_ALPHA                 0x0305
-#define GL_DST_COLOR                           0x0306
-#define GL_ONE_MINUS_DST_COLOR                 0x0307
-#define GL_SRC_ALPHA_SATURATE                  0x0308
-
-/* Render Mode */
-#define GL_FEEDBACK                            0x1C01
-#define GL_RENDER                              0x1C00
-#define GL_SELECT                              0x1C02
-
-/* Feedback */
-#define GL_2D                                  0x0600
-#define GL_3D                                  0x0601
-#define GL_3D_COLOR                            0x0602
-#define GL_3D_COLOR_TEXTURE                    0x0603
-#define GL_4D_COLOR_TEXTURE                    0x0604
-#define GL_POINT_TOKEN                         0x0701
-#define GL_LINE_TOKEN                          0x0702
-#define GL_LINE_RESET_TOKEN                    0x0707
-#define GL_POLYGON_TOKEN                       0x0703
-#define GL_BITMAP_TOKEN                                0x0704
-#define GL_DRAW_PIXEL_TOKEN                    0x0705
-#define GL_COPY_PIXEL_TOKEN                    0x0706
-#define GL_PASS_THROUGH_TOKEN                  0x0700
-#define GL_FEEDBACK_BUFFER_POINTER             0x0DF0
-#define GL_FEEDBACK_BUFFER_SIZE                        0x0DF1
-#define GL_FEEDBACK_BUFFER_TYPE                        0x0DF2
-
-/* Selection */
-#define GL_SELECTION_BUFFER_POINTER            0x0DF3
-#define GL_SELECTION_BUFFER_SIZE               0x0DF4
-
-/* Fog */
-#define GL_FOG                                 0x0B60
-#define GL_FOG_MODE                            0x0B65
-#define GL_FOG_DENSITY                         0x0B62
-#define GL_FOG_COLOR                           0x0B66
-#define GL_FOG_INDEX                           0x0B61
-#define GL_FOG_START                           0x0B63
-#define GL_FOG_END                             0x0B64
-#define GL_LINEAR                              0x2601
-#define GL_EXP                                 0x0800
-#define GL_EXP2                                        0x0801
-
-/* Logic Ops */
-#define GL_LOGIC_OP                            0x0BF1
-#define GL_INDEX_LOGIC_OP                      0x0BF1
-#define GL_COLOR_LOGIC_OP                      0x0BF2
-#define GL_LOGIC_OP_MODE                       0x0BF0
-#define GL_CLEAR                               0x1500
-#define GL_SET                                 0x150F
-#define GL_COPY                                        0x1503
-#define GL_COPY_INVERTED                       0x150C
-#define GL_NOOP                                        0x1505
-#define GL_INVERT                              0x150A
-#define GL_AND                                 0x1501
-#define GL_NAND                                        0x150E
-#define GL_OR                                  0x1507
-#define GL_NOR                                 0x1508
-#define GL_XOR                                 0x1506
-#define GL_EQUIV                               0x1509
-#define GL_AND_REVERSE                         0x1502
-#define GL_AND_INVERTED                                0x1504
-#define GL_OR_REVERSE                          0x150B
-#define GL_OR_INVERTED                         0x150D
-
-/* Stencil */
-#define GL_STENCIL_BITS                                0x0D57
-#define GL_STENCIL_TEST                                0x0B90
-#define GL_STENCIL_CLEAR_VALUE                 0x0B91
-#define GL_STENCIL_FUNC                                0x0B92
-#define GL_STENCIL_VALUE_MASK                  0x0B93
-#define GL_STENCIL_FAIL                                0x0B94
-#define GL_STENCIL_PASS_DEPTH_FAIL             0x0B95
-#define GL_STENCIL_PASS_DEPTH_PASS             0x0B96
-#define GL_STENCIL_REF                         0x0B97
-#define GL_STENCIL_WRITEMASK                   0x0B98
-#define GL_STENCIL_INDEX                       0x1901
-#define GL_KEEP                                        0x1E00
-#define GL_REPLACE                             0x1E01
-#define GL_INCR                                        0x1E02
-#define GL_DECR                                        0x1E03
-
-/* Buffers, Pixel Drawing/Reading */
-#define GL_NONE                                        0
-#define GL_LEFT                                        0x0406
-#define GL_RIGHT                               0x0407
-/*GL_FRONT                                     0x0404 */
-/*GL_BACK                                      0x0405 */
-/*GL_FRONT_AND_BACK                            0x0408 */
-#define GL_FRONT_LEFT                          0x0400
-#define GL_FRONT_RIGHT                         0x0401
-#define GL_BACK_LEFT                           0x0402
-#define GL_BACK_RIGHT                          0x0403
-#define GL_AUX0                                        0x0409
-#define GL_AUX1                                        0x040A
-#define GL_AUX2                                        0x040B
-#define GL_AUX3                                        0x040C
-#define GL_COLOR_INDEX                         0x1900
-#define GL_RED                                 0x1903
-#define GL_GREEN                               0x1904
-#define GL_BLUE                                        0x1905
-#define GL_ALPHA                               0x1906
-#define GL_LUMINANCE                           0x1909
-#define GL_LUMINANCE_ALPHA                     0x190A
-#define GL_ALPHA_BITS                          0x0D55
-#define GL_RED_BITS                            0x0D52
-#define GL_GREEN_BITS                          0x0D53
-#define GL_BLUE_BITS                           0x0D54
-#define GL_INDEX_BITS                          0x0D51
-#define GL_SUBPIXEL_BITS                       0x0D50
-#define GL_AUX_BUFFERS                         0x0C00
-#define GL_READ_BUFFER                         0x0C02
-#define GL_DRAW_BUFFER                         0x0C01
-#define GL_DOUBLEBUFFER                                0x0C32
-#define GL_STEREO                              0x0C33
-#define GL_BITMAP                              0x1A00
-#define GL_COLOR                               0x1800
-#define GL_DEPTH                               0x1801
-#define GL_STENCIL                             0x1802
-#define GL_DITHER                              0x0BD0
-#define GL_RGB                                 0x1907
-#define GL_RGBA                                        0x1908
-
-/* Implementation limits */
-#define GL_MAX_LIST_NESTING                    0x0B31
-#define GL_MAX_EVAL_ORDER                      0x0D30
-#define GL_MAX_LIGHTS                          0x0D31
-#define GL_MAX_CLIP_PLANES                     0x0D32
-#define GL_MAX_TEXTURE_SIZE                    0x0D33
-#define GL_MAX_PIXEL_MAP_TABLE                 0x0D34
-#define GL_MAX_ATTRIB_STACK_DEPTH              0x0D35
-#define GL_MAX_MODELVIEW_STACK_DEPTH           0x0D36
-#define GL_MAX_NAME_STACK_DEPTH                        0x0D37
-#define GL_MAX_PROJECTION_STACK_DEPTH          0x0D38
-#define GL_MAX_TEXTURE_STACK_DEPTH             0x0D39
-#define GL_MAX_VIEWPORT_DIMS                   0x0D3A
-#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH       0x0D3B
-
-/* Gets */
-#define GL_ATTRIB_STACK_DEPTH                  0x0BB0
-#define GL_CLIENT_ATTRIB_STACK_DEPTH           0x0BB1
-#define GL_COLOR_CLEAR_VALUE                   0x0C22
-#define GL_COLOR_WRITEMASK                     0x0C23
-#define GL_CURRENT_INDEX                       0x0B01
-#define GL_CURRENT_COLOR                       0x0B00
-#define GL_CURRENT_NORMAL                      0x0B02
-#define GL_CURRENT_RASTER_COLOR                        0x0B04
-#define GL_CURRENT_RASTER_DISTANCE             0x0B09
-#define GL_CURRENT_RASTER_INDEX                        0x0B05
-#define GL_CURRENT_RASTER_POSITION             0x0B07
-#define GL_CURRENT_RASTER_TEXTURE_COORDS       0x0B06
-#define GL_CURRENT_RASTER_POSITION_VALID       0x0B08
-#define GL_CURRENT_TEXTURE_COORDS              0x0B03
-#define GL_INDEX_CLEAR_VALUE                   0x0C20
-#define GL_INDEX_MODE                          0x0C30
-#define GL_INDEX_WRITEMASK                     0x0C21
-#define GL_MODELVIEW_MATRIX                    0x0BA6
-#define GL_MODELVIEW_STACK_DEPTH               0x0BA3
-#define GL_NAME_STACK_DEPTH                    0x0D70
-#define GL_PROJECTION_MATRIX                   0x0BA7
-#define GL_PROJECTION_STACK_DEPTH              0x0BA4
-#define GL_RENDER_MODE                         0x0C40
-#define GL_RGBA_MODE                           0x0C31
-#define GL_TEXTURE_MATRIX                      0x0BA8
-#define GL_TEXTURE_STACK_DEPTH                 0x0BA5
-#define GL_VIEWPORT                            0x0BA2
-
-/* Evaluators */
-#define GL_AUTO_NORMAL                         0x0D80
-#define GL_MAP1_COLOR_4                                0x0D90
-#define GL_MAP1_INDEX                          0x0D91
-#define GL_MAP1_NORMAL                         0x0D92
-#define GL_MAP1_TEXTURE_COORD_1                        0x0D93
-#define GL_MAP1_TEXTURE_COORD_2                        0x0D94
-#define GL_MAP1_TEXTURE_COORD_3                        0x0D95
-#define GL_MAP1_TEXTURE_COORD_4                        0x0D96
-#define GL_MAP1_VERTEX_3                       0x0D97
-#define GL_MAP1_VERTEX_4                       0x0D98
-#define GL_MAP2_COLOR_4                                0x0DB0
-#define GL_MAP2_INDEX                          0x0DB1
-#define GL_MAP2_NORMAL                         0x0DB2
-#define GL_MAP2_TEXTURE_COORD_1                        0x0DB3
-#define GL_MAP2_TEXTURE_COORD_2                        0x0DB4
-#define GL_MAP2_TEXTURE_COORD_3                        0x0DB5
-#define GL_MAP2_TEXTURE_COORD_4                        0x0DB6
-#define GL_MAP2_VERTEX_3                       0x0DB7
-#define GL_MAP2_VERTEX_4                       0x0DB8
-#define GL_MAP1_GRID_DOMAIN                    0x0DD0
-#define GL_MAP1_GRID_SEGMENTS                  0x0DD1
-#define GL_MAP2_GRID_DOMAIN                    0x0DD2
-#define GL_MAP2_GRID_SEGMENTS                  0x0DD3
-#define GL_COEFF                               0x0A00
-#define GL_ORDER                               0x0A01
-#define GL_DOMAIN                              0x0A02
-
-/* Hints */
-#define GL_PERSPECTIVE_CORRECTION_HINT         0x0C50
-#define GL_POINT_SMOOTH_HINT                   0x0C51
-#define GL_LINE_SMOOTH_HINT                    0x0C52
-#define GL_POLYGON_SMOOTH_HINT                 0x0C53
-#define GL_FOG_HINT                            0x0C54
-#define GL_DONT_CARE                           0x1100
-#define GL_FASTEST                             0x1101
-#define GL_NICEST                              0x1102
-
-/* Scissor box */
-#define GL_SCISSOR_BOX                         0x0C10
-#define GL_SCISSOR_TEST                                0x0C11
-
-/* Pixel Mode / Transfer */
-#define GL_MAP_COLOR                           0x0D10
-#define GL_MAP_STENCIL                         0x0D11
-#define GL_INDEX_SHIFT                         0x0D12
-#define GL_INDEX_OFFSET                                0x0D13
-#define GL_RED_SCALE                           0x0D14
-#define GL_RED_BIAS                            0x0D15
-#define GL_GREEN_SCALE                         0x0D18
-#define GL_GREEN_BIAS                          0x0D19
-#define GL_BLUE_SCALE                          0x0D1A
-#define GL_BLUE_BIAS                           0x0D1B
-#define GL_ALPHA_SCALE                         0x0D1C
-#define GL_ALPHA_BIAS                          0x0D1D
-#define GL_DEPTH_SCALE                         0x0D1E
-#define GL_DEPTH_BIAS                          0x0D1F
-#define GL_PIXEL_MAP_S_TO_S_SIZE               0x0CB1
-#define GL_PIXEL_MAP_I_TO_I_SIZE               0x0CB0
-#define GL_PIXEL_MAP_I_TO_R_SIZE               0x0CB2
-#define GL_PIXEL_MAP_I_TO_G_SIZE               0x0CB3
-#define GL_PIXEL_MAP_I_TO_B_SIZE               0x0CB4
-#define GL_PIXEL_MAP_I_TO_A_SIZE               0x0CB5
-#define GL_PIXEL_MAP_R_TO_R_SIZE               0x0CB6
-#define GL_PIXEL_MAP_G_TO_G_SIZE               0x0CB7
-#define GL_PIXEL_MAP_B_TO_B_SIZE               0x0CB8
-#define GL_PIXEL_MAP_A_TO_A_SIZE               0x0CB9
-#define GL_PIXEL_MAP_S_TO_S                    0x0C71
-#define GL_PIXEL_MAP_I_TO_I                    0x0C70
-#define GL_PIXEL_MAP_I_TO_R                    0x0C72
-#define GL_PIXEL_MAP_I_TO_G                    0x0C73
-#define GL_PIXEL_MAP_I_TO_B                    0x0C74
-#define GL_PIXEL_MAP_I_TO_A                    0x0C75
-#define GL_PIXEL_MAP_R_TO_R                    0x0C76
-#define GL_PIXEL_MAP_G_TO_G                    0x0C77
-#define GL_PIXEL_MAP_B_TO_B                    0x0C78
-#define GL_PIXEL_MAP_A_TO_A                    0x0C79
-#define GL_PACK_ALIGNMENT                      0x0D05
-#define GL_PACK_LSB_FIRST                      0x0D01
-#define GL_PACK_ROW_LENGTH                     0x0D02
-#define GL_PACK_SKIP_PIXELS                    0x0D04
-#define GL_PACK_SKIP_ROWS                      0x0D03
-#define GL_PACK_SWAP_BYTES                     0x0D00
-#define GL_UNPACK_ALIGNMENT                    0x0CF5
-#define GL_UNPACK_LSB_FIRST                    0x0CF1
-#define GL_UNPACK_ROW_LENGTH                   0x0CF2
-#define GL_UNPACK_SKIP_PIXELS                  0x0CF4
-#define GL_UNPACK_SKIP_ROWS                    0x0CF3
-#define GL_UNPACK_SWAP_BYTES                   0x0CF0
-#define GL_ZOOM_X                              0x0D16
-#define GL_ZOOM_Y                              0x0D17
-
-/* Texture mapping */
-#define GL_TEXTURE_ENV                         0x2300
-#define GL_TEXTURE_ENV_MODE                    0x2200
-#define GL_TEXTURE_1D                          0x0DE0
-#define GL_TEXTURE_2D                          0x0DE1
-#define GL_TEXTURE_WRAP_S                      0x2802
-#define GL_TEXTURE_WRAP_T                      0x2803
-#define GL_TEXTURE_MAG_FILTER                  0x2800
-#define GL_TEXTURE_MIN_FILTER                  0x2801
-#define GL_TEXTURE_ENV_COLOR                   0x2201
-#define GL_TEXTURE_GEN_S                       0x0C60
-#define GL_TEXTURE_GEN_T                       0x0C61
-#define GL_TEXTURE_GEN_R                       0x0C62
-#define GL_TEXTURE_GEN_Q                       0x0C63
-#define GL_TEXTURE_GEN_MODE                    0x2500
-#define GL_TEXTURE_BORDER_COLOR                        0x1004
-#define GL_TEXTURE_WIDTH                       0x1000
-#define GL_TEXTURE_HEIGHT                      0x1001
-#define GL_TEXTURE_BORDER                      0x1005
-#define GL_TEXTURE_COMPONENTS                  0x1003
-#define GL_TEXTURE_RED_SIZE                    0x805C
-#define GL_TEXTURE_GREEN_SIZE                  0x805D
-#define GL_TEXTURE_BLUE_SIZE                   0x805E
-#define GL_TEXTURE_ALPHA_SIZE                  0x805F
-#define GL_TEXTURE_LUMINANCE_SIZE              0x8060
-#define GL_TEXTURE_INTENSITY_SIZE              0x8061
-#define GL_NEAREST_MIPMAP_NEAREST              0x2700
-#define GL_NEAREST_MIPMAP_LINEAR               0x2702
-#define GL_LINEAR_MIPMAP_NEAREST               0x2701
-#define GL_LINEAR_MIPMAP_LINEAR                        0x2703
-#define GL_OBJECT_LINEAR                       0x2401
-#define GL_OBJECT_PLANE                                0x2501
-#define GL_EYE_LINEAR                          0x2400
-#define GL_EYE_PLANE                           0x2502
-#define GL_SPHERE_MAP                          0x2402
-#define GL_DECAL                               0x2101
-#define GL_MODULATE                            0x2100
-#define GL_NEAREST                             0x2600
-#define GL_REPEAT                              0x2901
-#define GL_CLAMP                               0x2900
-#define GL_S                                   0x2000
-#define GL_T                                   0x2001
-#define GL_R                                   0x2002
-#define GL_Q                                   0x2003
-
-/* Utility */
-#define GL_VENDOR                              0x1F00
-#define GL_RENDERER                            0x1F01
-#define GL_VERSION                             0x1F02
-#define GL_EXTENSIONS                          0x1F03
-
-/* Errors */
-#define GL_NO_ERROR                            0
-#define GL_INVALID_ENUM                                0x0500
-#define GL_INVALID_VALUE                       0x0501
-#define GL_INVALID_OPERATION                   0x0502
-#define GL_STACK_OVERFLOW                      0x0503
-#define GL_STACK_UNDERFLOW                     0x0504
-#define GL_OUT_OF_MEMORY                       0x0505
-
-/* glPush/PopAttrib bits */
-#define GL_CURRENT_BIT                         0x00000001
-#define GL_POINT_BIT                           0x00000002
-#define GL_LINE_BIT                            0x00000004
-#define GL_POLYGON_BIT                         0x00000008
-#define GL_POLYGON_STIPPLE_BIT                 0x00000010
-#define GL_PIXEL_MODE_BIT                      0x00000020
-#define GL_LIGHTING_BIT                                0x00000040
-#define GL_FOG_BIT                             0x00000080
-#define GL_DEPTH_BUFFER_BIT                    0x00000100
-#define GL_ACCUM_BUFFER_BIT                    0x00000200
-#define GL_STENCIL_BUFFER_BIT                  0x00000400
-#define GL_VIEWPORT_BIT                                0x00000800
-#define GL_TRANSFORM_BIT                       0x00001000
-#define GL_ENABLE_BIT                          0x00002000
-#define GL_COLOR_BUFFER_BIT                    0x00004000
-#define GL_HINT_BIT                            0x00008000
-#define GL_EVAL_BIT                            0x00010000
-#define GL_LIST_BIT                            0x00020000
-#define GL_TEXTURE_BIT                         0x00040000
-#define GL_SCISSOR_BIT                         0x00080000
-#define GL_ALL_ATTRIB_BITS                     0x000FFFFF
-
-
-/* OpenGL 1.1 */
-#define GL_PROXY_TEXTURE_1D                    0x8063
-#define GL_PROXY_TEXTURE_2D                    0x8064
-#define GL_TEXTURE_PRIORITY                    0x8066
-#define GL_TEXTURE_RESIDENT                    0x8067
-#define GL_TEXTURE_BINDING_1D                  0x8068
-#define GL_TEXTURE_BINDING_2D                  0x8069
-#define GL_TEXTURE_INTERNAL_FORMAT             0x1003
-#define GL_ALPHA4                              0x803B
-#define GL_ALPHA8                              0x803C
-#define GL_ALPHA12                             0x803D
-#define GL_ALPHA16                             0x803E
-#define GL_LUMINANCE4                          0x803F
-#define GL_LUMINANCE8                          0x8040
-#define GL_LUMINANCE12                         0x8041
-#define GL_LUMINANCE16                         0x8042
-#define GL_LUMINANCE4_ALPHA4                   0x8043
-#define GL_LUMINANCE6_ALPHA2                   0x8044
-#define GL_LUMINANCE8_ALPHA8                   0x8045
-#define GL_LUMINANCE12_ALPHA4                  0x8046
-#define GL_LUMINANCE12_ALPHA12                 0x8047
-#define GL_LUMINANCE16_ALPHA16                 0x8048
-#define GL_INTENSITY                           0x8049
-#define GL_INTENSITY4                          0x804A
-#define GL_INTENSITY8                          0x804B
-#define GL_INTENSITY12                         0x804C
-#define GL_INTENSITY16                         0x804D
-#define GL_R3_G3_B2                            0x2A10
-#define GL_RGB4                                        0x804F
-#define GL_RGB5                                        0x8050
-#define GL_RGB8                                        0x8051
-#define GL_RGB10                               0x8052
-#define GL_RGB12                               0x8053
-#define GL_RGB16                               0x8054
-#define GL_RGBA2                               0x8055
-#define GL_RGBA4                               0x8056
-#define GL_RGB5_A1                             0x8057
-#define GL_RGBA8                               0x8058
-#define GL_RGB10_A2                            0x8059
-#define GL_RGBA12                              0x805A
-#define GL_RGBA16                              0x805B
-#define GL_CLIENT_PIXEL_STORE_BIT              0x00000001
-#define GL_CLIENT_VERTEX_ARRAY_BIT             0x00000002
-#define GL_ALL_CLIENT_ATTRIB_BITS              0xFFFFFFFF
-#define GL_CLIENT_ALL_ATTRIB_BITS              0xFFFFFFFF
-
-
-
-/*
- * Miscellaneous
- */
-
-GLAPI void GLAPIENTRY glClearIndex( GLfloat c );
-
-GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
-
-GLAPI void GLAPIENTRY glClear( GLbitfield mask );
-
-GLAPI void GLAPIENTRY glIndexMask( GLuint mask );
-
-GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
-
-GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );
-
-GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor );
-
-GLAPI void GLAPIENTRY glLogicOp( GLenum opcode );
-
-GLAPI void GLAPIENTRY glCullFace( GLenum mode );
-
-GLAPI void GLAPIENTRY glFrontFace( GLenum mode );
-
-GLAPI void GLAPIENTRY glPointSize( GLfloat size );
-
-GLAPI void GLAPIENTRY glLineWidth( GLfloat width );
-
-GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern );
-
-GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode );
-
-GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units );
-
-GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask );
-
-GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask );
-
-GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag );
-
-GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );
-
-GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
-
-GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
-
-GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation );
-
-GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode );
-
-GLAPI void GLAPIENTRY glReadBuffer( GLenum mode );
-
-GLAPI void GLAPIENTRY glEnable( GLenum cap );
-
-GLAPI void GLAPIENTRY glDisable( GLenum cap );
-
-GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap );
-
-
-GLAPI void GLAPIENTRY glEnableClientState( GLenum cap );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glDisableClientState( GLenum cap );  /* 1.1 */
-
-
-GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params );
-
-GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params );
-
-GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask );
-
-GLAPI void GLAPIENTRY glPopAttrib( void );
-
-
-GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glPopClientAttrib( void );  /* 1.1 */
-
-
-GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode );
-
-GLAPI GLenum GLAPIENTRY glGetError( void );
-
-GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name );
-
-GLAPI void GLAPIENTRY glFinish( void );
-
-GLAPI void GLAPIENTRY glFlush( void );
-
-GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode );
-
-
-/*
- * Depth Buffer
- */
-
-GLAPI void GLAPIENTRY glClearDepth( GLclampd depth );
-
-GLAPI void GLAPIENTRY glDepthFunc( GLenum func );
-
-GLAPI void GLAPIENTRY glDepthMask( GLboolean flag );
-
-GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );
-
-
-/*
- * Accumulation Buffer
- */
-
-GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
-
-GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );
-
-
-/*
- * Transformation
- */
-
-GLAPI void GLAPIENTRY glMatrixMode( GLenum mode );
-
-GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right,
-                                 GLdouble bottom, GLdouble top,
-                                 GLdouble near_val, GLdouble far_val );
-
-GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right,
-                                   GLdouble bottom, GLdouble top,
-                                   GLdouble near_val, GLdouble far_val );
-
-GLAPI void GLAPIENTRY glViewport( GLint x, GLint y,
-                                    GLsizei width, GLsizei height );
-
-GLAPI void GLAPIENTRY glPushMatrix( void );
-
-GLAPI void GLAPIENTRY glPopMatrix( void );
-
-GLAPI void GLAPIENTRY glLoadIdentity( void );
-
-GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m );
-GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m );
-
-GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m );
-GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m );
-
-GLAPI void GLAPIENTRY glRotated( GLdouble angle,
-                                   GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glRotatef( GLfloat angle,
-                                   GLfloat x, GLfloat y, GLfloat z );
-
-GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z );
-
-GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z );
-
-
-/*
- * Display Lists
- */
-
-GLAPI GLboolean GLAPIENTRY glIsList( GLuint list );
-
-GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range );
-
-GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range );
-
-GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode );
-
-GLAPI void GLAPIENTRY glEndList( void );
-
-GLAPI void GLAPIENTRY glCallList( GLuint list );
-
-GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type,
-                                     const GLvoid *lists );
-
-GLAPI void GLAPIENTRY glListBase( GLuint base );
-
-
-/*
- * Drawing Functions
- */
-
-GLAPI void GLAPIENTRY glBegin( GLenum mode );
-
-GLAPI void GLAPIENTRY glEnd( void );
-
-
-GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y );
-GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y );
-GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y );
-GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y );
-
-GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z );
-GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z );
-GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z );
-
-GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
-GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
-GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w );
-GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w );
-
-GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glVertex2iv( const GLint *v );
-GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glVertex3iv( const GLint *v );
-GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glVertex4iv( const GLint *v );
-GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz );
-GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz );
-GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz );
-GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz );
-GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz );
-
-GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v );
-GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glNormal3iv( const GLint *v );
-GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glIndexd( GLdouble c );
-GLAPI void GLAPIENTRY glIndexf( GLfloat c );
-GLAPI void GLAPIENTRY glIndexi( GLint c );
-GLAPI void GLAPIENTRY glIndexs( GLshort c );
-GLAPI void GLAPIENTRY glIndexub( GLubyte c );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c );
-GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c );
-GLAPI void GLAPIENTRY glIndexiv( const GLint *c );
-GLAPI void GLAPIENTRY glIndexsv( const GLshort *c );
-GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue );
-GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue );
-GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue );
-GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue );
-GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue );
-GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue );
-GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue );
-GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue );
-
-GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green,
-                                   GLbyte blue, GLbyte alpha );
-GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green,
-                                   GLdouble blue, GLdouble alpha );
-GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green,
-                                   GLfloat blue, GLfloat alpha );
-GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green,
-                                   GLint blue, GLint alpha );
-GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green,
-                                   GLshort blue, GLshort alpha );
-GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green,
-                                    GLubyte blue, GLubyte alpha );
-GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green,
-                                    GLuint blue, GLuint alpha );
-GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green,
-                                    GLushort blue, GLushort alpha );
-
-
-GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v );
-GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glColor3iv( const GLint *v );
-GLAPI void GLAPIENTRY glColor3sv( const GLshort *v );
-GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v );
-GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v );
-GLAPI void GLAPIENTRY glColor3usv( const GLushort *v );
-
-GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v );
-GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glColor4iv( const GLint *v );
-GLAPI void GLAPIENTRY glColor4sv( const GLshort *v );
-GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v );
-GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v );
-GLAPI void GLAPIENTRY glColor4usv( const GLushort *v );
-
-
-GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s );
-GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s );
-GLAPI void GLAPIENTRY glTexCoord1i( GLint s );
-GLAPI void GLAPIENTRY glTexCoord1s( GLshort s );
-
-GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t );
-GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t );
-GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t );
-GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t );
-
-GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r );
-GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r );
-GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r );
-GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r );
-
-GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
-GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q );
-GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q );
-
-GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y );
-GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y );
-GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y );
-GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y );
-
-GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z );
-GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z );
-GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z );
-
-GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
-GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
-GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w );
-GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w );
-
-GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v );
-GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v );
-GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v );
-GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
-GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
-GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 );
-GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
-
-
-GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 );
-GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 );
-GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 );
-GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 );
-
-
-/*
- * Vertex Arrays  (1.1)
- */
-
-GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type,
-                                       GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride,
-                                       const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type,
-                                      GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride,
-                                      const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type,
-                                         GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params );
-
-GLAPI void GLAPIENTRY glArrayElement( GLint i );
-
-GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count );
-
-GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count,
-                                      GLenum type, const GLvoid *indices );
-
-GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride,
-                                           const GLvoid *pointer );
-
-/*
- * Lighting
- */
-
-GLAPI void GLAPIENTRY glShadeModel( GLenum mode );
-
-GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param );
-GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname,
-                                 const GLfloat *params );
-GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname,
-                                 const GLint *params );
-
-GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname,
-                                    GLfloat *params );
-GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname,
-                                    GLint *params );
-
-GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param );
-GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param );
-GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params );
-
-GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode );
-
-
-/*
- * Raster functions
- */
-
-GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor );
-
-GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize,
-                                    const GLfloat *values );
-GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize,
-                                     const GLuint *values );
-GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize,
-                                     const GLushort *values );
-
-GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values );
-GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values );
-GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values );
-
-GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height,
-                                GLfloat xorig, GLfloat yorig,
-                                GLfloat xmove, GLfloat ymove,
-                                const GLubyte *bitmap );
-
-GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y,
-                                    GLsizei width, GLsizei height,
-                                    GLenum format, GLenum type,
-                                    GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height,
-                                    GLenum format, GLenum type,
-                                    const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y,
-                                    GLsizei width, GLsizei height,
-                                    GLenum type );
-
-/*
- * Stenciling
- */
-
-GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask );
-
-GLAPI void GLAPIENTRY glStencilMask( GLuint mask );
-
-GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass );
-
-GLAPI void GLAPIENTRY glClearStencil( GLint s );
-
-
-
-/*
- * Texture mapping
- */
-
-GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param );
-GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params );
-GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params );
-GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname,
-                                          const GLfloat *params );
-GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname,
-                                          const GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target,
-                                           GLenum pname, GLfloat *params);
-GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target,
-                                           GLenum pname, GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level,
-                                                GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level,
-                                                GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level,
-                                    GLint internalFormat,
-                                    GLsizei width, GLint border,
-                                    GLenum format, GLenum type,
-                                    const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level,
-                                    GLint internalFormat,
-                                    GLsizei width, GLsizei height,
-                                    GLint border, GLenum format, GLenum type,
-                                    const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level,
-                                     GLenum format, GLenum type,
-                                     GLvoid *pixels );
-
-
-/* 1.1 functions */
-
-GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures );
-
-GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures);
-
-GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture );
-
-GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n,
-                                            const GLuint *textures,
-                                            const GLclampf *priorities );
-
-GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n,
-                                                  const GLuint *textures,
-                                                  GLboolean *residences );
-
-GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture );
-
-
-GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level,
-                                       GLint xoffset,
-                                       GLsizei width, GLenum format,
-                                       GLenum type, const GLvoid *pixels );
-
-
-GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level,
-                                       GLint xoffset, GLint yoffset,
-                                       GLsizei width, GLsizei height,
-                                       GLenum format, GLenum type,
-                                       const GLvoid *pixels );
-
-
-GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level,
-                                        GLenum internalformat,
-                                        GLint x, GLint y,
-                                        GLsizei width, GLint border );
-
-
-GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level,
-                                        GLenum internalformat,
-                                        GLint x, GLint y,
-                                        GLsizei width, GLsizei height,
-                                        GLint border );
-
-
-GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level,
-                                           GLint xoffset, GLint x, GLint y,
-                                           GLsizei width );
-
-
-GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level,
-                                           GLint xoffset, GLint yoffset,
-                                           GLint x, GLint y,
-                                           GLsizei width, GLsizei height );
-
-
-/*
- * Evaluators
- */
-
-GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2,
-                               GLint stride,
-                               GLint order, const GLdouble *points );
-GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2,
-                               GLint stride,
-                               GLint order, const GLfloat *points );
-
-GLAPI void GLAPIENTRY glMap2d( GLenum target,
-                    GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
-                    GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
-                    const GLdouble *points );
-GLAPI void GLAPIENTRY glMap2f( GLenum target,
-                    GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
-                    GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
-                    const GLfloat *points );
-
-GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v );
-GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v );
-GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v );
-
-GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u );
-GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u );
-
-GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u );
-GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u );
-
-GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v );
-GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v );
-
-GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u );
-GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u );
-
-GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 );
-GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 );
-
-GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2,
-                                   GLint vn, GLdouble v1, GLdouble v2 );
-GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2,
-                                   GLint vn, GLfloat v1, GLfloat v2 );
-
-GLAPI void GLAPIENTRY glEvalPoint1( GLint i );
-
-GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j );
-
-GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 );
-
-GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
-
-
-/*
- * Fog
- */
-
-GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param );
-
-GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params );
-
-GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params );
-
-
-/*
- * Selection and Feedback
- */
-
-GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer );
-
-GLAPI void GLAPIENTRY glPassThrough( GLfloat token );
-
-GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer );
-
-GLAPI void GLAPIENTRY glInitNames( void );
-
-GLAPI void GLAPIENTRY glLoadName( GLuint name );
-
-GLAPI void GLAPIENTRY glPushName( GLuint name );
-
-GLAPI void GLAPIENTRY glPopName( void );
-
-
-
-/*
- * OpenGL 1.2
- */
-
-#define GL_RESCALE_NORMAL                      0x803A
-#define GL_CLAMP_TO_EDGE                       0x812F
-#define GL_MAX_ELEMENTS_VERTICES               0x80E8
-#define GL_MAX_ELEMENTS_INDICES                        0x80E9
-#define GL_BGR                                 0x80E0
-#define GL_BGRA                                        0x80E1
-#define GL_UNSIGNED_BYTE_3_3_2                 0x8032
-#define GL_UNSIGNED_BYTE_2_3_3_REV             0x8362
-#define GL_UNSIGNED_SHORT_5_6_5                        0x8363
-#define GL_UNSIGNED_SHORT_5_6_5_REV            0x8364
-#define GL_UNSIGNED_SHORT_4_4_4_4              0x8033
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV          0x8365
-#define GL_UNSIGNED_SHORT_5_5_5_1              0x8034
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV          0x8366
-#define GL_UNSIGNED_INT_8_8_8_8                        0x8035
-#define GL_UNSIGNED_INT_8_8_8_8_REV            0x8367
-#define GL_UNSIGNED_INT_10_10_10_2             0x8036
-#define GL_UNSIGNED_INT_2_10_10_10_REV         0x8368
-#define GL_LIGHT_MODEL_COLOR_CONTROL           0x81F8
-#define GL_SINGLE_COLOR                                0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR             0x81FA
-#define GL_TEXTURE_MIN_LOD                     0x813A
-#define GL_TEXTURE_MAX_LOD                     0x813B
-#define GL_TEXTURE_BASE_LEVEL                  0x813C
-#define GL_TEXTURE_MAX_LEVEL                   0x813D
-#define GL_SMOOTH_POINT_SIZE_RANGE             0x0B12
-#define GL_SMOOTH_POINT_SIZE_GRANULARITY       0x0B13
-#define GL_SMOOTH_LINE_WIDTH_RANGE             0x0B22
-#define GL_SMOOTH_LINE_WIDTH_GRANULARITY       0x0B23
-#define GL_ALIASED_POINT_SIZE_RANGE            0x846D
-#define GL_ALIASED_LINE_WIDTH_RANGE            0x846E
-#define GL_PACK_SKIP_IMAGES                    0x806B
-#define GL_PACK_IMAGE_HEIGHT                   0x806C
-#define GL_UNPACK_SKIP_IMAGES                  0x806D
-#define GL_UNPACK_IMAGE_HEIGHT                 0x806E
-#define GL_TEXTURE_3D                          0x806F
-#define GL_PROXY_TEXTURE_3D                    0x8070
-#define GL_TEXTURE_DEPTH                       0x8071
-#define GL_TEXTURE_WRAP_R                      0x8072
-#define GL_MAX_3D_TEXTURE_SIZE                 0x8073
-#define GL_TEXTURE_BINDING_3D                  0x806A
-
-GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start,
-       GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
-
-GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
-                                      GLint internalFormat,
-                                      GLsizei width, GLsizei height,
-                                      GLsizei depth, GLint border,
-                                      GLenum format, GLenum type,
-                                      const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level,
-                                         GLint xoffset, GLint yoffset,
-                                         GLint zoffset, GLsizei width,
-                                         GLsizei height, GLsizei depth,
-                                         GLenum format,
-                                         GLenum type, const GLvoid *pixels);
-
-GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level,
-                                             GLint xoffset, GLint yoffset,
-                                             GLint zoffset, GLint x,
-                                             GLint y, GLsizei width,
-                                             GLsizei height );
-
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-
-
-/*
- * GL_ARB_imaging
- */
-
-#define GL_CONSTANT_COLOR                      0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR            0x8002
-#define GL_CONSTANT_ALPHA                      0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA            0x8004
-#define GL_COLOR_TABLE                         0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE                0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE       0x80D2
-#define GL_PROXY_COLOR_TABLE                   0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE  0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
-#define GL_COLOR_TABLE_SCALE                   0x80D6
-#define GL_COLOR_TABLE_BIAS                    0x80D7
-#define GL_COLOR_TABLE_FORMAT                  0x80D8
-#define GL_COLOR_TABLE_WIDTH                   0x80D9
-#define GL_COLOR_TABLE_RED_SIZE                        0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE              0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE               0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE              0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE          0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE          0x80DF
-#define GL_CONVOLUTION_1D                      0x8010
-#define GL_CONVOLUTION_2D                      0x8011
-#define GL_SEPARABLE_2D                                0x8012
-#define GL_CONVOLUTION_BORDER_MODE             0x8013
-#define GL_CONVOLUTION_FILTER_SCALE            0x8014
-#define GL_CONVOLUTION_FILTER_BIAS             0x8015
-#define GL_REDUCE                              0x8016
-#define GL_CONVOLUTION_FORMAT                  0x8017
-#define GL_CONVOLUTION_WIDTH                   0x8018
-#define GL_CONVOLUTION_HEIGHT                  0x8019
-#define GL_MAX_CONVOLUTION_WIDTH               0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT              0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE          0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE                0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE         0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE                0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS           0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS         0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS          0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS         0x8023
-#define GL_CONSTANT_BORDER                     0x8151
-#define GL_REPLICATE_BORDER                    0x8153
-#define GL_CONVOLUTION_BORDER_COLOR            0x8154
-#define GL_COLOR_MATRIX                                0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH            0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH                0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE         0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE       0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE                0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE       0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS          0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS                0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS         0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS                0x80BB
-#define GL_HISTOGRAM                           0x8024
-#define GL_PROXY_HISTOGRAM                     0x8025
-#define GL_HISTOGRAM_WIDTH                     0x8026
-#define GL_HISTOGRAM_FORMAT                    0x8027
-#define GL_HISTOGRAM_RED_SIZE                  0x8028
-#define GL_HISTOGRAM_GREEN_SIZE                        0x8029
-#define GL_HISTOGRAM_BLUE_SIZE                 0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE                        0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE            0x802C
-#define GL_HISTOGRAM_SINK                      0x802D
-#define GL_MINMAX                              0x802E
-#define GL_MINMAX_FORMAT                       0x802F
-#define GL_MINMAX_SINK                         0x8030
-#define GL_TABLE_TOO_LARGE                     0x8031
-#define GL_BLEND_EQUATION                      0x8009
-#define GL_MIN                                 0x8007
-#define GL_MAX                                 0x8008
-#define GL_FUNC_ADD                            0x8006
-#define GL_FUNC_SUBTRACT                       0x800A
-#define GL_FUNC_REVERSE_SUBTRACT               0x800B
-#define GL_BLEND_COLOR                         0x8005
-
-
-GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat,
-                                    GLsizei width, GLenum format,
-                                    GLenum type, const GLvoid *table );
-
-GLAPI void GLAPIENTRY glColorSubTable( GLenum target,
-                                       GLsizei start, GLsizei count,
-                                       GLenum format, GLenum type,
-                                       const GLvoid *data );
-
-GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname,
-                                              const GLint *params);
-
-GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname,
-                                              const GLfloat *params);
-
-GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start,
-                                           GLint x, GLint y, GLsizei width );
-
-GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat,
-                                        GLint x, GLint y, GLsizei width );
-
-GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,
-                                       GLenum type, GLvoid *table );
-
-GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,
-                                                  GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,
-                                                  GLint *params );
-
-GLAPI void GLAPIENTRY glBlendEquation( GLenum mode );
-
-GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green,
-                                    GLclampf blue, GLclampf alpha );
-
-GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width,
-                                  GLenum internalformat, GLboolean sink );
-
-GLAPI void GLAPIENTRY glResetHistogram( GLenum target );
-
-GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset,
-                                     GLenum format, GLenum type,
-                                     GLvoid *values );
-
-GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname,
-                                                GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname,
-                                                GLint *params );
-
-GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat,
-                               GLboolean sink );
-
-GLAPI void GLAPIENTRY glResetMinmax( GLenum target );
-
-GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset,
-                                   GLenum format, GLenum types,
-                                   GLvoid *values );
-
-GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname,
-                                             GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname,
-                                             GLint *params );
-
-GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target,
-       GLenum internalformat, GLsizei width, GLenum format, GLenum type,
-       const GLvoid *image );
-
-GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target,
-       GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
-       GLenum type, const GLvoid *image );
-
-GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname,
-       GLfloat params );
-
-GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname,
-       const GLfloat *params );
-
-GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname,
-       GLint params );
-
-GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname,
-       const GLint *params );
-
-GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target,
-       GLenum internalformat, GLint x, GLint y, GLsizei width );
-
-GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target,
-       GLenum internalformat, GLint x, GLint y, GLsizei width,
-       GLsizei height);
-
-GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format,
-       GLenum type, GLvoid *image );
-
-GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname,
-       GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname,
-       GLint *params );
-
-GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target,
-       GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
-       GLenum type, const GLvoid *row, const GLvoid *column );
-
-GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,
-       GLenum type, GLvoid *row, GLvoid *column, GLvoid *span );
-
-
-
-
-/*
- * OpenGL 1.3
- */
-
-/* multitexture */
-#define GL_TEXTURE0                            0x84C0
-#define GL_TEXTURE1                            0x84C1
-#define GL_TEXTURE2                            0x84C2
-#define GL_TEXTURE3                            0x84C3
-#define GL_TEXTURE4                            0x84C4
-#define GL_TEXTURE5                            0x84C5
-#define GL_TEXTURE6                            0x84C6
-#define GL_TEXTURE7                            0x84C7
-#define GL_TEXTURE8                            0x84C8
-#define GL_TEXTURE9                            0x84C9
-#define GL_TEXTURE10                           0x84CA
-#define GL_TEXTURE11                           0x84CB
-#define GL_TEXTURE12                           0x84CC
-#define GL_TEXTURE13                           0x84CD
-#define GL_TEXTURE14                           0x84CE
-#define GL_TEXTURE15                           0x84CF
-#define GL_TEXTURE16                           0x84D0
-#define GL_TEXTURE17                           0x84D1
-#define GL_TEXTURE18                           0x84D2
-#define GL_TEXTURE19                           0x84D3
-#define GL_TEXTURE20                           0x84D4
-#define GL_TEXTURE21                           0x84D5
-#define GL_TEXTURE22                           0x84D6
-#define GL_TEXTURE23                           0x84D7
-#define GL_TEXTURE24                           0x84D8
-#define GL_TEXTURE25                           0x84D9
-#define GL_TEXTURE26                           0x84DA
-#define GL_TEXTURE27                           0x84DB
-#define GL_TEXTURE28                           0x84DC
-#define GL_TEXTURE29                           0x84DD
-#define GL_TEXTURE30                           0x84DE
-#define GL_TEXTURE31                           0x84DF
-#define GL_ACTIVE_TEXTURE                      0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE               0x84E1
-#define GL_MAX_TEXTURE_UNITS                   0x84E2
-/* texture_cube_map */
-#define GL_NORMAL_MAP                          0x8511
-#define GL_REFLECTION_MAP                      0x8512
-#define GL_TEXTURE_CUBE_MAP                    0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP            0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X         0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X         0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y         0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y         0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z         0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z         0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP              0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE           0x851C
-/* texture_compression */
-#define GL_COMPRESSED_ALPHA                    0x84E9
-#define GL_COMPRESSED_LUMINANCE                        0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA          0x84EB
-#define GL_COMPRESSED_INTENSITY                        0x84EC
-#define GL_COMPRESSED_RGB                      0x84ED
-#define GL_COMPRESSED_RGBA                     0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT            0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE       0x86A0
-#define GL_TEXTURE_COMPRESSED                  0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS      0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS          0x86A3
-/* multisample */
-#define GL_MULTISAMPLE                         0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE            0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE                 0x809F
-#define GL_SAMPLE_COVERAGE                     0x80A0
-#define GL_SAMPLE_BUFFERS                      0x80A8
-#define GL_SAMPLES                             0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE               0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT              0x80AB
-#define GL_MULTISAMPLE_BIT                     0x20000000
-/* transpose_matrix */
-#define GL_TRANSPOSE_MODELVIEW_MATRIX          0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX         0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX            0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX              0x84E6
-/* texture_env_combine */
-#define GL_COMBINE                             0x8570
-#define GL_COMBINE_RGB                         0x8571
-#define GL_COMBINE_ALPHA                       0x8572
-#define GL_SOURCE0_RGB                         0x8580
-#define GL_SOURCE1_RGB                         0x8581
-#define GL_SOURCE2_RGB                         0x8582
-#define GL_SOURCE0_ALPHA                       0x8588
-#define GL_SOURCE1_ALPHA                       0x8589
-#define GL_SOURCE2_ALPHA                       0x858A
-#define GL_OPERAND0_RGB                                0x8590
-#define GL_OPERAND1_RGB                                0x8591
-#define GL_OPERAND2_RGB                                0x8592
-#define GL_OPERAND0_ALPHA                      0x8598
-#define GL_OPERAND1_ALPHA                      0x8599
-#define GL_OPERAND2_ALPHA                      0x859A
-#define GL_RGB_SCALE                           0x8573
-#define GL_ADD_SIGNED                          0x8574
-#define GL_INTERPOLATE                         0x8575
-#define GL_SUBTRACT                            0x84E7
-#define GL_CONSTANT                            0x8576
-#define GL_PRIMARY_COLOR                       0x8577
-#define GL_PREVIOUS                            0x8578
-/* texture_env_dot3 */
-#define GL_DOT3_RGB                            0x86AE
-#define GL_DOT3_RGBA                           0x86AF
-/* texture_border_clamp */
-#define GL_CLAMP_TO_BORDER                     0x812D
-
-GLAPI void GLAPIENTRY glActiveTexture( GLenum texture );
-
-GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture );
-
-GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
-
-GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
-
-GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
-
-GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
-
-GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );
-
-
-typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
-
-
-
-/*
- * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
- */
-#ifndef GL_ARB_multitexture
-#define GL_ARB_multitexture 1
-
-#define GL_TEXTURE0_ARB                                0x84C0
-#define GL_TEXTURE1_ARB                                0x84C1
-#define GL_TEXTURE2_ARB                                0x84C2
-#define GL_TEXTURE3_ARB                                0x84C3
-#define GL_TEXTURE4_ARB                                0x84C4
-#define GL_TEXTURE5_ARB                                0x84C5
-#define GL_TEXTURE6_ARB                                0x84C6
-#define GL_TEXTURE7_ARB                                0x84C7
-#define GL_TEXTURE8_ARB                                0x84C8
-#define GL_TEXTURE9_ARB                                0x84C9
-#define GL_TEXTURE10_ARB                       0x84CA
-#define GL_TEXTURE11_ARB                       0x84CB
-#define GL_TEXTURE12_ARB                       0x84CC
-#define GL_TEXTURE13_ARB                       0x84CD
-#define GL_TEXTURE14_ARB                       0x84CE
-#define GL_TEXTURE15_ARB                       0x84CF
-#define GL_TEXTURE16_ARB                       0x84D0
-#define GL_TEXTURE17_ARB                       0x84D1
-#define GL_TEXTURE18_ARB                       0x84D2
-#define GL_TEXTURE19_ARB                       0x84D3
-#define GL_TEXTURE20_ARB                       0x84D4
-#define GL_TEXTURE21_ARB                       0x84D5
-#define GL_TEXTURE22_ARB                       0x84D6
-#define GL_TEXTURE23_ARB                       0x84D7
-#define GL_TEXTURE24_ARB                       0x84D8
-#define GL_TEXTURE25_ARB                       0x84D9
-#define GL_TEXTURE26_ARB                       0x84DA
-#define GL_TEXTURE27_ARB                       0x84DB
-#define GL_TEXTURE28_ARB                       0x84DC
-#define GL_TEXTURE29_ARB                       0x84DD
-#define GL_TEXTURE30_ARB                       0x84DE
-#define GL_TEXTURE31_ARB                       0x84DF
-#define GL_ACTIVE_TEXTURE_ARB                  0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE_ARB           0x84E1
-#define GL_MAX_TEXTURE_UNITS_ARB               0x84E2
-
-GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture);
-GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture);
-GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s);
-GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s);
-GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s);
-GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s);
-GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);
-GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);
-GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);
-GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);
-GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);
-GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);
-GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);
-GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);
-GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);
-GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v);
-
-typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
-
-#endif /* GL_ARB_multitexture */
-
-
-
-/*
- * Define this token if you want "old-style" header file behaviour (extensions
- * defined in gl.h).  Otherwise, extensions will be included from glext.h.
- */
-#if !defined(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY)
-#include "SDL_opengl_glext.h"
-#endif  /* GL_GLEXT_LEGACY */
-
-
-
-/*
- * ???. GL_MESA_packed_depth_stencil
- * XXX obsolete
- */
-#ifndef GL_MESA_packed_depth_stencil
-#define GL_MESA_packed_depth_stencil 1
-
-#define GL_DEPTH_STENCIL_MESA                  0x8750
-#define GL_UNSIGNED_INT_24_8_MESA              0x8751
-#define GL_UNSIGNED_INT_8_24_REV_MESA          0x8752
-#define GL_UNSIGNED_SHORT_15_1_MESA            0x8753
-#define GL_UNSIGNED_SHORT_1_15_REV_MESA                0x8754
-
-#endif /* GL_MESA_packed_depth_stencil */
-
-
-#ifndef GL_ATI_blend_equation_separate
-#define GL_ATI_blend_equation_separate 1
-
-#define GL_ALPHA_BLEND_EQUATION_ATI            0x883D
-
-GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA );
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA);
-
-#endif /* GL_ATI_blend_equation_separate */
-
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-typedef void* GLeglImageOES;
-#endif
-
-#ifndef GL_OES_EGL_image
-#define GL_OES_EGL_image 1
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
-GLAPI void APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
-#endif
-typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
-typedef void (APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
-#endif
-
-
-/**
- ** NOTE!!!!!  If you add new functions to this file, or update
- ** glext.h be sure to regenerate the gl_mangle.h file.  See comments
- ** in that file for details.
- **/
-
-
-
-/**********************************************************************
- * Begin system-specific stuff
- */
-#if defined(PRAGMA_EXPORT_SUPPORTED)
-#pragma export off
-#endif
-
-/*
- * End system-specific stuff
- **********************************************************************/
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl_h_ */
-
-#endif /* !__IPHONEOS__ */
-
-#endif /* SDL_opengl_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_opengl_glext.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_opengl_glext.h
deleted file mode 100644 (file)
index cd3869f..0000000
+++ /dev/null
@@ -1,11177 +0,0 @@
-#ifndef __glext_h_
-#define __glext_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2013-2014 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
-** This header is generated from the Khronos OpenGL / OpenGL ES XML
-** API Registry. The current version of the Registry, generator scripts
-** used to make the header, and the header can be found at
-**   http://www.opengl.org/registry/
-**
-** Khronos $Revision: 26745 $ on $Date: 2014-05-21 03:12:26 -0700 (Wed, 21 May 2014) $
-*/
-
-#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#include <windows.h>
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY
-#endif
-#ifndef APIENTRYP
-#define APIENTRYP APIENTRY *
-#endif
-#ifndef GLAPI
-#define GLAPI extern
-#endif
-
-#define GL_GLEXT_VERSION 20140521
-
-/* Generated C header for:
- * API: gl
- * Profile: compatibility
- * Versions considered: .*
- * Versions emitted: 1\.[2-9]|[234]\.[0-9]
- * Default extensions included: gl
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef GL_VERSION_1_2
-#define GL_VERSION_1_2 1
-#define GL_UNSIGNED_BYTE_3_3_2            0x8032
-#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
-#define GL_UNSIGNED_INT_8_8_8_8           0x8035
-#define GL_UNSIGNED_INT_10_10_10_2        0x8036
-#define GL_TEXTURE_BINDING_3D             0x806A
-#define GL_PACK_SKIP_IMAGES               0x806B
-#define GL_PACK_IMAGE_HEIGHT              0x806C
-#define GL_UNPACK_SKIP_IMAGES             0x806D
-#define GL_UNPACK_IMAGE_HEIGHT            0x806E
-#define GL_TEXTURE_3D                     0x806F
-#define GL_PROXY_TEXTURE_3D               0x8070
-#define GL_TEXTURE_DEPTH                  0x8071
-#define GL_TEXTURE_WRAP_R                 0x8072
-#define GL_MAX_3D_TEXTURE_SIZE            0x8073
-#define GL_UNSIGNED_BYTE_2_3_3_REV        0x8362
-#define GL_UNSIGNED_SHORT_5_6_5           0x8363
-#define GL_UNSIGNED_SHORT_5_6_5_REV       0x8364
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV     0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV     0x8366
-#define GL_UNSIGNED_INT_8_8_8_8_REV       0x8367
-#define GL_UNSIGNED_INT_2_10_10_10_REV    0x8368
-#define GL_BGR                            0x80E0
-#define GL_BGRA                           0x80E1
-#define GL_MAX_ELEMENTS_VERTICES          0x80E8
-#define GL_MAX_ELEMENTS_INDICES           0x80E9
-#define GL_CLAMP_TO_EDGE                  0x812F
-#define GL_TEXTURE_MIN_LOD                0x813A
-#define GL_TEXTURE_MAX_LOD                0x813B
-#define GL_TEXTURE_BASE_LEVEL             0x813C
-#define GL_TEXTURE_MAX_LEVEL              0x813D
-#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12
-#define GL_SMOOTH_POINT_SIZE_GRANULARITY  0x0B13
-#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22
-#define GL_SMOOTH_LINE_WIDTH_GRANULARITY  0x0B23
-#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
-#define GL_RESCALE_NORMAL                 0x803A
-#define GL_LIGHT_MODEL_COLOR_CONTROL      0x81F8
-#define GL_SINGLE_COLOR                   0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR        0x81FA
-#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_VERSION_1_2 */
-
-#ifndef GL_VERSION_1_3
-#define GL_VERSION_1_3 1
-#define GL_TEXTURE0                       0x84C0
-#define GL_TEXTURE1                       0x84C1
-#define GL_TEXTURE2                       0x84C2
-#define GL_TEXTURE3                       0x84C3
-#define GL_TEXTURE4                       0x84C4
-#define GL_TEXTURE5                       0x84C5
-#define GL_TEXTURE6                       0x84C6
-#define GL_TEXTURE7                       0x84C7
-#define GL_TEXTURE8                       0x84C8
-#define GL_TEXTURE9                       0x84C9
-#define GL_TEXTURE10                      0x84CA
-#define GL_TEXTURE11                      0x84CB
-#define GL_TEXTURE12                      0x84CC
-#define GL_TEXTURE13                      0x84CD
-#define GL_TEXTURE14                      0x84CE
-#define GL_TEXTURE15                      0x84CF
-#define GL_TEXTURE16                      0x84D0
-#define GL_TEXTURE17                      0x84D1
-#define GL_TEXTURE18                      0x84D2
-#define GL_TEXTURE19                      0x84D3
-#define GL_TEXTURE20                      0x84D4
-#define GL_TEXTURE21                      0x84D5
-#define GL_TEXTURE22                      0x84D6
-#define GL_TEXTURE23                      0x84D7
-#define GL_TEXTURE24                      0x84D8
-#define GL_TEXTURE25                      0x84D9
-#define GL_TEXTURE26                      0x84DA
-#define GL_TEXTURE27                      0x84DB
-#define GL_TEXTURE28                      0x84DC
-#define GL_TEXTURE29                      0x84DD
-#define GL_TEXTURE30                      0x84DE
-#define GL_TEXTURE31                      0x84DF
-#define GL_ACTIVE_TEXTURE                 0x84E0
-#define GL_MULTISAMPLE                    0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
-#define GL_SAMPLE_COVERAGE                0x80A0
-#define GL_SAMPLE_BUFFERS                 0x80A8
-#define GL_SAMPLES                        0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
-#define GL_TEXTURE_CUBE_MAP               0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP         0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
-#define GL_COMPRESSED_RGB                 0x84ED
-#define GL_COMPRESSED_RGBA                0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT       0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE  0x86A0
-#define GL_TEXTURE_COMPRESSED             0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
-#define GL_CLAMP_TO_BORDER                0x812D
-#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
-#define GL_MAX_TEXTURE_UNITS              0x84E2
-#define GL_TRANSPOSE_MODELVIEW_MATRIX     0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX    0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX       0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX         0x84E6
-#define GL_MULTISAMPLE_BIT                0x20000000
-#define GL_NORMAL_MAP                     0x8511
-#define GL_REFLECTION_MAP                 0x8512
-#define GL_COMPRESSED_ALPHA               0x84E9
-#define GL_COMPRESSED_LUMINANCE           0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA     0x84EB
-#define GL_COMPRESSED_INTENSITY           0x84EC
-#define GL_COMBINE                        0x8570
-#define GL_COMBINE_RGB                    0x8571
-#define GL_COMBINE_ALPHA                  0x8572
-#define GL_SOURCE0_RGB                    0x8580
-#define GL_SOURCE1_RGB                    0x8581
-#define GL_SOURCE2_RGB                    0x8582
-#define GL_SOURCE0_ALPHA                  0x8588
-#define GL_SOURCE1_ALPHA                  0x8589
-#define GL_SOURCE2_ALPHA                  0x858A
-#define GL_OPERAND0_RGB                   0x8590
-#define GL_OPERAND1_RGB                   0x8591
-#define GL_OPERAND2_RGB                   0x8592
-#define GL_OPERAND0_ALPHA                 0x8598
-#define GL_OPERAND1_ALPHA                 0x8599
-#define GL_OPERAND2_ALPHA                 0x859A
-#define GL_RGB_SCALE                      0x8573
-#define GL_ADD_SIGNED                     0x8574
-#define GL_INTERPOLATE                    0x8575
-#define GL_SUBTRACT                       0x84E7
-#define GL_CONSTANT                       0x8576
-#define GL_PRIMARY_COLOR                  0x8577
-#define GL_PREVIOUS                       0x8578
-#define GL_DOT3_RGB                       0x86AE
-#define GL_DOT3_RGBA                      0x86AF
-typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
-typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTexture (GLenum texture);
-GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);
-GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img);
-GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
-GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);
-GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s);
-GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s);
-GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s);
-GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);
-GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);
-GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t);
-GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);
-GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);
-GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);
-GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);
-GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m);
-GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);
-GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);
-GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);
-#endif
-#endif /* GL_VERSION_1_3 */
-
-#ifndef GL_VERSION_1_4
-#define GL_VERSION_1_4 1
-#define GL_BLEND_DST_RGB                  0x80C8
-#define GL_BLEND_SRC_RGB                  0x80C9
-#define GL_BLEND_DST_ALPHA                0x80CA
-#define GL_BLEND_SRC_ALPHA                0x80CB
-#define GL_POINT_FADE_THRESHOLD_SIZE      0x8128
-#define GL_DEPTH_COMPONENT16              0x81A5
-#define GL_DEPTH_COMPONENT24              0x81A6
-#define GL_DEPTH_COMPONENT32              0x81A7
-#define GL_MIRRORED_REPEAT                0x8370
-#define GL_MAX_TEXTURE_LOD_BIAS           0x84FD
-#define GL_TEXTURE_LOD_BIAS               0x8501
-#define GL_INCR_WRAP                      0x8507
-#define GL_DECR_WRAP                      0x8508
-#define GL_TEXTURE_DEPTH_SIZE             0x884A
-#define GL_TEXTURE_COMPARE_MODE           0x884C
-#define GL_TEXTURE_COMPARE_FUNC           0x884D
-#define GL_POINT_SIZE_MIN                 0x8126
-#define GL_POINT_SIZE_MAX                 0x8127
-#define GL_POINT_DISTANCE_ATTENUATION     0x8129
-#define GL_GENERATE_MIPMAP                0x8191
-#define GL_GENERATE_MIPMAP_HINT           0x8192
-#define GL_FOG_COORDINATE_SOURCE          0x8450
-#define GL_FOG_COORDINATE                 0x8451
-#define GL_FRAGMENT_DEPTH                 0x8452
-#define GL_CURRENT_FOG_COORDINATE         0x8453
-#define GL_FOG_COORDINATE_ARRAY_TYPE      0x8454
-#define GL_FOG_COORDINATE_ARRAY_STRIDE    0x8455
-#define GL_FOG_COORDINATE_ARRAY_POINTER   0x8456
-#define GL_FOG_COORDINATE_ARRAY           0x8457
-#define GL_COLOR_SUM                      0x8458
-#define GL_CURRENT_SECONDARY_COLOR        0x8459
-#define GL_SECONDARY_COLOR_ARRAY_SIZE     0x845A
-#define GL_SECONDARY_COLOR_ARRAY_TYPE     0x845B
-#define GL_SECONDARY_COLOR_ARRAY_STRIDE   0x845C
-#define GL_SECONDARY_COLOR_ARRAY_POINTER  0x845D
-#define GL_SECONDARY_COLOR_ARRAY          0x845E
-#define GL_TEXTURE_FILTER_CONTROL         0x8500
-#define GL_DEPTH_TEXTURE_MODE             0x884B
-#define GL_COMPARE_R_TO_TEXTURE           0x884E
-#define GL_FUNC_ADD                       0x8006
-#define GL_FUNC_SUBTRACT                  0x800A
-#define GL_FUNC_REVERSE_SUBTRACT          0x800B
-#define GL_MIN                            0x8007
-#define GL_MAX                            0x8008
-#define GL_CONSTANT_COLOR                 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
-#define GL_CONSTANT_ALPHA                 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
-typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
-GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
-GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
-GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glFogCoordf (GLfloat coord);
-GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);
-GLAPI void APIENTRY glFogCoordd (GLdouble coord);
-GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord);
-GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);
-GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v);
-GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);
-GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v);
-GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);
-GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v);
-GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue);
-GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v);
-GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);
-GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v);
-GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);
-GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v);
-GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);
-GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v);
-GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);
-GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v);
-GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y);
-GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y);
-GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y);
-GLAPI void APIENTRY glWindowPos2iv (const GLint *v);
-GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y);
-GLAPI void APIENTRY glWindowPos2sv (const GLshort *v);
-GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glWindowPos3iv (const GLint *v);
-GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glWindowPos3sv (const GLshort *v);
-GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-GLAPI void APIENTRY glBlendEquation (GLenum mode);
-#endif
-#endif /* GL_VERSION_1_4 */
-
-#ifndef GL_VERSION_1_5
-#define GL_VERSION_1_5 1
-#include <stddef.h>
-#ifdef __MACOSX__
-typedef long GLsizeiptr;
-typedef long GLintptr;
-#else
-typedef ptrdiff_t GLsizeiptr;
-typedef ptrdiff_t GLintptr;
-#endif
-#define GL_BUFFER_SIZE                    0x8764
-#define GL_BUFFER_USAGE                   0x8765
-#define GL_QUERY_COUNTER_BITS             0x8864
-#define GL_CURRENT_QUERY                  0x8865
-#define GL_QUERY_RESULT                   0x8866
-#define GL_QUERY_RESULT_AVAILABLE         0x8867
-#define GL_ARRAY_BUFFER                   0x8892
-#define GL_ELEMENT_ARRAY_BUFFER           0x8893
-#define GL_ARRAY_BUFFER_BINDING           0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
-#define GL_READ_ONLY                      0x88B8
-#define GL_WRITE_ONLY                     0x88B9
-#define GL_READ_WRITE                     0x88BA
-#define GL_BUFFER_ACCESS                  0x88BB
-#define GL_BUFFER_MAPPED                  0x88BC
-#define GL_BUFFER_MAP_POINTER             0x88BD
-#define GL_STREAM_DRAW                    0x88E0
-#define GL_STREAM_READ                    0x88E1
-#define GL_STREAM_COPY                    0x88E2
-#define GL_STATIC_DRAW                    0x88E4
-#define GL_STATIC_READ                    0x88E5
-#define GL_STATIC_COPY                    0x88E6
-#define GL_DYNAMIC_DRAW                   0x88E8
-#define GL_DYNAMIC_READ                   0x88E9
-#define GL_DYNAMIC_COPY                   0x88EA
-#define GL_SAMPLES_PASSED                 0x8914
-#define GL_SRC1_ALPHA                     0x8589
-#define GL_VERTEX_ARRAY_BUFFER_BINDING    0x8896
-#define GL_NORMAL_ARRAY_BUFFER_BINDING    0x8897
-#define GL_COLOR_ARRAY_BUFFER_BINDING     0x8898
-#define GL_INDEX_ARRAY_BUFFER_BINDING     0x8899
-#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
-#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
-#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
-#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
-#define GL_WEIGHT_ARRAY_BUFFER_BINDING    0x889E
-#define GL_FOG_COORD_SRC                  0x8450
-#define GL_FOG_COORD                      0x8451
-#define GL_CURRENT_FOG_COORD              0x8453
-#define GL_FOG_COORD_ARRAY_TYPE           0x8454
-#define GL_FOG_COORD_ARRAY_STRIDE         0x8455
-#define GL_FOG_COORD_ARRAY_POINTER        0x8456
-#define GL_FOG_COORD_ARRAY                0x8457
-#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D
-#define GL_SRC0_RGB                       0x8580
-#define GL_SRC1_RGB                       0x8581
-#define GL_SRC2_RGB                       0x8582
-#define GL_SRC0_ALPHA                     0x8588
-#define GL_SRC2_ALPHA                     0x858A
-typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
-typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
-typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
-typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
-GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
-GLAPI void APIENTRY glEndQuery (GLenum target);
-GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
-GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
-GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
-GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
-GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
-GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
-GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
-GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
-GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_VERSION_1_5 */
-
-#ifndef GL_VERSION_2_0
-#define GL_VERSION_2_0 1
-typedef char GLchar;
-#define GL_BLEND_EQUATION_RGB             0x8009
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED    0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE       0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE     0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE       0x8625
-#define GL_CURRENT_VERTEX_ATTRIB          0x8626
-#define GL_VERTEX_PROGRAM_POINT_SIZE      0x8642
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER    0x8645
-#define GL_STENCIL_BACK_FUNC              0x8800
-#define GL_STENCIL_BACK_FAIL              0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
-#define GL_MAX_DRAW_BUFFERS               0x8824
-#define GL_DRAW_BUFFER0                   0x8825
-#define GL_DRAW_BUFFER1                   0x8826
-#define GL_DRAW_BUFFER2                   0x8827
-#define GL_DRAW_BUFFER3                   0x8828
-#define GL_DRAW_BUFFER4                   0x8829
-#define GL_DRAW_BUFFER5                   0x882A
-#define GL_DRAW_BUFFER6                   0x882B
-#define GL_DRAW_BUFFER7                   0x882C
-#define GL_DRAW_BUFFER8                   0x882D
-#define GL_DRAW_BUFFER9                   0x882E
-#define GL_DRAW_BUFFER10                  0x882F
-#define GL_DRAW_BUFFER11                  0x8830
-#define GL_DRAW_BUFFER12                  0x8831
-#define GL_DRAW_BUFFER13                  0x8832
-#define GL_DRAW_BUFFER14                  0x8833
-#define GL_DRAW_BUFFER15                  0x8834
-#define GL_BLEND_EQUATION_ALPHA           0x883D
-#define GL_MAX_VERTEX_ATTRIBS             0x8869
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
-#define GL_MAX_TEXTURE_IMAGE_UNITS        0x8872
-#define GL_FRAGMENT_SHADER                0x8B30
-#define GL_VERTEX_SHADER                  0x8B31
-#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
-#define GL_MAX_VERTEX_UNIFORM_COMPONENTS  0x8B4A
-#define GL_MAX_VARYING_FLOATS             0x8B4B
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
-#define GL_SHADER_TYPE                    0x8B4F
-#define GL_FLOAT_VEC2                     0x8B50
-#define GL_FLOAT_VEC3                     0x8B51
-#define GL_FLOAT_VEC4                     0x8B52
-#define GL_INT_VEC2                       0x8B53
-#define GL_INT_VEC3                       0x8B54
-#define GL_INT_VEC4                       0x8B55
-#define GL_BOOL                           0x8B56
-#define GL_BOOL_VEC2                      0x8B57
-#define GL_BOOL_VEC3                      0x8B58
-#define GL_BOOL_VEC4                      0x8B59
-#define GL_FLOAT_MAT2                     0x8B5A
-#define GL_FLOAT_MAT3                     0x8B5B
-#define GL_FLOAT_MAT4                     0x8B5C
-#define GL_SAMPLER_1D                     0x8B5D
-#define GL_SAMPLER_2D                     0x8B5E
-#define GL_SAMPLER_3D                     0x8B5F
-#define GL_SAMPLER_CUBE                   0x8B60
-#define GL_SAMPLER_1D_SHADOW              0x8B61
-#define GL_SAMPLER_2D_SHADOW              0x8B62
-#define GL_DELETE_STATUS                  0x8B80
-#define GL_COMPILE_STATUS                 0x8B81
-#define GL_LINK_STATUS                    0x8B82
-#define GL_VALIDATE_STATUS                0x8B83
-#define GL_INFO_LOG_LENGTH                0x8B84
-#define GL_ATTACHED_SHADERS               0x8B85
-#define GL_ACTIVE_UNIFORMS                0x8B86
-#define GL_ACTIVE_UNIFORM_MAX_LENGTH      0x8B87
-#define GL_SHADER_SOURCE_LENGTH           0x8B88
-#define GL_ACTIVE_ATTRIBUTES              0x8B89
-#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH    0x8B8A
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
-#define GL_SHADING_LANGUAGE_VERSION       0x8B8C
-#define GL_CURRENT_PROGRAM                0x8B8D
-#define GL_POINT_SPRITE_COORD_ORIGIN      0x8CA0
-#define GL_LOWER_LEFT                     0x8CA1
-#define GL_UPPER_LEFT                     0x8CA2
-#define GL_STENCIL_BACK_REF               0x8CA3
-#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
-#define GL_STENCIL_BACK_WRITEMASK         0x8CA5
-#define GL_VERTEX_PROGRAM_TWO_SIDE        0x8643
-#define GL_POINT_SPRITE                   0x8861
-#define GL_COORD_REPLACE                  0x8862
-#define GL_MAX_TEXTURE_COORDS             0x8871
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
-typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
-typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
-typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
-typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
-typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
-typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
-typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
-typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
-typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
-GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
-GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
-GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
-GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
-GLAPI void APIENTRY glCompileShader (GLuint shader);
-GLAPI GLuint APIENTRY glCreateProgram (void);
-GLAPI GLuint APIENTRY glCreateShader (GLenum type);
-GLAPI void APIENTRY glDeleteProgram (GLuint program);
-GLAPI void APIENTRY glDeleteShader (GLuint shader);
-GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
-GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
-GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
-GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
-GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
-GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
-GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
-GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
-GLAPI void APIENTRY glLinkProgram (GLuint program);
-GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
-GLAPI void APIENTRY glUseProgram (GLuint program);
-GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
-GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
-GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glValidateProgram (GLuint program);
-GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_VERSION_2_0 */
-
-#ifndef GL_VERSION_2_1
-#define GL_VERSION_2_1 1
-#define GL_PIXEL_PACK_BUFFER              0x88EB
-#define GL_PIXEL_UNPACK_BUFFER            0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING      0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING    0x88EF
-#define GL_FLOAT_MAT2x3                   0x8B65
-#define GL_FLOAT_MAT2x4                   0x8B66
-#define GL_FLOAT_MAT3x2                   0x8B67
-#define GL_FLOAT_MAT3x4                   0x8B68
-#define GL_FLOAT_MAT4x2                   0x8B69
-#define GL_FLOAT_MAT4x3                   0x8B6A
-#define GL_SRGB                           0x8C40
-#define GL_SRGB8                          0x8C41
-#define GL_SRGB_ALPHA                     0x8C42
-#define GL_SRGB8_ALPHA8                   0x8C43
-#define GL_COMPRESSED_SRGB                0x8C48
-#define GL_COMPRESSED_SRGB_ALPHA          0x8C49
-#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
-#define GL_SLUMINANCE_ALPHA               0x8C44
-#define GL_SLUMINANCE8_ALPHA8             0x8C45
-#define GL_SLUMINANCE                     0x8C46
-#define GL_SLUMINANCE8                    0x8C47
-#define GL_COMPRESSED_SLUMINANCE          0x8C4A
-#define GL_COMPRESSED_SLUMINANCE_ALPHA    0x8C4B
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-#endif
-#endif /* GL_VERSION_2_1 */
-
-#ifndef GL_VERSION_3_0
-#define GL_VERSION_3_0 1
-typedef unsigned short GLhalf;
-#define GL_COMPARE_REF_TO_TEXTURE         0x884E
-#define GL_CLIP_DISTANCE0                 0x3000
-#define GL_CLIP_DISTANCE1                 0x3001
-#define GL_CLIP_DISTANCE2                 0x3002
-#define GL_CLIP_DISTANCE3                 0x3003
-#define GL_CLIP_DISTANCE4                 0x3004
-#define GL_CLIP_DISTANCE5                 0x3005
-#define GL_CLIP_DISTANCE6                 0x3006
-#define GL_CLIP_DISTANCE7                 0x3007
-#define GL_MAX_CLIP_DISTANCES             0x0D32
-#define GL_MAJOR_VERSION                  0x821B
-#define GL_MINOR_VERSION                  0x821C
-#define GL_NUM_EXTENSIONS                 0x821D
-#define GL_CONTEXT_FLAGS                  0x821E
-#define GL_COMPRESSED_RED                 0x8225
-#define GL_COMPRESSED_RG                  0x8226
-#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001
-#define GL_RGBA32F                        0x8814
-#define GL_RGB32F                         0x8815
-#define GL_RGBA16F                        0x881A
-#define GL_RGB16F                         0x881B
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER    0x88FD
-#define GL_MAX_ARRAY_TEXTURE_LAYERS       0x88FF
-#define GL_MIN_PROGRAM_TEXEL_OFFSET       0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET       0x8905
-#define GL_CLAMP_READ_COLOR               0x891C
-#define GL_FIXED_ONLY                     0x891D
-#define GL_MAX_VARYING_COMPONENTS         0x8B4B
-#define GL_TEXTURE_1D_ARRAY               0x8C18
-#define GL_PROXY_TEXTURE_1D_ARRAY         0x8C19
-#define GL_TEXTURE_2D_ARRAY               0x8C1A
-#define GL_PROXY_TEXTURE_2D_ARRAY         0x8C1B
-#define GL_TEXTURE_BINDING_1D_ARRAY       0x8C1C
-#define GL_TEXTURE_BINDING_2D_ARRAY       0x8C1D
-#define GL_R11F_G11F_B10F                 0x8C3A
-#define GL_UNSIGNED_INT_10F_11F_11F_REV   0x8C3B
-#define GL_RGB9_E5                        0x8C3D
-#define GL_UNSIGNED_INT_5_9_9_9_REV       0x8C3E
-#define GL_TEXTURE_SHARED_SIZE            0x8C3F
-#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
-#define GL_TRANSFORM_FEEDBACK_VARYINGS    0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
-#define GL_PRIMITIVES_GENERATED           0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
-#define GL_RASTERIZER_DISCARD             0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
-#define GL_INTERLEAVED_ATTRIBS            0x8C8C
-#define GL_SEPARATE_ATTRIBS               0x8C8D
-#define GL_TRANSFORM_FEEDBACK_BUFFER      0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
-#define GL_RGBA32UI                       0x8D70
-#define GL_RGB32UI                        0x8D71
-#define GL_RGBA16UI                       0x8D76
-#define GL_RGB16UI                        0x8D77
-#define GL_RGBA8UI                        0x8D7C
-#define GL_RGB8UI                         0x8D7D
-#define GL_RGBA32I                        0x8D82
-#define GL_RGB32I                         0x8D83
-#define GL_RGBA16I                        0x8D88
-#define GL_RGB16I                         0x8D89
-#define GL_RGBA8I                         0x8D8E
-#define GL_RGB8I                          0x8D8F
-#define GL_RED_INTEGER                    0x8D94
-#define GL_GREEN_INTEGER                  0x8D95
-#define GL_BLUE_INTEGER                   0x8D96
-#define GL_RGB_INTEGER                    0x8D98
-#define GL_RGBA_INTEGER                   0x8D99
-#define GL_BGR_INTEGER                    0x8D9A
-#define GL_BGRA_INTEGER                   0x8D9B
-#define GL_SAMPLER_1D_ARRAY               0x8DC0
-#define GL_SAMPLER_2D_ARRAY               0x8DC1
-#define GL_SAMPLER_1D_ARRAY_SHADOW        0x8DC3
-#define GL_SAMPLER_2D_ARRAY_SHADOW        0x8DC4
-#define GL_SAMPLER_CUBE_SHADOW            0x8DC5
-#define GL_UNSIGNED_INT_VEC2              0x8DC6
-#define GL_UNSIGNED_INT_VEC3              0x8DC7
-#define GL_UNSIGNED_INT_VEC4              0x8DC8
-#define GL_INT_SAMPLER_1D                 0x8DC9
-#define GL_INT_SAMPLER_2D                 0x8DCA
-#define GL_INT_SAMPLER_3D                 0x8DCB
-#define GL_INT_SAMPLER_CUBE               0x8DCC
-#define GL_INT_SAMPLER_1D_ARRAY           0x8DCE
-#define GL_INT_SAMPLER_2D_ARRAY           0x8DCF
-#define GL_UNSIGNED_INT_SAMPLER_1D        0x8DD1
-#define GL_UNSIGNED_INT_SAMPLER_2D        0x8DD2
-#define GL_UNSIGNED_INT_SAMPLER_3D        0x8DD3
-#define GL_UNSIGNED_INT_SAMPLER_CUBE      0x8DD4
-#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY  0x8DD6
-#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY  0x8DD7
-#define GL_QUERY_WAIT                     0x8E13
-#define GL_QUERY_NO_WAIT                  0x8E14
-#define GL_QUERY_BY_REGION_WAIT           0x8E15
-#define GL_QUERY_BY_REGION_NO_WAIT        0x8E16
-#define GL_BUFFER_ACCESS_FLAGS            0x911F
-#define GL_BUFFER_MAP_LENGTH              0x9120
-#define GL_BUFFER_MAP_OFFSET              0x9121
-#define GL_DEPTH_COMPONENT32F             0x8CAC
-#define GL_DEPTH32F_STENCIL8              0x8CAD
-#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
-#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
-#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
-#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
-#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
-#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
-#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
-#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
-#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
-#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
-#define GL_FRAMEBUFFER_DEFAULT            0x8218
-#define GL_FRAMEBUFFER_UNDEFINED          0x8219
-#define GL_DEPTH_STENCIL_ATTACHMENT       0x821A
-#define GL_MAX_RENDERBUFFER_SIZE          0x84E8
-#define GL_DEPTH_STENCIL                  0x84F9
-#define GL_UNSIGNED_INT_24_8              0x84FA
-#define GL_DEPTH24_STENCIL8               0x88F0
-#define GL_TEXTURE_STENCIL_SIZE           0x88F1
-#define GL_TEXTURE_RED_TYPE               0x8C10
-#define GL_TEXTURE_GREEN_TYPE             0x8C11
-#define GL_TEXTURE_BLUE_TYPE              0x8C12
-#define GL_TEXTURE_ALPHA_TYPE             0x8C13
-#define GL_TEXTURE_DEPTH_TYPE             0x8C16
-#define GL_UNSIGNED_NORMALIZED            0x8C17
-#define GL_FRAMEBUFFER_BINDING            0x8CA6
-#define GL_DRAW_FRAMEBUFFER_BINDING       0x8CA6
-#define GL_RENDERBUFFER_BINDING           0x8CA7
-#define GL_READ_FRAMEBUFFER               0x8CA8
-#define GL_DRAW_FRAMEBUFFER               0x8CA9
-#define GL_READ_FRAMEBUFFER_BINDING       0x8CAA
-#define GL_RENDERBUFFER_SAMPLES           0x8CAB
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
-#define GL_FRAMEBUFFER_COMPLETE           0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
-#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
-#define GL_FRAMEBUFFER_UNSUPPORTED        0x8CDD
-#define GL_MAX_COLOR_ATTACHMENTS          0x8CDF
-#define GL_COLOR_ATTACHMENT0              0x8CE0
-#define GL_COLOR_ATTACHMENT1              0x8CE1
-#define GL_COLOR_ATTACHMENT2              0x8CE2
-#define GL_COLOR_ATTACHMENT3              0x8CE3
-#define GL_COLOR_ATTACHMENT4              0x8CE4
-#define GL_COLOR_ATTACHMENT5              0x8CE5
-#define GL_COLOR_ATTACHMENT6              0x8CE6
-#define GL_COLOR_ATTACHMENT7              0x8CE7
-#define GL_COLOR_ATTACHMENT8              0x8CE8
-#define GL_COLOR_ATTACHMENT9              0x8CE9
-#define GL_COLOR_ATTACHMENT10             0x8CEA
-#define GL_COLOR_ATTACHMENT11             0x8CEB
-#define GL_COLOR_ATTACHMENT12             0x8CEC
-#define GL_COLOR_ATTACHMENT13             0x8CED
-#define GL_COLOR_ATTACHMENT14             0x8CEE
-#define GL_COLOR_ATTACHMENT15             0x8CEF
-#define GL_DEPTH_ATTACHMENT               0x8D00
-#define GL_STENCIL_ATTACHMENT             0x8D20
-#define GL_FRAMEBUFFER                    0x8D40
-#define GL_RENDERBUFFER                   0x8D41
-#define GL_RENDERBUFFER_WIDTH             0x8D42
-#define GL_RENDERBUFFER_HEIGHT            0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44
-#define GL_STENCIL_INDEX1                 0x8D46
-#define GL_STENCIL_INDEX4                 0x8D47
-#define GL_STENCIL_INDEX8                 0x8D48
-#define GL_STENCIL_INDEX16                0x8D49
-#define GL_RENDERBUFFER_RED_SIZE          0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
-#define GL_MAX_SAMPLES                    0x8D57
-#define GL_INDEX                          0x8222
-#define GL_TEXTURE_LUMINANCE_TYPE         0x8C14
-#define GL_TEXTURE_INTENSITY_TYPE         0x8C15
-#define GL_FRAMEBUFFER_SRGB               0x8DB9
-#define GL_HALF_FLOAT                     0x140B
-#define GL_MAP_READ_BIT                   0x0001
-#define GL_MAP_WRITE_BIT                  0x0002
-#define GL_MAP_INVALIDATE_RANGE_BIT       0x0004
-#define GL_MAP_INVALIDATE_BUFFER_BIT      0x0008
-#define GL_MAP_FLUSH_EXPLICIT_BIT         0x0010
-#define GL_MAP_UNSYNCHRONIZED_BIT         0x0020
-#define GL_COMPRESSED_RED_RGTC1           0x8DBB
-#define GL_COMPRESSED_SIGNED_RED_RGTC1    0x8DBC
-#define GL_COMPRESSED_RG_RGTC2            0x8DBD
-#define GL_COMPRESSED_SIGNED_RG_RGTC2     0x8DBE
-#define GL_RG                             0x8227
-#define GL_RG_INTEGER                     0x8228
-#define GL_R8                             0x8229
-#define GL_R16                            0x822A
-#define GL_RG8                            0x822B
-#define GL_RG16                           0x822C
-#define GL_R16F                           0x822D
-#define GL_R32F                           0x822E
-#define GL_RG16F                          0x822F
-#define GL_RG32F                          0x8230
-#define GL_R8I                            0x8231
-#define GL_R8UI                           0x8232
-#define GL_R16I                           0x8233
-#define GL_R16UI                          0x8234
-#define GL_R32I                           0x8235
-#define GL_R32UI                          0x8236
-#define GL_RG8I                           0x8237
-#define GL_RG8UI                          0x8238
-#define GL_RG16I                          0x8239
-#define GL_RG16UI                         0x823A
-#define GL_RG32I                          0x823B
-#define GL_RG32UI                         0x823C
-#define GL_VERTEX_ARRAY_BINDING           0x85B5
-#define GL_CLAMP_VERTEX_COLOR             0x891A
-#define GL_CLAMP_FRAGMENT_COLOR           0x891B
-#define GL_ALPHA_INTEGER                  0x8D97
-typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
-typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
-typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
-typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
-typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
-typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
-typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
-typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
-GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
-GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
-GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
-GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
-GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedback (void);
-GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
-GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
-GLAPI void APIENTRY glEndConditionalRender (void);
-GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
-GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
-GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
-GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
-GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
-GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
-GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
-GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
-GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
-GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
-GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);
-GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
-GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
-GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
-GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
-GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
-GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
-GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
-GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
-GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateMipmap (GLenum target);
-GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glBindVertexArray (GLuint array);
-GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
-GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
-GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
-#endif
-#endif /* GL_VERSION_3_0 */
-
-#ifndef GL_VERSION_3_1
-#define GL_VERSION_3_1 1
-#define GL_SAMPLER_2D_RECT                0x8B63
-#define GL_SAMPLER_2D_RECT_SHADOW         0x8B64
-#define GL_SAMPLER_BUFFER                 0x8DC2
-#define GL_INT_SAMPLER_2D_RECT            0x8DCD
-#define GL_INT_SAMPLER_BUFFER             0x8DD0
-#define GL_UNSIGNED_INT_SAMPLER_2D_RECT   0x8DD5
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER    0x8DD8
-#define GL_TEXTURE_BUFFER                 0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE        0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER         0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
-#define GL_TEXTURE_RECTANGLE              0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE      0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE        0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE     0x84F8
-#define GL_R8_SNORM                       0x8F94
-#define GL_RG8_SNORM                      0x8F95
-#define GL_RGB8_SNORM                     0x8F96
-#define GL_RGBA8_SNORM                    0x8F97
-#define GL_R16_SNORM                      0x8F98
-#define GL_RG16_SNORM                     0x8F99
-#define GL_RGB16_SNORM                    0x8F9A
-#define GL_RGBA16_SNORM                   0x8F9B
-#define GL_SIGNED_NORMALIZED              0x8F9C
-#define GL_PRIMITIVE_RESTART              0x8F9D
-#define GL_PRIMITIVE_RESTART_INDEX        0x8F9E
-#define GL_COPY_READ_BUFFER               0x8F36
-#define GL_COPY_WRITE_BUFFER              0x8F37
-#define GL_UNIFORM_BUFFER                 0x8A11
-#define GL_UNIFORM_BUFFER_BINDING         0x8A28
-#define GL_UNIFORM_BUFFER_START           0x8A29
-#define GL_UNIFORM_BUFFER_SIZE            0x8A2A
-#define GL_MAX_VERTEX_UNIFORM_BLOCKS      0x8A2B
-#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS    0x8A2D
-#define GL_MAX_COMBINED_UNIFORM_BLOCKS    0x8A2E
-#define GL_MAX_UNIFORM_BUFFER_BINDINGS    0x8A2F
-#define GL_MAX_UNIFORM_BLOCK_SIZE         0x8A30
-#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
-#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
-#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
-#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
-#define GL_ACTIVE_UNIFORM_BLOCKS          0x8A36
-#define GL_UNIFORM_TYPE                   0x8A37
-#define GL_UNIFORM_SIZE                   0x8A38
-#define GL_UNIFORM_NAME_LENGTH            0x8A39
-#define GL_UNIFORM_BLOCK_INDEX            0x8A3A
-#define GL_UNIFORM_OFFSET                 0x8A3B
-#define GL_UNIFORM_ARRAY_STRIDE           0x8A3C
-#define GL_UNIFORM_MATRIX_STRIDE          0x8A3D
-#define GL_UNIFORM_IS_ROW_MAJOR           0x8A3E
-#define GL_UNIFORM_BLOCK_BINDING          0x8A3F
-#define GL_UNIFORM_BLOCK_DATA_SIZE        0x8A40
-#define GL_UNIFORM_BLOCK_NAME_LENGTH      0x8A41
-#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS  0x8A42
-#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
-#define GL_INVALID_INDEX                  0xFFFFFFFFu
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
-typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
-GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
-GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
-GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
-GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
-GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
-GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
-#endif
-#endif /* GL_VERSION_3_1 */
-
-#ifndef GL_VERSION_3_2
-#define GL_VERSION_3_2 1
-typedef struct __GLsync *GLsync;
-#ifndef GLEXT_64_TYPES_DEFINED
-/* This code block is duplicated in glxext.h, so must be protected */
-#define GLEXT_64_TYPES_DEFINED
-/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
-/* (as used in the GL_EXT_timer_query extension). */
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include <inttypes.h>
-#elif defined(__sun__) || defined(__digital__)
-#include <inttypes.h>
-#if defined(__STDC__)
-#if defined(__arch64__) || defined(_LP64)
-typedef long int int64_t;
-typedef unsigned long int uint64_t;
-#else
-typedef long long int int64_t;
-typedef unsigned long long int uint64_t;
-#endif /* __arch64__ */
-#endif /* __STDC__ */
-#elif defined( __VMS ) || defined(__sgi)
-#include <inttypes.h>
-#elif defined(__SCO__) || defined(__USLC__)
-#include <stdint.h>
-#elif defined(__UNIXOS2__) || defined(__SOL64__)
-typedef long int int32_t;
-typedef long long int int64_t;
-typedef unsigned long long int uint64_t;
-#elif defined(_WIN32) && defined(__GNUC__)
-#include <stdint.h>
-#elif defined(_WIN32)
-typedef __int32 int32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else
-/* Fallback if nothing above works */
-#include <inttypes.h>
-#endif
-#endif
-typedef uint64_t GLuint64;
-typedef int64_t GLint64;
-#define GL_CONTEXT_CORE_PROFILE_BIT       0x00000001
-#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
-#define GL_LINES_ADJACENCY                0x000A
-#define GL_LINE_STRIP_ADJACENCY           0x000B
-#define GL_TRIANGLES_ADJACENCY            0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY       0x000D
-#define GL_PROGRAM_POINT_SIZE             0x8642
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
-#define GL_GEOMETRY_SHADER                0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT          0x8916
-#define GL_GEOMETRY_INPUT_TYPE            0x8917
-#define GL_GEOMETRY_OUTPUT_TYPE           0x8918
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES   0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
-#define GL_MAX_VERTEX_OUTPUT_COMPONENTS   0x9122
-#define GL_MAX_GEOMETRY_INPUT_COMPONENTS  0x9123
-#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
-#define GL_MAX_FRAGMENT_INPUT_COMPONENTS  0x9125
-#define GL_CONTEXT_PROFILE_MASK           0x9126
-#define GL_DEPTH_CLAMP                    0x864F
-#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
-#define GL_FIRST_VERTEX_CONVENTION        0x8E4D
-#define GL_LAST_VERTEX_CONVENTION         0x8E4E
-#define GL_PROVOKING_VERTEX               0x8E4F
-#define GL_TEXTURE_CUBE_MAP_SEAMLESS      0x884F
-#define GL_MAX_SERVER_WAIT_TIMEOUT        0x9111
-#define GL_OBJECT_TYPE                    0x9112
-#define GL_SYNC_CONDITION                 0x9113
-#define GL_SYNC_STATUS                    0x9114
-#define GL_SYNC_FLAGS                     0x9115
-#define GL_SYNC_FENCE                     0x9116
-#define GL_SYNC_GPU_COMMANDS_COMPLETE     0x9117
-#define GL_UNSIGNALED                     0x9118
-#define GL_SIGNALED                       0x9119
-#define GL_ALREADY_SIGNALED               0x911A
-#define GL_TIMEOUT_EXPIRED                0x911B
-#define GL_CONDITION_SATISFIED            0x911C
-#define GL_WAIT_FAILED                    0x911D
-#define GL_TIMEOUT_IGNORED                0xFFFFFFFFFFFFFFFFull
-#define GL_SYNC_FLUSH_COMMANDS_BIT        0x00000001
-#define GL_SAMPLE_POSITION                0x8E50
-#define GL_SAMPLE_MASK                    0x8E51
-#define GL_SAMPLE_MASK_VALUE              0x8E52
-#define GL_MAX_SAMPLE_MASK_WORDS          0x8E59
-#define GL_TEXTURE_2D_MULTISAMPLE         0x9100
-#define GL_PROXY_TEXTURE_2D_MULTISAMPLE   0x9101
-#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY   0x9102
-#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
-#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
-#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
-#define GL_TEXTURE_SAMPLES                0x9106
-#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
-#define GL_SAMPLER_2D_MULTISAMPLE         0x9108
-#define GL_INT_SAMPLER_2D_MULTISAMPLE     0x9109
-#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
-#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY   0x910B
-#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
-#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
-#define GL_MAX_COLOR_TEXTURE_SAMPLES      0x910E
-#define GL_MAX_DEPTH_TEXTURE_SAMPLES      0x910F
-#define GL_MAX_INTEGER_SAMPLES            0x9110
-typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
-typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
-typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
-typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
-typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
-typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
-typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
-typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
-GLAPI void APIENTRY glProvokingVertex (GLenum mode);
-GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
-GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
-GLAPI void APIENTRY glDeleteSync (GLsync sync);
-GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data);
-GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
-GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
-GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
-#endif
-#endif /* GL_VERSION_3_2 */
-
-#ifndef GL_VERSION_3_3
-#define GL_VERSION_3_3 1
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR    0x88FE
-#define GL_SRC1_COLOR                     0x88F9
-#define GL_ONE_MINUS_SRC1_COLOR           0x88FA
-#define GL_ONE_MINUS_SRC1_ALPHA           0x88FB
-#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS   0x88FC
-#define GL_ANY_SAMPLES_PASSED             0x8C2F
-#define GL_SAMPLER_BINDING                0x8919
-#define GL_RGB10_A2UI                     0x906F
-#define GL_TEXTURE_SWIZZLE_R              0x8E42
-#define GL_TEXTURE_SWIZZLE_G              0x8E43
-#define GL_TEXTURE_SWIZZLE_B              0x8E44
-#define GL_TEXTURE_SWIZZLE_A              0x8E45
-#define GL_TEXTURE_SWIZZLE_RGBA           0x8E46
-#define GL_TIME_ELAPSED                   0x88BF
-#define GL_TIMESTAMP                      0x8E28
-#define GL_INT_2_10_10_10_REV             0x8D9F
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
-typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
-typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
-typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value);
-typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
-typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color);
-typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
-typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
-GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
-GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
-GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
-GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
-GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
-GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
-GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
-GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
-GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
-GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
-GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor);
-GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value);
-GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value);
-GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value);
-GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value);
-GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value);
-GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value);
-GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color);
-GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color);
-GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color);
-GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color);
-GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color);
-GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color);
-#endif
-#endif /* GL_VERSION_3_3 */
-
-#ifndef GL_VERSION_4_0
-#define GL_VERSION_4_0 1
-#define GL_SAMPLE_SHADING                 0x8C36
-#define GL_MIN_SAMPLE_SHADING_VALUE       0x8C37
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
-#define GL_TEXTURE_CUBE_MAP_ARRAY         0x9009
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY   0x900B
-#define GL_SAMPLER_CUBE_MAP_ARRAY         0x900C
-#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW  0x900D
-#define GL_INT_SAMPLER_CUBE_MAP_ARRAY     0x900E
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
-#define GL_DRAW_INDIRECT_BUFFER           0x8F3F
-#define GL_DRAW_INDIRECT_BUFFER_BINDING   0x8F43
-#define GL_GEOMETRY_SHADER_INVOCATIONS    0x887F
-#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
-#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
-#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
-#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
-#define GL_MAX_VERTEX_STREAMS             0x8E71
-#define GL_DOUBLE_VEC2                    0x8FFC
-#define GL_DOUBLE_VEC3                    0x8FFD
-#define GL_DOUBLE_VEC4                    0x8FFE
-#define GL_DOUBLE_MAT2                    0x8F46
-#define GL_DOUBLE_MAT3                    0x8F47
-#define GL_DOUBLE_MAT4                    0x8F48
-#define GL_DOUBLE_MAT2x3                  0x8F49
-#define GL_DOUBLE_MAT2x4                  0x8F4A
-#define GL_DOUBLE_MAT3x2                  0x8F4B
-#define GL_DOUBLE_MAT3x4                  0x8F4C
-#define GL_DOUBLE_MAT4x2                  0x8F4D
-#define GL_DOUBLE_MAT4x3                  0x8F4E
-#define GL_ACTIVE_SUBROUTINES             0x8DE5
-#define GL_ACTIVE_SUBROUTINE_UNIFORMS     0x8DE6
-#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
-#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH   0x8E48
-#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
-#define GL_MAX_SUBROUTINES                0x8DE7
-#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
-#define GL_NUM_COMPATIBLE_SUBROUTINES     0x8E4A
-#define GL_COMPATIBLE_SUBROUTINES         0x8E4B
-#define GL_PATCHES                        0x000E
-#define GL_PATCH_VERTICES                 0x8E72
-#define GL_PATCH_DEFAULT_INNER_LEVEL      0x8E73
-#define GL_PATCH_DEFAULT_OUTER_LEVEL      0x8E74
-#define GL_TESS_CONTROL_OUTPUT_VERTICES   0x8E75
-#define GL_TESS_GEN_MODE                  0x8E76
-#define GL_TESS_GEN_SPACING               0x8E77
-#define GL_TESS_GEN_VERTEX_ORDER          0x8E78
-#define GL_TESS_GEN_POINT_MODE            0x8E79
-#define GL_ISOLINES                       0x8E7A
-#define GL_FRACTIONAL_ODD                 0x8E7B
-#define GL_FRACTIONAL_EVEN                0x8E7C
-#define GL_MAX_PATCH_VERTICES             0x8E7D
-#define GL_MAX_TESS_GEN_LEVEL             0x8E7E
-#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
-#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
-#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
-#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
-#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
-#define GL_MAX_TESS_PATCH_COMPONENTS      0x8E84
-#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
-#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
-#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
-#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
-#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
-#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
-#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
-#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
-#define GL_TESS_EVALUATION_SHADER         0x8E87
-#define GL_TESS_CONTROL_SHADER            0x8E88
-#define GL_TRANSFORM_FEEDBACK             0x8E22
-#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
-#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
-#define GL_TRANSFORM_FEEDBACK_BINDING     0x8E25
-#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
-typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
-typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
-typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
-typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
-typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
-typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
-typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
-typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
-typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
-typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShading (GLfloat value);
-GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect);
-GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect);
-GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
-GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
-GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
-GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
-GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
-GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
-GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
-GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
-GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
-GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
-GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
-GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
-GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
-GLAPI void APIENTRY glPauseTransformFeedback (void);
-GLAPI void APIENTRY glResumeTransformFeedback (void);
-GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
-GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
-GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
-GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
-GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
-#endif
-#endif /* GL_VERSION_4_0 */
-
-#ifndef GL_VERSION_4_1
-#define GL_VERSION_4_1 1
-#define GL_FIXED                          0x140C
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
-#define GL_LOW_FLOAT                      0x8DF0
-#define GL_MEDIUM_FLOAT                   0x8DF1
-#define GL_HIGH_FLOAT                     0x8DF2
-#define GL_LOW_INT                        0x8DF3
-#define GL_MEDIUM_INT                     0x8DF4
-#define GL_HIGH_INT                       0x8DF5
-#define GL_SHADER_COMPILER                0x8DFA
-#define GL_SHADER_BINARY_FORMATS          0x8DF8
-#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
-#define GL_MAX_VERTEX_UNIFORM_VECTORS     0x8DFB
-#define GL_MAX_VARYING_VECTORS            0x8DFC
-#define GL_MAX_FRAGMENT_UNIFORM_VECTORS   0x8DFD
-#define GL_RGB565                         0x8D62
-#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
-#define GL_PROGRAM_BINARY_LENGTH          0x8741
-#define GL_NUM_PROGRAM_BINARY_FORMATS     0x87FE
-#define GL_PROGRAM_BINARY_FORMATS         0x87FF
-#define GL_VERTEX_SHADER_BIT              0x00000001
-#define GL_FRAGMENT_SHADER_BIT            0x00000002
-#define GL_GEOMETRY_SHADER_BIT            0x00000004
-#define GL_TESS_CONTROL_SHADER_BIT        0x00000008
-#define GL_TESS_EVALUATION_SHADER_BIT     0x00000010
-#define GL_ALL_SHADER_BITS                0xFFFFFFFF
-#define GL_PROGRAM_SEPARABLE              0x8258
-#define GL_ACTIVE_PROGRAM                 0x8259
-#define GL_PROGRAM_PIPELINE_BINDING       0x825A
-#define GL_MAX_VIEWPORTS                  0x825B
-#define GL_VIEWPORT_SUBPIXEL_BITS         0x825C
-#define GL_VIEWPORT_BOUNDS_RANGE          0x825D
-#define GL_LAYER_PROVOKING_VERTEX         0x825E
-#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
-#define GL_UNDEFINED_VERTEX               0x8260
-typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
-typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
-typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
-typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
-typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
-typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
-typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
-typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings);
-typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
-typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
-typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);
-typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f);
-typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReleaseShaderCompiler (void);
-GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
-GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
-GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f);
-GLAPI void APIENTRY glClearDepthf (GLfloat d);
-GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
-GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
-GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
-GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);
-GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program);
-GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings);
-GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);
-GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines);
-GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);
-GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0);
-GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0);
-GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0);
-GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0);
-GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);
-GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
-GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
-GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
-GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v);
-GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f);
-GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data);
-GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);
-#endif
-#endif /* GL_VERSION_4_1 */
-
-#ifndef GL_VERSION_4_2
-#define GL_VERSION_4_2 1
-#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH  0x9127
-#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
-#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH  0x9129
-#define GL_UNPACK_COMPRESSED_BLOCK_SIZE   0x912A
-#define GL_PACK_COMPRESSED_BLOCK_WIDTH    0x912B
-#define GL_PACK_COMPRESSED_BLOCK_HEIGHT   0x912C
-#define GL_PACK_COMPRESSED_BLOCK_DEPTH    0x912D
-#define GL_PACK_COMPRESSED_BLOCK_SIZE     0x912E
-#define GL_NUM_SAMPLE_COUNTS              0x9380
-#define GL_MIN_MAP_BUFFER_ALIGNMENT       0x90BC
-#define GL_ATOMIC_COUNTER_BUFFER          0x92C0
-#define GL_ATOMIC_COUNTER_BUFFER_BINDING  0x92C1
-#define GL_ATOMIC_COUNTER_BUFFER_START    0x92C2
-#define GL_ATOMIC_COUNTER_BUFFER_SIZE     0x92C3
-#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
-#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
-#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
-#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
-#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
-#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
-#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
-#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
-#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
-#define GL_MAX_VERTEX_ATOMIC_COUNTERS     0x92D2
-#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
-#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
-#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS   0x92D5
-#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS   0x92D6
-#define GL_MAX_COMBINED_ATOMIC_COUNTERS   0x92D7
-#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
-#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
-#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS  0x92D9
-#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
-#define GL_UNSIGNED_INT_ATOMIC_COUNTER    0x92DB
-#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
-#define GL_ELEMENT_ARRAY_BARRIER_BIT      0x00000002
-#define GL_UNIFORM_BARRIER_BIT            0x00000004
-#define GL_TEXTURE_FETCH_BARRIER_BIT      0x00000008
-#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
-#define GL_COMMAND_BARRIER_BIT            0x00000040
-#define GL_PIXEL_BUFFER_BARRIER_BIT       0x00000080
-#define GL_TEXTURE_UPDATE_BARRIER_BIT     0x00000100
-#define GL_BUFFER_UPDATE_BARRIER_BIT      0x00000200
-#define GL_FRAMEBUFFER_BARRIER_BIT        0x00000400
-#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
-#define GL_ATOMIC_COUNTER_BARRIER_BIT     0x00001000
-#define GL_ALL_BARRIER_BITS               0xFFFFFFFF
-#define GL_MAX_IMAGE_UNITS                0x8F38
-#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
-#define GL_IMAGE_BINDING_NAME             0x8F3A
-#define GL_IMAGE_BINDING_LEVEL            0x8F3B
-#define GL_IMAGE_BINDING_LAYERED          0x8F3C
-#define GL_IMAGE_BINDING_LAYER            0x8F3D
-#define GL_IMAGE_BINDING_ACCESS           0x8F3E
-#define GL_IMAGE_1D                       0x904C
-#define GL_IMAGE_2D                       0x904D
-#define GL_IMAGE_3D                       0x904E
-#define GL_IMAGE_2D_RECT                  0x904F
-#define GL_IMAGE_CUBE                     0x9050
-#define GL_IMAGE_BUFFER                   0x9051
-#define GL_IMAGE_1D_ARRAY                 0x9052
-#define GL_IMAGE_2D_ARRAY                 0x9053
-#define GL_IMAGE_CUBE_MAP_ARRAY           0x9054
-#define GL_IMAGE_2D_MULTISAMPLE           0x9055
-#define GL_IMAGE_2D_MULTISAMPLE_ARRAY     0x9056
-#define GL_INT_IMAGE_1D                   0x9057
-#define GL_INT_IMAGE_2D                   0x9058
-#define GL_INT_IMAGE_3D                   0x9059
-#define GL_INT_IMAGE_2D_RECT              0x905A
-#define GL_INT_IMAGE_CUBE                 0x905B
-#define GL_INT_IMAGE_BUFFER               0x905C
-#define GL_INT_IMAGE_1D_ARRAY             0x905D
-#define GL_INT_IMAGE_2D_ARRAY             0x905E
-#define GL_INT_IMAGE_CUBE_MAP_ARRAY       0x905F
-#define GL_INT_IMAGE_2D_MULTISAMPLE       0x9060
-#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
-#define GL_UNSIGNED_INT_IMAGE_1D          0x9062
-#define GL_UNSIGNED_INT_IMAGE_2D          0x9063
-#define GL_UNSIGNED_INT_IMAGE_3D          0x9064
-#define GL_UNSIGNED_INT_IMAGE_2D_RECT     0x9065
-#define GL_UNSIGNED_INT_IMAGE_CUBE        0x9066
-#define GL_UNSIGNED_INT_IMAGE_BUFFER      0x9067
-#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY    0x9068
-#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY    0x9069
-#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
-#define GL_MAX_IMAGE_SAMPLES              0x906D
-#define GL_IMAGE_BINDING_FORMAT           0x906E
-#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
-#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
-#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
-#define GL_MAX_VERTEX_IMAGE_UNIFORMS      0x90CA
-#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
-#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
-#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS    0x90CD
-#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS    0x90CE
-#define GL_MAX_COMBINED_IMAGE_UNIFORMS    0x90CF
-#define GL_COMPRESSED_RGBA_BPTC_UNORM     0x8E8C
-#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
-#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
-#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
-#define GL_TEXTURE_IMMUTABLE_FORMAT       0x912F
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
-typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
-typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
-GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
-GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
-GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
-GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
-GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers);
-GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount);
-GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
-#endif
-#endif /* GL_VERSION_4_2 */
-
-#ifndef GL_VERSION_4_3
-#define GL_VERSION_4_3 1
-typedef void (APIENTRY  *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_NUM_SHADING_LANGUAGE_VERSIONS  0x82E9
-#define GL_VERTEX_ATTRIB_ARRAY_LONG       0x874E
-#define GL_COMPRESSED_RGB8_ETC2           0x9274
-#define GL_COMPRESSED_SRGB8_ETC2          0x9275
-#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
-#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
-#define GL_COMPRESSED_RGBA8_ETC2_EAC      0x9278
-#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
-#define GL_COMPRESSED_R11_EAC             0x9270
-#define GL_COMPRESSED_SIGNED_R11_EAC      0x9271
-#define GL_COMPRESSED_RG11_EAC            0x9272
-#define GL_COMPRESSED_SIGNED_RG11_EAC     0x9273
-#define GL_PRIMITIVE_RESTART_FIXED_INDEX  0x8D69
-#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
-#define GL_MAX_ELEMENT_INDEX              0x8D6B
-#define GL_COMPUTE_SHADER                 0x91B9
-#define GL_MAX_COMPUTE_UNIFORM_BLOCKS     0x91BB
-#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
-#define GL_MAX_COMPUTE_IMAGE_UNIFORMS     0x91BD
-#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
-#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
-#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
-#define GL_MAX_COMPUTE_ATOMIC_COUNTERS    0x8265
-#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
-#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
-#define GL_MAX_COMPUTE_WORK_GROUP_COUNT   0x91BE
-#define GL_MAX_COMPUTE_WORK_GROUP_SIZE    0x91BF
-#define GL_COMPUTE_WORK_GROUP_SIZE        0x8267
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
-#define GL_DISPATCH_INDIRECT_BUFFER       0x90EE
-#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS       0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION        0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM      0x8245
-#define GL_DEBUG_SOURCE_API               0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM     0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER   0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY       0x8249
-#define GL_DEBUG_SOURCE_APPLICATION       0x824A
-#define GL_DEBUG_SOURCE_OTHER             0x824B
-#define GL_DEBUG_TYPE_ERROR               0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR  0x824E
-#define GL_DEBUG_TYPE_PORTABILITY         0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE         0x8250
-#define GL_DEBUG_TYPE_OTHER               0x8251
-#define GL_MAX_DEBUG_MESSAGE_LENGTH       0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES      0x9144
-#define GL_DEBUG_LOGGED_MESSAGES          0x9145
-#define GL_DEBUG_SEVERITY_HIGH            0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM          0x9147
-#define GL_DEBUG_SEVERITY_LOW             0x9148
-#define GL_DEBUG_TYPE_MARKER              0x8268
-#define GL_DEBUG_TYPE_PUSH_GROUP          0x8269
-#define GL_DEBUG_TYPE_POP_GROUP           0x826A
-#define GL_DEBUG_SEVERITY_NOTIFICATION    0x826B
-#define GL_MAX_DEBUG_GROUP_STACK_DEPTH    0x826C
-#define GL_DEBUG_GROUP_STACK_DEPTH        0x826D
-#define GL_BUFFER                         0x82E0
-#define GL_SHADER                         0x82E1
-#define GL_PROGRAM                        0x82E2
-#define GL_QUERY                          0x82E3
-#define GL_PROGRAM_PIPELINE               0x82E4
-#define GL_SAMPLER                        0x82E6
-#define GL_MAX_LABEL_LENGTH               0x82E8
-#define GL_DEBUG_OUTPUT                   0x92E0
-#define GL_CONTEXT_FLAG_DEBUG_BIT         0x00000002
-#define GL_MAX_UNIFORM_LOCATIONS          0x826E
-#define GL_FRAMEBUFFER_DEFAULT_WIDTH      0x9310
-#define GL_FRAMEBUFFER_DEFAULT_HEIGHT     0x9311
-#define GL_FRAMEBUFFER_DEFAULT_LAYERS     0x9312
-#define GL_FRAMEBUFFER_DEFAULT_SAMPLES    0x9313
-#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
-#define GL_MAX_FRAMEBUFFER_WIDTH          0x9315
-#define GL_MAX_FRAMEBUFFER_HEIGHT         0x9316
-#define GL_MAX_FRAMEBUFFER_LAYERS         0x9317
-#define GL_MAX_FRAMEBUFFER_SAMPLES        0x9318
-#define GL_INTERNALFORMAT_SUPPORTED       0x826F
-#define GL_INTERNALFORMAT_PREFERRED       0x8270
-#define GL_INTERNALFORMAT_RED_SIZE        0x8271
-#define GL_INTERNALFORMAT_GREEN_SIZE      0x8272
-#define GL_INTERNALFORMAT_BLUE_SIZE       0x8273
-#define GL_INTERNALFORMAT_ALPHA_SIZE      0x8274
-#define GL_INTERNALFORMAT_DEPTH_SIZE      0x8275
-#define GL_INTERNALFORMAT_STENCIL_SIZE    0x8276
-#define GL_INTERNALFORMAT_SHARED_SIZE     0x8277
-#define GL_INTERNALFORMAT_RED_TYPE        0x8278
-#define GL_INTERNALFORMAT_GREEN_TYPE      0x8279
-#define GL_INTERNALFORMAT_BLUE_TYPE       0x827A
-#define GL_INTERNALFORMAT_ALPHA_TYPE      0x827B
-#define GL_INTERNALFORMAT_DEPTH_TYPE      0x827C
-#define GL_INTERNALFORMAT_STENCIL_TYPE    0x827D
-#define GL_MAX_WIDTH                      0x827E
-#define GL_MAX_HEIGHT                     0x827F
-#define GL_MAX_DEPTH                      0x8280
-#define GL_MAX_LAYERS                     0x8281
-#define GL_MAX_COMBINED_DIMENSIONS        0x8282
-#define GL_COLOR_COMPONENTS               0x8283
-#define GL_DEPTH_COMPONENTS               0x8284
-#define GL_STENCIL_COMPONENTS             0x8285
-#define GL_COLOR_RENDERABLE               0x8286
-#define GL_DEPTH_RENDERABLE               0x8287
-#define GL_STENCIL_RENDERABLE             0x8288
-#define GL_FRAMEBUFFER_RENDERABLE         0x8289
-#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
-#define GL_FRAMEBUFFER_BLEND              0x828B
-#define GL_READ_PIXELS                    0x828C
-#define GL_READ_PIXELS_FORMAT             0x828D
-#define GL_READ_PIXELS_TYPE               0x828E
-#define GL_TEXTURE_IMAGE_FORMAT           0x828F
-#define GL_TEXTURE_IMAGE_TYPE             0x8290
-#define GL_GET_TEXTURE_IMAGE_FORMAT       0x8291
-#define GL_GET_TEXTURE_IMAGE_TYPE         0x8292
-#define GL_MIPMAP                         0x8293
-#define GL_MANUAL_GENERATE_MIPMAP         0x8294
-#define GL_AUTO_GENERATE_MIPMAP           0x8295
-#define GL_COLOR_ENCODING                 0x8296
-#define GL_SRGB_READ                      0x8297
-#define GL_SRGB_WRITE                     0x8298
-#define GL_FILTER                         0x829A
-#define GL_VERTEX_TEXTURE                 0x829B
-#define GL_TESS_CONTROL_TEXTURE           0x829C
-#define GL_TESS_EVALUATION_TEXTURE        0x829D
-#define GL_GEOMETRY_TEXTURE               0x829E
-#define GL_FRAGMENT_TEXTURE               0x829F
-#define GL_COMPUTE_TEXTURE                0x82A0
-#define GL_TEXTURE_SHADOW                 0x82A1
-#define GL_TEXTURE_GATHER                 0x82A2
-#define GL_TEXTURE_GATHER_SHADOW          0x82A3
-#define GL_SHADER_IMAGE_LOAD              0x82A4
-#define GL_SHADER_IMAGE_STORE             0x82A5
-#define GL_SHADER_IMAGE_ATOMIC            0x82A6
-#define GL_IMAGE_TEXEL_SIZE               0x82A7
-#define GL_IMAGE_COMPATIBILITY_CLASS      0x82A8
-#define GL_IMAGE_PIXEL_FORMAT             0x82A9
-#define GL_IMAGE_PIXEL_TYPE               0x82AA
-#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
-#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
-#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
-#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
-#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
-#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
-#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE  0x82B3
-#define GL_CLEAR_BUFFER                   0x82B4
-#define GL_TEXTURE_VIEW                   0x82B5
-#define GL_VIEW_COMPATIBILITY_CLASS       0x82B6
-#define GL_FULL_SUPPORT                   0x82B7
-#define GL_CAVEAT_SUPPORT                 0x82B8
-#define GL_IMAGE_CLASS_4_X_32             0x82B9
-#define GL_IMAGE_CLASS_2_X_32             0x82BA
-#define GL_IMAGE_CLASS_1_X_32             0x82BB
-#define GL_IMAGE_CLASS_4_X_16             0x82BC
-#define GL_IMAGE_CLASS_2_X_16             0x82BD
-#define GL_IMAGE_CLASS_1_X_16             0x82BE
-#define GL_IMAGE_CLASS_4_X_8              0x82BF
-#define GL_IMAGE_CLASS_2_X_8              0x82C0
-#define GL_IMAGE_CLASS_1_X_8              0x82C1
-#define GL_IMAGE_CLASS_11_11_10           0x82C2
-#define GL_IMAGE_CLASS_10_10_10_2         0x82C3
-#define GL_VIEW_CLASS_128_BITS            0x82C4
-#define GL_VIEW_CLASS_96_BITS             0x82C5
-#define GL_VIEW_CLASS_64_BITS             0x82C6
-#define GL_VIEW_CLASS_48_BITS             0x82C7
-#define GL_VIEW_CLASS_32_BITS             0x82C8
-#define GL_VIEW_CLASS_24_BITS             0x82C9
-#define GL_VIEW_CLASS_16_BITS             0x82CA
-#define GL_VIEW_CLASS_8_BITS              0x82CB
-#define GL_VIEW_CLASS_S3TC_DXT1_RGB       0x82CC
-#define GL_VIEW_CLASS_S3TC_DXT1_RGBA      0x82CD
-#define GL_VIEW_CLASS_S3TC_DXT3_RGBA      0x82CE
-#define GL_VIEW_CLASS_S3TC_DXT5_RGBA      0x82CF
-#define GL_VIEW_CLASS_RGTC1_RED           0x82D0
-#define GL_VIEW_CLASS_RGTC2_RG            0x82D1
-#define GL_VIEW_CLASS_BPTC_UNORM          0x82D2
-#define GL_VIEW_CLASS_BPTC_FLOAT          0x82D3
-#define GL_UNIFORM                        0x92E1
-#define GL_UNIFORM_BLOCK                  0x92E2
-#define GL_PROGRAM_INPUT                  0x92E3
-#define GL_PROGRAM_OUTPUT                 0x92E4
-#define GL_BUFFER_VARIABLE                0x92E5
-#define GL_SHADER_STORAGE_BLOCK           0x92E6
-#define GL_VERTEX_SUBROUTINE              0x92E8
-#define GL_TESS_CONTROL_SUBROUTINE        0x92E9
-#define GL_TESS_EVALUATION_SUBROUTINE     0x92EA
-#define GL_GEOMETRY_SUBROUTINE            0x92EB
-#define GL_FRAGMENT_SUBROUTINE            0x92EC
-#define GL_COMPUTE_SUBROUTINE             0x92ED
-#define GL_VERTEX_SUBROUTINE_UNIFORM      0x92EE
-#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
-#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
-#define GL_GEOMETRY_SUBROUTINE_UNIFORM    0x92F1
-#define GL_FRAGMENT_SUBROUTINE_UNIFORM    0x92F2
-#define GL_COMPUTE_SUBROUTINE_UNIFORM     0x92F3
-#define GL_TRANSFORM_FEEDBACK_VARYING     0x92F4
-#define GL_ACTIVE_RESOURCES               0x92F5
-#define GL_MAX_NAME_LENGTH                0x92F6
-#define GL_MAX_NUM_ACTIVE_VARIABLES       0x92F7
-#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
-#define GL_NAME_LENGTH                    0x92F9
-#define GL_TYPE                           0x92FA
-#define GL_ARRAY_SIZE                     0x92FB
-#define GL_OFFSET                         0x92FC
-#define GL_BLOCK_INDEX                    0x92FD
-#define GL_ARRAY_STRIDE                   0x92FE
-#define GL_MATRIX_STRIDE                  0x92FF
-#define GL_IS_ROW_MAJOR                   0x9300
-#define GL_ATOMIC_COUNTER_BUFFER_INDEX    0x9301
-#define GL_BUFFER_BINDING                 0x9302
-#define GL_BUFFER_DATA_SIZE               0x9303
-#define GL_NUM_ACTIVE_VARIABLES           0x9304
-#define GL_ACTIVE_VARIABLES               0x9305
-#define GL_REFERENCED_BY_VERTEX_SHADER    0x9306
-#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
-#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
-#define GL_REFERENCED_BY_GEOMETRY_SHADER  0x9309
-#define GL_REFERENCED_BY_FRAGMENT_SHADER  0x930A
-#define GL_REFERENCED_BY_COMPUTE_SHADER   0x930B
-#define GL_TOP_LEVEL_ARRAY_SIZE           0x930C
-#define GL_TOP_LEVEL_ARRAY_STRIDE         0x930D
-#define GL_LOCATION                       0x930E
-#define GL_LOCATION_INDEX                 0x930F
-#define GL_IS_PER_PATCH                   0x92E7
-#define GL_SHADER_STORAGE_BUFFER          0x90D2
-#define GL_SHADER_STORAGE_BUFFER_BINDING  0x90D3
-#define GL_SHADER_STORAGE_BUFFER_START    0x90D4
-#define GL_SHADER_STORAGE_BUFFER_SIZE     0x90D5
-#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
-#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
-#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
-#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
-#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
-#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
-#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
-#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
-#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE  0x90DE
-#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
-#define GL_SHADER_STORAGE_BARRIER_BIT     0x00002000
-#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
-#define GL_DEPTH_STENCIL_TEXTURE_MODE     0x90EA
-#define GL_TEXTURE_BUFFER_OFFSET          0x919D
-#define GL_TEXTURE_BUFFER_SIZE            0x919E
-#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
-#define GL_TEXTURE_VIEW_MIN_LEVEL         0x82DB
-#define GL_TEXTURE_VIEW_NUM_LEVELS        0x82DC
-#define GL_TEXTURE_VIEW_MIN_LAYER         0x82DD
-#define GL_TEXTURE_VIEW_NUM_LAYERS        0x82DE
-#define GL_TEXTURE_IMMUTABLE_LEVELS       0x82DF
-#define GL_VERTEX_ATTRIB_BINDING          0x82D4
-#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET  0x82D5
-#define GL_VERTEX_BINDING_DIVISOR         0x82D6
-#define GL_VERTEX_BINDING_OFFSET          0x82D7
-#define GL_VERTEX_BINDING_STRIDE          0x82D8
-#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
-#define GL_MAX_VERTEX_ATTRIB_BINDINGS     0x82DA
-#define GL_VERTEX_BINDING_BUFFER          0x8F4F
-#define GL_DISPLAY_LIST                   0x82E7
-typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
-typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
-typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
-typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
-typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
-typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
-typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
-typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void);
-typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
-GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect);
-GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
-GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
-GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level);
-GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer);
-GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
-GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
-GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
-GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
-GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);
-GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);
-GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-GLAPI void APIENTRY glPopDebugGroup (void);
-GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-#endif /* GL_VERSION_4_3 */
-
-#ifndef GL_VERSION_4_4
-#define GL_VERSION_4_4 1
-#define GL_MAX_VERTEX_ATTRIB_STRIDE       0x82E5
-#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
-#define GL_TEXTURE_BUFFER_BINDING         0x8C2A
-#define GL_MAP_PERSISTENT_BIT             0x0040
-#define GL_MAP_COHERENT_BIT               0x0080
-#define GL_DYNAMIC_STORAGE_BIT            0x0100
-#define GL_CLIENT_STORAGE_BIT             0x0200
-#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
-#define GL_BUFFER_IMMUTABLE_STORAGE       0x821F
-#define GL_BUFFER_STORAGE_FLAGS           0x8220
-#define GL_CLEAR_TEXTURE                  0x9365
-#define GL_LOCATION_COMPONENT             0x934A
-#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
-#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
-#define GL_QUERY_BUFFER                   0x9192
-#define GL_QUERY_BUFFER_BARRIER_BIT       0x00008000
-#define GL_QUERY_BUFFER_BINDING           0x9193
-#define GL_QUERY_RESULT_NO_WAIT           0x9194
-#define GL_MIRROR_CLAMP_TO_EDGE           0x8743
-typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
-typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
-typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
-typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
-typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
-GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
-GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
-GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures);
-GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers);
-GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures);
-GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-#endif
-#endif /* GL_VERSION_4_4 */
-
-#ifndef GL_ARB_ES2_compatibility
-#define GL_ARB_ES2_compatibility 1
-#endif /* GL_ARB_ES2_compatibility */
-
-#ifndef GL_ARB_ES3_compatibility
-#define GL_ARB_ES3_compatibility 1
-#endif /* GL_ARB_ES3_compatibility */
-
-#ifndef GL_ARB_arrays_of_arrays
-#define GL_ARB_arrays_of_arrays 1
-#endif /* GL_ARB_arrays_of_arrays */
-
-#ifndef GL_ARB_base_instance
-#define GL_ARB_base_instance 1
-#endif /* GL_ARB_base_instance */
-
-#ifndef GL_ARB_bindless_texture
-#define GL_ARB_bindless_texture 1
-typedef uint64_t GLuint64EXT;
-#define GL_UNSIGNED_INT64_ARB             0x140F
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);
-typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture);
-GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler);
-GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle);
-GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access);
-GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value);
-GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value);
-GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle);
-GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x);
-GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params);
-#endif
-#endif /* GL_ARB_bindless_texture */
-
-#ifndef GL_ARB_blend_func_extended
-#define GL_ARB_blend_func_extended 1
-#endif /* GL_ARB_blend_func_extended */
-
-#ifndef GL_ARB_buffer_storage
-#define GL_ARB_buffer_storage 1
-#endif /* GL_ARB_buffer_storage */
-
-#ifndef GL_ARB_cl_event
-#define GL_ARB_cl_event 1
-struct _cl_context;
-struct _cl_event;
-#define GL_SYNC_CL_EVENT_ARB              0x8240
-#define GL_SYNC_CL_EVENT_COMPLETE_ARB     0x8241
-typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
-#endif
-#endif /* GL_ARB_cl_event */
-
-#ifndef GL_ARB_clear_buffer_object
-#define GL_ARB_clear_buffer_object 1
-#endif /* GL_ARB_clear_buffer_object */
-
-#ifndef GL_ARB_clear_texture
-#define GL_ARB_clear_texture 1
-#endif /* GL_ARB_clear_texture */
-
-#ifndef GL_ARB_color_buffer_float
-#define GL_ARB_color_buffer_float 1
-#define GL_RGBA_FLOAT_MODE_ARB            0x8820
-#define GL_CLAMP_VERTEX_COLOR_ARB         0x891A
-#define GL_CLAMP_FRAGMENT_COLOR_ARB       0x891B
-#define GL_CLAMP_READ_COLOR_ARB           0x891C
-#define GL_FIXED_ONLY_ARB                 0x891D
-typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp);
-#endif
-#endif /* GL_ARB_color_buffer_float */
-
-#ifndef GL_ARB_compatibility
-#define GL_ARB_compatibility 1
-#endif /* GL_ARB_compatibility */
-
-#ifndef GL_ARB_compressed_texture_pixel_storage
-#define GL_ARB_compressed_texture_pixel_storage 1
-#endif /* GL_ARB_compressed_texture_pixel_storage */
-
-#ifndef GL_ARB_compute_shader
-#define GL_ARB_compute_shader 1
-#define GL_COMPUTE_SHADER_BIT             0x00000020
-#endif /* GL_ARB_compute_shader */
-
-#ifndef GL_ARB_compute_variable_group_size
-#define GL_ARB_compute_variable_group_size 1
-#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
-#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
-#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
-#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
-#endif
-#endif /* GL_ARB_compute_variable_group_size */
-
-#ifndef GL_ARB_conservative_depth
-#define GL_ARB_conservative_depth 1
-#endif /* GL_ARB_conservative_depth */
-
-#ifndef GL_ARB_copy_buffer
-#define GL_ARB_copy_buffer 1
-#define GL_COPY_READ_BUFFER_BINDING       0x8F36
-#define GL_COPY_WRITE_BUFFER_BINDING      0x8F37
-#endif /* GL_ARB_copy_buffer */
-
-#ifndef GL_ARB_copy_image
-#define GL_ARB_copy_image 1
-#endif /* GL_ARB_copy_image */
-
-#ifndef GL_ARB_debug_output
-#define GL_ARB_debug_output 1
-typedef void (APIENTRY  *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB   0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION_ARB    0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM_ARB  0x8245
-#define GL_DEBUG_SOURCE_API_ARB           0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB   0x8249
-#define GL_DEBUG_SOURCE_APPLICATION_ARB   0x824A
-#define GL_DEBUG_SOURCE_OTHER_ARB         0x824B
-#define GL_DEBUG_TYPE_ERROR_ARB           0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
-#define GL_DEBUG_TYPE_PORTABILITY_ARB     0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE_ARB     0x8250
-#define GL_DEBUG_TYPE_OTHER_ARB           0x8251
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB   0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB  0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_ARB      0x9145
-#define GL_DEBUG_SEVERITY_HIGH_ARB        0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_ARB      0x9147
-#define GL_DEBUG_SEVERITY_LOW_ARB         0x9148
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-#endif
-#endif /* GL_ARB_debug_output */
-
-#ifndef GL_ARB_depth_buffer_float
-#define GL_ARB_depth_buffer_float 1
-#endif /* GL_ARB_depth_buffer_float */
-
-#ifndef GL_ARB_depth_clamp
-#define GL_ARB_depth_clamp 1
-#endif /* GL_ARB_depth_clamp */
-
-#ifndef GL_ARB_depth_texture
-#define GL_ARB_depth_texture 1
-#define GL_DEPTH_COMPONENT16_ARB          0x81A5
-#define GL_DEPTH_COMPONENT24_ARB          0x81A6
-#define GL_DEPTH_COMPONENT32_ARB          0x81A7
-#define GL_TEXTURE_DEPTH_SIZE_ARB         0x884A
-#define GL_DEPTH_TEXTURE_MODE_ARB         0x884B
-#endif /* GL_ARB_depth_texture */
-
-#ifndef GL_ARB_draw_buffers
-#define GL_ARB_draw_buffers 1
-#define GL_MAX_DRAW_BUFFERS_ARB           0x8824
-#define GL_DRAW_BUFFER0_ARB               0x8825
-#define GL_DRAW_BUFFER1_ARB               0x8826
-#define GL_DRAW_BUFFER2_ARB               0x8827
-#define GL_DRAW_BUFFER3_ARB               0x8828
-#define GL_DRAW_BUFFER4_ARB               0x8829
-#define GL_DRAW_BUFFER5_ARB               0x882A
-#define GL_DRAW_BUFFER6_ARB               0x882B
-#define GL_DRAW_BUFFER7_ARB               0x882C
-#define GL_DRAW_BUFFER8_ARB               0x882D
-#define GL_DRAW_BUFFER9_ARB               0x882E
-#define GL_DRAW_BUFFER10_ARB              0x882F
-#define GL_DRAW_BUFFER11_ARB              0x8830
-#define GL_DRAW_BUFFER12_ARB              0x8831
-#define GL_DRAW_BUFFER13_ARB              0x8832
-#define GL_DRAW_BUFFER14_ARB              0x8833
-#define GL_DRAW_BUFFER15_ARB              0x8834
-typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs);
-#endif
-#endif /* GL_ARB_draw_buffers */
-
-#ifndef GL_ARB_draw_buffers_blend
-#define GL_ARB_draw_buffers_blend 1
-typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#endif
-#endif /* GL_ARB_draw_buffers_blend */
-
-#ifndef GL_ARB_draw_elements_base_vertex
-#define GL_ARB_draw_elements_base_vertex 1
-#endif /* GL_ARB_draw_elements_base_vertex */
-
-#ifndef GL_ARB_draw_indirect
-#define GL_ARB_draw_indirect 1
-#endif /* GL_ARB_draw_indirect */
-
-#ifndef GL_ARB_draw_instanced
-#define GL_ARB_draw_instanced 1
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#endif
-#endif /* GL_ARB_draw_instanced */
-
-#ifndef GL_ARB_enhanced_layouts
-#define GL_ARB_enhanced_layouts 1
-#endif /* GL_ARB_enhanced_layouts */
-
-#ifndef GL_ARB_explicit_attrib_location
-#define GL_ARB_explicit_attrib_location 1
-#endif /* GL_ARB_explicit_attrib_location */
-
-#ifndef GL_ARB_explicit_uniform_location
-#define GL_ARB_explicit_uniform_location 1
-#endif /* GL_ARB_explicit_uniform_location */
-
-#ifndef GL_ARB_fragment_coord_conventions
-#define GL_ARB_fragment_coord_conventions 1
-#endif /* GL_ARB_fragment_coord_conventions */
-
-#ifndef GL_ARB_fragment_layer_viewport
-#define GL_ARB_fragment_layer_viewport 1
-#endif /* GL_ARB_fragment_layer_viewport */
-
-#ifndef GL_ARB_fragment_program
-#define GL_ARB_fragment_program 1
-#define GL_FRAGMENT_PROGRAM_ARB           0x8804
-#define GL_PROGRAM_FORMAT_ASCII_ARB       0x8875
-#define GL_PROGRAM_LENGTH_ARB             0x8627
-#define GL_PROGRAM_FORMAT_ARB             0x8876
-#define GL_PROGRAM_BINDING_ARB            0x8677
-#define GL_PROGRAM_INSTRUCTIONS_ARB       0x88A0
-#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB   0x88A1
-#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
-#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
-#define GL_PROGRAM_TEMPORARIES_ARB        0x88A4
-#define GL_MAX_PROGRAM_TEMPORARIES_ARB    0x88A5
-#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
-#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
-#define GL_PROGRAM_PARAMETERS_ARB         0x88A8
-#define GL_MAX_PROGRAM_PARAMETERS_ARB     0x88A9
-#define GL_PROGRAM_NATIVE_PARAMETERS_ARB  0x88AA
-#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
-#define GL_PROGRAM_ATTRIBS_ARB            0x88AC
-#define GL_MAX_PROGRAM_ATTRIBS_ARB        0x88AD
-#define GL_PROGRAM_NATIVE_ATTRIBS_ARB     0x88AE
-#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
-#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
-#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
-#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
-#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB   0x8805
-#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB   0x8806
-#define GL_PROGRAM_TEX_INDIRECTIONS_ARB   0x8807
-#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
-#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
-#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
-#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
-#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
-#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
-#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
-#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
-#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
-#define GL_PROGRAM_STRING_ARB             0x8628
-#define GL_PROGRAM_ERROR_POSITION_ARB     0x864B
-#define GL_CURRENT_MATRIX_ARB             0x8641
-#define GL_TRANSPOSE_CURRENT_MATRIX_ARB   0x88B7
-#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
-#define GL_MAX_PROGRAM_MATRICES_ARB       0x862F
-#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
-#define GL_MAX_TEXTURE_COORDS_ARB         0x8871
-#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB    0x8872
-#define GL_PROGRAM_ERROR_STRING_ARB       0x8874
-#define GL_MATRIX0_ARB                    0x88C0
-#define GL_MATRIX1_ARB                    0x88C1
-#define GL_MATRIX2_ARB                    0x88C2
-#define GL_MATRIX3_ARB                    0x88C3
-#define GL_MATRIX4_ARB                    0x88C4
-#define GL_MATRIX5_ARB                    0x88C5
-#define GL_MATRIX6_ARB                    0x88C6
-#define GL_MATRIX7_ARB                    0x88C7
-#define GL_MATRIX8_ARB                    0x88C8
-#define GL_MATRIX9_ARB                    0x88C9
-#define GL_MATRIX10_ARB                   0x88CA
-#define GL_MATRIX11_ARB                   0x88CB
-#define GL_MATRIX12_ARB                   0x88CC
-#define GL_MATRIX13_ARB                   0x88CD
-#define GL_MATRIX14_ARB                   0x88CE
-#define GL_MATRIX15_ARB                   0x88CF
-#define GL_MATRIX16_ARB                   0x88D0
-#define GL_MATRIX17_ARB                   0x88D1
-#define GL_MATRIX18_ARB                   0x88D2
-#define GL_MATRIX19_ARB                   0x88D3
-#define GL_MATRIX20_ARB                   0x88D4
-#define GL_MATRIX21_ARB                   0x88D5
-#define GL_MATRIX22_ARB                   0x88D6
-#define GL_MATRIX23_ARB                   0x88D7
-#define GL_MATRIX24_ARB                   0x88D8
-#define GL_MATRIX25_ARB                   0x88D9
-#define GL_MATRIX26_ARB                   0x88DA
-#define GL_MATRIX27_ARB                   0x88DB
-#define GL_MATRIX28_ARB                   0x88DC
-#define GL_MATRIX29_ARB                   0x88DD
-#define GL_MATRIX30_ARB                   0x88DE
-#define GL_MATRIX31_ARB                   0x88DF
-typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string);
-typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
-typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string);
-GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program);
-GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs);
-GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs);
-GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, void *string);
-GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program);
-#endif
-#endif /* GL_ARB_fragment_program */
-
-#ifndef GL_ARB_fragment_program_shadow
-#define GL_ARB_fragment_program_shadow 1
-#endif /* GL_ARB_fragment_program_shadow */
-
-#ifndef GL_ARB_fragment_shader
-#define GL_ARB_fragment_shader 1
-#define GL_FRAGMENT_SHADER_ARB            0x8B30
-#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
-#endif /* GL_ARB_fragment_shader */
-
-#ifndef GL_ARB_framebuffer_no_attachments
-#define GL_ARB_framebuffer_no_attachments 1
-#endif /* GL_ARB_framebuffer_no_attachments */
-
-#ifndef GL_ARB_framebuffer_object
-#define GL_ARB_framebuffer_object 1
-#endif /* GL_ARB_framebuffer_object */
-
-#ifndef GL_ARB_framebuffer_sRGB
-#define GL_ARB_framebuffer_sRGB 1
-#endif /* GL_ARB_framebuffer_sRGB */
-
-#ifndef GL_KHR_context_flush_control
-#define GL_CONTEXT_RELEASE_BEHAVIOR       0x82FB
-#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
-#endif /* GL_KHR_context_flush_control */
-
-#ifndef GL_ARB_geometry_shader4
-#define GL_ARB_geometry_shader4 1
-#define GL_LINES_ADJACENCY_ARB            0x000A
-#define GL_LINE_STRIP_ADJACENCY_ARB       0x000B
-#define GL_TRIANGLES_ADJACENCY_ARB        0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY_ARB   0x000D
-#define GL_PROGRAM_POINT_SIZE_ARB         0x8642
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
-#define GL_GEOMETRY_SHADER_ARB            0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT_ARB      0x8DDA
-#define GL_GEOMETRY_INPUT_TYPE_ARB        0x8DDB
-#define GL_GEOMETRY_OUTPUT_TYPE_ARB       0x8DDC
-#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
-#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
-GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#endif
-#endif /* GL_ARB_geometry_shader4 */
-
-#ifndef GL_ARB_get_program_binary
-#define GL_ARB_get_program_binary 1
-#endif /* GL_ARB_get_program_binary */
-
-#ifndef GL_ARB_gpu_shader5
-#define GL_ARB_gpu_shader5 1
-#endif /* GL_ARB_gpu_shader5 */
-
-#ifndef GL_ARB_gpu_shader_fp64
-#define GL_ARB_gpu_shader_fp64 1
-#endif /* GL_ARB_gpu_shader_fp64 */
-
-#ifndef GL_ARB_half_float_pixel
-#define GL_ARB_half_float_pixel 1
-typedef unsigned short GLhalfARB;
-#define GL_HALF_FLOAT_ARB                 0x140B
-#endif /* GL_ARB_half_float_pixel */
-
-#ifndef GL_ARB_half_float_vertex
-#define GL_ARB_half_float_vertex 1
-#endif /* GL_ARB_half_float_vertex */
-
-#ifndef GL_ARB_imaging
-#define GL_ARB_imaging 1
-#define GL_BLEND_COLOR                    0x8005
-#define GL_BLEND_EQUATION                 0x8009
-#define GL_CONVOLUTION_1D                 0x8010
-#define GL_CONVOLUTION_2D                 0x8011
-#define GL_SEPARABLE_2D                   0x8012
-#define GL_CONVOLUTION_BORDER_MODE        0x8013
-#define GL_CONVOLUTION_FILTER_SCALE       0x8014
-#define GL_CONVOLUTION_FILTER_BIAS        0x8015
-#define GL_REDUCE                         0x8016
-#define GL_CONVOLUTION_FORMAT             0x8017
-#define GL_CONVOLUTION_WIDTH              0x8018
-#define GL_CONVOLUTION_HEIGHT             0x8019
-#define GL_MAX_CONVOLUTION_WIDTH          0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT         0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE     0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE   0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE    0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE   0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS      0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS    0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS     0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS    0x8023
-#define GL_HISTOGRAM                      0x8024
-#define GL_PROXY_HISTOGRAM                0x8025
-#define GL_HISTOGRAM_WIDTH                0x8026
-#define GL_HISTOGRAM_FORMAT               0x8027
-#define GL_HISTOGRAM_RED_SIZE             0x8028
-#define GL_HISTOGRAM_GREEN_SIZE           0x8029
-#define GL_HISTOGRAM_BLUE_SIZE            0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE           0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE       0x802C
-#define GL_HISTOGRAM_SINK                 0x802D
-#define GL_MINMAX                         0x802E
-#define GL_MINMAX_FORMAT                  0x802F
-#define GL_MINMAX_SINK                    0x8030
-#define GL_TABLE_TOO_LARGE                0x8031
-#define GL_COLOR_MATRIX                   0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH       0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH   0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE    0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE  0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE   0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE  0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS     0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS   0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS    0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS   0x80BB
-#define GL_COLOR_TABLE                    0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE   0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE  0x80D2
-#define GL_PROXY_COLOR_TABLE              0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
-#define GL_COLOR_TABLE_SCALE              0x80D6
-#define GL_COLOR_TABLE_BIAS               0x80D7
-#define GL_COLOR_TABLE_FORMAT             0x80D8
-#define GL_COLOR_TABLE_WIDTH              0x80D9
-#define GL_COLOR_TABLE_RED_SIZE           0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE         0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE          0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE         0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE     0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE     0x80DF
-#define GL_CONSTANT_BORDER                0x8151
-#define GL_REPLICATE_BORDER               0x8153
-#define GL_CONVOLUTION_BORDER_COLOR       0x8154
-typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, void *table);
-GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);
-GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params);
-GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image);
-GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glResetHistogram (GLenum target);
-GLAPI void APIENTRY glResetMinmax (GLenum target);
-#endif
-#endif /* GL_ARB_imaging */
-
-#ifndef GL_ARB_indirect_parameters
-#define GL_ARB_indirect_parameters 1
-#define GL_PARAMETER_BUFFER_ARB           0x80EE
-#define GL_PARAMETER_BUFFER_BINDING_ARB   0x80EF
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-#endif
-#endif /* GL_ARB_indirect_parameters */
-
-#ifndef GL_ARB_instanced_arrays
-#define GL_ARB_instanced_arrays 1
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
-typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
-#endif
-#endif /* GL_ARB_instanced_arrays */
-
-#ifndef GL_ARB_internalformat_query
-#define GL_ARB_internalformat_query 1
-#endif /* GL_ARB_internalformat_query */
-
-#ifndef GL_ARB_internalformat_query2
-#define GL_ARB_internalformat_query2 1
-#define GL_SRGB_DECODE_ARB                0x8299
-#endif /* GL_ARB_internalformat_query2 */
-
-#ifndef GL_ARB_invalidate_subdata
-#define GL_ARB_invalidate_subdata 1
-#endif /* GL_ARB_invalidate_subdata */
-
-#ifndef GL_ARB_map_buffer_alignment
-#define GL_ARB_map_buffer_alignment 1
-#endif /* GL_ARB_map_buffer_alignment */
-
-#ifndef GL_ARB_map_buffer_range
-#define GL_ARB_map_buffer_range 1
-#endif /* GL_ARB_map_buffer_range */
-
-#ifndef GL_ARB_matrix_palette
-#define GL_ARB_matrix_palette 1
-#define GL_MATRIX_PALETTE_ARB             0x8840
-#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
-#define GL_MAX_PALETTE_MATRICES_ARB       0x8842
-#define GL_CURRENT_PALETTE_MATRIX_ARB     0x8843
-#define GL_MATRIX_INDEX_ARRAY_ARB         0x8844
-#define GL_CURRENT_MATRIX_INDEX_ARB       0x8845
-#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB    0x8846
-#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB    0x8847
-#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB  0x8848
-#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
-typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
-typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
-typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
-typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
-typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index);
-GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices);
-GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices);
-GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices);
-GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_ARB_matrix_palette */
-
-#ifndef GL_ARB_multi_bind
-#define GL_ARB_multi_bind 1
-#endif /* GL_ARB_multi_bind */
-
-#ifndef GL_ARB_multi_draw_indirect
-#define GL_ARB_multi_draw_indirect 1
-#endif /* GL_ARB_multi_draw_indirect */
-
-#ifndef GL_ARB_multisample
-#define GL_ARB_multisample 1
-#define GL_MULTISAMPLE_ARB                0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB   0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_ARB        0x809F
-#define GL_SAMPLE_COVERAGE_ARB            0x80A0
-#define GL_SAMPLE_BUFFERS_ARB             0x80A8
-#define GL_SAMPLES_ARB                    0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE_ARB      0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT_ARB     0x80AB
-#define GL_MULTISAMPLE_BIT_ARB            0x20000000
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert);
-#endif
-#endif /* GL_ARB_multisample */
-
-#ifndef GL_ARB_multitexture
-#define GL_ARB_multitexture 1
-#define GL_TEXTURE0_ARB                   0x84C0
-#define GL_TEXTURE1_ARB                   0x84C1
-#define GL_TEXTURE2_ARB                   0x84C2
-#define GL_TEXTURE3_ARB                   0x84C3
-#define GL_TEXTURE4_ARB                   0x84C4
-#define GL_TEXTURE5_ARB                   0x84C5
-#define GL_TEXTURE6_ARB                   0x84C6
-#define GL_TEXTURE7_ARB                   0x84C7
-#define GL_TEXTURE8_ARB                   0x84C8
-#define GL_TEXTURE9_ARB                   0x84C9
-#define GL_TEXTURE10_ARB                  0x84CA
-#define GL_TEXTURE11_ARB                  0x84CB
-#define GL_TEXTURE12_ARB                  0x84CC
-#define GL_TEXTURE13_ARB                  0x84CD
-#define GL_TEXTURE14_ARB                  0x84CE
-#define GL_TEXTURE15_ARB                  0x84CF
-#define GL_TEXTURE16_ARB                  0x84D0
-#define GL_TEXTURE17_ARB                  0x84D1
-#define GL_TEXTURE18_ARB                  0x84D2
-#define GL_TEXTURE19_ARB                  0x84D3
-#define GL_TEXTURE20_ARB                  0x84D4
-#define GL_TEXTURE21_ARB                  0x84D5
-#define GL_TEXTURE22_ARB                  0x84D6
-#define GL_TEXTURE23_ARB                  0x84D7
-#define GL_TEXTURE24_ARB                  0x84D8
-#define GL_TEXTURE25_ARB                  0x84D9
-#define GL_TEXTURE26_ARB                  0x84DA
-#define GL_TEXTURE27_ARB                  0x84DB
-#define GL_TEXTURE28_ARB                  0x84DC
-#define GL_TEXTURE29_ARB                  0x84DD
-#define GL_TEXTURE30_ARB                  0x84DE
-#define GL_TEXTURE31_ARB                  0x84DF
-#define GL_ACTIVE_TEXTURE_ARB             0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE_ARB      0x84E1
-#define GL_MAX_TEXTURE_UNITS_ARB          0x84E2
-typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTextureARB (GLenum texture);
-GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture);
-GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s);
-GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s);
-GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s);
-GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s);
-GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);
-GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);
-GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);
-GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);
-GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);
-GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);
-GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);
-GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v);
-#endif
-#endif /* GL_ARB_multitexture */
-
-#ifndef GL_ARB_occlusion_query
-#define GL_ARB_occlusion_query 1
-#define GL_QUERY_COUNTER_BITS_ARB         0x8864
-#define GL_CURRENT_QUERY_ARB              0x8865
-#define GL_QUERY_RESULT_ARB               0x8866
-#define GL_QUERY_RESULT_AVAILABLE_ARB     0x8867
-#define GL_SAMPLES_PASSED_ARB             0x8914
-typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id);
-GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id);
-GLAPI void APIENTRY glEndQueryARB (GLenum target);
-GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params);
-#endif
-#endif /* GL_ARB_occlusion_query */
-
-#ifndef GL_ARB_occlusion_query2
-#define GL_ARB_occlusion_query2 1
-#endif /* GL_ARB_occlusion_query2 */
-
-#ifndef GL_ARB_pixel_buffer_object
-#define GL_ARB_pixel_buffer_object 1
-#define GL_PIXEL_PACK_BUFFER_ARB          0x88EB
-#define GL_PIXEL_UNPACK_BUFFER_ARB        0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING_ARB  0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
-#endif /* GL_ARB_pixel_buffer_object */
-
-#ifndef GL_ARB_point_parameters
-#define GL_ARB_point_parameters 1
-#define GL_POINT_SIZE_MIN_ARB             0x8126
-#define GL_POINT_SIZE_MAX_ARB             0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_ARB  0x8128
-#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params);
-#endif
-#endif /* GL_ARB_point_parameters */
-
-#ifndef GL_ARB_point_sprite
-#define GL_ARB_point_sprite 1
-#define GL_POINT_SPRITE_ARB               0x8861
-#define GL_COORD_REPLACE_ARB              0x8862
-#endif /* GL_ARB_point_sprite */
-
-#ifndef GL_ARB_program_interface_query
-#define GL_ARB_program_interface_query 1
-#endif /* GL_ARB_program_interface_query */
-
-#ifndef GL_ARB_provoking_vertex
-#define GL_ARB_provoking_vertex 1
-#endif /* GL_ARB_provoking_vertex */
-
-#ifndef GL_ARB_query_buffer_object
-#define GL_ARB_query_buffer_object 1
-#endif /* GL_ARB_query_buffer_object */
-
-#ifndef GL_ARB_robust_buffer_access_behavior
-#define GL_ARB_robust_buffer_access_behavior 1
-#endif /* GL_ARB_robust_buffer_access_behavior */
-
-#ifndef GL_ARB_robustness
-#define GL_ARB_robustness 1
-#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
-#define GL_LOSE_CONTEXT_ON_RESET_ARB      0x8252
-#define GL_GUILTY_CONTEXT_RESET_ARB       0x8253
-#define GL_INNOCENT_CONTEXT_RESET_ARB     0x8254
-#define GL_UNKNOWN_CONTEXT_RESET_ARB      0x8255
-#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
-#define GL_NO_RESET_NOTIFICATION_ARB      0x8261
-typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
-typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
-typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img);
-typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
-typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
-typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
-typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values);
-typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values);
-typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values);
-typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern);
-typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
-typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
-typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
-typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void);
-GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
-GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img);
-GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
-GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
-GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
-GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values);
-GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values);
-GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values);
-GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern);
-GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
-GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
-GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
-GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-#endif
-#endif /* GL_ARB_robustness */
-
-#ifndef GL_ARB_robustness_isolation
-#define GL_ARB_robustness_isolation 1
-#endif /* GL_ARB_robustness_isolation */
-
-#ifndef GL_ARB_sample_shading
-#define GL_ARB_sample_shading 1
-#define GL_SAMPLE_SHADING_ARB             0x8C36
-#define GL_MIN_SAMPLE_SHADING_VALUE_ARB   0x8C37
-typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value);
-#endif
-#endif /* GL_ARB_sample_shading */
-
-#ifndef GL_ARB_sampler_objects
-#define GL_ARB_sampler_objects 1
-#endif /* GL_ARB_sampler_objects */
-
-#ifndef GL_ARB_seamless_cube_map
-#define GL_ARB_seamless_cube_map 1
-#endif /* GL_ARB_seamless_cube_map */
-
-#ifndef GL_ARB_seamless_cubemap_per_texture
-#define GL_ARB_seamless_cubemap_per_texture 1
-#endif /* GL_ARB_seamless_cubemap_per_texture */
-
-#ifndef GL_ARB_separate_shader_objects
-#define GL_ARB_separate_shader_objects 1
-#endif /* GL_ARB_separate_shader_objects */
-
-#ifndef GL_ARB_shader_atomic_counters
-#define GL_ARB_shader_atomic_counters 1
-#endif /* GL_ARB_shader_atomic_counters */
-
-#ifndef GL_ARB_shader_bit_encoding
-#define GL_ARB_shader_bit_encoding 1
-#endif /* GL_ARB_shader_bit_encoding */
-
-#ifndef GL_ARB_shader_draw_parameters
-#define GL_ARB_shader_draw_parameters 1
-#endif /* GL_ARB_shader_draw_parameters */
-
-#ifndef GL_ARB_shader_group_vote
-#define GL_ARB_shader_group_vote 1
-#endif /* GL_ARB_shader_group_vote */
-
-#ifndef GL_ARB_shader_image_load_store
-#define GL_ARB_shader_image_load_store 1
-#endif /* GL_ARB_shader_image_load_store */
-
-#ifndef GL_ARB_shader_image_size
-#define GL_ARB_shader_image_size 1
-#endif /* GL_ARB_shader_image_size */
-
-#ifndef GL_ARB_shader_objects
-#define GL_ARB_shader_objects 1
-#ifdef __APPLE__
-typedef void *GLhandleARB;
-#else
-typedef unsigned int GLhandleARB;
-#endif
-typedef char GLcharARB;
-#define GL_PROGRAM_OBJECT_ARB             0x8B40
-#define GL_SHADER_OBJECT_ARB              0x8B48
-#define GL_OBJECT_TYPE_ARB                0x8B4E
-#define GL_OBJECT_SUBTYPE_ARB             0x8B4F
-#define GL_FLOAT_VEC2_ARB                 0x8B50
-#define GL_FLOAT_VEC3_ARB                 0x8B51
-#define GL_FLOAT_VEC4_ARB                 0x8B52
-#define GL_INT_VEC2_ARB                   0x8B53
-#define GL_INT_VEC3_ARB                   0x8B54
-#define GL_INT_VEC4_ARB                   0x8B55
-#define GL_BOOL_ARB                       0x8B56
-#define GL_BOOL_VEC2_ARB                  0x8B57
-#define GL_BOOL_VEC3_ARB                  0x8B58
-#define GL_BOOL_VEC4_ARB                  0x8B59
-#define GL_FLOAT_MAT2_ARB                 0x8B5A
-#define GL_FLOAT_MAT3_ARB                 0x8B5B
-#define GL_FLOAT_MAT4_ARB                 0x8B5C
-#define GL_SAMPLER_1D_ARB                 0x8B5D
-#define GL_SAMPLER_2D_ARB                 0x8B5E
-#define GL_SAMPLER_3D_ARB                 0x8B5F
-#define GL_SAMPLER_CUBE_ARB               0x8B60
-#define GL_SAMPLER_1D_SHADOW_ARB          0x8B61
-#define GL_SAMPLER_2D_SHADOW_ARB          0x8B62
-#define GL_SAMPLER_2D_RECT_ARB            0x8B63
-#define GL_SAMPLER_2D_RECT_SHADOW_ARB     0x8B64
-#define GL_OBJECT_DELETE_STATUS_ARB       0x8B80
-#define GL_OBJECT_COMPILE_STATUS_ARB      0x8B81
-#define GL_OBJECT_LINK_STATUS_ARB         0x8B82
-#define GL_OBJECT_VALIDATE_STATUS_ARB     0x8B83
-#define GL_OBJECT_INFO_LOG_LENGTH_ARB     0x8B84
-#define GL_OBJECT_ATTACHED_OBJECTS_ARB    0x8B85
-#define GL_OBJECT_ACTIVE_UNIFORMS_ARB     0x8B86
-#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
-#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
-typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
-typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
-typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
-typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
-typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
-typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
-typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
-typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
-typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
-typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
-typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
-typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
-typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj);
-GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname);
-GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj);
-GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType);
-GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
-GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);
-GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
-GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj);
-GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj);
-GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj);
-GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj);
-GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0);
-GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0);
-GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
-GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
-GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
-GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);
-GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);
-GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
-#endif
-#endif /* GL_ARB_shader_objects */
-
-#ifndef GL_ARB_shader_precision
-#define GL_ARB_shader_precision 1
-#endif /* GL_ARB_shader_precision */
-
-#ifndef GL_ARB_shader_stencil_export
-#define GL_ARB_shader_stencil_export 1
-#endif /* GL_ARB_shader_stencil_export */
-
-#ifndef GL_ARB_shader_storage_buffer_object
-#define GL_ARB_shader_storage_buffer_object 1
-#endif /* GL_ARB_shader_storage_buffer_object */
-
-#ifndef GL_ARB_shader_subroutine
-#define GL_ARB_shader_subroutine 1
-#endif /* GL_ARB_shader_subroutine */
-
-#ifndef GL_ARB_shader_texture_lod
-#define GL_ARB_shader_texture_lod 1
-#endif /* GL_ARB_shader_texture_lod */
-
-#ifndef GL_ARB_shading_language_100
-#define GL_ARB_shading_language_100 1
-#define GL_SHADING_LANGUAGE_VERSION_ARB   0x8B8C
-#endif /* GL_ARB_shading_language_100 */
-
-#ifndef GL_ARB_shading_language_420pack
-#define GL_ARB_shading_language_420pack 1
-#endif /* GL_ARB_shading_language_420pack */
-
-#ifndef GL_ARB_shading_language_include
-#define GL_ARB_shading_language_include 1
-#define GL_SHADER_INCLUDE_ARB             0x8DAE
-#define GL_NAMED_STRING_LENGTH_ARB        0x8DE9
-#define GL_NAMED_STRING_TYPE_ARB          0x8DEA
-typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
-typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
-typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
-typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
-typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
-GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
-GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
-GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
-GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
-GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ARB_shading_language_include */
-
-#ifndef GL_ARB_shading_language_packing
-#define GL_ARB_shading_language_packing 1
-#endif /* GL_ARB_shading_language_packing */
-
-#ifndef GL_ARB_shadow
-#define GL_ARB_shadow 1
-#define GL_TEXTURE_COMPARE_MODE_ARB       0x884C
-#define GL_TEXTURE_COMPARE_FUNC_ARB       0x884D
-#define GL_COMPARE_R_TO_TEXTURE_ARB       0x884E
-#endif /* GL_ARB_shadow */
-
-#ifndef GL_ARB_shadow_ambient
-#define GL_ARB_shadow_ambient 1
-#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
-#endif /* GL_ARB_shadow_ambient */
-
-#ifndef GL_ARB_sparse_texture
-#define GL_ARB_sparse_texture 1
-#define GL_TEXTURE_SPARSE_ARB             0x91A6
-#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB    0x91A7
-#define GL_MIN_SPARSE_LEVEL_ARB           0x919B
-#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB     0x91A8
-#define GL_VIRTUAL_PAGE_SIZE_X_ARB        0x9195
-#define GL_VIRTUAL_PAGE_SIZE_Y_ARB        0x9196
-#define GL_VIRTUAL_PAGE_SIZE_Z_ARB        0x9197
-#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB    0x9198
-#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
-#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
-#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
-typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-#endif
-#endif /* GL_ARB_sparse_texture */
-
-#ifndef GL_ARB_stencil_texturing
-#define GL_ARB_stencil_texturing 1
-#endif /* GL_ARB_stencil_texturing */
-
-#ifndef GL_ARB_sync
-#define GL_ARB_sync 1
-#endif /* GL_ARB_sync */
-
-#ifndef GL_ARB_tessellation_shader
-#define GL_ARB_tessellation_shader 1
-#endif /* GL_ARB_tessellation_shader */
-
-#ifndef GL_ARB_texture_border_clamp
-#define GL_ARB_texture_border_clamp 1
-#define GL_CLAMP_TO_BORDER_ARB            0x812D
-#endif /* GL_ARB_texture_border_clamp */
-
-#ifndef GL_ARB_texture_buffer_object
-#define GL_ARB_texture_buffer_object 1
-#define GL_TEXTURE_BUFFER_ARB             0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB    0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER_ARB     0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
-#define GL_TEXTURE_BUFFER_FORMAT_ARB      0x8C2E
-typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
-#endif
-#endif /* GL_ARB_texture_buffer_object */
-
-#ifndef GL_ARB_texture_buffer_object_rgb32
-#define GL_ARB_texture_buffer_object_rgb32 1
-#endif /* GL_ARB_texture_buffer_object_rgb32 */
-
-#ifndef GL_ARB_texture_buffer_range
-#define GL_ARB_texture_buffer_range 1
-#endif /* GL_ARB_texture_buffer_range */
-
-#ifndef GL_ARB_texture_compression
-#define GL_ARB_texture_compression 1
-#define GL_COMPRESSED_ALPHA_ARB           0x84E9
-#define GL_COMPRESSED_LUMINANCE_ARB       0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
-#define GL_COMPRESSED_INTENSITY_ARB       0x84EC
-#define GL_COMPRESSED_RGB_ARB             0x84ED
-#define GL_COMPRESSED_RGBA_ARB            0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT_ARB   0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
-#define GL_TEXTURE_COMPRESSED_ARB         0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void *img);
-#endif
-#endif /* GL_ARB_texture_compression */
-
-#ifndef GL_ARB_texture_compression_bptc
-#define GL_ARB_texture_compression_bptc 1
-#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
-#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
-#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
-#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
-#endif /* GL_ARB_texture_compression_bptc */
-
-#ifndef GL_ARB_texture_compression_rgtc
-#define GL_ARB_texture_compression_rgtc 1
-#endif /* GL_ARB_texture_compression_rgtc */
-
-#ifndef GL_ARB_texture_cube_map
-#define GL_ARB_texture_cube_map 1
-#define GL_NORMAL_MAP_ARB                 0x8511
-#define GL_REFLECTION_MAP_ARB             0x8512
-#define GL_TEXTURE_CUBE_MAP_ARB           0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARB   0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARB     0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB  0x851C
-#endif /* GL_ARB_texture_cube_map */
-
-#ifndef GL_ARB_texture_cube_map_array
-#define GL_ARB_texture_cube_map_array 1
-#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB     0x9009
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
-#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB     0x900C
-#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
-#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
-#endif /* GL_ARB_texture_cube_map_array */
-
-#ifndef GL_ARB_texture_env_add
-#define GL_ARB_texture_env_add 1
-#endif /* GL_ARB_texture_env_add */
-
-#ifndef GL_ARB_texture_env_combine
-#define GL_ARB_texture_env_combine 1
-#define GL_COMBINE_ARB                    0x8570
-#define GL_COMBINE_RGB_ARB                0x8571
-#define GL_COMBINE_ALPHA_ARB              0x8572
-#define GL_SOURCE0_RGB_ARB                0x8580
-#define GL_SOURCE1_RGB_ARB                0x8581
-#define GL_SOURCE2_RGB_ARB                0x8582
-#define GL_SOURCE0_ALPHA_ARB              0x8588
-#define GL_SOURCE1_ALPHA_ARB              0x8589
-#define GL_SOURCE2_ALPHA_ARB              0x858A
-#define GL_OPERAND0_RGB_ARB               0x8590
-#define GL_OPERAND1_RGB_ARB               0x8591
-#define GL_OPERAND2_RGB_ARB               0x8592
-#define GL_OPERAND0_ALPHA_ARB             0x8598
-#define GL_OPERAND1_ALPHA_ARB             0x8599
-#define GL_OPERAND2_ALPHA_ARB             0x859A
-#define GL_RGB_SCALE_ARB                  0x8573
-#define GL_ADD_SIGNED_ARB                 0x8574
-#define GL_INTERPOLATE_ARB                0x8575
-#define GL_SUBTRACT_ARB                   0x84E7
-#define GL_CONSTANT_ARB                   0x8576
-#define GL_PRIMARY_COLOR_ARB              0x8577
-#define GL_PREVIOUS_ARB                   0x8578
-#endif /* GL_ARB_texture_env_combine */
-
-#ifndef GL_ARB_texture_env_crossbar
-#define GL_ARB_texture_env_crossbar 1
-#endif /* GL_ARB_texture_env_crossbar */
-
-#ifndef GL_ARB_texture_env_dot3
-#define GL_ARB_texture_env_dot3 1
-#define GL_DOT3_RGB_ARB                   0x86AE
-#define GL_DOT3_RGBA_ARB                  0x86AF
-#endif /* GL_ARB_texture_env_dot3 */
-
-#ifndef GL_ARB_texture_float
-#define GL_ARB_texture_float 1
-#define GL_TEXTURE_RED_TYPE_ARB           0x8C10
-#define GL_TEXTURE_GREEN_TYPE_ARB         0x8C11
-#define GL_TEXTURE_BLUE_TYPE_ARB          0x8C12
-#define GL_TEXTURE_ALPHA_TYPE_ARB         0x8C13
-#define GL_TEXTURE_LUMINANCE_TYPE_ARB     0x8C14
-#define GL_TEXTURE_INTENSITY_TYPE_ARB     0x8C15
-#define GL_TEXTURE_DEPTH_TYPE_ARB         0x8C16
-#define GL_UNSIGNED_NORMALIZED_ARB        0x8C17
-#define GL_RGBA32F_ARB                    0x8814
-#define GL_RGB32F_ARB                     0x8815
-#define GL_ALPHA32F_ARB                   0x8816
-#define GL_INTENSITY32F_ARB               0x8817
-#define GL_LUMINANCE32F_ARB               0x8818
-#define GL_LUMINANCE_ALPHA32F_ARB         0x8819
-#define GL_RGBA16F_ARB                    0x881A
-#define GL_RGB16F_ARB                     0x881B
-#define GL_ALPHA16F_ARB                   0x881C
-#define GL_INTENSITY16F_ARB               0x881D
-#define GL_LUMINANCE16F_ARB               0x881E
-#define GL_LUMINANCE_ALPHA16F_ARB         0x881F
-#endif /* GL_ARB_texture_float */
-
-#ifndef GL_ARB_texture_gather
-#define GL_ARB_texture_gather 1
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
-#endif /* GL_ARB_texture_gather */
-
-#ifndef GL_ARB_texture_mirror_clamp_to_edge
-#define GL_ARB_texture_mirror_clamp_to_edge 1
-#endif /* GL_ARB_texture_mirror_clamp_to_edge */
-
-#ifndef GL_ARB_texture_mirrored_repeat
-#define GL_ARB_texture_mirrored_repeat 1
-#define GL_MIRRORED_REPEAT_ARB            0x8370
-#endif /* GL_ARB_texture_mirrored_repeat */
-
-#ifndef GL_ARB_texture_multisample
-#define GL_ARB_texture_multisample 1
-#endif /* GL_ARB_texture_multisample */
-
-#ifndef GL_ARB_texture_non_power_of_two
-#define GL_ARB_texture_non_power_of_two 1
-#endif /* GL_ARB_texture_non_power_of_two */
-
-#ifndef GL_ARB_texture_query_levels
-#define GL_ARB_texture_query_levels 1
-#endif /* GL_ARB_texture_query_levels */
-
-#ifndef GL_ARB_texture_query_lod
-#define GL_ARB_texture_query_lod 1
-#endif /* GL_ARB_texture_query_lod */
-
-#ifndef GL_ARB_texture_rectangle
-#define GL_ARB_texture_rectangle 1
-#define GL_TEXTURE_RECTANGLE_ARB          0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE_ARB  0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE_ARB    0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
-#endif /* GL_ARB_texture_rectangle */
-
-#ifndef GL_ARB_texture_rg
-#define GL_ARB_texture_rg 1
-#endif /* GL_ARB_texture_rg */
-
-#ifndef GL_ARB_texture_rgb10_a2ui
-#define GL_ARB_texture_rgb10_a2ui 1
-#endif /* GL_ARB_texture_rgb10_a2ui */
-
-#ifndef GL_ARB_texture_stencil8
-#define GL_ARB_texture_stencil8 1
-#endif /* GL_ARB_texture_stencil8 */
-
-#ifndef GL_ARB_texture_storage
-#define GL_ARB_texture_storage 1
-#endif /* GL_ARB_texture_storage */
-
-#ifndef GL_ARB_texture_storage_multisample
-#define GL_ARB_texture_storage_multisample 1
-#endif /* GL_ARB_texture_storage_multisample */
-
-#ifndef GL_ARB_texture_swizzle
-#define GL_ARB_texture_swizzle 1
-#endif /* GL_ARB_texture_swizzle */
-
-#ifndef GL_ARB_texture_view
-#define GL_ARB_texture_view 1
-#endif /* GL_ARB_texture_view */
-
-#ifndef GL_ARB_timer_query
-#define GL_ARB_timer_query 1
-#endif /* GL_ARB_timer_query */
-
-#ifndef GL_ARB_transform_feedback2
-#define GL_ARB_transform_feedback2 1
-#define GL_TRANSFORM_FEEDBACK_PAUSED      0x8E23
-#define GL_TRANSFORM_FEEDBACK_ACTIVE      0x8E24
-#endif /* GL_ARB_transform_feedback2 */
-
-#ifndef GL_ARB_transform_feedback3
-#define GL_ARB_transform_feedback3 1
-#endif /* GL_ARB_transform_feedback3 */
-
-#ifndef GL_ARB_transform_feedback_instanced
-#define GL_ARB_transform_feedback_instanced 1
-#endif /* GL_ARB_transform_feedback_instanced */
-
-#ifndef GL_ARB_transpose_matrix
-#define GL_ARB_transpose_matrix 1
-#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB   0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX_ARB     0x84E6
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m);
-GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m);
-GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m);
-GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m);
-#endif
-#endif /* GL_ARB_transpose_matrix */
-
-#ifndef GL_ARB_uniform_buffer_object
-#define GL_ARB_uniform_buffer_object 1
-#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS    0x8A2C
-#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
-#endif /* GL_ARB_uniform_buffer_object */
-
-#ifndef GL_ARB_vertex_array_bgra
-#define GL_ARB_vertex_array_bgra 1
-#endif /* GL_ARB_vertex_array_bgra */
-
-#ifndef GL_ARB_vertex_array_object
-#define GL_ARB_vertex_array_object 1
-#endif /* GL_ARB_vertex_array_object */
-
-#ifndef GL_ARB_vertex_attrib_64bit
-#define GL_ARB_vertex_attrib_64bit 1
-#endif /* GL_ARB_vertex_attrib_64bit */
-
-#ifndef GL_ARB_vertex_attrib_binding
-#define GL_ARB_vertex_attrib_binding 1
-#endif /* GL_ARB_vertex_attrib_binding */
-
-#ifndef GL_ARB_vertex_blend
-#define GL_ARB_vertex_blend 1
-#define GL_MAX_VERTEX_UNITS_ARB           0x86A4
-#define GL_ACTIVE_VERTEX_UNITS_ARB        0x86A5
-#define GL_WEIGHT_SUM_UNITY_ARB           0x86A6
-#define GL_VERTEX_BLEND_ARB               0x86A7
-#define GL_CURRENT_WEIGHT_ARB             0x86A8
-#define GL_WEIGHT_ARRAY_TYPE_ARB          0x86A9
-#define GL_WEIGHT_ARRAY_STRIDE_ARB        0x86AA
-#define GL_WEIGHT_ARRAY_SIZE_ARB          0x86AB
-#define GL_WEIGHT_ARRAY_POINTER_ARB       0x86AC
-#define GL_WEIGHT_ARRAY_ARB               0x86AD
-#define GL_MODELVIEW0_ARB                 0x1700
-#define GL_MODELVIEW1_ARB                 0x850A
-#define GL_MODELVIEW2_ARB                 0x8722
-#define GL_MODELVIEW3_ARB                 0x8723
-#define GL_MODELVIEW4_ARB                 0x8724
-#define GL_MODELVIEW5_ARB                 0x8725
-#define GL_MODELVIEW6_ARB                 0x8726
-#define GL_MODELVIEW7_ARB                 0x8727
-#define GL_MODELVIEW8_ARB                 0x8728
-#define GL_MODELVIEW9_ARB                 0x8729
-#define GL_MODELVIEW10_ARB                0x872A
-#define GL_MODELVIEW11_ARB                0x872B
-#define GL_MODELVIEW12_ARB                0x872C
-#define GL_MODELVIEW13_ARB                0x872D
-#define GL_MODELVIEW14_ARB                0x872E
-#define GL_MODELVIEW15_ARB                0x872F
-#define GL_MODELVIEW16_ARB                0x8730
-#define GL_MODELVIEW17_ARB                0x8731
-#define GL_MODELVIEW18_ARB                0x8732
-#define GL_MODELVIEW19_ARB                0x8733
-#define GL_MODELVIEW20_ARB                0x8734
-#define GL_MODELVIEW21_ARB                0x8735
-#define GL_MODELVIEW22_ARB                0x8736
-#define GL_MODELVIEW23_ARB                0x8737
-#define GL_MODELVIEW24_ARB                0x8738
-#define GL_MODELVIEW25_ARB                0x8739
-#define GL_MODELVIEW26_ARB                0x873A
-#define GL_MODELVIEW27_ARB                0x873B
-#define GL_MODELVIEW28_ARB                0x873C
-#define GL_MODELVIEW29_ARB                0x873D
-#define GL_MODELVIEW30_ARB                0x873E
-#define GL_MODELVIEW31_ARB                0x873F
-typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
-typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
-typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
-typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
-typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
-typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
-typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
-typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
-typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights);
-GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights);
-GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights);
-GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights);
-GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights);
-GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights);
-GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights);
-GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights);
-GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glVertexBlendARB (GLint count);
-#endif
-#endif /* GL_ARB_vertex_blend */
-
-#ifndef GL_ARB_vertex_buffer_object
-#define GL_ARB_vertex_buffer_object 1
-#ifdef __MACOSX__ /* The OS X headers haven't caught up with Khronos yet */
-typedef long GLsizeiptrARB;
-typedef long GLintptrARB;
-#else
-typedef ptrdiff_t GLsizeiptrARB;
-typedef ptrdiff_t GLintptrARB;
-#endif
-#define GL_BUFFER_SIZE_ARB                0x8764
-#define GL_BUFFER_USAGE_ARB               0x8765
-#define GL_ARRAY_BUFFER_ARB               0x8892
-#define GL_ELEMENT_ARRAY_BUFFER_ARB       0x8893
-#define GL_ARRAY_BUFFER_BINDING_ARB       0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
-#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
-#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
-#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
-#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
-#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
-#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
-#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
-#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
-#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
-#define GL_READ_ONLY_ARB                  0x88B8
-#define GL_WRITE_ONLY_ARB                 0x88B9
-#define GL_READ_WRITE_ARB                 0x88BA
-#define GL_BUFFER_ACCESS_ARB              0x88BB
-#define GL_BUFFER_MAPPED_ARB              0x88BC
-#define GL_BUFFER_MAP_POINTER_ARB         0x88BD
-#define GL_STREAM_DRAW_ARB                0x88E0
-#define GL_STREAM_READ_ARB                0x88E1
-#define GL_STREAM_COPY_ARB                0x88E2
-#define GL_STATIC_DRAW_ARB                0x88E4
-#define GL_STATIC_READ_ARB                0x88E5
-#define GL_STATIC_COPY_ARB                0x88E6
-#define GL_DYNAMIC_DRAW_ARB               0x88E8
-#define GL_DYNAMIC_READ_ARB               0x88E9
-#define GL_DYNAMIC_COPY_ARB               0x88EA
-typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
-typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
-typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
-typedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer);
-GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers);
-GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers);
-GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer);
-GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
-GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
-GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
-GLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target);
-GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_ARB_vertex_buffer_object */
-
-#ifndef GL_ARB_vertex_program
-#define GL_ARB_vertex_program 1
-#define GL_COLOR_SUM_ARB                  0x8458
-#define GL_VERTEX_PROGRAM_ARB             0x8620
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB   0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB   0x8625
-#define GL_CURRENT_VERTEX_ATTRIB_ARB      0x8626
-#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB  0x8642
-#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB    0x8643
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
-#define GL_MAX_VERTEX_ATTRIBS_ARB         0x8869
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
-#define GL_PROGRAM_ADDRESS_REGISTERS_ARB  0x88B0
-#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
-#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
-#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void **pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index);
-GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index);
-GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, void **pointer);
-#endif
-#endif /* GL_ARB_vertex_program */
-
-#ifndef GL_ARB_vertex_shader
-#define GL_ARB_vertex_shader 1
-#define GL_VERTEX_SHADER_ARB              0x8B31
-#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
-#define GL_MAX_VARYING_FLOATS_ARB         0x8B4B
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
-#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB   0x8B89
-#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
-typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
-typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);
-GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);
-#endif
-#endif /* GL_ARB_vertex_shader */
-
-#ifndef GL_ARB_vertex_type_10f_11f_11f_rev
-#define GL_ARB_vertex_type_10f_11f_11f_rev 1
-#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
-
-#ifndef GL_ARB_vertex_type_2_10_10_10_rev
-#define GL_ARB_vertex_type_2_10_10_10_rev 1
-#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
-
-#ifndef GL_ARB_viewport_array
-#define GL_ARB_viewport_array 1
-#endif /* GL_ARB_viewport_array */
-
-#ifndef GL_ARB_window_pos
-#define GL_ARB_window_pos 1
-typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y);
-GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y);
-GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y);
-GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v);
-GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y);
-GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v);
-GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v);
-GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v);
-#endif
-#endif /* GL_ARB_window_pos */
-
-#ifndef GL_KHR_debug
-#define GL_KHR_debug 1
-#endif /* GL_KHR_debug */
-
-#ifndef GL_KHR_texture_compression_astc_hdr
-#define GL_KHR_texture_compression_astc_hdr 1
-#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR   0x93B0
-#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR   0x93B1
-#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR   0x93B2
-#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR   0x93B3
-#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR   0x93B4
-#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR   0x93B5
-#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR   0x93B6
-#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR   0x93B7
-#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR  0x93B8
-#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR  0x93B9
-#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR  0x93BA
-#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
-#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
-#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
-#endif /* GL_KHR_texture_compression_astc_hdr */
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_KHR_texture_compression_astc_ldr 1
-#endif /* GL_KHR_texture_compression_astc_ldr */
-
-#ifndef GL_OES_byte_coordinates
-#define GL_OES_byte_coordinates 1
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s);
-typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t);
-typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r);
-typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x);
-typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y);
-typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z);
-typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s);
-GLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t);
-GLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
-GLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-GLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord1bOES (GLbyte s);
-GLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t);
-GLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r);
-GLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-GLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glVertex2bOES (GLbyte x);
-GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y);
-GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z);
-GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords);
-#endif
-#endif /* GL_OES_byte_coordinates */
-
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_OES_compressed_paletted_texture 1
-#define GL_PALETTE4_RGB8_OES              0x8B90
-#define GL_PALETTE4_RGBA8_OES             0x8B91
-#define GL_PALETTE4_R5_G6_B5_OES          0x8B92
-#define GL_PALETTE4_RGBA4_OES             0x8B93
-#define GL_PALETTE4_RGB5_A1_OES           0x8B94
-#define GL_PALETTE8_RGB8_OES              0x8B95
-#define GL_PALETTE8_RGBA8_OES             0x8B96
-#define GL_PALETTE8_R5_G6_B5_OES          0x8B97
-#define GL_PALETTE8_RGBA4_OES             0x8B98
-#define GL_PALETTE8_RGB5_A1_OES           0x8B99
-#endif /* GL_OES_compressed_paletted_texture */
-
-#ifndef GL_OES_fixed_point
-#define GL_OES_fixed_point 1
-typedef GLint GLfixed;
-#define GL_FIXED_OES                      0x140C
-typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref);
-typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth);
-typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation);
-typedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f);
-typedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param);
-typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation);
-typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param);
-typedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width);
-typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param);
-typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz);
-typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size);
-typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units);
-typedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert);
-typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value);
-typedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
-typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue);
-typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components);
-typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u);
-typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v);
-typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v);
-typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values);
-typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component);
-typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
-typedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
-typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2);
-typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token);
-typedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values);
-typedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor);
-typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities);
-typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y);
-typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
-typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
-typedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2);
-typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s);
-typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t);
-typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r);
-typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x);
-typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y);
-typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref);
-GLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glClearDepthxOES (GLfixed depth);
-GLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation);
-GLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f);
-GLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param);
-GLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-GLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation);
-GLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param);
-GLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glLineWidthxOES (GLfixed width);
-GLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param);
-GLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz);
-GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-GLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glPointSizexOES (GLfixed size);
-GLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units);
-GLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glSampleCoverageOES (GLfixed value, GLboolean invert);
-GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value);
-GLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
-GLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue);
-GLAPI void APIENTRY glColor3xvOES (const GLfixed *components);
-GLAPI void APIENTRY glColor4xvOES (const GLfixed *components);
-GLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glEvalCoord1xOES (GLfixed u);
-GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v);
-GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer);
-GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v);
-GLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values);
-GLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glIndexxOES (GLfixed component);
-GLAPI void APIENTRY glIndexxvOES (const GLfixed *component);
-GLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
-GLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
-GLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2);
-GLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
-GLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s);
-GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t);
-GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
-GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glPassThroughxOES (GLfixed token);
-GLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values);
-GLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor);
-GLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities);
-GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y);
-GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
-GLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
-GLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2);
-GLAPI void APIENTRY glTexCoord1xOES (GLfixed s);
-GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t);
-GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r);
-GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glVertex2xOES (GLfixed x);
-GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y);
-GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords);
-#endif
-#endif /* GL_OES_fixed_point */
-
-#ifndef GL_OES_query_matrix
-#define GL_OES_query_matrix 1
-typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent);
-#endif
-#endif /* GL_OES_query_matrix */
-
-#ifndef GL_OES_read_format
-#define GL_OES_read_format 1
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
-#endif /* GL_OES_read_format */
-
-#ifndef GL_OES_single_precision
-#define GL_OES_single_precision 1
-typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth);
-typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation);
-typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f);
-typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation);
-typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClearDepthfOES (GLclampf depth);
-GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation);
-GLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f);
-GLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-GLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation);
-GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-#endif
-#endif /* GL_OES_single_precision */
-
-#ifndef GL_3DFX_multisample
-#define GL_3DFX_multisample 1
-#define GL_MULTISAMPLE_3DFX               0x86B2
-#define GL_SAMPLE_BUFFERS_3DFX            0x86B3
-#define GL_SAMPLES_3DFX                   0x86B4
-#define GL_MULTISAMPLE_BIT_3DFX           0x20000000
-#endif /* GL_3DFX_multisample */
-
-#ifndef GL_3DFX_tbuffer
-#define GL_3DFX_tbuffer 1
-typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask);
-#endif
-#endif /* GL_3DFX_tbuffer */
-
-#ifndef GL_3DFX_texture_compression_FXT1
-#define GL_3DFX_texture_compression_FXT1 1
-#define GL_COMPRESSED_RGB_FXT1_3DFX       0x86B0
-#define GL_COMPRESSED_RGBA_FXT1_3DFX      0x86B1
-#endif /* GL_3DFX_texture_compression_FXT1 */
-
-#ifndef GL_AMD_blend_minmax_factor
-#define GL_AMD_blend_minmax_factor 1
-#define GL_FACTOR_MIN_AMD                 0x901C
-#define GL_FACTOR_MAX_AMD                 0x901D
-#endif /* GL_AMD_blend_minmax_factor */
-
-#ifndef GL_AMD_conservative_depth
-#define GL_AMD_conservative_depth 1
-#endif /* GL_AMD_conservative_depth */
-
-#ifndef GL_AMD_debug_output
-#define GL_AMD_debug_output 1
-typedef void (APIENTRY  *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD   0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD  0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_AMD      0x9145
-#define GL_DEBUG_SEVERITY_HIGH_AMD        0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_AMD      0x9147
-#define GL_DEBUG_SEVERITY_LOW_AMD         0x9148
-#define GL_DEBUG_CATEGORY_API_ERROR_AMD   0x9149
-#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
-#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
-#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
-#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
-#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
-#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
-#define GL_DEBUG_CATEGORY_OTHER_AMD       0x9150
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
-#endif
-#endif /* GL_AMD_debug_output */
-
-#ifndef GL_AMD_depth_clamp_separate
-#define GL_AMD_depth_clamp_separate 1
-#define GL_DEPTH_CLAMP_NEAR_AMD           0x901E
-#define GL_DEPTH_CLAMP_FAR_AMD            0x901F
-#endif /* GL_AMD_depth_clamp_separate */
-
-#ifndef GL_AMD_draw_buffers_blend
-#define GL_AMD_draw_buffers_blend 1
-typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-#endif
-#endif /* GL_AMD_draw_buffers_blend */
-
-#ifndef GL_AMD_gcn_shader
-#define GL_AMD_gcn_shader 1
-#endif /* GL_AMD_gcn_shader */
-
-#ifndef GL_AMD_gpu_shader_int64
-#define GL_AMD_gpu_shader_int64 1
-typedef int64_t GLint64EXT;
-#define GL_INT64_NV                       0x140E
-#define GL_UNSIGNED_INT64_NV              0x140F
-#define GL_INT8_NV                        0x8FE0
-#define GL_INT8_VEC2_NV                   0x8FE1
-#define GL_INT8_VEC3_NV                   0x8FE2
-#define GL_INT8_VEC4_NV                   0x8FE3
-#define GL_INT16_NV                       0x8FE4
-#define GL_INT16_VEC2_NV                  0x8FE5
-#define GL_INT16_VEC3_NV                  0x8FE6
-#define GL_INT16_VEC4_NV                  0x8FE7
-#define GL_INT64_VEC2_NV                  0x8FE9
-#define GL_INT64_VEC3_NV                  0x8FEA
-#define GL_INT64_VEC4_NV                  0x8FEB
-#define GL_UNSIGNED_INT8_NV               0x8FEC
-#define GL_UNSIGNED_INT8_VEC2_NV          0x8FED
-#define GL_UNSIGNED_INT8_VEC3_NV          0x8FEE
-#define GL_UNSIGNED_INT8_VEC4_NV          0x8FEF
-#define GL_UNSIGNED_INT16_NV              0x8FF0
-#define GL_UNSIGNED_INT16_VEC2_NV         0x8FF1
-#define GL_UNSIGNED_INT16_VEC3_NV         0x8FF2
-#define GL_UNSIGNED_INT16_VEC4_NV         0x8FF3
-#define GL_UNSIGNED_INT64_VEC2_NV         0x8FF5
-#define GL_UNSIGNED_INT64_VEC3_NV         0x8FF6
-#define GL_UNSIGNED_INT64_VEC4_NV         0x8FF7
-#define GL_FLOAT16_NV                     0x8FF8
-#define GL_FLOAT16_VEC2_NV                0x8FF9
-#define GL_FLOAT16_VEC3_NV                0x8FFA
-#define GL_FLOAT16_VEC4_NV                0x8FFB
-typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
-typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
-GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
-GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
-GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
-GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
-GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
-GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#endif
-#endif /* GL_AMD_gpu_shader_int64 */
-
-#ifndef GL_AMD_interleaved_elements
-#define GL_AMD_interleaved_elements 1
-#define GL_VERTEX_ELEMENT_SWIZZLE_AMD     0x91A4
-#define GL_VERTEX_ID_SWIZZLE_AMD          0x91A5
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param);
-#endif
-#endif /* GL_AMD_interleaved_elements */
-
-#ifndef GL_AMD_multi_draw_indirect
-#define GL_AMD_multi_draw_indirect 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
-#endif
-#endif /* GL_AMD_multi_draw_indirect */
-
-#ifndef GL_AMD_name_gen_delete
-#define GL_AMD_name_gen_delete 1
-#define GL_DATA_BUFFER_AMD                0x9151
-#define GL_PERFORMANCE_MONITOR_AMD        0x9152
-#define GL_QUERY_OBJECT_AMD               0x9153
-#define GL_VERTEX_ARRAY_OBJECT_AMD        0x9154
-#define GL_SAMPLER_OBJECT_AMD             0x9155
-typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names);
-typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names);
-typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names);
-GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names);
-GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name);
-#endif
-#endif /* GL_AMD_name_gen_delete */
-
-#ifndef GL_AMD_occlusion_query_event
-#define GL_AMD_occlusion_query_event 1
-#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
-#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
-#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
-#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
-#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
-#define GL_QUERY_ALL_EVENT_BITS_AMD       0xFFFFFFFF
-typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param);
-#endif
-#endif /* GL_AMD_occlusion_query_event */
-
-#ifndef GL_AMD_performance_monitor
-#define GL_AMD_performance_monitor 1
-#define GL_COUNTER_TYPE_AMD               0x8BC0
-#define GL_COUNTER_RANGE_AMD              0x8BC1
-#define GL_UNSIGNED_INT64_AMD             0x8BC2
-#define GL_PERCENTAGE_AMD                 0x8BC3
-#define GL_PERFMON_RESULT_AVAILABLE_AMD   0x8BC4
-#define GL_PERFMON_RESULT_SIZE_AMD        0x8BC5
-#define GL_PERFMON_RESULT_AMD             0x8BC6
-typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
-typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
-typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
-GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
-GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
-GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
-GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-#endif /* GL_AMD_performance_monitor */
-
-#ifndef GL_AMD_pinned_memory
-#define GL_AMD_pinned_memory 1
-#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
-#endif /* GL_AMD_pinned_memory */
-
-#ifndef GL_AMD_query_buffer_object
-#define GL_AMD_query_buffer_object 1
-#define GL_QUERY_BUFFER_AMD               0x9192
-#define GL_QUERY_BUFFER_BINDING_AMD       0x9193
-#define GL_QUERY_RESULT_NO_WAIT_AMD       0x9194
-#endif /* GL_AMD_query_buffer_object */
-
-#ifndef GL_AMD_sample_positions
-#define GL_AMD_sample_positions 1
-#define GL_SUBSAMPLE_DISTANCE_AMD         0x883F
-typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val);
-#endif
-#endif /* GL_AMD_sample_positions */
-
-#ifndef GL_AMD_seamless_cubemap_per_texture
-#define GL_AMD_seamless_cubemap_per_texture 1
-#endif /* GL_AMD_seamless_cubemap_per_texture */
-
-#ifndef GL_AMD_shader_atomic_counter_ops
-#define GL_AMD_shader_atomic_counter_ops 1
-#endif /* GL_AMD_shader_atomic_counter_ops */
-
-#ifndef GL_AMD_shader_stencil_export
-#define GL_AMD_shader_stencil_export 1
-#endif /* GL_AMD_shader_stencil_export */
-
-#ifndef GL_AMD_shader_trinary_minmax
-#define GL_AMD_shader_trinary_minmax 1
-#endif /* GL_AMD_shader_trinary_minmax */
-
-#ifndef GL_AMD_sparse_texture
-#define GL_AMD_sparse_texture 1
-#define GL_VIRTUAL_PAGE_SIZE_X_AMD        0x9195
-#define GL_VIRTUAL_PAGE_SIZE_Y_AMD        0x9196
-#define GL_VIRTUAL_PAGE_SIZE_Z_AMD        0x9197
-#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD    0x9198
-#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
-#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
-#define GL_MIN_SPARSE_LEVEL_AMD           0x919B
-#define GL_MIN_LOD_WARNING_AMD            0x919C
-#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
-typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-#endif
-#endif /* GL_AMD_sparse_texture */
-
-#ifndef GL_AMD_stencil_operation_extended
-#define GL_AMD_stencil_operation_extended 1
-#define GL_SET_AMD                        0x874A
-#define GL_REPLACE_VALUE_AMD              0x874B
-#define GL_STENCIL_OP_VALUE_AMD           0x874C
-#define GL_STENCIL_BACK_OP_VALUE_AMD      0x874D
-typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value);
-#endif
-#endif /* GL_AMD_stencil_operation_extended */
-
-#ifndef GL_AMD_texture_texture4
-#define GL_AMD_texture_texture4 1
-#endif /* GL_AMD_texture_texture4 */
-
-#ifndef GL_AMD_transform_feedback3_lines_triangles
-#define GL_AMD_transform_feedback3_lines_triangles 1
-#endif /* GL_AMD_transform_feedback3_lines_triangles */
-
-#ifndef GL_AMD_transform_feedback4
-#define GL_AMD_transform_feedback4 1
-#define GL_STREAM_RASTERIZATION_AMD       0x91A0
-#endif /* GL_AMD_transform_feedback4 */
-
-#ifndef GL_AMD_vertex_shader_layer
-#define GL_AMD_vertex_shader_layer 1
-#endif /* GL_AMD_vertex_shader_layer */
-
-#ifndef GL_AMD_vertex_shader_tessellator
-#define GL_AMD_vertex_shader_tessellator 1
-#define GL_SAMPLER_BUFFER_AMD             0x9001
-#define GL_INT_SAMPLER_BUFFER_AMD         0x9002
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
-#define GL_TESSELLATION_MODE_AMD          0x9004
-#define GL_TESSELLATION_FACTOR_AMD        0x9005
-#define GL_DISCRETE_AMD                   0x9006
-#define GL_CONTINUOUS_AMD                 0x9007
-typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
-typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor);
-GLAPI void APIENTRY glTessellationModeAMD (GLenum mode);
-#endif
-#endif /* GL_AMD_vertex_shader_tessellator */
-
-#ifndef GL_AMD_vertex_shader_viewport_index
-#define GL_AMD_vertex_shader_viewport_index 1
-#endif /* GL_AMD_vertex_shader_viewport_index */
-
-#ifndef GL_APPLE_aux_depth_stencil
-#define GL_APPLE_aux_depth_stencil 1
-#define GL_AUX_DEPTH_STENCIL_APPLE        0x8A14
-#endif /* GL_APPLE_aux_depth_stencil */
-
-#ifndef GL_APPLE_client_storage
-#define GL_APPLE_client_storage 1
-#define GL_UNPACK_CLIENT_STORAGE_APPLE    0x85B2
-#endif /* GL_APPLE_client_storage */
-
-#ifndef GL_APPLE_element_array
-#define GL_APPLE_element_array 1
-#define GL_ELEMENT_ARRAY_APPLE            0x8A0C
-#define GL_ELEMENT_ARRAY_TYPE_APPLE       0x8A0D
-#define GL_ELEMENT_ARRAY_POINTER_APPLE    0x8A0E
-typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer);
-typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const void *pointer);
-GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count);
-GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
-GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
-#endif
-#endif /* GL_APPLE_element_array */
-
-#ifndef GL_APPLE_fence
-#define GL_APPLE_fence 1
-#define GL_DRAW_PIXELS_APPLE              0x8A0A
-#define GL_FENCE_APPLE                    0x8A0B
-typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
-typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
-typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
-typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
-typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences);
-GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences);
-GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence);
-GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence);
-GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence);
-GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence);
-GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name);
-GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name);
-#endif
-#endif /* GL_APPLE_fence */
-
-#ifndef GL_APPLE_float_pixels
-#define GL_APPLE_float_pixels 1
-#define GL_HALF_APPLE                     0x140B
-#define GL_RGBA_FLOAT32_APPLE             0x8814
-#define GL_RGB_FLOAT32_APPLE              0x8815
-#define GL_ALPHA_FLOAT32_APPLE            0x8816
-#define GL_INTENSITY_FLOAT32_APPLE        0x8817
-#define GL_LUMINANCE_FLOAT32_APPLE        0x8818
-#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE  0x8819
-#define GL_RGBA_FLOAT16_APPLE             0x881A
-#define GL_RGB_FLOAT16_APPLE              0x881B
-#define GL_ALPHA_FLOAT16_APPLE            0x881C
-#define GL_INTENSITY_FLOAT16_APPLE        0x881D
-#define GL_LUMINANCE_FLOAT16_APPLE        0x881E
-#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE  0x881F
-#define GL_COLOR_FLOAT_APPLE              0x8A0F
-#endif /* GL_APPLE_float_pixels */
-
-#ifndef GL_APPLE_flush_buffer_range
-#define GL_APPLE_flush_buffer_range 1
-#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
-#define GL_BUFFER_FLUSHING_UNMAP_APPLE    0x8A13
-typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size);
-#endif
-#endif /* GL_APPLE_flush_buffer_range */
-
-#ifndef GL_APPLE_object_purgeable
-#define GL_APPLE_object_purgeable 1
-#define GL_BUFFER_OBJECT_APPLE            0x85B3
-#define GL_RELEASED_APPLE                 0x8A19
-#define GL_VOLATILE_APPLE                 0x8A1A
-#define GL_RETAINED_APPLE                 0x8A1B
-#define GL_UNDEFINED_APPLE                0x8A1C
-#define GL_PURGEABLE_APPLE                0x8A1D
-typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
-typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
-typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
-GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
-GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params);
-#endif
-#endif /* GL_APPLE_object_purgeable */
-
-#ifndef GL_APPLE_rgb_422
-#define GL_APPLE_rgb_422 1
-#define GL_RGB_422_APPLE                  0x8A1F
-#define GL_UNSIGNED_SHORT_8_8_APPLE       0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_APPLE   0x85BB
-#define GL_RGB_RAW_422_APPLE              0x8A51
-#endif /* GL_APPLE_rgb_422 */
-
-#ifndef GL_APPLE_row_bytes
-#define GL_APPLE_row_bytes 1
-#define GL_PACK_ROW_BYTES_APPLE           0x8A15
-#define GL_UNPACK_ROW_BYTES_APPLE         0x8A16
-#endif /* GL_APPLE_row_bytes */
-
-#ifndef GL_APPLE_specular_vector
-#define GL_APPLE_specular_vector 1
-#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
-#endif /* GL_APPLE_specular_vector */
-
-#ifndef GL_APPLE_texture_range
-#define GL_APPLE_texture_range 1
-#define GL_TEXTURE_RANGE_LENGTH_APPLE     0x85B7
-#define GL_TEXTURE_RANGE_POINTER_APPLE    0x85B8
-#define GL_TEXTURE_STORAGE_HINT_APPLE     0x85BC
-#define GL_STORAGE_PRIVATE_APPLE          0x85BD
-#define GL_STORAGE_CACHED_APPLE           0x85BE
-#define GL_STORAGE_SHARED_APPLE           0x85BF
-typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const void *pointer);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const void *pointer);
-GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_APPLE_texture_range */
-
-#ifndef GL_APPLE_transform_hint
-#define GL_APPLE_transform_hint 1
-#define GL_TRANSFORM_HINT_APPLE           0x85B1
-#endif /* GL_APPLE_transform_hint */
-
-#ifndef GL_APPLE_vertex_array_object
-#define GL_APPLE_vertex_array_object 1
-#define GL_VERTEX_ARRAY_BINDING_APPLE     0x85B5
-typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
-typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
-typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array);
-GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays);
-GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays);
-GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array);
-#endif
-#endif /* GL_APPLE_vertex_array_object */
-
-#ifndef GL_APPLE_vertex_array_range
-#define GL_APPLE_vertex_array_range 1
-#define GL_VERTEX_ARRAY_RANGE_APPLE       0x851D
-#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
-#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
-#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
-#define GL_STORAGE_CLIENT_APPLE           0x85B4
-typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
-typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, void *pointer);
-GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer);
-GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param);
-#endif
-#endif /* GL_APPLE_vertex_array_range */
-
-#ifndef GL_APPLE_vertex_program_evaluators
-#define GL_APPLE_vertex_program_evaluators 1
-#define GL_VERTEX_ATTRIB_MAP1_APPLE       0x8A00
-#define GL_VERTEX_ATTRIB_MAP2_APPLE       0x8A01
-#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE  0x8A02
-#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
-#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
-#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
-#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE  0x8A06
-#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
-#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
-#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname);
-GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname);
-GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname);
-GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
-GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
-GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
-GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
-#endif
-#endif /* GL_APPLE_vertex_program_evaluators */
-
-#ifndef GL_APPLE_ycbcr_422
-#define GL_APPLE_ycbcr_422 1
-#define GL_YCBCR_422_APPLE                0x85B9
-#endif /* GL_APPLE_ycbcr_422 */
-
-#ifndef GL_ATI_draw_buffers
-#define GL_ATI_draw_buffers 1
-#define GL_MAX_DRAW_BUFFERS_ATI           0x8824
-#define GL_DRAW_BUFFER0_ATI               0x8825
-#define GL_DRAW_BUFFER1_ATI               0x8826
-#define GL_DRAW_BUFFER2_ATI               0x8827
-#define GL_DRAW_BUFFER3_ATI               0x8828
-#define GL_DRAW_BUFFER4_ATI               0x8829
-#define GL_DRAW_BUFFER5_ATI               0x882A
-#define GL_DRAW_BUFFER6_ATI               0x882B
-#define GL_DRAW_BUFFER7_ATI               0x882C
-#define GL_DRAW_BUFFER8_ATI               0x882D
-#define GL_DRAW_BUFFER9_ATI               0x882E
-#define GL_DRAW_BUFFER10_ATI              0x882F
-#define GL_DRAW_BUFFER11_ATI              0x8830
-#define GL_DRAW_BUFFER12_ATI              0x8831
-#define GL_DRAW_BUFFER13_ATI              0x8832
-#define GL_DRAW_BUFFER14_ATI              0x8833
-#define GL_DRAW_BUFFER15_ATI              0x8834
-typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs);
-#endif
-#endif /* GL_ATI_draw_buffers */
-
-#ifndef GL_ATI_element_array
-#define GL_ATI_element_array 1
-#define GL_ELEMENT_ARRAY_ATI              0x8768
-#define GL_ELEMENT_ARRAY_TYPE_ATI         0x8769
-#define GL_ELEMENT_ARRAY_POINTER_ATI      0x876A
-typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer);
-typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerATI (GLenum type, const void *pointer);
-GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count);
-GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count);
-#endif
-#endif /* GL_ATI_element_array */
-
-#ifndef GL_ATI_envmap_bumpmap
-#define GL_ATI_envmap_bumpmap 1
-#define GL_BUMP_ROT_MATRIX_ATI            0x8775
-#define GL_BUMP_ROT_MATRIX_SIZE_ATI       0x8776
-#define GL_BUMP_NUM_TEX_UNITS_ATI         0x8777
-#define GL_BUMP_TEX_UNITS_ATI             0x8778
-#define GL_DUDV_ATI                       0x8779
-#define GL_DU8DV8_ATI                     0x877A
-#define GL_BUMP_ENVMAP_ATI                0x877B
-#define GL_BUMP_TARGET_ATI                0x877C
-typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
-typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param);
-GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param);
-GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param);
-#endif
-#endif /* GL_ATI_envmap_bumpmap */
-
-#ifndef GL_ATI_fragment_shader
-#define GL_ATI_fragment_shader 1
-#define GL_FRAGMENT_SHADER_ATI            0x8920
-#define GL_REG_0_ATI                      0x8921
-#define GL_REG_1_ATI                      0x8922
-#define GL_REG_2_ATI                      0x8923
-#define GL_REG_3_ATI                      0x8924
-#define GL_REG_4_ATI                      0x8925
-#define GL_REG_5_ATI                      0x8926
-#define GL_REG_6_ATI                      0x8927
-#define GL_REG_7_ATI                      0x8928
-#define GL_REG_8_ATI                      0x8929
-#define GL_REG_9_ATI                      0x892A
-#define GL_REG_10_ATI                     0x892B
-#define GL_REG_11_ATI                     0x892C
-#define GL_REG_12_ATI                     0x892D
-#define GL_REG_13_ATI                     0x892E
-#define GL_REG_14_ATI                     0x892F
-#define GL_REG_15_ATI                     0x8930
-#define GL_REG_16_ATI                     0x8931
-#define GL_REG_17_ATI                     0x8932
-#define GL_REG_18_ATI                     0x8933
-#define GL_REG_19_ATI                     0x8934
-#define GL_REG_20_ATI                     0x8935
-#define GL_REG_21_ATI                     0x8936
-#define GL_REG_22_ATI                     0x8937
-#define GL_REG_23_ATI                     0x8938
-#define GL_REG_24_ATI                     0x8939
-#define GL_REG_25_ATI                     0x893A
-#define GL_REG_26_ATI                     0x893B
-#define GL_REG_27_ATI                     0x893C
-#define GL_REG_28_ATI                     0x893D
-#define GL_REG_29_ATI                     0x893E
-#define GL_REG_30_ATI                     0x893F
-#define GL_REG_31_ATI                     0x8940
-#define GL_CON_0_ATI                      0x8941
-#define GL_CON_1_ATI                      0x8942
-#define GL_CON_2_ATI                      0x8943
-#define GL_CON_3_ATI                      0x8944
-#define GL_CON_4_ATI                      0x8945
-#define GL_CON_5_ATI                      0x8946
-#define GL_CON_6_ATI                      0x8947
-#define GL_CON_7_ATI                      0x8948
-#define GL_CON_8_ATI                      0x8949
-#define GL_CON_9_ATI                      0x894A
-#define GL_CON_10_ATI                     0x894B
-#define GL_CON_11_ATI                     0x894C
-#define GL_CON_12_ATI                     0x894D
-#define GL_CON_13_ATI                     0x894E
-#define GL_CON_14_ATI                     0x894F
-#define GL_CON_15_ATI                     0x8950
-#define GL_CON_16_ATI                     0x8951
-#define GL_CON_17_ATI                     0x8952
-#define GL_CON_18_ATI                     0x8953
-#define GL_CON_19_ATI                     0x8954
-#define GL_CON_20_ATI                     0x8955
-#define GL_CON_21_ATI                     0x8956
-#define GL_CON_22_ATI                     0x8957
-#define GL_CON_23_ATI                     0x8958
-#define GL_CON_24_ATI                     0x8959
-#define GL_CON_25_ATI                     0x895A
-#define GL_CON_26_ATI                     0x895B
-#define GL_CON_27_ATI                     0x895C
-#define GL_CON_28_ATI                     0x895D
-#define GL_CON_29_ATI                     0x895E
-#define GL_CON_30_ATI                     0x895F
-#define GL_CON_31_ATI                     0x8960
-#define GL_MOV_ATI                        0x8961
-#define GL_ADD_ATI                        0x8963
-#define GL_MUL_ATI                        0x8964
-#define GL_SUB_ATI                        0x8965
-#define GL_DOT3_ATI                       0x8966
-#define GL_DOT4_ATI                       0x8967
-#define GL_MAD_ATI                        0x8968
-#define GL_LERP_ATI                       0x8969
-#define GL_CND_ATI                        0x896A
-#define GL_CND0_ATI                       0x896B
-#define GL_DOT2_ADD_ATI                   0x896C
-#define GL_SECONDARY_INTERPOLATOR_ATI     0x896D
-#define GL_NUM_FRAGMENT_REGISTERS_ATI     0x896E
-#define GL_NUM_FRAGMENT_CONSTANTS_ATI     0x896F
-#define GL_NUM_PASSES_ATI                 0x8970
-#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI  0x8971
-#define GL_NUM_INSTRUCTIONS_TOTAL_ATI     0x8972
-#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
-#define GL_NUM_LOOPBACK_COMPONENTS_ATI    0x8974
-#define GL_COLOR_ALPHA_PAIRING_ATI        0x8975
-#define GL_SWIZZLE_STR_ATI                0x8976
-#define GL_SWIZZLE_STQ_ATI                0x8977
-#define GL_SWIZZLE_STR_DR_ATI             0x8978
-#define GL_SWIZZLE_STQ_DQ_ATI             0x8979
-#define GL_SWIZZLE_STRQ_ATI               0x897A
-#define GL_SWIZZLE_STRQ_DQ_ATI            0x897B
-#define GL_RED_BIT_ATI                    0x00000001
-#define GL_GREEN_BIT_ATI                  0x00000002
-#define GL_BLUE_BIT_ATI                   0x00000004
-#define GL_2X_BIT_ATI                     0x00000001
-#define GL_4X_BIT_ATI                     0x00000002
-#define GL_8X_BIT_ATI                     0x00000004
-#define GL_HALF_BIT_ATI                   0x00000008
-#define GL_QUARTER_BIT_ATI                0x00000010
-#define GL_EIGHTH_BIT_ATI                 0x00000020
-#define GL_SATURATE_BIT_ATI               0x00000040
-#define GL_COMP_BIT_ATI                   0x00000002
-#define GL_NEGATE_BIT_ATI                 0x00000004
-#define GL_BIAS_BIT_ATI                   0x00000008
-typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
-typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
-typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);
-typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
-typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
-typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range);
-GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id);
-GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id);
-GLAPI void APIENTRY glBeginFragmentShaderATI (void);
-GLAPI void APIENTRY glEndFragmentShaderATI (void);
-GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle);
-GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle);
-GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value);
-#endif
-#endif /* GL_ATI_fragment_shader */
-
-#ifndef GL_ATI_map_object_buffer
-#define GL_ATI_map_object_buffer 1
-typedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer);
-GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer);
-#endif
-#endif /* GL_ATI_map_object_buffer */
-
-#ifndef GL_ATI_meminfo
-#define GL_ATI_meminfo 1
-#define GL_VBO_FREE_MEMORY_ATI            0x87FB
-#define GL_TEXTURE_FREE_MEMORY_ATI        0x87FC
-#define GL_RENDERBUFFER_FREE_MEMORY_ATI   0x87FD
-#endif /* GL_ATI_meminfo */
-
-#ifndef GL_ATI_pixel_format_float
-#define GL_ATI_pixel_format_float 1
-#define GL_RGBA_FLOAT_MODE_ATI            0x8820
-#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
-#endif /* GL_ATI_pixel_format_float */
-
-#ifndef GL_ATI_pn_triangles
-#define GL_ATI_pn_triangles 1
-#define GL_PN_TRIANGLES_ATI               0x87F0
-#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
-#define GL_PN_TRIANGLES_POINT_MODE_ATI    0x87F2
-#define GL_PN_TRIANGLES_NORMAL_MODE_ATI   0x87F3
-#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
-#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
-#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
-#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
-#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
-typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param);
-GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param);
-#endif
-#endif /* GL_ATI_pn_triangles */
-
-#ifndef GL_ATI_separate_stencil
-#define GL_ATI_separate_stencil 1
-#define GL_STENCIL_BACK_FUNC_ATI          0x8800
-#define GL_STENCIL_BACK_FAIL_ATI          0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
-typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-#endif
-#endif /* GL_ATI_separate_stencil */
-
-#ifndef GL_ATI_text_fragment_shader
-#define GL_ATI_text_fragment_shader 1
-#define GL_TEXT_FRAGMENT_SHADER_ATI       0x8200
-#endif /* GL_ATI_text_fragment_shader */
-
-#ifndef GL_ATI_texture_env_combine3
-#define GL_ATI_texture_env_combine3 1
-#define GL_MODULATE_ADD_ATI               0x8744
-#define GL_MODULATE_SIGNED_ADD_ATI        0x8745
-#define GL_MODULATE_SUBTRACT_ATI          0x8746
-#endif /* GL_ATI_texture_env_combine3 */
-
-#ifndef GL_ATI_texture_float
-#define GL_ATI_texture_float 1
-#define GL_RGBA_FLOAT32_ATI               0x8814
-#define GL_RGB_FLOAT32_ATI                0x8815
-#define GL_ALPHA_FLOAT32_ATI              0x8816
-#define GL_INTENSITY_FLOAT32_ATI          0x8817
-#define GL_LUMINANCE_FLOAT32_ATI          0x8818
-#define GL_LUMINANCE_ALPHA_FLOAT32_ATI    0x8819
-#define GL_RGBA_FLOAT16_ATI               0x881A
-#define GL_RGB_FLOAT16_ATI                0x881B
-#define GL_ALPHA_FLOAT16_ATI              0x881C
-#define GL_INTENSITY_FLOAT16_ATI          0x881D
-#define GL_LUMINANCE_FLOAT16_ATI          0x881E
-#define GL_LUMINANCE_ALPHA_FLOAT16_ATI    0x881F
-#endif /* GL_ATI_texture_float */
-
-#ifndef GL_ATI_texture_mirror_once
-#define GL_ATI_texture_mirror_once 1
-#define GL_MIRROR_CLAMP_ATI               0x8742
-#define GL_MIRROR_CLAMP_TO_EDGE_ATI       0x8743
-#endif /* GL_ATI_texture_mirror_once */
-
-#ifndef GL_ATI_vertex_array_object
-#define GL_ATI_vertex_array_object 1
-#define GL_STATIC_ATI                     0x8760
-#define GL_DYNAMIC_ATI                    0x8761
-#define GL_PRESERVE_ATI                   0x8762
-#define GL_DISCARD_ATI                    0x8763
-#define GL_OBJECT_BUFFER_SIZE_ATI         0x8764
-#define GL_OBJECT_BUFFER_USAGE_ATI        0x8765
-#define GL_ARRAY_OBJECT_BUFFER_ATI        0x8766
-#define GL_ARRAY_OBJECT_OFFSET_ATI        0x8767
-typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage);
-typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
-typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage);
-GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer);
-GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
-GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer);
-GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params);
-GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ATI_vertex_array_object */
-
-#ifndef GL_ATI_vertex_attrib_array_object
-#define GL_ATI_vertex_attrib_array_object 1
-typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ATI_vertex_attrib_array_object */
-
-#ifndef GL_ATI_vertex_streams
-#define GL_ATI_vertex_streams 1
-#define GL_MAX_VERTEX_STREAMS_ATI         0x876B
-#define GL_VERTEX_STREAM0_ATI             0x876C
-#define GL_VERTEX_STREAM1_ATI             0x876D
-#define GL_VERTEX_STREAM2_ATI             0x876E
-#define GL_VERTEX_STREAM3_ATI             0x876F
-#define GL_VERTEX_STREAM4_ATI             0x8770
-#define GL_VERTEX_STREAM5_ATI             0x8771
-#define GL_VERTEX_STREAM6_ATI             0x8772
-#define GL_VERTEX_STREAM7_ATI             0x8773
-#define GL_VERTEX_SOURCE_ATI              0x8774
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
-typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x);
-GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x);
-GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x);
-GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x);
-GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y);
-GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
-GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords);
-GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
-GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz);
-GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
-GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
-GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream);
-GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param);
-GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param);
-#endif
-#endif /* GL_ATI_vertex_streams */
-
-#ifndef GL_EXT_422_pixels
-#define GL_EXT_422_pixels 1
-#define GL_422_EXT                        0x80CC
-#define GL_422_REV_EXT                    0x80CD
-#define GL_422_AVERAGE_EXT                0x80CE
-#define GL_422_REV_AVERAGE_EXT            0x80CF
-#endif /* GL_EXT_422_pixels */
-
-#ifndef GL_EXT_abgr
-#define GL_EXT_abgr 1
-#define GL_ABGR_EXT                       0x8000
-#endif /* GL_EXT_abgr */
-
-#ifndef GL_EXT_bgra
-#define GL_EXT_bgra 1
-#define GL_BGR_EXT                        0x80E0
-#define GL_BGRA_EXT                       0x80E1
-#endif /* GL_EXT_bgra */
-
-#ifndef GL_EXT_bindable_uniform
-#define GL_EXT_bindable_uniform 1
-#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
-#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
-#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
-#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT  0x8DED
-#define GL_UNIFORM_BUFFER_EXT             0x8DEE
-#define GL_UNIFORM_BUFFER_BINDING_EXT     0x8DEF
-typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
-typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer);
-GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location);
-GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location);
-#endif
-#endif /* GL_EXT_bindable_uniform */
-
-#ifndef GL_EXT_blend_color
-#define GL_EXT_blend_color 1
-#define GL_CONSTANT_COLOR_EXT             0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR_EXT   0x8002
-#define GL_CONSTANT_ALPHA_EXT             0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT   0x8004
-#define GL_BLEND_COLOR_EXT                0x8005
-typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-#endif
-#endif /* GL_EXT_blend_color */
-
-#ifndef GL_EXT_blend_equation_separate
-#define GL_EXT_blend_equation_separate 1
-#define GL_BLEND_EQUATION_RGB_EXT         0x8009
-#define GL_BLEND_EQUATION_ALPHA_EXT       0x883D
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha);
-#endif
-#endif /* GL_EXT_blend_equation_separate */
-
-#ifndef GL_EXT_blend_func_separate
-#define GL_EXT_blend_func_separate 1
-#define GL_BLEND_DST_RGB_EXT              0x80C8
-#define GL_BLEND_SRC_RGB_EXT              0x80C9
-#define GL_BLEND_DST_ALPHA_EXT            0x80CA
-#define GL_BLEND_SRC_ALPHA_EXT            0x80CB
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#endif
-#endif /* GL_EXT_blend_func_separate */
-
-#ifndef GL_EXT_blend_logic_op
-#define GL_EXT_blend_logic_op 1
-#endif /* GL_EXT_blend_logic_op */
-
-#ifndef GL_EXT_blend_minmax
-#define GL_EXT_blend_minmax 1
-#define GL_MIN_EXT                        0x8007
-#define GL_MAX_EXT                        0x8008
-#define GL_FUNC_ADD_EXT                   0x8006
-#define GL_BLEND_EQUATION_EXT             0x8009
-typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationEXT (GLenum mode);
-#endif
-#endif /* GL_EXT_blend_minmax */
-
-#ifndef GL_EXT_blend_subtract
-#define GL_EXT_blend_subtract 1
-#define GL_FUNC_SUBTRACT_EXT              0x800A
-#define GL_FUNC_REVERSE_SUBTRACT_EXT      0x800B
-#endif /* GL_EXT_blend_subtract */
-
-#ifndef GL_EXT_clip_volume_hint
-#define GL_EXT_clip_volume_hint 1
-#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT  0x80F0
-#endif /* GL_EXT_clip_volume_hint */
-
-#ifndef GL_EXT_cmyka
-#define GL_EXT_cmyka 1
-#define GL_CMYK_EXT                       0x800C
-#define GL_CMYKA_EXT                      0x800D
-#define GL_PACK_CMYK_HINT_EXT             0x800E
-#define GL_UNPACK_CMYK_HINT_EXT           0x800F
-#endif /* GL_EXT_cmyka */
-
-#ifndef GL_EXT_color_subtable
-#define GL_EXT_color_subtable 1
-typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-#endif
-#endif /* GL_EXT_color_subtable */
-
-#ifndef GL_EXT_compiled_vertex_array
-#define GL_EXT_compiled_vertex_array 1
-#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT   0x81A8
-#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT   0x81A9
-typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count);
-GLAPI void APIENTRY glUnlockArraysEXT (void);
-#endif
-#endif /* GL_EXT_compiled_vertex_array */
-
-#ifndef GL_EXT_convolution
-#define GL_EXT_convolution 1
-#define GL_CONVOLUTION_1D_EXT             0x8010
-#define GL_CONVOLUTION_2D_EXT             0x8011
-#define GL_SEPARABLE_2D_EXT               0x8012
-#define GL_CONVOLUTION_BORDER_MODE_EXT    0x8013
-#define GL_CONVOLUTION_FILTER_SCALE_EXT   0x8014
-#define GL_CONVOLUTION_FILTER_BIAS_EXT    0x8015
-#define GL_REDUCE_EXT                     0x8016
-#define GL_CONVOLUTION_FORMAT_EXT         0x8017
-#define GL_CONVOLUTION_WIDTH_EXT          0x8018
-#define GL_CONVOLUTION_HEIGHT_EXT         0x8019
-#define GL_MAX_CONVOLUTION_WIDTH_EXT      0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT_EXT     0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS_EXT  0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params);
-GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params);
-GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image);
-GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-#endif
-#endif /* GL_EXT_convolution */
-
-#ifndef GL_EXT_coordinate_frame
-#define GL_EXT_coordinate_frame 1
-#define GL_TANGENT_ARRAY_EXT              0x8439
-#define GL_BINORMAL_ARRAY_EXT             0x843A
-#define GL_CURRENT_TANGENT_EXT            0x843B
-#define GL_CURRENT_BINORMAL_EXT           0x843C
-#define GL_TANGENT_ARRAY_TYPE_EXT         0x843E
-#define GL_TANGENT_ARRAY_STRIDE_EXT       0x843F
-#define GL_BINORMAL_ARRAY_TYPE_EXT        0x8440
-#define GL_BINORMAL_ARRAY_STRIDE_EXT      0x8441
-#define GL_TANGENT_ARRAY_POINTER_EXT      0x8442
-#define GL_BINORMAL_ARRAY_POINTER_EXT     0x8443
-#define GL_MAP1_TANGENT_EXT               0x8444
-#define GL_MAP2_TANGENT_EXT               0x8445
-#define GL_MAP1_BINORMAL_EXT              0x8446
-#define GL_MAP2_BINORMAL_EXT              0x8447
-typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
-typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
-typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
-typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
-typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
-typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
-typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
-typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
-typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
-typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
-typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz);
-GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v);
-GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz);
-GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v);
-GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz);
-GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v);
-GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz);
-GLAPI void APIENTRY glTangent3ivEXT (const GLint *v);
-GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz);
-GLAPI void APIENTRY glTangent3svEXT (const GLshort *v);
-GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz);
-GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v);
-GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz);
-GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v);
-GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz);
-GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v);
-GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz);
-GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v);
-GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz);
-GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v);
-GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_coordinate_frame */
-
-#ifndef GL_EXT_copy_texture
-#define GL_EXT_copy_texture 1
-typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_EXT_copy_texture */
-
-#ifndef GL_EXT_cull_vertex
-#define GL_EXT_cull_vertex 1
-#define GL_CULL_VERTEX_EXT                0x81AA
-#define GL_CULL_VERTEX_EYE_POSITION_EXT   0x81AB
-#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
-typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_EXT_cull_vertex */
-
-#ifndef GL_EXT_debug_label
-#define GL_EXT_debug_label 1
-#define GL_PROGRAM_PIPELINE_OBJECT_EXT    0x8A4F
-#define GL_PROGRAM_OBJECT_EXT             0x8B40
-#define GL_SHADER_OBJECT_EXT              0x8B48
-#define GL_BUFFER_OBJECT_EXT              0x9151
-#define GL_QUERY_OBJECT_EXT               0x9153
-#define GL_VERTEX_ARRAY_OBJECT_EXT        0x9154
-typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-#endif /* GL_EXT_debug_label */
-
-#ifndef GL_EXT_debug_marker
-#define GL_EXT_debug_marker 1
-typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
-GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
-GLAPI void APIENTRY glPopGroupMarkerEXT (void);
-#endif
-#endif /* GL_EXT_debug_marker */
-
-#ifndef GL_EXT_depth_bounds_test
-#define GL_EXT_depth_bounds_test 1
-#define GL_DEPTH_BOUNDS_TEST_EXT          0x8890
-#define GL_DEPTH_BOUNDS_EXT               0x8891
-typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);
-#endif
-#endif /* GL_EXT_depth_bounds_test */
-
-#ifndef GL_EXT_direct_state_access
-#define GL_EXT_direct_state_access 1
-#define GL_PROGRAM_MATRIX_EXT             0x8E2D
-#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT   0x8E2E
-#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
-typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
-typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);
-typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data);
-typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
-typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img);
-typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);
-typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
-typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
-typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
-typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
-GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
-GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
-GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
-GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
-GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
-GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
-GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
-GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
-GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
-GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
-GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
-GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
-GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data);
-GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
-GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
-GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
-GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
-GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
-GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img);
-GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img);
-GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
-GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params);
-GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
-GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
-GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
-GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
-GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params);
-GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string);
-GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
-GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
-GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
-GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
-GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
-GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
-GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array);
-GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array);
-GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param);
-GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param);
-GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
-GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
-GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor);
-#endif
-#endif /* GL_EXT_direct_state_access */
-
-#ifndef GL_EXT_draw_buffers2
-#define GL_EXT_draw_buffers2 1
-typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-#endif
-#endif /* GL_EXT_draw_buffers2 */
-
-#ifndef GL_EXT_draw_instanced
-#define GL_EXT_draw_instanced 1
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
-GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#endif
-#endif /* GL_EXT_draw_instanced */
-
-#ifndef GL_EXT_draw_range_elements
-#define GL_EXT_draw_range_elements 1
-#define GL_MAX_ELEMENTS_VERTICES_EXT      0x80E8
-#define GL_MAX_ELEMENTS_INDICES_EXT       0x80E9
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-#endif
-#endif /* GL_EXT_draw_range_elements */
-
-#ifndef GL_EXT_fog_coord
-#define GL_EXT_fog_coord 1
-#define GL_FOG_COORDINATE_SOURCE_EXT      0x8450
-#define GL_FOG_COORDINATE_EXT             0x8451
-#define GL_FRAGMENT_DEPTH_EXT             0x8452
-#define GL_CURRENT_FOG_COORDINATE_EXT     0x8453
-#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT  0x8454
-#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
-#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
-#define GL_FOG_COORDINATE_ARRAY_EXT       0x8457
-typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
-typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord);
-GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord);
-GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord);
-GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord);
-GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_fog_coord */
-
-#ifndef GL_EXT_framebuffer_blit
-#define GL_EXT_framebuffer_blit 1
-#define GL_READ_FRAMEBUFFER_EXT           0x8CA8
-#define GL_DRAW_FRAMEBUFFER_EXT           0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_EXT   0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_EXT   0x8CAA
-typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-#endif /* GL_EXT_framebuffer_blit */
-
-#ifndef GL_EXT_framebuffer_multisample
-#define GL_EXT_framebuffer_multisample 1
-#define GL_RENDERBUFFER_SAMPLES_EXT       0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
-#define GL_MAX_SAMPLES_EXT                0x8D57
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_EXT_framebuffer_multisample */
-
-#ifndef GL_EXT_framebuffer_multisample_blit_scaled
-#define GL_EXT_framebuffer_multisample_blit_scaled 1
-#define GL_SCALED_RESOLVE_FASTEST_EXT     0x90BA
-#define GL_SCALED_RESOLVE_NICEST_EXT      0x90BB
-#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
-
-#ifndef GL_EXT_framebuffer_object
-#define GL_EXT_framebuffer_object 1
-#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
-#define GL_MAX_RENDERBUFFER_SIZE_EXT      0x84E8
-#define GL_FRAMEBUFFER_BINDING_EXT        0x8CA6
-#define GL_RENDERBUFFER_BINDING_EXT       0x8CA7
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
-#define GL_FRAMEBUFFER_COMPLETE_EXT       0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
-#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
-#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
-#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
-#define GL_FRAMEBUFFER_UNSUPPORTED_EXT    0x8CDD
-#define GL_MAX_COLOR_ATTACHMENTS_EXT      0x8CDF
-#define GL_COLOR_ATTACHMENT0_EXT          0x8CE0
-#define GL_COLOR_ATTACHMENT1_EXT          0x8CE1
-#define GL_COLOR_ATTACHMENT2_EXT          0x8CE2
-#define GL_COLOR_ATTACHMENT3_EXT          0x8CE3
-#define GL_COLOR_ATTACHMENT4_EXT          0x8CE4
-#define GL_COLOR_ATTACHMENT5_EXT          0x8CE5
-#define GL_COLOR_ATTACHMENT6_EXT          0x8CE6
-#define GL_COLOR_ATTACHMENT7_EXT          0x8CE7
-#define GL_COLOR_ATTACHMENT8_EXT          0x8CE8
-#define GL_COLOR_ATTACHMENT9_EXT          0x8CE9
-#define GL_COLOR_ATTACHMENT10_EXT         0x8CEA
-#define GL_COLOR_ATTACHMENT11_EXT         0x8CEB
-#define GL_COLOR_ATTACHMENT12_EXT         0x8CEC
-#define GL_COLOR_ATTACHMENT13_EXT         0x8CED
-#define GL_COLOR_ATTACHMENT14_EXT         0x8CEE
-#define GL_COLOR_ATTACHMENT15_EXT         0x8CEF
-#define GL_DEPTH_ATTACHMENT_EXT           0x8D00
-#define GL_STENCIL_ATTACHMENT_EXT         0x8D20
-#define GL_FRAMEBUFFER_EXT                0x8D40
-#define GL_RENDERBUFFER_EXT               0x8D41
-#define GL_RENDERBUFFER_WIDTH_EXT         0x8D42
-#define GL_RENDERBUFFER_HEIGHT_EXT        0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
-#define GL_STENCIL_INDEX1_EXT             0x8D46
-#define GL_STENCIL_INDEX4_EXT             0x8D47
-#define GL_STENCIL_INDEX8_EXT             0x8D48
-#define GL_STENCIL_INDEX16_EXT            0x8D49
-#define GL_RENDERBUFFER_RED_SIZE_EXT      0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE_EXT    0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE_EXT     0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE_EXT    0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE_EXT    0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE_EXT  0x8D55
-typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
-typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
-typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
-typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
-typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer);
-GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);
-GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
-GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer);
-GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer);
-GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);
-GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
-GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target);
-GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target);
-#endif
-#endif /* GL_EXT_framebuffer_object */
-
-#ifndef GL_EXT_framebuffer_sRGB
-#define GL_EXT_framebuffer_sRGB 1
-#define GL_FRAMEBUFFER_SRGB_EXT           0x8DB9
-#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT   0x8DBA
-#endif /* GL_EXT_framebuffer_sRGB */
-
-#ifndef GL_EXT_geometry_shader4
-#define GL_EXT_geometry_shader4 1
-#define GL_GEOMETRY_SHADER_EXT            0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT_EXT      0x8DDA
-#define GL_GEOMETRY_INPUT_TYPE_EXT        0x8DDB
-#define GL_GEOMETRY_OUTPUT_TYPE_EXT       0x8DDC
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
-#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
-#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
-#define GL_MAX_VARYING_COMPONENTS_EXT     0x8B4B
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
-#define GL_LINES_ADJACENCY_EXT            0x000A
-#define GL_LINE_STRIP_ADJACENCY_EXT       0x000B
-#define GL_TRIANGLES_ADJACENCY_EXT        0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY_EXT   0x000D
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
-#define GL_PROGRAM_POINT_SIZE_EXT         0x8642
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
-#endif
-#endif /* GL_EXT_geometry_shader4 */
-
-#ifndef GL_EXT_gpu_program_parameters
-#define GL_EXT_gpu_program_parameters 1
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-#endif
-#endif /* GL_EXT_gpu_program_parameters */
-
-#ifndef GL_EXT_gpu_shader4
-#define GL_EXT_gpu_shader4 1
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
-#define GL_SAMPLER_1D_ARRAY_EXT           0x8DC0
-#define GL_SAMPLER_2D_ARRAY_EXT           0x8DC1
-#define GL_SAMPLER_BUFFER_EXT             0x8DC2
-#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT    0x8DC3
-#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT    0x8DC4
-#define GL_SAMPLER_CUBE_SHADOW_EXT        0x8DC5
-#define GL_UNSIGNED_INT_VEC2_EXT          0x8DC6
-#define GL_UNSIGNED_INT_VEC3_EXT          0x8DC7
-#define GL_UNSIGNED_INT_VEC4_EXT          0x8DC8
-#define GL_INT_SAMPLER_1D_EXT             0x8DC9
-#define GL_INT_SAMPLER_2D_EXT             0x8DCA
-#define GL_INT_SAMPLER_3D_EXT             0x8DCB
-#define GL_INT_SAMPLER_CUBE_EXT           0x8DCC
-#define GL_INT_SAMPLER_2D_RECT_EXT        0x8DCD
-#define GL_INT_SAMPLER_1D_ARRAY_EXT       0x8DCE
-#define GL_INT_SAMPLER_2D_ARRAY_EXT       0x8DCF
-#define GL_INT_SAMPLER_BUFFER_EXT         0x8DD0
-#define GL_UNSIGNED_INT_SAMPLER_1D_EXT    0x8DD1
-#define GL_UNSIGNED_INT_SAMPLER_2D_EXT    0x8DD2
-#define GL_UNSIGNED_INT_SAMPLER_3D_EXT    0x8DD3
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT  0x8DD4
-#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
-#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
-#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
-#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT   0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT   0x8905
-typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params);
-GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0);
-GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value);
-#endif
-#endif /* GL_EXT_gpu_shader4 */
-
-#ifndef GL_EXT_histogram
-#define GL_EXT_histogram 1
-#define GL_HISTOGRAM_EXT                  0x8024
-#define GL_PROXY_HISTOGRAM_EXT            0x8025
-#define GL_HISTOGRAM_WIDTH_EXT            0x8026
-#define GL_HISTOGRAM_FORMAT_EXT           0x8027
-#define GL_HISTOGRAM_RED_SIZE_EXT         0x8028
-#define GL_HISTOGRAM_GREEN_SIZE_EXT       0x8029
-#define GL_HISTOGRAM_BLUE_SIZE_EXT        0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE_EXT       0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT   0x802C
-#define GL_HISTOGRAM_SINK_EXT             0x802D
-#define GL_MINMAX_EXT                     0x802E
-#define GL_MINMAX_FORMAT_EXT              0x802F
-#define GL_MINMAX_SINK_EXT                0x8030
-#define GL_TABLE_TOO_LARGE_EXT            0x8031
-typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glResetHistogramEXT (GLenum target);
-GLAPI void APIENTRY glResetMinmaxEXT (GLenum target);
-#endif
-#endif /* GL_EXT_histogram */
-
-#ifndef GL_EXT_index_array_formats
-#define GL_EXT_index_array_formats 1
-#define GL_IUI_V2F_EXT                    0x81AD
-#define GL_IUI_V3F_EXT                    0x81AE
-#define GL_IUI_N3F_V2F_EXT                0x81AF
-#define GL_IUI_N3F_V3F_EXT                0x81B0
-#define GL_T2F_IUI_V2F_EXT                0x81B1
-#define GL_T2F_IUI_V3F_EXT                0x81B2
-#define GL_T2F_IUI_N3F_V2F_EXT            0x81B3
-#define GL_T2F_IUI_N3F_V3F_EXT            0x81B4
-#endif /* GL_EXT_index_array_formats */
-
-#ifndef GL_EXT_index_func
-#define GL_EXT_index_func 1
-#define GL_INDEX_TEST_EXT                 0x81B5
-#define GL_INDEX_TEST_FUNC_EXT            0x81B6
-#define GL_INDEX_TEST_REF_EXT             0x81B7
-typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref);
-#endif
-#endif /* GL_EXT_index_func */
-
-#ifndef GL_EXT_index_material
-#define GL_EXT_index_material 1
-#define GL_INDEX_MATERIAL_EXT             0x81B8
-#define GL_INDEX_MATERIAL_PARAMETER_EXT   0x81B9
-#define GL_INDEX_MATERIAL_FACE_EXT        0x81BA
-typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode);
-#endif
-#endif /* GL_EXT_index_material */
-
-#ifndef GL_EXT_index_texture
-#define GL_EXT_index_texture 1
-#endif /* GL_EXT_index_texture */
-
-#ifndef GL_EXT_light_texture
-#define GL_EXT_light_texture 1
-#define GL_FRAGMENT_MATERIAL_EXT          0x8349
-#define GL_FRAGMENT_NORMAL_EXT            0x834A
-#define GL_FRAGMENT_COLOR_EXT             0x834C
-#define GL_ATTENUATION_EXT                0x834D
-#define GL_SHADOW_ATTENUATION_EXT         0x834E
-#define GL_TEXTURE_APPLICATION_MODE_EXT   0x834F
-#define GL_TEXTURE_LIGHT_EXT              0x8350
-#define GL_TEXTURE_MATERIAL_FACE_EXT      0x8351
-#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
-typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
-typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glApplyTextureEXT (GLenum mode);
-GLAPI void APIENTRY glTextureLightEXT (GLenum pname);
-GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode);
-#endif
-#endif /* GL_EXT_light_texture */
-
-#ifndef GL_EXT_misc_attribute
-#define GL_EXT_misc_attribute 1
-#endif /* GL_EXT_misc_attribute */
-
-#ifndef GL_EXT_multi_draw_arrays
-#define GL_EXT_multi_draw_arrays 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
-#endif
-#endif /* GL_EXT_multi_draw_arrays */
-
-#ifndef GL_EXT_multisample
-#define GL_EXT_multisample 1
-#define GL_MULTISAMPLE_EXT                0x809D
-#define GL_SAMPLE_ALPHA_TO_MASK_EXT       0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_EXT        0x809F
-#define GL_SAMPLE_MASK_EXT                0x80A0
-#define GL_1PASS_EXT                      0x80A1
-#define GL_2PASS_0_EXT                    0x80A2
-#define GL_2PASS_1_EXT                    0x80A3
-#define GL_4PASS_0_EXT                    0x80A4
-#define GL_4PASS_1_EXT                    0x80A5
-#define GL_4PASS_2_EXT                    0x80A6
-#define GL_4PASS_3_EXT                    0x80A7
-#define GL_SAMPLE_BUFFERS_EXT             0x80A8
-#define GL_SAMPLES_EXT                    0x80A9
-#define GL_SAMPLE_MASK_VALUE_EXT          0x80AA
-#define GL_SAMPLE_MASK_INVERT_EXT         0x80AB
-#define GL_SAMPLE_PATTERN_EXT             0x80AC
-#define GL_MULTISAMPLE_BIT_EXT            0x20000000
-typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert);
-GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern);
-#endif
-#endif /* GL_EXT_multisample */
-
-#ifndef GL_EXT_packed_depth_stencil
-#define GL_EXT_packed_depth_stencil 1
-#define GL_DEPTH_STENCIL_EXT              0x84F9
-#define GL_UNSIGNED_INT_24_8_EXT          0x84FA
-#define GL_DEPTH24_STENCIL8_EXT           0x88F0
-#define GL_TEXTURE_STENCIL_SIZE_EXT       0x88F1
-#endif /* GL_EXT_packed_depth_stencil */
-
-#ifndef GL_EXT_packed_float
-#define GL_EXT_packed_float 1
-#define GL_R11F_G11F_B10F_EXT             0x8C3A
-#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
-#define GL_RGBA_SIGNED_COMPONENTS_EXT     0x8C3C
-#endif /* GL_EXT_packed_float */
-
-#ifndef GL_EXT_packed_pixels
-#define GL_EXT_packed_pixels 1
-#define GL_UNSIGNED_BYTE_3_3_2_EXT        0x8032
-#define GL_UNSIGNED_SHORT_4_4_4_4_EXT     0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1_EXT     0x8034
-#define GL_UNSIGNED_INT_8_8_8_8_EXT       0x8035
-#define GL_UNSIGNED_INT_10_10_10_2_EXT    0x8036
-#endif /* GL_EXT_packed_pixels */
-
-#ifndef GL_EXT_paletted_texture
-#define GL_EXT_paletted_texture 1
-#define GL_COLOR_INDEX1_EXT               0x80E2
-#define GL_COLOR_INDEX2_EXT               0x80E3
-#define GL_COLOR_INDEX4_EXT               0x80E4
-#define GL_COLOR_INDEX8_EXT               0x80E5
-#define GL_COLOR_INDEX12_EXT              0x80E6
-#define GL_COLOR_INDEX16_EXT              0x80E7
-#define GL_TEXTURE_INDEX_SIZE_EXT         0x80ED
-typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
-GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data);
-GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_EXT_paletted_texture */
-
-#ifndef GL_EXT_pixel_buffer_object
-#define GL_EXT_pixel_buffer_object 1
-#define GL_PIXEL_PACK_BUFFER_EXT          0x88EB
-#define GL_PIXEL_UNPACK_BUFFER_EXT        0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING_EXT  0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
-#endif /* GL_EXT_pixel_buffer_object */
-
-#ifndef GL_EXT_pixel_transform
-#define GL_EXT_pixel_transform 1
-#define GL_PIXEL_TRANSFORM_2D_EXT         0x8330
-#define GL_PIXEL_MAG_FILTER_EXT           0x8331
-#define GL_PIXEL_MIN_FILTER_EXT           0x8332
-#define GL_PIXEL_CUBIC_WEIGHT_EXT         0x8333
-#define GL_CUBIC_EXT                      0x8334
-#define GL_AVERAGE_EXT                    0x8335
-#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
-#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
-#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT  0x8338
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_EXT_pixel_transform */
-
-#ifndef GL_EXT_pixel_transform_color_table
-#define GL_EXT_pixel_transform_color_table 1
-#endif /* GL_EXT_pixel_transform_color_table */
-
-#ifndef GL_EXT_point_parameters
-#define GL_EXT_point_parameters 1
-#define GL_POINT_SIZE_MIN_EXT             0x8126
-#define GL_POINT_SIZE_MAX_EXT             0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_EXT  0x8128
-#define GL_DISTANCE_ATTENUATION_EXT       0x8129
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params);
-#endif
-#endif /* GL_EXT_point_parameters */
-
-#ifndef GL_EXT_polygon_offset
-#define GL_EXT_polygon_offset 1
-#define GL_POLYGON_OFFSET_EXT             0x8037
-#define GL_POLYGON_OFFSET_FACTOR_EXT      0x8038
-#define GL_POLYGON_OFFSET_BIAS_EXT        0x8039
-typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias);
-#endif
-#endif /* GL_EXT_polygon_offset */
-
-#ifndef GL_EXT_provoking_vertex
-#define GL_EXT_provoking_vertex 1
-#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
-#define GL_FIRST_VERTEX_CONVENTION_EXT    0x8E4D
-#define GL_LAST_VERTEX_CONVENTION_EXT     0x8E4E
-#define GL_PROVOKING_VERTEX_EXT           0x8E4F
-typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode);
-#endif
-#endif /* GL_EXT_provoking_vertex */
-
-#ifndef GL_EXT_rescale_normal
-#define GL_EXT_rescale_normal 1
-#define GL_RESCALE_NORMAL_EXT             0x803A
-#endif /* GL_EXT_rescale_normal */
-
-#ifndef GL_EXT_secondary_color
-#define GL_EXT_secondary_color 1
-#define GL_COLOR_SUM_EXT                  0x8458
-#define GL_CURRENT_SECONDARY_COLOR_EXT    0x8459
-#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
-#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
-#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
-#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
-#define GL_SECONDARY_COLOR_ARRAY_EXT      0x845E
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);
-GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v);
-GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);
-GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v);
-GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);
-GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v);
-GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);
-GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v);
-GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);
-GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v);
-GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);
-GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v);
-GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);
-GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v);
-GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);
-GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v);
-GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_secondary_color */
-
-#ifndef GL_EXT_separate_shader_objects
-#define GL_EXT_separate_shader_objects 1
-#define GL_ACTIVE_PROGRAM_EXT             0x8B8D
-typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
-typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
-GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
-GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
-#endif
-#endif /* GL_EXT_separate_shader_objects */
-
-#ifndef GL_EXT_separate_specular_color
-#define GL_EXT_separate_specular_color 1
-#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT  0x81F8
-#define GL_SINGLE_COLOR_EXT               0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR_EXT    0x81FA
-#endif /* GL_EXT_separate_specular_color */
-
-#ifndef GL_EXT_shader_image_load_formatted
-#define GL_EXT_shader_image_load_formatted 1
-#endif /* GL_EXT_shader_image_load_formatted */
-
-#ifndef GL_EXT_shader_image_load_store
-#define GL_EXT_shader_image_load_store 1
-#define GL_MAX_IMAGE_UNITS_EXT            0x8F38
-#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
-#define GL_IMAGE_BINDING_NAME_EXT         0x8F3A
-#define GL_IMAGE_BINDING_LEVEL_EXT        0x8F3B
-#define GL_IMAGE_BINDING_LAYERED_EXT      0x8F3C
-#define GL_IMAGE_BINDING_LAYER_EXT        0x8F3D
-#define GL_IMAGE_BINDING_ACCESS_EXT       0x8F3E
-#define GL_IMAGE_1D_EXT                   0x904C
-#define GL_IMAGE_2D_EXT                   0x904D
-#define GL_IMAGE_3D_EXT                   0x904E
-#define GL_IMAGE_2D_RECT_EXT              0x904F
-#define GL_IMAGE_CUBE_EXT                 0x9050
-#define GL_IMAGE_BUFFER_EXT               0x9051
-#define GL_IMAGE_1D_ARRAY_EXT             0x9052
-#define GL_IMAGE_2D_ARRAY_EXT             0x9053
-#define GL_IMAGE_CUBE_MAP_ARRAY_EXT       0x9054
-#define GL_IMAGE_2D_MULTISAMPLE_EXT       0x9055
-#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
-#define GL_INT_IMAGE_1D_EXT               0x9057
-#define GL_INT_IMAGE_2D_EXT               0x9058
-#define GL_INT_IMAGE_3D_EXT               0x9059
-#define GL_INT_IMAGE_2D_RECT_EXT          0x905A
-#define GL_INT_IMAGE_CUBE_EXT             0x905B
-#define GL_INT_IMAGE_BUFFER_EXT           0x905C
-#define GL_INT_IMAGE_1D_ARRAY_EXT         0x905D
-#define GL_INT_IMAGE_2D_ARRAY_EXT         0x905E
-#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT   0x905F
-#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT   0x9060
-#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
-#define GL_UNSIGNED_INT_IMAGE_1D_EXT      0x9062
-#define GL_UNSIGNED_INT_IMAGE_2D_EXT      0x9063
-#define GL_UNSIGNED_INT_IMAGE_3D_EXT      0x9064
-#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
-#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT    0x9066
-#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT  0x9067
-#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
-#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
-#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
-#define GL_MAX_IMAGE_SAMPLES_EXT          0x906D
-#define GL_IMAGE_BINDING_FORMAT_EXT       0x906E
-#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
-#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT  0x00000002
-#define GL_UNIFORM_BARRIER_BIT_EXT        0x00000004
-#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT  0x00000008
-#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
-#define GL_COMMAND_BARRIER_BIT_EXT        0x00000040
-#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT   0x00000080
-#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
-#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT  0x00000200
-#define GL_FRAMEBUFFER_BARRIER_BIT_EXT    0x00000400
-#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
-#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
-#define GL_ALL_BARRIER_BITS_EXT           0xFFFFFFFF
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
-typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
-GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers);
-#endif
-#endif /* GL_EXT_shader_image_load_store */
-
-#ifndef GL_EXT_shader_integer_mix
-#define GL_EXT_shader_integer_mix 1
-#endif /* GL_EXT_shader_integer_mix */
-
-#ifndef GL_EXT_shadow_funcs
-#define GL_EXT_shadow_funcs 1
-#endif /* GL_EXT_shadow_funcs */
-
-#ifndef GL_EXT_shared_texture_palette
-#define GL_EXT_shared_texture_palette 1
-#define GL_SHARED_TEXTURE_PALETTE_EXT     0x81FB
-#endif /* GL_EXT_shared_texture_palette */
-
-#ifndef GL_EXT_stencil_clear_tag
-#define GL_EXT_stencil_clear_tag 1
-#define GL_STENCIL_TAG_BITS_EXT           0x88F2
-#define GL_STENCIL_CLEAR_TAG_VALUE_EXT    0x88F3
-typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag);
-#endif
-#endif /* GL_EXT_stencil_clear_tag */
-
-#ifndef GL_EXT_stencil_two_side
-#define GL_EXT_stencil_two_side 1
-#define GL_STENCIL_TEST_TWO_SIDE_EXT      0x8910
-#define GL_ACTIVE_STENCIL_FACE_EXT        0x8911
-typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face);
-#endif
-#endif /* GL_EXT_stencil_two_side */
-
-#ifndef GL_EXT_stencil_wrap
-#define GL_EXT_stencil_wrap 1
-#define GL_INCR_WRAP_EXT                  0x8507
-#define GL_DECR_WRAP_EXT                  0x8508
-#endif /* GL_EXT_stencil_wrap */
-
-#ifndef GL_EXT_subtexture
-#define GL_EXT_subtexture 1
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-#endif
-#endif /* GL_EXT_subtexture */
-
-#ifndef GL_EXT_texture
-#define GL_EXT_texture 1
-#define GL_ALPHA4_EXT                     0x803B
-#define GL_ALPHA8_EXT                     0x803C
-#define GL_ALPHA12_EXT                    0x803D
-#define GL_ALPHA16_EXT                    0x803E
-#define GL_LUMINANCE4_EXT                 0x803F
-#define GL_LUMINANCE8_EXT                 0x8040
-#define GL_LUMINANCE12_EXT                0x8041
-#define GL_LUMINANCE16_EXT                0x8042
-#define GL_LUMINANCE4_ALPHA4_EXT          0x8043
-#define GL_LUMINANCE6_ALPHA2_EXT          0x8044
-#define GL_LUMINANCE8_ALPHA8_EXT          0x8045
-#define GL_LUMINANCE12_ALPHA4_EXT         0x8046
-#define GL_LUMINANCE12_ALPHA12_EXT        0x8047
-#define GL_LUMINANCE16_ALPHA16_EXT        0x8048
-#define GL_INTENSITY_EXT                  0x8049
-#define GL_INTENSITY4_EXT                 0x804A
-#define GL_INTENSITY8_EXT                 0x804B
-#define GL_INTENSITY12_EXT                0x804C
-#define GL_INTENSITY16_EXT                0x804D
-#define GL_RGB2_EXT                       0x804E
-#define GL_RGB4_EXT                       0x804F
-#define GL_RGB5_EXT                       0x8050
-#define GL_RGB8_EXT                       0x8051
-#define GL_RGB10_EXT                      0x8052
-#define GL_RGB12_EXT                      0x8053
-#define GL_RGB16_EXT                      0x8054
-#define GL_RGBA2_EXT                      0x8055
-#define GL_RGBA4_EXT                      0x8056
-#define GL_RGB5_A1_EXT                    0x8057
-#define GL_RGBA8_EXT                      0x8058
-#define GL_RGB10_A2_EXT                   0x8059
-#define GL_RGBA12_EXT                     0x805A
-#define GL_RGBA16_EXT                     0x805B
-#define GL_TEXTURE_RED_SIZE_EXT           0x805C
-#define GL_TEXTURE_GREEN_SIZE_EXT         0x805D
-#define GL_TEXTURE_BLUE_SIZE_EXT          0x805E
-#define GL_TEXTURE_ALPHA_SIZE_EXT         0x805F
-#define GL_TEXTURE_LUMINANCE_SIZE_EXT     0x8060
-#define GL_TEXTURE_INTENSITY_SIZE_EXT     0x8061
-#define GL_REPLACE_EXT                    0x8062
-#define GL_PROXY_TEXTURE_1D_EXT           0x8063
-#define GL_PROXY_TEXTURE_2D_EXT           0x8064
-#define GL_TEXTURE_TOO_LARGE_EXT          0x8065
-#endif /* GL_EXT_texture */
-
-#ifndef GL_EXT_texture3D
-#define GL_EXT_texture3D 1
-#define GL_PACK_SKIP_IMAGES_EXT           0x806B
-#define GL_PACK_IMAGE_HEIGHT_EXT          0x806C
-#define GL_UNPACK_SKIP_IMAGES_EXT         0x806D
-#define GL_UNPACK_IMAGE_HEIGHT_EXT        0x806E
-#define GL_TEXTURE_3D_EXT                 0x806F
-#define GL_PROXY_TEXTURE_3D_EXT           0x8070
-#define GL_TEXTURE_DEPTH_EXT              0x8071
-#define GL_TEXTURE_WRAP_R_EXT             0x8072
-#define GL_MAX_3D_TEXTURE_SIZE_EXT        0x8073
-typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-#endif
-#endif /* GL_EXT_texture3D */
-
-#ifndef GL_EXT_texture_array
-#define GL_EXT_texture_array 1
-#define GL_TEXTURE_1D_ARRAY_EXT           0x8C18
-#define GL_PROXY_TEXTURE_1D_ARRAY_EXT     0x8C19
-#define GL_TEXTURE_2D_ARRAY_EXT           0x8C1A
-#define GL_PROXY_TEXTURE_2D_ARRAY_EXT     0x8C1B
-#define GL_TEXTURE_BINDING_1D_ARRAY_EXT   0x8C1C
-#define GL_TEXTURE_BINDING_2D_ARRAY_EXT   0x8C1D
-#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT   0x88FF
-#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
-#endif /* GL_EXT_texture_array */
-
-#ifndef GL_EXT_texture_buffer_object
-#define GL_EXT_texture_buffer_object 1
-#define GL_TEXTURE_BUFFER_EXT             0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT    0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER_EXT     0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
-#define GL_TEXTURE_BUFFER_FORMAT_EXT      0x8C2E
-typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);
-#endif
-#endif /* GL_EXT_texture_buffer_object */
-
-#ifndef GL_EXT_texture_compression_latc
-#define GL_EXT_texture_compression_latc 1
-#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
-#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
-#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
-#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
-#endif /* GL_EXT_texture_compression_latc */
-
-#ifndef GL_EXT_texture_compression_rgtc
-#define GL_EXT_texture_compression_rgtc 1
-#define GL_COMPRESSED_RED_RGTC1_EXT       0x8DBB
-#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
-#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
-#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
-#endif /* GL_EXT_texture_compression_rgtc */
-
-#ifndef GL_EXT_texture_compression_s3tc
-#define GL_EXT_texture_compression_s3tc 1
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1
-#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2
-#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3
-#endif /* GL_EXT_texture_compression_s3tc */
-
-#ifndef GL_EXT_texture_cube_map
-#define GL_EXT_texture_cube_map 1
-#define GL_NORMAL_MAP_EXT                 0x8511
-#define GL_REFLECTION_MAP_EXT             0x8512
-#define GL_TEXTURE_CUBE_MAP_EXT           0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP_EXT   0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP_EXT     0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT  0x851C
-#endif /* GL_EXT_texture_cube_map */
-
-#ifndef GL_EXT_texture_env_add
-#define GL_EXT_texture_env_add 1
-#endif /* GL_EXT_texture_env_add */
-
-#ifndef GL_EXT_texture_env_combine
-#define GL_EXT_texture_env_combine 1
-#define GL_COMBINE_EXT                    0x8570
-#define GL_COMBINE_RGB_EXT                0x8571
-#define GL_COMBINE_ALPHA_EXT              0x8572
-#define GL_RGB_SCALE_EXT                  0x8573
-#define GL_ADD_SIGNED_EXT                 0x8574
-#define GL_INTERPOLATE_EXT                0x8575
-#define GL_CONSTANT_EXT                   0x8576
-#define GL_PRIMARY_COLOR_EXT              0x8577
-#define GL_PREVIOUS_EXT                   0x8578
-#define GL_SOURCE0_RGB_EXT                0x8580
-#define GL_SOURCE1_RGB_EXT                0x8581
-#define GL_SOURCE2_RGB_EXT                0x8582
-#define GL_SOURCE0_ALPHA_EXT              0x8588
-#define GL_SOURCE1_ALPHA_EXT              0x8589
-#define GL_SOURCE2_ALPHA_EXT              0x858A
-#define GL_OPERAND0_RGB_EXT               0x8590
-#define GL_OPERAND1_RGB_EXT               0x8591
-#define GL_OPERAND2_RGB_EXT               0x8592
-#define GL_OPERAND0_ALPHA_EXT             0x8598
-#define GL_OPERAND1_ALPHA_EXT             0x8599
-#define GL_OPERAND2_ALPHA_EXT             0x859A
-#endif /* GL_EXT_texture_env_combine */
-
-#ifndef GL_EXT_texture_env_dot3
-#define GL_EXT_texture_env_dot3 1
-#define GL_DOT3_RGB_EXT                   0x8740
-#define GL_DOT3_RGBA_EXT                  0x8741
-#endif /* GL_EXT_texture_env_dot3 */
-
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_EXT_texture_filter_anisotropic 1
-#define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
-#endif /* GL_EXT_texture_filter_anisotropic */
-
-#ifndef GL_EXT_texture_integer
-#define GL_EXT_texture_integer 1
-#define GL_RGBA32UI_EXT                   0x8D70
-#define GL_RGB32UI_EXT                    0x8D71
-#define GL_ALPHA32UI_EXT                  0x8D72
-#define GL_INTENSITY32UI_EXT              0x8D73
-#define GL_LUMINANCE32UI_EXT              0x8D74
-#define GL_LUMINANCE_ALPHA32UI_EXT        0x8D75
-#define GL_RGBA16UI_EXT                   0x8D76
-#define GL_RGB16UI_EXT                    0x8D77
-#define GL_ALPHA16UI_EXT                  0x8D78
-#define GL_INTENSITY16UI_EXT              0x8D79
-#define GL_LUMINANCE16UI_EXT              0x8D7A
-#define GL_LUMINANCE_ALPHA16UI_EXT        0x8D7B
-#define GL_RGBA8UI_EXT                    0x8D7C
-#define GL_RGB8UI_EXT                     0x8D7D
-#define GL_ALPHA8UI_EXT                   0x8D7E
-#define GL_INTENSITY8UI_EXT               0x8D7F
-#define GL_LUMINANCE8UI_EXT               0x8D80
-#define GL_LUMINANCE_ALPHA8UI_EXT         0x8D81
-#define GL_RGBA32I_EXT                    0x8D82
-#define GL_RGB32I_EXT                     0x8D83
-#define GL_ALPHA32I_EXT                   0x8D84
-#define GL_INTENSITY32I_EXT               0x8D85
-#define GL_LUMINANCE32I_EXT               0x8D86
-#define GL_LUMINANCE_ALPHA32I_EXT         0x8D87
-#define GL_RGBA16I_EXT                    0x8D88
-#define GL_RGB16I_EXT                     0x8D89
-#define GL_ALPHA16I_EXT                   0x8D8A
-#define GL_INTENSITY16I_EXT               0x8D8B
-#define GL_LUMINANCE16I_EXT               0x8D8C
-#define GL_LUMINANCE_ALPHA16I_EXT         0x8D8D
-#define GL_RGBA8I_EXT                     0x8D8E
-#define GL_RGB8I_EXT                      0x8D8F
-#define GL_ALPHA8I_EXT                    0x8D90
-#define GL_INTENSITY8I_EXT                0x8D91
-#define GL_LUMINANCE8I_EXT                0x8D92
-#define GL_LUMINANCE_ALPHA8I_EXT          0x8D93
-#define GL_RED_INTEGER_EXT                0x8D94
-#define GL_GREEN_INTEGER_EXT              0x8D95
-#define GL_BLUE_INTEGER_EXT               0x8D96
-#define GL_ALPHA_INTEGER_EXT              0x8D97
-#define GL_RGB_INTEGER_EXT                0x8D98
-#define GL_RGBA_INTEGER_EXT               0x8D99
-#define GL_BGR_INTEGER_EXT                0x8D9A
-#define GL_BGRA_INTEGER_EXT               0x8D9B
-#define GL_LUMINANCE_INTEGER_EXT          0x8D9C
-#define GL_LUMINANCE_ALPHA_INTEGER_EXT    0x8D9D
-#define GL_RGBA_INTEGER_MODE_EXT          0x8D9E
-typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
-typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha);
-GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha);
-#endif
-#endif /* GL_EXT_texture_integer */
-
-#ifndef GL_EXT_texture_lod_bias
-#define GL_EXT_texture_lod_bias 1
-#define GL_MAX_TEXTURE_LOD_BIAS_EXT       0x84FD
-#define GL_TEXTURE_FILTER_CONTROL_EXT     0x8500
-#define GL_TEXTURE_LOD_BIAS_EXT           0x8501
-#endif /* GL_EXT_texture_lod_bias */
-
-#ifndef GL_EXT_texture_mirror_clamp
-#define GL_EXT_texture_mirror_clamp 1
-#define GL_MIRROR_CLAMP_EXT               0x8742
-#define GL_MIRROR_CLAMP_TO_EDGE_EXT       0x8743
-#define GL_MIRROR_CLAMP_TO_BORDER_EXT     0x8912
-#endif /* GL_EXT_texture_mirror_clamp */
-
-#ifndef GL_EXT_texture_object
-#define GL_EXT_texture_object 1
-#define GL_TEXTURE_PRIORITY_EXT           0x8066
-#define GL_TEXTURE_RESIDENT_EXT           0x8067
-#define GL_TEXTURE_1D_BINDING_EXT         0x8068
-#define GL_TEXTURE_2D_BINDING_EXT         0x8069
-#define GL_TEXTURE_3D_BINDING_EXT         0x806A
-typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
-typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
-typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
-typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);
-GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture);
-GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures);
-GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures);
-GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture);
-GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);
-#endif
-#endif /* GL_EXT_texture_object */
-
-#ifndef GL_EXT_texture_perturb_normal
-#define GL_EXT_texture_perturb_normal 1
-#define GL_PERTURB_EXT                    0x85AE
-#define GL_TEXTURE_NORMAL_EXT             0x85AF
-typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureNormalEXT (GLenum mode);
-#endif
-#endif /* GL_EXT_texture_perturb_normal */
-
-#ifndef GL_EXT_texture_sRGB
-#define GL_EXT_texture_sRGB 1
-#define GL_SRGB_EXT                       0x8C40
-#define GL_SRGB8_EXT                      0x8C41
-#define GL_SRGB_ALPHA_EXT                 0x8C42
-#define GL_SRGB8_ALPHA8_EXT               0x8C43
-#define GL_SLUMINANCE_ALPHA_EXT           0x8C44
-#define GL_SLUMINANCE8_ALPHA8_EXT         0x8C45
-#define GL_SLUMINANCE_EXT                 0x8C46
-#define GL_SLUMINANCE8_EXT                0x8C47
-#define GL_COMPRESSED_SRGB_EXT            0x8C48
-#define GL_COMPRESSED_SRGB_ALPHA_EXT      0x8C49
-#define GL_COMPRESSED_SLUMINANCE_EXT      0x8C4A
-#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
-#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT  0x8C4C
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
-#endif /* GL_EXT_texture_sRGB */
-
-#ifndef GL_EXT_texture_sRGB_decode
-#define GL_EXT_texture_sRGB_decode 1
-#define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48
-#define GL_DECODE_EXT                     0x8A49
-#define GL_SKIP_DECODE_EXT                0x8A4A
-#endif /* GL_EXT_texture_sRGB_decode */
-
-#ifndef GL_EXT_texture_shared_exponent
-#define GL_EXT_texture_shared_exponent 1
-#define GL_RGB9_E5_EXT                    0x8C3D
-#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT   0x8C3E
-#define GL_TEXTURE_SHARED_SIZE_EXT        0x8C3F
-#endif /* GL_EXT_texture_shared_exponent */
-
-#ifndef GL_EXT_texture_snorm
-#define GL_EXT_texture_snorm 1
-#define GL_ALPHA_SNORM                    0x9010
-#define GL_LUMINANCE_SNORM                0x9011
-#define GL_LUMINANCE_ALPHA_SNORM          0x9012
-#define GL_INTENSITY_SNORM                0x9013
-#define GL_ALPHA8_SNORM                   0x9014
-#define GL_LUMINANCE8_SNORM               0x9015
-#define GL_LUMINANCE8_ALPHA8_SNORM        0x9016
-#define GL_INTENSITY8_SNORM               0x9017
-#define GL_ALPHA16_SNORM                  0x9018
-#define GL_LUMINANCE16_SNORM              0x9019
-#define GL_LUMINANCE16_ALPHA16_SNORM      0x901A
-#define GL_INTENSITY16_SNORM              0x901B
-#define GL_RED_SNORM                      0x8F90
-#define GL_RG_SNORM                       0x8F91
-#define GL_RGB_SNORM                      0x8F92
-#define GL_RGBA_SNORM                     0x8F93
-#endif /* GL_EXT_texture_snorm */
-
-#ifndef GL_EXT_texture_swizzle
-#define GL_EXT_texture_swizzle 1
-#define GL_TEXTURE_SWIZZLE_R_EXT          0x8E42
-#define GL_TEXTURE_SWIZZLE_G_EXT          0x8E43
-#define GL_TEXTURE_SWIZZLE_B_EXT          0x8E44
-#define GL_TEXTURE_SWIZZLE_A_EXT          0x8E45
-#define GL_TEXTURE_SWIZZLE_RGBA_EXT       0x8E46
-#endif /* GL_EXT_texture_swizzle */
-
-#ifndef GL_EXT_timer_query
-#define GL_EXT_timer_query 1
-#define GL_TIME_ELAPSED_EXT               0x88BF
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
-#endif
-#endif /* GL_EXT_timer_query */
-
-#ifndef GL_EXT_transform_feedback
-#define GL_EXT_transform_feedback 1
-#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT  0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
-#define GL_INTERLEAVED_ATTRIBS_EXT        0x8C8C
-#define GL_SEPARATE_ATTRIBS_EXT           0x8C8D
-#define GL_PRIMITIVES_GENERATED_EXT       0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
-#define GL_RASTERIZER_DISCARD_EXT         0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
-#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
-#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedbackEXT (void);
-GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-#endif
-#endif /* GL_EXT_transform_feedback */
-
-#ifndef GL_EXT_vertex_array
-#define GL_EXT_vertex_array 1
-#define GL_VERTEX_ARRAY_EXT               0x8074
-#define GL_NORMAL_ARRAY_EXT               0x8075
-#define GL_COLOR_ARRAY_EXT                0x8076
-#define GL_INDEX_ARRAY_EXT                0x8077
-#define GL_TEXTURE_COORD_ARRAY_EXT        0x8078
-#define GL_EDGE_FLAG_ARRAY_EXT            0x8079
-#define GL_VERTEX_ARRAY_SIZE_EXT          0x807A
-#define GL_VERTEX_ARRAY_TYPE_EXT          0x807B
-#define GL_VERTEX_ARRAY_STRIDE_EXT        0x807C
-#define GL_VERTEX_ARRAY_COUNT_EXT         0x807D
-#define GL_NORMAL_ARRAY_TYPE_EXT          0x807E
-#define GL_NORMAL_ARRAY_STRIDE_EXT        0x807F
-#define GL_NORMAL_ARRAY_COUNT_EXT         0x8080
-#define GL_COLOR_ARRAY_SIZE_EXT           0x8081
-#define GL_COLOR_ARRAY_TYPE_EXT           0x8082
-#define GL_COLOR_ARRAY_STRIDE_EXT         0x8083
-#define GL_COLOR_ARRAY_COUNT_EXT          0x8084
-#define GL_INDEX_ARRAY_TYPE_EXT           0x8085
-#define GL_INDEX_ARRAY_STRIDE_EXT         0x8086
-#define GL_INDEX_ARRAY_COUNT_EXT          0x8087
-#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT   0x8088
-#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT   0x8089
-#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
-#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT  0x808B
-#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT     0x808C
-#define GL_EDGE_FLAG_ARRAY_COUNT_EXT      0x808D
-#define GL_VERTEX_ARRAY_POINTER_EXT       0x808E
-#define GL_NORMAL_ARRAY_POINTER_EXT       0x808F
-#define GL_COLOR_ARRAY_POINTER_EXT        0x8090
-#define GL_INDEX_ARRAY_POINTER_EXT        0x8091
-#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
-#define GL_EDGE_FLAG_ARRAY_POINTER_EXT    0x8093
-typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
-typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
-typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, void **params);
-typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glArrayElementEXT (GLint i);
-GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);
-GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);
-GLAPI void APIENTRY glGetPointervEXT (GLenum pname, void **params);
-GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-#endif
-#endif /* GL_EXT_vertex_array */
-
-#ifndef GL_EXT_vertex_array_bgra
-#define GL_EXT_vertex_array_bgra 1
-#endif /* GL_EXT_vertex_array_bgra */
-
-#ifndef GL_EXT_vertex_attrib_64bit
-#define GL_EXT_vertex_attrib_64bit 1
-#define GL_DOUBLE_VEC2_EXT                0x8FFC
-#define GL_DOUBLE_VEC3_EXT                0x8FFD
-#define GL_DOUBLE_VEC4_EXT                0x8FFE
-#define GL_DOUBLE_MAT2_EXT                0x8F46
-#define GL_DOUBLE_MAT3_EXT                0x8F47
-#define GL_DOUBLE_MAT4_EXT                0x8F48
-#define GL_DOUBLE_MAT2x3_EXT              0x8F49
-#define GL_DOUBLE_MAT2x4_EXT              0x8F4A
-#define GL_DOUBLE_MAT3x2_EXT              0x8F4B
-#define GL_DOUBLE_MAT3x4_EXT              0x8F4C
-#define GL_DOUBLE_MAT4x2_EXT              0x8F4D
-#define GL_DOUBLE_MAT4x3_EXT              0x8F4E
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params);
-#endif
-#endif /* GL_EXT_vertex_attrib_64bit */
-
-#ifndef GL_EXT_vertex_shader
-#define GL_EXT_vertex_shader 1
-#define GL_VERTEX_SHADER_EXT              0x8780
-#define GL_VERTEX_SHADER_BINDING_EXT      0x8781
-#define GL_OP_INDEX_EXT                   0x8782
-#define GL_OP_NEGATE_EXT                  0x8783
-#define GL_OP_DOT3_EXT                    0x8784
-#define GL_OP_DOT4_EXT                    0x8785
-#define GL_OP_MUL_EXT                     0x8786
-#define GL_OP_ADD_EXT                     0x8787
-#define GL_OP_MADD_EXT                    0x8788
-#define GL_OP_FRAC_EXT                    0x8789
-#define GL_OP_MAX_EXT                     0x878A
-#define GL_OP_MIN_EXT                     0x878B
-#define GL_OP_SET_GE_EXT                  0x878C
-#define GL_OP_SET_LT_EXT                  0x878D
-#define GL_OP_CLAMP_EXT                   0x878E
-#define GL_OP_FLOOR_EXT                   0x878F
-#define GL_OP_ROUND_EXT                   0x8790
-#define GL_OP_EXP_BASE_2_EXT              0x8791
-#define GL_OP_LOG_BASE_2_EXT              0x8792
-#define GL_OP_POWER_EXT                   0x8793
-#define GL_OP_RECIP_EXT                   0x8794
-#define GL_OP_RECIP_SQRT_EXT              0x8795
-#define GL_OP_SUB_EXT                     0x8796
-#define GL_OP_CROSS_PRODUCT_EXT           0x8797
-#define GL_OP_MULTIPLY_MATRIX_EXT         0x8798
-#define GL_OP_MOV_EXT                     0x8799
-#define GL_OUTPUT_VERTEX_EXT              0x879A
-#define GL_OUTPUT_COLOR0_EXT              0x879B
-#define GL_OUTPUT_COLOR1_EXT              0x879C
-#define GL_OUTPUT_TEXTURE_COORD0_EXT      0x879D
-#define GL_OUTPUT_TEXTURE_COORD1_EXT      0x879E
-#define GL_OUTPUT_TEXTURE_COORD2_EXT      0x879F
-#define GL_OUTPUT_TEXTURE_COORD3_EXT      0x87A0
-#define GL_OUTPUT_TEXTURE_COORD4_EXT      0x87A1
-#define GL_OUTPUT_TEXTURE_COORD5_EXT      0x87A2
-#define GL_OUTPUT_TEXTURE_COORD6_EXT      0x87A3
-#define GL_OUTPUT_TEXTURE_COORD7_EXT      0x87A4
-#define GL_OUTPUT_TEXTURE_COORD8_EXT      0x87A5
-#define GL_OUTPUT_TEXTURE_COORD9_EXT      0x87A6
-#define GL_OUTPUT_TEXTURE_COORD10_EXT     0x87A7
-#define GL_OUTPUT_TEXTURE_COORD11_EXT     0x87A8
-#define GL_OUTPUT_TEXTURE_COORD12_EXT     0x87A9
-#define GL_OUTPUT_TEXTURE_COORD13_EXT     0x87AA
-#define GL_OUTPUT_TEXTURE_COORD14_EXT     0x87AB
-#define GL_OUTPUT_TEXTURE_COORD15_EXT     0x87AC
-#define GL_OUTPUT_TEXTURE_COORD16_EXT     0x87AD
-#define GL_OUTPUT_TEXTURE_COORD17_EXT     0x87AE
-#define GL_OUTPUT_TEXTURE_COORD18_EXT     0x87AF
-#define GL_OUTPUT_TEXTURE_COORD19_EXT     0x87B0
-#define GL_OUTPUT_TEXTURE_COORD20_EXT     0x87B1
-#define GL_OUTPUT_TEXTURE_COORD21_EXT     0x87B2
-#define GL_OUTPUT_TEXTURE_COORD22_EXT     0x87B3
-#define GL_OUTPUT_TEXTURE_COORD23_EXT     0x87B4
-#define GL_OUTPUT_TEXTURE_COORD24_EXT     0x87B5
-#define GL_OUTPUT_TEXTURE_COORD25_EXT     0x87B6
-#define GL_OUTPUT_TEXTURE_COORD26_EXT     0x87B7
-#define GL_OUTPUT_TEXTURE_COORD27_EXT     0x87B8
-#define GL_OUTPUT_TEXTURE_COORD28_EXT     0x87B9
-#define GL_OUTPUT_TEXTURE_COORD29_EXT     0x87BA
-#define GL_OUTPUT_TEXTURE_COORD30_EXT     0x87BB
-#define GL_OUTPUT_TEXTURE_COORD31_EXT     0x87BC
-#define GL_OUTPUT_FOG_EXT                 0x87BD
-#define GL_SCALAR_EXT                     0x87BE
-#define GL_VECTOR_EXT                     0x87BF
-#define GL_MATRIX_EXT                     0x87C0
-#define GL_VARIANT_EXT                    0x87C1
-#define GL_INVARIANT_EXT                  0x87C2
-#define GL_LOCAL_CONSTANT_EXT             0x87C3
-#define GL_LOCAL_EXT                      0x87C4
-#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
-#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
-#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
-#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
-#define GL_MAX_VERTEX_SHADER_LOCALS_EXT   0x87C9
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
-#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
-#define GL_VERTEX_SHADER_VARIANTS_EXT     0x87D0
-#define GL_VERTEX_SHADER_INVARIANTS_EXT   0x87D1
-#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
-#define GL_VERTEX_SHADER_LOCALS_EXT       0x87D3
-#define GL_VERTEX_SHADER_OPTIMIZED_EXT    0x87D4
-#define GL_X_EXT                          0x87D5
-#define GL_Y_EXT                          0x87D6
-#define GL_Z_EXT                          0x87D7
-#define GL_W_EXT                          0x87D8
-#define GL_NEGATIVE_X_EXT                 0x87D9
-#define GL_NEGATIVE_Y_EXT                 0x87DA
-#define GL_NEGATIVE_Z_EXT                 0x87DB
-#define GL_NEGATIVE_W_EXT                 0x87DC
-#define GL_ZERO_EXT                       0x87DD
-#define GL_ONE_EXT                        0x87DE
-#define GL_NEGATIVE_ONE_EXT               0x87DF
-#define GL_NORMALIZED_RANGE_EXT           0x87E0
-#define GL_FULL_RANGE_EXT                 0x87E1
-#define GL_CURRENT_VERTEX_EXT             0x87E2
-#define GL_MVP_MATRIX_EXT                 0x87E3
-#define GL_VARIANT_VALUE_EXT              0x87E4
-#define GL_VARIANT_DATATYPE_EXT           0x87E5
-#define GL_VARIANT_ARRAY_STRIDE_EXT       0x87E6
-#define GL_VARIANT_ARRAY_TYPE_EXT         0x87E7
-#define GL_VARIANT_ARRAY_EXT              0x87E8
-#define GL_VARIANT_ARRAY_POINTER_EXT      0x87E9
-#define GL_INVARIANT_VALUE_EXT            0x87EA
-#define GL_INVARIANT_DATATYPE_EXT         0x87EB
-#define GL_LOCAL_CONSTANT_VALUE_EXT       0x87EC
-#define GL_LOCAL_CONSTANT_DATATYPE_EXT    0x87ED
-typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
-typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
-typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
-typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
-typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
-typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
-typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
-typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
-typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
-typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
-typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr);
-typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr);
-typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
-typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
-typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
-typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
-typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
-typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
-typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
-typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
-typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr);
-typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
-typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
-typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
-typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data);
-typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginVertexShaderEXT (void);
-GLAPI void APIENTRY glEndVertexShaderEXT (void);
-GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id);
-GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range);
-GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id);
-GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1);
-GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
-GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
-GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num);
-GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num);
-GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
-GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const void *addr);
-GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const void *addr);
-GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr);
-GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr);
-GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr);
-GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr);
-GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr);
-GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr);
-GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr);
-GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr);
-GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const void *addr);
-GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id);
-GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id);
-GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value);
-GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value);
-GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value);
-GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value);
-GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value);
-GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap);
-GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
-GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data);
-GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
-GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, void **data);
-GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
-GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data);
-GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
-GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
-GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data);
-GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
-#endif
-#endif /* GL_EXT_vertex_shader */
-
-#ifndef GL_EXT_vertex_weighting
-#define GL_EXT_vertex_weighting 1
-#define GL_MODELVIEW0_STACK_DEPTH_EXT     0x0BA3
-#define GL_MODELVIEW1_STACK_DEPTH_EXT     0x8502
-#define GL_MODELVIEW0_MATRIX_EXT          0x0BA6
-#define GL_MODELVIEW1_MATRIX_EXT          0x8506
-#define GL_VERTEX_WEIGHTING_EXT           0x8509
-#define GL_MODELVIEW0_EXT                 0x1700
-#define GL_MODELVIEW1_EXT                 0x850A
-#define GL_CURRENT_VERTEX_WEIGHT_EXT      0x850B
-#define GL_VERTEX_WEIGHT_ARRAY_EXT        0x850C
-#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT   0x850D
-#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT   0x850E
-#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
-#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);
-GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);
-GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_vertex_weighting */
-
-#ifndef GL_EXT_x11_sync_object
-#define GL_EXT_x11_sync_object 1
-#define GL_SYNC_X11_FENCE_EXT             0x90E1
-typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
-#endif
-#endif /* GL_EXT_x11_sync_object */
-
-#ifndef GL_GREMEDY_frame_terminator
-#define GL_GREMEDY_frame_terminator 1
-typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFrameTerminatorGREMEDY (void);
-#endif
-#endif /* GL_GREMEDY_frame_terminator */
-
-#ifndef GL_GREMEDY_string_marker
-#define GL_GREMEDY_string_marker 1
-typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const void *string);
-#endif
-#endif /* GL_GREMEDY_string_marker */
-
-#ifndef GL_HP_convolution_border_modes
-#define GL_HP_convolution_border_modes 1
-#define GL_IGNORE_BORDER_HP               0x8150
-#define GL_CONSTANT_BORDER_HP             0x8151
-#define GL_REPLICATE_BORDER_HP            0x8153
-#define GL_CONVOLUTION_BORDER_COLOR_HP    0x8154
-#endif /* GL_HP_convolution_border_modes */
-
-#ifndef GL_HP_image_transform
-#define GL_HP_image_transform 1
-#define GL_IMAGE_SCALE_X_HP               0x8155
-#define GL_IMAGE_SCALE_Y_HP               0x8156
-#define GL_IMAGE_TRANSLATE_X_HP           0x8157
-#define GL_IMAGE_TRANSLATE_Y_HP           0x8158
-#define GL_IMAGE_ROTATE_ANGLE_HP          0x8159
-#define GL_IMAGE_ROTATE_ORIGIN_X_HP       0x815A
-#define GL_IMAGE_ROTATE_ORIGIN_Y_HP       0x815B
-#define GL_IMAGE_MAG_FILTER_HP            0x815C
-#define GL_IMAGE_MIN_FILTER_HP            0x815D
-#define GL_IMAGE_CUBIC_WEIGHT_HP          0x815E
-#define GL_CUBIC_HP                       0x815F
-#define GL_AVERAGE_HP                     0x8160
-#define GL_IMAGE_TRANSFORM_2D_HP          0x8161
-#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
-#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_HP_image_transform */
-
-#ifndef GL_HP_occlusion_test
-#define GL_HP_occlusion_test 1
-#define GL_OCCLUSION_TEST_HP              0x8165
-#define GL_OCCLUSION_TEST_RESULT_HP       0x8166
-#endif /* GL_HP_occlusion_test */
-
-#ifndef GL_HP_texture_lighting
-#define GL_HP_texture_lighting 1
-#define GL_TEXTURE_LIGHTING_MODE_HP       0x8167
-#define GL_TEXTURE_POST_SPECULAR_HP       0x8168
-#define GL_TEXTURE_PRE_SPECULAR_HP        0x8169
-#endif /* GL_HP_texture_lighting */
-
-#ifndef GL_IBM_cull_vertex
-#define GL_IBM_cull_vertex 1
-#define GL_CULL_VERTEX_IBM                103050
-#endif /* GL_IBM_cull_vertex */
-
-#ifndef GL_IBM_multimode_draw_arrays
-#define GL_IBM_multimode_draw_arrays 1
-typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
-typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
-GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
-#endif
-#endif /* GL_IBM_multimode_draw_arrays */
-
-#ifndef GL_IBM_rasterpos_clip
-#define GL_IBM_rasterpos_clip 1
-#define GL_RASTER_POSITION_UNCLIPPED_IBM  0x19262
-#endif /* GL_IBM_rasterpos_clip */
-
-#ifndef GL_IBM_static_data
-#define GL_IBM_static_data 1
-#define GL_ALL_STATIC_DATA_IBM            103060
-#define GL_STATIC_VERTEX_ARRAY_IBM        103061
-typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFlushStaticDataIBM (GLenum target);
-#endif
-#endif /* GL_IBM_static_data */
-
-#ifndef GL_IBM_texture_mirrored_repeat
-#define GL_IBM_texture_mirrored_repeat 1
-#define GL_MIRRORED_REPEAT_IBM            0x8370
-#endif /* GL_IBM_texture_mirrored_repeat */
-
-#ifndef GL_IBM_vertex_array_lists
-#define GL_IBM_vertex_array_lists 1
-#define GL_VERTEX_ARRAY_LIST_IBM          103070
-#define GL_NORMAL_ARRAY_LIST_IBM          103071
-#define GL_COLOR_ARRAY_LIST_IBM           103072
-#define GL_INDEX_ARRAY_LIST_IBM           103073
-#define GL_TEXTURE_COORD_ARRAY_LIST_IBM   103074
-#define GL_EDGE_FLAG_ARRAY_LIST_IBM       103075
-#define GL_FOG_COORDINATE_ARRAY_LIST_IBM  103076
-#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
-#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM   103080
-#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM   103081
-#define GL_COLOR_ARRAY_LIST_STRIDE_IBM    103082
-#define GL_INDEX_ARRAY_LIST_STRIDE_IBM    103083
-#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
-#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
-#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
-#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
-typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride);
-GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-#endif
-#endif /* GL_IBM_vertex_array_lists */
-
-#ifndef GL_INGR_blend_func_separate
-#define GL_INGR_blend_func_separate 1
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#endif
-#endif /* GL_INGR_blend_func_separate */
-
-#ifndef GL_INGR_color_clamp
-#define GL_INGR_color_clamp 1
-#define GL_RED_MIN_CLAMP_INGR             0x8560
-#define GL_GREEN_MIN_CLAMP_INGR           0x8561
-#define GL_BLUE_MIN_CLAMP_INGR            0x8562
-#define GL_ALPHA_MIN_CLAMP_INGR           0x8563
-#define GL_RED_MAX_CLAMP_INGR             0x8564
-#define GL_GREEN_MAX_CLAMP_INGR           0x8565
-#define GL_BLUE_MAX_CLAMP_INGR            0x8566
-#define GL_ALPHA_MAX_CLAMP_INGR           0x8567
-#endif /* GL_INGR_color_clamp */
-
-#ifndef GL_INGR_interlace_read
-#define GL_INGR_interlace_read 1
-#define GL_INTERLACE_READ_INGR            0x8568
-#endif /* GL_INGR_interlace_read */
-
-#ifndef GL_INTEL_fragment_shader_ordering
-#define GL_INTEL_fragment_shader_ordering 1
-#endif /* GL_INTEL_fragment_shader_ordering */
-
-#ifndef GL_INTEL_map_texture
-#define GL_INTEL_map_texture 1
-#define GL_TEXTURE_MEMORY_LAYOUT_INTEL    0x83FF
-#define GL_LAYOUT_DEFAULT_INTEL           0
-#define GL_LAYOUT_LINEAR_INTEL            1
-#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
-typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture);
-typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level);
-typedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture);
-GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level);
-GLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
-#endif
-#endif /* GL_INTEL_map_texture */
-
-#ifndef GL_INTEL_parallel_arrays
-#define GL_INTEL_parallel_arrays 1
-#define GL_PARALLEL_ARRAYS_INTEL          0x83F4
-#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
-#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
-#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
-#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
-typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
-typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void **pointer);
-typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
-typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const void **pointer);
-GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const void **pointer);
-GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const void **pointer);
-GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void **pointer);
-#endif
-#endif /* GL_INTEL_parallel_arrays */
-
-#ifndef GL_INTEL_performance_query
-#define GL_INTEL_performance_query 1
-#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
-#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
-#define GL_PERFQUERY_WAIT_INTEL           0x83FB
-#define GL_PERFQUERY_FLUSH_INTEL          0x83FA
-#define GL_PERFQUERY_DONOT_FLUSH_INTEL    0x83F9
-#define GL_PERFQUERY_COUNTER_EVENT_INTEL  0x94F0
-#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
-#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
-#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
-#define GL_PERFQUERY_COUNTER_RAW_INTEL    0x94F4
-#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
-#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
-#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
-#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
-#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
-#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
-#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
-#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
-#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
-#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
-typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
-typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
-typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
-typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
-typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
-typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
-typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
-GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
-GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
-GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
-GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
-GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
-GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
-#endif
-#endif /* GL_INTEL_performance_query */
-
-#ifndef GL_MESAX_texture_stack
-#define GL_MESAX_texture_stack 1
-#define GL_TEXTURE_1D_STACK_MESAX         0x8759
-#define GL_TEXTURE_2D_STACK_MESAX         0x875A
-#define GL_PROXY_TEXTURE_1D_STACK_MESAX   0x875B
-#define GL_PROXY_TEXTURE_2D_STACK_MESAX   0x875C
-#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
-#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
-#endif /* GL_MESAX_texture_stack */
-
-#ifndef GL_MESA_pack_invert
-#define GL_MESA_pack_invert 1
-#define GL_PACK_INVERT_MESA               0x8758
-#endif /* GL_MESA_pack_invert */
-
-#ifndef GL_MESA_resize_buffers
-#define GL_MESA_resize_buffers 1
-typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glResizeBuffersMESA (void);
-#endif
-#endif /* GL_MESA_resize_buffers */
-
-#ifndef GL_MESA_window_pos
-#define GL_MESA_window_pos 1
-typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y);
-GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y);
-GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y);
-GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v);
-GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y);
-GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v);
-GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v);
-GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v);
-GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v);
-GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v);
-#endif
-#endif /* GL_MESA_window_pos */
-
-#ifndef GL_MESA_ycbcr_texture
-#define GL_MESA_ycbcr_texture 1
-#define GL_UNSIGNED_SHORT_8_8_MESA        0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_MESA    0x85BB
-#define GL_YCBCR_MESA                     0x8757
-#endif /* GL_MESA_ycbcr_texture */
-
-#ifndef GL_NVX_conditional_render
-#define GL_NVX_conditional_render 1
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id);
-GLAPI void APIENTRY glEndConditionalRenderNVX (void);
-#endif
-#endif /* GL_NVX_conditional_render */
-
-#ifndef GL_NVX_gpu_memory_info
-#define GL_NVX_gpu_memory_info 1
-#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
-#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
-#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
-#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
-#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
-#endif /* GL_NVX_gpu_memory_info */
-
-#ifndef GL_NV_bindless_multi_draw_indirect
-#define GL_NV_bindless_multi_draw_indirect 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-#endif
-#endif /* GL_NV_bindless_multi_draw_indirect */
-
-#ifndef GL_NV_bindless_texture
-#define GL_NV_bindless_texture 1
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
-typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
-typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture);
-GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);
-GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);
-GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);
-GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);
-GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);
-GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);
-GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);
-GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);
-GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
-#endif
-#endif /* GL_NV_bindless_texture */
-
-#ifndef GL_NV_blend_equation_advanced
-#define GL_NV_blend_equation_advanced 1
-#define GL_BLEND_OVERLAP_NV               0x9281
-#define GL_BLEND_PREMULTIPLIED_SRC_NV     0x9280
-#define GL_BLUE_NV                        0x1905
-#define GL_COLORBURN_NV                   0x929A
-#define GL_COLORDODGE_NV                  0x9299
-#define GL_CONJOINT_NV                    0x9284
-#define GL_CONTRAST_NV                    0x92A1
-#define GL_DARKEN_NV                      0x9297
-#define GL_DIFFERENCE_NV                  0x929E
-#define GL_DISJOINT_NV                    0x9283
-#define GL_DST_ATOP_NV                    0x928F
-#define GL_DST_IN_NV                      0x928B
-#define GL_DST_NV                         0x9287
-#define GL_DST_OUT_NV                     0x928D
-#define GL_DST_OVER_NV                    0x9289
-#define GL_EXCLUSION_NV                   0x92A0
-#define GL_GREEN_NV                       0x1904
-#define GL_HARDLIGHT_NV                   0x929B
-#define GL_HARDMIX_NV                     0x92A9
-#define GL_HSL_COLOR_NV                   0x92AF
-#define GL_HSL_HUE_NV                     0x92AD
-#define GL_HSL_LUMINOSITY_NV              0x92B0
-#define GL_HSL_SATURATION_NV              0x92AE
-#define GL_INVERT_OVG_NV                  0x92B4
-#define GL_INVERT_RGB_NV                  0x92A3
-#define GL_LIGHTEN_NV                     0x9298
-#define GL_LINEARBURN_NV                  0x92A5
-#define GL_LINEARDODGE_NV                 0x92A4
-#define GL_LINEARLIGHT_NV                 0x92A7
-#define GL_MINUS_CLAMPED_NV               0x92B3
-#define GL_MINUS_NV                       0x929F
-#define GL_MULTIPLY_NV                    0x9294
-#define GL_OVERLAY_NV                     0x9296
-#define GL_PINLIGHT_NV                    0x92A8
-#define GL_PLUS_CLAMPED_ALPHA_NV          0x92B2
-#define GL_PLUS_CLAMPED_NV                0x92B1
-#define GL_PLUS_DARKER_NV                 0x9292
-#define GL_PLUS_NV                        0x9291
-#define GL_RED_NV                         0x1903
-#define GL_SCREEN_NV                      0x9295
-#define GL_SOFTLIGHT_NV                   0x929C
-#define GL_SRC_ATOP_NV                    0x928E
-#define GL_SRC_IN_NV                      0x928A
-#define GL_SRC_NV                         0x9286
-#define GL_SRC_OUT_NV                     0x928C
-#define GL_SRC_OVER_NV                    0x9288
-#define GL_UNCORRELATED_NV                0x9282
-#define GL_VIVIDLIGHT_NV                  0x92A6
-#define GL_XOR_NV                         0x1506
-typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value);
-GLAPI void APIENTRY glBlendBarrierNV (void);
-#endif
-#endif /* GL_NV_blend_equation_advanced */
-
-#ifndef GL_NV_blend_equation_advanced_coherent
-#define GL_NV_blend_equation_advanced_coherent 1
-#define GL_BLEND_ADVANCED_COHERENT_NV     0x9285
-#endif /* GL_NV_blend_equation_advanced_coherent */
-
-#ifndef GL_NV_blend_square
-#define GL_NV_blend_square 1
-#endif /* GL_NV_blend_square */
-
-#ifndef GL_NV_compute_program5
-#define GL_NV_compute_program5 1
-#define GL_COMPUTE_PROGRAM_NV             0x90FB
-#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
-#endif /* GL_NV_compute_program5 */
-
-#ifndef GL_NV_conditional_render
-#define GL_NV_conditional_render 1
-#define GL_QUERY_WAIT_NV                  0x8E13
-#define GL_QUERY_NO_WAIT_NV               0x8E14
-#define GL_QUERY_BY_REGION_WAIT_NV        0x8E15
-#define GL_QUERY_BY_REGION_NO_WAIT_NV     0x8E16
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
-GLAPI void APIENTRY glEndConditionalRenderNV (void);
-#endif
-#endif /* GL_NV_conditional_render */
-
-#ifndef GL_NV_copy_depth_to_color
-#define GL_NV_copy_depth_to_color 1
-#define GL_DEPTH_STENCIL_TO_RGBA_NV       0x886E
-#define GL_DEPTH_STENCIL_TO_BGRA_NV       0x886F
-#endif /* GL_NV_copy_depth_to_color */
-
-#ifndef GL_NV_copy_image
-#define GL_NV_copy_image 1
-typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-#endif /* GL_NV_copy_image */
-
-#ifndef GL_NV_deep_texture3D
-#define GL_NV_deep_texture3D 1
-#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
-#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV   0x90D1
-#endif /* GL_NV_deep_texture3D */
-
-#ifndef GL_NV_depth_buffer_float
-#define GL_NV_depth_buffer_float 1
-#define GL_DEPTH_COMPONENT32F_NV          0x8DAB
-#define GL_DEPTH32F_STENCIL8_NV           0x8DAC
-#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
-#define GL_DEPTH_BUFFER_FLOAT_MODE_NV     0x8DAF
-typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
-typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glClearDepthdNV (GLdouble depth);
-GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax);
-#endif
-#endif /* GL_NV_depth_buffer_float */
-
-#ifndef GL_NV_depth_clamp
-#define GL_NV_depth_clamp 1
-#define GL_DEPTH_CLAMP_NV                 0x864F
-#endif /* GL_NV_depth_clamp */
-
-#ifndef GL_NV_draw_texture
-#define GL_NV_draw_texture 1
-typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
-#endif
-#endif /* GL_NV_draw_texture */
-
-#ifndef GL_NV_evaluators
-#define GL_NV_evaluators 1
-#define GL_EVAL_2D_NV                     0x86C0
-#define GL_EVAL_TRIANGULAR_2D_NV          0x86C1
-#define GL_MAP_TESSELLATION_NV            0x86C2
-#define GL_MAP_ATTRIB_U_ORDER_NV          0x86C3
-#define GL_MAP_ATTRIB_V_ORDER_NV          0x86C4
-#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
-#define GL_EVAL_VERTEX_ATTRIB0_NV         0x86C6
-#define GL_EVAL_VERTEX_ATTRIB1_NV         0x86C7
-#define GL_EVAL_VERTEX_ATTRIB2_NV         0x86C8
-#define GL_EVAL_VERTEX_ATTRIB3_NV         0x86C9
-#define GL_EVAL_VERTEX_ATTRIB4_NV         0x86CA
-#define GL_EVAL_VERTEX_ATTRIB5_NV         0x86CB
-#define GL_EVAL_VERTEX_ATTRIB6_NV         0x86CC
-#define GL_EVAL_VERTEX_ATTRIB7_NV         0x86CD
-#define GL_EVAL_VERTEX_ATTRIB8_NV         0x86CE
-#define GL_EVAL_VERTEX_ATTRIB9_NV         0x86CF
-#define GL_EVAL_VERTEX_ATTRIB10_NV        0x86D0
-#define GL_EVAL_VERTEX_ATTRIB11_NV        0x86D1
-#define GL_EVAL_VERTEX_ATTRIB12_NV        0x86D2
-#define GL_EVAL_VERTEX_ATTRIB13_NV        0x86D3
-#define GL_EVAL_VERTEX_ATTRIB14_NV        0x86D4
-#define GL_EVAL_VERTEX_ATTRIB15_NV        0x86D5
-#define GL_MAX_MAP_TESSELLATION_NV        0x86D6
-#define GL_MAX_RATIONAL_EVAL_ORDER_NV     0x86D7
-typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
-typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
-typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
-GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
-GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode);
-#endif
-#endif /* GL_NV_evaluators */
-
-#ifndef GL_NV_explicit_multisample
-#define GL_NV_explicit_multisample 1
-#define GL_SAMPLE_POSITION_NV             0x8E50
-#define GL_SAMPLE_MASK_NV                 0x8E51
-#define GL_SAMPLE_MASK_VALUE_NV           0x8E52
-#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
-#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
-#define GL_TEXTURE_RENDERBUFFER_NV        0x8E55
-#define GL_SAMPLER_RENDERBUFFER_NV        0x8E56
-#define GL_INT_SAMPLER_RENDERBUFFER_NV    0x8E57
-#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
-#define GL_MAX_SAMPLE_MASK_WORDS_NV       0x8E59
-typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val);
-typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
-typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val);
-GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask);
-GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer);
-#endif
-#endif /* GL_NV_explicit_multisample */
-
-#ifndef GL_NV_fence
-#define GL_NV_fence 1
-#define GL_ALL_COMPLETED_NV               0x84F2
-#define GL_FENCE_STATUS_NV                0x84F3
-#define GL_FENCE_CONDITION_NV             0x84F4
-typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
-typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
-typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
-typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
-typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
-GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
-GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence);
-GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence);
-GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
-GLAPI void APIENTRY glFinishFenceNV (GLuint fence);
-GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
-#endif
-#endif /* GL_NV_fence */
-
-#ifndef GL_NV_float_buffer
-#define GL_NV_float_buffer 1
-#define GL_FLOAT_R_NV                     0x8880
-#define GL_FLOAT_RG_NV                    0x8881
-#define GL_FLOAT_RGB_NV                   0x8882
-#define GL_FLOAT_RGBA_NV                  0x8883
-#define GL_FLOAT_R16_NV                   0x8884
-#define GL_FLOAT_R32_NV                   0x8885
-#define GL_FLOAT_RG16_NV                  0x8886
-#define GL_FLOAT_RG32_NV                  0x8887
-#define GL_FLOAT_RGB16_NV                 0x8888
-#define GL_FLOAT_RGB32_NV                 0x8889
-#define GL_FLOAT_RGBA16_NV                0x888A
-#define GL_FLOAT_RGBA32_NV                0x888B
-#define GL_TEXTURE_FLOAT_COMPONENTS_NV    0x888C
-#define GL_FLOAT_CLEAR_COLOR_VALUE_NV     0x888D
-#define GL_FLOAT_RGBA_MODE_NV             0x888E
-#endif /* GL_NV_float_buffer */
-
-#ifndef GL_NV_fog_distance
-#define GL_NV_fog_distance 1
-#define GL_FOG_DISTANCE_MODE_NV           0x855A
-#define GL_EYE_RADIAL_NV                  0x855B
-#define GL_EYE_PLANE_ABSOLUTE_NV          0x855C
-#endif /* GL_NV_fog_distance */
-
-#ifndef GL_NV_fragment_program
-#define GL_NV_fragment_program 1
-#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
-#define GL_FRAGMENT_PROGRAM_NV            0x8870
-#define GL_MAX_TEXTURE_COORDS_NV          0x8871
-#define GL_MAX_TEXTURE_IMAGE_UNITS_NV     0x8872
-#define GL_FRAGMENT_PROGRAM_BINDING_NV    0x8873
-#define GL_PROGRAM_ERROR_STRING_NV        0x8874
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
-typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
-GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
-GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
-GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
-#endif
-#endif /* GL_NV_fragment_program */
-
-#ifndef GL_NV_fragment_program2
-#define GL_NV_fragment_program2 1
-#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
-#define GL_MAX_PROGRAM_CALL_DEPTH_NV      0x88F5
-#define GL_MAX_PROGRAM_IF_DEPTH_NV        0x88F6
-#define GL_MAX_PROGRAM_LOOP_DEPTH_NV      0x88F7
-#define GL_MAX_PROGRAM_LOOP_COUNT_NV      0x88F8
-#endif /* GL_NV_fragment_program2 */
-
-#ifndef GL_NV_fragment_program4
-#define GL_NV_fragment_program4 1
-#endif /* GL_NV_fragment_program4 */
-
-#ifndef GL_NV_fragment_program_option
-#define GL_NV_fragment_program_option 1
-#endif /* GL_NV_fragment_program_option */
-
-#ifndef GL_NV_framebuffer_multisample_coverage
-#define GL_NV_framebuffer_multisample_coverage 1
-#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
-#define GL_RENDERBUFFER_COLOR_SAMPLES_NV  0x8E10
-#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
-#define GL_MULTISAMPLE_COVERAGE_MODES_NV  0x8E12
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_NV_framebuffer_multisample_coverage */
-
-#ifndef GL_NV_geometry_program4
-#define GL_NV_geometry_program4 1
-#define GL_GEOMETRY_PROGRAM_NV            0x8C26
-#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
-#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
-typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit);
-GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#endif
-#endif /* GL_NV_geometry_program4 */
-
-#ifndef GL_NV_geometry_shader4
-#define GL_NV_geometry_shader4 1
-#endif /* GL_NV_geometry_shader4 */
-
-#ifndef GL_NV_gpu_program4
-#define GL_NV_gpu_program4 1
-#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV    0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV    0x8905
-#define GL_PROGRAM_ATTRIB_COMPONENTS_NV   0x8906
-#define GL_PROGRAM_RESULT_COMPONENTS_NV   0x8907
-#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
-#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
-#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
-#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params);
-GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params);
-#endif
-#endif /* GL_NV_gpu_program4 */
-
-#ifndef GL_NV_gpu_program5
-#define GL_NV_gpu_program5 1
-#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
-#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
-#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
-#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
-#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44
-#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV  0x8F45
-typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param);
-#endif
-#endif /* GL_NV_gpu_program5 */
-
-#ifndef GL_NV_gpu_program5_mem_extended
-#define GL_NV_gpu_program5_mem_extended 1
-#endif /* GL_NV_gpu_program5_mem_extended */
-
-#ifndef GL_NV_gpu_shader5
-#define GL_NV_gpu_shader5 1
-#endif /* GL_NV_gpu_shader5 */
-
-#ifndef GL_NV_half_float
-#define GL_NV_half_float 1
-typedef unsigned short GLhalfNV;
-#define GL_HALF_FLOAT_NV                  0x140B
-typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
-typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
-typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
-typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
-typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
-typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
-typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
-typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
-typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
-GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z);
-GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
-GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
-GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s);
-GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t);
-GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r);
-GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s);
-GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t);
-GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
-GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
-GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
-GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
-GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
-GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
-GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
-GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
-GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-#endif
-#endif /* GL_NV_half_float */
-
-#ifndef GL_NV_light_max_exponent
-#define GL_NV_light_max_exponent 1
-#define GL_MAX_SHININESS_NV               0x8504
-#define GL_MAX_SPOT_EXPONENT_NV           0x8505
-#endif /* GL_NV_light_max_exponent */
-
-#ifndef GL_NV_multisample_coverage
-#define GL_NV_multisample_coverage 1
-#define GL_COLOR_SAMPLES_NV               0x8E20
-#endif /* GL_NV_multisample_coverage */
-
-#ifndef GL_NV_multisample_filter_hint
-#define GL_NV_multisample_filter_hint 1
-#define GL_MULTISAMPLE_FILTER_HINT_NV     0x8534
-#endif /* GL_NV_multisample_filter_hint */
-
-#ifndef GL_NV_occlusion_query
-#define GL_NV_occlusion_query 1
-#define GL_PIXEL_COUNTER_BITS_NV          0x8864
-#define GL_CURRENT_OCCLUSION_QUERY_ID_NV  0x8865
-#define GL_PIXEL_COUNT_NV                 0x8866
-#define GL_PIXEL_COUNT_AVAILABLE_NV       0x8867
-typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);
-typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id);
-GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id);
-GLAPI void APIENTRY glEndOcclusionQueryNV (void);
-GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);
-#endif
-#endif /* GL_NV_occlusion_query */
-
-#ifndef GL_NV_packed_depth_stencil
-#define GL_NV_packed_depth_stencil 1
-#define GL_DEPTH_STENCIL_NV               0x84F9
-#define GL_UNSIGNED_INT_24_8_NV           0x84FA
-#endif /* GL_NV_packed_depth_stencil */
-
-#ifndef GL_NV_parameter_buffer_object
-#define GL_NV_parameter_buffer_object 1
-#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
-#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
-#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
-#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
-#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
-typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
-#endif
-#endif /* GL_NV_parameter_buffer_object */
-
-#ifndef GL_NV_parameter_buffer_object2
-#define GL_NV_parameter_buffer_object2 1
-#endif /* GL_NV_parameter_buffer_object2 */
-
-#ifndef GL_NV_path_rendering
-#define GL_NV_path_rendering 1
-#define GL_PATH_FORMAT_SVG_NV             0x9070
-#define GL_PATH_FORMAT_PS_NV              0x9071
-#define GL_STANDARD_FONT_NAME_NV          0x9072
-#define GL_SYSTEM_FONT_NAME_NV            0x9073
-#define GL_FILE_NAME_NV                   0x9074
-#define GL_PATH_STROKE_WIDTH_NV           0x9075
-#define GL_PATH_END_CAPS_NV               0x9076
-#define GL_PATH_INITIAL_END_CAP_NV        0x9077
-#define GL_PATH_TERMINAL_END_CAP_NV       0x9078
-#define GL_PATH_JOIN_STYLE_NV             0x9079
-#define GL_PATH_MITER_LIMIT_NV            0x907A
-#define GL_PATH_DASH_CAPS_NV              0x907B
-#define GL_PATH_INITIAL_DASH_CAP_NV       0x907C
-#define GL_PATH_TERMINAL_DASH_CAP_NV      0x907D
-#define GL_PATH_DASH_OFFSET_NV            0x907E
-#define GL_PATH_CLIENT_LENGTH_NV          0x907F
-#define GL_PATH_FILL_MODE_NV              0x9080
-#define GL_PATH_FILL_MASK_NV              0x9081
-#define GL_PATH_FILL_COVER_MODE_NV        0x9082
-#define GL_PATH_STROKE_COVER_MODE_NV      0x9083
-#define GL_PATH_STROKE_MASK_NV            0x9084
-#define GL_COUNT_UP_NV                    0x9088
-#define GL_COUNT_DOWN_NV                  0x9089
-#define GL_PATH_OBJECT_BOUNDING_BOX_NV    0x908A
-#define GL_CONVEX_HULL_NV                 0x908B
-#define GL_BOUNDING_BOX_NV                0x908D
-#define GL_TRANSLATE_X_NV                 0x908E
-#define GL_TRANSLATE_Y_NV                 0x908F
-#define GL_TRANSLATE_2D_NV                0x9090
-#define GL_TRANSLATE_3D_NV                0x9091
-#define GL_AFFINE_2D_NV                   0x9092
-#define GL_AFFINE_3D_NV                   0x9094
-#define GL_TRANSPOSE_AFFINE_2D_NV         0x9096
-#define GL_TRANSPOSE_AFFINE_3D_NV         0x9098
-#define GL_UTF8_NV                        0x909A
-#define GL_UTF16_NV                       0x909B
-#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
-#define GL_PATH_COMMAND_COUNT_NV          0x909D
-#define GL_PATH_COORD_COUNT_NV            0x909E
-#define GL_PATH_DASH_ARRAY_COUNT_NV       0x909F
-#define GL_PATH_COMPUTED_LENGTH_NV        0x90A0
-#define GL_PATH_FILL_BOUNDING_BOX_NV      0x90A1
-#define GL_PATH_STROKE_BOUNDING_BOX_NV    0x90A2
-#define GL_SQUARE_NV                      0x90A3
-#define GL_ROUND_NV                       0x90A4
-#define GL_TRIANGULAR_NV                  0x90A5
-#define GL_BEVEL_NV                       0x90A6
-#define GL_MITER_REVERT_NV                0x90A7
-#define GL_MITER_TRUNCATE_NV              0x90A8
-#define GL_SKIP_MISSING_GLYPH_NV          0x90A9
-#define GL_USE_MISSING_GLYPH_NV           0x90AA
-#define GL_PATH_ERROR_POSITION_NV         0x90AB
-#define GL_PATH_FOG_GEN_MODE_NV           0x90AC
-#define GL_ACCUM_ADJACENT_PAIRS_NV        0x90AD
-#define GL_ADJACENT_PAIRS_NV              0x90AE
-#define GL_FIRST_TO_REST_NV               0x90AF
-#define GL_PATH_GEN_MODE_NV               0x90B0
-#define GL_PATH_GEN_COEFF_NV              0x90B1
-#define GL_PATH_GEN_COLOR_FORMAT_NV       0x90B2
-#define GL_PATH_GEN_COMPONENTS_NV         0x90B3
-#define GL_PATH_STENCIL_FUNC_NV           0x90B7
-#define GL_PATH_STENCIL_REF_NV            0x90B8
-#define GL_PATH_STENCIL_VALUE_MASK_NV     0x90B9
-#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
-#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
-#define GL_PATH_COVER_DEPTH_FUNC_NV       0x90BF
-#define GL_PATH_DASH_OFFSET_RESET_NV      0x90B4
-#define GL_MOVE_TO_RESETS_NV              0x90B5
-#define GL_MOVE_TO_CONTINUES_NV           0x90B6
-#define GL_CLOSE_PATH_NV                  0x00
-#define GL_MOVE_TO_NV                     0x02
-#define GL_RELATIVE_MOVE_TO_NV            0x03
-#define GL_LINE_TO_NV                     0x04
-#define GL_RELATIVE_LINE_TO_NV            0x05
-#define GL_HORIZONTAL_LINE_TO_NV          0x06
-#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
-#define GL_VERTICAL_LINE_TO_NV            0x08
-#define GL_RELATIVE_VERTICAL_LINE_TO_NV   0x09
-#define GL_QUADRATIC_CURVE_TO_NV          0x0A
-#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
-#define GL_CUBIC_CURVE_TO_NV              0x0C
-#define GL_RELATIVE_CUBIC_CURVE_TO_NV     0x0D
-#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV   0x0E
-#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
-#define GL_SMOOTH_CUBIC_CURVE_TO_NV       0x10
-#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
-#define GL_SMALL_CCW_ARC_TO_NV            0x12
-#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV   0x13
-#define GL_SMALL_CW_ARC_TO_NV             0x14
-#define GL_RELATIVE_SMALL_CW_ARC_TO_NV    0x15
-#define GL_LARGE_CCW_ARC_TO_NV            0x16
-#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV   0x17
-#define GL_LARGE_CW_ARC_TO_NV             0x18
-#define GL_RELATIVE_LARGE_CW_ARC_TO_NV    0x19
-#define GL_RESTART_PATH_NV                0xF0
-#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV    0xF2
-#define GL_DUP_LAST_CUBIC_CURVE_TO_NV     0xF4
-#define GL_RECT_NV                        0xF6
-#define GL_CIRCULAR_CCW_ARC_TO_NV         0xF8
-#define GL_CIRCULAR_CW_ARC_TO_NV          0xFA
-#define GL_CIRCULAR_TANGENT_ARC_TO_NV     0xFC
-#define GL_ARC_TO_NV                      0xFE
-#define GL_RELATIVE_ARC_TO_NV             0xFF
-#define GL_BOLD_BIT_NV                    0x01
-#define GL_ITALIC_BIT_NV                  0x02
-#define GL_GLYPH_WIDTH_BIT_NV             0x01
-#define GL_GLYPH_HEIGHT_BIT_NV            0x02
-#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
-#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
-#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
-#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
-#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
-#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
-#define GL_GLYPH_HAS_KERNING_BIT_NV       0x100
-#define GL_FONT_X_MIN_BOUNDS_BIT_NV       0x00010000
-#define GL_FONT_Y_MIN_BOUNDS_BIT_NV       0x00020000
-#define GL_FONT_X_MAX_BOUNDS_BIT_NV       0x00040000
-#define GL_FONT_Y_MAX_BOUNDS_BIT_NV       0x00080000
-#define GL_FONT_UNITS_PER_EM_BIT_NV       0x00100000
-#define GL_FONT_ASCENDER_BIT_NV           0x00200000
-#define GL_FONT_DESCENDER_BIT_NV          0x00400000
-#define GL_FONT_HEIGHT_BIT_NV             0x00800000
-#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV  0x01000000
-#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
-#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
-#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
-#define GL_FONT_HAS_KERNING_BIT_NV        0x10000000
-#define GL_PRIMARY_COLOR_NV               0x852C
-#define GL_SECONDARY_COLOR_NV             0x852D
-typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);
-typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
-typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path);
-typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
-typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
-typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
-typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
-typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
-typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
-typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
-typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
-typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);
-typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
-typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
-typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode);
-typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
-typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
-typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);
-typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);
-typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);
-typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);
-typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
-typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
-typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
-typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value);
-typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value);
-typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
-typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
-typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
-typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range);
-GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range);
-GLAPI GLboolean APIENTRY glIsPathNV (GLuint path);
-GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);
-GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
-GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);
-GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
-GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);
-GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);
-GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);
-GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);
-GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
-GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);
-GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);
-GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);
-GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);
-GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func);
-GLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
-GLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
-GLAPI void APIENTRY glPathFogGenNV (GLenum genMode);
-GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);
-GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);
-GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);
-GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);
-GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);
-GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);
-GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
-GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
-GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
-GLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value);
-GLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value);
-GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);
-GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);
-GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);
-GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
-#endif
-#endif /* GL_NV_path_rendering */
-
-#ifndef GL_NV_pixel_data_range
-#define GL_NV_pixel_data_range 1
-#define GL_WRITE_PIXEL_DATA_RANGE_NV      0x8878
-#define GL_READ_PIXEL_DATA_RANGE_NV       0x8879
-#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
-#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
-#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
-#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
-typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const void *pointer);
-typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const void *pointer);
-GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target);
-#endif
-#endif /* GL_NV_pixel_data_range */
-
-#ifndef GL_NV_point_sprite
-#define GL_NV_point_sprite 1
-#define GL_POINT_SPRITE_NV                0x8861
-#define GL_COORD_REPLACE_NV               0x8862
-#define GL_POINT_SPRITE_R_MODE_NV         0x8863
-typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param);
-GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params);
-#endif
-#endif /* GL_NV_point_sprite */
-
-#ifndef GL_NV_present_video
-#define GL_NV_present_video 1
-#define GL_FRAME_NV                       0x8E26
-#define GL_FIELDS_NV                      0x8E27
-#define GL_CURRENT_TIME_NV                0x8E28
-#define GL_NUM_FILL_STREAMS_NV            0x8E29
-#define GL_PRESENT_TIME_NV                0x8E2A
-#define GL_PRESENT_DURATION_NV            0x8E2B
-typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
-typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
-typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
-GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
-GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);
-GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);
-#endif
-#endif /* GL_NV_present_video */
-
-#ifndef GL_NV_primitive_restart
-#define GL_NV_primitive_restart 1
-#define GL_PRIMITIVE_RESTART_NV           0x8558
-#define GL_PRIMITIVE_RESTART_INDEX_NV     0x8559
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPrimitiveRestartNV (void);
-GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index);
-#endif
-#endif /* GL_NV_primitive_restart */
-
-#ifndef GL_NV_register_combiners
-#define GL_NV_register_combiners 1
-#define GL_REGISTER_COMBINERS_NV          0x8522
-#define GL_VARIABLE_A_NV                  0x8523
-#define GL_VARIABLE_B_NV                  0x8524
-#define GL_VARIABLE_C_NV                  0x8525
-#define GL_VARIABLE_D_NV                  0x8526
-#define GL_VARIABLE_E_NV                  0x8527
-#define GL_VARIABLE_F_NV                  0x8528
-#define GL_VARIABLE_G_NV                  0x8529
-#define GL_CONSTANT_COLOR0_NV             0x852A
-#define GL_CONSTANT_COLOR1_NV             0x852B
-#define GL_SPARE0_NV                      0x852E
-#define GL_SPARE1_NV                      0x852F
-#define GL_DISCARD_NV                     0x8530
-#define GL_E_TIMES_F_NV                   0x8531
-#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
-#define GL_UNSIGNED_IDENTITY_NV           0x8536
-#define GL_UNSIGNED_INVERT_NV             0x8537
-#define GL_EXPAND_NORMAL_NV               0x8538
-#define GL_EXPAND_NEGATE_NV               0x8539
-#define GL_HALF_BIAS_NORMAL_NV            0x853A
-#define GL_HALF_BIAS_NEGATE_NV            0x853B
-#define GL_SIGNED_IDENTITY_NV             0x853C
-#define GL_SIGNED_NEGATE_NV               0x853D
-#define GL_SCALE_BY_TWO_NV                0x853E
-#define GL_SCALE_BY_FOUR_NV               0x853F
-#define GL_SCALE_BY_ONE_HALF_NV           0x8540
-#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV   0x8541
-#define GL_COMBINER_INPUT_NV              0x8542
-#define GL_COMBINER_MAPPING_NV            0x8543
-#define GL_COMBINER_COMPONENT_USAGE_NV    0x8544
-#define GL_COMBINER_AB_DOT_PRODUCT_NV     0x8545
-#define GL_COMBINER_CD_DOT_PRODUCT_NV     0x8546
-#define GL_COMBINER_MUX_SUM_NV            0x8547
-#define GL_COMBINER_SCALE_NV              0x8548
-#define GL_COMBINER_BIAS_NV               0x8549
-#define GL_COMBINER_AB_OUTPUT_NV          0x854A
-#define GL_COMBINER_CD_OUTPUT_NV          0x854B
-#define GL_COMBINER_SUM_OUTPUT_NV         0x854C
-#define GL_MAX_GENERAL_COMBINERS_NV       0x854D
-#define GL_NUM_GENERAL_COMBINERS_NV       0x854E
-#define GL_COLOR_SUM_CLAMP_NV             0x854F
-#define GL_COMBINER0_NV                   0x8550
-#define GL_COMBINER1_NV                   0x8551
-#define GL_COMBINER2_NV                   0x8552
-#define GL_COMBINER3_NV                   0x8553
-#define GL_COMBINER4_NV                   0x8554
-#define GL_COMBINER5_NV                   0x8555
-#define GL_COMBINER6_NV                   0x8556
-#define GL_COMBINER7_NV                   0x8557
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
-typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param);
-GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
-GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);
-#endif
-#endif /* GL_NV_register_combiners */
-
-#ifndef GL_NV_register_combiners2
-#define GL_NV_register_combiners2 1
-#define GL_PER_STAGE_CONSTANTS_NV         0x8535
-typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_NV_register_combiners2 */
-
-#ifndef GL_NV_shader_atomic_counters
-#define GL_NV_shader_atomic_counters 1
-#endif /* GL_NV_shader_atomic_counters */
-
-#ifndef GL_NV_shader_atomic_float
-#define GL_NV_shader_atomic_float 1
-#endif /* GL_NV_shader_atomic_float */
-
-#ifndef GL_NV_shader_buffer_load
-#define GL_NV_shader_buffer_load 1
-#define GL_BUFFER_GPU_ADDRESS_NV          0x8F1D
-#define GL_GPU_ADDRESS_NV                 0x8F34
-#define GL_MAX_SHADER_BUFFER_ADDRESS_NV   0x8F35
-typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
-typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
-typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result);
-typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
-typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
-GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
-GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
-GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
-GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
-GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
-GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
-GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
-GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
-GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#endif
-#endif /* GL_NV_shader_buffer_load */
-
-#ifndef GL_NV_shader_buffer_store
-#define GL_NV_shader_buffer_store 1
-#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
-#endif /* GL_NV_shader_buffer_store */
-
-#ifndef GL_NV_shader_storage_buffer_object
-#define GL_NV_shader_storage_buffer_object 1
-#endif /* GL_NV_shader_storage_buffer_object */
-
-#ifndef GL_NV_shader_thread_group
-#define GL_NV_shader_thread_group 1
-#define GL_WARP_SIZE_NV                   0x9339
-#define GL_WARPS_PER_SM_NV                0x933A
-#define GL_SM_COUNT_NV                    0x933B
-#endif /* GL_NV_shader_thread_group */
-
-#ifndef GL_NV_shader_thread_shuffle
-#define GL_NV_shader_thread_shuffle 1
-#endif /* GL_NV_shader_thread_shuffle */
-
-#ifndef GL_NV_tessellation_program5
-#define GL_NV_tessellation_program5 1
-#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV   0x86D8
-#define GL_TESS_CONTROL_PROGRAM_NV        0x891E
-#define GL_TESS_EVALUATION_PROGRAM_NV     0x891F
-#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
-#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
-#endif /* GL_NV_tessellation_program5 */
-
-#ifndef GL_NV_texgen_emboss
-#define GL_NV_texgen_emboss 1
-#define GL_EMBOSS_LIGHT_NV                0x855D
-#define GL_EMBOSS_CONSTANT_NV             0x855E
-#define GL_EMBOSS_MAP_NV                  0x855F
-#endif /* GL_NV_texgen_emboss */
-
-#ifndef GL_NV_texgen_reflection
-#define GL_NV_texgen_reflection 1
-#define GL_NORMAL_MAP_NV                  0x8511
-#define GL_REFLECTION_MAP_NV              0x8512
-#endif /* GL_NV_texgen_reflection */
-
-#ifndef GL_NV_texture_barrier
-#define GL_NV_texture_barrier 1
-typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureBarrierNV (void);
-#endif
-#endif /* GL_NV_texture_barrier */
-
-#ifndef GL_NV_texture_compression_vtc
-#define GL_NV_texture_compression_vtc 1
-#endif /* GL_NV_texture_compression_vtc */
-
-#ifndef GL_NV_texture_env_combine4
-#define GL_NV_texture_env_combine4 1
-#define GL_COMBINE4_NV                    0x8503
-#define GL_SOURCE3_RGB_NV                 0x8583
-#define GL_SOURCE3_ALPHA_NV               0x858B
-#define GL_OPERAND3_RGB_NV                0x8593
-#define GL_OPERAND3_ALPHA_NV              0x859B
-#endif /* GL_NV_texture_env_combine4 */
-
-#ifndef GL_NV_texture_expand_normal
-#define GL_NV_texture_expand_normal 1
-#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
-#endif /* GL_NV_texture_expand_normal */
-
-#ifndef GL_NV_texture_multisample
-#define GL_NV_texture_multisample 1
-#define GL_TEXTURE_COVERAGE_SAMPLES_NV    0x9045
-#define GL_TEXTURE_COLOR_SAMPLES_NV       0x9046
-typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-#endif
-#endif /* GL_NV_texture_multisample */
-
-#ifndef GL_NV_texture_rectangle
-#define GL_NV_texture_rectangle 1
-#define GL_TEXTURE_RECTANGLE_NV           0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE_NV   0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE_NV     0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV  0x84F8
-#endif /* GL_NV_texture_rectangle */
-
-#ifndef GL_NV_texture_shader
-#define GL_NV_texture_shader 1
-#define GL_OFFSET_TEXTURE_RECTANGLE_NV    0x864C
-#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
-#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
-#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
-#define GL_UNSIGNED_INT_S8_S8_8_8_NV      0x86DA
-#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  0x86DB
-#define GL_DSDT_MAG_INTENSITY_NV          0x86DC
-#define GL_SHADER_CONSISTENT_NV           0x86DD
-#define GL_TEXTURE_SHADER_NV              0x86DE
-#define GL_SHADER_OPERATION_NV            0x86DF
-#define GL_CULL_MODES_NV                  0x86E0
-#define GL_OFFSET_TEXTURE_MATRIX_NV       0x86E1
-#define GL_OFFSET_TEXTURE_SCALE_NV        0x86E2
-#define GL_OFFSET_TEXTURE_BIAS_NV         0x86E3
-#define GL_OFFSET_TEXTURE_2D_MATRIX_NV    0x86E1
-#define GL_OFFSET_TEXTURE_2D_SCALE_NV     0x86E2
-#define GL_OFFSET_TEXTURE_2D_BIAS_NV      0x86E3
-#define GL_PREVIOUS_TEXTURE_INPUT_NV      0x86E4
-#define GL_CONST_EYE_NV                   0x86E5
-#define GL_PASS_THROUGH_NV                0x86E6
-#define GL_CULL_FRAGMENT_NV               0x86E7
-#define GL_OFFSET_TEXTURE_2D_NV           0x86E8
-#define GL_DEPENDENT_AR_TEXTURE_2D_NV     0x86E9
-#define GL_DEPENDENT_GB_TEXTURE_2D_NV     0x86EA
-#define GL_DOT_PRODUCT_NV                 0x86EC
-#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV   0x86ED
-#define GL_DOT_PRODUCT_TEXTURE_2D_NV      0x86EE
-#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
-#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
-#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
-#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
-#define GL_HILO_NV                        0x86F4
-#define GL_DSDT_NV                        0x86F5
-#define GL_DSDT_MAG_NV                    0x86F6
-#define GL_DSDT_MAG_VIB_NV                0x86F7
-#define GL_HILO16_NV                      0x86F8
-#define GL_SIGNED_HILO_NV                 0x86F9
-#define GL_SIGNED_HILO16_NV               0x86FA
-#define GL_SIGNED_RGBA_NV                 0x86FB
-#define GL_SIGNED_RGBA8_NV                0x86FC
-#define GL_SIGNED_RGB_NV                  0x86FE
-#define GL_SIGNED_RGB8_NV                 0x86FF
-#define GL_SIGNED_LUMINANCE_NV            0x8701
-#define GL_SIGNED_LUMINANCE8_NV           0x8702
-#define GL_SIGNED_LUMINANCE_ALPHA_NV      0x8703
-#define GL_SIGNED_LUMINANCE8_ALPHA8_NV    0x8704
-#define GL_SIGNED_ALPHA_NV                0x8705
-#define GL_SIGNED_ALPHA8_NV               0x8706
-#define GL_SIGNED_INTENSITY_NV            0x8707
-#define GL_SIGNED_INTENSITY8_NV           0x8708
-#define GL_DSDT8_NV                       0x8709
-#define GL_DSDT8_MAG8_NV                  0x870A
-#define GL_DSDT8_MAG8_INTENSITY8_NV       0x870B
-#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV   0x870C
-#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
-#define GL_HI_SCALE_NV                    0x870E
-#define GL_LO_SCALE_NV                    0x870F
-#define GL_DS_SCALE_NV                    0x8710
-#define GL_DT_SCALE_NV                    0x8711
-#define GL_MAGNITUDE_SCALE_NV             0x8712
-#define GL_VIBRANCE_SCALE_NV              0x8713
-#define GL_HI_BIAS_NV                     0x8714
-#define GL_LO_BIAS_NV                     0x8715
-#define GL_DS_BIAS_NV                     0x8716
-#define GL_DT_BIAS_NV                     0x8717
-#define GL_MAGNITUDE_BIAS_NV              0x8718
-#define GL_VIBRANCE_BIAS_NV               0x8719
-#define GL_TEXTURE_BORDER_VALUES_NV       0x871A
-#define GL_TEXTURE_HI_SIZE_NV             0x871B
-#define GL_TEXTURE_LO_SIZE_NV             0x871C
-#define GL_TEXTURE_DS_SIZE_NV             0x871D
-#define GL_TEXTURE_DT_SIZE_NV             0x871E
-#define GL_TEXTURE_MAG_SIZE_NV            0x871F
-#endif /* GL_NV_texture_shader */
-
-#ifndef GL_NV_texture_shader2
-#define GL_NV_texture_shader2 1
-#define GL_DOT_PRODUCT_TEXTURE_3D_NV      0x86EF
-#endif /* GL_NV_texture_shader2 */
-
-#ifndef GL_NV_texture_shader3
-#define GL_NV_texture_shader3 1
-#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
-#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
-#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
-#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
-#define GL_OFFSET_HILO_TEXTURE_2D_NV      0x8854
-#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
-#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
-#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
-#define GL_DEPENDENT_HILO_TEXTURE_2D_NV   0x8858
-#define GL_DEPENDENT_RGB_TEXTURE_3D_NV    0x8859
-#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
-#define GL_DOT_PRODUCT_PASS_THROUGH_NV    0x885B
-#define GL_DOT_PRODUCT_TEXTURE_1D_NV      0x885C
-#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
-#define GL_HILO8_NV                       0x885E
-#define GL_SIGNED_HILO8_NV                0x885F
-#define GL_FORCE_BLUE_TO_ONE_NV           0x8860
-#endif /* GL_NV_texture_shader3 */
-
-#ifndef GL_NV_transform_feedback
-#define GL_NV_transform_feedback 1
-#define GL_BACK_PRIMARY_COLOR_NV          0x8C77
-#define GL_BACK_SECONDARY_COLOR_NV        0x8C78
-#define GL_TEXTURE_COORD_NV               0x8C79
-#define GL_CLIP_DISTANCE_NV               0x8C7A
-#define GL_VERTEX_ID_NV                   0x8C7B
-#define GL_PRIMITIVE_ID_NV                0x8C7C
-#define GL_GENERIC_ATTRIB_NV              0x8C7D
-#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV  0x8C7E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
-#define GL_ACTIVE_VARYINGS_NV             0x8C81
-#define GL_ACTIVE_VARYING_MAX_LENGTH_NV   0x8C82
-#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
-#define GL_TRANSFORM_FEEDBACK_RECORD_NV   0x8C86
-#define GL_PRIMITIVES_GENERATED_NV        0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
-#define GL_RASTERIZER_DISCARD_NV          0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
-#define GL_INTERLEAVED_ATTRIBS_NV         0x8C8C
-#define GL_SEPARATE_ATTRIBS_NV            0x8C8D
-#define GL_TRANSFORM_FEEDBACK_BUFFER_NV   0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
-#define GL_LAYER_NV                       0x8DAA
-#define GL_NEXT_BUFFER_NV                 -2
-#define GL_SKIP_COMPONENTS4_NV            -3
-#define GL_SKIP_COMPONENTS3_NV            -4
-#define GL_SKIP_COMPONENTS2_NV            -5
-#define GL_SKIP_COMPONENTS1_NV            -6
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedbackNV (void);
-GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode);
-GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
-GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name);
-GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location);
-GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
-#endif
-#endif /* GL_NV_transform_feedback */
-
-#ifndef GL_NV_transform_feedback2
-#define GL_NV_transform_feedback2 1
-#define GL_TRANSFORM_FEEDBACK_NV          0x8E22
-#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
-#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
-#define GL_TRANSFORM_FEEDBACK_BINDING_NV  0x8E25
-typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids);
-typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void);
-typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids);
-GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids);
-GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id);
-GLAPI void APIENTRY glPauseTransformFeedbackNV (void);
-GLAPI void APIENTRY glResumeTransformFeedbackNV (void);
-GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);
-#endif
-#endif /* GL_NV_transform_feedback2 */
-
-#ifndef GL_NV_vdpau_interop
-#define GL_NV_vdpau_interop 1
-typedef GLintptr GLvdpauSurfaceNV;
-#define GL_SURFACE_STATE_NV               0x86EB
-#define GL_SURFACE_REGISTERED_NV          0x86FD
-#define GL_SURFACE_MAPPED_NV              0x8700
-#define GL_WRITE_DISCARD_NV               0x88BE
-typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void *getProcAddress);
-typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
-typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
-typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
-typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
-typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
-typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAddress);
-GLAPI void APIENTRY glVDPAUFiniNV (void);
-GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
-GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
-GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
-GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
-GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
-#endif
-#endif /* GL_NV_vdpau_interop */
-
-#ifndef GL_NV_vertex_array_range
-#define GL_NV_vertex_array_range 1
-#define GL_VERTEX_ARRAY_RANGE_NV          0x851D
-#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV   0x851E
-#define GL_VERTEX_ARRAY_RANGE_VALID_NV    0x851F
-#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
-#define GL_VERTEX_ARRAY_RANGE_POINTER_NV  0x8521
-typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
-typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
-GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const void *pointer);
-#endif
-#endif /* GL_NV_vertex_array_range */
-
-#ifndef GL_NV_vertex_array_range2
-#define GL_NV_vertex_array_range2 1
-#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
-#endif /* GL_NV_vertex_array_range2 */
-
-#ifndef GL_NV_vertex_attrib_integer_64bit
-#define GL_NV_vertex_attrib_integer_64bit 1
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x);
-GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x);
-GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params);
-GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
-#endif
-#endif /* GL_NV_vertex_attrib_integer_64bit */
-
-#ifndef GL_NV_vertex_buffer_unified_memory
-#define GL_NV_vertex_buffer_unified_memory 1
-#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
-#define GL_ELEMENT_ARRAY_UNIFIED_NV       0x8F1F
-#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
-#define GL_VERTEX_ARRAY_ADDRESS_NV        0x8F21
-#define GL_NORMAL_ARRAY_ADDRESS_NV        0x8F22
-#define GL_COLOR_ARRAY_ADDRESS_NV         0x8F23
-#define GL_INDEX_ARRAY_ADDRESS_NV         0x8F24
-#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
-#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV     0x8F26
-#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
-#define GL_FOG_COORD_ARRAY_ADDRESS_NV     0x8F28
-#define GL_ELEMENT_ARRAY_ADDRESS_NV       0x8F29
-#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV  0x8F2A
-#define GL_VERTEX_ARRAY_LENGTH_NV         0x8F2B
-#define GL_NORMAL_ARRAY_LENGTH_NV         0x8F2C
-#define GL_COLOR_ARRAY_LENGTH_NV          0x8F2D
-#define GL_INDEX_ARRAY_LENGTH_NV          0x8F2E
-#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV  0x8F2F
-#define GL_EDGE_FLAG_ARRAY_LENGTH_NV      0x8F30
-#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
-#define GL_FOG_COORD_ARRAY_LENGTH_NV      0x8F32
-#define GL_ELEMENT_ARRAY_LENGTH_NV        0x8F33
-#define GL_DRAW_INDIRECT_UNIFIED_NV       0x8F40
-#define GL_DRAW_INDIRECT_ADDRESS_NV       0x8F41
-#define GL_DRAW_INDIRECT_LENGTH_NV        0x8F42
-typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
-GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
-GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
-#endif
-#endif /* GL_NV_vertex_buffer_unified_memory */
-
-#ifndef GL_NV_vertex_program
-#define GL_NV_vertex_program 1
-#define GL_VERTEX_PROGRAM_NV              0x8620
-#define GL_VERTEX_STATE_PROGRAM_NV        0x8621
-#define GL_ATTRIB_ARRAY_SIZE_NV           0x8623
-#define GL_ATTRIB_ARRAY_STRIDE_NV         0x8624
-#define GL_ATTRIB_ARRAY_TYPE_NV           0x8625
-#define GL_CURRENT_ATTRIB_NV              0x8626
-#define GL_PROGRAM_LENGTH_NV              0x8627
-#define GL_PROGRAM_STRING_NV              0x8628
-#define GL_MODELVIEW_PROJECTION_NV        0x8629
-#define GL_IDENTITY_NV                    0x862A
-#define GL_INVERSE_NV                     0x862B
-#define GL_TRANSPOSE_NV                   0x862C
-#define GL_INVERSE_TRANSPOSE_NV           0x862D
-#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
-#define GL_MAX_TRACK_MATRICES_NV          0x862F
-#define GL_MATRIX0_NV                     0x8630
-#define GL_MATRIX1_NV                     0x8631
-#define GL_MATRIX2_NV                     0x8632
-#define GL_MATRIX3_NV                     0x8633
-#define GL_MATRIX4_NV                     0x8634
-#define GL_MATRIX5_NV                     0x8635
-#define GL_MATRIX6_NV                     0x8636
-#define GL_MATRIX7_NV                     0x8637
-#define GL_CURRENT_MATRIX_STACK_DEPTH_NV  0x8640
-#define GL_CURRENT_MATRIX_NV              0x8641
-#define GL_VERTEX_PROGRAM_POINT_SIZE_NV   0x8642
-#define GL_VERTEX_PROGRAM_TWO_SIDE_NV     0x8643
-#define GL_PROGRAM_PARAMETER_NV           0x8644
-#define GL_ATTRIB_ARRAY_POINTER_NV        0x8645
-#define GL_PROGRAM_TARGET_NV              0x8646
-#define GL_PROGRAM_RESIDENT_NV            0x8647
-#define GL_TRACK_MATRIX_NV                0x8648
-#define GL_TRACK_MATRIX_TRANSFORM_NV      0x8649
-#define GL_VERTEX_PROGRAM_BINDING_NV      0x864A
-#define GL_PROGRAM_ERROR_POSITION_NV      0x864B
-#define GL_VERTEX_ATTRIB_ARRAY0_NV        0x8650
-#define GL_VERTEX_ATTRIB_ARRAY1_NV        0x8651
-#define GL_VERTEX_ATTRIB_ARRAY2_NV        0x8652
-#define GL_VERTEX_ATTRIB_ARRAY3_NV        0x8653
-#define GL_VERTEX_ATTRIB_ARRAY4_NV        0x8654
-#define GL_VERTEX_ATTRIB_ARRAY5_NV        0x8655
-#define GL_VERTEX_ATTRIB_ARRAY6_NV        0x8656
-#define GL_VERTEX_ATTRIB_ARRAY7_NV        0x8657
-#define GL_VERTEX_ATTRIB_ARRAY8_NV        0x8658
-#define GL_VERTEX_ATTRIB_ARRAY9_NV        0x8659
-#define GL_VERTEX_ATTRIB_ARRAY10_NV       0x865A
-#define GL_VERTEX_ATTRIB_ARRAY11_NV       0x865B
-#define GL_VERTEX_ATTRIB_ARRAY12_NV       0x865C
-#define GL_VERTEX_ATTRIB_ARRAY13_NV       0x865D
-#define GL_VERTEX_ATTRIB_ARRAY14_NV       0x865E
-#define GL_VERTEX_ATTRIB_ARRAY15_NV       0x865F
-#define GL_MAP1_VERTEX_ATTRIB0_4_NV       0x8660
-#define GL_MAP1_VERTEX_ATTRIB1_4_NV       0x8661
-#define GL_MAP1_VERTEX_ATTRIB2_4_NV       0x8662
-#define GL_MAP1_VERTEX_ATTRIB3_4_NV       0x8663
-#define GL_MAP1_VERTEX_ATTRIB4_4_NV       0x8664
-#define GL_MAP1_VERTEX_ATTRIB5_4_NV       0x8665
-#define GL_MAP1_VERTEX_ATTRIB6_4_NV       0x8666
-#define GL_MAP1_VERTEX_ATTRIB7_4_NV       0x8667
-#define GL_MAP1_VERTEX_ATTRIB8_4_NV       0x8668
-#define GL_MAP1_VERTEX_ATTRIB9_4_NV       0x8669
-#define GL_MAP1_VERTEX_ATTRIB10_4_NV      0x866A
-#define GL_MAP1_VERTEX_ATTRIB11_4_NV      0x866B
-#define GL_MAP1_VERTEX_ATTRIB12_4_NV      0x866C
-#define GL_MAP1_VERTEX_ATTRIB13_4_NV      0x866D
-#define GL_MAP1_VERTEX_ATTRIB14_4_NV      0x866E
-#define GL_MAP1_VERTEX_ATTRIB15_4_NV      0x866F
-#define GL_MAP2_VERTEX_ATTRIB0_4_NV       0x8670
-#define GL_MAP2_VERTEX_ATTRIB1_4_NV       0x8671
-#define GL_MAP2_VERTEX_ATTRIB2_4_NV       0x8672
-#define GL_MAP2_VERTEX_ATTRIB3_4_NV       0x8673
-#define GL_MAP2_VERTEX_ATTRIB4_4_NV       0x8674
-#define GL_MAP2_VERTEX_ATTRIB5_4_NV       0x8675
-#define GL_MAP2_VERTEX_ATTRIB6_4_NV       0x8676
-#define GL_MAP2_VERTEX_ATTRIB7_4_NV       0x8677
-#define GL_MAP2_VERTEX_ATTRIB8_4_NV       0x8678
-#define GL_MAP2_VERTEX_ATTRIB9_4_NV       0x8679
-#define GL_MAP2_VERTEX_ATTRIB10_4_NV      0x867A
-#define GL_MAP2_VERTEX_ATTRIB11_4_NV      0x867B
-#define GL_MAP2_VERTEX_ATTRIB12_4_NV      0x867C
-#define GL_MAP2_VERTEX_ATTRIB13_4_NV      0x867D
-#define GL_MAP2_VERTEX_ATTRIB14_4_NV      0x867E
-#define GL_MAP2_VERTEX_ATTRIB15_4_NV      0x867F
-typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
-typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
-typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
-typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
-typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void **pointer);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
-typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);
-GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs);
-GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);
-GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs);
-GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);
-GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, void **pointer);
-GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id);
-GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
-GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);
-GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);
-GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);
-#endif
-#endif /* GL_NV_vertex_program */
-
-#ifndef GL_NV_vertex_program1_1
-#define GL_NV_vertex_program1_1 1
-#endif /* GL_NV_vertex_program1_1 */
-
-#ifndef GL_NV_vertex_program2
-#define GL_NV_vertex_program2 1
-#endif /* GL_NV_vertex_program2 */
-
-#ifndef GL_NV_vertex_program2_option
-#define GL_NV_vertex_program2_option 1
-#endif /* GL_NV_vertex_program2_option */
-
-#ifndef GL_NV_vertex_program3
-#define GL_NV_vertex_program3 1
-#endif /* GL_NV_vertex_program3 */
-
-#ifndef GL_NV_vertex_program4
-#define GL_NV_vertex_program4 1
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x);
-GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y);
-GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x);
-GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y);
-GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z);
-GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params);
-#endif
-#endif /* GL_NV_vertex_program4 */
-
-#ifndef GL_NV_video_capture
-#define GL_NV_video_capture 1
-#define GL_VIDEO_BUFFER_NV                0x9020
-#define GL_VIDEO_BUFFER_BINDING_NV        0x9021
-#define GL_FIELD_UPPER_NV                 0x9022
-#define GL_FIELD_LOWER_NV                 0x9023
-#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV   0x9024
-#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
-#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
-#define GL_LAST_VIDEO_CAPTURE_STATUS_NV   0x9027
-#define GL_VIDEO_BUFFER_PITCH_NV          0x9028
-#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
-#define GL_VIDEO_COLOR_CONVERSION_MAX_NV  0x902A
-#define GL_VIDEO_COLOR_CONVERSION_MIN_NV  0x902B
-#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
-#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
-#define GL_PARTIAL_SUCCESS_NV             0x902E
-#define GL_SUCCESS_NV                     0x902F
-#define GL_FAILURE_NV                     0x9030
-#define GL_YCBYCR8_422_NV                 0x9031
-#define GL_YCBAYCR8A_4224_NV              0x9032
-#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV  0x9033
-#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
-#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV  0x9035
-#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
-#define GL_Z4Y12Z4CB12Z4CR12_444_NV       0x9037
-#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV   0x9038
-#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV  0x9039
-#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
-#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
-#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
-typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
-typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
-typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
-typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
-typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot);
-GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
-GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
-GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot);
-GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
-GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
-GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
-#endif
-#endif /* GL_NV_video_capture */
-
-#ifndef GL_OML_interlace
-#define GL_OML_interlace 1
-#define GL_INTERLACE_OML                  0x8980
-#define GL_INTERLACE_READ_OML             0x8981
-#endif /* GL_OML_interlace */
-
-#ifndef GL_OML_resample
-#define GL_OML_resample 1
-#define GL_PACK_RESAMPLE_OML              0x8984
-#define GL_UNPACK_RESAMPLE_OML            0x8985
-#define GL_RESAMPLE_REPLICATE_OML         0x8986
-#define GL_RESAMPLE_ZERO_FILL_OML         0x8987
-#define GL_RESAMPLE_AVERAGE_OML           0x8988
-#define GL_RESAMPLE_DECIMATE_OML          0x8989
-#endif /* GL_OML_resample */
-
-#ifndef GL_OML_subsample
-#define GL_OML_subsample 1
-#define GL_FORMAT_SUBSAMPLE_24_24_OML     0x8982
-#define GL_FORMAT_SUBSAMPLE_244_244_OML   0x8983
-#endif /* GL_OML_subsample */
-
-#ifndef GL_PGI_misc_hints
-#define GL_PGI_misc_hints 1
-#define GL_PREFER_DOUBLEBUFFER_HINT_PGI   0x1A1F8
-#define GL_CONSERVE_MEMORY_HINT_PGI       0x1A1FD
-#define GL_RECLAIM_MEMORY_HINT_PGI        0x1A1FE
-#define GL_NATIVE_GRAPHICS_HANDLE_PGI     0x1A202
-#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
-#define GL_NATIVE_GRAPHICS_END_HINT_PGI   0x1A204
-#define GL_ALWAYS_FAST_HINT_PGI           0x1A20C
-#define GL_ALWAYS_SOFT_HINT_PGI           0x1A20D
-#define GL_ALLOW_DRAW_OBJ_HINT_PGI        0x1A20E
-#define GL_ALLOW_DRAW_WIN_HINT_PGI        0x1A20F
-#define GL_ALLOW_DRAW_FRG_HINT_PGI        0x1A210
-#define GL_ALLOW_DRAW_MEM_HINT_PGI        0x1A211
-#define GL_STRICT_DEPTHFUNC_HINT_PGI      0x1A216
-#define GL_STRICT_LIGHTING_HINT_PGI       0x1A217
-#define GL_STRICT_SCISSOR_HINT_PGI        0x1A218
-#define GL_FULL_STIPPLE_HINT_PGI          0x1A219
-#define GL_CLIP_NEAR_HINT_PGI             0x1A220
-#define GL_CLIP_FAR_HINT_PGI              0x1A221
-#define GL_WIDE_LINE_HINT_PGI             0x1A222
-#define GL_BACK_NORMALS_HINT_PGI          0x1A223
-typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode);
-#endif
-#endif /* GL_PGI_misc_hints */
-
-#ifndef GL_PGI_vertex_hints
-#define GL_PGI_vertex_hints 1
-#define GL_VERTEX_DATA_HINT_PGI           0x1A22A
-#define GL_VERTEX_CONSISTENT_HINT_PGI     0x1A22B
-#define GL_MATERIAL_SIDE_HINT_PGI         0x1A22C
-#define GL_MAX_VERTEX_HINT_PGI            0x1A22D
-#define GL_COLOR3_BIT_PGI                 0x00010000
-#define GL_COLOR4_BIT_PGI                 0x00020000
-#define GL_EDGEFLAG_BIT_PGI               0x00040000
-#define GL_INDEX_BIT_PGI                  0x00080000
-#define GL_MAT_AMBIENT_BIT_PGI            0x00100000
-#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
-#define GL_MAT_DIFFUSE_BIT_PGI            0x00400000
-#define GL_MAT_EMISSION_BIT_PGI           0x00800000
-#define GL_MAT_COLOR_INDEXES_BIT_PGI      0x01000000
-#define GL_MAT_SHININESS_BIT_PGI          0x02000000
-#define GL_MAT_SPECULAR_BIT_PGI           0x04000000
-#define GL_NORMAL_BIT_PGI                 0x08000000
-#define GL_TEXCOORD1_BIT_PGI              0x10000000
-#define GL_TEXCOORD2_BIT_PGI              0x20000000
-#define GL_TEXCOORD3_BIT_PGI              0x40000000
-#define GL_TEXCOORD4_BIT_PGI              0x80000000
-#define GL_VERTEX23_BIT_PGI               0x00000004
-#define GL_VERTEX4_BIT_PGI                0x00000008
-#endif /* GL_PGI_vertex_hints */
-
-#ifndef GL_REND_screen_coordinates
-#define GL_REND_screen_coordinates 1
-#define GL_SCREEN_COORDINATES_REND        0x8490
-#define GL_INVERTED_SCREEN_W_REND         0x8491
-#endif /* GL_REND_screen_coordinates */
-
-#ifndef GL_S3_s3tc
-#define GL_S3_s3tc 1
-#define GL_RGB_S3TC                       0x83A0
-#define GL_RGB4_S3TC                      0x83A1
-#define GL_RGBA_S3TC                      0x83A2
-#define GL_RGBA4_S3TC                     0x83A3
-#define GL_RGBA_DXT5_S3TC                 0x83A4
-#define GL_RGBA4_DXT5_S3TC                0x83A5
-#endif /* GL_S3_s3tc */
-
-#ifndef GL_SGIS_detail_texture
-#define GL_SGIS_detail_texture 1
-#define GL_DETAIL_TEXTURE_2D_SGIS         0x8095
-#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
-#define GL_LINEAR_DETAIL_SGIS             0x8097
-#define GL_LINEAR_DETAIL_ALPHA_SGIS       0x8098
-#define GL_LINEAR_DETAIL_COLOR_SGIS       0x8099
-#define GL_DETAIL_TEXTURE_LEVEL_SGIS      0x809A
-#define GL_DETAIL_TEXTURE_MODE_SGIS       0x809B
-#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
-typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
-GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points);
-#endif
-#endif /* GL_SGIS_detail_texture */
-
-#ifndef GL_SGIS_fog_function
-#define GL_SGIS_fog_function 1
-#define GL_FOG_FUNC_SGIS                  0x812A
-#define GL_FOG_FUNC_POINTS_SGIS           0x812B
-#define GL_MAX_FOG_FUNC_POINTS_SGIS       0x812C
-typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
-typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points);
-GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points);
-#endif
-#endif /* GL_SGIS_fog_function */
-
-#ifndef GL_SGIS_generate_mipmap
-#define GL_SGIS_generate_mipmap 1
-#define GL_GENERATE_MIPMAP_SGIS           0x8191
-#define GL_GENERATE_MIPMAP_HINT_SGIS      0x8192
-#endif /* GL_SGIS_generate_mipmap */
-
-#ifndef GL_SGIS_multisample
-#define GL_SGIS_multisample 1
-#define GL_MULTISAMPLE_SGIS               0x809D
-#define GL_SAMPLE_ALPHA_TO_MASK_SGIS      0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_SGIS       0x809F
-#define GL_SAMPLE_MASK_SGIS               0x80A0
-#define GL_1PASS_SGIS                     0x80A1
-#define GL_2PASS_0_SGIS                   0x80A2
-#define GL_2PASS_1_SGIS                   0x80A3
-#define GL_4PASS_0_SGIS                   0x80A4
-#define GL_4PASS_1_SGIS                   0x80A5
-#define GL_4PASS_2_SGIS                   0x80A6
-#define GL_4PASS_3_SGIS                   0x80A7
-#define GL_SAMPLE_BUFFERS_SGIS            0x80A8
-#define GL_SAMPLES_SGIS                   0x80A9
-#define GL_SAMPLE_MASK_VALUE_SGIS         0x80AA
-#define GL_SAMPLE_MASK_INVERT_SGIS        0x80AB
-#define GL_SAMPLE_PATTERN_SGIS            0x80AC
-typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert);
-GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern);
-#endif
-#endif /* GL_SGIS_multisample */
-
-#ifndef GL_SGIS_pixel_texture
-#define GL_SGIS_pixel_texture 1
-#define GL_PIXEL_TEXTURE_SGIS             0x8353
-#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
-#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
-#define GL_PIXEL_GROUP_COLOR_SGIS         0x8356
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param);
-GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_SGIS_pixel_texture */
-
-#ifndef GL_SGIS_point_line_texgen
-#define GL_SGIS_point_line_texgen 1
-#define GL_EYE_DISTANCE_TO_POINT_SGIS     0x81F0
-#define GL_OBJECT_DISTANCE_TO_POINT_SGIS  0x81F1
-#define GL_EYE_DISTANCE_TO_LINE_SGIS      0x81F2
-#define GL_OBJECT_DISTANCE_TO_LINE_SGIS   0x81F3
-#define GL_EYE_POINT_SGIS                 0x81F4
-#define GL_OBJECT_POINT_SGIS              0x81F5
-#define GL_EYE_LINE_SGIS                  0x81F6
-#define GL_OBJECT_LINE_SGIS               0x81F7
-#endif /* GL_SGIS_point_line_texgen */
-
-#ifndef GL_SGIS_point_parameters
-#define GL_SGIS_point_parameters 1
-#define GL_POINT_SIZE_MIN_SGIS            0x8126
-#define GL_POINT_SIZE_MAX_SGIS            0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
-#define GL_DISTANCE_ATTENUATION_SGIS      0x8129
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params);
-#endif
-#endif /* GL_SGIS_point_parameters */
-
-#ifndef GL_SGIS_sharpen_texture
-#define GL_SGIS_sharpen_texture 1
-#define GL_LINEAR_SHARPEN_SGIS            0x80AD
-#define GL_LINEAR_SHARPEN_ALPHA_SGIS      0x80AE
-#define GL_LINEAR_SHARPEN_COLOR_SGIS      0x80AF
-#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
-typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
-GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points);
-#endif
-#endif /* GL_SGIS_sharpen_texture */
-
-#ifndef GL_SGIS_texture4D
-#define GL_SGIS_texture4D 1
-#define GL_PACK_SKIP_VOLUMES_SGIS         0x8130
-#define GL_PACK_IMAGE_DEPTH_SGIS          0x8131
-#define GL_UNPACK_SKIP_VOLUMES_SGIS       0x8132
-#define GL_UNPACK_IMAGE_DEPTH_SGIS        0x8133
-#define GL_TEXTURE_4D_SGIS                0x8134
-#define GL_PROXY_TEXTURE_4D_SGIS          0x8135
-#define GL_TEXTURE_4DSIZE_SGIS            0x8136
-#define GL_TEXTURE_WRAP_Q_SGIS            0x8137
-#define GL_MAX_4D_TEXTURE_SIZE_SGIS       0x8138
-#define GL_TEXTURE_4D_BINDING_SGIS        0x814F
-typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);
-#endif
-#endif /* GL_SGIS_texture4D */
-
-#ifndef GL_SGIS_texture_border_clamp
-#define GL_SGIS_texture_border_clamp 1
-#define GL_CLAMP_TO_BORDER_SGIS           0x812D
-#endif /* GL_SGIS_texture_border_clamp */
-
-#ifndef GL_SGIS_texture_color_mask
-#define GL_SGIS_texture_color_mask 1
-#define GL_TEXTURE_COLOR_WRITEMASK_SGIS   0x81EF
-typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-#endif
-#endif /* GL_SGIS_texture_color_mask */
-
-#ifndef GL_SGIS_texture_edge_clamp
-#define GL_SGIS_texture_edge_clamp 1
-#define GL_CLAMP_TO_EDGE_SGIS             0x812F
-#endif /* GL_SGIS_texture_edge_clamp */
-
-#ifndef GL_SGIS_texture_filter4
-#define GL_SGIS_texture_filter4 1
-#define GL_FILTER4_SGIS                   0x8146
-#define GL_TEXTURE_FILTER4_SIZE_SGIS      0x8147
-typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
-typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights);
-GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
-#endif
-#endif /* GL_SGIS_texture_filter4 */
-
-#ifndef GL_SGIS_texture_lod
-#define GL_SGIS_texture_lod 1
-#define GL_TEXTURE_MIN_LOD_SGIS           0x813A
-#define GL_TEXTURE_MAX_LOD_SGIS           0x813B
-#define GL_TEXTURE_BASE_LEVEL_SGIS        0x813C
-#define GL_TEXTURE_MAX_LEVEL_SGIS         0x813D
-#endif /* GL_SGIS_texture_lod */
-
-#ifndef GL_SGIS_texture_select
-#define GL_SGIS_texture_select 1
-#define GL_DUAL_ALPHA4_SGIS               0x8110
-#define GL_DUAL_ALPHA8_SGIS               0x8111
-#define GL_DUAL_ALPHA12_SGIS              0x8112
-#define GL_DUAL_ALPHA16_SGIS              0x8113
-#define GL_DUAL_LUMINANCE4_SGIS           0x8114
-#define GL_DUAL_LUMINANCE8_SGIS           0x8115
-#define GL_DUAL_LUMINANCE12_SGIS          0x8116
-#define GL_DUAL_LUMINANCE16_SGIS          0x8117
-#define GL_DUAL_INTENSITY4_SGIS           0x8118
-#define GL_DUAL_INTENSITY8_SGIS           0x8119
-#define GL_DUAL_INTENSITY12_SGIS          0x811A
-#define GL_DUAL_INTENSITY16_SGIS          0x811B
-#define GL_DUAL_LUMINANCE_ALPHA4_SGIS     0x811C
-#define GL_DUAL_LUMINANCE_ALPHA8_SGIS     0x811D
-#define GL_QUAD_ALPHA4_SGIS               0x811E
-#define GL_QUAD_ALPHA8_SGIS               0x811F
-#define GL_QUAD_LUMINANCE4_SGIS           0x8120
-#define GL_QUAD_LUMINANCE8_SGIS           0x8121
-#define GL_QUAD_INTENSITY4_SGIS           0x8122
-#define GL_QUAD_INTENSITY8_SGIS           0x8123
-#define GL_DUAL_TEXTURE_SELECT_SGIS       0x8124
-#define GL_QUAD_TEXTURE_SELECT_SGIS       0x8125
-#endif /* GL_SGIS_texture_select */
-
-#ifndef GL_SGIX_async
-#define GL_SGIX_async 1
-#define GL_ASYNC_MARKER_SGIX              0x8329
-typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
-typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
-typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
-typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
-typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
-typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker);
-GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp);
-GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp);
-GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range);
-GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range);
-GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker);
-#endif
-#endif /* GL_SGIX_async */
-
-#ifndef GL_SGIX_async_histogram
-#define GL_SGIX_async_histogram 1
-#define GL_ASYNC_HISTOGRAM_SGIX           0x832C
-#define GL_MAX_ASYNC_HISTOGRAM_SGIX       0x832D
-#endif /* GL_SGIX_async_histogram */
-
-#ifndef GL_SGIX_async_pixel
-#define GL_SGIX_async_pixel 1
-#define GL_ASYNC_TEX_IMAGE_SGIX           0x835C
-#define GL_ASYNC_DRAW_PIXELS_SGIX         0x835D
-#define GL_ASYNC_READ_PIXELS_SGIX         0x835E
-#define GL_MAX_ASYNC_TEX_IMAGE_SGIX       0x835F
-#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX     0x8360
-#define GL_MAX_ASYNC_READ_PIXELS_SGIX     0x8361
-#endif /* GL_SGIX_async_pixel */
-
-#ifndef GL_SGIX_blend_alpha_minmax
-#define GL_SGIX_blend_alpha_minmax 1
-#define GL_ALPHA_MIN_SGIX                 0x8320
-#define GL_ALPHA_MAX_SGIX                 0x8321
-#endif /* GL_SGIX_blend_alpha_minmax */
-
-#ifndef GL_SGIX_calligraphic_fragment
-#define GL_SGIX_calligraphic_fragment 1
-#define GL_CALLIGRAPHIC_FRAGMENT_SGIX     0x8183
-#endif /* GL_SGIX_calligraphic_fragment */
-
-#ifndef GL_SGIX_clipmap
-#define GL_SGIX_clipmap 1
-#define GL_LINEAR_CLIPMAP_LINEAR_SGIX     0x8170
-#define GL_TEXTURE_CLIPMAP_CENTER_SGIX    0x8171
-#define GL_TEXTURE_CLIPMAP_FRAME_SGIX     0x8172
-#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX    0x8173
-#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
-#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
-#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX     0x8176
-#define GL_MAX_CLIPMAP_DEPTH_SGIX         0x8177
-#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
-#define GL_NEAREST_CLIPMAP_NEAREST_SGIX   0x844D
-#define GL_NEAREST_CLIPMAP_LINEAR_SGIX    0x844E
-#define GL_LINEAR_CLIPMAP_NEAREST_SGIX    0x844F
-#endif /* GL_SGIX_clipmap */
-
-#ifndef GL_SGIX_convolution_accuracy
-#define GL_SGIX_convolution_accuracy 1
-#define GL_CONVOLUTION_HINT_SGIX          0x8316
-#endif /* GL_SGIX_convolution_accuracy */
-
-#ifndef GL_SGIX_depth_pass_instrument
-#define GL_SGIX_depth_pass_instrument 1
-#endif /* GL_SGIX_depth_pass_instrument */
-
-#ifndef GL_SGIX_depth_texture
-#define GL_SGIX_depth_texture 1
-#define GL_DEPTH_COMPONENT16_SGIX         0x81A5
-#define GL_DEPTH_COMPONENT24_SGIX         0x81A6
-#define GL_DEPTH_COMPONENT32_SGIX         0x81A7
-#endif /* GL_SGIX_depth_texture */
-
-#ifndef GL_SGIX_flush_raster
-#define GL_SGIX_flush_raster 1
-typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFlushRasterSGIX (void);
-#endif
-#endif /* GL_SGIX_flush_raster */
-
-#ifndef GL_SGIX_fog_offset
-#define GL_SGIX_fog_offset 1
-#define GL_FOG_OFFSET_SGIX                0x8198
-#define GL_FOG_OFFSET_VALUE_SGIX          0x8199
-#endif /* GL_SGIX_fog_offset */
-
-#ifndef GL_SGIX_fragment_lighting
-#define GL_SGIX_fragment_lighting 1
-#define GL_FRAGMENT_LIGHTING_SGIX         0x8400
-#define GL_FRAGMENT_COLOR_MATERIAL_SGIX   0x8401
-#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
-#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
-#define GL_MAX_FRAGMENT_LIGHTS_SGIX       0x8404
-#define GL_MAX_ACTIVE_LIGHTS_SGIX         0x8405
-#define GL_CURRENT_RASTER_NORMAL_SGIX     0x8406
-#define GL_LIGHT_ENV_MODE_SGIX            0x8407
-#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
-#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
-#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
-#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
-#define GL_FRAGMENT_LIGHT0_SGIX           0x840C
-#define GL_FRAGMENT_LIGHT1_SGIX           0x840D
-#define GL_FRAGMENT_LIGHT2_SGIX           0x840E
-#define GL_FRAGMENT_LIGHT3_SGIX           0x840F
-#define GL_FRAGMENT_LIGHT4_SGIX           0x8410
-#define GL_FRAGMENT_LIGHT5_SGIX           0x8411
-#define GL_FRAGMENT_LIGHT6_SGIX           0x8412
-#define GL_FRAGMENT_LIGHT7_SGIX           0x8413
-typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode);
-GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param);
-GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param);
-GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param);
-GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params);
-GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param);
-#endif
-#endif /* GL_SGIX_fragment_lighting */
-
-#ifndef GL_SGIX_framezoom
-#define GL_SGIX_framezoom 1
-#define GL_FRAMEZOOM_SGIX                 0x818B
-#define GL_FRAMEZOOM_FACTOR_SGIX          0x818C
-#define GL_MAX_FRAMEZOOM_FACTOR_SGIX      0x818D
-typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFrameZoomSGIX (GLint factor);
-#endif
-#endif /* GL_SGIX_framezoom */
-
-#ifndef GL_SGIX_igloo_interface
-#define GL_SGIX_igloo_interface 1
-typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const void *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const void *params);
-#endif
-#endif /* GL_SGIX_igloo_interface */
-
-#ifndef GL_SGIX_instruments
-#define GL_SGIX_instruments 1
-#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
-#define GL_INSTRUMENT_MEASUREMENTS_SGIX   0x8181
-typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
-typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
-typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
-typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
-typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
-typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
-GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer);
-GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p);
-GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker);
-GLAPI void APIENTRY glStartInstrumentsSGIX (void);
-GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker);
-#endif
-#endif /* GL_SGIX_instruments */
-
-#ifndef GL_SGIX_interlace
-#define GL_SGIX_interlace 1
-#define GL_INTERLACE_SGIX                 0x8094
-#endif /* GL_SGIX_interlace */
-
-#ifndef GL_SGIX_ir_instrument1
-#define GL_SGIX_ir_instrument1 1
-#define GL_IR_INSTRUMENT1_SGIX            0x817F
-#endif /* GL_SGIX_ir_instrument1 */
-
-#ifndef GL_SGIX_list_priority
-#define GL_SGIX_list_priority 1
-#define GL_LIST_PRIORITY_SGIX             0x8182
-typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params);
-GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param);
-GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params);
-#endif
-#endif /* GL_SGIX_list_priority */
-
-#ifndef GL_SGIX_pixel_texture
-#define GL_SGIX_pixel_texture 1
-#define GL_PIXEL_TEX_GEN_SGIX             0x8139
-#define GL_PIXEL_TEX_GEN_MODE_SGIX        0x832B
-typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode);
-#endif
-#endif /* GL_SGIX_pixel_texture */
-
-#ifndef GL_SGIX_pixel_tiles
-#define GL_SGIX_pixel_tiles 1
-#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
-#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
-#define GL_PIXEL_TILE_WIDTH_SGIX          0x8140
-#define GL_PIXEL_TILE_HEIGHT_SGIX         0x8141
-#define GL_PIXEL_TILE_GRID_WIDTH_SGIX     0x8142
-#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX    0x8143
-#define GL_PIXEL_TILE_GRID_DEPTH_SGIX     0x8144
-#define GL_PIXEL_TILE_CACHE_SIZE_SGIX     0x8145
-#endif /* GL_SGIX_pixel_tiles */
-
-#ifndef GL_SGIX_polynomial_ffd
-#define GL_SGIX_polynomial_ffd 1
-#define GL_TEXTURE_DEFORMATION_BIT_SGIX   0x00000001
-#define GL_GEOMETRY_DEFORMATION_BIT_SGIX  0x00000002
-#define GL_GEOMETRY_DEFORMATION_SGIX      0x8194
-#define GL_TEXTURE_DEFORMATION_SGIX       0x8195
-#define GL_DEFORMATIONS_MASK_SGIX         0x8196
-#define GL_MAX_DEFORMATION_ORDER_SGIX     0x8197
-typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
-typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
-typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
-GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
-GLAPI void APIENTRY glDeformSGIX (GLbitfield mask);
-GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask);
-#endif
-#endif /* GL_SGIX_polynomial_ffd */
-
-#ifndef GL_SGIX_reference_plane
-#define GL_SGIX_reference_plane 1
-#define GL_REFERENCE_PLANE_SGIX           0x817D
-#define GL_REFERENCE_PLANE_EQUATION_SGIX  0x817E
-typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation);
-#endif
-#endif /* GL_SGIX_reference_plane */
-
-#ifndef GL_SGIX_resample
-#define GL_SGIX_resample 1
-#define GL_PACK_RESAMPLE_SGIX             0x842C
-#define GL_UNPACK_RESAMPLE_SGIX           0x842D
-#define GL_RESAMPLE_REPLICATE_SGIX        0x842E
-#define GL_RESAMPLE_ZERO_FILL_SGIX        0x842F
-#define GL_RESAMPLE_DECIMATE_SGIX         0x8430
-#endif /* GL_SGIX_resample */
-
-#ifndef GL_SGIX_scalebias_hint
-#define GL_SGIX_scalebias_hint 1
-#define GL_SCALEBIAS_HINT_SGIX            0x8322
-#endif /* GL_SGIX_scalebias_hint */
-
-#ifndef GL_SGIX_shadow
-#define GL_SGIX_shadow 1
-#define GL_TEXTURE_COMPARE_SGIX           0x819A
-#define GL_TEXTURE_COMPARE_OPERATOR_SGIX  0x819B
-#define GL_TEXTURE_LEQUAL_R_SGIX          0x819C
-#define GL_TEXTURE_GEQUAL_R_SGIX          0x819D
-#endif /* GL_SGIX_shadow */
-
-#ifndef GL_SGIX_shadow_ambient
-#define GL_SGIX_shadow_ambient 1
-#define GL_SHADOW_AMBIENT_SGIX            0x80BF
-#endif /* GL_SGIX_shadow_ambient */
-
-#ifndef GL_SGIX_sprite
-#define GL_SGIX_sprite 1
-#define GL_SPRITE_SGIX                    0x8148
-#define GL_SPRITE_MODE_SGIX               0x8149
-#define GL_SPRITE_AXIS_SGIX               0x814A
-#define GL_SPRITE_TRANSLATION_SGIX        0x814B
-#define GL_SPRITE_AXIAL_SGIX              0x814C
-#define GL_SPRITE_OBJECT_ALIGNED_SGIX     0x814D
-#define GL_SPRITE_EYE_ALIGNED_SGIX        0x814E
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param);
-GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params);
-#endif
-#endif /* GL_SGIX_sprite */
-
-#ifndef GL_SGIX_subsample
-#define GL_SGIX_subsample 1
-#define GL_PACK_SUBSAMPLE_RATE_SGIX       0x85A0
-#define GL_UNPACK_SUBSAMPLE_RATE_SGIX     0x85A1
-#define GL_PIXEL_SUBSAMPLE_4444_SGIX      0x85A2
-#define GL_PIXEL_SUBSAMPLE_2424_SGIX      0x85A3
-#define GL_PIXEL_SUBSAMPLE_4242_SGIX      0x85A4
-#endif /* GL_SGIX_subsample */
-
-#ifndef GL_SGIX_tag_sample_buffer
-#define GL_SGIX_tag_sample_buffer 1
-typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTagSampleBufferSGIX (void);
-#endif
-#endif /* GL_SGIX_tag_sample_buffer */
-
-#ifndef GL_SGIX_texture_add_env
-#define GL_SGIX_texture_add_env 1
-#define GL_TEXTURE_ENV_BIAS_SGIX          0x80BE
-#endif /* GL_SGIX_texture_add_env */
-
-#ifndef GL_SGIX_texture_coordinate_clamp
-#define GL_SGIX_texture_coordinate_clamp 1
-#define GL_TEXTURE_MAX_CLAMP_S_SGIX       0x8369
-#define GL_TEXTURE_MAX_CLAMP_T_SGIX       0x836A
-#define GL_TEXTURE_MAX_CLAMP_R_SGIX       0x836B
-#endif /* GL_SGIX_texture_coordinate_clamp */
-
-#ifndef GL_SGIX_texture_lod_bias
-#define GL_SGIX_texture_lod_bias 1
-#define GL_TEXTURE_LOD_BIAS_S_SGIX        0x818E
-#define GL_TEXTURE_LOD_BIAS_T_SGIX        0x818F
-#define GL_TEXTURE_LOD_BIAS_R_SGIX        0x8190
-#endif /* GL_SGIX_texture_lod_bias */
-
-#ifndef GL_SGIX_texture_multi_buffer
-#define GL_SGIX_texture_multi_buffer 1
-#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
-#endif /* GL_SGIX_texture_multi_buffer */
-
-#ifndef GL_SGIX_texture_scale_bias
-#define GL_SGIX_texture_scale_bias 1
-#define GL_POST_TEXTURE_FILTER_BIAS_SGIX  0x8179
-#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
-#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
-#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
-#endif /* GL_SGIX_texture_scale_bias */
-
-#ifndef GL_SGIX_vertex_preclip
-#define GL_SGIX_vertex_preclip 1
-#define GL_VERTEX_PRECLIP_SGIX            0x83EE
-#define GL_VERTEX_PRECLIP_HINT_SGIX       0x83EF
-#endif /* GL_SGIX_vertex_preclip */
-
-#ifndef GL_SGIX_ycrcb
-#define GL_SGIX_ycrcb 1
-#define GL_YCRCB_422_SGIX                 0x81BB
-#define GL_YCRCB_444_SGIX                 0x81BC
-#endif /* GL_SGIX_ycrcb */
-
-#ifndef GL_SGIX_ycrcb_subsample
-#define GL_SGIX_ycrcb_subsample 1
-#endif /* GL_SGIX_ycrcb_subsample */
-
-#ifndef GL_SGIX_ycrcba
-#define GL_SGIX_ycrcba 1
-#define GL_YCRCB_SGIX                     0x8318
-#define GL_YCRCBA_SGIX                    0x8319
-#endif /* GL_SGIX_ycrcba */
-
-#ifndef GL_SGI_color_matrix
-#define GL_SGI_color_matrix 1
-#define GL_COLOR_MATRIX_SGI               0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH_SGI   0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
-#endif /* GL_SGI_color_matrix */
-
-#ifndef GL_SGI_color_table
-#define GL_SGI_color_table 1
-#define GL_COLOR_TABLE_SGI                0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
-#define GL_PROXY_COLOR_TABLE_SGI          0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
-#define GL_COLOR_TABLE_SCALE_SGI          0x80D6
-#define GL_COLOR_TABLE_BIAS_SGI           0x80D7
-#define GL_COLOR_TABLE_FORMAT_SGI         0x80D8
-#define GL_COLOR_TABLE_WIDTH_SGI          0x80D9
-#define GL_COLOR_TABLE_RED_SIZE_SGI       0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE_SGI     0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE_SGI      0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE_SGI     0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
-typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table);
-GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params);
-#endif
-#endif /* GL_SGI_color_table */
-
-#ifndef GL_SGI_texture_color_table
-#define GL_SGI_texture_color_table 1
-#define GL_TEXTURE_COLOR_TABLE_SGI        0x80BC
-#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI  0x80BD
-#endif /* GL_SGI_texture_color_table */
-
-#ifndef GL_SUNX_constant_data
-#define GL_SUNX_constant_data 1
-#define GL_UNPACK_CONSTANT_DATA_SUNX      0x81D5
-#define GL_TEXTURE_CONSTANT_DATA_SUNX     0x81D6
-typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFinishTextureSUNX (void);
-#endif
-#endif /* GL_SUNX_constant_data */
-
-#ifndef GL_SUN_convolution_border_modes
-#define GL_SUN_convolution_border_modes 1
-#define GL_WRAP_BORDER_SUN                0x81D4
-#endif /* GL_SUN_convolution_border_modes */
-
-#ifndef GL_SUN_global_alpha
-#define GL_SUN_global_alpha 1
-#define GL_GLOBAL_ALPHA_SUN               0x81D9
-#define GL_GLOBAL_ALPHA_FACTOR_SUN        0x81DA
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor);
-GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor);
-GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor);
-GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor);
-GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor);
-GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor);
-GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor);
-GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor);
-#endif
-#endif /* GL_SUN_global_alpha */
-
-#ifndef GL_SUN_mesh_array
-#define GL_SUN_mesh_array 1
-#define GL_QUAD_MESH_SUN                  0x8614
-#define GL_TRIANGLE_MESH_SUN              0x8615
-typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width);
-#endif
-#endif /* GL_SUN_mesh_array */
-
-#ifndef GL_SUN_slice_accum
-#define GL_SUN_slice_accum 1
-#define GL_SLICE_ACCUM_SUN                0x85CC
-#endif /* GL_SUN_slice_accum */
-
-#ifndef GL_SUN_triangle_list
-#define GL_SUN_triangle_list 1
-#define GL_RESTART_SUN                    0x0001
-#define GL_REPLACE_MIDDLE_SUN             0x0002
-#define GL_REPLACE_OLDEST_SUN             0x0003
-#define GL_TRIANGLE_LIST_SUN              0x81D7
-#define GL_REPLACEMENT_CODE_SUN           0x81D8
-#define GL_REPLACEMENT_CODE_ARRAY_SUN     0x85C0
-#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
-#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
-#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
-#define GL_R1UI_V3F_SUN                   0x85C4
-#define GL_R1UI_C4UB_V3F_SUN              0x85C5
-#define GL_R1UI_C3F_V3F_SUN               0x85C6
-#define GL_R1UI_N3F_V3F_SUN               0x85C7
-#define GL_R1UI_C4F_N3F_V3F_SUN           0x85C8
-#define GL_R1UI_T2F_V3F_SUN               0x85C9
-#define GL_R1UI_T2F_N3F_V3F_SUN           0x85CA
-#define GL_R1UI_T2F_C4F_N3F_V3F_SUN       0x85CB
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void **pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code);
-GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code);
-GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code);
-GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code);
-GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code);
-GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code);
-GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void **pointer);
-#endif
-#endif /* GL_SUN_triangle_list */
-
-#ifndef GL_SUN_vertex
-#define GL_SUN_vertex 1
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v);
-GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-#endif
-#endif /* GL_SUN_vertex */
-
-#ifndef GL_WIN_phong_shading
-#define GL_WIN_phong_shading 1
-#define GL_PHONG_WIN                      0x80EA
-#define GL_PHONG_HINT_WIN                 0x80EB
-#endif /* GL_WIN_phong_shading */
-
-#ifndef GL_WIN_specular_fog
-#define GL_WIN_specular_fog 1
-#define GL_FOG_SPECULAR_TEXTURE_WIN       0x80EC
-#endif /* GL_WIN_specular_fog */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles.h
deleted file mode 100644 (file)
index 1e0660c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_opengles.h
- *
- *  This is a simple file to encapsulate the OpenGL ES 1.X API headers.
- */
-#include "SDL_config.h"
-
-#ifdef __IPHONEOS__
-#include <OpenGLES/ES1/gl.h>
-#include <OpenGLES/ES1/glext.h>
-#else
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY
-#endif
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2.h
deleted file mode 100644 (file)
index df29d38..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_opengles2.h
- *
- *  This is a simple file to encapsulate the OpenGL ES 2.0 API headers.
- */
-#include "SDL_config.h"
-
-#ifndef _MSC_VER
-
-#ifdef __IPHONEOS__
-#include <OpenGLES/ES2/gl.h>
-#include <OpenGLES/ES2/glext.h>
-#else
-#include <GLES2/gl2platform.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#endif
-
-#else /* _MSC_VER */
-
-/* OpenGL ES2 headers for Visual Studio */
-#include "SDL_opengles2_khrplatform.h"
-#include "SDL_opengles2_gl2platform.h"
-#include "SDL_opengles2_gl2.h"
-#include "SDL_opengles2_gl2ext.h"
-
-#endif /* _MSC_VER */
-
-#ifndef APIENTRY
-#define APIENTRY GL_APIENTRY
-#endif
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_gl2.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_gl2.h
deleted file mode 100644 (file)
index c62fb0a..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-#ifndef __gl2_h_
-#define __gl2_h_
-
-/* $Revision: 20555 $ on $Date:: 2013-02-12 14:32:47 -0800 #$ */
-
-/*#include <GLES2/gl2platform.h>*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-/*-------------------------------------------------------------------------
- * Data type definitions
- *-----------------------------------------------------------------------*/
-
-typedef void             GLvoid;
-typedef char             GLchar;
-typedef unsigned int     GLenum;
-typedef unsigned char    GLboolean;
-typedef unsigned int     GLbitfield;
-typedef khronos_int8_t   GLbyte;
-typedef short            GLshort;
-typedef int              GLint;
-typedef int              GLsizei;
-typedef khronos_uint8_t  GLubyte;
-typedef unsigned short   GLushort;
-typedef unsigned int     GLuint;
-typedef khronos_float_t  GLfloat;
-typedef khronos_float_t  GLclampf;
-typedef khronos_int32_t  GLfixed;
-
-/* GL types for handling large vertex buffer objects */
-typedef khronos_intptr_t GLintptr;
-typedef khronos_ssize_t  GLsizeiptr;
-
-/* OpenGL ES core versions */
-#define GL_ES_VERSION_2_0                 1
-
-/* ClearBufferMask */
-#define GL_DEPTH_BUFFER_BIT               0x00000100
-#define GL_STENCIL_BUFFER_BIT             0x00000400
-#define GL_COLOR_BUFFER_BIT               0x00004000
-
-/* Boolean */
-#define GL_FALSE                          0
-#define GL_TRUE                           1
-
-/* BeginMode */
-#define GL_POINTS                         0x0000
-#define GL_LINES                          0x0001
-#define GL_LINE_LOOP                      0x0002
-#define GL_LINE_STRIP                     0x0003
-#define GL_TRIANGLES                      0x0004
-#define GL_TRIANGLE_STRIP                 0x0005
-#define GL_TRIANGLE_FAN                   0x0006
-
-/* AlphaFunction (not supported in ES20) */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* BlendingFactorDest */
-#define GL_ZERO                           0
-#define GL_ONE                            1
-#define GL_SRC_COLOR                      0x0300
-#define GL_ONE_MINUS_SRC_COLOR            0x0301
-#define GL_SRC_ALPHA                      0x0302
-#define GL_ONE_MINUS_SRC_ALPHA            0x0303
-#define GL_DST_ALPHA                      0x0304
-#define GL_ONE_MINUS_DST_ALPHA            0x0305
-
-/* BlendingFactorSrc */
-/*      GL_ZERO */
-/*      GL_ONE */
-#define GL_DST_COLOR                      0x0306
-#define GL_ONE_MINUS_DST_COLOR            0x0307
-#define GL_SRC_ALPHA_SATURATE             0x0308
-/*      GL_SRC_ALPHA */
-/*      GL_ONE_MINUS_SRC_ALPHA */
-/*      GL_DST_ALPHA */
-/*      GL_ONE_MINUS_DST_ALPHA */
-
-/* BlendEquationSeparate */
-#define GL_FUNC_ADD                       0x8006
-#define GL_BLEND_EQUATION                 0x8009
-#define GL_BLEND_EQUATION_RGB             0x8009    /* same as BLEND_EQUATION */
-#define GL_BLEND_EQUATION_ALPHA           0x883D
-
-/* BlendSubtract */
-#define GL_FUNC_SUBTRACT                  0x800A
-#define GL_FUNC_REVERSE_SUBTRACT          0x800B
-
-/* Separate Blend Functions */
-#define GL_BLEND_DST_RGB                  0x80C8
-#define GL_BLEND_SRC_RGB                  0x80C9
-#define GL_BLEND_DST_ALPHA                0x80CA
-#define GL_BLEND_SRC_ALPHA                0x80CB
-#define GL_CONSTANT_COLOR                 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
-#define GL_CONSTANT_ALPHA                 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
-#define GL_BLEND_COLOR                    0x8005
-
-/* Buffer Objects */
-#define GL_ARRAY_BUFFER                   0x8892
-#define GL_ELEMENT_ARRAY_BUFFER           0x8893
-#define GL_ARRAY_BUFFER_BINDING           0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
-
-#define GL_STREAM_DRAW                    0x88E0
-#define GL_STATIC_DRAW                    0x88E4
-#define GL_DYNAMIC_DRAW                   0x88E8
-
-#define GL_BUFFER_SIZE                    0x8764
-#define GL_BUFFER_USAGE                   0x8765
-
-#define GL_CURRENT_VERTEX_ATTRIB          0x8626
-
-/* CullFaceMode */
-#define GL_FRONT                          0x0404
-#define GL_BACK                           0x0405
-#define GL_FRONT_AND_BACK                 0x0408
-
-/* DepthFunction */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* EnableCap */
-#define GL_TEXTURE_2D                     0x0DE1
-#define GL_CULL_FACE                      0x0B44
-#define GL_BLEND                          0x0BE2
-#define GL_DITHER                         0x0BD0
-#define GL_STENCIL_TEST                   0x0B90
-#define GL_DEPTH_TEST                     0x0B71
-#define GL_SCISSOR_TEST                   0x0C11
-#define GL_POLYGON_OFFSET_FILL            0x8037
-#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
-#define GL_SAMPLE_COVERAGE                0x80A0
-
-/* ErrorCode */
-#define GL_NO_ERROR                       0
-#define GL_INVALID_ENUM                   0x0500
-#define GL_INVALID_VALUE                  0x0501
-#define GL_INVALID_OPERATION              0x0502
-#define GL_OUT_OF_MEMORY                  0x0505
-
-/* FrontFaceDirection */
-#define GL_CW                             0x0900
-#define GL_CCW                            0x0901
-
-/* GetPName */
-#define GL_LINE_WIDTH                     0x0B21
-#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
-#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
-#define GL_CULL_FACE_MODE                 0x0B45
-#define GL_FRONT_FACE                     0x0B46
-#define GL_DEPTH_RANGE                    0x0B70
-#define GL_DEPTH_WRITEMASK                0x0B72
-#define GL_DEPTH_CLEAR_VALUE              0x0B73
-#define GL_DEPTH_FUNC                     0x0B74
-#define GL_STENCIL_CLEAR_VALUE            0x0B91
-#define GL_STENCIL_FUNC                   0x0B92
-#define GL_STENCIL_FAIL                   0x0B94
-#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
-#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
-#define GL_STENCIL_REF                    0x0B97
-#define GL_STENCIL_VALUE_MASK             0x0B93
-#define GL_STENCIL_WRITEMASK              0x0B98
-#define GL_STENCIL_BACK_FUNC              0x8800
-#define GL_STENCIL_BACK_FAIL              0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
-#define GL_STENCIL_BACK_REF               0x8CA3
-#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
-#define GL_STENCIL_BACK_WRITEMASK         0x8CA5
-#define GL_VIEWPORT                       0x0BA2
-#define GL_SCISSOR_BOX                    0x0C10
-/*      GL_SCISSOR_TEST */
-#define GL_COLOR_CLEAR_VALUE              0x0C22
-#define GL_COLOR_WRITEMASK                0x0C23
-#define GL_UNPACK_ALIGNMENT               0x0CF5
-#define GL_PACK_ALIGNMENT                 0x0D05
-#define GL_MAX_TEXTURE_SIZE               0x0D33
-#define GL_MAX_VIEWPORT_DIMS              0x0D3A
-#define GL_SUBPIXEL_BITS                  0x0D50
-#define GL_RED_BITS                       0x0D52
-#define GL_GREEN_BITS                     0x0D53
-#define GL_BLUE_BITS                      0x0D54
-#define GL_ALPHA_BITS                     0x0D55
-#define GL_DEPTH_BITS                     0x0D56
-#define GL_STENCIL_BITS                   0x0D57
-#define GL_POLYGON_OFFSET_UNITS           0x2A00
-/*      GL_POLYGON_OFFSET_FILL */
-#define GL_POLYGON_OFFSET_FACTOR          0x8038
-#define GL_TEXTURE_BINDING_2D             0x8069
-#define GL_SAMPLE_BUFFERS                 0x80A8
-#define GL_SAMPLES                        0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
-
-/* GetTextureParameter */
-/*      GL_TEXTURE_MAG_FILTER */
-/*      GL_TEXTURE_MIN_FILTER */
-/*      GL_TEXTURE_WRAP_S */
-/*      GL_TEXTURE_WRAP_T */
-
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
-
-/* HintMode */
-#define GL_DONT_CARE                      0x1100
-#define GL_FASTEST                        0x1101
-#define GL_NICEST                         0x1102
-
-/* HintTarget */
-#define GL_GENERATE_MIPMAP_HINT            0x8192
-
-/* DataType */
-#define GL_BYTE                           0x1400
-#define GL_UNSIGNED_BYTE                  0x1401
-#define GL_SHORT                          0x1402
-#define GL_UNSIGNED_SHORT                 0x1403
-#define GL_INT                            0x1404
-#define GL_UNSIGNED_INT                   0x1405
-#define GL_FLOAT                          0x1406
-#define GL_FIXED                          0x140C
-
-/* PixelFormat */
-#define GL_DEPTH_COMPONENT                0x1902
-#define GL_ALPHA                          0x1906
-#define GL_RGB                            0x1907
-#define GL_RGBA                           0x1908
-#define GL_LUMINANCE                      0x1909
-#define GL_LUMINANCE_ALPHA                0x190A
-
-/* PixelType */
-/*      GL_UNSIGNED_BYTE */
-#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
-#define GL_UNSIGNED_SHORT_5_6_5           0x8363
-
-/* Shaders */
-#define GL_FRAGMENT_SHADER                  0x8B30
-#define GL_VERTEX_SHADER                    0x8B31
-#define GL_MAX_VERTEX_ATTRIBS               0x8869
-#define GL_MAX_VERTEX_UNIFORM_VECTORS       0x8DFB
-#define GL_MAX_VARYING_VECTORS              0x8DFC
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS   0x8B4C
-#define GL_MAX_TEXTURE_IMAGE_UNITS          0x8872
-#define GL_MAX_FRAGMENT_UNIFORM_VECTORS     0x8DFD
-#define GL_SHADER_TYPE                      0x8B4F
-#define GL_DELETE_STATUS                    0x8B80
-#define GL_LINK_STATUS                      0x8B82
-#define GL_VALIDATE_STATUS                  0x8B83
-#define GL_ATTACHED_SHADERS                 0x8B85
-#define GL_ACTIVE_UNIFORMS                  0x8B86
-#define GL_ACTIVE_UNIFORM_MAX_LENGTH        0x8B87
-#define GL_ACTIVE_ATTRIBUTES                0x8B89
-#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH      0x8B8A
-#define GL_SHADING_LANGUAGE_VERSION         0x8B8C
-#define GL_CURRENT_PROGRAM                  0x8B8D
-
-/* StencilFunction */
-#define GL_NEVER                          0x0200
-#define GL_LESS                           0x0201
-#define GL_EQUAL                          0x0202
-#define GL_LEQUAL                         0x0203
-#define GL_GREATER                        0x0204
-#define GL_NOTEQUAL                       0x0205
-#define GL_GEQUAL                         0x0206
-#define GL_ALWAYS                         0x0207
-
-/* StencilOp */
-/*      GL_ZERO */
-#define GL_KEEP                           0x1E00
-#define GL_REPLACE                        0x1E01
-#define GL_INCR                           0x1E02
-#define GL_DECR                           0x1E03
-#define GL_INVERT                         0x150A
-#define GL_INCR_WRAP                      0x8507
-#define GL_DECR_WRAP                      0x8508
-
-/* StringName */
-#define GL_VENDOR                         0x1F00
-#define GL_RENDERER                       0x1F01
-#define GL_VERSION                        0x1F02
-#define GL_EXTENSIONS                     0x1F03
-
-/* TextureMagFilter */
-#define GL_NEAREST                        0x2600
-#define GL_LINEAR                         0x2601
-
-/* TextureMinFilter */
-/*      GL_NEAREST */
-/*      GL_LINEAR */
-#define GL_NEAREST_MIPMAP_NEAREST         0x2700
-#define GL_LINEAR_MIPMAP_NEAREST          0x2701
-#define GL_NEAREST_MIPMAP_LINEAR          0x2702
-#define GL_LINEAR_MIPMAP_LINEAR           0x2703
-
-/* TextureParameterName */
-#define GL_TEXTURE_MAG_FILTER             0x2800
-#define GL_TEXTURE_MIN_FILTER             0x2801
-#define GL_TEXTURE_WRAP_S                 0x2802
-#define GL_TEXTURE_WRAP_T                 0x2803
-
-/* TextureTarget */
-/*      GL_TEXTURE_2D */
-#define GL_TEXTURE                        0x1702
-
-#define GL_TEXTURE_CUBE_MAP               0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
-
-/* TextureUnit */
-#define GL_TEXTURE0                       0x84C0
-#define GL_TEXTURE1                       0x84C1
-#define GL_TEXTURE2                       0x84C2
-#define GL_TEXTURE3                       0x84C3
-#define GL_TEXTURE4                       0x84C4
-#define GL_TEXTURE5                       0x84C5
-#define GL_TEXTURE6                       0x84C6
-#define GL_TEXTURE7                       0x84C7
-#define GL_TEXTURE8                       0x84C8
-#define GL_TEXTURE9                       0x84C9
-#define GL_TEXTURE10                      0x84CA
-#define GL_TEXTURE11                      0x84CB
-#define GL_TEXTURE12                      0x84CC
-#define GL_TEXTURE13                      0x84CD
-#define GL_TEXTURE14                      0x84CE
-#define GL_TEXTURE15                      0x84CF
-#define GL_TEXTURE16                      0x84D0
-#define GL_TEXTURE17                      0x84D1
-#define GL_TEXTURE18                      0x84D2
-#define GL_TEXTURE19                      0x84D3
-#define GL_TEXTURE20                      0x84D4
-#define GL_TEXTURE21                      0x84D5
-#define GL_TEXTURE22                      0x84D6
-#define GL_TEXTURE23                      0x84D7
-#define GL_TEXTURE24                      0x84D8
-#define GL_TEXTURE25                      0x84D9
-#define GL_TEXTURE26                      0x84DA
-#define GL_TEXTURE27                      0x84DB
-#define GL_TEXTURE28                      0x84DC
-#define GL_TEXTURE29                      0x84DD
-#define GL_TEXTURE30                      0x84DE
-#define GL_TEXTURE31                      0x84DF
-#define GL_ACTIVE_TEXTURE                 0x84E0
-
-/* TextureWrapMode */
-#define GL_REPEAT                         0x2901
-#define GL_CLAMP_TO_EDGE                  0x812F
-#define GL_MIRRORED_REPEAT                0x8370
-
-/* Uniform Types */
-#define GL_FLOAT_VEC2                     0x8B50
-#define GL_FLOAT_VEC3                     0x8B51
-#define GL_FLOAT_VEC4                     0x8B52
-#define GL_INT_VEC2                       0x8B53
-#define GL_INT_VEC3                       0x8B54
-#define GL_INT_VEC4                       0x8B55
-#define GL_BOOL                           0x8B56
-#define GL_BOOL_VEC2                      0x8B57
-#define GL_BOOL_VEC3                      0x8B58
-#define GL_BOOL_VEC4                      0x8B59
-#define GL_FLOAT_MAT2                     0x8B5A
-#define GL_FLOAT_MAT3                     0x8B5B
-#define GL_FLOAT_MAT4                     0x8B5C
-#define GL_SAMPLER_2D                     0x8B5E
-#define GL_SAMPLER_CUBE                   0x8B60
-
-/* Vertex Arrays */
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED        0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE           0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE         0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE           0x8625
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED     0x886A
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER        0x8645
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
-
-/* Read Format */
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE   0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
-
-/* Shader Source */
-#define GL_COMPILE_STATUS                 0x8B81
-#define GL_INFO_LOG_LENGTH                0x8B84
-#define GL_SHADER_SOURCE_LENGTH           0x8B88
-#define GL_SHADER_COMPILER                0x8DFA
-
-/* Shader Binary */
-#define GL_SHADER_BINARY_FORMATS          0x8DF8
-#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
-
-/* Shader Precision-Specified Types */
-#define GL_LOW_FLOAT                      0x8DF0
-#define GL_MEDIUM_FLOAT                   0x8DF1
-#define GL_HIGH_FLOAT                     0x8DF2
-#define GL_LOW_INT                        0x8DF3
-#define GL_MEDIUM_INT                     0x8DF4
-#define GL_HIGH_INT                       0x8DF5
-
-/* Framebuffer Object. */
-#define GL_FRAMEBUFFER                    0x8D40
-#define GL_RENDERBUFFER                   0x8D41
-
-#define GL_RGBA4                          0x8056
-#define GL_RGB5_A1                        0x8057
-#define GL_RGB565                         0x8D62
-#define GL_DEPTH_COMPONENT16              0x81A5
-#define GL_STENCIL_INDEX8                 0x8D48
-
-#define GL_RENDERBUFFER_WIDTH             0x8D42
-#define GL_RENDERBUFFER_HEIGHT            0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44
-#define GL_RENDERBUFFER_RED_SIZE          0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55
-
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
-
-#define GL_COLOR_ATTACHMENT0              0x8CE0
-#define GL_DEPTH_ATTACHMENT               0x8D00
-#define GL_STENCIL_ATTACHMENT             0x8D20
-
-#define GL_NONE                           0
-
-#define GL_FRAMEBUFFER_COMPLETE                      0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT         0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS         0x8CD9
-#define GL_FRAMEBUFFER_UNSUPPORTED                   0x8CDD
-
-#define GL_FRAMEBUFFER_BINDING            0x8CA6
-#define GL_RENDERBUFFER_BINDING           0x8CA7
-#define GL_MAX_RENDERBUFFER_SIZE          0x84E8
-
-#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
-
-/*-------------------------------------------------------------------------
- * GL core functions.
- *-----------------------------------------------------------------------*/
-
-GL_APICALL void         GL_APIENTRY glActiveTexture (GLenum texture);
-GL_APICALL void         GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
-GL_APICALL void         GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
-GL_APICALL void         GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
-GL_APICALL void         GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
-GL_APICALL void         GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
-GL_APICALL void         GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-GL_APICALL void         GL_APIENTRY glBlendEquation ( GLenum mode );
-GL_APICALL void         GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
-GL_APICALL void         GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
-GL_APICALL void         GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GL_APICALL void         GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
-GL_APICALL void         GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
-GL_APICALL GLenum       GL_APIENTRY glCheckFramebufferStatus (GLenum target);
-GL_APICALL void         GL_APIENTRY glClear (GLbitfield mask);
-GL_APICALL void         GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-GL_APICALL void         GL_APIENTRY glClearDepthf (GLclampf depth);
-GL_APICALL void         GL_APIENTRY glClearStencil (GLint s);
-GL_APICALL void         GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-GL_APICALL void         GL_APIENTRY glCompileShader (GLuint shader);
-GL_APICALL void         GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void         GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void         GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GL_APICALL void         GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL GLuint       GL_APIENTRY glCreateProgram (void);
-GL_APICALL GLuint       GL_APIENTRY glCreateShader (GLenum type);
-GL_APICALL void         GL_APIENTRY glCullFace (GLenum mode);
-GL_APICALL void         GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers);
-GL_APICALL void         GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers);
-GL_APICALL void         GL_APIENTRY glDeleteProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers);
-GL_APICALL void         GL_APIENTRY glDeleteShader (GLuint shader);
-GL_APICALL void         GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures);
-GL_APICALL void         GL_APIENTRY glDepthFunc (GLenum func);
-GL_APICALL void         GL_APIENTRY glDepthMask (GLboolean flag);
-GL_APICALL void         GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
-GL_APICALL void         GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
-GL_APICALL void         GL_APIENTRY glDisable (GLenum cap);
-GL_APICALL void         GL_APIENTRY glDisableVertexAttribArray (GLuint index);
-GL_APICALL void         GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
-GL_APICALL void         GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
-GL_APICALL void         GL_APIENTRY glEnable (GLenum cap);
-GL_APICALL void         GL_APIENTRY glEnableVertexAttribArray (GLuint index);
-GL_APICALL void         GL_APIENTRY glFinish (void);
-GL_APICALL void         GL_APIENTRY glFlush (void);
-GL_APICALL void         GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GL_APICALL void         GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GL_APICALL void         GL_APIENTRY glFrontFace (GLenum mode);
-GL_APICALL void         GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers);
-GL_APICALL void         GL_APIENTRY glGenerateMipmap (GLenum target);
-GL_APICALL void         GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers);
-GL_APICALL void         GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers);
-GL_APICALL void         GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures);
-GL_APICALL void         GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
-GL_APICALL GLint        GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params);
-GL_APICALL void         GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL GLenum       GL_APIENTRY glGetError (void);
-GL_APICALL void         GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-GL_APICALL void         GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-GL_APICALL void         GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
-GL_APICALL void         GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
-GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name);
-GL_APICALL void         GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params);
-GL_APICALL GLint        GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer);
-GL_APICALL void         GL_APIENTRY glHint (GLenum target, GLenum mode);
-GL_APICALL GLboolean    GL_APIENTRY glIsBuffer (GLuint buffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsEnabled (GLenum cap);
-GL_APICALL GLboolean    GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsProgram (GLuint program);
-GL_APICALL GLboolean    GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsShader (GLuint shader);
-GL_APICALL GLboolean    GL_APIENTRY glIsTexture (GLuint texture);
-GL_APICALL void         GL_APIENTRY glLineWidth (GLfloat width);
-GL_APICALL void         GL_APIENTRY glLinkProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
-GL_APICALL void         GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
-GL_APICALL void         GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glReleaseShaderCompiler (void);
-GL_APICALL void         GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void         GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
-GL_APICALL void         GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL void         GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
-GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
-GL_APICALL void         GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilMask (GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
-GL_APICALL void         GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
-GL_APICALL void         GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
-GL_APICALL void         GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params);
-GL_APICALL void         GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
-GL_APICALL void         GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params);
-GL_APICALL void         GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glUniform1f (GLint location, GLfloat x);
-GL_APICALL void         GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform1i (GLint location, GLint x);
-GL_APICALL void         GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y);
-GL_APICALL void         GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y);
-GL_APICALL void         GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void         GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z);
-GL_APICALL void         GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void         GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
-GL_APICALL void         GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUseProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glValidateProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x);
-GL_APICALL void         GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
-GL_APICALL void         GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void         GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void         GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
-GL_APICALL void         GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl2_h_ */
-
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_gl2ext.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_gl2ext.h
deleted file mode 100644 (file)
index e8ca8b1..0000000
+++ /dev/null
@@ -1,2050 +0,0 @@
-#ifndef __gl2ext_h_
-#define __gl2ext_h_
-
-/* $Revision: 22801 $ on $Date:: 2013-08-21 03:20:48 -0700 #$ */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-#ifndef GL_APIENTRYP
-#   define GL_APIENTRYP GL_APIENTRY*
-#endif
-
-/* New types shared by several extensions */
-
-#ifndef __gl3_h_
-/* These are defined with respect to <inttypes.h> in the
- * Apple extension spec, but they are also used by non-APPLE
- * extensions, and in the Khronos header we use the Khronos
- * portable types in khrplatform.h, which must be defined.
- */
-typedef khronos_int64_t GLint64;
-typedef khronos_uint64_t GLuint64;
-typedef struct __GLsync *GLsync;
-#endif
-
-
-/*------------------------------------------------------------------------*
- * OES extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_ETC1_RGB8_OES                                        0x8D64
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_PALETTE4_RGB8_OES                                    0x8B90
-#define GL_PALETTE4_RGBA8_OES                                   0x8B91
-#define GL_PALETTE4_R5_G6_B5_OES                                0x8B92
-#define GL_PALETTE4_RGBA4_OES                                   0x8B93
-#define GL_PALETTE4_RGB5_A1_OES                                 0x8B94
-#define GL_PALETTE8_RGB8_OES                                    0x8B95
-#define GL_PALETTE8_RGBA8_OES                                   0x8B96
-#define GL_PALETTE8_R5_G6_B5_OES                                0x8B97
-#define GL_PALETTE8_RGBA4_OES                                   0x8B98
-#define GL_PALETTE8_RGB5_A1_OES                                 0x8B99
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_DEPTH_COMPONENT24_OES                                0x81A6
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_DEPTH_COMPONENT32_OES                                0x81A7
-#endif
-
-/* GL_OES_depth_texture */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-typedef void* GLeglImageOES;
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-/* GLeglImageOES defined in GL_OES_EGL_image already. */
-#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65
-#define GL_SAMPLER_EXTERNAL_OES                                 0x8D66
-#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67
-#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_UNSIGNED_INT                                         0x1405
-#endif
-
-/* GL_OES_get_program_binary */
-#ifndef GL_OES_get_program_binary
-#define GL_PROGRAM_BINARY_LENGTH_OES                            0x8741
-#define GL_NUM_PROGRAM_BINARY_FORMATS_OES                       0x87FE
-#define GL_PROGRAM_BINARY_FORMATS_OES                           0x87FF
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_WRITE_ONLY_OES                                       0x88B9
-#define GL_BUFFER_ACCESS_OES                                    0x88BB
-#define GL_BUFFER_MAPPED_OES                                    0x88BC
-#define GL_BUFFER_MAP_POINTER_OES                               0x88BD
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_DEPTH_STENCIL_OES                                    0x84F9
-#define GL_UNSIGNED_INT_24_8_OES                                0x84FA
-#define GL_DEPTH24_STENCIL8_OES                                 0x88F0
-#endif
-
-/* GL_OES_required_internalformat */
-#ifndef GL_OES_required_internalformat
-#define GL_ALPHA8_OES                                           0x803C
-#define GL_DEPTH_COMPONENT16_OES                                0x81A5
-/* reuse GL_DEPTH_COMPONENT24_OES */
-/* reuse GL_DEPTH24_STENCIL8_OES */
-/* reuse GL_DEPTH_COMPONENT32_OES */
-#define GL_LUMINANCE4_ALPHA4_OES                                0x8043
-#define GL_LUMINANCE8_ALPHA8_OES                                0x8045
-#define GL_LUMINANCE8_OES                                       0x8040
-#define GL_RGBA4_OES                                            0x8056
-#define GL_RGB5_A1_OES                                          0x8057
-#define GL_RGB565_OES                                           0x8D62
-/* reuse GL_RGB8_OES */
-/* reuse GL_RGBA8_OES */
-/* reuse GL_RGB10_EXT */
-/* reuse GL_RGB10_A2_EXT */
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_RGB8_OES                                             0x8051
-#define GL_RGBA8_OES                                            0x8058
-#endif
-
-/* GL_OES_standard_derivatives */
-#ifndef GL_OES_standard_derivatives
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES                  0x8B8B
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_STENCIL_INDEX1_OES                                   0x8D46
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_STENCIL_INDEX4_OES                                   0x8D47
-#endif
-
-#ifndef GL_OES_surfaceless_context
-#define GL_FRAMEBUFFER_UNDEFINED_OES                            0x8219
-#endif
-
-/* GL_OES_texture_3D */
-#ifndef GL_OES_texture_3D
-#define GL_TEXTURE_WRAP_R_OES                                   0x8072
-#define GL_TEXTURE_3D_OES                                       0x806F
-#define GL_TEXTURE_BINDING_3D_OES                               0x806A
-#define GL_MAX_3D_TEXTURE_SIZE_OES                              0x8073
-#define GL_SAMPLER_3D_OES                                       0x8B5F
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES        0x8CD4
-#endif
-
-/* GL_OES_texture_float */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_float_linear */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_half_float */
-#ifndef GL_OES_texture_half_float
-#define GL_HALF_FLOAT_OES                                       0x8D61
-#endif
-
-/* GL_OES_texture_half_float_linear */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_npot */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_VERTEX_ARRAY_BINDING_OES                             0x85B5
-#endif
-
-/* GL_OES_vertex_half_float */
-/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */
-
-/* GL_OES_vertex_type_10_10_10_2 */
-#ifndef GL_OES_vertex_type_10_10_10_2
-#define GL_UNSIGNED_INT_10_10_10_2_OES                          0x8DF6
-#define GL_INT_10_10_10_2_OES                                   0x8DF7
-#endif
-
-/*------------------------------------------------------------------------*
- * KHR extension tokens
- *------------------------------------------------------------------------*/
-
-#ifndef GL_KHR_debug
-typedef void (GL_APIENTRYP GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR                         0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR                 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION_KHR                          0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM_KHR                        0x8245
-#define GL_DEBUG_SOURCE_API_KHR                                 0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR                       0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR                     0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR                         0x8249
-#define GL_DEBUG_SOURCE_APPLICATION_KHR                         0x824A
-#define GL_DEBUG_SOURCE_OTHER_KHR                               0x824B
-#define GL_DEBUG_TYPE_ERROR_KHR                                 0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR                   0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR                    0x824E
-#define GL_DEBUG_TYPE_PORTABILITY_KHR                           0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE_KHR                           0x8250
-#define GL_DEBUG_TYPE_OTHER_KHR                                 0x8251
-#define GL_DEBUG_TYPE_MARKER_KHR                                0x8268
-#define GL_DEBUG_TYPE_PUSH_GROUP_KHR                            0x8269
-#define GL_DEBUG_TYPE_POP_GROUP_KHR                             0x826A
-#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR                      0x826B
-#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR                      0x826C
-#define GL_DEBUG_GROUP_STACK_DEPTH_KHR                          0x826D
-#define GL_BUFFER_KHR                                           0x82E0
-#define GL_SHADER_KHR                                           0x82E1
-#define GL_PROGRAM_KHR                                          0x82E2
-#define GL_QUERY_KHR                                            0x82E3
-/* PROGRAM_PIPELINE only in GL */
-#define GL_SAMPLER_KHR                                          0x82E6
-/* DISPLAY_LIST only in GL */
-#define GL_MAX_LABEL_LENGTH_KHR                                 0x82E8
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR                         0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR                        0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_KHR                            0x9145
-#define GL_DEBUG_SEVERITY_HIGH_KHR                              0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_KHR                            0x9147
-#define GL_DEBUG_SEVERITY_LOW_KHR                               0x9148
-#define GL_DEBUG_OUTPUT_KHR                                     0x92E0
-#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR                           0x00000002
-#define GL_STACK_OVERFLOW_KHR                                   0x0503
-#define GL_STACK_UNDERFLOW_KHR                                  0x0504
-#endif
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR                         0x93B0
-#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR                         0x93B1
-#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR                         0x93B2
-#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR                         0x93B3
-#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR                         0x93B4
-#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR                         0x93B5
-#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR                         0x93B6
-#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR                         0x93B7
-#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR                        0x93B8
-#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR                        0x93B9
-#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR                        0x93BA
-#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR                       0x93BB
-#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR                       0x93BC
-#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR                       0x93BD
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR                 0x93D0
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR                 0x93D1
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR                 0x93D2
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR                 0x93D3
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR                 0x93D4
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR                 0x93D5
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR                 0x93D6
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR                 0x93D7
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR                0x93D8
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR                0x93D9
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR                0x93DA
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR               0x93DB
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR               0x93DC
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR               0x93DD
-#endif
-
-/*------------------------------------------------------------------------*
- * AMD extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_3DC_X_AMD                                            0x87F9
-#define GL_3DC_XY_AMD                                           0x87FA
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_ATC_RGB_AMD                                          0x8C92
-#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD                          0x8C93
-#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD                      0x87EE
-#endif
-
-/* GL_AMD_performance_monitor */
-#ifndef GL_AMD_performance_monitor
-#define GL_COUNTER_TYPE_AMD                                     0x8BC0
-#define GL_COUNTER_RANGE_AMD                                    0x8BC1
-#define GL_UNSIGNED_INT64_AMD                                   0x8BC2
-#define GL_PERCENTAGE_AMD                                       0x8BC3
-#define GL_PERFMON_RESULT_AVAILABLE_AMD                         0x8BC4
-#define GL_PERFMON_RESULT_SIZE_AMD                              0x8BC5
-#define GL_PERFMON_RESULT_AMD                                   0x8BC6
-#endif
-
-/* GL_AMD_program_binary_Z400 */
-#ifndef GL_AMD_program_binary_Z400
-#define GL_Z400_BINARY_AMD                                      0x8740
-#endif
-
-/*------------------------------------------------------------------------*
- * ANGLE extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ANGLE_depth_texture */
-#ifndef GL_ANGLE_depth_texture
-#define GL_DEPTH_COMPONENT                                      0x1902
-#define GL_DEPTH_STENCIL_OES                                    0x84F9
-#define GL_UNSIGNED_SHORT                                       0x1403
-#define GL_UNSIGNED_INT                                         0x1405
-#define GL_UNSIGNED_INT_24_8_OES                                0x84FA
-#define GL_DEPTH_COMPONENT16                                    0x81A5
-#define GL_DEPTH_COMPONENT32_OES                                0x81A7
-#define GL_DEPTH24_STENCIL8_OES                                 0x88F0
-#endif
-
-/* GL_ANGLE_framebuffer_blit */
-#ifndef GL_ANGLE_framebuffer_blit
-#define GL_READ_FRAMEBUFFER_ANGLE                               0x8CA8
-#define GL_DRAW_FRAMEBUFFER_ANGLE                               0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE                       0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_ANGLE                       0x8CAA
-#endif
-
-/* GL_ANGLE_framebuffer_multisample */
-#ifndef GL_ANGLE_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_ANGLE                           0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE             0x8D56
-#define GL_MAX_SAMPLES_ANGLE                                    0x8D57
-#endif
-
-/* GL_ANGLE_instanced_arrays */
-#ifndef GL_ANGLE_instanced_arrays
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE                    0x88FE
-#endif
-
-/* GL_ANGLE_pack_reverse_row_order */
-#ifndef GL_ANGLE_pack_reverse_row_order
-#define GL_PACK_REVERSE_ROW_ORDER_ANGLE                         0x93A4
-#endif
-
-/* GL_ANGLE_program_binary */
-#ifndef GL_ANGLE_program_binary
-#define GL_PROGRAM_BINARY_ANGLE                                 0x93A6
-#endif
-
-/* GL_ANGLE_texture_compression_dxt3 */
-#ifndef GL_ANGLE_texture_compression_dxt3
-#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE                      0x83F2
-#endif
-
-/* GL_ANGLE_texture_compression_dxt5 */
-#ifndef GL_ANGLE_texture_compression_dxt5
-#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE                      0x83F3
-#endif
-
-/* GL_ANGLE_texture_usage */
-#ifndef GL_ANGLE_texture_usage
-#define GL_TEXTURE_USAGE_ANGLE                                  0x93A2
-#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE                         0x93A3
-#endif
-
-/* GL_ANGLE_translated_shader_source */
-#ifndef GL_ANGLE_translated_shader_source
-#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE                0x93A0
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_copy_texture_levels */
-/* No new tokens introduced by this extension. */
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_APPLE                           0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE             0x8D56
-#define GL_MAX_SAMPLES_APPLE                                    0x8D57
-#define GL_READ_FRAMEBUFFER_APPLE                               0x8CA8
-#define GL_DRAW_FRAMEBUFFER_APPLE                               0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE                       0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_APPLE                       0x8CAA
-#endif
-
-/* GL_APPLE_rgb_422 */
-#ifndef GL_APPLE_rgb_422
-#define GL_RGB_422_APPLE                                        0x8A1F
-#define GL_UNSIGNED_SHORT_8_8_APPLE                             0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_APPLE                         0x85BB
-#endif
-
-/* GL_APPLE_sync */
-#ifndef GL_APPLE_sync
-
-#define GL_SYNC_OBJECT_APPLE                                    0x8A53
-#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE                        0x9111
-#define GL_OBJECT_TYPE_APPLE                                    0x9112
-#define GL_SYNC_CONDITION_APPLE                                 0x9113
-#define GL_SYNC_STATUS_APPLE                                    0x9114
-#define GL_SYNC_FLAGS_APPLE                                     0x9115
-#define GL_SYNC_FENCE_APPLE                                     0x9116
-#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE                     0x9117
-#define GL_UNSIGNALED_APPLE                                     0x9118
-#define GL_SIGNALED_APPLE                                       0x9119
-#define GL_ALREADY_SIGNALED_APPLE                               0x911A
-#define GL_TIMEOUT_EXPIRED_APPLE                                0x911B
-#define GL_CONDITION_SATISFIED_APPLE                            0x911C
-#define GL_WAIT_FAILED_APPLE                                    0x911D
-#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE                        0x00000001
-#define GL_TIMEOUT_IGNORED_APPLE                                0xFFFFFFFFFFFFFFFFull
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_TEXTURE_MAX_LEVEL_APPLE                              0x813D
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_program_binary */
-#ifndef GL_ARM_mali_program_binary
-#define GL_MALI_PROGRAM_BINARY_ARM                              0x8F61
-#endif
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_MALI_SHADER_BINARY_ARM                               0x8F60
-#endif
-
-/* GL_ARM_rgba8 */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
- * EXT extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_MIN_EXT                                              0x8007
-#define GL_MAX_EXT                                              0x8008
-#endif
-
-/* GL_EXT_color_buffer_half_float */
-#ifndef GL_EXT_color_buffer_half_float
-#define GL_RGBA16F_EXT                                          0x881A
-#define GL_RGB16F_EXT                                           0x881B
-#define GL_RG16F_EXT                                            0x822F
-#define GL_R16F_EXT                                             0x822D
-#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT            0x8211
-#define GL_UNSIGNED_NORMALIZED_EXT                              0x8C17
-#endif
-
-/* GL_EXT_debug_label */
-#ifndef GL_EXT_debug_label
-#define GL_PROGRAM_PIPELINE_OBJECT_EXT                          0x8A4F
-#define GL_PROGRAM_OBJECT_EXT                                   0x8B40
-#define GL_SHADER_OBJECT_EXT                                    0x8B48
-#define GL_BUFFER_OBJECT_EXT                                    0x9151
-#define GL_QUERY_OBJECT_EXT                                     0x9153
-#define GL_VERTEX_ARRAY_OBJECT_EXT                              0x9154
-#endif
-
-/* GL_EXT_debug_marker */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_COLOR_EXT                                            0x1800
-#define GL_DEPTH_EXT                                            0x1801
-#define GL_STENCIL_EXT                                          0x1802
-#endif
-
-#ifndef GL_EXT_disjoint_timer_query
-#define GL_QUERY_COUNTER_BITS_EXT                               0x8864
-#define GL_CURRENT_QUERY_EXT                                    0x8865
-#define GL_QUERY_RESULT_EXT                                     0x8866
-#define GL_QUERY_RESULT_AVAILABLE_EXT                           0x8867
-#define GL_TIME_ELAPSED_EXT                                     0x88BF
-#define GL_TIMESTAMP_EXT                                        0x8E28
-#define GL_GPU_DISJOINT_EXT                                     0x8FBB
-#endif
-
-#ifndef GL_EXT_draw_buffers
-#define GL_EXT_draw_buffers 1
-#define GL_MAX_COLOR_ATTACHMENTS_EXT                            0x8CDF
-#define GL_MAX_DRAW_BUFFERS_EXT                                 0x8824
-#define GL_DRAW_BUFFER0_EXT                                     0x8825
-#define GL_DRAW_BUFFER1_EXT                                     0x8826
-#define GL_DRAW_BUFFER2_EXT                                     0x8827
-#define GL_DRAW_BUFFER3_EXT                                     0x8828
-#define GL_DRAW_BUFFER4_EXT                                     0x8829
-#define GL_DRAW_BUFFER5_EXT                                     0x882A
-#define GL_DRAW_BUFFER6_EXT                                     0x882B
-#define GL_DRAW_BUFFER7_EXT                                     0x882C
-#define GL_DRAW_BUFFER8_EXT                                     0x882D
-#define GL_DRAW_BUFFER9_EXT                                     0x882E
-#define GL_DRAW_BUFFER10_EXT                                    0x882F
-#define GL_DRAW_BUFFER11_EXT                                    0x8830
-#define GL_DRAW_BUFFER12_EXT                                    0x8831
-#define GL_DRAW_BUFFER13_EXT                                    0x8832
-#define GL_DRAW_BUFFER14_EXT                                    0x8833
-#define GL_DRAW_BUFFER15_EXT                                    0x8834
-#define GL_COLOR_ATTACHMENT0_EXT                                0x8CE0
-#define GL_COLOR_ATTACHMENT1_EXT                                0x8CE1
-#define GL_COLOR_ATTACHMENT2_EXT                                0x8CE2
-#define GL_COLOR_ATTACHMENT3_EXT                                0x8CE3
-#define GL_COLOR_ATTACHMENT4_EXT                                0x8CE4
-#define GL_COLOR_ATTACHMENT5_EXT                                0x8CE5
-#define GL_COLOR_ATTACHMENT6_EXT                                0x8CE6
-#define GL_COLOR_ATTACHMENT7_EXT                                0x8CE7
-#define GL_COLOR_ATTACHMENT8_EXT                                0x8CE8
-#define GL_COLOR_ATTACHMENT9_EXT                                0x8CE9
-#define GL_COLOR_ATTACHMENT10_EXT                               0x8CEA
-#define GL_COLOR_ATTACHMENT11_EXT                               0x8CEB
-#define GL_COLOR_ATTACHMENT12_EXT                               0x8CEC
-#define GL_COLOR_ATTACHMENT13_EXT                               0x8CED
-#define GL_COLOR_ATTACHMENT14_EXT                               0x8CEE
-#define GL_COLOR_ATTACHMENT15_EXT                               0x8CEF
-#endif
-
-/* GL_EXT_map_buffer_range */
-#ifndef GL_EXT_map_buffer_range
-#define GL_MAP_READ_BIT_EXT                                     0x0001
-#define GL_MAP_WRITE_BIT_EXT                                    0x0002
-#define GL_MAP_INVALIDATE_RANGE_BIT_EXT                         0x0004
-#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT                        0x0008
-#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT                           0x0010
-#define GL_MAP_UNSYNCHRONIZED_BIT_EXT                           0x0020
-#endif
-
-/* GL_EXT_multisampled_render_to_texture */
-#ifndef GL_EXT_multisampled_render_to_texture
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT           0x8D6C
-/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */
-#define GL_RENDERBUFFER_SAMPLES_EXT                             0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT               0x8D56
-#define GL_MAX_SAMPLES_EXT                                      0x8D57
-#endif
-
-/* GL_EXT_multiview_draw_buffers */
-#ifndef GL_EXT_multiview_draw_buffers
-#define GL_COLOR_ATTACHMENT_EXT                                 0x90F0
-#define GL_MULTIVIEW_EXT                                        0x90F1
-#define GL_DRAW_BUFFER_EXT                                      0x0C01
-#define GL_READ_BUFFER_EXT                                      0x0C02
-#define GL_MAX_MULTIVIEW_BUFFERS_EXT                            0x90F2
-#endif
-
-/* GL_EXT_multi_draw_arrays */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_occlusion_query_boolean */
-#ifndef GL_EXT_occlusion_query_boolean
-#define GL_ANY_SAMPLES_PASSED_EXT                               0x8C2F
-#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT                  0x8D6A
-#define GL_CURRENT_QUERY_EXT                                    0x8865
-#define GL_QUERY_RESULT_EXT                                     0x8866
-#define GL_QUERY_RESULT_AVAILABLE_EXT                           0x8867
-#endif
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_BGRA_EXT                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT                       0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT                       0x8366
-#endif
-
-/* GL_EXT_robustness */
-#ifndef GL_EXT_robustness
-/* reuse GL_NO_ERROR */
-#define GL_GUILTY_CONTEXT_RESET_EXT                             0x8253
-#define GL_INNOCENT_CONTEXT_RESET_EXT                           0x8254
-#define GL_UNKNOWN_CONTEXT_RESET_EXT                            0x8255
-#define GL_CONTEXT_ROBUST_ACCESS_EXT                            0x90F3
-#define GL_RESET_NOTIFICATION_STRATEGY_EXT                      0x8256
-#define GL_LOSE_CONTEXT_ON_RESET_EXT                            0x8252
-#define GL_NO_RESET_NOTIFICATION_EXT                            0x8261
-#endif
-
-/* GL_EXT_separate_shader_objects */
-#ifndef GL_EXT_separate_shader_objects
-#define GL_VERTEX_SHADER_BIT_EXT                                0x00000001
-#define GL_FRAGMENT_SHADER_BIT_EXT                              0x00000002
-#define GL_ALL_SHADER_BITS_EXT                                  0xFFFFFFFF
-#define GL_PROGRAM_SEPARABLE_EXT                                0x8258
-#define GL_ACTIVE_PROGRAM_EXT                                   0x8259
-#define GL_PROGRAM_PIPELINE_BINDING_EXT                         0x825A
-#endif
-
-/* GL_EXT_shader_framebuffer_fetch */
-#ifndef GL_EXT_shader_framebuffer_fetch
-#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT                 0x8A52
-#endif
-
-/* GL_EXT_shader_texture_lod */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_shadow_samplers */
-#ifndef GL_EXT_shadow_samplers
-#define GL_TEXTURE_COMPARE_MODE_EXT                             0x884C
-#define GL_TEXTURE_COMPARE_FUNC_EXT                             0x884D
-#define GL_COMPARE_REF_TO_TEXTURE_EXT                           0x884E
-#define GL_SAMPLER_2D_SHADOW_EXT                                0x8B62
-#endif
-
-/* GL_EXT_sRGB */
-#ifndef GL_EXT_sRGB
-#define GL_SRGB_EXT                                             0x8C40
-#define GL_SRGB_ALPHA_EXT                                       0x8C42
-#define GL_SRGB8_ALPHA8_EXT                                     0x8C43
-#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT            0x8210
-#endif
-
-/* GL_EXT_sRGB_write_control */
-#ifndef GL_EXT_sRGB_write_control
-#define GL_EXT_sRGB_write_control 1
-#define GL_FRAMEBUFFER_SRGB_EXT                                 0x8DB9
-#endif
-
-/* GL_EXT_texture_compression_dxt1 */
-#ifndef GL_EXT_texture_compression_dxt1
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT                         0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                        0x83F1
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_TEXTURE_MAX_ANISOTROPY_EXT                           0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                       0x84FF
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_EXT_texture_rg */
-#ifndef GL_EXT_texture_rg
-#define GL_RED_EXT                                              0x1903
-#define GL_RG_EXT                                               0x8227
-#define GL_R8_EXT                                               0x8229
-#define GL_RG8_EXT                                              0x822B
-#endif
-
-/* GL_EXT_texture_sRGB_decode */
-#ifndef GL_EXT_texture_sRGB_decode
-#define GL_EXT_texture_sRGB_decode 1
-#define GL_TEXTURE_SRGB_DECODE_EXT                              0x8A48
-#define GL_DECODE_EXT                                           0x8A49
-#define GL_SKIP_DECODE_EXT                                      0x8A4A
-#endif
-
-/* GL_EXT_texture_storage */
-#ifndef GL_EXT_texture_storage
-#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT                         0x912F
-#define GL_ALPHA8_EXT                                           0x803C
-#define GL_LUMINANCE8_EXT                                       0x8040
-#define GL_LUMINANCE8_ALPHA8_EXT                                0x8045
-#define GL_RGBA32F_EXT                                          0x8814
-#define GL_RGB32F_EXT                                           0x8815
-#define GL_ALPHA32F_EXT                                         0x8816
-#define GL_LUMINANCE32F_EXT                                     0x8818
-#define GL_LUMINANCE_ALPHA32F_EXT                               0x8819
-/* reuse GL_RGBA16F_EXT */
-/* reuse GL_RGB16F_EXT */
-#define GL_ALPHA16F_EXT                                         0x881C
-#define GL_LUMINANCE16F_EXT                                     0x881E
-#define GL_LUMINANCE_ALPHA16F_EXT                               0x881F
-#define GL_RGB10_A2_EXT                                         0x8059
-#define GL_RGB10_EXT                                            0x8052
-#define GL_BGRA8_EXT                                            0x93A1
-#define GL_R8_EXT                                               0x8229
-#define GL_RG8_EXT                                              0x822B
-#define GL_R32F_EXT                                             0x822E
-#define GL_RG32F_EXT                                            0x8230
-#define GL_R16F_EXT                                             0x822D
-#define GL_RG16F_EXT                                            0x822F
-#endif
-
-/* GL_EXT_texture_type_2_10_10_10_REV */
-#ifndef GL_EXT_texture_type_2_10_10_10_REV
-#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      0x8368
-#endif
-
-/* GL_EXT_unpack_subimage */
-#ifndef GL_EXT_unpack_subimage
-#define GL_UNPACK_ROW_LENGTH_EXT                                0x0CF2
-#define GL_UNPACK_SKIP_ROWS_EXT                                 0x0CF3
-#define GL_UNPACK_SKIP_PIXELS_EXT                               0x0CF4
-#endif
-
-/*------------------------------------------------------------------------*
- * DMP extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_DMP_shader_binary */
-#ifndef GL_DMP_shader_binary
-#define GL_SHADER_BINARY_DMP                                    0x9250
-#endif
-
-/*------------------------------------------------------------------------*
- * FJ extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_FJ_shader_binary_GCCSO */
-#ifndef GL_FJ_shader_binary_GCCSO
-#define GL_GCCSO_SHADER_BINARY_FJ                               0x9260
-#endif
-
-/*------------------------------------------------------------------------*
- * IMG extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_program_binary */
-#ifndef GL_IMG_program_binary
-#define GL_SGX_PROGRAM_BINARY_IMG                               0x9130
-#endif
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_BGRA_IMG                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG                       0x8365
-#endif
-
-/* GL_IMG_shader_binary */
-#ifndef GL_IMG_shader_binary
-#define GL_SGX_BINARY_IMG                                       0x8C0A
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG                      0x8C00
-#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG                      0x8C01
-#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                     0x8C02
-#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                     0x8C03
-#endif
-
-/* GL_IMG_texture_compression_pvrtc2 */
-#ifndef GL_IMG_texture_compression_pvrtc2
-#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG                     0x9137
-#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG                     0x9138
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_RENDERBUFFER_SAMPLES_IMG                             0x9133
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG               0x9134
-#define GL_MAX_SAMPLES_IMG                                      0x9135
-#define GL_TEXTURE_SAMPLES_IMG                                  0x9136
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_NV_coverage_sample */
-#ifndef GL_NV_coverage_sample
-#define GL_COVERAGE_COMPONENT_NV                                0x8ED0
-#define GL_COVERAGE_COMPONENT4_NV                               0x8ED1
-#define GL_COVERAGE_ATTACHMENT_NV                               0x8ED2
-#define GL_COVERAGE_BUFFERS_NV                                  0x8ED3
-#define GL_COVERAGE_SAMPLES_NV                                  0x8ED4
-#define GL_COVERAGE_ALL_FRAGMENTS_NV                            0x8ED5
-#define GL_COVERAGE_EDGE_FRAGMENTS_NV                           0x8ED6
-#define GL_COVERAGE_AUTOMATIC_NV                                0x8ED7
-#define GL_COVERAGE_BUFFER_BIT_NV                               0x00008000
-#endif
-
-/* GL_NV_depth_nonlinear */
-#ifndef GL_NV_depth_nonlinear
-#define GL_DEPTH_COMPONENT16_NONLINEAR_NV                       0x8E2C
-#endif
-
-/* GL_NV_draw_buffers */
-#ifndef GL_NV_draw_buffers
-#define GL_MAX_DRAW_BUFFERS_NV                                  0x8824
-#define GL_DRAW_BUFFER0_NV                                      0x8825
-#define GL_DRAW_BUFFER1_NV                                      0x8826
-#define GL_DRAW_BUFFER2_NV                                      0x8827
-#define GL_DRAW_BUFFER3_NV                                      0x8828
-#define GL_DRAW_BUFFER4_NV                                      0x8829
-#define GL_DRAW_BUFFER5_NV                                      0x882A
-#define GL_DRAW_BUFFER6_NV                                      0x882B
-#define GL_DRAW_BUFFER7_NV                                      0x882C
-#define GL_DRAW_BUFFER8_NV                                      0x882D
-#define GL_DRAW_BUFFER9_NV                                      0x882E
-#define GL_DRAW_BUFFER10_NV                                     0x882F
-#define GL_DRAW_BUFFER11_NV                                     0x8830
-#define GL_DRAW_BUFFER12_NV                                     0x8831
-#define GL_DRAW_BUFFER13_NV                                     0x8832
-#define GL_DRAW_BUFFER14_NV                                     0x8833
-#define GL_DRAW_BUFFER15_NV                                     0x8834
-#define GL_COLOR_ATTACHMENT0_NV                                 0x8CE0
-#define GL_COLOR_ATTACHMENT1_NV                                 0x8CE1
-#define GL_COLOR_ATTACHMENT2_NV                                 0x8CE2
-#define GL_COLOR_ATTACHMENT3_NV                                 0x8CE3
-#define GL_COLOR_ATTACHMENT4_NV                                 0x8CE4
-#define GL_COLOR_ATTACHMENT5_NV                                 0x8CE5
-#define GL_COLOR_ATTACHMENT6_NV                                 0x8CE6
-#define GL_COLOR_ATTACHMENT7_NV                                 0x8CE7
-#define GL_COLOR_ATTACHMENT8_NV                                 0x8CE8
-#define GL_COLOR_ATTACHMENT9_NV                                 0x8CE9
-#define GL_COLOR_ATTACHMENT10_NV                                0x8CEA
-#define GL_COLOR_ATTACHMENT11_NV                                0x8CEB
-#define GL_COLOR_ATTACHMENT12_NV                                0x8CEC
-#define GL_COLOR_ATTACHMENT13_NV                                0x8CED
-#define GL_COLOR_ATTACHMENT14_NV                                0x8CEE
-#define GL_COLOR_ATTACHMENT15_NV                                0x8CEF
-#endif
-
-/* GL_NV_draw_instanced */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_fbo_color_attachments */
-#ifndef GL_NV_fbo_color_attachments
-#define GL_MAX_COLOR_ATTACHMENTS_NV                             0x8CDF
-/* GL_COLOR_ATTACHMENT{0-15}_NV defined in GL_NV_draw_buffers already. */
-#endif
-
-/* GL_NV_fence */
-#ifndef GL_NV_fence
-#define GL_ALL_COMPLETED_NV                                     0x84F2
-#define GL_FENCE_STATUS_NV                                      0x84F3
-#define GL_FENCE_CONDITION_NV                                   0x84F4
-#endif
-
-/* GL_NV_framebuffer_blit */
-#ifndef GL_NV_framebuffer_blit
-#define GL_READ_FRAMEBUFFER_NV                                  0x8CA8
-#define GL_DRAW_FRAMEBUFFER_NV                                  0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_NV                          0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_NV                          0x8CAA
-#endif
-
-/* GL_NV_framebuffer_multisample */
-#ifndef GL_NV_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_NV                              0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV                0x8D56
-#define GL_MAX_SAMPLES_NV                                       0x8D57
-#endif
-
-/* GL_NV_generate_mipmap_sRGB */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_instanced_arrays */
-#ifndef GL_NV_instanced_arrays
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV                       0x88FE
-#endif
-
-/* GL_NV_read_buffer */
-#ifndef GL_NV_read_buffer
-#define GL_READ_BUFFER_NV                                       0x0C02
-#endif
-
-/* GL_NV_read_buffer_front */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_read_depth */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_read_depth_stencil */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_read_stencil */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_shadow_samplers_array */
-#ifndef GL_NV_shadow_samplers_array
-#define GL_SAMPLER_2D_ARRAY_SHADOW_NV                           0x8DC4
-#endif
-
-/* GL_NV_shadow_samplers_cube */
-#ifndef GL_NV_shadow_samplers_cube
-#define GL_SAMPLER_CUBE_SHADOW_NV                               0x8DC5
-#endif
-
-/* GL_NV_sRGB_formats */
-#ifndef GL_NV_sRGB_formats
-#define GL_SLUMINANCE_NV                                        0x8C46
-#define GL_SLUMINANCE_ALPHA_NV                                  0x8C44
-#define GL_SRGB8_NV                                             0x8C41
-#define GL_SLUMINANCE8_NV                                       0x8C47
-#define GL_SLUMINANCE8_ALPHA8_NV                                0x8C45
-#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV                         0x8C4C
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV                   0x8C4D
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV                   0x8C4E
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV                   0x8C4F
-#define GL_ETC1_SRGB8_NV                                        0x88EE
-#endif
-
-/* GL_NV_texture_border_clamp */
-#ifndef GL_NV_texture_border_clamp
-#define GL_TEXTURE_BORDER_COLOR_NV                              0x1004
-#define GL_CLAMP_TO_BORDER_NV                                   0x812D
-#endif
-
-/* GL_NV_texture_compression_s3tc_update */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_texture_npot_2D_mipmap */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
- * QCOM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_alpha_test */
-#ifndef GL_QCOM_alpha_test
-#define GL_ALPHA_TEST_QCOM                                      0x0BC0
-#define GL_ALPHA_TEST_FUNC_QCOM                                 0x0BC1
-#define GL_ALPHA_TEST_REF_QCOM                                  0x0BC2
-#endif
-
-/* GL_QCOM_binning_control */
-#ifndef GL_QCOM_binning_control
-#define GL_BINNING_CONTROL_HINT_QCOM                            0x8FB0
-#define GL_CPU_OPTIMIZED_QCOM                                   0x8FB1
-#define GL_GPU_OPTIMIZED_QCOM                                   0x8FB2
-#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM                    0x8FB3
-#endif
-
-/* GL_QCOM_driver_control */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_TEXTURE_WIDTH_QCOM                                   0x8BD2
-#define GL_TEXTURE_HEIGHT_QCOM                                  0x8BD3
-#define GL_TEXTURE_DEPTH_QCOM                                   0x8BD4
-#define GL_TEXTURE_INTERNAL_FORMAT_QCOM                         0x8BD5
-#define GL_TEXTURE_FORMAT_QCOM                                  0x8BD6
-#define GL_TEXTURE_TYPE_QCOM                                    0x8BD7
-#define GL_TEXTURE_IMAGE_VALID_QCOM                             0x8BD8
-#define GL_TEXTURE_NUM_LEVELS_QCOM                              0x8BD9
-#define GL_TEXTURE_TARGET_QCOM                                  0x8BDA
-#define GL_TEXTURE_OBJECT_VALID_QCOM                            0x8BDB
-#define GL_STATE_RESTORE                                        0x8BDC
-#endif
-
-/* GL_QCOM_extended_get2 */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_PERFMON_GLOBAL_MODE_QCOM                             0x8FA0
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_WRITEONLY_RENDERING_QCOM                             0x8823
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_COLOR_BUFFER_BIT0_QCOM                               0x00000001
-#define GL_COLOR_BUFFER_BIT1_QCOM                               0x00000002
-#define GL_COLOR_BUFFER_BIT2_QCOM                               0x00000004
-#define GL_COLOR_BUFFER_BIT3_QCOM                               0x00000008
-#define GL_COLOR_BUFFER_BIT4_QCOM                               0x00000010
-#define GL_COLOR_BUFFER_BIT5_QCOM                               0x00000020
-#define GL_COLOR_BUFFER_BIT6_QCOM                               0x00000040
-#define GL_COLOR_BUFFER_BIT7_QCOM                               0x00000080
-#define GL_DEPTH_BUFFER_BIT0_QCOM                               0x00000100
-#define GL_DEPTH_BUFFER_BIT1_QCOM                               0x00000200
-#define GL_DEPTH_BUFFER_BIT2_QCOM                               0x00000400
-#define GL_DEPTH_BUFFER_BIT3_QCOM                               0x00000800
-#define GL_DEPTH_BUFFER_BIT4_QCOM                               0x00001000
-#define GL_DEPTH_BUFFER_BIT5_QCOM                               0x00002000
-#define GL_DEPTH_BUFFER_BIT6_QCOM                               0x00004000
-#define GL_DEPTH_BUFFER_BIT7_QCOM                               0x00008000
-#define GL_STENCIL_BUFFER_BIT0_QCOM                             0x00010000
-#define GL_STENCIL_BUFFER_BIT1_QCOM                             0x00020000
-#define GL_STENCIL_BUFFER_BIT2_QCOM                             0x00040000
-#define GL_STENCIL_BUFFER_BIT3_QCOM                             0x00080000
-#define GL_STENCIL_BUFFER_BIT4_QCOM                             0x00100000
-#define GL_STENCIL_BUFFER_BIT5_QCOM                             0x00200000
-#define GL_STENCIL_BUFFER_BIT6_QCOM                             0x00400000
-#define GL_STENCIL_BUFFER_BIT7_QCOM                             0x00800000
-#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM                         0x01000000
-#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM                         0x02000000
-#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM                         0x04000000
-#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM                         0x08000000
-#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM                         0x10000000
-#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM                         0x20000000
-#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM                         0x40000000
-#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM                         0x80000000
-#endif
-
-/*------------------------------------------------------------------------*
- * VIV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_VIV_shader_binary */
-#ifndef GL_VIV_shader_binary
-#define GL_SHADER_BINARY_VIV                                    0x8FC4
-#endif
-
-/*------------------------------------------------------------------------*
- * End of extension tokens, start of corresponding extension functions
- *------------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------------*
- * OES extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_OES_compressed_ETC1_RGB8_texture 1
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_OES_compressed_paletted_texture 1
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_OES_depth24 1
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_OES_depth32 1
-#endif
-
-/* GL_OES_depth_texture */
-#ifndef GL_OES_depth_texture
-#define GL_OES_depth_texture 1
-#endif
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-#define GL_OES_EGL_image 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
-GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
-#endif
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-#define GL_OES_EGL_image_external 1
-/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_OES_element_index_uint 1
-#endif
-
-/* GL_OES_fbo_render_mipmap */
-#ifndef GL_OES_fbo_render_mipmap
-#define GL_OES_fbo_render_mipmap 1
-#endif
-
-/* GL_OES_fragment_precision_high */
-#ifndef GL_OES_fragment_precision_high
-#define GL_OES_fragment_precision_high 1
-#endif
-
-/* GL_OES_get_program_binary */
-#ifndef GL_OES_get_program_binary
-#define GL_OES_get_program_binary 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
-GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
-typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_OES_mapbuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access);
-GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target);
-GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid **params);
-#endif
-typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
-typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target);
-typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid **params);
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_OES_packed_depth_stencil 1
-#endif
-
-/* GL_OES_required_internalformat */
-#ifndef GL_OES_required_internalformat
-#define GL_OES_required_internalformat 1
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_OES_rgb8_rgba8 1
-#endif
-
-/* GL_OES_standard_derivatives */
-#ifndef GL_OES_standard_derivatives
-#define GL_OES_standard_derivatives 1
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_OES_stencil1 1
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_OES_stencil4 1
-#endif
-
-#ifndef GL_OES_surfaceless_context
-#define GL_OES_surfaceless_context 1
-#endif
-
-/* GL_OES_texture_3D */
-#ifndef GL_OES_texture_3D
-#define GL_OES_texture_3D 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-#endif
-typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
-typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
-typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-#endif
-
-/* GL_OES_texture_float */
-#ifndef GL_OES_texture_float
-#define GL_OES_texture_float 1
-#endif
-
-/* GL_OES_texture_float_linear */
-#ifndef GL_OES_texture_float_linear
-#define GL_OES_texture_float_linear 1
-#endif
-
-/* GL_OES_texture_half_float */
-#ifndef GL_OES_texture_half_float
-#define GL_OES_texture_half_float 1
-#endif
-
-/* GL_OES_texture_half_float_linear */
-#ifndef GL_OES_texture_half_float_linear
-#define GL_OES_texture_half_float_linear 1
-#endif
-
-/* GL_OES_texture_npot */
-#ifndef GL_OES_texture_npot
-#define GL_OES_texture_npot 1
-#endif
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_OES_vertex_array_object 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array);
-GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays);
-GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays);
-GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);
-#endif
-typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
-typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays);
-typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);
-#endif
-
-/* GL_OES_vertex_half_float */
-#ifndef GL_OES_vertex_half_float
-#define GL_OES_vertex_half_float 1
-#endif
-
-/* GL_OES_vertex_type_10_10_10_2 */
-#ifndef GL_OES_vertex_type_10_10_10_2
-#define GL_OES_vertex_type_10_10_10_2 1
-#endif
-
-/*------------------------------------------------------------------------*
- * KHR extension functions
- *------------------------------------------------------------------------*/
-
-#ifndef GL_KHR_debug
-#define GL_KHR_debug 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam);
-GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void);
-GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label);
-GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, GLvoid **params);
-#endif
-typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam);
-typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void);
-typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, GLvoid **params);
-#endif
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_KHR_texture_compression_astc_ldr 1
-#endif
-
-
-/*------------------------------------------------------------------------*
- * AMD extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_AMD_compressed_3DC_texture 1
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_AMD_compressed_ATC_texture 1
-#endif
-
-/* AMD_performance_monitor */
-#ifndef GL_AMD_performance_monitor
-#define GL_AMD_performance_monitor 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
-GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
-GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
-GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
-typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
-typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-
-/* GL_AMD_program_binary_Z400 */
-#ifndef GL_AMD_program_binary_Z400
-#define GL_AMD_program_binary_Z400 1
-#endif
-
-/*------------------------------------------------------------------------*
- * ANGLE extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ANGLE_depth_texture */
-#ifndef GL_ANGLE_depth_texture
-#define GL_ANGLE_depth_texture 1
-#endif
-
-/* GL_ANGLE_framebuffer_blit */
-#ifndef GL_ANGLE_framebuffer_blit
-#define GL_ANGLE_framebuffer_blit 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-
-/* GL_ANGLE_framebuffer_multisample */
-#ifndef GL_ANGLE_framebuffer_multisample
-#define GL_ANGLE_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-
-#ifndef GL_ANGLE_instanced_arrays
-#define GL_ANGLE_instanced_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor);
-#endif
-
-/* GL_ANGLE_pack_reverse_row_order */
-#ifndef GL_ANGLE_pack_reverse_row_order
-#define GL_ANGLE_pack_reverse_row_order 1
-#endif
-
-/* GL_ANGLE_program_binary */
-#ifndef GL_ANGLE_program_binary
-#define GL_ANGLE_program_binary 1
-#endif
-
-/* GL_ANGLE_texture_compression_dxt3 */
-#ifndef GL_ANGLE_texture_compression_dxt3
-#define GL_ANGLE_texture_compression_dxt3 1
-#endif
-
-/* GL_ANGLE_texture_compression_dxt5 */
-#ifndef GL_ANGLE_texture_compression_dxt5
-#define GL_ANGLE_texture_compression_dxt5 1
-#endif
-
-/* GL_ANGLE_texture_usage */
-#ifndef GL_ANGLE_texture_usage
-#define GL_ANGLE_texture_usage 1
-#endif
-
-#ifndef GL_ANGLE_translated_shader_source
-#define GL_ANGLE_translated_shader_source 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source);
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_copy_texture_levels */
-#ifndef GL_APPLE_copy_texture_levels
-#define GL_APPLE_copy_texture_levels 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
-#endif
-typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
-#endif
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_APPLE_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
-#endif
-
-/* GL_APPLE_rgb_422 */
-#ifndef GL_APPLE_rgb_422
-#define GL_APPLE_rgb_422 1
-#endif
-
-/* GL_APPLE_sync */
-#ifndef GL_APPLE_sync
-#define GL_APPLE_sync 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags);
-GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync);
-GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync);
-GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params);
-GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-#endif
-typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags);
-typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync);
-typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync);
-typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params);
-typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_APPLE_texture_format_BGRA8888 1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_APPLE_texture_max_level 1
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_program_binary */
-#ifndef GL_ARM_mali_program_binary
-#define GL_ARM_mali_program_binary 1
-#endif
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_ARM_mali_shader_binary 1
-#endif
-
-/* GL_ARM_rgba8 */
-#ifndef GL_ARM_rgba8
-#define GL_ARM_rgba8 1
-#endif
-
-/*------------------------------------------------------------------------*
- * EXT extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_EXT_blend_minmax 1
-#endif
-
-/* GL_EXT_color_buffer_half_float */
-#ifndef GL_EXT_color_buffer_half_float
-#define GL_EXT_color_buffer_half_float 1
-#endif
-
-/* GL_EXT_debug_label */
-#ifndef GL_EXT_debug_label
-#define GL_EXT_debug_label 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-
-/* GL_EXT_debug_marker */
-#ifndef GL_EXT_debug_marker
-#define GL_EXT_debug_marker 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
-GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
-GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void);
-#endif
-typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
-#endif
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_EXT_discard_framebuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-
-#ifndef GL_EXT_disjoint_timer_query
-#define GL_EXT_disjoint_timer_query 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids);
-GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids);
-GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id);
-GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id);
-GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target);
-GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target);
-GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
-#endif
-typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids);
-typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id);
-typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id);
-typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target);
-typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target);
-typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
-#endif /* GL_EXT_disjoint_timer_query */
-
-#ifndef GL_EXT_draw_buffers
-#define GL_EXT_draw_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs);
-#endif /* GL_EXT_draw_buffers */
-
-/* GL_EXT_map_buffer_range */
-#ifndef GL_EXT_map_buffer_range
-#define GL_EXT_map_buffer_range 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void* GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length);
-#endif
-typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
-#endif
-
-/* GL_EXT_multisampled_render_to_texture */
-#ifndef GL_EXT_multisampled_render_to_texture
-#define GL_EXT_multisampled_render_to_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);             
-GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-
-/* GL_EXT_multiview_draw_buffers */
-#ifndef GL_EXT_multiview_draw_buffers
-#define GL_EXT_multiview_draw_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index);
-GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices);
-GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data);
-#endif
-typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index);
-typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices);
-typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data);
-#endif
-
-#ifndef GL_EXT_multi_draw_arrays
-#define GL_EXT_multi_draw_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
-#endif
-
-/* GL_EXT_occlusion_query_boolean */
-#ifndef GL_EXT_occlusion_query_boolean
-#define GL_EXT_occlusion_query_boolean 1
-/* All entry points also exist in GL_EXT_disjoint_timer_query */
-#endif
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_EXT_read_format_bgra 1
-#endif
-
-/* GL_EXT_robustness */
-#ifndef GL_EXT_robustness
-#define GL_EXT_robustness 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void);
-GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
-GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-#endif
-typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void);
-typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
-typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-#endif
-
-/* GL_EXT_separate_shader_objects */
-#ifndef GL_EXT_separate_shader_objects
-#define GL_EXT_separate_shader_objects 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program);
-GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program);
-GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings);
-GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline);
-GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines);
-GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines);
-GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline);
-GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
-GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint x);
-GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint x, GLint y);
-GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z);
-GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
-GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat x);
-GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat x, GLfloat y);
-GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline);
-GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-#endif
-typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
-typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program);
-typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings);
-typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
-typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines);
-typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines);
-typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
-typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint x);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint x, GLint y);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat x);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-#endif
-
-/* GL_EXT_shader_framebuffer_fetch */
-#ifndef GL_EXT_shader_framebuffer_fetch
-#define GL_EXT_shader_framebuffer_fetch 1
-#endif
-
-/* GL_EXT_shader_texture_lod */
-#ifndef GL_EXT_shader_texture_lod
-#define GL_EXT_shader_texture_lod 1
-#endif
-
-/* GL_EXT_shadow_samplers */
-#ifndef GL_EXT_shadow_samplers
-#define GL_EXT_shadow_samplers 1
-#endif
-
-/* GL_EXT_sRGB */
-#ifndef GL_EXT_sRGB
-#define GL_EXT_sRGB 1
-#endif
-
-/* GL_EXT_texture_compression_dxt1 */
-#ifndef GL_EXT_texture_compression_dxt1
-#define GL_EXT_texture_compression_dxt1 1
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_EXT_texture_filter_anisotropic 1
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_EXT_texture_format_BGRA8888 1
-#endif
-
-/* GL_EXT_texture_rg */
-#ifndef GL_EXT_texture_rg
-#define GL_EXT_texture_rg 1
-#endif
-
-/* GL_EXT_texture_storage */
-#ifndef GL_EXT_texture_storage
-#define GL_EXT_texture_storage 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-
-/* GL_EXT_texture_type_2_10_10_10_REV */
-#ifndef GL_EXT_texture_type_2_10_10_10_REV
-#define GL_EXT_texture_type_2_10_10_10_REV 1
-#endif
-
-/* GL_EXT_unpack_subimage */
-#ifndef GL_EXT_unpack_subimage
-#define GL_EXT_unpack_subimage 1
-#endif
-
-/*------------------------------------------------------------------------*
- * DMP extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_DMP_shader_binary */
-#ifndef GL_DMP_shader_binary
-#define GL_DMP_shader_binary 1
-#endif
-
-/*------------------------------------------------------------------------*
- * FJ extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_FJ_shader_binary_GCCSO */
-#ifndef GL_FJ_shader_binary_GCCSO
-#define GL_FJ_shader_binary_GCCSO 1
-#endif
-
-/*------------------------------------------------------------------------*
- * IMG extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_program_binary */
-#ifndef GL_IMG_program_binary
-#define GL_IMG_program_binary 1
-#endif
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_IMG_read_format 1
-#endif
-
-/* GL_IMG_shader_binary */
-#ifndef GL_IMG_shader_binary
-#define GL_IMG_shader_binary 1
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_IMG_texture_compression_pvrtc 1
-#endif
-
-/* GL_IMG_texture_compression_pvrtc2 */
-#ifndef GL_IMG_texture_compression_pvrtc2
-#define GL_IMG_texture_compression_pvrtc2 1
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_IMG_multisampled_render_to_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_NV_coverage_sample */
-#ifndef GL_NV_coverage_sample
-#define GL_NV_coverage_sample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask);
-GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation);
-#endif
-typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask);
-typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation);
-#endif
-
-/* GL_NV_depth_nonlinear */
-#ifndef GL_NV_depth_nonlinear
-#define GL_NV_depth_nonlinear 1
-#endif
-
-/* GL_NV_draw_buffers */
-#ifndef GL_NV_draw_buffers
-#define GL_NV_draw_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs);
-#endif
-
-/* GL_NV_draw_instanced */
-#ifndef GL_NV_draw_instanced
-#define GL_NV_draw_instanced 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
-#endif
-
-/* GL_NV_fbo_color_attachments */
-#ifndef GL_NV_fbo_color_attachments
-#define GL_NV_fbo_color_attachments 1
-#endif
-
-/* GL_NV_fence */
-#ifndef GL_NV_fence
-#define GL_NV_fence 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
-GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
-GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence);
-GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence);
-GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence);
-GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
-#endif
-typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
-typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
-typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
-typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
-#endif
-
-/* GL_NV_framebuffer_blit */
-#ifndef GL_NV_framebuffer_blit
-#define GL_NV_framebuffer_blit 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-
-/* GL_NV_framebuffer_multisample */
-#ifndef GL_NV_framebuffer_multisample
-#define GL_NV_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-
-/* GL_NV_generate_mipmap_sRGB */
-#ifndef GL_NV_generate_mipmap_sRGB
-#define GL_NV_generate_mipmap_sRGB 1
-#endif
-
-/* GL_NV_instanced_arrays */
-#ifndef GL_NV_instanced_arrays
-#define GL_NV_instanced_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor);
-#endif
-typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor);
-#endif
-
-/* GL_NV_read_buffer */
-#ifndef GL_NV_read_buffer
-#define GL_NV_read_buffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode);
-#endif
-typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode);
-#endif
-
-/* GL_NV_read_buffer_front */
-#ifndef GL_NV_read_buffer_front
-#define GL_NV_read_buffer_front 1
-#endif
-
-/* GL_NV_read_depth */
-#ifndef GL_NV_read_depth
-#define GL_NV_read_depth 1
-#endif
-
-/* GL_NV_read_depth_stencil */
-#ifndef GL_NV_read_depth_stencil
-#define GL_NV_read_depth_stencil 1
-#endif
-
-/* GL_NV_read_stencil */
-#ifndef GL_NV_read_stencil
-#define GL_NV_read_stencil 1
-#endif
-
-/* GL_NV_shadow_samplers_array */
-#ifndef GL_NV_shadow_samplers_array
-#define GL_NV_shadow_samplers_array 1
-#endif
-
-/* GL_NV_shadow_samplers_cube */
-#ifndef GL_NV_shadow_samplers_cube
-#define GL_NV_shadow_samplers_cube 1
-#endif
-
-/* GL_NV_sRGB_formats */
-#ifndef GL_NV_sRGB_formats
-#define GL_NV_sRGB_formats 1
-#endif
-
-/* GL_NV_texture_border_clamp */
-#ifndef GL_NV_texture_border_clamp
-#define GL_NV_texture_border_clamp 1
-#endif
-
-/* GL_NV_texture_compression_s3tc_update */
-#ifndef GL_NV_texture_compression_s3tc_update
-#define GL_NV_texture_compression_s3tc_update 1
-#endif
-
-/* GL_NV_texture_npot_2D_mipmap */
-#ifndef GL_NV_texture_npot_2D_mipmap
-#define GL_NV_texture_npot_2D_mipmap 1
-#endif
-
-/*------------------------------------------------------------------------*
- * QCOM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_alpha_test */
-#ifndef GL_QCOM_alpha_test
-#define GL_QCOM_alpha_test 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref);
-#endif
-typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref);
-#endif
-
-/* GL_QCOM_binning_control */
-#ifndef GL_QCOM_binning_control
-#define GL_QCOM_binning_control 1
-#endif
-
-/* GL_QCOM_driver_control */
-#ifndef GL_QCOM_driver_control
-#define GL_QCOM_driver_control 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls);
-GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl);
-GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls);
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-#endif
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_QCOM_extended_get 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures);
-GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param);
-GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params);
-#endif
-
-/* GL_QCOM_extended_get2 */
-#ifndef GL_QCOM_extended_get2
-#define GL_QCOM_extended_get2 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program);
-GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_QCOM_perfmon_global_mode 1
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_QCOM_writeonly_rendering 1
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_QCOM_tiled_rendering 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask);
-#endif
-typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
-#endif
-
-/*------------------------------------------------------------------------*
- * VIV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_VIV_shader_binary */
-#ifndef GL_VIV_shader_binary
-#define GL_VIV_shader_binary 1
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl2ext_h_ */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_gl2platform.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_gl2platform.h
deleted file mode 100644 (file)
index c325686..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __gl2platform_h_
-#define __gl2platform_h_
-
-/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-/* Platform-specific types and definitions for OpenGL ES 2.X  gl2.h
- *
- * Adopters may modify khrplatform.h and this file to suit their platform.
- * You are encouraged to submit all modifications to the Khronos group so that
- * they can be included in future versions of this file.  Please submit changes
- * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
- * by filing a bug against product "OpenGL-ES" component "Registry".
- */
-
-/*#include <KHR/khrplatform.h>*/
-
-#ifndef GL_APICALL
-#define GL_APICALL  KHRONOS_APICALL
-#endif
-
-#ifndef GL_APIENTRY
-#define GL_APIENTRY KHRONOS_APIENTRY
-#endif
-
-#endif /* __gl2platform_h_ */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_khrplatform.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_opengles2_khrplatform.h
deleted file mode 100644 (file)
index c9e6f17..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-#ifndef __khrplatform_h_
-#define __khrplatform_h_
-
-/*
-** Copyright (c) 2008-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Khronos platform-specific types and definitions.
- *
- * $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
- *
- * Adopters may modify this file to suit their platform. Adopters are
- * encouraged to submit platform specific modifications to the Khronos
- * group so that they can be included in future versions of this file.
- * Please submit changes by sending them to the public Khronos Bugzilla
- * (http://khronos.org/bugzilla) by filing a bug against product
- * "Khronos (general)" component "Registry".
- *
- * A predefined template which fills in some of the bug fields can be
- * reached using http://tinyurl.com/khrplatform-h-bugreport, but you
- * must create a Bugzilla login first.
- *
- *
- * See the Implementer's Guidelines for information about where this file
- * should be located on your system and for more details of its use:
- *    http://www.khronos.org/registry/implementers_guide.pdf
- *
- * This file should be included as
- *        #include <KHR/khrplatform.h>
- * by Khronos client API header files that use its types and defines.
- *
- * The types in khrplatform.h should only be used to define API-specific types.
- *
- * Types defined in khrplatform.h:
- *    khronos_int8_t              signed   8  bit
- *    khronos_uint8_t             unsigned 8  bit
- *    khronos_int16_t             signed   16 bit
- *    khronos_uint16_t            unsigned 16 bit
- *    khronos_int32_t             signed   32 bit
- *    khronos_uint32_t            unsigned 32 bit
- *    khronos_int64_t             signed   64 bit
- *    khronos_uint64_t            unsigned 64 bit
- *    khronos_intptr_t            signed   same number of bits as a pointer
- *    khronos_uintptr_t           unsigned same number of bits as a pointer
- *    khronos_ssize_t             signed   size
- *    khronos_usize_t             unsigned size
- *    khronos_float_t             signed   32 bit floating point
- *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
- *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
- *                                         nanoseconds
- *    khronos_stime_nanoseconds_t signed time interval in nanoseconds
- *    khronos_boolean_enum_t      enumerated boolean type. This should
- *      only be used as a base type when a client API's boolean type is
- *      an enum. Client APIs which use an integer or other type for
- *      booleans cannot use this as the base type for their boolean.
- *
- * Tokens defined in khrplatform.h:
- *
- *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
- *
- *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
- *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
- *
- * Calling convention macros defined in this file:
- *    KHRONOS_APICALL
- *    KHRONOS_APIENTRY
- *    KHRONOS_APIATTRIBUTES
- *
- * These may be used in function prototypes as:
- *
- *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
- *                                  int arg1,
- *                                  int arg2) KHRONOS_APIATTRIBUTES;
- */
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APICALL
- *-------------------------------------------------------------------------
- * This precedes the return type of the function in the function prototype.
- */
-#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
-#   define KHRONOS_APICALL __declspec(dllimport)
-#elif defined (__SYMBIAN32__)
-#   define KHRONOS_APICALL IMPORT_C
-#else
-#   define KHRONOS_APICALL
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIENTRY
- *-------------------------------------------------------------------------
- * This follows the return type of the function  and precedes the function
- * name in the function prototype.
- */
-#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
-    /* Win32 but not WinCE */
-#   define KHRONOS_APIENTRY __stdcall
-#else
-#   define KHRONOS_APIENTRY
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIATTRIBUTES
- *-------------------------------------------------------------------------
- * This follows the closing parenthesis of the function prototype arguments.
- */
-#if defined (__ARMCC_2__)
-#define KHRONOS_APIATTRIBUTES __softfp
-#else
-#define KHRONOS_APIATTRIBUTES
-#endif
-
-/*-------------------------------------------------------------------------
- * basic type definitions
- *-----------------------------------------------------------------------*/
-#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
-
-
-/*
- * Using <stdint.h>
- */
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__VMS ) || defined(__sgi)
-
-/*
- * Using <inttypes.h>
- */
-#include <inttypes.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
-
-/*
- * Win32
- */
-typedef __int32                 khronos_int32_t;
-typedef unsigned __int32        khronos_uint32_t;
-typedef __int64                 khronos_int64_t;
-typedef unsigned __int64        khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__sun__) || defined(__digital__)
-
-/*
- * Sun or Digital
- */
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#if defined(__arch64__) || defined(_LP64)
-typedef long int                khronos_int64_t;
-typedef unsigned long int       khronos_uint64_t;
-#else
-typedef long long int           khronos_int64_t;
-typedef unsigned long long int  khronos_uint64_t;
-#endif /* __arch64__ */
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif 0
-
-/*
- * Hypothetical platform with no float or int64 support
- */
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#define KHRONOS_SUPPORT_INT64   0
-#define KHRONOS_SUPPORT_FLOAT   0
-
-#else
-
-/*
- * Generic fallback
- */
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#endif
-
-
-/*
- * Types that are (so far) the same on all platforms
- */
-typedef signed   char          khronos_int8_t;
-typedef unsigned char          khronos_uint8_t;
-typedef signed   short int     khronos_int16_t;
-typedef unsigned short int     khronos_uint16_t;
-
-/*
- * Types that differ between LLP64 and LP64 architectures - in LLP64, 
- * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
- * to be the only LLP64 architecture in current use.
- */
-#ifdef _WIN64
-typedef signed   long long int khronos_intptr_t;
-typedef unsigned long long int khronos_uintptr_t;
-typedef signed   long long int khronos_ssize_t;
-typedef unsigned long long int khronos_usize_t;
-#else
-typedef signed   long  int     khronos_intptr_t;
-typedef unsigned long  int     khronos_uintptr_t;
-typedef signed   long  int     khronos_ssize_t;
-typedef unsigned long  int     khronos_usize_t;
-#endif
-
-#if KHRONOS_SUPPORT_FLOAT
-/*
- * Float type
- */
-typedef          float         khronos_float_t;
-#endif
-
-#if KHRONOS_SUPPORT_INT64
-/* Time types
- *
- * These types can be used to represent a time interval in nanoseconds or
- * an absolute Unadjusted System Time.  Unadjusted System Time is the number
- * of nanoseconds since some arbitrary system event (e.g. since the last
- * time the system booted).  The Unadjusted System Time is an unsigned
- * 64 bit value that wraps back to 0 every 584 years.  Time intervals
- * may be either signed or unsigned.
- */
-typedef khronos_uint64_t       khronos_utime_nanoseconds_t;
-typedef khronos_int64_t        khronos_stime_nanoseconds_t;
-#endif
-
-/*
- * Dummy value used to pad enum types to 32 bits.
- */
-#ifndef KHRONOS_MAX_ENUM
-#define KHRONOS_MAX_ENUM 0x7FFFFFFF
-#endif
-
-/*
- * Enumerated boolean type
- *
- * Values other than zero should be considered to be true.  Therefore
- * comparisons should not be made against KHRONOS_TRUE.
- */
-typedef enum {
-    KHRONOS_FALSE = 0,
-    KHRONOS_TRUE  = 1,
-    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
-} khronos_boolean_enum_t;
-
-#endif /* __khrplatform_h_ */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_pixels.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_pixels.h
deleted file mode 100644 (file)
index dcb7a98..0000000
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_pixels.h
- *
- *  Header for the enumerated pixel format definitions.
- */
-
-#ifndef SDL_pixels_h_
-#define SDL_pixels_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_endian.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \name Transparency definitions
- *
- *  These define alpha as the opacity of a surface.
- */
-/* @{ */
-#define SDL_ALPHA_OPAQUE 255
-#define SDL_ALPHA_TRANSPARENT 0
-/* @} */
-
-/** Pixel type. */
-enum
-{
-    SDL_PIXELTYPE_UNKNOWN,
-    SDL_PIXELTYPE_INDEX1,
-    SDL_PIXELTYPE_INDEX4,
-    SDL_PIXELTYPE_INDEX8,
-    SDL_PIXELTYPE_PACKED8,
-    SDL_PIXELTYPE_PACKED16,
-    SDL_PIXELTYPE_PACKED32,
-    SDL_PIXELTYPE_ARRAYU8,
-    SDL_PIXELTYPE_ARRAYU16,
-    SDL_PIXELTYPE_ARRAYU32,
-    SDL_PIXELTYPE_ARRAYF16,
-    SDL_PIXELTYPE_ARRAYF32
-};
-
-/** Bitmap pixel order, high bit -> low bit. */
-enum
-{
-    SDL_BITMAPORDER_NONE,
-    SDL_BITMAPORDER_4321,
-    SDL_BITMAPORDER_1234
-};
-
-/** Packed component order, high bit -> low bit. */
-enum
-{
-    SDL_PACKEDORDER_NONE,
-    SDL_PACKEDORDER_XRGB,
-    SDL_PACKEDORDER_RGBX,
-    SDL_PACKEDORDER_ARGB,
-    SDL_PACKEDORDER_RGBA,
-    SDL_PACKEDORDER_XBGR,
-    SDL_PACKEDORDER_BGRX,
-    SDL_PACKEDORDER_ABGR,
-    SDL_PACKEDORDER_BGRA
-};
-
-/** Array component order, low byte -> high byte. */
-/* !!! FIXME: in 2.1, make these not overlap differently with
-   !!! FIXME:  SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */
-enum
-{
-    SDL_ARRAYORDER_NONE,
-    SDL_ARRAYORDER_RGB,
-    SDL_ARRAYORDER_RGBA,
-    SDL_ARRAYORDER_ARGB,
-    SDL_ARRAYORDER_BGR,
-    SDL_ARRAYORDER_BGRA,
-    SDL_ARRAYORDER_ABGR
-};
-
-/** Packed component layout. */
-enum
-{
-    SDL_PACKEDLAYOUT_NONE,
-    SDL_PACKEDLAYOUT_332,
-    SDL_PACKEDLAYOUT_4444,
-    SDL_PACKEDLAYOUT_1555,
-    SDL_PACKEDLAYOUT_5551,
-    SDL_PACKEDLAYOUT_565,
-    SDL_PACKEDLAYOUT_8888,
-    SDL_PACKEDLAYOUT_2101010,
-    SDL_PACKEDLAYOUT_1010102
-};
-
-#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
-
-#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
-    ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
-     ((bits) << 8) | ((bytes) << 0))
-
-#define SDL_PIXELFLAG(X)    (((X) >> 28) & 0x0F)
-#define SDL_PIXELTYPE(X)    (((X) >> 24) & 0x0F)
-#define SDL_PIXELORDER(X)   (((X) >> 20) & 0x0F)
-#define SDL_PIXELLAYOUT(X)  (((X) >> 16) & 0x0F)
-#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
-#define SDL_BYTESPERPIXEL(X) \
-    (SDL_ISPIXELFORMAT_FOURCC(X) ? \
-        ((((X) == SDL_PIXELFORMAT_YUY2) || \
-          ((X) == SDL_PIXELFORMAT_UYVY) || \
-          ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
-
-#define SDL_ISPIXELFORMAT_INDEXED(format)   \
-    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
-     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
-
-#define SDL_ISPIXELFORMAT_PACKED(format) \
-    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
-     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32)))
-
-#define SDL_ISPIXELFORMAT_ARRAY(format) \
-    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
-     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32)))
-
-#define SDL_ISPIXELFORMAT_ALPHA(format)   \
-    ((SDL_ISPIXELFORMAT_PACKED(format) && \
-     ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
-      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
-      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
-      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \
-    (SDL_ISPIXELFORMAT_ARRAY(format) && \
-     ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \
-      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \
-      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \
-      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA))))
-
-/* The flag is set to 1 because 0x1? is not in the printable ASCII range */
-#define SDL_ISPIXELFORMAT_FOURCC(format)    \
-    ((format) && (SDL_PIXELFLAG(format) != 1))
-
-/* Note: If you modify this list, update SDL_GetPixelFormatName() */
-typedef enum
-{
-    SDL_PIXELFORMAT_UNKNOWN,
-    SDL_PIXELFORMAT_INDEX1LSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
-                               1, 0),
-    SDL_PIXELFORMAT_INDEX1MSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
-                               1, 0),
-    SDL_PIXELFORMAT_INDEX4LSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
-                               4, 0),
-    SDL_PIXELFORMAT_INDEX4MSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
-                               4, 0),
-    SDL_PIXELFORMAT_INDEX8 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
-    SDL_PIXELFORMAT_RGB332 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_332, 8, 1),
-    SDL_PIXELFORMAT_RGB444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_4444, 12, 2),
-    SDL_PIXELFORMAT_RGB555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_1555, 15, 2),
-    SDL_PIXELFORMAT_BGR555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
-                               SDL_PACKEDLAYOUT_1555, 15, 2),
-    SDL_PIXELFORMAT_ARGB4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_RGBA4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_ABGR4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_BGRA4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_ARGB1555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_1555, 16, 2),
-    SDL_PIXELFORMAT_RGBA5551 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
-                               SDL_PACKEDLAYOUT_5551, 16, 2),
-    SDL_PIXELFORMAT_ABGR1555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
-                               SDL_PACKEDLAYOUT_1555, 16, 2),
-    SDL_PIXELFORMAT_BGRA5551 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
-                               SDL_PACKEDLAYOUT_5551, 16, 2),
-    SDL_PIXELFORMAT_RGB565 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_565, 16, 2),
-    SDL_PIXELFORMAT_BGR565 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
-                               SDL_PACKEDLAYOUT_565, 16, 2),
-    SDL_PIXELFORMAT_RGB24 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
-                               24, 3),
-    SDL_PIXELFORMAT_BGR24 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
-                               24, 3),
-    SDL_PIXELFORMAT_RGB888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_RGBX8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_BGR888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_BGRX8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_ARGB8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_RGBA8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_ABGR8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_BGRA8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_ARGB2101010 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_2101010, 32, 4),
-
-    /* Aliases for RGBA byte arrays of color data, for the current platform */
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
-    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888,
-    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888,
-    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888,
-    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888,
-#else
-    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,
-    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,
-    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,
-    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,
-#endif
-
-    SDL_PIXELFORMAT_YV12 =      /**< Planar mode: Y + V + U  (3 planes) */
-        SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
-    SDL_PIXELFORMAT_IYUV =      /**< Planar mode: Y + U + V  (3 planes) */
-        SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
-    SDL_PIXELFORMAT_YUY2 =      /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */
-        SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
-    SDL_PIXELFORMAT_UYVY =      /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */
-        SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
-    SDL_PIXELFORMAT_YVYU =      /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */
-        SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'),
-    SDL_PIXELFORMAT_NV12 =      /**< Planar mode: Y + U/V interleaved  (2 planes) */
-        SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'),
-    SDL_PIXELFORMAT_NV21 =      /**< Planar mode: Y + V/U interleaved  (2 planes) */
-        SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'),
-    SDL_PIXELFORMAT_EXTERNAL_OES =      /**< Android video texture format */
-        SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')
-} SDL_PixelFormatEnum;
-
-typedef struct SDL_Color
-{
-    Uint8 r;
-    Uint8 g;
-    Uint8 b;
-    Uint8 a;
-} SDL_Color;
-#define SDL_Colour SDL_Color
-
-typedef struct SDL_Palette
-{
-    int ncolors;
-    SDL_Color *colors;
-    Uint32 version;
-    int refcount;
-} SDL_Palette;
-
-/**
- *  \note Everything in the pixel format structure is read-only.
- */
-typedef struct SDL_PixelFormat
-{
-    Uint32 format;
-    SDL_Palette *palette;
-    Uint8 BitsPerPixel;
-    Uint8 BytesPerPixel;
-    Uint8 padding[2];
-    Uint32 Rmask;
-    Uint32 Gmask;
-    Uint32 Bmask;
-    Uint32 Amask;
-    Uint8 Rloss;
-    Uint8 Gloss;
-    Uint8 Bloss;
-    Uint8 Aloss;
-    Uint8 Rshift;
-    Uint8 Gshift;
-    Uint8 Bshift;
-    Uint8 Ashift;
-    int refcount;
-    struct SDL_PixelFormat *next;
-} SDL_PixelFormat;
-
-/**
- * \brief Get the human readable name of a pixel format
- */
-extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);
-
-/**
- *  \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks.
- *
- *  \return SDL_TRUE, or SDL_FALSE if the conversion wasn't possible.
- *
- *  \sa SDL_MasksToPixelFormatEnum()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format,
-                                                            int *bpp,
-                                                            Uint32 * Rmask,
-                                                            Uint32 * Gmask,
-                                                            Uint32 * Bmask,
-                                                            Uint32 * Amask);
-
-/**
- *  \brief Convert a bpp and RGBA masks to an enumerated pixel format.
- *
- *  \return The pixel format, or ::SDL_PIXELFORMAT_UNKNOWN if the conversion
- *          wasn't possible.
- *
- *  \sa SDL_PixelFormatEnumToMasks()
- */
-extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp,
-                                                          Uint32 Rmask,
-                                                          Uint32 Gmask,
-                                                          Uint32 Bmask,
-                                                          Uint32 Amask);
-
-/**
- *  \brief Create an SDL_PixelFormat structure from a pixel format enum.
- */
-extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format);
-
-/**
- *  \brief Free an SDL_PixelFormat structure.
- */
-extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format);
-
-/**
- *  \brief Create a palette structure with the specified number of color
- *         entries.
- *
- *  \return A new palette, or NULL if there wasn't enough memory.
- *
- *  \note The palette entries are initialized to white.
- *
- *  \sa SDL_FreePalette()
- */
-extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors);
-
-/**
- *  \brief Set the palette for a pixel format structure.
- */
-extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format,
-                                                      SDL_Palette *palette);
-
-/**
- *  \brief Set a range of colors in a palette.
- *
- *  \param palette    The palette to modify.
- *  \param colors     An array of colors to copy into the palette.
- *  \param firstcolor The index of the first palette entry to modify.
- *  \param ncolors    The number of entries to modify.
- *
- *  \return 0 on success, or -1 if not all of the colors could be set.
- */
-extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette,
-                                                 const SDL_Color * colors,
-                                                 int firstcolor, int ncolors);
-
-/**
- *  \brief Free a palette created with SDL_AllocPalette().
- *
- *  \sa SDL_AllocPalette()
- */
-extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette);
-
-/**
- *  \brief Maps an RGB triple to an opaque pixel value for a given pixel format.
- *
- *  \sa SDL_MapRGBA
- */
-extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format,
-                                          Uint8 r, Uint8 g, Uint8 b);
-
-/**
- *  \brief Maps an RGBA quadruple to a pixel value for a given pixel format.
- *
- *  \sa SDL_MapRGB
- */
-extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format,
-                                           Uint8 r, Uint8 g, Uint8 b,
-                                           Uint8 a);
-
-/**
- *  \brief Get the RGB components from a pixel of the specified format.
- *
- *  \sa SDL_GetRGBA
- */
-extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel,
-                                        const SDL_PixelFormat * format,
-                                        Uint8 * r, Uint8 * g, Uint8 * b);
-
-/**
- *  \brief Get the RGBA components from a pixel of the specified format.
- *
- *  \sa SDL_GetRGB
- */
-extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel,
-                                         const SDL_PixelFormat * format,
-                                         Uint8 * r, Uint8 * g, Uint8 * b,
-                                         Uint8 * a);
-
-/**
- *  \brief Calculate a 256 entry gamma ramp for a gamma value.
- */
-extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_pixels_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_platform.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_platform.h
deleted file mode 100644 (file)
index c2cbc6b..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_platform.h
- *
- *  Try to get a standard set of platform defines.
- */
-
-#ifndef SDL_platform_h_
-#define SDL_platform_h_
-
-#if defined(_AIX)
-#undef __AIX__
-#define __AIX__     1
-#endif
-#if defined(__HAIKU__)
-#undef __HAIKU__
-#define __HAIKU__   1
-#endif
-#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__)
-#undef __BSDI__
-#define __BSDI__    1
-#endif
-#if defined(_arch_dreamcast)
-#undef __DREAMCAST__
-#define __DREAMCAST__   1
-#endif
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
-#undef __FREEBSD__
-#define __FREEBSD__ 1
-#endif
-#if defined(hpux) || defined(__hpux) || defined(__hpux__)
-#undef __HPUX__
-#define __HPUX__    1
-#endif
-#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE)
-#undef __IRIX__
-#define __IRIX__    1
-#endif
-#if (defined(linux) || defined(__linux) || defined(__linux__))
-#undef __LINUX__
-#define __LINUX__   1
-#endif
-#if defined(ANDROID) || defined(__ANDROID__)
-#undef __ANDROID__
-#undef __LINUX__ /* do we need to do this? */
-#define __ANDROID__ 1
-#endif
-
-#if defined(__APPLE__)
-/* lets us know what version of Mac OS X we're compiling on */
-#include "AvailabilityMacros.h"
-#include "TargetConditionals.h"
-#if TARGET_OS_TV
-#undef __TVOS__
-#define __TVOS__ 1
-#endif
-#if TARGET_OS_IPHONE
-/* if compiling for iOS */
-#undef __IPHONEOS__
-#define __IPHONEOS__ 1
-#undef __MACOSX__
-#else
-/* if not compiling for iOS */
-#undef __MACOSX__
-#define __MACOSX__  1
-#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
-# error SDL for Mac OS X only supports deploying on 10.6 and above.
-#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1060 */
-#endif /* TARGET_OS_IPHONE */
-#endif /* defined(__APPLE__) */
-
-#if defined(__NetBSD__)
-#undef __NETBSD__
-#define __NETBSD__  1
-#endif
-#if defined(__OpenBSD__)
-#undef __OPENBSD__
-#define __OPENBSD__ 1
-#endif
-#if defined(__OS2__) || defined(__EMX__)
-#undef __OS2__
-#define __OS2__     1
-#endif
-#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE)
-#undef __OSF__
-#define __OSF__     1
-#endif
-#if defined(__QNXNTO__)
-#undef __QNXNTO__
-#define __QNXNTO__  1
-#endif
-#if defined(riscos) || defined(__riscos) || defined(__riscos__)
-#undef __RISCOS__
-#define __RISCOS__  1
-#endif
-#if defined(__sun) && defined(__SVR4)
-#undef __SOLARIS__
-#define __SOLARIS__ 1
-#endif
-
-#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
-/* Try to find out if we're compiling for WinRT or non-WinRT */
-#if defined(_MSC_VER) && defined(__has_include)
-#if __has_include(<winapifamily.h>)
-#define HAVE_WINAPIFAMILY_H 1
-#else
-#define HAVE_WINAPIFAMILY_H 0
-#endif
-
-/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */
-#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_)    /* _MSC_VER == 1700 for Visual Studio 2012 */
-#define HAVE_WINAPIFAMILY_H 1
-#else
-#define HAVE_WINAPIFAMILY_H 0
-#endif
-
-#if HAVE_WINAPIFAMILY_H
-#include <winapifamily.h>
-#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP))
-#else
-#define WINAPI_FAMILY_WINRT 0
-#endif /* HAVE_WINAPIFAMILY_H */
-
-#if WINAPI_FAMILY_WINRT
-#undef __WINRT__
-#define __WINRT__ 1
-#else
-#undef __WINDOWS__
-#define __WINDOWS__ 1
-#endif
-#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */
-
-#if defined(__WINDOWS__)
-#undef __WIN32__
-#define __WIN32__ 1
-#endif
-#if defined(__PSP__)
-#undef __PSP__
-#define __PSP__ 1
-#endif
-
-/* The NACL compiler defines __native_client__ and __pnacl__
- * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi
- */
-#if defined(__native_client__)
-#undef __LINUX__
-#undef __NACL__
-#define __NACL__ 1
-#endif
-#if defined(__pnacl__)
-#undef __LINUX__
-#undef __PNACL__
-#define __PNACL__ 1
-/* PNACL with newlib supports static linking only */
-#define __SDL_NOGETPROCADDR__
-#endif
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Gets the name of the platform.
- */
-extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_platform_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_power.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_power.h
deleted file mode 100644 (file)
index 4831cb7..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_power_h_
-#define SDL_power_h_
-
-/**
- *  \file SDL_power.h
- *
- *  Header for the SDL power management routines.
- */
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief The basic state for the system's power supply.
- */
-typedef enum
-{
-    SDL_POWERSTATE_UNKNOWN,      /**< cannot determine power status */
-    SDL_POWERSTATE_ON_BATTERY,   /**< Not plugged in, running on the battery */
-    SDL_POWERSTATE_NO_BATTERY,   /**< Plugged in, no battery available */
-    SDL_POWERSTATE_CHARGING,     /**< Plugged in, charging battery */
-    SDL_POWERSTATE_CHARGED       /**< Plugged in, battery charged */
-} SDL_PowerState;
-
-
-/**
- *  \brief Get the current power supply details.
- *
- *  \param secs Seconds of battery life left. You can pass a NULL here if
- *              you don't care. Will return -1 if we can't determine a
- *              value, or we're not running on a battery.
- *
- *  \param pct Percentage of battery life left, between 0 and 100. You can
- *             pass a NULL here if you don't care. Will return -1 if we
- *             can't determine a value, or we're not running on a battery.
- *
- *  \return The state of the battery (if any).
- */
-extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *secs, int *pct);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_power_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_quit.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_quit.h
deleted file mode 100644 (file)
index c979983..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_quit.h
- *
- *  Include file for SDL quit event handling.
- */
-
-#ifndef SDL_quit_h_
-#define SDL_quit_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-/**
- *  \file SDL_quit.h
- *
- *  An ::SDL_QUIT event is generated when the user tries to close the application
- *  window.  If it is ignored or filtered out, the window will remain open.
- *  If it is not ignored or filtered, it is queued normally and the window
- *  is allowed to close.  When the window is closed, screen updates will
- *  complete, but have no effect.
- *
- *  SDL_Init() installs signal handlers for SIGINT (keyboard interrupt)
- *  and SIGTERM (system termination request), if handlers do not already
- *  exist, that generate ::SDL_QUIT events as well.  There is no way
- *  to determine the cause of an ::SDL_QUIT event, but setting a signal
- *  handler in your application will override the default generation of
- *  quit events for that signal.
- *
- *  \sa SDL_Quit()
- */
-
-/* There are no functions directly affecting the quit event */
-
-#define SDL_QuitRequested() \
-        (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0))
-
-#endif /* SDL_quit_h_ */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_rect.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_rect.h
deleted file mode 100644 (file)
index 71a4115..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_rect.h
- *
- *  Header file for SDL_rect definition and management functions.
- */
-
-#ifndef SDL_rect_h_
-#define SDL_rect_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_pixels.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief  The structure that defines a point (integer)
- *
- *  \sa SDL_EnclosePoints
- *  \sa SDL_PointInRect
- */
-typedef struct SDL_Point
-{
-    int x;
-    int y;
-} SDL_Point;
-
-/**
- *  \brief  The structure that defines a point (floating point)
- *
- *  \sa SDL_EnclosePoints
- *  \sa SDL_PointInRect
- */
-typedef struct SDL_FPoint
-{
-    float x;
-    float y;
-} SDL_FPoint;
-
-
-/**
- *  \brief A rectangle, with the origin at the upper left (integer).
- *
- *  \sa SDL_RectEmpty
- *  \sa SDL_RectEquals
- *  \sa SDL_HasIntersection
- *  \sa SDL_IntersectRect
- *  \sa SDL_UnionRect
- *  \sa SDL_EnclosePoints
- */
-typedef struct SDL_Rect
-{
-    int x, y;
-    int w, h;
-} SDL_Rect;
-
-
-/**
- *  \brief A rectangle, with the origin at the upper left (floating point).
- */
-typedef struct SDL_FRect
-{
-    float x;
-    float y;
-    float w;
-    float h;
-} SDL_FRect;
-
-
-/**
- *  \brief Returns true if point resides inside a rectangle.
- */
-SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r)
-{
-    return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&
-             (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;
-}
-
-/**
- *  \brief Returns true if the rectangle has no area.
- */
-SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r)
-{
-    return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE;
-}
-
-/**
- *  \brief Returns true if the two rectangles are equal.
- */
-SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b)
-{
-    return (a && b && (a->x == b->x) && (a->y == b->y) &&
-            (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE;
-}
-
-/**
- *  \brief Determine whether two rectangles intersect.
- *
- *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A,
-                                                     const SDL_Rect * B);
-
-/**
- *  \brief Calculate the intersection of two rectangles.
- *
- *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A,
-                                                   const SDL_Rect * B,
-                                                   SDL_Rect * result);
-
-/**
- *  \brief Calculate the union of two rectangles.
- */
-extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A,
-                                           const SDL_Rect * B,
-                                           SDL_Rect * result);
-
-/**
- *  \brief Calculate a minimal rectangle enclosing a set of points
- *
- *  \return SDL_TRUE if any points were within the clipping rect
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points,
-                                                   int count,
-                                                   const SDL_Rect * clip,
-                                                   SDL_Rect * result);
-
-/**
- *  \brief Calculate the intersection of a rectangle and line segment.
- *
- *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect *
-                                                          rect, int *X1,
-                                                          int *Y1, int *X2,
-                                                          int *Y2);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_rect_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_render.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_render.h
deleted file mode 100644 (file)
index 096b4a5..0000000
+++ /dev/null
@@ -1,1098 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_render.h
- *
- *  Header file for SDL 2D rendering functions.
- *
- *  This API supports the following features:
- *      * single pixel points
- *      * single pixel lines
- *      * filled rectangles
- *      * texture images
- *
- *  The primitives may be drawn in opaque, blended, or additive modes.
- *
- *  The texture images may be drawn in opaque, blended, or additive modes.
- *  They can have an additional color tint or alpha modulation applied to
- *  them, and may also be stretched with linear interpolation.
- *
- *  This API is designed to accelerate simple 2D operations. You may
- *  want more functionality such as polygons and particle effects and
- *  in that case you should use SDL's OpenGL/Direct3D support or one
- *  of the many good 3D engines.
- *
- *  These functions must be called from the main thread.
- *  See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995
- */
-
-#ifndef SDL_render_h_
-#define SDL_render_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_rect.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Flags used when creating a rendering context
- */
-typedef enum
-{
-    SDL_RENDERER_SOFTWARE = 0x00000001,         /**< The renderer is a software fallback */
-    SDL_RENDERER_ACCELERATED = 0x00000002,      /**< The renderer uses hardware
-                                                     acceleration */
-    SDL_RENDERER_PRESENTVSYNC = 0x00000004,     /**< Present is synchronized
-                                                     with the refresh rate */
-    SDL_RENDERER_TARGETTEXTURE = 0x00000008     /**< The renderer supports
-                                                     rendering to texture */
-} SDL_RendererFlags;
-
-/**
- *  \brief Information on the capabilities of a render driver or context.
- */
-typedef struct SDL_RendererInfo
-{
-    const char *name;           /**< The name of the renderer */
-    Uint32 flags;               /**< Supported ::SDL_RendererFlags */
-    Uint32 num_texture_formats; /**< The number of available texture formats */
-    Uint32 texture_formats[16]; /**< The available texture formats */
-    int max_texture_width;      /**< The maximum texture width */
-    int max_texture_height;     /**< The maximum texture height */
-} SDL_RendererInfo;
-
-/**
- *  \brief The access pattern allowed for a texture.
- */
-typedef enum
-{
-    SDL_TEXTUREACCESS_STATIC,    /**< Changes rarely, not lockable */
-    SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */
-    SDL_TEXTUREACCESS_TARGET     /**< Texture can be used as a render target */
-} SDL_TextureAccess;
-
-/**
- *  \brief The texture channel modulation used in SDL_RenderCopy().
- */
-typedef enum
-{
-    SDL_TEXTUREMODULATE_NONE = 0x00000000,     /**< No modulation */
-    SDL_TEXTUREMODULATE_COLOR = 0x00000001,    /**< srcC = srcC * color */
-    SDL_TEXTUREMODULATE_ALPHA = 0x00000002     /**< srcA = srcA * alpha */
-} SDL_TextureModulate;
-
-/**
- *  \brief Flip constants for SDL_RenderCopyEx
- */
-typedef enum
-{
-    SDL_FLIP_NONE = 0x00000000,     /**< Do not flip */
-    SDL_FLIP_HORIZONTAL = 0x00000001,    /**< flip horizontally */
-    SDL_FLIP_VERTICAL = 0x00000002     /**< flip vertically */
-} SDL_RendererFlip;
-
-/**
- *  \brief A structure representing rendering state
- */
-struct SDL_Renderer;
-typedef struct SDL_Renderer SDL_Renderer;
-
-/**
- *  \brief An efficient driver-specific representation of pixel data
- */
-struct SDL_Texture;
-typedef struct SDL_Texture SDL_Texture;
-
-
-/* Function prototypes */
-
-/**
- *  \brief Get the number of 2D rendering drivers available for the current
- *         display.
- *
- *  A render driver is a set of code that handles rendering and texture
- *  management on a particular display.  Normally there is only one, but
- *  some drivers may have several available with different capabilities.
- *
- *  \sa SDL_GetRenderDriverInfo()
- *  \sa SDL_CreateRenderer()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void);
-
-/**
- *  \brief Get information about a specific 2D rendering driver for the current
- *         display.
- *
- *  \param index The index of the driver to query information about.
- *  \param info  A pointer to an SDL_RendererInfo struct to be filled with
- *               information on the rendering driver.
- *
- *  \return 0 on success, -1 if the index was out of range.
- *
- *  \sa SDL_CreateRenderer()
- */
-extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index,
-                                                    SDL_RendererInfo * info);
-
-/**
- *  \brief Create a window and default renderer
- *
- *  \param width    The width of the window
- *  \param height   The height of the window
- *  \param window_flags The flags used to create the window
- *  \param window   A pointer filled with the window, or NULL on error
- *  \param renderer A pointer filled with the renderer, or NULL on error
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer(
-                                int width, int height, Uint32 window_flags,
-                                SDL_Window **window, SDL_Renderer **renderer);
-
-
-/**
- *  \brief Create a 2D rendering context for a window.
- *
- *  \param window The window where rendering is displayed.
- *  \param index    The index of the rendering driver to initialize, or -1 to
- *                  initialize the first one supporting the requested flags.
- *  \param flags    ::SDL_RendererFlags.
- *
- *  \return A valid rendering context or NULL if there was an error.
- *
- *  \sa SDL_CreateSoftwareRenderer()
- *  \sa SDL_GetRendererInfo()
- *  \sa SDL_DestroyRenderer()
- */
-extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window,
-                                               int index, Uint32 flags);
-
-/**
- *  \brief Create a 2D software rendering context for a surface.
- *
- *  \param surface The surface where rendering is done.
- *
- *  \return A valid rendering context or NULL if there was an error.
- *
- *  \sa SDL_CreateRenderer()
- *  \sa SDL_DestroyRenderer()
- */
-extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface);
-
-/**
- *  \brief Get the renderer associated with a window.
- */
-extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window);
-
-/**
- *  \brief Get information about a rendering context.
- */
-extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer,
-                                                SDL_RendererInfo * info);
-
-/**
- *  \brief Get the output size in pixels of a rendering context.
- */
-extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer,
-                                                      int *w, int *h);
-
-/**
- *  \brief Create a texture for a rendering context.
- *
- *  \param renderer The renderer.
- *  \param format The format of the texture.
- *  \param access One of the enumerated values in ::SDL_TextureAccess.
- *  \param w      The width of the texture in pixels.
- *  \param h      The height of the texture in pixels.
- *
- *  \return The created texture is returned, or NULL if no rendering context was
- *          active,  the format was unsupported, or the width or height were out
- *          of range.
- *
- *  \note The contents of the texture are not defined at creation.
- *
- *  \sa SDL_QueryTexture()
- *  \sa SDL_UpdateTexture()
- *  \sa SDL_DestroyTexture()
- */
-extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer,
-                                                        Uint32 format,
-                                                        int access, int w,
-                                                        int h);
-
-/**
- *  \brief Create a texture from an existing surface.
- *
- *  \param renderer The renderer.
- *  \param surface The surface containing pixel data used to fill the texture.
- *
- *  \return The created texture is returned, or NULL on error.
- *
- *  \note The surface is not modified or freed by this function.
- *
- *  \sa SDL_QueryTexture()
- *  \sa SDL_DestroyTexture()
- */
-extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface);
-
-/**
- *  \brief Query the attributes of a texture
- *
- *  \param texture A texture to be queried.
- *  \param format  A pointer filled in with the raw format of the texture.  The
- *                 actual format may differ, but pixel transfers will use this
- *                 format.
- *  \param access  A pointer filled in with the actual access to the texture.
- *  \param w       A pointer filled in with the width of the texture in pixels.
- *  \param h       A pointer filled in with the height of the texture in pixels.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- */
-extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture,
-                                             Uint32 * format, int *access,
-                                             int *w, int *h);
-
-/**
- *  \brief Set an additional color value used in render copy operations.
- *
- *  \param texture The texture to update.
- *  \param r       The red color value multiplied into copy operations.
- *  \param g       The green color value multiplied into copy operations.
- *  \param b       The blue color value multiplied into copy operations.
- *
- *  \return 0 on success, or -1 if the texture is not valid or color modulation
- *          is not supported.
- *
- *  \sa SDL_GetTextureColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture,
-                                                   Uint8 r, Uint8 g, Uint8 b);
-
-
-/**
- *  \brief Get the additional color value used in render copy operations.
- *
- *  \param texture The texture to query.
- *  \param r         A pointer filled in with the current red color value.
- *  \param g         A pointer filled in with the current green color value.
- *  \param b         A pointer filled in with the current blue color value.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \sa SDL_SetTextureColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture,
-                                                   Uint8 * r, Uint8 * g,
-                                                   Uint8 * b);
-
-/**
- *  \brief Set an additional alpha value used in render copy operations.
- *
- *  \param texture The texture to update.
- *  \param alpha     The alpha value multiplied into copy operations.
- *
- *  \return 0 on success, or -1 if the texture is not valid or alpha modulation
- *          is not supported.
- *
- *  \sa SDL_GetTextureAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture,
-                                                   Uint8 alpha);
-
-/**
- *  \brief Get the additional alpha value used in render copy operations.
- *
- *  \param texture The texture to query.
- *  \param alpha     A pointer filled in with the current alpha value.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \sa SDL_SetTextureAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture,
-                                                   Uint8 * alpha);
-
-/**
- *  \brief Set the blend mode used for texture copy operations.
- *
- *  \param texture The texture to update.
- *  \param blendMode ::SDL_BlendMode to use for texture blending.
- *
- *  \return 0 on success, or -1 if the texture is not valid or the blend mode is
- *          not supported.
- *
- *  \note If the blend mode is not supported, the closest supported mode is
- *        chosen.
- *
- *  \sa SDL_GetTextureBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture,
-                                                    SDL_BlendMode blendMode);
-
-/**
- *  \brief Get the blend mode used for texture copy operations.
- *
- *  \param texture   The texture to query.
- *  \param blendMode A pointer filled in with the current blend mode.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \sa SDL_SetTextureBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture,
-                                                    SDL_BlendMode *blendMode);
-
-/**
- *  \brief Update the given texture rectangle with new pixel data.
- *
- *  \param texture   The texture to update
- *  \param rect      A pointer to the rectangle of pixels to update, or NULL to
- *                   update the entire texture.
- *  \param pixels    The raw pixel data in the format of the texture.
- *  \param pitch     The number of bytes in a row of pixel data, including padding between lines.
- *
- *  The pixel data must be in the format of the texture. The pixel format can be
- *  queried with SDL_QueryTexture.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \note This is a fairly slow function.
- */
-extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture,
-                                              const SDL_Rect * rect,
-                                              const void *pixels, int pitch);
-
-/**
- *  \brief Update a rectangle within a planar YV12 or IYUV texture with new pixel data.
- *
- *  \param texture   The texture to update
- *  \param rect      A pointer to the rectangle of pixels to update, or NULL to
- *                   update the entire texture.
- *  \param Yplane    The raw pixel data for the Y plane.
- *  \param Ypitch    The number of bytes between rows of pixel data for the Y plane.
- *  \param Uplane    The raw pixel data for the U plane.
- *  \param Upitch    The number of bytes between rows of pixel data for the U plane.
- *  \param Vplane    The raw pixel data for the V plane.
- *  \param Vpitch    The number of bytes between rows of pixel data for the V plane.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \note You can use SDL_UpdateTexture() as long as your pixel data is
- *        a contiguous block of Y and U/V planes in the proper order, but
- *        this function is available if your pixel data is not contiguous.
- */
-extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture,
-                                                 const SDL_Rect * rect,
-                                                 const Uint8 *Yplane, int Ypitch,
-                                                 const Uint8 *Uplane, int Upitch,
-                                                 const Uint8 *Vplane, int Vpitch);
-
-/**
- *  \brief Lock a portion of the texture for write-only pixel access.
- *
- *  \param texture   The texture to lock for access, which was created with
- *                   ::SDL_TEXTUREACCESS_STREAMING.
- *  \param rect      A pointer to the rectangle to lock for access. If the rect
- *                   is NULL, the entire texture will be locked.
- *  \param pixels    This is filled in with a pointer to the locked pixels,
- *                   appropriately offset by the locked area.
- *  \param pitch     This is filled in with the pitch of the locked pixels.
- *
- *  \return 0 on success, or -1 if the texture is not valid or was not created with ::SDL_TEXTUREACCESS_STREAMING.
- *
- *  \sa SDL_UnlockTexture()
- */
-extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture,
-                                            const SDL_Rect * rect,
-                                            void **pixels, int *pitch);
-
-/**
- *  \brief Unlock a texture, uploading the changes to video memory, if needed.
- *
- *  \sa SDL_LockTexture()
- */
-extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture);
-
-/**
- * \brief Determines whether a window supports the use of render targets
- *
- * \param renderer The renderer that will be checked
- *
- * \return SDL_TRUE if supported, SDL_FALSE if not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer);
-
-/**
- * \brief Set a texture as the current rendering target.
- *
- * \param renderer The renderer.
- * \param texture The targeted texture, which must be created with the SDL_TEXTUREACCESS_TARGET flag, or NULL for the default render target
- *
- * \return 0 on success, or -1 on error
- *
- *  \sa SDL_GetRenderTarget()
- */
-extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer,
-                                                SDL_Texture *texture);
-
-/**
- * \brief Get the current render target or NULL for the default render target.
- *
- * \return The current render target
- *
- *  \sa SDL_SetRenderTarget()
- */
-extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer);
-
-/**
- *  \brief Set device independent resolution for rendering
- *
- *  \param renderer The renderer for which resolution should be set.
- *  \param w      The width of the logical resolution
- *  \param h      The height of the logical resolution
- *
- *  This function uses the viewport and scaling functionality to allow a fixed logical
- *  resolution for rendering, regardless of the actual output resolution.  If the actual
- *  output resolution doesn't have the same aspect ratio the output rendering will be
- *  centered within the output display.
- *
- *  If the output display is a window, mouse events in the window will be filtered
- *  and scaled so they seem to arrive within the logical resolution.
- *
- *  \note If this function results in scaling or subpixel drawing by the
- *        rendering backend, it will be handled using the appropriate
- *        quality hints.
- *
- *  \sa SDL_RenderGetLogicalSize()
- *  \sa SDL_RenderSetScale()
- *  \sa SDL_RenderSetViewport()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h);
-
-/**
- *  \brief Get device independent resolution for rendering
- *
- *  \param renderer The renderer from which resolution should be queried.
- *  \param w      A pointer filled with the width of the logical resolution
- *  \param h      A pointer filled with the height of the logical resolution
- *
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h);
-
-/**
- *  \brief Set whether to force integer scales for resolution-independent rendering
- *
- *  \param renderer The renderer for which integer scaling should be set.
- *  \param enable   Enable or disable integer scaling
- *
- *  This function restricts the logical viewport to integer values - that is, when
- *  a resolution is between two multiples of a logical size, the viewport size is
- *  rounded down to the lower multiple.
- *
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer,
-                                                      SDL_bool enable);
-
-/**
- *  \brief Get whether integer scales are forced for resolution-independent rendering
- *
- *  \param renderer The renderer from which integer scaling should be queried.
- *
- *  \sa SDL_RenderSetIntegerScale()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer);
-
-/**
- *  \brief Set the drawing area for rendering on the current target.
- *
- *  \param renderer The renderer for which the drawing area should be set.
- *  \param rect The rectangle representing the drawing area, or NULL to set the viewport to the entire target.
- *
- *  The x,y of the viewport rect represents the origin for rendering.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \note If the window associated with the renderer is resized, the viewport is automatically reset.
- *
- *  \sa SDL_RenderGetViewport()
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer,
-                                                  const SDL_Rect * rect);
-
-/**
- *  \brief Get the drawing area for the current target.
- *
- *  \sa SDL_RenderSetViewport()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer,
-                                                   SDL_Rect * rect);
-
-/**
- *  \brief Set the clip rectangle for the current target.
- *
- *  \param renderer The renderer for which clip rectangle should be set.
- *  \param rect   A pointer to the rectangle to set as the clip rectangle, or
- *                NULL to disable clipping.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \sa SDL_RenderGetClipRect()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer,
-                                                  const SDL_Rect * rect);
-
-/**
- *  \brief Get the clip rectangle for the current target.
- *
- *  \param renderer The renderer from which clip rectangle should be queried.
- *  \param rect   A pointer filled in with the current clip rectangle, or
- *                an empty rectangle if clipping is disabled.
- *
- *  \sa SDL_RenderSetClipRect()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer,
-                                                   SDL_Rect * rect);
-
-/**
- *  \brief Get whether clipping is enabled on the given renderer.
- *
- *  \param renderer The renderer from which clip state should be queried.
- *
- *  \sa SDL_RenderGetClipRect()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer);
-
-
-/**
- *  \brief Set the drawing scale for rendering on the current target.
- *
- *  \param renderer The renderer for which the drawing scale should be set.
- *  \param scaleX The horizontal scaling factor
- *  \param scaleY The vertical scaling factor
- *
- *  The drawing coordinates are scaled by the x/y scaling factors
- *  before they are used by the renderer.  This allows resolution
- *  independent drawing with a single coordinate system.
- *
- *  \note If this results in scaling or subpixel drawing by the
- *        rendering backend, it will be handled using the appropriate
- *        quality hints.  For best results use integer scaling factors.
- *
- *  \sa SDL_RenderGetScale()
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer,
-                                               float scaleX, float scaleY);
-
-/**
- *  \brief Get the drawing scale for the current target.
- *
- *  \param renderer The renderer from which drawing scale should be queried.
- *  \param scaleX A pointer filled in with the horizontal scaling factor
- *  \param scaleY A pointer filled in with the vertical scaling factor
- *
- *  \sa SDL_RenderSetScale()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,
-                                               float *scaleX, float *scaleY);
-
-/**
- *  \brief Set the color used for drawing operations (Rect, Line and Clear).
- *
- *  \param renderer The renderer for which drawing color should be set.
- *  \param r The red value used to draw on the rendering target.
- *  \param g The green value used to draw on the rendering target.
- *  \param b The blue value used to draw on the rendering target.
- *  \param a The alpha value used to draw on the rendering target, usually
- *           ::SDL_ALPHA_OPAQUE (255).
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer,
-                                           Uint8 r, Uint8 g, Uint8 b,
-                                           Uint8 a);
-
-/**
- *  \brief Get the color used for drawing operations (Rect, Line and Clear).
- *
- *  \param renderer The renderer from which drawing color should be queried.
- *  \param r A pointer to the red value used to draw on the rendering target.
- *  \param g A pointer to the green value used to draw on the rendering target.
- *  \param b A pointer to the blue value used to draw on the rendering target.
- *  \param a A pointer to the alpha value used to draw on the rendering target,
- *           usually ::SDL_ALPHA_OPAQUE (255).
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer,
-                                           Uint8 * r, Uint8 * g, Uint8 * b,
-                                           Uint8 * a);
-
-/**
- *  \brief Set the blend mode used for drawing operations (Fill and Line).
- *
- *  \param renderer The renderer for which blend mode should be set.
- *  \param blendMode ::SDL_BlendMode to use for blending.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \note If the blend mode is not supported, the closest supported mode is
- *        chosen.
- *
- *  \sa SDL_GetRenderDrawBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer,
-                                                       SDL_BlendMode blendMode);
-
-/**
- *  \brief Get the blend mode used for drawing operations.
- *
- *  \param renderer The renderer from which blend mode should be queried.
- *  \param blendMode A pointer filled in with the current blend mode.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \sa SDL_SetRenderDrawBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer,
-                                                       SDL_BlendMode *blendMode);
-
-/**
- *  \brief Clear the current rendering target with the drawing color
- *
- *  This function clears the entire rendering target, ignoring the viewport and
- *  the clip rectangle.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer);
-
-/**
- *  \brief Draw a point on the current rendering target.
- *
- *  \param renderer The renderer which should draw a point.
- *  \param x The x coordinate of the point.
- *  \param y The y coordinate of the point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer,
-                                                int x, int y);
-
-/**
- *  \brief Draw multiple points on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple points.
- *  \param points The points to draw
- *  \param count The number of points to draw
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer,
-                                                 const SDL_Point * points,
-                                                 int count);
-
-/**
- *  \brief Draw a line on the current rendering target.
- *
- *  \param renderer The renderer which should draw a line.
- *  \param x1 The x coordinate of the start point.
- *  \param y1 The y coordinate of the start point.
- *  \param x2 The x coordinate of the end point.
- *  \param y2 The y coordinate of the end point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer,
-                                               int x1, int y1, int x2, int y2);
-
-/**
- *  \brief Draw a series of connected lines on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple lines.
- *  \param points The points along the lines
- *  \param count The number of points, drawing count-1 lines
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer,
-                                                const SDL_Point * points,
-                                                int count);
-
-/**
- *  \brief Draw a rectangle on the current rendering target.
- *
- *  \param renderer The renderer which should draw a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL to outline the entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer,
-                                               const SDL_Rect * rect);
-
-/**
- *  \brief Draw some number of rectangles on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer,
-                                                const SDL_Rect * rects,
-                                                int count);
-
-/**
- *  \brief Fill a rectangle on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL for the entire
- *              rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer,
-                                               const SDL_Rect * rect);
-
-/**
- *  \brief Fill some number of rectangles on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer,
-                                                const SDL_Rect * rects,
-                                                int count);
-
-/**
- *  \brief Copy a portion of the texture to the current rendering target.
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer,
-                                           SDL_Texture * texture,
-                                           const SDL_Rect * srcrect,
-                                           const SDL_Rect * dstrect);
-
-/**
- *  \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *  \param angle    An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction
- *  \param center   A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2).
- *  \param flip     An SDL_RendererFlip value stating which flipping actions should be performed on the texture
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer,
-                                           SDL_Texture * texture,
-                                           const SDL_Rect * srcrect,
-                                           const SDL_Rect * dstrect,
-                                           const double angle,
-                                           const SDL_Point *center,
-                                           const SDL_RendererFlip flip);
-
-
-/**
- *  \brief Draw a point on the current rendering target.
- *
- *  \param renderer The renderer which should draw a point.
- *  \param x The x coordinate of the point.
- *  \param y The y coordinate of the point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer,
-                                                 float x, float y);
-
-/**
- *  \brief Draw multiple points on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple points.
- *  \param points The points to draw
- *  \param count The number of points to draw
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer,
-                                                  const SDL_FPoint * points,
-                                                  int count);
-
-/**
- *  \brief Draw a line on the current rendering target.
- *
- *  \param renderer The renderer which should draw a line.
- *  \param x1 The x coordinate of the start point.
- *  \param y1 The y coordinate of the start point.
- *  \param x2 The x coordinate of the end point.
- *  \param y2 The y coordinate of the end point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer,
-                                                float x1, float y1, float x2, float y2);
-
-/**
- *  \brief Draw a series of connected lines on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple lines.
- *  \param points The points along the lines
- *  \param count The number of points, drawing count-1 lines
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer,
-                                                const SDL_FPoint * points,
-                                                int count);
-
-/**
- *  \brief Draw a rectangle on the current rendering target.
- *
- *  \param renderer The renderer which should draw a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL to outline the entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer,
-                                               const SDL_FRect * rect);
-
-/**
- *  \brief Draw some number of rectangles on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer,
-                                                 const SDL_FRect * rects,
-                                                 int count);
-
-/**
- *  \brief Fill a rectangle on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL for the entire
- *              rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer,
-                                                const SDL_FRect * rect);
-
-/**
- *  \brief Fill some number of rectangles on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer,
-                                                 const SDL_FRect * rects,
-                                                 int count);
-
-/**
- *  \brief Copy a portion of the texture to the current rendering target.
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer,
-                                            SDL_Texture * texture,
-                                            const SDL_Rect * srcrect,
-                                            const SDL_FRect * dstrect);
-
-/**
- *  \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *  \param angle    An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction
- *  \param center   A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2).
- *  \param flip     An SDL_RendererFlip value stating which flipping actions should be performed on the texture
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer,
-                                            SDL_Texture * texture,
-                                            const SDL_Rect * srcrect,
-                                            const SDL_FRect * dstrect,
-                                            const double angle,
-                                            const SDL_FPoint *center,
-                                            const SDL_RendererFlip flip);
-
-/**
- *  \brief Read pixels from the current rendering target.
- *
- *  \param renderer The renderer from which pixels should be read.
- *  \param rect   A pointer to the rectangle to read, or NULL for the entire
- *                render target.
- *  \param format The desired format of the pixel data, or 0 to use the format
- *                of the rendering target
- *  \param pixels A pointer to be filled in with the pixel data
- *  \param pitch  The pitch of the pixels parameter.
- *
- *  \return 0 on success, or -1 if pixel reading is not supported.
- *
- *  \warning This is a very slow operation, and should not be used frequently.
- */
-extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,
-                                                 const SDL_Rect * rect,
-                                                 Uint32 format,
-                                                 void *pixels, int pitch);
-
-/**
- *  \brief Update the screen with rendering performed.
- */
-extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer);
-
-/**
- *  \brief Destroy the specified texture.
- *
- *  \sa SDL_CreateTexture()
- *  \sa SDL_CreateTextureFromSurface()
- */
-extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture);
-
-/**
- *  \brief Destroy the rendering context for a window and free associated
- *         textures.
- *
- *  \sa SDL_CreateRenderer()
- */
-extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);
-
-/**
- *  \brief Force the rendering context to flush any pending commands to the
- *         underlying rendering API.
- *
- *  You do not need to (and in fact, shouldn't) call this function unless
- *  you are planning to call into OpenGL/Direct3D/Metal/whatever directly
- *  in addition to using an SDL_Renderer.
- *
- *  This is for a very-specific case: if you are using SDL's render API,
- *  you asked for a specific renderer backend (OpenGL, Direct3D, etc),
- *  you set SDL_HINT_RENDER_BATCHING to "1", and you plan to make
- *  OpenGL/D3D/whatever calls in addition to SDL render API calls. If all of
- *  this applies, you should call SDL_RenderFlush() between calls to SDL's
- *  render API and the low-level API you're using in cooperation.
- *
- *  In all other cases, you can ignore this function. This is only here to
- *  get maximum performance out of a specific situation. In all other cases,
- *  SDL will do the right thing, perhaps at a performance loss.
- *
- *  This function is first available in SDL 2.0.10, and is not needed in
- *  2.0.9 and earlier, as earlier versions did not queue rendering commands
- *  at all, instead flushing them to the OS immediately.
- */
-extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer);
-
-
-/**
- *  \brief Bind the texture to the current OpenGL/ES/ES2 context for use with
- *         OpenGL instructions.
- *
- *  \param texture  The SDL texture to bind
- *  \param texw     A pointer to a float that will be filled with the texture width
- *  \param texh     A pointer to a float that will be filled with the texture height
- *
- *  \return 0 on success, or -1 if the operation is not supported
- */
-extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh);
-
-/**
- *  \brief Unbind a texture from the current OpenGL/ES/ES2 context.
- *
- *  \param texture  The SDL texture to unbind
- *
- *  \return 0 on success, or -1 if the operation is not supported
- */
-extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture);
-
-/**
- *  \brief Get the CAMetalLayer associated with the given Metal renderer
- *
- *  \param renderer The renderer to query
- *
- *  \return CAMetalLayer* on success, or NULL if the renderer isn't a Metal renderer
- *
- *  \sa SDL_RenderGetMetalCommandEncoder()
- */
-extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);
-
-/**
- *  \brief Get the Metal command encoder for the current frame
- *
- *  \param renderer The renderer to query
- *
- *  \return id<MTLRenderCommandEncoder> on success, or NULL if the renderer isn't a Metal renderer
- *
- *  \sa SDL_RenderGetMetalLayer()
- */
-extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_render_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_revision.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_revision.h
deleted file mode 100644 (file)
index 3b3fc85..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#define SDL_REVISION "hg-12952:bc90ce38f1e2"
-#define SDL_REVISION_NUMBER 12952
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_rwops.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_rwops.h
deleted file mode 100644 (file)
index f66119f..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_rwops.h
- *
- *  This file provides a general interface for SDL to read and write
- *  data streams.  It can easily be extended to files, memory, etc.
- */
-
-#ifndef SDL_rwops_h_
-#define SDL_rwops_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* RWops Types */
-#define SDL_RWOPS_UNKNOWN   0U  /**< Unknown stream type */
-#define SDL_RWOPS_WINFILE   1U  /**< Win32 file */
-#define SDL_RWOPS_STDFILE   2U  /**< Stdio file */
-#define SDL_RWOPS_JNIFILE   3U  /**< Android asset */
-#define SDL_RWOPS_MEMORY    4U  /**< Memory stream */
-#define SDL_RWOPS_MEMORY_RO 5U  /**< Read-Only memory stream */
-
-/**
- * This is the read/write operation structure -- very basic.
- */
-typedef struct SDL_RWops
-{
-    /**
-     *  Return the size of the file in this rwops, or -1 if unknown
-     */
-    Sint64 (SDLCALL * size) (struct SDL_RWops * context);
-
-    /**
-     *  Seek to \c offset relative to \c whence, one of stdio's whence values:
-     *  RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
-     *
-     *  \return the final offset in the data stream, or -1 on error.
-     */
-    Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset,
-                             int whence);
-
-    /**
-     *  Read up to \c maxnum objects each of size \c size from the data
-     *  stream to the area pointed at by \c ptr.
-     *
-     *  \return the number of objects read, or 0 at error or end of file.
-     */
-    size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr,
-                             size_t size, size_t maxnum);
-
-    /**
-     *  Write exactly \c num objects each of size \c size from the area
-     *  pointed at by \c ptr to data stream.
-     *
-     *  \return the number of objects written, or 0 at error or end of file.
-     */
-    size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr,
-                              size_t size, size_t num);
-
-    /**
-     *  Close and free an allocated SDL_RWops structure.
-     *
-     *  \return 0 if successful or -1 on write error when flushing data.
-     */
-    int (SDLCALL * close) (struct SDL_RWops * context);
-
-    Uint32 type;
-    union
-    {
-#if defined(__ANDROID__)
-        struct
-        {
-            void *fileNameRef;
-            void *inputStreamRef;
-            void *readableByteChannelRef;
-            void *readMethod;
-            void *assetFileDescriptorRef;
-            long position;
-            long size;
-            long offset;
-            int fd;
-        } androidio;
-#elif defined(__WIN32__)
-        struct
-        {
-            SDL_bool append;
-            void *h;
-            struct
-            {
-                void *data;
-                size_t size;
-                size_t left;
-            } buffer;
-        } windowsio;
-#endif
-
-#ifdef HAVE_STDIO_H
-        struct
-        {
-            SDL_bool autoclose;
-            FILE *fp;
-        } stdio;
-#endif
-        struct
-        {
-            Uint8 *base;
-            Uint8 *here;
-            Uint8 *stop;
-        } mem;
-        struct
-        {
-            void *data1;
-            void *data2;
-        } unknown;
-    } hidden;
-
-} SDL_RWops;
-
-
-/**
- *  \name RWFrom functions
- *
- *  Functions to create SDL_RWops structures from various data streams.
- */
-/* @{ */
-
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file,
-                                                  const char *mode);
-
-#ifdef HAVE_STDIO_H
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp,
-                                                SDL_bool autoclose);
-#else
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp,
-                                                SDL_bool autoclose);
-#endif
-
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size);
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem,
-                                                      int size);
-
-/* @} *//* RWFrom functions */
-
-
-extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void);
-extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area);
-
-#define RW_SEEK_SET 0       /**< Seek from the beginning of data */
-#define RW_SEEK_CUR 1       /**< Seek relative to current read point */
-#define RW_SEEK_END 2       /**< Seek relative to the end of data */
-
-/**
- *  Return the size of the file in this rwops, or -1 if unknown
- */
-extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context);
-
-/**
- *  Seek to \c offset relative to \c whence, one of stdio's whence values:
- *  RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
- *
- *  \return the final offset in the data stream, or -1 on error.
- */
-extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context,
-                                          Sint64 offset, int whence);
-
-/**
- *  Return the current offset in the data stream, or -1 on error.
- */
-extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context);
-
-/**
- *  Read up to \c maxnum objects each of size \c size from the data
- *  stream to the area pointed at by \c ptr.
- *
- *  \return the number of objects read, or 0 at error or end of file.
- */
-extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context,
-                                          void *ptr, size_t size, size_t maxnum);
-
-/**
- *  Write exactly \c num objects each of size \c size from the area
- *  pointed at by \c ptr to data stream.
- *
- *  \return the number of objects written, or 0 at error or end of file.
- */
-extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context,
-                                           const void *ptr, size_t size, size_t num);
-
-/**
- *  Close and free an allocated SDL_RWops structure.
- *
- *  \return 0 if successful or -1 on write error when flushing data.
- */
-extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context);
-
-/**
- *  Load all the data from an SDL data stream.
- *
- *  The data is allocated with a zero byte at the end (null terminated)
- *
- *  If \c datasize is not NULL, it is filled with the size of the data read.
- *
- *  If \c freesrc is non-zero, the stream will be closed after being read.
- *
- *  The data should be freed with SDL_free().
- *
- *  \return the data, or NULL if there was an error.
- */
-extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops * src, size_t *datasize,
-                                                    int freesrc);
-
-/**
- *  Load an entire file.
- *
- *  The data is allocated with a zero byte at the end (null terminated)
- *
- *  If \c datasize is not NULL, it is filled with the size of the data read.
- *
- *  If \c freesrc is non-zero, the stream will be closed after being read.
- *
- *  The data should be freed with SDL_free().
- *
- *  \return the data, or NULL if there was an error.
- */
-extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize);
-
-/**
- *  \name Read endian functions
- *
- *  Read an item of the specified endianness and return in native format.
- */
-/* @{ */
-extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src);
-extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src);
-extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src);
-extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src);
-extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src);
-extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src);
-extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src);
-/* @} *//* Read endian functions */
-
-/**
- *  \name Write endian functions
- *
- *  Write an item of native format to the specified endianness.
- */
-/* @{ */
-extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value);
-/* @} *//* Write endian functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_rwops_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_scancode.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_scancode.h
deleted file mode 100644 (file)
index a50305f..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_scancode.h
- *
- *  Defines keyboard scancodes.
- */
-
-#ifndef SDL_scancode_h_
-#define SDL_scancode_h_
-
-#include "SDL_stdinc.h"
-
-/**
- *  \brief The SDL keyboard scancode representation.
- *
- *  Values of this type are used to represent keyboard keys, among other places
- *  in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the
- *  SDL_Event structure.
- *
- *  The values in this enumeration are based on the USB usage page standard:
- *  https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
- */
-typedef enum
-{
-    SDL_SCANCODE_UNKNOWN = 0,
-
-    /**
-     *  \name Usage page 0x07
-     *
-     *  These values are from usage page 0x07 (USB keyboard page).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_A = 4,
-    SDL_SCANCODE_B = 5,
-    SDL_SCANCODE_C = 6,
-    SDL_SCANCODE_D = 7,
-    SDL_SCANCODE_E = 8,
-    SDL_SCANCODE_F = 9,
-    SDL_SCANCODE_G = 10,
-    SDL_SCANCODE_H = 11,
-    SDL_SCANCODE_I = 12,
-    SDL_SCANCODE_J = 13,
-    SDL_SCANCODE_K = 14,
-    SDL_SCANCODE_L = 15,
-    SDL_SCANCODE_M = 16,
-    SDL_SCANCODE_N = 17,
-    SDL_SCANCODE_O = 18,
-    SDL_SCANCODE_P = 19,
-    SDL_SCANCODE_Q = 20,
-    SDL_SCANCODE_R = 21,
-    SDL_SCANCODE_S = 22,
-    SDL_SCANCODE_T = 23,
-    SDL_SCANCODE_U = 24,
-    SDL_SCANCODE_V = 25,
-    SDL_SCANCODE_W = 26,
-    SDL_SCANCODE_X = 27,
-    SDL_SCANCODE_Y = 28,
-    SDL_SCANCODE_Z = 29,
-
-    SDL_SCANCODE_1 = 30,
-    SDL_SCANCODE_2 = 31,
-    SDL_SCANCODE_3 = 32,
-    SDL_SCANCODE_4 = 33,
-    SDL_SCANCODE_5 = 34,
-    SDL_SCANCODE_6 = 35,
-    SDL_SCANCODE_7 = 36,
-    SDL_SCANCODE_8 = 37,
-    SDL_SCANCODE_9 = 38,
-    SDL_SCANCODE_0 = 39,
-
-    SDL_SCANCODE_RETURN = 40,
-    SDL_SCANCODE_ESCAPE = 41,
-    SDL_SCANCODE_BACKSPACE = 42,
-    SDL_SCANCODE_TAB = 43,
-    SDL_SCANCODE_SPACE = 44,
-
-    SDL_SCANCODE_MINUS = 45,
-    SDL_SCANCODE_EQUALS = 46,
-    SDL_SCANCODE_LEFTBRACKET = 47,
-    SDL_SCANCODE_RIGHTBRACKET = 48,
-    SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return
-                                  *   key on ISO keyboards and at the right end
-                                  *   of the QWERTY row on ANSI keyboards.
-                                  *   Produces REVERSE SOLIDUS (backslash) and
-                                  *   VERTICAL LINE in a US layout, REVERSE
-                                  *   SOLIDUS and VERTICAL LINE in a UK Mac
-                                  *   layout, NUMBER SIGN and TILDE in a UK
-                                  *   Windows layout, DOLLAR SIGN and POUND SIGN
-                                  *   in a Swiss German layout, NUMBER SIGN and
-                                  *   APOSTROPHE in a German layout, GRAVE
-                                  *   ACCENT and POUND SIGN in a French Mac
-                                  *   layout, and ASTERISK and MICRO SIGN in a
-                                  *   French Windows layout.
-                                  */
-    SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code
-                                  *   instead of 49 for the same key, but all
-                                  *   OSes I've seen treat the two codes
-                                  *   identically. So, as an implementor, unless
-                                  *   your keyboard generates both of those
-                                  *   codes and your OS treats them differently,
-                                  *   you should generate SDL_SCANCODE_BACKSLASH
-                                  *   instead of this code. As a user, you
-                                  *   should not rely on this code because SDL
-                                  *   will never generate it with most (all?)
-                                  *   keyboards.
-                                  */
-    SDL_SCANCODE_SEMICOLON = 51,
-    SDL_SCANCODE_APOSTROPHE = 52,
-    SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI
-                              *   and ISO keyboards). Produces GRAVE ACCENT and
-                              *   TILDE in a US Windows layout and in US and UK
-                              *   Mac layouts on ANSI keyboards, GRAVE ACCENT
-                              *   and NOT SIGN in a UK Windows layout, SECTION
-                              *   SIGN and PLUS-MINUS SIGN in US and UK Mac
-                              *   layouts on ISO keyboards, SECTION SIGN and
-                              *   DEGREE SIGN in a Swiss German layout (Mac:
-                              *   only on ISO keyboards), CIRCUMFLEX ACCENT and
-                              *   DEGREE SIGN in a German layout (Mac: only on
-                              *   ISO keyboards), SUPERSCRIPT TWO and TILDE in a
-                              *   French Windows layout, COMMERCIAL AT and
-                              *   NUMBER SIGN in a French Mac layout on ISO
-                              *   keyboards, and LESS-THAN SIGN and GREATER-THAN
-                              *   SIGN in a Swiss German, German, or French Mac
-                              *   layout on ANSI keyboards.
-                              */
-    SDL_SCANCODE_COMMA = 54,
-    SDL_SCANCODE_PERIOD = 55,
-    SDL_SCANCODE_SLASH = 56,
-
-    SDL_SCANCODE_CAPSLOCK = 57,
-
-    SDL_SCANCODE_F1 = 58,
-    SDL_SCANCODE_F2 = 59,
-    SDL_SCANCODE_F3 = 60,
-    SDL_SCANCODE_F4 = 61,
-    SDL_SCANCODE_F5 = 62,
-    SDL_SCANCODE_F6 = 63,
-    SDL_SCANCODE_F7 = 64,
-    SDL_SCANCODE_F8 = 65,
-    SDL_SCANCODE_F9 = 66,
-    SDL_SCANCODE_F10 = 67,
-    SDL_SCANCODE_F11 = 68,
-    SDL_SCANCODE_F12 = 69,
-
-    SDL_SCANCODE_PRINTSCREEN = 70,
-    SDL_SCANCODE_SCROLLLOCK = 71,
-    SDL_SCANCODE_PAUSE = 72,
-    SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but
-                                   does send code 73, not 117) */
-    SDL_SCANCODE_HOME = 74,
-    SDL_SCANCODE_PAGEUP = 75,
-    SDL_SCANCODE_DELETE = 76,
-    SDL_SCANCODE_END = 77,
-    SDL_SCANCODE_PAGEDOWN = 78,
-    SDL_SCANCODE_RIGHT = 79,
-    SDL_SCANCODE_LEFT = 80,
-    SDL_SCANCODE_DOWN = 81,
-    SDL_SCANCODE_UP = 82,
-
-    SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards
-                                     */
-    SDL_SCANCODE_KP_DIVIDE = 84,
-    SDL_SCANCODE_KP_MULTIPLY = 85,
-    SDL_SCANCODE_KP_MINUS = 86,
-    SDL_SCANCODE_KP_PLUS = 87,
-    SDL_SCANCODE_KP_ENTER = 88,
-    SDL_SCANCODE_KP_1 = 89,
-    SDL_SCANCODE_KP_2 = 90,
-    SDL_SCANCODE_KP_3 = 91,
-    SDL_SCANCODE_KP_4 = 92,
-    SDL_SCANCODE_KP_5 = 93,
-    SDL_SCANCODE_KP_6 = 94,
-    SDL_SCANCODE_KP_7 = 95,
-    SDL_SCANCODE_KP_8 = 96,
-    SDL_SCANCODE_KP_9 = 97,
-    SDL_SCANCODE_KP_0 = 98,
-    SDL_SCANCODE_KP_PERIOD = 99,
-
-    SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO
-                                        *   keyboards have over ANSI ones,
-                                        *   located between left shift and Y.
-                                        *   Produces GRAVE ACCENT and TILDE in a
-                                        *   US or UK Mac layout, REVERSE SOLIDUS
-                                        *   (backslash) and VERTICAL LINE in a
-                                        *   US or UK Windows layout, and
-                                        *   LESS-THAN SIGN and GREATER-THAN SIGN
-                                        *   in a Swiss German, German, or French
-                                        *   layout. */
-    SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */
-    SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag,
-                               *   not a physical key - but some Mac keyboards
-                               *   do have a power key. */
-    SDL_SCANCODE_KP_EQUALS = 103,
-    SDL_SCANCODE_F13 = 104,
-    SDL_SCANCODE_F14 = 105,
-    SDL_SCANCODE_F15 = 106,
-    SDL_SCANCODE_F16 = 107,
-    SDL_SCANCODE_F17 = 108,
-    SDL_SCANCODE_F18 = 109,
-    SDL_SCANCODE_F19 = 110,
-    SDL_SCANCODE_F20 = 111,
-    SDL_SCANCODE_F21 = 112,
-    SDL_SCANCODE_F22 = 113,
-    SDL_SCANCODE_F23 = 114,
-    SDL_SCANCODE_F24 = 115,
-    SDL_SCANCODE_EXECUTE = 116,
-    SDL_SCANCODE_HELP = 117,
-    SDL_SCANCODE_MENU = 118,
-    SDL_SCANCODE_SELECT = 119,
-    SDL_SCANCODE_STOP = 120,
-    SDL_SCANCODE_AGAIN = 121,   /**< redo */
-    SDL_SCANCODE_UNDO = 122,
-    SDL_SCANCODE_CUT = 123,
-    SDL_SCANCODE_COPY = 124,
-    SDL_SCANCODE_PASTE = 125,
-    SDL_SCANCODE_FIND = 126,
-    SDL_SCANCODE_MUTE = 127,
-    SDL_SCANCODE_VOLUMEUP = 128,
-    SDL_SCANCODE_VOLUMEDOWN = 129,
-/* not sure whether there's a reason to enable these */
-/*     SDL_SCANCODE_LOCKINGCAPSLOCK = 130,  */
-/*     SDL_SCANCODE_LOCKINGNUMLOCK = 131, */
-/*     SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */
-    SDL_SCANCODE_KP_COMMA = 133,
-    SDL_SCANCODE_KP_EQUALSAS400 = 134,
-
-    SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see
-                                            footnotes in USB doc */
-    SDL_SCANCODE_INTERNATIONAL2 = 136,
-    SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */
-    SDL_SCANCODE_INTERNATIONAL4 = 138,
-    SDL_SCANCODE_INTERNATIONAL5 = 139,
-    SDL_SCANCODE_INTERNATIONAL6 = 140,
-    SDL_SCANCODE_INTERNATIONAL7 = 141,
-    SDL_SCANCODE_INTERNATIONAL8 = 142,
-    SDL_SCANCODE_INTERNATIONAL9 = 143,
-    SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */
-    SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */
-    SDL_SCANCODE_LANG3 = 146, /**< Katakana */
-    SDL_SCANCODE_LANG4 = 147, /**< Hiragana */
-    SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */
-    SDL_SCANCODE_LANG6 = 149, /**< reserved */
-    SDL_SCANCODE_LANG7 = 150, /**< reserved */
-    SDL_SCANCODE_LANG8 = 151, /**< reserved */
-    SDL_SCANCODE_LANG9 = 152, /**< reserved */
-
-    SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */
-    SDL_SCANCODE_SYSREQ = 154,
-    SDL_SCANCODE_CANCEL = 155,
-    SDL_SCANCODE_CLEAR = 156,
-    SDL_SCANCODE_PRIOR = 157,
-    SDL_SCANCODE_RETURN2 = 158,
-    SDL_SCANCODE_SEPARATOR = 159,
-    SDL_SCANCODE_OUT = 160,
-    SDL_SCANCODE_OPER = 161,
-    SDL_SCANCODE_CLEARAGAIN = 162,
-    SDL_SCANCODE_CRSEL = 163,
-    SDL_SCANCODE_EXSEL = 164,
-
-    SDL_SCANCODE_KP_00 = 176,
-    SDL_SCANCODE_KP_000 = 177,
-    SDL_SCANCODE_THOUSANDSSEPARATOR = 178,
-    SDL_SCANCODE_DECIMALSEPARATOR = 179,
-    SDL_SCANCODE_CURRENCYUNIT = 180,
-    SDL_SCANCODE_CURRENCYSUBUNIT = 181,
-    SDL_SCANCODE_KP_LEFTPAREN = 182,
-    SDL_SCANCODE_KP_RIGHTPAREN = 183,
-    SDL_SCANCODE_KP_LEFTBRACE = 184,
-    SDL_SCANCODE_KP_RIGHTBRACE = 185,
-    SDL_SCANCODE_KP_TAB = 186,
-    SDL_SCANCODE_KP_BACKSPACE = 187,
-    SDL_SCANCODE_KP_A = 188,
-    SDL_SCANCODE_KP_B = 189,
-    SDL_SCANCODE_KP_C = 190,
-    SDL_SCANCODE_KP_D = 191,
-    SDL_SCANCODE_KP_E = 192,
-    SDL_SCANCODE_KP_F = 193,
-    SDL_SCANCODE_KP_XOR = 194,
-    SDL_SCANCODE_KP_POWER = 195,
-    SDL_SCANCODE_KP_PERCENT = 196,
-    SDL_SCANCODE_KP_LESS = 197,
-    SDL_SCANCODE_KP_GREATER = 198,
-    SDL_SCANCODE_KP_AMPERSAND = 199,
-    SDL_SCANCODE_KP_DBLAMPERSAND = 200,
-    SDL_SCANCODE_KP_VERTICALBAR = 201,
-    SDL_SCANCODE_KP_DBLVERTICALBAR = 202,
-    SDL_SCANCODE_KP_COLON = 203,
-    SDL_SCANCODE_KP_HASH = 204,
-    SDL_SCANCODE_KP_SPACE = 205,
-    SDL_SCANCODE_KP_AT = 206,
-    SDL_SCANCODE_KP_EXCLAM = 207,
-    SDL_SCANCODE_KP_MEMSTORE = 208,
-    SDL_SCANCODE_KP_MEMRECALL = 209,
-    SDL_SCANCODE_KP_MEMCLEAR = 210,
-    SDL_SCANCODE_KP_MEMADD = 211,
-    SDL_SCANCODE_KP_MEMSUBTRACT = 212,
-    SDL_SCANCODE_KP_MEMMULTIPLY = 213,
-    SDL_SCANCODE_KP_MEMDIVIDE = 214,
-    SDL_SCANCODE_KP_PLUSMINUS = 215,
-    SDL_SCANCODE_KP_CLEAR = 216,
-    SDL_SCANCODE_KP_CLEARENTRY = 217,
-    SDL_SCANCODE_KP_BINARY = 218,
-    SDL_SCANCODE_KP_OCTAL = 219,
-    SDL_SCANCODE_KP_DECIMAL = 220,
-    SDL_SCANCODE_KP_HEXADECIMAL = 221,
-
-    SDL_SCANCODE_LCTRL = 224,
-    SDL_SCANCODE_LSHIFT = 225,
-    SDL_SCANCODE_LALT = 226, /**< alt, option */
-    SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */
-    SDL_SCANCODE_RCTRL = 228,
-    SDL_SCANCODE_RSHIFT = 229,
-    SDL_SCANCODE_RALT = 230, /**< alt gr, option */
-    SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */
-
-    SDL_SCANCODE_MODE = 257,    /**< I'm not sure if this is really not covered
-                                 *   by any of the above, but since there's a
-                                 *   special KMOD_MODE for it I'm adding it here
-                                 */
-
-    /* @} *//* Usage page 0x07 */
-
-    /**
-     *  \name Usage page 0x0C
-     *
-     *  These values are mapped from usage page 0x0C (USB consumer page).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_AUDIONEXT = 258,
-    SDL_SCANCODE_AUDIOPREV = 259,
-    SDL_SCANCODE_AUDIOSTOP = 260,
-    SDL_SCANCODE_AUDIOPLAY = 261,
-    SDL_SCANCODE_AUDIOMUTE = 262,
-    SDL_SCANCODE_MEDIASELECT = 263,
-    SDL_SCANCODE_WWW = 264,
-    SDL_SCANCODE_MAIL = 265,
-    SDL_SCANCODE_CALCULATOR = 266,
-    SDL_SCANCODE_COMPUTER = 267,
-    SDL_SCANCODE_AC_SEARCH = 268,
-    SDL_SCANCODE_AC_HOME = 269,
-    SDL_SCANCODE_AC_BACK = 270,
-    SDL_SCANCODE_AC_FORWARD = 271,
-    SDL_SCANCODE_AC_STOP = 272,
-    SDL_SCANCODE_AC_REFRESH = 273,
-    SDL_SCANCODE_AC_BOOKMARKS = 274,
-
-    /* @} *//* Usage page 0x0C */
-
-    /**
-     *  \name Walther keys
-     *
-     *  These are values that Christian Walther added (for mac keyboard?).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_BRIGHTNESSDOWN = 275,
-    SDL_SCANCODE_BRIGHTNESSUP = 276,
-    SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display
-                                           switch, video mode switch */
-    SDL_SCANCODE_KBDILLUMTOGGLE = 278,
-    SDL_SCANCODE_KBDILLUMDOWN = 279,
-    SDL_SCANCODE_KBDILLUMUP = 280,
-    SDL_SCANCODE_EJECT = 281,
-    SDL_SCANCODE_SLEEP = 282,
-
-    SDL_SCANCODE_APP1 = 283,
-    SDL_SCANCODE_APP2 = 284,
-
-    /* @} *//* Walther keys */
-
-    /**
-     *  \name Usage page 0x0C (additional media keys)
-     *
-     *  These values are mapped from usage page 0x0C (USB consumer page).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_AUDIOREWIND = 285,
-    SDL_SCANCODE_AUDIOFASTFORWARD = 286,
-
-    /* @} *//* Usage page 0x0C (additional media keys) */
-
-    /* Add any other keys here. */
-
-    SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes
-                                 for array bounds */
-} SDL_Scancode;
-
-#endif /* SDL_scancode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_sensor.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_sensor.h
deleted file mode 100644 (file)
index 966adbf..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_sensor.h
- *
- *  Include file for SDL sensor event handling
- *
- */
-
-#ifndef SDL_sensor_h_
-#define SDL_sensor_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-/**
- *  \brief SDL_sensor.h
- *
- *  In order to use these functions, SDL_Init() must have been called
- *  with the ::SDL_INIT_SENSOR flag.  This causes SDL to scan the system
- *  for sensors, and load appropriate drivers.
- */
-
-struct _SDL_Sensor;
-typedef struct _SDL_Sensor SDL_Sensor;
-
-/**
- * This is a unique ID for a sensor for the time it is connected to the system,
- * and is never reused for the lifetime of the application.
- *
- * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
- */
-typedef Sint32 SDL_SensorID;
-
-/* The different sensors defined by SDL
- *
- * Additional sensors may be available, using platform dependent semantics.
- *
- * Hare are the additional Android sensors:
- * https://developer.android.com/reference/android/hardware/SensorEvent.html#values
- */
-typedef enum
-{
-    SDL_SENSOR_INVALID = -1,    /**< Returned for an invalid sensor */
-    SDL_SENSOR_UNKNOWN,         /**< Unknown sensor type */
-    SDL_SENSOR_ACCEL,           /**< Accelerometer */
-    SDL_SENSOR_GYRO             /**< Gyroscope */
-} SDL_SensorType;
-
-/**
- * Accelerometer sensor
- *
- * The accelerometer returns the current acceleration in SI meters per
- * second squared. This includes gravity, so a device at rest will have
- * an acceleration of SDL_STANDARD_GRAVITY straight down.
- *
- * values[0]: Acceleration on the x axis
- * values[1]: Acceleration on the y axis
- * values[2]: Acceleration on the z axis
- *
- * For phones held in portrait mode, the axes are defined as follows:
- * -X ... +X : left ... right
- * -Y ... +Y : bottom ... top
- * -Z ... +Z : farther ... closer
- * 
- * The axis data is not changed when the phone is rotated.
- *
- * \sa SDL_GetDisplayOrientation()
- */
-#define SDL_STANDARD_GRAVITY    9.80665f
-
-/**
- * Gyroscope sensor
- *
- * The gyroscope returns the current rate of rotation in radians per second.
- * The rotation is positive in the counter-clockwise direction. That is,
- * an observer looking from a positive location on one of the axes would
- * see positive rotation on that axis when it appeared to be rotating
- * counter-clockwise.
- *
- * values[0]: Angular speed around the x axis
- * values[1]: Angular speed around the y axis
- * values[2]: Angular speed around the z axis
- *
- * For phones held in portrait mode, the axes are defined as follows:
- * -X ... +X : left ... right
- * -Y ... +Y : bottom ... top
- * -Z ... +Z : farther ... closer
- * 
- * The axis data is not changed when the phone is rotated.
- *
- * \sa SDL_GetDisplayOrientation()
- */
-
-/* Function prototypes */
-
-/**
- *  \brief Count the number of sensors attached to the system right now
- */
-extern DECLSPEC int SDLCALL SDL_NumSensors(void);
-
-/**
- *  \brief Get the implementation dependent name of a sensor.
- *
- *  This can be called before any sensors are opened.
- * 
- *  \return The sensor name, or NULL if device_index is out of range.
- */
-extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
-
-/**
- *  \brief Get the type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor type, or SDL_SENSOR_INVALID if device_index is out of range.
- */
-extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index);
-
-/**
- *  \brief Get the platform dependent type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor platform dependent type, or -1 if device_index is out of range.
- */
-extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index);
-
-/**
- *  \brief Get the instance ID of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor instance ID, or -1 if device_index is out of range.
- */
-extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index);
-
-/**
- *  \brief Open a sensor for use.
- *
- *  The index passed as an argument refers to the N'th sensor on the system.
- *
- *  \return A sensor identifier, or NULL if an error occurred.
- */
-extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
-
-/**
- * Return the SDL_Sensor associated with an instance id.
- */
-extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id);
-
-/**
- *  \brief Get the implementation dependent name of a sensor.
- *
- *  \return The sensor name, or NULL if the sensor is NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
-
-/**
- *  \brief Get the type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor type, or SDL_SENSOR_INVALID if the sensor is NULL.
- */
-extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
-
-/**
- *  \brief Get the platform dependent type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor platform dependent type, or -1 if the sensor is NULL.
- */
-extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
-
-/**
- *  \brief Get the instance ID of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor instance ID, or -1 if the sensor is NULL.
- */
-extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor);
-
-/**
- *  Get the current state of an opened sensor.
- *
- *  The number of values and interpretation of the data is sensor dependent.
- *
- *  \param sensor The sensor to query
- *  \param data A pointer filled with the current sensor state
- *  \param num_values The number of values to write to data
- *
- *  \return 0 or -1 if an error occurred.
- */
-extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor * sensor, float *data, int num_values);
-
-/**
- *  Close a sensor previously opened with SDL_SensorOpen()
- */
-extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor * sensor);
-
-/**
- *  Update the current state of the open sensors.
- *
- *  This is called automatically by the event loop if sensor events are enabled.
- *
- *  This needs to be called from the thread that initialized the sensor subsystem.
- */
-extern DECLSPEC void SDLCALL SDL_SensorUpdate(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-#include "close_code.h"
-
-#endif /* SDL_sensor_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_shape.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_shape.h
deleted file mode 100644 (file)
index 2ab43fc..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_shape_h_
-#define SDL_shape_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_pixels.h"
-#include "SDL_rect.h"
-#include "SDL_surface.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** \file SDL_shape.h
- *
- * Header file for the shaped window API.
- */
-
-#define SDL_NONSHAPEABLE_WINDOW -1
-#define SDL_INVALID_SHAPE_ARGUMENT -2
-#define SDL_WINDOW_LACKS_SHAPE -3
-
-/**
- *  \brief Create a window that can be shaped with the specified position, dimensions, and flags.
- *
- *  \param title The title of the window, in UTF-8 encoding.
- *  \param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param w     The width of the window.
- *  \param h     The height of the window.
- *  \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with any of the following:
- *               ::SDL_WINDOW_OPENGL,     ::SDL_WINDOW_INPUT_GRABBED,
- *               ::SDL_WINDOW_HIDDEN,     ::SDL_WINDOW_RESIZABLE,
- *               ::SDL_WINDOW_MAXIMIZED,  ::SDL_WINDOW_MINIMIZED,
- *       ::SDL_WINDOW_BORDERLESS is always set, and ::SDL_WINDOW_FULLSCREEN is always unset.
- *
- *  \return The window created, or NULL if window creation failed.
- *
- *  \sa SDL_DestroyWindow()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags);
-
-/**
- * \brief Return whether the given window is a shaped window.
- *
- * \param window The window to query for being shaped.
- *
- * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if the window is unshaped or NULL.
- *
- * \sa SDL_CreateShapedWindow
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window);
-
-/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */
-typedef enum {
-    /** \brief The default mode, a binarized alpha cutoff of 1. */
-    ShapeModeDefault,
-    /** \brief A binarized alpha cutoff with a given integer value. */
-    ShapeModeBinarizeAlpha,
-    /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */
-    ShapeModeReverseBinarizeAlpha,
-    /** \brief A color key is applied. */
-    ShapeModeColorKey
-} WindowShapeMode;
-
-#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha)
-
-/** \brief A union containing parameters for shaped windows. */
-typedef union {
-    /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */
-    Uint8 binarizationCutoff;
-    SDL_Color colorKey;
-} SDL_WindowShapeParams;
-
-/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */
-typedef struct SDL_WindowShapeMode {
-    /** \brief The mode of these window-shape parameters. */
-    WindowShapeMode mode;
-    /** \brief Window-shape parameters. */
-    SDL_WindowShapeParams parameters;
-} SDL_WindowShapeMode;
-
-/**
- * \brief Set the shape and parameters of a shaped window.
- *
- * \param window The shaped window whose parameters should be set.
- * \param shape A surface encoding the desired shape for the window.
- * \param shape_mode The parameters to set for the shaped window.
- *
- * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape argument, or SDL_NONSHAPEABLE_WINDOW
- *           if the SDL_Window given does not reference a valid shaped window.
- *
- * \sa SDL_WindowShapeMode
- * \sa SDL_GetShapedWindowMode.
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode);
-
-/**
- * \brief Get the shape parameters of a shaped window.
- *
- * \param window The shaped window whose parameters should be retrieved.
- * \param shape_mode An empty shape-mode structure to fill, or NULL to check whether the window has a shape.
- *
- * \return 0 if the window has a shape and, provided shape_mode was not NULL, shape_mode has been filled with the mode
- *           data, SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped window, or SDL_WINDOW_LACKS_SHAPE if
- *           the SDL_Window given is a shapeable window currently lacking a shape.
- *
- * \sa SDL_WindowShapeMode
- * \sa SDL_SetWindowShape
- */
-extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_shape_h_ */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_stdinc.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_stdinc.h
deleted file mode 100644 (file)
index 28bb7b9..0000000
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_stdinc.h
- *
- *  This is a general header that includes C language support.
- */
-
-#ifndef SDL_stdinc_h_
-#define SDL_stdinc_h_
-
-#include "SDL_config.h"
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#if defined(STDC_HEADERS)
-# include <stdlib.h>
-# include <stddef.h>
-# include <stdarg.h>
-#else
-# if defined(HAVE_STDLIB_H)
-#  include <stdlib.h>
-# elif defined(HAVE_MALLOC_H)
-#  include <malloc.h>
-# endif
-# if defined(HAVE_STDDEF_H)
-#  include <stddef.h>
-# endif
-# if defined(HAVE_STDARG_H)
-#  include <stdarg.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_WCHAR_H
-# include <wchar.h>
-#endif
-#if defined(HAVE_INTTYPES_H)
-# include <inttypes.h>
-#elif defined(HAVE_STDINT_H)
-# include <stdint.h>
-#endif
-#ifdef HAVE_CTYPE_H
-# include <ctype.h>
-#endif
-#ifdef HAVE_MATH_H
-# if defined(__WINRT__)
-/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on
-   WinRT.  See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
-   for more information.
-*/
-#  define _USE_MATH_DEFINES
-# endif
-# include <math.h>
-#endif
-#ifdef HAVE_FLOAT_H
-# include <float.h>
-#endif
-#if defined(HAVE_ALLOCA) && !defined(alloca)
-# if defined(HAVE_ALLOCA_H)
-#  include <alloca.h>
-# elif defined(__GNUC__)
-#  define alloca __builtin_alloca
-# elif defined(_MSC_VER)
-#  include <malloc.h>
-#  define alloca _alloca
-# elif defined(__WATCOMC__)
-#  include <malloc.h>
-# elif defined(__BORLANDC__)
-#  include <malloc.h>
-# elif defined(__DMC__)
-#  include <stdlib.h>
-# elif defined(__AIX__)
-#pragma alloca
-# elif defined(__MRC__)
-void *alloca(unsigned);
-# else
-char *alloca();
-# endif
-#endif
-
-/**
- *  The number of elements in an array.
- */
-#define SDL_arraysize(array)    (sizeof(array)/sizeof(array[0]))
-#define SDL_TABLESIZE(table)    SDL_arraysize(table)
-
-/**
- *  Macro useful for building other macros with strings in them
- *
- *  e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")
- */
-#define SDL_STRINGIFY_ARG(arg)  #arg
-
-/**
- *  \name Cast operators
- *
- *  Use proper C++ casts when compiled as C++ to be compatible with the option
- *  -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).
- */
-/* @{ */
-#ifdef __cplusplus
-#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
-#define SDL_static_cast(type, expression) static_cast<type>(expression)
-#define SDL_const_cast(type, expression) const_cast<type>(expression)
-#else
-#define SDL_reinterpret_cast(type, expression) ((type)(expression))
-#define SDL_static_cast(type, expression) ((type)(expression))
-#define SDL_const_cast(type, expression) ((type)(expression))
-#endif
-/* @} *//* Cast operators */
-
-/* Define a four character code as a Uint32 */
-#define SDL_FOURCC(A, B, C, D) \
-    ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
-     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
-     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
-     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
-
-/**
- *  \name Basic data types
- */
-/* @{ */
-
-#ifdef __CC_ARM
-/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */
-#define SDL_FALSE 0
-#define SDL_TRUE 1
-typedef int SDL_bool;
-#else
-typedef enum
-{
-    SDL_FALSE = 0,
-    SDL_TRUE = 1
-} SDL_bool;
-#endif
-
-/**
- * \brief A signed 8-bit integer type.
- */
-#define SDL_MAX_SINT8   ((Sint8)0x7F)           /* 127 */
-#define SDL_MIN_SINT8   ((Sint8)(~0x7F))        /* -128 */
-typedef int8_t Sint8;
-/**
- * \brief An unsigned 8-bit integer type.
- */
-#define SDL_MAX_UINT8   ((Uint8)0xFF)           /* 255 */
-#define SDL_MIN_UINT8   ((Uint8)0x00)           /* 0 */
-typedef uint8_t Uint8;
-/**
- * \brief A signed 16-bit integer type.
- */
-#define SDL_MAX_SINT16  ((Sint16)0x7FFF)        /* 32767 */
-#define SDL_MIN_SINT16  ((Sint16)(~0x7FFF))     /* -32768 */
-typedef int16_t Sint16;
-/**
- * \brief An unsigned 16-bit integer type.
- */
-#define SDL_MAX_UINT16  ((Uint16)0xFFFF)        /* 65535 */
-#define SDL_MIN_UINT16  ((Uint16)0x0000)        /* 0 */
-typedef uint16_t Uint16;
-/**
- * \brief A signed 32-bit integer type.
- */
-#define SDL_MAX_SINT32  ((Sint32)0x7FFFFFFF)    /* 2147483647 */
-#define SDL_MIN_SINT32  ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
-typedef int32_t Sint32;
-/**
- * \brief An unsigned 32-bit integer type.
- */
-#define SDL_MAX_UINT32  ((Uint32)0xFFFFFFFFu)   /* 4294967295 */
-#define SDL_MIN_UINT32  ((Uint32)0x00000000)    /* 0 */
-typedef uint32_t Uint32;
-
-/**
- * \brief A signed 64-bit integer type.
- */
-#define SDL_MAX_SINT64  ((Sint64)0x7FFFFFFFFFFFFFFFll)      /* 9223372036854775807 */
-#define SDL_MIN_SINT64  ((Sint64)(~0x7FFFFFFFFFFFFFFFll))   /* -9223372036854775808 */
-typedef int64_t Sint64;
-/**
- * \brief An unsigned 64-bit integer type.
- */
-#define SDL_MAX_UINT64  ((Uint64)0xFFFFFFFFFFFFFFFFull)     /* 18446744073709551615 */
-#define SDL_MIN_UINT64  ((Uint64)(0x0000000000000000ull))   /* 0 */
-typedef uint64_t Uint64;
-
-/* @} *//* Basic data types */
-
-/* Make sure we have macros for printing 64 bit values.
- * <stdint.h> should define these but this is not true all platforms.
- * (for example win32) */
-#ifndef SDL_PRIs64
-#ifdef PRIs64
-#define SDL_PRIs64 PRIs64
-#elif defined(__WIN32__)
-#define SDL_PRIs64 "I64d"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIs64 "ld"
-#else
-#define SDL_PRIs64 "lld"
-#endif
-#endif
-#ifndef SDL_PRIu64
-#ifdef PRIu64
-#define SDL_PRIu64 PRIu64
-#elif defined(__WIN32__)
-#define SDL_PRIu64 "I64u"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIu64 "lu"
-#else
-#define SDL_PRIu64 "llu"
-#endif
-#endif
-#ifndef SDL_PRIx64
-#ifdef PRIx64
-#define SDL_PRIx64 PRIx64
-#elif defined(__WIN32__)
-#define SDL_PRIx64 "I64x"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIx64 "lx"
-#else
-#define SDL_PRIx64 "llx"
-#endif
-#endif
-#ifndef SDL_PRIX64
-#ifdef PRIX64
-#define SDL_PRIX64 PRIX64
-#elif defined(__WIN32__)
-#define SDL_PRIX64 "I64X"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIX64 "lX"
-#else
-#define SDL_PRIX64 "llX"
-#endif
-#endif
-
-/* Annotations to help code analysis tools */
-#ifdef SDL_DISABLE_ANALYZE_MACROS
-#define SDL_IN_BYTECAP(x)
-#define SDL_INOUT_Z_CAP(x)
-#define SDL_OUT_Z_CAP(x)
-#define SDL_OUT_CAP(x)
-#define SDL_OUT_BYTECAP(x)
-#define SDL_OUT_Z_BYTECAP(x)
-#define SDL_PRINTF_FORMAT_STRING
-#define SDL_SCANF_FORMAT_STRING
-#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
-#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
-#else
-#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */
-#include <sal.h>
-
-#define SDL_IN_BYTECAP(x) _In_bytecount_(x)
-#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x)
-#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x)
-#define SDL_OUT_CAP(x) _Out_cap_(x)
-#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x)
-#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x)
-
-#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_
-#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_
-#else
-#define SDL_IN_BYTECAP(x)
-#define SDL_INOUT_Z_CAP(x)
-#define SDL_OUT_Z_CAP(x)
-#define SDL_OUT_CAP(x)
-#define SDL_OUT_BYTECAP(x)
-#define SDL_OUT_Z_BYTECAP(x)
-#define SDL_PRINTF_FORMAT_STRING
-#define SDL_SCANF_FORMAT_STRING
-#endif
-#if defined(__GNUC__)
-#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 )))
-#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 )))
-#else
-#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
-#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
-#endif
-#endif /* SDL_DISABLE_ANALYZE_MACROS */
-
-#define SDL_COMPILE_TIME_ASSERT(name, x)               \
-       typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]
-/** \cond */
-#ifndef DOXYGEN_SHOULD_IGNORE_THIS
-SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
-SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
-SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
-SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
-SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
-SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
-SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
-SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
-#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
-/** \endcond */
-
-/* Check to make sure enums are the size of ints, for structure packing.
-   For both Watcom C/C++ and Borland C/C++ the compiler option that makes
-   enums having the size of an int must be enabled.
-   This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
-*/
-
-/** \cond */
-#ifndef DOXYGEN_SHOULD_IGNORE_THIS
-#if !defined(__ANDROID__)
-   /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
-typedef enum
-{
-    DUMMY_ENUM_VALUE
-} SDL_DUMMY_ENUM;
-
-SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
-#endif
-#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
-/** \endcond */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef HAVE_ALLOCA
-#define SDL_stack_alloc(type, count)    (type*)alloca(sizeof(type)*(count))
-#define SDL_stack_free(data)
-#else
-#define SDL_stack_alloc(type, count)    (type*)SDL_malloc(sizeof(type)*(count))
-#define SDL_stack_free(data)            SDL_free(data)
-#endif
-
-extern DECLSPEC void *SDLCALL SDL_malloc(size_t size);
-extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
-extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);
-extern DECLSPEC void SDLCALL SDL_free(void *mem);
-
-typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
-typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size);
-typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);
-typedef void (SDLCALL *SDL_free_func)(void *mem);
-
-/**
- *  \brief Get the current set of SDL memory functions
- */
-extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,
-                                                    SDL_calloc_func *calloc_func,
-                                                    SDL_realloc_func *realloc_func,
-                                                    SDL_free_func *free_func);
-
-/**
- *  \brief Replace SDL's memory allocation functions with a custom set
- *
- *  \note If you are replacing SDL's memory functions, you should call
- *        SDL_GetNumAllocations() and be very careful if it returns non-zero.
- *        That means that your free function will be called with memory
- *        allocated by the previous memory allocation functions.
- */
-extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
-                                                   SDL_calloc_func calloc_func,
-                                                   SDL_realloc_func realloc_func,
-                                                   SDL_free_func free_func);
-
-/**
- *  \brief Get the number of outstanding (unfreed) allocations
- */
-extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);
-
-extern DECLSPEC char *SDLCALL SDL_getenv(const char *name);
-extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);
-
-extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (*compare) (const void *, const void *));
-
-extern DECLSPEC int SDLCALL SDL_abs(int x);
-
-/* !!! FIXME: these have side effects. You probably shouldn't use them. */
-/* !!! FIXME: Maybe we do forceinline functions of SDL_mini, SDL_minf, etc? */
-#define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
-#define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
-
-extern DECLSPEC int SDLCALL SDL_isdigit(int x);
-extern DECLSPEC int SDLCALL SDL_isspace(int x);
-extern DECLSPEC int SDLCALL SDL_toupper(int x);
-extern DECLSPEC int SDLCALL SDL_tolower(int x);
-
-extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);
-
-#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
-#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
-
-/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */
-SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)
-{
-#if defined(__GNUC__) && defined(i386)
-    int u0, u1, u2;
-    __asm__ __volatile__ (
-        "cld \n\t"
-        "rep ; stosl \n\t"
-        : "=&D" (u0), "=&a" (u1), "=&c" (u2)
-        : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords))
-        : "memory"
-    );
-#else
-    size_t _n = (dwords + 3) / 4;
-    Uint32 *_p = SDL_static_cast(Uint32 *, dst);
-    Uint32 _val = (val);
-    if (dwords == 0)
-        return;
-    switch (dwords % 4)
-    {
-        case 0: do {    *_p++ = _val;   /* fallthrough */
-        case 3:         *_p++ = _val;   /* fallthrough */
-        case 2:         *_p++ = _val;   /* fallthrough */
-        case 1:         *_p++ = _val;   /* fallthrough */
-        } while ( --_n );
-    }
-#endif
-}
-
-extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
-
-extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
-extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
-
-extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr);
-extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr);
-extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
-extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
-extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2);
-
-extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);
-extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
-extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
-extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
-extern DECLSPEC char *SDLCALL SDL_strdup(const char *str);
-extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
-extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
-extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
-extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);
-extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c);
-extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle);
-extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str);
-
-extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix);
-
-extern DECLSPEC int SDLCALL SDL_atoi(const char *str);
-extern DECLSPEC double SDLCALL SDL_atof(const char *str);
-extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base);
-extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base);
-extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base);
-extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base);
-extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp);
-
-extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);
-extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);
-extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
-extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
-
-extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);
-extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap);
-extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3);
-extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap);
-
-#ifndef HAVE_M_PI
-#ifndef M_PI
-#define M_PI    3.14159265358979323846264338327950288   /**< pi */
-#endif
-#endif
-
-extern DECLSPEC double SDLCALL SDL_acos(double x);
-extern DECLSPEC float SDLCALL SDL_acosf(float x);
-extern DECLSPEC double SDLCALL SDL_asin(double x);
-extern DECLSPEC float SDLCALL SDL_asinf(float x);
-extern DECLSPEC double SDLCALL SDL_atan(double x);
-extern DECLSPEC float SDLCALL SDL_atanf(float x);
-extern DECLSPEC double SDLCALL SDL_atan2(double x, double y);
-extern DECLSPEC float SDLCALL SDL_atan2f(float x, float y);
-extern DECLSPEC double SDLCALL SDL_ceil(double x);
-extern DECLSPEC float SDLCALL SDL_ceilf(float x);
-extern DECLSPEC double SDLCALL SDL_copysign(double x, double y);
-extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y);
-extern DECLSPEC double SDLCALL SDL_cos(double x);
-extern DECLSPEC float SDLCALL SDL_cosf(float x);
-extern DECLSPEC double SDLCALL SDL_exp(double x);
-extern DECLSPEC float SDLCALL SDL_expf(float x);
-extern DECLSPEC double SDLCALL SDL_fabs(double x);
-extern DECLSPEC float SDLCALL SDL_fabsf(float x);
-extern DECLSPEC double SDLCALL SDL_floor(double x);
-extern DECLSPEC float SDLCALL SDL_floorf(float x);
-extern DECLSPEC double SDLCALL SDL_fmod(double x, double y);
-extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y);
-extern DECLSPEC double SDLCALL SDL_log(double x);
-extern DECLSPEC float SDLCALL SDL_logf(float x);
-extern DECLSPEC double SDLCALL SDL_log10(double x);
-extern DECLSPEC float SDLCALL SDL_log10f(float x);
-extern DECLSPEC double SDLCALL SDL_pow(double x, double y);
-extern DECLSPEC float SDLCALL SDL_powf(float x, float y);
-extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n);
-extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n);
-extern DECLSPEC double SDLCALL SDL_sin(double x);
-extern DECLSPEC float SDLCALL SDL_sinf(float x);
-extern DECLSPEC double SDLCALL SDL_sqrt(double x);
-extern DECLSPEC float SDLCALL SDL_sqrtf(float x);
-extern DECLSPEC double SDLCALL SDL_tan(double x);
-extern DECLSPEC float SDLCALL SDL_tanf(float x);
-
-/* The SDL implementation of iconv() returns these error codes */
-#define SDL_ICONV_ERROR     (size_t)-1
-#define SDL_ICONV_E2BIG     (size_t)-2
-#define SDL_ICONV_EILSEQ    (size_t)-3
-#define SDL_ICONV_EINVAL    (size_t)-4
-
-/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */
-typedef struct _SDL_iconv_t *SDL_iconv_t;
-extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode,
-                                                   const char *fromcode);
-extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd);
-extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
-                                         size_t * inbytesleft, char **outbuf,
-                                         size_t * outbytesleft);
-/**
- *  This function converts a string between encodings in one pass, returning a
- *  string that must be freed with SDL_free() or NULL on error.
- */
-extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
-                                               const char *fromcode,
-                                               const char *inbuf,
-                                               size_t inbytesleft);
-#define SDL_iconv_utf8_locale(S)    SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
-#define SDL_iconv_utf8_ucs2(S)      (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
-#define SDL_iconv_utf8_ucs4(S)      (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
-
-/* force builds using Clang's static analysis tools to use literal C runtime
-   here, since there are possibly tests that are ineffective otherwise. */
-#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
-#define SDL_malloc malloc
-#define SDL_calloc calloc
-#define SDL_realloc realloc
-#define SDL_free free
-#define SDL_memset memset
-#define SDL_memcpy memcpy
-#define SDL_memmove memmove
-#define SDL_memcmp memcmp
-#define SDL_strlen strlen
-#define SDL_strlcpy strlcpy
-#define SDL_strlcat strlcat
-#define SDL_strdup strdup
-#define SDL_strchr strchr
-#define SDL_strrchr strrchr
-#define SDL_strstr strstr
-#define SDL_strcmp strcmp
-#define SDL_strncmp strncmp
-#define SDL_strcasecmp strcasecmp
-#define SDL_strncasecmp strncasecmp
-#define SDL_sscanf sscanf
-#define SDL_vsscanf vsscanf
-#define SDL_snprintf snprintf
-#define SDL_vsnprintf vsnprintf
-#endif
-
-SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)
-{
-    return SDL_memcpy(dst, src, dwords * 4);
-}
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_stdinc_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_surface.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_surface.h
deleted file mode 100644 (file)
index 51a1283..0000000
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_surface.h
- *
- *  Header file for ::SDL_Surface definition and management functions.
- */
-
-#ifndef SDL_surface_h_
-#define SDL_surface_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_pixels.h"
-#include "SDL_rect.h"
-#include "SDL_blendmode.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \name Surface flags
- *
- *  These are the currently supported flags for the ::SDL_Surface.
- *
- *  \internal
- *  Used internally (read-only).
- */
-/* @{ */
-#define SDL_SWSURFACE       0           /**< Just here for compatibility */
-#define SDL_PREALLOC        0x00000001  /**< Surface uses preallocated memory */
-#define SDL_RLEACCEL        0x00000002  /**< Surface is RLE encoded */
-#define SDL_DONTFREE        0x00000004  /**< Surface is referenced internally */
-#define SDL_SIMD_ALIGNED    0x00000008  /**< Surface uses aligned memory */
-/* @} *//* Surface flags */
-
-/**
- *  Evaluates to true if the surface needs to be locked before access.
- */
-#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)
-
-/**
- * \brief A collection of pixels used in software blitting.
- *
- * \note  This structure should be treated as read-only, except for \c pixels,
- *        which, if not NULL, contains the raw pixel data for the surface.
- */
-typedef struct SDL_Surface
-{
-    Uint32 flags;               /**< Read-only */
-    SDL_PixelFormat *format;    /**< Read-only */
-    int w, h;                   /**< Read-only */
-    int pitch;                  /**< Read-only */
-    void *pixels;               /**< Read-write */
-
-    /** Application data associated with the surface */
-    void *userdata;             /**< Read-write */
-
-    /** information needed for surfaces requiring locks */
-    int locked;                 /**< Read-only */
-    void *lock_data;            /**< Read-only */
-
-    /** clipping information */
-    SDL_Rect clip_rect;         /**< Read-only */
-
-    /** info for fast blit mapping to other surfaces */
-    struct SDL_BlitMap *map;    /**< Private */
-
-    /** Reference count -- used when freeing surface */
-    int refcount;               /**< Read-mostly */
-} SDL_Surface;
-
-/**
- * \brief The type of function used for surface blitting functions.
- */
-typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect,
-                                 struct SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- * \brief The formula used for converting between YUV and RGB
- */
-typedef enum
-{
-    SDL_YUV_CONVERSION_JPEG,        /**< Full range JPEG */
-    SDL_YUV_CONVERSION_BT601,       /**< BT.601 (the default) */
-    SDL_YUV_CONVERSION_BT709,       /**< BT.709 */
-    SDL_YUV_CONVERSION_AUTOMATIC    /**< BT.601 for SD content, BT.709 for HD content */
-} SDL_YUV_CONVERSION_MODE;
-
-/**
- *  Allocate and free an RGB surface.
- *
- *  If the depth is 4 or 8 bits, an empty palette is allocated for the surface.
- *  If the depth is greater than 8 bits, the pixel format is set using the
- *  flags '[RGB]mask'.
- *
- *  If the function runs out of memory, it will return NULL.
- *
- *  \param flags The \c flags are obsolete and should be set to 0.
- *  \param width The width in pixels of the surface to create.
- *  \param height The height in pixels of the surface to create.
- *  \param depth The depth in bits of the surface to create.
- *  \param Rmask The red mask of the surface to create.
- *  \param Gmask The green mask of the surface to create.
- *  \param Bmask The blue mask of the surface to create.
- *  \param Amask The alpha mask of the surface to create.
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface
-    (Uint32 flags, int width, int height, int depth,
-     Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);
-
-/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
-    (Uint32 flags, int width, int height, int depth, Uint32 format);
-
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
-                                                              int width,
-                                                              int height,
-                                                              int depth,
-                                                              int pitch,
-                                                              Uint32 Rmask,
-                                                              Uint32 Gmask,
-                                                              Uint32 Bmask,
-                                                              Uint32 Amask);
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom
-    (void *pixels, int width, int height, int depth, int pitch, Uint32 format);
-extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface);
-
-/**
- *  \brief Set the palette used by a surface.
- *
- *  \return 0, or -1 if the surface format doesn't use a palette.
- *
- *  \note A single palette can be shared with many surfaces.
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface,
-                                                  SDL_Palette * palette);
-
-/**
- *  \brief Sets up a surface for directly accessing the pixels.
- *
- *  Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write
- *  to and read from \c surface->pixels, using the pixel format stored in
- *  \c surface->format.  Once you are done accessing the surface, you should
- *  use SDL_UnlockSurface() to release it.
- *
- *  Not all surfaces require locking.  If SDL_MUSTLOCK(surface) evaluates
- *  to 0, then you can read and write to the surface at any time, and the
- *  pixel format of the surface will not change.
- *
- *  No operating system or library calls should be made between lock/unlock
- *  pairs, as critical system locks may be held during this time.
- *
- *  SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked.
- *
- *  \sa SDL_UnlockSurface()
- */
-extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);
-/** \sa SDL_LockSurface() */
-extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);
-
-/**
- *  Load a surface from a seekable SDL data stream (memory or file).
- *
- *  If \c freesrc is non-zero, the stream will be closed after being read.
- *
- *  The new surface should be freed with SDL_FreeSurface().
- *
- *  \return the new surface, or NULL if there was an error.
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src,
-                                                    int freesrc);
-
-/**
- *  Load a surface from a file.
- *
- *  Convenience macro.
- */
-#define SDL_LoadBMP(file)   SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1)
-
-/**
- *  Save a surface to a seekable SDL data stream (memory or file).
- *
- *  Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the
- *  BMP directly. Other RGB formats with 8-bit or higher get converted to a
- *  24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit
- *  surface before they are saved. YUV and paletted 1-bit and 4-bit formats are
- *  not supported.
- *
- *  If \c freedst is non-zero, the stream will be closed after being written.
- *
- *  \return 0 if successful or -1 if there was an error.
- */
-extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
-    (SDL_Surface * surface, SDL_RWops * dst, int freedst);
-
-/**
- *  Save a surface to a file.
- *
- *  Convenience macro.
- */
-#define SDL_SaveBMP(surface, file) \
-        SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1)
-
-/**
- *  \brief Sets the RLE acceleration hint for a surface.
- *
- *  \return 0 on success, or -1 if the surface is not valid
- *
- *  \note If RLE is enabled, colorkey and alpha blending blits are much faster,
- *        but the surface must be locked before directly accessing the pixels.
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface,
-                                              int flag);
-
-/**
- *  \brief Sets the color key (transparent pixel) in a blittable surface.
- *
- *  \param surface The surface to update
- *  \param flag Non-zero to enable colorkey and 0 to disable colorkey
- *  \param key The transparent pixel in the native surface format
- *
- *  \return 0 on success, or -1 if the surface is not valid
- *
- *  You can pass SDL_RLEACCEL to enable RLE accelerated blits.
- */
-extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,
-                                            int flag, Uint32 key);
-
-/**
- *  \brief Returns whether the surface has a color key
- *
- *  \return SDL_TRUE if the surface has a color key, or SDL_FALSE if the surface is NULL or has no color key
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface);
-
-/**
- *  \brief Gets the color key (transparent pixel) in a blittable surface.
- *
- *  \param surface The surface to update
- *  \param key A pointer filled in with the transparent pixel in the native
- *             surface format
- *
- *  \return 0 on success, or -1 if the surface is not valid or colorkey is not
- *          enabled.
- */
-extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
-                                            Uint32 * key);
-
-/**
- *  \brief Set an additional color value used in blit operations.
- *
- *  \param surface The surface to update.
- *  \param r The red color value multiplied into blit operations.
- *  \param g The green color value multiplied into blit operations.
- *  \param b The blue color value multiplied into blit operations.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_GetSurfaceColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,
-                                                   Uint8 r, Uint8 g, Uint8 b);
-
-
-/**
- *  \brief Get the additional color value used in blit operations.
- *
- *  \param surface The surface to query.
- *  \param r A pointer filled in with the current red color value.
- *  \param g A pointer filled in with the current green color value.
- *  \param b A pointer filled in with the current blue color value.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_SetSurfaceColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,
-                                                   Uint8 * r, Uint8 * g,
-                                                   Uint8 * b);
-
-/**
- *  \brief Set an additional alpha value used in blit operations.
- *
- *  \param surface The surface to update.
- *  \param alpha The alpha value multiplied into blit operations.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_GetSurfaceAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,
-                                                   Uint8 alpha);
-
-/**
- *  \brief Get the additional alpha value used in blit operations.
- *
- *  \param surface The surface to query.
- *  \param alpha A pointer filled in with the current alpha value.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_SetSurfaceAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,
-                                                   Uint8 * alpha);
-
-/**
- *  \brief Set the blend mode used for blit operations.
- *
- *  \param surface The surface to update.
- *  \param blendMode ::SDL_BlendMode to use for blit blending.
- *
- *  \return 0 on success, or -1 if the parameters are not valid.
- *
- *  \sa SDL_GetSurfaceBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,
-                                                    SDL_BlendMode blendMode);
-
-/**
- *  \brief Get the blend mode used for blit operations.
- *
- *  \param surface   The surface to query.
- *  \param blendMode A pointer filled in with the current blend mode.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_SetSurfaceBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
-                                                    SDL_BlendMode *blendMode);
-
-/**
- *  Sets the clipping rectangle for the destination surface in a blit.
- *
- *  If the clip rectangle is NULL, clipping will be disabled.
- *
- *  If the clip rectangle doesn't intersect the surface, the function will
- *  return SDL_FALSE and blits will be completely clipped.  Otherwise the
- *  function returns SDL_TRUE and blits to the surface will be clipped to
- *  the intersection of the surface area and the clipping rectangle.
- *
- *  Note that blits are automatically clipped to the edges of the source
- *  and destination surfaces.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
-                                                 const SDL_Rect * rect);
-
-/**
- *  Gets the clipping rectangle for the destination surface in a blit.
- *
- *  \c rect must be a pointer to a valid rectangle which will be filled
- *  with the correct values.
- */
-extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface,
-                                             SDL_Rect * rect);
-
-/*
- * Creates a new surface identical to the existing surface
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface);
-
-/**
- *  Creates a new surface of the specified format, and then copies and maps
- *  the given surface to it so the blit of the converted surface will be as
- *  fast as possible.  If this function fails, it returns NULL.
- *
- *  The \c flags parameter is passed to SDL_CreateRGBSurface() and has those
- *  semantics.  You can also pass ::SDL_RLEACCEL in the flags parameter and
- *  SDL will try to RLE accelerate colorkey and alpha blits in the resulting
- *  surface.
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
-    (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags);
-extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat
-    (SDL_Surface * src, Uint32 pixel_format, Uint32 flags);
-
-/**
- * \brief Copy a block of pixels of one format to another format
- *
- *  \return 0 on success, or -1 if there was an error
- */
-extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,
-                                              Uint32 src_format,
-                                              const void * src, int src_pitch,
-                                              Uint32 dst_format,
-                                              void * dst, int dst_pitch);
-
-/**
- *  Performs a fast fill of the given rectangle with \c color.
- *
- *  If \c rect is NULL, the whole surface will be filled with \c color.
- *
- *  The color should be a pixel of the format used by the surface, and
- *  can be generated by the SDL_MapRGB() function.
- *
- *  \return 0 on success, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_FillRect
-    (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color);
-extern DECLSPEC int SDLCALL SDL_FillRects
-    (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);
-
-/**
- *  Performs a fast blit from the source surface to the destination surface.
- *
- *  This assumes that the source and destination rectangles are
- *  the same size.  If either \c srcrect or \c dstrect are NULL, the entire
- *  surface (\c src or \c dst) is copied.  The final blit rectangles are saved
- *  in \c srcrect and \c dstrect after all clipping is performed.
- *
- *  \return If the blit is successful, it returns 0, otherwise it returns -1.
- *
- *  The blit function should not be called on a locked surface.
- *
- *  The blit semantics for surfaces with and without blending and colorkey
- *  are defined as follows:
- *  \verbatim
-    RGBA->RGB:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source alpha-channel and per-surface alpha)
-        SDL_SRCCOLORKEY ignored.
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy RGB.
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        RGB values of the source color key, ignoring alpha in the
-        comparison.
-
-    RGB->RGBA:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source per-surface alpha)
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy RGB, set destination alpha to source per-surface alpha value.
-      both:
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        source color key.
-
-    RGBA->RGBA:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source alpha-channel and per-surface alpha)
-        SDL_SRCCOLORKEY ignored.
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy all of RGBA to the destination.
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        RGB values of the source color key, ignoring alpha in the
-        comparison.
-
-    RGB->RGB:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source per-surface alpha)
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy RGB.
-      both:
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        source color key.
-    \endverbatim
- *
- *  You should call SDL_BlitSurface() unless you know exactly how SDL
- *  blitting works internally and how to use the other blit functions.
- */
-#define SDL_BlitSurface SDL_UpperBlit
-
-/**
- *  This is the public blit function, SDL_BlitSurface(), and it performs
- *  rectangle validation and clipping before passing it to SDL_LowerBlit()
- */
-extern DECLSPEC int SDLCALL SDL_UpperBlit
-    (SDL_Surface * src, const SDL_Rect * srcrect,
-     SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  This is a semi-private blit function and it performs low-level surface
- *  blitting only.
- */
-extern DECLSPEC int SDLCALL SDL_LowerBlit
-    (SDL_Surface * src, SDL_Rect * srcrect,
-     SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  \brief Perform a fast, low quality, stretch blit between two surfaces of the
- *         same pixel format.
- *
- *  \note This function uses a static buffer, and is not thread-safe.
- */
-extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,
-                                            const SDL_Rect * srcrect,
-                                            SDL_Surface * dst,
-                                            const SDL_Rect * dstrect);
-
-#define SDL_BlitScaled SDL_UpperBlitScaled
-
-/**
- *  This is the public scaled blit function, SDL_BlitScaled(), and it performs
- *  rectangle validation and clipping before passing it to SDL_LowerBlitScaled()
- */
-extern DECLSPEC int SDLCALL SDL_UpperBlitScaled
-    (SDL_Surface * src, const SDL_Rect * srcrect,
-    SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  This is a semi-private blit function and it performs low-level surface
- *  scaled blitting only.
- */
-extern DECLSPEC int SDLCALL SDL_LowerBlitScaled
-    (SDL_Surface * src, SDL_Rect * srcrect,
-    SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  \brief Set the YUV conversion mode
- */
-extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode);
-
-/**
- *  \brief Get the YUV conversion mode
- */
-extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void);
-
-/**
- *  \brief Get the YUV conversion mode, returning the correct mode for the resolution when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC
- */
-extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_surface_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_system.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_system.h
deleted file mode 100644 (file)
index 3b08407..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_system.h
- *
- *  Include file for platform specific SDL API functions
- */
-
-#ifndef SDL_system_h_
-#define SDL_system_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_keyboard.h"
-#include "SDL_render.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Platform specific functions for Windows */
-#ifdef __WIN32__
-       
-/**
-   \brief Set a function that is called for every windows message, before TranslateMessage()
-*/
-typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam);
-extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata);
-
-/**
-   \brief Returns the D3D9 adapter index that matches the specified display index.
-
-   This adapter index can be passed to IDirect3D9::CreateDevice and controls
-   on which monitor a full screen application will appear.
-*/
-extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );
-
-typedef struct IDirect3DDevice9 IDirect3DDevice9;
-/**
-   \brief Returns the D3D device associated with a renderer, or NULL if it's not a D3D renderer.
-
-   Once you are done using the device, you should release it to avoid a resource leak.
- */
-extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
-
-/**
-   \brief Returns the DXGI Adapter and Output indices for the specified display index.
-
-   These can be passed to EnumAdapters and EnumOutputs respectively to get the objects
-   required to create a DX10 or DX11 device and swap chain.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex );
-
-#endif /* __WIN32__ */
-
-
-/* Platform specific functions for Linux */
-#ifdef __LINUX__
-
-/**
-   \brief Sets the UNIX nice value for a thread, using setpriority() if possible, and RealtimeKit if available.
-
-   \return 0 on success, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority);
-#endif /* __LINUX__ */
-       
-/* Platform specific functions for iOS */
-#if defined(__IPHONEOS__) && __IPHONEOS__
-
-#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)
-extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
-
-#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)
-extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);
-
-#endif /* __IPHONEOS__ */
-
-
-/* Platform specific functions for Android */
-#if defined(__ANDROID__) && __ANDROID__
-
-/**
-   \brief Get the JNI environment for the current thread
-
-   This returns JNIEnv*, but the prototype is void* so we don't need jni.h
- */
-extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void);
-
-/**
-   \brief Get the SDL Activity object for the application
-
-   This returns jobject, but the prototype is void* so we don't need jni.h
-   The jobject returned by SDL_AndroidGetActivity is a local reference.
-   It is the caller's responsibility to properly release it
-   (using env->Push/PopLocalFrame or manually with env->DeleteLocalRef)
- */
-extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);
-
-/**
-   \brief Return true if the application is running on Android TV
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void);
-
-/**
-   \brief Return true if the application is running on a Chromebook
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void);
-
-/**
-  \brief Return true is the application is running on a Samsung DeX docking station
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void);
-
-/**
- \brief Trigger the Android system back button behavior.
- */
-extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void);
-
-/**
-   See the official Android developer guide for more information:
-   http://developer.android.com/guide/topics/data/data-storage.html
-*/
-#define SDL_ANDROID_EXTERNAL_STORAGE_READ   0x01
-#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE  0x02
-
-/**
-   \brief Get the path used for internal storage for this application.
-
-   This path is unique to your application and cannot be written to
-   by other applications.
- */
-extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void);
-
-/**
-   \brief Get the current state of external storage, a bitmask of these values:
-    SDL_ANDROID_EXTERNAL_STORAGE_READ
-    SDL_ANDROID_EXTERNAL_STORAGE_WRITE
-
-   If external storage is currently unavailable, this will return 0.
-*/
-extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void);
-
-/**
-   \brief Get the path used for external storage for this application.
-
-   This path is unique to your application, but is public and can be
-   written to by other applications.
- */
-extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void);
-
-#endif /* __ANDROID__ */
-
-/* Platform specific functions for WinRT */
-#if defined(__WINRT__) && __WINRT__
-
-/**
- *  \brief WinRT / Windows Phone path types
- */
-typedef enum
-{
-    /** \brief The installed app's root directory.
-        Files here are likely to be read-only. */
-    SDL_WINRT_PATH_INSTALLED_LOCATION,
-
-    /** \brief The app's local data store.  Files may be written here */
-    SDL_WINRT_PATH_LOCAL_FOLDER,
-
-    /** \brief The app's roaming data store.  Unsupported on Windows Phone.
-        Files written here may be copied to other machines via a network
-        connection.
-    */
-    SDL_WINRT_PATH_ROAMING_FOLDER,
-
-    /** \brief The app's temporary data store.  Unsupported on Windows Phone.
-        Files written here may be deleted at any time. */
-    SDL_WINRT_PATH_TEMP_FOLDER
-} SDL_WinRT_Path;
-
-
-/**
- *  \brief WinRT Device Family
- */
-typedef enum
-{
-    /** \brief Unknown family  */
-    SDL_WINRT_DEVICEFAMILY_UNKNOWN,
-
-    /** \brief Desktop family*/
-    SDL_WINRT_DEVICEFAMILY_DESKTOP,
-
-    /** \brief Mobile family (for example smartphone) */
-    SDL_WINRT_DEVICEFAMILY_MOBILE,
-
-    /** \brief XBox family */
-    SDL_WINRT_DEVICEFAMILY_XBOX,
-} SDL_WinRT_DeviceFamily;
-
-
-/**
- *  \brief Retrieves a WinRT defined path on the local file system
- *
- *  \note Documentation on most app-specific path types on WinRT
- *      can be found on MSDN, at the URL:
- *      http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
- *
- *  \param pathType The type of path to retrieve.
- *  \return A UCS-2 string (16-bit, wide-char) containing the path, or NULL
- *      if the path is not available for any reason.  Not all paths are
- *      available on all versions of Windows.  This is especially true on
- *      Windows Phone.  Check the documentation for the given
- *      SDL_WinRT_Path for more information on which path types are
- *      supported where.
- */
-extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);
-
-/**
- *  \brief Retrieves a WinRT defined path on the local file system
- *
- *  \note Documentation on most app-specific path types on WinRT
- *      can be found on MSDN, at the URL:
- *      http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
- *
- *  \param pathType The type of path to retrieve.
- *  \return A UTF-8 string (8-bit, multi-byte) containing the path, or NULL
- *      if the path is not available for any reason.  Not all paths are
- *      available on all versions of Windows.  This is especially true on
- *      Windows Phone.  Check the documentation for the given
- *      SDL_WinRT_Path for more information on which path types are
- *      supported where.
- */
-extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType);
-
-/**
- *  \brief Detects the device family of WinRT plattform on runtime
- *
- *  \return Device family
- */
-extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();
-
-#endif /* __WINRT__ */
-
-/**
- \brief Return true if the current device is a tablet.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_system_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_syswm.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_syswm.h
deleted file mode 100644 (file)
index 7aa8c68..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_syswm.h
- *
- *  Include file for SDL custom system window manager hooks.
- */
-
-#ifndef SDL_syswm_h_
-#define SDL_syswm_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-#include "SDL_version.h"
-
-/**
- *  \brief SDL_syswm.h
- *
- *  Your application has access to a special type of event ::SDL_SYSWMEVENT,
- *  which contains window-manager specific information and arrives whenever
- *  an unhandled window event occurs.  This event is ignored by default, but
- *  you can enable it with SDL_EventState().
- */
-struct SDL_SysWMinfo;
-
-#if !defined(SDL_PROTOTYPES_ONLY)
-
-#if defined(SDL_VIDEO_DRIVER_WINDOWS)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_WINRT)
-#include <Inspectable.h>
-#endif
-
-/* This is the structure for custom window manager events */
-#if defined(SDL_VIDEO_DRIVER_X11)
-#if defined(__APPLE__) && defined(__MACH__)
-/* conflicts with Quickdraw.h */
-#define Cursor X11Cursor
-#endif
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-
-#if defined(__APPLE__) && defined(__MACH__)
-/* matches the re-define above */
-#undef Cursor
-#endif
-
-#endif /* defined(SDL_VIDEO_DRIVER_X11) */
-
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-#include <directfb.h>
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_COCOA)
-#ifdef __OBJC__
-@class NSWindow;
-#else
-typedef struct _NSWindow NSWindow;
-#endif
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_UIKIT)
-#ifdef __OBJC__
-#include <UIKit/UIKit.h>
-#else
-typedef struct _UIWindow UIWindow;
-typedef struct _UIViewController UIViewController;
-#endif
-typedef Uint32 GLuint;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_ANDROID)
-typedef struct ANativeWindow ANativeWindow;
-typedef void *EGLSurface;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_VIVANTE)
-#include "SDL_egl.h"
-#endif
-#endif /* SDL_PROTOTYPES_ONLY */
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if !defined(SDL_PROTOTYPES_ONLY)
-/**
- *  These are the various supported windowing subsystems
- */
-typedef enum
-{
-    SDL_SYSWM_UNKNOWN,
-    SDL_SYSWM_WINDOWS,
-    SDL_SYSWM_X11,
-    SDL_SYSWM_DIRECTFB,
-    SDL_SYSWM_COCOA,
-    SDL_SYSWM_UIKIT,
-    SDL_SYSWM_WAYLAND,
-    SDL_SYSWM_MIR,  /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
-    SDL_SYSWM_WINRT,
-    SDL_SYSWM_ANDROID,
-    SDL_SYSWM_VIVANTE,
-    SDL_SYSWM_OS2
-} SDL_SYSWM_TYPE;
-
-/**
- *  The custom event structure.
- */
-struct SDL_SysWMmsg
-{
-    SDL_version version;
-    SDL_SYSWM_TYPE subsystem;
-    union
-    {
-#if defined(SDL_VIDEO_DRIVER_WINDOWS)
-        struct {
-            HWND hwnd;                  /**< The window for the message */
-            UINT msg;                   /**< The type of message */
-            WPARAM wParam;              /**< WORD message parameter */
-            LPARAM lParam;              /**< LONG message parameter */
-        } win;
-#endif
-#if defined(SDL_VIDEO_DRIVER_X11)
-        struct {
-            XEvent event;
-        } x11;
-#endif
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-        struct {
-            DFBEvent event;
-        } dfb;
-#endif
-#if defined(SDL_VIDEO_DRIVER_COCOA)
-        struct
-        {
-            /* Latest version of Xcode clang complains about empty structs in C v. C++:
-                 error: empty struct has size 0 in C, size 1 in C++
-             */
-            int dummy;
-            /* No Cocoa window events yet */
-        } cocoa;
-#endif
-#if defined(SDL_VIDEO_DRIVER_UIKIT)
-        struct
-        {
-            int dummy;
-            /* No UIKit window events yet */
-        } uikit;
-#endif
-#if defined(SDL_VIDEO_DRIVER_VIVANTE)
-        struct
-        {
-            int dummy;
-            /* No Vivante window events yet */
-        } vivante;
-#endif
-        /* Can't have an empty union */
-        int dummy;
-    } msg;
-};
-
-/**
- *  The custom window manager information structure.
- *
- *  When this structure is returned, it holds information about which
- *  low level system it is using, and will be one of SDL_SYSWM_TYPE.
- */
-struct SDL_SysWMinfo
-{
-    SDL_version version;
-    SDL_SYSWM_TYPE subsystem;
-    union
-    {
-#if defined(SDL_VIDEO_DRIVER_WINDOWS)
-        struct
-        {
-            HWND window;                /**< The window handle */
-            HDC hdc;                    /**< The window device context */
-            HINSTANCE hinstance;        /**< The instance handle */
-        } win;
-#endif
-#if defined(SDL_VIDEO_DRIVER_WINRT)
-        struct
-        {
-            IInspectable * window;      /**< The WinRT CoreWindow */
-        } winrt;
-#endif
-#if defined(SDL_VIDEO_DRIVER_X11)
-        struct
-        {
-            Display *display;           /**< The X11 display */
-            Window window;              /**< The X11 window */
-        } x11;
-#endif
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-        struct
-        {
-            IDirectFB *dfb;             /**< The directfb main interface */
-            IDirectFBWindow *window;    /**< The directfb window handle */
-            IDirectFBSurface *surface;  /**< The directfb client surface */
-        } dfb;
-#endif
-#if defined(SDL_VIDEO_DRIVER_COCOA)
-        struct
-        {
-#if defined(__OBJC__) && defined(__has_feature) && __has_feature(objc_arc)
-            NSWindow __unsafe_unretained *window; /**< The Cocoa window */
-#else
-            NSWindow *window;                     /**< The Cocoa window */
-#endif
-        } cocoa;
-#endif
-#if defined(SDL_VIDEO_DRIVER_UIKIT)
-        struct
-        {
-#if defined(__OBJC__) && defined(__has_feature) && __has_feature(objc_arc)
-            UIWindow __unsafe_unretained *window; /**< The UIKit window */
-#else
-            UIWindow *window;                     /**< The UIKit window */
-#endif
-            GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */
-            GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */
-            GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */
-        } uikit;
-#endif
-#if defined(SDL_VIDEO_DRIVER_WAYLAND)
-        struct
-        {
-            struct wl_display *display;            /**< Wayland display */
-            struct wl_surface *surface;            /**< Wayland surface */
-            struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */
-        } wl;
-#endif
-#if defined(SDL_VIDEO_DRIVER_MIR)  /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
-        struct
-        {
-            void *connection;  /**< Mir display server connection */
-            void *surface;  /**< Mir surface */
-        } mir;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_ANDROID)
-        struct
-        {
-            ANativeWindow *window;
-            EGLSurface surface;
-        } android;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_VIVANTE)
-        struct
-        {
-            EGLNativeDisplayType display;
-            EGLNativeWindowType window;
-        } vivante;
-#endif
-
-        /* Make sure this union is always 64 bytes (8 64-bit pointers). */
-        /* Be careful not to overflow this if you add a new target! */
-        Uint8 dummy[64];
-    } info;
-};
-
-#endif /* SDL_PROTOTYPES_ONLY */
-
-typedef struct SDL_SysWMinfo SDL_SysWMinfo;
-
-/* Function prototypes */
-/**
- *  \brief This function allows access to driver-dependent window information.
- *
- *  \param window The window about which information is being requested
- *  \param info This structure must be initialized with the SDL version, and is
- *              then filled in with information about the given window.
- *
- *  \return SDL_TRUE if the function is implemented and the version member of
- *          the \c info struct is valid, SDL_FALSE otherwise.
- *
- *  You typically use this function like this:
- *  \code
- *  SDL_SysWMinfo info;
- *  SDL_VERSION(&info.version);
- *  if ( SDL_GetWindowWMInfo(window, &info) ) { ... }
- *  \endcode
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window,
-                                                     SDL_SysWMinfo * info);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_syswm_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test.h
deleted file mode 100644 (file)
index 17a33dc..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-#ifndef SDL_test_h_
-#define SDL_test_h_
-
-#include "SDL.h"
-#include "SDL_test_assert.h"
-#include "SDL_test_common.h"
-#include "SDL_test_compare.h"
-#include "SDL_test_crc32.h"
-#include "SDL_test_font.h"
-#include "SDL_test_fuzzer.h"
-#include "SDL_test_harness.h"
-#include "SDL_test_images.h"
-#include "SDL_test_log.h"
-#include "SDL_test_md5.h"
-#include "SDL_test_memory.h"
-#include "SDL_test_random.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Global definitions */
-
-/*
- * Note: Maximum size of SDLTest log message is less than SDL's limit
- * to ensure we can fit additional information such as the timestamp.
- */
-#define SDLTEST_MAX_LOGMESSAGE_LENGTH   3584
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_assert.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_assert.h
deleted file mode 100644 (file)
index b3ebb62..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_assert.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- *
- * Assert API for test code and test cases
- *
- */
-
-#ifndef SDL_test_assert_h_
-#define SDL_test_assert_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Fails the assert.
- */
-#define ASSERT_FAIL     0
-
-/**
- * \brief Passes the assert.
- */
-#define ASSERT_PASS     1
-
-/**
- * \brief Assert that logs and break execution flow on failures.
- *
- * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
- * \param assertDescription Message to log with the assert describing it.
- */
-void SDLTest_Assert(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- * \brief Assert for test cases that logs but does not break execution flow on failures. Updates assertion counters.
- *
- * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
- * \param assertDescription Message to log with the assert describing it.
- *
- * \returns Returns the assertCondition so it can be used to externally to break execution flow if desired.
- */
-int SDLTest_AssertCheck(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- * \brief Explicitly pass without checking an assertion condition. Updates assertion counter.
- *
- * \param assertDescription Message to log with the assert describing it.
- */
-void SDLTest_AssertPass(SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- * \brief Resets the assert summary counters to zero.
- */
-void SDLTest_ResetAssertSummary(void);
-
-/**
- * \brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR.
- */
-void SDLTest_LogAssertSummary(void);
-
-
-/**
- * \brief Converts the current assert summary state to a test result.
- *
- * \returns TEST_RESULT_PASSED, TEST_RESULT_FAILED, or TEST_RESULT_NO_ASSERT
- */
-int SDLTest_AssertSummaryToTestResult(void);
-
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_assert_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_common.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_common.h
deleted file mode 100644 (file)
index c34d0d1..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_common.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/* Ported from original test\common.h file. */
-
-#ifndef SDL_test_common_h_
-#define SDL_test_common_h_
-
-#include "SDL.h"
-
-#if defined(__PSP__)
-#define DEFAULT_WINDOW_WIDTH  480
-#define DEFAULT_WINDOW_HEIGHT 272
-#else
-#define DEFAULT_WINDOW_WIDTH  640
-#define DEFAULT_WINDOW_HEIGHT 480
-#endif
-
-#define VERBOSE_VIDEO   0x00000001
-#define VERBOSE_MODES   0x00000002
-#define VERBOSE_RENDER  0x00000004
-#define VERBOSE_EVENT   0x00000008
-#define VERBOSE_AUDIO   0x00000010
-
-typedef struct
-{
-    /* SDL init flags */
-    char **argv;
-    Uint32 flags;
-    Uint32 verbose;
-
-    /* Video info */
-    const char *videodriver;
-    int display;
-    const char *window_title;
-    const char *window_icon;
-    Uint32 window_flags;
-    int window_x;
-    int window_y;
-    int window_w;
-    int window_h;
-    int window_minW;
-    int window_minH;
-    int window_maxW;
-    int window_maxH;
-    int logical_w;
-    int logical_h;
-    float scale;
-    int depth;
-    int refresh_rate;
-    int num_windows;
-    SDL_Window **windows;
-
-    /* Renderer info */
-    const char *renderdriver;
-    Uint32 render_flags;
-    SDL_bool skip_renderer;
-    SDL_Renderer **renderers;
-    SDL_Texture **targets;
-
-    /* Audio info */
-    const char *audiodriver;
-    SDL_AudioSpec audiospec;
-
-    /* GL settings */
-    int gl_red_size;
-    int gl_green_size;
-    int gl_blue_size;
-    int gl_alpha_size;
-    int gl_buffer_size;
-    int gl_depth_size;
-    int gl_stencil_size;
-    int gl_double_buffer;
-    int gl_accum_red_size;
-    int gl_accum_green_size;
-    int gl_accum_blue_size;
-    int gl_accum_alpha_size;
-    int gl_stereo;
-    int gl_multisamplebuffers;
-    int gl_multisamplesamples;
-    int gl_retained_backing;
-    int gl_accelerated;
-    int gl_major_version;
-    int gl_minor_version;
-    int gl_debug;
-    int gl_profile_mask;
-} SDLTest_CommonState;
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-/**
- * \brief Parse command line parameters and create common state.
- *
- * \param argv Array of command line parameters
- * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)
- *
- * \returns Returns a newly allocated common state object.
- */
-SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);
-
-/**
- * \brief Process one common argument.
- *
- * \param state The common state describing the test window to create.
- * \param index The index of the argument to process in argv[].
- *
- * \returns The number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error.
- */
-int SDLTest_CommonArg(SDLTest_CommonState * state, int index);
-
-
-/**
- * \brief Logs command line usage info.
- *
- * This logs the appropriate command line options for the subsystems in use
- *  plus other common options, and then any application-specific options.
- *  This uses the SDL_Log() function and splits up output to be friendly to
- *  80-character-wide terminals.
- *
- * \param state The common state describing the test window for the app.
- * \param argv0 argv[0], as passed to main/SDL_main.
- * \param options an array of strings for application specific options. The last element of the array should be NULL.
- */
-void SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options);
-
-/**
- * \brief Open test window.
- *
- * \param state The common state describing the test window to create.
- *
- * \returns True if initialization succeeded, false otherwise
- */
-SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
-
-/**
- * \brief Easy argument handling when test app doesn't need any custom args.
- *
- * \param state The common state describing the test window to create.
- * \param argc argc, as supplied to SDL_main
- * \param argv argv, as supplied to SDL_main
- *
- * \returns False if app should quit, true otherwise.
- */
-SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv);
-
-/**
- * \brief Common event handler for test windows.
- *
- * \param state The common state used to create test window.
- * \param event The event to handle.
- * \param done Flag indicating we are done.
- *
- */
-void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done);
-
-/**
- * \brief Close test window.
- *
- * \param state The common state used to create test window.
- *
- */
-void SDLTest_CommonQuit(SDLTest_CommonState * state);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_common_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_compare.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_compare.h
deleted file mode 100644 (file)
index 1f751c8..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_compare.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Defines comparison functions (i.e. for surfaces).
-
-*/
-
-#ifndef SDL_test_compare_h_
-#define SDL_test_compare_h_
-
-#include "SDL.h"
-
-#include "SDL_test_images.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Compares a surface and with reference image data for equality
- *
- * \param surface Surface used in comparison
- * \param referenceSurface Test Surface used in comparison
- * \param allowable_error Allowable difference (=sum of squared difference for each RGB component) in blending accuracy.
- *
- * \returns 0 if comparison succeeded, >0 (=number of pixels for which the comparison failed) if comparison failed, -1 if any of the surfaces were NULL, -2 if the surface sizes differ.
- */
-int SDLTest_CompareSurfaces(SDL_Surface *surface, SDL_Surface *referenceSurface, int allowable_error);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_compare_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_crc32.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_crc32.h
deleted file mode 100644 (file)
index e615d89..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_crc32.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Implements CRC32 calculations (default output is Perl String::CRC32 compatible).
-
-*/
-
-#ifndef SDL_test_crc32_h_
-#define SDL_test_crc32_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* ------------ Definitions --------- */
-
-/* Definition shared by all CRC routines */
-
-#ifndef CrcUint32
- #define CrcUint32  unsigned int
-#endif
-#ifndef CrcUint8
- #define CrcUint8   unsigned char
-#endif
-
-#ifdef ORIGINAL_METHOD
- #define CRC32_POLY 0x04c11db7   /* AUTODIN II, Ethernet, & FDDI */
-#else
- #define CRC32_POLY 0xEDB88320   /* Perl String::CRC32 compatible */
-#endif
-
-/**
- * Data structure for CRC32 (checksum) computation
- */
-  typedef struct {
-    CrcUint32    crc32_table[256]; /* CRC table */
-  } SDLTest_Crc32Context;
-
-/* ---------- Function Prototypes ------------- */
-
-/**
- * \brief Initialize the CRC context
- *
- * Note: The function initializes the crc table required for all crc calculations.
- *
- * \param crcContext        pointer to context variable
- *
- * \returns 0 for OK, -1 on error
- *
- */
- int SDLTest_Crc32Init(SDLTest_Crc32Context * crcContext);
-
-
-/**
- * \brief calculate a crc32 from a data block
- *
- * \param crcContext         pointer to context variable
- * \param inBuf              input buffer to checksum
- * \param inLen              length of input buffer
- * \param crc32              pointer to Uint32 to store the final CRC into
- *
- * \returns 0 for OK, -1 on error
- *
- */
-int SDLTest_Crc32Calc(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
-
-/* Same routine broken down into three steps */
-int SDLTest_Crc32CalcStart(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);
-int SDLTest_Crc32CalcEnd(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);
-int SDLTest_Crc32CalcBuffer(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
-
-
-/**
- * \brief clean up CRC context
- *
- * \param crcContext        pointer to context variable
- *
- * \returns 0 for OK, -1 on error
- *
-*/
-
-int SDLTest_Crc32Done(SDLTest_Crc32Context * crcContext);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_crc32_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_font.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_font.h
deleted file mode 100644 (file)
index 8fa0784..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_font.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-#ifndef SDL_test_font_h_
-#define SDL_test_font_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-#define FONT_CHARACTER_SIZE  8
-
-/**
- *  \brief Draw a string in the currently set font.
- *
- *  \param renderer The renderer to draw on.
- *  \param x The X coordinate of the upper left corner of the character.
- *  \param y The Y coordinate of the upper left corner of the character.
- *  \param c The character to draw.
- *
- *  \returns Returns 0 on success, -1 on failure.
- */
-int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c);
-
-/**
- *  \brief Draw a string in the currently set font.
- *
- *  \param renderer The renderer to draw on.
- *  \param x The X coordinate of the upper left corner of the string.
- *  \param y The Y coordinate of the upper left corner of the string.
- *  \param s The string to draw.
- *
- *  \returns Returns 0 on success, -1 on failure.
- */
-int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s);
-
-
-/**
- *  \brief Cleanup textures used by font drawing functions.
- */
-void SDLTest_CleanupTextDrawing(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_font_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_fuzzer.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_fuzzer.h
deleted file mode 100644 (file)
index 7259685..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_fuzzer.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
-  Data generators for fuzzing test data in a reproducible way.
-
-*/
-
-#ifndef SDL_test_fuzzer_h_
-#define SDL_test_fuzzer_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*
-  Based on GSOC code by Markus Kauppila <markus.kauppila@gmail.com>
-*/
-
-
-/**
- * \file
- * Note: The fuzzer implementation uses a static instance of random context
- * internally which makes it thread-UNsafe.
- */
-
-/**
- * Initializes the fuzzer for a test
- *
- * \param execKey Execution "Key" that initializes the random number generator uniquely for the test.
- *
- */
-void SDLTest_FuzzerInit(Uint64 execKey);
-
-
-/**
- * Returns a random Uint8
- *
- * \returns Generated integer
- */
-Uint8 SDLTest_RandomUint8(void);
-
-/**
- * Returns a random Sint8
- *
- * \returns Generated signed integer
- */
-Sint8 SDLTest_RandomSint8(void);
-
-
-/**
- * Returns a random Uint16
- *
- * \returns Generated integer
- */
-Uint16 SDLTest_RandomUint16(void);
-
-/**
- * Returns a random Sint16
- *
- * \returns Generated signed integer
- */
-Sint16 SDLTest_RandomSint16(void);
-
-
-/**
- * Returns a random integer
- *
- * \returns Generated integer
- */
-Sint32 SDLTest_RandomSint32(void);
-
-
-/**
- * Returns a random positive integer
- *
- * \returns Generated integer
- */
-Uint32 SDLTest_RandomUint32(void);
-
-/**
- * Returns random Uint64.
- *
- * \returns Generated integer
- */
-Uint64 SDLTest_RandomUint64(void);
-
-
-/**
- * Returns random Sint64.
- *
- * \returns Generated signed integer
- */
-Sint64 SDLTest_RandomSint64(void);
-
-/**
- * \returns random float in range [0.0 - 1.0[
- */
-float SDLTest_RandomUnitFloat(void);
-
-/**
- * \returns random double in range [0.0 - 1.0[
- */
-double SDLTest_RandomUnitDouble(void);
-
-/**
- * \returns random float.
- *
- */
-float SDLTest_RandomFloat(void);
-
-/**
- * \returns random double.
- *
- */
-double SDLTest_RandomDouble(void);
-
-/**
- * Returns a random boundary value for Uint8 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint8BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint8BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint8BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint8BoundaryValue(0, 255, SDL_FALSE) returns 0 (error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or 0 with error set
- */
-Uint8 SDLTest_RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Uint16 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint16BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint16BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint16BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint16BoundaryValue(0, 0xFFFF, SDL_FALSE) returns 0 (error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or 0 with error set
- */
-Uint16 SDLTest_RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Uint32 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint32BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint32BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint32BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint32BoundaryValue(0, 0xFFFFFFFF, SDL_FALSE) returns 0 (with error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or 0 with error set
- */
-Uint32 SDLTest_RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Uint64 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint64BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint64BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint64BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint64BoundaryValue(0, 0xFFFFFFFFFFFFFFFF, SDL_FALSE) returns 0 (with error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or 0 with error set
- */
-Uint64 SDLTest_RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Sint8 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint8BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint8BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint8BoundaryValue(SINT8_MIN, 99, SDL_FALSE) returns 100
- * RandomSint8BoundaryValue(SINT8_MIN, SINT8_MAX, SDL_FALSE) returns SINT8_MIN (== error value) with error set
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or SINT8_MIN with error set
- */
-Sint8 SDLTest_RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain);
-
-
-/**
- * Returns a random boundary value for Sint16 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint16BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint16BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint16BoundaryValue(SINT16_MIN, 99, SDL_FALSE) returns 100
- * RandomSint16BoundaryValue(SINT16_MIN, SINT16_MAX, SDL_FALSE) returns SINT16_MIN (== error value) with error set
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or SINT16_MIN with error set
- */
-Sint16 SDLTest_RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Sint32 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint32BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint32BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint32BoundaryValue(SINT32_MIN, 99, SDL_FALSE) returns 100
- * RandomSint32BoundaryValue(SINT32_MIN, SINT32_MAX, SDL_FALSE) returns SINT32_MIN (== error value)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or SINT32_MIN with error set
- */
-Sint32 SDLTest_RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Sint64 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint64BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint64BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint64BoundaryValue(SINT64_MIN, 99, SDL_FALSE) returns 100
- * RandomSint64BoundaryValue(SINT64_MIN, SINT64_MAX, SDL_FALSE) returns SINT64_MIN (== error value) and error set
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns Random boundary value for the given range and domain or SINT64_MIN with error set
- */
-Sint64 SDLTest_RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain);
-
-
-/**
- * Returns integer in range [min, max] (inclusive).
- * Min and max values can be negative values.
- * If Max in smaller than min, then the values are swapped.
- * Min and max are the same value, that value will be returned.
- *
- * \param min Minimum inclusive value of returned random number
- * \param max Maximum inclusive value of returned random number
- *
- * \returns Generated random integer in range
- */
-Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max);
-
-
-/**
- * Generates random null-terminated string. The minimum length for
- * the string is 1 character, maximum length for the string is 255
- * characters and it can contain ASCII characters from 32 to 126.
- *
- * Note: Returned string needs to be deallocated.
- *
- * \returns Newly allocated random string; or NULL if length was invalid or string could not be allocated.
- */
-char * SDLTest_RandomAsciiString(void);
-
-
-/**
- * Generates random null-terminated string. The maximum length for
- * the string is defined by the maxLength parameter.
- * String can contain ASCII characters from 32 to 126.
- *
- * Note: Returned string needs to be deallocated.
- *
- * \param maxLength The maximum length of the generated string.
- *
- * \returns Newly allocated random string; or NULL if maxLength was invalid or string could not be allocated.
- */
-char * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength);
-
-
-/**
- * Generates random null-terminated string. The length for
- * the string is defined by the size parameter.
- * String can contain ASCII characters from 32 to 126.
- *
- * Note: Returned string needs to be deallocated.
- *
- * \param size The length of the generated string
- *
- * \returns Newly allocated random string; or NULL if size was invalid or string could not be allocated.
- */
-char * SDLTest_RandomAsciiStringOfSize(int size);
-
-/**
- * Returns the invocation count for the fuzzer since last ...FuzzerInit.
- */
-int SDLTest_GetFuzzerInvocationCount(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_fuzzer_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_harness.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_harness.h
deleted file mode 100644 (file)
index f5ae92c..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_harness.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-  Defines types for test case definitions and the test execution harness API.
-
-  Based on original GSOC code by Markus Kauppila <markus.kauppila@gmail.com>
-*/
-
-#ifndef SDL_test_h_arness_h
-#define SDL_test_h_arness_h
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* ! Definitions for test case structures */
-#define TEST_ENABLED  1
-#define TEST_DISABLED 0
-
-/* ! Definition of all the possible test return values of the test case method */
-#define TEST_ABORTED        -1
-#define TEST_STARTED         0
-#define TEST_COMPLETED       1
-#define TEST_SKIPPED         2
-
-/* ! Definition of all the possible test results for the harness */
-#define TEST_RESULT_PASSED              0
-#define TEST_RESULT_FAILED              1
-#define TEST_RESULT_NO_ASSERT           2
-#define TEST_RESULT_SKIPPED             3
-#define TEST_RESULT_SETUP_FAILURE       4
-
-/* !< Function pointer to a test case setup function (run before every test) */
-typedef void (*SDLTest_TestCaseSetUpFp)(void *arg);
-
-/* !< Function pointer to a test case function */
-typedef int (*SDLTest_TestCaseFp)(void *arg);
-
-/* !< Function pointer to a test case teardown function (run after every test) */
-typedef void  (*SDLTest_TestCaseTearDownFp)(void *arg);
-
-/**
- * Holds information about a single test case.
- */
-typedef struct SDLTest_TestCaseReference {
-    /* !< Func2Stress */
-    SDLTest_TestCaseFp testCase;
-    /* !< Short name (or function name) "Func2Stress" */
-    char *name;
-    /* !< Long name or full description "This test pushes func2() to the limit." */
-    char *description;
-    /* !< Set to TEST_ENABLED or TEST_DISABLED (test won't be run) */
-    int enabled;
-} SDLTest_TestCaseReference;
-
-/**
- * Holds information about a test suite (multiple test cases).
- */
-typedef struct SDLTest_TestSuiteReference {
-    /* !< "PlatformSuite" */
-    char *name;
-    /* !< The function that is run before each test. NULL skips. */
-    SDLTest_TestCaseSetUpFp testSetUp;
-    /* !< The test cases that are run as part of the suite. Last item should be NULL. */
-    const SDLTest_TestCaseReference **testCases;
-    /* !< The function that is run after each test. NULL skips. */
-    SDLTest_TestCaseTearDownFp testTearDown;
-} SDLTest_TestSuiteReference;
-
-
-/**
- * \brief Generates a random run seed string for the harness. The generated seed will contain alphanumeric characters (0-9A-Z).
- *
- * Note: The returned string needs to be deallocated by the caller.
- *
- * \param length The length of the seed string to generate
- *
- * \returns The generated seed string
- */
-char *SDLTest_GenerateRunSeed(const int length);
-
-/**
- * \brief Execute a test suite using the given run seed and execution key.
- *
- * \param testSuites Suites containing the test case.
- * \param userRunSeed Custom run seed provided by user, or NULL to autogenerate one.
- * \param userExecKey Custom execution key provided by user, or 0 to autogenerate one.
- * \param filter Filter specification. NULL disables. Case sensitive.
- * \param testIterations Number of iterations to run each test case.
- *
- * \returns Test run result; 0 when all tests passed, 1 if any tests failed.
- */
-int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *userRunSeed, Uint64 userExecKey, const char *filter, int testIterations);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_h_arness_h */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_images.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_images.h
deleted file mode 100644 (file)
index b893481..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_images.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Defines some images for tests.
-
-*/
-
-#ifndef SDL_test_images_h_
-#define SDL_test_images_h_
-
-#include "SDL.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *Type for test images.
- */
-typedef struct SDLTest_SurfaceImage_s {
-  int width;
-  int height;
-  unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */
-  const char *pixel_data;
-} SDLTest_SurfaceImage_t;
-
-/* Test images */
-SDL_Surface *SDLTest_ImageBlit(void);
-SDL_Surface *SDLTest_ImageBlitColor(void);
-SDL_Surface *SDLTest_ImageBlitAlpha(void);
-SDL_Surface *SDLTest_ImageBlitBlendAdd(void);
-SDL_Surface *SDLTest_ImageBlitBlend(void);
-SDL_Surface *SDLTest_ImageBlitBlendMod(void);
-SDL_Surface *SDLTest_ImageBlitBlendNone(void);
-SDL_Surface *SDLTest_ImageBlitBlendAll(void);
-SDL_Surface *SDLTest_ImageFace(void);
-SDL_Surface *SDLTest_ImagePrimitives(void);
-SDL_Surface *SDLTest_ImagePrimitivesBlend(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_images_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_log.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_log.h
deleted file mode 100644 (file)
index 01d0fed..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_log.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- *
- *  Wrapper to log in the TEST category
- *
- */
-
-#ifndef SDL_test_log_h_
-#define SDL_test_log_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Prints given message with a timestamp in the TEST category and INFO priority.
- *
- * \param fmt Message to be logged
- */
-void SDLTest_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- * \brief Prints given message with a timestamp in the TEST category and the ERROR priority.
- *
- * \param fmt Message to be logged
- */
-void SDLTest_LogError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_log_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_md5.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_md5.h
deleted file mode 100644 (file)
index 2bfd7df..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_md5.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- ***********************************************************************
- ** Header file for implementation of MD5                             **
- ** RSA Data Security, Inc. MD5 Message-Digest Algorithm              **
- ** Created: 2/17/90 RLR                                              **
- ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version               **
- ** Revised (for MD5): RLR 4/27/91                                    **
- **   -- G modified to have y&~z instead of y&z                       **
- **   -- FF, GG, HH modified to add in last register done             **
- **   -- Access pattern: round 2 works mod 5, round 3 works mod 3     **
- **   -- distinct additive constant for each step                     **
- **   -- round 4 added, working mod 7                                 **
- ***********************************************************************
-*/
-
-/*
- ***********************************************************************
- **  Message-digest routines:                                         **
- **  To form the message digest for a message M                       **
- **    (1) Initialize a context buffer mdContext using MD5Init        **
- **    (2) Call MD5Update on mdContext and M                          **
- **    (3) Call MD5Final on mdContext                                 **
- **  The message digest is now in mdContext->digest[0...15]           **
- ***********************************************************************
-*/
-
-#ifndef SDL_test_md5_h_
-#define SDL_test_md5_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ------------ Definitions --------- */
-
-/* typedef a 32-bit type */
-  typedef unsigned long int MD5UINT4;
-
-/* Data structure for MD5 (Message-Digest) computation */
-  typedef struct {
-    MD5UINT4  i[2];     /* number of _bits_ handled mod 2^64 */
-    MD5UINT4  buf[4];       /* scratch buffer */
-    unsigned char in[64];   /* input buffer */
-    unsigned char digest[16];   /* actual digest after Md5Final call */
-  } SDLTest_Md5Context;
-
-/* ---------- Function Prototypes ------------- */
-
-/**
- * \brief initialize the context
- *
- * \param  mdContext        pointer to context variable
- *
- * Note: The function initializes the message-digest context
- *       mdContext. Call before each new use of the context -
- *       all fields are set to zero.
- */
- void SDLTest_Md5Init(SDLTest_Md5Context * mdContext);
-
-
-/**
- * \brief update digest from variable length data
- *
- * \param  mdContext       pointer to context variable
- * \param  inBuf           pointer to data array/string
- * \param  inLen           length of data array/string
- *
- * Note: The function updates the message-digest context to account
- *       for the presence of each of the characters inBuf[0..inLen-1]
- *       in the message whose digest is being computed.
-*/
-
- void SDLTest_Md5Update(SDLTest_Md5Context * mdContext, unsigned char *inBuf,
-                 unsigned int inLen);
-
-
-/**
- * \brief complete digest computation
- *
- * \param mdContext     pointer to context variable
- *
- * Note: The function terminates the message-digest computation and
- *       ends with the desired message digest in mdContext.digest[0..15].
- *       Always call before using the digest[] variable.
-*/
-
- void SDLTest_Md5Final(SDLTest_Md5Context * mdContext);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_md5_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_memory.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_memory.h
deleted file mode 100644 (file)
index 5d4d39e..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_memory.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-#ifndef SDL_test_memory_h_
-#define SDL_test_memory_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * \brief Start tracking SDL memory allocations
- * 
- * \note This should be called before any other SDL functions for complete tracking coverage
- */
-int SDLTest_TrackAllocations(void);
-
-/**
- * \brief Print a log of any outstanding allocations
- *
- * \note This can be called after SDL_Quit()
- */
-void SDLTest_LogAllocations(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_memory_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_test_random.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_test_random.h
deleted file mode 100644 (file)
index 71e9c70..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_test_random.h
- *
- *  Include file for SDL test framework.
- *
- *  This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- A "32-bit Multiply with carry random number generator. Very fast.
- Includes a list of recommended multipliers.
-
- multiply-with-carry generator: x(n) = a*x(n-1) + carry mod 2^32.
- period: (a*2^31)-1
-
-*/
-
-#ifndef SDL_test_random_h_
-#define SDL_test_random_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* --- Definitions */
-
-/*
- * Macros that return a random number in a specific format.
- */
-#define SDLTest_RandomInt(c)        ((int)SDLTest_Random(c))
-
-/*
- * Context structure for the random number generator state.
- */
-  typedef struct {
-    unsigned int a;
-    unsigned int x;
-    unsigned int c;
-    unsigned int ah;
-    unsigned int al;
-  } SDLTest_RandomContext;
-
-
-/* --- Function prototypes */
-
-/**
- *  \brief Initialize random number generator with two integers.
- *
- *  Note: The random sequence of numbers returned by ...Random() is the
- *  same for the same two integers and has a period of 2^31.
- *
- *  \param rndContext     pointer to context structure
- *  \param xi         integer that defines the random sequence
- *  \param ci         integer that defines the random sequence
- *
- */
- void SDLTest_RandomInit(SDLTest_RandomContext * rndContext, unsigned int xi,
-                  unsigned int ci);
-
-/**
- *  \brief Initialize random number generator based on current system time.
- *
- *  \param rndContext     pointer to context structure
- *
- */
- void SDLTest_RandomInitTime(SDLTest_RandomContext *rndContext);
-
-
-/**
- *  \brief Initialize random number generator based on current system time.
- *
- *  Note: ...RandomInit() or ...RandomInitTime() must have been called
- *  before using this function.
- *
- *  \param rndContext     pointer to context structure
- *
- *  \returns A random number (32bit unsigned integer)
- *
- */
- unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_random_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_thread.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_thread.h
deleted file mode 100644 (file)
index f78b114..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_thread_h_
-#define SDL_thread_h_
-
-/**
- *  \file SDL_thread.h
- *
- *  Header for the SDL thread management routines.
- */
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-/* Thread synchronization primitives */
-#include "SDL_atomic.h"
-#include "SDL_mutex.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The SDL thread structure, defined in SDL_thread.c */
-struct SDL_Thread;
-typedef struct SDL_Thread SDL_Thread;
-
-/* The SDL thread ID */
-typedef unsigned long SDL_threadID;
-
-/* Thread local storage ID, 0 is the invalid ID */
-typedef unsigned int SDL_TLSID;
-
-/**
- *  The SDL thread priority.
- *
- *  \note On many systems you require special privileges to set high or time critical priority.
- */
-typedef enum {
-    SDL_THREAD_PRIORITY_LOW,
-    SDL_THREAD_PRIORITY_NORMAL,
-    SDL_THREAD_PRIORITY_HIGH,
-    SDL_THREAD_PRIORITY_TIME_CRITICAL
-} SDL_ThreadPriority;
-
-/**
- *  The function passed to SDL_CreateThread().
- *  It is passed a void* user context parameter and returns an int.
- */
-typedef int (SDLCALL * SDL_ThreadFunction) (void *data);
-
-#if defined(__WIN32__) && !defined(HAVE_LIBC)
-/**
- *  \file SDL_thread.h
- *
- *  We compile SDL into a DLL. This means, that it's the DLL which
- *  creates a new thread for the calling process with the SDL_CreateThread()
- *  API. There is a problem with this, that only the RTL of the SDL2.DLL will
- *  be initialized for those threads, and not the RTL of the calling
- *  application!
- *
- *  To solve this, we make a little hack here.
- *
- *  We'll always use the caller's _beginthread() and _endthread() APIs to
- *  start a new thread. This way, if it's the SDL2.DLL which uses this API,
- *  then the RTL of SDL2.DLL will be used to create the new thread, and if it's
- *  the application, then the RTL of the application will be used.
- *
- *  So, in short:
- *  Always use the _beginthread() and _endthread() of the calling runtime
- *  library!
- */
-#define SDL_PASSED_BEGINTHREAD_ENDTHREAD
-#include <process.h> /* _beginthreadex() and _endthreadex() */
-
-typedef uintptr_t(__cdecl * pfnSDL_CurrentBeginThread)
-                   (void *, unsigned, unsigned (__stdcall *func)(void *),
-                    void * /*arg*/, unsigned, unsigned * /* threadID */);
-typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code);
-
-/**
- *  Create a thread.
- */
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThreadWithStackSize(int (SDLCALL * fn) (void *),
-                 const char *name, const size_t stacksize, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-
-
-/**
- *  Create a thread.
- */
-#if defined(SDL_CreateThread) && SDL_DYNAMIC_API
-#undef SDL_CreateThread
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#undef SDL_CreateThreadWithStackSize
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#else
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#endif
-
-#elif defined(__OS2__)
-/*
- * just like the windows case above:  We compile SDL2
- * into a dll with Watcom's runtime statically linked.
- */
-#define SDL_PASSED_BEGINTHREAD_ENDTHREAD
-#ifndef __EMX__
-#include <process.h>
-#else
-#include <stdlib.h>
-#endif
-typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/);
-typedef void (*pfnSDL_CurrentEndThread)(void);
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-#if defined(SDL_CreateThread) && SDL_DYNAMIC_API
-#undef SDL_CreateThread
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#undef SDL_CreateThreadWithStackSize
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#else
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#endif
-
-#else
-
-/**
- *  Create a thread with a default stack size.
- *
- *  This is equivalent to calling:
- *  SDL_CreateThreadWithStackSize(fn, name, 0, data);
- */
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data);
-
-/**
- *  Create a thread.
- *
- *   Thread naming is a little complicated: Most systems have very small
- *    limits for the string length (Haiku has 32 bytes, Linux currently has 16,
- *    Visual C++ 6.0 has nine!), and possibly other arbitrary rules. You'll
- *    have to see what happens with your system's debugger. The name should be
- *    UTF-8 (but using the naming limits of C identifiers is a better bet).
- *   There are no requirements for thread naming conventions, so long as the
- *    string is null-terminated UTF-8, but these guidelines are helpful in
- *    choosing a name:
- *
- *    http://stackoverflow.com/questions/149932/naming-conventions-for-threads
- *
- *   If a system imposes requirements, SDL will try to munge the string for
- *    it (truncate, etc), but the original string contents will be available
- *    from SDL_GetThreadName().
- *
- *   The size (in bytes) of the new stack can be specified. Zero means "use
- *    the system default" which might be wildly different between platforms
- *    (x86 Linux generally defaults to eight megabytes, an embedded device
- *    might be a few kilobytes instead).
- *
- *   In SDL 2.1, stacksize will be folded into the original SDL_CreateThread
- *    function.
- */
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data);
-
-#endif
-
-/**
- * Get the thread name, as it was specified in SDL_CreateThread().
- *  This function returns a pointer to a UTF-8 string that names the
- *  specified thread, or NULL if it doesn't have a name. This is internal
- *  memory, not to be free()'d by the caller, and remains valid until the
- *  specified thread is cleaned up by SDL_WaitThread().
- */
-extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread);
-
-/**
- *  Get the thread identifier for the current thread.
- */
-extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void);
-
-/**
- *  Get the thread identifier for the specified thread.
- *
- *  Equivalent to SDL_ThreadID() if the specified thread is NULL.
- */
-extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread);
-
-/**
- *  Set the priority for the current thread
- */
-extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority);
-
-/**
- *  Wait for a thread to finish. Threads that haven't been detached will
- *  remain (as a "zombie") until this function cleans them up. Not doing so
- *  is a resource leak.
- *
- *  Once a thread has been cleaned up through this function, the SDL_Thread
- *  that references it becomes invalid and should not be referenced again.
- *  As such, only one thread may call SDL_WaitThread() on another.
- *
- *  The return code for the thread function is placed in the area
- *  pointed to by \c status, if \c status is not NULL.
- *
- *  You may not wait on a thread that has been used in a call to
- *  SDL_DetachThread(). Use either that function or this one, but not
- *  both, or behavior is undefined.
- *
- *  It is safe to pass NULL to this function; it is a no-op.
- */
-extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status);
-
-/**
- *  A thread may be "detached" to signify that it should not remain until
- *  another thread has called SDL_WaitThread() on it. Detaching a thread
- *  is useful for long-running threads that nothing needs to synchronize
- *  with or further manage. When a detached thread is done, it simply
- *  goes away.
- *
- *  There is no way to recover the return code of a detached thread. If you
- *  need this, don't detach the thread and instead use SDL_WaitThread().
- *
- *  Once a thread is detached, you should usually assume the SDL_Thread isn't
- *  safe to reference again, as it will become invalid immediately upon
- *  the detached thread's exit, instead of remaining until someone has called
- *  SDL_WaitThread() to finally clean it up. As such, don't detach the same
- *  thread more than once.
- *
- *  If a thread has already exited when passed to SDL_DetachThread(), it will
- *  stop waiting for a call to SDL_WaitThread() and clean up immediately.
- *  It is not safe to detach a thread that might be used with SDL_WaitThread().
- *
- *  You may not call SDL_WaitThread() on a thread that has been detached.
- *  Use either that function or this one, but not both, or behavior is
- *  undefined.
- *
- *  It is safe to pass NULL to this function; it is a no-op.
- */
-extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread);
-
-/**
- *  \brief Create an identifier that is globally visible to all threads but refers to data that is thread-specific.
- *
- *  \return The newly created thread local storage identifier, or 0 on error
- *
- *  \code
- *  static SDL_SpinLock tls_lock;
- *  static SDL_TLSID thread_local_storage;
- * 
- *  void SetMyThreadData(void *value)
- *  {
- *      if (!thread_local_storage) {
- *          SDL_AtomicLock(&tls_lock);
- *          if (!thread_local_storage) {
- *              thread_local_storage = SDL_TLSCreate();
- *          }
- *          SDL_AtomicUnlock(&tls_lock);
- *      }
- *      SDL_TLSSet(thread_local_storage, value, 0);
- *  }
- *  
- *  void *GetMyThreadData(void)
- *  {
- *      return SDL_TLSGet(thread_local_storage);
- *  }
- *  \endcode
- *
- *  \sa SDL_TLSGet()
- *  \sa SDL_TLSSet()
- */
-extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void);
-
-/**
- *  \brief Get the value associated with a thread local storage ID for the current thread.
- *
- *  \param id The thread local storage ID
- *
- *  \return The value associated with the ID for the current thread, or NULL if no value has been set.
- *
- *  \sa SDL_TLSCreate()
- *  \sa SDL_TLSSet()
- */
-extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);
-
-/**
- *  \brief Set the value associated with a thread local storage ID for the current thread.
- *
- *  \param id The thread local storage ID
- *  \param value The value to associate with the ID for the current thread
- *  \param destructor A function called when the thread exits, to free the value.
- *
- *  \return 0 on success, -1 on error
- *
- *  \sa SDL_TLSCreate()
- *  \sa SDL_TLSGet()
- */
-extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*));
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_thread_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_timer.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_timer.h
deleted file mode 100644 (file)
index 2a47b04..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_timer_h_
-#define SDL_timer_h_
-
-/**
- *  \file SDL_timer.h
- *
- *  Header for the SDL time management routines.
- */
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Get the number of milliseconds since the SDL library initialization.
- *
- * \note This value wraps if the program runs for more than ~49 days.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void);
-
-/**
- * \brief Compare SDL ticks values, and return true if A has passed B
- *
- * e.g. if you want to wait 100 ms, you could do this:
- *  Uint32 timeout = SDL_GetTicks() + 100;
- *  while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) {
- *      ... do work until timeout has elapsed
- *  }
- */
-#define SDL_TICKS_PASSED(A, B)  ((Sint32)((B) - (A)) <= 0)
-
-/**
- * \brief Get the current value of the high resolution counter
- */
-extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void);
-
-/**
- * \brief Get the count per second of the high resolution counter
- */
-extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void);
-
-/**
- * \brief Wait a specified number of milliseconds before returning.
- */
-extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms);
-
-/**
- *  Function prototype for the timer callback function.
- *
- *  The callback function is passed the current timer interval and returns
- *  the next timer interval.  If the returned value is the same as the one
- *  passed in, the periodic alarm continues, otherwise a new alarm is
- *  scheduled.  If the callback returns 0, the periodic alarm is cancelled.
- */
-typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param);
-
-/**
- * Definition of the timer ID type.
- */
-typedef int SDL_TimerID;
-
-/**
- * \brief Add a new timer to the pool of timers already running.
- *
- * \return A timer ID, or 0 when an error occurs.
- */
-extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval,
-                                                 SDL_TimerCallback callback,
-                                                 void *param);
-
-/**
- * \brief Remove a timer knowing its ID.
- *
- * \return A boolean value indicating success or failure.
- *
- * \warning It is not safe to remove a timer multiple times.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_timer_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_touch.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_touch.h
deleted file mode 100644 (file)
index 99dbcb8..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_touch.h
- *
- *  Include file for SDL touch event handling.
- */
-
-#ifndef SDL_touch_h_
-#define SDL_touch_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef Sint64 SDL_TouchID;
-typedef Sint64 SDL_FingerID;
-
-typedef enum
-{
-    SDL_TOUCH_DEVICE_INVALID = -1,
-    SDL_TOUCH_DEVICE_DIRECT,            /* touch screen with window-relative coordinates */
-    SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */
-    SDL_TOUCH_DEVICE_INDIRECT_RELATIVE  /* trackpad with screen cursor-relative coordinates */
-} SDL_TouchDeviceType;
-
-typedef struct SDL_Finger
-{
-    SDL_FingerID id;
-    float x;
-    float y;
-    float pressure;
-} SDL_Finger;
-
-/* Used as the device ID for mouse events simulated with touch input */
-#define SDL_TOUCH_MOUSEID ((Uint32)-1)
-
-/* Used as the SDL_TouchID for touch events simulated with mouse input */
-#define SDL_MOUSE_TOUCHID ((Sint64)-1)
-
-
-/* Function prototypes */
-
-/**
- *  \brief Get the number of registered touch devices.
- */
-extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void);
-
-/**
- *  \brief Get the touch ID with the given index, or 0 if the index is invalid.
- */
-extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index);
-
-/**
- * \brief Get the type of the given touch device.
- */
-extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID);
-
-/**
- *  \brief Get the number of active fingers for a given touch device.
- */
-extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID);
-
-/**
- *  \brief Get the finger object of the given touch, with the given index.
- */
-extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_touch_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_types.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_types.h
deleted file mode 100644 (file)
index 9c3e989..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_types.h
- *
- *  \deprecated
- */
-
-/* DEPRECATED */
-#include "SDL_stdinc.h"
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_version.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_version.h
deleted file mode 100644 (file)
index 6c7499d..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_version.h
- *
- *  This header defines the current SDL version.
- */
-
-#ifndef SDL_version_h_
-#define SDL_version_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Information the version of SDL in use.
- *
- *  Represents the library's version as three levels: major revision
- *  (increments with massive changes, additions, and enhancements),
- *  minor revision (increments with backwards-compatible changes to the
- *  major revision), and patchlevel (increments with fixes to the minor
- *  revision).
- *
- *  \sa SDL_VERSION
- *  \sa SDL_GetVersion
- */
-typedef struct SDL_version
-{
-    Uint8 major;        /**< major version */
-    Uint8 minor;        /**< minor version */
-    Uint8 patch;        /**< update version */
-} SDL_version;
-
-/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
-*/
-#define SDL_MAJOR_VERSION   2
-#define SDL_MINOR_VERSION   0
-#define SDL_PATCHLEVEL      10
-
-/**
- *  \brief Macro to determine SDL version program was compiled against.
- *
- *  This macro fills in a SDL_version structure with the version of the
- *  library you compiled against. This is determined by what header the
- *  compiler uses. Note that if you dynamically linked the library, you might
- *  have a slightly newer or older version at runtime. That version can be
- *  determined with SDL_GetVersion(), which, unlike SDL_VERSION(),
- *  is not a macro.
- *
- *  \param x A pointer to a SDL_version struct to initialize.
- *
- *  \sa SDL_version
- *  \sa SDL_GetVersion
- */
-#define SDL_VERSION(x)                          \
-{                                   \
-    (x)->major = SDL_MAJOR_VERSION;                 \
-    (x)->minor = SDL_MINOR_VERSION;                 \
-    (x)->patch = SDL_PATCHLEVEL;                    \
-}
-
-/**
- *  This macro turns the version numbers into a numeric value:
- *  \verbatim
-    (1,2,3) -> (1203)
-    \endverbatim
- *
- *  This assumes that there will never be more than 100 patchlevels.
- */
-#define SDL_VERSIONNUM(X, Y, Z)                     \
-    ((X)*1000 + (Y)*100 + (Z))
-
-/**
- *  This is the version number macro for the current SDL version.
- */
-#define SDL_COMPILEDVERSION \
-    SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL)
-
-/**
- *  This macro will evaluate to true if compiled with SDL at least X.Y.Z.
- */
-#define SDL_VERSION_ATLEAST(X, Y, Z) \
-    (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z))
-
-/**
- *  \brief Get the version of SDL that is linked against your program.
- *
- *  If you are linking to SDL dynamically, then it is possible that the
- *  current version will be different than the version you compiled against.
- *  This function returns the current version, while SDL_VERSION() is a
- *  macro that tells you what version you compiled with.
- *
- *  \code
- *  SDL_version compiled;
- *  SDL_version linked;
- *
- *  SDL_VERSION(&compiled);
- *  SDL_GetVersion(&linked);
- *  printf("We compiled against SDL version %d.%d.%d ...\n",
- *         compiled.major, compiled.minor, compiled.patch);
- *  printf("But we linked against SDL version %d.%d.%d.\n",
- *         linked.major, linked.minor, linked.patch);
- *  \endcode
- *
- *  This function may be called safely at any time, even before SDL_Init().
- *
- *  \sa SDL_VERSION
- */
-extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver);
-
-/**
- *  \brief Get the code revision of SDL that is linked against your program.
- *
- *  Returns an arbitrary string (a hash value) uniquely identifying the
- *  exact revision of the SDL library in use, and is only useful in comparing
- *  against other revisions. It is NOT an incrementing number.
- */
-extern DECLSPEC const char *SDLCALL SDL_GetRevision(void);
-
-/**
- *  \brief Get the revision number of SDL that is linked against your program.
- *
- *  Returns a number uniquely identifying the exact revision of the SDL
- *  library in use. It is an incrementing number based on commits to
- *  hg.libsdl.org.
- */
-extern DECLSPEC int SDLCALL SDL_GetRevisionNumber(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_version_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_video.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_video.h
deleted file mode 100644 (file)
index 352afd4..0000000
+++ /dev/null
@@ -1,1276 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_video.h
- *
- *  Header file for SDL video functions.
- */
-
-#ifndef SDL_video_h_
-#define SDL_video_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_pixels.h"
-#include "SDL_rect.h"
-#include "SDL_surface.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief  The structure that defines a display mode
- *
- *  \sa SDL_GetNumDisplayModes()
- *  \sa SDL_GetDisplayMode()
- *  \sa SDL_GetDesktopDisplayMode()
- *  \sa SDL_GetCurrentDisplayMode()
- *  \sa SDL_GetClosestDisplayMode()
- *  \sa SDL_SetWindowDisplayMode()
- *  \sa SDL_GetWindowDisplayMode()
- */
-typedef struct
-{
-    Uint32 format;              /**< pixel format */
-    int w;                      /**< width, in screen coordinates */
-    int h;                      /**< height, in screen coordinates */
-    int refresh_rate;           /**< refresh rate (or zero for unspecified) */
-    void *driverdata;           /**< driver-specific data, initialize to 0 */
-} SDL_DisplayMode;
-
-/**
- *  \brief The type used to identify a window
- *
- *  \sa SDL_CreateWindow()
- *  \sa SDL_CreateWindowFrom()
- *  \sa SDL_DestroyWindow()
- *  \sa SDL_GetWindowData()
- *  \sa SDL_GetWindowFlags()
- *  \sa SDL_GetWindowGrab()
- *  \sa SDL_GetWindowPosition()
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_GetWindowTitle()
- *  \sa SDL_HideWindow()
- *  \sa SDL_MaximizeWindow()
- *  \sa SDL_MinimizeWindow()
- *  \sa SDL_RaiseWindow()
- *  \sa SDL_RestoreWindow()
- *  \sa SDL_SetWindowData()
- *  \sa SDL_SetWindowFullscreen()
- *  \sa SDL_SetWindowGrab()
- *  \sa SDL_SetWindowIcon()
- *  \sa SDL_SetWindowPosition()
- *  \sa SDL_SetWindowSize()
- *  \sa SDL_SetWindowBordered()
- *  \sa SDL_SetWindowResizable()
- *  \sa SDL_SetWindowTitle()
- *  \sa SDL_ShowWindow()
- */
-typedef struct SDL_Window SDL_Window;
-
-/**
- *  \brief The flags on a window
- *
- *  \sa SDL_GetWindowFlags()
- */
-typedef enum
-{
-    /* !!! FIXME: change this to name = (1<<x). */
-    SDL_WINDOW_FULLSCREEN = 0x00000001,         /**< fullscreen window */
-    SDL_WINDOW_OPENGL = 0x00000002,             /**< window usable with OpenGL context */
-    SDL_WINDOW_SHOWN = 0x00000004,              /**< window is visible */
-    SDL_WINDOW_HIDDEN = 0x00000008,             /**< window is not visible */
-    SDL_WINDOW_BORDERLESS = 0x00000010,         /**< no window decoration */
-    SDL_WINDOW_RESIZABLE = 0x00000020,          /**< window can be resized */
-    SDL_WINDOW_MINIMIZED = 0x00000040,          /**< window is minimized */
-    SDL_WINDOW_MAXIMIZED = 0x00000080,          /**< window is maximized */
-    SDL_WINDOW_INPUT_GRABBED = 0x00000100,      /**< window has grabbed input focus */
-    SDL_WINDOW_INPUT_FOCUS = 0x00000200,        /**< window has input focus */
-    SDL_WINDOW_MOUSE_FOCUS = 0x00000400,        /**< window has mouse focus */
-    SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ),
-    SDL_WINDOW_FOREIGN = 0x00000800,            /**< window not created by SDL */
-    SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000,      /**< window should be created in high-DPI mode if supported.
-                                                     On macOS NSHighResolutionCapable must be set true in the
-                                                     application's Info.plist for this to have any effect. */
-    SDL_WINDOW_MOUSE_CAPTURE = 0x00004000,      /**< window has mouse captured (unrelated to INPUT_GRABBED) */
-    SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000,      /**< window should always be above others */
-    SDL_WINDOW_SKIP_TASKBAR  = 0x00010000,      /**< window should not be added to the taskbar */
-    SDL_WINDOW_UTILITY       = 0x00020000,      /**< window should be treated as a utility window */
-    SDL_WINDOW_TOOLTIP       = 0x00040000,      /**< window should be treated as a tooltip */
-    SDL_WINDOW_POPUP_MENU    = 0x00080000,      /**< window should be treated as a popup menu */
-    SDL_WINDOW_VULKAN        = 0x10000000       /**< window usable for Vulkan surface */
-} SDL_WindowFlags;
-
-/**
- *  \brief Used to indicate that you don't care what the window position is.
- */
-#define SDL_WINDOWPOS_UNDEFINED_MASK    0x1FFF0000u
-#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X)  (SDL_WINDOWPOS_UNDEFINED_MASK|(X))
-#define SDL_WINDOWPOS_UNDEFINED         SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)
-#define SDL_WINDOWPOS_ISUNDEFINED(X)    \
-            (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK)
-
-/**
- *  \brief Used to indicate that the window position should be centered.
- */
-#define SDL_WINDOWPOS_CENTERED_MASK    0x2FFF0000u
-#define SDL_WINDOWPOS_CENTERED_DISPLAY(X)  (SDL_WINDOWPOS_CENTERED_MASK|(X))
-#define SDL_WINDOWPOS_CENTERED         SDL_WINDOWPOS_CENTERED_DISPLAY(0)
-#define SDL_WINDOWPOS_ISCENTERED(X)    \
-            (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK)
-
-/**
- *  \brief Event subtype for window events
- */
-typedef enum
-{
-    SDL_WINDOWEVENT_NONE,           /**< Never used */
-    SDL_WINDOWEVENT_SHOWN,          /**< Window has been shown */
-    SDL_WINDOWEVENT_HIDDEN,         /**< Window has been hidden */
-    SDL_WINDOWEVENT_EXPOSED,        /**< Window has been exposed and should be
-                                         redrawn */
-    SDL_WINDOWEVENT_MOVED,          /**< Window has been moved to data1, data2
-                                     */
-    SDL_WINDOWEVENT_RESIZED,        /**< Window has been resized to data1xdata2 */
-    SDL_WINDOWEVENT_SIZE_CHANGED,   /**< The window size has changed, either as
-                                         a result of an API call or through the
-                                         system or user changing the window size. */
-    SDL_WINDOWEVENT_MINIMIZED,      /**< Window has been minimized */
-    SDL_WINDOWEVENT_MAXIMIZED,      /**< Window has been maximized */
-    SDL_WINDOWEVENT_RESTORED,       /**< Window has been restored to normal size
-                                         and position */
-    SDL_WINDOWEVENT_ENTER,          /**< Window has gained mouse focus */
-    SDL_WINDOWEVENT_LEAVE,          /**< Window has lost mouse focus */
-    SDL_WINDOWEVENT_FOCUS_GAINED,   /**< Window has gained keyboard focus */
-    SDL_WINDOWEVENT_FOCUS_LOST,     /**< Window has lost keyboard focus */
-    SDL_WINDOWEVENT_CLOSE,          /**< The window manager requests that the window be closed */
-    SDL_WINDOWEVENT_TAKE_FOCUS,     /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */
-    SDL_WINDOWEVENT_HIT_TEST        /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */
-} SDL_WindowEventID;
-
-/**
- *  \brief Event subtype for display events
- */
-typedef enum
-{
-    SDL_DISPLAYEVENT_NONE,          /**< Never used */
-    SDL_DISPLAYEVENT_ORIENTATION    /**< Display orientation has changed to data1 */
-} SDL_DisplayEventID;
-
-typedef enum
-{
-    SDL_ORIENTATION_UNKNOWN,            /**< The display orientation can't be determined */
-    SDL_ORIENTATION_LANDSCAPE,          /**< The display is in landscape mode, with the right side up, relative to portrait mode */
-    SDL_ORIENTATION_LANDSCAPE_FLIPPED,  /**< The display is in landscape mode, with the left side up, relative to portrait mode */
-    SDL_ORIENTATION_PORTRAIT,           /**< The display is in portrait mode */
-    SDL_ORIENTATION_PORTRAIT_FLIPPED    /**< The display is in portrait mode, upside down */
-} SDL_DisplayOrientation;
-
-/**
- *  \brief An opaque handle to an OpenGL context.
- */
-typedef void *SDL_GLContext;
-
-/**
- *  \brief OpenGL configuration attributes
- */
-typedef enum
-{
-    SDL_GL_RED_SIZE,
-    SDL_GL_GREEN_SIZE,
-    SDL_GL_BLUE_SIZE,
-    SDL_GL_ALPHA_SIZE,
-    SDL_GL_BUFFER_SIZE,
-    SDL_GL_DOUBLEBUFFER,
-    SDL_GL_DEPTH_SIZE,
-    SDL_GL_STENCIL_SIZE,
-    SDL_GL_ACCUM_RED_SIZE,
-    SDL_GL_ACCUM_GREEN_SIZE,
-    SDL_GL_ACCUM_BLUE_SIZE,
-    SDL_GL_ACCUM_ALPHA_SIZE,
-    SDL_GL_STEREO,
-    SDL_GL_MULTISAMPLEBUFFERS,
-    SDL_GL_MULTISAMPLESAMPLES,
-    SDL_GL_ACCELERATED_VISUAL,
-    SDL_GL_RETAINED_BACKING,
-    SDL_GL_CONTEXT_MAJOR_VERSION,
-    SDL_GL_CONTEXT_MINOR_VERSION,
-    SDL_GL_CONTEXT_EGL,
-    SDL_GL_CONTEXT_FLAGS,
-    SDL_GL_CONTEXT_PROFILE_MASK,
-    SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
-    SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,
-    SDL_GL_CONTEXT_RELEASE_BEHAVIOR,
-    SDL_GL_CONTEXT_RESET_NOTIFICATION,
-    SDL_GL_CONTEXT_NO_ERROR
-} SDL_GLattr;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_PROFILE_CORE           = 0x0001,
-    SDL_GL_CONTEXT_PROFILE_COMPATIBILITY  = 0x0002,
-    SDL_GL_CONTEXT_PROFILE_ES             = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
-} SDL_GLprofile;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_DEBUG_FLAG              = 0x0001,
-    SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,
-    SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG      = 0x0004,
-    SDL_GL_CONTEXT_RESET_ISOLATION_FLAG    = 0x0008
-} SDL_GLcontextFlag;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE   = 0x0000,
-    SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH  = 0x0001
-} SDL_GLcontextReleaseFlag;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000,
-    SDL_GL_CONTEXT_RESET_LOSE_CONTEXT    = 0x0001
-} SDL_GLContextResetNotification;
-
-/* Function prototypes */
-
-/**
- *  \brief Get the number of video drivers compiled into SDL
- *
- *  \sa SDL_GetVideoDriver()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);
-
-/**
- *  \brief Get the name of a built in video driver.
- *
- *  \note The video drivers are presented in the order in which they are
- *        normally checked during initialization.
- *
- *  \sa SDL_GetNumVideoDrivers()
- */
-extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);
-
-/**
- *  \brief Initialize the video subsystem, optionally specifying a video driver.
- *
- *  \param driver_name Initialize a specific driver by name, or NULL for the
- *                     default video driver.
- *
- *  \return 0 on success, -1 on error
- *
- *  This function initializes the video subsystem; setting up a connection
- *  to the window manager, etc, and determines the available display modes
- *  and pixel formats, but does not initialize a window or graphics mode.
- *
- *  \sa SDL_VideoQuit()
- */
-extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name);
-
-/**
- *  \brief Shuts down the video subsystem.
- *
- *  This function closes all windows, and restores the original video mode.
- *
- *  \sa SDL_VideoInit()
- */
-extern DECLSPEC void SDLCALL SDL_VideoQuit(void);
-
-/**
- *  \brief Returns the name of the currently initialized video driver.
- *
- *  \return The name of the current video driver or NULL if no driver
- *          has been initialized
- *
- *  \sa SDL_GetNumVideoDrivers()
- *  \sa SDL_GetVideoDriver()
- */
-extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void);
-
-/**
- *  \brief Returns the number of available video displays.
- *
- *  \sa SDL_GetDisplayBounds()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);
-
-/**
- *  \brief Get the name of a display in UTF-8 encoding
- *
- *  \return The name of a display, or NULL for an invalid display index.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex);
-
-/**
- *  \brief Get the desktop area represented by a display, with the primary
- *         display located at 0,0
- *
- *  \return 0 on success, or -1 if the index is out of range.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect);
-
-/**
- *  \brief Get the usable desktop area represented by a display, with the
- *         primary display located at 0,0
- *
- *  This is the same area as SDL_GetDisplayBounds() reports, but with portions
- *  reserved by the system removed. For example, on Mac OS X, this subtracts
- *  the area occupied by the menu bar and dock.
- *
- *  Setting a window to be fullscreen generally bypasses these unusable areas,
- *  so these are good guidelines for the maximum space available to a
- *  non-fullscreen window.
- *
- *  \return 0 on success, or -1 if the index is out of range.
- *
- *  \sa SDL_GetDisplayBounds()
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect);
-
-/**
- *  \brief Get the dots/pixels-per-inch for a display
- *
- *  \note Diagonal, horizontal and vertical DPI can all be optionally
- *        returned if the parameter is non-NULL.
- *
- *  \return 0 on success, or -1 if no DPI information is available or the index is out of range.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi);
-
-/**
- *  \brief Get the orientation of a display
- *
- *  \return The orientation of the display, or SDL_ORIENTATION_UNKNOWN if it isn't available.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex);
-
-/**
- *  \brief Returns the number of available display modes.
- *
- *  \sa SDL_GetDisplayMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);
-
-/**
- *  \brief Fill in information about a specific display mode.
- *
- *  \note The display modes are sorted in this priority:
- *        \li bits per pixel -> more colors to fewer colors
- *        \li width -> largest to smallest
- *        \li height -> largest to smallest
- *        \li refresh rate -> highest to lowest
- *
- *  \sa SDL_GetNumDisplayModes()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,
-                                               SDL_DisplayMode * mode);
-
-/**
- *  \brief Fill in information about the desktop display mode.
- */
-extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode);
-
-/**
- *  \brief Fill in information about the current display mode.
- */
-extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode);
-
-
-/**
- *  \brief Get the closest match to the requested display mode.
- *
- *  \param displayIndex The index of display from which mode should be queried.
- *  \param mode The desired display mode
- *  \param closest A pointer to a display mode to be filled in with the closest
- *                 match of the available display modes.
- *
- *  \return The passed in value \c closest, or NULL if no matching video mode
- *          was available.
- *
- *  The available display modes are scanned, and \c closest is filled in with the
- *  closest mode matching the requested mode and returned.  The mode format and
- *  refresh_rate default to the desktop mode if they are 0.  The modes are
- *  scanned with size being first priority, format being second priority, and
- *  finally checking the refresh_rate.  If all the available modes are too
- *  small, then NULL is returned.
- *
- *  \sa SDL_GetNumDisplayModes()
- *  \sa SDL_GetDisplayMode()
- */
-extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest);
-
-/**
- *  \brief Get the display index associated with a window.
- *
- *  \return the display index of the display containing the center of the
- *          window, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window);
-
-/**
- *  \brief Set the display mode used when a fullscreen window is visible.
- *
- *  By default the window's dimensions and the desktop format and refresh rate
- *  are used.
- *
- *  \param window The window for which the display mode should be set.
- *  \param mode The mode to use, or NULL for the default mode.
- *
- *  \return 0 on success, or -1 if setting the display mode failed.
- *
- *  \sa SDL_GetWindowDisplayMode()
- *  \sa SDL_SetWindowFullscreen()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,
-                                                     const SDL_DisplayMode
-                                                         * mode);
-
-/**
- *  \brief Fill in information about the display mode used when a fullscreen
- *         window is visible.
- *
- *  \sa SDL_SetWindowDisplayMode()
- *  \sa SDL_SetWindowFullscreen()
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,
-                                                     SDL_DisplayMode * mode);
-
-/**
- *  \brief Get the pixel format associated with the window.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
-
-/**
- *  \brief Create a window with the specified position, dimensions, and flags.
- *
- *  \param title The title of the window, in UTF-8 encoding.
- *  \param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param w     The width of the window, in screen coordinates.
- *  \param h     The height of the window, in screen coordinates.
- *  \param flags The flags for the window, a mask of any of the following:
- *               ::SDL_WINDOW_FULLSCREEN,    ::SDL_WINDOW_OPENGL,
- *               ::SDL_WINDOW_HIDDEN,        ::SDL_WINDOW_BORDERLESS,
- *               ::SDL_WINDOW_RESIZABLE,     ::SDL_WINDOW_MAXIMIZED,
- *               ::SDL_WINDOW_MINIMIZED,     ::SDL_WINDOW_INPUT_GRABBED,
- *               ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN.
- *
- *  \return The created window, or NULL if window creation failed.
- *
- *  If the window is created with the SDL_WINDOW_ALLOW_HIGHDPI flag, its size
- *  in pixels may differ from its size in screen coordinates on platforms with
- *  high-DPI support (e.g. iOS and Mac OS X). Use SDL_GetWindowSize() to query
- *  the client area's size in screen coordinates, and SDL_GL_GetDrawableSize(),
- *  SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to query the
- *  drawable size in pixels.
- *
- *  If the window is created with any of the SDL_WINDOW_OPENGL or
- *  SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function
- *  (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the
- *  corresponding UnloadLibrary function is called by SDL_DestroyWindow().
- *
- *  If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver,
- *  SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.
- *
- *  \note On non-Apple devices, SDL requires you to either not link to the
- *        Vulkan loader or link to a dynamic library version. This limitation
- *        may be removed in a future version of SDL.
- *
- *  \sa SDL_DestroyWindow()
- *  \sa SDL_GL_LoadLibrary()
- *  \sa SDL_Vulkan_LoadLibrary()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
-                                                      int x, int y, int w,
-                                                      int h, Uint32 flags);
-
-/**
- *  \brief Create an SDL window from an existing native window.
- *
- *  \param data A pointer to driver-dependent window creation data
- *
- *  \return The created window, or NULL if window creation failed.
- *
- *  \sa SDL_DestroyWindow()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
-
-/**
- *  \brief Get the numeric ID of a window, for logging purposes.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
-
-/**
- *  \brief Get a window from a stored ID, or NULL if it doesn't exist.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
-
-/**
- *  \brief Get the window flags.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);
-
-/**
- *  \brief Set the title of a window, in UTF-8 format.
- *
- *  \sa SDL_GetWindowTitle()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,
-                                                const char *title);
-
-/**
- *  \brief Get the title of a window, in UTF-8 format.
- *
- *  \sa SDL_SetWindowTitle()
- */
-extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);
-
-/**
- *  \brief Set the icon for a window.
- *
- *  \param window The window for which the icon should be set.
- *  \param icon The icon for the window.
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,
-                                               SDL_Surface * icon);
-
-/**
- *  \brief Associate an arbitrary named pointer with a window.
- *
- *  \param window   The window to associate with the pointer.
- *  \param name     The name of the pointer.
- *  \param userdata The associated pointer.
- *
- *  \return The previous value associated with 'name'
- *
- *  \note The name is case-sensitive.
- *
- *  \sa SDL_GetWindowData()
- */
-extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,
-                                                const char *name,
-                                                void *userdata);
-
-/**
- *  \brief Retrieve the data pointer associated with a window.
- *
- *  \param window   The window to query.
- *  \param name     The name of the pointer.
- *
- *  \return The value associated with 'name'
- *
- *  \sa SDL_SetWindowData()
- */
-extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,
-                                                const char *name);
-
-/**
- *  \brief Set the position of a window.
- *
- *  \param window   The window to reposition.
- *  \param x        The x coordinate of the window in screen coordinates, or
- *                  ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
- *  \param y        The y coordinate of the window in screen coordinates, or
- *                  ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
- *
- *  \note The window coordinate origin is the upper left of the display.
- *
- *  \sa SDL_GetWindowPosition()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,
-                                                   int x, int y);
-
-/**
- *  \brief Get the position of a window.
- *
- *  \param window   The window to query.
- *  \param x        Pointer to variable for storing the x position, in screen
- *                  coordinates. May be NULL.
- *  \param y        Pointer to variable for storing the y position, in screen
- *                  coordinates. May be NULL.
- *
- *  \sa SDL_SetWindowPosition()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,
-                                                   int *x, int *y);
-
-/**
- *  \brief Set the size of a window's client area.
- *
- *  \param window   The window to resize.
- *  \param w        The width of the window, in screen coordinates. Must be >0.
- *  \param h        The height of the window, in screen coordinates. Must be >0.
- *
- *  \note Fullscreen windows automatically match the size of the display mode,
- *        and you should use SDL_SetWindowDisplayMode() to change their size.
- *
- *  The window size in screen coordinates may differ from the size in pixels, if
- *  the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
- *  high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
- *  SDL_GetRendererOutputSize() to get the real client area size in pixels.
- *
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_SetWindowDisplayMode()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,
-                                               int h);
-
-/**
- *  \brief Get the size of a window's client area.
- *
- *  \param window   The window to query.
- *  \param w        Pointer to variable for storing the width, in screen
- *                  coordinates. May be NULL.
- *  \param h        Pointer to variable for storing the height, in screen
- *                  coordinates. May be NULL.
- *
- *  The window size in screen coordinates may differ from the size in pixels, if
- *  the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
- *  high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
- *  SDL_GetRendererOutputSize() to get the real client area size in pixels.
- *
- *  \sa SDL_SetWindowSize()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,
-                                               int *h);
-
-/**
- *  \brief Get the size of a window's borders (decorations) around the client area.
- *
- *  \param window The window to query.
- *  \param top Pointer to variable for storing the size of the top border. NULL is permitted.
- *  \param left Pointer to variable for storing the size of the left border. NULL is permitted.
- *  \param bottom Pointer to variable for storing the size of the bottom border. NULL is permitted.
- *  \param right Pointer to variable for storing the size of the right border. NULL is permitted.
- *
- *  \return 0 on success, or -1 if getting this information is not supported.
- *
- *  \note if this function fails (returns -1), the size values will be
- *        initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as
- *        if the window in question was borderless.
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window,
-                                                     int *top, int *left,
-                                                     int *bottom, int *right);
-
-/**
- *  \brief Set the minimum size of a window's client area.
- *
- *  \param window    The window to set a new minimum size.
- *  \param min_w     The minimum width of the window, must be >0
- *  \param min_h     The minimum height of the window, must be >0
- *
- *  \note You can't change the minimum size of a fullscreen window, it
- *        automatically matches the size of the display mode.
- *
- *  \sa SDL_GetWindowMinimumSize()
- *  \sa SDL_SetWindowMaximumSize()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window,
-                                                      int min_w, int min_h);
-
-/**
- *  \brief Get the minimum size of a window's client area.
- *
- *  \param window   The window to query.
- *  \param w        Pointer to variable for storing the minimum width, may be NULL
- *  \param h        Pointer to variable for storing the minimum height, may be NULL
- *
- *  \sa SDL_GetWindowMaximumSize()
- *  \sa SDL_SetWindowMinimumSize()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window,
-                                                      int *w, int *h);
-
-/**
- *  \brief Set the maximum size of a window's client area.
- *
- *  \param window    The window to set a new maximum size.
- *  \param max_w     The maximum width of the window, must be >0
- *  \param max_h     The maximum height of the window, must be >0
- *
- *  \note You can't change the maximum size of a fullscreen window, it
- *        automatically matches the size of the display mode.
- *
- *  \sa SDL_GetWindowMaximumSize()
- *  \sa SDL_SetWindowMinimumSize()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window,
-                                                      int max_w, int max_h);
-
-/**
- *  \brief Get the maximum size of a window's client area.
- *
- *  \param window   The window to query.
- *  \param w        Pointer to variable for storing the maximum width, may be NULL
- *  \param h        Pointer to variable for storing the maximum height, may be NULL
- *
- *  \sa SDL_GetWindowMinimumSize()
- *  \sa SDL_SetWindowMaximumSize()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window,
-                                                      int *w, int *h);
-
-/**
- *  \brief Set the border state of a window.
- *
- *  This will add or remove the window's SDL_WINDOW_BORDERLESS flag and
- *  add or remove the border from the actual window. This is a no-op if the
- *  window's border already matches the requested state.
- *
- *  \param window The window of which to change the border state.
- *  \param bordered SDL_FALSE to remove border, SDL_TRUE to add border.
- *
- *  \note You can't change the border state of a fullscreen window.
- *
- *  \sa SDL_GetWindowFlags()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window,
-                                                   SDL_bool bordered);
-
-/**
- *  \brief Set the user-resizable state of a window.
- *
- *  This will add or remove the window's SDL_WINDOW_RESIZABLE flag and
- *  allow/disallow user resizing of the window. This is a no-op if the
- *  window's resizable state already matches the requested state.
- *
- *  \param window The window of which to change the resizable state.
- *  \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow.
- *
- *  \note You can't change the resizable state of a fullscreen window.
- *
- *  \sa SDL_GetWindowFlags()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window,
-                                                    SDL_bool resizable);
-
-/**
- *  \brief Show a window.
- *
- *  \sa SDL_HideWindow()
- */
-extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);
-
-/**
- *  \brief Hide a window.
- *
- *  \sa SDL_ShowWindow()
- */
-extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);
-
-/**
- *  \brief Raise a window above other windows and set the input focus.
- */
-extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);
-
-/**
- *  \brief Make a window as large as possible.
- *
- *  \sa SDL_RestoreWindow()
- */
-extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);
-
-/**
- *  \brief Minimize a window to an iconic representation.
- *
- *  \sa SDL_RestoreWindow()
- */
-extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);
-
-/**
- *  \brief Restore the size and position of a minimized or maximized window.
- *
- *  \sa SDL_MaximizeWindow()
- *  \sa SDL_MinimizeWindow()
- */
-extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);
-
-/**
- *  \brief Set a window's fullscreen state.
- *
- *  \return 0 on success, or -1 if setting the display mode failed.
- *
- *  \sa SDL_SetWindowDisplayMode()
- *  \sa SDL_GetWindowDisplayMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,
-                                                    Uint32 flags);
-
-/**
- *  \brief Get the SDL surface associated with the window.
- *
- *  \return The window's framebuffer surface, or NULL on error.
- *
- *  A new surface will be created with the optimal format for the window,
- *  if necessary. This surface will be freed when the window is destroyed.
- *
- *  \note You may not combine this with 3D or the rendering API on this window.
- *
- *  \sa SDL_UpdateWindowSurface()
- *  \sa SDL_UpdateWindowSurfaceRects()
- */
-extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);
-
-/**
- *  \brief Copy the window surface to the screen.
- *
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_GetWindowSurface()
- *  \sa SDL_UpdateWindowSurfaceRects()
- */
-extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);
-
-/**
- *  \brief Copy a number of rectangles on the window surface to the screen.
- *
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_GetWindowSurface()
- *  \sa SDL_UpdateWindowSurface()
- */
-extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,
-                                                         const SDL_Rect * rects,
-                                                         int numrects);
-
-/**
- *  \brief Set a window's input grab mode.
- *
- *  \param window The window for which the input grab mode should be set.
- *  \param grabbed This is SDL_TRUE to grab input, and SDL_FALSE to release input.
- *
- *  If the caller enables a grab while another window is currently grabbed,
- *  the other window loses its grab in favor of the caller's window.
- *
- *  \sa SDL_GetWindowGrab()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,
-                                               SDL_bool grabbed);
-
-/**
- *  \brief Get a window's input grab mode.
- *
- *  \return This returns SDL_TRUE if input is grabbed, and SDL_FALSE otherwise.
- *
- *  \sa SDL_SetWindowGrab()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);
-
-/**
- *  \brief Get the window that currently has an input grab enabled.
- *
- *  \return This returns the window if input is grabbed, and NULL otherwise.
- *
- *  \sa SDL_SetWindowGrab()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void);
-
-/**
- *  \brief Set the brightness (gamma correction) for a window.
- *
- *  \return 0 on success, or -1 if setting the brightness isn't supported.
- *
- *  \sa SDL_GetWindowBrightness()
- *  \sa SDL_SetWindowGammaRamp()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness);
-
-/**
- *  \brief Get the brightness (gamma correction) for a window.
- *
- *  \return The last brightness value passed to SDL_SetWindowBrightness()
- *
- *  \sa SDL_SetWindowBrightness()
- */
-extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);
-
-/**
- *  \brief Set the opacity for a window
- *
- *  \param window The window which will be made transparent or opaque
- *  \param opacity Opacity (0.0f - transparent, 1.0f - opaque) This will be
- *                 clamped internally between 0.0f and 1.0f.
- *
- *  \return 0 on success, or -1 if setting the opacity isn't supported.
- *
- *  \sa SDL_GetWindowOpacity()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity);
-
-/**
- *  \brief Get the opacity of a window.
- *
- *  If transparency isn't supported on this platform, opacity will be reported
- *  as 1.0f without error.
- *
- *  \param window The window in question.
- *  \param out_opacity Opacity (0.0f - transparent, 1.0f - opaque)
- *
- *  \return 0 on success, or -1 on error (invalid window, etc).
- *
- *  \sa SDL_SetWindowOpacity()
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity);
-
-/**
- *  \brief Sets the window as a modal for another window (TODO: reconsider this function and/or its name)
- *
- *  \param modal_window The window that should be modal
- *  \param parent_window The parent window
- *
- *  \return 0 on success, or -1 otherwise.
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window);
-
-/**
- *  \brief Explicitly sets input focus to the window.
- *
- *  You almost certainly want SDL_RaiseWindow() instead of this function. Use
- *  this with caution, as you might give focus to a window that's completely
- *  obscured by other windows.
- *
- *  \param window The window that should get the input focus
- *
- *  \return 0 on success, or -1 otherwise.
- *  \sa SDL_RaiseWindow()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
-
-/**
- *  \brief Set the gamma ramp for a window.
- *
- *  \param window The window for which the gamma ramp should be set.
- *  \param red The translation table for the red channel, or NULL.
- *  \param green The translation table for the green channel, or NULL.
- *  \param blue The translation table for the blue channel, or NULL.
- *
- *  \return 0 on success, or -1 if gamma ramps are unsupported.
- *
- *  Set the gamma translation table for the red, green, and blue channels
- *  of the video hardware.  Each table is an array of 256 16-bit quantities,
- *  representing a mapping between the input and output for that channel.
- *  The input is the index into the array, and the output is the 16-bit
- *  gamma value at that index, scaled to the output color precision.
- *
- *  \sa SDL_GetWindowGammaRamp()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,
-                                                   const Uint16 * red,
-                                                   const Uint16 * green,
-                                                   const Uint16 * blue);
-
-/**
- *  \brief Get the gamma ramp for a window.
- *
- *  \param window The window from which the gamma ramp should be queried.
- *  \param red   A pointer to a 256 element array of 16-bit quantities to hold
- *               the translation table for the red channel, or NULL.
- *  \param green A pointer to a 256 element array of 16-bit quantities to hold
- *               the translation table for the green channel, or NULL.
- *  \param blue  A pointer to a 256 element array of 16-bit quantities to hold
- *               the translation table for the blue channel, or NULL.
- *
- *  \return 0 on success, or -1 if gamma ramps are unsupported.
- *
- *  \sa SDL_SetWindowGammaRamp()
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,
-                                                   Uint16 * red,
-                                                   Uint16 * green,
-                                                   Uint16 * blue);
-
-/**
- *  \brief Possible return values from the SDL_HitTest callback.
- *
- *  \sa SDL_HitTest
- */
-typedef enum
-{
-    SDL_HITTEST_NORMAL,  /**< Region is normal. No special properties. */
-    SDL_HITTEST_DRAGGABLE,  /**< Region can drag entire window. */
-    SDL_HITTEST_RESIZE_TOPLEFT,
-    SDL_HITTEST_RESIZE_TOP,
-    SDL_HITTEST_RESIZE_TOPRIGHT,
-    SDL_HITTEST_RESIZE_RIGHT,
-    SDL_HITTEST_RESIZE_BOTTOMRIGHT,
-    SDL_HITTEST_RESIZE_BOTTOM,
-    SDL_HITTEST_RESIZE_BOTTOMLEFT,
-    SDL_HITTEST_RESIZE_LEFT
-} SDL_HitTestResult;
-
-/**
- *  \brief Callback used for hit-testing.
- *
- *  \sa SDL_SetWindowHitTest
- */
-typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win,
-                                                 const SDL_Point *area,
-                                                 void *data);
-
-/**
- *  \brief Provide a callback that decides if a window region has special properties.
- *
- *  Normally windows are dragged and resized by decorations provided by the
- *  system window manager (a title bar, borders, etc), but for some apps, it
- *  makes sense to drag them from somewhere else inside the window itself; for
- *  example, one might have a borderless window that wants to be draggable
- *  from any part, or simulate its own title bar, etc.
- *
- *  This function lets the app provide a callback that designates pieces of
- *  a given window as special. This callback is run during event processing
- *  if we need to tell the OS to treat a region of the window specially; the
- *  use of this callback is known as "hit testing."
- *
- *  Mouse input may not be delivered to your application if it is within
- *  a special area; the OS will often apply that input to moving the window or
- *  resizing the window and not deliver it to the application.
- *
- *  Specifying NULL for a callback disables hit-testing. Hit-testing is
- *  disabled by default.
- *
- *  Platforms that don't support this functionality will return -1
- *  unconditionally, even if you're attempting to disable hit-testing.
- *
- *  Your callback may fire at any time, and its firing does not indicate any
- *  specific behavior (for example, on Windows, this certainly might fire
- *  when the OS is deciding whether to drag your window, but it fires for lots
- *  of other reasons, too, some unrelated to anything you probably care about
- *  _and when the mouse isn't actually at the location it is testing_).
- *  Since this can fire at any time, you should try to keep your callback
- *  efficient, devoid of allocations, etc.
- *
- *  \param window The window to set hit-testing on.
- *  \param callback The callback to call when doing a hit-test.
- *  \param callback_data An app-defined void pointer passed to the callback.
- *  \return 0 on success, -1 on error (including unsupported).
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,
-                                                 SDL_HitTest callback,
-                                                 void *callback_data);
-
-/**
- *  \brief Destroy a window.
- */
-extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window);
-
-
-/**
- *  \brief Returns whether the screensaver is currently enabled (default off).
- *
- *  \sa SDL_EnableScreenSaver()
- *  \sa SDL_DisableScreenSaver()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void);
-
-/**
- *  \brief Allow the screen to be blanked by a screensaver
- *
- *  \sa SDL_IsScreenSaverEnabled()
- *  \sa SDL_DisableScreenSaver()
- */
-extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void);
-
-/**
- *  \brief Prevent the screen from being blanked by a screensaver
- *
- *  \sa SDL_IsScreenSaverEnabled()
- *  \sa SDL_EnableScreenSaver()
- */
-extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);
-
-
-/**
- *  \name OpenGL support functions
- */
-/* @{ */
-
-/**
- *  \brief Dynamically load an OpenGL library.
- *
- *  \param path The platform dependent OpenGL library name, or NULL to open the
- *              default OpenGL library.
- *
- *  \return 0 on success, or -1 if the library couldn't be loaded.
- *
- *  This should be done after initializing the video driver, but before
- *  creating any OpenGL windows.  If no OpenGL library is loaded, the default
- *  library will be loaded upon creation of the first OpenGL window.
- *
- *  \note If you do this, you need to retrieve all of the GL functions used in
- *        your program from the dynamic library using SDL_GL_GetProcAddress().
- *
- *  \sa SDL_GL_GetProcAddress()
- *  \sa SDL_GL_UnloadLibrary()
- */
-extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
-
-/**
- *  \brief Get the address of an OpenGL function.
- */
-extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc);
-
-/**
- *  \brief Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
- *
- *  \sa SDL_GL_LoadLibrary()
- */
-extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);
-
-/**
- *  \brief Return true if an OpenGL extension is supported for the current
- *         context.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char
-                                                           *extension);
-
-/**
- *  \brief Reset all previously set OpenGL context attributes to their default values
- */
-extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);
-
-/**
- *  \brief Set an OpenGL window attribute before window creation.
- *
- *  \return 0 on success, or -1 if the attribute could not be set.
- */
-extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);
-
-/**
- *  \brief Get the actual value for an attribute from the current context.
- *
- *  \return 0 on success, or -1 if the attribute could not be retrieved.
- *          The integer at \c value will be modified in either case.
- */
-extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);
-
-/**
- *  \brief Create an OpenGL context for use with an OpenGL window, and make it
- *         current.
- *
- *  \sa SDL_GL_DeleteContext()
- */
-extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *
-                                                           window);
-
-/**
- *  \brief Set up an OpenGL context for rendering into an OpenGL window.
- *
- *  \note The context must have been created with a compatible window.
- */
-extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window,
-                                               SDL_GLContext context);
-
-/**
- *  \brief Get the currently active OpenGL window.
- */
-extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void);
-
-/**
- *  \brief Get the currently active OpenGL context.
- */
-extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void);
-
-/**
- *  \brief Get the size of a window's underlying drawable in pixels (for use
- *         with glViewport).
- *
- *  \param window   Window from which the drawable size should be queried
- *  \param w        Pointer to variable for storing the width in pixels, may be NULL
- *  \param h        Pointer to variable for storing the height in pixels, may be NULL
- *
- * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
- * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a
- * platform with high-DPI support (Apple calls this "Retina"), and not disabled
- * by the SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
- *
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_CreateWindow()
- */
-extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,
-                                                    int *h);
-
-/**
- *  \brief Set the swap interval for the current OpenGL context.
- *
- *  \param interval 0 for immediate updates, 1 for updates synchronized with the
- *                  vertical retrace. If the system supports it, you may
- *                  specify -1 to allow late swaps to happen immediately
- *                  instead of waiting for the next retrace.
- *
- *  \return 0 on success, or -1 if setting the swap interval is not supported.
- *
- *  \sa SDL_GL_GetSwapInterval()
- */
-extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval);
-
-/**
- *  \brief Get the swap interval for the current OpenGL context.
- *
- *  \return 0 if there is no vertical retrace synchronization, 1 if the buffer
- *          swap is synchronized with the vertical retrace, and -1 if late
- *          swaps happen immediately instead of waiting for the next retrace.
- *          If the system can't determine the swap interval, or there isn't a
- *          valid current context, this will return 0 as a safe default.
- *
- *  \sa SDL_GL_SetSwapInterval()
- */
-extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
-
-/**
- * \brief Swap the OpenGL buffers for a window, if double-buffering is
- *        supported.
- */
-extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);
-
-/**
- *  \brief Delete an OpenGL context.
- *
- *  \sa SDL_GL_CreateContext()
- */
-extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context);
-
-/* @} *//* OpenGL support functions */
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_video_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/SDL_vulkan.h b/misc/builddeps/win64/sdl/include/SDL2/SDL_vulkan.h
deleted file mode 100644 (file)
index d69a436..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 2017, Mark Callow
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_vulkan.h
- *
- *  Header file for functions to creating Vulkan surfaces on SDL windows.
- */
-
-#ifndef SDL_vulkan_h_
-#define SDL_vulkan_h_
-
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Avoid including vulkan.h, don't define VkInstance if it's already included */
-#ifdef VULKAN_H_
-#define NO_SDL_VULKAN_TYPEDEFS
-#endif
-#ifndef NO_SDL_VULKAN_TYPEDEFS
-#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
-
-#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
-#else
-#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
-#endif
-
-VK_DEFINE_HANDLE(VkInstance)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
-
-#endif /* !NO_SDL_VULKAN_TYPEDEFS */
-
-typedef VkInstance SDL_vulkanInstance;
-typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */
-
-/**
- *  \name Vulkan support functions
- *
- *  \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API
- *        is compatable with Tizen's implementation of Vulkan in SDL.
- */
-/* @{ */
-
-/**
- *  \brief Dynamically load a Vulkan loader library.
- *
- *  \param [in] path The platform dependent Vulkan loader library name, or
- *              \c NULL.
- *
- *  \return \c 0 on success, or \c -1 if the library couldn't be loaded.
- *
- *  If \a path is NULL SDL will use the value of the environment variable
- *  \c SDL_VULKAN_LIBRARY, if set, otherwise it loads the default Vulkan
- *  loader library.
- *
- *  This should be called after initializing the video driver, but before
- *  creating any Vulkan windows. If no Vulkan loader library is loaded, the
- *  default library will be loaded upon creation of the first Vulkan window.
- *
- *  \note It is fairly common for Vulkan applications to link with \a libvulkan
- *        instead of explicitly loading it at run time. This will work with
- *        SDL provided the application links to a dynamic library and both it
- *        and SDL use the same search path.
- *
- *  \note If you specify a non-NULL \c path, an application should retrieve all
- *        of the Vulkan functions it uses from the dynamic library using
- *        \c SDL_Vulkan_GetVkGetInstanceProcAddr() unless you can guarantee
- *        \c path points to the same vulkan loader library the application
- *        linked to.
- *
- *  \note On Apple devices, if \a path is NULL, SDL will attempt to find
- *        the vkGetInstanceProcAddr address within all the mach-o images of
- *        the current process. This is because it is fairly common for Vulkan
- *        applications to link with libvulkan (and historically MoltenVK was
- *        provided as a static library). If it is not found then, on macOS, SDL
- *        will attempt to load \c vulkan.framework/vulkan, \c libvulkan.1.dylib,
- *        followed by \c libvulkan.dylib, in that order.
- *        On iOS SDL will attempt to load \c libvulkan.dylib only. Applications
- *        using a dynamic framework or .dylib must ensure it is included in its
- *        application bundle.
- *
- *  \note On non-Apple devices, application linking with a static libvulkan is
- *        not supported. Either do not link to the Vulkan loader or link to a
- *        dynamic library version.
- *
- *  \note This function will fail if there are no working Vulkan drivers
- *        installed.
- *
- *  \sa SDL_Vulkan_GetVkGetInstanceProcAddr()
- *  \sa SDL_Vulkan_UnloadLibrary()
- */
-extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path);
-
-/**
- *  \brief Get the address of the \c vkGetInstanceProcAddr function.
- *
- *  \note This should be called after either calling SDL_Vulkan_LoadLibrary
- *        or creating an SDL_Window with the SDL_WINDOW_VULKAN flag.
- */
-extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void);
-
-/**
- *  \brief Unload the Vulkan loader library previously loaded by
- *         \c SDL_Vulkan_LoadLibrary().
- *
- *  \sa SDL_Vulkan_LoadLibrary()
- */
-extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
-
-/**
- *  \brief Get the names of the Vulkan instance extensions needed to create
- *         a surface with \c SDL_Vulkan_CreateSurface().
- *
- *  \param [in]     \c NULL or window Window for which the required Vulkan instance
- *                  extensions should be retrieved
- *  \param [in,out] pCount pointer to an \c unsigned related to the number of
- *                  required Vulkan instance extensions
- *  \param [out]    pNames \c NULL or a pointer to an array to be filled with the
- *                  required Vulkan instance extensions
- *
- *  \return \c SDL_TRUE on success, \c SDL_FALSE on error.
- *
- *  If \a pNames is \c NULL, then the number of required Vulkan instance
- *  extensions is returned in pCount. Otherwise, \a pCount must point to a
- *  variable set to the number of elements in the \a pNames array, and on
- *  return the variable is overwritten with the number of names actually
- *  written to \a pNames. If \a pCount is less than the number of required
- *  extensions, at most \a pCount structures will be written. If \a pCount
- *  is smaller than the number of required extensions, \c SDL_FALSE will be
- *  returned instead of \c SDL_TRUE, to indicate that not all the required
- *  extensions were returned.
- *
- *  \note If \c window is not NULL, it will be checked against its creation
- *        flags to ensure that the Vulkan flag is present. This parameter
- *        will be removed in a future major release.
- *
- *  \note The returned list of extensions will contain \c VK_KHR_surface
- *        and zero or more platform specific extensions
- *
- *  \note The extension names queried here must be enabled when calling
- *        VkCreateInstance, otherwise surface creation will fail.
- *
- *  \note \c window should have been created with the \c SDL_WINDOW_VULKAN flag
- *        or be \c NULL
- *
- *  \code
- *  unsigned int count;
- *  // get count of required extensions
- *  if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, NULL))
- *      handle_error();
- *
- *  static const char *const additionalExtensions[] =
- *  {
- *      VK_EXT_DEBUG_REPORT_EXTENSION_NAME, // example additional extension
- *  };
- *  size_t additionalExtensionsCount = sizeof(additionalExtensions) / sizeof(additionalExtensions[0]);
- *  size_t extensionCount = count + additionalExtensionsCount;
- *  const char **names = malloc(sizeof(const char *) * extensionCount);
- *  if(!names)
- *      handle_error();
- *
- *  // get names of required extensions
- *  if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, names))
- *      handle_error();
- *
- *  // copy additional extensions after required extensions
- *  for(size_t i = 0; i < additionalExtensionsCount; i++)
- *      names[i + count] = additionalExtensions[i];
- *
- *  VkInstanceCreateInfo instanceCreateInfo = {};
- *  instanceCreateInfo.enabledExtensionCount = extensionCount;
- *  instanceCreateInfo.ppEnabledExtensionNames = names;
- *  // fill in rest of instanceCreateInfo
- *
- *  VkInstance instance;
- *  // create the Vulkan instance
- *  VkResult result = vkCreateInstance(&instanceCreateInfo, NULL, &instance);
- *  free(names);
- *  \endcode
- *
- *  \sa SDL_Vulkan_CreateSurface()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(
-                                                                                                               SDL_Window *window,
-                                                                                                               unsigned int *pCount,
-                                                                                                               const char **pNames);
-
-/**
- *  \brief Create a Vulkan rendering surface for a window.
- *
- *  \param [in]  window   SDL_Window to which to attach the rendering surface.
- *  \param [in]  instance handle to the Vulkan instance to use.
- *  \param [out] surface  pointer to a VkSurfaceKHR handle to receive the
- *                        handle of the newly created surface.
- *
- *  \return \c SDL_TRUE on success, \c SDL_FALSE on error.
- *
- *  \code
- *  VkInstance instance;
- *  SDL_Window *window;
- *
- *  // create instance and window
- *
- *  // create the Vulkan surface
- *  VkSurfaceKHR surface;
- *  if(!SDL_Vulkan_CreateSurface(window, instance, &surface))
- *      handle_error();
- *  \endcode
- *
- *  \note \a window should have been created with the \c SDL_WINDOW_VULKAN flag.
- *
- *  \note \a instance should have been created with the extensions returned
- *        by \c SDL_Vulkan_CreateSurface() enabled.
- *
- *  \sa SDL_Vulkan_GetInstanceExtensions()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(
-                                                                                               SDL_Window *window,
-                                                                                               VkInstance instance,
-                                                                                               VkSurfaceKHR* surface);
-
-/**
- *  \brief Get the size of a window's underlying drawable in pixels (for use
- *         with setting viewport, scissor & etc).
- *
- *  \param window   SDL_Window from which the drawable size should be queried
- *  \param w        Pointer to variable for storing the width in pixels,
- *                  may be NULL
- *  \param h        Pointer to variable for storing the height in pixels,
- *                  may be NULL
- *
- * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
- * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a
- * platform with high-DPI support (Apple calls this "Retina"), and not disabled
- * by the \c SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
- *
- *  \note On macOS high-DPI support must be enabled for an application by
- *        setting NSHighResolutionCapable to true in its Info.plist.
- *
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_CreateWindow()
- */
-extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window,
-                                                        int *w, int *h);
-
-/* @} *//* Vulkan support functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_vulkan_h_ */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/begin_code.h b/misc/builddeps/win64/sdl/include/SDL2/begin_code.h
deleted file mode 100644 (file)
index 22c997c..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file begin_code.h
- *
- *  This file sets things up for C dynamic library function definitions,
- *  static inlined functions, and structures aligned at 4-byte alignment.
- *  If you don't like ugly C preprocessor code, don't look at this file. :)
- */
-
-/* This shouldn't be nested -- included it around code only. */
-#ifdef _begin_code_h
-#error Nested inclusion of begin_code.h
-#endif
-#define _begin_code_h
-
-#ifndef SDL_DEPRECATED
-#  if (__GNUC__ >= 4)  /* technically, this arrived in gcc 3.1, but oh well. */
-#    define SDL_DEPRECATED __attribute__((deprecated))
-#  else
-#    define SDL_DEPRECATED
-#  endif
-#endif
-
-#ifndef SDL_UNUSED
-#  ifdef __GNUC__
-#    define SDL_UNUSED __attribute__((unused))
-#  else
-#    define SDL_UNUSED
-#  endif
-#endif
-
-/* Some compilers use a special export keyword */
-#ifndef DECLSPEC
-# if defined(__WIN32__) || defined(__WINRT__)
-#  ifdef __BORLANDC__
-#   ifdef BUILD_SDL
-#    define DECLSPEC
-#   else
-#    define DECLSPEC    __declspec(dllimport)
-#   endif
-#  else
-#   define DECLSPEC __declspec(dllexport)
-#  endif
-# elif defined(__OS2__)
-#   ifdef BUILD_SDL
-#    define DECLSPEC    __declspec(dllexport)
-#   else
-#    define DECLSPEC
-#   endif
-# else
-#  if defined(__GNUC__) && __GNUC__ >= 4
-#   define DECLSPEC __attribute__ ((visibility("default")))
-#  else
-#   define DECLSPEC
-#  endif
-# endif
-#endif
-
-/* By default SDL uses the C calling convention */
-#ifndef SDLCALL
-#if (defined(__WIN32__) || defined(__WINRT__)) && !defined(__GNUC__)
-#define SDLCALL __cdecl
-#elif defined(__OS2__) || defined(__EMX__)
-#define SDLCALL _System
-# if defined (__GNUC__) && !defined(_System)
-#  define _System /* for old EMX/GCC compat.  */
-# endif
-#else
-#define SDLCALL
-#endif
-#endif /* SDLCALL */
-
-/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
-#ifdef __SYMBIAN32__
-#undef DECLSPEC
-#define DECLSPEC
-#endif /* __SYMBIAN32__ */
-
-/* Force structure packing at 4 byte alignment.
-   This is necessary if the header is included in code which has structure
-   packing set to an alternate value, say for loading structures from disk.
-   The packing is reset to the previous value in close_code.h
- */
-#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
-#ifdef _MSC_VER
-#pragma warning(disable: 4103)
-#endif
-#ifdef __clang__
-#pragma clang diagnostic ignored "-Wpragma-pack"
-#endif
-#ifdef __BORLANDC__
-#pragma nopackwarning
-#endif
-#ifdef _M_X64
-/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */
-#pragma pack(push,8)
-#else
-#pragma pack(push,4)
-#endif
-#endif /* Compiler needs structure packing set */
-
-#ifndef SDL_INLINE
-#if defined(__GNUC__)
-#define SDL_INLINE __inline__
-#elif defined(_MSC_VER) || defined(__BORLANDC__) || \
-      defined(__DMC__) || defined(__SC__) || \
-      defined(__WATCOMC__) || defined(__LCC__) || \
-      defined(__DECC) || defined(__CC_ARM)
-#define SDL_INLINE __inline
-#ifndef __inline__
-#define __inline__ __inline
-#endif
-#else
-#define SDL_INLINE inline
-#ifndef __inline__
-#define __inline__ inline
-#endif
-#endif
-#endif /* SDL_INLINE not defined */
-
-#ifndef SDL_FORCE_INLINE
-#if defined(_MSC_VER)
-#define SDL_FORCE_INLINE __forceinline
-#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) )
-#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__
-#else
-#define SDL_FORCE_INLINE static SDL_INLINE
-#endif
-#endif /* SDL_FORCE_INLINE not defined */
-
-#ifndef SDL_NORETURN
-#if defined(__GNUC__)
-#define SDL_NORETURN __attribute__((noreturn))
-#elif defined(_MSC_VER)
-#define SDL_NORETURN __declspec(noreturn)
-#else
-#define SDL_NORETURN
-#endif
-#endif /* SDL_NORETURN not defined */
-
-/* Apparently this is needed by several Windows compilers */
-#if !defined(__MACH__)
-#ifndef NULL
-#ifdef __cplusplus
-#define NULL 0
-#else
-#define NULL ((void *)0)
-#endif
-#endif /* NULL */
-#endif /* ! Mac OS X - breaks precompiled headers */
diff --git a/misc/builddeps/win64/sdl/include/SDL2/close_code.h b/misc/builddeps/win64/sdl/include/SDL2/close_code.h
deleted file mode 100644 (file)
index 8e4cac3..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file close_code.h
- *
- *  This file reverses the effects of begin_code.h and should be included
- *  after you finish any function and structure declarations in your headers
- */
-
-#ifndef _begin_code_h
-#error close_code.h included without matching begin_code.h
-#endif
-#undef _begin_code_h
-
-/* Reset structure packing at previous byte alignment */
-#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
-#ifdef __BORLANDC__
-#pragma nopackwarning
-#endif
-#pragma pack(pop)
-#endif /* Compiler needs structure packing set */
diff --git a/misc/builddeps/win64/sdl/lib/cmake/SDL2/sdl2-config.cmake b/misc/builddeps/win64/sdl/lib/cmake/SDL2/sdl2-config.cmake
deleted file mode 100644 (file)
index 1a5dd14..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# sdl2 cmake project-config input for ./configure scripts
-
-set(prefix "/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.10/../64") 
-set(exec_prefix "${prefix}")
-set(libdir "${exec_prefix}/lib")
-set(SDL2_PREFIX "/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.10/../64")
-set(SDL2_EXEC_PREFIX "/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.10/../64")
-set(SDL2_LIBDIR "${exec_prefix}/lib")
-set(SDL2_INCLUDE_DIRS "${prefix}/include/SDL2")
-set(SDL2_LIBRARIES "-L${SDL2_LIBDIR}  -lmingw32 -lSDL2main -lSDL2 -mwindows")
-string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
diff --git a/misc/builddeps/win64/sdl/lib/libSDL2.a b/misc/builddeps/win64/sdl/lib/libSDL2.a
deleted file mode 100644 (file)
index 1a0479b..0000000
Binary files a/misc/builddeps/win64/sdl/lib/libSDL2.a and /dev/null differ
diff --git a/misc/builddeps/win64/sdl/lib/libSDL2.la b/misc/builddeps/win64/sdl/lib/libSDL2.la
deleted file mode 100755 (executable)
index c2e865a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# libSDL2.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.4.2
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libSDL2.a'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libSDL2.
-current=10
-age=10
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.5/../64/lib'
diff --git a/misc/builddeps/win64/sdl/lib/libSDL2_test.a b/misc/builddeps/win64/sdl/lib/libSDL2_test.a
deleted file mode 100644 (file)
index 7ac4da6..0000000
Binary files a/misc/builddeps/win64/sdl/lib/libSDL2_test.a and /dev/null differ
diff --git a/misc/builddeps/win64/sdl/lib/libSDL2main.a b/misc/builddeps/win64/sdl/lib/libSDL2main.a
deleted file mode 100644 (file)
index ea1086e..0000000
Binary files a/misc/builddeps/win64/sdl/lib/libSDL2main.a and /dev/null differ
diff --git a/misc/builddeps/win64/sdl/lib/pkgconfig/sdl2.pc b/misc/builddeps/win64/sdl/lib/pkgconfig/sdl2.pc
deleted file mode 100644 (file)
index 967bae6..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# sdl pkg-config source file
-
-prefix=/var/home/rpolzer/xonotic/misc/buildsrc/tmp/SDL2-2.0.10/../64
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: sdl2
-Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
-Version: 2.0.10
-Requires:
-Conflicts:
-Libs: -L${libdir}  -lmingw32 -lSDL2main -lSDL2 -mwindows
-Libs.private: -lmingw32 -lSDL2main -lSDL2 -mwindows  -Wl,--no-undefined -Wl,--dynamicbase -Wl,--nxcompat -Wl,--high-entropy-va -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid -static-libgcc
-Cflags: -I${includedir}/SDL2  -Dmain=SDL_main
diff --git a/misc/builddeps/win64/sdl/share/aclocal/sdl2.m4 b/misc/builddeps/win64/sdl/share/aclocal/sdl2.m4
deleted file mode 100644 (file)
index 0a73bc7..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-# Configure paths for SDL
-# Sam Lantinga 9/21/99
-# stolen from Manish Singh
-# stolen back from Frank Belew
-# stolen from Manish Singh
-# Shamelessly stolen from Owen Taylor
-#
-# Changelog:
-# * also look for SDL2.framework under Mac OS X
-
-# serial 1
-
-dnl AM_PATH_SDL2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
-dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
-dnl
-AC_DEFUN([AM_PATH_SDL2],
-[dnl 
-dnl Get the cflags and libraries from the sdl2-config script
-dnl
-AC_ARG_WITH(sdl-prefix,[  --with-sdl-prefix=PFX   Prefix where SDL is installed (optional)],
-            sdl_prefix="$withval", sdl_prefix="")
-AC_ARG_WITH(sdl-exec-prefix,[  --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
-            sdl_exec_prefix="$withval", sdl_exec_prefix="")
-AC_ARG_ENABLE(sdltest, [  --disable-sdltest       Do not try to compile and run a test SDL program],
-                   , enable_sdltest=yes)
-AC_ARG_ENABLE(sdlframework, [  --disable-sdlframework Do not search for SDL2.framework],
-        , search_sdl_framework=yes)
-
-AC_ARG_VAR(SDL2_FRAMEWORK, [Path to SDL2.framework])
-
-  min_sdl_version=ifelse([$1], ,2.0.0,$1)
-
-  if test "x$sdl_prefix$sdl_exec_prefix" = x ; then
-    PKG_CHECK_MODULES([SDL], [sdl2 >= $min_sdl_version],
-           [sdl_pc=yes],
-           [sdl_pc=no])
-  else
-    sdl_pc=no
-    if test x$sdl_exec_prefix != x ; then
-      sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix"
-      if test x${SDL2_CONFIG+set} != xset ; then
-        SDL2_CONFIG=$sdl_exec_prefix/bin/sdl2-config
-      fi
-    fi
-    if test x$sdl_prefix != x ; then
-      sdl_config_args="$sdl_config_args --prefix=$sdl_prefix"
-      if test x${SDL2_CONFIG+set} != xset ; then
-        SDL2_CONFIG=$sdl_prefix/bin/sdl2-config
-      fi
-    fi
-  fi
-
-  if test "x$sdl_pc" = xyes ; then
-    no_sdl=""
-    SDL2_CONFIG="pkg-config sdl2"
-  else
-    as_save_PATH="$PATH"
-    if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then
-      PATH="$prefix/bin:$prefix/usr/bin:$PATH"
-    fi
-    AC_PATH_PROG(SDL2_CONFIG, sdl2-config, no, [$PATH])
-    PATH="$as_save_PATH"
-    no_sdl=""
-
-    if test "$SDL2_CONFIG" = "no" -a "x$search_sdl_framework" = "xyes"; then
-      AC_MSG_CHECKING(for SDL2.framework)
-      if test "x$SDL2_FRAMEWORK" != x; then
-        sdl_framework=$SDL2_FRAMEWORK
-      else
-        for d in / ~/ /System/; do
-          if test -d "$dLibrary/Frameworks/SDL2.framework"; then
-            sdl_framework="$dLibrary/Frameworks/SDL2.framework"
-          fi
-        done
-      fi
-
-      if test x"$sdl_framework" != x && test -d "$sdl_framework"; then
-        AC_MSG_RESULT($sdl_framework)
-        sdl_framework_dir=`dirname $sdl_framework`
-        SDL_CFLAGS="-F$sdl_framework_dir -Wl,-framework,SDL2 -I$sdl_framework/include"
-        SDL_LIBS="-F$sdl_framework_dir -Wl,-framework,SDL2"
-      else
-        no_sdl=yes
-      fi
-    fi
-
-    if test "$SDL2_CONFIG" != "no"; then
-      if test "x$sdl_pc" = "xno"; then
-        AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
-        SDL_CFLAGS=`$SDL2_CONFIG $sdl_config_args --cflags`
-        SDL_LIBS=`$SDL2_CONFIG $sdl_config_args --libs`
-      fi
-
-      sdl_major_version=`$SDL2_CONFIG $sdl_config_args --version | \
-             sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-      sdl_minor_version=`$SDL2_CONFIG $sdl_config_args --version | \
-             sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-      sdl_micro_version=`$SDL2_CONFIG $sdl_config_args --version | \
-             sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-      if test "x$enable_sdltest" = "xyes" ; then
-        ac_save_CFLAGS="$CFLAGS"
-        ac_save_CXXFLAGS="$CXXFLAGS"
-        ac_save_LIBS="$LIBS"
-        CFLAGS="$CFLAGS $SDL_CFLAGS"
-        CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
-        LIBS="$LIBS $SDL_LIBS"
-dnl
-dnl Now check if the installed SDL is sufficiently new. (Also sanity
-dnl checks the results of sdl2-config to some extent
-dnl
-      rm -f conf.sdltest
-      AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "SDL.h"
-
-char*
-my_strdup (char *str)
-{
-  char *new_str;
-  
-  if (str)
-    {
-      new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
-      strcpy (new_str, str);
-    }
-  else
-    new_str = NULL;
-  
-  return new_str;
-}
-
-int main (int argc, char *argv[])
-{
-  int major, minor, micro;
-  char *tmp_version;
-
-  /* This hangs on some systems (?)
-  system ("touch conf.sdltest");
-  */
-  { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
-
-  /* HP/UX 9 (%@#!) writes to sscanf strings */
-  tmp_version = my_strdup("$min_sdl_version");
-  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_sdl_version");
-     exit(1);
-   }
-
-   if (($sdl_major_version > major) ||
-      (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
-      (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
-    {
-      return 0;
-    }
-  else
-    {
-      printf("\n*** 'sdl2-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
-      printf("*** of SDL required is %d.%d.%d. If sdl2-config is correct, then it is\n", major, minor, micro);
-      printf("*** best to upgrade to the required version.\n");
-      printf("*** If sdl2-config was wrong, set the environment variable SDL2_CONFIG\n");
-      printf("*** to point to the correct copy of sdl2-config, and remove the file\n");
-      printf("*** config.cache before re-running configure\n");
-      return 1;
-    }
-}
-
-],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-        CFLAGS="$ac_save_CFLAGS"
-        CXXFLAGS="$ac_save_CXXFLAGS"
-        LIBS="$ac_save_LIBS"
-
-      fi
-      if test "x$sdl_pc" = "xno"; then
-        if test "x$no_sdl" = "xyes"; then
-          AC_MSG_RESULT(no)
-        else
-          AC_MSG_RESULT(yes)
-        fi
-      fi
-    fi
-  fi
-  if test "x$no_sdl" = x ; then
-     ifelse([$2], , :, [$2])
-  else
-     if test "$SDL2_CONFIG" = "no" ; then
-       echo "*** The sdl2-config script installed by SDL could not be found"
-       echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
-       echo "*** your path, or set the SDL2_CONFIG environment variable to the"
-       echo "*** full path to sdl2-config."
-     else
-       if test -f conf.sdltest ; then
-        :
-       else
-          echo "*** Could not run SDL test program, checking why..."
-          CFLAGS="$CFLAGS $SDL_CFLAGS"
-          CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
-          LIBS="$LIBS $SDL_LIBS"
-          AC_TRY_LINK([
-#include <stdio.h>
-#include "SDL.h"
-
-int main(int argc, char *argv[])
-{ return 0; }
-#undef  main
-#define main K_and_R_C_main
-],      [ return 0; ],
-        [ echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding SDL or finding the wrong"
-          echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-         echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
-        [ echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means SDL was incorrectly installed"
-          echo "*** or that you have moved SDL since it was installed. In the latter case, you"
-          echo "*** may want to edit the sdl2-config script: $SDL2_CONFIG" ])
-          CFLAGS="$ac_save_CFLAGS"
-          CXXFLAGS="$ac_save_CXXFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     SDL_CFLAGS=""
-     SDL_LIBS=""
-     ifelse([$3], , :, [$3])
-  fi
-  AC_SUBST(SDL_CFLAGS)
-  AC_SUBST(SDL_LIBS)
-  rm -f conf.sdltest
-])
diff --git a/misc/builddeps/win64/zlib/bin/zlib1.dll b/misc/builddeps/win64/zlib/bin/zlib1.dll
deleted file mode 100755 (executable)
index 1e83170..0000000
Binary files a/misc/builddeps/win64/zlib/bin/zlib1.dll and /dev/null differ
diff --git a/misc/builddeps/win64/zlib/include/zlib.h b/misc/builddeps/win64/zlib/include/zlib.h
deleted file mode 100644 (file)
index 79142d1..0000000
+++ /dev/null
@@ -1,1732 +0,0 @@
-/* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.6, January 29th, 2012
-
-  Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  Jean-loup Gailly        Mark Adler
-  jloup@gzip.org          madler@alumni.caltech.edu
-
-
-  The data format used by the zlib library is described by RFCs (Request for
-  Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
-  (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
-*/
-
-#ifndef ZLIB_H
-#define ZLIB_H
-
-#include "zconf.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ZLIB_VERSION "1.2.6"
-#define ZLIB_VERNUM 0x1260
-#define ZLIB_VER_MAJOR 1
-#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 6
-#define ZLIB_VER_SUBREVISION 0
-
-/*
-    The 'zlib' compression library provides in-memory compression and
-  decompression functions, including integrity checks of the uncompressed data.
-  This version of the library supports only one compression method (deflation)
-  but other algorithms will be added later and will have the same stream
-  interface.
-
-    Compression can be done in a single step if the buffers are large enough,
-  or can be done by repeated calls of the compression function.  In the latter
-  case, the application must provide more input and/or consume the output
-  (providing more output space) before each call.
-
-    The compressed data format used by default by the in-memory functions is
-  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
-  around a deflate stream, which is itself documented in RFC 1951.
-
-    The library also supports reading and writing files in gzip (.gz) format
-  with an interface similar to that of stdio using the functions that start
-  with "gz".  The gzip format is different from the zlib format.  gzip is a
-  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
-
-    This library can optionally read and write gzip streams in memory as well.
-
-    The zlib format was designed to be compact and fast for use in memory
-  and on communications channels.  The gzip format was designed for single-
-  file compression on file systems, has a larger header than zlib to maintain
-  directory information, and uses a different, slower check method than zlib.
-
-    The library does not install any signal handler.  The decoder checks
-  the consistency of the compressed data, so the library should never crash
-  even in case of corrupted input.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
-
-struct internal_state;
-
-typedef struct z_stream_s {
-    z_const Bytef *next_in;     /* next input byte */
-    uInt     avail_in;  /* number of bytes available at next_in */
-    uLong    total_in;  /* total number of input bytes read so far */
-
-    Bytef    *next_out; /* next output byte should be put there */
-    uInt     avail_out; /* remaining free space at next_out */
-    uLong    total_out; /* total number of bytes output so far */
-
-    z_const char *msg;  /* last error message, NULL if no error */
-    struct internal_state FAR *state; /* not visible by applications */
-
-    alloc_func zalloc;  /* used to allocate the internal state */
-    free_func  zfree;   /* used to free the internal state */
-    voidpf     opaque;  /* private data object passed to zalloc and zfree */
-
-    int     data_type;  /* best guess about the data type: binary or text */
-    uLong   adler;      /* adler32 value of the uncompressed data */
-    uLong   reserved;   /* reserved for future use */
-} z_stream;
-
-typedef z_stream FAR *z_streamp;
-
-/*
-     gzip header information passed to and from zlib routines.  See RFC 1952
-  for more details on the meanings of these fields.
-*/
-typedef struct gz_header_s {
-    int     text;       /* true if compressed data believed to be text */
-    uLong   time;       /* modification time */
-    int     xflags;     /* extra flags (not used when writing a gzip file) */
-    int     os;         /* operating system */
-    Bytef   *extra;     /* pointer to extra field or Z_NULL if none */
-    uInt    extra_len;  /* extra field length (valid if extra != Z_NULL) */
-    uInt    extra_max;  /* space at extra (only when reading header) */
-    Bytef   *name;      /* pointer to zero-terminated file name or Z_NULL */
-    uInt    name_max;   /* space at name (only when reading header) */
-    Bytef   *comment;   /* pointer to zero-terminated comment or Z_NULL */
-    uInt    comm_max;   /* space at comment (only when reading header) */
-    int     hcrc;       /* true if there was or will be a header crc */
-    int     done;       /* true when done reading gzip header (not used
-                           when writing a gzip file) */
-} gz_header;
-
-typedef gz_header FAR *gz_headerp;
-
-/*
-     The application must update next_in and avail_in when avail_in has dropped
-   to zero.  It must update next_out and avail_out when avail_out has dropped
-   to zero.  The application must initialize zalloc, zfree and opaque before
-   calling the init function.  All other fields are set by the compression
-   library and must not be updated by the application.
-
-     The opaque value provided by the application will be passed as the first
-   parameter for calls of zalloc and zfree.  This can be useful for custom
-   memory management.  The compression library attaches no meaning to the
-   opaque value.
-
-     zalloc must return Z_NULL if there is not enough memory for the object.
-   If zlib is used in a multi-threaded application, zalloc and zfree must be
-   thread safe.
-
-     On 16-bit systems, the functions zalloc and zfree must be able to allocate
-   exactly 65536 bytes, but will not be required to allocate more than this if
-   the symbol MAXSEG_64K is defined (see zconf.h).  WARNING: On MSDOS, pointers
-   returned by zalloc for objects of exactly 65536 bytes *must* have their
-   offset normalized to zero.  The default allocation function provided by this
-   library ensures this (see zutil.c).  To reduce memory requirements and avoid
-   any allocation of 64K objects, at the expense of compression ratio, compile
-   the library with -DMAX_WBITS=14 (see zconf.h).
-
-     The fields total_in and total_out can be used for statistics or progress
-   reports.  After compression, total_in holds the total size of the
-   uncompressed data and may be saved for use in the decompressor (particularly
-   if the decompressor wants to decompress everything in a single step).
-*/
-
-                        /* constants */
-
-#define Z_NO_FLUSH      0
-#define Z_PARTIAL_FLUSH 1
-#define Z_SYNC_FLUSH    2
-#define Z_FULL_FLUSH    3
-#define Z_FINISH        4
-#define Z_BLOCK         5
-#define Z_TREES         6
-/* Allowed flush values; see deflate() and inflate() below for details */
-
-#define Z_OK            0
-#define Z_STREAM_END    1
-#define Z_NEED_DICT     2
-#define Z_ERRNO        (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR   (-3)
-#define Z_MEM_ERROR    (-4)
-#define Z_BUF_ERROR    (-5)
-#define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative values
- * are errors, positive values are used for special but normal events.
- */
-
-#define Z_NO_COMPRESSION         0
-#define Z_BEST_SPEED             1
-#define Z_BEST_COMPRESSION       9
-#define Z_DEFAULT_COMPRESSION  (-1)
-/* compression levels */
-
-#define Z_FILTERED            1
-#define Z_HUFFMAN_ONLY        2
-#define Z_RLE                 3
-#define Z_FIXED               4
-#define Z_DEFAULT_STRATEGY    0
-/* compression strategy; see deflateInit2() below for details */
-
-#define Z_BINARY   0
-#define Z_TEXT     1
-#define Z_ASCII    Z_TEXT   /* for compatibility with 1.2.2 and earlier */
-#define Z_UNKNOWN  2
-/* Possible values of the data_type field (though see inflate()) */
-
-#define Z_DEFLATED   8
-/* The deflate compression method (the only one supported in this version) */
-
-#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
-
-#define zlib_version zlibVersion()
-/* for compatibility with versions < 1.0.2 */
-
-
-                        /* basic functions */
-
-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
-   If the first character differs, the library code actually used is not
-   compatible with the zlib.h header file used by the application.  This check
-   is automatically made by deflateInit and inflateInit.
- */
-
-/*
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
-
-     Initializes the internal stream state for compression.  The fields
-   zalloc, zfree and opaque must be initialized before by the caller.  If
-   zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
-   allocation functions.
-
-     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
-   1 gives best speed, 9 gives best compression, 0 gives no compression at all
-   (the input data is simply copied a block at a time).  Z_DEFAULT_COMPRESSION
-   requests a default compromise between speed and compression (currently
-   equivalent to level 6).
-
-     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if level is not a valid compression level, or
-   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
-   with the version assumed by the caller (ZLIB_VERSION).  msg is set to null
-   if there is no error message.  deflateInit does not perform any compression:
-   this will be done by deflate().
-*/
-
-
-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
-/*
-    deflate compresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full.  It may introduce
-  some output latency (reading input without producing any output) except when
-  forced to flush.
-
-    The detailed semantics are as follows.  deflate performs one or both of the
-  following actions:
-
-  - Compress more input starting at next_in and update next_in and avail_in
-    accordingly.  If not all input can be processed (because there is not
-    enough room in the output buffer), next_in and avail_in are updated and
-    processing will resume at this point for the next call of deflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly.  This action is forced if the parameter flush is non zero.
-    Forcing flush frequently degrades the compression ratio, so this parameter
-    should be set only when necessary (in interactive applications).  Some
-    output may be provided even if flush is not set.
-
-    Before the call of deflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming more
-  output, and updating avail_in or avail_out accordingly; avail_out should
-  never be zero before the call.  The application can consume the compressed
-  output when it wants, for example when the output buffer is full (avail_out
-  == 0), or after each call of deflate().  If deflate returns Z_OK and with
-  zero avail_out, it must be called again after making room in the output
-  buffer because there might be more output pending.
-
-    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
-  decide how much data to accumulate before producing output, in order to
-  maximize compression.
-
-    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
-  flushed to the output buffer and the output is aligned on a byte boundary, so
-  that the decompressor can get all input data available so far.  (In
-  particular avail_in is zero after the call if enough output space has been
-  provided before the call.) Flushing may degrade compression for some
-  compression algorithms and so it should be used only when necessary.  This
-  completes the current deflate block and follows it with an empty stored block
-  that is three bits plus filler bits to the next byte, followed by four bytes
-  (00 00 ff ff).
-
-    If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the
-  output buffer, but the output is not aligned to a byte boundary.  All of the
-  input data so far will be available to the decompressor, as for Z_SYNC_FLUSH.
-  This completes the current deflate block and follows it with an empty fixed
-  codes block that is 10 bits long.  This assures that enough bytes are output
-  in order for the decompressor to finish the block before the empty fixed code
-  block.
-
-    If flush is set to Z_BLOCK, a deflate block is completed and emitted, as
-  for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to
-  seven bits of the current block are held to be written as the next byte after
-  the next deflate block is completed.  In this case, the decompressor may not
-  be provided enough bits at this point in order to complete decompression of
-  the data provided so far to the compressor.  It may need to wait for the next
-  block to be emitted.  This is for advanced applications that need to control
-  the emission of deflate blocks.
-
-    If flush is set to Z_FULL_FLUSH, all output is flushed as with
-  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
-  restart from this point if previous compressed data has been damaged or if
-  random access is desired.  Using Z_FULL_FLUSH too often can seriously degrade
-  compression.
-
-    If deflate returns with avail_out == 0, this function must be called again
-  with the same value of the flush parameter and more output space (updated
-  avail_out), until the flush is complete (deflate returns with non-zero
-  avail_out).  In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
-  avail_out is greater than six to avoid repeated flush markers due to
-  avail_out == 0 on return.
-
-    If the parameter flush is set to Z_FINISH, pending input is processed,
-  pending output is flushed and deflate returns with Z_STREAM_END if there was
-  enough output space; if deflate returns with Z_OK, this function must be
-  called again with Z_FINISH and more output space (updated avail_out) but no
-  more input data, until it returns with Z_STREAM_END or an error.  After
-  deflate has returned Z_STREAM_END, the only possible operations on the stream
-  are deflateReset or deflateEnd.
-
-    Z_FINISH can be used immediately after deflateInit if all the compression
-  is to be done in a single step.  In this case, avail_out must be at least the
-  value returned by deflateBound (see below).  Then deflate is guaranteed to
-  return Z_STREAM_END.  If not enough output space is provided, deflate will
-  not return Z_STREAM_END, and it must be called again as described above.
-
-    deflate() sets strm->adler to the adler32 checksum of all input read
-  so far (that is, total_in bytes).
-
-    deflate() may update strm->data_type if it can make a good guess about
-  the input data type (Z_BINARY or Z_TEXT).  In doubt, the data is considered
-  binary.  This field is only for information purposes and does not affect the
-  compression algorithm in any manner.
-
-    deflate() returns Z_OK if some progress has been made (more input
-  processed or more output produced), Z_STREAM_END if all input has been
-  consumed and all output has been produced (only when flush is set to
-  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
-  if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible
-  (for example avail_in or avail_out was zero).  Note that Z_BUF_ERROR is not
-  fatal, and deflate() can be called again with more input and more output
-  space to continue compressing.
-*/
-
-
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any pending
-   output.
-
-     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
-   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
-   prematurely (some input or output was discarded).  In the error case, msg
-   may be set but then points to a static string (which must not be
-   deallocated).
-*/
-
-
-/*
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
-
-     Initializes the internal stream state for decompression.  The fields
-   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
-   the caller.  If next_in is not Z_NULL and avail_in is large enough (the
-   exact value depends on the compression method), inflateInit determines the
-   compression method from the zlib header and allocates all data structures
-   accordingly; otherwise the allocation will be deferred to the first call of
-   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
-   use default allocation functions.
-
-     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
-   version assumed by the caller, or Z_STREAM_ERROR if the parameters are
-   invalid, such as a null pointer to the structure.  msg is set to null if
-   there is no error message.  inflateInit does not perform any decompression
-   apart from possibly reading the zlib header if present: actual decompression
-   will be done by inflate().  (So next_in and avail_in may be modified, but
-   next_out and avail_out are unused and unchanged.) The current implementation
-   of inflateInit() does not process any header information -- that is deferred
-   until inflate() is called.
-*/
-
-
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
-/*
-    inflate decompresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full.  It may introduce
-  some output latency (reading input without producing any output) except when
-  forced to flush.
-
-  The detailed semantics are as follows.  inflate performs one or both of the
-  following actions:
-
-  - Decompress more input starting at next_in and update next_in and avail_in
-    accordingly.  If not all input can be processed (because there is not
-    enough room in the output buffer), next_in is updated and processing will
-    resume at this point for the next call of inflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly.  inflate() provides as much output as possible, until there is
-    no more input data or no more space in the output buffer (see below about
-    the flush parameter).
-
-    Before the call of inflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming more
-  output, and updating the next_* and avail_* values accordingly.  The
-  application can consume the uncompressed output when it wants, for example
-  when the output buffer is full (avail_out == 0), or after each call of
-  inflate().  If inflate returns Z_OK and with zero avail_out, it must be
-  called again after making room in the output buffer because there might be
-  more output pending.
-
-    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH,
-  Z_BLOCK, or Z_TREES.  Z_SYNC_FLUSH requests that inflate() flush as much
-  output as possible to the output buffer.  Z_BLOCK requests that inflate()
-  stop if and when it gets to the next deflate block boundary.  When decoding
-  the zlib or gzip format, this will cause inflate() to return immediately
-  after the header and before the first block.  When doing a raw inflate,
-  inflate() will go ahead and process the first block, and will return when it
-  gets to the end of that block, or when it runs out of data.
-
-    The Z_BLOCK option assists in appending to or combining deflate streams.
-  Also to assist in this, on return inflate() will set strm->data_type to the
-  number of unused bits in the last byte taken from strm->next_in, plus 64 if
-  inflate() is currently decoding the last block in the deflate stream, plus
-  128 if inflate() returned immediately after decoding an end-of-block code or
-  decoding the complete header up to just before the first byte of the deflate
-  stream.  The end-of-block will not be indicated until all of the uncompressed
-  data from that block has been written to strm->next_out.  The number of
-  unused bits may in general be greater than seven, except when bit 7 of
-  data_type is set, in which case the number of unused bits will be less than
-  eight.  data_type is set as noted here every time inflate() returns for all
-  flush options, and so can be used to determine the amount of currently
-  consumed input in bits.
-
-    The Z_TREES option behaves as Z_BLOCK does, but it also returns when the
-  end of each deflate block header is reached, before any actual data in that
-  block is decoded.  This allows the caller to determine the length of the
-  deflate block header for later use in random access within a deflate block.
-  256 is added to the value of strm->data_type when inflate() returns
-  immediately after reaching the end of the deflate block header.
-
-    inflate() should normally be called until it returns Z_STREAM_END or an
-  error.  However if all decompression is to be performed in a single step (a
-  single call of inflate), the parameter flush should be set to Z_FINISH.  In
-  this case all pending input is processed and all pending output is flushed;
-  avail_out must be large enough to hold all the uncompressed data.  (The size
-  of the uncompressed data may have been saved by the compressor for this
-  purpose.) The next operation on this stream must be inflateEnd to deallocate
-  the decompression state.  The use of Z_FINISH is not required to perform an
-  inflation in one step.  However it may be used to inform inflate that a
-  faster approach can be used for the single inflate() call.  Z_FINISH also
-  informs inflate to not maintain a sliding window if the stream completes,
-  which reduces inflate's memory footprint.
-
-     In this implementation, inflate() always flushes as much output as
-  possible to the output buffer, and always uses the faster approach on the
-  first call.  So the effects of the flush parameter in this implementation are
-  on the return value of inflate() as noted below, when inflate() returns early
-  when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of
-  memory for a sliding window when Z_FINISH is used.
-
-     If a preset dictionary is needed after this call (see inflateSetDictionary
-  below), inflate sets strm->adler to the Adler-32 checksum of the dictionary
-  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
-  strm->adler to the Adler-32 checksum of all output produced so far (that is,
-  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
-  below.  At the end of the stream, inflate() checks that its computed adler32
-  checksum is equal to that saved by the compressor and returns Z_STREAM_END
-  only if the checksum is correct.
-
-    inflate() can decompress and check either zlib-wrapped or gzip-wrapped
-  deflate data.  The header type is detected automatically, if requested when
-  initializing with inflateInit2().  Any information contained in the gzip
-  header is not retained, so applications that need that information should
-  instead use raw inflate, see inflateInit2() below, or inflateBack() and
-  perform their own processing of the gzip header and trailer.  When processing
-  gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output
-  producted so far.  The CRC-32 is checked against the gzip trailer.
-
-    inflate() returns Z_OK if some progress has been made (more input processed
-  or more output produced), Z_STREAM_END if the end of the compressed data has
-  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
-  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
-  corrupted (input stream not conforming to the zlib format or incorrect check
-  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
-  next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory,
-  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
-  output buffer when Z_FINISH is used.  Note that Z_BUF_ERROR is not fatal, and
-  inflate() can be called again with more input and more output space to
-  continue decompressing.  If Z_DATA_ERROR is returned, the application may
-  then call inflateSync() to look for a good compression block if a partial
-  recovery of the data is desired.
-*/
-
-
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any pending
-   output.
-
-     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
-   was inconsistent.  In the error case, msg may be set but then points to a
-   static string (which must not be deallocated).
-*/
-
-
-                        /* Advanced functions */
-
-/*
-    The following functions are needed only in some special applications.
-*/
-
-/*
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
-                                     int  level,
-                                     int  method,
-                                     int  windowBits,
-                                     int  memLevel,
-                                     int  strategy));
-
-     This is another version of deflateInit with more compression options.  The
-   fields next_in, zalloc, zfree and opaque must be initialized before by the
-   caller.
-
-     The method parameter is the compression method.  It must be Z_DEFLATED in
-   this version of the library.
-
-     The windowBits parameter is the base two logarithm of the window size
-   (the size of the history buffer).  It should be in the range 8..15 for this
-   version of the library.  Larger values of this parameter result in better
-   compression at the expense of memory usage.  The default value is 15 if
-   deflateInit is used instead.
-
-     windowBits can also be -8..-15 for raw deflate.  In this case, -windowBits
-   determines the window size.  deflate() will then generate raw deflate data
-   with no zlib header or trailer, and will not compute an adler32 check value.
-
-     windowBits can also be greater than 15 for optional gzip encoding.  Add
-   16 to windowBits to write a simple gzip header and trailer around the
-   compressed data instead of a zlib wrapper.  The gzip header will have no
-   file name, no extra data, no comment, no modification time (set to zero), no
-   header crc, and the operating system will be set to 255 (unknown).  If a
-   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
-
-     The memLevel parameter specifies how much memory should be allocated
-   for the internal compression state.  memLevel=1 uses minimum memory but is
-   slow and reduces compression ratio; memLevel=9 uses maximum memory for
-   optimal speed.  The default value is 8.  See zconf.h for total memory usage
-   as a function of windowBits and memLevel.
-
-     The strategy parameter is used to tune the compression algorithm.  Use the
-   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
-   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
-   string match), or Z_RLE to limit match distances to one (run-length
-   encoding).  Filtered data consists mostly of small values with a somewhat
-   random distribution.  In this case, the compression algorithm is tuned to
-   compress them better.  The effect of Z_FILTERED is to force more Huffman
-   coding and less string matching; it is somewhat intermediate between
-   Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY.  Z_RLE is designed to be almost as
-   fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data.  The
-   strategy parameter only affects the compression ratio but not the
-   correctness of the compressed output even if it is not set appropriately.
-   Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler
-   decoder for special applications.
-
-     deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid
-   method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is
-   incompatible with the version assumed by the caller (ZLIB_VERSION).  msg is
-   set to null if there is no error message.  deflateInit2 does not perform any
-   compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the compression dictionary from the given byte sequence
-   without producing any compressed output.  When using the zlib format, this
-   function must be called immediately after deflateInit, deflateInit2 or
-   deflateReset, and before any call of deflate.  When doing raw deflate, this
-   function must be called either before any call of deflate, or immediately
-   after the completion of a deflate block, i.e. after all input has been
-   consumed and all output has been delivered when using any of the flush
-   options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH.  The
-   compressor and decompressor must use exactly the same dictionary (see
-   inflateSetDictionary).
-
-     The dictionary should consist of strings (byte sequences) that are likely
-   to be encountered later in the data to be compressed, with the most commonly
-   used strings preferably put towards the end of the dictionary.  Using a
-   dictionary is most useful when the data to be compressed is short and can be
-   predicted with good accuracy; the data can then be compressed better than
-   with the default empty dictionary.
-
-     Depending on the size of the compression data structures selected by
-   deflateInit or deflateInit2, a part of the dictionary may in effect be
-   discarded, for example if the dictionary is larger than the window size
-   provided in deflateInit or deflateInit2.  Thus the strings most likely to be
-   useful should be put at the end of the dictionary, not at the front.  In
-   addition, the current implementation of deflate will use at most the window
-   size minus 262 bytes of the provided dictionary.
-
-     Upon return of this function, strm->adler is set to the adler32 value
-   of the dictionary; the decompressor may later use this value to determine
-   which dictionary has been used by the compressor.  (The adler32 value
-   applies to the whole dictionary even if only a subset of the dictionary is
-   actually used by the compressor.) If a raw deflate was requested, then the
-   adler32 value is not computed and strm->adler is not set.
-
-     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
-   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
-   inconsistent (for example if deflate has already been called for this stream
-   or if not at a block boundary for raw deflate).  deflateSetDictionary does
-   not perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
-                                    z_streamp source));
-/*
-     Sets the destination stream as a complete copy of the source stream.
-
-     This function can be useful when several compression strategies will be
-   tried, for example when there are several ways of pre-processing the input
-   data with a filter.  The streams that will be discarded should then be freed
-   by calling deflateEnd.  Note that deflateCopy duplicates the internal
-   compression state which can be quite large, so this strategy is slow and can
-   consume lots of memory.
-
-     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
-   destination.
-*/
-
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to deflateEnd followed by deflateInit,
-   but does not free and reallocate all the internal compression state.  The
-   stream will keep the same compression level and any other attributes that
-   may have been set by deflateInit2.
-
-     deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being Z_NULL).
-*/
-
-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
-                                      int level,
-                                      int strategy));
-/*
-     Dynamically update the compression level and compression strategy.  The
-   interpretation of level and strategy is as in deflateInit2.  This can be
-   used to switch between compression and straight copy of the input data, or
-   to switch to a different kind of input data requiring a different strategy.
-   If the compression level is changed, the input available so far is
-   compressed with the old level (and may be flushed); the new level will take
-   effect only at the next call of deflate().
-
-     Before the call of deflateParams, the stream state must be set as for
-   a call of deflate(), since the currently available input may have to be
-   compressed and flushed.  In particular, strm->avail_out must be non-zero.
-
-     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
-   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if
-   strm->avail_out was zero.
-*/
-
-ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
-                                    int good_length,
-                                    int max_lazy,
-                                    int nice_length,
-                                    int max_chain));
-/*
-     Fine tune deflate's internal compression parameters.  This should only be
-   used by someone who understands the algorithm used by zlib's deflate for
-   searching for the best matching string, and even then only by the most
-   fanatic optimizer trying to squeeze out the last compressed bit for their
-   specific input data.  Read the deflate.c source code for the meaning of the
-   max_lazy, good_length, nice_length, and max_chain parameters.
-
-     deflateTune() can be called after deflateInit() or deflateInit2(), and
-   returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
- */
-
-ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
-                                       uLong sourceLen));
-/*
-     deflateBound() returns an upper bound on the compressed size after
-   deflation of sourceLen bytes.  It must be called after deflateInit() or
-   deflateInit2(), and after deflateSetHeader(), if used.  This would be used
-   to allocate an output buffer for deflation in a single pass, and so would be
-   called before deflate().  If that first deflate() call is provided the
-   sourceLen input bytes, an output buffer allocated to the size returned by
-   deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed
-   to return Z_STREAM_END.  Note that it is possible for the compressed size to
-   be larger than the value returned by deflateBound() if flush options other
-   than Z_FINISH or Z_NO_FLUSH are used.
-*/
-
-ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
-                                       unsigned *pending,
-                                       int *bits));
-/*
-     deflatePending() returns the number of bytes and bits of output that have
-   been generated, but not yet provided in the available output.  The bytes not
-   provided would be due to the available output space having being consumed.
-   The number of bits of output not provided are between 0 and 7, where they
-   await more bits to join them in order to fill out a full byte.  If pending
-   or bits are Z_NULL, then those values are not set.
-
-     deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
- */
-
-ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
-/*
-     deflatePrime() inserts bits in the deflate output stream.  The intent
-   is that this function is used to start off the deflate output with the bits
-   leftover from a previous deflate stream when appending to it.  As such, this
-   function can only be used for raw deflate, and must be used before the first
-   deflate() call after a deflateInit2() or deflateReset().  bits must be less
-   than or equal to 16, and that many of the least significant bits of value
-   will be inserted in the output.
-
-     deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough
-   room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the
-   source stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
-                                         gz_headerp head));
-/*
-     deflateSetHeader() provides gzip header information for when a gzip
-   stream is requested by deflateInit2().  deflateSetHeader() may be called
-   after deflateInit2() or deflateReset() and before the first call of
-   deflate().  The text, time, os, extra field, name, and comment information
-   in the provided gz_header structure are written to the gzip header (xflag is
-   ignored -- the extra flags are set according to the compression level).  The
-   caller must assure that, if not Z_NULL, name and comment are terminated with
-   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
-   available there.  If hcrc is true, a gzip header crc is included.  Note that
-   the current versions of the command-line version of gzip (up through version
-   1.3.x) do not support header crc's, and will report that it is a "multi-part
-   gzip file" and give up.
-
-     If deflateSetHeader is not used, the default gzip header has text false,
-   the time set to zero, and os set to 255, with no extra, name, or comment
-   fields.  The gzip header is returned to the default state by deflateReset().
-
-     deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
-                                     int  windowBits));
-
-     This is another version of inflateInit with an extra parameter.  The
-   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
-   before by the caller.
-
-     The windowBits parameter is the base two logarithm of the maximum window
-   size (the size of the history buffer).  It should be in the range 8..15 for
-   this version of the library.  The default value is 15 if inflateInit is used
-   instead.  windowBits must be greater than or equal to the windowBits value
-   provided to deflateInit2() while compressing, or it must be equal to 15 if
-   deflateInit2() was not used.  If a compressed stream with a larger window
-   size is given as input, inflate() will return with the error code
-   Z_DATA_ERROR instead of trying to allocate a larger window.
-
-     windowBits can also be zero to request that inflate use the window size in
-   the zlib header of the compressed stream.
-
-     windowBits can also be -8..-15 for raw inflate.  In this case, -windowBits
-   determines the window size.  inflate() will then process raw deflate data,
-   not looking for a zlib or gzip header, not generating a check value, and not
-   looking for any check values for comparison at the end of the stream.  This
-   is for use with other formats that use the deflate compressed data format
-   such as zip.  Those formats provide their own check values.  If a custom
-   format is developed using the raw deflate format for compressed data, it is
-   recommended that a check value such as an adler32 or a crc32 be applied to
-   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
-   most applications, the zlib format should be used as is.  Note that comments
-   above on the use in deflateInit2() applies to the magnitude of windowBits.
-
-     windowBits can also be greater than 15 for optional gzip decoding.  Add
-   32 to windowBits to enable zlib and gzip decoding with automatic header
-   detection, or add 16 to decode only the gzip format (the zlib format will
-   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is a
-   crc32 instead of an adler32.
-
-     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
-   version assumed by the caller, or Z_STREAM_ERROR if the parameters are
-   invalid, such as a null pointer to the structure.  msg is set to null if
-   there is no error message.  inflateInit2 does not perform any decompression
-   apart from possibly reading the zlib header if present: actual decompression
-   will be done by inflate().  (So next_in and avail_in may be modified, but
-   next_out and avail_out are unused and unchanged.) The current implementation
-   of inflateInit2() does not process any header information -- that is
-   deferred until inflate() is called.
-*/
-
-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the decompression dictionary from the given uncompressed byte
-   sequence.  This function must be called immediately after a call of inflate,
-   if that call returned Z_NEED_DICT.  The dictionary chosen by the compressor
-   can be determined from the adler32 value returned by that call of inflate.
-   The compressor and decompressor must use exactly the same dictionary (see
-   deflateSetDictionary).  For raw inflate, this function can be called at any
-   time to set the dictionary.  If the provided dictionary is smaller than the
-   window and there is already data in the window, then the provided dictionary
-   will amend what's there.  The application must insure that the dictionary
-   that was used for compression is provided.
-
-     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
-   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
-   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
-   expected one (incorrect adler32 value).  inflateSetDictionary does not
-   perform any decompression: this will be done by subsequent calls of
-   inflate().
-*/
-
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
-/*
-     Skips invalid compressed data until a possible full flush point (see above
-   for the description of deflate with Z_FULL_FLUSH) can be found, or until all
-   available input is skipped.  No output is provided.
-
-     inflateSync searches for a 00 00 FF FF pattern in the compressed data.
-   All full flush points have this pattern, but not all occurences of this
-   pattern are full flush points.
-
-     inflateSync returns Z_OK if a possible full flush point has been found,
-   Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point
-   has been found, or Z_STREAM_ERROR if the stream structure was inconsistent.
-   In the success case, the application may save the current current value of
-   total_in which indicates where valid compressed data was found.  In the
-   error case, the application may repeatedly call inflateSync, providing more
-   input each time, until success or end of the input data.
-*/
-
-ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
-                                    z_streamp source));
-/*
-     Sets the destination stream as a complete copy of the source stream.
-
-     This function can be useful when randomly accessing a large stream.  The
-   first pass through the stream can periodically record the inflate state,
-   allowing restarting inflate at those points when randomly accessing the
-   stream.
-
-     inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
-   destination.
-*/
-
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to inflateEnd followed by inflateInit,
-   but does not free and reallocate all the internal decompression state.  The
-   stream will keep attributes that may have been set by inflateInit2.
-
-     inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being Z_NULL).
-*/
-
-ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
-                                      int windowBits));
-/*
-     This function is the same as inflateReset, but it also permits changing
-   the wrap and window size requests.  The windowBits parameter is interpreted
-   the same as it is for inflateInit2.
-
-     inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being Z_NULL), or if
-   the windowBits parameter is invalid.
-*/
-
-ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
-/*
-     This function inserts bits in the inflate input stream.  The intent is
-   that this function is used to start inflating at a bit position in the
-   middle of a byte.  The provided bits will be used before any bytes are used
-   from next_in.  This function should only be used with raw inflate, and
-   should be used before the first inflate() call after inflateInit2() or
-   inflateReset().  bits must be less than or equal to 16, and that many of the
-   least significant bits of value will be inserted in the input.
-
-     If bits is negative, then the input stream bit buffer is emptied.  Then
-   inflatePrime() can be called again to put bits in the buffer.  This is used
-   to clear out bits leftover after feeding inflate a block description prior
-   to feeding inflate codes.
-
-     inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
-/*
-     This function returns two values, one in the lower 16 bits of the return
-   value, and the other in the remaining upper bits, obtained by shifting the
-   return value down 16 bits.  If the upper value is -1 and the lower value is
-   zero, then inflate() is currently decoding information outside of a block.
-   If the upper value is -1 and the lower value is non-zero, then inflate is in
-   the middle of a stored block, with the lower value equaling the number of
-   bytes from the input remaining to copy.  If the upper value is not -1, then
-   it is the number of bits back from the current bit position in the input of
-   the code (literal or length/distance pair) currently being processed.  In
-   that case the lower value is the number of bytes already emitted for that
-   code.
-
-     A code is being processed if inflate is waiting for more input to complete
-   decoding of the code, or if it has completed decoding but is waiting for
-   more output space to write the literal or match data.
-
-     inflateMark() is used to mark locations in the input data for random
-   access, which may be at bit positions, and to note those cases where the
-   output of a code may span boundaries of random access blocks.  The current
-   location in the input stream can be determined from avail_in and data_type
-   as noted in the description for the Z_BLOCK flush parameter for inflate.
-
-     inflateMark returns the value noted above or -1 << 16 if the provided
-   source stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
-                                         gz_headerp head));
-/*
-     inflateGetHeader() requests that gzip header information be stored in the
-   provided gz_header structure.  inflateGetHeader() may be called after
-   inflateInit2() or inflateReset(), and before the first call of inflate().
-   As inflate() processes the gzip stream, head->done is zero until the header
-   is completed, at which time head->done is set to one.  If a zlib stream is
-   being decoded, then head->done is set to -1 to indicate that there will be
-   no gzip header information forthcoming.  Note that Z_BLOCK or Z_TREES can be
-   used to force inflate() to return immediately after header processing is
-   complete and before any actual data is decompressed.
-
-     The text, time, xflags, and os fields are filled in with the gzip header
-   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
-   was valid if done is set to one.) If extra is not Z_NULL, then extra_max
-   contains the maximum number of bytes to write to extra.  Once done is true,
-   extra_len contains the actual extra field length, and extra contains the
-   extra field, or that field truncated if extra_max is less than extra_len.
-   If name is not Z_NULL, then up to name_max characters are written there,
-   terminated with a zero unless the length is greater than name_max.  If
-   comment is not Z_NULL, then up to comm_max characters are written there,
-   terminated with a zero unless the length is greater than comm_max.  When any
-   of extra, name, or comment are not Z_NULL and the respective field is not
-   present in the header, then that field is set to Z_NULL to signal its
-   absence.  This allows the use of deflateSetHeader() with the returned
-   structure to duplicate the header.  However if those fields are set to
-   allocated memory, then the application will need to save those pointers
-   elsewhere so that they can be eventually freed.
-
-     If inflateGetHeader is not used, then the header information is simply
-   discarded.  The header is always checked for validity, including the header
-   CRC if present.  inflateReset() will reset the process to discard the header
-   information.  The application would need to call inflateGetHeader() again to
-   retrieve the header from the next gzip stream.
-
-     inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
-                                        unsigned char FAR *window));
-
-     Initialize the internal stream state for decompression using inflateBack()
-   calls.  The fields zalloc, zfree and opaque in strm must be initialized
-   before the call.  If zalloc and zfree are Z_NULL, then the default library-
-   derived memory allocation routines are used.  windowBits is the base two
-   logarithm of the window size, in the range 8..15.  window is a caller
-   supplied buffer of that size.  Except for special applications where it is
-   assured that deflate was used with small window sizes, windowBits must be 15
-   and a 32K byte window must be supplied to be able to decompress general
-   deflate streams.
-
-     See inflateBack() for the usage of these routines.
-
-     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
-   the parameters are invalid, Z_MEM_ERROR if the internal state could not be
-   allocated, or Z_VERSION_ERROR if the version of the library does not match
-   the version of the header file.
-*/
-
-typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
-typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
-
-ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
-                                    in_func in, void FAR *in_desc,
-                                    out_func out, void FAR *out_desc));
-/*
-     inflateBack() does a raw inflate with a single call using a call-back
-   interface for input and output.  This is more efficient than inflate() for
-   file i/o applications in that it avoids copying between the output and the
-   sliding window by simply making the window itself the output buffer.  This
-   function trusts the application to not change the output buffer passed by
-   the output function, at least until inflateBack() returns.
-
-     inflateBackInit() must be called first to allocate the internal state
-   and to initialize the state with the user-provided window buffer.
-   inflateBack() may then be used multiple times to inflate a complete, raw
-   deflate stream with each call.  inflateBackEnd() is then called to free the
-   allocated state.
-
-     A raw deflate stream is one with no zlib or gzip header or trailer.
-   This routine would normally be used in a utility that reads zip or gzip
-   files and writes out uncompressed files.  The utility would decode the
-   header and process the trailer on its own, hence this routine expects only
-   the raw deflate stream to decompress.  This is different from the normal
-   behavior of inflate(), which expects either a zlib or gzip header and
-   trailer around the deflate stream.
-
-     inflateBack() uses two subroutines supplied by the caller that are then
-   called by inflateBack() for input and output.  inflateBack() calls those
-   routines until it reads a complete deflate stream and writes out all of the
-   uncompressed data, or until it encounters an error.  The function's
-   parameters and return types are defined above in the in_func and out_func
-   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the
-   number of bytes of provided input, and a pointer to that input in buf.  If
-   there is no input available, in() must return zero--buf is ignored in that
-   case--and inflateBack() will return a buffer error.  inflateBack() will call
-   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()
-   should return zero on success, or non-zero on failure.  If out() returns
-   non-zero, inflateBack() will return with an error.  Neither in() nor out()
-   are permitted to change the contents of the window provided to
-   inflateBackInit(), which is also the buffer that out() uses to write from.
-   The length written by out() will be at most the window size.  Any non-zero
-   amount of input may be provided by in().
-
-     For convenience, inflateBack() can be provided input on the first call by
-   setting strm->next_in and strm->avail_in.  If that input is exhausted, then
-   in() will be called.  Therefore strm->next_in must be initialized before
-   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
-   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
-   must also be initialized, and then if strm->avail_in is not zero, input will
-   initially be taken from strm->next_in[0 ..  strm->avail_in - 1].
-
-     The in_desc and out_desc parameters of inflateBack() is passed as the
-   first parameter of in() and out() respectively when they are called.  These
-   descriptors can be optionally used to pass any information that the caller-
-   supplied in() and out() functions need to do their job.
-
-     On return, inflateBack() will set strm->next_in and strm->avail_in to
-   pass back any unused input that was provided by the last in() call.  The
-   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
-   if in() or out() returned an error, Z_DATA_ERROR if there was a format error
-   in the deflate stream (in which case strm->msg is set to indicate the nature
-   of the error), or Z_STREAM_ERROR if the stream was not properly initialized.
-   In the case of Z_BUF_ERROR, an input or output error can be distinguished
-   using strm->next_in which will be Z_NULL only if in() returned an error.  If
-   strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning
-   non-zero.  (in() will always be called before out(), so strm->next_in is
-   assured to be defined if out() returns non-zero.) Note that inflateBack()
-   cannot return Z_OK.
-*/
-
-ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
-/*
-     All memory allocated by inflateBackInit() is freed.
-
-     inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
-   state was inconsistent.
-*/
-
-ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
-/* Return flags indicating compile-time options.
-
-    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
-     1.0: size of uInt
-     3.2: size of uLong
-     5.4: size of voidpf (pointer)
-     7.6: size of z_off_t
-
-    Compiler, assembler, and debug options:
-     8: DEBUG
-     9: ASMV or ASMINF -- use ASM code
-     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
-     11: 0 (reserved)
-
-    One-time table building (smaller code, but not thread-safe if true):
-     12: BUILDFIXED -- build static block decoding tables when needed
-     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
-     14,15: 0 (reserved)
-
-    Library content (indicates missing functionality):
-     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
-                          deflate code when not needed)
-     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
-                    and decode gzip streams (to avoid linking crc code)
-     18-19: 0 (reserved)
-
-    Operation variations (changes in library functionality):
-     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
-     21: FASTEST -- deflate algorithm with only one, lowest compression level
-     22,23: 0 (reserved)
-
-    The sprintf variant used by gzprintf (zero is best):
-     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
-     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
-     26: 0 = returns value, 1 = void -- 1 means inferred string length returned
-
-    Remainder:
-     27-31: 0 (reserved)
- */
-
-#ifndef Z_SOLO
-
-                        /* utility functions */
-
-/*
-     The following utility functions are implemented on top of the basic
-   stream-oriented functions.  To simplify the interface, some default options
-   are assumed (compression level and memory usage, standard memory allocation
-   functions).  The source code of these utility functions can be modified if
-   you need special options.
-*/
-
-ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
-                                 const Bytef *source, uLong sourceLen));
-/*
-     Compresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer.  Upon entry, destLen is the total size
-   of the destination buffer, which must be at least the value returned by
-   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
-   compressed buffer.
-
-     compress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer.
-*/
-
-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
-                                  const Bytef *source, uLong sourceLen,
-                                  int level));
-/*
-     Compresses the source buffer into the destination buffer.  The level
-   parameter has the same meaning as in deflateInit.  sourceLen is the byte
-   length of the source buffer.  Upon entry, destLen is the total size of the
-   destination buffer, which must be at least the value returned by
-   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
-   compressed buffer.
-
-     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
-   Z_STREAM_ERROR if the level parameter is invalid.
-*/
-
-ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
-/*
-     compressBound() returns an upper bound on the compressed size after
-   compress() or compress2() on sourceLen bytes.  It would be used before a
-   compress() or compress2() call to allocate the destination buffer.
-*/
-
-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
-                                   const Bytef *source, uLong sourceLen));
-/*
-     Decompresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer.  Upon entry, destLen is the total size
-   of the destination buffer, which must be large enough to hold the entire
-   uncompressed data.  (The size of the uncompressed data must have been saved
-   previously by the compressor and transmitted to the decompressor by some
-   mechanism outside the scope of this compression library.) Upon exit, destLen
-   is the actual size of the uncompressed buffer.
-
-     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.  In
-   the case where there is not enough room, uncompress() will fill the output
-   buffer with the uncompressed data up to that point.
-*/
-
-                        /* gzip file access functions */
-
-/*
-     This library supports reading and writing files in gzip (.gz) format with
-   an interface similar to that of stdio, using the functions that start with
-   "gz".  The gzip format is different from the zlib format.  gzip is a gzip
-   wrapper, documented in RFC 1952, wrapped around a deflate stream.
-*/
-
-typedef struct gzFile_s *gzFile;    /* semi-opaque gzip file descriptor */
-
-/*
-ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
-
-     Opens a gzip (.gz) file for reading or writing.  The mode parameter is as
-   in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
-   a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
-   compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
-   for fixed code compression as in "wb9F".  (See the description of
-   deflateInit2 for more information about the strategy parameter.)  'T' will
-   request transparent writing or appending with no compression and not using
-   the gzip format.
-
-     "a" can be used instead of "w" to request that the gzip stream that will
-   be written be appended to the file.  "+" will result in an error, since
-   reading and writing to the same gzip file is not supported.
-
-     These functions, as well as gzip, will read and decode a sequence of gzip
-   streams in a file.  The append function of gzopen() can be used to create
-   such a file.  (Also see gzflush() for another way to do this.)  When
-   appending, gzopen does not test whether the file begins with a gzip stream,
-   nor does it look for the end of the gzip streams to begin appending.  gzopen
-   will simply append a gzip stream to the existing file.
-
-     gzopen can be used to read a file which is not in gzip format; in this
-   case gzread will directly read from the file without decompression.  When
-   reading, this will be detected automatically by looking for the magic two-
-   byte gzip header.
-
-     gzopen returns NULL if the file could not be opened, if there was
-   insufficient memory to allocate the gzFile state, or if an invalid mode was
-   specified (an 'r', 'w', or 'a' was not provided, or '+' was provided).
-   errno can be checked to determine if the reason gzopen failed was that the
-   file could not be opened.
-*/
-
-ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
-/*
-     gzdopen associates a gzFile with the file descriptor fd.  File descriptors
-   are obtained from calls like open, dup, creat, pipe or fileno (if the file
-   has been previously opened with fopen).  The mode parameter is as in gzopen.
-
-     The next call of gzclose on the returned gzFile will also close the file
-   descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
-   fd.  If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd,
-   mode);.  The duplicated descriptor should be saved to avoid a leak, since
-   gzdopen does not close fd if it fails.  If you are using fileno() to get the
-   file descriptor from a FILE *, then you will have to use dup() to avoid
-   double-close()ing the file descriptor.  Both gzclose() and fclose() will
-   close the associated file descriptor, so they need to have different file
-   descriptors.
-
-     gzdopen returns NULL if there was insufficient memory to allocate the
-   gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not
-   provided, or '+' was provided), or if fd is -1.  The file descriptor is not
-   used until the next gz* read, write, seek, or close operation, so gzdopen
-   will not detect if fd is invalid (unless fd is -1).
-*/
-
-ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
-/*
-     Set the internal buffer size used by this library's functions.  The
-   default buffer size is 8192 bytes.  This function must be called after
-   gzopen() or gzdopen(), and before any other calls that read or write the
-   file.  The buffer memory allocation is always deferred to the first read or
-   write.  Two buffers are allocated, either both of the specified size when
-   writing, or one of the specified size and the other twice that size when
-   reading.  A larger buffer size of, for example, 64K or 128K bytes will
-   noticeably increase the speed of decompression (reading).
-
-     The new buffer size also affects the maximum length for gzprintf().
-
-     gzbuffer() returns 0 on success, or -1 on failure, such as being called
-   too late.
-*/
-
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
-/*
-     Dynamically update the compression level or strategy.  See the description
-   of deflateInit2 for the meaning of these parameters.
-
-     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
-   opened for writing.
-*/
-
-ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
-/*
-     Reads the given number of uncompressed bytes from the compressed file.  If
-   the input file is not in gzip format, gzread copies the given number of
-   bytes into the buffer directly from the file.
-
-     After reaching the end of a gzip stream in the input, gzread will continue
-   to read, looking for another gzip stream.  Any number of gzip streams may be
-   concatenated in the input file, and will all be decompressed by gzread().
-   If something other than a gzip stream is encountered after a gzip stream,
-   that remaining trailing garbage is ignored (and no error is returned).
-
-     gzread can be used to read a gzip file that is being concurrently written.
-   Upon reaching the end of the input, gzread will return with the available
-   data.  If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then
-   gzclearerr can be used to clear the end of file indicator in order to permit
-   gzread to be tried again.  Z_OK indicates that a gzip stream was completed
-   on the last gzread.  Z_BUF_ERROR indicates that the input file ended in the
-   middle of a gzip stream.  Note that gzread does not return -1 in the event
-   of an incomplete gzip stream.  This error is deferred until gzclose(), which
-   will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip
-   stream.  Alternatively, gzerror can be used before gzclose to detect this
-   case.
-
-     gzread returns the number of uncompressed bytes actually read, less than
-   len for end of file, or -1 for error.
-*/
-
-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
-                                voidpc buf, unsigned len));
-/*
-     Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of uncompressed bytes written or 0 in case of
-   error.
-*/
-
-ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
-/*
-     Converts, formats, and writes the arguments to the compressed file under
-   control of the format string, as in fprintf.  gzprintf returns the number of
-   uncompressed bytes actually written, or 0 in case of error.  The number of
-   uncompressed bytes written is limited to 8191, or one less than the buffer
-   size given to gzbuffer().  The caller should assure that this limit is not
-   exceeded.  If it is exceeded, then gzprintf() will return an error (0) with
-   nothing written.  In this case, there may also be a buffer overflow with
-   unpredictable consequences, which is possible only if zlib was compiled with
-   the insecure functions sprintf() or vsprintf() because the secure snprintf()
-   or vsnprintf() functions were not available.  This can be determined using
-   zlibCompileFlags().
-*/
-
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
-/*
-     Writes the given null-terminated string to the compressed file, excluding
-   the terminating null character.
-
-     gzputs returns the number of characters written, or -1 in case of error.
-*/
-
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
-/*
-     Reads bytes from the compressed file until len-1 characters are read, or a
-   newline character is read and transferred to buf, or an end-of-file
-   condition is encountered.  If any characters are read or if len == 1, the
-   string is terminated with a null character.  If no characters are read due
-   to an end-of-file or len < 1, then the buffer is left untouched.
-
-     gzgets returns buf which is a null-terminated string, or it returns NULL
-   for end-of-file or in case of error.  If there was an error, the contents at
-   buf are indeterminate.
-*/
-
-ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
-/*
-     Writes c, converted to an unsigned char, into the compressed file.  gzputc
-   returns the value that was written, or -1 in case of error.
-*/
-
-ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
-/*
-     Reads one byte from the compressed file.  gzgetc returns this byte or -1
-   in case of end of file or error.  This is implemented as a macro for speed.
-   As such, it does not do all of the checking the other functions do.  I.e.
-   it does not check to see if file is NULL, nor whether the structure file
-   points to has been clobbered or not.
-*/
-
-ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
-/*
-     Push one character back onto the stream to be read as the first character
-   on the next read.  At least one character of push-back is allowed.
-   gzungetc() returns the character pushed, or -1 on failure.  gzungetc() will
-   fail if c is -1, and may fail if a character has been pushed but not read
-   yet.  If gzungetc is used immediately after gzopen or gzdopen, at least the
-   output buffer size of pushed characters is allowed.  (See gzbuffer above.)
-   The pushed character will be discarded if the stream is repositioned with
-   gzseek() or gzrewind().
-*/
-
-ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
-/*
-     Flushes all pending output into the compressed file.  The parameter flush
-   is as in the deflate() function.  The return value is the zlib error number
-   (see function gzerror below).  gzflush is only permitted when writing.
-
-     If the flush parameter is Z_FINISH, the remaining data is written and the
-   gzip stream is completed in the output.  If gzwrite() is called again, a new
-   gzip stream will be started in the output.  gzread() is able to read such
-   concatented gzip streams.
-
-     gzflush should be called only when strictly necessary because it will
-   degrade compression if called too often.
-*/
-
-/*
-ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
-                                   z_off_t offset, int whence));
-
-     Sets the starting position for the next gzread or gzwrite on the given
-   compressed file.  The offset represents a number of bytes in the
-   uncompressed data stream.  The whence parameter is defined as in lseek(2);
-   the value SEEK_END is not supported.
-
-     If the file is opened for reading, this function is emulated but can be
-   extremely slow.  If the file is opened for writing, only forward seeks are
-   supported; gzseek then compresses a sequence of zeroes up to the new
-   starting position.
-
-     gzseek returns the resulting offset location as measured in bytes from
-   the beginning of the uncompressed stream, or -1 in case of error, in
-   particular if the file is opened for writing and the new starting position
-   would be before the current position.
-*/
-
-ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
-/*
-     Rewinds the given file. This function is supported only for reading.
-
-     gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
-*/
-
-/*
-ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
-
-     Returns the starting position for the next gzread or gzwrite on the given
-   compressed file.  This position represents a number of bytes in the
-   uncompressed data stream, and is zero when starting, even if appending or
-   reading a gzip stream from the middle of a file using gzdopen().
-
-     gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
-*/
-
-/*
-ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
-
-     Returns the current offset in the file being read or written.  This offset
-   includes the count of bytes that precede the gzip stream, for example when
-   appending or when using gzdopen() for reading.  When reading, the offset
-   does not include as yet unused buffered input.  This information can be used
-   for a progress indicator.  On error, gzoffset() returns -1.
-*/
-
-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
-/*
-     Returns true (1) if the end-of-file indicator has been set while reading,
-   false (0) otherwise.  Note that the end-of-file indicator is set only if the
-   read tried to go past the end of the input, but came up short.  Therefore,
-   just like feof(), gzeof() may return false even if there is no more data to
-   read, in the event that the last read request was for the exact number of
-   bytes remaining in the input file.  This will happen if the input file size
-   is an exact multiple of the buffer size.
-
-     If gzeof() returns true, then the read functions will return no more data,
-   unless the end-of-file indicator is reset by gzclearerr() and the input file
-   has grown since the previous end of file was detected.
-*/
-
-ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
-/*
-     Returns true (1) if file is being copied directly while reading, or false
-   (0) if file is a gzip stream being decompressed.
-
-     If the input file is empty, gzdirect() will return true, since the input
-   does not contain a gzip stream.
-
-     If gzdirect() is used immediately after gzopen() or gzdopen() it will
-   cause buffers to be allocated to allow reading the file to determine if it
-   is a gzip file.  Therefore if gzbuffer() is used, it should be called before
-   gzdirect().
-
-     When writing, gzdirect() returns true (1) if transparent writing was
-   requested ("wT" for the gzopen() mode), or false (0) otherwise.  (Note:
-   gzdirect() is not needed when writing.  Transparent writing must be
-   explicitly requested, so the application already knows the answer.  When
-   linking statically, using gzdirect() will include all of the zlib code for
-   gzip file reading and decompression, which may not be desired.)
-*/
-
-ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
-/*
-     Flushes all pending output if necessary, closes the compressed file and
-   deallocates the (de)compression state.  Note that once file is closed, you
-   cannot call gzerror with file, since its structures have been deallocated.
-   gzclose must not be called more than once on the same file, just as free
-   must not be called more than once on the same allocation.
-
-     gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a
-   file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the
-   last read ended in the middle of a gzip stream, or Z_OK on success.
-*/
-
-ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
-ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
-/*
-     Same as gzclose(), but gzclose_r() is only for use when reading, and
-   gzclose_w() is only for use when writing or appending.  The advantage to
-   using these instead of gzclose() is that they avoid linking in zlib
-   compression or decompression code that is not used when only reading or only
-   writing respectively.  If gzclose() is used, then both compression and
-   decompression code will be included the application when linking to a static
-   zlib library.
-*/
-
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
-/*
-     Returns the error message for the last error which occurred on the given
-   compressed file.  errnum is set to zlib error number.  If an error occurred
-   in the file system and not in the compression library, errnum is set to
-   Z_ERRNO and the application may consult errno to get the exact error code.
-
-     The application must not modify the returned string.  Future calls to
-   this function may invalidate the previously returned string.  If file is
-   closed, then the string previously returned by gzerror will no longer be
-   available.
-
-     gzerror() should be used to distinguish errors from end-of-file for those
-   functions above that do not distinguish those cases in their return values.
-*/
-
-ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
-/*
-     Clears the error and end-of-file flags for file.  This is analogous to the
-   clearerr() function in stdio.  This is useful for continuing to read a gzip
-   file that is being written concurrently.
-*/
-
-#endif /* !Z_SOLO */
-
-                        /* checksum functions */
-
-/*
-     These functions are not related to compression but are exported
-   anyway because they might be useful in applications using the compression
-   library.
-*/
-
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-/*
-     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-   return the updated checksum.  If buf is Z_NULL, this function returns the
-   required initial value for the checksum.
-
-     An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
-   much faster.
-
-   Usage example:
-
-     uLong adler = adler32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       adler = adler32(adler, buffer, length);
-     }
-     if (adler != original_adler) error();
-*/
-
-/*
-ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
-                                          z_off_t len2));
-
-     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
-   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
-   each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of
-   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.  Note
-   that the z_off_t type (like off_t) is a signed integer.  If len2 is
-   negative, the result has no meaning or utility.
-*/
-
-ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
-/*
-     Update a running CRC-32 with the bytes buf[0..len-1] and return the
-   updated CRC-32.  If buf is Z_NULL, this function returns the required
-   initial value for the for the crc.  Pre- and post-conditioning (one's
-   complement) is performed within this function so it shouldn't be done by the
-   application.
-
-   Usage example:
-
-     uLong crc = crc32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       crc = crc32(crc, buffer, length);
-     }
-     if (crc != original_crc) error();
-*/
-
-/*
-ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
-
-     Combine two CRC-32 check values into one.  For two sequences of bytes,
-   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
-   calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
-   check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
-   len2.
-*/
-
-
-                        /* various hacks, don't look :) */
-
-/* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
-                                      int windowBits, int memLevel,
-                                      int strategy, const char *version,
-                                      int stream_size));
-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
-                                      const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
-                                         unsigned char FAR *window,
-                                         const char *version,
-                                         int stream_size));
-#define deflateInit(strm, level) \
-        deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
-#define inflateInit(strm) \
-        inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
-        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
-                      (strategy), ZLIB_VERSION, (int)sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
-        inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
-                      (int)sizeof(z_stream))
-#define inflateBackInit(strm, windowBits, window) \
-        inflateBackInit_((strm), (windowBits), (window), \
-                      ZLIB_VERSION, (int)sizeof(z_stream))
-
-#ifndef Z_SOLO
-
-/* gzgetc() macro and its supporting function and exposed data structure.  Note
- * that the real internal state is much larger than the exposed structure.
- * This abbreviated structure exposes just enough for the gzgetc() macro.  The
- * user should not mess with these exposed elements, since their names or
- * behavior could change in the future, perhaps even capriciously.  They can
- * only be used by the gzgetc() macro.  You have been warned.
- */
-struct gzFile_s {
-    unsigned have;
-    unsigned char *next;
-    z_off64_t pos;
-};
-ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));
-#define gzgetc(g) \
-    ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc_(g))
-
-/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
- * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if
- * both are true, the application gets the *64 functions, and the regular
- * functions are changed to 64 bits) -- in case these are set on systems
- * without large file support, _LFS64_LARGEFILE must also be true
- */
-#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
-   ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-   ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
-   ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
-   ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
-   ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
-   ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
-#endif
-
-#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0
-#  ifdef Z_PREFIX_SET
-#    define z_gzopen z_gzopen64
-#    define z_gzseek z_gzseek64
-#    define z_gztell z_gztell64
-#    define z_gzoffset z_gzoffset64
-#    define z_adler32_combine z_adler32_combine64
-#    define z_crc32_combine z_crc32_combine64
-#  else
-#    define gzopen gzopen64
-#    define gzseek gzseek64
-#    define gztell gztell64
-#    define gzoffset gzoffset64
-#    define adler32_combine adler32_combine64
-#    define crc32_combine crc32_combine64
-#  endif
-#  ifndef _LARGEFILE64_SOURCE
-     ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-     ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
-     ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
-     ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
-     ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
-     ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
-#  endif
-#else
-   ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
-   ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));
-   ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));
-   ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
-   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
-   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
-#endif
-
-#else /* Z_SOLO */
-
-   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
-   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
-
-#endif /* !Z_SOLO */
-
-/* hack for buggy compilers */
-#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
-    struct internal_state {int dummy;};
-#endif
-
-/* undocumented functions */
-ZEXTERN const char   * ZEXPORT zError           OF((int));
-ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp));
-ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
-ZEXTERN int            ZEXPORT inflateUndermine OF((z_streamp, int));
-ZEXTERN int            ZEXPORT inflateResetKeep OF((z_streamp));
-ZEXTERN int            ZEXPORT deflateResetKeep OF((z_streamp));
-#ifndef Z_SOLO
-  ZEXTERN unsigned long  ZEXPORT gzflags          OF((void));
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ZLIB_H */
diff --git a/misc/builddeps/win64/zlib/lib/libz.a b/misc/builddeps/win64/zlib/lib/libz.a
deleted file mode 100644 (file)
index 93a0a6b..0000000
Binary files a/misc/builddeps/win64/zlib/lib/libz.a and /dev/null differ
diff --git a/misc/builddeps/win64/zlib/lib/libz.dll.a b/misc/builddeps/win64/zlib/lib/libz.dll.a
deleted file mode 120000 (symlink)
index d68f850..0000000
+++ /dev/null
@@ -1 +0,0 @@
-libzdll.a
\ No newline at end of file
diff --git a/misc/builddeps/win64/zlib/lib/libzdll.a b/misc/builddeps/win64/zlib/lib/libzdll.a
deleted file mode 100644 (file)
index c10a88f..0000000
Binary files a/misc/builddeps/win64/zlib/lib/libzdll.a and /dev/null differ
diff --git a/misc/builddeps/win64/zlib/lib/pkgconfig/zlib.pc b/misc/builddeps/win64/zlib/lib/pkgconfig/zlib.pc
deleted file mode 100644 (file)
index 17626e1..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-prefix=/usr/local
-exec_prefix=/usr/local
-libdir=/tmp/zlib-1.2.6.out/usr/local/lib
-sharedlibdir=/tmp/zlib-1.2.6.out/usr/local/lib
-includedir=/tmp/zlib-1.2.6.out/usr/local/include
-
-Name: zlib
-Description: zlib compression library
-Version: 1.2.6
-
-Requires:
-Libs: -L${libdir} -L${sharedlibdir} -lz
-Cflags: -I${includedir}
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Headers b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Headers
deleted file mode 120000 (symlink)
index a177d2a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Headers
\ No newline at end of file
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Resources b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Resources
deleted file mode 120000 (symlink)
index 953ee36..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Resources
\ No newline at end of file
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/SDL2 b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/SDL2
deleted file mode 120000 (symlink)
index 9dd4e4f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/SDL2
\ No newline at end of file
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL.h
deleted file mode 100644 (file)
index 88dce0c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL.h
- *
- *  Main include header for the SDL library
- */
-
-
-#ifndef SDL_h_
-#define SDL_h_
-
-#include "SDL_main.h"
-#include "SDL_stdinc.h"
-#include "SDL_assert.h"
-#include "SDL_atomic.h"
-#include "SDL_audio.h"
-#include "SDL_clipboard.h"
-#include "SDL_cpuinfo.h"
-#include "SDL_endian.h"
-#include "SDL_error.h"
-#include "SDL_events.h"
-#include "SDL_filesystem.h"
-#include "SDL_gamecontroller.h"
-#include "SDL_haptic.h"
-#include "SDL_hints.h"
-#include "SDL_joystick.h"
-#include "SDL_loadso.h"
-#include "SDL_log.h"
-#include "SDL_messagebox.h"
-#include "SDL_mutex.h"
-#include "SDL_power.h"
-#include "SDL_render.h"
-#include "SDL_rwops.h"
-#include "SDL_sensor.h"
-#include "SDL_shape.h"
-#include "SDL_system.h"
-#include "SDL_thread.h"
-#include "SDL_timer.h"
-#include "SDL_version.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* As of version 0.5, SDL is loaded dynamically into the application */
-
-/**
- *  \name SDL_INIT_*
- *
- *  These are the flags which may be passed to SDL_Init().  You should
- *  specify the subsystems which you will be using in your application.
- */
-/* @{ */
-#define SDL_INIT_TIMER          0x00000001u
-#define SDL_INIT_AUDIO          0x00000010u
-#define SDL_INIT_VIDEO          0x00000020u  /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
-#define SDL_INIT_JOYSTICK       0x00000200u  /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
-#define SDL_INIT_HAPTIC         0x00001000u
-#define SDL_INIT_GAMECONTROLLER 0x00002000u  /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
-#define SDL_INIT_EVENTS         0x00004000u
-#define SDL_INIT_SENSOR         0x00008000u
-#define SDL_INIT_NOPARACHUTE    0x00100000u  /**< compatibility; this flag is ignored. */
-#define SDL_INIT_EVERYTHING ( \
-                SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
-                SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \
-            )
-/* @} */
-
-/**
- *  This function initializes  the subsystems specified by \c flags
- */
-extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
-
-/**
- *  This function initializes specific SDL subsystems
- *
- *  Subsystem initialization is ref-counted, you must call
- *  SDL_QuitSubSystem() for each SDL_InitSubSystem() to correctly
- *  shutdown a subsystem manually (or call SDL_Quit() to force shutdown).
- *  If a subsystem is already loaded then this call will
- *  increase the ref-count and return.
- */
-extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);
-
-/**
- *  This function cleans up specific SDL subsystems
- */
-extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
-
-/**
- *  This function returns a mask of the specified subsystems which have
- *  previously been initialized.
- *
- *  If \c flags is 0, it returns a mask of all initialized subsystems.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);
-
-/**
- *  This function cleans up all initialized subsystems. You should
- *  call it upon all exit conditions.
- */
-extern DECLSPEC void SDLCALL SDL_Quit(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_assert.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_assert.h
deleted file mode 100644 (file)
index 8baecb6..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_assert_h_
-#define SDL_assert_h_
-
-#include "SDL_config.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef SDL_ASSERT_LEVEL
-#ifdef SDL_DEFAULT_ASSERT_LEVEL
-#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL
-#elif defined(_DEBUG) || defined(DEBUG) || \
-      (defined(__GNUC__) && !defined(__OPTIMIZE__))
-#define SDL_ASSERT_LEVEL 2
-#else
-#define SDL_ASSERT_LEVEL 1
-#endif
-#endif /* SDL_ASSERT_LEVEL */
-
-/*
-These are macros and not first class functions so that the debugger breaks
-on the assertion line and not in some random guts of SDL, and so each
-assert can have unique static variables associated with it.
-*/
-
-#if defined(_MSC_VER)
-/* Don't include intrin.h here because it contains C++ code */
-    extern void __cdecl __debugbreak(void);
-    #define SDL_TriggerBreakpoint() __debugbreak()
-#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) )
-    #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" )
-#elif defined(__386__) && defined(__WATCOMC__)
-    #define SDL_TriggerBreakpoint() { _asm { int 0x03 } }
-#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__)
-    #include <signal.h>
-    #define SDL_TriggerBreakpoint() raise(SIGTRAP)
-#else
-    /* How do we trigger breakpoints on this platform? */
-    #define SDL_TriggerBreakpoint()
-#endif
-
-#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
-#   define SDL_FUNCTION __func__
-#elif ((__GNUC__ >= 2) || defined(_MSC_VER) || defined (__WATCOMC__))
-#   define SDL_FUNCTION __FUNCTION__
-#else
-#   define SDL_FUNCTION "???"
-#endif
-#define SDL_FILE    __FILE__
-#define SDL_LINE    __LINE__
-
-/*
-sizeof (x) makes the compiler still parse the expression even without
-assertions enabled, so the code is always checked at compile time, but
-doesn't actually generate code for it, so there are no side effects or
-expensive checks at run time, just the constant size of what x WOULD be,
-which presumably gets optimized out as unused.
-This also solves the problem of...
-
-    int somevalue = blah();
-    SDL_assert(somevalue == 1);
-
-...which would cause compiles to complain that somevalue is unused if we
-disable assertions.
-*/
-
-/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking
-    this condition isn't constant. And looks like an owl's face! */
-#ifdef _MSC_VER  /* stupid /W4 warnings. */
-#define SDL_NULL_WHILE_LOOP_CONDITION (0,0)
-#else
-#define SDL_NULL_WHILE_LOOP_CONDITION (0)
-#endif
-
-#define SDL_disabled_assert(condition) \
-    do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)
-
-typedef enum
-{
-    SDL_ASSERTION_RETRY,  /**< Retry the assert immediately. */
-    SDL_ASSERTION_BREAK,  /**< Make the debugger trigger a breakpoint. */
-    SDL_ASSERTION_ABORT,  /**< Terminate the program. */
-    SDL_ASSERTION_IGNORE,  /**< Ignore the assert. */
-    SDL_ASSERTION_ALWAYS_IGNORE  /**< Ignore the assert from now on. */
-} SDL_AssertState;
-
-typedef struct SDL_AssertData
-{
-    int always_ignore;
-    unsigned int trigger_count;
-    const char *condition;
-    const char *filename;
-    int linenum;
-    const char *function;
-    const struct SDL_AssertData *next;
-} SDL_AssertData;
-
-#if (SDL_ASSERT_LEVEL > 0)
-
-/* Never call this directly. Use the SDL_assert* macros. */
-extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
-                                                             const char *,
-                                                             const char *, int)
-#if defined(__clang__)
-#if __has_feature(attribute_analyzer_noreturn)
-/* this tells Clang's static analysis that we're a custom assert function,
-   and that the analyzer should assume the condition was always true past this
-   SDL_assert test. */
-   __attribute__((analyzer_noreturn))
-#endif
-#endif
-;
-
-/* the do {} while(0) avoids dangling else problems:
-    if (x) SDL_assert(y); else blah();
-       ... without the do/while, the "else" could attach to this macro's "if".
-   We try to handle just the minimum we need here in a macro...the loop,
-   the static vars, and break points. The heavy lifting is handled in
-   SDL_ReportAssertion(), in SDL_assert.c.
-*/
-#define SDL_enabled_assert(condition) \
-    do { \
-        while ( !(condition) ) { \
-            static struct SDL_AssertData sdl_assert_data = { \
-                0, 0, #condition, 0, 0, 0, 0 \
-            }; \
-            const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \
-            if (sdl_assert_state == SDL_ASSERTION_RETRY) { \
-                continue; /* go again. */ \
-            } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \
-                SDL_TriggerBreakpoint(); \
-            } \
-            break; /* not retrying. */ \
-        } \
-    } while (SDL_NULL_WHILE_LOOP_CONDITION)
-
-#endif  /* enabled assertions support code */
-
-/* Enable various levels of assertions. */
-#if SDL_ASSERT_LEVEL == 0   /* assertions disabled */
-#   define SDL_assert(condition) SDL_disabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_disabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 1  /* release settings. */
-#   define SDL_assert(condition) SDL_disabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 2  /* normal settings. */
-#   define SDL_assert(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 3  /* paranoid settings. */
-#   define SDL_assert(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_release(condition) SDL_enabled_assert(condition)
-#   define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)
-#else
-#   error Unknown assertion level.
-#endif
-
-/* this assertion is never disabled at any level. */
-#define SDL_assert_always(condition) SDL_enabled_assert(condition)
-
-
-typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
-                                 const SDL_AssertData* data, void* userdata);
-
-/**
- *  \brief Set an application-defined assertion handler.
- *
- *  This allows an app to show its own assertion UI and/or force the
- *  response to an assertion failure. If the app doesn't provide this, SDL
- *  will try to do the right thing, popping up a system-specific GUI dialog,
- *  and probably minimizing any fullscreen windows.
- *
- *  This callback may fire from any thread, but it runs wrapped in a mutex, so
- *  it will only fire from one thread at a time.
- *
- *  Setting the callback to NULL restores SDL's original internal handler.
- *
- *  This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
- *
- *  Return SDL_AssertState value of how to handle the assertion failure.
- *
- *  \param handler Callback function, called when an assertion fails.
- *  \param userdata A pointer passed to the callback as-is.
- */
-extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
-                                            SDL_AssertionHandler handler,
-                                            void *userdata);
-
-/**
- *  \brief Get the default assertion handler.
- *
- *  This returns the function pointer that is called by default when an
- *   assertion is triggered. This is an internal function provided by SDL,
- *   that is used for assertions when SDL_SetAssertionHandler() hasn't been
- *   used to provide a different function.
- *
- *  \return The default SDL_AssertionHandler that is called when an assert triggers.
- */
-extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);
-
-/**
- *  \brief Get the current assertion handler.
- *
- *  This returns the function pointer that is called when an assertion is
- *   triggered. This is either the value last passed to
- *   SDL_SetAssertionHandler(), or if no application-specified function is
- *   set, is equivalent to calling SDL_GetDefaultAssertionHandler().
- *
- *   \param puserdata Pointer to a void*, which will store the "userdata"
- *                    pointer that was passed to SDL_SetAssertionHandler().
- *                    This value will always be NULL for the default handler.
- *                    If you don't care about this data, it is safe to pass
- *                    a NULL pointer to this function to ignore it.
- *  \return The SDL_AssertionHandler that is called when an assert triggers.
- */
-extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);
-
-/**
- *  \brief Get a list of all assertion failures.
- *
- *  Get all assertions triggered since last call to SDL_ResetAssertionReport(),
- *  or the start of the program.
- *
- *  The proper way to examine this data looks something like this:
- *
- *  <code>
- *  const SDL_AssertData *item = SDL_GetAssertionReport();
- *  while (item) {
- *      printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n",
- *             item->condition, item->function, item->filename,
- *             item->linenum, item->trigger_count,
- *             item->always_ignore ? "yes" : "no");
- *      item = item->next;
- *  }
- *  </code>
- *
- *  \return List of all assertions.
- *  \sa SDL_ResetAssertionReport
- */
-extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void);
-
-/**
- *  \brief Reset the list of all assertion failures.
- *
- *  Reset list of all assertions triggered.
- *
- *  \sa SDL_GetAssertionReport
- */
-extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);
-
-
-/* these had wrong naming conventions until 2.0.4. Please update your app! */
-#define SDL_assert_state SDL_AssertState
-#define SDL_assert_data SDL_AssertData
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_assert_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_atomic.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_atomic.h
deleted file mode 100644 (file)
index deee35f..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_atomic.h
- *
- * Atomic operations.
- *
- * IMPORTANT:
- * If you are not an expert in concurrent lockless programming, you should
- * only be using the atomic lock and reference counting functions in this
- * file.  In all other cases you should be protecting your data structures
- * with full mutexes.
- *
- * The list of "safe" functions to use are:
- *  SDL_AtomicLock()
- *  SDL_AtomicUnlock()
- *  SDL_AtomicIncRef()
- *  SDL_AtomicDecRef()
- *
- * Seriously, here be dragons!
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- *
- * You can find out a little more about lockless programming and the
- * subtle issues that can arise here:
- * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx
- *
- * There's also lots of good information here:
- * http://www.1024cores.net/home/lock-free-algorithms
- * http://preshing.com/
- *
- * These operations may or may not actually be implemented using
- * processor specific atomic operations. When possible they are
- * implemented as true processor specific atomic operations. When that
- * is not possible the are implemented using locks that *do* use the
- * available atomic operations.
- *
- * All of the atomic operations that modify memory are full memory barriers.
- */
-
-#ifndef SDL_atomic_h_
-#define SDL_atomic_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_platform.h"
-
-#include "begin_code.h"
-
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \name SDL AtomicLock
- *
- * The atomic locks are efficient spinlocks using CPU instructions,
- * but are vulnerable to starvation and can spin forever if a thread
- * holding a lock has been terminated.  For this reason you should
- * minimize the code executed inside an atomic lock and never do
- * expensive things like API or system calls while holding them.
- *
- * The atomic locks are not safe to lock recursively.
- *
- * Porting Note:
- * The spin lock functions and type are required and can not be
- * emulated because they are used in the atomic emulation code.
- */
-/* @{ */
-
-typedef int SDL_SpinLock;
-
-/**
- * \brief Try to lock a spin lock by setting it to a non-zero value.
- *
- * \param lock Points to the lock.
- *
- * \return SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already held.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock);
-
-/**
- * \brief Lock a spin lock by setting it to a non-zero value.
- *
- * \param lock Points to the lock.
- */
-extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock);
-
-/**
- * \brief Unlock a spin lock by setting it to 0. Always returns immediately
- *
- * \param lock Points to the lock.
- */
-extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock);
-
-/* @} *//* SDL AtomicLock */
-
-
-/**
- * The compiler barrier prevents the compiler from reordering
- * reads and writes to globally visible variables across the call.
- */
-#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__)
-void _ReadWriteBarrier(void);
-#pragma intrinsic(_ReadWriteBarrier)
-#define SDL_CompilerBarrier()   _ReadWriteBarrier()
-#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
-/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */
-#define SDL_CompilerBarrier()   __asm__ __volatile__ ("" : : : "memory")
-#elif defined(__WATCOMC__)
-extern _inline void SDL_CompilerBarrier (void);
-#pragma aux SDL_CompilerBarrier = "" parm [] modify exact [];
-#else
-#define SDL_CompilerBarrier()   \
-{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); }
-#endif
-
-/**
- * Memory barriers are designed to prevent reads and writes from being
- * reordered by the compiler and being seen out of order on multi-core CPUs.
- *
- * A typical pattern would be for thread A to write some data and a flag,
- * and for thread B to read the flag and get the data. In this case you
- * would insert a release barrier between writing the data and the flag,
- * guaranteeing that the data write completes no later than the flag is
- * written, and you would insert an acquire barrier between reading the
- * flag and reading the data, to ensure that all the reads associated
- * with the flag have completed.
- *
- * In this pattern you should always see a release barrier paired with
- * an acquire barrier and you should gate the data reads/writes with a
- * single flag variable.
- *
- * For more information on these semantics, take a look at the blog post:
- * http://preshing.com/20120913/acquire-and-release-semantics
- */
-extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void);
-extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
-
-#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("lwsync" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("lwsync" : : : "memory")
-#elif defined(__GNUC__) && defined(__aarch64__)
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#elif defined(__GNUC__) && defined(__arm__)
-#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */
-/* Information from:
-   https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19
-
-   The Linux kernel provides a helper function which provides the right code for a memory barrier,
-   hard-coded at address 0xffff0fa0
-*/
-typedef void (*SDL_KernelMemoryBarrierFunc)();
-#define SDL_MemoryBarrierRelease()     ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
-#define SDL_MemoryBarrierAcquire()     ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
-#elif 0 /* defined(__QNXNTO__) */
-#include <sys/cpuinline.h>
-
-#define SDL_MemoryBarrierRelease()   __cpu_membarrier()
-#define SDL_MemoryBarrierAcquire()   __cpu_membarrier()
-#else
-#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__)
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("dmb ish" : : : "memory")
-#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__)
-#ifdef __thumb__
-/* The mcr instruction isn't available in thumb mode, use real functions */
-#define SDL_MEMORY_BARRIER_USES_FUNCTION
-#define SDL_MemoryBarrierRelease()   SDL_MemoryBarrierReleaseFunction()
-#define SDL_MemoryBarrierAcquire()   SDL_MemoryBarrierAcquireFunction()
-#else
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
-#endif /* __thumb__ */
-#else
-#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("" : : : "memory")
-#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("" : : : "memory")
-#endif /* __LINUX__ || __ANDROID__ */
-#endif /* __GNUC__ && __arm__ */
-#else
-#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
-/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */
-#include <mbarrier.h>
-#define SDL_MemoryBarrierRelease()  __machine_rel_barrier()
-#define SDL_MemoryBarrierAcquire()  __machine_acq_barrier()
-#else
-/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */
-#define SDL_MemoryBarrierRelease()  SDL_CompilerBarrier()
-#define SDL_MemoryBarrierAcquire()  SDL_CompilerBarrier()
-#endif
-#endif
-
-/**
- * \brief A type representing an atomic integer value.  It is a struct
- *        so people don't accidentally use numeric operations on it.
- */
-typedef struct { int value; } SDL_atomic_t;
-
-/**
- * \brief Set an atomic variable to a new value if it is currently an old value.
- *
- * \return SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.
- *
- * \note If you don't know what this function is for, you shouldn't use it!
-*/
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval);
-
-/**
- * \brief Set an atomic variable to a value.
- *
- * \return The previous value of the atomic variable.
- */
-extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);
-
-/**
- * \brief Get the value of an atomic variable
- */
-extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);
-
-/**
- * \brief Add to an atomic variable.
- *
- * \return The previous value of the atomic variable.
- *
- * \note This same style can be used for any number operation
- */
-extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
-
-/**
- * \brief Increment an atomic variable used as a reference count.
- */
-#ifndef SDL_AtomicIncRef
-#define SDL_AtomicIncRef(a)    SDL_AtomicAdd(a, 1)
-#endif
-
-/**
- * \brief Decrement an atomic variable used as a reference count.
- *
- * \return SDL_TRUE if the variable reached zero after decrementing,
- *         SDL_FALSE otherwise
- */
-#ifndef SDL_AtomicDecRef
-#define SDL_AtomicDecRef(a)    (SDL_AtomicAdd(a, -1) == 1)
-#endif
-
-/**
- * \brief Set a pointer to a new value if it is currently an old value.
- *
- * \return SDL_TRUE if the pointer was set, SDL_FALSE otherwise.
- *
- * \note If you don't know what this function is for, you shouldn't use it!
-*/
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval);
-
-/**
- * \brief Set a pointer to a value atomically.
- *
- * \return The previous value of the pointer.
- */
-extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);
-
-/**
- * \brief Get the value of a pointer atomically.
- */
-extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-
-#include "close_code.h"
-
-#endif /* SDL_atomic_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_audio.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_audio.h
deleted file mode 100644 (file)
index 305c01a..0000000
+++ /dev/null
@@ -1,859 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_audio.h
- *
- *  Access to the raw audio mixing buffer for the SDL library.
- */
-
-#ifndef SDL_audio_h_
-#define SDL_audio_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_endian.h"
-#include "SDL_mutex.h"
-#include "SDL_thread.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Audio format flags.
- *
- *  These are what the 16 bits in SDL_AudioFormat currently mean...
- *  (Unspecified bits are always zero).
- *
- *  \verbatim
-    ++-----------------------sample is signed if set
-    ||
-    ||       ++-----------sample is bigendian if set
-    ||       ||
-    ||       ||          ++---sample is float if set
-    ||       ||          ||
-    ||       ||          || +---sample bit size---+
-    ||       ||          || |                     |
-    15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
-    \endverbatim
- *
- *  There are macros in SDL 2.0 and later to query these bits.
- */
-typedef Uint16 SDL_AudioFormat;
-
-/**
- *  \name Audio flags
- */
-/* @{ */
-
-#define SDL_AUDIO_MASK_BITSIZE       (0xFF)
-#define SDL_AUDIO_MASK_DATATYPE      (1<<8)
-#define SDL_AUDIO_MASK_ENDIAN        (1<<12)
-#define SDL_AUDIO_MASK_SIGNED        (1<<15)
-#define SDL_AUDIO_BITSIZE(x)         (x & SDL_AUDIO_MASK_BITSIZE)
-#define SDL_AUDIO_ISFLOAT(x)         (x & SDL_AUDIO_MASK_DATATYPE)
-#define SDL_AUDIO_ISBIGENDIAN(x)     (x & SDL_AUDIO_MASK_ENDIAN)
-#define SDL_AUDIO_ISSIGNED(x)        (x & SDL_AUDIO_MASK_SIGNED)
-#define SDL_AUDIO_ISINT(x)           (!SDL_AUDIO_ISFLOAT(x))
-#define SDL_AUDIO_ISLITTLEENDIAN(x)  (!SDL_AUDIO_ISBIGENDIAN(x))
-#define SDL_AUDIO_ISUNSIGNED(x)      (!SDL_AUDIO_ISSIGNED(x))
-
-/**
- *  \name Audio format flags
- *
- *  Defaults to LSB byte order.
- */
-/* @{ */
-#define AUDIO_U8        0x0008  /**< Unsigned 8-bit samples */
-#define AUDIO_S8        0x8008  /**< Signed 8-bit samples */
-#define AUDIO_U16LSB    0x0010  /**< Unsigned 16-bit samples */
-#define AUDIO_S16LSB    0x8010  /**< Signed 16-bit samples */
-#define AUDIO_U16MSB    0x1010  /**< As above, but big-endian byte order */
-#define AUDIO_S16MSB    0x9010  /**< As above, but big-endian byte order */
-#define AUDIO_U16       AUDIO_U16LSB
-#define AUDIO_S16       AUDIO_S16LSB
-/* @} */
-
-/**
- *  \name int32 support
- */
-/* @{ */
-#define AUDIO_S32LSB    0x8020  /**< 32-bit integer samples */
-#define AUDIO_S32MSB    0x9020  /**< As above, but big-endian byte order */
-#define AUDIO_S32       AUDIO_S32LSB
-/* @} */
-
-/**
- *  \name float32 support
- */
-/* @{ */
-#define AUDIO_F32LSB    0x8120  /**< 32-bit floating point samples */
-#define AUDIO_F32MSB    0x9120  /**< As above, but big-endian byte order */
-#define AUDIO_F32       AUDIO_F32LSB
-/* @} */
-
-/**
- *  \name Native audio byte ordering
- */
-/* @{ */
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-#define AUDIO_U16SYS    AUDIO_U16LSB
-#define AUDIO_S16SYS    AUDIO_S16LSB
-#define AUDIO_S32SYS    AUDIO_S32LSB
-#define AUDIO_F32SYS    AUDIO_F32LSB
-#else
-#define AUDIO_U16SYS    AUDIO_U16MSB
-#define AUDIO_S16SYS    AUDIO_S16MSB
-#define AUDIO_S32SYS    AUDIO_S32MSB
-#define AUDIO_F32SYS    AUDIO_F32MSB
-#endif
-/* @} */
-
-/**
- *  \name Allow change flags
- *
- *  Which audio format changes are allowed when opening a device.
- */
-/* @{ */
-#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE    0x00000001
-#define SDL_AUDIO_ALLOW_FORMAT_CHANGE       0x00000002
-#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE     0x00000004
-#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE      0x00000008
-#define SDL_AUDIO_ALLOW_ANY_CHANGE          (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE)
-/* @} */
-
-/* @} *//* Audio flags */
-
-/**
- *  This function is called when the audio device needs more data.
- *
- *  \param userdata An application-specific parameter saved in
- *                  the SDL_AudioSpec structure
- *  \param stream A pointer to the audio data buffer.
- *  \param len    The length of that buffer in bytes.
- *
- *  Once the callback returns, the buffer will no longer be valid.
- *  Stereo samples are stored in a LRLRLR ordering.
- *
- *  You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
- *  you like. Just open your audio device with a NULL callback.
- */
-typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
-                                            int len);
-
-/**
- *  The calculated values in this structure are calculated by SDL_OpenAudio().
- *
- *  For multi-channel audio, the default SDL channel mapping is:
- *  2:  FL FR                       (stereo)
- *  3:  FL FR LFE                   (2.1 surround)
- *  4:  FL FR BL BR                 (quad)
- *  5:  FL FR FC BL BR              (quad + center)
- *  6:  FL FR FC LFE SL SR          (5.1 surround - last two can also be BL BR)
- *  7:  FL FR FC LFE BC SL SR       (6.1 surround)
- *  8:  FL FR FC LFE BL BR SL SR    (7.1 surround)
- */
-typedef struct SDL_AudioSpec
-{
-    int freq;                   /**< DSP frequency -- samples per second */
-    SDL_AudioFormat format;     /**< Audio data format */
-    Uint8 channels;             /**< Number of channels: 1 mono, 2 stereo */
-    Uint8 silence;              /**< Audio buffer silence value (calculated) */
-    Uint16 samples;             /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */
-    Uint16 padding;             /**< Necessary for some compile environments */
-    Uint32 size;                /**< Audio buffer size in bytes (calculated) */
-    SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
-    void *userdata;             /**< Userdata passed to callback (ignored for NULL callbacks). */
-} SDL_AudioSpec;
-
-
-struct SDL_AudioCVT;
-typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
-                                          SDL_AudioFormat format);
-
-/**
- *  \brief Upper limit of filters in SDL_AudioCVT
- *
- *  The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is
- *  currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers,
- *  one of which is the terminating NULL pointer.
- */
-#define SDL_AUDIOCVT_MAX_FILTERS 9
-
-/**
- *  \struct SDL_AudioCVT
- *  \brief A structure to hold a set of audio conversion filters and buffers.
- *
- *  Note that various parts of the conversion pipeline can take advantage
- *  of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require
- *  you to pass it aligned data, but can possibly run much faster if you
- *  set both its (buf) field to a pointer that is aligned to 16 bytes, and its
- *  (len) field to something that's a multiple of 16, if possible.
- */
-#ifdef __GNUC__
-/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't
-   pad it out to 88 bytes to guarantee ABI compatibility between compilers.
-   vvv
-   The next time we rev the ABI, make sure to size the ints and add padding.
-*/
-#define SDL_AUDIOCVT_PACKED __attribute__((packed))
-#else
-#define SDL_AUDIOCVT_PACKED
-#endif
-/* */
-typedef struct SDL_AudioCVT
-{
-    int needed;                 /**< Set to 1 if conversion possible */
-    SDL_AudioFormat src_format; /**< Source audio format */
-    SDL_AudioFormat dst_format; /**< Target audio format */
-    double rate_incr;           /**< Rate conversion increment */
-    Uint8 *buf;                 /**< Buffer to hold entire audio data */
-    int len;                    /**< Length of original audio buffer */
-    int len_cvt;                /**< Length of converted audio buffer */
-    int len_mult;               /**< buffer must be len*len_mult big */
-    double len_ratio;           /**< Given len, final size is len*len_ratio */
-    SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */
-    int filter_index;           /**< Current audio conversion function */
-} SDL_AUDIOCVT_PACKED SDL_AudioCVT;
-
-
-/* Function prototypes */
-
-/**
- *  \name Driver discovery functions
- *
- *  These functions return the list of built in audio drivers, in the
- *  order that they are normally initialized by default.
- */
-/* @{ */
-extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
-extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
-/* @} */
-
-/**
- *  \name Initialization and cleanup
- *
- *  \internal These functions are used internally, and should not be used unless
- *            you have a specific need to specify the audio driver you want to
- *            use.  You should normally use SDL_Init() or SDL_InitSubSystem().
- */
-/* @{ */
-extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);
-extern DECLSPEC void SDLCALL SDL_AudioQuit(void);
-/* @} */
-
-/**
- *  This function returns the name of the current audio driver, or NULL
- *  if no driver has been initialized.
- */
-extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
-
-/**
- *  This function opens the audio device with the desired parameters, and
- *  returns 0 if successful, placing the actual hardware parameters in the
- *  structure pointed to by \c obtained.  If \c obtained is NULL, the audio
- *  data passed to the callback function will be guaranteed to be in the
- *  requested format, and will be automatically converted to the hardware
- *  audio format if necessary.  This function returns -1 if it failed
- *  to open the audio device, or couldn't set up the audio thread.
- *
- *  When filling in the desired audio spec structure,
- *    - \c desired->freq should be the desired audio frequency in samples-per-
- *      second.
- *    - \c desired->format should be the desired audio format.
- *    - \c desired->samples is the desired size of the audio buffer, in
- *      samples.  This number should be a power of two, and may be adjusted by
- *      the audio driver to a value more suitable for the hardware.  Good values
- *      seem to range between 512 and 8096 inclusive, depending on the
- *      application and CPU speed.  Smaller values yield faster response time,
- *      but can lead to underflow if the application is doing heavy processing
- *      and cannot fill the audio buffer in time.  A stereo sample consists of
- *      both right and left channels in LR ordering.
- *      Note that the number of samples is directly related to time by the
- *      following formula:  \code ms = (samples*1000)/freq \endcode
- *    - \c desired->size is the size in bytes of the audio buffer, and is
- *      calculated by SDL_OpenAudio().
- *    - \c desired->silence is the value used to set the buffer to silence,
- *      and is calculated by SDL_OpenAudio().
- *    - \c desired->callback should be set to a function that will be called
- *      when the audio device is ready for more data.  It is passed a pointer
- *      to the audio buffer, and the length in bytes of the audio buffer.
- *      This function usually runs in a separate thread, and so you should
- *      protect data structures that it accesses by calling SDL_LockAudio()
- *      and SDL_UnlockAudio() in your code. Alternately, you may pass a NULL
- *      pointer here, and call SDL_QueueAudio() with some frequency, to queue
- *      more audio samples to be played (or for capture devices, call
- *      SDL_DequeueAudio() with some frequency, to obtain audio samples).
- *    - \c desired->userdata is passed as the first parameter to your callback
- *      function. If you passed a NULL callback, this value is ignored.
- *
- *  The audio device starts out playing silence when it's opened, and should
- *  be enabled for playing by calling \c SDL_PauseAudio(0) when you are ready
- *  for your audio callback function to be called.  Since the audio driver
- *  may modify the requested size of the audio buffer, you should allocate
- *  any local mixing buffers after you open the audio device.
- */
-extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
-                                          SDL_AudioSpec * obtained);
-
-/**
- *  SDL Audio Device IDs.
- *
- *  A successful call to SDL_OpenAudio() is always device id 1, and legacy
- *  SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
- *  always returns devices >= 2 on success. The legacy calls are good both
- *  for backwards compatibility and when you don't care about multiple,
- *  specific, or capture devices.
- */
-typedef Uint32 SDL_AudioDeviceID;
-
-/**
- *  Get the number of available devices exposed by the current driver.
- *  Only valid after a successfully initializing the audio subsystem.
- *  Returns -1 if an explicit list of devices can't be determined; this is
- *  not an error. For example, if SDL is set up to talk to a remote audio
- *  server, it can't list every one available on the Internet, but it will
- *  still allow a specific host to be specified to SDL_OpenAudioDevice().
- *
- *  In many common cases, when this function returns a value <= 0, it can still
- *  successfully open the default device (NULL for first argument of
- *  SDL_OpenAudioDevice()).
- */
-extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);
-
-/**
- *  Get the human-readable name of a specific audio device.
- *  Must be a value between 0 and (number of audio devices-1).
- *  Only valid after a successfully initializing the audio subsystem.
- *  The values returned by this function reflect the latest call to
- *  SDL_GetNumAudioDevices(); recall that function to redetect available
- *  hardware.
- *
- *  The string returned by this function is UTF-8 encoded, read-only, and
- *  managed internally. You are not to free it. If you need to keep the
- *  string for any length of time, you should make your own copy of it, as it
- *  will be invalid next time any of several other SDL functions is called.
- */
-extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
-                                                           int iscapture);
-
-
-/**
- *  Open a specific audio device. Passing in a device name of NULL requests
- *  the most reasonable default (and is equivalent to calling SDL_OpenAudio()).
- *
- *  The device name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
- *  some drivers allow arbitrary and driver-specific strings, such as a
- *  hostname/IP address for a remote audio server, or a filename in the
- *  diskaudio driver.
- *
- *  \return 0 on error, a valid device ID that is >= 2 on success.
- *
- *  SDL_OpenAudio(), unlike this function, always acts on device ID 1.
- */
-extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(const char
-                                                              *device,
-                                                              int iscapture,
-                                                              const
-                                                              SDL_AudioSpec *
-                                                              desired,
-                                                              SDL_AudioSpec *
-                                                              obtained,
-                                                              int
-                                                              allowed_changes);
-
-
-
-/**
- *  \name Audio state
- *
- *  Get the current audio state.
- */
-/* @{ */
-typedef enum
-{
-    SDL_AUDIO_STOPPED = 0,
-    SDL_AUDIO_PLAYING,
-    SDL_AUDIO_PAUSED
-} SDL_AudioStatus;
-extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
-
-extern DECLSPEC SDL_AudioStatus SDLCALL
-SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
-/* @} *//* Audio State */
-
-/**
- *  \name Pause audio functions
- *
- *  These functions pause and unpause the audio callback processing.
- *  They should be called with a parameter of 0 after opening the audio
- *  device to start playing sound.  This is so you can safely initialize
- *  data for your callback function after opening the audio device.
- *  Silence will be written to the audio device during the pause.
- */
-/* @{ */
-extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
-extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
-                                                  int pause_on);
-/* @} *//* Pause audio functions */
-
-/**
- *  \brief Load the audio data of a WAVE file into memory
- *
- *  Loading a WAVE file requires \c src, \c spec, \c audio_buf and \c audio_len
- *  to be valid pointers. The entire data portion of the file is then loaded
- *  into memory and decoded if necessary.
- *
- *  If \c freesrc is non-zero, the data source gets automatically closed and
- *  freed before the function returns.
- *
- *  Supported are RIFF WAVE files with the formats PCM (8, 16, 24, and 32 bits),
- *  IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and A-law and
- *  Âµ-law (8 bits). Other formats are currently unsupported and cause an error.
- *
- *  If this function succeeds, the pointer returned by it is equal to \c spec
- *  and the pointer to the audio data allocated by the function is written to
- *  \c audio_buf and its length in bytes to \c audio_len. The \ref SDL_AudioSpec
- *  members \c freq, \c channels, and \c format are set to the values of the
- *  audio data in the buffer. The \c samples member is set to a sane default and
- *  all others are set to zero.
- *
- *  It's necessary to use SDL_FreeWAV() to free the audio data returned in
- *  \c audio_buf when it is no longer used.
- *
- *  Because of the underspecification of the Waveform format, there are many
- *  problematic files in the wild that cause issues with strict decoders. To
- *  provide compatibility with these files, this decoder is lenient in regards
- *  to the truncation of the file, the fact chunk, and the size of the RIFF
- *  chunk. The hints SDL_HINT_WAVE_RIFF_CHUNK_SIZE, SDL_HINT_WAVE_TRUNCATION,
- *  and SDL_HINT_WAVE_FACT_CHUNK can be used to tune the behavior of the
- *  loading process.
- *
- *  Any file that is invalid (due to truncation, corruption, or wrong values in
- *  the headers), too big, or unsupported causes an error. Additionally, any
- *  critical I/O error from the data source will terminate the loading process
- *  with an error. The function returns NULL on error and in all cases (with the
- *  exception of \c src being NULL), an appropriate error message will be set.
- *
- *  It is required that the data source supports seeking.
- *
- *  Example:
- *  \code
- *      SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...);
- *  \endcode
- *
- *  \param src The data source with the WAVE data
- *  \param freesrc A integer value that makes the function close the data source if non-zero
- *  \param spec A pointer filled with the audio format of the audio data
- *  \param audio_buf A pointer filled with the audio data allocated by the function
- *  \param audio_len A pointer filled with the length of the audio data buffer in bytes
- *  \return NULL on error, or non-NULL on success.
- */
-extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
-                                                      int freesrc,
-                                                      SDL_AudioSpec * spec,
-                                                      Uint8 ** audio_buf,
-                                                      Uint32 * audio_len);
-
-/**
- *  Loads a WAV from a file.
- *  Compatibility convenience function.
- */
-#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
-    SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
-
-/**
- *  This function frees data previously allocated with SDL_LoadWAV_RW()
- */
-extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
-
-/**
- *  This function takes a source format and rate and a destination format
- *  and rate, and initializes the \c cvt structure with information needed
- *  by SDL_ConvertAudio() to convert a buffer of audio data from one format
- *  to the other. An unsupported format causes an error and -1 will be returned.
- *
- *  \return 0 if no conversion is needed, 1 if the audio filter is set up,
- *  or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
-                                              SDL_AudioFormat src_format,
-                                              Uint8 src_channels,
-                                              int src_rate,
-                                              SDL_AudioFormat dst_format,
-                                              Uint8 dst_channels,
-                                              int dst_rate);
-
-/**
- *  Once you have initialized the \c cvt structure using SDL_BuildAudioCVT(),
- *  created an audio buffer \c cvt->buf, and filled it with \c cvt->len bytes of
- *  audio data in the source format, this function will convert it in-place
- *  to the desired format.
- *
- *  The data conversion may expand the size of the audio data, so the buffer
- *  \c cvt->buf should be allocated after the \c cvt structure is initialized by
- *  SDL_BuildAudioCVT(), and should be \c cvt->len*cvt->len_mult bytes long.
- *
- *  \return 0 on success or -1 if \c cvt->buf is NULL.
- */
-extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
-
-/* SDL_AudioStream is a new audio conversion interface.
-   The benefits vs SDL_AudioCVT:
-    - it can handle resampling data in chunks without generating
-      artifacts, when it doesn't have the complete buffer available.
-    - it can handle incoming data in any variable size.
-    - You push data as you have it, and pull it when you need it
- */
-/* this is opaque to the outside world. */
-struct _SDL_AudioStream;
-typedef struct _SDL_AudioStream SDL_AudioStream;
-
-/**
- *  Create a new audio stream
- *
- *  \param src_format The format of the source audio
- *  \param src_channels The number of channels of the source audio
- *  \param src_rate The sampling rate of the source audio
- *  \param dst_format The format of the desired audio output
- *  \param dst_channels The number of channels of the desired audio output
- *  \param dst_rate The sampling rate of the desired audio output
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format,
-                                           const Uint8 src_channels,
-                                           const int src_rate,
-                                           const SDL_AudioFormat dst_format,
-                                           const Uint8 dst_channels,
-                                           const int dst_rate);
-
-/**
- *  Add data to be converted/resampled to the stream
- *
- *  \param stream The stream the audio data is being added to
- *  \param buf A pointer to the audio data to add
- *  \param len The number of bytes to write to the stream
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len);
-
-/**
- *  Get converted/resampled data from the stream
- *
- *  \param stream The stream the audio is being requested from
- *  \param buf A buffer to fill with audio data
- *  \param len The maximum number of bytes to fill
- *  \return The number of bytes read from the stream, or -1 on error
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len);
-
-/**
- * Get the number of converted/resampled bytes available. The stream may be
- *  buffering data behind the scenes until it has enough to resample
- *  correctly, so this number might be lower than what you expect, or even
- *  be zero. Add more data or flush the stream if you need the data now.
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream);
-
-/**
- * Tell the stream that you're done sending data, and anything being buffered
- *  should be converted/resampled and made available immediately.
- *
- * It is legal to add more data to a stream after flushing, but there will
- *  be audio gaps in the output. Generally this is intended to signal the
- *  end of input, so the complete output becomes available.
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamClear
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream);
-
-/**
- *  Clear any pending data in the stream without converting it
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_FreeAudioStream
- */
-extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream);
-
-/**
- * Free an audio stream
- *
- *  \sa SDL_NewAudioStream
- *  \sa SDL_AudioStreamPut
- *  \sa SDL_AudioStreamGet
- *  \sa SDL_AudioStreamAvailable
- *  \sa SDL_AudioStreamFlush
- *  \sa SDL_AudioStreamClear
- */
-extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream);
-
-#define SDL_MIX_MAXVOLUME 128
-/**
- *  This takes two audio buffers of the playing audio format and mixes
- *  them, performing addition, volume adjustment, and overflow clipping.
- *  The volume ranges from 0 - 128, and should be set to ::SDL_MIX_MAXVOLUME
- *  for full audio volume.  Note this does not change hardware volume.
- *  This is provided for convenience -- you can mix your own audio data.
- */
-extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
-                                          Uint32 len, int volume);
-
-/**
- *  This works like SDL_MixAudio(), but you specify the audio format instead of
- *  using the format of audio device 1. Thus it can be used when no audio
- *  device is open at all.
- */
-extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
-                                                const Uint8 * src,
-                                                SDL_AudioFormat format,
-                                                Uint32 len, int volume);
-
-/**
- *  Queue more audio on non-callback devices.
- *
- *  (If you are looking to retrieve queued audio from a non-callback capture
- *  device, you want SDL_DequeueAudio() instead. This will return -1 to
- *  signify an error if you use it with capture devices.)
- *
- *  SDL offers two ways to feed audio to the device: you can either supply a
- *  callback that SDL triggers with some frequency to obtain more audio
- *  (pull method), or you can supply no callback, and then SDL will expect
- *  you to supply data at regular intervals (push method) with this function.
- *
- *  There are no limits on the amount of data you can queue, short of
- *  exhaustion of address space. Queued data will drain to the device as
- *  necessary without further intervention from you. If the device needs
- *  audio but there is not enough queued, it will play silence to make up
- *  the difference. This means you will have skips in your audio playback
- *  if you aren't routinely queueing sufficient data.
- *
- *  This function copies the supplied data, so you are safe to free it when
- *  the function returns. This function is thread-safe, but queueing to the
- *  same device from two threads at once does not promise which buffer will
- *  be queued first.
- *
- *  You may not queue audio on a device that is using an application-supplied
- *  callback; doing so returns an error. You have to use the audio callback
- *  or queue audio with this function, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before queueing; SDL
- *  handles locking internally for this function.
- *
- *  \param dev The device ID to which we will queue audio.
- *  \param data The data to queue to the device for later playback.
- *  \param len The number of bytes (not samples!) to which (data) points.
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_GetQueuedAudioSize
- *  \sa SDL_ClearQueuedAudio
- */
-extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
-
-/**
- *  Dequeue more audio on non-callback devices.
- *
- *  (If you are looking to queue audio for output on a non-callback playback
- *  device, you want SDL_QueueAudio() instead. This will always return 0
- *  if you use it with playback devices.)
- *
- *  SDL offers two ways to retrieve audio from a capture device: you can
- *  either supply a callback that SDL triggers with some frequency as the
- *  device records more audio data, (push method), or you can supply no
- *  callback, and then SDL will expect you to retrieve data at regular
- *  intervals (pull method) with this function.
- *
- *  There are no limits on the amount of data you can queue, short of
- *  exhaustion of address space. Data from the device will keep queuing as
- *  necessary without further intervention from you. This means you will
- *  eventually run out of memory if you aren't routinely dequeueing data.
- *
- *  Capture devices will not queue data when paused; if you are expecting
- *  to not need captured audio for some length of time, use
- *  SDL_PauseAudioDevice() to stop the capture device from queueing more
- *  data. This can be useful during, say, level loading times. When
- *  unpaused, capture devices will start queueing data from that point,
- *  having flushed any capturable data available while paused.
- *
- *  This function is thread-safe, but dequeueing from the same device from
- *  two threads at once does not promise which thread will dequeued data
- *  first.
- *
- *  You may not dequeue audio from a device that is using an
- *  application-supplied callback; doing so returns an error. You have to use
- *  the audio callback, or dequeue audio with this function, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before queueing; SDL
- *  handles locking internally for this function.
- *
- *  \param dev The device ID from which we will dequeue audio.
- *  \param data A pointer into where audio data should be copied.
- *  \param len The number of bytes (not samples!) to which (data) points.
- *  \return number of bytes dequeued, which could be less than requested.
- *
- *  \sa SDL_GetQueuedAudioSize
- *  \sa SDL_ClearQueuedAudio
- */
-extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len);
-
-/**
- *  Get the number of bytes of still-queued audio.
- *
- *  For playback device:
- *
- *    This is the number of bytes that have been queued for playback with
- *    SDL_QueueAudio(), but have not yet been sent to the hardware. This
- *    number may shrink at any time, so this only informs of pending data.
- *
- *    Once we've sent it to the hardware, this function can not decide the
- *    exact byte boundary of what has been played. It's possible that we just
- *    gave the hardware several kilobytes right before you called this
- *    function, but it hasn't played any of it yet, or maybe half of it, etc.
- *
- *  For capture devices:
- *
- *    This is the number of bytes that have been captured by the device and
- *    are waiting for you to dequeue. This number may grow at any time, so
- *    this only informs of the lower-bound of available data.
- *
- *  You may not queue audio on a device that is using an application-supplied
- *  callback; calling this function on such a device always returns 0.
- *  You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use
- *  the audio callback, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before querying; SDL
- *  handles locking internally for this function.
- *
- *  \param dev The device ID of which we will query queued audio size.
- *  \return Number of bytes (not samples!) of queued audio.
- *
- *  \sa SDL_QueueAudio
- *  \sa SDL_ClearQueuedAudio
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
-
-/**
- *  Drop any queued audio data. For playback devices, this is any queued data
- *  still waiting to be submitted to the hardware. For capture devices, this
- *  is any data that was queued by the device that hasn't yet been dequeued by
- *  the application.
- *
- *  Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For
- *  playback devices, the hardware will start playing silence if more audio
- *  isn't queued. Unpaused capture devices will start filling the queue again
- *  as soon as they have more data available (which, depending on the state
- *  of the hardware and the thread, could be before this function call
- *  returns!).
- *
- *  This will not prevent playback of queued audio that's already been sent
- *  to the hardware, as we can not undo that, so expect there to be some
- *  fraction of a second of audio that might still be heard. This can be
- *  useful if you want to, say, drop any pending music during a level change
- *  in your game.
- *
- *  You may not queue audio on a device that is using an application-supplied
- *  callback; calling this function on such a device is always a no-op.
- *  You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use
- *  the audio callback, but not both.
- *
- *  You should not call SDL_LockAudio() on the device before clearing the
- *  queue; SDL handles locking internally for this function.
- *
- *  This function always succeeds and thus returns void.
- *
- *  \param dev The device ID of which to clear the audio queue.
- *
- *  \sa SDL_QueueAudio
- *  \sa SDL_GetQueuedAudioSize
- */
-extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
-
-
-/**
- *  \name Audio lock functions
- *
- *  The lock manipulated by these functions protects the callback function.
- *  During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that
- *  the callback function is not running.  Do not call these from the callback
- *  function or you will cause deadlock.
- */
-/* @{ */
-extern DECLSPEC void SDLCALL SDL_LockAudio(void);
-extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
-extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
-extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
-/* @} *//* Audio lock functions */
-
-/**
- *  This function shuts down audio processing and closes the audio device.
- */
-extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
-extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_audio_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_bits.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_bits.h
deleted file mode 100644 (file)
index b116cc8..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_bits.h
- *
- *  Functions for fiddling with bits and bitmasks.
- */
-
-#ifndef SDL_bits_h_
-#define SDL_bits_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_bits.h
- */
-
-/**
- *  Get the index of the most significant bit. Result is undefined when called
- *  with 0. This operation can also be stated as "count leading zeroes" and
- *  "log base 2".
- *
- *  \return Index of the most significant bit, or -1 if the value is 0.
- */
-#if defined(__WATCOMC__) && defined(__386__)
-extern _inline int _SDL_clz_watcom (Uint32);
-#pragma aux _SDL_clz_watcom = \
-    "bsr eax, eax" \
-    "xor eax, 31" \
-    parm [eax] nomemory \
-    value [eax] \
-    modify exact [eax] nomemory;
-#endif
-
-SDL_FORCE_INLINE int
-SDL_MostSignificantBitIndex32(Uint32 x)
-{
-#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-    /* Count Leading Zeroes builtin in GCC.
-     * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html
-     */
-    if (x == 0) {
-        return -1;
-    }
-    return 31 - __builtin_clz(x);
-#elif defined(__WATCOMC__) && defined(__386__)
-    if (x == 0) {
-        return -1;
-    }
-    return 31 - _SDL_clz_watcom(x);
-#else
-    /* Based off of Bit Twiddling Hacks by Sean Eron Anderson
-     * <seander@cs.stanford.edu>, released in the public domain.
-     * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
-     */
-    const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
-    const int    S[] = {1, 2, 4, 8, 16};
-
-    int msbIndex = 0;
-    int i;
-
-    if (x == 0) {
-        return -1;
-    }
-
-    for (i = 4; i >= 0; i--)
-    {
-        if (x & b[i])
-        {
-            x >>= S[i];
-            msbIndex |= S[i];
-        }
-    }
-
-    return msbIndex;
-#endif
-}
-
-SDL_FORCE_INLINE SDL_bool
-SDL_HasExactlyOneBitSet32(Uint32 x)
-{
-    if (x && !(x & (x - 1))) {
-        return SDL_TRUE;
-    }
-    return SDL_FALSE;
-}
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_bits_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_blendmode.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_blendmode.h
deleted file mode 100644 (file)
index 6f0a22b..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_blendmode.h
- *
- *  Header file declaring the SDL_BlendMode enumeration
- */
-
-#ifndef SDL_blendmode_h_
-#define SDL_blendmode_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief The blend mode used in SDL_RenderCopy() and drawing operations.
- */
-typedef enum
-{
-    SDL_BLENDMODE_NONE = 0x00000000,     /**< no blending
-                                              dstRGBA = srcRGBA */
-    SDL_BLENDMODE_BLEND = 0x00000001,    /**< alpha blending
-                                              dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))
-                                              dstA = srcA + (dstA * (1-srcA)) */
-    SDL_BLENDMODE_ADD = 0x00000002,      /**< additive blending
-                                              dstRGB = (srcRGB * srcA) + dstRGB
-                                              dstA = dstA */
-    SDL_BLENDMODE_MOD = 0x00000004,      /**< color modulate
-                                              dstRGB = srcRGB * dstRGB
-                                              dstA = dstA */
-    SDL_BLENDMODE_INVALID = 0x7FFFFFFF
-
-    /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */
-
-} SDL_BlendMode;
-
-/**
- *  \brief The blend operation used when combining source and destination pixel components
- */
-typedef enum
-{
-    SDL_BLENDOPERATION_ADD              = 0x1,  /**< dst + src: supported by all renderers */
-    SDL_BLENDOPERATION_SUBTRACT         = 0x2,  /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
-    SDL_BLENDOPERATION_REV_SUBTRACT     = 0x3,  /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
-    SDL_BLENDOPERATION_MINIMUM          = 0x4,  /**< min(dst, src) : supported by D3D11 */
-    SDL_BLENDOPERATION_MAXIMUM          = 0x5   /**< max(dst, src) : supported by D3D11 */
-
-} SDL_BlendOperation;
-
-/**
- *  \brief The normalized factor used to multiply pixel components
- */
-typedef enum
-{
-    SDL_BLENDFACTOR_ZERO                = 0x1,  /**< 0, 0, 0, 0 */
-    SDL_BLENDFACTOR_ONE                 = 0x2,  /**< 1, 1, 1, 1 */
-    SDL_BLENDFACTOR_SRC_COLOR           = 0x3,  /**< srcR, srcG, srcB, srcA */
-    SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4,  /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */
-    SDL_BLENDFACTOR_SRC_ALPHA           = 0x5,  /**< srcA, srcA, srcA, srcA */
-    SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6,  /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */
-    SDL_BLENDFACTOR_DST_COLOR           = 0x7,  /**< dstR, dstG, dstB, dstA */
-    SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8,  /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */
-    SDL_BLENDFACTOR_DST_ALPHA           = 0x9,  /**< dstA, dstA, dstA, dstA */
-    SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA   /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */
-
-} SDL_BlendFactor;
-
-/**
- *  \brief Create a custom blend mode, which may or may not be supported by a given renderer
- *
- *  \param srcColorFactor source color factor
- *  \param dstColorFactor destination color factor
- *  \param colorOperation color operation
- *  \param srcAlphaFactor source alpha factor
- *  \param dstAlphaFactor destination alpha factor
- *  \param alphaOperation alpha operation
- *
- *  The result of the blend mode operation will be:
- *      dstRGB = dstRGB * dstColorFactor colorOperation srcRGB * srcColorFactor
- *  and
- *      dstA = dstA * dstAlphaFactor alphaOperation srcA * srcAlphaFactor
- */
-extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor,
-                                                                 SDL_BlendFactor dstColorFactor,
-                                                                 SDL_BlendOperation colorOperation,
-                                                                 SDL_BlendFactor srcAlphaFactor,
-                                                                 SDL_BlendFactor dstAlphaFactor,
-                                                                 SDL_BlendOperation alphaOperation);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_blendmode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_clipboard.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_clipboard.h
deleted file mode 100644 (file)
index c4f8766..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_clipboard.h
- *
- * Include file for SDL clipboard handling
- */
-
-#ifndef SDL_clipboard_h_
-#define SDL_clipboard_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-/**
- * \brief Put UTF-8 text into the clipboard
- *
- * \sa SDL_GetClipboardText()
- */
-extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text);
-
-/**
- * \brief Get UTF-8 text from the clipboard, which must be freed with SDL_free()
- *
- * \sa SDL_SetClipboardText()
- */
-extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void);
-
-/**
- * \brief Returns a flag indicating whether the clipboard exists and contains a text string that is non-empty
- *
- * \sa SDL_GetClipboardText()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_clipboard_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config.h
deleted file mode 100644 (file)
index 7d62d3e..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_config_h_
-#define SDL_config_h_
-
-#include "SDL_platform.h"
-
-/**
- *  \file SDL_config.h
- */
-
-/* Add any platform that doesn't build using the configure system. */
-#if defined(__WIN32__)
-#include "SDL_config_windows.h"
-#elif defined(__WINRT__)
-#include "SDL_config_winrt.h"
-#elif defined(__MACOSX__)
-#include "SDL_config_macosx.h"
-#elif defined(__IPHONEOS__)
-#include "SDL_config_iphoneos.h"
-#elif defined(__ANDROID__)
-#include "SDL_config_android.h"
-#elif defined(__PSP__)
-#include "SDL_config_psp.h"
-#elif defined(__OS2__)
-#include "SDL_config_os2.h"
-#else
-/* This is a minimal configuration just to get SDL running on new platforms. */
-#include "SDL_config_minimal.h"
-#endif /* platform config */
-
-#ifdef USING_GENERATED_CONFIG_H
-#error Wrong SDL_config.h, check your include path?
-#endif
-
-#endif /* SDL_config_h_ */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h
deleted file mode 100644 (file)
index c494b2e..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_config_macosx_h_
-#define SDL_config_macosx_h_
-#define SDL_config_h_
-
-#include "SDL_platform.h"
-
-/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */
-#include <AvailabilityMacros.h>
-
-/* This is a set of defines to configure the SDL features */
-
-#ifdef __LP64__
-    #define SIZEOF_VOIDP 8
-#else
-    #define SIZEOF_VOIDP 4
-#endif
-
-/* Useful headers */
-#define STDC_HEADERS    1
-#define HAVE_ALLOCA_H       1
-#define HAVE_CTYPE_H    1
-#define HAVE_FLOAT_H    1
-#define HAVE_INTTYPES_H 1
-#define HAVE_LIMITS_H   1
-#define HAVE_MATH_H 1
-#define HAVE_SIGNAL_H   1
-#define HAVE_STDINT_H   1
-#define HAVE_STDIO_H    1
-#define HAVE_STRING_H   1
-#define HAVE_SYS_TYPES_H    1
-#define HAVE_LIBUNWIND_H    1
-
-/* C library functions */
-#define HAVE_MALLOC 1
-#define HAVE_CALLOC 1
-#define HAVE_REALLOC    1
-#define HAVE_FREE   1
-#define HAVE_ALLOCA 1
-#define HAVE_GETENV 1
-#define HAVE_SETENV 1
-#define HAVE_PUTENV 1
-#define HAVE_UNSETENV   1
-#define HAVE_QSORT  1
-#define HAVE_ABS    1
-#define HAVE_BCOPY  1
-#define HAVE_MEMSET 1
-#define HAVE_MEMCPY 1
-#define HAVE_MEMMOVE    1
-#define HAVE_MEMCMP 1
-#define HAVE_STRLEN 1
-#define HAVE_STRLCPY    1
-#define HAVE_STRLCAT    1
-#define HAVE_STRCHR 1
-#define HAVE_STRRCHR    1
-#define HAVE_STRSTR 1
-#define HAVE_STRTOL 1
-#define HAVE_STRTOUL    1
-#define HAVE_STRTOLL    1
-#define HAVE_STRTOULL   1
-#define HAVE_STRTOD 1
-#define HAVE_ATOI   1
-#define HAVE_ATOF   1
-#define HAVE_STRCMP 1
-#define HAVE_STRNCMP    1
-#define HAVE_STRCASECMP 1
-#define HAVE_STRNCASECMP 1
-#define HAVE_VSSCANF 1
-#define HAVE_VSNPRINTF  1
-#define HAVE_M_PI   1
-#define HAVE_ACOS   1
-#define HAVE_ACOSF  1
-#define HAVE_ASIN   1
-#define HAVE_ASINF  1
-#define HAVE_ATAN   1
-#define HAVE_ATANF  1
-#define HAVE_ATAN2  1
-#define HAVE_ATAN2F 1
-#define HAVE_CEIL   1
-#define HAVE_CEILF  1
-#define HAVE_COPYSIGN   1
-#define HAVE_COPYSIGNF  1
-#define HAVE_COS    1
-#define HAVE_COSF   1
-#define HAVE_EXP    1
-#define HAVE_EXPF   1
-#define HAVE_FABS   1
-#define HAVE_FABSF  1
-#define HAVE_FLOOR  1
-#define HAVE_FLOORF 1
-#define HAVE_FMOD   1
-#define HAVE_FMODF  1
-#define HAVE_LOG    1
-#define HAVE_LOGF   1
-#define HAVE_LOG10  1
-#define HAVE_LOG10F 1
-#define HAVE_POW    1
-#define HAVE_POWF   1
-#define HAVE_SCALBN 1
-#define HAVE_SCALBNF    1
-#define HAVE_SIN    1
-#define HAVE_SINF   1
-#define HAVE_SQRT   1
-#define HAVE_SQRTF  1
-#define HAVE_TAN    1
-#define HAVE_TANF   1
-#define HAVE_SIGACTION  1
-#define HAVE_SETJMP 1
-#define HAVE_NANOSLEEP  1
-#define HAVE_SYSCONF    1
-#define HAVE_SYSCTLBYNAME 1
-
-/* Enable various audio drivers */
-#define SDL_AUDIO_DRIVER_COREAUDIO  1
-#define SDL_AUDIO_DRIVER_DISK   1
-#define SDL_AUDIO_DRIVER_DUMMY  1
-
-/* Enable various input drivers */
-#define SDL_JOYSTICK_IOKIT  1
-#define SDL_JOYSTICK_HIDAPI  1
-#define SDL_HAPTIC_IOKIT    1
-
-/* Enable the dummy sensor driver */
-#define SDL_SENSOR_DUMMY  1
-
-/* Enable various shared object loading systems */
-#define SDL_LOADSO_DLOPEN   1
-
-/* Enable various threading systems */
-#define SDL_THREAD_PTHREAD  1
-#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX  1
-
-/* Enable various timer systems */
-#define SDL_TIMER_UNIX  1
-
-/* Enable various video drivers */
-#define SDL_VIDEO_DRIVER_COCOA  1
-#define SDL_VIDEO_DRIVER_DUMMY  1
-#undef SDL_VIDEO_DRIVER_X11
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "/usr/X11R6/lib/libXinerama.1.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/usr/X11R6/lib/libXi.6.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/usr/X11R6/lib/libXss.1.dylib"
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/usr/X11R6/lib/libXxf86vm.1.dylib"
-#define SDL_VIDEO_DRIVER_X11_XDBE 1
-#define SDL_VIDEO_DRIVER_X11_XINERAMA 1
-#define SDL_VIDEO_DRIVER_X11_XRANDR 1
-#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1
-#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
-#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1
-#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1
-
-#ifdef MAC_OS_X_VERSION_10_8
-/*
- * No matter the versions targeted, this is the 10.8 or later SDK, so you have
- *  to use the external Xquartz, which is a more modern Xlib. Previous SDKs
- *  used an older Xlib.
- */
-#define SDL_VIDEO_DRIVER_X11_XINPUT2 1
-#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1
-#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1
-#endif
-
-#ifndef SDL_VIDEO_RENDER_OGL
-#define SDL_VIDEO_RENDER_OGL    1
-#endif
-
-#ifndef SDL_VIDEO_RENDER_OGL_ES2
-#define SDL_VIDEO_RENDER_OGL_ES2 1
-#endif
-
-#ifndef SDL_VIDEO_RENDER_METAL
-/* Metal only supported on 64-bit architectures with 10.11+ */
-#if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100)
-#define SDL_VIDEO_RENDER_METAL    1
-#else
-#define SDL_VIDEO_RENDER_METAL    0
-#endif
-#endif
-
-/* Enable OpenGL support */
-#ifndef SDL_VIDEO_OPENGL
-#define SDL_VIDEO_OPENGL    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_ES2
-#define SDL_VIDEO_OPENGL_ES2    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_EGL
-#define SDL_VIDEO_OPENGL_EGL    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_CGL
-#define SDL_VIDEO_OPENGL_CGL    1
-#endif
-#ifndef SDL_VIDEO_OPENGL_GLX
-#define SDL_VIDEO_OPENGL_GLX    1
-#endif
-
-/* Enable Vulkan support */
-/* Metal/Vulkan Portability only supported on 64-bit architectures with 10.11+ */
-#if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100)
-#define SDL_VIDEO_VULKAN 1
-#else
-#define SDL_VIDEO_VULKAN 0
-#endif
-
-/* Enable system power support */
-#define SDL_POWER_MACOSX 1
-
-/* enable filesystem support */
-#define SDL_FILESYSTEM_COCOA   1
-
-/* Enable assembly routines */
-#define SDL_ASSEMBLY_ROUTINES   1
-#ifdef __ppc__
-#define SDL_ALTIVEC_BLITTERS    1
-#endif
-
-#endif /* SDL_config_macosx_h_ */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_copying.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_copying.h
deleted file mode 100644 (file)
index 1ef18cd..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h
deleted file mode 100644 (file)
index 296df01..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_cpuinfo.h
- *
- *  CPU feature detection for SDL.
- */
-
-#ifndef SDL_cpuinfo_h_
-#define SDL_cpuinfo_h_
-
-#include "SDL_stdinc.h"
-
-/* Need to do this here because intrin.h has C++ code in it */
-/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64))
-#ifdef __clang__
-/* Many of the intrinsics SDL uses are not implemented by clang with Visual Studio */
-#undef __MMX__
-#undef __SSE__
-#undef __SSE2__
-#else
-#include <intrin.h>
-#ifndef _WIN64
-#ifndef __MMX__
-#define __MMX__
-#endif
-#ifndef __3dNOW__
-#define __3dNOW__
-#endif
-#endif
-#ifndef __SSE__
-#define __SSE__
-#endif
-#ifndef __SSE2__
-#define __SSE2__
-#endif
-#endif /* __clang__ */
-#elif defined(__MINGW64_VERSION_MAJOR)
-#include <intrin.h>
-#else
-/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */
-#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H)
-#include <altivec.h>
-#endif
-#if !defined(SDL_DISABLE_ARM_NEON_H)
-#  if defined(__ARM_NEON)
-#    include <arm_neon.h>
-#  elif defined(__WINDOWS__) || defined(__WINRT__)
-/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */
-#    if defined(_M_ARM)
-#      include <armintr.h>
-#      include <arm_neon.h>
-#      define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
-#    endif
-#    if defined (_M_ARM64)
-#      include <armintr.h>
-#      include <arm_neon.h>
-#      define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
-#    endif
-#  endif
-#endif
-#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H)
-#include <mm3dnow.h>
-#endif
-#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H)
-#include <immintrin.h>
-#else
-#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H)
-#include <mmintrin.h>
-#endif
-#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H)
-#include <xmmintrin.h>
-#endif
-#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H)
-#include <emmintrin.h>
-#endif
-#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H)
-#include <pmmintrin.h>
-#endif
-#endif /* HAVE_IMMINTRIN_H */
-#endif /* compiler version */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This is a guess for the cacheline size used for padding.
- * Most x86 processors have a 64 byte cache line.
- * The 64-bit PowerPC processors have a 128 byte cache line.
- * We'll use the larger value to be generally safe.
- */
-#define SDL_CACHELINE_SIZE  128
-
-/**
- *  This function returns the number of CPU cores available.
- */
-extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
-
-/**
- *  This function returns the L1 cache line size of the CPU
- *
- *  This is useful for determining multi-threaded structure padding
- *  or SIMD prefetch sizes.
- */
-extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
-
-/**
- *  This function returns true if the CPU has the RDTSC instruction.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
-
-/**
- *  This function returns true if the CPU has AltiVec features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
-
-/**
- *  This function returns true if the CPU has MMX features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
-
-/**
- *  This function returns true if the CPU has 3DNow! features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);
-
-/**
- *  This function returns true if the CPU has SSE features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
-
-/**
- *  This function returns true if the CPU has SSE2 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
-
-/**
- *  This function returns true if the CPU has SSE3 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
-
-/**
- *  This function returns true if the CPU has SSE4.1 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
-
-/**
- *  This function returns true if the CPU has SSE4.2 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
-
-/**
- *  This function returns true if the CPU has AVX features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);
-
-/**
- *  This function returns true if the CPU has AVX2 features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void);
-
-/**
- *  This function returns true if the CPU has AVX-512F (foundation) features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void);
-
-/**
- *  This function returns true if the CPU has NEON (ARM SIMD) features.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void);
-
-/**
- *  This function returns the amount of RAM configured in the system, in MB.
- */
-extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
-
-/**
- * \brief Report the alignment this system needs for SIMD allocations.
- *
- * This will return the minimum number of bytes to which a pointer must be
- *  aligned to be compatible with SIMD instructions on the current machine.
- *  For example, if the machine supports SSE only, it will return 16, but if
- *  it supports AVX-512F, it'll return 64 (etc). This only reports values for
- *  instruction sets SDL knows about, so if your SDL build doesn't have
- *  SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and
- *  not 64 for the AVX-512 instructions that exist but SDL doesn't know about.
- *  Plan accordingly.
- */
-extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
-
-/**
- * \brief Allocate memory in a SIMD-friendly way.
- *
- * This will allocate a block of memory that is suitable for use with SIMD
- *  instructions. Specifically, it will be properly aligned and padded for
- *  the system's supported vector instructions.
- *
- * The memory returned will be padded such that it is safe to read or write
- *  an incomplete vector at the end of the memory block. This can be useful
- *  so you don't have to drop back to a scalar fallback at the end of your
- *  SIMD processing loop to deal with the final elements without overflowing
- *  the allocated buffer.
- *
- * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free()
- *  or delete[], etc.
- *
- * Note that SDL will only deal with SIMD instruction sets it is aware of;
- *  for example, SDL 2.0.8 knows that SSE wants 16-byte vectors
- *  (SDL_HasSSE()), and AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't
- *  know that AVX-512 wants 64. To be clear: if you can't decide to use an
- *  instruction set with an SDL_Has*() function, don't use that instruction
- *  set with memory allocated through here.
- *
- * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't
- *  out of memory.
- *
- *  \param len The length, in bytes, of the block to allocated. The actual
- *             allocated block might be larger due to padding, etc.
- * \return Pointer to newly-allocated block, NULL if out of memory.
- *
- * \sa SDL_SIMDAlignment
- * \sa SDL_SIMDFree
- */
-extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len);
-
-/**
- * \brief Deallocate memory obtained from SDL_SIMDAlloc
- *
- * It is not valid to use this function on a pointer from anything but
- *  SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc,
- *  SDL_malloc, memalign, new[], etc.
- *
- * However, SDL_SIMDFree(NULL) is a legal no-op.
- *
- * \sa SDL_SIMDAlloc
- */
-extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr);
-
-/* vi: set ts=4 sw=4 expandtab: */
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_cpuinfo_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_endian.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_endian.h
deleted file mode 100644 (file)
index 54d5d48..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_endian.h
- *
- *  Functions for reading and writing endian-specific values
- */
-
-#ifndef SDL_endian_h_
-#define SDL_endian_h_
-
-#include "SDL_stdinc.h"
-
-/**
- *  \name The two types of endianness
- */
-/* @{ */
-#define SDL_LIL_ENDIAN  1234
-#define SDL_BIG_ENDIAN  4321
-/* @} */
-
-#ifndef SDL_BYTEORDER           /* Not defined in SDL_config.h? */
-#ifdef __linux__
-#include <endian.h>
-#define SDL_BYTEORDER  __BYTE_ORDER
-#else /* __linux__ */
-#if defined(__hppa__) || \
-    defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
-    (defined(__MIPS__) && defined(__MISPEB__)) || \
-    defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \
-    defined(__sparc__)
-#define SDL_BYTEORDER   SDL_BIG_ENDIAN
-#else
-#define SDL_BYTEORDER   SDL_LIL_ENDIAN
-#endif
-#endif /* __linux__ */
-#endif /* !SDL_BYTEORDER */
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_endian.h
- */
-#if defined(__GNUC__) && defined(__i386__) && \
-   !(__GNUC__ == 2 && __GNUC_MINOR__ == 95 /* broken gcc version */)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-  __asm__("xchgb %b0,%h0": "=q"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && defined(__x86_64__)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-  __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-    int result;
-
-  __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x));
-    return (Uint16)result;
-}
-#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-  __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
-    return x;
-}
-#elif defined(__WATCOMC__) && defined(__386__)
-extern _inline Uint16 SDL_Swap16(Uint16);
-#pragma aux SDL_Swap16 = \
-  "xchg al, ah" \
-  parm   [ax]   \
-  modify [ax];
-#else
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
-    return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));
-}
-#endif
-
-#if defined(__GNUC__) && defined(__i386__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-  __asm__("bswap %0": "=r"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && defined(__x86_64__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-  __asm__("bswapl %0": "=r"(x):"0"(x));
-    return x;
-}
-#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-    Uint32 result;
-
-  __asm__("rlwimi %0,%2,24,16,23": "=&r"(result):"0"(x >> 24), "r"(x));
-  __asm__("rlwimi %0,%2,8,8,15": "=&r"(result):"0"(result), "r"(x));
-  __asm__("rlwimi %0,%2,24,0,7": "=&r"(result):"0"(result), "r"(x));
-    return result;
-}
-#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) && !defined(__mcoldfire__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-  __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
-    return x;
-}
-#elif defined(__WATCOMC__) && defined(__386__)
-extern _inline Uint32 SDL_Swap32(Uint32);
-#ifndef __SW_3 /* 486+ */
-#pragma aux SDL_Swap32 = \
-  "bswap eax"  \
-  parm   [eax] \
-  modify [eax];
-#else  /* 386-only */
-#pragma aux SDL_Swap32 = \
-  "xchg al, ah"  \
-  "ror  eax, 16" \
-  "xchg al, ah"  \
-  parm   [eax]   \
-  modify [eax];
-#endif
-#else
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
-    return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |
-                                    ((x >> 8) & 0x0000FF00) | (x >> 24)));
-}
-#endif
-
-#if defined(__GNUC__) && defined(__i386__)
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
-    union
-    {
-        struct
-        {
-            Uint32 a, b;
-        } s;
-        Uint64 u;
-    } v;
-    v.u = x;
-  __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1": "=r"(v.s.a), "=r"(v.s.b):"0"(v.s.a),
-            "1"(v.s.
-                b));
-    return v.u;
-}
-#elif defined(__GNUC__) && defined(__x86_64__)
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
-  __asm__("bswapq %0": "=r"(x):"0"(x));
-    return x;
-}
-#else
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
-    Uint32 hi, lo;
-
-    /* Separate into high and low 32-bit values and swap them */
-    lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
-    x >>= 32;
-    hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
-    x = SDL_Swap32(lo);
-    x <<= 32;
-    x |= SDL_Swap32(hi);
-    return (x);
-}
-#endif
-
-
-SDL_FORCE_INLINE float
-SDL_SwapFloat(float x)
-{
-    union
-    {
-        float f;
-        Uint32 ui32;
-    } swapper;
-    swapper.f = x;
-    swapper.ui32 = SDL_Swap32(swapper.ui32);
-    return swapper.f;
-}
-
-
-/**
- *  \name Swap to native
- *  Byteswap item from the specified endianness to the native endianness.
- */
-/* @{ */
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-#define SDL_SwapLE16(X) (X)
-#define SDL_SwapLE32(X) (X)
-#define SDL_SwapLE64(X) (X)
-#define SDL_SwapFloatLE(X)  (X)
-#define SDL_SwapBE16(X) SDL_Swap16(X)
-#define SDL_SwapBE32(X) SDL_Swap32(X)
-#define SDL_SwapBE64(X) SDL_Swap64(X)
-#define SDL_SwapFloatBE(X)  SDL_SwapFloat(X)
-#else
-#define SDL_SwapLE16(X) SDL_Swap16(X)
-#define SDL_SwapLE32(X) SDL_Swap32(X)
-#define SDL_SwapLE64(X) SDL_Swap64(X)
-#define SDL_SwapFloatLE(X)  SDL_SwapFloat(X)
-#define SDL_SwapBE16(X) (X)
-#define SDL_SwapBE32(X) (X)
-#define SDL_SwapBE64(X) (X)
-#define SDL_SwapFloatBE(X)  (X)
-#endif
-/* @} *//* Swap to native */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_endian_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_error.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_error.h
deleted file mode 100644 (file)
index 24416e6..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_error.h
- *
- *  Simple error message routines for SDL.
- */
-
-#ifndef SDL_error_h_
-#define SDL_error_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Public functions */
-/* SDL_SetError() unconditionally returns -1. */
-extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-extern DECLSPEC const char *SDLCALL SDL_GetError(void);
-extern DECLSPEC void SDLCALL SDL_ClearError(void);
-
-/**
- *  \name Internal error functions
- *
- *  \internal
- *  Private error reporting function - used internally.
- */
-/* @{ */
-#define SDL_OutOfMemory()   SDL_Error(SDL_ENOMEM)
-#define SDL_Unsupported()   SDL_Error(SDL_UNSUPPORTED)
-#define SDL_InvalidParamError(param)    SDL_SetError("Parameter '%s' is invalid", (param))
-typedef enum
-{
-    SDL_ENOMEM,
-    SDL_EFREAD,
-    SDL_EFWRITE,
-    SDL_EFSEEK,
-    SDL_UNSUPPORTED,
-    SDL_LASTERROR
-} SDL_errorcode;
-/* SDL_Error() unconditionally returns -1. */
-extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code);
-/* @} *//* Internal error functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_error_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_events.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_events.h
deleted file mode 100644 (file)
index 282b9fb..0000000
+++ /dev/null
@@ -1,791 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_events.h
- *
- *  Include file for SDL event handling.
- */
-
-#ifndef SDL_events_h_
-#define SDL_events_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-#include "SDL_keyboard.h"
-#include "SDL_mouse.h"
-#include "SDL_joystick.h"
-#include "SDL_gamecontroller.h"
-#include "SDL_quit.h"
-#include "SDL_gesture.h"
-#include "SDL_touch.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* General keyboard/mouse state definitions */
-#define SDL_RELEASED    0
-#define SDL_PRESSED 1
-
-/**
- * \brief The types of events that can be delivered.
- */
-typedef enum
-{
-    SDL_FIRSTEVENT     = 0,     /**< Unused (do not remove) */
-
-    /* Application events */
-    SDL_QUIT           = 0x100, /**< User-requested quit */
-
-    /* These application events have special meaning on iOS, see README-ios.md for details */
-    SDL_APP_TERMINATING,        /**< The application is being terminated by the OS
-                                     Called on iOS in applicationWillTerminate()
-                                     Called on Android in onDestroy()
-                                */
-    SDL_APP_LOWMEMORY,          /**< The application is low on memory, free memory if possible.
-                                     Called on iOS in applicationDidReceiveMemoryWarning()
-                                     Called on Android in onLowMemory()
-                                */
-    SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
-                                     Called on iOS in applicationWillResignActive()
-                                     Called on Android in onPause()
-                                */
-    SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
-                                     Called on iOS in applicationDidEnterBackground()
-                                     Called on Android in onPause()
-                                */
-    SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
-                                     Called on iOS in applicationWillEnterForeground()
-                                     Called on Android in onResume()
-                                */
-    SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
-                                     Called on iOS in applicationDidBecomeActive()
-                                     Called on Android in onResume()
-                                */
-
-    /* Display events */
-    SDL_DISPLAYEVENT   = 0x150,  /**< Display state change */
-
-    /* Window events */
-    SDL_WINDOWEVENT    = 0x200, /**< Window state change */
-    SDL_SYSWMEVENT,             /**< System specific event */
-
-    /* Keyboard events */
-    SDL_KEYDOWN        = 0x300, /**< Key pressed */
-    SDL_KEYUP,                  /**< Key released */
-    SDL_TEXTEDITING,            /**< Keyboard text editing (composition) */
-    SDL_TEXTINPUT,              /**< Keyboard text input */
-    SDL_KEYMAPCHANGED,          /**< Keymap changed due to a system event such as an
-                                     input language or keyboard layout change.
-                                */
-
-    /* Mouse events */
-    SDL_MOUSEMOTION    = 0x400, /**< Mouse moved */
-    SDL_MOUSEBUTTONDOWN,        /**< Mouse button pressed */
-    SDL_MOUSEBUTTONUP,          /**< Mouse button released */
-    SDL_MOUSEWHEEL,             /**< Mouse wheel motion */
-
-    /* Joystick events */
-    SDL_JOYAXISMOTION  = 0x600, /**< Joystick axis motion */
-    SDL_JOYBALLMOTION,          /**< Joystick trackball motion */
-    SDL_JOYHATMOTION,           /**< Joystick hat position change */
-    SDL_JOYBUTTONDOWN,          /**< Joystick button pressed */
-    SDL_JOYBUTTONUP,            /**< Joystick button released */
-    SDL_JOYDEVICEADDED,         /**< A new joystick has been inserted into the system */
-    SDL_JOYDEVICEREMOVED,       /**< An opened joystick has been removed */
-
-    /* Game controller events */
-    SDL_CONTROLLERAXISMOTION  = 0x650, /**< Game controller axis motion */
-    SDL_CONTROLLERBUTTONDOWN,          /**< Game controller button pressed */
-    SDL_CONTROLLERBUTTONUP,            /**< Game controller button released */
-    SDL_CONTROLLERDEVICEADDED,         /**< A new Game controller has been inserted into the system */
-    SDL_CONTROLLERDEVICEREMOVED,       /**< An opened Game controller has been removed */
-    SDL_CONTROLLERDEVICEREMAPPED,      /**< The controller mapping was updated */
-
-    /* Touch events */
-    SDL_FINGERDOWN      = 0x700,
-    SDL_FINGERUP,
-    SDL_FINGERMOTION,
-
-    /* Gesture events */
-    SDL_DOLLARGESTURE   = 0x800,
-    SDL_DOLLARRECORD,
-    SDL_MULTIGESTURE,
-
-    /* Clipboard events */
-    SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */
-
-    /* Drag and drop events */
-    SDL_DROPFILE        = 0x1000, /**< The system requests a file open */
-    SDL_DROPTEXT,                 /**< text/plain drag-and-drop event */
-    SDL_DROPBEGIN,                /**< A new set of drops is beginning (NULL filename) */
-    SDL_DROPCOMPLETE,             /**< Current set of drops is now complete (NULL filename) */
-
-    /* Audio hotplug events */
-    SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
-    SDL_AUDIODEVICEREMOVED,        /**< An audio device has been removed. */
-
-    /* Sensor events */
-    SDL_SENSORUPDATE = 0x1200,     /**< A sensor was updated */
-
-    /* Render events */
-    SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
-    SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
-
-    /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
-     *  and should be allocated with SDL_RegisterEvents()
-     */
-    SDL_USEREVENT    = 0x8000,
-
-    /**
-     *  This last event is only for bounding internal arrays
-     */
-    SDL_LASTEVENT    = 0xFFFF
-} SDL_EventType;
-
-/**
- *  \brief Fields shared by every event
- */
-typedef struct SDL_CommonEvent
-{
-    Uint32 type;
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_CommonEvent;
-
-/**
- *  \brief Display state change event data (event.display.*)
- */
-typedef struct SDL_DisplayEvent
-{
-    Uint32 type;        /**< ::SDL_DISPLAYEVENT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 display;     /**< The associated display index */
-    Uint8 event;        /**< ::SDL_DisplayEventID */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint32 data1;       /**< event dependent data */
-} SDL_DisplayEvent;
-
-/**
- *  \brief Window state change event data (event.window.*)
- */
-typedef struct SDL_WindowEvent
-{
-    Uint32 type;        /**< ::SDL_WINDOWEVENT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The associated window */
-    Uint8 event;        /**< ::SDL_WindowEventID */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint32 data1;       /**< event dependent data */
-    Sint32 data2;       /**< event dependent data */
-} SDL_WindowEvent;
-
-/**
- *  \brief Keyboard button event structure (event.key.*)
- */
-typedef struct SDL_KeyboardEvent
-{
-    Uint32 type;        /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with keyboard focus, if any */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 repeat;       /**< Non-zero if this is a key repeat */
-    Uint8 padding2;
-    Uint8 padding3;
-    SDL_Keysym keysym;  /**< The key that was pressed or released */
-} SDL_KeyboardEvent;
-
-#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
-/**
- *  \brief Keyboard text editing event structure (event.edit.*)
- */
-typedef struct SDL_TextEditingEvent
-{
-    Uint32 type;                                /**< ::SDL_TEXTEDITING */
-    Uint32 timestamp;                           /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;                            /**< The window with keyboard focus, if any */
-    char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE];  /**< The editing text */
-    Sint32 start;                               /**< The start cursor of selected editing text */
-    Sint32 length;                              /**< The length of selected editing text */
-} SDL_TextEditingEvent;
-
-
-#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
-/**
- *  \brief Keyboard text input event structure (event.text.*)
- */
-typedef struct SDL_TextInputEvent
-{
-    Uint32 type;                              /**< ::SDL_TEXTINPUT */
-    Uint32 timestamp;                         /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;                          /**< The window with keyboard focus, if any */
-    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];  /**< The input text */
-} SDL_TextInputEvent;
-
-/**
- *  \brief Mouse motion event structure (event.motion.*)
- */
-typedef struct SDL_MouseMotionEvent
-{
-    Uint32 type;        /**< ::SDL_MOUSEMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
-    Uint32 state;       /**< The current button state */
-    Sint32 x;           /**< X coordinate, relative to window */
-    Sint32 y;           /**< Y coordinate, relative to window */
-    Sint32 xrel;        /**< The relative motion in the X direction */
-    Sint32 yrel;        /**< The relative motion in the Y direction */
-} SDL_MouseMotionEvent;
-
-/**
- *  \brief Mouse button event structure (event.button.*)
- */
-typedef struct SDL_MouseButtonEvent
-{
-    Uint32 type;        /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
-    Uint8 button;       /**< The mouse button index */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 clicks;       /**< 1 for single-click, 2 for double-click, etc. */
-    Uint8 padding1;
-    Sint32 x;           /**< X coordinate, relative to window */
-    Sint32 y;           /**< Y coordinate, relative to window */
-} SDL_MouseButtonEvent;
-
-/**
- *  \brief Mouse wheel event structure (event.wheel.*)
- */
-typedef struct SDL_MouseWheelEvent
-{
-    Uint32 type;        /**< ::SDL_MOUSEWHEEL */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
-    Sint32 x;           /**< The amount scrolled horizontally, positive to the right and negative to the left */
-    Sint32 y;           /**< The amount scrolled vertically, positive away from the user and negative toward the user */
-    Uint32 direction;   /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
-} SDL_MouseWheelEvent;
-
-/**
- *  \brief Joystick axis motion event structure (event.jaxis.*)
- */
-typedef struct SDL_JoyAxisEvent
-{
-    Uint32 type;        /**< ::SDL_JOYAXISMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 axis;         /**< The joystick axis index */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
-    Uint16 padding4;
-} SDL_JoyAxisEvent;
-
-/**
- *  \brief Joystick trackball motion event structure (event.jball.*)
- */
-typedef struct SDL_JoyBallEvent
-{
-    Uint32 type;        /**< ::SDL_JOYBALLMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 ball;         /**< The joystick trackball index */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint16 xrel;        /**< The relative motion in the X direction */
-    Sint16 yrel;        /**< The relative motion in the Y direction */
-} SDL_JoyBallEvent;
-
-/**
- *  \brief Joystick hat position change event structure (event.jhat.*)
- */
-typedef struct SDL_JoyHatEvent
-{
-    Uint32 type;        /**< ::SDL_JOYHATMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 hat;          /**< The joystick hat index */
-    Uint8 value;        /**< The hat position value.
-                         *   \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
-                         *   \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
-                         *   \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
-                         *
-                         *   Note that zero means the POV is centered.
-                         */
-    Uint8 padding1;
-    Uint8 padding2;
-} SDL_JoyHatEvent;
-
-/**
- *  \brief Joystick button event structure (event.jbutton.*)
- */
-typedef struct SDL_JoyButtonEvent
-{
-    Uint32 type;        /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 button;       /**< The joystick button index */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 padding1;
-    Uint8 padding2;
-} SDL_JoyButtonEvent;
-
-/**
- *  \brief Joystick device event structure (event.jdevice.*)
- */
-typedef struct SDL_JoyDeviceEvent
-{
-    Uint32 type;        /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
-} SDL_JoyDeviceEvent;
-
-
-/**
- *  \brief Game controller axis motion event structure (event.caxis.*)
- */
-typedef struct SDL_ControllerAxisEvent
-{
-    Uint32 type;        /**< ::SDL_CONTROLLERAXISMOTION */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 axis;         /**< The controller axis (SDL_GameControllerAxis) */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-    Sint16 value;       /**< The axis value (range: -32768 to 32767) */
-    Uint16 padding4;
-} SDL_ControllerAxisEvent;
-
-
-/**
- *  \brief Game controller button event structure (event.cbutton.*)
- */
-typedef struct SDL_ControllerButtonEvent
-{
-    Uint32 type;        /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_JoystickID which; /**< The joystick instance id */
-    Uint8 button;       /**< The controller button (SDL_GameControllerButton) */
-    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
-    Uint8 padding1;
-    Uint8 padding2;
-} SDL_ControllerButtonEvent;
-
-
-/**
- *  \brief Controller device event structure (event.cdevice.*)
- */
-typedef struct SDL_ControllerDeviceEvent
-{
-    Uint32 type;        /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
-} SDL_ControllerDeviceEvent;
-
-/**
- *  \brief Audio device event structure (event.adevice.*)
- */
-typedef struct SDL_AudioDeviceEvent
-{
-    Uint32 type;        /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 which;       /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
-    Uint8 iscapture;    /**< zero if an output device, non-zero if a capture device. */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
-} SDL_AudioDeviceEvent;
-
-
-/**
- *  \brief Touch finger event structure (event.tfinger.*)
- */
-typedef struct SDL_TouchFingerEvent
-{
-    Uint32 type;        /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_TouchID touchId; /**< The touch device id */
-    SDL_FingerID fingerId;
-    float x;            /**< Normalized in the range 0...1 */
-    float y;            /**< Normalized in the range 0...1 */
-    float dx;           /**< Normalized in the range -1...1 */
-    float dy;           /**< Normalized in the range -1...1 */
-    float pressure;     /**< Normalized in the range 0...1 */
-} SDL_TouchFingerEvent;
-
-
-/**
- *  \brief Multiple Finger Gesture Event (event.mgesture.*)
- */
-typedef struct SDL_MultiGestureEvent
-{
-    Uint32 type;        /**< ::SDL_MULTIGESTURE */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_TouchID touchId; /**< The touch device id */
-    float dTheta;
-    float dDist;
-    float x;
-    float y;
-    Uint16 numFingers;
-    Uint16 padding;
-} SDL_MultiGestureEvent;
-
-
-/**
- * \brief Dollar Gesture Event (event.dgesture.*)
- */
-typedef struct SDL_DollarGestureEvent
-{
-    Uint32 type;        /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_TouchID touchId; /**< The touch device id */
-    SDL_GestureID gestureId;
-    Uint32 numFingers;
-    float error;
-    float x;            /**< Normalized center of gesture */
-    float y;            /**< Normalized center of gesture */
-} SDL_DollarGestureEvent;
-
-
-/**
- *  \brief An event used to request a file open by the system (event.drop.*)
- *         This event is enabled by default, you can disable it with SDL_EventState().
- *  \note If this event is enabled, you must free the filename in the event.
- */
-typedef struct SDL_DropEvent
-{
-    Uint32 type;        /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    char *file;         /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
-    Uint32 windowID;    /**< The window that was dropped on, if any */
-} SDL_DropEvent;
-
-
-/**
- *  \brief Sensor event structure (event.sensor.*)
- */
-typedef struct SDL_SensorEvent
-{
-    Uint32 type;        /**< ::SDL_SENSORUPDATE */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Sint32 which;       /**< The instance ID of the sensor */
-    float data[6];      /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */
-} SDL_SensorEvent;
-
-/**
- *  \brief The "quit requested" event
- */
-typedef struct SDL_QuitEvent
-{
-    Uint32 type;        /**< ::SDL_QUIT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_QuitEvent;
-
-/**
- *  \brief OS Specific event
- */
-typedef struct SDL_OSEvent
-{
-    Uint32 type;        /**< ::SDL_QUIT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_OSEvent;
-
-/**
- *  \brief A user-defined event type (event.user.*)
- */
-typedef struct SDL_UserEvent
-{
-    Uint32 type;        /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    Uint32 windowID;    /**< The associated window if any */
-    Sint32 code;        /**< User defined event code */
-    void *data1;        /**< User defined data pointer */
-    void *data2;        /**< User defined data pointer */
-} SDL_UserEvent;
-
-
-struct SDL_SysWMmsg;
-typedef struct SDL_SysWMmsg SDL_SysWMmsg;
-
-/**
- *  \brief A video driver dependent system event (event.syswm.*)
- *         This event is disabled by default, you can enable it with SDL_EventState()
- *
- *  \note If you want to use this event, you should include SDL_syswm.h.
- */
-typedef struct SDL_SysWMEvent
-{
-    Uint32 type;        /**< ::SDL_SYSWMEVENT */
-    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */
-    SDL_SysWMmsg *msg;  /**< driver dependent data, defined in SDL_syswm.h */
-} SDL_SysWMEvent;
-
-/**
- *  \brief General event structure
- */
-typedef union SDL_Event
-{
-    Uint32 type;                    /**< Event type, shared with all events */
-    SDL_CommonEvent common;         /**< Common event data */
-    SDL_DisplayEvent display;       /**< Window event data */
-    SDL_WindowEvent window;         /**< Window event data */
-    SDL_KeyboardEvent key;          /**< Keyboard event data */
-    SDL_TextEditingEvent edit;      /**< Text editing event data */
-    SDL_TextInputEvent text;        /**< Text input event data */
-    SDL_MouseMotionEvent motion;    /**< Mouse motion event data */
-    SDL_MouseButtonEvent button;    /**< Mouse button event data */
-    SDL_MouseWheelEvent wheel;      /**< Mouse wheel event data */
-    SDL_JoyAxisEvent jaxis;         /**< Joystick axis event data */
-    SDL_JoyBallEvent jball;         /**< Joystick ball event data */
-    SDL_JoyHatEvent jhat;           /**< Joystick hat event data */
-    SDL_JoyButtonEvent jbutton;     /**< Joystick button event data */
-    SDL_JoyDeviceEvent jdevice;     /**< Joystick device change event data */
-    SDL_ControllerAxisEvent caxis;      /**< Game Controller axis event data */
-    SDL_ControllerButtonEvent cbutton;  /**< Game Controller button event data */
-    SDL_ControllerDeviceEvent cdevice;  /**< Game Controller device event data */
-    SDL_AudioDeviceEvent adevice;   /**< Audio device event data */
-    SDL_SensorEvent sensor;         /**< Sensor event data */
-    SDL_QuitEvent quit;             /**< Quit request event data */
-    SDL_UserEvent user;             /**< Custom event data */
-    SDL_SysWMEvent syswm;           /**< System dependent window event data */
-    SDL_TouchFingerEvent tfinger;   /**< Touch finger event data */
-    SDL_MultiGestureEvent mgesture; /**< Gesture event data */
-    SDL_DollarGestureEvent dgesture; /**< Gesture event data */
-    SDL_DropEvent drop;             /**< Drag and drop event data */
-
-    /* This is necessary for ABI compatibility between Visual C++ and GCC
-       Visual C++ will respect the push pack pragma and use 52 bytes for
-       this structure, and GCC will use the alignment of the largest datatype
-       within the union, which is 8 bytes.
-
-       So... we'll add padding to force the size to be 56 bytes for both.
-    */
-    Uint8 padding[56];
-} SDL_Event;
-
-/* Make sure we haven't broken binary compatibility */
-SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == 56);
-
-
-/* Function prototypes */
-
-/**
- *  Pumps the event loop, gathering events from the input devices.
- *
- *  This function updates the event queue and internal input device state.
- *
- *  This should only be run in the thread that sets the video mode.
- */
-extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
-
-/* @{ */
-typedef enum
-{
-    SDL_ADDEVENT,
-    SDL_PEEKEVENT,
-    SDL_GETEVENT
-} SDL_eventaction;
-
-/**
- *  Checks the event queue for messages and optionally returns them.
- *
- *  If \c action is ::SDL_ADDEVENT, up to \c numevents events will be added to
- *  the back of the event queue.
- *
- *  If \c action is ::SDL_PEEKEVENT, up to \c numevents events at the front
- *  of the event queue, within the specified minimum and maximum type,
- *  will be returned and will not be removed from the queue.
- *
- *  If \c action is ::SDL_GETEVENT, up to \c numevents events at the front
- *  of the event queue, within the specified minimum and maximum type,
- *  will be returned and will be removed from the queue.
- *
- *  \return The number of events actually stored, or -1 if there was an error.
- *
- *  This function is thread-safe.
- */
-extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
-                                           SDL_eventaction action,
-                                           Uint32 minType, Uint32 maxType);
-/* @} */
-
-/**
- *  Checks to see if certain event types are in the event queue.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);
-extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);
-
-/**
- *  This function clears events from the event queue
- *  This function only affects currently queued events. If you want to make
- *  sure that all pending OS events are flushed, you can call SDL_PumpEvents()
- *  on the main thread immediately before the flush call.
- */
-extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);
-extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
-
-/**
- *  \brief Polls for currently pending events.
- *
- *  \return 1 if there are any pending events, or 0 if there are none available.
- *
- *  \param event If not NULL, the next event is removed from the queue and
- *               stored in that area.
- */
-extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
-
-/**
- *  \brief Waits indefinitely for the next available event.
- *
- *  \return 1, or 0 if there was an error while waiting for events.
- *
- *  \param event If not NULL, the next event is removed from the queue and
- *               stored in that area.
- */
-extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
-
-/**
- *  \brief Waits until the specified timeout (in milliseconds) for the next
- *         available event.
- *
- *  \return 1, or 0 if there was an error while waiting for events.
- *
- *  \param event If not NULL, the next event is removed from the queue and
- *               stored in that area.
- *  \param timeout The timeout (in milliseconds) to wait for next event.
- */
-extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,
-                                                 int timeout);
-
-/**
- *  \brief Add an event to the event queue.
- *
- *  \return 1 on success, 0 if the event was filtered, or -1 if the event queue
- *          was full or there was some other error.
- */
-extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
-
-typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
-
-/**
- *  Sets up a filter to process all events before they change internal state and
- *  are posted to the internal event queue.
- *
- *  The filter is prototyped as:
- *  \code
- *      int SDL_EventFilter(void *userdata, SDL_Event * event);
- *  \endcode
- *
- *  If the filter returns 1, then the event will be added to the internal queue.
- *  If it returns 0, then the event will be dropped from the queue, but the
- *  internal state will still be updated.  This allows selective filtering of
- *  dynamically arriving events.
- *
- *  \warning  Be very careful of what you do in the event filter function, as
- *            it may run in a different thread!
- *
- *  There is one caveat when dealing with the ::SDL_QuitEvent event type.  The
- *  event filter is only called when the window manager desires to close the
- *  application window.  If the event filter returns 1, then the window will
- *  be closed, otherwise the window will remain open if possible.
- *
- *  If the quit event is generated by an interrupt signal, it will bypass the
- *  internal queue and be delivered to the application at the next event poll.
- */
-extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,
-                                                void *userdata);
-
-/**
- *  Return the current event filter - can be used to "chain" filters.
- *  If there is no event filter set, this function returns SDL_FALSE.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,
-                                                    void **userdata);
-
-/**
- *  Add a function which is called when an event is added to the queue.
- */
-extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
-                                               void *userdata);
-
-/**
- *  Remove an event watch function added with SDL_AddEventWatch()
- */
-extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
-                                               void *userdata);
-
-/**
- *  Run the filter function on the current event queue, removing any
- *  events for which the filter returns 0.
- */
-extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,
-                                              void *userdata);
-
-/* @{ */
-#define SDL_QUERY   -1
-#define SDL_IGNORE   0
-#define SDL_DISABLE  0
-#define SDL_ENABLE   1
-
-/**
- *  This function allows you to set the state of processing certain events.
- *   - If \c state is set to ::SDL_IGNORE, that event will be automatically
- *     dropped from the event queue and will not be filtered.
- *   - If \c state is set to ::SDL_ENABLE, that event will be processed
- *     normally.
- *   - If \c state is set to ::SDL_QUERY, SDL_EventState() will return the
- *     current processing state of the specified event.
- */
-extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
-/* @} */
-#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)
-
-/**
- *  This function allocates a set of user-defined events, and returns
- *  the beginning event number for that set of events.
- *
- *  If there aren't enough user-defined events left, this function
- *  returns (Uint32)-1
- */
-extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_events_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_filesystem.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_filesystem.h
deleted file mode 100644 (file)
index 6d97e58..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_filesystem.h
- *
- *  \brief Include file for filesystem SDL API functions
- */
-
-#ifndef SDL_filesystem_h_
-#define SDL_filesystem_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Get the path where the application resides.
- *
- * Get the "base path". This is the directory where the application was run
- *  from, which is probably the installation directory, and may or may not
- *  be the process's current working directory.
- *
- * This returns an absolute path in UTF-8 encoding, and is guaranteed to
- *  end with a path separator ('\\' on Windows, '/' most other places).
- *
- * The pointer returned by this function is owned by you. Please call
- *  SDL_free() on the pointer when you are done with it, or it will be a
- *  memory leak. This is not necessarily a fast call, though, so you should
- *  call this once near startup and save the string if you need it.
- *
- * Some platforms can't determine the application's path, and on other
- *  platforms, this might be meaningless. In such cases, this function will
- *  return NULL.
- *
- *  \return String of base dir in UTF-8 encoding, or NULL on error.
- *
- * \sa SDL_GetPrefPath
- */
-extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
-
-/**
- * \brief Get the user-and-app-specific path where files can be written.
- *
- * Get the "pref dir". This is meant to be where users can write personal
- *  files (preferences and save games, etc) that are specific to your
- *  application. This directory is unique per user, per application.
- *
- * This function will decide the appropriate location in the native filesystem,
- *  create the directory if necessary, and return a string of the absolute
- *  path to the directory in UTF-8 encoding.
- *
- * On Windows, the string might look like:
- *  "C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\"
- *
- * On Linux, the string might look like:
- *  "/home/bob/.local/share/My Program Name/"
- *
- * On Mac OS X, the string might look like:
- *  "/Users/bob/Library/Application Support/My Program Name/"
- *
- * (etc.)
- *
- * You specify the name of your organization (if it's not a real organization,
- *  your name or an Internet domain you own might do) and the name of your
- *  application. These should be untranslated proper names.
- *
- * Both the org and app strings may become part of a directory name, so
- *  please follow these rules:
- *
- *    - Try to use the same org string (including case-sensitivity) for
- *      all your applications that use this function.
- *    - Always use a unique app string for each one, and make sure it never
- *      changes for an app once you've decided on it.
- *    - Unicode characters are legal, as long as it's UTF-8 encoded, but...
- *    - ...only use letters, numbers, and spaces. Avoid punctuation like
- *      "Game Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
- *
- * This returns an absolute path in UTF-8 encoding, and is guaranteed to
- *  end with a path separator ('\\' on Windows, '/' most other places).
- *
- * The pointer returned by this function is owned by you. Please call
- *  SDL_free() on the pointer when you are done with it, or it will be a
- *  memory leak. This is not necessarily a fast call, though, so you should
- *  call this once near startup and save the string if you need it.
- *
- * You should assume the path returned by this function is the only safe
- *  place to write files (and that SDL_GetBasePath(), while it might be
- *  writable, or even the parent of the returned path, aren't where you
- *  should be writing things).
- *
- * Some platforms can't determine the pref path, and on other
- *  platforms, this might be meaningless. In such cases, this function will
- *  return NULL.
- *
- *   \param org The name of your organization.
- *   \param app The name of your application.
- *  \return UTF-8 string of user dir in platform-dependent notation. NULL
- *          if there's a problem (creating directory failed, etc).
- *
- * \sa SDL_GetBasePath
- */
-extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_filesystem_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h
deleted file mode 100644 (file)
index ebde387..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_gamecontroller.h
- *
- *  Include file for SDL game controller event handling
- */
-
-#ifndef SDL_gamecontroller_h_
-#define SDL_gamecontroller_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_rwops.h"
-#include "SDL_joystick.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_gamecontroller.h
- *
- *  In order to use these functions, SDL_Init() must have been called
- *  with the ::SDL_INIT_GAMECONTROLLER flag.  This causes SDL to scan the system
- *  for game controllers, and load appropriate drivers.
- *
- *  If you would like to receive controller updates while the application
- *  is in the background, you should set the following hint before calling
- *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
- */
-
-/**
- * The gamecontroller structure used to identify an SDL game controller
- */
-struct _SDL_GameController;
-typedef struct _SDL_GameController SDL_GameController;
-
-
-typedef enum
-{
-    SDL_CONTROLLER_BINDTYPE_NONE = 0,
-    SDL_CONTROLLER_BINDTYPE_BUTTON,
-    SDL_CONTROLLER_BINDTYPE_AXIS,
-    SDL_CONTROLLER_BINDTYPE_HAT
-} SDL_GameControllerBindType;
-
-/**
- *  Get the SDL joystick layer binding for this controller button/axis mapping
- */
-typedef struct SDL_GameControllerButtonBind
-{
-    SDL_GameControllerBindType bindType;
-    union
-    {
-        int button;
-        int axis;
-        struct {
-            int hat;
-            int hat_mask;
-        } hat;
-    } value;
-
-} SDL_GameControllerButtonBind;
-
-
-/**
- *  To count the number of game controllers in the system for the following:
- *  int nJoysticks = SDL_NumJoysticks();
- *  int nGameControllers = 0;
- *  for (int i = 0; i < nJoysticks; i++) {
- *      if (SDL_IsGameController(i)) {
- *          nGameControllers++;
- *      }
- *  }
- *
- *  Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is:
- *  guid,name,mappings
- *
- *  Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones.
- *  Under Windows there is a reserved GUID of "xinput" that covers any XInput devices.
- *  The mapping format for joystick is:
- *      bX - a joystick button, index X
- *      hX.Y - hat X with value Y
- *      aX - axis X of the joystick
- *  Buttons can be used as a controller axis and vice versa.
- *
- *  This string shows an example of a valid mapping for a controller
- *  "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7",
- *
- */
-
-/**
- *  Load a set of mappings from a seekable SDL data stream (memory or file), filtered by the current SDL_GetPlatform()
- *  A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
- *
- *  If \c freerw is non-zero, the stream will be closed after being read.
- * 
- * \return number of mappings added, -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw);
-
-/**
- *  Load a set of mappings from a file, filtered by the current SDL_GetPlatform()
- *
- *  Convenience macro.
- */
-#define SDL_GameControllerAddMappingsFromFile(file)   SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
-
-/**
- *  Add or update an existing mapping configuration
- *
- * \return 1 if mapping is added, 0 if updated, -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString);
-
-/**
- *  Get the number of mappings installed
- *
- *  \return the number of mappings
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void);
-
-/**
- *  Get the mapping at a particular index.
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if the index is out of range.
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index);
-
-/**
- *  Get a mapping string for a GUID
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if no mapping is available
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid);
-
-/**
- *  Get a mapping string for an open GameController
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if no mapping is available
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController * gamecontroller);
-
-/**
- *  Is the joystick on this index supported by the game controller interface?
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
-
-/**
- *  Get the implementation dependent name of a game controller.
- *  This can be called before any controllers are opened.
- *  If no name can be found, this function returns NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index);
-
-/**
- *  Get the mapping of a game controller.
- *  This can be called before any controllers are opened.
- *
- *  \return the mapping string.  Must be freed with SDL_free().  Returns NULL if no mapping is available
- */
-extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index);
-
-/**
- *  Open a game controller for use.
- *  The index passed as an argument refers to the N'th game controller on the system.
- *  This index is not the value which will identify this controller in future
- *  controller events.  The joystick's instance id (::SDL_JoystickID) will be
- *  used there instead.
- *
- *  \return A controller identifier, or NULL if an error occurred.
- */
-extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
-
-/**
- * Return the SDL_GameController associated with an instance id.
- */
-extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);
-
-/**
- *  Return the name for this currently opened controller
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller);
-
-/**
- *  Get the player index of an opened game controller, or -1 if it's not available
- *
- *  For XInput controllers this returns the XInput user index.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller);
-
-/**
- *  Get the USB vendor ID of an opened controller, if available.
- *  If the vendor ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController * gamecontroller);
-
-/**
- *  Get the USB product ID of an opened controller, if available.
- *  If the product ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController * gamecontroller);
-
-/**
- *  Get the product version of an opened controller, if available.
- *  If the product version isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController * gamecontroller);
-
-/**
- *  Returns SDL_TRUE if the controller has been opened and currently connected,
- *  or SDL_FALSE if it has not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller);
-
-/**
- *  Get the underlying joystick object used by a controller
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller);
-
-/**
- *  Enable/disable controller event polling.
- *
- *  If controller events are disabled, you must call SDL_GameControllerUpdate()
- *  yourself and check the state of the controller when you want controller
- *  information.
- *
- *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state);
-
-/**
- *  Update the current state of the open game controllers.
- *
- *  This is called automatically by the event loop if any game controller
- *  events are enabled.
- */
-extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
-
-
-/**
- *  The list of axes available from a controller
- *
- *  Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX,
- *  and are centered within ~8000 of zero, though advanced UI will allow users to set
- *  or autodetect the dead zone, which varies between controllers.
- *
- *  Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX.
- */
-typedef enum
-{
-    SDL_CONTROLLER_AXIS_INVALID = -1,
-    SDL_CONTROLLER_AXIS_LEFTX,
-    SDL_CONTROLLER_AXIS_LEFTY,
-    SDL_CONTROLLER_AXIS_RIGHTX,
-    SDL_CONTROLLER_AXIS_RIGHTY,
-    SDL_CONTROLLER_AXIS_TRIGGERLEFT,
-    SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
-    SDL_CONTROLLER_AXIS_MAX
-} SDL_GameControllerAxis;
-
-/**
- *  turn this string into a axis mapping
- */
-extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *pchString);
-
-/**
- *  turn this axis enum into a string mapping
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis);
-
-/**
- *  Get the SDL joystick layer binding for this controller button mapping
- */
-extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
-SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,
-                                 SDL_GameControllerAxis axis);
-
-/**
- *  Get the current state of an axis control on a game controller.
- *
- *  The state is a value ranging from -32768 to 32767 (except for the triggers,
- *  which range from 0 to 32767).
- *
- *  The axis indices start at index 0.
- */
-extern DECLSPEC Sint16 SDLCALL
-SDL_GameControllerGetAxis(SDL_GameController *gamecontroller,
-                          SDL_GameControllerAxis axis);
-
-/**
- *  The list of buttons available from a controller
- */
-typedef enum
-{
-    SDL_CONTROLLER_BUTTON_INVALID = -1,
-    SDL_CONTROLLER_BUTTON_A,
-    SDL_CONTROLLER_BUTTON_B,
-    SDL_CONTROLLER_BUTTON_X,
-    SDL_CONTROLLER_BUTTON_Y,
-    SDL_CONTROLLER_BUTTON_BACK,
-    SDL_CONTROLLER_BUTTON_GUIDE,
-    SDL_CONTROLLER_BUTTON_START,
-    SDL_CONTROLLER_BUTTON_LEFTSTICK,
-    SDL_CONTROLLER_BUTTON_RIGHTSTICK,
-    SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
-    SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
-    SDL_CONTROLLER_BUTTON_DPAD_UP,
-    SDL_CONTROLLER_BUTTON_DPAD_DOWN,
-    SDL_CONTROLLER_BUTTON_DPAD_LEFT,
-    SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
-    SDL_CONTROLLER_BUTTON_MAX
-} SDL_GameControllerButton;
-
-/**
- *  turn this string into a button mapping
- */
-extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *pchString);
-
-/**
- *  turn this button enum into a string mapping
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button);
-
-/**
- *  Get the SDL joystick layer binding for this controller button mapping
- */
-extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
-SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,
-                                   SDL_GameControllerButton button);
-
-
-/**
- *  Get the current state of a button on a game controller.
- *
- *  The button indices start at index 0.
- */
-extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller,
-                                                          SDL_GameControllerButton button);
-
-/**
- *  Trigger a rumble effect
- *  Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling.
- *
- *  \param gamecontroller The controller to vibrate
- *  \param low_frequency_rumble The intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF
- *  \param high_frequency_rumble The intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF
- *  \param duration_ms The duration of the rumble effect, in milliseconds
- *
- *  \return 0, or -1 if rumble isn't supported on this joystick
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
-
-/**
- *  Close a controller previously opened with SDL_GameControllerOpen().
- */
-extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_gamecontroller_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gesture.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gesture.h
deleted file mode 100644 (file)
index 9d25e9c..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_gesture.h
- *
- *  Include file for SDL gesture event handling.
- */
-
-#ifndef SDL_gesture_h_
-#define SDL_gesture_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "SDL_touch.h"
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef Sint64 SDL_GestureID;
-
-/* Function prototypes */
-
-/**
- *  \brief Begin Recording a gesture on the specified touch, or all touches (-1)
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId);
-
-
-/**
- *  \brief Save all currently loaded Dollar Gesture templates
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst);
-
-/**
- *  \brief Save a currently loaded Dollar Gesture template
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst);
-
-
-/**
- *  \brief Load Dollar Gesture templates from a file
- *
- *
- */
-extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_gesture_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_haptic.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_haptic.h
deleted file mode 100644 (file)
index 0756276..0000000
+++ /dev/null
@@ -1,1238 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_haptic.h
- *
- *  \brief The SDL haptic subsystem allows you to control haptic (force feedback)
- *         devices.
- *
- *  The basic usage is as follows:
- *   - Initialize the subsystem (::SDL_INIT_HAPTIC).
- *   - Open a haptic device.
- *    - SDL_HapticOpen() to open from index.
- *    - SDL_HapticOpenFromJoystick() to open from an existing joystick.
- *   - Create an effect (::SDL_HapticEffect).
- *   - Upload the effect with SDL_HapticNewEffect().
- *   - Run the effect with SDL_HapticRunEffect().
- *   - (optional) Free the effect with SDL_HapticDestroyEffect().
- *   - Close the haptic device with SDL_HapticClose().
- *
- * \par Simple rumble example:
- * \code
- *    SDL_Haptic *haptic;
- *
- *    // Open the device
- *    haptic = SDL_HapticOpen( 0 );
- *    if (haptic == NULL)
- *       return -1;
- *
- *    // Initialize simple rumble
- *    if (SDL_HapticRumbleInit( haptic ) != 0)
- *       return -1;
- *
- *    // Play effect at 50% strength for 2 seconds
- *    if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0)
- *       return -1;
- *    SDL_Delay( 2000 );
- *
- *    // Clean up
- *    SDL_HapticClose( haptic );
- * \endcode
- *
- * \par Complete example:
- * \code
- * int test_haptic( SDL_Joystick * joystick ) {
- *    SDL_Haptic *haptic;
- *    SDL_HapticEffect effect;
- *    int effect_id;
- *
- *    // Open the device
- *    haptic = SDL_HapticOpenFromJoystick( joystick );
- *    if (haptic == NULL) return -1; // Most likely joystick isn't haptic
- *
- *    // See if it can do sine waves
- *    if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) {
- *       SDL_HapticClose(haptic); // No sine effect
- *       return -1;
- *    }
- *
- *    // Create the effect
- *    memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default
- *    effect.type = SDL_HAPTIC_SINE;
- *    effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates
- *    effect.periodic.direction.dir[0] = 18000; // Force comes from south
- *    effect.periodic.period = 1000; // 1000 ms
- *    effect.periodic.magnitude = 20000; // 20000/32767 strength
- *    effect.periodic.length = 5000; // 5 seconds long
- *    effect.periodic.attack_length = 1000; // Takes 1 second to get max strength
- *    effect.periodic.fade_length = 1000; // Takes 1 second to fade away
- *
- *    // Upload the effect
- *    effect_id = SDL_HapticNewEffect( haptic, &effect );
- *
- *    // Test the effect
- *    SDL_HapticRunEffect( haptic, effect_id, 1 );
- *    SDL_Delay( 5000); // Wait for the effect to finish
- *
- *    // We destroy the effect, although closing the device also does this
- *    SDL_HapticDestroyEffect( haptic, effect_id );
- *
- *    // Close the device
- *    SDL_HapticClose(haptic);
- *
- *    return 0; // Success
- * }
- * \endcode
- */
-
-#ifndef SDL_haptic_h_
-#define SDL_haptic_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_joystick.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF).
- *
- * At the moment the magnitude variables are mixed between signed/unsigned, and
- * it is also not made clear that ALL of those variables expect a max of 0x7FFF.
- *
- * Some platforms may have higher precision than that (Linux FF, Windows XInput)
- * so we should fix the inconsistency in favor of higher possible precision,
- * adjusting for platforms that use different scales.
- * -flibit
- */
-
-/**
- *  \typedef SDL_Haptic
- *
- *  \brief The haptic structure used to identify an SDL haptic.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticOpenFromJoystick
- *  \sa SDL_HapticClose
- */
-struct _SDL_Haptic;
-typedef struct _SDL_Haptic SDL_Haptic;
-
-
-/**
- *  \name Haptic features
- *
- *  Different haptic features a device can have.
- */
-/* @{ */
-
-/**
- *  \name Haptic effects
- */
-/* @{ */
-
-/**
- *  \brief Constant effect supported.
- *
- *  Constant haptic effect.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_CONSTANT   (1u<<0)
-
-/**
- *  \brief Sine wave effect supported.
- *
- *  Periodic haptic effect that simulates sine waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SINE       (1u<<1)
-
-/**
- *  \brief Left/Right effect supported.
- *
- *  Haptic effect for direct control over high/low frequency motors.
- *
- *  \sa SDL_HapticLeftRight
- * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry,
- *          we ran out of bits, and this is important for XInput devices.
- */
-#define SDL_HAPTIC_LEFTRIGHT     (1u<<2)
-
-/* !!! FIXME: put this back when we have more bits in 2.1 */
-/* #define SDL_HAPTIC_SQUARE     (1<<2) */
-
-/**
- *  \brief Triangle wave effect supported.
- *
- *  Periodic haptic effect that simulates triangular waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_TRIANGLE   (1u<<3)
-
-/**
- *  \brief Sawtoothup wave effect supported.
- *
- *  Periodic haptic effect that simulates saw tooth up waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SAWTOOTHUP (1u<<4)
-
-/**
- *  \brief Sawtoothdown wave effect supported.
- *
- *  Periodic haptic effect that simulates saw tooth down waves.
- *
- *  \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5)
-
-/**
- *  \brief Ramp effect supported.
- *
- *  Ramp haptic effect.
- *
- *  \sa SDL_HapticRamp
- */
-#define SDL_HAPTIC_RAMP       (1u<<6)
-
-/**
- *  \brief Spring effect supported - uses axes position.
- *
- *  Condition haptic effect that simulates a spring.  Effect is based on the
- *  axes position.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_SPRING     (1u<<7)
-
-/**
- *  \brief Damper effect supported - uses axes velocity.
- *
- *  Condition haptic effect that simulates dampening.  Effect is based on the
- *  axes velocity.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_DAMPER     (1u<<8)
-
-/**
- *  \brief Inertia effect supported - uses axes acceleration.
- *
- *  Condition haptic effect that simulates inertia.  Effect is based on the axes
- *  acceleration.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_INERTIA    (1u<<9)
-
-/**
- *  \brief Friction effect supported - uses axes movement.
- *
- *  Condition haptic effect that simulates friction.  Effect is based on the
- *  axes movement.
- *
- *  \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_FRICTION   (1u<<10)
-
-/**
- *  \brief Custom effect is supported.
- *
- *  User defined custom haptic effect.
- */
-#define SDL_HAPTIC_CUSTOM     (1u<<11)
-
-/* @} *//* Haptic effects */
-
-/* These last few are features the device has, not effects */
-
-/**
- *  \brief Device can set global gain.
- *
- *  Device supports setting the global gain.
- *
- *  \sa SDL_HapticSetGain
- */
-#define SDL_HAPTIC_GAIN       (1u<<12)
-
-/**
- *  \brief Device can set autocenter.
- *
- *  Device supports setting autocenter.
- *
- *  \sa SDL_HapticSetAutocenter
- */
-#define SDL_HAPTIC_AUTOCENTER (1u<<13)
-
-/**
- *  \brief Device can be queried for effect status.
- *
- *  Device supports querying effect status.
- *
- *  \sa SDL_HapticGetEffectStatus
- */
-#define SDL_HAPTIC_STATUS     (1u<<14)
-
-/**
- *  \brief Device can be paused.
- *
- *  Devices supports being paused.
- *
- *  \sa SDL_HapticPause
- *  \sa SDL_HapticUnpause
- */
-#define SDL_HAPTIC_PAUSE      (1u<<15)
-
-
-/**
- * \name Direction encodings
- */
-/* @{ */
-
-/**
- *  \brief Uses polar coordinates for the direction.
- *
- *  \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_POLAR      0
-
-/**
- *  \brief Uses cartesian coordinates for the direction.
- *
- *  \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_CARTESIAN  1
-
-/**
- *  \brief Uses spherical coordinates for the direction.
- *
- *  \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_SPHERICAL  2
-
-/* @} *//* Direction encodings */
-
-/* @} *//* Haptic features */
-
-/*
- * Misc defines.
- */
-
-/**
- * \brief Used to play a device an infinite number of times.
- *
- * \sa SDL_HapticRunEffect
- */
-#define SDL_HAPTIC_INFINITY   4294967295U
-
-
-/**
- *  \brief Structure that represents a haptic direction.
- *
- *  This is the direction where the force comes from,
- *  instead of the direction in which the force is exerted.
- *
- *  Directions can be specified by:
- *   - ::SDL_HAPTIC_POLAR : Specified by polar coordinates.
- *   - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates.
- *   - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates.
- *
- *  Cardinal directions of the haptic device are relative to the positioning
- *  of the device.  North is considered to be away from the user.
- *
- *  The following diagram represents the cardinal directions:
- *  \verbatim
-                 .--.
-                 |__| .-------.
-                 |=.| |.-----.|
-                 |--| ||     ||
-                 |  | |'-----'|
-                 |__|~')_____('
-                   [ COMPUTER ]
-
-
-                     North (0,-1)
-                         ^
-                         |
-                         |
-   (-1,0)  West <----[ HAPTIC ]----> East (1,0)
-                         |
-                         |
-                         v
-                      South (0,1)
-
-
-                      [ USER ]
-                        \|||/
-                        (o o)
-                  ---ooO-(_)-Ooo---
-    \endverbatim
- *
- *  If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a
- *  degree starting north and turning clockwise.  ::SDL_HAPTIC_POLAR only uses
- *  the first \c dir parameter.  The cardinal directions would be:
- *   - North: 0 (0 degrees)
- *   - East: 9000 (90 degrees)
- *   - South: 18000 (180 degrees)
- *   - West: 27000 (270 degrees)
- *
- *  If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions
- *  (X axis, Y axis and Z axis (with 3 axes)).  ::SDL_HAPTIC_CARTESIAN uses
- *  the first three \c dir parameters.  The cardinal directions would be:
- *   - North:  0,-1, 0
- *   - East:   1, 0, 0
- *   - South:  0, 1, 0
- *   - West:  -1, 0, 0
- *
- *  The Z axis represents the height of the effect if supported, otherwise
- *  it's unused.  In cartesian encoding (1, 2) would be the same as (2, 4), you
- *  can use any multiple you want, only the direction matters.
- *
- *  If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations.
- *  The first two \c dir parameters are used.  The \c dir parameters are as
- *  follows (all values are in hundredths of degrees):
- *   - Degrees from (1, 0) rotated towards (0, 1).
- *   - Degrees towards (0, 0, 1) (device needs at least 3 axes).
- *
- *
- *  Example of force coming from the south with all encodings (force coming
- *  from the south means the user will have to pull the stick to counteract):
- *  \code
- *  SDL_HapticDirection direction;
- *
- *  // Cartesian directions
- *  direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding.
- *  direction.dir[0] = 0; // X position
- *  direction.dir[1] = 1; // Y position
- *  // Assuming the device has 2 axes, we don't need to specify third parameter.
- *
- *  // Polar directions
- *  direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding.
- *  direction.dir[0] = 18000; // Polar only uses first parameter
- *
- *  // Spherical coordinates
- *  direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding
- *  direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters.
- *  \endcode
- *
- *  \sa SDL_HAPTIC_POLAR
- *  \sa SDL_HAPTIC_CARTESIAN
- *  \sa SDL_HAPTIC_SPHERICAL
- *  \sa SDL_HapticEffect
- *  \sa SDL_HapticNumAxes
- */
-typedef struct SDL_HapticDirection
-{
-    Uint8 type;         /**< The type of encoding. */
-    Sint32 dir[3];      /**< The encoded direction. */
-} SDL_HapticDirection;
-
-
-/**
- *  \brief A structure containing a template for a Constant effect.
- *
- *  This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect.
- *
- *  A constant effect applies a constant force in the specified direction
- *  to the joystick.
- *
- *  \sa SDL_HAPTIC_CONSTANT
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticConstant
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_CONSTANT */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Constant */
-    Sint16 level;           /**< Strength of the constant effect. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length;     /**< Duration of the fade. */
-    Uint16 fade_level;      /**< Level at the end of the fade. */
-} SDL_HapticConstant;
-
-/**
- *  \brief A structure containing a template for a Periodic effect.
- *
- *  The struct handles the following effects:
- *   - ::SDL_HAPTIC_SINE
- *   - ::SDL_HAPTIC_LEFTRIGHT
- *   - ::SDL_HAPTIC_TRIANGLE
- *   - ::SDL_HAPTIC_SAWTOOTHUP
- *   - ::SDL_HAPTIC_SAWTOOTHDOWN
- *
- *  A periodic effect consists in a wave-shaped effect that repeats itself
- *  over time.  The type determines the shape of the wave and the parameters
- *  determine the dimensions of the wave.
- *
- *  Phase is given by hundredth of a degree meaning that giving the phase a value
- *  of 9000 will displace it 25% of its period.  Here are sample values:
- *   -     0: No phase displacement.
- *   -  9000: Displaced 25% of its period.
- *   - 18000: Displaced 50% of its period.
- *   - 27000: Displaced 75% of its period.
- *   - 36000: Displaced 100% of its period, same as 0, but 0 is preferred.
- *
- *  Examples:
- *  \verbatim
-    SDL_HAPTIC_SINE
-      __      __      __      __
-     /  \    /  \    /  \    /
-    /    \__/    \__/    \__/
-
-    SDL_HAPTIC_SQUARE
-     __    __    __    __    __
-    |  |  |  |  |  |  |  |  |  |
-    |  |__|  |__|  |__|  |__|  |
-
-    SDL_HAPTIC_TRIANGLE
-      /\    /\    /\    /\    /\
-     /  \  /  \  /  \  /  \  /
-    /    \/    \/    \/    \/
-
-    SDL_HAPTIC_SAWTOOTHUP
-      /|  /|  /|  /|  /|  /|  /|
-     / | / | / | / | / | / | / |
-    /  |/  |/  |/  |/  |/  |/  |
-
-    SDL_HAPTIC_SAWTOOTHDOWN
-    \  |\  |\  |\  |\  |\  |\  |
-     \ | \ | \ | \ | \ | \ | \ |
-      \|  \|  \|  \|  \|  \|  \|
-    \endverbatim
- *
- *  \sa SDL_HAPTIC_SINE
- *  \sa SDL_HAPTIC_LEFTRIGHT
- *  \sa SDL_HAPTIC_TRIANGLE
- *  \sa SDL_HAPTIC_SAWTOOTHUP
- *  \sa SDL_HAPTIC_SAWTOOTHDOWN
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticPeriodic
-{
-    /* Header */
-    Uint16 type;        /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT,
-                             ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or
-                             ::SDL_HAPTIC_SAWTOOTHDOWN */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;      /**< Duration of the effect. */
-    Uint16 delay;       /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;      /**< Button that triggers the effect. */
-    Uint16 interval;    /**< How soon it can be triggered again after button. */
-
-    /* Periodic */
-    Uint16 period;      /**< Period of the wave. */
-    Sint16 magnitude;   /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */
-    Sint16 offset;      /**< Mean value of the wave. */
-    Uint16 phase;       /**< Positive phase shift given by hundredth of a degree. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length; /**< Duration of the fade. */
-    Uint16 fade_level;  /**< Level at the end of the fade. */
-} SDL_HapticPeriodic;
-
-/**
- *  \brief A structure containing a template for a Condition effect.
- *
- *  The struct handles the following effects:
- *   - ::SDL_HAPTIC_SPRING: Effect based on axes position.
- *   - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity.
- *   - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration.
- *   - ::SDL_HAPTIC_FRICTION: Effect based on axes movement.
- *
- *  Direction is handled by condition internals instead of a direction member.
- *  The condition effect specific members have three parameters.  The first
- *  refers to the X axis, the second refers to the Y axis and the third
- *  refers to the Z axis.  The right terms refer to the positive side of the
- *  axis and the left terms refer to the negative side of the axis.  Please
- *  refer to the ::SDL_HapticDirection diagram for which side is positive and
- *  which is negative.
- *
- *  \sa SDL_HapticDirection
- *  \sa SDL_HAPTIC_SPRING
- *  \sa SDL_HAPTIC_DAMPER
- *  \sa SDL_HAPTIC_INERTIA
- *  \sa SDL_HAPTIC_FRICTION
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticCondition
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER,
-                                 ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */
-    SDL_HapticDirection direction;  /**< Direction of the effect - Not used ATM. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Condition */
-    Uint16 right_sat[3];    /**< Level when joystick is to the positive side; max 0xFFFF. */
-    Uint16 left_sat[3];     /**< Level when joystick is to the negative side; max 0xFFFF. */
-    Sint16 right_coeff[3];  /**< How fast to increase the force towards the positive side. */
-    Sint16 left_coeff[3];   /**< How fast to increase the force towards the negative side. */
-    Uint16 deadband[3];     /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */
-    Sint16 center[3];       /**< Position of the dead zone. */
-} SDL_HapticCondition;
-
-/**
- *  \brief A structure containing a template for a Ramp effect.
- *
- *  This struct is exclusively for the ::SDL_HAPTIC_RAMP effect.
- *
- *  The ramp effect starts at start strength and ends at end strength.
- *  It augments in linear fashion.  If you use attack and fade with a ramp
- *  the effects get added to the ramp effect making the effect become
- *  quadratic instead of linear.
- *
- *  \sa SDL_HAPTIC_RAMP
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticRamp
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_RAMP */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Ramp */
-    Sint16 start;           /**< Beginning strength level. */
-    Sint16 end;             /**< Ending strength level. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length;     /**< Duration of the fade. */
-    Uint16 fade_level;      /**< Level at the end of the fade. */
-} SDL_HapticRamp;
-
-/**
- * \brief A structure containing a template for a Left/Right effect.
- *
- * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect.
- *
- * The Left/Right effect is used to explicitly control the large and small
- * motors, commonly found in modern game controllers. The small (right) motor
- * is high frequency, and the large (left) motor is low frequency.
- *
- * \sa SDL_HAPTIC_LEFTRIGHT
- * \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticLeftRight
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_LEFTRIGHT */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect in milliseconds. */
-
-    /* Rumble */
-    Uint16 large_magnitude; /**< Control of the large controller motor. */
-    Uint16 small_magnitude; /**< Control of the small controller motor. */
-} SDL_HapticLeftRight;
-
-/**
- *  \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect.
- *
- *  This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect.
- *
- *  A custom force feedback effect is much like a periodic effect, where the
- *  application can define its exact shape.  You will have to allocate the
- *  data yourself.  Data should consist of channels * samples Uint16 samples.
- *
- *  If channels is one, the effect is rotated using the defined direction.
- *  Otherwise it uses the samples in data for the different axes.
- *
- *  \sa SDL_HAPTIC_CUSTOM
- *  \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticCustom
-{
-    /* Header */
-    Uint16 type;            /**< ::SDL_HAPTIC_CUSTOM */
-    SDL_HapticDirection direction;  /**< Direction of the effect. */
-
-    /* Replay */
-    Uint32 length;          /**< Duration of the effect. */
-    Uint16 delay;           /**< Delay before starting the effect. */
-
-    /* Trigger */
-    Uint16 button;          /**< Button that triggers the effect. */
-    Uint16 interval;        /**< How soon it can be triggered again after button. */
-
-    /* Custom */
-    Uint8 channels;         /**< Axes to use, minimum of one. */
-    Uint16 period;          /**< Sample periods. */
-    Uint16 samples;         /**< Amount of samples. */
-    Uint16 *data;           /**< Should contain channels*samples items. */
-
-    /* Envelope */
-    Uint16 attack_length;   /**< Duration of the attack. */
-    Uint16 attack_level;    /**< Level at the start of the attack. */
-    Uint16 fade_length;     /**< Duration of the fade. */
-    Uint16 fade_level;      /**< Level at the end of the fade. */
-} SDL_HapticCustom;
-
-/**
- *  \brief The generic template for any haptic effect.
- *
- *  All values max at 32767 (0x7FFF).  Signed values also can be negative.
- *  Time values unless specified otherwise are in milliseconds.
- *
- *  You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767
- *  value.  Neither delay, interval, attack_length nor fade_length support
- *  ::SDL_HAPTIC_INFINITY.  Fade will also not be used since effect never ends.
- *
- *  Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of
- *  ::SDL_HAPTIC_INFINITY.
- *
- *  Button triggers may not be supported on all devices, it is advised to not
- *  use them if possible.  Buttons start at index 1 instead of index 0 like
- *  the joystick.
- *
- *  If both attack_length and fade_level are 0, the envelope is not used,
- *  otherwise both values are used.
- *
- *  Common parts:
- *  \code
- *  // Replay - All effects have this
- *  Uint32 length;        // Duration of effect (ms).
- *  Uint16 delay;         // Delay before starting effect.
- *
- *  // Trigger - All effects have this
- *  Uint16 button;        // Button that triggers effect.
- *  Uint16 interval;      // How soon before effect can be triggered again.
- *
- *  // Envelope - All effects except condition effects have this
- *  Uint16 attack_length; // Duration of the attack (ms).
- *  Uint16 attack_level;  // Level at the start of the attack.
- *  Uint16 fade_length;   // Duration of the fade out (ms).
- *  Uint16 fade_level;    // Level at the end of the fade.
- *  \endcode
- *
- *
- *  Here we have an example of a constant effect evolution in time:
- *  \verbatim
-    Strength
-    ^
-    |
-    |    effect level -->  _________________
-    |                     /                 \
-    |                    /                   \
-    |                   /                     \
-    |                  /                       \
-    | attack_level --> |                        \
-    |                  |                        |  <---  fade_level
-    |
-    +--------------------------------------------------> Time
-                       [--]                 [---]
-                       attack_length        fade_length
-
-    [------------------][-----------------------]
-    delay               length
-    \endverbatim
- *
- *  Note either the attack_level or the fade_level may be above the actual
- *  effect level.
- *
- *  \sa SDL_HapticConstant
- *  \sa SDL_HapticPeriodic
- *  \sa SDL_HapticCondition
- *  \sa SDL_HapticRamp
- *  \sa SDL_HapticLeftRight
- *  \sa SDL_HapticCustom
- */
-typedef union SDL_HapticEffect
-{
-    /* Common for all force feedback effects */
-    Uint16 type;                    /**< Effect type. */
-    SDL_HapticConstant constant;    /**< Constant effect. */
-    SDL_HapticPeriodic periodic;    /**< Periodic effect. */
-    SDL_HapticCondition condition;  /**< Condition effect. */
-    SDL_HapticRamp ramp;            /**< Ramp effect. */
-    SDL_HapticLeftRight leftright;  /**< Left/Right effect. */
-    SDL_HapticCustom custom;        /**< Custom effect. */
-} SDL_HapticEffect;
-
-
-/* Function prototypes */
-/**
- *  \brief Count the number of haptic devices attached to the system.
- *
- *  \return Number of haptic devices detected on the system.
- */
-extern DECLSPEC int SDLCALL SDL_NumHaptics(void);
-
-/**
- *  \brief Get the implementation dependent name of a haptic device.
- *
- *  This can be called before any joysticks are opened.
- *  If no name can be found, this function returns NULL.
- *
- *  \param device_index Index of the device to get its name.
- *  \return Name of the device or NULL on error.
- *
- *  \sa SDL_NumHaptics
- */
-extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);
-
-/**
- *  \brief Opens a haptic device for use.
- *
- *  The index passed as an argument refers to the N'th haptic device on this
- *  system.
- *
- *  When opening a haptic device, its gain will be set to maximum and
- *  autocenter will be disabled.  To modify these values use
- *  SDL_HapticSetGain() and SDL_HapticSetAutocenter().
- *
- *  \param device_index Index of the device to open.
- *  \return Device identifier or NULL on error.
- *
- *  \sa SDL_HapticIndex
- *  \sa SDL_HapticOpenFromMouse
- *  \sa SDL_HapticOpenFromJoystick
- *  \sa SDL_HapticClose
- *  \sa SDL_HapticSetGain
- *  \sa SDL_HapticSetAutocenter
- *  \sa SDL_HapticPause
- *  \sa SDL_HapticStopAll
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index);
-
-/**
- *  \brief Checks if the haptic device at index has been opened.
- *
- *  \param device_index Index to check to see if it has been opened.
- *  \return 1 if it has been opened or 0 if it hasn't.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticIndex
- */
-extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index);
-
-/**
- *  \brief Gets the index of a haptic device.
- *
- *  \param haptic Haptic device to get the index of.
- *  \return The index of the haptic device or -1 on error.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticOpened
- */
-extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic);
-
-/**
- *  \brief Gets whether or not the current mouse has haptic capabilities.
- *
- *  \return SDL_TRUE if the mouse is haptic, SDL_FALSE if it isn't.
- *
- *  \sa SDL_HapticOpenFromMouse
- */
-extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void);
-
-/**
- *  \brief Tries to open a haptic device from the current mouse.
- *
- *  \return The haptic device identifier or NULL on error.
- *
- *  \sa SDL_MouseIsHaptic
- *  \sa SDL_HapticOpen
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void);
-
-/**
- *  \brief Checks to see if a joystick has haptic features.
- *
- *  \param joystick Joystick to test for haptic capabilities.
- *  \return SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't
- *          or -1 if an error occurred.
- *
- *  \sa SDL_HapticOpenFromJoystick
- */
-extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick);
-
-/**
- *  \brief Opens a haptic device for use from a joystick device.
- *
- *  You must still close the haptic device separately.  It will not be closed
- *  with the joystick.
- *
- *  When opening from a joystick you should first close the haptic device before
- *  closing the joystick device.  If not, on some implementations the haptic
- *  device will also get unallocated and you'll be unable to use force feedback
- *  on that device.
- *
- *  \param joystick Joystick to create a haptic device from.
- *  \return A valid haptic device identifier on success or NULL on error.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticClose
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick *
-                                                               joystick);
-
-/**
- *  \brief Closes a haptic device previously opened with SDL_HapticOpen().
- *
- *  \param haptic Haptic device to close.
- */
-extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic);
-
-/**
- *  \brief Returns the number of effects a haptic device can store.
- *
- *  On some platforms this isn't fully supported, and therefore is an
- *  approximation.  Always check to see if your created effect was actually
- *  created and do not rely solely on SDL_HapticNumEffects().
- *
- *  \param haptic The haptic device to query effect max.
- *  \return The number of effects the haptic device can store or
- *          -1 on error.
- *
- *  \sa SDL_HapticNumEffectsPlaying
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic);
-
-/**
- *  \brief Returns the number of effects a haptic device can play at the same
- *         time.
- *
- *  This is not supported on all platforms, but will always return a value.
- *  Added here for the sake of completeness.
- *
- *  \param haptic The haptic device to query maximum playing effects.
- *  \return The number of effects the haptic device can play at the same time
- *          or -1 on error.
- *
- *  \sa SDL_HapticNumEffects
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic);
-
-/**
- *  \brief Gets the haptic device's supported features in bitwise manner.
- *
- *  Example:
- *  \code
- *  if (SDL_HapticQuery(haptic) & SDL_HAPTIC_CONSTANT) {
- *      printf("We have constant haptic effect!\n");
- *  }
- *  \endcode
- *
- *  \param haptic The haptic device to query.
- *  \return Haptic features in bitwise manner (OR'd).
- *
- *  \sa SDL_HapticNumEffects
- *  \sa SDL_HapticEffectSupported
- */
-extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic);
-
-
-/**
- *  \brief Gets the number of haptic axes the device has.
- *
- *  \sa SDL_HapticDirection
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic);
-
-/**
- *  \brief Checks to see if effect is supported by haptic.
- *
- *  \param haptic Haptic device to check on.
- *  \param effect Effect to check to see if it is supported.
- *  \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error.
- *
- *  \sa SDL_HapticQuery
- *  \sa SDL_HapticNewEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic,
-                                                      SDL_HapticEffect *
-                                                      effect);
-
-/**
- *  \brief Creates a new haptic effect on the device.
- *
- *  \param haptic Haptic device to create the effect on.
- *  \param effect Properties of the effect to create.
- *  \return The identifier of the effect on success or -1 on error.
- *
- *  \sa SDL_HapticUpdateEffect
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticDestroyEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic,
-                                                SDL_HapticEffect * effect);
-
-/**
- *  \brief Updates the properties of an effect.
- *
- *  Can be used dynamically, although behavior when dynamically changing
- *  direction may be strange.  Specifically the effect may reupload itself
- *  and start playing from the start.  You cannot change the type either when
- *  running SDL_HapticUpdateEffect().
- *
- *  \param haptic Haptic device that has the effect.
- *  \param effect Identifier of the effect to update.
- *  \param data New effect properties to use.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticNewEffect
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticDestroyEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic,
-                                                   int effect,
-                                                   SDL_HapticEffect * data);
-
-/**
- *  \brief Runs the haptic effect on its associated haptic device.
- *
- *  If iterations are ::SDL_HAPTIC_INFINITY, it'll run the effect over and over
- *  repeating the envelope (attack and fade) every time.  If you only want the
- *  effect to last forever, set ::SDL_HAPTIC_INFINITY in the effect's length
- *  parameter.
- *
- *  \param haptic Haptic device to run the effect on.
- *  \param effect Identifier of the haptic effect to run.
- *  \param iterations Number of iterations to run the effect. Use
- *         ::SDL_HAPTIC_INFINITY for infinity.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticStopEffect
- *  \sa SDL_HapticDestroyEffect
- *  \sa SDL_HapticGetEffectStatus
- */
-extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic,
-                                                int effect,
-                                                Uint32 iterations);
-
-/**
- *  \brief Stops the haptic effect on its associated haptic device.
- *
- *  \param haptic Haptic device to stop the effect on.
- *  \param effect Identifier of the effect to stop.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticDestroyEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic,
-                                                 int effect);
-
-/**
- *  \brief Destroys a haptic effect on the device.
- *
- *  This will stop the effect if it's running.  Effects are automatically
- *  destroyed when the device is closed.
- *
- *  \param haptic Device to destroy the effect on.
- *  \param effect Identifier of the effect to destroy.
- *
- *  \sa SDL_HapticNewEffect
- */
-extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic,
-                                                     int effect);
-
-/**
- *  \brief Gets the status of the current effect on the haptic device.
- *
- *  Device must support the ::SDL_HAPTIC_STATUS feature.
- *
- *  \param haptic Haptic device to query the effect status on.
- *  \param effect Identifier of the effect to query its status.
- *  \return 0 if it isn't playing, 1 if it is playing or -1 on error.
- *
- *  \sa SDL_HapticRunEffect
- *  \sa SDL_HapticStopEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic,
-                                                      int effect);
-
-/**
- *  \brief Sets the global gain of the device.
- *
- *  Device must support the ::SDL_HAPTIC_GAIN feature.
- *
- *  The user may specify the maximum gain by setting the environment variable
- *  SDL_HAPTIC_GAIN_MAX which should be between 0 and 100.  All calls to
- *  SDL_HapticSetGain() will scale linearly using SDL_HAPTIC_GAIN_MAX as the
- *  maximum.
- *
- *  \param haptic Haptic device to set the gain on.
- *  \param gain Value to set the gain to, should be between 0 and 100.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain);
-
-/**
- *  \brief Sets the global autocenter of the device.
- *
- *  Autocenter should be between 0 and 100.  Setting it to 0 will disable
- *  autocentering.
- *
- *  Device must support the ::SDL_HAPTIC_AUTOCENTER feature.
- *
- *  \param haptic Haptic device to set autocentering on.
- *  \param autocenter Value to set autocenter to, 0 disables autocentering.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic,
-                                                    int autocenter);
-
-/**
- *  \brief Pauses a haptic device.
- *
- *  Device must support the ::SDL_HAPTIC_PAUSE feature.  Call
- *  SDL_HapticUnpause() to resume playback.
- *
- *  Do not modify the effects nor add new ones while the device is paused.
- *  That can cause all sorts of weird errors.
- *
- *  \param haptic Haptic device to pause.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticUnpause
- */
-extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic);
-
-/**
- *  \brief Unpauses a haptic device.
- *
- *  Call to unpause after SDL_HapticPause().
- *
- *  \param haptic Haptic device to unpause.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticPause
- */
-extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic);
-
-/**
- *  \brief Stops all the currently playing effects on a haptic device.
- *
- *  \param haptic Haptic device to stop.
- *  \return 0 on success or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic);
-
-/**
- *  \brief Checks to see if rumble is supported on a haptic device.
- *
- *  \param haptic Haptic device to check to see if it supports rumble.
- *  \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error.
- *
- *  \sa SDL_HapticRumbleInit
- *  \sa SDL_HapticRumblePlay
- *  \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic);
-
-/**
- *  \brief Initializes the haptic device for simple rumble playback.
- *
- *  \param haptic Haptic device to initialize for simple rumble playback.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticOpen
- *  \sa SDL_HapticRumbleSupported
- *  \sa SDL_HapticRumblePlay
- *  \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic);
-
-/**
- *  \brief Runs simple rumble on a haptic device
- *
- *  \param haptic Haptic device to play rumble effect on.
- *  \param strength Strength of the rumble to play as a 0-1 float value.
- *  \param length Length of the rumble to play in milliseconds.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticRumbleSupported
- *  \sa SDL_HapticRumbleInit
- *  \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length );
-
-/**
- *  \brief Stops the simple rumble on a haptic device.
- *
- *  \param haptic Haptic to stop the rumble on.
- *  \return 0 on success or -1 on error.
- *
- *  \sa SDL_HapticRumbleSupported
- *  \sa SDL_HapticRumbleInit
- *  \sa SDL_HapticRumblePlay
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_haptic_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hints.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hints.h
deleted file mode 100644 (file)
index 8fa0dd6..0000000
+++ /dev/null
@@ -1,1266 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_hints.h
- *
- *  Official documentation for SDL configuration variables
- *
- *  This file contains functions to set and get configuration hints,
- *  as well as listing each of them alphabetically.
- *
- *  The convention for naming hints is SDL_HINT_X, where "SDL_X" is
- *  the environment variable that can be used to override the default.
- *
- *  In general these hints are just that - they may or may not be
- *  supported or applicable on any given platform, but they provide
- *  a way for an application or user to give the library a hint as
- *  to how they would like the library to work.
- */
-
-#ifndef SDL_hints_h_
-#define SDL_hints_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief  A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
- *
- *  SDL can try to accelerate the SDL screen surface by using streaming
- *  textures with a 3D rendering engine.  This variable controls whether and
- *  how this is done.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable 3D acceleration
- *    "1"       - Enable 3D acceleration, using the default renderer.
- *    "X"       - Enable 3D acceleration, using X where X is one of the valid rendering drivers.  (e.g. "direct3d", "opengl", etc.)
- *
- *  By default SDL tries to make a best guess for each platform whether
- *  to use acceleration or not.
- */
-#define SDL_HINT_FRAMEBUFFER_ACCELERATION   "SDL_FRAMEBUFFER_ACCELERATION"
-
-/**
- *  \brief  A variable specifying which render driver to use.
- *
- *  If the application doesn't pick a specific renderer to use, this variable
- *  specifies the name of the preferred renderer.  If the preferred renderer
- *  can't be initialized, the normal default renderer is used.
- *
- *  This variable is case insensitive and can be set to the following values:
- *    "direct3d"
- *    "opengl"
- *    "opengles2"
- *    "opengles"
- *    "metal"
- *    "software"
- *
- *  The default varies by platform, but it's the first one in the list that
- *  is available on the current platform.
- */
-#define SDL_HINT_RENDER_DRIVER              "SDL_RENDER_DRIVER"
-
-/**
- *  \brief  A variable controlling whether the OpenGL render driver uses shaders if they are available.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable shaders
- *    "1"       - Enable shaders
- *
- *  By default shaders are used if OpenGL supports them.
- */
-#define SDL_HINT_RENDER_OPENGL_SHADERS      "SDL_RENDER_OPENGL_SHADERS"
-
-/**
- *  \brief  A variable controlling whether the Direct3D device is initialized for thread-safe operations.
- *
- *  This variable can be set to the following values:
- *    "0"       - Thread-safety is not enabled (faster)
- *    "1"       - Thread-safety is enabled
- *
- *  By default the Direct3D device is created with thread-safety disabled.
- */
-#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
-
-/**
- *  \brief  A variable controlling whether to enable Direct3D 11+'s Debug Layer.
- *
- *  This variable does not have any effect on the Direct3D 9 based renderer.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable Debug Layer use
- *    "1"       - Enable Debug Layer use
- *
- *  By default, SDL does not use Direct3D Debug Layer.
- */
-#define SDL_HINT_RENDER_DIRECT3D11_DEBUG    "SDL_RENDER_DIRECT3D11_DEBUG"
-
-/**
- *  \brief  A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
- *
- *  This variable can be set to the following values:
- *    "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen
- *    "1" or "overscan"  - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen
- *
- *  By default letterbox is used
- */
-#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE       "SDL_RENDER_LOGICAL_SIZE_MODE"
-
-/**
- *  \brief  A variable controlling the scaling quality
- *
- *  This variable can be set to the following values:
- *    "0" or "nearest" - Nearest pixel sampling
- *    "1" or "linear"  - Linear filtering (supported by OpenGL and Direct3D)
- *    "2" or "best"    - Currently this is the same as "linear"
- *
- *  By default nearest pixel sampling is used
- */
-#define SDL_HINT_RENDER_SCALE_QUALITY       "SDL_RENDER_SCALE_QUALITY"
-
-/**
- *  \brief  A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable vsync
- *    "1"       - Enable vsync
- *
- *  By default SDL does not sync screen surface updates with vertical refresh.
- */
-#define SDL_HINT_RENDER_VSYNC               "SDL_RENDER_VSYNC"
-
-/**
- *  \brief  A variable controlling whether the screensaver is enabled. 
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable screensaver
- *    "1"       - Enable screensaver
- *
- *  By default SDL will disable the screensaver.
- */
-#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER    "SDL_VIDEO_ALLOW_SCREENSAVER"
-
-/**
- *  \brief  A variable controlling whether the X11 VidMode extension should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable XVidMode
- *    "1"       - Enable XVidMode
- *
- *  By default SDL will use XVidMode if it is available.
- */
-#define SDL_HINT_VIDEO_X11_XVIDMODE         "SDL_VIDEO_X11_XVIDMODE"
-
-/**
- *  \brief  A variable controlling whether the X11 Xinerama extension should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable Xinerama
- *    "1"       - Enable Xinerama
- *
- *  By default SDL will use Xinerama if it is available.
- */
-#define SDL_HINT_VIDEO_X11_XINERAMA         "SDL_VIDEO_X11_XINERAMA"
-
-/**
- *  \brief  A variable controlling whether the X11 XRandR extension should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable XRandR
- *    "1"       - Enable XRandR
- *
- *  By default SDL will not use XRandR because of window manager issues.
- */
-#define SDL_HINT_VIDEO_X11_XRANDR           "SDL_VIDEO_X11_XRANDR"
-
-/**
- *  \brief  A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
- *
- *  This variable can be set to the following values:
- *    "0"       - Disable _NET_WM_PING
- *    "1"       - Enable _NET_WM_PING
- *
- *  By default SDL will use _NET_WM_PING, but for applications that know they
- *  will not always be able to respond to ping requests in a timely manner they can
- *  turn it off to avoid the window manager thinking the app is hung.
- *  The hint is checked in CreateWindow.
- */
-#define SDL_HINT_VIDEO_X11_NET_WM_PING      "SDL_VIDEO_X11_NET_WM_PING"
-
-/**
- * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.
- * 
- * This variable can be set to the following values:
- * "0" - Disable _NET_WM_BYPASS_COMPOSITOR
- * "1" - Enable _NET_WM_BYPASS_COMPOSITOR
- * 
- * By default SDL will use _NET_WM_BYPASS_COMPOSITOR
- * 
- */
-#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
-
-/**
- *  \brief  A variable controlling whether the window frame and title bar are interactive when the cursor is hidden 
- *
- *  This variable can be set to the following values:
- *    "0"       - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
- *    "1"       - The window frame is interactive when the cursor is hidden
- *
- *  By default SDL will allow interaction with the window frame when the cursor is hidden
- */
-#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN    "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
-
-/**
- * \brief A variable to specify custom icon resource id from RC file on Windows platform 
- */
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON       "SDL_WINDOWS_INTRESOURCE_ICON"
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
-
-/**
- *  \brief  A variable controlling whether the windows message loop is processed by SDL 
- *
- *  This variable can be set to the following values:
- *    "0"       - The window message loop is not run
- *    "1"       - The window message loop is processed in SDL_PumpEvents()
- *
- *  By default SDL will process the windows message loop
- */
-#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
-
-/**
- *  \brief  A variable controlling whether grabbing input grabs the keyboard
- *
- *  This variable can be set to the following values:
- *    "0"       - Grab will affect only the mouse
- *    "1"       - Grab will affect mouse and keyboard
- *
- *  By default SDL will not grab the keyboard so system shortcuts still work.
- */
-#define SDL_HINT_GRAB_KEYBOARD              "SDL_GRAB_KEYBOARD"
-
-/**
- *  \brief  A variable setting the double click time, in milliseconds.
- */
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME    "SDL_MOUSE_DOUBLE_CLICK_TIME"
-
-/**
- *  \brief  A variable setting the double click radius, in pixels.
- */
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS    "SDL_MOUSE_DOUBLE_CLICK_RADIUS"
-
-/**
- *  \brief  A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode
- */
-#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE    "SDL_MOUSE_NORMAL_SPEED_SCALE"
-
-/**
- *  \brief  A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode
- */
-#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE    "SDL_MOUSE_RELATIVE_SPEED_SCALE"
-
-/**
- *  \brief  A variable controlling whether relative mouse mode is implemented using mouse warping
- *
- *  This variable can be set to the following values:
- *    "0"       - Relative mouse mode uses raw input
- *    "1"       - Relative mouse mode uses mouse warping
- *
- *  By default SDL will use raw input for relative mouse mode
- */
-#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP    "SDL_MOUSE_RELATIVE_MODE_WARP"
-
-/**
- *  \brief Allow mouse click events when clicking to focus an SDL window
- *
- *  This variable can be set to the following values:
- *    "0"       - Ignore mouse clicks that activate a window
- *    "1"       - Generate events for mouse clicks that activate a window
- *
- *  By default SDL will ignore mouse clicks that activate a window
- */
-#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH"
-
-/**
- *  \brief  A variable controlling whether touch events should generate synthetic mouse events
- *
- *  This variable can be set to the following values:
- *    "0"       - Touch events will not generate mouse events
- *    "1"       - Touch events will generate mouse events
- *
- *  By default SDL will generate mouse events for touch events
- */
-#define SDL_HINT_TOUCH_MOUSE_EVENTS    "SDL_TOUCH_MOUSE_EVENTS"
-
-/**
- *  \brief  A variable controlling whether mouse events should generate synthetic touch events
- *
- *  This variable can be set to the following values:
- *    "0"       - Mouse events will not generate touch events (default for desktop platforms)
- *    "1"       - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)
- */
-
-#define SDL_HINT_MOUSE_TOUCH_EVENTS    "SDL_MOUSE_TOUCH_EVENTS"
-
-/**
- *  \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true.
- *
- */
-#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS   "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
-
-/**
- *  \brief  A variable controlling whether the idle timer is disabled on iOS.
- *
- *  When an iOS app does not receive touches for some time, the screen is
- *  dimmed automatically. For games where the accelerometer is the only input
- *  this is problematic. This functionality can be disabled by setting this
- *  hint.
- *
- *  As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
- *  accomplish the same thing on iOS. They should be preferred over this hint.
- *
- *  This variable can be set to the following values:
- *    "0"       - Enable idle timer
- *    "1"       - Disable idle timer
- */
-#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
-
-/**
- *  \brief  A variable controlling which orientations are allowed on iOS/Android.
- *
- *  In some circumstances it is necessary to be able to explicitly control
- *  which UI orientations are allowed.
- *
- *  This variable is a space delimited list of the following values:
- *    "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
- */
-#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
-
-/**
- *  \brief  A variable controlling whether controllers used with the Apple TV
- *  generate UI events.
- *
- * When UI events are generated by controller input, the app will be
- * backgrounded when the Apple TV remote's menu button is pressed, and when the
- * pause or B buttons on gamepads are pressed.
- *
- * More information about properly making use of controllers for the Apple TV
- * can be found here:
- * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/
- *
- *  This variable can be set to the following values:
- *    "0"       - Controller input does not generate UI events (the default).
- *    "1"       - Controller input generates UI events.
- */
-#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS"
-
-/**
- * \brief  A variable controlling whether the Apple TV remote's joystick axes
- *         will automatically match the rotation of the remote.
- *
- *  This variable can be set to the following values:
- *    "0"       - Remote orientation does not affect joystick axes (the default).
- *    "1"       - Joystick axes are based on the orientation of the remote.
- */
-#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
-
-/**
- * \brief  A variable controlling whether the home indicator bar on iPhone X
- *         should be hidden.
- *
- *  This variable can be set to the following values:
- *    "0"       - The indicator bar is not hidden (default for windowed applications)
- *    "1"       - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications)
- *    "2"       - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications)
- */
-#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR"
-
-/**
- *  \brief  A variable controlling whether the Android / iOS built-in
- *  accelerometer should be listed as a joystick device.
- *
- *  This variable can be set to the following values:
- *    "0"       - The accelerometer is not listed as a joystick
- *    "1"       - The accelerometer is available as a 3 axis joystick (the default).
- */
-#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
-
-/**
- *  \brief  A variable controlling whether the Android / tvOS remotes
- *  should be listed as joystick devices, instead of sending keyboard events.
- *
- *  This variable can be set to the following values:
- *    "0"       - Remotes send enter/escape/arrow key events
- *    "1"       - Remotes are available as 2 axis, 2 button joysticks (the default).
- */
-#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK"
-
-/**
- *  \brief  A variable that lets you disable the detection and use of Xinput gamepad devices
- *
- *  The variable can be set to the following values:
- *    "0"       - Disable XInput detection (only uses direct input)
- *    "1"       - Enable XInput detection (the default)
- */
-#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
-
-/**
- *  \brief  A variable that causes SDL to use the old axis and button mapping for XInput devices.
- *
- *  This hint is for backwards compatibility only and will be removed in SDL 2.1
- *
- *  The default value is "0".  This hint must be set before SDL_Init()
- */
-#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
-
-/**
- *  \brief  A variable that lets you manually hint extra gamecontroller db entries.
- *
- *  The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
- *
- *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
- */
-#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
-
-/**
- *  \brief  A variable that lets you provide a file with extra gamecontroller db entries.
- *
- *  The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h
- *
- *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
- */
-#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE"
-
-/**
- *  \brief  A variable containing a list of devices to skip when scanning for game controllers.
- *
- *  The format of the string is a comma separated list of USB VID/PID pairs
- *  in hexadecimal form, e.g.
- *
- *      0xAAAA/0xBBBB,0xCCCC/0xDDDD
- *
- *  The variable can also take the form of @file, in which case the named
- *  file will be loaded and interpreted as the value of the variable.
- */
-#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES"
-
-/**
- *  \brief  If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.
- *
- *  The format of the string is a comma separated list of USB VID/PID pairs
- *  in hexadecimal form, e.g.
- *
- *      0xAAAA/0xBBBB,0xCCCC/0xDDDD
- *
- *  The variable can also take the form of @file, in which case the named
- *  file will be loaded and interpreted as the value of the variable.
- */
-#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
-
-/**
- *  \brief  A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
- *
- *  The variable can be set to the following values:
- *    "0"       - Disable joystick & gamecontroller input events when the
- *                application is in the background.
- *    "1"       - Enable joystick & gamecontroller input events when the
- *                application is in the background.
- *
- *  The default value is "0".  This hint may be set at any time.
- */
-#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI joystick drivers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI drivers are not used
- *    "1"       - HIDAPI drivers are used (the default)
- *
- *  This variable is the default for all drivers, but can be overridden by the hints for specific drivers below.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for PS4 controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4"
-
-/**
- *  \brief  A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver.
- *
- *  This variable can be set to the following values:
- *    "0"       - extended reports are not enabled (the default)
- *    "1"       - extended reports
- *
- *  Extended input reports allow rumble on Bluetooth PS4 controllers, but
- *  break DirectInput handling for applications that don't use SDL.
- *
- *  Once extended reports are enabled, they can not be disabled without
- *  power cycling the controller.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for Steam Controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH"
-
-/**
- *  \brief  A variable controlling whether the HIDAPI driver for XBox controllers should be used.
- *
- *  This variable can be set to the following values:
- *    "0"       - HIDAPI driver is not used
- *    "1"       - HIDAPI driver is used
- *
- *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_XBOX   "SDL_JOYSTICK_HIDAPI_XBOX"
-
-/**
- *  \brief  A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs
- *
- *  The variable can be set to the following values:
- *    "0"       - Do not scan for Steam Controllers
- *    "1"       - Scan for Steam Controllers (the default)
- *
- *  The default value is "1".  This hint must be set before initializing the joystick subsystem.
- */
-#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS"
-
-
-/**
- *  \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
- *      This is a debugging aid for developers and not expected to be used by end users. The default is "1"
- *
- *  This variable can be set to the following values:
- *    "0"       - don't allow topmost
- *    "1"       - allow topmost
- */
-#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
-
-/**
- *  \brief A variable that controls the timer resolution, in milliseconds.
- *
- *  The higher resolution the timer, the more frequently the CPU services
- *  timer interrupts, and the more precise delays are, but this takes up
- *  power and CPU time.  This hint is only used on Windows 7 and earlier.
- *
- *  See this blog post for more information:
- *  http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
- *
- *  If this variable is set to "0", the system timer resolution is not set.
- *
- *  The default value is "1". This hint may be set at any time.
- */
-#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
-
-
-/**
- *  \brief  A variable describing the content orientation on QtWayland-based platforms.
- *
- *  On QtWayland platforms, windows are rotated client-side to allow for custom
- *  transitions. In order to correctly position overlays (e.g. volume bar) and
- *  gestures (e.g. events view, close/minimize gestures), the system needs to
- *  know in which orientation the application is currently drawing its contents.
- *
- *  This does not cause the window to be rotated or resized, the application
- *  needs to take care of drawing the content in the right orientation (the
- *  framebuffer is always in portrait mode).
- *
- *  This variable can be one of the following values:
- *    "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape"
- */
-#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION"
-
-/**
- *  \brief  Flags to set on QtWayland windows to integrate with the native window manager.
- *
- *  On QtWayland platforms, this hint controls the flags to set on the windows.
- *  For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures.
- *
- *  This variable is a space-separated list of the following values (empty = no flags):
- *    "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager"
- */
-#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS"
-
-/**
-*  \brief  A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
-*
-*  Use this hint in case you need to set SDL's threads stack size to other than the default.
-*  This is specially useful if you build SDL against a non glibc libc library (such as musl) which
-*  provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
-*  Support for this hint is currently available only in the pthread, Windows, and PSP backend.
-*
-*  Instead of this hint, in 2.0.9 and later, you can use
-*  SDL_CreateThreadWithStackSize(). This hint only works with the classic
-*  SDL_CreateThread().
-*/
-#define SDL_HINT_THREAD_STACK_SIZE              "SDL_THREAD_STACK_SIZE"
-
-/**
- *  \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
- */
-#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
-
-/**
- *  \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
- *
- *  If present, holding ctrl while left clicking will generate a right click
- *  event when on Mac.
- */
-#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
-
-/**
-*  \brief  A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
-*
-*  SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
-*  can use two different sets of binaries, those compiled by the user from source
-*  or those provided by the Chrome browser. In the later case, these binaries require
-*  that SDL loads a DLL providing the shader compiler.
-*
-*  This variable can be set to the following values:
-*    "d3dcompiler_46.dll" - default, best for Vista or later.
-*    "d3dcompiler_43.dll" - for XP support.
-*    "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
-*
-*/
-#define SDL_HINT_VIDEO_WIN_D3DCOMPILER              "SDL_VIDEO_WIN_D3DCOMPILER"
-
-/**
-*  \brief  A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
-*  
-*  If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
-*  SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly 
-*  created SDL_Window:
-*
-*  1. Its pixel format will be set to the same pixel format as this SDL_Window.  This is
-*  needed for example when sharing an OpenGL context across multiple windows.
-*
-*  2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
-*  OpenGL rendering.
-*
-*  This variable can be set to the following values:
-*    The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
-*    share a pixel format with.
-*/
-#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT    "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
-
-/**
- *  \brief A URL to a WinRT app's privacy policy
- *
- *  All network-enabled WinRT apps must make a privacy policy available to its
- *  users.  On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
- *  be available in the Windows Settings charm, as accessed from within the app.
- *  SDL provides code to add a URL-based link there, which can point to the app's
- *  privacy policy.
- *
- *  To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
- *  before calling any SDL_Init() functions.  The contents of the hint should
- *  be a valid URL.  For example, "http://www.example.com".
- *
- *  The default value is "", which will prevent SDL from adding a privacy policy
- *  link to the Settings charm.  This hint should only be set during app init.
- *
- *  The label text of an app's "Privacy Policy" link may be customized via another
- *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- *  Please note that on Windows Phone, Microsoft does not provide standard UI
- *  for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
- *  will not get used on that platform.  Network-enabled phone apps should display
- *  their privacy policy through some other, in-app means.
- */
-#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
-
-/** \brief Label text for a WinRT app's privacy policy link
- *
- *  Network-enabled WinRT apps must include a privacy policy.  On Windows 8, 8.1, and RT,
- *  Microsoft mandates that this policy be available via the Windows Settings charm.
- *  SDL provides code to add a link there, with its label text being set via the
- *  optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- *  Please note that a privacy policy's contents are not set via this hint.  A separate
- *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
- *  policy.
- *
- *  The contents of this hint should be encoded as a UTF8 string.
- *
- *  The default value is "Privacy Policy".  This hint should only be set during app
- *  initialization, preferably before any calls to SDL_Init().
- *
- *  For additional information on linking to a privacy policy, see the documentation for
- *  SDL_HINT_WINRT_PRIVACY_POLICY_URL.
- */
-#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
-
-/** \brief Allows back-button-press events on Windows Phone to be marked as handled
- *
- *  Windows Phone devices typically feature a Back button.  When pressed,
- *  the OS will emit back-button-press events, which apps are expected to
- *  handle in an appropriate manner.  If apps do not explicitly mark these
- *  events as 'Handled', then the OS will invoke its default behavior for
- *  unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
- *  terminate the app (and attempt to switch to the previous app, or to the
- *  device's home screen).
- *
- *  Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
- *  to mark back-button-press events as Handled, if and when one is sent to
- *  the app.
- *
- *  Internally, Windows Phone sends back button events as parameters to
- *  special back-button-press callback functions.  Apps that need to respond
- *  to back-button-press events are expected to register one or more
- *  callback functions for such, shortly after being launched (during the
- *  app's initialization phase).  After the back button is pressed, the OS
- *  will invoke these callbacks.  If the app's callback(s) do not explicitly
- *  mark the event as handled by the time they return, or if the app never
- *  registers one of these callback, the OS will consider the event
- *  un-handled, and it will apply its default back button behavior (terminate
- *  the app).
- *
- *  SDL registers its own back-button-press callback with the Windows Phone
- *  OS.  This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
- *  and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
- *  it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
- *  If the hint's value is set to "1", the back button event's Handled
- *  property will get set to 'true'.  If the hint's value is set to something
- *  else, or if it is unset, SDL will leave the event's Handled property
- *  alone.  (By default, the OS sets this property to 'false', to note.)
- *
- *  SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
- *  back button is pressed, or can set it in direct-response to a back button
- *  being pressed.
- *
- *  In order to get notified when a back button is pressed, SDL apps should
- *  register a callback function with SDL_AddEventWatch(), and have it listen
- *  for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
- *  (Alternatively, SDL_KEYUP events can be listened-for.  Listening for
- *  either event type is suitable.)  Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
- *  set by such a callback, will be applied to the OS' current
- *  back-button-press event.
- *
- *  More details on back button behavior in Windows Phone apps can be found
- *  at the following page, on Microsoft's developer site:
- *  http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
- */
-#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
-
-/**
- *  \brief  A variable that dictates policy for fullscreen Spaces on Mac OS X.
- *
- *  This hint only applies to Mac OS X.
- *
- *  The variable can be set to the following values:
- *    "0"       - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
- *                SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
- *                button on their titlebars).
- *    "1"       - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
- *                SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
- *                button on their titlebars).
- *
- *  The default value is "1". Spaces are disabled regardless of this hint if
- *   the OS isn't at least Mac OS X Lion (10.7). This hint must be set before
- *   any windows are created.
- */
-#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES    "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
-
-/**
-*  \brief  When set don't force the SDL app to become a foreground process
-*
-*  This hint only applies to Mac OS X.
-*
-*/
-#define SDL_HINT_MAC_BACKGROUND_APP    "SDL_MAC_BACKGROUND_APP"
-
-/**
- * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
- *
- * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- *
- * By default this hint is not set and the APK expansion files are not searched.
- */
-#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
-/**
- * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
- *
- * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- *
- * By default this hint is not set and the APK expansion files are not searched.
- */
-#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
-
-/**
- * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL_TEXTEDITING events are sent, and it is the application's
- *               responsibility to render the text from these events and 
- *               differentiate it somehow from committed text. (default)
- *   "1"       - If supported by the IME then SDL_TEXTEDITING events are not sent, 
- *               and text that is being composed will be rendered in its own UI.
- */
-#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
-
-/**
- * \brief A variable to control whether we trap the Android back button to handle it manually.
- *        This is necessary for the right mouse button to work on some Android devices, or
- *        to be able to trap the back button for use in your code reliably.  If set to true,
- *        the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of 
- *        SDL_SCANCODE_AC_BACK.
- *
- * The variable can be set to the following values:
- *   "0"       - Back button will be handled as usual for system. (default)
- *   "1"       - Back button will be trapped, allowing you to handle the key press
- *               manually.  (This will also let right mouse click work on systems 
- *               where the right mouse button functions as back.)
- *
- * The value of this hint is used at runtime, so it can be changed at any time.
- */
-#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON"
-
-/**
- * \brief A variable to control whether the event loop will block itself when the app is paused.
- *
- * The variable can be set to the following values:
- *   "0"       - Non blocking.
- *   "1"       - Blocking. (default)
- *
- * The value should be set before SDL is initialized.
- */
-#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE"
-
- /**
- * \brief A variable to control whether the return key on the soft keyboard
- *        should hide the soft keyboard on Android and iOS.
- *
- * The variable can be set to the following values:
- *   "0"       - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)
- *   "1"       - The return key will hide the keyboard.
- *
- * The value of this hint is used at runtime, so it can be changed at any time.
- */
-#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME"
-
-/**
- *  \brief override the binding element for keyboard inputs for Emscripten builds
- *
- * This hint only applies to the emscripten platform
- *
- * The variable can be one of
- *    "#window"      - The javascript window object (this is the default)
- *    "#document"    - The javascript document object
- *    "#screen"      - the javascript window.screen object
- *    "#canvas"      - the WebGL canvas element
- *    any other string without a leading # sign applies to the element on the page with that ID.
- */
-#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT   "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
-
-/**
- *  \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
- *
- * This hint only applies to Unix-like platforms.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL will install a SIGINT and SIGTERM handler, and when it
- *               catches a signal, convert it into an SDL_QUIT event.
- *   "1"       - SDL will not install a signal handler at all.
- */
-#define SDL_HINT_NO_SIGNAL_HANDLERS   "SDL_NO_SIGNAL_HANDLERS"
-
-/**
- *  \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL will generate a window-close event when it sees Alt+F4.
- *   "1"       - SDL will only do normal key handling for Alt+F4.
- */
-#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
-
-/**
- *  \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
- *
- * The bitmap header version 4 is required for proper alpha channel support and
- * SDL will use it when required. Should this not be desired, this hint can
- * force the use of the 40 byte header version which is supported everywhere.
- *
- * The variable can be set to the following values:
- *   "0"       - Surfaces with a colorkey or an alpha channel are saved to a
- *               32-bit BMP file with an alpha mask. SDL will use the bitmap
- *               header version 4 and set the alpha mask accordingly.
- *   "1"       - Surfaces with a colorkey or an alpha channel are saved to a
- *               32-bit BMP file without an alpha mask. The alpha channel data
- *               will be in the file, but applications are going to ignore it.
- *
- * The default value is "0".
- */
-#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"
-
-/**
- * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception.
- *        The 0x406D1388 Exception is a trick used to inform Visual Studio of a
- *        thread's name, but it tends to cause problems with other debuggers,
- *        and the .NET runtime. Note that SDL 2.0.6 and later will still use
- *        the (safer) SetThreadDescription API, introduced in the Windows 10
- *        Creators Update, if available.
- *
- * The variable can be set to the following values:
- *   "0"       - SDL will raise the 0x406D1388 Exception to name threads.
- *               This is the default behavior of SDL <= 2.0.4.
- *   "1"       - SDL will not raise this exception, and threads will be unnamed. (default)
- *               This is necessary with .NET languages or debuggers that aren't Visual Studio.
- */
-#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING"
-
-/**
- * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI
- *
- * Also known as Z-order. The variable can take a negative or positive value.
- * The default is 10000.
- */
-#define SDL_HINT_RPI_VIDEO_LAYER           "SDL_RPI_VIDEO_LAYER"
-
-/**
- * \brief Tell the video driver that we only want a double buffer.
- *
- * By default, most lowlevel 2D APIs will use a triple buffer scheme that 
- * wastes no CPU time on waiting for vsync after issuing a flip, but
- * introduces a frame of latency. On the other hand, using a double buffer
- * scheme instead is recommended for cases where low latency is an important
- * factor because we save a whole frame of latency.
- * We do so by waiting for vsync immediately after issuing a flip, usually just
- * after eglSwapBuffers call in the backend's *_SwapWindow function.
- *
- * Since it's driver-specific, it's only supported where possible and
- * implemented. Currently supported the following drivers:
- * - KMSDRM (kmsdrm)
- * - Raspberry Pi (raspberrypi)
- */
-#define SDL_HINT_VIDEO_DOUBLE_BUFFER      "SDL_VIDEO_DOUBLE_BUFFER"
-
-/**
- *  \brief  A variable controlling what driver to use for OpenGL ES contexts.
- *
- *  On some platforms, currently Windows and X11, OpenGL drivers may support
- *  creating contexts with an OpenGL ES profile. By default SDL uses these
- *  profiles, when available, otherwise it attempts to load an OpenGL ES
- *  library, e.g. that provided by the ANGLE project. This variable controls
- *  whether SDL follows this default behaviour or will always load an
- *  OpenGL ES library.
- *
- *  Circumstances where this is useful include
- *  - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,
- *    or emulator, e.g. those from ARM, Imagination or Qualcomm.
- *  - Resolving OpenGL ES function addresses at link time by linking with
- *    the OpenGL ES library instead of querying them at run time with
- *    SDL_GL_GetProcAddress().
- *
- *  Caution: for an application to work with the default behaviour across
- *  different OpenGL drivers it must query the OpenGL ES function
- *  addresses at run time using SDL_GL_GetProcAddress().
- *
- *  This variable is ignored on most platforms because OpenGL ES is native
- *  or not supported.
- *
- *  This variable can be set to the following values:
- *    "0"       - Use ES profile of OpenGL, if available. (Default when not set.)
- *    "1"       - Load OpenGL ES library using the default library names.
- *
- */
-#define SDL_HINT_OPENGL_ES_DRIVER   "SDL_OPENGL_ES_DRIVER"
-
-/**
- *  \brief  A variable controlling speed/quality tradeoff of audio resampling.
- *
- *  If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
- *  to handle audio resampling. There are different resampling modes available
- *  that produce different levels of quality, using more CPU.
- *
- *  If this hint isn't specified to a valid setting, or libsamplerate isn't
- *  available, SDL will use the default, internal resampling algorithm.
- *
- *  Note that this is currently only applicable to resampling audio that is
- *  being written to a device for playback or audio being read from a device
- *  for capture. SDL_AudioCVT always uses the default resampler (although this
- *  might change for SDL 2.1).
- *
- *  This hint is currently only checked at audio subsystem initialization.
- *
- *  This variable can be set to the following values:
- *
- *    "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
- *    "1" or "fast"    - Use fast, slightly higher quality resampling, if available
- *    "2" or "medium"  - Use medium quality resampling, if available
- *    "3" or "best"    - Use high quality resampling, if available
- */
-#define SDL_HINT_AUDIO_RESAMPLING_MODE   "SDL_AUDIO_RESAMPLING_MODE"
-
-/**
- *  \brief  A variable controlling the audio category on iOS and Mac OS X
- *
- *  This variable can be set to the following values:
- *
- *    "ambient"     - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default)
- *    "playback"    - Use the AVAudioSessionCategoryPlayback category
- *
- *  For more information, see Apple's documentation:
- *  https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html
- */
-#define SDL_HINT_AUDIO_CATEGORY   "SDL_AUDIO_CATEGORY"
-
-/**
- *  \brief  A variable controlling whether the 2D render API is compatible or efficient.
- *
- *  This variable can be set to the following values:
- *
- *    "0"     - Don't use batching to make rendering more efficient.
- *    "1"     - Use batching, but might cause problems if app makes its own direct OpenGL calls.
- *
- *  Up to SDL 2.0.9, the render API would draw immediately when requested. Now
- *  it batches up draw requests and sends them all to the GPU only when forced
- *  to (during SDL_RenderPresent, when changing render targets, by updating a
- *  texture that the batch needs, etc). This is significantly more efficient,
- *  but it can cause problems for apps that expect to render on top of the
- *  render API's output. As such, SDL will disable batching if a specific
- *  render backend is requested (since this might indicate that the app is
- *  planning to use the underlying graphics API directly). This hint can
- *  be used to explicitly request batching in this instance. It is a contract
- *  that you will either never use the underlying graphics API directly, or
- *  if you do, you will call SDL_RenderFlush() before you do so any current
- *  batch goes to the GPU before your work begins. Not following this contract
- *  will result in undefined behavior.
- */
-#define SDL_HINT_RENDER_BATCHING  "SDL_RENDER_BATCHING"
-
-
-/**
- *  \brief  A variable controlling whether SDL logs all events pushed onto its internal queue.
- *
- *  This variable can be set to the following values:
- *
- *    "0"     - Don't log any events (default)
- *    "1"     - Log all events except mouse and finger motion, which are pretty spammy.
- *    "2"     - Log all events.
- *
- *  This is generally meant to be used to debug SDL itself, but can be useful
- *  for application developers that need better visibility into what is going
- *  on in the event queue. Logged events are sent through SDL_Log(), which
- *  means by default they appear on stdout on most platforms or maybe
- *  OutputDebugString() on Windows, and can be funneled by the app with
- *  SDL_LogSetOutputFunction(), etc.
- *
- *  This hint can be toggled on and off at runtime, if you only need to log
- *  events for a small subset of program execution.
- */
-#define SDL_HINT_EVENT_LOGGING   "SDL_EVENT_LOGGING"
-
-
-
-/**
- *  \brief  Controls how the size of the RIFF chunk affects the loading of a WAVE file.
- *
- *  The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
- *  file) is not always reliable. In case the size is wrong, it's possible to
- *  just ignore it and step through the chunks until a fixed limit is reached.
- *
- *  Note that files that have trailing data unrelated to the WAVE file or
- *  corrupt files may slow down the loading process without a reliable boundary.
- *  By default, SDL stops after 10000 chunks to prevent wasting time. Use the
- *  environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.
- *
- *  This variable can be set to the following values:
- *
- *    "force"        - Always use the RIFF chunk size as a boundary for the chunk search
- *    "ignorezero"   - Like "force", but a zero size searches up to 4 GiB (default)
- *    "ignore"       - Ignore the RIFF chunk size and always search up to 4 GiB
- *    "maximum"      - Search for chunks until the end of file (not recommended)
- */
-#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE   "SDL_WAVE_RIFF_CHUNK_SIZE"
-
-/**
- *  \brief  Controls how a truncated WAVE file is handled.
- *
- *  A WAVE file is considered truncated if any of the chunks are incomplete or
- *  the data chunk size is not a multiple of the block size. By default, SDL
- *  decodes until the first incomplete block, as most applications seem to do.
- *
- *  This variable can be set to the following values:
- *
- *    "verystrict" - Raise an error if the file is truncated
- *    "strict"     - Like "verystrict", but the size of the RIFF chunk is ignored
- *    "dropframe"  - Decode until the first incomplete sample frame
- *    "dropblock"  - Decode until the first incomplete block (default)
- */
-#define SDL_HINT_WAVE_TRUNCATION   "SDL_WAVE_TRUNCATION"
-
-/**
- *  \brief  Controls how the fact chunk affects the loading of a WAVE file.
- *
- *  The fact chunk stores information about the number of samples of a WAVE
- *  file. The Standards Update from Microsoft notes that this value can be used
- *  to 'determine the length of the data in seconds'. This is especially useful
- *  for compressed formats (for which this is a mandatory chunk) if they produce
- *  multiple sample frames per block and truncating the block is not allowed.
- *  The fact chunk can exactly specify how many sample frames there should be
- *  in this case.
- *
- *  Unfortunately, most application seem to ignore the fact chunk and so SDL
- *  ignores it by default as well.
- *
- *  This variable can be set to the following values:
- *
- *    "truncate"    - Use the number of samples to truncate the wave data if
- *                    the fact chunk is present and valid
- *    "strict"      - Like "truncate", but raise an error if the fact chunk
- *                    is invalid, not present for non-PCM formats, or if the
- *                    data chunk doesn't have that many samples
- *    "ignorezero"  - Like "truncate", but ignore fact chunk if the number of
- *                    samples is zero
- *    "ignore"      - Ignore fact chunk entirely (default)
- */
-#define SDL_HINT_WAVE_FACT_CHUNK   "SDL_WAVE_FACT_CHUNK"
-
-/**
- *  \brief  An enumeration of hint priorities
- */
-typedef enum
-{
-    SDL_HINT_DEFAULT,
-    SDL_HINT_NORMAL,
-    SDL_HINT_OVERRIDE
-} SDL_HintPriority;
-
-
-/**
- *  \brief Set a hint with a specific priority
- *
- *  The priority controls the behavior when setting a hint that already
- *  has a value.  Hints will replace existing hints of their priority and
- *  lower.  Environment variables are considered to have override priority.
- *
- *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
-                                                         const char *value,
-                                                         SDL_HintPriority priority);
-
-/**
- *  \brief Set a hint with normal priority
- *
- *  \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
-                                             const char *value);
-
-/**
- *  \brief Get a hint
- *
- *  \return The string value of a hint variable.
- */
-extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
-
-/**
- *  \brief Get a hint
- *
- *  \return The boolean value of a hint variable.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value);
-
-/**
- * \brief type definition of the hint callback function.
- */
-typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
-
-/**
- *  \brief Add a function to watch a particular hint
- *
- *  \param name The hint to watch
- *  \param callback The function to call when the hint value changes
- *  \param userdata A pointer to pass to the callback function
- */
-extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
-                                                 SDL_HintCallback callback,
-                                                 void *userdata);
-
-/**
- *  \brief Remove a function watching a particular hint
- *
- *  \param name The hint being watched
- *  \param callback The function being called when the hint value changes
- *  \param userdata A pointer being passed to the callback function
- */
-extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
-                                                 SDL_HintCallback callback,
-                                                 void *userdata);
-
-/**
- *  \brief  Clear all hints
- *
- *  This function is called during SDL_Quit() to free stored hints.
- */
-extern DECLSPEC void SDLCALL SDL_ClearHints(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_hints_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_joystick.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_joystick.h
deleted file mode 100644 (file)
index 3a4c5d1..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_joystick.h
- *
- *  Include file for SDL joystick event handling
- *
- * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick
- *   behind a device_index changing as joysticks are plugged and unplugged.
- *
- * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted
- *   then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in.
- *
- * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of
- *   the device (a X360 wired controller for example). This identifier is platform dependent.
- *
- *
- */
-
-#ifndef SDL_joystick_h_
-#define SDL_joystick_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \file SDL_joystick.h
- *
- *  In order to use these functions, SDL_Init() must have been called
- *  with the ::SDL_INIT_JOYSTICK flag.  This causes SDL to scan the system
- *  for joysticks, and load appropriate drivers.
- *
- *  If you would like to receive joystick updates while the application
- *  is in the background, you should set the following hint before calling
- *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
- */
-
-/**
- * The joystick structure used to identify an SDL joystick
- */
-struct _SDL_Joystick;
-typedef struct _SDL_Joystick SDL_Joystick;
-
-/* A structure that encodes the stable unique id for a joystick device */
-typedef struct {
-    Uint8 data[16];
-} SDL_JoystickGUID;
-
-/**
- * This is a unique ID for a joystick for the time it is connected to the system,
- * and is never reused for the lifetime of the application. If the joystick is
- * disconnected and reconnected, it will get a new ID.
- *
- * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
- */
-typedef Sint32 SDL_JoystickID;
-
-typedef enum
-{
-    SDL_JOYSTICK_TYPE_UNKNOWN,
-    SDL_JOYSTICK_TYPE_GAMECONTROLLER,
-    SDL_JOYSTICK_TYPE_WHEEL,
-    SDL_JOYSTICK_TYPE_ARCADE_STICK,
-    SDL_JOYSTICK_TYPE_FLIGHT_STICK,
-    SDL_JOYSTICK_TYPE_DANCE_PAD,
-    SDL_JOYSTICK_TYPE_GUITAR,
-    SDL_JOYSTICK_TYPE_DRUM_KIT,
-    SDL_JOYSTICK_TYPE_ARCADE_PAD,
-    SDL_JOYSTICK_TYPE_THROTTLE
-} SDL_JoystickType;
-
-typedef enum
-{
-    SDL_JOYSTICK_POWER_UNKNOWN = -1,
-    SDL_JOYSTICK_POWER_EMPTY,   /* <= 5% */
-    SDL_JOYSTICK_POWER_LOW,     /* <= 20% */
-    SDL_JOYSTICK_POWER_MEDIUM,  /* <= 70% */
-    SDL_JOYSTICK_POWER_FULL,    /* <= 100% */
-    SDL_JOYSTICK_POWER_WIRED,
-    SDL_JOYSTICK_POWER_MAX
-} SDL_JoystickPowerLevel;
-
-/* Function prototypes */
-
-/**
- * Locking for multi-threaded access to the joystick API
- *
- * If you are using the joystick API or handling events from multiple threads
- * you should use these locking functions to protect access to the joysticks.
- *
- * In particular, you are guaranteed that the joystick list won't change, so
- * the API functions that take a joystick index will be valid, and joystick
- * and game controller events will not be delivered.
- */
-extern DECLSPEC void SDLCALL SDL_LockJoysticks(void);
-extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void);
-
-/**
- *  Count the number of joysticks attached to the system right now
- */
-extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
-
-/**
- *  Get the implementation dependent name of a joystick.
- *  This can be called before any joysticks are opened.
- *  If no name can be found, this function returns NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
-
-/**
- *  Get the player index of a joystick, or -1 if it's not available
- *  This can be called before any joysticks are opened.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index);
-
-/**
- *  Return the GUID for the joystick at this index
- *  This can be called before any joysticks are opened.
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index);
-
-/**
- *  Get the USB vendor ID of a joystick, if available.
- *  This can be called before any joysticks are opened.
- *  If the vendor ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index);
-
-/**
- *  Get the USB product ID of a joystick, if available.
- *  This can be called before any joysticks are opened.
- *  If the product ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);
-
-/**
- *  Get the product version of a joystick, if available.
- *  This can be called before any joysticks are opened.
- *  If the product version isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index);
-
-/**
- *  Get the type of a joystick, if available.
- *  This can be called before any joysticks are opened.
- */
-extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index);
-
-/**
- *  Get the instance ID of a joystick.
- *  This can be called before any joysticks are opened.
- *  If the index is out of range, this function will return -1.
- */
-extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index);
-
-/**
- *  Open a joystick for use.
- *  The index passed as an argument refers to the N'th joystick on the system.
- *  This index is not the value which will identify this joystick in future
- *  joystick events.  The joystick's instance id (::SDL_JoystickID) will be used
- *  there instead.
- *
- *  \return A joystick identifier, or NULL if an error occurred.
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
-
-/**
- * Return the SDL_Joystick associated with an instance id.
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID joyid);
-
-/**
- *  Return the name for this currently opened joystick.
- *  If no name can be found, this function returns NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick * joystick);
-
-/**
- *  Get the player index of an opened joystick, or -1 if it's not available
- *
- *  For XInput controllers this returns the XInput user index.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick * joystick);
-
-/**
- *  Return the GUID for this opened joystick
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick * joystick);
-
-/**
- *  Get the USB vendor ID of an opened joystick, if available.
- *  If the vendor ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick * joystick);
-
-/**
- *  Get the USB product ID of an opened joystick, if available.
- *  If the product ID isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick * joystick);
-
-/**
- *  Get the product version of an opened joystick, if available.
- *  If the product version isn't available this function returns 0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick * joystick);
-
-/**
- *  Get the type of an opened joystick.
- */
-extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick * joystick);
-
-/**
- *  Return a string representation for this guid. pszGUID must point to at least 33 bytes
- *  (32 for the string plus a NULL terminator).
- */
-extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID);
-
-/**
- *  Convert a string into a joystick guid
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);
-
-/**
- *  Returns SDL_TRUE if the joystick has been opened and currently connected, or SDL_FALSE if it has not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick * joystick);
-
-/**
- *  Get the instance ID of an opened joystick or -1 if the joystick is invalid.
- */
-extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick * joystick);
-
-/**
- *  Get the number of general axis controls on a joystick.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick * joystick);
-
-/**
- *  Get the number of trackballs on a joystick.
- *
- *  Joystick trackballs have only relative motion events associated
- *  with them and their state cannot be polled.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick * joystick);
-
-/**
- *  Get the number of POV hats on a joystick.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick * joystick);
-
-/**
- *  Get the number of buttons on a joystick.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick * joystick);
-
-/**
- *  Update the current state of the open joysticks.
- *
- *  This is called automatically by the event loop if any joystick
- *  events are enabled.
- */
-extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
-
-/**
- *  Enable/disable joystick event polling.
- *
- *  If joystick events are disabled, you must call SDL_JoystickUpdate()
- *  yourself and check the state of the joystick when you want joystick
- *  information.
- *
- *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
-
-#define SDL_JOYSTICK_AXIS_MAX   32767
-#define SDL_JOYSTICK_AXIS_MIN   -32768
-/**
- *  Get the current state of an axis control on a joystick.
- *
- *  The state is a value ranging from -32768 to 32767.
- *
- *  The axis indices start at index 0.
- */
-extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick * joystick,
-                                                   int axis);
-
-/**
- *  Get the initial state of an axis control on a joystick.
- *
- *  The state is a value ranging from -32768 to 32767.
- *
- *  The axis indices start at index 0.
- *
- *  \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick * joystick,
-                                                   int axis, Sint16 *state);
-
-/**
- *  \name Hat positions
- */
-/* @{ */
-#define SDL_HAT_CENTERED    0x00
-#define SDL_HAT_UP          0x01
-#define SDL_HAT_RIGHT       0x02
-#define SDL_HAT_DOWN        0x04
-#define SDL_HAT_LEFT        0x08
-#define SDL_HAT_RIGHTUP     (SDL_HAT_RIGHT|SDL_HAT_UP)
-#define SDL_HAT_RIGHTDOWN   (SDL_HAT_RIGHT|SDL_HAT_DOWN)
-#define SDL_HAT_LEFTUP      (SDL_HAT_LEFT|SDL_HAT_UP)
-#define SDL_HAT_LEFTDOWN    (SDL_HAT_LEFT|SDL_HAT_DOWN)
-/* @} */
-
-/**
- *  Get the current state of a POV hat on a joystick.
- *
- *  The hat indices start at index 0.
- *
- *  \return The return value is one of the following positions:
- *           - ::SDL_HAT_CENTERED
- *           - ::SDL_HAT_UP
- *           - ::SDL_HAT_RIGHT
- *           - ::SDL_HAT_DOWN
- *           - ::SDL_HAT_LEFT
- *           - ::SDL_HAT_RIGHTUP
- *           - ::SDL_HAT_RIGHTDOWN
- *           - ::SDL_HAT_LEFTUP
- *           - ::SDL_HAT_LEFTDOWN
- */
-extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick * joystick,
-                                                 int hat);
-
-/**
- *  Get the ball axis change since the last poll.
- *
- *  \return 0, or -1 if you passed it invalid parameters.
- *
- *  The ball indices start at index 0.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick * joystick,
-                                                int ball, int *dx, int *dy);
-
-/**
- *  Get the current state of a button on a joystick.
- *
- *  The button indices start at index 0.
- */
-extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick * joystick,
-                                                    int button);
-
-/**
- *  Trigger a rumble effect
- *  Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling.
- *
- *  \param joystick The joystick to vibrate
- *  \param low_frequency_rumble The intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF
- *  \param high_frequency_rumble The intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF
- *  \param duration_ms The duration of the rumble effect, in milliseconds
- *
- *  \return 0, or -1 if rumble isn't supported on this joystick
- */
-extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick * joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
-
-/**
- *  Close a joystick previously opened with SDL_JoystickOpen().
- */
-extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick * joystick);
-
-/**
- *  Return the battery level of this joystick
- */
-extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick * joystick);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_joystick_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keyboard.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keyboard.h
deleted file mode 100644 (file)
index 4b2a055..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_keyboard.h
- *
- *  Include file for SDL keyboard event handling
- */
-
-#ifndef SDL_keyboard_h_
-#define SDL_keyboard_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_keycode.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief The SDL keysym structure, used in key events.
- *
- *  \note  If you are looking for translated character input, see the ::SDL_TEXTINPUT event.
- */
-typedef struct SDL_Keysym
-{
-    SDL_Scancode scancode;      /**< SDL physical key code - see ::SDL_Scancode for details */
-    SDL_Keycode sym;            /**< SDL virtual key code - see ::SDL_Keycode for details */
-    Uint16 mod;                 /**< current key modifiers */
-    Uint32 unused;
-} SDL_Keysym;
-
-/* Function prototypes */
-
-/**
- *  \brief Get the window which currently has keyboard focus.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
-
-/**
- *  \brief Get a snapshot of the current state of the keyboard.
- *
- *  \param numkeys if non-NULL, receives the length of the returned array.
- *
- *  \return An array of key states. Indexes into this array are obtained by using ::SDL_Scancode values.
- *
- *  \b Example:
- *  \code
- *  const Uint8 *state = SDL_GetKeyboardState(NULL);
- *  if ( state[SDL_SCANCODE_RETURN] )   {
- *      printf("<RETURN> is pressed.\n");
- *  }
- *  \endcode
- */
-extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys);
-
-/**
- *  \brief Get the current key modifier state for the keyboard.
- */
-extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
-
-/**
- *  \brief Set the current key modifier state for the keyboard.
- *
- *  \note This does not change the keyboard state, only the key modifier flags.
- */
-extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
-
-/**
- *  \brief Get the key code corresponding to the given scancode according
- *         to the current keyboard layout.
- *
- *  See ::SDL_Keycode for details.
- *
- *  \sa SDL_GetKeyName()
- */
-extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode);
-
-/**
- *  \brief Get the scancode corresponding to the given key code according to the
- *         current keyboard layout.
- *
- *  See ::SDL_Scancode for details.
- *
- *  \sa SDL_GetScancodeName()
- */
-extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key);
-
-/**
- *  \brief Get a human-readable name for a scancode.
- *
- *  \return A pointer to the name for the scancode.
- *          If the scancode doesn't have a name, this function returns
- *          an empty string ("").
- *
- *  \sa SDL_Scancode
- */
-extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);
-
-/**
- *  \brief Get a scancode from a human-readable name
- *
- *  \return scancode, or SDL_SCANCODE_UNKNOWN if the name wasn't recognized
- *
- *  \sa SDL_Scancode
- */
-extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);
-
-/**
- *  \brief Get a human-readable name for a key.
- *
- *  \return A pointer to a UTF-8 string that stays valid at least until the next
- *          call to this function. If you need it around any longer, you must
- *          copy it.  If the key doesn't have a name, this function returns an
- *          empty string ("").
- *
- *  \sa SDL_Keycode
- */
-extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key);
-
-/**
- *  \brief Get a key code from a human-readable name
- *
- *  \return key code, or SDLK_UNKNOWN if the name wasn't recognized
- *
- *  \sa SDL_Keycode
- */
-extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
-
-/**
- *  \brief Start accepting Unicode text input events.
- *         This function will show the on-screen keyboard if supported.
- *
- *  \sa SDL_StopTextInput()
- *  \sa SDL_SetTextInputRect()
- *  \sa SDL_HasScreenKeyboardSupport()
- */
-extern DECLSPEC void SDLCALL SDL_StartTextInput(void);
-
-/**
- *  \brief Return whether or not Unicode text input events are enabled.
- *
- *  \sa SDL_StartTextInput()
- *  \sa SDL_StopTextInput()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void);
-
-/**
- *  \brief Stop receiving any text input events.
- *         This function will hide the on-screen keyboard if supported.
- *
- *  \sa SDL_StartTextInput()
- *  \sa SDL_HasScreenKeyboardSupport()
- */
-extern DECLSPEC void SDLCALL SDL_StopTextInput(void);
-
-/**
- *  \brief Set the rectangle used to type Unicode text inputs.
- *         This is used as a hint for IME and on-screen keyboard placement.
- *
- *  \sa SDL_StartTextInput()
- */
-extern DECLSPEC void SDLCALL SDL_SetTextInputRect(SDL_Rect *rect);
-
-/**
- *  \brief Returns whether the platform has some screen keyboard support.
- *
- *  \return SDL_TRUE if some keyboard support is available else SDL_FALSE.
- *
- *  \note Not all screen keyboard functions are supported on all platforms.
- *
- *  \sa SDL_IsScreenKeyboardShown()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void);
-
-/**
- *  \brief Returns whether the screen keyboard is shown for given window.
- *
- *  \param window The window for which screen keyboard should be queried.
- *
- *  \return SDL_TRUE if screen keyboard is shown else SDL_FALSE.
- *
- *  \sa SDL_HasScreenKeyboardSupport()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_keyboard_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keycode.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keycode.h
deleted file mode 100644 (file)
index 3bceb41..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_keycode.h
- *
- *  Defines constants which identify keyboard keys and modifiers.
- */
-
-#ifndef SDL_keycode_h_
-#define SDL_keycode_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_scancode.h"
-
-/**
- *  \brief The SDL virtual key representation.
- *
- *  Values of this type are used to represent keyboard keys using the current
- *  layout of the keyboard.  These values include Unicode values representing
- *  the unmodified character that would be generated by pressing the key, or
- *  an SDLK_* constant for those keys that do not generate characters.
- *
- *  A special exception is the number keys at the top of the keyboard which
- *  always map to SDLK_0...SDLK_9, regardless of layout.
- */
-typedef Sint32 SDL_Keycode;
-
-#define SDLK_SCANCODE_MASK (1<<30)
-#define SDL_SCANCODE_TO_KEYCODE(X)  (X | SDLK_SCANCODE_MASK)
-
-enum
-{
-    SDLK_UNKNOWN = 0,
-
-    SDLK_RETURN = '\r',
-    SDLK_ESCAPE = '\033',
-    SDLK_BACKSPACE = '\b',
-    SDLK_TAB = '\t',
-    SDLK_SPACE = ' ',
-    SDLK_EXCLAIM = '!',
-    SDLK_QUOTEDBL = '"',
-    SDLK_HASH = '#',
-    SDLK_PERCENT = '%',
-    SDLK_DOLLAR = '$',
-    SDLK_AMPERSAND = '&',
-    SDLK_QUOTE = '\'',
-    SDLK_LEFTPAREN = '(',
-    SDLK_RIGHTPAREN = ')',
-    SDLK_ASTERISK = '*',
-    SDLK_PLUS = '+',
-    SDLK_COMMA = ',',
-    SDLK_MINUS = '-',
-    SDLK_PERIOD = '.',
-    SDLK_SLASH = '/',
-    SDLK_0 = '0',
-    SDLK_1 = '1',
-    SDLK_2 = '2',
-    SDLK_3 = '3',
-    SDLK_4 = '4',
-    SDLK_5 = '5',
-    SDLK_6 = '6',
-    SDLK_7 = '7',
-    SDLK_8 = '8',
-    SDLK_9 = '9',
-    SDLK_COLON = ':',
-    SDLK_SEMICOLON = ';',
-    SDLK_LESS = '<',
-    SDLK_EQUALS = '=',
-    SDLK_GREATER = '>',
-    SDLK_QUESTION = '?',
-    SDLK_AT = '@',
-    /*
-       Skip uppercase letters
-     */
-    SDLK_LEFTBRACKET = '[',
-    SDLK_BACKSLASH = '\\',
-    SDLK_RIGHTBRACKET = ']',
-    SDLK_CARET = '^',
-    SDLK_UNDERSCORE = '_',
-    SDLK_BACKQUOTE = '`',
-    SDLK_a = 'a',
-    SDLK_b = 'b',
-    SDLK_c = 'c',
-    SDLK_d = 'd',
-    SDLK_e = 'e',
-    SDLK_f = 'f',
-    SDLK_g = 'g',
-    SDLK_h = 'h',
-    SDLK_i = 'i',
-    SDLK_j = 'j',
-    SDLK_k = 'k',
-    SDLK_l = 'l',
-    SDLK_m = 'm',
-    SDLK_n = 'n',
-    SDLK_o = 'o',
-    SDLK_p = 'p',
-    SDLK_q = 'q',
-    SDLK_r = 'r',
-    SDLK_s = 's',
-    SDLK_t = 't',
-    SDLK_u = 'u',
-    SDLK_v = 'v',
-    SDLK_w = 'w',
-    SDLK_x = 'x',
-    SDLK_y = 'y',
-    SDLK_z = 'z',
-
-    SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK),
-
-    SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1),
-    SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2),
-    SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3),
-    SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4),
-    SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5),
-    SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6),
-    SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7),
-    SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8),
-    SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9),
-    SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10),
-    SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11),
-    SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12),
-
-    SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN),
-    SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK),
-    SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE),
-    SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT),
-    SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME),
-    SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP),
-    SDLK_DELETE = '\177',
-    SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END),
-    SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN),
-    SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT),
-    SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT),
-    SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN),
-    SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP),
-
-    SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR),
-    SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE),
-    SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY),
-    SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS),
-    SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS),
-    SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER),
-    SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1),
-    SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2),
-    SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3),
-    SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4),
-    SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5),
-    SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6),
-    SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7),
-    SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8),
-    SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9),
-    SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0),
-    SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD),
-
-    SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION),
-    SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER),
-    SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS),
-    SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13),
-    SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14),
-    SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15),
-    SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16),
-    SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17),
-    SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18),
-    SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19),
-    SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20),
-    SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21),
-    SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22),
-    SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23),
-    SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24),
-    SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE),
-    SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP),
-    SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU),
-    SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT),
-    SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP),
-    SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN),
-    SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO),
-    SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT),
-    SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY),
-    SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE),
-    SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND),
-    SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE),
-    SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP),
-    SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN),
-    SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA),
-    SDLK_KP_EQUALSAS400 =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400),
-
-    SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE),
-    SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ),
-    SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL),
-    SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR),
-    SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR),
-    SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2),
-    SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR),
-    SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT),
-    SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER),
-    SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN),
-    SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL),
-    SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL),
-
-    SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00),
-    SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000),
-    SDLK_THOUSANDSSEPARATOR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR),
-    SDLK_DECIMALSEPARATOR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR),
-    SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT),
-    SDLK_CURRENCYSUBUNIT =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT),
-    SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN),
-    SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN),
-    SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE),
-    SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE),
-    SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB),
-    SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE),
-    SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A),
-    SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B),
-    SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C),
-    SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D),
-    SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E),
-    SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F),
-    SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR),
-    SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER),
-    SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT),
-    SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS),
-    SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER),
-    SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND),
-    SDLK_KP_DBLAMPERSAND =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND),
-    SDLK_KP_VERTICALBAR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR),
-    SDLK_KP_DBLVERTICALBAR =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR),
-    SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON),
-    SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH),
-    SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE),
-    SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT),
-    SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM),
-    SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE),
-    SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL),
-    SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR),
-    SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD),
-    SDLK_KP_MEMSUBTRACT =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT),
-    SDLK_KP_MEMMULTIPLY =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY),
-    SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE),
-    SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS),
-    SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR),
-    SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY),
-    SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY),
-    SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL),
-    SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL),
-    SDLK_KP_HEXADECIMAL =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL),
-
-    SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL),
-    SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT),
-    SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT),
-    SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI),
-    SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL),
-    SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT),
-    SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT),
-    SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI),
-
-    SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE),
-
-    SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT),
-    SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV),
-    SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP),
-    SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY),
-    SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE),
-    SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT),
-    SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW),
-    SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL),
-    SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR),
-    SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER),
-    SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH),
-    SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME),
-    SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK),
-    SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD),
-    SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP),
-    SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH),
-    SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS),
-
-    SDLK_BRIGHTNESSDOWN =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN),
-    SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP),
-    SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH),
-    SDLK_KBDILLUMTOGGLE =
-        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE),
-    SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN),
-    SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP),
-    SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT),
-    SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP),
-    SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1),
-    SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2),
-
-    SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND),
-    SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD)
-};
-
-/**
- * \brief Enumeration of valid key mods (possibly OR'd together).
- */
-typedef enum
-{
-    KMOD_NONE = 0x0000,
-    KMOD_LSHIFT = 0x0001,
-    KMOD_RSHIFT = 0x0002,
-    KMOD_LCTRL = 0x0040,
-    KMOD_RCTRL = 0x0080,
-    KMOD_LALT = 0x0100,
-    KMOD_RALT = 0x0200,
-    KMOD_LGUI = 0x0400,
-    KMOD_RGUI = 0x0800,
-    KMOD_NUM = 0x1000,
-    KMOD_CAPS = 0x2000,
-    KMOD_MODE = 0x4000,
-    KMOD_RESERVED = 0x8000
-} SDL_Keymod;
-
-#define KMOD_CTRL   (KMOD_LCTRL|KMOD_RCTRL)
-#define KMOD_SHIFT  (KMOD_LSHIFT|KMOD_RSHIFT)
-#define KMOD_ALT    (KMOD_LALT|KMOD_RALT)
-#define KMOD_GUI    (KMOD_LGUI|KMOD_RGUI)
-
-#endif /* SDL_keycode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_loadso.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_loadso.h
deleted file mode 100644 (file)
index 793ba53..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_loadso.h
- *
- *  System dependent library loading routines
- *
- *  Some things to keep in mind:
- *  \li These functions only work on C function names.  Other languages may
- *      have name mangling and intrinsic language support that varies from
- *      compiler to compiler.
- *  \li Make sure you declare your function pointers with the same calling
- *      convention as the actual library function.  Your code will crash
- *      mysteriously if you do not do this.
- *  \li Avoid namespace collisions.  If you load a symbol from the library,
- *      it is not defined whether or not it goes into the global symbol
- *      namespace for the application.  If it does and it conflicts with
- *      symbols in your code or other shared libraries, you will not get
- *      the results you expect. :)
- */
-
-#ifndef SDL_loadso_h_
-#define SDL_loadso_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  This function dynamically loads a shared object and returns a pointer
- *  to the object handle (or NULL if there was an error).
- *  The 'sofile' parameter is a system dependent name of the object file.
- */
-extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile);
-
-/**
- *  Given an object handle, this function looks up the address of the
- *  named function in the shared object and returns it.  This address
- *  is no longer valid after calling SDL_UnloadObject().
- */
-extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle,
-                                               const char *name);
-
-/**
- *  Unload a shared object from memory.
- */
-extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_loadso_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_log.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_log.h
deleted file mode 100644 (file)
index 40f768d..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_log.h
- *
- *  Simple log messages with categories and priorities.
- *
- *  By default logs are quiet, but if you're debugging SDL you might want:
- *
- *      SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);
- *
- *  Here's where the messages go on different platforms:
- *      Windows: debug output stream
- *      Android: log output
- *      Others: standard error output (stderr)
- */
-
-#ifndef SDL_log_h_
-#define SDL_log_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- *  \brief The maximum size of a log message
- *
- *  Messages longer than the maximum size will be truncated
- */
-#define SDL_MAX_LOG_MESSAGE 4096
-
-/**
- *  \brief The predefined log categories
- *
- *  By default the application category is enabled at the INFO level,
- *  the assert category is enabled at the WARN level, test is enabled
- *  at the VERBOSE level and all other categories are enabled at the
- *  CRITICAL level.
- */
-enum
-{
-    SDL_LOG_CATEGORY_APPLICATION,
-    SDL_LOG_CATEGORY_ERROR,
-    SDL_LOG_CATEGORY_ASSERT,
-    SDL_LOG_CATEGORY_SYSTEM,
-    SDL_LOG_CATEGORY_AUDIO,
-    SDL_LOG_CATEGORY_VIDEO,
-    SDL_LOG_CATEGORY_RENDER,
-    SDL_LOG_CATEGORY_INPUT,
-    SDL_LOG_CATEGORY_TEST,
-
-    /* Reserved for future SDL library use */
-    SDL_LOG_CATEGORY_RESERVED1,
-    SDL_LOG_CATEGORY_RESERVED2,
-    SDL_LOG_CATEGORY_RESERVED3,
-    SDL_LOG_CATEGORY_RESERVED4,
-    SDL_LOG_CATEGORY_RESERVED5,
-    SDL_LOG_CATEGORY_RESERVED6,
-    SDL_LOG_CATEGORY_RESERVED7,
-    SDL_LOG_CATEGORY_RESERVED8,
-    SDL_LOG_CATEGORY_RESERVED9,
-    SDL_LOG_CATEGORY_RESERVED10,
-
-    /* Beyond this point is reserved for application use, e.g.
-       enum {
-           MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM,
-           MYAPP_CATEGORY_AWESOME2,
-           MYAPP_CATEGORY_AWESOME3,
-           ...
-       };
-     */
-    SDL_LOG_CATEGORY_CUSTOM
-};
-
-/**
- *  \brief The predefined log priorities
- */
-typedef enum
-{
-    SDL_LOG_PRIORITY_VERBOSE = 1,
-    SDL_LOG_PRIORITY_DEBUG,
-    SDL_LOG_PRIORITY_INFO,
-    SDL_LOG_PRIORITY_WARN,
-    SDL_LOG_PRIORITY_ERROR,
-    SDL_LOG_PRIORITY_CRITICAL,
-    SDL_NUM_LOG_PRIORITIES
-} SDL_LogPriority;
-
-
-/**
- *  \brief Set the priority of all log categories
- */
-extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority);
-
-/**
- *  \brief Set the priority of a particular log category
- */
-extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category,
-                                                SDL_LogPriority priority);
-
-/**
- *  \brief Get the priority of a particular log category
- */
-extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category);
-
-/**
- *  \brief Reset all priorities to default.
- *
- *  \note This is called in SDL_Quit().
- */
-extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void);
-
-/**
- *  \brief Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO
- */
-extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_VERBOSE
- */
-extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_DEBUG
- */
-extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_INFO
- */
-extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_WARN
- */
-extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_ERROR
- */
-extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with SDL_LOG_PRIORITY_CRITICAL
- */
-extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- *  \brief Log a message with the specified category and priority.
- */
-extern DECLSPEC void SDLCALL SDL_LogMessage(int category,
-                                            SDL_LogPriority priority,
-                                            SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3);
-
-/**
- *  \brief Log a message with the specified category and priority.
- */
-extern DECLSPEC void SDLCALL SDL_LogMessageV(int category,
-                                             SDL_LogPriority priority,
-                                             const char *fmt, va_list ap);
-
-/**
- *  \brief The prototype for the log output function
- */
-typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message);
-
-/**
- *  \brief Get the current log output function.
- */
-extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata);
-
-/**
- *  \brief This function allows you to replace the default log output
- *         function with one of your own.
- */
-extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_log_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_main.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_main.h
deleted file mode 100644 (file)
index 623f2d0..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_main_h_
-#define SDL_main_h_
-
-#include "SDL_stdinc.h"
-
-/**
- *  \file SDL_main.h
- *
- *  Redefine main() on some platforms so that it is called by SDL.
- */
-
-#ifndef SDL_MAIN_HANDLED
-#if defined(__WIN32__)
-/* On Windows SDL provides WinMain(), which parses the command line and passes
-   the arguments to your main function.
-
-   If you provide your own WinMain(), you may define SDL_MAIN_HANDLED
- */
-#define SDL_MAIN_AVAILABLE
-
-#elif defined(__WINRT__)
-/* On WinRT, SDL provides a main function that initializes CoreApplication,
-   creating an instance of IFrameworkView in the process.
-
-   Please note that #include'ing SDL_main.h is not enough to get a main()
-   function working.  In non-XAML apps, the file,
-   src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled
-   into the app itself.  In XAML apps, the function, SDL_WinRTRunApp must be
-   called, with a pointer to the Direct3D-hosted XAML control passed in.
-*/
-#define SDL_MAIN_NEEDED
-
-#elif defined(__IPHONEOS__)
-/* On iOS SDL provides a main function that creates an application delegate
-   and starts the iOS application run loop.
-
-   If you link with SDL dynamically on iOS, the main function can't be in a
-   shared library, so you need to link with libSDLmain.a, which includes a
-   stub main function that calls into the shared library to start execution.
-
-   See src/video/uikit/SDL_uikitappdelegate.m for more details.
- */
-#define SDL_MAIN_NEEDED
-
-#elif defined(__ANDROID__)
-/* On Android SDL provides a Java class in SDLActivity.java that is the
-   main activity entry point.
-
-   See docs/README-android.md for more details on extending that class.
- */
-#define SDL_MAIN_NEEDED
-
-/* We need to export SDL_main so it can be launched from Java */
-#define SDLMAIN_DECLSPEC    DECLSPEC
-
-#elif defined(__NACL__)
-/* On NACL we use ppapi_simple to set up the application helper code,
-   then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before 
-   starting the user main function.
-   All user code is run in a separate thread by ppapi_simple, thus 
-   allowing for blocking io to take place via nacl_io
-*/
-#define SDL_MAIN_NEEDED
-
-#endif
-#endif /* SDL_MAIN_HANDLED */
-
-#ifndef SDLMAIN_DECLSPEC
-#define SDLMAIN_DECLSPEC
-#endif
-
-/**
- *  \file SDL_main.h
- *
- *  The application's main() function must be called with C linkage,
- *  and should be declared like this:
- *  \code
- *  #ifdef __cplusplus
- *  extern "C"
- *  #endif
- *  int main(int argc, char *argv[])
- *  {
- *  }
- *  \endcode
- */
-
-#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
-#define main    SDL_main
-#endif
-
-#include "begin_code.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  The prototype for the application's main() function
- */
-typedef int (*SDL_main_func)(int argc, char *argv[]);
-extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]);
-
-
-/**
- *  This is called by the real SDL main function to let the rest of the
- *  library know that initialization was done properly.
- *
- *  Calling this yourself without knowing what you're doing can cause
- *  crashes and hard to diagnose problems with your application.
- */
-extern DECLSPEC void SDLCALL SDL_SetMainReady(void);
-
-#ifdef __WIN32__
-
-/**
- *  This can be called to set the application class at startup
- */
-extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, void *hInst);
-extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
-
-#endif /* __WIN32__ */
-
-
-#ifdef __WINRT__
-
-/**
- *  \brief Initializes and launches an SDL/WinRT application.
- *
- *  \param mainFunction The SDL app's C-style main().
- *  \param reserved Reserved for future use; should be NULL
- *  \return 0 on success, -1 on failure.  On failure, use SDL_GetError to retrieve more
- *      information on the failure.
- */
-extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved);
-
-#endif /* __WINRT__ */
-
-#if defined(__IPHONEOS__)
-
-/**
- *  \brief Initializes and launches an SDL application.
- *
- *  \param argc The argc parameter from the application's main() function
- *  \param argv The argv parameter from the application's main() function
- *  \param mainFunction The SDL app's C-style main().
- *  \return the return value from mainFunction
- */
-extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction);
-
-#endif /* __IPHONEOS__ */
-
-
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_main_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_messagebox.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_messagebox.h
deleted file mode 100644 (file)
index e34b554..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_messagebox_h_
-#define SDL_messagebox_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_video.h"      /* For SDL_Window */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief SDL_MessageBox flags. If supported will display warning icon, etc.
- */
-typedef enum
-{
-    SDL_MESSAGEBOX_ERROR        = 0x00000010,   /**< error dialog */
-    SDL_MESSAGEBOX_WARNING      = 0x00000020,   /**< warning dialog */
-    SDL_MESSAGEBOX_INFORMATION  = 0x00000040    /**< informational dialog */
-} SDL_MessageBoxFlags;
-
-/**
- * \brief Flags for SDL_MessageBoxButtonData.
- */
-typedef enum
-{
-    SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001,  /**< Marks the default button when return is hit */
-    SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002   /**< Marks the default button when escape is hit */
-} SDL_MessageBoxButtonFlags;
-
-/**
- *  \brief Individual button data.
- */
-typedef struct
-{
-    Uint32 flags;       /**< ::SDL_MessageBoxButtonFlags */
-    int buttonid;       /**< User defined button id (value returned via SDL_ShowMessageBox) */
-    const char * text;  /**< The UTF-8 button text */
-} SDL_MessageBoxButtonData;
-
-/**
- * \brief RGB value used in a message box color scheme
- */
-typedef struct
-{
-    Uint8 r, g, b;
-} SDL_MessageBoxColor;
-
-typedef enum
-{
-    SDL_MESSAGEBOX_COLOR_BACKGROUND,
-    SDL_MESSAGEBOX_COLOR_TEXT,
-    SDL_MESSAGEBOX_COLOR_BUTTON_BORDER,
-    SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND,
-    SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED,
-    SDL_MESSAGEBOX_COLOR_MAX
-} SDL_MessageBoxColorType;
-
-/**
- * \brief A set of colors to use for message box dialogs
- */
-typedef struct
-{
-    SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];
-} SDL_MessageBoxColorScheme;
-
-/**
- *  \brief MessageBox structure containing title, text, window, etc.
- */
-typedef struct
-{
-    Uint32 flags;                       /**< ::SDL_MessageBoxFlags */
-    SDL_Window *window;                 /**< Parent window, can be NULL */
-    const char *title;                  /**< UTF-8 title */
-    const char *message;                /**< UTF-8 message text */
-
-    int numbuttons;
-    const SDL_MessageBoxButtonData *buttons;
-
-    const SDL_MessageBoxColorScheme *colorScheme;   /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */
-} SDL_MessageBoxData;
-
-/**
- *  \brief Create a modal message box.
- *
- *  \param messageboxdata The SDL_MessageBoxData structure with title, text, etc.
- *  \param buttonid The pointer to which user id of hit button should be copied.
- *
- *  \return -1 on error, otherwise 0 and buttonid contains user id of button
- *          hit or -1 if dialog was closed.
- *
- *  \note This function should be called on the thread that created the parent
- *        window, or on the main thread if the messagebox has no parent.  It will
- *        block execution of that thread until the user clicks a button or
- *        closes the messagebox.
- */
-extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid);
-
-/**
- *  \brief Create a simple modal message box
- *
- *  \param flags    ::SDL_MessageBoxFlags
- *  \param title    UTF-8 title text
- *  \param message  UTF-8 message text
- *  \param window   The parent window, or NULL for no parent
- *
- *  \return 0 on success, -1 on error
- *
- *  \sa SDL_ShowMessageBox
- */
-extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_messagebox_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mouse.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mouse.h
deleted file mode 100644 (file)
index 277559d..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_mouse.h
- *
- *  Include file for SDL mouse event handling.
- */
-
-#ifndef SDL_mouse_h_
-#define SDL_mouse_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct SDL_Cursor SDL_Cursor;   /**< Implementation dependent */
-
-/**
- * \brief Cursor types for SDL_CreateSystemCursor().
- */
-typedef enum
-{
-    SDL_SYSTEM_CURSOR_ARROW,     /**< Arrow */
-    SDL_SYSTEM_CURSOR_IBEAM,     /**< I-beam */
-    SDL_SYSTEM_CURSOR_WAIT,      /**< Wait */
-    SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */
-    SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */
-    SDL_SYSTEM_CURSOR_SIZENWSE,  /**< Double arrow pointing northwest and southeast */
-    SDL_SYSTEM_CURSOR_SIZENESW,  /**< Double arrow pointing northeast and southwest */
-    SDL_SYSTEM_CURSOR_SIZEWE,    /**< Double arrow pointing west and east */
-    SDL_SYSTEM_CURSOR_SIZENS,    /**< Double arrow pointing north and south */
-    SDL_SYSTEM_CURSOR_SIZEALL,   /**< Four pointed arrow pointing north, south, east, and west */
-    SDL_SYSTEM_CURSOR_NO,        /**< Slashed circle or crossbones */
-    SDL_SYSTEM_CURSOR_HAND,      /**< Hand */
-    SDL_NUM_SYSTEM_CURSORS
-} SDL_SystemCursor;
-
-/**
- * \brief Scroll direction types for the Scroll event
- */
-typedef enum
-{
-    SDL_MOUSEWHEEL_NORMAL,    /**< The scroll direction is normal */
-    SDL_MOUSEWHEEL_FLIPPED    /**< The scroll direction is flipped / natural */
-} SDL_MouseWheelDirection;
-
-/* Function prototypes */
-
-/**
- *  \brief Get the window which currently has mouse focus.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void);
-
-/**
- *  \brief Retrieve the current state of the mouse.
- *
- *  The current button state is returned as a button bitmask, which can
- *  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
- *  mouse cursor position relative to the focus window for the currently
- *  selected mouse.  You can pass NULL for either x or y.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y);
-
-/**
- *  \brief Get the current state of the mouse, in relation to the desktop
- *
- *  This works just like SDL_GetMouseState(), but the coordinates will be
- *  reported relative to the top-left of the desktop. This can be useful if
- *  you need to track the mouse outside of a specific window and
- *  SDL_CaptureMouse() doesn't fit your needs. For example, it could be
- *  useful if you need to track the mouse while dragging a window, where
- *  coordinates relative to a window might not be in sync at all times.
- *
- *  \note SDL_GetMouseState() returns the mouse position as SDL understands
- *        it from the last pump of the event queue. This function, however,
- *        queries the OS for the current mouse position, and as such, might
- *        be a slightly less efficient function. Unless you know what you're
- *        doing and have a good reason to use this function, you probably want
- *        SDL_GetMouseState() instead.
- *
- *  \param x Returns the current X coord, relative to the desktop. Can be NULL.
- *  \param y Returns the current Y coord, relative to the desktop. Can be NULL.
- *  \return The current button state as a bitmask, which can be tested using the SDL_BUTTON(X) macros.
- *
- *  \sa SDL_GetMouseState
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y);
-
-/**
- *  \brief Retrieve the relative state of the mouse.
- *
- *  The current button state is returned as a button bitmask, which can
- *  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
- *  mouse deltas since the last call to SDL_GetRelativeMouseState().
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
-
-/**
- *  \brief Moves the mouse to the given position within the window.
- *
- *  \param window The window to move the mouse into, or NULL for the current mouse focus
- *  \param x The x coordinate within the window
- *  \param y The y coordinate within the window
- *
- *  \note This function generates a mouse motion event
- */
-extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
-                                                   int x, int y);
-
-/**
- *  \brief Moves the mouse to the given position in global screen space.
- *
- *  \param x The x coordinate
- *  \param y The y coordinate
- *  \return 0 on success, -1 on error (usually: unsupported by a platform).
- *
- *  \note This function generates a mouse motion event
- */
-extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y);
-
-/**
- *  \brief Set relative mouse mode.
- *
- *  \param enabled Whether or not to enable relative mode
- *
- *  \return 0 on success, or -1 if relative mode is not supported.
- *
- *  While the mouse is in relative mode, the cursor is hidden, and the
- *  driver will try to report continuous motion in the current window.
- *  Only relative motion events will be delivered, the mouse position
- *  will not change.
- *
- *  \note This function will flush any pending mouse motion.
- *
- *  \sa SDL_GetRelativeMouseMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled);
-
-/**
- *  \brief Capture the mouse, to track input outside an SDL window.
- *
- *  \param enabled Whether or not to enable capturing
- *
- *  Capturing enables your app to obtain mouse events globally, instead of
- *  just within your window. Not all video targets support this function.
- *  When capturing is enabled, the current window will get all mouse events,
- *  but unlike relative mode, no change is made to the cursor and it is
- *  not restrained to your window.
- *
- *  This function may also deny mouse input to other windows--both those in
- *  your application and others on the system--so you should use this
- *  function sparingly, and in small bursts. For example, you might want to
- *  track the mouse while the user is dragging something, until the user
- *  releases a mouse button. It is not recommended that you capture the mouse
- *  for long periods of time, such as the entire time your app is running.
- *
- *  While captured, mouse events still report coordinates relative to the
- *  current (foreground) window, but those coordinates may be outside the
- *  bounds of the window (including negative values). Capturing is only
- *  allowed for the foreground window. If the window loses focus while
- *  capturing, the capture will be disabled automatically.
- *
- *  While capturing is enabled, the current window will have the
- *  SDL_WINDOW_MOUSE_CAPTURE flag set.
- *
- *  \return 0 on success, or -1 if not supported.
- */
-extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled);
-
-/**
- *  \brief Query whether relative mouse mode is enabled.
- *
- *  \sa SDL_SetRelativeMouseMode()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
-
-/**
- *  \brief Create a cursor, using the specified bitmap data and
- *         mask (in MSB format).
- *
- *  The cursor width must be a multiple of 8 bits.
- *
- *  The cursor is created in black and white according to the following:
- *  <table>
- *  <tr><td> data </td><td> mask </td><td> resulting pixel on screen </td></tr>
- *  <tr><td>  0   </td><td>  1   </td><td> White </td></tr>
- *  <tr><td>  1   </td><td>  1   </td><td> Black </td></tr>
- *  <tr><td>  0   </td><td>  0   </td><td> Transparent </td></tr>
- *  <tr><td>  1   </td><td>  0   </td><td> Inverted color if possible, black
- *                                         if not. </td></tr>
- *  </table>
- *
- *  \sa SDL_FreeCursor()
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,
-                                                     const Uint8 * mask,
-                                                     int w, int h, int hot_x,
-                                                     int hot_y);
-
-/**
- *  \brief Create a color cursor.
- *
- *  \sa SDL_FreeCursor()
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface,
-                                                          int hot_x,
-                                                          int hot_y);
-
-/**
- *  \brief Create a system cursor.
- *
- *  \sa SDL_FreeCursor()
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id);
-
-/**
- *  \brief Set the active cursor.
- */
-extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor);
-
-/**
- *  \brief Return the active cursor.
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void);
-
-/**
- *  \brief Return the default cursor.
- */
-extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void);
-
-/**
- *  \brief Frees a cursor created with SDL_CreateCursor() or similar functions.
- *
- *  \sa SDL_CreateCursor()
- *  \sa SDL_CreateColorCursor()
- *  \sa SDL_CreateSystemCursor()
- */
-extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);
-
-/**
- *  \brief Toggle whether or not the cursor is shown.
- *
- *  \param toggle 1 to show the cursor, 0 to hide it, -1 to query the current
- *                state.
- *
- *  \return 1 if the cursor is shown, or 0 if the cursor is hidden.
- */
-extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
-
-/**
- *  Used as a mask when testing buttons in buttonstate.
- *   - Button 1:  Left mouse button
- *   - Button 2:  Middle mouse button
- *   - Button 3:  Right mouse button
- */
-#define SDL_BUTTON(X)       (1 << ((X)-1))
-#define SDL_BUTTON_LEFT     1
-#define SDL_BUTTON_MIDDLE   2
-#define SDL_BUTTON_RIGHT    3
-#define SDL_BUTTON_X1       4
-#define SDL_BUTTON_X2       5
-#define SDL_BUTTON_LMASK    SDL_BUTTON(SDL_BUTTON_LEFT)
-#define SDL_BUTTON_MMASK    SDL_BUTTON(SDL_BUTTON_MIDDLE)
-#define SDL_BUTTON_RMASK    SDL_BUTTON(SDL_BUTTON_RIGHT)
-#define SDL_BUTTON_X1MASK   SDL_BUTTON(SDL_BUTTON_X1)
-#define SDL_BUTTON_X2MASK   SDL_BUTTON(SDL_BUTTON_X2)
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_mouse_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mutex.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mutex.h
deleted file mode 100644 (file)
index 970e787..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_mutex_h_
-#define SDL_mutex_h_
-
-/**
- *  \file SDL_mutex.h
- *
- *  Functions to provide thread synchronization primitives.
- */
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  Synchronization functions which can time out return this value
- *  if they time out.
- */
-#define SDL_MUTEX_TIMEDOUT  1
-
-/**
- *  This is the timeout value which corresponds to never time out.
- */
-#define SDL_MUTEX_MAXWAIT   (~(Uint32)0)
-
-
-/**
- *  \name Mutex functions
- */
-/* @{ */
-
-/* The SDL mutex structure, defined in SDL_sysmutex.c */
-struct SDL_mutex;
-typedef struct SDL_mutex SDL_mutex;
-
-/**
- *  Create a mutex, initialized unlocked.
- */
-extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);
-
-/**
- *  Lock the mutex.
- *
- *  \return 0, or -1 on error.
- */
-#define SDL_mutexP(m)   SDL_LockMutex(m)
-extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex);
-
-/**
- *  Try to lock the mutex
- *
- *  \return 0, SDL_MUTEX_TIMEDOUT, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex);
-
-/**
- *  Unlock the mutex.
- *
- *  \return 0, or -1 on error.
- *
- *  \warning It is an error to unlock a mutex that has not been locked by
- *           the current thread, and doing so results in undefined behavior.
- */
-#define SDL_mutexV(m)   SDL_UnlockMutex(m)
-extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex);
-
-/**
- *  Destroy a mutex.
- */
-extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex);
-
-/* @} *//* Mutex functions */
-
-
-/**
- *  \name Semaphore functions
- */
-/* @{ */
-
-/* The SDL semaphore structure, defined in SDL_syssem.c */
-struct SDL_semaphore;
-typedef struct SDL_semaphore SDL_sem;
-
-/**
- *  Create a semaphore, initialized with value, returns NULL on failure.
- */
-extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value);
-
-/**
- *  Destroy a semaphore.
- */
-extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem);
-
-/**
- *  This function suspends the calling thread until the semaphore pointed
- *  to by \c sem has a positive count. It then atomically decreases the
- *  semaphore count.
- */
-extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);
-
-/**
- *  Non-blocking variant of SDL_SemWait().
- *
- *  \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait would
- *          block, and -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);
-
-/**
- *  Variant of SDL_SemWait() with a timeout in milliseconds.
- *
- *  \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait does not
- *          succeed in the allotted time, and -1 on error.
- *
- *  \warning On some platforms this function is implemented by looping with a
- *           delay of 1 ms, and so should be avoided if possible.
- */
-extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem * sem, Uint32 ms);
-
-/**
- *  Atomically increases the semaphore's count (not blocking).
- *
- *  \return 0, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem);
-
-/**
- *  Returns the current count of the semaphore.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem);
-
-/* @} *//* Semaphore functions */
-
-
-/**
- *  \name Condition variable functions
- */
-/* @{ */
-
-/* The SDL condition variable structure, defined in SDL_syscond.c */
-struct SDL_cond;
-typedef struct SDL_cond SDL_cond;
-
-/**
- *  Create a condition variable.
- *
- *  Typical use of condition variables:
- *
- *  Thread A:
- *    SDL_LockMutex(lock);
- *    while ( ! condition ) {
- *        SDL_CondWait(cond, lock);
- *    }
- *    SDL_UnlockMutex(lock);
- *
- *  Thread B:
- *    SDL_LockMutex(lock);
- *    ...
- *    condition = true;
- *    ...
- *    SDL_CondSignal(cond);
- *    SDL_UnlockMutex(lock);
- *
- *  There is some discussion whether to signal the condition variable
- *  with the mutex locked or not.  There is some potential performance
- *  benefit to unlocking first on some platforms, but there are some
- *  potential race conditions depending on how your code is structured.
- *
- *  In general it's safer to signal the condition variable while the
- *  mutex is locked.
- */
-extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void);
-
-/**
- *  Destroy a condition variable.
- */
-extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond);
-
-/**
- *  Restart one of the threads that are waiting on the condition variable.
- *
- *  \return 0 or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond);
-
-/**
- *  Restart all threads that are waiting on the condition variable.
- *
- *  \return 0 or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);
-
-/**
- *  Wait on the condition variable, unlocking the provided mutex.
- *
- *  \warning The mutex must be locked before entering this function!
- *
- *  The mutex is re-locked once the condition variable is signaled.
- *
- *  \return 0 when it is signaled, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
-
-/**
- *  Waits for at most \c ms milliseconds, and returns 0 if the condition
- *  variable is signaled, ::SDL_MUTEX_TIMEDOUT if the condition is not
- *  signaled in the allotted time, and -1 on error.
- *
- *  \warning On some platforms this function is implemented by looping with a
- *           delay of 1 ms, and so should be avoided if possible.
- */
-extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond,
-                                                SDL_mutex * mutex, Uint32 ms);
-
-/* @} *//* Condition variable functions */
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_mutex_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_name.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_name.h
deleted file mode 100644 (file)
index 690a819..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDLname_h_
-#define SDLname_h_
-
-#if defined(__STDC__) || defined(__cplusplus)
-#define NeedFunctionPrototypes 1
-#endif
-
-#define SDL_NAME(X) SDL_##X
-
-#endif /* SDLname_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl.h
deleted file mode 100644 (file)
index 6685be7..0000000
+++ /dev/null
@@ -1,2183 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_opengl.h
- *
- *  This is a simple file to encapsulate the OpenGL API headers.
- */
-
-/**
- *  \def NO_SDL_GLEXT
- *
- *  Define this if you have your own version of glext.h and want to disable the
- *  version included in SDL_opengl.h.
- */
-
-#ifndef SDL_opengl_h_
-#define SDL_opengl_h_
-
-#include "SDL_config.h"
-
-#ifndef __IPHONEOS__  /* No OpenGL on iOS. */
-
-/*
- * Mesa 3-D graphics library
- *
- * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
- * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#ifndef __gl_h_
-#define __gl_h_
-
-#if defined(USE_MGL_NAMESPACE)
-#include "gl_mangle.h"
-#endif
-
-
-/**********************************************************************
- * Begin system-specific stuff.
- */
-
-#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__)
-#define __WIN32__
-#endif
-
-#if defined(__WIN32__) && !defined(__CYGWIN__)
-#  if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
-#    define GLAPI __declspec(dllexport)
-#  elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
-#    define GLAPI __declspec(dllimport)
-#  else /* for use with static link lib build of Win32 edition only */
-#    define GLAPI extern
-#  endif /* _STATIC_MESA support */
-#  if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE)  /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */
-#    define GLAPIENTRY 
-#  else
-#    define GLAPIENTRY __stdcall
-#  endif
-#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */
-#  define GLAPI extern
-#  define GLAPIENTRY __stdcall
-#elif defined(__OS2__) || defined(__EMX__) /* native os/2 opengl */
-#  define GLAPI extern
-#  define GLAPIENTRY _System
-#  define APIENTRY _System
-#  if defined(__GNUC__) && !defined(_System)
-#    define _System
-#  endif
-#elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-#  define GLAPI __attribute__((visibility("default")))
-#  define GLAPIENTRY
-#endif /* WIN32 && !CYGWIN */
-
-/*
- * WINDOWS: Include windows.h here to define APIENTRY.
- * It is also useful when applications include this file by
- * including only glut.h, since glut.h depends on windows.h.
- * Applications needing to include windows.h with parms other
- * than "WIN32_LEAN_AND_MEAN" may include windows.h before
- * glut.h or gl.h.
- */
-#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#ifndef NOMINMAX   /* don't define min() and max(). */
-#define NOMINMAX
-#endif
-#include <windows.h>
-#endif
-
-#ifndef GLAPI
-#define GLAPI extern
-#endif
-
-#ifndef GLAPIENTRY
-#define GLAPIENTRY
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY GLAPIENTRY
-#endif
-
-/* "P" suffix to be used for a pointer to a function */
-#ifndef APIENTRYP
-#define APIENTRYP APIENTRY *
-#endif
-
-#ifndef GLAPIENTRYP
-#define GLAPIENTRYP GLAPIENTRY *
-#endif
-
-#if defined(PRAGMA_EXPORT_SUPPORTED)
-#pragma export on
-#endif
-
-/*
- * End system-specific stuff.
- **********************************************************************/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define GL_VERSION_1_1   1
-#define GL_VERSION_1_2   1
-#define GL_VERSION_1_3   1
-#define GL_ARB_imaging   1
-
-
-/*
- * Datatypes
- */
-typedef unsigned int   GLenum;
-typedef unsigned char  GLboolean;
-typedef unsigned int   GLbitfield;
-typedef void           GLvoid;
-typedef signed char    GLbyte;         /* 1-byte signed */
-typedef short          GLshort;        /* 2-byte signed */
-typedef int            GLint;          /* 4-byte signed */
-typedef unsigned char  GLubyte;        /* 1-byte unsigned */
-typedef unsigned short GLushort;       /* 2-byte unsigned */
-typedef unsigned int   GLuint;         /* 4-byte unsigned */
-typedef int            GLsizei;        /* 4-byte signed */
-typedef float          GLfloat;        /* single precision float */
-typedef float          GLclampf;       /* single precision float in [0,1] */
-typedef double         GLdouble;       /* double precision float */
-typedef double         GLclampd;       /* double precision float in [0,1] */
-
-
-
-/*
- * Constants
- */
-
-/* Boolean values */
-#define GL_FALSE                               0
-#define GL_TRUE                                        1
-
-/* Data types */
-#define GL_BYTE                                        0x1400
-#define GL_UNSIGNED_BYTE                       0x1401
-#define GL_SHORT                               0x1402
-#define GL_UNSIGNED_SHORT                      0x1403
-#define GL_INT                                 0x1404
-#define GL_UNSIGNED_INT                                0x1405
-#define GL_FLOAT                               0x1406
-#define GL_2_BYTES                             0x1407
-#define GL_3_BYTES                             0x1408
-#define GL_4_BYTES                             0x1409
-#define GL_DOUBLE                              0x140A
-
-/* Primitives */
-#define GL_POINTS                              0x0000
-#define GL_LINES                               0x0001
-#define GL_LINE_LOOP                           0x0002
-#define GL_LINE_STRIP                          0x0003
-#define GL_TRIANGLES                           0x0004
-#define GL_TRIANGLE_STRIP                      0x0005
-#define GL_TRIANGLE_FAN                                0x0006
-#define GL_QUADS                               0x0007
-#define GL_QUAD_STRIP                          0x0008
-#define GL_POLYGON                             0x0009
-
-/* Vertex Arrays */
-#define GL_VERTEX_ARRAY                                0x8074
-#define GL_NORMAL_ARRAY                                0x8075
-#define GL_COLOR_ARRAY                         0x8076
-#define GL_INDEX_ARRAY                         0x8077
-#define GL_TEXTURE_COORD_ARRAY                 0x8078
-#define GL_EDGE_FLAG_ARRAY                     0x8079
-#define GL_VERTEX_ARRAY_SIZE                   0x807A
-#define GL_VERTEX_ARRAY_TYPE                   0x807B
-#define GL_VERTEX_ARRAY_STRIDE                 0x807C
-#define GL_NORMAL_ARRAY_TYPE                   0x807E
-#define GL_NORMAL_ARRAY_STRIDE                 0x807F
-#define GL_COLOR_ARRAY_SIZE                    0x8081
-#define GL_COLOR_ARRAY_TYPE                    0x8082
-#define GL_COLOR_ARRAY_STRIDE                  0x8083
-#define GL_INDEX_ARRAY_TYPE                    0x8085
-#define GL_INDEX_ARRAY_STRIDE                  0x8086
-#define GL_TEXTURE_COORD_ARRAY_SIZE            0x8088
-#define GL_TEXTURE_COORD_ARRAY_TYPE            0x8089
-#define GL_TEXTURE_COORD_ARRAY_STRIDE          0x808A
-#define GL_EDGE_FLAG_ARRAY_STRIDE              0x808C
-#define GL_VERTEX_ARRAY_POINTER                        0x808E
-#define GL_NORMAL_ARRAY_POINTER                        0x808F
-#define GL_COLOR_ARRAY_POINTER                 0x8090
-#define GL_INDEX_ARRAY_POINTER                 0x8091
-#define GL_TEXTURE_COORD_ARRAY_POINTER         0x8092
-#define GL_EDGE_FLAG_ARRAY_POINTER             0x8093
-#define GL_V2F                                 0x2A20
-#define GL_V3F                                 0x2A21
-#define GL_C4UB_V2F                            0x2A22
-#define GL_C4UB_V3F                            0x2A23
-#define GL_C3F_V3F                             0x2A24
-#define GL_N3F_V3F                             0x2A25
-#define GL_C4F_N3F_V3F                         0x2A26
-#define GL_T2F_V3F                             0x2A27
-#define GL_T4F_V4F                             0x2A28
-#define GL_T2F_C4UB_V3F                                0x2A29
-#define GL_T2F_C3F_V3F                         0x2A2A
-#define GL_T2F_N3F_V3F                         0x2A2B
-#define GL_T2F_C4F_N3F_V3F                     0x2A2C
-#define GL_T4F_C4F_N3F_V4F                     0x2A2D
-
-/* Matrix Mode */
-#define GL_MATRIX_MODE                         0x0BA0
-#define GL_MODELVIEW                           0x1700
-#define GL_PROJECTION                          0x1701
-#define GL_TEXTURE                             0x1702
-
-/* Points */
-#define GL_POINT_SMOOTH                                0x0B10
-#define GL_POINT_SIZE                          0x0B11
-#define GL_POINT_SIZE_GRANULARITY              0x0B13
-#define GL_POINT_SIZE_RANGE                    0x0B12
-
-/* Lines */
-#define GL_LINE_SMOOTH                         0x0B20
-#define GL_LINE_STIPPLE                                0x0B24
-#define GL_LINE_STIPPLE_PATTERN                        0x0B25
-#define GL_LINE_STIPPLE_REPEAT                 0x0B26
-#define GL_LINE_WIDTH                          0x0B21
-#define GL_LINE_WIDTH_GRANULARITY              0x0B23
-#define GL_LINE_WIDTH_RANGE                    0x0B22
-
-/* Polygons */
-#define GL_POINT                               0x1B00
-#define GL_LINE                                        0x1B01
-#define GL_FILL                                        0x1B02
-#define GL_CW                                  0x0900
-#define GL_CCW                                 0x0901
-#define GL_FRONT                               0x0404
-#define GL_BACK                                        0x0405
-#define GL_POLYGON_MODE                                0x0B40
-#define GL_POLYGON_SMOOTH                      0x0B41
-#define GL_POLYGON_STIPPLE                     0x0B42
-#define GL_EDGE_FLAG                           0x0B43
-#define GL_CULL_FACE                           0x0B44
-#define GL_CULL_FACE_MODE                      0x0B45
-#define GL_FRONT_FACE                          0x0B46
-#define GL_POLYGON_OFFSET_FACTOR               0x8038
-#define GL_POLYGON_OFFSET_UNITS                        0x2A00
-#define GL_POLYGON_OFFSET_POINT                        0x2A01
-#define GL_POLYGON_OFFSET_LINE                 0x2A02
-#define GL_POLYGON_OFFSET_FILL                 0x8037
-
-/* Display Lists */
-#define GL_COMPILE                             0x1300
-#define GL_COMPILE_AND_EXECUTE                 0x1301
-#define GL_LIST_BASE                           0x0B32
-#define GL_LIST_INDEX                          0x0B33
-#define GL_LIST_MODE                           0x0B30
-
-/* Depth buffer */
-#define GL_NEVER                               0x0200
-#define GL_LESS                                        0x0201
-#define GL_EQUAL                               0x0202
-#define GL_LEQUAL                              0x0203
-#define GL_GREATER                             0x0204
-#define GL_NOTEQUAL                            0x0205
-#define GL_GEQUAL                              0x0206
-#define GL_ALWAYS                              0x0207
-#define GL_DEPTH_TEST                          0x0B71
-#define GL_DEPTH_BITS                          0x0D56
-#define GL_DEPTH_CLEAR_VALUE                   0x0B73
-#define GL_DEPTH_FUNC                          0x0B74
-#define GL_DEPTH_RANGE                         0x0B70
-#define GL_DEPTH_WRITEMASK                     0x0B72
-#define GL_DEPTH_COMPONENT                     0x1902
-
-/* Lighting */
-#define GL_LIGHTING                            0x0B50
-#define GL_LIGHT0                              0x4000
-#define GL_LIGHT1                              0x4001
-#define GL_LIGHT2                              0x4002
-#define GL_LIGHT3                              0x4003
-#define GL_LIGHT4                              0x4004
-#define GL_LIGHT5                              0x4005
-#define GL_LIGHT6                              0x4006
-#define GL_LIGHT7                              0x4007
-#define GL_SPOT_EXPONENT                       0x1205
-#define GL_SPOT_CUTOFF                         0x1206
-#define GL_CONSTANT_ATTENUATION                        0x1207
-#define GL_LINEAR_ATTENUATION                  0x1208
-#define GL_QUADRATIC_ATTENUATION               0x1209
-#define GL_AMBIENT                             0x1200
-#define GL_DIFFUSE                             0x1201
-#define GL_SPECULAR                            0x1202
-#define GL_SHININESS                           0x1601
-#define GL_EMISSION                            0x1600
-#define GL_POSITION                            0x1203
-#define GL_SPOT_DIRECTION                      0x1204
-#define GL_AMBIENT_AND_DIFFUSE                 0x1602
-#define GL_COLOR_INDEXES                       0x1603
-#define GL_LIGHT_MODEL_TWO_SIDE                        0x0B52
-#define GL_LIGHT_MODEL_LOCAL_VIEWER            0x0B51
-#define GL_LIGHT_MODEL_AMBIENT                 0x0B53
-#define GL_FRONT_AND_BACK                      0x0408
-#define GL_SHADE_MODEL                         0x0B54
-#define GL_FLAT                                        0x1D00
-#define GL_SMOOTH                              0x1D01
-#define GL_COLOR_MATERIAL                      0x0B57
-#define GL_COLOR_MATERIAL_FACE                 0x0B55
-#define GL_COLOR_MATERIAL_PARAMETER            0x0B56
-#define GL_NORMALIZE                           0x0BA1
-
-/* User clipping planes */
-#define GL_CLIP_PLANE0                         0x3000
-#define GL_CLIP_PLANE1                         0x3001
-#define GL_CLIP_PLANE2                         0x3002
-#define GL_CLIP_PLANE3                         0x3003
-#define GL_CLIP_PLANE4                         0x3004
-#define GL_CLIP_PLANE5                         0x3005
-
-/* Accumulation buffer */
-#define GL_ACCUM_RED_BITS                      0x0D58
-#define GL_ACCUM_GREEN_BITS                    0x0D59
-#define GL_ACCUM_BLUE_BITS                     0x0D5A
-#define GL_ACCUM_ALPHA_BITS                    0x0D5B
-#define GL_ACCUM_CLEAR_VALUE                   0x0B80
-#define GL_ACCUM                               0x0100
-#define GL_ADD                                 0x0104
-#define GL_LOAD                                        0x0101
-#define GL_MULT                                        0x0103
-#define GL_RETURN                              0x0102
-
-/* Alpha testing */
-#define GL_ALPHA_TEST                          0x0BC0
-#define GL_ALPHA_TEST_REF                      0x0BC2
-#define GL_ALPHA_TEST_FUNC                     0x0BC1
-
-/* Blending */
-#define GL_BLEND                               0x0BE2
-#define GL_BLEND_SRC                           0x0BE1
-#define GL_BLEND_DST                           0x0BE0
-#define GL_ZERO                                        0
-#define GL_ONE                                 1
-#define GL_SRC_COLOR                           0x0300
-#define GL_ONE_MINUS_SRC_COLOR                 0x0301
-#define GL_SRC_ALPHA                           0x0302
-#define GL_ONE_MINUS_SRC_ALPHA                 0x0303
-#define GL_DST_ALPHA                           0x0304
-#define GL_ONE_MINUS_DST_ALPHA                 0x0305
-#define GL_DST_COLOR                           0x0306
-#define GL_ONE_MINUS_DST_COLOR                 0x0307
-#define GL_SRC_ALPHA_SATURATE                  0x0308
-
-/* Render Mode */
-#define GL_FEEDBACK                            0x1C01
-#define GL_RENDER                              0x1C00
-#define GL_SELECT                              0x1C02
-
-/* Feedback */
-#define GL_2D                                  0x0600
-#define GL_3D                                  0x0601
-#define GL_3D_COLOR                            0x0602
-#define GL_3D_COLOR_TEXTURE                    0x0603
-#define GL_4D_COLOR_TEXTURE                    0x0604
-#define GL_POINT_TOKEN                         0x0701
-#define GL_LINE_TOKEN                          0x0702
-#define GL_LINE_RESET_TOKEN                    0x0707
-#define GL_POLYGON_TOKEN                       0x0703
-#define GL_BITMAP_TOKEN                                0x0704
-#define GL_DRAW_PIXEL_TOKEN                    0x0705
-#define GL_COPY_PIXEL_TOKEN                    0x0706
-#define GL_PASS_THROUGH_TOKEN                  0x0700
-#define GL_FEEDBACK_BUFFER_POINTER             0x0DF0
-#define GL_FEEDBACK_BUFFER_SIZE                        0x0DF1
-#define GL_FEEDBACK_BUFFER_TYPE                        0x0DF2
-
-/* Selection */
-#define GL_SELECTION_BUFFER_POINTER            0x0DF3
-#define GL_SELECTION_BUFFER_SIZE               0x0DF4
-
-/* Fog */
-#define GL_FOG                                 0x0B60
-#define GL_FOG_MODE                            0x0B65
-#define GL_FOG_DENSITY                         0x0B62
-#define GL_FOG_COLOR                           0x0B66
-#define GL_FOG_INDEX                           0x0B61
-#define GL_FOG_START                           0x0B63
-#define GL_FOG_END                             0x0B64
-#define GL_LINEAR                              0x2601
-#define GL_EXP                                 0x0800
-#define GL_EXP2                                        0x0801
-
-/* Logic Ops */
-#define GL_LOGIC_OP                            0x0BF1
-#define GL_INDEX_LOGIC_OP                      0x0BF1
-#define GL_COLOR_LOGIC_OP                      0x0BF2
-#define GL_LOGIC_OP_MODE                       0x0BF0
-#define GL_CLEAR                               0x1500
-#define GL_SET                                 0x150F
-#define GL_COPY                                        0x1503
-#define GL_COPY_INVERTED                       0x150C
-#define GL_NOOP                                        0x1505
-#define GL_INVERT                              0x150A
-#define GL_AND                                 0x1501
-#define GL_NAND                                        0x150E
-#define GL_OR                                  0x1507
-#define GL_NOR                                 0x1508
-#define GL_XOR                                 0x1506
-#define GL_EQUIV                               0x1509
-#define GL_AND_REVERSE                         0x1502
-#define GL_AND_INVERTED                                0x1504
-#define GL_OR_REVERSE                          0x150B
-#define GL_OR_INVERTED                         0x150D
-
-/* Stencil */
-#define GL_STENCIL_BITS                                0x0D57
-#define GL_STENCIL_TEST                                0x0B90
-#define GL_STENCIL_CLEAR_VALUE                 0x0B91
-#define GL_STENCIL_FUNC                                0x0B92
-#define GL_STENCIL_VALUE_MASK                  0x0B93
-#define GL_STENCIL_FAIL                                0x0B94
-#define GL_STENCIL_PASS_DEPTH_FAIL             0x0B95
-#define GL_STENCIL_PASS_DEPTH_PASS             0x0B96
-#define GL_STENCIL_REF                         0x0B97
-#define GL_STENCIL_WRITEMASK                   0x0B98
-#define GL_STENCIL_INDEX                       0x1901
-#define GL_KEEP                                        0x1E00
-#define GL_REPLACE                             0x1E01
-#define GL_INCR                                        0x1E02
-#define GL_DECR                                        0x1E03
-
-/* Buffers, Pixel Drawing/Reading */
-#define GL_NONE                                        0
-#define GL_LEFT                                        0x0406
-#define GL_RIGHT                               0x0407
-/*GL_FRONT                                     0x0404 */
-/*GL_BACK                                      0x0405 */
-/*GL_FRONT_AND_BACK                            0x0408 */
-#define GL_FRONT_LEFT                          0x0400
-#define GL_FRONT_RIGHT                         0x0401
-#define GL_BACK_LEFT                           0x0402
-#define GL_BACK_RIGHT                          0x0403
-#define GL_AUX0                                        0x0409
-#define GL_AUX1                                        0x040A
-#define GL_AUX2                                        0x040B
-#define GL_AUX3                                        0x040C
-#define GL_COLOR_INDEX                         0x1900
-#define GL_RED                                 0x1903
-#define GL_GREEN                               0x1904
-#define GL_BLUE                                        0x1905
-#define GL_ALPHA                               0x1906
-#define GL_LUMINANCE                           0x1909
-#define GL_LUMINANCE_ALPHA                     0x190A
-#define GL_ALPHA_BITS                          0x0D55
-#define GL_RED_BITS                            0x0D52
-#define GL_GREEN_BITS                          0x0D53
-#define GL_BLUE_BITS                           0x0D54
-#define GL_INDEX_BITS                          0x0D51
-#define GL_SUBPIXEL_BITS                       0x0D50
-#define GL_AUX_BUFFERS                         0x0C00
-#define GL_READ_BUFFER                         0x0C02
-#define GL_DRAW_BUFFER                         0x0C01
-#define GL_DOUBLEBUFFER                                0x0C32
-#define GL_STEREO                              0x0C33
-#define GL_BITMAP                              0x1A00
-#define GL_COLOR                               0x1800
-#define GL_DEPTH                               0x1801
-#define GL_STENCIL                             0x1802
-#define GL_DITHER                              0x0BD0
-#define GL_RGB                                 0x1907
-#define GL_RGBA                                        0x1908
-
-/* Implementation limits */
-#define GL_MAX_LIST_NESTING                    0x0B31
-#define GL_MAX_EVAL_ORDER                      0x0D30
-#define GL_MAX_LIGHTS                          0x0D31
-#define GL_MAX_CLIP_PLANES                     0x0D32
-#define GL_MAX_TEXTURE_SIZE                    0x0D33
-#define GL_MAX_PIXEL_MAP_TABLE                 0x0D34
-#define GL_MAX_ATTRIB_STACK_DEPTH              0x0D35
-#define GL_MAX_MODELVIEW_STACK_DEPTH           0x0D36
-#define GL_MAX_NAME_STACK_DEPTH                        0x0D37
-#define GL_MAX_PROJECTION_STACK_DEPTH          0x0D38
-#define GL_MAX_TEXTURE_STACK_DEPTH             0x0D39
-#define GL_MAX_VIEWPORT_DIMS                   0x0D3A
-#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH       0x0D3B
-
-/* Gets */
-#define GL_ATTRIB_STACK_DEPTH                  0x0BB0
-#define GL_CLIENT_ATTRIB_STACK_DEPTH           0x0BB1
-#define GL_COLOR_CLEAR_VALUE                   0x0C22
-#define GL_COLOR_WRITEMASK                     0x0C23
-#define GL_CURRENT_INDEX                       0x0B01
-#define GL_CURRENT_COLOR                       0x0B00
-#define GL_CURRENT_NORMAL                      0x0B02
-#define GL_CURRENT_RASTER_COLOR                        0x0B04
-#define GL_CURRENT_RASTER_DISTANCE             0x0B09
-#define GL_CURRENT_RASTER_INDEX                        0x0B05
-#define GL_CURRENT_RASTER_POSITION             0x0B07
-#define GL_CURRENT_RASTER_TEXTURE_COORDS       0x0B06
-#define GL_CURRENT_RASTER_POSITION_VALID       0x0B08
-#define GL_CURRENT_TEXTURE_COORDS              0x0B03
-#define GL_INDEX_CLEAR_VALUE                   0x0C20
-#define GL_INDEX_MODE                          0x0C30
-#define GL_INDEX_WRITEMASK                     0x0C21
-#define GL_MODELVIEW_MATRIX                    0x0BA6
-#define GL_MODELVIEW_STACK_DEPTH               0x0BA3
-#define GL_NAME_STACK_DEPTH                    0x0D70
-#define GL_PROJECTION_MATRIX                   0x0BA7
-#define GL_PROJECTION_STACK_DEPTH              0x0BA4
-#define GL_RENDER_MODE                         0x0C40
-#define GL_RGBA_MODE                           0x0C31
-#define GL_TEXTURE_MATRIX                      0x0BA8
-#define GL_TEXTURE_STACK_DEPTH                 0x0BA5
-#define GL_VIEWPORT                            0x0BA2
-
-/* Evaluators */
-#define GL_AUTO_NORMAL                         0x0D80
-#define GL_MAP1_COLOR_4                                0x0D90
-#define GL_MAP1_INDEX                          0x0D91
-#define GL_MAP1_NORMAL                         0x0D92
-#define GL_MAP1_TEXTURE_COORD_1                        0x0D93
-#define GL_MAP1_TEXTURE_COORD_2                        0x0D94
-#define GL_MAP1_TEXTURE_COORD_3                        0x0D95
-#define GL_MAP1_TEXTURE_COORD_4                        0x0D96
-#define GL_MAP1_VERTEX_3                       0x0D97
-#define GL_MAP1_VERTEX_4                       0x0D98
-#define GL_MAP2_COLOR_4                                0x0DB0
-#define GL_MAP2_INDEX                          0x0DB1
-#define GL_MAP2_NORMAL                         0x0DB2
-#define GL_MAP2_TEXTURE_COORD_1                        0x0DB3
-#define GL_MAP2_TEXTURE_COORD_2                        0x0DB4
-#define GL_MAP2_TEXTURE_COORD_3                        0x0DB5
-#define GL_MAP2_TEXTURE_COORD_4                        0x0DB6
-#define GL_MAP2_VERTEX_3                       0x0DB7
-#define GL_MAP2_VERTEX_4                       0x0DB8
-#define GL_MAP1_GRID_DOMAIN                    0x0DD0
-#define GL_MAP1_GRID_SEGMENTS                  0x0DD1
-#define GL_MAP2_GRID_DOMAIN                    0x0DD2
-#define GL_MAP2_GRID_SEGMENTS                  0x0DD3
-#define GL_COEFF                               0x0A00
-#define GL_ORDER                               0x0A01
-#define GL_DOMAIN                              0x0A02
-
-/* Hints */
-#define GL_PERSPECTIVE_CORRECTION_HINT         0x0C50
-#define GL_POINT_SMOOTH_HINT                   0x0C51
-#define GL_LINE_SMOOTH_HINT                    0x0C52
-#define GL_POLYGON_SMOOTH_HINT                 0x0C53
-#define GL_FOG_HINT                            0x0C54
-#define GL_DONT_CARE                           0x1100
-#define GL_FASTEST                             0x1101
-#define GL_NICEST                              0x1102
-
-/* Scissor box */
-#define GL_SCISSOR_BOX                         0x0C10
-#define GL_SCISSOR_TEST                                0x0C11
-
-/* Pixel Mode / Transfer */
-#define GL_MAP_COLOR                           0x0D10
-#define GL_MAP_STENCIL                         0x0D11
-#define GL_INDEX_SHIFT                         0x0D12
-#define GL_INDEX_OFFSET                                0x0D13
-#define GL_RED_SCALE                           0x0D14
-#define GL_RED_BIAS                            0x0D15
-#define GL_GREEN_SCALE                         0x0D18
-#define GL_GREEN_BIAS                          0x0D19
-#define GL_BLUE_SCALE                          0x0D1A
-#define GL_BLUE_BIAS                           0x0D1B
-#define GL_ALPHA_SCALE                         0x0D1C
-#define GL_ALPHA_BIAS                          0x0D1D
-#define GL_DEPTH_SCALE                         0x0D1E
-#define GL_DEPTH_BIAS                          0x0D1F
-#define GL_PIXEL_MAP_S_TO_S_SIZE               0x0CB1
-#define GL_PIXEL_MAP_I_TO_I_SIZE               0x0CB0
-#define GL_PIXEL_MAP_I_TO_R_SIZE               0x0CB2
-#define GL_PIXEL_MAP_I_TO_G_SIZE               0x0CB3
-#define GL_PIXEL_MAP_I_TO_B_SIZE               0x0CB4
-#define GL_PIXEL_MAP_I_TO_A_SIZE               0x0CB5
-#define GL_PIXEL_MAP_R_TO_R_SIZE               0x0CB6
-#define GL_PIXEL_MAP_G_TO_G_SIZE               0x0CB7
-#define GL_PIXEL_MAP_B_TO_B_SIZE               0x0CB8
-#define GL_PIXEL_MAP_A_TO_A_SIZE               0x0CB9
-#define GL_PIXEL_MAP_S_TO_S                    0x0C71
-#define GL_PIXEL_MAP_I_TO_I                    0x0C70
-#define GL_PIXEL_MAP_I_TO_R                    0x0C72
-#define GL_PIXEL_MAP_I_TO_G                    0x0C73
-#define GL_PIXEL_MAP_I_TO_B                    0x0C74
-#define GL_PIXEL_MAP_I_TO_A                    0x0C75
-#define GL_PIXEL_MAP_R_TO_R                    0x0C76
-#define GL_PIXEL_MAP_G_TO_G                    0x0C77
-#define GL_PIXEL_MAP_B_TO_B                    0x0C78
-#define GL_PIXEL_MAP_A_TO_A                    0x0C79
-#define GL_PACK_ALIGNMENT                      0x0D05
-#define GL_PACK_LSB_FIRST                      0x0D01
-#define GL_PACK_ROW_LENGTH                     0x0D02
-#define GL_PACK_SKIP_PIXELS                    0x0D04
-#define GL_PACK_SKIP_ROWS                      0x0D03
-#define GL_PACK_SWAP_BYTES                     0x0D00
-#define GL_UNPACK_ALIGNMENT                    0x0CF5
-#define GL_UNPACK_LSB_FIRST                    0x0CF1
-#define GL_UNPACK_ROW_LENGTH                   0x0CF2
-#define GL_UNPACK_SKIP_PIXELS                  0x0CF4
-#define GL_UNPACK_SKIP_ROWS                    0x0CF3
-#define GL_UNPACK_SWAP_BYTES                   0x0CF0
-#define GL_ZOOM_X                              0x0D16
-#define GL_ZOOM_Y                              0x0D17
-
-/* Texture mapping */
-#define GL_TEXTURE_ENV                         0x2300
-#define GL_TEXTURE_ENV_MODE                    0x2200
-#define GL_TEXTURE_1D                          0x0DE0
-#define GL_TEXTURE_2D                          0x0DE1
-#define GL_TEXTURE_WRAP_S                      0x2802
-#define GL_TEXTURE_WRAP_T                      0x2803
-#define GL_TEXTURE_MAG_FILTER                  0x2800
-#define GL_TEXTURE_MIN_FILTER                  0x2801
-#define GL_TEXTURE_ENV_COLOR                   0x2201
-#define GL_TEXTURE_GEN_S                       0x0C60
-#define GL_TEXTURE_GEN_T                       0x0C61
-#define GL_TEXTURE_GEN_R                       0x0C62
-#define GL_TEXTURE_GEN_Q                       0x0C63
-#define GL_TEXTURE_GEN_MODE                    0x2500
-#define GL_TEXTURE_BORDER_COLOR                        0x1004
-#define GL_TEXTURE_WIDTH                       0x1000
-#define GL_TEXTURE_HEIGHT                      0x1001
-#define GL_TEXTURE_BORDER                      0x1005
-#define GL_TEXTURE_COMPONENTS                  0x1003
-#define GL_TEXTURE_RED_SIZE                    0x805C
-#define GL_TEXTURE_GREEN_SIZE                  0x805D
-#define GL_TEXTURE_BLUE_SIZE                   0x805E
-#define GL_TEXTURE_ALPHA_SIZE                  0x805F
-#define GL_TEXTURE_LUMINANCE_SIZE              0x8060
-#define GL_TEXTURE_INTENSITY_SIZE              0x8061
-#define GL_NEAREST_MIPMAP_NEAREST              0x2700
-#define GL_NEAREST_MIPMAP_LINEAR               0x2702
-#define GL_LINEAR_MIPMAP_NEAREST               0x2701
-#define GL_LINEAR_MIPMAP_LINEAR                        0x2703
-#define GL_OBJECT_LINEAR                       0x2401
-#define GL_OBJECT_PLANE                                0x2501
-#define GL_EYE_LINEAR                          0x2400
-#define GL_EYE_PLANE                           0x2502
-#define GL_SPHERE_MAP                          0x2402
-#define GL_DECAL                               0x2101
-#define GL_MODULATE                            0x2100
-#define GL_NEAREST                             0x2600
-#define GL_REPEAT                              0x2901
-#define GL_CLAMP                               0x2900
-#define GL_S                                   0x2000
-#define GL_T                                   0x2001
-#define GL_R                                   0x2002
-#define GL_Q                                   0x2003
-
-/* Utility */
-#define GL_VENDOR                              0x1F00
-#define GL_RENDERER                            0x1F01
-#define GL_VERSION                             0x1F02
-#define GL_EXTENSIONS                          0x1F03
-
-/* Errors */
-#define GL_NO_ERROR                            0
-#define GL_INVALID_ENUM                                0x0500
-#define GL_INVALID_VALUE                       0x0501
-#define GL_INVALID_OPERATION                   0x0502
-#define GL_STACK_OVERFLOW                      0x0503
-#define GL_STACK_UNDERFLOW                     0x0504
-#define GL_OUT_OF_MEMORY                       0x0505
-
-/* glPush/PopAttrib bits */
-#define GL_CURRENT_BIT                         0x00000001
-#define GL_POINT_BIT                           0x00000002
-#define GL_LINE_BIT                            0x00000004
-#define GL_POLYGON_BIT                         0x00000008
-#define GL_POLYGON_STIPPLE_BIT                 0x00000010
-#define GL_PIXEL_MODE_BIT                      0x00000020
-#define GL_LIGHTING_BIT                                0x00000040
-#define GL_FOG_BIT                             0x00000080
-#define GL_DEPTH_BUFFER_BIT                    0x00000100
-#define GL_ACCUM_BUFFER_BIT                    0x00000200
-#define GL_STENCIL_BUFFER_BIT                  0x00000400
-#define GL_VIEWPORT_BIT                                0x00000800
-#define GL_TRANSFORM_BIT                       0x00001000
-#define GL_ENABLE_BIT                          0x00002000
-#define GL_COLOR_BUFFER_BIT                    0x00004000
-#define GL_HINT_BIT                            0x00008000
-#define GL_EVAL_BIT                            0x00010000
-#define GL_LIST_BIT                            0x00020000
-#define GL_TEXTURE_BIT                         0x00040000
-#define GL_SCISSOR_BIT                         0x00080000
-#define GL_ALL_ATTRIB_BITS                     0x000FFFFF
-
-
-/* OpenGL 1.1 */
-#define GL_PROXY_TEXTURE_1D                    0x8063
-#define GL_PROXY_TEXTURE_2D                    0x8064
-#define GL_TEXTURE_PRIORITY                    0x8066
-#define GL_TEXTURE_RESIDENT                    0x8067
-#define GL_TEXTURE_BINDING_1D                  0x8068
-#define GL_TEXTURE_BINDING_2D                  0x8069
-#define GL_TEXTURE_INTERNAL_FORMAT             0x1003
-#define GL_ALPHA4                              0x803B
-#define GL_ALPHA8                              0x803C
-#define GL_ALPHA12                             0x803D
-#define GL_ALPHA16                             0x803E
-#define GL_LUMINANCE4                          0x803F
-#define GL_LUMINANCE8                          0x8040
-#define GL_LUMINANCE12                         0x8041
-#define GL_LUMINANCE16                         0x8042
-#define GL_LUMINANCE4_ALPHA4                   0x8043
-#define GL_LUMINANCE6_ALPHA2                   0x8044
-#define GL_LUMINANCE8_ALPHA8                   0x8045
-#define GL_LUMINANCE12_ALPHA4                  0x8046
-#define GL_LUMINANCE12_ALPHA12                 0x8047
-#define GL_LUMINANCE16_ALPHA16                 0x8048
-#define GL_INTENSITY                           0x8049
-#define GL_INTENSITY4                          0x804A
-#define GL_INTENSITY8                          0x804B
-#define GL_INTENSITY12                         0x804C
-#define GL_INTENSITY16                         0x804D
-#define GL_R3_G3_B2                            0x2A10
-#define GL_RGB4                                        0x804F
-#define GL_RGB5                                        0x8050
-#define GL_RGB8                                        0x8051
-#define GL_RGB10                               0x8052
-#define GL_RGB12                               0x8053
-#define GL_RGB16                               0x8054
-#define GL_RGBA2                               0x8055
-#define GL_RGBA4                               0x8056
-#define GL_RGB5_A1                             0x8057
-#define GL_RGBA8                               0x8058
-#define GL_RGB10_A2                            0x8059
-#define GL_RGBA12                              0x805A
-#define GL_RGBA16                              0x805B
-#define GL_CLIENT_PIXEL_STORE_BIT              0x00000001
-#define GL_CLIENT_VERTEX_ARRAY_BIT             0x00000002
-#define GL_ALL_CLIENT_ATTRIB_BITS              0xFFFFFFFF
-#define GL_CLIENT_ALL_ATTRIB_BITS              0xFFFFFFFF
-
-
-
-/*
- * Miscellaneous
- */
-
-GLAPI void GLAPIENTRY glClearIndex( GLfloat c );
-
-GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
-
-GLAPI void GLAPIENTRY glClear( GLbitfield mask );
-
-GLAPI void GLAPIENTRY glIndexMask( GLuint mask );
-
-GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
-
-GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );
-
-GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor );
-
-GLAPI void GLAPIENTRY glLogicOp( GLenum opcode );
-
-GLAPI void GLAPIENTRY glCullFace( GLenum mode );
-
-GLAPI void GLAPIENTRY glFrontFace( GLenum mode );
-
-GLAPI void GLAPIENTRY glPointSize( GLfloat size );
-
-GLAPI void GLAPIENTRY glLineWidth( GLfloat width );
-
-GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern );
-
-GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode );
-
-GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units );
-
-GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask );
-
-GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask );
-
-GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag );
-
-GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );
-
-GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
-
-GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );
-
-GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation );
-
-GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode );
-
-GLAPI void GLAPIENTRY glReadBuffer( GLenum mode );
-
-GLAPI void GLAPIENTRY glEnable( GLenum cap );
-
-GLAPI void GLAPIENTRY glDisable( GLenum cap );
-
-GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap );
-
-
-GLAPI void GLAPIENTRY glEnableClientState( GLenum cap );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glDisableClientState( GLenum cap );  /* 1.1 */
-
-
-GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params );
-
-GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params );
-
-GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask );
-
-GLAPI void GLAPIENTRY glPopAttrib( void );
-
-
-GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glPopClientAttrib( void );  /* 1.1 */
-
-
-GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode );
-
-GLAPI GLenum GLAPIENTRY glGetError( void );
-
-GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name );
-
-GLAPI void GLAPIENTRY glFinish( void );
-
-GLAPI void GLAPIENTRY glFlush( void );
-
-GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode );
-
-
-/*
- * Depth Buffer
- */
-
-GLAPI void GLAPIENTRY glClearDepth( GLclampd depth );
-
-GLAPI void GLAPIENTRY glDepthFunc( GLenum func );
-
-GLAPI void GLAPIENTRY glDepthMask( GLboolean flag );
-
-GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );
-
-
-/*
- * Accumulation Buffer
- */
-
-GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
-
-GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );
-
-
-/*
- * Transformation
- */
-
-GLAPI void GLAPIENTRY glMatrixMode( GLenum mode );
-
-GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right,
-                                 GLdouble bottom, GLdouble top,
-                                 GLdouble near_val, GLdouble far_val );
-
-GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right,
-                                   GLdouble bottom, GLdouble top,
-                                   GLdouble near_val, GLdouble far_val );
-
-GLAPI void GLAPIENTRY glViewport( GLint x, GLint y,
-                                    GLsizei width, GLsizei height );
-
-GLAPI void GLAPIENTRY glPushMatrix( void );
-
-GLAPI void GLAPIENTRY glPopMatrix( void );
-
-GLAPI void GLAPIENTRY glLoadIdentity( void );
-
-GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m );
-GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m );
-
-GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m );
-GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m );
-
-GLAPI void GLAPIENTRY glRotated( GLdouble angle,
-                                   GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glRotatef( GLfloat angle,
-                                   GLfloat x, GLfloat y, GLfloat z );
-
-GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z );
-
-GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z );
-
-
-/*
- * Display Lists
- */
-
-GLAPI GLboolean GLAPIENTRY glIsList( GLuint list );
-
-GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range );
-
-GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range );
-
-GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode );
-
-GLAPI void GLAPIENTRY glEndList( void );
-
-GLAPI void GLAPIENTRY glCallList( GLuint list );
-
-GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type,
-                                     const GLvoid *lists );
-
-GLAPI void GLAPIENTRY glListBase( GLuint base );
-
-
-/*
- * Drawing Functions
- */
-
-GLAPI void GLAPIENTRY glBegin( GLenum mode );
-
-GLAPI void GLAPIENTRY glEnd( void );
-
-
-GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y );
-GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y );
-GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y );
-GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y );
-
-GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z );
-GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z );
-GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z );
-
-GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
-GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
-GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w );
-GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w );
-
-GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glVertex2iv( const GLint *v );
-GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glVertex3iv( const GLint *v );
-GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glVertex4iv( const GLint *v );
-GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz );
-GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz );
-GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz );
-GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz );
-GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz );
-
-GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v );
-GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glNormal3iv( const GLint *v );
-GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glIndexd( GLdouble c );
-GLAPI void GLAPIENTRY glIndexf( GLfloat c );
-GLAPI void GLAPIENTRY glIndexi( GLint c );
-GLAPI void GLAPIENTRY glIndexs( GLshort c );
-GLAPI void GLAPIENTRY glIndexub( GLubyte c );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c );
-GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c );
-GLAPI void GLAPIENTRY glIndexiv( const GLint *c );
-GLAPI void GLAPIENTRY glIndexsv( const GLshort *c );
-GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c );  /* 1.1 */
-
-GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue );
-GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue );
-GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue );
-GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue );
-GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue );
-GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue );
-GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue );
-GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue );
-
-GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green,
-                                   GLbyte blue, GLbyte alpha );
-GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green,
-                                   GLdouble blue, GLdouble alpha );
-GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green,
-                                   GLfloat blue, GLfloat alpha );
-GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green,
-                                   GLint blue, GLint alpha );
-GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green,
-                                   GLshort blue, GLshort alpha );
-GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green,
-                                    GLubyte blue, GLubyte alpha );
-GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green,
-                                    GLuint blue, GLuint alpha );
-GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green,
-                                    GLushort blue, GLushort alpha );
-
-
-GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v );
-GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glColor3iv( const GLint *v );
-GLAPI void GLAPIENTRY glColor3sv( const GLshort *v );
-GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v );
-GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v );
-GLAPI void GLAPIENTRY glColor3usv( const GLushort *v );
-
-GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v );
-GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glColor4iv( const GLint *v );
-GLAPI void GLAPIENTRY glColor4sv( const GLshort *v );
-GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v );
-GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v );
-GLAPI void GLAPIENTRY glColor4usv( const GLushort *v );
-
-
-GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s );
-GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s );
-GLAPI void GLAPIENTRY glTexCoord1i( GLint s );
-GLAPI void GLAPIENTRY glTexCoord1s( GLshort s );
-
-GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t );
-GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t );
-GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t );
-GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t );
-
-GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r );
-GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r );
-GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r );
-GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r );
-
-GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
-GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q );
-GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q );
-
-GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v );
-GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y );
-GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y );
-GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y );
-GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y );
-
-GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z );
-GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z );
-GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z );
-GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z );
-
-GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
-GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
-GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w );
-GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w );
-
-GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v );
-GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v );
-GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v );
-
-GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v );
-GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v );
-GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v );
-GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
-GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
-GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 );
-GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
-
-
-GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 );
-GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 );
-GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 );
-GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 );
-
-
-/*
- * Vertex Arrays  (1.1)
- */
-
-GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type,
-                                       GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride,
-                                       const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type,
-                                      GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride,
-                                      const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type,
-                                         GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );
-
-GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params );
-
-GLAPI void GLAPIENTRY glArrayElement( GLint i );
-
-GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count );
-
-GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count,
-                                      GLenum type, const GLvoid *indices );
-
-GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride,
-                                           const GLvoid *pointer );
-
-/*
- * Lighting
- */
-
-GLAPI void GLAPIENTRY glShadeModel( GLenum mode );
-
-GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param );
-GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname,
-                                 const GLfloat *params );
-GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname,
-                                 const GLint *params );
-
-GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname,
-                                    GLfloat *params );
-GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname,
-                                    GLint *params );
-
-GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param );
-GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param );
-GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params );
-
-GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode );
-
-
-/*
- * Raster functions
- */
-
-GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor );
-
-GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize,
-                                    const GLfloat *values );
-GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize,
-                                     const GLuint *values );
-GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize,
-                                     const GLushort *values );
-
-GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values );
-GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values );
-GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values );
-
-GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height,
-                                GLfloat xorig, GLfloat yorig,
-                                GLfloat xmove, GLfloat ymove,
-                                const GLubyte *bitmap );
-
-GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y,
-                                    GLsizei width, GLsizei height,
-                                    GLenum format, GLenum type,
-                                    GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height,
-                                    GLenum format, GLenum type,
-                                    const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y,
-                                    GLsizei width, GLsizei height,
-                                    GLenum type );
-
-/*
- * Stenciling
- */
-
-GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask );
-
-GLAPI void GLAPIENTRY glStencilMask( GLuint mask );
-
-GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass );
-
-GLAPI void GLAPIENTRY glClearStencil( GLint s );
-
-
-
-/*
- * Texture mapping
- */
-
-GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param );
-GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params );
-GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params );
-GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params );
-GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param );
-GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname,
-                                          const GLfloat *params );
-GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname,
-                                          const GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target,
-                                           GLenum pname, GLfloat *params);
-GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target,
-                                           GLenum pname, GLint *params );
-
-GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level,
-                                                GLenum pname, GLfloat *params );
-GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level,
-                                                GLenum pname, GLint *params );
-
-
-GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level,
-                                    GLint internalFormat,
-                                    GLsizei width, GLint border,
-                                    GLenum format, GLenum type,
-                                    const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level,
-                                    GLint internalFormat,
-                                    GLsizei width, GLsizei height,
-                                    GLint border, GLenum format, GLenum type,
-                                    const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level,
-                                     GLenum format, GLenum type,
-                                     GLvoid *pixels );
-
-
-/* 1.1 functions */
-
-GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures );
-
-GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures);
-
-GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture );
-
-GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n,
-                                            const GLuint *textures,
-                                            const GLclampf *priorities );
-
-GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n,
-                                                  const GLuint *textures,
-                                                  GLboolean *residences );
-
-GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture );
-
-
-GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level,
-                                       GLint xoffset,
-                                       GLsizei width, GLenum format,
-                                       GLenum type, const GLvoid *pixels );
-
-
-GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level,
-                                       GLint xoffset, GLint yoffset,
-                                       GLsizei width, GLsizei height,
-                                       GLenum format, GLenum type,
-                                       const GLvoid *pixels );
-
-
-GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level,
-                                        GLenum internalformat,
-                                        GLint x, GLint y,
-                                        GLsizei width, GLint border );
-
-
-GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level,
-                                        GLenum internalformat,
-                                        GLint x, GLint y,
-                                        GLsizei width, GLsizei height,
-                                        GLint border );
-
-
-GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level,
-                                           GLint xoffset, GLint x, GLint y,
-                                           GLsizei width );
-
-
-GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level,
-                                           GLint xoffset, GLint yoffset,
-                                           GLint x, GLint y,
-                                           GLsizei width, GLsizei height );
-
-
-/*
- * Evaluators
- */
-
-GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2,
-                               GLint stride,
-                               GLint order, const GLdouble *points );
-GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2,
-                               GLint stride,
-                               GLint order, const GLfloat *points );
-
-GLAPI void GLAPIENTRY glMap2d( GLenum target,
-                    GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
-                    GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
-                    const GLdouble *points );
-GLAPI void GLAPIENTRY glMap2f( GLenum target,
-                    GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
-                    GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
-                    const GLfloat *points );
-
-GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v );
-GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v );
-GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v );
-
-GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u );
-GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u );
-
-GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u );
-GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u );
-
-GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v );
-GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v );
-
-GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u );
-GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u );
-
-GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 );
-GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 );
-
-GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2,
-                                   GLint vn, GLdouble v1, GLdouble v2 );
-GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2,
-                                   GLint vn, GLfloat v1, GLfloat v2 );
-
-GLAPI void GLAPIENTRY glEvalPoint1( GLint i );
-
-GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j );
-
-GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 );
-
-GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
-
-
-/*
- * Fog
- */
-
-GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param );
-
-GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param );
-
-GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params );
-
-GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params );
-
-
-/*
- * Selection and Feedback
- */
-
-GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer );
-
-GLAPI void GLAPIENTRY glPassThrough( GLfloat token );
-
-GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer );
-
-GLAPI void GLAPIENTRY glInitNames( void );
-
-GLAPI void GLAPIENTRY glLoadName( GLuint name );
-
-GLAPI void GLAPIENTRY glPushName( GLuint name );
-
-GLAPI void GLAPIENTRY glPopName( void );
-
-
-
-/*
- * OpenGL 1.2
- */
-
-#define GL_RESCALE_NORMAL                      0x803A
-#define GL_CLAMP_TO_EDGE                       0x812F
-#define GL_MAX_ELEMENTS_VERTICES               0x80E8
-#define GL_MAX_ELEMENTS_INDICES                        0x80E9
-#define GL_BGR                                 0x80E0
-#define GL_BGRA                                        0x80E1
-#define GL_UNSIGNED_BYTE_3_3_2                 0x8032
-#define GL_UNSIGNED_BYTE_2_3_3_REV             0x8362
-#define GL_UNSIGNED_SHORT_5_6_5                        0x8363
-#define GL_UNSIGNED_SHORT_5_6_5_REV            0x8364
-#define GL_UNSIGNED_SHORT_4_4_4_4              0x8033
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV          0x8365
-#define GL_UNSIGNED_SHORT_5_5_5_1              0x8034
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV          0x8366
-#define GL_UNSIGNED_INT_8_8_8_8                        0x8035
-#define GL_UNSIGNED_INT_8_8_8_8_REV            0x8367
-#define GL_UNSIGNED_INT_10_10_10_2             0x8036
-#define GL_UNSIGNED_INT_2_10_10_10_REV         0x8368
-#define GL_LIGHT_MODEL_COLOR_CONTROL           0x81F8
-#define GL_SINGLE_COLOR                                0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR             0x81FA
-#define GL_TEXTURE_MIN_LOD                     0x813A
-#define GL_TEXTURE_MAX_LOD                     0x813B
-#define GL_TEXTURE_BASE_LEVEL                  0x813C
-#define GL_TEXTURE_MAX_LEVEL                   0x813D
-#define GL_SMOOTH_POINT_SIZE_RANGE             0x0B12
-#define GL_SMOOTH_POINT_SIZE_GRANULARITY       0x0B13
-#define GL_SMOOTH_LINE_WIDTH_RANGE             0x0B22
-#define GL_SMOOTH_LINE_WIDTH_GRANULARITY       0x0B23
-#define GL_ALIASED_POINT_SIZE_RANGE            0x846D
-#define GL_ALIASED_LINE_WIDTH_RANGE            0x846E
-#define GL_PACK_SKIP_IMAGES                    0x806B
-#define GL_PACK_IMAGE_HEIGHT                   0x806C
-#define GL_UNPACK_SKIP_IMAGES                  0x806D
-#define GL_UNPACK_IMAGE_HEIGHT                 0x806E
-#define GL_TEXTURE_3D                          0x806F
-#define GL_PROXY_TEXTURE_3D                    0x8070
-#define GL_TEXTURE_DEPTH                       0x8071
-#define GL_TEXTURE_WRAP_R                      0x8072
-#define GL_MAX_3D_TEXTURE_SIZE                 0x8073
-#define GL_TEXTURE_BINDING_3D                  0x806A
-
-GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start,
-       GLuint end, GLsizei count, GLenum type, const GLvoid *indices );
-
-GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
-                                      GLint internalFormat,
-                                      GLsizei width, GLsizei height,
-                                      GLsizei depth, GLint border,
-                                      GLenum format, GLenum type,
-                                      const GLvoid *pixels );
-
-GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level,
-                                         GLint xoffset, GLint yoffset,
-                                         GLint zoffset, GLsizei width,
-                                         GLsizei height, GLsizei depth,
-                                         GLenum format,
-                                         GLenum type, const GLvoid *pixels);
-
-GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level,
-                                             GLint xoffset, GLint yoffset,
-                                             GLint zoffset, GLint x,
-                                             GLint y, GLsizei width,
-                                             GLsizei height );
-
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-
-
-/*
- * GL_ARB_imaging
- */
-
-#define GL_CONSTANT_COLOR                      0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR            0x8002
-#define GL_CONSTANT_ALPHA                      0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA            0x8004
-#define GL_COLOR_TABLE                         0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE                0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE       0x80D2
-#define GL_PROXY_COLOR_TABLE                   0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE  0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
-#define GL_COLOR_TABLE_SCALE                   0x80D6
-#define GL_COLOR_TABLE_BIAS                    0x80D7
-#define GL_COLOR_TABLE_FORMAT                  0x80D8
-#define GL_COLOR_TABLE_WIDTH                   0x80D9
-#define GL_COLOR_TABLE_RED_SIZE                        0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE              0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE               0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE              0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE          0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE          0x80DF
-#define GL_CONVOLUTION_1D                      0x8010
-#define GL_CONVOLUTION_2D                      0x8011
-#define GL_SEPARABLE_2D                                0x8012
-#define GL_CONVOLUTION_BORDER_MODE             0x8013
-#define GL_CONVOLUTION_FILTER_SCALE            0x8014
-#define GL_CONVOLUTION_FILTER_BIAS             0x8015
-#define GL_REDUCE                              0x8016
-#define GL_CONVOLUTION_FORMAT                  0x8017
-#define GL_CONVOLUTION_WIDTH                   0x8018
-#define GL_CONVOLUTION_HEIGHT                  0x8019
-#define GL_MAX_CONVOLUTION_WIDTH               0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT              0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE          0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE                0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE         0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE                0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS           0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS         0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS          0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS         0x8023
-#define GL_CONSTANT_BORDER                     0x8151
-#define GL_REPLICATE_BORDER                    0x8153
-#define GL_CONVOLUTION_BORDER_COLOR            0x8154
-#define GL_COLOR_MATRIX                                0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH            0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH                0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE         0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE       0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE                0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE       0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS          0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS                0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS         0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS                0x80BB
-#define GL_HISTOGRAM                           0x8024
-#define GL_PROXY_HISTOGRAM                     0x8025
-#define GL_HISTOGRAM_WIDTH                     0x8026
-#define GL_HISTOGRAM_FORMAT                    0x8027
-#define GL_HISTOGRAM_RED_SIZE                  0x8028
-#define GL_HISTOGRAM_GREEN_SIZE                        0x8029
-#define GL_HISTOGRAM_BLUE_SIZE                 0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE                        0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE            0x802C
-#define GL_HISTOGRAM_SINK                      0x802D
-#define GL_MINMAX                              0x802E
-#define GL_MINMAX_FORMAT                       0x802F
-#define GL_MINMAX_SINK                         0x8030
-#define GL_TABLE_TOO_LARGE                     0x8031
-#define GL_BLEND_EQUATION                      0x8009
-#define GL_MIN                                 0x8007
-#define GL_MAX                                 0x8008
-#define GL_FUNC_ADD                            0x8006
-#define GL_FUNC_SUBTRACT                       0x800A
-#define GL_FUNC_REVERSE_SUBTRACT               0x800B
-#define GL_BLEND_COLOR                         0x8005
-
-
-GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat,
-                                    GLsizei width, GLenum format,
-                                    GLenum type, const GLvoid *table );
-
-GLAPI void GLAPIENTRY glColorSubTable( GLenum target,
-                                       GLsizei start, GLsizei count,
-                                       GLenum format, GLenum type,
-                                       const GLvoid *data );
-
-GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname,
-                                              const GLint *params);
-
-GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname,
-                                              const GLfloat *params);
-
-GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start,
-                                           GLint x, GLint y, GLsizei width );
-
-GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat,
-                                        GLint x, GLint y, GLsizei width );
-
-GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,
-                                       GLenum type, GLvoid *table );
-
-GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,
-                                                  GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,
-                                                  GLint *params );
-
-GLAPI void GLAPIENTRY glBlendEquation( GLenum mode );
-
-GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green,
-                                    GLclampf blue, GLclampf alpha );
-
-GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width,
-                                  GLenum internalformat, GLboolean sink );
-
-GLAPI void GLAPIENTRY glResetHistogram( GLenum target );
-
-GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset,
-                                     GLenum format, GLenum type,
-                                     GLvoid *values );
-
-GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname,
-                                                GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname,
-                                                GLint *params );
-
-GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat,
-                               GLboolean sink );
-
-GLAPI void GLAPIENTRY glResetMinmax( GLenum target );
-
-GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset,
-                                   GLenum format, GLenum types,
-                                   GLvoid *values );
-
-GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname,
-                                             GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname,
-                                             GLint *params );
-
-GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target,
-       GLenum internalformat, GLsizei width, GLenum format, GLenum type,
-       const GLvoid *image );
-
-GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target,
-       GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
-       GLenum type, const GLvoid *image );
-
-GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname,
-       GLfloat params );
-
-GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname,
-       const GLfloat *params );
-
-GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname,
-       GLint params );
-
-GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname,
-       const GLint *params );
-
-GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target,
-       GLenum internalformat, GLint x, GLint y, GLsizei width );
-
-GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target,
-       GLenum internalformat, GLint x, GLint y, GLsizei width,
-       GLsizei height);
-
-GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format,
-       GLenum type, GLvoid *image );
-
-GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname,
-       GLfloat *params );
-
-GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname,
-       GLint *params );
-
-GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target,
-       GLenum internalformat, GLsizei width, GLsizei height, GLenum format,
-       GLenum type, const GLvoid *row, const GLvoid *column );
-
-GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,
-       GLenum type, GLvoid *row, GLvoid *column, GLvoid *span );
-
-
-
-
-/*
- * OpenGL 1.3
- */
-
-/* multitexture */
-#define GL_TEXTURE0                            0x84C0
-#define GL_TEXTURE1                            0x84C1
-#define GL_TEXTURE2                            0x84C2
-#define GL_TEXTURE3                            0x84C3
-#define GL_TEXTURE4                            0x84C4
-#define GL_TEXTURE5                            0x84C5
-#define GL_TEXTURE6                            0x84C6
-#define GL_TEXTURE7                            0x84C7
-#define GL_TEXTURE8                            0x84C8
-#define GL_TEXTURE9                            0x84C9
-#define GL_TEXTURE10                           0x84CA
-#define GL_TEXTURE11                           0x84CB
-#define GL_TEXTURE12                           0x84CC
-#define GL_TEXTURE13                           0x84CD
-#define GL_TEXTURE14                           0x84CE
-#define GL_TEXTURE15                           0x84CF
-#define GL_TEXTURE16                           0x84D0
-#define GL_TEXTURE17                           0x84D1
-#define GL_TEXTURE18                           0x84D2
-#define GL_TEXTURE19                           0x84D3
-#define GL_TEXTURE20                           0x84D4
-#define GL_TEXTURE21                           0x84D5
-#define GL_TEXTURE22                           0x84D6
-#define GL_TEXTURE23                           0x84D7
-#define GL_TEXTURE24                           0x84D8
-#define GL_TEXTURE25                           0x84D9
-#define GL_TEXTURE26                           0x84DA
-#define GL_TEXTURE27                           0x84DB
-#define GL_TEXTURE28                           0x84DC
-#define GL_TEXTURE29                           0x84DD
-#define GL_TEXTURE30                           0x84DE
-#define GL_TEXTURE31                           0x84DF
-#define GL_ACTIVE_TEXTURE                      0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE               0x84E1
-#define GL_MAX_TEXTURE_UNITS                   0x84E2
-/* texture_cube_map */
-#define GL_NORMAL_MAP                          0x8511
-#define GL_REFLECTION_MAP                      0x8512
-#define GL_TEXTURE_CUBE_MAP                    0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP            0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X         0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X         0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y         0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y         0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z         0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z         0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP              0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE           0x851C
-/* texture_compression */
-#define GL_COMPRESSED_ALPHA                    0x84E9
-#define GL_COMPRESSED_LUMINANCE                        0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA          0x84EB
-#define GL_COMPRESSED_INTENSITY                        0x84EC
-#define GL_COMPRESSED_RGB                      0x84ED
-#define GL_COMPRESSED_RGBA                     0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT            0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE       0x86A0
-#define GL_TEXTURE_COMPRESSED                  0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS      0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS          0x86A3
-/* multisample */
-#define GL_MULTISAMPLE                         0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE            0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE                 0x809F
-#define GL_SAMPLE_COVERAGE                     0x80A0
-#define GL_SAMPLE_BUFFERS                      0x80A8
-#define GL_SAMPLES                             0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE               0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT              0x80AB
-#define GL_MULTISAMPLE_BIT                     0x20000000
-/* transpose_matrix */
-#define GL_TRANSPOSE_MODELVIEW_MATRIX          0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX         0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX            0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX              0x84E6
-/* texture_env_combine */
-#define GL_COMBINE                             0x8570
-#define GL_COMBINE_RGB                         0x8571
-#define GL_COMBINE_ALPHA                       0x8572
-#define GL_SOURCE0_RGB                         0x8580
-#define GL_SOURCE1_RGB                         0x8581
-#define GL_SOURCE2_RGB                         0x8582
-#define GL_SOURCE0_ALPHA                       0x8588
-#define GL_SOURCE1_ALPHA                       0x8589
-#define GL_SOURCE2_ALPHA                       0x858A
-#define GL_OPERAND0_RGB                                0x8590
-#define GL_OPERAND1_RGB                                0x8591
-#define GL_OPERAND2_RGB                                0x8592
-#define GL_OPERAND0_ALPHA                      0x8598
-#define GL_OPERAND1_ALPHA                      0x8599
-#define GL_OPERAND2_ALPHA                      0x859A
-#define GL_RGB_SCALE                           0x8573
-#define GL_ADD_SIGNED                          0x8574
-#define GL_INTERPOLATE                         0x8575
-#define GL_SUBTRACT                            0x84E7
-#define GL_CONSTANT                            0x8576
-#define GL_PRIMARY_COLOR                       0x8577
-#define GL_PREVIOUS                            0x8578
-/* texture_env_dot3 */
-#define GL_DOT3_RGB                            0x86AE
-#define GL_DOT3_RGBA                           0x86AF
-/* texture_border_clamp */
-#define GL_CLAMP_TO_BORDER                     0x812D
-
-GLAPI void GLAPIENTRY glActiveTexture( GLenum texture );
-
-GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture );
-
-GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );
-
-GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s );
-
-GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );
-
-GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );
-
-GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );
-
-GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );
-
-
-GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );
-
-GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );
-
-GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );
-
-GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );
-
-GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );
-
-
-typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
-
-
-
-/*
- * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)
- */
-#ifndef GL_ARB_multitexture
-#define GL_ARB_multitexture 1
-
-#define GL_TEXTURE0_ARB                                0x84C0
-#define GL_TEXTURE1_ARB                                0x84C1
-#define GL_TEXTURE2_ARB                                0x84C2
-#define GL_TEXTURE3_ARB                                0x84C3
-#define GL_TEXTURE4_ARB                                0x84C4
-#define GL_TEXTURE5_ARB                                0x84C5
-#define GL_TEXTURE6_ARB                                0x84C6
-#define GL_TEXTURE7_ARB                                0x84C7
-#define GL_TEXTURE8_ARB                                0x84C8
-#define GL_TEXTURE9_ARB                                0x84C9
-#define GL_TEXTURE10_ARB                       0x84CA
-#define GL_TEXTURE11_ARB                       0x84CB
-#define GL_TEXTURE12_ARB                       0x84CC
-#define GL_TEXTURE13_ARB                       0x84CD
-#define GL_TEXTURE14_ARB                       0x84CE
-#define GL_TEXTURE15_ARB                       0x84CF
-#define GL_TEXTURE16_ARB                       0x84D0
-#define GL_TEXTURE17_ARB                       0x84D1
-#define GL_TEXTURE18_ARB                       0x84D2
-#define GL_TEXTURE19_ARB                       0x84D3
-#define GL_TEXTURE20_ARB                       0x84D4
-#define GL_TEXTURE21_ARB                       0x84D5
-#define GL_TEXTURE22_ARB                       0x84D6
-#define GL_TEXTURE23_ARB                       0x84D7
-#define GL_TEXTURE24_ARB                       0x84D8
-#define GL_TEXTURE25_ARB                       0x84D9
-#define GL_TEXTURE26_ARB                       0x84DA
-#define GL_TEXTURE27_ARB                       0x84DB
-#define GL_TEXTURE28_ARB                       0x84DC
-#define GL_TEXTURE29_ARB                       0x84DD
-#define GL_TEXTURE30_ARB                       0x84DE
-#define GL_TEXTURE31_ARB                       0x84DF
-#define GL_ACTIVE_TEXTURE_ARB                  0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE_ARB           0x84E1
-#define GL_MAX_TEXTURE_UNITS_ARB               0x84E2
-
-GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture);
-GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture);
-GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s);
-GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s);
-GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s);
-GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s);
-GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);
-GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);
-GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);
-GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);
-GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);
-GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);
-GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);
-GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);
-GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);
-GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v);
-GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v);
-
-typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
-
-#endif /* GL_ARB_multitexture */
-
-
-
-/*
- * Define this token if you want "old-style" header file behaviour (extensions
- * defined in gl.h).  Otherwise, extensions will be included from glext.h.
- */
-#if !defined(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY)
-#include "SDL_opengl_glext.h"
-#endif  /* GL_GLEXT_LEGACY */
-
-
-
-/*
- * ???. GL_MESA_packed_depth_stencil
- * XXX obsolete
- */
-#ifndef GL_MESA_packed_depth_stencil
-#define GL_MESA_packed_depth_stencil 1
-
-#define GL_DEPTH_STENCIL_MESA                  0x8750
-#define GL_UNSIGNED_INT_24_8_MESA              0x8751
-#define GL_UNSIGNED_INT_8_24_REV_MESA          0x8752
-#define GL_UNSIGNED_SHORT_15_1_MESA            0x8753
-#define GL_UNSIGNED_SHORT_1_15_REV_MESA                0x8754
-
-#endif /* GL_MESA_packed_depth_stencil */
-
-
-#ifndef GL_ATI_blend_equation_separate
-#define GL_ATI_blend_equation_separate 1
-
-#define GL_ALPHA_BLEND_EQUATION_ATI            0x883D
-
-GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA );
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA);
-
-#endif /* GL_ATI_blend_equation_separate */
-
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-typedef void* GLeglImageOES;
-#endif
-
-#ifndef GL_OES_EGL_image
-#define GL_OES_EGL_image 1
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
-GLAPI void APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
-#endif
-typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
-typedef void (APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
-#endif
-
-
-/**
- ** NOTE!!!!!  If you add new functions to this file, or update
- ** glext.h be sure to regenerate the gl_mangle.h file.  See comments
- ** in that file for details.
- **/
-
-
-
-/**********************************************************************
- * Begin system-specific stuff
- */
-#if defined(PRAGMA_EXPORT_SUPPORTED)
-#pragma export off
-#endif
-
-/*
- * End system-specific stuff
- **********************************************************************/
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl_h_ */
-
-#endif /* !__IPHONEOS__ */
-
-#endif /* SDL_opengl_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h
deleted file mode 100644 (file)
index cd3869f..0000000
+++ /dev/null
@@ -1,11177 +0,0 @@
-#ifndef __glext_h_
-#define __glext_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2013-2014 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-/*
-** This header is generated from the Khronos OpenGL / OpenGL ES XML
-** API Registry. The current version of the Registry, generator scripts
-** used to make the header, and the header can be found at
-**   http://www.opengl.org/registry/
-**
-** Khronos $Revision: 26745 $ on $Date: 2014-05-21 03:12:26 -0700 (Wed, 21 May 2014) $
-*/
-
-#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#include <windows.h>
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY
-#endif
-#ifndef APIENTRYP
-#define APIENTRYP APIENTRY *
-#endif
-#ifndef GLAPI
-#define GLAPI extern
-#endif
-
-#define GL_GLEXT_VERSION 20140521
-
-/* Generated C header for:
- * API: gl
- * Profile: compatibility
- * Versions considered: .*
- * Versions emitted: 1\.[2-9]|[234]\.[0-9]
- * Default extensions included: gl
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef GL_VERSION_1_2
-#define GL_VERSION_1_2 1
-#define GL_UNSIGNED_BYTE_3_3_2            0x8032
-#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
-#define GL_UNSIGNED_INT_8_8_8_8           0x8035
-#define GL_UNSIGNED_INT_10_10_10_2        0x8036
-#define GL_TEXTURE_BINDING_3D             0x806A
-#define GL_PACK_SKIP_IMAGES               0x806B
-#define GL_PACK_IMAGE_HEIGHT              0x806C
-#define GL_UNPACK_SKIP_IMAGES             0x806D
-#define GL_UNPACK_IMAGE_HEIGHT            0x806E
-#define GL_TEXTURE_3D                     0x806F
-#define GL_PROXY_TEXTURE_3D               0x8070
-#define GL_TEXTURE_DEPTH                  0x8071
-#define GL_TEXTURE_WRAP_R                 0x8072
-#define GL_MAX_3D_TEXTURE_SIZE            0x8073
-#define GL_UNSIGNED_BYTE_2_3_3_REV        0x8362
-#define GL_UNSIGNED_SHORT_5_6_5           0x8363
-#define GL_UNSIGNED_SHORT_5_6_5_REV       0x8364
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV     0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV     0x8366
-#define GL_UNSIGNED_INT_8_8_8_8_REV       0x8367
-#define GL_UNSIGNED_INT_2_10_10_10_REV    0x8368
-#define GL_BGR                            0x80E0
-#define GL_BGRA                           0x80E1
-#define GL_MAX_ELEMENTS_VERTICES          0x80E8
-#define GL_MAX_ELEMENTS_INDICES           0x80E9
-#define GL_CLAMP_TO_EDGE                  0x812F
-#define GL_TEXTURE_MIN_LOD                0x813A
-#define GL_TEXTURE_MAX_LOD                0x813B
-#define GL_TEXTURE_BASE_LEVEL             0x813C
-#define GL_TEXTURE_MAX_LEVEL              0x813D
-#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12
-#define GL_SMOOTH_POINT_SIZE_GRANULARITY  0x0B13
-#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22
-#define GL_SMOOTH_LINE_WIDTH_GRANULARITY  0x0B23
-#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
-#define GL_RESCALE_NORMAL                 0x803A
-#define GL_LIGHT_MODEL_COLOR_CONTROL      0x81F8
-#define GL_SINGLE_COLOR                   0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR        0x81FA
-#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_VERSION_1_2 */
-
-#ifndef GL_VERSION_1_3
-#define GL_VERSION_1_3 1
-#define GL_TEXTURE0                       0x84C0
-#define GL_TEXTURE1                       0x84C1
-#define GL_TEXTURE2                       0x84C2
-#define GL_TEXTURE3                       0x84C3
-#define GL_TEXTURE4                       0x84C4
-#define GL_TEXTURE5                       0x84C5
-#define GL_TEXTURE6                       0x84C6
-#define GL_TEXTURE7                       0x84C7
-#define GL_TEXTURE8                       0x84C8
-#define GL_TEXTURE9                       0x84C9
-#define GL_TEXTURE10                      0x84CA
-#define GL_TEXTURE11                      0x84CB
-#define GL_TEXTURE12                      0x84CC
-#define GL_TEXTURE13                      0x84CD
-#define GL_TEXTURE14                      0x84CE
-#define GL_TEXTURE15                      0x84CF
-#define GL_TEXTURE16                      0x84D0
-#define GL_TEXTURE17                      0x84D1
-#define GL_TEXTURE18                      0x84D2
-#define GL_TEXTURE19                      0x84D3
-#define GL_TEXTURE20                      0x84D4
-#define GL_TEXTURE21                      0x84D5
-#define GL_TEXTURE22                      0x84D6
-#define GL_TEXTURE23                      0x84D7
-#define GL_TEXTURE24                      0x84D8
-#define GL_TEXTURE25                      0x84D9
-#define GL_TEXTURE26                      0x84DA
-#define GL_TEXTURE27                      0x84DB
-#define GL_TEXTURE28                      0x84DC
-#define GL_TEXTURE29                      0x84DD
-#define GL_TEXTURE30                      0x84DE
-#define GL_TEXTURE31                      0x84DF
-#define GL_ACTIVE_TEXTURE                 0x84E0
-#define GL_MULTISAMPLE                    0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
-#define GL_SAMPLE_COVERAGE                0x80A0
-#define GL_SAMPLE_BUFFERS                 0x80A8
-#define GL_SAMPLES                        0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
-#define GL_TEXTURE_CUBE_MAP               0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP         0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
-#define GL_COMPRESSED_RGB                 0x84ED
-#define GL_COMPRESSED_RGBA                0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT       0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE  0x86A0
-#define GL_TEXTURE_COMPRESSED             0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
-#define GL_CLAMP_TO_BORDER                0x812D
-#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
-#define GL_MAX_TEXTURE_UNITS              0x84E2
-#define GL_TRANSPOSE_MODELVIEW_MATRIX     0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX    0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX       0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX         0x84E6
-#define GL_MULTISAMPLE_BIT                0x20000000
-#define GL_NORMAL_MAP                     0x8511
-#define GL_REFLECTION_MAP                 0x8512
-#define GL_COMPRESSED_ALPHA               0x84E9
-#define GL_COMPRESSED_LUMINANCE           0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA     0x84EB
-#define GL_COMPRESSED_INTENSITY           0x84EC
-#define GL_COMBINE                        0x8570
-#define GL_COMBINE_RGB                    0x8571
-#define GL_COMBINE_ALPHA                  0x8572
-#define GL_SOURCE0_RGB                    0x8580
-#define GL_SOURCE1_RGB                    0x8581
-#define GL_SOURCE2_RGB                    0x8582
-#define GL_SOURCE0_ALPHA                  0x8588
-#define GL_SOURCE1_ALPHA                  0x8589
-#define GL_SOURCE2_ALPHA                  0x858A
-#define GL_OPERAND0_RGB                   0x8590
-#define GL_OPERAND1_RGB                   0x8591
-#define GL_OPERAND2_RGB                   0x8592
-#define GL_OPERAND0_ALPHA                 0x8598
-#define GL_OPERAND1_ALPHA                 0x8599
-#define GL_OPERAND2_ALPHA                 0x859A
-#define GL_RGB_SCALE                      0x8573
-#define GL_ADD_SIGNED                     0x8574
-#define GL_INTERPOLATE                    0x8575
-#define GL_SUBTRACT                       0x84E7
-#define GL_CONSTANT                       0x8576
-#define GL_PRIMARY_COLOR                  0x8577
-#define GL_PREVIOUS                       0x8578
-#define GL_DOT3_RGB                       0x86AE
-#define GL_DOT3_RGBA                      0x86AF
-typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);
-typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTexture (GLenum texture);
-GLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);
-GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img);
-GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
-GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);
-GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s);
-GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s);
-GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s);
-GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);
-GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);
-GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t);
-GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);
-GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);
-GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);
-GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);
-GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m);
-GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);
-GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);
-GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);
-#endif
-#endif /* GL_VERSION_1_3 */
-
-#ifndef GL_VERSION_1_4
-#define GL_VERSION_1_4 1
-#define GL_BLEND_DST_RGB                  0x80C8
-#define GL_BLEND_SRC_RGB                  0x80C9
-#define GL_BLEND_DST_ALPHA                0x80CA
-#define GL_BLEND_SRC_ALPHA                0x80CB
-#define GL_POINT_FADE_THRESHOLD_SIZE      0x8128
-#define GL_DEPTH_COMPONENT16              0x81A5
-#define GL_DEPTH_COMPONENT24              0x81A6
-#define GL_DEPTH_COMPONENT32              0x81A7
-#define GL_MIRRORED_REPEAT                0x8370
-#define GL_MAX_TEXTURE_LOD_BIAS           0x84FD
-#define GL_TEXTURE_LOD_BIAS               0x8501
-#define GL_INCR_WRAP                      0x8507
-#define GL_DECR_WRAP                      0x8508
-#define GL_TEXTURE_DEPTH_SIZE             0x884A
-#define GL_TEXTURE_COMPARE_MODE           0x884C
-#define GL_TEXTURE_COMPARE_FUNC           0x884D
-#define GL_POINT_SIZE_MIN                 0x8126
-#define GL_POINT_SIZE_MAX                 0x8127
-#define GL_POINT_DISTANCE_ATTENUATION     0x8129
-#define GL_GENERATE_MIPMAP                0x8191
-#define GL_GENERATE_MIPMAP_HINT           0x8192
-#define GL_FOG_COORDINATE_SOURCE          0x8450
-#define GL_FOG_COORDINATE                 0x8451
-#define GL_FRAGMENT_DEPTH                 0x8452
-#define GL_CURRENT_FOG_COORDINATE         0x8453
-#define GL_FOG_COORDINATE_ARRAY_TYPE      0x8454
-#define GL_FOG_COORDINATE_ARRAY_STRIDE    0x8455
-#define GL_FOG_COORDINATE_ARRAY_POINTER   0x8456
-#define GL_FOG_COORDINATE_ARRAY           0x8457
-#define GL_COLOR_SUM                      0x8458
-#define GL_CURRENT_SECONDARY_COLOR        0x8459
-#define GL_SECONDARY_COLOR_ARRAY_SIZE     0x845A
-#define GL_SECONDARY_COLOR_ARRAY_TYPE     0x845B
-#define GL_SECONDARY_COLOR_ARRAY_STRIDE   0x845C
-#define GL_SECONDARY_COLOR_ARRAY_POINTER  0x845D
-#define GL_SECONDARY_COLOR_ARRAY          0x845E
-#define GL_TEXTURE_FILTER_CONTROL         0x8500
-#define GL_DEPTH_TEXTURE_MODE             0x884B
-#define GL_COMPARE_R_TO_TEXTURE           0x884E
-#define GL_FUNC_ADD                       0x8006
-#define GL_FUNC_SUBTRACT                  0x800A
-#define GL_FUNC_REVERSE_SUBTRACT          0x800B
-#define GL_MIN                            0x8007
-#define GL_MAX                            0x8008
-#define GL_CONSTANT_COLOR                 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
-#define GL_CONSTANT_ALPHA                 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
-typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
-GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
-GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
-GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glFogCoordf (GLfloat coord);
-GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);
-GLAPI void APIENTRY glFogCoordd (GLdouble coord);
-GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord);
-GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);
-GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v);
-GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);
-GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v);
-GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);
-GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v);
-GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue);
-GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v);
-GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);
-GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v);
-GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);
-GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v);
-GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);
-GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v);
-GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);
-GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v);
-GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y);
-GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y);
-GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y);
-GLAPI void APIENTRY glWindowPos2iv (const GLint *v);
-GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y);
-GLAPI void APIENTRY glWindowPos2sv (const GLshort *v);
-GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glWindowPos3iv (const GLint *v);
-GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glWindowPos3sv (const GLshort *v);
-GLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-GLAPI void APIENTRY glBlendEquation (GLenum mode);
-#endif
-#endif /* GL_VERSION_1_4 */
-
-#ifndef GL_VERSION_1_5
-#define GL_VERSION_1_5 1
-#include <stddef.h>
-#ifdef __MACOSX__
-typedef long GLsizeiptr;
-typedef long GLintptr;
-#else
-typedef ptrdiff_t GLsizeiptr;
-typedef ptrdiff_t GLintptr;
-#endif
-#define GL_BUFFER_SIZE                    0x8764
-#define GL_BUFFER_USAGE                   0x8765
-#define GL_QUERY_COUNTER_BITS             0x8864
-#define GL_CURRENT_QUERY                  0x8865
-#define GL_QUERY_RESULT                   0x8866
-#define GL_QUERY_RESULT_AVAILABLE         0x8867
-#define GL_ARRAY_BUFFER                   0x8892
-#define GL_ELEMENT_ARRAY_BUFFER           0x8893
-#define GL_ARRAY_BUFFER_BINDING           0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
-#define GL_READ_ONLY                      0x88B8
-#define GL_WRITE_ONLY                     0x88B9
-#define GL_READ_WRITE                     0x88BA
-#define GL_BUFFER_ACCESS                  0x88BB
-#define GL_BUFFER_MAPPED                  0x88BC
-#define GL_BUFFER_MAP_POINTER             0x88BD
-#define GL_STREAM_DRAW                    0x88E0
-#define GL_STREAM_READ                    0x88E1
-#define GL_STREAM_COPY                    0x88E2
-#define GL_STATIC_DRAW                    0x88E4
-#define GL_STATIC_READ                    0x88E5
-#define GL_STATIC_COPY                    0x88E6
-#define GL_DYNAMIC_DRAW                   0x88E8
-#define GL_DYNAMIC_READ                   0x88E9
-#define GL_DYNAMIC_COPY                   0x88EA
-#define GL_SAMPLES_PASSED                 0x8914
-#define GL_SRC1_ALPHA                     0x8589
-#define GL_VERTEX_ARRAY_BUFFER_BINDING    0x8896
-#define GL_NORMAL_ARRAY_BUFFER_BINDING    0x8897
-#define GL_COLOR_ARRAY_BUFFER_BINDING     0x8898
-#define GL_INDEX_ARRAY_BUFFER_BINDING     0x8899
-#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
-#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B
-#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C
-#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D
-#define GL_WEIGHT_ARRAY_BUFFER_BINDING    0x889E
-#define GL_FOG_COORD_SRC                  0x8450
-#define GL_FOG_COORD                      0x8451
-#define GL_CURRENT_FOG_COORD              0x8453
-#define GL_FOG_COORD_ARRAY_TYPE           0x8454
-#define GL_FOG_COORD_ARRAY_STRIDE         0x8455
-#define GL_FOG_COORD_ARRAY_POINTER        0x8456
-#define GL_FOG_COORD_ARRAY                0x8457
-#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D
-#define GL_SRC0_RGB                       0x8580
-#define GL_SRC1_RGB                       0x8581
-#define GL_SRC2_RGB                       0x8582
-#define GL_SRC0_ALPHA                     0x8588
-#define GL_SRC2_ALPHA                     0x858A
-typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
-typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
-typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
-typedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
-GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
-GLAPI void APIENTRY glEndQuery (GLenum target);
-GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
-GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
-GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
-GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
-GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
-GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
-GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data);
-GLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
-GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_VERSION_1_5 */
-
-#ifndef GL_VERSION_2_0
-#define GL_VERSION_2_0 1
-typedef char GLchar;
-#define GL_BLEND_EQUATION_RGB             0x8009
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED    0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE       0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE     0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE       0x8625
-#define GL_CURRENT_VERTEX_ATTRIB          0x8626
-#define GL_VERTEX_PROGRAM_POINT_SIZE      0x8642
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER    0x8645
-#define GL_STENCIL_BACK_FUNC              0x8800
-#define GL_STENCIL_BACK_FAIL              0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
-#define GL_MAX_DRAW_BUFFERS               0x8824
-#define GL_DRAW_BUFFER0                   0x8825
-#define GL_DRAW_BUFFER1                   0x8826
-#define GL_DRAW_BUFFER2                   0x8827
-#define GL_DRAW_BUFFER3                   0x8828
-#define GL_DRAW_BUFFER4                   0x8829
-#define GL_DRAW_BUFFER5                   0x882A
-#define GL_DRAW_BUFFER6                   0x882B
-#define GL_DRAW_BUFFER7                   0x882C
-#define GL_DRAW_BUFFER8                   0x882D
-#define GL_DRAW_BUFFER9                   0x882E
-#define GL_DRAW_BUFFER10                  0x882F
-#define GL_DRAW_BUFFER11                  0x8830
-#define GL_DRAW_BUFFER12                  0x8831
-#define GL_DRAW_BUFFER13                  0x8832
-#define GL_DRAW_BUFFER14                  0x8833
-#define GL_DRAW_BUFFER15                  0x8834
-#define GL_BLEND_EQUATION_ALPHA           0x883D
-#define GL_MAX_VERTEX_ATTRIBS             0x8869
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
-#define GL_MAX_TEXTURE_IMAGE_UNITS        0x8872
-#define GL_FRAGMENT_SHADER                0x8B30
-#define GL_VERTEX_SHADER                  0x8B31
-#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
-#define GL_MAX_VERTEX_UNIFORM_COMPONENTS  0x8B4A
-#define GL_MAX_VARYING_FLOATS             0x8B4B
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
-#define GL_SHADER_TYPE                    0x8B4F
-#define GL_FLOAT_VEC2                     0x8B50
-#define GL_FLOAT_VEC3                     0x8B51
-#define GL_FLOAT_VEC4                     0x8B52
-#define GL_INT_VEC2                       0x8B53
-#define GL_INT_VEC3                       0x8B54
-#define GL_INT_VEC4                       0x8B55
-#define GL_BOOL                           0x8B56
-#define GL_BOOL_VEC2                      0x8B57
-#define GL_BOOL_VEC3                      0x8B58
-#define GL_BOOL_VEC4                      0x8B59
-#define GL_FLOAT_MAT2                     0x8B5A
-#define GL_FLOAT_MAT3                     0x8B5B
-#define GL_FLOAT_MAT4                     0x8B5C
-#define GL_SAMPLER_1D                     0x8B5D
-#define GL_SAMPLER_2D                     0x8B5E
-#define GL_SAMPLER_3D                     0x8B5F
-#define GL_SAMPLER_CUBE                   0x8B60
-#define GL_SAMPLER_1D_SHADOW              0x8B61
-#define GL_SAMPLER_2D_SHADOW              0x8B62
-#define GL_DELETE_STATUS                  0x8B80
-#define GL_COMPILE_STATUS                 0x8B81
-#define GL_LINK_STATUS                    0x8B82
-#define GL_VALIDATE_STATUS                0x8B83
-#define GL_INFO_LOG_LENGTH                0x8B84
-#define GL_ATTACHED_SHADERS               0x8B85
-#define GL_ACTIVE_UNIFORMS                0x8B86
-#define GL_ACTIVE_UNIFORM_MAX_LENGTH      0x8B87
-#define GL_SHADER_SOURCE_LENGTH           0x8B88
-#define GL_ACTIVE_ATTRIBUTES              0x8B89
-#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH    0x8B8A
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
-#define GL_SHADING_LANGUAGE_VERSION       0x8B8C
-#define GL_CURRENT_PROGRAM                0x8B8D
-#define GL_POINT_SPRITE_COORD_ORIGIN      0x8CA0
-#define GL_LOWER_LEFT                     0x8CA1
-#define GL_UPPER_LEFT                     0x8CA2
-#define GL_STENCIL_BACK_REF               0x8CA3
-#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
-#define GL_STENCIL_BACK_WRITEMASK         0x8CA5
-#define GL_VERTEX_PROGRAM_TWO_SIDE        0x8643
-#define GL_POINT_SPRITE                   0x8861
-#define GL_COORD_REPLACE                  0x8862
-#define GL_MAX_TEXTURE_COORDS             0x8871
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
-typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
-typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
-typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
-typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
-typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
-typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
-typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
-typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
-typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
-GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-GLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
-GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
-GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
-GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
-GLAPI void APIENTRY glCompileShader (GLuint shader);
-GLAPI GLuint APIENTRY glCreateProgram (void);
-GLAPI GLuint APIENTRY glCreateShader (GLenum type);
-GLAPI void APIENTRY glDeleteProgram (GLuint program);
-GLAPI void APIENTRY glDeleteShader (GLuint shader);
-GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
-GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
-GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
-GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
-GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
-GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
-GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
-GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
-GLAPI void APIENTRY glLinkProgram (GLuint program);
-GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
-GLAPI void APIENTRY glUseProgram (GLuint program);
-GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
-GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
-GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glValidateProgram (GLuint program);
-GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_VERSION_2_0 */
-
-#ifndef GL_VERSION_2_1
-#define GL_VERSION_2_1 1
-#define GL_PIXEL_PACK_BUFFER              0x88EB
-#define GL_PIXEL_UNPACK_BUFFER            0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING      0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING    0x88EF
-#define GL_FLOAT_MAT2x3                   0x8B65
-#define GL_FLOAT_MAT2x4                   0x8B66
-#define GL_FLOAT_MAT3x2                   0x8B67
-#define GL_FLOAT_MAT3x4                   0x8B68
-#define GL_FLOAT_MAT4x2                   0x8B69
-#define GL_FLOAT_MAT4x3                   0x8B6A
-#define GL_SRGB                           0x8C40
-#define GL_SRGB8                          0x8C41
-#define GL_SRGB_ALPHA                     0x8C42
-#define GL_SRGB8_ALPHA8                   0x8C43
-#define GL_COMPRESSED_SRGB                0x8C48
-#define GL_COMPRESSED_SRGB_ALPHA          0x8C49
-#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F
-#define GL_SLUMINANCE_ALPHA               0x8C44
-#define GL_SLUMINANCE8_ALPHA8             0x8C45
-#define GL_SLUMINANCE                     0x8C46
-#define GL_SLUMINANCE8                    0x8C47
-#define GL_COMPRESSED_SLUMINANCE          0x8C4A
-#define GL_COMPRESSED_SLUMINANCE_ALPHA    0x8C4B
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-#endif
-#endif /* GL_VERSION_2_1 */
-
-#ifndef GL_VERSION_3_0
-#define GL_VERSION_3_0 1
-typedef unsigned short GLhalf;
-#define GL_COMPARE_REF_TO_TEXTURE         0x884E
-#define GL_CLIP_DISTANCE0                 0x3000
-#define GL_CLIP_DISTANCE1                 0x3001
-#define GL_CLIP_DISTANCE2                 0x3002
-#define GL_CLIP_DISTANCE3                 0x3003
-#define GL_CLIP_DISTANCE4                 0x3004
-#define GL_CLIP_DISTANCE5                 0x3005
-#define GL_CLIP_DISTANCE6                 0x3006
-#define GL_CLIP_DISTANCE7                 0x3007
-#define GL_MAX_CLIP_DISTANCES             0x0D32
-#define GL_MAJOR_VERSION                  0x821B
-#define GL_MINOR_VERSION                  0x821C
-#define GL_NUM_EXTENSIONS                 0x821D
-#define GL_CONTEXT_FLAGS                  0x821E
-#define GL_COMPRESSED_RED                 0x8225
-#define GL_COMPRESSED_RG                  0x8226
-#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001
-#define GL_RGBA32F                        0x8814
-#define GL_RGB32F                         0x8815
-#define GL_RGBA16F                        0x881A
-#define GL_RGB16F                         0x881B
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER    0x88FD
-#define GL_MAX_ARRAY_TEXTURE_LAYERS       0x88FF
-#define GL_MIN_PROGRAM_TEXEL_OFFSET       0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET       0x8905
-#define GL_CLAMP_READ_COLOR               0x891C
-#define GL_FIXED_ONLY                     0x891D
-#define GL_MAX_VARYING_COMPONENTS         0x8B4B
-#define GL_TEXTURE_1D_ARRAY               0x8C18
-#define GL_PROXY_TEXTURE_1D_ARRAY         0x8C19
-#define GL_TEXTURE_2D_ARRAY               0x8C1A
-#define GL_PROXY_TEXTURE_2D_ARRAY         0x8C1B
-#define GL_TEXTURE_BINDING_1D_ARRAY       0x8C1C
-#define GL_TEXTURE_BINDING_2D_ARRAY       0x8C1D
-#define GL_R11F_G11F_B10F                 0x8C3A
-#define GL_UNSIGNED_INT_10F_11F_11F_REV   0x8C3B
-#define GL_RGB9_E5                        0x8C3D
-#define GL_UNSIGNED_INT_5_9_9_9_REV       0x8C3E
-#define GL_TEXTURE_SHARED_SIZE            0x8C3F
-#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
-#define GL_TRANSFORM_FEEDBACK_VARYINGS    0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
-#define GL_PRIMITIVES_GENERATED           0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
-#define GL_RASTERIZER_DISCARD             0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
-#define GL_INTERLEAVED_ATTRIBS            0x8C8C
-#define GL_SEPARATE_ATTRIBS               0x8C8D
-#define GL_TRANSFORM_FEEDBACK_BUFFER      0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
-#define GL_RGBA32UI                       0x8D70
-#define GL_RGB32UI                        0x8D71
-#define GL_RGBA16UI                       0x8D76
-#define GL_RGB16UI                        0x8D77
-#define GL_RGBA8UI                        0x8D7C
-#define GL_RGB8UI                         0x8D7D
-#define GL_RGBA32I                        0x8D82
-#define GL_RGB32I                         0x8D83
-#define GL_RGBA16I                        0x8D88
-#define GL_RGB16I                         0x8D89
-#define GL_RGBA8I                         0x8D8E
-#define GL_RGB8I                          0x8D8F
-#define GL_RED_INTEGER                    0x8D94
-#define GL_GREEN_INTEGER                  0x8D95
-#define GL_BLUE_INTEGER                   0x8D96
-#define GL_RGB_INTEGER                    0x8D98
-#define GL_RGBA_INTEGER                   0x8D99
-#define GL_BGR_INTEGER                    0x8D9A
-#define GL_BGRA_INTEGER                   0x8D9B
-#define GL_SAMPLER_1D_ARRAY               0x8DC0
-#define GL_SAMPLER_2D_ARRAY               0x8DC1
-#define GL_SAMPLER_1D_ARRAY_SHADOW        0x8DC3
-#define GL_SAMPLER_2D_ARRAY_SHADOW        0x8DC4
-#define GL_SAMPLER_CUBE_SHADOW            0x8DC5
-#define GL_UNSIGNED_INT_VEC2              0x8DC6
-#define GL_UNSIGNED_INT_VEC3              0x8DC7
-#define GL_UNSIGNED_INT_VEC4              0x8DC8
-#define GL_INT_SAMPLER_1D                 0x8DC9
-#define GL_INT_SAMPLER_2D                 0x8DCA
-#define GL_INT_SAMPLER_3D                 0x8DCB
-#define GL_INT_SAMPLER_CUBE               0x8DCC
-#define GL_INT_SAMPLER_1D_ARRAY           0x8DCE
-#define GL_INT_SAMPLER_2D_ARRAY           0x8DCF
-#define GL_UNSIGNED_INT_SAMPLER_1D        0x8DD1
-#define GL_UNSIGNED_INT_SAMPLER_2D        0x8DD2
-#define GL_UNSIGNED_INT_SAMPLER_3D        0x8DD3
-#define GL_UNSIGNED_INT_SAMPLER_CUBE      0x8DD4
-#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY  0x8DD6
-#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY  0x8DD7
-#define GL_QUERY_WAIT                     0x8E13
-#define GL_QUERY_NO_WAIT                  0x8E14
-#define GL_QUERY_BY_REGION_WAIT           0x8E15
-#define GL_QUERY_BY_REGION_NO_WAIT        0x8E16
-#define GL_BUFFER_ACCESS_FLAGS            0x911F
-#define GL_BUFFER_MAP_LENGTH              0x9120
-#define GL_BUFFER_MAP_OFFSET              0x9121
-#define GL_DEPTH_COMPONENT32F             0x8CAC
-#define GL_DEPTH32F_STENCIL8              0x8CAD
-#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
-#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
-#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
-#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
-#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
-#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
-#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
-#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
-#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
-#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
-#define GL_FRAMEBUFFER_DEFAULT            0x8218
-#define GL_FRAMEBUFFER_UNDEFINED          0x8219
-#define GL_DEPTH_STENCIL_ATTACHMENT       0x821A
-#define GL_MAX_RENDERBUFFER_SIZE          0x84E8
-#define GL_DEPTH_STENCIL                  0x84F9
-#define GL_UNSIGNED_INT_24_8              0x84FA
-#define GL_DEPTH24_STENCIL8               0x88F0
-#define GL_TEXTURE_STENCIL_SIZE           0x88F1
-#define GL_TEXTURE_RED_TYPE               0x8C10
-#define GL_TEXTURE_GREEN_TYPE             0x8C11
-#define GL_TEXTURE_BLUE_TYPE              0x8C12
-#define GL_TEXTURE_ALPHA_TYPE             0x8C13
-#define GL_TEXTURE_DEPTH_TYPE             0x8C16
-#define GL_UNSIGNED_NORMALIZED            0x8C17
-#define GL_FRAMEBUFFER_BINDING            0x8CA6
-#define GL_DRAW_FRAMEBUFFER_BINDING       0x8CA6
-#define GL_RENDERBUFFER_BINDING           0x8CA7
-#define GL_READ_FRAMEBUFFER               0x8CA8
-#define GL_DRAW_FRAMEBUFFER               0x8CA9
-#define GL_READ_FRAMEBUFFER_BINDING       0x8CAA
-#define GL_RENDERBUFFER_SAMPLES           0x8CAB
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
-#define GL_FRAMEBUFFER_COMPLETE           0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
-#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
-#define GL_FRAMEBUFFER_UNSUPPORTED        0x8CDD
-#define GL_MAX_COLOR_ATTACHMENTS          0x8CDF
-#define GL_COLOR_ATTACHMENT0              0x8CE0
-#define GL_COLOR_ATTACHMENT1              0x8CE1
-#define GL_COLOR_ATTACHMENT2              0x8CE2
-#define GL_COLOR_ATTACHMENT3              0x8CE3
-#define GL_COLOR_ATTACHMENT4              0x8CE4
-#define GL_COLOR_ATTACHMENT5              0x8CE5
-#define GL_COLOR_ATTACHMENT6              0x8CE6
-#define GL_COLOR_ATTACHMENT7              0x8CE7
-#define GL_COLOR_ATTACHMENT8              0x8CE8
-#define GL_COLOR_ATTACHMENT9              0x8CE9
-#define GL_COLOR_ATTACHMENT10             0x8CEA
-#define GL_COLOR_ATTACHMENT11             0x8CEB
-#define GL_COLOR_ATTACHMENT12             0x8CEC
-#define GL_COLOR_ATTACHMENT13             0x8CED
-#define GL_COLOR_ATTACHMENT14             0x8CEE
-#define GL_COLOR_ATTACHMENT15             0x8CEF
-#define GL_DEPTH_ATTACHMENT               0x8D00
-#define GL_STENCIL_ATTACHMENT             0x8D20
-#define GL_FRAMEBUFFER                    0x8D40
-#define GL_RENDERBUFFER                   0x8D41
-#define GL_RENDERBUFFER_WIDTH             0x8D42
-#define GL_RENDERBUFFER_HEIGHT            0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44
-#define GL_STENCIL_INDEX1                 0x8D46
-#define GL_STENCIL_INDEX4                 0x8D47
-#define GL_STENCIL_INDEX8                 0x8D48
-#define GL_STENCIL_INDEX16                0x8D49
-#define GL_RENDERBUFFER_RED_SIZE          0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
-#define GL_MAX_SAMPLES                    0x8D57
-#define GL_INDEX                          0x8222
-#define GL_TEXTURE_LUMINANCE_TYPE         0x8C14
-#define GL_TEXTURE_INTENSITY_TYPE         0x8C15
-#define GL_FRAMEBUFFER_SRGB               0x8DB9
-#define GL_HALF_FLOAT                     0x140B
-#define GL_MAP_READ_BIT                   0x0001
-#define GL_MAP_WRITE_BIT                  0x0002
-#define GL_MAP_INVALIDATE_RANGE_BIT       0x0004
-#define GL_MAP_INVALIDATE_BUFFER_BIT      0x0008
-#define GL_MAP_FLUSH_EXPLICIT_BIT         0x0010
-#define GL_MAP_UNSYNCHRONIZED_BIT         0x0020
-#define GL_COMPRESSED_RED_RGTC1           0x8DBB
-#define GL_COMPRESSED_SIGNED_RED_RGTC1    0x8DBC
-#define GL_COMPRESSED_RG_RGTC2            0x8DBD
-#define GL_COMPRESSED_SIGNED_RG_RGTC2     0x8DBE
-#define GL_RG                             0x8227
-#define GL_RG_INTEGER                     0x8228
-#define GL_R8                             0x8229
-#define GL_R16                            0x822A
-#define GL_RG8                            0x822B
-#define GL_RG16                           0x822C
-#define GL_R16F                           0x822D
-#define GL_R32F                           0x822E
-#define GL_RG16F                          0x822F
-#define GL_RG32F                          0x8230
-#define GL_R8I                            0x8231
-#define GL_R8UI                           0x8232
-#define GL_R16I                           0x8233
-#define GL_R16UI                          0x8234
-#define GL_R32I                           0x8235
-#define GL_R32UI                          0x8236
-#define GL_RG8I                           0x8237
-#define GL_RG8UI                          0x8238
-#define GL_RG16I                          0x8239
-#define GL_RG16UI                         0x823A
-#define GL_RG32I                          0x823B
-#define GL_RG32UI                         0x823C
-#define GL_VERTEX_ARRAY_BINDING           0x85B5
-#define GL_CLAMP_VERTEX_COLOR             0x891A
-#define GL_CLAMP_FRAGMENT_COLOR           0x891B
-#define GL_ALPHA_INTEGER                  0x8D97
-typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
-typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
-typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
-typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
-typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
-typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
-typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
-typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
-typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
-GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
-GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
-GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
-GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
-GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedback (void);
-GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
-GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
-GLAPI void APIENTRY glEndConditionalRender (void);
-GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
-GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
-GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
-GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
-GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
-GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
-GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
-GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
-GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
-GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
-GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);
-GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
-GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
-GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
-GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
-GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
-GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
-GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
-GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
-GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateMipmap (GLenum target);
-GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glBindVertexArray (GLuint array);
-GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
-GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
-GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
-#endif
-#endif /* GL_VERSION_3_0 */
-
-#ifndef GL_VERSION_3_1
-#define GL_VERSION_3_1 1
-#define GL_SAMPLER_2D_RECT                0x8B63
-#define GL_SAMPLER_2D_RECT_SHADOW         0x8B64
-#define GL_SAMPLER_BUFFER                 0x8DC2
-#define GL_INT_SAMPLER_2D_RECT            0x8DCD
-#define GL_INT_SAMPLER_BUFFER             0x8DD0
-#define GL_UNSIGNED_INT_SAMPLER_2D_RECT   0x8DD5
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER    0x8DD8
-#define GL_TEXTURE_BUFFER                 0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE        0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER         0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
-#define GL_TEXTURE_RECTANGLE              0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE      0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE        0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE     0x84F8
-#define GL_R8_SNORM                       0x8F94
-#define GL_RG8_SNORM                      0x8F95
-#define GL_RGB8_SNORM                     0x8F96
-#define GL_RGBA8_SNORM                    0x8F97
-#define GL_R16_SNORM                      0x8F98
-#define GL_RG16_SNORM                     0x8F99
-#define GL_RGB16_SNORM                    0x8F9A
-#define GL_RGBA16_SNORM                   0x8F9B
-#define GL_SIGNED_NORMALIZED              0x8F9C
-#define GL_PRIMITIVE_RESTART              0x8F9D
-#define GL_PRIMITIVE_RESTART_INDEX        0x8F9E
-#define GL_COPY_READ_BUFFER               0x8F36
-#define GL_COPY_WRITE_BUFFER              0x8F37
-#define GL_UNIFORM_BUFFER                 0x8A11
-#define GL_UNIFORM_BUFFER_BINDING         0x8A28
-#define GL_UNIFORM_BUFFER_START           0x8A29
-#define GL_UNIFORM_BUFFER_SIZE            0x8A2A
-#define GL_MAX_VERTEX_UNIFORM_BLOCKS      0x8A2B
-#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS    0x8A2D
-#define GL_MAX_COMBINED_UNIFORM_BLOCKS    0x8A2E
-#define GL_MAX_UNIFORM_BUFFER_BINDINGS    0x8A2F
-#define GL_MAX_UNIFORM_BLOCK_SIZE         0x8A30
-#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
-#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
-#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
-#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
-#define GL_ACTIVE_UNIFORM_BLOCKS          0x8A36
-#define GL_UNIFORM_TYPE                   0x8A37
-#define GL_UNIFORM_SIZE                   0x8A38
-#define GL_UNIFORM_NAME_LENGTH            0x8A39
-#define GL_UNIFORM_BLOCK_INDEX            0x8A3A
-#define GL_UNIFORM_OFFSET                 0x8A3B
-#define GL_UNIFORM_ARRAY_STRIDE           0x8A3C
-#define GL_UNIFORM_MATRIX_STRIDE          0x8A3D
-#define GL_UNIFORM_IS_ROW_MAJOR           0x8A3E
-#define GL_UNIFORM_BLOCK_BINDING          0x8A3F
-#define GL_UNIFORM_BLOCK_DATA_SIZE        0x8A40
-#define GL_UNIFORM_BLOCK_NAME_LENGTH      0x8A41
-#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS  0x8A42
-#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
-#define GL_INVALID_INDEX                  0xFFFFFFFFu
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
-typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
-GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
-GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
-GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
-GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
-GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
-GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
-#endif
-#endif /* GL_VERSION_3_1 */
-
-#ifndef GL_VERSION_3_2
-#define GL_VERSION_3_2 1
-typedef struct __GLsync *GLsync;
-#ifndef GLEXT_64_TYPES_DEFINED
-/* This code block is duplicated in glxext.h, so must be protected */
-#define GLEXT_64_TYPES_DEFINED
-/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
-/* (as used in the GL_EXT_timer_query extension). */
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include <inttypes.h>
-#elif defined(__sun__) || defined(__digital__)
-#include <inttypes.h>
-#if defined(__STDC__)
-#if defined(__arch64__) || defined(_LP64)
-typedef long int int64_t;
-typedef unsigned long int uint64_t;
-#else
-typedef long long int int64_t;
-typedef unsigned long long int uint64_t;
-#endif /* __arch64__ */
-#endif /* __STDC__ */
-#elif defined( __VMS ) || defined(__sgi)
-#include <inttypes.h>
-#elif defined(__SCO__) || defined(__USLC__)
-#include <stdint.h>
-#elif defined(__UNIXOS2__) || defined(__SOL64__)
-typedef long int int32_t;
-typedef long long int int64_t;
-typedef unsigned long long int uint64_t;
-#elif defined(_WIN32) && defined(__GNUC__)
-#include <stdint.h>
-#elif defined(_WIN32)
-typedef __int32 int32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else
-/* Fallback if nothing above works */
-#include <inttypes.h>
-#endif
-#endif
-typedef uint64_t GLuint64;
-typedef int64_t GLint64;
-#define GL_CONTEXT_CORE_PROFILE_BIT       0x00000001
-#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
-#define GL_LINES_ADJACENCY                0x000A
-#define GL_LINE_STRIP_ADJACENCY           0x000B
-#define GL_TRIANGLES_ADJACENCY            0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY       0x000D
-#define GL_PROGRAM_POINT_SIZE             0x8642
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
-#define GL_GEOMETRY_SHADER                0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT          0x8916
-#define GL_GEOMETRY_INPUT_TYPE            0x8917
-#define GL_GEOMETRY_OUTPUT_TYPE           0x8918
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES   0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
-#define GL_MAX_VERTEX_OUTPUT_COMPONENTS   0x9122
-#define GL_MAX_GEOMETRY_INPUT_COMPONENTS  0x9123
-#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
-#define GL_MAX_FRAGMENT_INPUT_COMPONENTS  0x9125
-#define GL_CONTEXT_PROFILE_MASK           0x9126
-#define GL_DEPTH_CLAMP                    0x864F
-#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
-#define GL_FIRST_VERTEX_CONVENTION        0x8E4D
-#define GL_LAST_VERTEX_CONVENTION         0x8E4E
-#define GL_PROVOKING_VERTEX               0x8E4F
-#define GL_TEXTURE_CUBE_MAP_SEAMLESS      0x884F
-#define GL_MAX_SERVER_WAIT_TIMEOUT        0x9111
-#define GL_OBJECT_TYPE                    0x9112
-#define GL_SYNC_CONDITION                 0x9113
-#define GL_SYNC_STATUS                    0x9114
-#define GL_SYNC_FLAGS                     0x9115
-#define GL_SYNC_FENCE                     0x9116
-#define GL_SYNC_GPU_COMMANDS_COMPLETE     0x9117
-#define GL_UNSIGNALED                     0x9118
-#define GL_SIGNALED                       0x9119
-#define GL_ALREADY_SIGNALED               0x911A
-#define GL_TIMEOUT_EXPIRED                0x911B
-#define GL_CONDITION_SATISFIED            0x911C
-#define GL_WAIT_FAILED                    0x911D
-#define GL_TIMEOUT_IGNORED                0xFFFFFFFFFFFFFFFFull
-#define GL_SYNC_FLUSH_COMMANDS_BIT        0x00000001
-#define GL_SAMPLE_POSITION                0x8E50
-#define GL_SAMPLE_MASK                    0x8E51
-#define GL_SAMPLE_MASK_VALUE              0x8E52
-#define GL_MAX_SAMPLE_MASK_WORDS          0x8E59
-#define GL_TEXTURE_2D_MULTISAMPLE         0x9100
-#define GL_PROXY_TEXTURE_2D_MULTISAMPLE   0x9101
-#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY   0x9102
-#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
-#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
-#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
-#define GL_TEXTURE_SAMPLES                0x9106
-#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
-#define GL_SAMPLER_2D_MULTISAMPLE         0x9108
-#define GL_INT_SAMPLER_2D_MULTISAMPLE     0x9109
-#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
-#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY   0x910B
-#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
-#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
-#define GL_MAX_COLOR_TEXTURE_SAMPLES      0x910E
-#define GL_MAX_DEPTH_TEXTURE_SAMPLES      0x910F
-#define GL_MAX_INTEGER_SAMPLES            0x9110
-typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
-typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
-typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
-typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
-typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
-typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
-typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
-typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
-GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
-GLAPI void APIENTRY glProvokingVertex (GLenum mode);
-GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
-GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
-GLAPI void APIENTRY glDeleteSync (GLsync sync);
-GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data);
-GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
-GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
-GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
-#endif
-#endif /* GL_VERSION_3_2 */
-
-#ifndef GL_VERSION_3_3
-#define GL_VERSION_3_3 1
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR    0x88FE
-#define GL_SRC1_COLOR                     0x88F9
-#define GL_ONE_MINUS_SRC1_COLOR           0x88FA
-#define GL_ONE_MINUS_SRC1_ALPHA           0x88FB
-#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS   0x88FC
-#define GL_ANY_SAMPLES_PASSED             0x8C2F
-#define GL_SAMPLER_BINDING                0x8919
-#define GL_RGB10_A2UI                     0x906F
-#define GL_TEXTURE_SWIZZLE_R              0x8E42
-#define GL_TEXTURE_SWIZZLE_G              0x8E43
-#define GL_TEXTURE_SWIZZLE_B              0x8E44
-#define GL_TEXTURE_SWIZZLE_A              0x8E45
-#define GL_TEXTURE_SWIZZLE_RGBA           0x8E46
-#define GL_TIME_ELAPSED                   0x88BF
-#define GL_TIMESTAMP                      0x8E28
-#define GL_INT_2_10_10_10_REV             0x8D9F
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
-typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
-typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
-typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value);
-typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
-typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value);
-typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
-typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords);
-typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
-typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color);
-typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
-typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
-GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
-GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
-GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
-GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
-GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
-GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
-GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
-GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
-GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
-GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
-GLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor);
-GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
-GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
-GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value);
-GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value);
-GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value);
-GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value);
-GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value);
-GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value);
-GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords);
-GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords);
-GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords);
-GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color);
-GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color);
-GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color);
-GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color);
-GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color);
-GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color);
-#endif
-#endif /* GL_VERSION_3_3 */
-
-#ifndef GL_VERSION_4_0
-#define GL_VERSION_4_0 1
-#define GL_SAMPLE_SHADING                 0x8C36
-#define GL_MIN_SAMPLE_SHADING_VALUE       0x8C37
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
-#define GL_TEXTURE_CUBE_MAP_ARRAY         0x9009
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY   0x900B
-#define GL_SAMPLER_CUBE_MAP_ARRAY         0x900C
-#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW  0x900D
-#define GL_INT_SAMPLER_CUBE_MAP_ARRAY     0x900E
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
-#define GL_DRAW_INDIRECT_BUFFER           0x8F3F
-#define GL_DRAW_INDIRECT_BUFFER_BINDING   0x8F43
-#define GL_GEOMETRY_SHADER_INVOCATIONS    0x887F
-#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
-#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
-#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
-#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
-#define GL_MAX_VERTEX_STREAMS             0x8E71
-#define GL_DOUBLE_VEC2                    0x8FFC
-#define GL_DOUBLE_VEC3                    0x8FFD
-#define GL_DOUBLE_VEC4                    0x8FFE
-#define GL_DOUBLE_MAT2                    0x8F46
-#define GL_DOUBLE_MAT3                    0x8F47
-#define GL_DOUBLE_MAT4                    0x8F48
-#define GL_DOUBLE_MAT2x3                  0x8F49
-#define GL_DOUBLE_MAT2x4                  0x8F4A
-#define GL_DOUBLE_MAT3x2                  0x8F4B
-#define GL_DOUBLE_MAT3x4                  0x8F4C
-#define GL_DOUBLE_MAT4x2                  0x8F4D
-#define GL_DOUBLE_MAT4x3                  0x8F4E
-#define GL_ACTIVE_SUBROUTINES             0x8DE5
-#define GL_ACTIVE_SUBROUTINE_UNIFORMS     0x8DE6
-#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
-#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH   0x8E48
-#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
-#define GL_MAX_SUBROUTINES                0x8DE7
-#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
-#define GL_NUM_COMPATIBLE_SUBROUTINES     0x8E4A
-#define GL_COMPATIBLE_SUBROUTINES         0x8E4B
-#define GL_PATCHES                        0x000E
-#define GL_PATCH_VERTICES                 0x8E72
-#define GL_PATCH_DEFAULT_INNER_LEVEL      0x8E73
-#define GL_PATCH_DEFAULT_OUTER_LEVEL      0x8E74
-#define GL_TESS_CONTROL_OUTPUT_VERTICES   0x8E75
-#define GL_TESS_GEN_MODE                  0x8E76
-#define GL_TESS_GEN_SPACING               0x8E77
-#define GL_TESS_GEN_VERTEX_ORDER          0x8E78
-#define GL_TESS_GEN_POINT_MODE            0x8E79
-#define GL_ISOLINES                       0x8E7A
-#define GL_FRACTIONAL_ODD                 0x8E7B
-#define GL_FRACTIONAL_EVEN                0x8E7C
-#define GL_MAX_PATCH_VERTICES             0x8E7D
-#define GL_MAX_TESS_GEN_LEVEL             0x8E7E
-#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
-#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
-#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
-#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
-#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
-#define GL_MAX_TESS_PATCH_COMPONENTS      0x8E84
-#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
-#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
-#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
-#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
-#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
-#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
-#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
-#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
-#define GL_TESS_EVALUATION_SHADER         0x8E87
-#define GL_TESS_CONTROL_SHADER            0x8E88
-#define GL_TRANSFORM_FEEDBACK             0x8E22
-#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
-#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
-#define GL_TRANSFORM_FEEDBACK_BINDING     0x8E25
-#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
-typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);
-typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
-typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
-typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
-typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
-typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
-typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
-typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
-typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
-typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShading (GLfloat value);
-GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect);
-GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect);
-GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
-GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
-GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
-GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
-GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
-GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
-GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
-GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
-GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
-GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
-GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
-GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
-GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
-GLAPI void APIENTRY glPauseTransformFeedback (void);
-GLAPI void APIENTRY glResumeTransformFeedback (void);
-GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
-GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
-GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
-GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
-GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
-#endif
-#endif /* GL_VERSION_4_0 */
-
-#ifndef GL_VERSION_4_1
-#define GL_VERSION_4_1 1
-#define GL_FIXED                          0x140C
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
-#define GL_LOW_FLOAT                      0x8DF0
-#define GL_MEDIUM_FLOAT                   0x8DF1
-#define GL_HIGH_FLOAT                     0x8DF2
-#define GL_LOW_INT                        0x8DF3
-#define GL_MEDIUM_INT                     0x8DF4
-#define GL_HIGH_INT                       0x8DF5
-#define GL_SHADER_COMPILER                0x8DFA
-#define GL_SHADER_BINARY_FORMATS          0x8DF8
-#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
-#define GL_MAX_VERTEX_UNIFORM_VECTORS     0x8DFB
-#define GL_MAX_VARYING_VECTORS            0x8DFC
-#define GL_MAX_FRAGMENT_UNIFORM_VECTORS   0x8DFD
-#define GL_RGB565                         0x8D62
-#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
-#define GL_PROGRAM_BINARY_LENGTH          0x8741
-#define GL_NUM_PROGRAM_BINARY_FORMATS     0x87FE
-#define GL_PROGRAM_BINARY_FORMATS         0x87FF
-#define GL_VERTEX_SHADER_BIT              0x00000001
-#define GL_FRAGMENT_SHADER_BIT            0x00000002
-#define GL_GEOMETRY_SHADER_BIT            0x00000004
-#define GL_TESS_CONTROL_SHADER_BIT        0x00000008
-#define GL_TESS_EVALUATION_SHADER_BIT     0x00000010
-#define GL_ALL_SHADER_BITS                0xFFFFFFFF
-#define GL_PROGRAM_SEPARABLE              0x8258
-#define GL_ACTIVE_PROGRAM                 0x8259
-#define GL_PROGRAM_PIPELINE_BINDING       0x825A
-#define GL_MAX_VIEWPORTS                  0x825B
-#define GL_VIEWPORT_SUBPIXEL_BITS         0x825C
-#define GL_VIEWPORT_BOUNDS_RANGE          0x825D
-#define GL_LAYER_PROVOKING_VERTEX         0x825E
-#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F
-#define GL_UNDEFINED_VERTEX               0x8260
-typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);
-typedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
-typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
-typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);
-typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);
-typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
-typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
-typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings);
-typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
-typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
-typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
-typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);
-typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f);
-typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReleaseShaderCompiler (void);
-GLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
-GLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
-GLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f);
-GLAPI void APIENTRY glClearDepthf (GLfloat d);
-GLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
-GLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
-GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
-GLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);
-GLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program);
-GLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings);
-GLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);
-GLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines);
-GLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);
-GLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0);
-GLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0);
-GLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0);
-GLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0);
-GLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);
-GLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
-GLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
-GLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline);
-GLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-GLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
-GLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v);
-GLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v);
-GLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f);
-GLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data);
-GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);
-#endif
-#endif /* GL_VERSION_4_1 */
-
-#ifndef GL_VERSION_4_2
-#define GL_VERSION_4_2 1
-#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH  0x9127
-#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128
-#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH  0x9129
-#define GL_UNPACK_COMPRESSED_BLOCK_SIZE   0x912A
-#define GL_PACK_COMPRESSED_BLOCK_WIDTH    0x912B
-#define GL_PACK_COMPRESSED_BLOCK_HEIGHT   0x912C
-#define GL_PACK_COMPRESSED_BLOCK_DEPTH    0x912D
-#define GL_PACK_COMPRESSED_BLOCK_SIZE     0x912E
-#define GL_NUM_SAMPLE_COUNTS              0x9380
-#define GL_MIN_MAP_BUFFER_ALIGNMENT       0x90BC
-#define GL_ATOMIC_COUNTER_BUFFER          0x92C0
-#define GL_ATOMIC_COUNTER_BUFFER_BINDING  0x92C1
-#define GL_ATOMIC_COUNTER_BUFFER_START    0x92C2
-#define GL_ATOMIC_COUNTER_BUFFER_SIZE     0x92C3
-#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4
-#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5
-#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB
-#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
-#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
-#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
-#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
-#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
-#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
-#define GL_MAX_VERTEX_ATOMIC_COUNTERS     0x92D2
-#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
-#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
-#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS   0x92D5
-#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS   0x92D6
-#define GL_MAX_COMBINED_ATOMIC_COUNTERS   0x92D7
-#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
-#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
-#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS  0x92D9
-#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA
-#define GL_UNSIGNED_INT_ATOMIC_COUNTER    0x92DB
-#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
-#define GL_ELEMENT_ARRAY_BARRIER_BIT      0x00000002
-#define GL_UNIFORM_BARRIER_BIT            0x00000004
-#define GL_TEXTURE_FETCH_BARRIER_BIT      0x00000008
-#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
-#define GL_COMMAND_BARRIER_BIT            0x00000040
-#define GL_PIXEL_BUFFER_BARRIER_BIT       0x00000080
-#define GL_TEXTURE_UPDATE_BARRIER_BIT     0x00000100
-#define GL_BUFFER_UPDATE_BARRIER_BIT      0x00000200
-#define GL_FRAMEBUFFER_BARRIER_BIT        0x00000400
-#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
-#define GL_ATOMIC_COUNTER_BARRIER_BIT     0x00001000
-#define GL_ALL_BARRIER_BITS               0xFFFFFFFF
-#define GL_MAX_IMAGE_UNITS                0x8F38
-#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
-#define GL_IMAGE_BINDING_NAME             0x8F3A
-#define GL_IMAGE_BINDING_LEVEL            0x8F3B
-#define GL_IMAGE_BINDING_LAYERED          0x8F3C
-#define GL_IMAGE_BINDING_LAYER            0x8F3D
-#define GL_IMAGE_BINDING_ACCESS           0x8F3E
-#define GL_IMAGE_1D                       0x904C
-#define GL_IMAGE_2D                       0x904D
-#define GL_IMAGE_3D                       0x904E
-#define GL_IMAGE_2D_RECT                  0x904F
-#define GL_IMAGE_CUBE                     0x9050
-#define GL_IMAGE_BUFFER                   0x9051
-#define GL_IMAGE_1D_ARRAY                 0x9052
-#define GL_IMAGE_2D_ARRAY                 0x9053
-#define GL_IMAGE_CUBE_MAP_ARRAY           0x9054
-#define GL_IMAGE_2D_MULTISAMPLE           0x9055
-#define GL_IMAGE_2D_MULTISAMPLE_ARRAY     0x9056
-#define GL_INT_IMAGE_1D                   0x9057
-#define GL_INT_IMAGE_2D                   0x9058
-#define GL_INT_IMAGE_3D                   0x9059
-#define GL_INT_IMAGE_2D_RECT              0x905A
-#define GL_INT_IMAGE_CUBE                 0x905B
-#define GL_INT_IMAGE_BUFFER               0x905C
-#define GL_INT_IMAGE_1D_ARRAY             0x905D
-#define GL_INT_IMAGE_2D_ARRAY             0x905E
-#define GL_INT_IMAGE_CUBE_MAP_ARRAY       0x905F
-#define GL_INT_IMAGE_2D_MULTISAMPLE       0x9060
-#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061
-#define GL_UNSIGNED_INT_IMAGE_1D          0x9062
-#define GL_UNSIGNED_INT_IMAGE_2D          0x9063
-#define GL_UNSIGNED_INT_IMAGE_3D          0x9064
-#define GL_UNSIGNED_INT_IMAGE_2D_RECT     0x9065
-#define GL_UNSIGNED_INT_IMAGE_CUBE        0x9066
-#define GL_UNSIGNED_INT_IMAGE_BUFFER      0x9067
-#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY    0x9068
-#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY    0x9069
-#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C
-#define GL_MAX_IMAGE_SAMPLES              0x906D
-#define GL_IMAGE_BINDING_FORMAT           0x906E
-#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
-#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
-#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
-#define GL_MAX_VERTEX_IMAGE_UNIFORMS      0x90CA
-#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
-#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
-#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS    0x90CD
-#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS    0x90CE
-#define GL_MAX_COMBINED_IMAGE_UNIFORMS    0x90CF
-#define GL_COMPRESSED_RGBA_BPTC_UNORM     0x8E8C
-#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
-#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
-#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
-#define GL_TEXTURE_IMMUTABLE_FORMAT       0x912F
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
-typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
-typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
-GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
-GLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
-GLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
-GLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
-GLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers);
-GLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount);
-GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
-#endif
-#endif /* GL_VERSION_4_2 */
-
-#ifndef GL_VERSION_4_3
-#define GL_VERSION_4_3 1
-typedef void (APIENTRY  *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_NUM_SHADING_LANGUAGE_VERSIONS  0x82E9
-#define GL_VERTEX_ATTRIB_ARRAY_LONG       0x874E
-#define GL_COMPRESSED_RGB8_ETC2           0x9274
-#define GL_COMPRESSED_SRGB8_ETC2          0x9275
-#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
-#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
-#define GL_COMPRESSED_RGBA8_ETC2_EAC      0x9278
-#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
-#define GL_COMPRESSED_R11_EAC             0x9270
-#define GL_COMPRESSED_SIGNED_R11_EAC      0x9271
-#define GL_COMPRESSED_RG11_EAC            0x9272
-#define GL_COMPRESSED_SIGNED_RG11_EAC     0x9273
-#define GL_PRIMITIVE_RESTART_FIXED_INDEX  0x8D69
-#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
-#define GL_MAX_ELEMENT_INDEX              0x8D6B
-#define GL_COMPUTE_SHADER                 0x91B9
-#define GL_MAX_COMPUTE_UNIFORM_BLOCKS     0x91BB
-#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
-#define GL_MAX_COMPUTE_IMAGE_UNIFORMS     0x91BD
-#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
-#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
-#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
-#define GL_MAX_COMPUTE_ATOMIC_COUNTERS    0x8265
-#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
-#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
-#define GL_MAX_COMPUTE_WORK_GROUP_COUNT   0x91BE
-#define GL_MAX_COMPUTE_WORK_GROUP_SIZE    0x91BF
-#define GL_COMPUTE_WORK_GROUP_SIZE        0x8267
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
-#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
-#define GL_DISPATCH_INDIRECT_BUFFER       0x90EE
-#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS       0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION        0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM      0x8245
-#define GL_DEBUG_SOURCE_API               0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM     0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER   0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY       0x8249
-#define GL_DEBUG_SOURCE_APPLICATION       0x824A
-#define GL_DEBUG_SOURCE_OTHER             0x824B
-#define GL_DEBUG_TYPE_ERROR               0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR  0x824E
-#define GL_DEBUG_TYPE_PORTABILITY         0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE         0x8250
-#define GL_DEBUG_TYPE_OTHER               0x8251
-#define GL_MAX_DEBUG_MESSAGE_LENGTH       0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES      0x9144
-#define GL_DEBUG_LOGGED_MESSAGES          0x9145
-#define GL_DEBUG_SEVERITY_HIGH            0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM          0x9147
-#define GL_DEBUG_SEVERITY_LOW             0x9148
-#define GL_DEBUG_TYPE_MARKER              0x8268
-#define GL_DEBUG_TYPE_PUSH_GROUP          0x8269
-#define GL_DEBUG_TYPE_POP_GROUP           0x826A
-#define GL_DEBUG_SEVERITY_NOTIFICATION    0x826B
-#define GL_MAX_DEBUG_GROUP_STACK_DEPTH    0x826C
-#define GL_DEBUG_GROUP_STACK_DEPTH        0x826D
-#define GL_BUFFER                         0x82E0
-#define GL_SHADER                         0x82E1
-#define GL_PROGRAM                        0x82E2
-#define GL_QUERY                          0x82E3
-#define GL_PROGRAM_PIPELINE               0x82E4
-#define GL_SAMPLER                        0x82E6
-#define GL_MAX_LABEL_LENGTH               0x82E8
-#define GL_DEBUG_OUTPUT                   0x92E0
-#define GL_CONTEXT_FLAG_DEBUG_BIT         0x00000002
-#define GL_MAX_UNIFORM_LOCATIONS          0x826E
-#define GL_FRAMEBUFFER_DEFAULT_WIDTH      0x9310
-#define GL_FRAMEBUFFER_DEFAULT_HEIGHT     0x9311
-#define GL_FRAMEBUFFER_DEFAULT_LAYERS     0x9312
-#define GL_FRAMEBUFFER_DEFAULT_SAMPLES    0x9313
-#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
-#define GL_MAX_FRAMEBUFFER_WIDTH          0x9315
-#define GL_MAX_FRAMEBUFFER_HEIGHT         0x9316
-#define GL_MAX_FRAMEBUFFER_LAYERS         0x9317
-#define GL_MAX_FRAMEBUFFER_SAMPLES        0x9318
-#define GL_INTERNALFORMAT_SUPPORTED       0x826F
-#define GL_INTERNALFORMAT_PREFERRED       0x8270
-#define GL_INTERNALFORMAT_RED_SIZE        0x8271
-#define GL_INTERNALFORMAT_GREEN_SIZE      0x8272
-#define GL_INTERNALFORMAT_BLUE_SIZE       0x8273
-#define GL_INTERNALFORMAT_ALPHA_SIZE      0x8274
-#define GL_INTERNALFORMAT_DEPTH_SIZE      0x8275
-#define GL_INTERNALFORMAT_STENCIL_SIZE    0x8276
-#define GL_INTERNALFORMAT_SHARED_SIZE     0x8277
-#define GL_INTERNALFORMAT_RED_TYPE        0x8278
-#define GL_INTERNALFORMAT_GREEN_TYPE      0x8279
-#define GL_INTERNALFORMAT_BLUE_TYPE       0x827A
-#define GL_INTERNALFORMAT_ALPHA_TYPE      0x827B
-#define GL_INTERNALFORMAT_DEPTH_TYPE      0x827C
-#define GL_INTERNALFORMAT_STENCIL_TYPE    0x827D
-#define GL_MAX_WIDTH                      0x827E
-#define GL_MAX_HEIGHT                     0x827F
-#define GL_MAX_DEPTH                      0x8280
-#define GL_MAX_LAYERS                     0x8281
-#define GL_MAX_COMBINED_DIMENSIONS        0x8282
-#define GL_COLOR_COMPONENTS               0x8283
-#define GL_DEPTH_COMPONENTS               0x8284
-#define GL_STENCIL_COMPONENTS             0x8285
-#define GL_COLOR_RENDERABLE               0x8286
-#define GL_DEPTH_RENDERABLE               0x8287
-#define GL_STENCIL_RENDERABLE             0x8288
-#define GL_FRAMEBUFFER_RENDERABLE         0x8289
-#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
-#define GL_FRAMEBUFFER_BLEND              0x828B
-#define GL_READ_PIXELS                    0x828C
-#define GL_READ_PIXELS_FORMAT             0x828D
-#define GL_READ_PIXELS_TYPE               0x828E
-#define GL_TEXTURE_IMAGE_FORMAT           0x828F
-#define GL_TEXTURE_IMAGE_TYPE             0x8290
-#define GL_GET_TEXTURE_IMAGE_FORMAT       0x8291
-#define GL_GET_TEXTURE_IMAGE_TYPE         0x8292
-#define GL_MIPMAP                         0x8293
-#define GL_MANUAL_GENERATE_MIPMAP         0x8294
-#define GL_AUTO_GENERATE_MIPMAP           0x8295
-#define GL_COLOR_ENCODING                 0x8296
-#define GL_SRGB_READ                      0x8297
-#define GL_SRGB_WRITE                     0x8298
-#define GL_FILTER                         0x829A
-#define GL_VERTEX_TEXTURE                 0x829B
-#define GL_TESS_CONTROL_TEXTURE           0x829C
-#define GL_TESS_EVALUATION_TEXTURE        0x829D
-#define GL_GEOMETRY_TEXTURE               0x829E
-#define GL_FRAGMENT_TEXTURE               0x829F
-#define GL_COMPUTE_TEXTURE                0x82A0
-#define GL_TEXTURE_SHADOW                 0x82A1
-#define GL_TEXTURE_GATHER                 0x82A2
-#define GL_TEXTURE_GATHER_SHADOW          0x82A3
-#define GL_SHADER_IMAGE_LOAD              0x82A4
-#define GL_SHADER_IMAGE_STORE             0x82A5
-#define GL_SHADER_IMAGE_ATOMIC            0x82A6
-#define GL_IMAGE_TEXEL_SIZE               0x82A7
-#define GL_IMAGE_COMPATIBILITY_CLASS      0x82A8
-#define GL_IMAGE_PIXEL_FORMAT             0x82A9
-#define GL_IMAGE_PIXEL_TYPE               0x82AA
-#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
-#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
-#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
-#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
-#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
-#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
-#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE  0x82B3
-#define GL_CLEAR_BUFFER                   0x82B4
-#define GL_TEXTURE_VIEW                   0x82B5
-#define GL_VIEW_COMPATIBILITY_CLASS       0x82B6
-#define GL_FULL_SUPPORT                   0x82B7
-#define GL_CAVEAT_SUPPORT                 0x82B8
-#define GL_IMAGE_CLASS_4_X_32             0x82B9
-#define GL_IMAGE_CLASS_2_X_32             0x82BA
-#define GL_IMAGE_CLASS_1_X_32             0x82BB
-#define GL_IMAGE_CLASS_4_X_16             0x82BC
-#define GL_IMAGE_CLASS_2_X_16             0x82BD
-#define GL_IMAGE_CLASS_1_X_16             0x82BE
-#define GL_IMAGE_CLASS_4_X_8              0x82BF
-#define GL_IMAGE_CLASS_2_X_8              0x82C0
-#define GL_IMAGE_CLASS_1_X_8              0x82C1
-#define GL_IMAGE_CLASS_11_11_10           0x82C2
-#define GL_IMAGE_CLASS_10_10_10_2         0x82C3
-#define GL_VIEW_CLASS_128_BITS            0x82C4
-#define GL_VIEW_CLASS_96_BITS             0x82C5
-#define GL_VIEW_CLASS_64_BITS             0x82C6
-#define GL_VIEW_CLASS_48_BITS             0x82C7
-#define GL_VIEW_CLASS_32_BITS             0x82C8
-#define GL_VIEW_CLASS_24_BITS             0x82C9
-#define GL_VIEW_CLASS_16_BITS             0x82CA
-#define GL_VIEW_CLASS_8_BITS              0x82CB
-#define GL_VIEW_CLASS_S3TC_DXT1_RGB       0x82CC
-#define GL_VIEW_CLASS_S3TC_DXT1_RGBA      0x82CD
-#define GL_VIEW_CLASS_S3TC_DXT3_RGBA      0x82CE
-#define GL_VIEW_CLASS_S3TC_DXT5_RGBA      0x82CF
-#define GL_VIEW_CLASS_RGTC1_RED           0x82D0
-#define GL_VIEW_CLASS_RGTC2_RG            0x82D1
-#define GL_VIEW_CLASS_BPTC_UNORM          0x82D2
-#define GL_VIEW_CLASS_BPTC_FLOAT          0x82D3
-#define GL_UNIFORM                        0x92E1
-#define GL_UNIFORM_BLOCK                  0x92E2
-#define GL_PROGRAM_INPUT                  0x92E3
-#define GL_PROGRAM_OUTPUT                 0x92E4
-#define GL_BUFFER_VARIABLE                0x92E5
-#define GL_SHADER_STORAGE_BLOCK           0x92E6
-#define GL_VERTEX_SUBROUTINE              0x92E8
-#define GL_TESS_CONTROL_SUBROUTINE        0x92E9
-#define GL_TESS_EVALUATION_SUBROUTINE     0x92EA
-#define GL_GEOMETRY_SUBROUTINE            0x92EB
-#define GL_FRAGMENT_SUBROUTINE            0x92EC
-#define GL_COMPUTE_SUBROUTINE             0x92ED
-#define GL_VERTEX_SUBROUTINE_UNIFORM      0x92EE
-#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
-#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
-#define GL_GEOMETRY_SUBROUTINE_UNIFORM    0x92F1
-#define GL_FRAGMENT_SUBROUTINE_UNIFORM    0x92F2
-#define GL_COMPUTE_SUBROUTINE_UNIFORM     0x92F3
-#define GL_TRANSFORM_FEEDBACK_VARYING     0x92F4
-#define GL_ACTIVE_RESOURCES               0x92F5
-#define GL_MAX_NAME_LENGTH                0x92F6
-#define GL_MAX_NUM_ACTIVE_VARIABLES       0x92F7
-#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
-#define GL_NAME_LENGTH                    0x92F9
-#define GL_TYPE                           0x92FA
-#define GL_ARRAY_SIZE                     0x92FB
-#define GL_OFFSET                         0x92FC
-#define GL_BLOCK_INDEX                    0x92FD
-#define GL_ARRAY_STRIDE                   0x92FE
-#define GL_MATRIX_STRIDE                  0x92FF
-#define GL_IS_ROW_MAJOR                   0x9300
-#define GL_ATOMIC_COUNTER_BUFFER_INDEX    0x9301
-#define GL_BUFFER_BINDING                 0x9302
-#define GL_BUFFER_DATA_SIZE               0x9303
-#define GL_NUM_ACTIVE_VARIABLES           0x9304
-#define GL_ACTIVE_VARIABLES               0x9305
-#define GL_REFERENCED_BY_VERTEX_SHADER    0x9306
-#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
-#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
-#define GL_REFERENCED_BY_GEOMETRY_SHADER  0x9309
-#define GL_REFERENCED_BY_FRAGMENT_SHADER  0x930A
-#define GL_REFERENCED_BY_COMPUTE_SHADER   0x930B
-#define GL_TOP_LEVEL_ARRAY_SIZE           0x930C
-#define GL_TOP_LEVEL_ARRAY_STRIDE         0x930D
-#define GL_LOCATION                       0x930E
-#define GL_LOCATION_INDEX                 0x930F
-#define GL_IS_PER_PATCH                   0x92E7
-#define GL_SHADER_STORAGE_BUFFER          0x90D2
-#define GL_SHADER_STORAGE_BUFFER_BINDING  0x90D3
-#define GL_SHADER_STORAGE_BUFFER_START    0x90D4
-#define GL_SHADER_STORAGE_BUFFER_SIZE     0x90D5
-#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
-#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
-#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
-#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
-#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
-#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
-#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
-#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
-#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE  0x90DE
-#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
-#define GL_SHADER_STORAGE_BARRIER_BIT     0x00002000
-#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
-#define GL_DEPTH_STENCIL_TEXTURE_MODE     0x90EA
-#define GL_TEXTURE_BUFFER_OFFSET          0x919D
-#define GL_TEXTURE_BUFFER_SIZE            0x919E
-#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
-#define GL_TEXTURE_VIEW_MIN_LEVEL         0x82DB
-#define GL_TEXTURE_VIEW_NUM_LEVELS        0x82DC
-#define GL_TEXTURE_VIEW_MIN_LAYER         0x82DD
-#define GL_TEXTURE_VIEW_NUM_LAYERS        0x82DE
-#define GL_TEXTURE_IMMUTABLE_LEVELS       0x82DF
-#define GL_VERTEX_ATTRIB_BINDING          0x82D4
-#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET  0x82D5
-#define GL_VERTEX_BINDING_DIVISOR         0x82D6
-#define GL_VERTEX_BINDING_OFFSET          0x82D7
-#define GL_VERTEX_BINDING_STRIDE          0x82D8
-#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
-#define GL_MAX_VERTEX_ATTRIB_BINDINGS     0x82DA
-#define GL_VERTEX_BINDING_BUFFER          0x8F4F
-#define GL_DISPLAY_LIST                   0x82E7
-typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
-typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
-typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
-typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
-typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
-typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
-typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
-typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
-typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
-typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void);
-typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
-GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect);
-GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
-GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
-GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level);
-GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer);
-GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
-GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
-GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
-GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
-GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name);
-GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
-GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
-GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);
-GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);
-GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-GLAPI void APIENTRY glPopDebugGroup (void);
-GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-#endif /* GL_VERSION_4_3 */
-
-#ifndef GL_VERSION_4_4
-#define GL_VERSION_4_4 1
-#define GL_MAX_VERTEX_ATTRIB_STRIDE       0x82E5
-#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
-#define GL_TEXTURE_BUFFER_BINDING         0x8C2A
-#define GL_MAP_PERSISTENT_BIT             0x0040
-#define GL_MAP_COHERENT_BIT               0x0080
-#define GL_DYNAMIC_STORAGE_BIT            0x0100
-#define GL_CLIENT_STORAGE_BIT             0x0200
-#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
-#define GL_BUFFER_IMMUTABLE_STORAGE       0x821F
-#define GL_BUFFER_STORAGE_FLAGS           0x8220
-#define GL_CLEAR_TEXTURE                  0x9365
-#define GL_LOCATION_COMPONENT             0x934A
-#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
-#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
-#define GL_QUERY_BUFFER                   0x9192
-#define GL_QUERY_BUFFER_BARRIER_BIT       0x00008000
-#define GL_QUERY_BUFFER_BINDING           0x9193
-#define GL_QUERY_RESULT_NO_WAIT           0x9194
-#define GL_MIRROR_CLAMP_TO_EDGE           0x8743
-typedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
-typedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
-typedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
-typedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
-typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
-GLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
-GLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
-GLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures);
-GLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers);
-GLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures);
-GLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
-#endif
-#endif /* GL_VERSION_4_4 */
-
-#ifndef GL_ARB_ES2_compatibility
-#define GL_ARB_ES2_compatibility 1
-#endif /* GL_ARB_ES2_compatibility */
-
-#ifndef GL_ARB_ES3_compatibility
-#define GL_ARB_ES3_compatibility 1
-#endif /* GL_ARB_ES3_compatibility */
-
-#ifndef GL_ARB_arrays_of_arrays
-#define GL_ARB_arrays_of_arrays 1
-#endif /* GL_ARB_arrays_of_arrays */
-
-#ifndef GL_ARB_base_instance
-#define GL_ARB_base_instance 1
-#endif /* GL_ARB_base_instance */
-
-#ifndef GL_ARB_bindless_texture
-#define GL_ARB_bindless_texture 1
-typedef uint64_t GLuint64EXT;
-#define GL_UNSIGNED_INT64_ARB             0x140F
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);
-typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture);
-GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler);
-GLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle);
-GLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-GLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access);
-GLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value);
-GLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value);
-GLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle);
-GLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle);
-GLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x);
-GLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params);
-#endif
-#endif /* GL_ARB_bindless_texture */
-
-#ifndef GL_ARB_blend_func_extended
-#define GL_ARB_blend_func_extended 1
-#endif /* GL_ARB_blend_func_extended */
-
-#ifndef GL_ARB_buffer_storage
-#define GL_ARB_buffer_storage 1
-#endif /* GL_ARB_buffer_storage */
-
-#ifndef GL_ARB_cl_event
-#define GL_ARB_cl_event 1
-struct _cl_context;
-struct _cl_event;
-#define GL_SYNC_CL_EVENT_ARB              0x8240
-#define GL_SYNC_CL_EVENT_COMPLETE_ARB     0x8241
-typedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);
-#endif
-#endif /* GL_ARB_cl_event */
-
-#ifndef GL_ARB_clear_buffer_object
-#define GL_ARB_clear_buffer_object 1
-#endif /* GL_ARB_clear_buffer_object */
-
-#ifndef GL_ARB_clear_texture
-#define GL_ARB_clear_texture 1
-#endif /* GL_ARB_clear_texture */
-
-#ifndef GL_ARB_color_buffer_float
-#define GL_ARB_color_buffer_float 1
-#define GL_RGBA_FLOAT_MODE_ARB            0x8820
-#define GL_CLAMP_VERTEX_COLOR_ARB         0x891A
-#define GL_CLAMP_FRAGMENT_COLOR_ARB       0x891B
-#define GL_CLAMP_READ_COLOR_ARB           0x891C
-#define GL_FIXED_ONLY_ARB                 0x891D
-typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp);
-#endif
-#endif /* GL_ARB_color_buffer_float */
-
-#ifndef GL_ARB_compatibility
-#define GL_ARB_compatibility 1
-#endif /* GL_ARB_compatibility */
-
-#ifndef GL_ARB_compressed_texture_pixel_storage
-#define GL_ARB_compressed_texture_pixel_storage 1
-#endif /* GL_ARB_compressed_texture_pixel_storage */
-
-#ifndef GL_ARB_compute_shader
-#define GL_ARB_compute_shader 1
-#define GL_COMPUTE_SHADER_BIT             0x00000020
-#endif /* GL_ARB_compute_shader */
-
-#ifndef GL_ARB_compute_variable_group_size
-#define GL_ARB_compute_variable_group_size 1
-#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344
-#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB
-#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345
-#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF
-typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);
-#endif
-#endif /* GL_ARB_compute_variable_group_size */
-
-#ifndef GL_ARB_conservative_depth
-#define GL_ARB_conservative_depth 1
-#endif /* GL_ARB_conservative_depth */
-
-#ifndef GL_ARB_copy_buffer
-#define GL_ARB_copy_buffer 1
-#define GL_COPY_READ_BUFFER_BINDING       0x8F36
-#define GL_COPY_WRITE_BUFFER_BINDING      0x8F37
-#endif /* GL_ARB_copy_buffer */
-
-#ifndef GL_ARB_copy_image
-#define GL_ARB_copy_image 1
-#endif /* GL_ARB_copy_image */
-
-#ifndef GL_ARB_debug_output
-#define GL_ARB_debug_output 1
-typedef void (APIENTRY  *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB   0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION_ARB    0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM_ARB  0x8245
-#define GL_DEBUG_SOURCE_API_ARB           0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB   0x8249
-#define GL_DEBUG_SOURCE_APPLICATION_ARB   0x824A
-#define GL_DEBUG_SOURCE_OTHER_ARB         0x824B
-#define GL_DEBUG_TYPE_ERROR_ARB           0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
-#define GL_DEBUG_TYPE_PORTABILITY_ARB     0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE_ARB     0x8250
-#define GL_DEBUG_TYPE_OTHER_ARB           0x8251
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB   0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB  0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_ARB      0x9145
-#define GL_DEBUG_SEVERITY_HIGH_ARB        0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_ARB      0x9147
-#define GL_DEBUG_SEVERITY_LOW_ARB         0x9148
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-#endif
-#endif /* GL_ARB_debug_output */
-
-#ifndef GL_ARB_depth_buffer_float
-#define GL_ARB_depth_buffer_float 1
-#endif /* GL_ARB_depth_buffer_float */
-
-#ifndef GL_ARB_depth_clamp
-#define GL_ARB_depth_clamp 1
-#endif /* GL_ARB_depth_clamp */
-
-#ifndef GL_ARB_depth_texture
-#define GL_ARB_depth_texture 1
-#define GL_DEPTH_COMPONENT16_ARB          0x81A5
-#define GL_DEPTH_COMPONENT24_ARB          0x81A6
-#define GL_DEPTH_COMPONENT32_ARB          0x81A7
-#define GL_TEXTURE_DEPTH_SIZE_ARB         0x884A
-#define GL_DEPTH_TEXTURE_MODE_ARB         0x884B
-#endif /* GL_ARB_depth_texture */
-
-#ifndef GL_ARB_draw_buffers
-#define GL_ARB_draw_buffers 1
-#define GL_MAX_DRAW_BUFFERS_ARB           0x8824
-#define GL_DRAW_BUFFER0_ARB               0x8825
-#define GL_DRAW_BUFFER1_ARB               0x8826
-#define GL_DRAW_BUFFER2_ARB               0x8827
-#define GL_DRAW_BUFFER3_ARB               0x8828
-#define GL_DRAW_BUFFER4_ARB               0x8829
-#define GL_DRAW_BUFFER5_ARB               0x882A
-#define GL_DRAW_BUFFER6_ARB               0x882B
-#define GL_DRAW_BUFFER7_ARB               0x882C
-#define GL_DRAW_BUFFER8_ARB               0x882D
-#define GL_DRAW_BUFFER9_ARB               0x882E
-#define GL_DRAW_BUFFER10_ARB              0x882F
-#define GL_DRAW_BUFFER11_ARB              0x8830
-#define GL_DRAW_BUFFER12_ARB              0x8831
-#define GL_DRAW_BUFFER13_ARB              0x8832
-#define GL_DRAW_BUFFER14_ARB              0x8833
-#define GL_DRAW_BUFFER15_ARB              0x8834
-typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs);
-#endif
-#endif /* GL_ARB_draw_buffers */
-
-#ifndef GL_ARB_draw_buffers_blend
-#define GL_ARB_draw_buffers_blend 1
-typedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-typedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-GLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#endif
-#endif /* GL_ARB_draw_buffers_blend */
-
-#ifndef GL_ARB_draw_elements_base_vertex
-#define GL_ARB_draw_elements_base_vertex 1
-#endif /* GL_ARB_draw_elements_base_vertex */
-
-#ifndef GL_ARB_draw_indirect
-#define GL_ARB_draw_indirect 1
-#endif /* GL_ARB_draw_indirect */
-
-#ifndef GL_ARB_draw_instanced
-#define GL_ARB_draw_instanced 1
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#endif
-#endif /* GL_ARB_draw_instanced */
-
-#ifndef GL_ARB_enhanced_layouts
-#define GL_ARB_enhanced_layouts 1
-#endif /* GL_ARB_enhanced_layouts */
-
-#ifndef GL_ARB_explicit_attrib_location
-#define GL_ARB_explicit_attrib_location 1
-#endif /* GL_ARB_explicit_attrib_location */
-
-#ifndef GL_ARB_explicit_uniform_location
-#define GL_ARB_explicit_uniform_location 1
-#endif /* GL_ARB_explicit_uniform_location */
-
-#ifndef GL_ARB_fragment_coord_conventions
-#define GL_ARB_fragment_coord_conventions 1
-#endif /* GL_ARB_fragment_coord_conventions */
-
-#ifndef GL_ARB_fragment_layer_viewport
-#define GL_ARB_fragment_layer_viewport 1
-#endif /* GL_ARB_fragment_layer_viewport */
-
-#ifndef GL_ARB_fragment_program
-#define GL_ARB_fragment_program 1
-#define GL_FRAGMENT_PROGRAM_ARB           0x8804
-#define GL_PROGRAM_FORMAT_ASCII_ARB       0x8875
-#define GL_PROGRAM_LENGTH_ARB             0x8627
-#define GL_PROGRAM_FORMAT_ARB             0x8876
-#define GL_PROGRAM_BINDING_ARB            0x8677
-#define GL_PROGRAM_INSTRUCTIONS_ARB       0x88A0
-#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB   0x88A1
-#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2
-#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3
-#define GL_PROGRAM_TEMPORARIES_ARB        0x88A4
-#define GL_MAX_PROGRAM_TEMPORARIES_ARB    0x88A5
-#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6
-#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7
-#define GL_PROGRAM_PARAMETERS_ARB         0x88A8
-#define GL_MAX_PROGRAM_PARAMETERS_ARB     0x88A9
-#define GL_PROGRAM_NATIVE_PARAMETERS_ARB  0x88AA
-#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB
-#define GL_PROGRAM_ATTRIBS_ARB            0x88AC
-#define GL_MAX_PROGRAM_ATTRIBS_ARB        0x88AD
-#define GL_PROGRAM_NATIVE_ATTRIBS_ARB     0x88AE
-#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF
-#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4
-#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5
-#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6
-#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB   0x8805
-#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB   0x8806
-#define GL_PROGRAM_TEX_INDIRECTIONS_ARB   0x8807
-#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808
-#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809
-#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A
-#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B
-#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C
-#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D
-#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E
-#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F
-#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810
-#define GL_PROGRAM_STRING_ARB             0x8628
-#define GL_PROGRAM_ERROR_POSITION_ARB     0x864B
-#define GL_CURRENT_MATRIX_ARB             0x8641
-#define GL_TRANSPOSE_CURRENT_MATRIX_ARB   0x88B7
-#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640
-#define GL_MAX_PROGRAM_MATRICES_ARB       0x862F
-#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E
-#define GL_MAX_TEXTURE_COORDS_ARB         0x8871
-#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB    0x8872
-#define GL_PROGRAM_ERROR_STRING_ARB       0x8874
-#define GL_MATRIX0_ARB                    0x88C0
-#define GL_MATRIX1_ARB                    0x88C1
-#define GL_MATRIX2_ARB                    0x88C2
-#define GL_MATRIX3_ARB                    0x88C3
-#define GL_MATRIX4_ARB                    0x88C4
-#define GL_MATRIX5_ARB                    0x88C5
-#define GL_MATRIX6_ARB                    0x88C6
-#define GL_MATRIX7_ARB                    0x88C7
-#define GL_MATRIX8_ARB                    0x88C8
-#define GL_MATRIX9_ARB                    0x88C9
-#define GL_MATRIX10_ARB                   0x88CA
-#define GL_MATRIX11_ARB                   0x88CB
-#define GL_MATRIX12_ARB                   0x88CC
-#define GL_MATRIX13_ARB                   0x88CD
-#define GL_MATRIX14_ARB                   0x88CE
-#define GL_MATRIX15_ARB                   0x88CF
-#define GL_MATRIX16_ARB                   0x88D0
-#define GL_MATRIX17_ARB                   0x88D1
-#define GL_MATRIX18_ARB                   0x88D2
-#define GL_MATRIX19_ARB                   0x88D3
-#define GL_MATRIX20_ARB                   0x88D4
-#define GL_MATRIX21_ARB                   0x88D5
-#define GL_MATRIX22_ARB                   0x88D6
-#define GL_MATRIX23_ARB                   0x88D7
-#define GL_MATRIX24_ARB                   0x88D8
-#define GL_MATRIX25_ARB                   0x88D9
-#define GL_MATRIX26_ARB                   0x88DA
-#define GL_MATRIX27_ARB                   0x88DB
-#define GL_MATRIX28_ARB                   0x88DC
-#define GL_MATRIX29_ARB                   0x88DD
-#define GL_MATRIX30_ARB                   0x88DE
-#define GL_MATRIX31_ARB                   0x88DF
-typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string);
-typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);
-typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string);
-GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program);
-GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs);
-GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs);
-GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, void *string);
-GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program);
-#endif
-#endif /* GL_ARB_fragment_program */
-
-#ifndef GL_ARB_fragment_program_shadow
-#define GL_ARB_fragment_program_shadow 1
-#endif /* GL_ARB_fragment_program_shadow */
-
-#ifndef GL_ARB_fragment_shader
-#define GL_ARB_fragment_shader 1
-#define GL_FRAGMENT_SHADER_ARB            0x8B30
-#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B
-#endif /* GL_ARB_fragment_shader */
-
-#ifndef GL_ARB_framebuffer_no_attachments
-#define GL_ARB_framebuffer_no_attachments 1
-#endif /* GL_ARB_framebuffer_no_attachments */
-
-#ifndef GL_ARB_framebuffer_object
-#define GL_ARB_framebuffer_object 1
-#endif /* GL_ARB_framebuffer_object */
-
-#ifndef GL_ARB_framebuffer_sRGB
-#define GL_ARB_framebuffer_sRGB 1
-#endif /* GL_ARB_framebuffer_sRGB */
-
-#ifndef GL_KHR_context_flush_control
-#define GL_CONTEXT_RELEASE_BEHAVIOR       0x82FB
-#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
-#endif /* GL_KHR_context_flush_control */
-
-#ifndef GL_ARB_geometry_shader4
-#define GL_ARB_geometry_shader4 1
-#define GL_LINES_ADJACENCY_ARB            0x000A
-#define GL_LINE_STRIP_ADJACENCY_ARB       0x000B
-#define GL_TRIANGLES_ADJACENCY_ARB        0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY_ARB   0x000D
-#define GL_PROGRAM_POINT_SIZE_ARB         0x8642
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
-#define GL_GEOMETRY_SHADER_ARB            0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT_ARB      0x8DDA
-#define GL_GEOMETRY_INPUT_TYPE_ARB        0x8DDB
-#define GL_GEOMETRY_OUTPUT_TYPE_ARB       0x8DDC
-#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
-#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
-GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#endif
-#endif /* GL_ARB_geometry_shader4 */
-
-#ifndef GL_ARB_get_program_binary
-#define GL_ARB_get_program_binary 1
-#endif /* GL_ARB_get_program_binary */
-
-#ifndef GL_ARB_gpu_shader5
-#define GL_ARB_gpu_shader5 1
-#endif /* GL_ARB_gpu_shader5 */
-
-#ifndef GL_ARB_gpu_shader_fp64
-#define GL_ARB_gpu_shader_fp64 1
-#endif /* GL_ARB_gpu_shader_fp64 */
-
-#ifndef GL_ARB_half_float_pixel
-#define GL_ARB_half_float_pixel 1
-typedef unsigned short GLhalfARB;
-#define GL_HALF_FLOAT_ARB                 0x140B
-#endif /* GL_ARB_half_float_pixel */
-
-#ifndef GL_ARB_half_float_vertex
-#define GL_ARB_half_float_vertex 1
-#endif /* GL_ARB_half_float_vertex */
-
-#ifndef GL_ARB_imaging
-#define GL_ARB_imaging 1
-#define GL_BLEND_COLOR                    0x8005
-#define GL_BLEND_EQUATION                 0x8009
-#define GL_CONVOLUTION_1D                 0x8010
-#define GL_CONVOLUTION_2D                 0x8011
-#define GL_SEPARABLE_2D                   0x8012
-#define GL_CONVOLUTION_BORDER_MODE        0x8013
-#define GL_CONVOLUTION_FILTER_SCALE       0x8014
-#define GL_CONVOLUTION_FILTER_BIAS        0x8015
-#define GL_REDUCE                         0x8016
-#define GL_CONVOLUTION_FORMAT             0x8017
-#define GL_CONVOLUTION_WIDTH              0x8018
-#define GL_CONVOLUTION_HEIGHT             0x8019
-#define GL_MAX_CONVOLUTION_WIDTH          0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT         0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE     0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE   0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE    0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE   0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS      0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS    0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS     0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS    0x8023
-#define GL_HISTOGRAM                      0x8024
-#define GL_PROXY_HISTOGRAM                0x8025
-#define GL_HISTOGRAM_WIDTH                0x8026
-#define GL_HISTOGRAM_FORMAT               0x8027
-#define GL_HISTOGRAM_RED_SIZE             0x8028
-#define GL_HISTOGRAM_GREEN_SIZE           0x8029
-#define GL_HISTOGRAM_BLUE_SIZE            0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE           0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE       0x802C
-#define GL_HISTOGRAM_SINK                 0x802D
-#define GL_MINMAX                         0x802E
-#define GL_MINMAX_FORMAT                  0x802F
-#define GL_MINMAX_SINK                    0x8030
-#define GL_TABLE_TOO_LARGE                0x8031
-#define GL_COLOR_MATRIX                   0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH       0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH   0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE    0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE  0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE   0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE  0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS     0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS   0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS    0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS   0x80BB
-#define GL_COLOR_TABLE                    0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE   0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE  0x80D2
-#define GL_PROXY_COLOR_TABLE              0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5
-#define GL_COLOR_TABLE_SCALE              0x80D6
-#define GL_COLOR_TABLE_BIAS               0x80D7
-#define GL_COLOR_TABLE_FORMAT             0x80D8
-#define GL_COLOR_TABLE_WIDTH              0x80D9
-#define GL_COLOR_TABLE_RED_SIZE           0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE         0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE          0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE         0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE     0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE     0x80DF
-#define GL_CONSTANT_BORDER                0x8151
-#define GL_REPLICATE_BORDER               0x8153
-#define GL_CONVOLUTION_BORDER_COLOR       0x8154
-typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, void *table);
-GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);
-GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params);
-GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image);
-GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glResetHistogram (GLenum target);
-GLAPI void APIENTRY glResetMinmax (GLenum target);
-#endif
-#endif /* GL_ARB_imaging */
-
-#ifndef GL_ARB_indirect_parameters
-#define GL_ARB_indirect_parameters 1
-#define GL_PARAMETER_BUFFER_ARB           0x80EE
-#define GL_PARAMETER_BUFFER_BINDING_ARB   0x80EF
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
-#endif
-#endif /* GL_ARB_indirect_parameters */
-
-#ifndef GL_ARB_instanced_arrays
-#define GL_ARB_instanced_arrays 1
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE
-typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
-#endif
-#endif /* GL_ARB_instanced_arrays */
-
-#ifndef GL_ARB_internalformat_query
-#define GL_ARB_internalformat_query 1
-#endif /* GL_ARB_internalformat_query */
-
-#ifndef GL_ARB_internalformat_query2
-#define GL_ARB_internalformat_query2 1
-#define GL_SRGB_DECODE_ARB                0x8299
-#endif /* GL_ARB_internalformat_query2 */
-
-#ifndef GL_ARB_invalidate_subdata
-#define GL_ARB_invalidate_subdata 1
-#endif /* GL_ARB_invalidate_subdata */
-
-#ifndef GL_ARB_map_buffer_alignment
-#define GL_ARB_map_buffer_alignment 1
-#endif /* GL_ARB_map_buffer_alignment */
-
-#ifndef GL_ARB_map_buffer_range
-#define GL_ARB_map_buffer_range 1
-#endif /* GL_ARB_map_buffer_range */
-
-#ifndef GL_ARB_matrix_palette
-#define GL_ARB_matrix_palette 1
-#define GL_MATRIX_PALETTE_ARB             0x8840
-#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841
-#define GL_MAX_PALETTE_MATRICES_ARB       0x8842
-#define GL_CURRENT_PALETTE_MATRIX_ARB     0x8843
-#define GL_MATRIX_INDEX_ARRAY_ARB         0x8844
-#define GL_CURRENT_MATRIX_INDEX_ARB       0x8845
-#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB    0x8846
-#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB    0x8847
-#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB  0x8848
-#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849
-typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
-typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
-typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);
-typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);
-typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index);
-GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices);
-GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices);
-GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices);
-GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_ARB_matrix_palette */
-
-#ifndef GL_ARB_multi_bind
-#define GL_ARB_multi_bind 1
-#endif /* GL_ARB_multi_bind */
-
-#ifndef GL_ARB_multi_draw_indirect
-#define GL_ARB_multi_draw_indirect 1
-#endif /* GL_ARB_multi_draw_indirect */
-
-#ifndef GL_ARB_multisample
-#define GL_ARB_multisample 1
-#define GL_MULTISAMPLE_ARB                0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB   0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_ARB        0x809F
-#define GL_SAMPLE_COVERAGE_ARB            0x80A0
-#define GL_SAMPLE_BUFFERS_ARB             0x80A8
-#define GL_SAMPLES_ARB                    0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE_ARB      0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT_ARB     0x80AB
-#define GL_MULTISAMPLE_BIT_ARB            0x20000000
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert);
-#endif
-#endif /* GL_ARB_multisample */
-
-#ifndef GL_ARB_multitexture
-#define GL_ARB_multitexture 1
-#define GL_TEXTURE0_ARB                   0x84C0
-#define GL_TEXTURE1_ARB                   0x84C1
-#define GL_TEXTURE2_ARB                   0x84C2
-#define GL_TEXTURE3_ARB                   0x84C3
-#define GL_TEXTURE4_ARB                   0x84C4
-#define GL_TEXTURE5_ARB                   0x84C5
-#define GL_TEXTURE6_ARB                   0x84C6
-#define GL_TEXTURE7_ARB                   0x84C7
-#define GL_TEXTURE8_ARB                   0x84C8
-#define GL_TEXTURE9_ARB                   0x84C9
-#define GL_TEXTURE10_ARB                  0x84CA
-#define GL_TEXTURE11_ARB                  0x84CB
-#define GL_TEXTURE12_ARB                  0x84CC
-#define GL_TEXTURE13_ARB                  0x84CD
-#define GL_TEXTURE14_ARB                  0x84CE
-#define GL_TEXTURE15_ARB                  0x84CF
-#define GL_TEXTURE16_ARB                  0x84D0
-#define GL_TEXTURE17_ARB                  0x84D1
-#define GL_TEXTURE18_ARB                  0x84D2
-#define GL_TEXTURE19_ARB                  0x84D3
-#define GL_TEXTURE20_ARB                  0x84D4
-#define GL_TEXTURE21_ARB                  0x84D5
-#define GL_TEXTURE22_ARB                  0x84D6
-#define GL_TEXTURE23_ARB                  0x84D7
-#define GL_TEXTURE24_ARB                  0x84D8
-#define GL_TEXTURE25_ARB                  0x84D9
-#define GL_TEXTURE26_ARB                  0x84DA
-#define GL_TEXTURE27_ARB                  0x84DB
-#define GL_TEXTURE28_ARB                  0x84DC
-#define GL_TEXTURE29_ARB                  0x84DD
-#define GL_TEXTURE30_ARB                  0x84DE
-#define GL_TEXTURE31_ARB                  0x84DF
-#define GL_ACTIVE_TEXTURE_ARB             0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE_ARB      0x84E1
-#define GL_MAX_TEXTURE_UNITS_ARB          0x84E2
-typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTextureARB (GLenum texture);
-GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture);
-GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s);
-GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s);
-GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s);
-GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s);
-GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);
-GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);
-GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);
-GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);
-GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);
-GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);
-GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);
-GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);
-GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v);
-GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);
-GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);
-GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);
-GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v);
-GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v);
-#endif
-#endif /* GL_ARB_multitexture */
-
-#ifndef GL_ARB_occlusion_query
-#define GL_ARB_occlusion_query 1
-#define GL_QUERY_COUNTER_BITS_ARB         0x8864
-#define GL_CURRENT_QUERY_ARB              0x8865
-#define GL_QUERY_RESULT_ARB               0x8866
-#define GL_QUERY_RESULT_AVAILABLE_ARB     0x8867
-#define GL_SAMPLES_PASSED_ARB             0x8914
-typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id);
-GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id);
-GLAPI void APIENTRY glEndQueryARB (GLenum target);
-GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params);
-#endif
-#endif /* GL_ARB_occlusion_query */
-
-#ifndef GL_ARB_occlusion_query2
-#define GL_ARB_occlusion_query2 1
-#endif /* GL_ARB_occlusion_query2 */
-
-#ifndef GL_ARB_pixel_buffer_object
-#define GL_ARB_pixel_buffer_object 1
-#define GL_PIXEL_PACK_BUFFER_ARB          0x88EB
-#define GL_PIXEL_UNPACK_BUFFER_ARB        0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING_ARB  0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF
-#endif /* GL_ARB_pixel_buffer_object */
-
-#ifndef GL_ARB_point_parameters
-#define GL_ARB_point_parameters 1
-#define GL_POINT_SIZE_MIN_ARB             0x8126
-#define GL_POINT_SIZE_MAX_ARB             0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_ARB  0x8128
-#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params);
-#endif
-#endif /* GL_ARB_point_parameters */
-
-#ifndef GL_ARB_point_sprite
-#define GL_ARB_point_sprite 1
-#define GL_POINT_SPRITE_ARB               0x8861
-#define GL_COORD_REPLACE_ARB              0x8862
-#endif /* GL_ARB_point_sprite */
-
-#ifndef GL_ARB_program_interface_query
-#define GL_ARB_program_interface_query 1
-#endif /* GL_ARB_program_interface_query */
-
-#ifndef GL_ARB_provoking_vertex
-#define GL_ARB_provoking_vertex 1
-#endif /* GL_ARB_provoking_vertex */
-
-#ifndef GL_ARB_query_buffer_object
-#define GL_ARB_query_buffer_object 1
-#endif /* GL_ARB_query_buffer_object */
-
-#ifndef GL_ARB_robust_buffer_access_behavior
-#define GL_ARB_robust_buffer_access_behavior 1
-#endif /* GL_ARB_robust_buffer_access_behavior */
-
-#ifndef GL_ARB_robustness
-#define GL_ARB_robustness 1
-#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004
-#define GL_LOSE_CONTEXT_ON_RESET_ARB      0x8252
-#define GL_GUILTY_CONTEXT_RESET_ARB       0x8253
-#define GL_INNOCENT_CONTEXT_RESET_ARB     0x8254
-#define GL_UNKNOWN_CONTEXT_RESET_ARB      0x8255
-#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
-#define GL_NO_RESET_NOTIFICATION_ARB      0x8261
-typedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);
-typedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
-typedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-typedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img);
-typedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
-typedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
-typedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
-typedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values);
-typedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values);
-typedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values);
-typedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern);
-typedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
-typedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
-typedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
-typedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-typedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void);
-GLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);
-GLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
-GLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img);
-GLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-GLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-GLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
-GLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
-GLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
-GLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
-GLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
-GLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values);
-GLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values);
-GLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values);
-GLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern);
-GLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
-GLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
-GLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
-GLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-GLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
-#endif
-#endif /* GL_ARB_robustness */
-
-#ifndef GL_ARB_robustness_isolation
-#define GL_ARB_robustness_isolation 1
-#endif /* GL_ARB_robustness_isolation */
-
-#ifndef GL_ARB_sample_shading
-#define GL_ARB_sample_shading 1
-#define GL_SAMPLE_SHADING_ARB             0x8C36
-#define GL_MIN_SAMPLE_SHADING_VALUE_ARB   0x8C37
-typedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value);
-#endif
-#endif /* GL_ARB_sample_shading */
-
-#ifndef GL_ARB_sampler_objects
-#define GL_ARB_sampler_objects 1
-#endif /* GL_ARB_sampler_objects */
-
-#ifndef GL_ARB_seamless_cube_map
-#define GL_ARB_seamless_cube_map 1
-#endif /* GL_ARB_seamless_cube_map */
-
-#ifndef GL_ARB_seamless_cubemap_per_texture
-#define GL_ARB_seamless_cubemap_per_texture 1
-#endif /* GL_ARB_seamless_cubemap_per_texture */
-
-#ifndef GL_ARB_separate_shader_objects
-#define GL_ARB_separate_shader_objects 1
-#endif /* GL_ARB_separate_shader_objects */
-
-#ifndef GL_ARB_shader_atomic_counters
-#define GL_ARB_shader_atomic_counters 1
-#endif /* GL_ARB_shader_atomic_counters */
-
-#ifndef GL_ARB_shader_bit_encoding
-#define GL_ARB_shader_bit_encoding 1
-#endif /* GL_ARB_shader_bit_encoding */
-
-#ifndef GL_ARB_shader_draw_parameters
-#define GL_ARB_shader_draw_parameters 1
-#endif /* GL_ARB_shader_draw_parameters */
-
-#ifndef GL_ARB_shader_group_vote
-#define GL_ARB_shader_group_vote 1
-#endif /* GL_ARB_shader_group_vote */
-
-#ifndef GL_ARB_shader_image_load_store
-#define GL_ARB_shader_image_load_store 1
-#endif /* GL_ARB_shader_image_load_store */
-
-#ifndef GL_ARB_shader_image_size
-#define GL_ARB_shader_image_size 1
-#endif /* GL_ARB_shader_image_size */
-
-#ifndef GL_ARB_shader_objects
-#define GL_ARB_shader_objects 1
-#ifdef __APPLE__
-typedef void *GLhandleARB;
-#else
-typedef unsigned int GLhandleARB;
-#endif
-typedef char GLcharARB;
-#define GL_PROGRAM_OBJECT_ARB             0x8B40
-#define GL_SHADER_OBJECT_ARB              0x8B48
-#define GL_OBJECT_TYPE_ARB                0x8B4E
-#define GL_OBJECT_SUBTYPE_ARB             0x8B4F
-#define GL_FLOAT_VEC2_ARB                 0x8B50
-#define GL_FLOAT_VEC3_ARB                 0x8B51
-#define GL_FLOAT_VEC4_ARB                 0x8B52
-#define GL_INT_VEC2_ARB                   0x8B53
-#define GL_INT_VEC3_ARB                   0x8B54
-#define GL_INT_VEC4_ARB                   0x8B55
-#define GL_BOOL_ARB                       0x8B56
-#define GL_BOOL_VEC2_ARB                  0x8B57
-#define GL_BOOL_VEC3_ARB                  0x8B58
-#define GL_BOOL_VEC4_ARB                  0x8B59
-#define GL_FLOAT_MAT2_ARB                 0x8B5A
-#define GL_FLOAT_MAT3_ARB                 0x8B5B
-#define GL_FLOAT_MAT4_ARB                 0x8B5C
-#define GL_SAMPLER_1D_ARB                 0x8B5D
-#define GL_SAMPLER_2D_ARB                 0x8B5E
-#define GL_SAMPLER_3D_ARB                 0x8B5F
-#define GL_SAMPLER_CUBE_ARB               0x8B60
-#define GL_SAMPLER_1D_SHADOW_ARB          0x8B61
-#define GL_SAMPLER_2D_SHADOW_ARB          0x8B62
-#define GL_SAMPLER_2D_RECT_ARB            0x8B63
-#define GL_SAMPLER_2D_RECT_SHADOW_ARB     0x8B64
-#define GL_OBJECT_DELETE_STATUS_ARB       0x8B80
-#define GL_OBJECT_COMPILE_STATUS_ARB      0x8B81
-#define GL_OBJECT_LINK_STATUS_ARB         0x8B82
-#define GL_OBJECT_VALIDATE_STATUS_ARB     0x8B83
-#define GL_OBJECT_INFO_LOG_LENGTH_ARB     0x8B84
-#define GL_OBJECT_ATTACHED_OBJECTS_ARB    0x8B85
-#define GL_OBJECT_ACTIVE_UNIFORMS_ARB     0x8B86
-#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
-#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88
-typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
-typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
-typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
-typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
-typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
-typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
-typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
-typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
-typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
-typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
-typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);
-typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
-typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
-typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);
-typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj);
-GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname);
-GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj);
-GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType);
-GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
-GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);
-GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
-GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj);
-GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj);
-GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj);
-GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj);
-GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0);
-GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0);
-GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
-GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
-GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
-GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);
-GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);
-GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
-#endif
-#endif /* GL_ARB_shader_objects */
-
-#ifndef GL_ARB_shader_precision
-#define GL_ARB_shader_precision 1
-#endif /* GL_ARB_shader_precision */
-
-#ifndef GL_ARB_shader_stencil_export
-#define GL_ARB_shader_stencil_export 1
-#endif /* GL_ARB_shader_stencil_export */
-
-#ifndef GL_ARB_shader_storage_buffer_object
-#define GL_ARB_shader_storage_buffer_object 1
-#endif /* GL_ARB_shader_storage_buffer_object */
-
-#ifndef GL_ARB_shader_subroutine
-#define GL_ARB_shader_subroutine 1
-#endif /* GL_ARB_shader_subroutine */
-
-#ifndef GL_ARB_shader_texture_lod
-#define GL_ARB_shader_texture_lod 1
-#endif /* GL_ARB_shader_texture_lod */
-
-#ifndef GL_ARB_shading_language_100
-#define GL_ARB_shading_language_100 1
-#define GL_SHADING_LANGUAGE_VERSION_ARB   0x8B8C
-#endif /* GL_ARB_shading_language_100 */
-
-#ifndef GL_ARB_shading_language_420pack
-#define GL_ARB_shading_language_420pack 1
-#endif /* GL_ARB_shading_language_420pack */
-
-#ifndef GL_ARB_shading_language_include
-#define GL_ARB_shading_language_include 1
-#define GL_SHADER_INCLUDE_ARB             0x8DAE
-#define GL_NAMED_STRING_LENGTH_ARB        0x8DE9
-#define GL_NAMED_STRING_TYPE_ARB          0x8DEA
-typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
-typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
-typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
-typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
-typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
-GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
-GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);
-GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
-GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
-GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ARB_shading_language_include */
-
-#ifndef GL_ARB_shading_language_packing
-#define GL_ARB_shading_language_packing 1
-#endif /* GL_ARB_shading_language_packing */
-
-#ifndef GL_ARB_shadow
-#define GL_ARB_shadow 1
-#define GL_TEXTURE_COMPARE_MODE_ARB       0x884C
-#define GL_TEXTURE_COMPARE_FUNC_ARB       0x884D
-#define GL_COMPARE_R_TO_TEXTURE_ARB       0x884E
-#endif /* GL_ARB_shadow */
-
-#ifndef GL_ARB_shadow_ambient
-#define GL_ARB_shadow_ambient 1
-#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF
-#endif /* GL_ARB_shadow_ambient */
-
-#ifndef GL_ARB_sparse_texture
-#define GL_ARB_sparse_texture 1
-#define GL_TEXTURE_SPARSE_ARB             0x91A6
-#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB    0x91A7
-#define GL_MIN_SPARSE_LEVEL_ARB           0x919B
-#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB     0x91A8
-#define GL_VIRTUAL_PAGE_SIZE_X_ARB        0x9195
-#define GL_VIRTUAL_PAGE_SIZE_Y_ARB        0x9196
-#define GL_VIRTUAL_PAGE_SIZE_Z_ARB        0x9197
-#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB    0x9198
-#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199
-#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A
-#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9
-typedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-#endif
-#endif /* GL_ARB_sparse_texture */
-
-#ifndef GL_ARB_stencil_texturing
-#define GL_ARB_stencil_texturing 1
-#endif /* GL_ARB_stencil_texturing */
-
-#ifndef GL_ARB_sync
-#define GL_ARB_sync 1
-#endif /* GL_ARB_sync */
-
-#ifndef GL_ARB_tessellation_shader
-#define GL_ARB_tessellation_shader 1
-#endif /* GL_ARB_tessellation_shader */
-
-#ifndef GL_ARB_texture_border_clamp
-#define GL_ARB_texture_border_clamp 1
-#define GL_CLAMP_TO_BORDER_ARB            0x812D
-#endif /* GL_ARB_texture_border_clamp */
-
-#ifndef GL_ARB_texture_buffer_object
-#define GL_ARB_texture_buffer_object 1
-#define GL_TEXTURE_BUFFER_ARB             0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB    0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER_ARB     0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D
-#define GL_TEXTURE_BUFFER_FORMAT_ARB      0x8C2E
-typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
-#endif
-#endif /* GL_ARB_texture_buffer_object */
-
-#ifndef GL_ARB_texture_buffer_object_rgb32
-#define GL_ARB_texture_buffer_object_rgb32 1
-#endif /* GL_ARB_texture_buffer_object_rgb32 */
-
-#ifndef GL_ARB_texture_buffer_range
-#define GL_ARB_texture_buffer_range 1
-#endif /* GL_ARB_texture_buffer_range */
-
-#ifndef GL_ARB_texture_compression
-#define GL_ARB_texture_compression 1
-#define GL_COMPRESSED_ALPHA_ARB           0x84E9
-#define GL_COMPRESSED_LUMINANCE_ARB       0x84EA
-#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
-#define GL_COMPRESSED_INTENSITY_ARB       0x84EC
-#define GL_COMPRESSED_RGB_ARB             0x84ED
-#define GL_COMPRESSED_RGBA_ARB            0x84EE
-#define GL_TEXTURE_COMPRESSION_HINT_ARB   0x84EF
-#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
-#define GL_TEXTURE_COMPRESSED_ARB         0x86A1
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
-GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void *img);
-#endif
-#endif /* GL_ARB_texture_compression */
-
-#ifndef GL_ARB_texture_compression_bptc
-#define GL_ARB_texture_compression_bptc 1
-#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
-#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
-#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
-#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
-#endif /* GL_ARB_texture_compression_bptc */
-
-#ifndef GL_ARB_texture_compression_rgtc
-#define GL_ARB_texture_compression_rgtc 1
-#endif /* GL_ARB_texture_compression_rgtc */
-
-#ifndef GL_ARB_texture_cube_map
-#define GL_ARB_texture_cube_map 1
-#define GL_NORMAL_MAP_ARB                 0x8511
-#define GL_REFLECTION_MAP_ARB             0x8512
-#define GL_TEXTURE_CUBE_MAP_ARB           0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARB   0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARB     0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB  0x851C
-#endif /* GL_ARB_texture_cube_map */
-
-#ifndef GL_ARB_texture_cube_map_array
-#define GL_ARB_texture_cube_map_array 1
-#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB     0x9009
-#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A
-#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B
-#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB     0x900C
-#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D
-#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F
-#endif /* GL_ARB_texture_cube_map_array */
-
-#ifndef GL_ARB_texture_env_add
-#define GL_ARB_texture_env_add 1
-#endif /* GL_ARB_texture_env_add */
-
-#ifndef GL_ARB_texture_env_combine
-#define GL_ARB_texture_env_combine 1
-#define GL_COMBINE_ARB                    0x8570
-#define GL_COMBINE_RGB_ARB                0x8571
-#define GL_COMBINE_ALPHA_ARB              0x8572
-#define GL_SOURCE0_RGB_ARB                0x8580
-#define GL_SOURCE1_RGB_ARB                0x8581
-#define GL_SOURCE2_RGB_ARB                0x8582
-#define GL_SOURCE0_ALPHA_ARB              0x8588
-#define GL_SOURCE1_ALPHA_ARB              0x8589
-#define GL_SOURCE2_ALPHA_ARB              0x858A
-#define GL_OPERAND0_RGB_ARB               0x8590
-#define GL_OPERAND1_RGB_ARB               0x8591
-#define GL_OPERAND2_RGB_ARB               0x8592
-#define GL_OPERAND0_ALPHA_ARB             0x8598
-#define GL_OPERAND1_ALPHA_ARB             0x8599
-#define GL_OPERAND2_ALPHA_ARB             0x859A
-#define GL_RGB_SCALE_ARB                  0x8573
-#define GL_ADD_SIGNED_ARB                 0x8574
-#define GL_INTERPOLATE_ARB                0x8575
-#define GL_SUBTRACT_ARB                   0x84E7
-#define GL_CONSTANT_ARB                   0x8576
-#define GL_PRIMARY_COLOR_ARB              0x8577
-#define GL_PREVIOUS_ARB                   0x8578
-#endif /* GL_ARB_texture_env_combine */
-
-#ifndef GL_ARB_texture_env_crossbar
-#define GL_ARB_texture_env_crossbar 1
-#endif /* GL_ARB_texture_env_crossbar */
-
-#ifndef GL_ARB_texture_env_dot3
-#define GL_ARB_texture_env_dot3 1
-#define GL_DOT3_RGB_ARB                   0x86AE
-#define GL_DOT3_RGBA_ARB                  0x86AF
-#endif /* GL_ARB_texture_env_dot3 */
-
-#ifndef GL_ARB_texture_float
-#define GL_ARB_texture_float 1
-#define GL_TEXTURE_RED_TYPE_ARB           0x8C10
-#define GL_TEXTURE_GREEN_TYPE_ARB         0x8C11
-#define GL_TEXTURE_BLUE_TYPE_ARB          0x8C12
-#define GL_TEXTURE_ALPHA_TYPE_ARB         0x8C13
-#define GL_TEXTURE_LUMINANCE_TYPE_ARB     0x8C14
-#define GL_TEXTURE_INTENSITY_TYPE_ARB     0x8C15
-#define GL_TEXTURE_DEPTH_TYPE_ARB         0x8C16
-#define GL_UNSIGNED_NORMALIZED_ARB        0x8C17
-#define GL_RGBA32F_ARB                    0x8814
-#define GL_RGB32F_ARB                     0x8815
-#define GL_ALPHA32F_ARB                   0x8816
-#define GL_INTENSITY32F_ARB               0x8817
-#define GL_LUMINANCE32F_ARB               0x8818
-#define GL_LUMINANCE_ALPHA32F_ARB         0x8819
-#define GL_RGBA16F_ARB                    0x881A
-#define GL_RGB16F_ARB                     0x881B
-#define GL_ALPHA16F_ARB                   0x881C
-#define GL_INTENSITY16F_ARB               0x881D
-#define GL_LUMINANCE16F_ARB               0x881E
-#define GL_LUMINANCE_ALPHA16F_ARB         0x881F
-#endif /* GL_ARB_texture_float */
-
-#ifndef GL_ARB_texture_gather
-#define GL_ARB_texture_gather 1
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F
-#endif /* GL_ARB_texture_gather */
-
-#ifndef GL_ARB_texture_mirror_clamp_to_edge
-#define GL_ARB_texture_mirror_clamp_to_edge 1
-#endif /* GL_ARB_texture_mirror_clamp_to_edge */
-
-#ifndef GL_ARB_texture_mirrored_repeat
-#define GL_ARB_texture_mirrored_repeat 1
-#define GL_MIRRORED_REPEAT_ARB            0x8370
-#endif /* GL_ARB_texture_mirrored_repeat */
-
-#ifndef GL_ARB_texture_multisample
-#define GL_ARB_texture_multisample 1
-#endif /* GL_ARB_texture_multisample */
-
-#ifndef GL_ARB_texture_non_power_of_two
-#define GL_ARB_texture_non_power_of_two 1
-#endif /* GL_ARB_texture_non_power_of_two */
-
-#ifndef GL_ARB_texture_query_levels
-#define GL_ARB_texture_query_levels 1
-#endif /* GL_ARB_texture_query_levels */
-
-#ifndef GL_ARB_texture_query_lod
-#define GL_ARB_texture_query_lod 1
-#endif /* GL_ARB_texture_query_lod */
-
-#ifndef GL_ARB_texture_rectangle
-#define GL_ARB_texture_rectangle 1
-#define GL_TEXTURE_RECTANGLE_ARB          0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE_ARB  0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE_ARB    0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
-#endif /* GL_ARB_texture_rectangle */
-
-#ifndef GL_ARB_texture_rg
-#define GL_ARB_texture_rg 1
-#endif /* GL_ARB_texture_rg */
-
-#ifndef GL_ARB_texture_rgb10_a2ui
-#define GL_ARB_texture_rgb10_a2ui 1
-#endif /* GL_ARB_texture_rgb10_a2ui */
-
-#ifndef GL_ARB_texture_stencil8
-#define GL_ARB_texture_stencil8 1
-#endif /* GL_ARB_texture_stencil8 */
-
-#ifndef GL_ARB_texture_storage
-#define GL_ARB_texture_storage 1
-#endif /* GL_ARB_texture_storage */
-
-#ifndef GL_ARB_texture_storage_multisample
-#define GL_ARB_texture_storage_multisample 1
-#endif /* GL_ARB_texture_storage_multisample */
-
-#ifndef GL_ARB_texture_swizzle
-#define GL_ARB_texture_swizzle 1
-#endif /* GL_ARB_texture_swizzle */
-
-#ifndef GL_ARB_texture_view
-#define GL_ARB_texture_view 1
-#endif /* GL_ARB_texture_view */
-
-#ifndef GL_ARB_timer_query
-#define GL_ARB_timer_query 1
-#endif /* GL_ARB_timer_query */
-
-#ifndef GL_ARB_transform_feedback2
-#define GL_ARB_transform_feedback2 1
-#define GL_TRANSFORM_FEEDBACK_PAUSED      0x8E23
-#define GL_TRANSFORM_FEEDBACK_ACTIVE      0x8E24
-#endif /* GL_ARB_transform_feedback2 */
-
-#ifndef GL_ARB_transform_feedback3
-#define GL_ARB_transform_feedback3 1
-#endif /* GL_ARB_transform_feedback3 */
-
-#ifndef GL_ARB_transform_feedback_instanced
-#define GL_ARB_transform_feedback_instanced 1
-#endif /* GL_ARB_transform_feedback_instanced */
-
-#ifndef GL_ARB_transpose_matrix
-#define GL_ARB_transpose_matrix 1
-#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3
-#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4
-#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB   0x84E5
-#define GL_TRANSPOSE_COLOR_MATRIX_ARB     0x84E6
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m);
-GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m);
-GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m);
-GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m);
-#endif
-#endif /* GL_ARB_transpose_matrix */
-
-#ifndef GL_ARB_uniform_buffer_object
-#define GL_ARB_uniform_buffer_object 1
-#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS    0x8A2C
-#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
-#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
-#endif /* GL_ARB_uniform_buffer_object */
-
-#ifndef GL_ARB_vertex_array_bgra
-#define GL_ARB_vertex_array_bgra 1
-#endif /* GL_ARB_vertex_array_bgra */
-
-#ifndef GL_ARB_vertex_array_object
-#define GL_ARB_vertex_array_object 1
-#endif /* GL_ARB_vertex_array_object */
-
-#ifndef GL_ARB_vertex_attrib_64bit
-#define GL_ARB_vertex_attrib_64bit 1
-#endif /* GL_ARB_vertex_attrib_64bit */
-
-#ifndef GL_ARB_vertex_attrib_binding
-#define GL_ARB_vertex_attrib_binding 1
-#endif /* GL_ARB_vertex_attrib_binding */
-
-#ifndef GL_ARB_vertex_blend
-#define GL_ARB_vertex_blend 1
-#define GL_MAX_VERTEX_UNITS_ARB           0x86A4
-#define GL_ACTIVE_VERTEX_UNITS_ARB        0x86A5
-#define GL_WEIGHT_SUM_UNITY_ARB           0x86A6
-#define GL_VERTEX_BLEND_ARB               0x86A7
-#define GL_CURRENT_WEIGHT_ARB             0x86A8
-#define GL_WEIGHT_ARRAY_TYPE_ARB          0x86A9
-#define GL_WEIGHT_ARRAY_STRIDE_ARB        0x86AA
-#define GL_WEIGHT_ARRAY_SIZE_ARB          0x86AB
-#define GL_WEIGHT_ARRAY_POINTER_ARB       0x86AC
-#define GL_WEIGHT_ARRAY_ARB               0x86AD
-#define GL_MODELVIEW0_ARB                 0x1700
-#define GL_MODELVIEW1_ARB                 0x850A
-#define GL_MODELVIEW2_ARB                 0x8722
-#define GL_MODELVIEW3_ARB                 0x8723
-#define GL_MODELVIEW4_ARB                 0x8724
-#define GL_MODELVIEW5_ARB                 0x8725
-#define GL_MODELVIEW6_ARB                 0x8726
-#define GL_MODELVIEW7_ARB                 0x8727
-#define GL_MODELVIEW8_ARB                 0x8728
-#define GL_MODELVIEW9_ARB                 0x8729
-#define GL_MODELVIEW10_ARB                0x872A
-#define GL_MODELVIEW11_ARB                0x872B
-#define GL_MODELVIEW12_ARB                0x872C
-#define GL_MODELVIEW13_ARB                0x872D
-#define GL_MODELVIEW14_ARB                0x872E
-#define GL_MODELVIEW15_ARB                0x872F
-#define GL_MODELVIEW16_ARB                0x8730
-#define GL_MODELVIEW17_ARB                0x8731
-#define GL_MODELVIEW18_ARB                0x8732
-#define GL_MODELVIEW19_ARB                0x8733
-#define GL_MODELVIEW20_ARB                0x8734
-#define GL_MODELVIEW21_ARB                0x8735
-#define GL_MODELVIEW22_ARB                0x8736
-#define GL_MODELVIEW23_ARB                0x8737
-#define GL_MODELVIEW24_ARB                0x8738
-#define GL_MODELVIEW25_ARB                0x8739
-#define GL_MODELVIEW26_ARB                0x873A
-#define GL_MODELVIEW27_ARB                0x873B
-#define GL_MODELVIEW28_ARB                0x873C
-#define GL_MODELVIEW29_ARB                0x873D
-#define GL_MODELVIEW30_ARB                0x873E
-#define GL_MODELVIEW31_ARB                0x873F
-typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
-typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
-typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);
-typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);
-typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);
-typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);
-typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);
-typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);
-typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights);
-GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights);
-GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights);
-GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights);
-GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights);
-GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights);
-GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights);
-GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights);
-GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glVertexBlendARB (GLint count);
-#endif
-#endif /* GL_ARB_vertex_blend */
-
-#ifndef GL_ARB_vertex_buffer_object
-#define GL_ARB_vertex_buffer_object 1
-#ifdef __MACOSX__ /* The OS X headers haven't caught up with Khronos yet */
-typedef long GLsizeiptrARB;
-typedef long GLintptrARB;
-#else
-typedef ptrdiff_t GLsizeiptrARB;
-typedef ptrdiff_t GLintptrARB;
-#endif
-#define GL_BUFFER_SIZE_ARB                0x8764
-#define GL_BUFFER_USAGE_ARB               0x8765
-#define GL_ARRAY_BUFFER_ARB               0x8892
-#define GL_ELEMENT_ARRAY_BUFFER_ARB       0x8893
-#define GL_ARRAY_BUFFER_BINDING_ARB       0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895
-#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896
-#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897
-#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898
-#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899
-#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A
-#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B
-#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C
-#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D
-#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F
-#define GL_READ_ONLY_ARB                  0x88B8
-#define GL_WRITE_ONLY_ARB                 0x88B9
-#define GL_READ_WRITE_ARB                 0x88BA
-#define GL_BUFFER_ACCESS_ARB              0x88BB
-#define GL_BUFFER_MAPPED_ARB              0x88BC
-#define GL_BUFFER_MAP_POINTER_ARB         0x88BD
-#define GL_STREAM_DRAW_ARB                0x88E0
-#define GL_STREAM_READ_ARB                0x88E1
-#define GL_STREAM_COPY_ARB                0x88E2
-#define GL_STATIC_DRAW_ARB                0x88E4
-#define GL_STATIC_READ_ARB                0x88E5
-#define GL_STATIC_COPY_ARB                0x88E6
-#define GL_DYNAMIC_DRAW_ARB               0x88E8
-#define GL_DYNAMIC_READ_ARB               0x88E9
-#define GL_DYNAMIC_COPY_ARB               0x88EA
-typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
-typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
-typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
-typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
-typedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer);
-GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers);
-GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers);
-GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer);
-GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);
-GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);
-GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);
-GLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target);
-GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_ARB_vertex_buffer_object */
-
-#ifndef GL_ARB_vertex_program
-#define GL_ARB_vertex_program 1
-#define GL_COLOR_SUM_ARB                  0x8458
-#define GL_VERTEX_PROGRAM_ARB             0x8620
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB   0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB   0x8625
-#define GL_CURRENT_VERTEX_ATTRIB_ARB      0x8626
-#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB  0x8642
-#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB    0x8643
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645
-#define GL_MAX_VERTEX_ATTRIBS_ARB         0x8869
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A
-#define GL_PROGRAM_ADDRESS_REGISTERS_ARB  0x88B0
-#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1
-#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2
-#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void **pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index);
-GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index);
-GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, void **pointer);
-#endif
-#endif /* GL_ARB_vertex_program */
-
-#ifndef GL_ARB_vertex_shader
-#define GL_ARB_vertex_shader 1
-#define GL_VERTEX_SHADER_ARB              0x8B31
-#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
-#define GL_MAX_VARYING_FLOATS_ARB         0x8B4B
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
-#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB   0x8B89
-#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A
-typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
-typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);
-GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
-GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);
-#endif
-#endif /* GL_ARB_vertex_shader */
-
-#ifndef GL_ARB_vertex_type_10f_11f_11f_rev
-#define GL_ARB_vertex_type_10f_11f_11f_rev 1
-#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */
-
-#ifndef GL_ARB_vertex_type_2_10_10_10_rev
-#define GL_ARB_vertex_type_2_10_10_10_rev 1
-#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
-
-#ifndef GL_ARB_viewport_array
-#define GL_ARB_viewport_array 1
-#endif /* GL_ARB_viewport_array */
-
-#ifndef GL_ARB_window_pos
-#define GL_ARB_window_pos 1
-typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y);
-GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y);
-GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y);
-GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v);
-GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y);
-GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v);
-GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v);
-GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v);
-#endif
-#endif /* GL_ARB_window_pos */
-
-#ifndef GL_KHR_debug
-#define GL_KHR_debug 1
-#endif /* GL_KHR_debug */
-
-#ifndef GL_KHR_texture_compression_astc_hdr
-#define GL_KHR_texture_compression_astc_hdr 1
-#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR   0x93B0
-#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR   0x93B1
-#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR   0x93B2
-#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR   0x93B3
-#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR   0x93B4
-#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR   0x93B5
-#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR   0x93B6
-#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR   0x93B7
-#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR  0x93B8
-#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR  0x93B9
-#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR  0x93BA
-#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
-#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
-#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
-#endif /* GL_KHR_texture_compression_astc_hdr */
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_KHR_texture_compression_astc_ldr 1
-#endif /* GL_KHR_texture_compression_astc_ldr */
-
-#ifndef GL_OES_byte_coordinates
-#define GL_OES_byte_coordinates 1
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s);
-typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t);
-typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r);
-typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x);
-typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y);
-typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords);
-typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z);
-typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s);
-GLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t);
-GLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r);
-GLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-GLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord1bOES (GLbyte s);
-GLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t);
-GLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r);
-GLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q);
-GLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glVertex2bOES (GLbyte x);
-GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y);
-GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords);
-GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z);
-GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords);
-#endif
-#endif /* GL_OES_byte_coordinates */
-
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_OES_compressed_paletted_texture 1
-#define GL_PALETTE4_RGB8_OES              0x8B90
-#define GL_PALETTE4_RGBA8_OES             0x8B91
-#define GL_PALETTE4_R5_G6_B5_OES          0x8B92
-#define GL_PALETTE4_RGBA4_OES             0x8B93
-#define GL_PALETTE4_RGB5_A1_OES           0x8B94
-#define GL_PALETTE8_RGB8_OES              0x8B95
-#define GL_PALETTE8_RGBA8_OES             0x8B96
-#define GL_PALETTE8_R5_G6_B5_OES          0x8B97
-#define GL_PALETTE8_RGBA4_OES             0x8B98
-#define GL_PALETTE8_RGB5_A1_OES           0x8B99
-#endif /* GL_OES_compressed_paletted_texture */
-
-#ifndef GL_OES_fixed_point
-#define GL_OES_fixed_point 1
-typedef GLint GLfixed;
-#define GL_FIXED_OES                      0x140C
-typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref);
-typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth);
-typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation);
-typedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f);
-typedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param);
-typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation);
-typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param);
-typedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width);
-typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param);
-typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz);
-typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size);
-typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units);
-typedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert);
-typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value);
-typedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
-typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue);
-typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components);
-typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u);
-typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v);
-typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v);
-typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values);
-typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params);
-typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component);
-typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component);
-typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
-typedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
-typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2);
-typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
-typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords);
-typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token);
-typedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values);
-typedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor);
-typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities);
-typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y);
-typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
-typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
-typedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2);
-typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s);
-typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t);
-typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r);
-typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);
-typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params);
-typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x);
-typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y);
-typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords);
-typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref);
-GLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glClearDepthxOES (GLfixed depth);
-GLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation);
-GLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f);
-GLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param);
-GLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-GLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation);
-GLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param);
-GLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glLineWidthxOES (GLfixed width);
-GLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param);
-GLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz);
-GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);
-GLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glPointSizexOES (GLfixed size);
-GLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units);
-GLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glSampleCoverageOES (GLfixed value, GLboolean invert);
-GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value);
-GLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);
-GLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue);
-GLAPI void APIENTRY glColor3xvOES (const GLfixed *components);
-GLAPI void APIENTRY glColor4xvOES (const GLfixed *components);
-GLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glEvalCoord1xOES (GLfixed u);
-GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v);
-GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer);
-GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v);
-GLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values);
-GLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params);
-GLAPI void APIENTRY glIndexxOES (GLfixed component);
-GLAPI void APIENTRY glIndexxvOES (const GLfixed *component);
-GLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);
-GLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);
-GLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2);
-GLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);
-GLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m);
-GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s);
-GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t);
-GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r);
-GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords);
-GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glPassThroughxOES (GLfixed token);
-GLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values);
-GLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param);
-GLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor);
-GLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities);
-GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y);
-GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w);
-GLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);
-GLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2);
-GLAPI void APIENTRY glTexCoord1xOES (GLfixed s);
-GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t);
-GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r);
-GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param);
-GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params);
-GLAPI void APIENTRY glVertex2xOES (GLfixed x);
-GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y);
-GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords);
-GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z);
-GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords);
-#endif
-#endif /* GL_OES_fixed_point */
-
-#ifndef GL_OES_query_matrix
-#define GL_OES_query_matrix 1
-typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent);
-#endif
-#endif /* GL_OES_query_matrix */
-
-#ifndef GL_OES_read_format
-#define GL_OES_read_format 1
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
-#endif /* GL_OES_read_format */
-
-#ifndef GL_OES_single_precision
-#define GL_OES_single_precision 1
-typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth);
-typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation);
-typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f);
-typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation);
-typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClearDepthfOES (GLclampf depth);
-GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation);
-GLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f);
-GLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-GLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation);
-GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);
-#endif
-#endif /* GL_OES_single_precision */
-
-#ifndef GL_3DFX_multisample
-#define GL_3DFX_multisample 1
-#define GL_MULTISAMPLE_3DFX               0x86B2
-#define GL_SAMPLE_BUFFERS_3DFX            0x86B3
-#define GL_SAMPLES_3DFX                   0x86B4
-#define GL_MULTISAMPLE_BIT_3DFX           0x20000000
-#endif /* GL_3DFX_multisample */
-
-#ifndef GL_3DFX_tbuffer
-#define GL_3DFX_tbuffer 1
-typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask);
-#endif
-#endif /* GL_3DFX_tbuffer */
-
-#ifndef GL_3DFX_texture_compression_FXT1
-#define GL_3DFX_texture_compression_FXT1 1
-#define GL_COMPRESSED_RGB_FXT1_3DFX       0x86B0
-#define GL_COMPRESSED_RGBA_FXT1_3DFX      0x86B1
-#endif /* GL_3DFX_texture_compression_FXT1 */
-
-#ifndef GL_AMD_blend_minmax_factor
-#define GL_AMD_blend_minmax_factor 1
-#define GL_FACTOR_MIN_AMD                 0x901C
-#define GL_FACTOR_MAX_AMD                 0x901D
-#endif /* GL_AMD_blend_minmax_factor */
-
-#ifndef GL_AMD_conservative_depth
-#define GL_AMD_conservative_depth 1
-#endif /* GL_AMD_conservative_depth */
-
-#ifndef GL_AMD_debug_output
-#define GL_AMD_debug_output 1
-typedef void (APIENTRY  *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD   0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD  0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_AMD      0x9145
-#define GL_DEBUG_SEVERITY_HIGH_AMD        0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_AMD      0x9147
-#define GL_DEBUG_SEVERITY_LOW_AMD         0x9148
-#define GL_DEBUG_CATEGORY_API_ERROR_AMD   0x9149
-#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A
-#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B
-#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C
-#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D
-#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E
-#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F
-#define GL_DEBUG_CATEGORY_OTHER_AMD       0x9150
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
-typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);
-typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);
-GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam);
-GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);
-#endif
-#endif /* GL_AMD_debug_output */
-
-#ifndef GL_AMD_depth_clamp_separate
-#define GL_AMD_depth_clamp_separate 1
-#define GL_DEPTH_CLAMP_NEAR_AMD           0x901E
-#define GL_DEPTH_CLAMP_FAR_AMD            0x901F
-#endif /* GL_AMD_depth_clamp_separate */
-
-#ifndef GL_AMD_draw_buffers_blend
-#define GL_AMD_draw_buffers_blend 1
-typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode);
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst);
-GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode);
-GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
-#endif
-#endif /* GL_AMD_draw_buffers_blend */
-
-#ifndef GL_AMD_gcn_shader
-#define GL_AMD_gcn_shader 1
-#endif /* GL_AMD_gcn_shader */
-
-#ifndef GL_AMD_gpu_shader_int64
-#define GL_AMD_gpu_shader_int64 1
-typedef int64_t GLint64EXT;
-#define GL_INT64_NV                       0x140E
-#define GL_UNSIGNED_INT64_NV              0x140F
-#define GL_INT8_NV                        0x8FE0
-#define GL_INT8_VEC2_NV                   0x8FE1
-#define GL_INT8_VEC3_NV                   0x8FE2
-#define GL_INT8_VEC4_NV                   0x8FE3
-#define GL_INT16_NV                       0x8FE4
-#define GL_INT16_VEC2_NV                  0x8FE5
-#define GL_INT16_VEC3_NV                  0x8FE6
-#define GL_INT16_VEC4_NV                  0x8FE7
-#define GL_INT64_VEC2_NV                  0x8FE9
-#define GL_INT64_VEC3_NV                  0x8FEA
-#define GL_INT64_VEC4_NV                  0x8FEB
-#define GL_UNSIGNED_INT8_NV               0x8FEC
-#define GL_UNSIGNED_INT8_VEC2_NV          0x8FED
-#define GL_UNSIGNED_INT8_VEC3_NV          0x8FEE
-#define GL_UNSIGNED_INT8_VEC4_NV          0x8FEF
-#define GL_UNSIGNED_INT16_NV              0x8FF0
-#define GL_UNSIGNED_INT16_VEC2_NV         0x8FF1
-#define GL_UNSIGNED_INT16_VEC3_NV         0x8FF2
-#define GL_UNSIGNED_INT16_VEC4_NV         0x8FF3
-#define GL_UNSIGNED_INT64_VEC2_NV         0x8FF5
-#define GL_UNSIGNED_INT64_VEC3_NV         0x8FF6
-#define GL_UNSIGNED_INT64_VEC4_NV         0x8FF7
-#define GL_FLOAT16_NV                     0x8FF8
-#define GL_FLOAT16_VEC2_NV                0x8FF9
-#define GL_FLOAT16_VEC3_NV                0x8FFA
-#define GL_FLOAT16_VEC4_NV                0x8FFB
-typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
-typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);
-GLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);
-GLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);
-GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
-GLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);
-GLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);
-GLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);
-GLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#endif
-#endif /* GL_AMD_gpu_shader_int64 */
-
-#ifndef GL_AMD_interleaved_elements
-#define GL_AMD_interleaved_elements 1
-#define GL_VERTEX_ELEMENT_SWIZZLE_AMD     0x91A4
-#define GL_VERTEX_ID_SWIZZLE_AMD          0x91A5
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param);
-#endif
-#endif /* GL_AMD_interleaved_elements */
-
-#ifndef GL_AMD_multi_draw_indirect
-#define GL_AMD_multi_draw_indirect 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);
-GLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);
-#endif
-#endif /* GL_AMD_multi_draw_indirect */
-
-#ifndef GL_AMD_name_gen_delete
-#define GL_AMD_name_gen_delete 1
-#define GL_DATA_BUFFER_AMD                0x9151
-#define GL_PERFORMANCE_MONITOR_AMD        0x9152
-#define GL_QUERY_OBJECT_AMD               0x9153
-#define GL_VERTEX_ARRAY_OBJECT_AMD        0x9154
-#define GL_SAMPLER_OBJECT_AMD             0x9155
-typedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names);
-typedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names);
-typedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names);
-GLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names);
-GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name);
-#endif
-#endif /* GL_AMD_name_gen_delete */
-
-#ifndef GL_AMD_occlusion_query_event
-#define GL_AMD_occlusion_query_event 1
-#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
-#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
-#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
-#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
-#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
-#define GL_QUERY_ALL_EVENT_BITS_AMD       0xFFFFFFFF
-typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param);
-#endif
-#endif /* GL_AMD_occlusion_query_event */
-
-#ifndef GL_AMD_performance_monitor
-#define GL_AMD_performance_monitor 1
-#define GL_COUNTER_TYPE_AMD               0x8BC0
-#define GL_COUNTER_RANGE_AMD              0x8BC1
-#define GL_UNSIGNED_INT64_AMD             0x8BC2
-#define GL_PERCENTAGE_AMD                 0x8BC3
-#define GL_PERFMON_RESULT_AVAILABLE_AMD   0x8BC4
-#define GL_PERFMON_RESULT_SIZE_AMD        0x8BC5
-#define GL_PERFMON_RESULT_AMD             0x8BC6
-typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);
-typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
-typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
-GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
-GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
-GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
-GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-#endif /* GL_AMD_performance_monitor */
-
-#ifndef GL_AMD_pinned_memory
-#define GL_AMD_pinned_memory 1
-#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160
-#endif /* GL_AMD_pinned_memory */
-
-#ifndef GL_AMD_query_buffer_object
-#define GL_AMD_query_buffer_object 1
-#define GL_QUERY_BUFFER_AMD               0x9192
-#define GL_QUERY_BUFFER_BINDING_AMD       0x9193
-#define GL_QUERY_RESULT_NO_WAIT_AMD       0x9194
-#endif /* GL_AMD_query_buffer_object */
-
-#ifndef GL_AMD_sample_positions
-#define GL_AMD_sample_positions 1
-#define GL_SUBSAMPLE_DISTANCE_AMD         0x883F
-typedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val);
-#endif
-#endif /* GL_AMD_sample_positions */
-
-#ifndef GL_AMD_seamless_cubemap_per_texture
-#define GL_AMD_seamless_cubemap_per_texture 1
-#endif /* GL_AMD_seamless_cubemap_per_texture */
-
-#ifndef GL_AMD_shader_atomic_counter_ops
-#define GL_AMD_shader_atomic_counter_ops 1
-#endif /* GL_AMD_shader_atomic_counter_ops */
-
-#ifndef GL_AMD_shader_stencil_export
-#define GL_AMD_shader_stencil_export 1
-#endif /* GL_AMD_shader_stencil_export */
-
-#ifndef GL_AMD_shader_trinary_minmax
-#define GL_AMD_shader_trinary_minmax 1
-#endif /* GL_AMD_shader_trinary_minmax */
-
-#ifndef GL_AMD_sparse_texture
-#define GL_AMD_sparse_texture 1
-#define GL_VIRTUAL_PAGE_SIZE_X_AMD        0x9195
-#define GL_VIRTUAL_PAGE_SIZE_Y_AMD        0x9196
-#define GL_VIRTUAL_PAGE_SIZE_Z_AMD        0x9197
-#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD    0x9198
-#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199
-#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A
-#define GL_MIN_SPARSE_LEVEL_AMD           0x919B
-#define GL_MIN_LOD_WARNING_AMD            0x919C
-#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001
-typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);
-#endif
-#endif /* GL_AMD_sparse_texture */
-
-#ifndef GL_AMD_stencil_operation_extended
-#define GL_AMD_stencil_operation_extended 1
-#define GL_SET_AMD                        0x874A
-#define GL_REPLACE_VALUE_AMD              0x874B
-#define GL_STENCIL_OP_VALUE_AMD           0x874C
-#define GL_STENCIL_BACK_OP_VALUE_AMD      0x874D
-typedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value);
-#endif
-#endif /* GL_AMD_stencil_operation_extended */
-
-#ifndef GL_AMD_texture_texture4
-#define GL_AMD_texture_texture4 1
-#endif /* GL_AMD_texture_texture4 */
-
-#ifndef GL_AMD_transform_feedback3_lines_triangles
-#define GL_AMD_transform_feedback3_lines_triangles 1
-#endif /* GL_AMD_transform_feedback3_lines_triangles */
-
-#ifndef GL_AMD_transform_feedback4
-#define GL_AMD_transform_feedback4 1
-#define GL_STREAM_RASTERIZATION_AMD       0x91A0
-#endif /* GL_AMD_transform_feedback4 */
-
-#ifndef GL_AMD_vertex_shader_layer
-#define GL_AMD_vertex_shader_layer 1
-#endif /* GL_AMD_vertex_shader_layer */
-
-#ifndef GL_AMD_vertex_shader_tessellator
-#define GL_AMD_vertex_shader_tessellator 1
-#define GL_SAMPLER_BUFFER_AMD             0x9001
-#define GL_INT_SAMPLER_BUFFER_AMD         0x9002
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
-#define GL_TESSELLATION_MODE_AMD          0x9004
-#define GL_TESSELLATION_FACTOR_AMD        0x9005
-#define GL_DISCRETE_AMD                   0x9006
-#define GL_CONTINUOUS_AMD                 0x9007
-typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
-typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor);
-GLAPI void APIENTRY glTessellationModeAMD (GLenum mode);
-#endif
-#endif /* GL_AMD_vertex_shader_tessellator */
-
-#ifndef GL_AMD_vertex_shader_viewport_index
-#define GL_AMD_vertex_shader_viewport_index 1
-#endif /* GL_AMD_vertex_shader_viewport_index */
-
-#ifndef GL_APPLE_aux_depth_stencil
-#define GL_APPLE_aux_depth_stencil 1
-#define GL_AUX_DEPTH_STENCIL_APPLE        0x8A14
-#endif /* GL_APPLE_aux_depth_stencil */
-
-#ifndef GL_APPLE_client_storage
-#define GL_APPLE_client_storage 1
-#define GL_UNPACK_CLIENT_STORAGE_APPLE    0x85B2
-#endif /* GL_APPLE_client_storage */
-
-#ifndef GL_APPLE_element_array
-#define GL_APPLE_element_array 1
-#define GL_ELEMENT_ARRAY_APPLE            0x8A0C
-#define GL_ELEMENT_ARRAY_TYPE_APPLE       0x8A0D
-#define GL_ELEMENT_ARRAY_POINTER_APPLE    0x8A0E
-typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer);
-typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const void *pointer);
-GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count);
-GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
-GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
-#endif
-#endif /* GL_APPLE_element_array */
-
-#ifndef GL_APPLE_fence
-#define GL_APPLE_fence 1
-#define GL_DRAW_PIXELS_APPLE              0x8A0A
-#define GL_FENCE_APPLE                    0x8A0B
-typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
-typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
-typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);
-typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);
-typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences);
-GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences);
-GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence);
-GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence);
-GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence);
-GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence);
-GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name);
-GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name);
-#endif
-#endif /* GL_APPLE_fence */
-
-#ifndef GL_APPLE_float_pixels
-#define GL_APPLE_float_pixels 1
-#define GL_HALF_APPLE                     0x140B
-#define GL_RGBA_FLOAT32_APPLE             0x8814
-#define GL_RGB_FLOAT32_APPLE              0x8815
-#define GL_ALPHA_FLOAT32_APPLE            0x8816
-#define GL_INTENSITY_FLOAT32_APPLE        0x8817
-#define GL_LUMINANCE_FLOAT32_APPLE        0x8818
-#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE  0x8819
-#define GL_RGBA_FLOAT16_APPLE             0x881A
-#define GL_RGB_FLOAT16_APPLE              0x881B
-#define GL_ALPHA_FLOAT16_APPLE            0x881C
-#define GL_INTENSITY_FLOAT16_APPLE        0x881D
-#define GL_LUMINANCE_FLOAT16_APPLE        0x881E
-#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE  0x881F
-#define GL_COLOR_FLOAT_APPLE              0x8A0F
-#endif /* GL_APPLE_float_pixels */
-
-#ifndef GL_APPLE_flush_buffer_range
-#define GL_APPLE_flush_buffer_range 1
-#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12
-#define GL_BUFFER_FLUSHING_UNMAP_APPLE    0x8A13
-typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size);
-#endif
-#endif /* GL_APPLE_flush_buffer_range */
-
-#ifndef GL_APPLE_object_purgeable
-#define GL_APPLE_object_purgeable 1
-#define GL_BUFFER_OBJECT_APPLE            0x85B3
-#define GL_RELEASED_APPLE                 0x8A19
-#define GL_VOLATILE_APPLE                 0x8A1A
-#define GL_RETAINED_APPLE                 0x8A1B
-#define GL_UNDEFINED_APPLE                0x8A1C
-#define GL_PURGEABLE_APPLE                0x8A1D
-typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
-typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
-typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
-GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
-GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params);
-#endif
-#endif /* GL_APPLE_object_purgeable */
-
-#ifndef GL_APPLE_rgb_422
-#define GL_APPLE_rgb_422 1
-#define GL_RGB_422_APPLE                  0x8A1F
-#define GL_UNSIGNED_SHORT_8_8_APPLE       0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_APPLE   0x85BB
-#define GL_RGB_RAW_422_APPLE              0x8A51
-#endif /* GL_APPLE_rgb_422 */
-
-#ifndef GL_APPLE_row_bytes
-#define GL_APPLE_row_bytes 1
-#define GL_PACK_ROW_BYTES_APPLE           0x8A15
-#define GL_UNPACK_ROW_BYTES_APPLE         0x8A16
-#endif /* GL_APPLE_row_bytes */
-
-#ifndef GL_APPLE_specular_vector
-#define GL_APPLE_specular_vector 1
-#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0
-#endif /* GL_APPLE_specular_vector */
-
-#ifndef GL_APPLE_texture_range
-#define GL_APPLE_texture_range 1
-#define GL_TEXTURE_RANGE_LENGTH_APPLE     0x85B7
-#define GL_TEXTURE_RANGE_POINTER_APPLE    0x85B8
-#define GL_TEXTURE_STORAGE_HINT_APPLE     0x85BC
-#define GL_STORAGE_PRIVATE_APPLE          0x85BD
-#define GL_STORAGE_CACHED_APPLE           0x85BE
-#define GL_STORAGE_SHARED_APPLE           0x85BF
-typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const void *pointer);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const void *pointer);
-GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params);
-#endif
-#endif /* GL_APPLE_texture_range */
-
-#ifndef GL_APPLE_transform_hint
-#define GL_APPLE_transform_hint 1
-#define GL_TRANSFORM_HINT_APPLE           0x85B1
-#endif /* GL_APPLE_transform_hint */
-
-#ifndef GL_APPLE_vertex_array_object
-#define GL_APPLE_vertex_array_object 1
-#define GL_VERTEX_ARRAY_BINDING_APPLE     0x85B5
-typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
-typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
-typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array);
-GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays);
-GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays);
-GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array);
-#endif
-#endif /* GL_APPLE_vertex_array_object */
-
-#ifndef GL_APPLE_vertex_array_range
-#define GL_APPLE_vertex_array_range 1
-#define GL_VERTEX_ARRAY_RANGE_APPLE       0x851D
-#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
-#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
-#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
-#define GL_STORAGE_CLIENT_APPLE           0x85B4
-typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
-typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, void *pointer);
-GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer);
-GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param);
-#endif
-#endif /* GL_APPLE_vertex_array_range */
-
-#ifndef GL_APPLE_vertex_program_evaluators
-#define GL_APPLE_vertex_program_evaluators 1
-#define GL_VERTEX_ATTRIB_MAP1_APPLE       0x8A00
-#define GL_VERTEX_ATTRIB_MAP2_APPLE       0x8A01
-#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE  0x8A02
-#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03
-#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04
-#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05
-#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE  0x8A06
-#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07
-#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08
-#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09
-typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
-typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
-typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname);
-GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname);
-GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname);
-GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
-GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
-GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
-GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
-#endif
-#endif /* GL_APPLE_vertex_program_evaluators */
-
-#ifndef GL_APPLE_ycbcr_422
-#define GL_APPLE_ycbcr_422 1
-#define GL_YCBCR_422_APPLE                0x85B9
-#endif /* GL_APPLE_ycbcr_422 */
-
-#ifndef GL_ATI_draw_buffers
-#define GL_ATI_draw_buffers 1
-#define GL_MAX_DRAW_BUFFERS_ATI           0x8824
-#define GL_DRAW_BUFFER0_ATI               0x8825
-#define GL_DRAW_BUFFER1_ATI               0x8826
-#define GL_DRAW_BUFFER2_ATI               0x8827
-#define GL_DRAW_BUFFER3_ATI               0x8828
-#define GL_DRAW_BUFFER4_ATI               0x8829
-#define GL_DRAW_BUFFER5_ATI               0x882A
-#define GL_DRAW_BUFFER6_ATI               0x882B
-#define GL_DRAW_BUFFER7_ATI               0x882C
-#define GL_DRAW_BUFFER8_ATI               0x882D
-#define GL_DRAW_BUFFER9_ATI               0x882E
-#define GL_DRAW_BUFFER10_ATI              0x882F
-#define GL_DRAW_BUFFER11_ATI              0x8830
-#define GL_DRAW_BUFFER12_ATI              0x8831
-#define GL_DRAW_BUFFER13_ATI              0x8832
-#define GL_DRAW_BUFFER14_ATI              0x8833
-#define GL_DRAW_BUFFER15_ATI              0x8834
-typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs);
-#endif
-#endif /* GL_ATI_draw_buffers */
-
-#ifndef GL_ATI_element_array
-#define GL_ATI_element_array 1
-#define GL_ELEMENT_ARRAY_ATI              0x8768
-#define GL_ELEMENT_ARRAY_TYPE_ATI         0x8769
-#define GL_ELEMENT_ARRAY_POINTER_ATI      0x876A
-typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer);
-typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerATI (GLenum type, const void *pointer);
-GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count);
-GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count);
-#endif
-#endif /* GL_ATI_element_array */
-
-#ifndef GL_ATI_envmap_bumpmap
-#define GL_ATI_envmap_bumpmap 1
-#define GL_BUMP_ROT_MATRIX_ATI            0x8775
-#define GL_BUMP_ROT_MATRIX_SIZE_ATI       0x8776
-#define GL_BUMP_NUM_TEX_UNITS_ATI         0x8777
-#define GL_BUMP_TEX_UNITS_ATI             0x8778
-#define GL_DUDV_ATI                       0x8779
-#define GL_DU8DV8_ATI                     0x877A
-#define GL_BUMP_ENVMAP_ATI                0x877B
-#define GL_BUMP_TARGET_ATI                0x877C
-typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
-typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
-typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param);
-GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param);
-GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param);
-#endif
-#endif /* GL_ATI_envmap_bumpmap */
-
-#ifndef GL_ATI_fragment_shader
-#define GL_ATI_fragment_shader 1
-#define GL_FRAGMENT_SHADER_ATI            0x8920
-#define GL_REG_0_ATI                      0x8921
-#define GL_REG_1_ATI                      0x8922
-#define GL_REG_2_ATI                      0x8923
-#define GL_REG_3_ATI                      0x8924
-#define GL_REG_4_ATI                      0x8925
-#define GL_REG_5_ATI                      0x8926
-#define GL_REG_6_ATI                      0x8927
-#define GL_REG_7_ATI                      0x8928
-#define GL_REG_8_ATI                      0x8929
-#define GL_REG_9_ATI                      0x892A
-#define GL_REG_10_ATI                     0x892B
-#define GL_REG_11_ATI                     0x892C
-#define GL_REG_12_ATI                     0x892D
-#define GL_REG_13_ATI                     0x892E
-#define GL_REG_14_ATI                     0x892F
-#define GL_REG_15_ATI                     0x8930
-#define GL_REG_16_ATI                     0x8931
-#define GL_REG_17_ATI                     0x8932
-#define GL_REG_18_ATI                     0x8933
-#define GL_REG_19_ATI                     0x8934
-#define GL_REG_20_ATI                     0x8935
-#define GL_REG_21_ATI                     0x8936
-#define GL_REG_22_ATI                     0x8937
-#define GL_REG_23_ATI                     0x8938
-#define GL_REG_24_ATI                     0x8939
-#define GL_REG_25_ATI                     0x893A
-#define GL_REG_26_ATI                     0x893B
-#define GL_REG_27_ATI                     0x893C
-#define GL_REG_28_ATI                     0x893D
-#define GL_REG_29_ATI                     0x893E
-#define GL_REG_30_ATI                     0x893F
-#define GL_REG_31_ATI                     0x8940
-#define GL_CON_0_ATI                      0x8941
-#define GL_CON_1_ATI                      0x8942
-#define GL_CON_2_ATI                      0x8943
-#define GL_CON_3_ATI                      0x8944
-#define GL_CON_4_ATI                      0x8945
-#define GL_CON_5_ATI                      0x8946
-#define GL_CON_6_ATI                      0x8947
-#define GL_CON_7_ATI                      0x8948
-#define GL_CON_8_ATI                      0x8949
-#define GL_CON_9_ATI                      0x894A
-#define GL_CON_10_ATI                     0x894B
-#define GL_CON_11_ATI                     0x894C
-#define GL_CON_12_ATI                     0x894D
-#define GL_CON_13_ATI                     0x894E
-#define GL_CON_14_ATI                     0x894F
-#define GL_CON_15_ATI                     0x8950
-#define GL_CON_16_ATI                     0x8951
-#define GL_CON_17_ATI                     0x8952
-#define GL_CON_18_ATI                     0x8953
-#define GL_CON_19_ATI                     0x8954
-#define GL_CON_20_ATI                     0x8955
-#define GL_CON_21_ATI                     0x8956
-#define GL_CON_22_ATI                     0x8957
-#define GL_CON_23_ATI                     0x8958
-#define GL_CON_24_ATI                     0x8959
-#define GL_CON_25_ATI                     0x895A
-#define GL_CON_26_ATI                     0x895B
-#define GL_CON_27_ATI                     0x895C
-#define GL_CON_28_ATI                     0x895D
-#define GL_CON_29_ATI                     0x895E
-#define GL_CON_30_ATI                     0x895F
-#define GL_CON_31_ATI                     0x8960
-#define GL_MOV_ATI                        0x8961
-#define GL_ADD_ATI                        0x8963
-#define GL_MUL_ATI                        0x8964
-#define GL_SUB_ATI                        0x8965
-#define GL_DOT3_ATI                       0x8966
-#define GL_DOT4_ATI                       0x8967
-#define GL_MAD_ATI                        0x8968
-#define GL_LERP_ATI                       0x8969
-#define GL_CND_ATI                        0x896A
-#define GL_CND0_ATI                       0x896B
-#define GL_DOT2_ADD_ATI                   0x896C
-#define GL_SECONDARY_INTERPOLATOR_ATI     0x896D
-#define GL_NUM_FRAGMENT_REGISTERS_ATI     0x896E
-#define GL_NUM_FRAGMENT_CONSTANTS_ATI     0x896F
-#define GL_NUM_PASSES_ATI                 0x8970
-#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI  0x8971
-#define GL_NUM_INSTRUCTIONS_TOTAL_ATI     0x8972
-#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
-#define GL_NUM_LOOPBACK_COMPONENTS_ATI    0x8974
-#define GL_COLOR_ALPHA_PAIRING_ATI        0x8975
-#define GL_SWIZZLE_STR_ATI                0x8976
-#define GL_SWIZZLE_STQ_ATI                0x8977
-#define GL_SWIZZLE_STR_DR_ATI             0x8978
-#define GL_SWIZZLE_STQ_DQ_ATI             0x8979
-#define GL_SWIZZLE_STRQ_ATI               0x897A
-#define GL_SWIZZLE_STRQ_DQ_ATI            0x897B
-#define GL_RED_BIT_ATI                    0x00000001
-#define GL_GREEN_BIT_ATI                  0x00000002
-#define GL_BLUE_BIT_ATI                   0x00000004
-#define GL_2X_BIT_ATI                     0x00000001
-#define GL_4X_BIT_ATI                     0x00000002
-#define GL_8X_BIT_ATI                     0x00000004
-#define GL_HALF_BIT_ATI                   0x00000008
-#define GL_QUARTER_BIT_ATI                0x00000010
-#define GL_EIGHTH_BIT_ATI                 0x00000020
-#define GL_SATURATE_BIT_ATI               0x00000040
-#define GL_COMP_BIT_ATI                   0x00000002
-#define GL_NEGATE_BIT_ATI                 0x00000004
-#define GL_BIAS_BIT_ATI                   0x00000008
-typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
-typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);
-typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);
-typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);
-typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);
-typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range);
-GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id);
-GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id);
-GLAPI void APIENTRY glBeginFragmentShaderATI (void);
-GLAPI void APIENTRY glEndFragmentShaderATI (void);
-GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle);
-GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle);
-GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
-GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
-GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
-GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value);
-#endif
-#endif /* GL_ATI_fragment_shader */
-
-#ifndef GL_ATI_map_object_buffer
-#define GL_ATI_map_object_buffer 1
-typedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer);
-GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer);
-#endif
-#endif /* GL_ATI_map_object_buffer */
-
-#ifndef GL_ATI_meminfo
-#define GL_ATI_meminfo 1
-#define GL_VBO_FREE_MEMORY_ATI            0x87FB
-#define GL_TEXTURE_FREE_MEMORY_ATI        0x87FC
-#define GL_RENDERBUFFER_FREE_MEMORY_ATI   0x87FD
-#endif /* GL_ATI_meminfo */
-
-#ifndef GL_ATI_pixel_format_float
-#define GL_ATI_pixel_format_float 1
-#define GL_RGBA_FLOAT_MODE_ATI            0x8820
-#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
-#endif /* GL_ATI_pixel_format_float */
-
-#ifndef GL_ATI_pn_triangles
-#define GL_ATI_pn_triangles 1
-#define GL_PN_TRIANGLES_ATI               0x87F0
-#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1
-#define GL_PN_TRIANGLES_POINT_MODE_ATI    0x87F2
-#define GL_PN_TRIANGLES_NORMAL_MODE_ATI   0x87F3
-#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4
-#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5
-#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6
-#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7
-#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8
-typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param);
-GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param);
-#endif
-#endif /* GL_ATI_pn_triangles */
-
-#ifndef GL_ATI_separate_stencil
-#define GL_ATI_separate_stencil 1
-#define GL_STENCIL_BACK_FUNC_ATI          0x8800
-#define GL_STENCIL_BACK_FAIL_ATI          0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
-typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-#endif
-#endif /* GL_ATI_separate_stencil */
-
-#ifndef GL_ATI_text_fragment_shader
-#define GL_ATI_text_fragment_shader 1
-#define GL_TEXT_FRAGMENT_SHADER_ATI       0x8200
-#endif /* GL_ATI_text_fragment_shader */
-
-#ifndef GL_ATI_texture_env_combine3
-#define GL_ATI_texture_env_combine3 1
-#define GL_MODULATE_ADD_ATI               0x8744
-#define GL_MODULATE_SIGNED_ADD_ATI        0x8745
-#define GL_MODULATE_SUBTRACT_ATI          0x8746
-#endif /* GL_ATI_texture_env_combine3 */
-
-#ifndef GL_ATI_texture_float
-#define GL_ATI_texture_float 1
-#define GL_RGBA_FLOAT32_ATI               0x8814
-#define GL_RGB_FLOAT32_ATI                0x8815
-#define GL_ALPHA_FLOAT32_ATI              0x8816
-#define GL_INTENSITY_FLOAT32_ATI          0x8817
-#define GL_LUMINANCE_FLOAT32_ATI          0x8818
-#define GL_LUMINANCE_ALPHA_FLOAT32_ATI    0x8819
-#define GL_RGBA_FLOAT16_ATI               0x881A
-#define GL_RGB_FLOAT16_ATI                0x881B
-#define GL_ALPHA_FLOAT16_ATI              0x881C
-#define GL_INTENSITY_FLOAT16_ATI          0x881D
-#define GL_LUMINANCE_FLOAT16_ATI          0x881E
-#define GL_LUMINANCE_ALPHA_FLOAT16_ATI    0x881F
-#endif /* GL_ATI_texture_float */
-
-#ifndef GL_ATI_texture_mirror_once
-#define GL_ATI_texture_mirror_once 1
-#define GL_MIRROR_CLAMP_ATI               0x8742
-#define GL_MIRROR_CLAMP_TO_EDGE_ATI       0x8743
-#endif /* GL_ATI_texture_mirror_once */
-
-#ifndef GL_ATI_vertex_array_object
-#define GL_ATI_vertex_array_object 1
-#define GL_STATIC_ATI                     0x8760
-#define GL_DYNAMIC_ATI                    0x8761
-#define GL_PRESERVE_ATI                   0x8762
-#define GL_DISCARD_ATI                    0x8763
-#define GL_OBJECT_BUFFER_SIZE_ATI         0x8764
-#define GL_OBJECT_BUFFER_USAGE_ATI        0x8765
-#define GL_ARRAY_OBJECT_BUFFER_ATI        0x8766
-#define GL_ARRAY_OBJECT_OFFSET_ATI        0x8767
-typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage);
-typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
-typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage);
-GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer);
-GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);
-GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer);
-GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params);
-GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
-GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ATI_vertex_array_object */
-
-#ifndef GL_ATI_vertex_attrib_array_object
-#define GL_ATI_vertex_attrib_array_object 1
-typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params);
-#endif
-#endif /* GL_ATI_vertex_attrib_array_object */
-
-#ifndef GL_ATI_vertex_streams
-#define GL_ATI_vertex_streams 1
-#define GL_MAX_VERTEX_STREAMS_ATI         0x876B
-#define GL_VERTEX_STREAM0_ATI             0x876C
-#define GL_VERTEX_STREAM1_ATI             0x876D
-#define GL_VERTEX_STREAM2_ATI             0x876E
-#define GL_VERTEX_STREAM3_ATI             0x876F
-#define GL_VERTEX_STREAM4_ATI             0x8770
-#define GL_VERTEX_STREAM5_ATI             0x8771
-#define GL_VERTEX_STREAM6_ATI             0x8772
-#define GL_VERTEX_STREAM7_ATI             0x8773
-#define GL_VERTEX_SOURCE_ATI              0x8774
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
-typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);
-typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);
-typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x);
-GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x);
-GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x);
-GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x);
-GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y);
-GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
-GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords);
-GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
-GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords);
-GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz);
-GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords);
-GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
-GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords);
-GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
-GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords);
-GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream);
-GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param);
-GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param);
-#endif
-#endif /* GL_ATI_vertex_streams */
-
-#ifndef GL_EXT_422_pixels
-#define GL_EXT_422_pixels 1
-#define GL_422_EXT                        0x80CC
-#define GL_422_REV_EXT                    0x80CD
-#define GL_422_AVERAGE_EXT                0x80CE
-#define GL_422_REV_AVERAGE_EXT            0x80CF
-#endif /* GL_EXT_422_pixels */
-
-#ifndef GL_EXT_abgr
-#define GL_EXT_abgr 1
-#define GL_ABGR_EXT                       0x8000
-#endif /* GL_EXT_abgr */
-
-#ifndef GL_EXT_bgra
-#define GL_EXT_bgra 1
-#define GL_BGR_EXT                        0x80E0
-#define GL_BGRA_EXT                       0x80E1
-#endif /* GL_EXT_bgra */
-
-#ifndef GL_EXT_bindable_uniform
-#define GL_EXT_bindable_uniform 1
-#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2
-#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3
-#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4
-#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT  0x8DED
-#define GL_UNIFORM_BUFFER_EXT             0x8DEE
-#define GL_UNIFORM_BUFFER_BINDING_EXT     0x8DEF
-typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
-typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
-typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer);
-GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location);
-GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location);
-#endif
-#endif /* GL_EXT_bindable_uniform */
-
-#ifndef GL_EXT_blend_color
-#define GL_EXT_blend_color 1
-#define GL_CONSTANT_COLOR_EXT             0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR_EXT   0x8002
-#define GL_CONSTANT_ALPHA_EXT             0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT   0x8004
-#define GL_BLEND_COLOR_EXT                0x8005
-typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-#endif
-#endif /* GL_EXT_blend_color */
-
-#ifndef GL_EXT_blend_equation_separate
-#define GL_EXT_blend_equation_separate 1
-#define GL_BLEND_EQUATION_RGB_EXT         0x8009
-#define GL_BLEND_EQUATION_ALPHA_EXT       0x883D
-typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha);
-#endif
-#endif /* GL_EXT_blend_equation_separate */
-
-#ifndef GL_EXT_blend_func_separate
-#define GL_EXT_blend_func_separate 1
-#define GL_BLEND_DST_RGB_EXT              0x80C8
-#define GL_BLEND_SRC_RGB_EXT              0x80C9
-#define GL_BLEND_DST_ALPHA_EXT            0x80CA
-#define GL_BLEND_SRC_ALPHA_EXT            0x80CB
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#endif
-#endif /* GL_EXT_blend_func_separate */
-
-#ifndef GL_EXT_blend_logic_op
-#define GL_EXT_blend_logic_op 1
-#endif /* GL_EXT_blend_logic_op */
-
-#ifndef GL_EXT_blend_minmax
-#define GL_EXT_blend_minmax 1
-#define GL_MIN_EXT                        0x8007
-#define GL_MAX_EXT                        0x8008
-#define GL_FUNC_ADD_EXT                   0x8006
-#define GL_BLEND_EQUATION_EXT             0x8009
-typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationEXT (GLenum mode);
-#endif
-#endif /* GL_EXT_blend_minmax */
-
-#ifndef GL_EXT_blend_subtract
-#define GL_EXT_blend_subtract 1
-#define GL_FUNC_SUBTRACT_EXT              0x800A
-#define GL_FUNC_REVERSE_SUBTRACT_EXT      0x800B
-#endif /* GL_EXT_blend_subtract */
-
-#ifndef GL_EXT_clip_volume_hint
-#define GL_EXT_clip_volume_hint 1
-#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT  0x80F0
-#endif /* GL_EXT_clip_volume_hint */
-
-#ifndef GL_EXT_cmyka
-#define GL_EXT_cmyka 1
-#define GL_CMYK_EXT                       0x800C
-#define GL_CMYKA_EXT                      0x800D
-#define GL_PACK_CMYK_HINT_EXT             0x800E
-#define GL_UNPACK_CMYK_HINT_EXT           0x800F
-#endif /* GL_EXT_cmyka */
-
-#ifndef GL_EXT_color_subtable
-#define GL_EXT_color_subtable 1
-typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-#endif
-#endif /* GL_EXT_color_subtable */
-
-#ifndef GL_EXT_compiled_vertex_array
-#define GL_EXT_compiled_vertex_array 1
-#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT   0x81A8
-#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT   0x81A9
-typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count);
-GLAPI void APIENTRY glUnlockArraysEXT (void);
-#endif
-#endif /* GL_EXT_compiled_vertex_array */
-
-#ifndef GL_EXT_convolution
-#define GL_EXT_convolution 1
-#define GL_CONVOLUTION_1D_EXT             0x8010
-#define GL_CONVOLUTION_2D_EXT             0x8011
-#define GL_SEPARABLE_2D_EXT               0x8012
-#define GL_CONVOLUTION_BORDER_MODE_EXT    0x8013
-#define GL_CONVOLUTION_FILTER_SCALE_EXT   0x8014
-#define GL_CONVOLUTION_FILTER_BIAS_EXT    0x8015
-#define GL_REDUCE_EXT                     0x8016
-#define GL_CONVOLUTION_FORMAT_EXT         0x8017
-#define GL_CONVOLUTION_WIDTH_EXT          0x8018
-#define GL_CONVOLUTION_HEIGHT_EXT         0x8019
-#define GL_MAX_CONVOLUTION_WIDTH_EXT      0x801A
-#define GL_MAX_CONVOLUTION_HEIGHT_EXT     0x801B
-#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C
-#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
-#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E
-#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
-#define GL_POST_CONVOLUTION_RED_BIAS_EXT  0x8020
-#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021
-#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022
-#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);
-typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);
-GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params);
-GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params);
-GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image);
-GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);
-GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);
-#endif
-#endif /* GL_EXT_convolution */
-
-#ifndef GL_EXT_coordinate_frame
-#define GL_EXT_coordinate_frame 1
-#define GL_TANGENT_ARRAY_EXT              0x8439
-#define GL_BINORMAL_ARRAY_EXT             0x843A
-#define GL_CURRENT_TANGENT_EXT            0x843B
-#define GL_CURRENT_BINORMAL_EXT           0x843C
-#define GL_TANGENT_ARRAY_TYPE_EXT         0x843E
-#define GL_TANGENT_ARRAY_STRIDE_EXT       0x843F
-#define GL_BINORMAL_ARRAY_TYPE_EXT        0x8440
-#define GL_BINORMAL_ARRAY_STRIDE_EXT      0x8441
-#define GL_TANGENT_ARRAY_POINTER_EXT      0x8442
-#define GL_BINORMAL_ARRAY_POINTER_EXT     0x8443
-#define GL_MAP1_TANGENT_EXT               0x8444
-#define GL_MAP2_TANGENT_EXT               0x8445
-#define GL_MAP1_BINORMAL_EXT              0x8446
-#define GL_MAP2_BINORMAL_EXT              0x8447
-typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
-typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);
-typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);
-typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);
-typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);
-typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);
-typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);
-typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);
-typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);
-typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);
-typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz);
-GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v);
-GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz);
-GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v);
-GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz);
-GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v);
-GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz);
-GLAPI void APIENTRY glTangent3ivEXT (const GLint *v);
-GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz);
-GLAPI void APIENTRY glTangent3svEXT (const GLshort *v);
-GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz);
-GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v);
-GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz);
-GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v);
-GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz);
-GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v);
-GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz);
-GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v);
-GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz);
-GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v);
-GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_coordinate_frame */
-
-#ifndef GL_EXT_copy_texture
-#define GL_EXT_copy_texture 1
-typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_EXT_copy_texture */
-
-#ifndef GL_EXT_cull_vertex
-#define GL_EXT_cull_vertex 1
-#define GL_CULL_VERTEX_EXT                0x81AA
-#define GL_CULL_VERTEX_EYE_POSITION_EXT   0x81AB
-#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
-typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_EXT_cull_vertex */
-
-#ifndef GL_EXT_debug_label
-#define GL_EXT_debug_label 1
-#define GL_PROGRAM_PIPELINE_OBJECT_EXT    0x8A4F
-#define GL_PROGRAM_OBJECT_EXT             0x8B40
-#define GL_SHADER_OBJECT_EXT              0x8B48
-#define GL_BUFFER_OBJECT_EXT              0x9151
-#define GL_QUERY_OBJECT_EXT               0x9153
-#define GL_VERTEX_ARRAY_OBJECT_EXT        0x9154
-typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-#endif /* GL_EXT_debug_label */
-
-#ifndef GL_EXT_debug_marker
-#define GL_EXT_debug_marker 1
-typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
-GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
-GLAPI void APIENTRY glPopGroupMarkerEXT (void);
-#endif
-#endif /* GL_EXT_debug_marker */
-
-#ifndef GL_EXT_depth_bounds_test
-#define GL_EXT_depth_bounds_test 1
-#define GL_DEPTH_BOUNDS_TEST_EXT          0x8890
-#define GL_DEPTH_BOUNDS_EXT               0x8891
-typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);
-#endif
-#endif /* GL_EXT_depth_bounds_test */
-
-#ifndef GL_EXT_direct_state_access
-#define GL_EXT_direct_state_access 1
-#define GL_PROGRAM_MATRIX_EXT             0x8E2D
-#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT   0x8E2E
-#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
-typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
-typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);
-typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data);
-typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);
-typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);
-typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img);
-typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
-typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
-typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);
-typedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);
-typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
-typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
-typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);
-typedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);
-typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-typedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
-GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
-GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
-GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
-GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
-GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
-GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
-GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
-GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
-GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
-GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
-GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
-GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
-GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
-GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data);
-GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
-GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
-GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
-GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
-GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
-GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img);
-GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
-GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img);
-GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
-GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
-GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
-GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
-GLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
-GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
-GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params);
-GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
-GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
-GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
-GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
-GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
-GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
-GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
-GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
-GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
-GLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index);
-GLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params);
-GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
-GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string);
-GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
-GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
-GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
-GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
-GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
-GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
-GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
-GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array);
-GLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array);
-GLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index);
-GLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param);
-GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
-GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param);
-GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
-GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
-GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
-GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
-GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
-GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
-GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
-GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
-GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
-GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
-GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
-GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);
-GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
-GLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean resident);
-GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor);
-#endif
-#endif /* GL_EXT_direct_state_access */
-
-#ifndef GL_EXT_draw_buffers2
-#define GL_EXT_draw_buffers2 1
-typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-#endif
-#endif /* GL_EXT_draw_buffers2 */
-
-#ifndef GL_EXT_draw_instanced
-#define GL_EXT_draw_instanced 1
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
-GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-#endif
-#endif /* GL_EXT_draw_instanced */
-
-#ifndef GL_EXT_draw_range_elements
-#define GL_EXT_draw_range_elements 1
-#define GL_MAX_ELEMENTS_VERTICES_EXT      0x80E8
-#define GL_MAX_ELEMENTS_INDICES_EXT       0x80E9
-typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-#endif
-#endif /* GL_EXT_draw_range_elements */
-
-#ifndef GL_EXT_fog_coord
-#define GL_EXT_fog_coord 1
-#define GL_FOG_COORDINATE_SOURCE_EXT      0x8450
-#define GL_FOG_COORDINATE_EXT             0x8451
-#define GL_FRAGMENT_DEPTH_EXT             0x8452
-#define GL_CURRENT_FOG_COORDINATE_EXT     0x8453
-#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT  0x8454
-#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
-#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
-#define GL_FOG_COORDINATE_ARRAY_EXT       0x8457
-typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
-typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);
-typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);
-typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord);
-GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord);
-GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord);
-GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord);
-GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_fog_coord */
-
-#ifndef GL_EXT_framebuffer_blit
-#define GL_EXT_framebuffer_blit 1
-#define GL_READ_FRAMEBUFFER_EXT           0x8CA8
-#define GL_DRAW_FRAMEBUFFER_EXT           0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_EXT   0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_EXT   0x8CAA
-typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-#endif /* GL_EXT_framebuffer_blit */
-
-#ifndef GL_EXT_framebuffer_multisample
-#define GL_EXT_framebuffer_multisample 1
-#define GL_RENDERBUFFER_SAMPLES_EXT       0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
-#define GL_MAX_SAMPLES_EXT                0x8D57
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_EXT_framebuffer_multisample */
-
-#ifndef GL_EXT_framebuffer_multisample_blit_scaled
-#define GL_EXT_framebuffer_multisample_blit_scaled 1
-#define GL_SCALED_RESOLVE_FASTEST_EXT     0x90BA
-#define GL_SCALED_RESOLVE_NICEST_EXT      0x90BB
-#endif /* GL_EXT_framebuffer_multisample_blit_scaled */
-
-#ifndef GL_EXT_framebuffer_object
-#define GL_EXT_framebuffer_object 1
-#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
-#define GL_MAX_RENDERBUFFER_SIZE_EXT      0x84E8
-#define GL_FRAMEBUFFER_BINDING_EXT        0x8CA6
-#define GL_RENDERBUFFER_BINDING_EXT       0x8CA7
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4
-#define GL_FRAMEBUFFER_COMPLETE_EXT       0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9
-#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA
-#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB
-#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC
-#define GL_FRAMEBUFFER_UNSUPPORTED_EXT    0x8CDD
-#define GL_MAX_COLOR_ATTACHMENTS_EXT      0x8CDF
-#define GL_COLOR_ATTACHMENT0_EXT          0x8CE0
-#define GL_COLOR_ATTACHMENT1_EXT          0x8CE1
-#define GL_COLOR_ATTACHMENT2_EXT          0x8CE2
-#define GL_COLOR_ATTACHMENT3_EXT          0x8CE3
-#define GL_COLOR_ATTACHMENT4_EXT          0x8CE4
-#define GL_COLOR_ATTACHMENT5_EXT          0x8CE5
-#define GL_COLOR_ATTACHMENT6_EXT          0x8CE6
-#define GL_COLOR_ATTACHMENT7_EXT          0x8CE7
-#define GL_COLOR_ATTACHMENT8_EXT          0x8CE8
-#define GL_COLOR_ATTACHMENT9_EXT          0x8CE9
-#define GL_COLOR_ATTACHMENT10_EXT         0x8CEA
-#define GL_COLOR_ATTACHMENT11_EXT         0x8CEB
-#define GL_COLOR_ATTACHMENT12_EXT         0x8CEC
-#define GL_COLOR_ATTACHMENT13_EXT         0x8CED
-#define GL_COLOR_ATTACHMENT14_EXT         0x8CEE
-#define GL_COLOR_ATTACHMENT15_EXT         0x8CEF
-#define GL_DEPTH_ATTACHMENT_EXT           0x8D00
-#define GL_STENCIL_ATTACHMENT_EXT         0x8D20
-#define GL_FRAMEBUFFER_EXT                0x8D40
-#define GL_RENDERBUFFER_EXT               0x8D41
-#define GL_RENDERBUFFER_WIDTH_EXT         0x8D42
-#define GL_RENDERBUFFER_HEIGHT_EXT        0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44
-#define GL_STENCIL_INDEX1_EXT             0x8D46
-#define GL_STENCIL_INDEX4_EXT             0x8D47
-#define GL_STENCIL_INDEX8_EXT             0x8D48
-#define GL_STENCIL_INDEX16_EXT            0x8D49
-#define GL_RENDERBUFFER_RED_SIZE_EXT      0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE_EXT    0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE_EXT     0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE_EXT    0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE_EXT    0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE_EXT  0x8D55
-typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);
-typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);
-typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);
-typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);
-typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer);
-GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
-GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);
-GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
-GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer);
-GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer);
-GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);
-GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
-GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target);
-GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target);
-#endif
-#endif /* GL_EXT_framebuffer_object */
-
-#ifndef GL_EXT_framebuffer_sRGB
-#define GL_EXT_framebuffer_sRGB 1
-#define GL_FRAMEBUFFER_SRGB_EXT           0x8DB9
-#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT   0x8DBA
-#endif /* GL_EXT_framebuffer_sRGB */
-
-#ifndef GL_EXT_geometry_shader4
-#define GL_EXT_geometry_shader4 1
-#define GL_GEOMETRY_SHADER_EXT            0x8DD9
-#define GL_GEOMETRY_VERTICES_OUT_EXT      0x8DDA
-#define GL_GEOMETRY_INPUT_TYPE_EXT        0x8DDB
-#define GL_GEOMETRY_OUTPUT_TYPE_EXT       0x8DDC
-#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
-#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD
-#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE
-#define GL_MAX_VARYING_COMPONENTS_EXT     0x8B4B
-#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
-#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
-#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
-#define GL_LINES_ADJACENCY_EXT            0x000A
-#define GL_LINE_STRIP_ADJACENCY_EXT       0x000B
-#define GL_TRIANGLES_ADJACENCY_EXT        0x000C
-#define GL_TRIANGLE_STRIP_ADJACENCY_EXT   0x000D
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
-#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9
-#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
-#define GL_PROGRAM_POINT_SIZE_EXT         0x8642
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
-#endif
-#endif /* GL_EXT_geometry_shader4 */
-
-#ifndef GL_EXT_gpu_program_parameters
-#define GL_EXT_gpu_program_parameters 1
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
-#endif
-#endif /* GL_EXT_gpu_program_parameters */
-
-#ifndef GL_EXT_gpu_shader4
-#define GL_EXT_gpu_shader4 1
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
-#define GL_SAMPLER_1D_ARRAY_EXT           0x8DC0
-#define GL_SAMPLER_2D_ARRAY_EXT           0x8DC1
-#define GL_SAMPLER_BUFFER_EXT             0x8DC2
-#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT    0x8DC3
-#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT    0x8DC4
-#define GL_SAMPLER_CUBE_SHADOW_EXT        0x8DC5
-#define GL_UNSIGNED_INT_VEC2_EXT          0x8DC6
-#define GL_UNSIGNED_INT_VEC3_EXT          0x8DC7
-#define GL_UNSIGNED_INT_VEC4_EXT          0x8DC8
-#define GL_INT_SAMPLER_1D_EXT             0x8DC9
-#define GL_INT_SAMPLER_2D_EXT             0x8DCA
-#define GL_INT_SAMPLER_3D_EXT             0x8DCB
-#define GL_INT_SAMPLER_CUBE_EXT           0x8DCC
-#define GL_INT_SAMPLER_2D_RECT_EXT        0x8DCD
-#define GL_INT_SAMPLER_1D_ARRAY_EXT       0x8DCE
-#define GL_INT_SAMPLER_2D_ARRAY_EXT       0x8DCF
-#define GL_INT_SAMPLER_BUFFER_EXT         0x8DD0
-#define GL_UNSIGNED_INT_SAMPLER_1D_EXT    0x8DD1
-#define GL_UNSIGNED_INT_SAMPLER_2D_EXT    0x8DD2
-#define GL_UNSIGNED_INT_SAMPLER_3D_EXT    0x8DD3
-#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT  0x8DD4
-#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
-#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
-#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
-#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
-#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT   0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT   0x8905
-typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
-typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);
-typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);
-typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params);
-GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);
-GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0);
-GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1);
-GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2);
-GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value);
-GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value);
-#endif
-#endif /* GL_EXT_gpu_shader4 */
-
-#ifndef GL_EXT_histogram
-#define GL_EXT_histogram 1
-#define GL_HISTOGRAM_EXT                  0x8024
-#define GL_PROXY_HISTOGRAM_EXT            0x8025
-#define GL_HISTOGRAM_WIDTH_EXT            0x8026
-#define GL_HISTOGRAM_FORMAT_EXT           0x8027
-#define GL_HISTOGRAM_RED_SIZE_EXT         0x8028
-#define GL_HISTOGRAM_GREEN_SIZE_EXT       0x8029
-#define GL_HISTOGRAM_BLUE_SIZE_EXT        0x802A
-#define GL_HISTOGRAM_ALPHA_SIZE_EXT       0x802B
-#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT   0x802C
-#define GL_HISTOGRAM_SINK_EXT             0x802D
-#define GL_MINMAX_EXT                     0x802E
-#define GL_MINMAX_FORMAT_EXT              0x802F
-#define GL_MINMAX_SINK_EXT                0x8030
-#define GL_TABLE_TOO_LARGE_EXT            0x8031
-typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);
-typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);
-GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink);
-GLAPI void APIENTRY glResetHistogramEXT (GLenum target);
-GLAPI void APIENTRY glResetMinmaxEXT (GLenum target);
-#endif
-#endif /* GL_EXT_histogram */
-
-#ifndef GL_EXT_index_array_formats
-#define GL_EXT_index_array_formats 1
-#define GL_IUI_V2F_EXT                    0x81AD
-#define GL_IUI_V3F_EXT                    0x81AE
-#define GL_IUI_N3F_V2F_EXT                0x81AF
-#define GL_IUI_N3F_V3F_EXT                0x81B0
-#define GL_T2F_IUI_V2F_EXT                0x81B1
-#define GL_T2F_IUI_V3F_EXT                0x81B2
-#define GL_T2F_IUI_N3F_V2F_EXT            0x81B3
-#define GL_T2F_IUI_N3F_V3F_EXT            0x81B4
-#endif /* GL_EXT_index_array_formats */
-
-#ifndef GL_EXT_index_func
-#define GL_EXT_index_func 1
-#define GL_INDEX_TEST_EXT                 0x81B5
-#define GL_INDEX_TEST_FUNC_EXT            0x81B6
-#define GL_INDEX_TEST_REF_EXT             0x81B7
-typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref);
-#endif
-#endif /* GL_EXT_index_func */
-
-#ifndef GL_EXT_index_material
-#define GL_EXT_index_material 1
-#define GL_INDEX_MATERIAL_EXT             0x81B8
-#define GL_INDEX_MATERIAL_PARAMETER_EXT   0x81B9
-#define GL_INDEX_MATERIAL_FACE_EXT        0x81BA
-typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode);
-#endif
-#endif /* GL_EXT_index_material */
-
-#ifndef GL_EXT_index_texture
-#define GL_EXT_index_texture 1
-#endif /* GL_EXT_index_texture */
-
-#ifndef GL_EXT_light_texture
-#define GL_EXT_light_texture 1
-#define GL_FRAGMENT_MATERIAL_EXT          0x8349
-#define GL_FRAGMENT_NORMAL_EXT            0x834A
-#define GL_FRAGMENT_COLOR_EXT             0x834C
-#define GL_ATTENUATION_EXT                0x834D
-#define GL_SHADOW_ATTENUATION_EXT         0x834E
-#define GL_TEXTURE_APPLICATION_MODE_EXT   0x834F
-#define GL_TEXTURE_LIGHT_EXT              0x8350
-#define GL_TEXTURE_MATERIAL_FACE_EXT      0x8351
-#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352
-typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
-typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
-typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glApplyTextureEXT (GLenum mode);
-GLAPI void APIENTRY glTextureLightEXT (GLenum pname);
-GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode);
-#endif
-#endif /* GL_EXT_light_texture */
-
-#ifndef GL_EXT_misc_attribute
-#define GL_EXT_misc_attribute 1
-#endif /* GL_EXT_misc_attribute */
-
-#ifndef GL_EXT_multi_draw_arrays
-#define GL_EXT_multi_draw_arrays 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);
-#endif
-#endif /* GL_EXT_multi_draw_arrays */
-
-#ifndef GL_EXT_multisample
-#define GL_EXT_multisample 1
-#define GL_MULTISAMPLE_EXT                0x809D
-#define GL_SAMPLE_ALPHA_TO_MASK_EXT       0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_EXT        0x809F
-#define GL_SAMPLE_MASK_EXT                0x80A0
-#define GL_1PASS_EXT                      0x80A1
-#define GL_2PASS_0_EXT                    0x80A2
-#define GL_2PASS_1_EXT                    0x80A3
-#define GL_4PASS_0_EXT                    0x80A4
-#define GL_4PASS_1_EXT                    0x80A5
-#define GL_4PASS_2_EXT                    0x80A6
-#define GL_4PASS_3_EXT                    0x80A7
-#define GL_SAMPLE_BUFFERS_EXT             0x80A8
-#define GL_SAMPLES_EXT                    0x80A9
-#define GL_SAMPLE_MASK_VALUE_EXT          0x80AA
-#define GL_SAMPLE_MASK_INVERT_EXT         0x80AB
-#define GL_SAMPLE_PATTERN_EXT             0x80AC
-#define GL_MULTISAMPLE_BIT_EXT            0x20000000
-typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert);
-GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern);
-#endif
-#endif /* GL_EXT_multisample */
-
-#ifndef GL_EXT_packed_depth_stencil
-#define GL_EXT_packed_depth_stencil 1
-#define GL_DEPTH_STENCIL_EXT              0x84F9
-#define GL_UNSIGNED_INT_24_8_EXT          0x84FA
-#define GL_DEPTH24_STENCIL8_EXT           0x88F0
-#define GL_TEXTURE_STENCIL_SIZE_EXT       0x88F1
-#endif /* GL_EXT_packed_depth_stencil */
-
-#ifndef GL_EXT_packed_float
-#define GL_EXT_packed_float 1
-#define GL_R11F_G11F_B10F_EXT             0x8C3A
-#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B
-#define GL_RGBA_SIGNED_COMPONENTS_EXT     0x8C3C
-#endif /* GL_EXT_packed_float */
-
-#ifndef GL_EXT_packed_pixels
-#define GL_EXT_packed_pixels 1
-#define GL_UNSIGNED_BYTE_3_3_2_EXT        0x8032
-#define GL_UNSIGNED_SHORT_4_4_4_4_EXT     0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1_EXT     0x8034
-#define GL_UNSIGNED_INT_8_8_8_8_EXT       0x8035
-#define GL_UNSIGNED_INT_10_10_10_2_EXT    0x8036
-#endif /* GL_EXT_packed_pixels */
-
-#ifndef GL_EXT_paletted_texture
-#define GL_EXT_paletted_texture 1
-#define GL_COLOR_INDEX1_EXT               0x80E2
-#define GL_COLOR_INDEX2_EXT               0x80E3
-#define GL_COLOR_INDEX4_EXT               0x80E4
-#define GL_COLOR_INDEX8_EXT               0x80E5
-#define GL_COLOR_INDEX12_EXT              0x80E6
-#define GL_COLOR_INDEX16_EXT              0x80E7
-#define GL_TEXTURE_INDEX_SIZE_EXT         0x80ED
-typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);
-GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data);
-GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_EXT_paletted_texture */
-
-#ifndef GL_EXT_pixel_buffer_object
-#define GL_EXT_pixel_buffer_object 1
-#define GL_PIXEL_PACK_BUFFER_EXT          0x88EB
-#define GL_PIXEL_UNPACK_BUFFER_EXT        0x88EC
-#define GL_PIXEL_PACK_BUFFER_BINDING_EXT  0x88ED
-#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF
-#endif /* GL_EXT_pixel_buffer_object */
-
-#ifndef GL_EXT_pixel_transform
-#define GL_EXT_pixel_transform 1
-#define GL_PIXEL_TRANSFORM_2D_EXT         0x8330
-#define GL_PIXEL_MAG_FILTER_EXT           0x8331
-#define GL_PIXEL_MIN_FILTER_EXT           0x8332
-#define GL_PIXEL_CUBIC_WEIGHT_EXT         0x8333
-#define GL_CUBIC_EXT                      0x8334
-#define GL_AVERAGE_EXT                    0x8335
-#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336
-#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337
-#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT  0x8338
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_EXT_pixel_transform */
-
-#ifndef GL_EXT_pixel_transform_color_table
-#define GL_EXT_pixel_transform_color_table 1
-#endif /* GL_EXT_pixel_transform_color_table */
-
-#ifndef GL_EXT_point_parameters
-#define GL_EXT_point_parameters 1
-#define GL_POINT_SIZE_MIN_EXT             0x8126
-#define GL_POINT_SIZE_MAX_EXT             0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_EXT  0x8128
-#define GL_DISTANCE_ATTENUATION_EXT       0x8129
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params);
-#endif
-#endif /* GL_EXT_point_parameters */
-
-#ifndef GL_EXT_polygon_offset
-#define GL_EXT_polygon_offset 1
-#define GL_POLYGON_OFFSET_EXT             0x8037
-#define GL_POLYGON_OFFSET_FACTOR_EXT      0x8038
-#define GL_POLYGON_OFFSET_BIAS_EXT        0x8039
-typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias);
-#endif
-#endif /* GL_EXT_polygon_offset */
-
-#ifndef GL_EXT_provoking_vertex
-#define GL_EXT_provoking_vertex 1
-#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C
-#define GL_FIRST_VERTEX_CONVENTION_EXT    0x8E4D
-#define GL_LAST_VERTEX_CONVENTION_EXT     0x8E4E
-#define GL_PROVOKING_VERTEX_EXT           0x8E4F
-typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode);
-#endif
-#endif /* GL_EXT_provoking_vertex */
-
-#ifndef GL_EXT_rescale_normal
-#define GL_EXT_rescale_normal 1
-#define GL_RESCALE_NORMAL_EXT             0x803A
-#endif /* GL_EXT_rescale_normal */
-
-#ifndef GL_EXT_secondary_color
-#define GL_EXT_secondary_color 1
-#define GL_COLOR_SUM_EXT                  0x8458
-#define GL_CURRENT_SECONDARY_COLOR_EXT    0x8459
-#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A
-#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B
-#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C
-#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D
-#define GL_SECONDARY_COLOR_ARRAY_EXT      0x845E
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);
-GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v);
-GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);
-GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v);
-GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);
-GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v);
-GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);
-GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v);
-GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);
-GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v);
-GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);
-GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v);
-GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);
-GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v);
-GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);
-GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v);
-GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_secondary_color */
-
-#ifndef GL_EXT_separate_shader_objects
-#define GL_EXT_separate_shader_objects 1
-#define GL_ACTIVE_PROGRAM_EXT             0x8B8D
-typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
-typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
-typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
-GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
-GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
-#endif
-#endif /* GL_EXT_separate_shader_objects */
-
-#ifndef GL_EXT_separate_specular_color
-#define GL_EXT_separate_specular_color 1
-#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT  0x81F8
-#define GL_SINGLE_COLOR_EXT               0x81F9
-#define GL_SEPARATE_SPECULAR_COLOR_EXT    0x81FA
-#endif /* GL_EXT_separate_specular_color */
-
-#ifndef GL_EXT_shader_image_load_formatted
-#define GL_EXT_shader_image_load_formatted 1
-#endif /* GL_EXT_shader_image_load_formatted */
-
-#ifndef GL_EXT_shader_image_load_store
-#define GL_EXT_shader_image_load_store 1
-#define GL_MAX_IMAGE_UNITS_EXT            0x8F38
-#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
-#define GL_IMAGE_BINDING_NAME_EXT         0x8F3A
-#define GL_IMAGE_BINDING_LEVEL_EXT        0x8F3B
-#define GL_IMAGE_BINDING_LAYERED_EXT      0x8F3C
-#define GL_IMAGE_BINDING_LAYER_EXT        0x8F3D
-#define GL_IMAGE_BINDING_ACCESS_EXT       0x8F3E
-#define GL_IMAGE_1D_EXT                   0x904C
-#define GL_IMAGE_2D_EXT                   0x904D
-#define GL_IMAGE_3D_EXT                   0x904E
-#define GL_IMAGE_2D_RECT_EXT              0x904F
-#define GL_IMAGE_CUBE_EXT                 0x9050
-#define GL_IMAGE_BUFFER_EXT               0x9051
-#define GL_IMAGE_1D_ARRAY_EXT             0x9052
-#define GL_IMAGE_2D_ARRAY_EXT             0x9053
-#define GL_IMAGE_CUBE_MAP_ARRAY_EXT       0x9054
-#define GL_IMAGE_2D_MULTISAMPLE_EXT       0x9055
-#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
-#define GL_INT_IMAGE_1D_EXT               0x9057
-#define GL_INT_IMAGE_2D_EXT               0x9058
-#define GL_INT_IMAGE_3D_EXT               0x9059
-#define GL_INT_IMAGE_2D_RECT_EXT          0x905A
-#define GL_INT_IMAGE_CUBE_EXT             0x905B
-#define GL_INT_IMAGE_BUFFER_EXT           0x905C
-#define GL_INT_IMAGE_1D_ARRAY_EXT         0x905D
-#define GL_INT_IMAGE_2D_ARRAY_EXT         0x905E
-#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT   0x905F
-#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT   0x9060
-#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
-#define GL_UNSIGNED_INT_IMAGE_1D_EXT      0x9062
-#define GL_UNSIGNED_INT_IMAGE_2D_EXT      0x9063
-#define GL_UNSIGNED_INT_IMAGE_3D_EXT      0x9064
-#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
-#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT    0x9066
-#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT  0x9067
-#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
-#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
-#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
-#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
-#define GL_MAX_IMAGE_SAMPLES_EXT          0x906D
-#define GL_IMAGE_BINDING_FORMAT_EXT       0x906E
-#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
-#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT  0x00000002
-#define GL_UNIFORM_BARRIER_BIT_EXT        0x00000004
-#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT  0x00000008
-#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
-#define GL_COMMAND_BARRIER_BIT_EXT        0x00000040
-#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT   0x00000080
-#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
-#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT  0x00000200
-#define GL_FRAMEBUFFER_BARRIER_BIT_EXT    0x00000400
-#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
-#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
-#define GL_ALL_BARRIER_BITS_EXT           0xFFFFFFFF
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
-typedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
-GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers);
-#endif
-#endif /* GL_EXT_shader_image_load_store */
-
-#ifndef GL_EXT_shader_integer_mix
-#define GL_EXT_shader_integer_mix 1
-#endif /* GL_EXT_shader_integer_mix */
-
-#ifndef GL_EXT_shadow_funcs
-#define GL_EXT_shadow_funcs 1
-#endif /* GL_EXT_shadow_funcs */
-
-#ifndef GL_EXT_shared_texture_palette
-#define GL_EXT_shared_texture_palette 1
-#define GL_SHARED_TEXTURE_PALETTE_EXT     0x81FB
-#endif /* GL_EXT_shared_texture_palette */
-
-#ifndef GL_EXT_stencil_clear_tag
-#define GL_EXT_stencil_clear_tag 1
-#define GL_STENCIL_TAG_BITS_EXT           0x88F2
-#define GL_STENCIL_CLEAR_TAG_VALUE_EXT    0x88F3
-typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag);
-#endif
-#endif /* GL_EXT_stencil_clear_tag */
-
-#ifndef GL_EXT_stencil_two_side
-#define GL_EXT_stencil_two_side 1
-#define GL_STENCIL_TEST_TWO_SIDE_EXT      0x8910
-#define GL_ACTIVE_STENCIL_FACE_EXT        0x8911
-typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face);
-#endif
-#endif /* GL_EXT_stencil_two_side */
-
-#ifndef GL_EXT_stencil_wrap
-#define GL_EXT_stencil_wrap 1
-#define GL_INCR_WRAP_EXT                  0x8507
-#define GL_DECR_WRAP_EXT                  0x8508
-#endif /* GL_EXT_stencil_wrap */
-
-#ifndef GL_EXT_subtexture
-#define GL_EXT_subtexture 1
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
-#endif
-#endif /* GL_EXT_subtexture */
-
-#ifndef GL_EXT_texture
-#define GL_EXT_texture 1
-#define GL_ALPHA4_EXT                     0x803B
-#define GL_ALPHA8_EXT                     0x803C
-#define GL_ALPHA12_EXT                    0x803D
-#define GL_ALPHA16_EXT                    0x803E
-#define GL_LUMINANCE4_EXT                 0x803F
-#define GL_LUMINANCE8_EXT                 0x8040
-#define GL_LUMINANCE12_EXT                0x8041
-#define GL_LUMINANCE16_EXT                0x8042
-#define GL_LUMINANCE4_ALPHA4_EXT          0x8043
-#define GL_LUMINANCE6_ALPHA2_EXT          0x8044
-#define GL_LUMINANCE8_ALPHA8_EXT          0x8045
-#define GL_LUMINANCE12_ALPHA4_EXT         0x8046
-#define GL_LUMINANCE12_ALPHA12_EXT        0x8047
-#define GL_LUMINANCE16_ALPHA16_EXT        0x8048
-#define GL_INTENSITY_EXT                  0x8049
-#define GL_INTENSITY4_EXT                 0x804A
-#define GL_INTENSITY8_EXT                 0x804B
-#define GL_INTENSITY12_EXT                0x804C
-#define GL_INTENSITY16_EXT                0x804D
-#define GL_RGB2_EXT                       0x804E
-#define GL_RGB4_EXT                       0x804F
-#define GL_RGB5_EXT                       0x8050
-#define GL_RGB8_EXT                       0x8051
-#define GL_RGB10_EXT                      0x8052
-#define GL_RGB12_EXT                      0x8053
-#define GL_RGB16_EXT                      0x8054
-#define GL_RGBA2_EXT                      0x8055
-#define GL_RGBA4_EXT                      0x8056
-#define GL_RGB5_A1_EXT                    0x8057
-#define GL_RGBA8_EXT                      0x8058
-#define GL_RGB10_A2_EXT                   0x8059
-#define GL_RGBA12_EXT                     0x805A
-#define GL_RGBA16_EXT                     0x805B
-#define GL_TEXTURE_RED_SIZE_EXT           0x805C
-#define GL_TEXTURE_GREEN_SIZE_EXT         0x805D
-#define GL_TEXTURE_BLUE_SIZE_EXT          0x805E
-#define GL_TEXTURE_ALPHA_SIZE_EXT         0x805F
-#define GL_TEXTURE_LUMINANCE_SIZE_EXT     0x8060
-#define GL_TEXTURE_INTENSITY_SIZE_EXT     0x8061
-#define GL_REPLACE_EXT                    0x8062
-#define GL_PROXY_TEXTURE_1D_EXT           0x8063
-#define GL_PROXY_TEXTURE_2D_EXT           0x8064
-#define GL_TEXTURE_TOO_LARGE_EXT          0x8065
-#endif /* GL_EXT_texture */
-
-#ifndef GL_EXT_texture3D
-#define GL_EXT_texture3D 1
-#define GL_PACK_SKIP_IMAGES_EXT           0x806B
-#define GL_PACK_IMAGE_HEIGHT_EXT          0x806C
-#define GL_UNPACK_SKIP_IMAGES_EXT         0x806D
-#define GL_UNPACK_IMAGE_HEIGHT_EXT        0x806E
-#define GL_TEXTURE_3D_EXT                 0x806F
-#define GL_PROXY_TEXTURE_3D_EXT           0x8070
-#define GL_TEXTURE_DEPTH_EXT              0x8071
-#define GL_TEXTURE_WRAP_R_EXT             0x8072
-#define GL_MAX_3D_TEXTURE_SIZE_EXT        0x8073
-typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-#endif
-#endif /* GL_EXT_texture3D */
-
-#ifndef GL_EXT_texture_array
-#define GL_EXT_texture_array 1
-#define GL_TEXTURE_1D_ARRAY_EXT           0x8C18
-#define GL_PROXY_TEXTURE_1D_ARRAY_EXT     0x8C19
-#define GL_TEXTURE_2D_ARRAY_EXT           0x8C1A
-#define GL_PROXY_TEXTURE_2D_ARRAY_EXT     0x8C1B
-#define GL_TEXTURE_BINDING_1D_ARRAY_EXT   0x8C1C
-#define GL_TEXTURE_BINDING_2D_ARRAY_EXT   0x8C1D
-#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT   0x88FF
-#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
-#endif /* GL_EXT_texture_array */
-
-#ifndef GL_EXT_texture_buffer_object
-#define GL_EXT_texture_buffer_object 1
-#define GL_TEXTURE_BUFFER_EXT             0x8C2A
-#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT    0x8C2B
-#define GL_TEXTURE_BINDING_BUFFER_EXT     0x8C2C
-#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
-#define GL_TEXTURE_BUFFER_FORMAT_EXT      0x8C2E
-typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);
-#endif
-#endif /* GL_EXT_texture_buffer_object */
-
-#ifndef GL_EXT_texture_compression_latc
-#define GL_EXT_texture_compression_latc 1
-#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
-#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
-#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
-#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
-#endif /* GL_EXT_texture_compression_latc */
-
-#ifndef GL_EXT_texture_compression_rgtc
-#define GL_EXT_texture_compression_rgtc 1
-#define GL_COMPRESSED_RED_RGTC1_EXT       0x8DBB
-#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
-#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
-#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
-#endif /* GL_EXT_texture_compression_rgtc */
-
-#ifndef GL_EXT_texture_compression_s3tc
-#define GL_EXT_texture_compression_s3tc 1
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1
-#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2
-#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3
-#endif /* GL_EXT_texture_compression_s3tc */
-
-#ifndef GL_EXT_texture_cube_map
-#define GL_EXT_texture_cube_map 1
-#define GL_NORMAL_MAP_EXT                 0x8511
-#define GL_REFLECTION_MAP_EXT             0x8512
-#define GL_TEXTURE_CUBE_MAP_EXT           0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP_EXT   0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A
-#define GL_PROXY_TEXTURE_CUBE_MAP_EXT     0x851B
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT  0x851C
-#endif /* GL_EXT_texture_cube_map */
-
-#ifndef GL_EXT_texture_env_add
-#define GL_EXT_texture_env_add 1
-#endif /* GL_EXT_texture_env_add */
-
-#ifndef GL_EXT_texture_env_combine
-#define GL_EXT_texture_env_combine 1
-#define GL_COMBINE_EXT                    0x8570
-#define GL_COMBINE_RGB_EXT                0x8571
-#define GL_COMBINE_ALPHA_EXT              0x8572
-#define GL_RGB_SCALE_EXT                  0x8573
-#define GL_ADD_SIGNED_EXT                 0x8574
-#define GL_INTERPOLATE_EXT                0x8575
-#define GL_CONSTANT_EXT                   0x8576
-#define GL_PRIMARY_COLOR_EXT              0x8577
-#define GL_PREVIOUS_EXT                   0x8578
-#define GL_SOURCE0_RGB_EXT                0x8580
-#define GL_SOURCE1_RGB_EXT                0x8581
-#define GL_SOURCE2_RGB_EXT                0x8582
-#define GL_SOURCE0_ALPHA_EXT              0x8588
-#define GL_SOURCE1_ALPHA_EXT              0x8589
-#define GL_SOURCE2_ALPHA_EXT              0x858A
-#define GL_OPERAND0_RGB_EXT               0x8590
-#define GL_OPERAND1_RGB_EXT               0x8591
-#define GL_OPERAND2_RGB_EXT               0x8592
-#define GL_OPERAND0_ALPHA_EXT             0x8598
-#define GL_OPERAND1_ALPHA_EXT             0x8599
-#define GL_OPERAND2_ALPHA_EXT             0x859A
-#endif /* GL_EXT_texture_env_combine */
-
-#ifndef GL_EXT_texture_env_dot3
-#define GL_EXT_texture_env_dot3 1
-#define GL_DOT3_RGB_EXT                   0x8740
-#define GL_DOT3_RGBA_EXT                  0x8741
-#endif /* GL_EXT_texture_env_dot3 */
-
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_EXT_texture_filter_anisotropic 1
-#define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
-#endif /* GL_EXT_texture_filter_anisotropic */
-
-#ifndef GL_EXT_texture_integer
-#define GL_EXT_texture_integer 1
-#define GL_RGBA32UI_EXT                   0x8D70
-#define GL_RGB32UI_EXT                    0x8D71
-#define GL_ALPHA32UI_EXT                  0x8D72
-#define GL_INTENSITY32UI_EXT              0x8D73
-#define GL_LUMINANCE32UI_EXT              0x8D74
-#define GL_LUMINANCE_ALPHA32UI_EXT        0x8D75
-#define GL_RGBA16UI_EXT                   0x8D76
-#define GL_RGB16UI_EXT                    0x8D77
-#define GL_ALPHA16UI_EXT                  0x8D78
-#define GL_INTENSITY16UI_EXT              0x8D79
-#define GL_LUMINANCE16UI_EXT              0x8D7A
-#define GL_LUMINANCE_ALPHA16UI_EXT        0x8D7B
-#define GL_RGBA8UI_EXT                    0x8D7C
-#define GL_RGB8UI_EXT                     0x8D7D
-#define GL_ALPHA8UI_EXT                   0x8D7E
-#define GL_INTENSITY8UI_EXT               0x8D7F
-#define GL_LUMINANCE8UI_EXT               0x8D80
-#define GL_LUMINANCE_ALPHA8UI_EXT         0x8D81
-#define GL_RGBA32I_EXT                    0x8D82
-#define GL_RGB32I_EXT                     0x8D83
-#define GL_ALPHA32I_EXT                   0x8D84
-#define GL_INTENSITY32I_EXT               0x8D85
-#define GL_LUMINANCE32I_EXT               0x8D86
-#define GL_LUMINANCE_ALPHA32I_EXT         0x8D87
-#define GL_RGBA16I_EXT                    0x8D88
-#define GL_RGB16I_EXT                     0x8D89
-#define GL_ALPHA16I_EXT                   0x8D8A
-#define GL_INTENSITY16I_EXT               0x8D8B
-#define GL_LUMINANCE16I_EXT               0x8D8C
-#define GL_LUMINANCE_ALPHA16I_EXT         0x8D8D
-#define GL_RGBA8I_EXT                     0x8D8E
-#define GL_RGB8I_EXT                      0x8D8F
-#define GL_ALPHA8I_EXT                    0x8D90
-#define GL_INTENSITY8I_EXT                0x8D91
-#define GL_LUMINANCE8I_EXT                0x8D92
-#define GL_LUMINANCE_ALPHA8I_EXT          0x8D93
-#define GL_RED_INTEGER_EXT                0x8D94
-#define GL_GREEN_INTEGER_EXT              0x8D95
-#define GL_BLUE_INTEGER_EXT               0x8D96
-#define GL_ALPHA_INTEGER_EXT              0x8D97
-#define GL_RGB_INTEGER_EXT                0x8D98
-#define GL_RGBA_INTEGER_EXT               0x8D99
-#define GL_BGR_INTEGER_EXT                0x8D9A
-#define GL_BGRA_INTEGER_EXT               0x8D9B
-#define GL_LUMINANCE_INTEGER_EXT          0x8D9C
-#define GL_LUMINANCE_ALPHA_INTEGER_EXT    0x8D9D
-#define GL_RGBA_INTEGER_MODE_EXT          0x8D9E
-typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);
-typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);
-GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha);
-GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha);
-#endif
-#endif /* GL_EXT_texture_integer */
-
-#ifndef GL_EXT_texture_lod_bias
-#define GL_EXT_texture_lod_bias 1
-#define GL_MAX_TEXTURE_LOD_BIAS_EXT       0x84FD
-#define GL_TEXTURE_FILTER_CONTROL_EXT     0x8500
-#define GL_TEXTURE_LOD_BIAS_EXT           0x8501
-#endif /* GL_EXT_texture_lod_bias */
-
-#ifndef GL_EXT_texture_mirror_clamp
-#define GL_EXT_texture_mirror_clamp 1
-#define GL_MIRROR_CLAMP_EXT               0x8742
-#define GL_MIRROR_CLAMP_TO_EDGE_EXT       0x8743
-#define GL_MIRROR_CLAMP_TO_BORDER_EXT     0x8912
-#endif /* GL_EXT_texture_mirror_clamp */
-
-#ifndef GL_EXT_texture_object
-#define GL_EXT_texture_object 1
-#define GL_TEXTURE_PRIORITY_EXT           0x8066
-#define GL_TEXTURE_RESIDENT_EXT           0x8067
-#define GL_TEXTURE_1D_BINDING_EXT         0x8068
-#define GL_TEXTURE_2D_BINDING_EXT         0x8069
-#define GL_TEXTURE_3D_BINDING_EXT         0x806A
-typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
-typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);
-typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);
-typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);
-GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture);
-GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures);
-GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures);
-GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture);
-GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);
-#endif
-#endif /* GL_EXT_texture_object */
-
-#ifndef GL_EXT_texture_perturb_normal
-#define GL_EXT_texture_perturb_normal 1
-#define GL_PERTURB_EXT                    0x85AE
-#define GL_TEXTURE_NORMAL_EXT             0x85AF
-typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureNormalEXT (GLenum mode);
-#endif
-#endif /* GL_EXT_texture_perturb_normal */
-
-#ifndef GL_EXT_texture_sRGB
-#define GL_EXT_texture_sRGB 1
-#define GL_SRGB_EXT                       0x8C40
-#define GL_SRGB8_EXT                      0x8C41
-#define GL_SRGB_ALPHA_EXT                 0x8C42
-#define GL_SRGB8_ALPHA8_EXT               0x8C43
-#define GL_SLUMINANCE_ALPHA_EXT           0x8C44
-#define GL_SLUMINANCE8_ALPHA8_EXT         0x8C45
-#define GL_SLUMINANCE_EXT                 0x8C46
-#define GL_SLUMINANCE8_EXT                0x8C47
-#define GL_COMPRESSED_SRGB_EXT            0x8C48
-#define GL_COMPRESSED_SRGB_ALPHA_EXT      0x8C49
-#define GL_COMPRESSED_SLUMINANCE_EXT      0x8C4A
-#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B
-#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT  0x8C4C
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
-#endif /* GL_EXT_texture_sRGB */
-
-#ifndef GL_EXT_texture_sRGB_decode
-#define GL_EXT_texture_sRGB_decode 1
-#define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48
-#define GL_DECODE_EXT                     0x8A49
-#define GL_SKIP_DECODE_EXT                0x8A4A
-#endif /* GL_EXT_texture_sRGB_decode */
-
-#ifndef GL_EXT_texture_shared_exponent
-#define GL_EXT_texture_shared_exponent 1
-#define GL_RGB9_E5_EXT                    0x8C3D
-#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT   0x8C3E
-#define GL_TEXTURE_SHARED_SIZE_EXT        0x8C3F
-#endif /* GL_EXT_texture_shared_exponent */
-
-#ifndef GL_EXT_texture_snorm
-#define GL_EXT_texture_snorm 1
-#define GL_ALPHA_SNORM                    0x9010
-#define GL_LUMINANCE_SNORM                0x9011
-#define GL_LUMINANCE_ALPHA_SNORM          0x9012
-#define GL_INTENSITY_SNORM                0x9013
-#define GL_ALPHA8_SNORM                   0x9014
-#define GL_LUMINANCE8_SNORM               0x9015
-#define GL_LUMINANCE8_ALPHA8_SNORM        0x9016
-#define GL_INTENSITY8_SNORM               0x9017
-#define GL_ALPHA16_SNORM                  0x9018
-#define GL_LUMINANCE16_SNORM              0x9019
-#define GL_LUMINANCE16_ALPHA16_SNORM      0x901A
-#define GL_INTENSITY16_SNORM              0x901B
-#define GL_RED_SNORM                      0x8F90
-#define GL_RG_SNORM                       0x8F91
-#define GL_RGB_SNORM                      0x8F92
-#define GL_RGBA_SNORM                     0x8F93
-#endif /* GL_EXT_texture_snorm */
-
-#ifndef GL_EXT_texture_swizzle
-#define GL_EXT_texture_swizzle 1
-#define GL_TEXTURE_SWIZZLE_R_EXT          0x8E42
-#define GL_TEXTURE_SWIZZLE_G_EXT          0x8E43
-#define GL_TEXTURE_SWIZZLE_B_EXT          0x8E44
-#define GL_TEXTURE_SWIZZLE_A_EXT          0x8E45
-#define GL_TEXTURE_SWIZZLE_RGBA_EXT       0x8E46
-#endif /* GL_EXT_texture_swizzle */
-
-#ifndef GL_EXT_timer_query
-#define GL_EXT_timer_query 1
-#define GL_TIME_ELAPSED_EXT               0x88BF
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
-GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
-#endif
-#endif /* GL_EXT_timer_query */
-
-#ifndef GL_EXT_transform_feedback
-#define GL_EXT_transform_feedback 1
-#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT  0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F
-#define GL_INTERLEAVED_ATTRIBS_EXT        0x8C8C
-#define GL_SEPARATE_ATTRIBS_EXT           0x8C8D
-#define GL_PRIMITIVES_GENERATED_EXT       0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88
-#define GL_RASTERIZER_DISCARD_EXT         0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80
-#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F
-#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedbackEXT (void);
-GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-#endif
-#endif /* GL_EXT_transform_feedback */
-
-#ifndef GL_EXT_vertex_array
-#define GL_EXT_vertex_array 1
-#define GL_VERTEX_ARRAY_EXT               0x8074
-#define GL_NORMAL_ARRAY_EXT               0x8075
-#define GL_COLOR_ARRAY_EXT                0x8076
-#define GL_INDEX_ARRAY_EXT                0x8077
-#define GL_TEXTURE_COORD_ARRAY_EXT        0x8078
-#define GL_EDGE_FLAG_ARRAY_EXT            0x8079
-#define GL_VERTEX_ARRAY_SIZE_EXT          0x807A
-#define GL_VERTEX_ARRAY_TYPE_EXT          0x807B
-#define GL_VERTEX_ARRAY_STRIDE_EXT        0x807C
-#define GL_VERTEX_ARRAY_COUNT_EXT         0x807D
-#define GL_NORMAL_ARRAY_TYPE_EXT          0x807E
-#define GL_NORMAL_ARRAY_STRIDE_EXT        0x807F
-#define GL_NORMAL_ARRAY_COUNT_EXT         0x8080
-#define GL_COLOR_ARRAY_SIZE_EXT           0x8081
-#define GL_COLOR_ARRAY_TYPE_EXT           0x8082
-#define GL_COLOR_ARRAY_STRIDE_EXT         0x8083
-#define GL_COLOR_ARRAY_COUNT_EXT          0x8084
-#define GL_INDEX_ARRAY_TYPE_EXT           0x8085
-#define GL_INDEX_ARRAY_STRIDE_EXT         0x8086
-#define GL_INDEX_ARRAY_COUNT_EXT          0x8087
-#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT   0x8088
-#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT   0x8089
-#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
-#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT  0x808B
-#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT     0x808C
-#define GL_EDGE_FLAG_ARRAY_COUNT_EXT      0x808D
-#define GL_VERTEX_ARRAY_POINTER_EXT       0x808E
-#define GL_NORMAL_ARRAY_POINTER_EXT       0x808F
-#define GL_COLOR_ARRAY_POINTER_EXT        0x8090
-#define GL_INDEX_ARRAY_POINTER_EXT        0x8091
-#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
-#define GL_EDGE_FLAG_ARRAY_POINTER_EXT    0x8093
-typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
-typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
-typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
-typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, void **params);
-typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glArrayElementEXT (GLint i);
-GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);
-GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);
-GLAPI void APIENTRY glGetPointervEXT (GLenum pname, void **params);
-GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);
-#endif
-#endif /* GL_EXT_vertex_array */
-
-#ifndef GL_EXT_vertex_array_bgra
-#define GL_EXT_vertex_array_bgra 1
-#endif /* GL_EXT_vertex_array_bgra */
-
-#ifndef GL_EXT_vertex_attrib_64bit
-#define GL_EXT_vertex_attrib_64bit 1
-#define GL_DOUBLE_VEC2_EXT                0x8FFC
-#define GL_DOUBLE_VEC3_EXT                0x8FFD
-#define GL_DOUBLE_VEC4_EXT                0x8FFE
-#define GL_DOUBLE_MAT2_EXT                0x8F46
-#define GL_DOUBLE_MAT3_EXT                0x8F47
-#define GL_DOUBLE_MAT4_EXT                0x8F48
-#define GL_DOUBLE_MAT2x3_EXT              0x8F49
-#define GL_DOUBLE_MAT2x4_EXT              0x8F4A
-#define GL_DOUBLE_MAT3x2_EXT              0x8F4B
-#define GL_DOUBLE_MAT3x4_EXT              0x8F4C
-#define GL_DOUBLE_MAT4x2_EXT              0x8F4D
-#define GL_DOUBLE_MAT4x3_EXT              0x8F4E
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params);
-#endif
-#endif /* GL_EXT_vertex_attrib_64bit */
-
-#ifndef GL_EXT_vertex_shader
-#define GL_EXT_vertex_shader 1
-#define GL_VERTEX_SHADER_EXT              0x8780
-#define GL_VERTEX_SHADER_BINDING_EXT      0x8781
-#define GL_OP_INDEX_EXT                   0x8782
-#define GL_OP_NEGATE_EXT                  0x8783
-#define GL_OP_DOT3_EXT                    0x8784
-#define GL_OP_DOT4_EXT                    0x8785
-#define GL_OP_MUL_EXT                     0x8786
-#define GL_OP_ADD_EXT                     0x8787
-#define GL_OP_MADD_EXT                    0x8788
-#define GL_OP_FRAC_EXT                    0x8789
-#define GL_OP_MAX_EXT                     0x878A
-#define GL_OP_MIN_EXT                     0x878B
-#define GL_OP_SET_GE_EXT                  0x878C
-#define GL_OP_SET_LT_EXT                  0x878D
-#define GL_OP_CLAMP_EXT                   0x878E
-#define GL_OP_FLOOR_EXT                   0x878F
-#define GL_OP_ROUND_EXT                   0x8790
-#define GL_OP_EXP_BASE_2_EXT              0x8791
-#define GL_OP_LOG_BASE_2_EXT              0x8792
-#define GL_OP_POWER_EXT                   0x8793
-#define GL_OP_RECIP_EXT                   0x8794
-#define GL_OP_RECIP_SQRT_EXT              0x8795
-#define GL_OP_SUB_EXT                     0x8796
-#define GL_OP_CROSS_PRODUCT_EXT           0x8797
-#define GL_OP_MULTIPLY_MATRIX_EXT         0x8798
-#define GL_OP_MOV_EXT                     0x8799
-#define GL_OUTPUT_VERTEX_EXT              0x879A
-#define GL_OUTPUT_COLOR0_EXT              0x879B
-#define GL_OUTPUT_COLOR1_EXT              0x879C
-#define GL_OUTPUT_TEXTURE_COORD0_EXT      0x879D
-#define GL_OUTPUT_TEXTURE_COORD1_EXT      0x879E
-#define GL_OUTPUT_TEXTURE_COORD2_EXT      0x879F
-#define GL_OUTPUT_TEXTURE_COORD3_EXT      0x87A0
-#define GL_OUTPUT_TEXTURE_COORD4_EXT      0x87A1
-#define GL_OUTPUT_TEXTURE_COORD5_EXT      0x87A2
-#define GL_OUTPUT_TEXTURE_COORD6_EXT      0x87A3
-#define GL_OUTPUT_TEXTURE_COORD7_EXT      0x87A4
-#define GL_OUTPUT_TEXTURE_COORD8_EXT      0x87A5
-#define GL_OUTPUT_TEXTURE_COORD9_EXT      0x87A6
-#define GL_OUTPUT_TEXTURE_COORD10_EXT     0x87A7
-#define GL_OUTPUT_TEXTURE_COORD11_EXT     0x87A8
-#define GL_OUTPUT_TEXTURE_COORD12_EXT     0x87A9
-#define GL_OUTPUT_TEXTURE_COORD13_EXT     0x87AA
-#define GL_OUTPUT_TEXTURE_COORD14_EXT     0x87AB
-#define GL_OUTPUT_TEXTURE_COORD15_EXT     0x87AC
-#define GL_OUTPUT_TEXTURE_COORD16_EXT     0x87AD
-#define GL_OUTPUT_TEXTURE_COORD17_EXT     0x87AE
-#define GL_OUTPUT_TEXTURE_COORD18_EXT     0x87AF
-#define GL_OUTPUT_TEXTURE_COORD19_EXT     0x87B0
-#define GL_OUTPUT_TEXTURE_COORD20_EXT     0x87B1
-#define GL_OUTPUT_TEXTURE_COORD21_EXT     0x87B2
-#define GL_OUTPUT_TEXTURE_COORD22_EXT     0x87B3
-#define GL_OUTPUT_TEXTURE_COORD23_EXT     0x87B4
-#define GL_OUTPUT_TEXTURE_COORD24_EXT     0x87B5
-#define GL_OUTPUT_TEXTURE_COORD25_EXT     0x87B6
-#define GL_OUTPUT_TEXTURE_COORD26_EXT     0x87B7
-#define GL_OUTPUT_TEXTURE_COORD27_EXT     0x87B8
-#define GL_OUTPUT_TEXTURE_COORD28_EXT     0x87B9
-#define GL_OUTPUT_TEXTURE_COORD29_EXT     0x87BA
-#define GL_OUTPUT_TEXTURE_COORD30_EXT     0x87BB
-#define GL_OUTPUT_TEXTURE_COORD31_EXT     0x87BC
-#define GL_OUTPUT_FOG_EXT                 0x87BD
-#define GL_SCALAR_EXT                     0x87BE
-#define GL_VECTOR_EXT                     0x87BF
-#define GL_MATRIX_EXT                     0x87C0
-#define GL_VARIANT_EXT                    0x87C1
-#define GL_INVARIANT_EXT                  0x87C2
-#define GL_LOCAL_CONSTANT_EXT             0x87C3
-#define GL_LOCAL_EXT                      0x87C4
-#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5
-#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6
-#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7
-#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8
-#define GL_MAX_VERTEX_SHADER_LOCALS_EXT   0x87C9
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD
-#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE
-#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF
-#define GL_VERTEX_SHADER_VARIANTS_EXT     0x87D0
-#define GL_VERTEX_SHADER_INVARIANTS_EXT   0x87D1
-#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2
-#define GL_VERTEX_SHADER_LOCALS_EXT       0x87D3
-#define GL_VERTEX_SHADER_OPTIMIZED_EXT    0x87D4
-#define GL_X_EXT                          0x87D5
-#define GL_Y_EXT                          0x87D6
-#define GL_Z_EXT                          0x87D7
-#define GL_W_EXT                          0x87D8
-#define GL_NEGATIVE_X_EXT                 0x87D9
-#define GL_NEGATIVE_Y_EXT                 0x87DA
-#define GL_NEGATIVE_Z_EXT                 0x87DB
-#define GL_NEGATIVE_W_EXT                 0x87DC
-#define GL_ZERO_EXT                       0x87DD
-#define GL_ONE_EXT                        0x87DE
-#define GL_NEGATIVE_ONE_EXT               0x87DF
-#define GL_NORMALIZED_RANGE_EXT           0x87E0
-#define GL_FULL_RANGE_EXT                 0x87E1
-#define GL_CURRENT_VERTEX_EXT             0x87E2
-#define GL_MVP_MATRIX_EXT                 0x87E3
-#define GL_VARIANT_VALUE_EXT              0x87E4
-#define GL_VARIANT_DATATYPE_EXT           0x87E5
-#define GL_VARIANT_ARRAY_STRIDE_EXT       0x87E6
-#define GL_VARIANT_ARRAY_TYPE_EXT         0x87E7
-#define GL_VARIANT_ARRAY_EXT              0x87E8
-#define GL_VARIANT_ARRAY_POINTER_EXT      0x87E9
-#define GL_INVARIANT_VALUE_EXT            0x87EA
-#define GL_INVARIANT_DATATYPE_EXT         0x87EB
-#define GL_LOCAL_CONSTANT_VALUE_EXT       0x87EC
-#define GL_LOCAL_CONSTANT_DATATYPE_EXT    0x87ED
-typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
-typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
-typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
-typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
-typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
-typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
-typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
-typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
-typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
-typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
-typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr);
-typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr);
-typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);
-typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);
-typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);
-typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);
-typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);
-typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);
-typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);
-typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);
-typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr);
-typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
-typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
-typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);
-typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
-typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data);
-typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);
-typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);
-typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginVertexShaderEXT (void);
-GLAPI void APIENTRY glEndVertexShaderEXT (void);
-GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id);
-GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range);
-GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id);
-GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1);
-GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
-GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
-GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
-GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num);
-GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num);
-GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
-GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const void *addr);
-GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const void *addr);
-GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr);
-GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr);
-GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr);
-GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr);
-GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr);
-GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr);
-GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr);
-GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr);
-GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const void *addr);
-GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id);
-GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id);
-GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value);
-GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value);
-GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value);
-GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value);
-GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value);
-GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap);
-GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
-GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data);
-GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
-GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, void **data);
-GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
-GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data);
-GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
-GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
-GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data);
-GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
-#endif
-#endif /* GL_EXT_vertex_shader */
-
-#ifndef GL_EXT_vertex_weighting
-#define GL_EXT_vertex_weighting 1
-#define GL_MODELVIEW0_STACK_DEPTH_EXT     0x0BA3
-#define GL_MODELVIEW1_STACK_DEPTH_EXT     0x8502
-#define GL_MODELVIEW0_MATRIX_EXT          0x0BA6
-#define GL_MODELVIEW1_MATRIX_EXT          0x8506
-#define GL_VERTEX_WEIGHTING_EXT           0x8509
-#define GL_MODELVIEW0_EXT                 0x1700
-#define GL_MODELVIEW1_EXT                 0x850A
-#define GL_CURRENT_VERTEX_WEIGHT_EXT      0x850B
-#define GL_VERTEX_WEIGHT_ARRAY_EXT        0x850C
-#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT   0x850D
-#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT   0x850E
-#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F
-#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);
-GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);
-GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);
-#endif
-#endif /* GL_EXT_vertex_weighting */
-
-#ifndef GL_EXT_x11_sync_object
-#define GL_EXT_x11_sync_object 1
-#define GL_SYNC_X11_FENCE_EXT             0x90E1
-typedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);
-#endif
-#endif /* GL_EXT_x11_sync_object */
-
-#ifndef GL_GREMEDY_frame_terminator
-#define GL_GREMEDY_frame_terminator 1
-typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFrameTerminatorGREMEDY (void);
-#endif
-#endif /* GL_GREMEDY_frame_terminator */
-
-#ifndef GL_GREMEDY_string_marker
-#define GL_GREMEDY_string_marker 1
-typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const void *string);
-#endif
-#endif /* GL_GREMEDY_string_marker */
-
-#ifndef GL_HP_convolution_border_modes
-#define GL_HP_convolution_border_modes 1
-#define GL_IGNORE_BORDER_HP               0x8150
-#define GL_CONSTANT_BORDER_HP             0x8151
-#define GL_REPLICATE_BORDER_HP            0x8153
-#define GL_CONVOLUTION_BORDER_COLOR_HP    0x8154
-#endif /* GL_HP_convolution_border_modes */
-
-#ifndef GL_HP_image_transform
-#define GL_HP_image_transform 1
-#define GL_IMAGE_SCALE_X_HP               0x8155
-#define GL_IMAGE_SCALE_Y_HP               0x8156
-#define GL_IMAGE_TRANSLATE_X_HP           0x8157
-#define GL_IMAGE_TRANSLATE_Y_HP           0x8158
-#define GL_IMAGE_ROTATE_ANGLE_HP          0x8159
-#define GL_IMAGE_ROTATE_ORIGIN_X_HP       0x815A
-#define GL_IMAGE_ROTATE_ORIGIN_Y_HP       0x815B
-#define GL_IMAGE_MAG_FILTER_HP            0x815C
-#define GL_IMAGE_MIN_FILTER_HP            0x815D
-#define GL_IMAGE_CUBIC_WEIGHT_HP          0x815E
-#define GL_CUBIC_HP                       0x815F
-#define GL_AVERAGE_HP                     0x8160
-#define GL_IMAGE_TRANSFORM_2D_HP          0x8161
-#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162
-#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param);
-GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_HP_image_transform */
-
-#ifndef GL_HP_occlusion_test
-#define GL_HP_occlusion_test 1
-#define GL_OCCLUSION_TEST_HP              0x8165
-#define GL_OCCLUSION_TEST_RESULT_HP       0x8166
-#endif /* GL_HP_occlusion_test */
-
-#ifndef GL_HP_texture_lighting
-#define GL_HP_texture_lighting 1
-#define GL_TEXTURE_LIGHTING_MODE_HP       0x8167
-#define GL_TEXTURE_POST_SPECULAR_HP       0x8168
-#define GL_TEXTURE_PRE_SPECULAR_HP        0x8169
-#endif /* GL_HP_texture_lighting */
-
-#ifndef GL_IBM_cull_vertex
-#define GL_IBM_cull_vertex 1
-#define GL_CULL_VERTEX_IBM                103050
-#endif /* GL_IBM_cull_vertex */
-
-#ifndef GL_IBM_multimode_draw_arrays
-#define GL_IBM_multimode_draw_arrays 1
-typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
-typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
-GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);
-#endif
-#endif /* GL_IBM_multimode_draw_arrays */
-
-#ifndef GL_IBM_rasterpos_clip
-#define GL_IBM_rasterpos_clip 1
-#define GL_RASTER_POSITION_UNCLIPPED_IBM  0x19262
-#endif /* GL_IBM_rasterpos_clip */
-
-#ifndef GL_IBM_static_data
-#define GL_IBM_static_data 1
-#define GL_ALL_STATIC_DATA_IBM            103060
-#define GL_STATIC_VERTEX_ARRAY_IBM        103061
-typedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFlushStaticDataIBM (GLenum target);
-#endif
-#endif /* GL_IBM_static_data */
-
-#ifndef GL_IBM_texture_mirrored_repeat
-#define GL_IBM_texture_mirrored_repeat 1
-#define GL_MIRRORED_REPEAT_IBM            0x8370
-#endif /* GL_IBM_texture_mirrored_repeat */
-
-#ifndef GL_IBM_vertex_array_lists
-#define GL_IBM_vertex_array_lists 1
-#define GL_VERTEX_ARRAY_LIST_IBM          103070
-#define GL_NORMAL_ARRAY_LIST_IBM          103071
-#define GL_COLOR_ARRAY_LIST_IBM           103072
-#define GL_INDEX_ARRAY_LIST_IBM           103073
-#define GL_TEXTURE_COORD_ARRAY_LIST_IBM   103074
-#define GL_EDGE_FLAG_ARRAY_LIST_IBM       103075
-#define GL_FOG_COORDINATE_ARRAY_LIST_IBM  103076
-#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077
-#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM   103080
-#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM   103081
-#define GL_COLOR_ARRAY_LIST_STRIDE_IBM    103082
-#define GL_INDEX_ARRAY_LIST_STRIDE_IBM    103083
-#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084
-#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085
-#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086
-#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087
-typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride);
-GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);
-#endif
-#endif /* GL_IBM_vertex_array_lists */
-
-#ifndef GL_INGR_blend_func_separate
-#define GL_INGR_blend_func_separate 1
-typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-#endif
-#endif /* GL_INGR_blend_func_separate */
-
-#ifndef GL_INGR_color_clamp
-#define GL_INGR_color_clamp 1
-#define GL_RED_MIN_CLAMP_INGR             0x8560
-#define GL_GREEN_MIN_CLAMP_INGR           0x8561
-#define GL_BLUE_MIN_CLAMP_INGR            0x8562
-#define GL_ALPHA_MIN_CLAMP_INGR           0x8563
-#define GL_RED_MAX_CLAMP_INGR             0x8564
-#define GL_GREEN_MAX_CLAMP_INGR           0x8565
-#define GL_BLUE_MAX_CLAMP_INGR            0x8566
-#define GL_ALPHA_MAX_CLAMP_INGR           0x8567
-#endif /* GL_INGR_color_clamp */
-
-#ifndef GL_INGR_interlace_read
-#define GL_INGR_interlace_read 1
-#define GL_INTERLACE_READ_INGR            0x8568
-#endif /* GL_INGR_interlace_read */
-
-#ifndef GL_INTEL_fragment_shader_ordering
-#define GL_INTEL_fragment_shader_ordering 1
-#endif /* GL_INTEL_fragment_shader_ordering */
-
-#ifndef GL_INTEL_map_texture
-#define GL_INTEL_map_texture 1
-#define GL_TEXTURE_MEMORY_LAYOUT_INTEL    0x83FF
-#define GL_LAYOUT_DEFAULT_INTEL           0
-#define GL_LAYOUT_LINEAR_INTEL            1
-#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2
-typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture);
-typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level);
-typedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture);
-GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level);
-GLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);
-#endif
-#endif /* GL_INTEL_map_texture */
-
-#ifndef GL_INTEL_parallel_arrays
-#define GL_INTEL_parallel_arrays 1
-#define GL_PARALLEL_ARRAYS_INTEL          0x83F4
-#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5
-#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6
-#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7
-#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8
-typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
-typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void **pointer);
-typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
-typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const void **pointer);
-GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const void **pointer);
-GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const void **pointer);
-GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void **pointer);
-#endif
-#endif /* GL_INTEL_parallel_arrays */
-
-#ifndef GL_INTEL_performance_query
-#define GL_INTEL_performance_query 1
-#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
-#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
-#define GL_PERFQUERY_WAIT_INTEL           0x83FB
-#define GL_PERFQUERY_FLUSH_INTEL          0x83FA
-#define GL_PERFQUERY_DONOT_FLUSH_INTEL    0x83F9
-#define GL_PERFQUERY_COUNTER_EVENT_INTEL  0x94F0
-#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
-#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
-#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
-#define GL_PERFQUERY_COUNTER_RAW_INTEL    0x94F4
-#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
-#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
-#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
-#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
-#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
-#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
-#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
-#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
-#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
-#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
-typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
-typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
-typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
-typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
-typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
-typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
-typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
-typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
-GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
-GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
-GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
-GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
-GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
-GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
-GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
-#endif
-#endif /* GL_INTEL_performance_query */
-
-#ifndef GL_MESAX_texture_stack
-#define GL_MESAX_texture_stack 1
-#define GL_TEXTURE_1D_STACK_MESAX         0x8759
-#define GL_TEXTURE_2D_STACK_MESAX         0x875A
-#define GL_PROXY_TEXTURE_1D_STACK_MESAX   0x875B
-#define GL_PROXY_TEXTURE_2D_STACK_MESAX   0x875C
-#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
-#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
-#endif /* GL_MESAX_texture_stack */
-
-#ifndef GL_MESA_pack_invert
-#define GL_MESA_pack_invert 1
-#define GL_PACK_INVERT_MESA               0x8758
-#endif /* GL_MESA_pack_invert */
-
-#ifndef GL_MESA_resize_buffers
-#define GL_MESA_resize_buffers 1
-typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glResizeBuffersMESA (void);
-#endif
-#endif /* GL_MESA_resize_buffers */
-
-#ifndef GL_MESA_window_pos
-#define GL_MESA_window_pos 1
-typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);
-typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y);
-GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y);
-GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y);
-GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v);
-GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y);
-GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v);
-GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v);
-GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v);
-GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v);
-GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v);
-GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v);
-GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v);
-#endif
-#endif /* GL_MESA_window_pos */
-
-#ifndef GL_MESA_ycbcr_texture
-#define GL_MESA_ycbcr_texture 1
-#define GL_UNSIGNED_SHORT_8_8_MESA        0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_MESA    0x85BB
-#define GL_YCBCR_MESA                     0x8757
-#endif /* GL_MESA_ycbcr_texture */
-
-#ifndef GL_NVX_conditional_render
-#define GL_NVX_conditional_render 1
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id);
-GLAPI void APIENTRY glEndConditionalRenderNVX (void);
-#endif
-#endif /* GL_NVX_conditional_render */
-
-#ifndef GL_NVX_gpu_memory_info
-#define GL_NVX_gpu_memory_info 1
-#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
-#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
-#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
-#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
-#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
-#endif /* GL_NVX_gpu_memory_info */
-
-#ifndef GL_NV_bindless_multi_draw_indirect
-#define GL_NV_bindless_multi_draw_indirect 1
-typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
-#endif
-#endif /* GL_NV_bindless_multi_draw_indirect */
-
-#ifndef GL_NV_bindless_texture
-#define GL_NV_bindless_texture 1
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);
-typedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);
-typedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-typedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);
-typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture);
-GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);
-GLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);
-GLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);
-GLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);
-GLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);
-GLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);
-GLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);
-GLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);
-GLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);
-GLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);
-GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);
-GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
-#endif
-#endif /* GL_NV_bindless_texture */
-
-#ifndef GL_NV_blend_equation_advanced
-#define GL_NV_blend_equation_advanced 1
-#define GL_BLEND_OVERLAP_NV               0x9281
-#define GL_BLEND_PREMULTIPLIED_SRC_NV     0x9280
-#define GL_BLUE_NV                        0x1905
-#define GL_COLORBURN_NV                   0x929A
-#define GL_COLORDODGE_NV                  0x9299
-#define GL_CONJOINT_NV                    0x9284
-#define GL_CONTRAST_NV                    0x92A1
-#define GL_DARKEN_NV                      0x9297
-#define GL_DIFFERENCE_NV                  0x929E
-#define GL_DISJOINT_NV                    0x9283
-#define GL_DST_ATOP_NV                    0x928F
-#define GL_DST_IN_NV                      0x928B
-#define GL_DST_NV                         0x9287
-#define GL_DST_OUT_NV                     0x928D
-#define GL_DST_OVER_NV                    0x9289
-#define GL_EXCLUSION_NV                   0x92A0
-#define GL_GREEN_NV                       0x1904
-#define GL_HARDLIGHT_NV                   0x929B
-#define GL_HARDMIX_NV                     0x92A9
-#define GL_HSL_COLOR_NV                   0x92AF
-#define GL_HSL_HUE_NV                     0x92AD
-#define GL_HSL_LUMINOSITY_NV              0x92B0
-#define GL_HSL_SATURATION_NV              0x92AE
-#define GL_INVERT_OVG_NV                  0x92B4
-#define GL_INVERT_RGB_NV                  0x92A3
-#define GL_LIGHTEN_NV                     0x9298
-#define GL_LINEARBURN_NV                  0x92A5
-#define GL_LINEARDODGE_NV                 0x92A4
-#define GL_LINEARLIGHT_NV                 0x92A7
-#define GL_MINUS_CLAMPED_NV               0x92B3
-#define GL_MINUS_NV                       0x929F
-#define GL_MULTIPLY_NV                    0x9294
-#define GL_OVERLAY_NV                     0x9296
-#define GL_PINLIGHT_NV                    0x92A8
-#define GL_PLUS_CLAMPED_ALPHA_NV          0x92B2
-#define GL_PLUS_CLAMPED_NV                0x92B1
-#define GL_PLUS_DARKER_NV                 0x9292
-#define GL_PLUS_NV                        0x9291
-#define GL_RED_NV                         0x1903
-#define GL_SCREEN_NV                      0x9295
-#define GL_SOFTLIGHT_NV                   0x929C
-#define GL_SRC_ATOP_NV                    0x928E
-#define GL_SRC_IN_NV                      0x928A
-#define GL_SRC_NV                         0x9286
-#define GL_SRC_OUT_NV                     0x928C
-#define GL_SRC_OVER_NV                    0x9288
-#define GL_UNCORRELATED_NV                0x9282
-#define GL_VIVIDLIGHT_NV                  0x92A6
-#define GL_XOR_NV                         0x1506
-typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value);
-GLAPI void APIENTRY glBlendBarrierNV (void);
-#endif
-#endif /* GL_NV_blend_equation_advanced */
-
-#ifndef GL_NV_blend_equation_advanced_coherent
-#define GL_NV_blend_equation_advanced_coherent 1
-#define GL_BLEND_ADVANCED_COHERENT_NV     0x9285
-#endif /* GL_NV_blend_equation_advanced_coherent */
-
-#ifndef GL_NV_blend_square
-#define GL_NV_blend_square 1
-#endif /* GL_NV_blend_square */
-
-#ifndef GL_NV_compute_program5
-#define GL_NV_compute_program5 1
-#define GL_COMPUTE_PROGRAM_NV             0x90FB
-#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC
-#endif /* GL_NV_compute_program5 */
-
-#ifndef GL_NV_conditional_render
-#define GL_NV_conditional_render 1
-#define GL_QUERY_WAIT_NV                  0x8E13
-#define GL_QUERY_NO_WAIT_NV               0x8E14
-#define GL_QUERY_BY_REGION_WAIT_NV        0x8E15
-#define GL_QUERY_BY_REGION_NO_WAIT_NV     0x8E16
-typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
-typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
-GLAPI void APIENTRY glEndConditionalRenderNV (void);
-#endif
-#endif /* GL_NV_conditional_render */
-
-#ifndef GL_NV_copy_depth_to_color
-#define GL_NV_copy_depth_to_color 1
-#define GL_DEPTH_STENCIL_TO_RGBA_NV       0x886E
-#define GL_DEPTH_STENCIL_TO_BGRA_NV       0x886F
-#endif /* GL_NV_copy_depth_to_color */
-
-#ifndef GL_NV_copy_image
-#define GL_NV_copy_image 1
-typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-#endif /* GL_NV_copy_image */
-
-#ifndef GL_NV_deep_texture3D
-#define GL_NV_deep_texture3D 1
-#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0
-#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV   0x90D1
-#endif /* GL_NV_deep_texture3D */
-
-#ifndef GL_NV_depth_buffer_float
-#define GL_NV_depth_buffer_float 1
-#define GL_DEPTH_COMPONENT32F_NV          0x8DAB
-#define GL_DEPTH32F_STENCIL8_NV           0x8DAC
-#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD
-#define GL_DEPTH_BUFFER_FLOAT_MODE_NV     0x8DAF
-typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
-typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
-typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar);
-GLAPI void APIENTRY glClearDepthdNV (GLdouble depth);
-GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax);
-#endif
-#endif /* GL_NV_depth_buffer_float */
-
-#ifndef GL_NV_depth_clamp
-#define GL_NV_depth_clamp 1
-#define GL_DEPTH_CLAMP_NV                 0x864F
-#endif /* GL_NV_depth_clamp */
-
-#ifndef GL_NV_draw_texture
-#define GL_NV_draw_texture 1
-typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);
-#endif
-#endif /* GL_NV_draw_texture */
-
-#ifndef GL_NV_evaluators
-#define GL_NV_evaluators 1
-#define GL_EVAL_2D_NV                     0x86C0
-#define GL_EVAL_TRIANGULAR_2D_NV          0x86C1
-#define GL_MAP_TESSELLATION_NV            0x86C2
-#define GL_MAP_ATTRIB_U_ORDER_NV          0x86C3
-#define GL_MAP_ATTRIB_V_ORDER_NV          0x86C4
-#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5
-#define GL_EVAL_VERTEX_ATTRIB0_NV         0x86C6
-#define GL_EVAL_VERTEX_ATTRIB1_NV         0x86C7
-#define GL_EVAL_VERTEX_ATTRIB2_NV         0x86C8
-#define GL_EVAL_VERTEX_ATTRIB3_NV         0x86C9
-#define GL_EVAL_VERTEX_ATTRIB4_NV         0x86CA
-#define GL_EVAL_VERTEX_ATTRIB5_NV         0x86CB
-#define GL_EVAL_VERTEX_ATTRIB6_NV         0x86CC
-#define GL_EVAL_VERTEX_ATTRIB7_NV         0x86CD
-#define GL_EVAL_VERTEX_ATTRIB8_NV         0x86CE
-#define GL_EVAL_VERTEX_ATTRIB9_NV         0x86CF
-#define GL_EVAL_VERTEX_ATTRIB10_NV        0x86D0
-#define GL_EVAL_VERTEX_ATTRIB11_NV        0x86D1
-#define GL_EVAL_VERTEX_ATTRIB12_NV        0x86D2
-#define GL_EVAL_VERTEX_ATTRIB13_NV        0x86D3
-#define GL_EVAL_VERTEX_ATTRIB14_NV        0x86D4
-#define GL_EVAL_VERTEX_ATTRIB15_NV        0x86D5
-#define GL_MAX_MAP_TESSELLATION_NV        0x86D6
-#define GL_MAX_RATIONAL_EVAL_ORDER_NV     0x86D7
-typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
-typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
-typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);
-GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);
-GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode);
-#endif
-#endif /* GL_NV_evaluators */
-
-#ifndef GL_NV_explicit_multisample
-#define GL_NV_explicit_multisample 1
-#define GL_SAMPLE_POSITION_NV             0x8E50
-#define GL_SAMPLE_MASK_NV                 0x8E51
-#define GL_SAMPLE_MASK_VALUE_NV           0x8E52
-#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53
-#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54
-#define GL_TEXTURE_RENDERBUFFER_NV        0x8E55
-#define GL_SAMPLER_RENDERBUFFER_NV        0x8E56
-#define GL_INT_SAMPLER_RENDERBUFFER_NV    0x8E57
-#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58
-#define GL_MAX_SAMPLE_MASK_WORDS_NV       0x8E59
-typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val);
-typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
-typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val);
-GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask);
-GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer);
-#endif
-#endif /* GL_NV_explicit_multisample */
-
-#ifndef GL_NV_fence
-#define GL_NV_fence 1
-#define GL_ALL_COMPLETED_NV               0x84F2
-#define GL_FENCE_STATUS_NV                0x84F3
-#define GL_FENCE_CONDITION_NV             0x84F4
-typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
-typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
-typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
-typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
-typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
-typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
-GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
-GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence);
-GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence);
-GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
-GLAPI void APIENTRY glFinishFenceNV (GLuint fence);
-GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
-#endif
-#endif /* GL_NV_fence */
-
-#ifndef GL_NV_float_buffer
-#define GL_NV_float_buffer 1
-#define GL_FLOAT_R_NV                     0x8880
-#define GL_FLOAT_RG_NV                    0x8881
-#define GL_FLOAT_RGB_NV                   0x8882
-#define GL_FLOAT_RGBA_NV                  0x8883
-#define GL_FLOAT_R16_NV                   0x8884
-#define GL_FLOAT_R32_NV                   0x8885
-#define GL_FLOAT_RG16_NV                  0x8886
-#define GL_FLOAT_RG32_NV                  0x8887
-#define GL_FLOAT_RGB16_NV                 0x8888
-#define GL_FLOAT_RGB32_NV                 0x8889
-#define GL_FLOAT_RGBA16_NV                0x888A
-#define GL_FLOAT_RGBA32_NV                0x888B
-#define GL_TEXTURE_FLOAT_COMPONENTS_NV    0x888C
-#define GL_FLOAT_CLEAR_COLOR_VALUE_NV     0x888D
-#define GL_FLOAT_RGBA_MODE_NV             0x888E
-#endif /* GL_NV_float_buffer */
-
-#ifndef GL_NV_fog_distance
-#define GL_NV_fog_distance 1
-#define GL_FOG_DISTANCE_MODE_NV           0x855A
-#define GL_EYE_RADIAL_NV                  0x855B
-#define GL_EYE_PLANE_ABSOLUTE_NV          0x855C
-#endif /* GL_NV_fog_distance */
-
-#ifndef GL_NV_fragment_program
-#define GL_NV_fragment_program 1
-#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868
-#define GL_FRAGMENT_PROGRAM_NV            0x8870
-#define GL_MAX_TEXTURE_COORDS_NV          0x8871
-#define GL_MAX_TEXTURE_IMAGE_UNITS_NV     0x8872
-#define GL_FRAGMENT_PROGRAM_BINDING_NV    0x8873
-#define GL_PROGRAM_ERROR_STRING_NV        0x8874
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
-typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
-GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
-GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
-GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
-#endif
-#endif /* GL_NV_fragment_program */
-
-#ifndef GL_NV_fragment_program2
-#define GL_NV_fragment_program2 1
-#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4
-#define GL_MAX_PROGRAM_CALL_DEPTH_NV      0x88F5
-#define GL_MAX_PROGRAM_IF_DEPTH_NV        0x88F6
-#define GL_MAX_PROGRAM_LOOP_DEPTH_NV      0x88F7
-#define GL_MAX_PROGRAM_LOOP_COUNT_NV      0x88F8
-#endif /* GL_NV_fragment_program2 */
-
-#ifndef GL_NV_fragment_program4
-#define GL_NV_fragment_program4 1
-#endif /* GL_NV_fragment_program4 */
-
-#ifndef GL_NV_fragment_program_option
-#define GL_NV_fragment_program_option 1
-#endif /* GL_NV_fragment_program_option */
-
-#ifndef GL_NV_framebuffer_multisample_coverage
-#define GL_NV_framebuffer_multisample_coverage 1
-#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB
-#define GL_RENDERBUFFER_COLOR_SAMPLES_NV  0x8E10
-#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11
-#define GL_MULTISAMPLE_COVERAGE_MODES_NV  0x8E12
-typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-#endif /* GL_NV_framebuffer_multisample_coverage */
-
-#ifndef GL_NV_geometry_program4
-#define GL_NV_geometry_program4 1
-#define GL_GEOMETRY_PROGRAM_NV            0x8C26
-#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27
-#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28
-typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit);
-GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);
-GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
-#endif
-#endif /* GL_NV_geometry_program4 */
-
-#ifndef GL_NV_geometry_shader4
-#define GL_NV_geometry_shader4 1
-#endif /* GL_NV_geometry_shader4 */
-
-#ifndef GL_NV_gpu_program4
-#define GL_NV_gpu_program4 1
-#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV    0x8904
-#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV    0x8905
-#define GL_PROGRAM_ATTRIB_COMPONENTS_NV   0x8906
-#define GL_PROGRAM_RESULT_COMPONENTS_NV   0x8907
-#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908
-#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909
-#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5
-#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);
-typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
-GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
-GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params);
-GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params);
-GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params);
-#endif
-#endif /* GL_NV_gpu_program4 */
-
-#ifndef GL_NV_gpu_program5
-#define GL_NV_gpu_program5 1
-#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
-#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
-#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
-#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F
-#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44
-#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV  0x8F45
-typedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params);
-GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param);
-#endif
-#endif /* GL_NV_gpu_program5 */
-
-#ifndef GL_NV_gpu_program5_mem_extended
-#define GL_NV_gpu_program5_mem_extended 1
-#endif /* GL_NV_gpu_program5_mem_extended */
-
-#ifndef GL_NV_gpu_shader5
-#define GL_NV_gpu_shader5 1
-#endif /* GL_NV_gpu_shader5 */
-
-#ifndef GL_NV_half_float
-#define GL_NV_half_float 1
-typedef unsigned short GLhalfNV;
-#define GL_HALF_FLOAT_NV                  0x140B
-typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
-typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);
-typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
-typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
-typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);
-typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);
-typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);
-typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);
-typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);
-typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
-GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z);
-GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
-GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
-GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s);
-GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t);
-GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r);
-GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s);
-GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t);
-GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
-GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
-GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
-GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
-GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
-GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
-GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
-GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
-GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
-GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
-GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
-GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
-GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
-GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
-#endif
-#endif /* GL_NV_half_float */
-
-#ifndef GL_NV_light_max_exponent
-#define GL_NV_light_max_exponent 1
-#define GL_MAX_SHININESS_NV               0x8504
-#define GL_MAX_SPOT_EXPONENT_NV           0x8505
-#endif /* GL_NV_light_max_exponent */
-
-#ifndef GL_NV_multisample_coverage
-#define GL_NV_multisample_coverage 1
-#define GL_COLOR_SAMPLES_NV               0x8E20
-#endif /* GL_NV_multisample_coverage */
-
-#ifndef GL_NV_multisample_filter_hint
-#define GL_NV_multisample_filter_hint 1
-#define GL_MULTISAMPLE_FILTER_HINT_NV     0x8534
-#endif /* GL_NV_multisample_filter_hint */
-
-#ifndef GL_NV_occlusion_query
-#define GL_NV_occlusion_query 1
-#define GL_PIXEL_COUNTER_BITS_NV          0x8864
-#define GL_CURRENT_OCCLUSION_QUERY_ID_NV  0x8865
-#define GL_PIXEL_COUNT_NV                 0x8866
-#define GL_PIXEL_COUNT_AVAILABLE_NV       0x8867
-typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
-typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);
-typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);
-GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);
-GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id);
-GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id);
-GLAPI void APIENTRY glEndOcclusionQueryNV (void);
-GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);
-#endif
-#endif /* GL_NV_occlusion_query */
-
-#ifndef GL_NV_packed_depth_stencil
-#define GL_NV_packed_depth_stencil 1
-#define GL_DEPTH_STENCIL_NV               0x84F9
-#define GL_UNSIGNED_INT_24_8_NV           0x84FA
-#endif /* GL_NV_packed_depth_stencil */
-
-#ifndef GL_NV_parameter_buffer_object
-#define GL_NV_parameter_buffer_object 1
-#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
-#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
-#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
-#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3
-#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4
-typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
-typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
-typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);
-GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);
-GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);
-#endif
-#endif /* GL_NV_parameter_buffer_object */
-
-#ifndef GL_NV_parameter_buffer_object2
-#define GL_NV_parameter_buffer_object2 1
-#endif /* GL_NV_parameter_buffer_object2 */
-
-#ifndef GL_NV_path_rendering
-#define GL_NV_path_rendering 1
-#define GL_PATH_FORMAT_SVG_NV             0x9070
-#define GL_PATH_FORMAT_PS_NV              0x9071
-#define GL_STANDARD_FONT_NAME_NV          0x9072
-#define GL_SYSTEM_FONT_NAME_NV            0x9073
-#define GL_FILE_NAME_NV                   0x9074
-#define GL_PATH_STROKE_WIDTH_NV           0x9075
-#define GL_PATH_END_CAPS_NV               0x9076
-#define GL_PATH_INITIAL_END_CAP_NV        0x9077
-#define GL_PATH_TERMINAL_END_CAP_NV       0x9078
-#define GL_PATH_JOIN_STYLE_NV             0x9079
-#define GL_PATH_MITER_LIMIT_NV            0x907A
-#define GL_PATH_DASH_CAPS_NV              0x907B
-#define GL_PATH_INITIAL_DASH_CAP_NV       0x907C
-#define GL_PATH_TERMINAL_DASH_CAP_NV      0x907D
-#define GL_PATH_DASH_OFFSET_NV            0x907E
-#define GL_PATH_CLIENT_LENGTH_NV          0x907F
-#define GL_PATH_FILL_MODE_NV              0x9080
-#define GL_PATH_FILL_MASK_NV              0x9081
-#define GL_PATH_FILL_COVER_MODE_NV        0x9082
-#define GL_PATH_STROKE_COVER_MODE_NV      0x9083
-#define GL_PATH_STROKE_MASK_NV            0x9084
-#define GL_COUNT_UP_NV                    0x9088
-#define GL_COUNT_DOWN_NV                  0x9089
-#define GL_PATH_OBJECT_BOUNDING_BOX_NV    0x908A
-#define GL_CONVEX_HULL_NV                 0x908B
-#define GL_BOUNDING_BOX_NV                0x908D
-#define GL_TRANSLATE_X_NV                 0x908E
-#define GL_TRANSLATE_Y_NV                 0x908F
-#define GL_TRANSLATE_2D_NV                0x9090
-#define GL_TRANSLATE_3D_NV                0x9091
-#define GL_AFFINE_2D_NV                   0x9092
-#define GL_AFFINE_3D_NV                   0x9094
-#define GL_TRANSPOSE_AFFINE_2D_NV         0x9096
-#define GL_TRANSPOSE_AFFINE_3D_NV         0x9098
-#define GL_UTF8_NV                        0x909A
-#define GL_UTF16_NV                       0x909B
-#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
-#define GL_PATH_COMMAND_COUNT_NV          0x909D
-#define GL_PATH_COORD_COUNT_NV            0x909E
-#define GL_PATH_DASH_ARRAY_COUNT_NV       0x909F
-#define GL_PATH_COMPUTED_LENGTH_NV        0x90A0
-#define GL_PATH_FILL_BOUNDING_BOX_NV      0x90A1
-#define GL_PATH_STROKE_BOUNDING_BOX_NV    0x90A2
-#define GL_SQUARE_NV                      0x90A3
-#define GL_ROUND_NV                       0x90A4
-#define GL_TRIANGULAR_NV                  0x90A5
-#define GL_BEVEL_NV                       0x90A6
-#define GL_MITER_REVERT_NV                0x90A7
-#define GL_MITER_TRUNCATE_NV              0x90A8
-#define GL_SKIP_MISSING_GLYPH_NV          0x90A9
-#define GL_USE_MISSING_GLYPH_NV           0x90AA
-#define GL_PATH_ERROR_POSITION_NV         0x90AB
-#define GL_PATH_FOG_GEN_MODE_NV           0x90AC
-#define GL_ACCUM_ADJACENT_PAIRS_NV        0x90AD
-#define GL_ADJACENT_PAIRS_NV              0x90AE
-#define GL_FIRST_TO_REST_NV               0x90AF
-#define GL_PATH_GEN_MODE_NV               0x90B0
-#define GL_PATH_GEN_COEFF_NV              0x90B1
-#define GL_PATH_GEN_COLOR_FORMAT_NV       0x90B2
-#define GL_PATH_GEN_COMPONENTS_NV         0x90B3
-#define GL_PATH_STENCIL_FUNC_NV           0x90B7
-#define GL_PATH_STENCIL_REF_NV            0x90B8
-#define GL_PATH_STENCIL_VALUE_MASK_NV     0x90B9
-#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
-#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
-#define GL_PATH_COVER_DEPTH_FUNC_NV       0x90BF
-#define GL_PATH_DASH_OFFSET_RESET_NV      0x90B4
-#define GL_MOVE_TO_RESETS_NV              0x90B5
-#define GL_MOVE_TO_CONTINUES_NV           0x90B6
-#define GL_CLOSE_PATH_NV                  0x00
-#define GL_MOVE_TO_NV                     0x02
-#define GL_RELATIVE_MOVE_TO_NV            0x03
-#define GL_LINE_TO_NV                     0x04
-#define GL_RELATIVE_LINE_TO_NV            0x05
-#define GL_HORIZONTAL_LINE_TO_NV          0x06
-#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
-#define GL_VERTICAL_LINE_TO_NV            0x08
-#define GL_RELATIVE_VERTICAL_LINE_TO_NV   0x09
-#define GL_QUADRATIC_CURVE_TO_NV          0x0A
-#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
-#define GL_CUBIC_CURVE_TO_NV              0x0C
-#define GL_RELATIVE_CUBIC_CURVE_TO_NV     0x0D
-#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV   0x0E
-#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
-#define GL_SMOOTH_CUBIC_CURVE_TO_NV       0x10
-#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
-#define GL_SMALL_CCW_ARC_TO_NV            0x12
-#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV   0x13
-#define GL_SMALL_CW_ARC_TO_NV             0x14
-#define GL_RELATIVE_SMALL_CW_ARC_TO_NV    0x15
-#define GL_LARGE_CCW_ARC_TO_NV            0x16
-#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV   0x17
-#define GL_LARGE_CW_ARC_TO_NV             0x18
-#define GL_RELATIVE_LARGE_CW_ARC_TO_NV    0x19
-#define GL_RESTART_PATH_NV                0xF0
-#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV    0xF2
-#define GL_DUP_LAST_CUBIC_CURVE_TO_NV     0xF4
-#define GL_RECT_NV                        0xF6
-#define GL_CIRCULAR_CCW_ARC_TO_NV         0xF8
-#define GL_CIRCULAR_CW_ARC_TO_NV          0xFA
-#define GL_CIRCULAR_TANGENT_ARC_TO_NV     0xFC
-#define GL_ARC_TO_NV                      0xFE
-#define GL_RELATIVE_ARC_TO_NV             0xFF
-#define GL_BOLD_BIT_NV                    0x01
-#define GL_ITALIC_BIT_NV                  0x02
-#define GL_GLYPH_WIDTH_BIT_NV             0x01
-#define GL_GLYPH_HEIGHT_BIT_NV            0x02
-#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
-#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
-#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
-#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
-#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
-#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
-#define GL_GLYPH_HAS_KERNING_BIT_NV       0x100
-#define GL_FONT_X_MIN_BOUNDS_BIT_NV       0x00010000
-#define GL_FONT_Y_MIN_BOUNDS_BIT_NV       0x00020000
-#define GL_FONT_X_MAX_BOUNDS_BIT_NV       0x00040000
-#define GL_FONT_Y_MAX_BOUNDS_BIT_NV       0x00080000
-#define GL_FONT_UNITS_PER_EM_BIT_NV       0x00100000
-#define GL_FONT_ASCENDER_BIT_NV           0x00200000
-#define GL_FONT_DESCENDER_BIT_NV          0x00400000
-#define GL_FONT_HEIGHT_BIT_NV             0x00800000
-#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV  0x01000000
-#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
-#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
-#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
-#define GL_FONT_HAS_KERNING_BIT_NV        0x10000000
-#define GL_PRIMARY_COLOR_NV               0x852C
-#define GL_SECONDARY_COLOR_NV             0x852D
-typedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);
-typedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);
-typedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path);
-typedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
-typedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);
-typedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-typedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
-typedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);
-typedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
-typedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);
-typedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);
-typedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
-typedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);
-typedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);
-typedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);
-typedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);
-typedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
-typedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
-typedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode);
-typedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);
-typedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);
-typedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-typedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);
-typedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);
-typedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);
-typedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);
-typedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
-typedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
-typedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
-typedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value);
-typedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value);
-typedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value);
-typedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);
-typedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);
-typedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);
-typedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glGenPathsNV (GLsizei range);
-GLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range);
-GLAPI GLboolean APIENTRY glIsPathNV (GLuint path);
-GLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);
-GLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);
-GLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);
-GLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);
-GLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);
-GLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);
-GLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);
-GLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);
-GLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);
-GLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);
-GLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);
-GLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);
-GLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);
-GLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);
-GLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);
-GLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func);
-GLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);
-GLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);
-GLAPI void APIENTRY glPathFogGenNV (GLenum genMode);
-GLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);
-GLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);
-GLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);
-GLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);
-GLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);
-GLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);
-GLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);
-GLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);
-GLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);
-GLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);
-GLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value);
-GLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value);
-GLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value);
-GLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);
-GLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);
-GLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);
-GLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);
-#endif
-#endif /* GL_NV_path_rendering */
-
-#ifndef GL_NV_pixel_data_range
-#define GL_NV_pixel_data_range 1
-#define GL_WRITE_PIXEL_DATA_RANGE_NV      0x8878
-#define GL_READ_PIXEL_DATA_RANGE_NV       0x8879
-#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A
-#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B
-#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C
-#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D
-typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const void *pointer);
-typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const void *pointer);
-GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target);
-#endif
-#endif /* GL_NV_pixel_data_range */
-
-#ifndef GL_NV_point_sprite
-#define GL_NV_point_sprite 1
-#define GL_POINT_SPRITE_NV                0x8861
-#define GL_COORD_REPLACE_NV               0x8862
-#define GL_POINT_SPRITE_R_MODE_NV         0x8863
-typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param);
-GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params);
-#endif
-#endif /* GL_NV_point_sprite */
-
-#ifndef GL_NV_present_video
-#define GL_NV_present_video 1
-#define GL_FRAME_NV                       0x8E26
-#define GL_FIELDS_NV                      0x8E27
-#define GL_CURRENT_TIME_NV                0x8E28
-#define GL_NUM_FILL_STREAMS_NV            0x8E29
-#define GL_PRESENT_TIME_NV                0x8E2A
-#define GL_PRESENT_DURATION_NV            0x8E2B
-typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
-typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
-typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
-GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
-GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);
-GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);
-GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);
-#endif
-#endif /* GL_NV_present_video */
-
-#ifndef GL_NV_primitive_restart
-#define GL_NV_primitive_restart 1
-#define GL_PRIMITIVE_RESTART_NV           0x8558
-#define GL_PRIMITIVE_RESTART_INDEX_NV     0x8559
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
-typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPrimitiveRestartNV (void);
-GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index);
-#endif
-#endif /* GL_NV_primitive_restart */
-
-#ifndef GL_NV_register_combiners
-#define GL_NV_register_combiners 1
-#define GL_REGISTER_COMBINERS_NV          0x8522
-#define GL_VARIABLE_A_NV                  0x8523
-#define GL_VARIABLE_B_NV                  0x8524
-#define GL_VARIABLE_C_NV                  0x8525
-#define GL_VARIABLE_D_NV                  0x8526
-#define GL_VARIABLE_E_NV                  0x8527
-#define GL_VARIABLE_F_NV                  0x8528
-#define GL_VARIABLE_G_NV                  0x8529
-#define GL_CONSTANT_COLOR0_NV             0x852A
-#define GL_CONSTANT_COLOR1_NV             0x852B
-#define GL_SPARE0_NV                      0x852E
-#define GL_SPARE1_NV                      0x852F
-#define GL_DISCARD_NV                     0x8530
-#define GL_E_TIMES_F_NV                   0x8531
-#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
-#define GL_UNSIGNED_IDENTITY_NV           0x8536
-#define GL_UNSIGNED_INVERT_NV             0x8537
-#define GL_EXPAND_NORMAL_NV               0x8538
-#define GL_EXPAND_NEGATE_NV               0x8539
-#define GL_HALF_BIAS_NORMAL_NV            0x853A
-#define GL_HALF_BIAS_NEGATE_NV            0x853B
-#define GL_SIGNED_IDENTITY_NV             0x853C
-#define GL_SIGNED_NEGATE_NV               0x853D
-#define GL_SCALE_BY_TWO_NV                0x853E
-#define GL_SCALE_BY_FOUR_NV               0x853F
-#define GL_SCALE_BY_ONE_HALF_NV           0x8540
-#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV   0x8541
-#define GL_COMBINER_INPUT_NV              0x8542
-#define GL_COMBINER_MAPPING_NV            0x8543
-#define GL_COMBINER_COMPONENT_USAGE_NV    0x8544
-#define GL_COMBINER_AB_DOT_PRODUCT_NV     0x8545
-#define GL_COMBINER_CD_DOT_PRODUCT_NV     0x8546
-#define GL_COMBINER_MUX_SUM_NV            0x8547
-#define GL_COMBINER_SCALE_NV              0x8548
-#define GL_COMBINER_BIAS_NV               0x8549
-#define GL_COMBINER_AB_OUTPUT_NV          0x854A
-#define GL_COMBINER_CD_OUTPUT_NV          0x854B
-#define GL_COMBINER_SUM_OUTPUT_NV         0x854C
-#define GL_MAX_GENERAL_COMBINERS_NV       0x854D
-#define GL_NUM_GENERAL_COMBINERS_NV       0x854E
-#define GL_COLOR_SUM_CLAMP_NV             0x854F
-#define GL_COMBINER0_NV                   0x8550
-#define GL_COMBINER1_NV                   0x8551
-#define GL_COMBINER2_NV                   0x8552
-#define GL_COMBINER3_NV                   0x8553
-#define GL_COMBINER4_NV                   0x8554
-#define GL_COMBINER5_NV                   0x8555
-#define GL_COMBINER6_NV                   0x8556
-#define GL_COMBINER7_NV                   0x8557
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
-typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param);
-GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
-GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
-GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);
-#endif
-#endif /* GL_NV_register_combiners */
-
-#ifndef GL_NV_register_combiners2
-#define GL_NV_register_combiners2 1
-#define GL_PER_STAGE_CONSTANTS_NV         0x8535
-typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_NV_register_combiners2 */
-
-#ifndef GL_NV_shader_atomic_counters
-#define GL_NV_shader_atomic_counters 1
-#endif /* GL_NV_shader_atomic_counters */
-
-#ifndef GL_NV_shader_atomic_float
-#define GL_NV_shader_atomic_float 1
-#endif /* GL_NV_shader_atomic_float */
-
-#ifndef GL_NV_shader_buffer_load
-#define GL_NV_shader_buffer_load 1
-#define GL_BUFFER_GPU_ADDRESS_NV          0x8F1D
-#define GL_GPU_ADDRESS_NV                 0x8F34
-#define GL_MAX_SHADER_BUFFER_ADDRESS_NV   0x8F35
-typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
-typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
-typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
-typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
-typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
-typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result);
-typedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);
-typedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);
-typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
-GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
-GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
-GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
-GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
-GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
-GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
-GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
-GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
-GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
-GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
-#endif
-#endif /* GL_NV_shader_buffer_load */
-
-#ifndef GL_NV_shader_buffer_store
-#define GL_NV_shader_buffer_store 1
-#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010
-#endif /* GL_NV_shader_buffer_store */
-
-#ifndef GL_NV_shader_storage_buffer_object
-#define GL_NV_shader_storage_buffer_object 1
-#endif /* GL_NV_shader_storage_buffer_object */
-
-#ifndef GL_NV_shader_thread_group
-#define GL_NV_shader_thread_group 1
-#define GL_WARP_SIZE_NV                   0x9339
-#define GL_WARPS_PER_SM_NV                0x933A
-#define GL_SM_COUNT_NV                    0x933B
-#endif /* GL_NV_shader_thread_group */
-
-#ifndef GL_NV_shader_thread_shuffle
-#define GL_NV_shader_thread_shuffle 1
-#endif /* GL_NV_shader_thread_shuffle */
-
-#ifndef GL_NV_tessellation_program5
-#define GL_NV_tessellation_program5 1
-#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV   0x86D8
-#define GL_TESS_CONTROL_PROGRAM_NV        0x891E
-#define GL_TESS_EVALUATION_PROGRAM_NV     0x891F
-#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
-#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
-#endif /* GL_NV_tessellation_program5 */
-
-#ifndef GL_NV_texgen_emboss
-#define GL_NV_texgen_emboss 1
-#define GL_EMBOSS_LIGHT_NV                0x855D
-#define GL_EMBOSS_CONSTANT_NV             0x855E
-#define GL_EMBOSS_MAP_NV                  0x855F
-#endif /* GL_NV_texgen_emboss */
-
-#ifndef GL_NV_texgen_reflection
-#define GL_NV_texgen_reflection 1
-#define GL_NORMAL_MAP_NV                  0x8511
-#define GL_REFLECTION_MAP_NV              0x8512
-#endif /* GL_NV_texgen_reflection */
-
-#ifndef GL_NV_texture_barrier
-#define GL_NV_texture_barrier 1
-typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureBarrierNV (void);
-#endif
-#endif /* GL_NV_texture_barrier */
-
-#ifndef GL_NV_texture_compression_vtc
-#define GL_NV_texture_compression_vtc 1
-#endif /* GL_NV_texture_compression_vtc */
-
-#ifndef GL_NV_texture_env_combine4
-#define GL_NV_texture_env_combine4 1
-#define GL_COMBINE4_NV                    0x8503
-#define GL_SOURCE3_RGB_NV                 0x8583
-#define GL_SOURCE3_ALPHA_NV               0x858B
-#define GL_OPERAND3_RGB_NV                0x8593
-#define GL_OPERAND3_ALPHA_NV              0x859B
-#endif /* GL_NV_texture_env_combine4 */
-
-#ifndef GL_NV_texture_expand_normal
-#define GL_NV_texture_expand_normal 1
-#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F
-#endif /* GL_NV_texture_expand_normal */
-
-#ifndef GL_NV_texture_multisample
-#define GL_NV_texture_multisample 1
-#define GL_TEXTURE_COVERAGE_SAMPLES_NV    0x9045
-#define GL_TEXTURE_COLOR_SAMPLES_NV       0x9046
-typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);
-GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);
-#endif
-#endif /* GL_NV_texture_multisample */
-
-#ifndef GL_NV_texture_rectangle
-#define GL_NV_texture_rectangle 1
-#define GL_TEXTURE_RECTANGLE_NV           0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE_NV   0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE_NV     0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV  0x84F8
-#endif /* GL_NV_texture_rectangle */
-
-#ifndef GL_NV_texture_shader
-#define GL_NV_texture_shader 1
-#define GL_OFFSET_TEXTURE_RECTANGLE_NV    0x864C
-#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D
-#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E
-#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9
-#define GL_UNSIGNED_INT_S8_S8_8_8_NV      0x86DA
-#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  0x86DB
-#define GL_DSDT_MAG_INTENSITY_NV          0x86DC
-#define GL_SHADER_CONSISTENT_NV           0x86DD
-#define GL_TEXTURE_SHADER_NV              0x86DE
-#define GL_SHADER_OPERATION_NV            0x86DF
-#define GL_CULL_MODES_NV                  0x86E0
-#define GL_OFFSET_TEXTURE_MATRIX_NV       0x86E1
-#define GL_OFFSET_TEXTURE_SCALE_NV        0x86E2
-#define GL_OFFSET_TEXTURE_BIAS_NV         0x86E3
-#define GL_OFFSET_TEXTURE_2D_MATRIX_NV    0x86E1
-#define GL_OFFSET_TEXTURE_2D_SCALE_NV     0x86E2
-#define GL_OFFSET_TEXTURE_2D_BIAS_NV      0x86E3
-#define GL_PREVIOUS_TEXTURE_INPUT_NV      0x86E4
-#define GL_CONST_EYE_NV                   0x86E5
-#define GL_PASS_THROUGH_NV                0x86E6
-#define GL_CULL_FRAGMENT_NV               0x86E7
-#define GL_OFFSET_TEXTURE_2D_NV           0x86E8
-#define GL_DEPENDENT_AR_TEXTURE_2D_NV     0x86E9
-#define GL_DEPENDENT_GB_TEXTURE_2D_NV     0x86EA
-#define GL_DOT_PRODUCT_NV                 0x86EC
-#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV   0x86ED
-#define GL_DOT_PRODUCT_TEXTURE_2D_NV      0x86EE
-#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0
-#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1
-#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2
-#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3
-#define GL_HILO_NV                        0x86F4
-#define GL_DSDT_NV                        0x86F5
-#define GL_DSDT_MAG_NV                    0x86F6
-#define GL_DSDT_MAG_VIB_NV                0x86F7
-#define GL_HILO16_NV                      0x86F8
-#define GL_SIGNED_HILO_NV                 0x86F9
-#define GL_SIGNED_HILO16_NV               0x86FA
-#define GL_SIGNED_RGBA_NV                 0x86FB
-#define GL_SIGNED_RGBA8_NV                0x86FC
-#define GL_SIGNED_RGB_NV                  0x86FE
-#define GL_SIGNED_RGB8_NV                 0x86FF
-#define GL_SIGNED_LUMINANCE_NV            0x8701
-#define GL_SIGNED_LUMINANCE8_NV           0x8702
-#define GL_SIGNED_LUMINANCE_ALPHA_NV      0x8703
-#define GL_SIGNED_LUMINANCE8_ALPHA8_NV    0x8704
-#define GL_SIGNED_ALPHA_NV                0x8705
-#define GL_SIGNED_ALPHA8_NV               0x8706
-#define GL_SIGNED_INTENSITY_NV            0x8707
-#define GL_SIGNED_INTENSITY8_NV           0x8708
-#define GL_DSDT8_NV                       0x8709
-#define GL_DSDT8_MAG8_NV                  0x870A
-#define GL_DSDT8_MAG8_INTENSITY8_NV       0x870B
-#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV   0x870C
-#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D
-#define GL_HI_SCALE_NV                    0x870E
-#define GL_LO_SCALE_NV                    0x870F
-#define GL_DS_SCALE_NV                    0x8710
-#define GL_DT_SCALE_NV                    0x8711
-#define GL_MAGNITUDE_SCALE_NV             0x8712
-#define GL_VIBRANCE_SCALE_NV              0x8713
-#define GL_HI_BIAS_NV                     0x8714
-#define GL_LO_BIAS_NV                     0x8715
-#define GL_DS_BIAS_NV                     0x8716
-#define GL_DT_BIAS_NV                     0x8717
-#define GL_MAGNITUDE_BIAS_NV              0x8718
-#define GL_VIBRANCE_BIAS_NV               0x8719
-#define GL_TEXTURE_BORDER_VALUES_NV       0x871A
-#define GL_TEXTURE_HI_SIZE_NV             0x871B
-#define GL_TEXTURE_LO_SIZE_NV             0x871C
-#define GL_TEXTURE_DS_SIZE_NV             0x871D
-#define GL_TEXTURE_DT_SIZE_NV             0x871E
-#define GL_TEXTURE_MAG_SIZE_NV            0x871F
-#endif /* GL_NV_texture_shader */
-
-#ifndef GL_NV_texture_shader2
-#define GL_NV_texture_shader2 1
-#define GL_DOT_PRODUCT_TEXTURE_3D_NV      0x86EF
-#endif /* GL_NV_texture_shader2 */
-
-#ifndef GL_NV_texture_shader3
-#define GL_NV_texture_shader3 1
-#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850
-#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851
-#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852
-#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853
-#define GL_OFFSET_HILO_TEXTURE_2D_NV      0x8854
-#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855
-#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856
-#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857
-#define GL_DEPENDENT_HILO_TEXTURE_2D_NV   0x8858
-#define GL_DEPENDENT_RGB_TEXTURE_3D_NV    0x8859
-#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A
-#define GL_DOT_PRODUCT_PASS_THROUGH_NV    0x885B
-#define GL_DOT_PRODUCT_TEXTURE_1D_NV      0x885C
-#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D
-#define GL_HILO8_NV                       0x885E
-#define GL_SIGNED_HILO8_NV                0x885F
-#define GL_FORCE_BLUE_TO_ONE_NV           0x8860
-#endif /* GL_NV_texture_shader3 */
-
-#ifndef GL_NV_transform_feedback
-#define GL_NV_transform_feedback 1
-#define GL_BACK_PRIMARY_COLOR_NV          0x8C77
-#define GL_BACK_SECONDARY_COLOR_NV        0x8C78
-#define GL_TEXTURE_COORD_NV               0x8C79
-#define GL_CLIP_DISTANCE_NV               0x8C7A
-#define GL_VERTEX_ID_NV                   0x8C7B
-#define GL_PRIMITIVE_ID_NV                0x8C7C
-#define GL_GENERIC_ATTRIB_NV              0x8C7D
-#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV  0x8C7E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80
-#define GL_ACTIVE_VARYINGS_NV             0x8C81
-#define GL_ACTIVE_VARYING_MAX_LENGTH_NV   0x8C82
-#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83
-#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84
-#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85
-#define GL_TRANSFORM_FEEDBACK_RECORD_NV   0x8C86
-#define GL_PRIMITIVES_GENERATED_NV        0x8C87
-#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88
-#define GL_RASTERIZER_DISCARD_NV          0x8C89
-#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A
-#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B
-#define GL_INTERLEAVED_ATTRIBS_NV         0x8C8C
-#define GL_SEPARATE_ATTRIBS_NV            0x8C8D
-#define GL_TRANSFORM_FEEDBACK_BUFFER_NV   0x8C8E
-#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F
-#define GL_LAYER_NV                       0x8DAA
-#define GL_NEXT_BUFFER_NV                 -2
-#define GL_SKIP_COMPONENTS4_NV            -3
-#define GL_SKIP_COMPONENTS3_NV            -4
-#define GL_SKIP_COMPONENTS2_NV            -5
-#define GL_SKIP_COMPONENTS1_NV            -6
-typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
-typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);
-typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);
-typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);
-typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode);
-GLAPI void APIENTRY glEndTransformFeedbackNV (void);
-GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode);
-GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
-GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer);
-GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
-GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name);
-GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name);
-GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location);
-GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);
-#endif
-#endif /* GL_NV_transform_feedback */
-
-#ifndef GL_NV_transform_feedback2
-#define GL_NV_transform_feedback2 1
-#define GL_TRANSFORM_FEEDBACK_NV          0x8E22
-#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23
-#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24
-#define GL_TRANSFORM_FEEDBACK_BINDING_NV  0x8E25
-typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids);
-typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids);
-typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void);
-typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids);
-GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids);
-GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id);
-GLAPI void APIENTRY glPauseTransformFeedbackNV (void);
-GLAPI void APIENTRY glResumeTransformFeedbackNV (void);
-GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);
-#endif
-#endif /* GL_NV_transform_feedback2 */
-
-#ifndef GL_NV_vdpau_interop
-#define GL_NV_vdpau_interop 1
-typedef GLintptr GLvdpauSurfaceNV;
-#define GL_SURFACE_STATE_NV               0x86EB
-#define GL_SURFACE_REGISTERED_NV          0x86FD
-#define GL_SURFACE_MAPPED_NV              0x8700
-#define GL_WRITE_DISCARD_NV               0x88BE
-typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void *getProcAddress);
-typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
-typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
-typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
-typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
-typedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
-typedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAddress);
-GLAPI void APIENTRY glVDPAUFiniNV (void);
-GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
-GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
-GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
-GLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);
-GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);
-#endif
-#endif /* GL_NV_vdpau_interop */
-
-#ifndef GL_NV_vertex_array_range
-#define GL_NV_vertex_array_range 1
-#define GL_VERTEX_ARRAY_RANGE_NV          0x851D
-#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV   0x851E
-#define GL_VERTEX_ARRAY_RANGE_VALID_NV    0x851F
-#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
-#define GL_VERTEX_ARRAY_RANGE_POINTER_NV  0x8521
-typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
-typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const void *pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
-GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const void *pointer);
-#endif
-#endif /* GL_NV_vertex_array_range */
-
-#ifndef GL_NV_vertex_array_range2
-#define GL_NV_vertex_array_range2 1
-#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
-#endif /* GL_NV_vertex_array_range2 */
-
-#ifndef GL_NV_vertex_attrib_integer_64bit
-#define GL_NV_vertex_attrib_integer_64bit 1
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x);
-GLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y);
-GLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
-GLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
-GLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x);
-GLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y);
-GLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
-GLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
-GLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v);
-GLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params);
-GLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params);
-GLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
-#endif
-#endif /* GL_NV_vertex_attrib_integer_64bit */
-
-#ifndef GL_NV_vertex_buffer_unified_memory
-#define GL_NV_vertex_buffer_unified_memory 1
-#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E
-#define GL_ELEMENT_ARRAY_UNIFIED_NV       0x8F1F
-#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20
-#define GL_VERTEX_ARRAY_ADDRESS_NV        0x8F21
-#define GL_NORMAL_ARRAY_ADDRESS_NV        0x8F22
-#define GL_COLOR_ARRAY_ADDRESS_NV         0x8F23
-#define GL_INDEX_ARRAY_ADDRESS_NV         0x8F24
-#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25
-#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV     0x8F26
-#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27
-#define GL_FOG_COORD_ARRAY_ADDRESS_NV     0x8F28
-#define GL_ELEMENT_ARRAY_ADDRESS_NV       0x8F29
-#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV  0x8F2A
-#define GL_VERTEX_ARRAY_LENGTH_NV         0x8F2B
-#define GL_NORMAL_ARRAY_LENGTH_NV         0x8F2C
-#define GL_COLOR_ARRAY_LENGTH_NV          0x8F2D
-#define GL_INDEX_ARRAY_LENGTH_NV          0x8F2E
-#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV  0x8F2F
-#define GL_EDGE_FLAG_ARRAY_LENGTH_NV      0x8F30
-#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31
-#define GL_FOG_COORD_ARRAY_LENGTH_NV      0x8F32
-#define GL_ELEMENT_ARRAY_LENGTH_NV        0x8F33
-#define GL_DRAW_INDIRECT_UNIFIED_NV       0x8F40
-#define GL_DRAW_INDIRECT_ADDRESS_NV       0x8F41
-#define GL_DRAW_INDIRECT_LENGTH_NV        0x8F42
-typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
-typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);
-typedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
-typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
-GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
-GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
-GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
-GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
-#endif
-#endif /* GL_NV_vertex_buffer_unified_memory */
-
-#ifndef GL_NV_vertex_program
-#define GL_NV_vertex_program 1
-#define GL_VERTEX_PROGRAM_NV              0x8620
-#define GL_VERTEX_STATE_PROGRAM_NV        0x8621
-#define GL_ATTRIB_ARRAY_SIZE_NV           0x8623
-#define GL_ATTRIB_ARRAY_STRIDE_NV         0x8624
-#define GL_ATTRIB_ARRAY_TYPE_NV           0x8625
-#define GL_CURRENT_ATTRIB_NV              0x8626
-#define GL_PROGRAM_LENGTH_NV              0x8627
-#define GL_PROGRAM_STRING_NV              0x8628
-#define GL_MODELVIEW_PROJECTION_NV        0x8629
-#define GL_IDENTITY_NV                    0x862A
-#define GL_INVERSE_NV                     0x862B
-#define GL_TRANSPOSE_NV                   0x862C
-#define GL_INVERSE_TRANSPOSE_NV           0x862D
-#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E
-#define GL_MAX_TRACK_MATRICES_NV          0x862F
-#define GL_MATRIX0_NV                     0x8630
-#define GL_MATRIX1_NV                     0x8631
-#define GL_MATRIX2_NV                     0x8632
-#define GL_MATRIX3_NV                     0x8633
-#define GL_MATRIX4_NV                     0x8634
-#define GL_MATRIX5_NV                     0x8635
-#define GL_MATRIX6_NV                     0x8636
-#define GL_MATRIX7_NV                     0x8637
-#define GL_CURRENT_MATRIX_STACK_DEPTH_NV  0x8640
-#define GL_CURRENT_MATRIX_NV              0x8641
-#define GL_VERTEX_PROGRAM_POINT_SIZE_NV   0x8642
-#define GL_VERTEX_PROGRAM_TWO_SIDE_NV     0x8643
-#define GL_PROGRAM_PARAMETER_NV           0x8644
-#define GL_ATTRIB_ARRAY_POINTER_NV        0x8645
-#define GL_PROGRAM_TARGET_NV              0x8646
-#define GL_PROGRAM_RESIDENT_NV            0x8647
-#define GL_TRACK_MATRIX_NV                0x8648
-#define GL_TRACK_MATRIX_TRANSFORM_NV      0x8649
-#define GL_VERTEX_PROGRAM_BINDING_NV      0x864A
-#define GL_PROGRAM_ERROR_POSITION_NV      0x864B
-#define GL_VERTEX_ATTRIB_ARRAY0_NV        0x8650
-#define GL_VERTEX_ATTRIB_ARRAY1_NV        0x8651
-#define GL_VERTEX_ATTRIB_ARRAY2_NV        0x8652
-#define GL_VERTEX_ATTRIB_ARRAY3_NV        0x8653
-#define GL_VERTEX_ATTRIB_ARRAY4_NV        0x8654
-#define GL_VERTEX_ATTRIB_ARRAY5_NV        0x8655
-#define GL_VERTEX_ATTRIB_ARRAY6_NV        0x8656
-#define GL_VERTEX_ATTRIB_ARRAY7_NV        0x8657
-#define GL_VERTEX_ATTRIB_ARRAY8_NV        0x8658
-#define GL_VERTEX_ATTRIB_ARRAY9_NV        0x8659
-#define GL_VERTEX_ATTRIB_ARRAY10_NV       0x865A
-#define GL_VERTEX_ATTRIB_ARRAY11_NV       0x865B
-#define GL_VERTEX_ATTRIB_ARRAY12_NV       0x865C
-#define GL_VERTEX_ATTRIB_ARRAY13_NV       0x865D
-#define GL_VERTEX_ATTRIB_ARRAY14_NV       0x865E
-#define GL_VERTEX_ATTRIB_ARRAY15_NV       0x865F
-#define GL_MAP1_VERTEX_ATTRIB0_4_NV       0x8660
-#define GL_MAP1_VERTEX_ATTRIB1_4_NV       0x8661
-#define GL_MAP1_VERTEX_ATTRIB2_4_NV       0x8662
-#define GL_MAP1_VERTEX_ATTRIB3_4_NV       0x8663
-#define GL_MAP1_VERTEX_ATTRIB4_4_NV       0x8664
-#define GL_MAP1_VERTEX_ATTRIB5_4_NV       0x8665
-#define GL_MAP1_VERTEX_ATTRIB6_4_NV       0x8666
-#define GL_MAP1_VERTEX_ATTRIB7_4_NV       0x8667
-#define GL_MAP1_VERTEX_ATTRIB8_4_NV       0x8668
-#define GL_MAP1_VERTEX_ATTRIB9_4_NV       0x8669
-#define GL_MAP1_VERTEX_ATTRIB10_4_NV      0x866A
-#define GL_MAP1_VERTEX_ATTRIB11_4_NV      0x866B
-#define GL_MAP1_VERTEX_ATTRIB12_4_NV      0x866C
-#define GL_MAP1_VERTEX_ATTRIB13_4_NV      0x866D
-#define GL_MAP1_VERTEX_ATTRIB14_4_NV      0x866E
-#define GL_MAP1_VERTEX_ATTRIB15_4_NV      0x866F
-#define GL_MAP2_VERTEX_ATTRIB0_4_NV       0x8670
-#define GL_MAP2_VERTEX_ATTRIB1_4_NV       0x8671
-#define GL_MAP2_VERTEX_ATTRIB2_4_NV       0x8672
-#define GL_MAP2_VERTEX_ATTRIB3_4_NV       0x8673
-#define GL_MAP2_VERTEX_ATTRIB4_4_NV       0x8674
-#define GL_MAP2_VERTEX_ATTRIB5_4_NV       0x8675
-#define GL_MAP2_VERTEX_ATTRIB6_4_NV       0x8676
-#define GL_MAP2_VERTEX_ATTRIB7_4_NV       0x8677
-#define GL_MAP2_VERTEX_ATTRIB8_4_NV       0x8678
-#define GL_MAP2_VERTEX_ATTRIB9_4_NV       0x8679
-#define GL_MAP2_VERTEX_ATTRIB10_4_NV      0x867A
-#define GL_MAP2_VERTEX_ATTRIB11_4_NV      0x867B
-#define GL_MAP2_VERTEX_ATTRIB12_4_NV      0x867C
-#define GL_MAP2_VERTEX_ATTRIB13_4_NV      0x867D
-#define GL_MAP2_VERTEX_ATTRIB14_4_NV      0x867E
-#define GL_MAP2_VERTEX_ATTRIB15_4_NV      0x867F
-typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
-typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
-typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
-typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);
-typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);
-typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void **pointer);
-typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);
-typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);
-typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);
-GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id);
-GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs);
-GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);
-GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs);
-GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);
-GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);
-GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, void **pointer);
-GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id);
-GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
-GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);
-GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);
-GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x);
-GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x);
-GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x);
-GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);
-GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);
-GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);
-GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);
-GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);
-GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);
-#endif
-#endif /* GL_NV_vertex_program */
-
-#ifndef GL_NV_vertex_program1_1
-#define GL_NV_vertex_program1_1 1
-#endif /* GL_NV_vertex_program1_1 */
-
-#ifndef GL_NV_vertex_program2
-#define GL_NV_vertex_program2 1
-#endif /* GL_NV_vertex_program2 */
-
-#ifndef GL_NV_vertex_program2_option
-#define GL_NV_vertex_program2_option 1
-#endif /* GL_NV_vertex_program2_option */
-
-#ifndef GL_NV_vertex_program3
-#define GL_NV_vertex_program3 1
-#endif /* GL_NV_vertex_program3 */
-
-#ifndef GL_NV_vertex_program4
-#define GL_NV_vertex_program4 1
-#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);
-typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x);
-GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y);
-GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z);
-GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w);
-GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x);
-GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y);
-GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z);
-GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v);
-GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v);
-GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v);
-GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v);
-GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v);
-GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v);
-GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params);
-#endif
-#endif /* GL_NV_vertex_program4 */
-
-#ifndef GL_NV_video_capture
-#define GL_NV_video_capture 1
-#define GL_VIDEO_BUFFER_NV                0x9020
-#define GL_VIDEO_BUFFER_BINDING_NV        0x9021
-#define GL_FIELD_UPPER_NV                 0x9022
-#define GL_FIELD_LOWER_NV                 0x9023
-#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV   0x9024
-#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025
-#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026
-#define GL_LAST_VIDEO_CAPTURE_STATUS_NV   0x9027
-#define GL_VIDEO_BUFFER_PITCH_NV          0x9028
-#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029
-#define GL_VIDEO_COLOR_CONVERSION_MAX_NV  0x902A
-#define GL_VIDEO_COLOR_CONVERSION_MIN_NV  0x902B
-#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C
-#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D
-#define GL_PARTIAL_SUCCESS_NV             0x902E
-#define GL_SUCCESS_NV                     0x902F
-#define GL_FAILURE_NV                     0x9030
-#define GL_YCBYCR8_422_NV                 0x9031
-#define GL_YCBAYCR8A_4224_NV              0x9032
-#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV  0x9033
-#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034
-#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV  0x9035
-#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036
-#define GL_Z4Y12Z4CB12Z4CR12_444_NV       0x9037
-#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV   0x9038
-#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV  0x9039
-#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A
-#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B
-#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C
-typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
-typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
-typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
-typedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
-typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot);
-GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
-GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
-GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot);
-GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
-GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
-GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
-#endif
-#endif /* GL_NV_video_capture */
-
-#ifndef GL_OML_interlace
-#define GL_OML_interlace 1
-#define GL_INTERLACE_OML                  0x8980
-#define GL_INTERLACE_READ_OML             0x8981
-#endif /* GL_OML_interlace */
-
-#ifndef GL_OML_resample
-#define GL_OML_resample 1
-#define GL_PACK_RESAMPLE_OML              0x8984
-#define GL_UNPACK_RESAMPLE_OML            0x8985
-#define GL_RESAMPLE_REPLICATE_OML         0x8986
-#define GL_RESAMPLE_ZERO_FILL_OML         0x8987
-#define GL_RESAMPLE_AVERAGE_OML           0x8988
-#define GL_RESAMPLE_DECIMATE_OML          0x8989
-#endif /* GL_OML_resample */
-
-#ifndef GL_OML_subsample
-#define GL_OML_subsample 1
-#define GL_FORMAT_SUBSAMPLE_24_24_OML     0x8982
-#define GL_FORMAT_SUBSAMPLE_244_244_OML   0x8983
-#endif /* GL_OML_subsample */
-
-#ifndef GL_PGI_misc_hints
-#define GL_PGI_misc_hints 1
-#define GL_PREFER_DOUBLEBUFFER_HINT_PGI   0x1A1F8
-#define GL_CONSERVE_MEMORY_HINT_PGI       0x1A1FD
-#define GL_RECLAIM_MEMORY_HINT_PGI        0x1A1FE
-#define GL_NATIVE_GRAPHICS_HANDLE_PGI     0x1A202
-#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203
-#define GL_NATIVE_GRAPHICS_END_HINT_PGI   0x1A204
-#define GL_ALWAYS_FAST_HINT_PGI           0x1A20C
-#define GL_ALWAYS_SOFT_HINT_PGI           0x1A20D
-#define GL_ALLOW_DRAW_OBJ_HINT_PGI        0x1A20E
-#define GL_ALLOW_DRAW_WIN_HINT_PGI        0x1A20F
-#define GL_ALLOW_DRAW_FRG_HINT_PGI        0x1A210
-#define GL_ALLOW_DRAW_MEM_HINT_PGI        0x1A211
-#define GL_STRICT_DEPTHFUNC_HINT_PGI      0x1A216
-#define GL_STRICT_LIGHTING_HINT_PGI       0x1A217
-#define GL_STRICT_SCISSOR_HINT_PGI        0x1A218
-#define GL_FULL_STIPPLE_HINT_PGI          0x1A219
-#define GL_CLIP_NEAR_HINT_PGI             0x1A220
-#define GL_CLIP_FAR_HINT_PGI              0x1A221
-#define GL_WIDE_LINE_HINT_PGI             0x1A222
-#define GL_BACK_NORMALS_HINT_PGI          0x1A223
-typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode);
-#endif
-#endif /* GL_PGI_misc_hints */
-
-#ifndef GL_PGI_vertex_hints
-#define GL_PGI_vertex_hints 1
-#define GL_VERTEX_DATA_HINT_PGI           0x1A22A
-#define GL_VERTEX_CONSISTENT_HINT_PGI     0x1A22B
-#define GL_MATERIAL_SIDE_HINT_PGI         0x1A22C
-#define GL_MAX_VERTEX_HINT_PGI            0x1A22D
-#define GL_COLOR3_BIT_PGI                 0x00010000
-#define GL_COLOR4_BIT_PGI                 0x00020000
-#define GL_EDGEFLAG_BIT_PGI               0x00040000
-#define GL_INDEX_BIT_PGI                  0x00080000
-#define GL_MAT_AMBIENT_BIT_PGI            0x00100000
-#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000
-#define GL_MAT_DIFFUSE_BIT_PGI            0x00400000
-#define GL_MAT_EMISSION_BIT_PGI           0x00800000
-#define GL_MAT_COLOR_INDEXES_BIT_PGI      0x01000000
-#define GL_MAT_SHININESS_BIT_PGI          0x02000000
-#define GL_MAT_SPECULAR_BIT_PGI           0x04000000
-#define GL_NORMAL_BIT_PGI                 0x08000000
-#define GL_TEXCOORD1_BIT_PGI              0x10000000
-#define GL_TEXCOORD2_BIT_PGI              0x20000000
-#define GL_TEXCOORD3_BIT_PGI              0x40000000
-#define GL_TEXCOORD4_BIT_PGI              0x80000000
-#define GL_VERTEX23_BIT_PGI               0x00000004
-#define GL_VERTEX4_BIT_PGI                0x00000008
-#endif /* GL_PGI_vertex_hints */
-
-#ifndef GL_REND_screen_coordinates
-#define GL_REND_screen_coordinates 1
-#define GL_SCREEN_COORDINATES_REND        0x8490
-#define GL_INVERTED_SCREEN_W_REND         0x8491
-#endif /* GL_REND_screen_coordinates */
-
-#ifndef GL_S3_s3tc
-#define GL_S3_s3tc 1
-#define GL_RGB_S3TC                       0x83A0
-#define GL_RGB4_S3TC                      0x83A1
-#define GL_RGBA_S3TC                      0x83A2
-#define GL_RGBA4_S3TC                     0x83A3
-#define GL_RGBA_DXT5_S3TC                 0x83A4
-#define GL_RGBA4_DXT5_S3TC                0x83A5
-#endif /* GL_S3_s3tc */
-
-#ifndef GL_SGIS_detail_texture
-#define GL_SGIS_detail_texture 1
-#define GL_DETAIL_TEXTURE_2D_SGIS         0x8095
-#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096
-#define GL_LINEAR_DETAIL_SGIS             0x8097
-#define GL_LINEAR_DETAIL_ALPHA_SGIS       0x8098
-#define GL_LINEAR_DETAIL_COLOR_SGIS       0x8099
-#define GL_DETAIL_TEXTURE_LEVEL_SGIS      0x809A
-#define GL_DETAIL_TEXTURE_MODE_SGIS       0x809B
-#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C
-typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
-GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points);
-#endif
-#endif /* GL_SGIS_detail_texture */
-
-#ifndef GL_SGIS_fog_function
-#define GL_SGIS_fog_function 1
-#define GL_FOG_FUNC_SGIS                  0x812A
-#define GL_FOG_FUNC_POINTS_SGIS           0x812B
-#define GL_MAX_FOG_FUNC_POINTS_SGIS       0x812C
-typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
-typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points);
-GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points);
-#endif
-#endif /* GL_SGIS_fog_function */
-
-#ifndef GL_SGIS_generate_mipmap
-#define GL_SGIS_generate_mipmap 1
-#define GL_GENERATE_MIPMAP_SGIS           0x8191
-#define GL_GENERATE_MIPMAP_HINT_SGIS      0x8192
-#endif /* GL_SGIS_generate_mipmap */
-
-#ifndef GL_SGIS_multisample
-#define GL_SGIS_multisample 1
-#define GL_MULTISAMPLE_SGIS               0x809D
-#define GL_SAMPLE_ALPHA_TO_MASK_SGIS      0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE_SGIS       0x809F
-#define GL_SAMPLE_MASK_SGIS               0x80A0
-#define GL_1PASS_SGIS                     0x80A1
-#define GL_2PASS_0_SGIS                   0x80A2
-#define GL_2PASS_1_SGIS                   0x80A3
-#define GL_4PASS_0_SGIS                   0x80A4
-#define GL_4PASS_1_SGIS                   0x80A5
-#define GL_4PASS_2_SGIS                   0x80A6
-#define GL_4PASS_3_SGIS                   0x80A7
-#define GL_SAMPLE_BUFFERS_SGIS            0x80A8
-#define GL_SAMPLES_SGIS                   0x80A9
-#define GL_SAMPLE_MASK_VALUE_SGIS         0x80AA
-#define GL_SAMPLE_MASK_INVERT_SGIS        0x80AB
-#define GL_SAMPLE_PATTERN_SGIS            0x80AC
-typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
-typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert);
-GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern);
-#endif
-#endif /* GL_SGIS_multisample */
-
-#ifndef GL_SGIS_pixel_texture
-#define GL_SGIS_pixel_texture 1
-#define GL_PIXEL_TEXTURE_SGIS             0x8353
-#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354
-#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355
-#define GL_PIXEL_GROUP_COLOR_SGIS         0x8356
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param);
-GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params);
-#endif
-#endif /* GL_SGIS_pixel_texture */
-
-#ifndef GL_SGIS_point_line_texgen
-#define GL_SGIS_point_line_texgen 1
-#define GL_EYE_DISTANCE_TO_POINT_SGIS     0x81F0
-#define GL_OBJECT_DISTANCE_TO_POINT_SGIS  0x81F1
-#define GL_EYE_DISTANCE_TO_LINE_SGIS      0x81F2
-#define GL_OBJECT_DISTANCE_TO_LINE_SGIS   0x81F3
-#define GL_EYE_POINT_SGIS                 0x81F4
-#define GL_OBJECT_POINT_SGIS              0x81F5
-#define GL_EYE_LINE_SGIS                  0x81F6
-#define GL_OBJECT_LINE_SGIS               0x81F7
-#endif /* GL_SGIS_point_line_texgen */
-
-#ifndef GL_SGIS_point_parameters
-#define GL_SGIS_point_parameters 1
-#define GL_POINT_SIZE_MIN_SGIS            0x8126
-#define GL_POINT_SIZE_MAX_SGIS            0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128
-#define GL_DISTANCE_ATTENUATION_SGIS      0x8129
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params);
-#endif
-#endif /* GL_SGIS_point_parameters */
-
-#ifndef GL_SGIS_sharpen_texture
-#define GL_SGIS_sharpen_texture 1
-#define GL_LINEAR_SHARPEN_SGIS            0x80AD
-#define GL_LINEAR_SHARPEN_ALPHA_SGIS      0x80AE
-#define GL_LINEAR_SHARPEN_COLOR_SGIS      0x80AF
-#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0
-typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
-typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
-GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points);
-#endif
-#endif /* GL_SGIS_sharpen_texture */
-
-#ifndef GL_SGIS_texture4D
-#define GL_SGIS_texture4D 1
-#define GL_PACK_SKIP_VOLUMES_SGIS         0x8130
-#define GL_PACK_IMAGE_DEPTH_SGIS          0x8131
-#define GL_UNPACK_SKIP_VOLUMES_SGIS       0x8132
-#define GL_UNPACK_IMAGE_DEPTH_SGIS        0x8133
-#define GL_TEXTURE_4D_SGIS                0x8134
-#define GL_PROXY_TEXTURE_4D_SGIS          0x8135
-#define GL_TEXTURE_4DSIZE_SGIS            0x8136
-#define GL_TEXTURE_WRAP_Q_SGIS            0x8137
-#define GL_MAX_4D_TEXTURE_SIZE_SGIS       0x8138
-#define GL_TEXTURE_4D_BINDING_SGIS        0x814F
-typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);
-GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);
-#endif
-#endif /* GL_SGIS_texture4D */
-
-#ifndef GL_SGIS_texture_border_clamp
-#define GL_SGIS_texture_border_clamp 1
-#define GL_CLAMP_TO_BORDER_SGIS           0x812D
-#endif /* GL_SGIS_texture_border_clamp */
-
-#ifndef GL_SGIS_texture_color_mask
-#define GL_SGIS_texture_color_mask 1
-#define GL_TEXTURE_COLOR_WRITEMASK_SGIS   0x81EF
-typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-#endif
-#endif /* GL_SGIS_texture_color_mask */
-
-#ifndef GL_SGIS_texture_edge_clamp
-#define GL_SGIS_texture_edge_clamp 1
-#define GL_CLAMP_TO_EDGE_SGIS             0x812F
-#endif /* GL_SGIS_texture_edge_clamp */
-
-#ifndef GL_SGIS_texture_filter4
-#define GL_SGIS_texture_filter4 1
-#define GL_FILTER4_SGIS                   0x8146
-#define GL_TEXTURE_FILTER4_SIZE_SGIS      0x8147
-typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
-typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights);
-GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
-#endif
-#endif /* GL_SGIS_texture_filter4 */
-
-#ifndef GL_SGIS_texture_lod
-#define GL_SGIS_texture_lod 1
-#define GL_TEXTURE_MIN_LOD_SGIS           0x813A
-#define GL_TEXTURE_MAX_LOD_SGIS           0x813B
-#define GL_TEXTURE_BASE_LEVEL_SGIS        0x813C
-#define GL_TEXTURE_MAX_LEVEL_SGIS         0x813D
-#endif /* GL_SGIS_texture_lod */
-
-#ifndef GL_SGIS_texture_select
-#define GL_SGIS_texture_select 1
-#define GL_DUAL_ALPHA4_SGIS               0x8110
-#define GL_DUAL_ALPHA8_SGIS               0x8111
-#define GL_DUAL_ALPHA12_SGIS              0x8112
-#define GL_DUAL_ALPHA16_SGIS              0x8113
-#define GL_DUAL_LUMINANCE4_SGIS           0x8114
-#define GL_DUAL_LUMINANCE8_SGIS           0x8115
-#define GL_DUAL_LUMINANCE12_SGIS          0x8116
-#define GL_DUAL_LUMINANCE16_SGIS          0x8117
-#define GL_DUAL_INTENSITY4_SGIS           0x8118
-#define GL_DUAL_INTENSITY8_SGIS           0x8119
-#define GL_DUAL_INTENSITY12_SGIS          0x811A
-#define GL_DUAL_INTENSITY16_SGIS          0x811B
-#define GL_DUAL_LUMINANCE_ALPHA4_SGIS     0x811C
-#define GL_DUAL_LUMINANCE_ALPHA8_SGIS     0x811D
-#define GL_QUAD_ALPHA4_SGIS               0x811E
-#define GL_QUAD_ALPHA8_SGIS               0x811F
-#define GL_QUAD_LUMINANCE4_SGIS           0x8120
-#define GL_QUAD_LUMINANCE8_SGIS           0x8121
-#define GL_QUAD_INTENSITY4_SGIS           0x8122
-#define GL_QUAD_INTENSITY8_SGIS           0x8123
-#define GL_DUAL_TEXTURE_SELECT_SGIS       0x8124
-#define GL_QUAD_TEXTURE_SELECT_SGIS       0x8125
-#endif /* GL_SGIS_texture_select */
-
-#ifndef GL_SGIX_async
-#define GL_SGIX_async 1
-#define GL_ASYNC_MARKER_SGIX              0x8329
-typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
-typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
-typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);
-typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);
-typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);
-typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker);
-GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp);
-GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp);
-GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range);
-GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range);
-GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker);
-#endif
-#endif /* GL_SGIX_async */
-
-#ifndef GL_SGIX_async_histogram
-#define GL_SGIX_async_histogram 1
-#define GL_ASYNC_HISTOGRAM_SGIX           0x832C
-#define GL_MAX_ASYNC_HISTOGRAM_SGIX       0x832D
-#endif /* GL_SGIX_async_histogram */
-
-#ifndef GL_SGIX_async_pixel
-#define GL_SGIX_async_pixel 1
-#define GL_ASYNC_TEX_IMAGE_SGIX           0x835C
-#define GL_ASYNC_DRAW_PIXELS_SGIX         0x835D
-#define GL_ASYNC_READ_PIXELS_SGIX         0x835E
-#define GL_MAX_ASYNC_TEX_IMAGE_SGIX       0x835F
-#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX     0x8360
-#define GL_MAX_ASYNC_READ_PIXELS_SGIX     0x8361
-#endif /* GL_SGIX_async_pixel */
-
-#ifndef GL_SGIX_blend_alpha_minmax
-#define GL_SGIX_blend_alpha_minmax 1
-#define GL_ALPHA_MIN_SGIX                 0x8320
-#define GL_ALPHA_MAX_SGIX                 0x8321
-#endif /* GL_SGIX_blend_alpha_minmax */
-
-#ifndef GL_SGIX_calligraphic_fragment
-#define GL_SGIX_calligraphic_fragment 1
-#define GL_CALLIGRAPHIC_FRAGMENT_SGIX     0x8183
-#endif /* GL_SGIX_calligraphic_fragment */
-
-#ifndef GL_SGIX_clipmap
-#define GL_SGIX_clipmap 1
-#define GL_LINEAR_CLIPMAP_LINEAR_SGIX     0x8170
-#define GL_TEXTURE_CLIPMAP_CENTER_SGIX    0x8171
-#define GL_TEXTURE_CLIPMAP_FRAME_SGIX     0x8172
-#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX    0x8173
-#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174
-#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175
-#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX     0x8176
-#define GL_MAX_CLIPMAP_DEPTH_SGIX         0x8177
-#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178
-#define GL_NEAREST_CLIPMAP_NEAREST_SGIX   0x844D
-#define GL_NEAREST_CLIPMAP_LINEAR_SGIX    0x844E
-#define GL_LINEAR_CLIPMAP_NEAREST_SGIX    0x844F
-#endif /* GL_SGIX_clipmap */
-
-#ifndef GL_SGIX_convolution_accuracy
-#define GL_SGIX_convolution_accuracy 1
-#define GL_CONVOLUTION_HINT_SGIX          0x8316
-#endif /* GL_SGIX_convolution_accuracy */
-
-#ifndef GL_SGIX_depth_pass_instrument
-#define GL_SGIX_depth_pass_instrument 1
-#endif /* GL_SGIX_depth_pass_instrument */
-
-#ifndef GL_SGIX_depth_texture
-#define GL_SGIX_depth_texture 1
-#define GL_DEPTH_COMPONENT16_SGIX         0x81A5
-#define GL_DEPTH_COMPONENT24_SGIX         0x81A6
-#define GL_DEPTH_COMPONENT32_SGIX         0x81A7
-#endif /* GL_SGIX_depth_texture */
-
-#ifndef GL_SGIX_flush_raster
-#define GL_SGIX_flush_raster 1
-typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFlushRasterSGIX (void);
-#endif
-#endif /* GL_SGIX_flush_raster */
-
-#ifndef GL_SGIX_fog_offset
-#define GL_SGIX_fog_offset 1
-#define GL_FOG_OFFSET_SGIX                0x8198
-#define GL_FOG_OFFSET_VALUE_SGIX          0x8199
-#endif /* GL_SGIX_fog_offset */
-
-#ifndef GL_SGIX_fragment_lighting
-#define GL_SGIX_fragment_lighting 1
-#define GL_FRAGMENT_LIGHTING_SGIX         0x8400
-#define GL_FRAGMENT_COLOR_MATERIAL_SGIX   0x8401
-#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402
-#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403
-#define GL_MAX_FRAGMENT_LIGHTS_SGIX       0x8404
-#define GL_MAX_ACTIVE_LIGHTS_SGIX         0x8405
-#define GL_CURRENT_RASTER_NORMAL_SGIX     0x8406
-#define GL_LIGHT_ENV_MODE_SGIX            0x8407
-#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408
-#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409
-#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A
-#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B
-#define GL_FRAGMENT_LIGHT0_SGIX           0x840C
-#define GL_FRAGMENT_LIGHT1_SGIX           0x840D
-#define GL_FRAGMENT_LIGHT2_SGIX           0x840E
-#define GL_FRAGMENT_LIGHT3_SGIX           0x840F
-#define GL_FRAGMENT_LIGHT4_SGIX           0x8410
-#define GL_FRAGMENT_LIGHT5_SGIX           0x8411
-#define GL_FRAGMENT_LIGHT6_SGIX           0x8412
-#define GL_FRAGMENT_LIGHT7_SGIX           0x8413
-typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode);
-GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param);
-GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param);
-GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params);
-GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param);
-GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params);
-GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params);
-GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param);
-#endif
-#endif /* GL_SGIX_fragment_lighting */
-
-#ifndef GL_SGIX_framezoom
-#define GL_SGIX_framezoom 1
-#define GL_FRAMEZOOM_SGIX                 0x818B
-#define GL_FRAMEZOOM_FACTOR_SGIX          0x818C
-#define GL_MAX_FRAMEZOOM_FACTOR_SGIX      0x818D
-typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFrameZoomSGIX (GLint factor);
-#endif
-#endif /* GL_SGIX_framezoom */
-
-#ifndef GL_SGIX_igloo_interface
-#define GL_SGIX_igloo_interface 1
-typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const void *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const void *params);
-#endif
-#endif /* GL_SGIX_igloo_interface */
-
-#ifndef GL_SGIX_instruments
-#define GL_SGIX_instruments 1
-#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180
-#define GL_INSTRUMENT_MEASUREMENTS_SGIX   0x8181
-typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
-typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
-typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);
-typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);
-typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);
-typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
-GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer);
-GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p);
-GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker);
-GLAPI void APIENTRY glStartInstrumentsSGIX (void);
-GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker);
-#endif
-#endif /* GL_SGIX_instruments */
-
-#ifndef GL_SGIX_interlace
-#define GL_SGIX_interlace 1
-#define GL_INTERLACE_SGIX                 0x8094
-#endif /* GL_SGIX_interlace */
-
-#ifndef GL_SGIX_ir_instrument1
-#define GL_SGIX_ir_instrument1 1
-#define GL_IR_INSTRUMENT1_SGIX            0x817F
-#endif /* GL_SGIX_ir_instrument1 */
-
-#ifndef GL_SGIX_list_priority
-#define GL_SGIX_list_priority 1
-#define GL_LIST_PRIORITY_SGIX             0x8182
-typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params);
-GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param);
-GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param);
-GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params);
-#endif
-#endif /* GL_SGIX_list_priority */
-
-#ifndef GL_SGIX_pixel_texture
-#define GL_SGIX_pixel_texture 1
-#define GL_PIXEL_TEX_GEN_SGIX             0x8139
-#define GL_PIXEL_TEX_GEN_MODE_SGIX        0x832B
-typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode);
-#endif
-#endif /* GL_SGIX_pixel_texture */
-
-#ifndef GL_SGIX_pixel_tiles
-#define GL_SGIX_pixel_tiles 1
-#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E
-#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F
-#define GL_PIXEL_TILE_WIDTH_SGIX          0x8140
-#define GL_PIXEL_TILE_HEIGHT_SGIX         0x8141
-#define GL_PIXEL_TILE_GRID_WIDTH_SGIX     0x8142
-#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX    0x8143
-#define GL_PIXEL_TILE_GRID_DEPTH_SGIX     0x8144
-#define GL_PIXEL_TILE_CACHE_SIZE_SGIX     0x8145
-#endif /* GL_SGIX_pixel_tiles */
-
-#ifndef GL_SGIX_polynomial_ffd
-#define GL_SGIX_polynomial_ffd 1
-#define GL_TEXTURE_DEFORMATION_BIT_SGIX   0x00000001
-#define GL_GEOMETRY_DEFORMATION_BIT_SGIX  0x00000002
-#define GL_GEOMETRY_DEFORMATION_SGIX      0x8194
-#define GL_TEXTURE_DEFORMATION_SGIX       0x8195
-#define GL_DEFORMATIONS_MASK_SGIX         0x8196
-#define GL_MAX_DEFORMATION_ORDER_SGIX     0x8197
-typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
-typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
-typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);
-typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
-GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
-GLAPI void APIENTRY glDeformSGIX (GLbitfield mask);
-GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask);
-#endif
-#endif /* GL_SGIX_polynomial_ffd */
-
-#ifndef GL_SGIX_reference_plane
-#define GL_SGIX_reference_plane 1
-#define GL_REFERENCE_PLANE_SGIX           0x817D
-#define GL_REFERENCE_PLANE_EQUATION_SGIX  0x817E
-typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation);
-#endif
-#endif /* GL_SGIX_reference_plane */
-
-#ifndef GL_SGIX_resample
-#define GL_SGIX_resample 1
-#define GL_PACK_RESAMPLE_SGIX             0x842C
-#define GL_UNPACK_RESAMPLE_SGIX           0x842D
-#define GL_RESAMPLE_REPLICATE_SGIX        0x842E
-#define GL_RESAMPLE_ZERO_FILL_SGIX        0x842F
-#define GL_RESAMPLE_DECIMATE_SGIX         0x8430
-#endif /* GL_SGIX_resample */
-
-#ifndef GL_SGIX_scalebias_hint
-#define GL_SGIX_scalebias_hint 1
-#define GL_SCALEBIAS_HINT_SGIX            0x8322
-#endif /* GL_SGIX_scalebias_hint */
-
-#ifndef GL_SGIX_shadow
-#define GL_SGIX_shadow 1
-#define GL_TEXTURE_COMPARE_SGIX           0x819A
-#define GL_TEXTURE_COMPARE_OPERATOR_SGIX  0x819B
-#define GL_TEXTURE_LEQUAL_R_SGIX          0x819C
-#define GL_TEXTURE_GEQUAL_R_SGIX          0x819D
-#endif /* GL_SGIX_shadow */
-
-#ifndef GL_SGIX_shadow_ambient
-#define GL_SGIX_shadow_ambient 1
-#define GL_SHADOW_AMBIENT_SGIX            0x80BF
-#endif /* GL_SGIX_shadow_ambient */
-
-#ifndef GL_SGIX_sprite
-#define GL_SGIX_sprite 1
-#define GL_SPRITE_SGIX                    0x8148
-#define GL_SPRITE_MODE_SGIX               0x8149
-#define GL_SPRITE_AXIS_SGIX               0x814A
-#define GL_SPRITE_TRANSLATION_SGIX        0x814B
-#define GL_SPRITE_AXIAL_SGIX              0x814C
-#define GL_SPRITE_OBJECT_ALIGNED_SGIX     0x814D
-#define GL_SPRITE_EYE_ALIGNED_SGIX        0x814E
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param);
-GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param);
-GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params);
-#endif
-#endif /* GL_SGIX_sprite */
-
-#ifndef GL_SGIX_subsample
-#define GL_SGIX_subsample 1
-#define GL_PACK_SUBSAMPLE_RATE_SGIX       0x85A0
-#define GL_UNPACK_SUBSAMPLE_RATE_SGIX     0x85A1
-#define GL_PIXEL_SUBSAMPLE_4444_SGIX      0x85A2
-#define GL_PIXEL_SUBSAMPLE_2424_SGIX      0x85A3
-#define GL_PIXEL_SUBSAMPLE_4242_SGIX      0x85A4
-#endif /* GL_SGIX_subsample */
-
-#ifndef GL_SGIX_tag_sample_buffer
-#define GL_SGIX_tag_sample_buffer 1
-typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTagSampleBufferSGIX (void);
-#endif
-#endif /* GL_SGIX_tag_sample_buffer */
-
-#ifndef GL_SGIX_texture_add_env
-#define GL_SGIX_texture_add_env 1
-#define GL_TEXTURE_ENV_BIAS_SGIX          0x80BE
-#endif /* GL_SGIX_texture_add_env */
-
-#ifndef GL_SGIX_texture_coordinate_clamp
-#define GL_SGIX_texture_coordinate_clamp 1
-#define GL_TEXTURE_MAX_CLAMP_S_SGIX       0x8369
-#define GL_TEXTURE_MAX_CLAMP_T_SGIX       0x836A
-#define GL_TEXTURE_MAX_CLAMP_R_SGIX       0x836B
-#endif /* GL_SGIX_texture_coordinate_clamp */
-
-#ifndef GL_SGIX_texture_lod_bias
-#define GL_SGIX_texture_lod_bias 1
-#define GL_TEXTURE_LOD_BIAS_S_SGIX        0x818E
-#define GL_TEXTURE_LOD_BIAS_T_SGIX        0x818F
-#define GL_TEXTURE_LOD_BIAS_R_SGIX        0x8190
-#endif /* GL_SGIX_texture_lod_bias */
-
-#ifndef GL_SGIX_texture_multi_buffer
-#define GL_SGIX_texture_multi_buffer 1
-#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E
-#endif /* GL_SGIX_texture_multi_buffer */
-
-#ifndef GL_SGIX_texture_scale_bias
-#define GL_SGIX_texture_scale_bias 1
-#define GL_POST_TEXTURE_FILTER_BIAS_SGIX  0x8179
-#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A
-#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B
-#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C
-#endif /* GL_SGIX_texture_scale_bias */
-
-#ifndef GL_SGIX_vertex_preclip
-#define GL_SGIX_vertex_preclip 1
-#define GL_VERTEX_PRECLIP_SGIX            0x83EE
-#define GL_VERTEX_PRECLIP_HINT_SGIX       0x83EF
-#endif /* GL_SGIX_vertex_preclip */
-
-#ifndef GL_SGIX_ycrcb
-#define GL_SGIX_ycrcb 1
-#define GL_YCRCB_422_SGIX                 0x81BB
-#define GL_YCRCB_444_SGIX                 0x81BC
-#endif /* GL_SGIX_ycrcb */
-
-#ifndef GL_SGIX_ycrcb_subsample
-#define GL_SGIX_ycrcb_subsample 1
-#endif /* GL_SGIX_ycrcb_subsample */
-
-#ifndef GL_SGIX_ycrcba
-#define GL_SGIX_ycrcba 1
-#define GL_YCRCB_SGIX                     0x8318
-#define GL_YCRCBA_SGIX                    0x8319
-#endif /* GL_SGIX_ycrcba */
-
-#ifndef GL_SGI_color_matrix
-#define GL_SGI_color_matrix 1
-#define GL_COLOR_MATRIX_SGI               0x80B1
-#define GL_COLOR_MATRIX_STACK_DEPTH_SGI   0x80B2
-#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3
-#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4
-#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5
-#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6
-#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7
-#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8
-#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9
-#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA
-#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB
-#endif /* GL_SGI_color_matrix */
-
-#ifndef GL_SGI_color_table
-#define GL_SGI_color_table 1
-#define GL_COLOR_TABLE_SGI                0x80D0
-#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1
-#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2
-#define GL_PROXY_COLOR_TABLE_SGI          0x80D3
-#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4
-#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5
-#define GL_COLOR_TABLE_SCALE_SGI          0x80D6
-#define GL_COLOR_TABLE_BIAS_SGI           0x80D7
-#define GL_COLOR_TABLE_FORMAT_SGI         0x80D8
-#define GL_COLOR_TABLE_WIDTH_SGI          0x80D9
-#define GL_COLOR_TABLE_RED_SIZE_SGI       0x80DA
-#define GL_COLOR_TABLE_GREEN_SIZE_SGI     0x80DB
-#define GL_COLOR_TABLE_BLUE_SIZE_SGI      0x80DC
-#define GL_COLOR_TABLE_ALPHA_SIZE_SGI     0x80DD
-#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE
-#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF
-typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);
-GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params);
-GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params);
-GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table);
-GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params);
-GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params);
-#endif
-#endif /* GL_SGI_color_table */
-
-#ifndef GL_SGI_texture_color_table
-#define GL_SGI_texture_color_table 1
-#define GL_TEXTURE_COLOR_TABLE_SGI        0x80BC
-#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI  0x80BD
-#endif /* GL_SGI_texture_color_table */
-
-#ifndef GL_SUNX_constant_data
-#define GL_SUNX_constant_data 1
-#define GL_UNPACK_CONSTANT_DATA_SUNX      0x81D5
-#define GL_TEXTURE_CONSTANT_DATA_SUNX     0x81D6
-typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFinishTextureSUNX (void);
-#endif
-#endif /* GL_SUNX_constant_data */
-
-#ifndef GL_SUN_convolution_border_modes
-#define GL_SUN_convolution_border_modes 1
-#define GL_WRAP_BORDER_SUN                0x81D4
-#endif /* GL_SUN_convolution_border_modes */
-
-#ifndef GL_SUN_global_alpha
-#define GL_SUN_global_alpha 1
-#define GL_GLOBAL_ALPHA_SUN               0x81D9
-#define GL_GLOBAL_ALPHA_FACTOR_SUN        0x81DA
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);
-typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor);
-GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor);
-GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor);
-GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor);
-GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor);
-GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor);
-GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor);
-GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor);
-#endif
-#endif /* GL_SUN_global_alpha */
-
-#ifndef GL_SUN_mesh_array
-#define GL_SUN_mesh_array 1
-#define GL_QUAD_MESH_SUN                  0x8614
-#define GL_TRIANGLE_MESH_SUN              0x8615
-typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width);
-#endif
-#endif /* GL_SUN_mesh_array */
-
-#ifndef GL_SUN_slice_accum
-#define GL_SUN_slice_accum 1
-#define GL_SLICE_ACCUM_SUN                0x85CC
-#endif /* GL_SUN_slice_accum */
-
-#ifndef GL_SUN_triangle_list
-#define GL_SUN_triangle_list 1
-#define GL_RESTART_SUN                    0x0001
-#define GL_REPLACE_MIDDLE_SUN             0x0002
-#define GL_REPLACE_OLDEST_SUN             0x0003
-#define GL_TRIANGLE_LIST_SUN              0x81D7
-#define GL_REPLACEMENT_CODE_SUN           0x81D8
-#define GL_REPLACEMENT_CODE_ARRAY_SUN     0x85C0
-#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1
-#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2
-#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3
-#define GL_R1UI_V3F_SUN                   0x85C4
-#define GL_R1UI_C4UB_V3F_SUN              0x85C5
-#define GL_R1UI_C3F_V3F_SUN               0x85C6
-#define GL_R1UI_N3F_V3F_SUN               0x85C7
-#define GL_R1UI_C4F_N3F_V3F_SUN           0x85C8
-#define GL_R1UI_T2F_V3F_SUN               0x85C9
-#define GL_R1UI_T2F_N3F_V3F_SUN           0x85CA
-#define GL_R1UI_T2F_C4F_N3F_V3F_SUN       0x85CB
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void **pointer);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code);
-GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code);
-GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code);
-GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code);
-GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code);
-GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code);
-GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void **pointer);
-#endif
-#endif /* GL_SUN_triangle_list */
-
-#ifndef GL_SUN_vertex
-#define GL_SUN_vertex 1
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
-GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v);
-GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
-#endif
-#endif /* GL_SUN_vertex */
-
-#ifndef GL_WIN_phong_shading
-#define GL_WIN_phong_shading 1
-#define GL_PHONG_WIN                      0x80EA
-#define GL_PHONG_HINT_WIN                 0x80EB
-#endif /* GL_WIN_phong_shading */
-
-#ifndef GL_WIN_specular_fog
-#define GL_WIN_specular_fog 1
-#define GL_FOG_SPECULAR_TEXTURE_WIN       0x80EC
-#endif /* GL_WIN_specular_fog */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles.h
deleted file mode 100644 (file)
index 1e0660c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_opengles.h
- *
- *  This is a simple file to encapsulate the OpenGL ES 1.X API headers.
- */
-#include "SDL_config.h"
-
-#ifdef __IPHONEOS__
-#include <OpenGLES/ES1/gl.h>
-#include <OpenGLES/ES1/glext.h>
-#else
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY
-#endif
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2.h
deleted file mode 100644 (file)
index df29d38..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_opengles2.h
- *
- *  This is a simple file to encapsulate the OpenGL ES 2.0 API headers.
- */
-#include "SDL_config.h"
-
-#ifndef _MSC_VER
-
-#ifdef __IPHONEOS__
-#include <OpenGLES/ES2/gl.h>
-#include <OpenGLES/ES2/glext.h>
-#else
-#include <GLES2/gl2platform.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#endif
-
-#else /* _MSC_VER */
-
-/* OpenGL ES2 headers for Visual Studio */
-#include "SDL_opengles2_khrplatform.h"
-#include "SDL_opengles2_gl2platform.h"
-#include "SDL_opengles2_gl2.h"
-#include "SDL_opengles2_gl2ext.h"
-
-#endif /* _MSC_VER */
-
-#ifndef APIENTRY
-#define APIENTRY GL_APIENTRY
-#endif
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h
deleted file mode 100644 (file)
index c62fb0a..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-#ifndef __gl2_h_
-#define __gl2_h_
-
-/* $Revision: 20555 $ on $Date:: 2013-02-12 14:32:47 -0800 #$ */
-
-/*#include <GLES2/gl2platform.h>*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-/*-------------------------------------------------------------------------
- * Data type definitions
- *-----------------------------------------------------------------------*/
-
-typedef void             GLvoid;
-typedef char             GLchar;
-typedef unsigned int     GLenum;
-typedef unsigned char    GLboolean;
-typedef unsigned int     GLbitfield;
-typedef khronos_int8_t   GLbyte;
-typedef short            GLshort;
-typedef int              GLint;
-typedef int              GLsizei;
-typedef khronos_uint8_t  GLubyte;
-typedef unsigned short   GLushort;
-typedef unsigned int     GLuint;
-typedef khronos_float_t  GLfloat;
-typedef khronos_float_t  GLclampf;
-typedef khronos_int32_t  GLfixed;
-
-/* GL types for handling large vertex buffer objects */
-typedef khronos_intptr_t GLintptr;
-typedef khronos_ssize_t  GLsizeiptr;
-
-/* OpenGL ES core versions */
-#define GL_ES_VERSION_2_0                 1
-
-/* ClearBufferMask */
-#define GL_DEPTH_BUFFER_BIT               0x00000100
-#define GL_STENCIL_BUFFER_BIT             0x00000400
-#define GL_COLOR_BUFFER_BIT               0x00004000
-
-/* Boolean */
-#define GL_FALSE                          0
-#define GL_TRUE                           1
-
-/* BeginMode */
-#define GL_POINTS                         0x0000
-#define GL_LINES                          0x0001
-#define GL_LINE_LOOP                      0x0002
-#define GL_LINE_STRIP                     0x0003
-#define GL_TRIANGLES                      0x0004
-#define GL_TRIANGLE_STRIP                 0x0005
-#define GL_TRIANGLE_FAN                   0x0006
-
-/* AlphaFunction (not supported in ES20) */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* BlendingFactorDest */
-#define GL_ZERO                           0
-#define GL_ONE                            1
-#define GL_SRC_COLOR                      0x0300
-#define GL_ONE_MINUS_SRC_COLOR            0x0301
-#define GL_SRC_ALPHA                      0x0302
-#define GL_ONE_MINUS_SRC_ALPHA            0x0303
-#define GL_DST_ALPHA                      0x0304
-#define GL_ONE_MINUS_DST_ALPHA            0x0305
-
-/* BlendingFactorSrc */
-/*      GL_ZERO */
-/*      GL_ONE */
-#define GL_DST_COLOR                      0x0306
-#define GL_ONE_MINUS_DST_COLOR            0x0307
-#define GL_SRC_ALPHA_SATURATE             0x0308
-/*      GL_SRC_ALPHA */
-/*      GL_ONE_MINUS_SRC_ALPHA */
-/*      GL_DST_ALPHA */
-/*      GL_ONE_MINUS_DST_ALPHA */
-
-/* BlendEquationSeparate */
-#define GL_FUNC_ADD                       0x8006
-#define GL_BLEND_EQUATION                 0x8009
-#define GL_BLEND_EQUATION_RGB             0x8009    /* same as BLEND_EQUATION */
-#define GL_BLEND_EQUATION_ALPHA           0x883D
-
-/* BlendSubtract */
-#define GL_FUNC_SUBTRACT                  0x800A
-#define GL_FUNC_REVERSE_SUBTRACT          0x800B
-
-/* Separate Blend Functions */
-#define GL_BLEND_DST_RGB                  0x80C8
-#define GL_BLEND_SRC_RGB                  0x80C9
-#define GL_BLEND_DST_ALPHA                0x80CA
-#define GL_BLEND_SRC_ALPHA                0x80CB
-#define GL_CONSTANT_COLOR                 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
-#define GL_CONSTANT_ALPHA                 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
-#define GL_BLEND_COLOR                    0x8005
-
-/* Buffer Objects */
-#define GL_ARRAY_BUFFER                   0x8892
-#define GL_ELEMENT_ARRAY_BUFFER           0x8893
-#define GL_ARRAY_BUFFER_BINDING           0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
-
-#define GL_STREAM_DRAW                    0x88E0
-#define GL_STATIC_DRAW                    0x88E4
-#define GL_DYNAMIC_DRAW                   0x88E8
-
-#define GL_BUFFER_SIZE                    0x8764
-#define GL_BUFFER_USAGE                   0x8765
-
-#define GL_CURRENT_VERTEX_ATTRIB          0x8626
-
-/* CullFaceMode */
-#define GL_FRONT                          0x0404
-#define GL_BACK                           0x0405
-#define GL_FRONT_AND_BACK                 0x0408
-
-/* DepthFunction */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* EnableCap */
-#define GL_TEXTURE_2D                     0x0DE1
-#define GL_CULL_FACE                      0x0B44
-#define GL_BLEND                          0x0BE2
-#define GL_DITHER                         0x0BD0
-#define GL_STENCIL_TEST                   0x0B90
-#define GL_DEPTH_TEST                     0x0B71
-#define GL_SCISSOR_TEST                   0x0C11
-#define GL_POLYGON_OFFSET_FILL            0x8037
-#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
-#define GL_SAMPLE_COVERAGE                0x80A0
-
-/* ErrorCode */
-#define GL_NO_ERROR                       0
-#define GL_INVALID_ENUM                   0x0500
-#define GL_INVALID_VALUE                  0x0501
-#define GL_INVALID_OPERATION              0x0502
-#define GL_OUT_OF_MEMORY                  0x0505
-
-/* FrontFaceDirection */
-#define GL_CW                             0x0900
-#define GL_CCW                            0x0901
-
-/* GetPName */
-#define GL_LINE_WIDTH                     0x0B21
-#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
-#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
-#define GL_CULL_FACE_MODE                 0x0B45
-#define GL_FRONT_FACE                     0x0B46
-#define GL_DEPTH_RANGE                    0x0B70
-#define GL_DEPTH_WRITEMASK                0x0B72
-#define GL_DEPTH_CLEAR_VALUE              0x0B73
-#define GL_DEPTH_FUNC                     0x0B74
-#define GL_STENCIL_CLEAR_VALUE            0x0B91
-#define GL_STENCIL_FUNC                   0x0B92
-#define GL_STENCIL_FAIL                   0x0B94
-#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
-#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
-#define GL_STENCIL_REF                    0x0B97
-#define GL_STENCIL_VALUE_MASK             0x0B93
-#define GL_STENCIL_WRITEMASK              0x0B98
-#define GL_STENCIL_BACK_FUNC              0x8800
-#define GL_STENCIL_BACK_FAIL              0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
-#define GL_STENCIL_BACK_REF               0x8CA3
-#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
-#define GL_STENCIL_BACK_WRITEMASK         0x8CA5
-#define GL_VIEWPORT                       0x0BA2
-#define GL_SCISSOR_BOX                    0x0C10
-/*      GL_SCISSOR_TEST */
-#define GL_COLOR_CLEAR_VALUE              0x0C22
-#define GL_COLOR_WRITEMASK                0x0C23
-#define GL_UNPACK_ALIGNMENT               0x0CF5
-#define GL_PACK_ALIGNMENT                 0x0D05
-#define GL_MAX_TEXTURE_SIZE               0x0D33
-#define GL_MAX_VIEWPORT_DIMS              0x0D3A
-#define GL_SUBPIXEL_BITS                  0x0D50
-#define GL_RED_BITS                       0x0D52
-#define GL_GREEN_BITS                     0x0D53
-#define GL_BLUE_BITS                      0x0D54
-#define GL_ALPHA_BITS                     0x0D55
-#define GL_DEPTH_BITS                     0x0D56
-#define GL_STENCIL_BITS                   0x0D57
-#define GL_POLYGON_OFFSET_UNITS           0x2A00
-/*      GL_POLYGON_OFFSET_FILL */
-#define GL_POLYGON_OFFSET_FACTOR          0x8038
-#define GL_TEXTURE_BINDING_2D             0x8069
-#define GL_SAMPLE_BUFFERS                 0x80A8
-#define GL_SAMPLES                        0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
-
-/* GetTextureParameter */
-/*      GL_TEXTURE_MAG_FILTER */
-/*      GL_TEXTURE_MIN_FILTER */
-/*      GL_TEXTURE_WRAP_S */
-/*      GL_TEXTURE_WRAP_T */
-
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
-
-/* HintMode */
-#define GL_DONT_CARE                      0x1100
-#define GL_FASTEST                        0x1101
-#define GL_NICEST                         0x1102
-
-/* HintTarget */
-#define GL_GENERATE_MIPMAP_HINT            0x8192
-
-/* DataType */
-#define GL_BYTE                           0x1400
-#define GL_UNSIGNED_BYTE                  0x1401
-#define GL_SHORT                          0x1402
-#define GL_UNSIGNED_SHORT                 0x1403
-#define GL_INT                            0x1404
-#define GL_UNSIGNED_INT                   0x1405
-#define GL_FLOAT                          0x1406
-#define GL_FIXED                          0x140C
-
-/* PixelFormat */
-#define GL_DEPTH_COMPONENT                0x1902
-#define GL_ALPHA                          0x1906
-#define GL_RGB                            0x1907
-#define GL_RGBA                           0x1908
-#define GL_LUMINANCE                      0x1909
-#define GL_LUMINANCE_ALPHA                0x190A
-
-/* PixelType */
-/*      GL_UNSIGNED_BYTE */
-#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
-#define GL_UNSIGNED_SHORT_5_6_5           0x8363
-
-/* Shaders */
-#define GL_FRAGMENT_SHADER                  0x8B30
-#define GL_VERTEX_SHADER                    0x8B31
-#define GL_MAX_VERTEX_ATTRIBS               0x8869
-#define GL_MAX_VERTEX_UNIFORM_VECTORS       0x8DFB
-#define GL_MAX_VARYING_VECTORS              0x8DFC
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS   0x8B4C
-#define GL_MAX_TEXTURE_IMAGE_UNITS          0x8872
-#define GL_MAX_FRAGMENT_UNIFORM_VECTORS     0x8DFD
-#define GL_SHADER_TYPE                      0x8B4F
-#define GL_DELETE_STATUS                    0x8B80
-#define GL_LINK_STATUS                      0x8B82
-#define GL_VALIDATE_STATUS                  0x8B83
-#define GL_ATTACHED_SHADERS                 0x8B85
-#define GL_ACTIVE_UNIFORMS                  0x8B86
-#define GL_ACTIVE_UNIFORM_MAX_LENGTH        0x8B87
-#define GL_ACTIVE_ATTRIBUTES                0x8B89
-#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH      0x8B8A
-#define GL_SHADING_LANGUAGE_VERSION         0x8B8C
-#define GL_CURRENT_PROGRAM                  0x8B8D
-
-/* StencilFunction */
-#define GL_NEVER                          0x0200
-#define GL_LESS                           0x0201
-#define GL_EQUAL                          0x0202
-#define GL_LEQUAL                         0x0203
-#define GL_GREATER                        0x0204
-#define GL_NOTEQUAL                       0x0205
-#define GL_GEQUAL                         0x0206
-#define GL_ALWAYS                         0x0207
-
-/* StencilOp */
-/*      GL_ZERO */
-#define GL_KEEP                           0x1E00
-#define GL_REPLACE                        0x1E01
-#define GL_INCR                           0x1E02
-#define GL_DECR                           0x1E03
-#define GL_INVERT                         0x150A
-#define GL_INCR_WRAP                      0x8507
-#define GL_DECR_WRAP                      0x8508
-
-/* StringName */
-#define GL_VENDOR                         0x1F00
-#define GL_RENDERER                       0x1F01
-#define GL_VERSION                        0x1F02
-#define GL_EXTENSIONS                     0x1F03
-
-/* TextureMagFilter */
-#define GL_NEAREST                        0x2600
-#define GL_LINEAR                         0x2601
-
-/* TextureMinFilter */
-/*      GL_NEAREST */
-/*      GL_LINEAR */
-#define GL_NEAREST_MIPMAP_NEAREST         0x2700
-#define GL_LINEAR_MIPMAP_NEAREST          0x2701
-#define GL_NEAREST_MIPMAP_LINEAR          0x2702
-#define GL_LINEAR_MIPMAP_LINEAR           0x2703
-
-/* TextureParameterName */
-#define GL_TEXTURE_MAG_FILTER             0x2800
-#define GL_TEXTURE_MIN_FILTER             0x2801
-#define GL_TEXTURE_WRAP_S                 0x2802
-#define GL_TEXTURE_WRAP_T                 0x2803
-
-/* TextureTarget */
-/*      GL_TEXTURE_2D */
-#define GL_TEXTURE                        0x1702
-
-#define GL_TEXTURE_CUBE_MAP               0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
-
-/* TextureUnit */
-#define GL_TEXTURE0                       0x84C0
-#define GL_TEXTURE1                       0x84C1
-#define GL_TEXTURE2                       0x84C2
-#define GL_TEXTURE3                       0x84C3
-#define GL_TEXTURE4                       0x84C4
-#define GL_TEXTURE5                       0x84C5
-#define GL_TEXTURE6                       0x84C6
-#define GL_TEXTURE7                       0x84C7
-#define GL_TEXTURE8                       0x84C8
-#define GL_TEXTURE9                       0x84C9
-#define GL_TEXTURE10                      0x84CA
-#define GL_TEXTURE11                      0x84CB
-#define GL_TEXTURE12                      0x84CC
-#define GL_TEXTURE13                      0x84CD
-#define GL_TEXTURE14                      0x84CE
-#define GL_TEXTURE15                      0x84CF
-#define GL_TEXTURE16                      0x84D0
-#define GL_TEXTURE17                      0x84D1
-#define GL_TEXTURE18                      0x84D2
-#define GL_TEXTURE19                      0x84D3
-#define GL_TEXTURE20                      0x84D4
-#define GL_TEXTURE21                      0x84D5
-#define GL_TEXTURE22                      0x84D6
-#define GL_TEXTURE23                      0x84D7
-#define GL_TEXTURE24                      0x84D8
-#define GL_TEXTURE25                      0x84D9
-#define GL_TEXTURE26                      0x84DA
-#define GL_TEXTURE27                      0x84DB
-#define GL_TEXTURE28                      0x84DC
-#define GL_TEXTURE29                      0x84DD
-#define GL_TEXTURE30                      0x84DE
-#define GL_TEXTURE31                      0x84DF
-#define GL_ACTIVE_TEXTURE                 0x84E0
-
-/* TextureWrapMode */
-#define GL_REPEAT                         0x2901
-#define GL_CLAMP_TO_EDGE                  0x812F
-#define GL_MIRRORED_REPEAT                0x8370
-
-/* Uniform Types */
-#define GL_FLOAT_VEC2                     0x8B50
-#define GL_FLOAT_VEC3                     0x8B51
-#define GL_FLOAT_VEC4                     0x8B52
-#define GL_INT_VEC2                       0x8B53
-#define GL_INT_VEC3                       0x8B54
-#define GL_INT_VEC4                       0x8B55
-#define GL_BOOL                           0x8B56
-#define GL_BOOL_VEC2                      0x8B57
-#define GL_BOOL_VEC3                      0x8B58
-#define GL_BOOL_VEC4                      0x8B59
-#define GL_FLOAT_MAT2                     0x8B5A
-#define GL_FLOAT_MAT3                     0x8B5B
-#define GL_FLOAT_MAT4                     0x8B5C
-#define GL_SAMPLER_2D                     0x8B5E
-#define GL_SAMPLER_CUBE                   0x8B60
-
-/* Vertex Arrays */
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED        0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE           0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE         0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE           0x8625
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED     0x886A
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER        0x8645
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
-
-/* Read Format */
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE   0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
-
-/* Shader Source */
-#define GL_COMPILE_STATUS                 0x8B81
-#define GL_INFO_LOG_LENGTH                0x8B84
-#define GL_SHADER_SOURCE_LENGTH           0x8B88
-#define GL_SHADER_COMPILER                0x8DFA
-
-/* Shader Binary */
-#define GL_SHADER_BINARY_FORMATS          0x8DF8
-#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
-
-/* Shader Precision-Specified Types */
-#define GL_LOW_FLOAT                      0x8DF0
-#define GL_MEDIUM_FLOAT                   0x8DF1
-#define GL_HIGH_FLOAT                     0x8DF2
-#define GL_LOW_INT                        0x8DF3
-#define GL_MEDIUM_INT                     0x8DF4
-#define GL_HIGH_INT                       0x8DF5
-
-/* Framebuffer Object. */
-#define GL_FRAMEBUFFER                    0x8D40
-#define GL_RENDERBUFFER                   0x8D41
-
-#define GL_RGBA4                          0x8056
-#define GL_RGB5_A1                        0x8057
-#define GL_RGB565                         0x8D62
-#define GL_DEPTH_COMPONENT16              0x81A5
-#define GL_STENCIL_INDEX8                 0x8D48
-
-#define GL_RENDERBUFFER_WIDTH             0x8D42
-#define GL_RENDERBUFFER_HEIGHT            0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44
-#define GL_RENDERBUFFER_RED_SIZE          0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55
-
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
-
-#define GL_COLOR_ATTACHMENT0              0x8CE0
-#define GL_DEPTH_ATTACHMENT               0x8D00
-#define GL_STENCIL_ATTACHMENT             0x8D20
-
-#define GL_NONE                           0
-
-#define GL_FRAMEBUFFER_COMPLETE                      0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT         0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS         0x8CD9
-#define GL_FRAMEBUFFER_UNSUPPORTED                   0x8CDD
-
-#define GL_FRAMEBUFFER_BINDING            0x8CA6
-#define GL_RENDERBUFFER_BINDING           0x8CA7
-#define GL_MAX_RENDERBUFFER_SIZE          0x84E8
-
-#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
-
-/*-------------------------------------------------------------------------
- * GL core functions.
- *-----------------------------------------------------------------------*/
-
-GL_APICALL void         GL_APIENTRY glActiveTexture (GLenum texture);
-GL_APICALL void         GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
-GL_APICALL void         GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
-GL_APICALL void         GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
-GL_APICALL void         GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
-GL_APICALL void         GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
-GL_APICALL void         GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-GL_APICALL void         GL_APIENTRY glBlendEquation ( GLenum mode );
-GL_APICALL void         GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
-GL_APICALL void         GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
-GL_APICALL void         GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GL_APICALL void         GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
-GL_APICALL void         GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
-GL_APICALL GLenum       GL_APIENTRY glCheckFramebufferStatus (GLenum target);
-GL_APICALL void         GL_APIENTRY glClear (GLbitfield mask);
-GL_APICALL void         GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-GL_APICALL void         GL_APIENTRY glClearDepthf (GLclampf depth);
-GL_APICALL void         GL_APIENTRY glClearStencil (GLint s);
-GL_APICALL void         GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-GL_APICALL void         GL_APIENTRY glCompileShader (GLuint shader);
-GL_APICALL void         GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void         GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void         GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GL_APICALL void         GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL GLuint       GL_APIENTRY glCreateProgram (void);
-GL_APICALL GLuint       GL_APIENTRY glCreateShader (GLenum type);
-GL_APICALL void         GL_APIENTRY glCullFace (GLenum mode);
-GL_APICALL void         GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers);
-GL_APICALL void         GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers);
-GL_APICALL void         GL_APIENTRY glDeleteProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers);
-GL_APICALL void         GL_APIENTRY glDeleteShader (GLuint shader);
-GL_APICALL void         GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures);
-GL_APICALL void         GL_APIENTRY glDepthFunc (GLenum func);
-GL_APICALL void         GL_APIENTRY glDepthMask (GLboolean flag);
-GL_APICALL void         GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
-GL_APICALL void         GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
-GL_APICALL void         GL_APIENTRY glDisable (GLenum cap);
-GL_APICALL void         GL_APIENTRY glDisableVertexAttribArray (GLuint index);
-GL_APICALL void         GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
-GL_APICALL void         GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
-GL_APICALL void         GL_APIENTRY glEnable (GLenum cap);
-GL_APICALL void         GL_APIENTRY glEnableVertexAttribArray (GLuint index);
-GL_APICALL void         GL_APIENTRY glFinish (void);
-GL_APICALL void         GL_APIENTRY glFlush (void);
-GL_APICALL void         GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GL_APICALL void         GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GL_APICALL void         GL_APIENTRY glFrontFace (GLenum mode);
-GL_APICALL void         GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers);
-GL_APICALL void         GL_APIENTRY glGenerateMipmap (GLenum target);
-GL_APICALL void         GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers);
-GL_APICALL void         GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers);
-GL_APICALL void         GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures);
-GL_APICALL void         GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
-GL_APICALL GLint        GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params);
-GL_APICALL void         GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL GLenum       GL_APIENTRY glGetError (void);
-GL_APICALL void         GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-GL_APICALL void         GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-GL_APICALL void         GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
-GL_APICALL void         GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
-GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name);
-GL_APICALL void         GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params);
-GL_APICALL GLint        GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer);
-GL_APICALL void         GL_APIENTRY glHint (GLenum target, GLenum mode);
-GL_APICALL GLboolean    GL_APIENTRY glIsBuffer (GLuint buffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsEnabled (GLenum cap);
-GL_APICALL GLboolean    GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsProgram (GLuint program);
-GL_APICALL GLboolean    GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsShader (GLuint shader);
-GL_APICALL GLboolean    GL_APIENTRY glIsTexture (GLuint texture);
-GL_APICALL void         GL_APIENTRY glLineWidth (GLfloat width);
-GL_APICALL void         GL_APIENTRY glLinkProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
-GL_APICALL void         GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
-GL_APICALL void         GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glReleaseShaderCompiler (void);
-GL_APICALL void         GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void         GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
-GL_APICALL void         GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL void         GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
-GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
-GL_APICALL void         GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilMask (GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
-GL_APICALL void         GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
-GL_APICALL void         GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
-GL_APICALL void         GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params);
-GL_APICALL void         GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
-GL_APICALL void         GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params);
-GL_APICALL void         GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glUniform1f (GLint location, GLfloat x);
-GL_APICALL void         GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform1i (GLint location, GLint x);
-GL_APICALL void         GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y);
-GL_APICALL void         GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y);
-GL_APICALL void         GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void         GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z);
-GL_APICALL void         GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void         GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
-GL_APICALL void         GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUseProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glValidateProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x);
-GL_APICALL void         GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
-GL_APICALL void         GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void         GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void         GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
-GL_APICALL void         GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl2_h_ */
-
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h
deleted file mode 100644 (file)
index e8ca8b1..0000000
+++ /dev/null
@@ -1,2050 +0,0 @@
-#ifndef __gl2ext_h_
-#define __gl2ext_h_
-
-/* $Revision: 22801 $ on $Date:: 2013-08-21 03:20:48 -0700 #$ */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-#ifndef GL_APIENTRYP
-#   define GL_APIENTRYP GL_APIENTRY*
-#endif
-
-/* New types shared by several extensions */
-
-#ifndef __gl3_h_
-/* These are defined with respect to <inttypes.h> in the
- * Apple extension spec, but they are also used by non-APPLE
- * extensions, and in the Khronos header we use the Khronos
- * portable types in khrplatform.h, which must be defined.
- */
-typedef khronos_int64_t GLint64;
-typedef khronos_uint64_t GLuint64;
-typedef struct __GLsync *GLsync;
-#endif
-
-
-/*------------------------------------------------------------------------*
- * OES extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_ETC1_RGB8_OES                                        0x8D64
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_PALETTE4_RGB8_OES                                    0x8B90
-#define GL_PALETTE4_RGBA8_OES                                   0x8B91
-#define GL_PALETTE4_R5_G6_B5_OES                                0x8B92
-#define GL_PALETTE4_RGBA4_OES                                   0x8B93
-#define GL_PALETTE4_RGB5_A1_OES                                 0x8B94
-#define GL_PALETTE8_RGB8_OES                                    0x8B95
-#define GL_PALETTE8_RGBA8_OES                                   0x8B96
-#define GL_PALETTE8_R5_G6_B5_OES                                0x8B97
-#define GL_PALETTE8_RGBA4_OES                                   0x8B98
-#define GL_PALETTE8_RGB5_A1_OES                                 0x8B99
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_DEPTH_COMPONENT24_OES                                0x81A6
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_DEPTH_COMPONENT32_OES                                0x81A7
-#endif
-
-/* GL_OES_depth_texture */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-typedef void* GLeglImageOES;
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-/* GLeglImageOES defined in GL_OES_EGL_image already. */
-#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65
-#define GL_SAMPLER_EXTERNAL_OES                                 0x8D66
-#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67
-#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_UNSIGNED_INT                                         0x1405
-#endif
-
-/* GL_OES_get_program_binary */
-#ifndef GL_OES_get_program_binary
-#define GL_PROGRAM_BINARY_LENGTH_OES                            0x8741
-#define GL_NUM_PROGRAM_BINARY_FORMATS_OES                       0x87FE
-#define GL_PROGRAM_BINARY_FORMATS_OES                           0x87FF
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_WRITE_ONLY_OES                                       0x88B9
-#define GL_BUFFER_ACCESS_OES                                    0x88BB
-#define GL_BUFFER_MAPPED_OES                                    0x88BC
-#define GL_BUFFER_MAP_POINTER_OES                               0x88BD
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_DEPTH_STENCIL_OES                                    0x84F9
-#define GL_UNSIGNED_INT_24_8_OES                                0x84FA
-#define GL_DEPTH24_STENCIL8_OES                                 0x88F0
-#endif
-
-/* GL_OES_required_internalformat */
-#ifndef GL_OES_required_internalformat
-#define GL_ALPHA8_OES                                           0x803C
-#define GL_DEPTH_COMPONENT16_OES                                0x81A5
-/* reuse GL_DEPTH_COMPONENT24_OES */
-/* reuse GL_DEPTH24_STENCIL8_OES */
-/* reuse GL_DEPTH_COMPONENT32_OES */
-#define GL_LUMINANCE4_ALPHA4_OES                                0x8043
-#define GL_LUMINANCE8_ALPHA8_OES                                0x8045
-#define GL_LUMINANCE8_OES                                       0x8040
-#define GL_RGBA4_OES                                            0x8056
-#define GL_RGB5_A1_OES                                          0x8057
-#define GL_RGB565_OES                                           0x8D62
-/* reuse GL_RGB8_OES */
-/* reuse GL_RGBA8_OES */
-/* reuse GL_RGB10_EXT */
-/* reuse GL_RGB10_A2_EXT */
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_RGB8_OES                                             0x8051
-#define GL_RGBA8_OES                                            0x8058
-#endif
-
-/* GL_OES_standard_derivatives */
-#ifndef GL_OES_standard_derivatives
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES                  0x8B8B
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_STENCIL_INDEX1_OES                                   0x8D46
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_STENCIL_INDEX4_OES                                   0x8D47
-#endif
-
-#ifndef GL_OES_surfaceless_context
-#define GL_FRAMEBUFFER_UNDEFINED_OES                            0x8219
-#endif
-
-/* GL_OES_texture_3D */
-#ifndef GL_OES_texture_3D
-#define GL_TEXTURE_WRAP_R_OES                                   0x8072
-#define GL_TEXTURE_3D_OES                                       0x806F
-#define GL_TEXTURE_BINDING_3D_OES                               0x806A
-#define GL_MAX_3D_TEXTURE_SIZE_OES                              0x8073
-#define GL_SAMPLER_3D_OES                                       0x8B5F
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES        0x8CD4
-#endif
-
-/* GL_OES_texture_float */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_float_linear */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_half_float */
-#ifndef GL_OES_texture_half_float
-#define GL_HALF_FLOAT_OES                                       0x8D61
-#endif
-
-/* GL_OES_texture_half_float_linear */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_npot */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_VERTEX_ARRAY_BINDING_OES                             0x85B5
-#endif
-
-/* GL_OES_vertex_half_float */
-/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */
-
-/* GL_OES_vertex_type_10_10_10_2 */
-#ifndef GL_OES_vertex_type_10_10_10_2
-#define GL_UNSIGNED_INT_10_10_10_2_OES                          0x8DF6
-#define GL_INT_10_10_10_2_OES                                   0x8DF7
-#endif
-
-/*------------------------------------------------------------------------*
- * KHR extension tokens
- *------------------------------------------------------------------------*/
-
-#ifndef GL_KHR_debug
-typedef void (GL_APIENTRYP GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR                         0x8242
-#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR                 0x8243
-#define GL_DEBUG_CALLBACK_FUNCTION_KHR                          0x8244
-#define GL_DEBUG_CALLBACK_USER_PARAM_KHR                        0x8245
-#define GL_DEBUG_SOURCE_API_KHR                                 0x8246
-#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR                       0x8247
-#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR                     0x8248
-#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR                         0x8249
-#define GL_DEBUG_SOURCE_APPLICATION_KHR                         0x824A
-#define GL_DEBUG_SOURCE_OTHER_KHR                               0x824B
-#define GL_DEBUG_TYPE_ERROR_KHR                                 0x824C
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR                   0x824D
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR                    0x824E
-#define GL_DEBUG_TYPE_PORTABILITY_KHR                           0x824F
-#define GL_DEBUG_TYPE_PERFORMANCE_KHR                           0x8250
-#define GL_DEBUG_TYPE_OTHER_KHR                                 0x8251
-#define GL_DEBUG_TYPE_MARKER_KHR                                0x8268
-#define GL_DEBUG_TYPE_PUSH_GROUP_KHR                            0x8269
-#define GL_DEBUG_TYPE_POP_GROUP_KHR                             0x826A
-#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR                      0x826B
-#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR                      0x826C
-#define GL_DEBUG_GROUP_STACK_DEPTH_KHR                          0x826D
-#define GL_BUFFER_KHR                                           0x82E0
-#define GL_SHADER_KHR                                           0x82E1
-#define GL_PROGRAM_KHR                                          0x82E2
-#define GL_QUERY_KHR                                            0x82E3
-/* PROGRAM_PIPELINE only in GL */
-#define GL_SAMPLER_KHR                                          0x82E6
-/* DISPLAY_LIST only in GL */
-#define GL_MAX_LABEL_LENGTH_KHR                                 0x82E8
-#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR                         0x9143
-#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR                        0x9144
-#define GL_DEBUG_LOGGED_MESSAGES_KHR                            0x9145
-#define GL_DEBUG_SEVERITY_HIGH_KHR                              0x9146
-#define GL_DEBUG_SEVERITY_MEDIUM_KHR                            0x9147
-#define GL_DEBUG_SEVERITY_LOW_KHR                               0x9148
-#define GL_DEBUG_OUTPUT_KHR                                     0x92E0
-#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR                           0x00000002
-#define GL_STACK_OVERFLOW_KHR                                   0x0503
-#define GL_STACK_UNDERFLOW_KHR                                  0x0504
-#endif
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR                         0x93B0
-#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR                         0x93B1
-#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR                         0x93B2
-#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR                         0x93B3
-#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR                         0x93B4
-#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR                         0x93B5
-#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR                         0x93B6
-#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR                         0x93B7
-#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR                        0x93B8
-#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR                        0x93B9
-#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR                        0x93BA
-#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR                       0x93BB
-#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR                       0x93BC
-#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR                       0x93BD
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR                 0x93D0
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR                 0x93D1
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR                 0x93D2
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR                 0x93D3
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR                 0x93D4
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR                 0x93D5
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR                 0x93D6
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR                 0x93D7
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR                0x93D8
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR                0x93D9
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR                0x93DA
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR               0x93DB
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR               0x93DC
-#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR               0x93DD
-#endif
-
-/*------------------------------------------------------------------------*
- * AMD extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_3DC_X_AMD                                            0x87F9
-#define GL_3DC_XY_AMD                                           0x87FA
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_ATC_RGB_AMD                                          0x8C92
-#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD                          0x8C93
-#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD                      0x87EE
-#endif
-
-/* GL_AMD_performance_monitor */
-#ifndef GL_AMD_performance_monitor
-#define GL_COUNTER_TYPE_AMD                                     0x8BC0
-#define GL_COUNTER_RANGE_AMD                                    0x8BC1
-#define GL_UNSIGNED_INT64_AMD                                   0x8BC2
-#define GL_PERCENTAGE_AMD                                       0x8BC3
-#define GL_PERFMON_RESULT_AVAILABLE_AMD                         0x8BC4
-#define GL_PERFMON_RESULT_SIZE_AMD                              0x8BC5
-#define GL_PERFMON_RESULT_AMD                                   0x8BC6
-#endif
-
-/* GL_AMD_program_binary_Z400 */
-#ifndef GL_AMD_program_binary_Z400
-#define GL_Z400_BINARY_AMD                                      0x8740
-#endif
-
-/*------------------------------------------------------------------------*
- * ANGLE extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ANGLE_depth_texture */
-#ifndef GL_ANGLE_depth_texture
-#define GL_DEPTH_COMPONENT                                      0x1902
-#define GL_DEPTH_STENCIL_OES                                    0x84F9
-#define GL_UNSIGNED_SHORT                                       0x1403
-#define GL_UNSIGNED_INT                                         0x1405
-#define GL_UNSIGNED_INT_24_8_OES                                0x84FA
-#define GL_DEPTH_COMPONENT16                                    0x81A5
-#define GL_DEPTH_COMPONENT32_OES                                0x81A7
-#define GL_DEPTH24_STENCIL8_OES                                 0x88F0
-#endif
-
-/* GL_ANGLE_framebuffer_blit */
-#ifndef GL_ANGLE_framebuffer_blit
-#define GL_READ_FRAMEBUFFER_ANGLE                               0x8CA8
-#define GL_DRAW_FRAMEBUFFER_ANGLE                               0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE                       0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_ANGLE                       0x8CAA
-#endif
-
-/* GL_ANGLE_framebuffer_multisample */
-#ifndef GL_ANGLE_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_ANGLE                           0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE             0x8D56
-#define GL_MAX_SAMPLES_ANGLE                                    0x8D57
-#endif
-
-/* GL_ANGLE_instanced_arrays */
-#ifndef GL_ANGLE_instanced_arrays
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE                    0x88FE
-#endif
-
-/* GL_ANGLE_pack_reverse_row_order */
-#ifndef GL_ANGLE_pack_reverse_row_order
-#define GL_PACK_REVERSE_ROW_ORDER_ANGLE                         0x93A4
-#endif
-
-/* GL_ANGLE_program_binary */
-#ifndef GL_ANGLE_program_binary
-#define GL_PROGRAM_BINARY_ANGLE                                 0x93A6
-#endif
-
-/* GL_ANGLE_texture_compression_dxt3 */
-#ifndef GL_ANGLE_texture_compression_dxt3
-#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE                      0x83F2
-#endif
-
-/* GL_ANGLE_texture_compression_dxt5 */
-#ifndef GL_ANGLE_texture_compression_dxt5
-#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE                      0x83F3
-#endif
-
-/* GL_ANGLE_texture_usage */
-#ifndef GL_ANGLE_texture_usage
-#define GL_TEXTURE_USAGE_ANGLE                                  0x93A2
-#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE                         0x93A3
-#endif
-
-/* GL_ANGLE_translated_shader_source */
-#ifndef GL_ANGLE_translated_shader_source
-#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE                0x93A0
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_copy_texture_levels */
-/* No new tokens introduced by this extension. */
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_APPLE                           0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE             0x8D56
-#define GL_MAX_SAMPLES_APPLE                                    0x8D57
-#define GL_READ_FRAMEBUFFER_APPLE                               0x8CA8
-#define GL_DRAW_FRAMEBUFFER_APPLE                               0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE                       0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_APPLE                       0x8CAA
-#endif
-
-/* GL_APPLE_rgb_422 */
-#ifndef GL_APPLE_rgb_422
-#define GL_RGB_422_APPLE                                        0x8A1F
-#define GL_UNSIGNED_SHORT_8_8_APPLE                             0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_APPLE                         0x85BB
-#endif
-
-/* GL_APPLE_sync */
-#ifndef GL_APPLE_sync
-
-#define GL_SYNC_OBJECT_APPLE                                    0x8A53
-#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE                        0x9111
-#define GL_OBJECT_TYPE_APPLE                                    0x9112
-#define GL_SYNC_CONDITION_APPLE                                 0x9113
-#define GL_SYNC_STATUS_APPLE                                    0x9114
-#define GL_SYNC_FLAGS_APPLE                                     0x9115
-#define GL_SYNC_FENCE_APPLE                                     0x9116
-#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE                     0x9117
-#define GL_UNSIGNALED_APPLE                                     0x9118
-#define GL_SIGNALED_APPLE                                       0x9119
-#define GL_ALREADY_SIGNALED_APPLE                               0x911A
-#define GL_TIMEOUT_EXPIRED_APPLE                                0x911B
-#define GL_CONDITION_SATISFIED_APPLE                            0x911C
-#define GL_WAIT_FAILED_APPLE                                    0x911D
-#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE                        0x00000001
-#define GL_TIMEOUT_IGNORED_APPLE                                0xFFFFFFFFFFFFFFFFull
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_TEXTURE_MAX_LEVEL_APPLE                              0x813D
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_program_binary */
-#ifndef GL_ARM_mali_program_binary
-#define GL_MALI_PROGRAM_BINARY_ARM                              0x8F61
-#endif
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_MALI_SHADER_BINARY_ARM                               0x8F60
-#endif
-
-/* GL_ARM_rgba8 */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
- * EXT extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_MIN_EXT                                              0x8007
-#define GL_MAX_EXT                                              0x8008
-#endif
-
-/* GL_EXT_color_buffer_half_float */
-#ifndef GL_EXT_color_buffer_half_float
-#define GL_RGBA16F_EXT                                          0x881A
-#define GL_RGB16F_EXT                                           0x881B
-#define GL_RG16F_EXT                                            0x822F
-#define GL_R16F_EXT                                             0x822D
-#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT            0x8211
-#define GL_UNSIGNED_NORMALIZED_EXT                              0x8C17
-#endif
-
-/* GL_EXT_debug_label */
-#ifndef GL_EXT_debug_label
-#define GL_PROGRAM_PIPELINE_OBJECT_EXT                          0x8A4F
-#define GL_PROGRAM_OBJECT_EXT                                   0x8B40
-#define GL_SHADER_OBJECT_EXT                                    0x8B48
-#define GL_BUFFER_OBJECT_EXT                                    0x9151
-#define GL_QUERY_OBJECT_EXT                                     0x9153
-#define GL_VERTEX_ARRAY_OBJECT_EXT                              0x9154
-#endif
-
-/* GL_EXT_debug_marker */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_COLOR_EXT                                            0x1800
-#define GL_DEPTH_EXT                                            0x1801
-#define GL_STENCIL_EXT                                          0x1802
-#endif
-
-#ifndef GL_EXT_disjoint_timer_query
-#define GL_QUERY_COUNTER_BITS_EXT                               0x8864
-#define GL_CURRENT_QUERY_EXT                                    0x8865
-#define GL_QUERY_RESULT_EXT                                     0x8866
-#define GL_QUERY_RESULT_AVAILABLE_EXT                           0x8867
-#define GL_TIME_ELAPSED_EXT                                     0x88BF
-#define GL_TIMESTAMP_EXT                                        0x8E28
-#define GL_GPU_DISJOINT_EXT                                     0x8FBB
-#endif
-
-#ifndef GL_EXT_draw_buffers
-#define GL_EXT_draw_buffers 1
-#define GL_MAX_COLOR_ATTACHMENTS_EXT                            0x8CDF
-#define GL_MAX_DRAW_BUFFERS_EXT                                 0x8824
-#define GL_DRAW_BUFFER0_EXT                                     0x8825
-#define GL_DRAW_BUFFER1_EXT                                     0x8826
-#define GL_DRAW_BUFFER2_EXT                                     0x8827
-#define GL_DRAW_BUFFER3_EXT                                     0x8828
-#define GL_DRAW_BUFFER4_EXT                                     0x8829
-#define GL_DRAW_BUFFER5_EXT                                     0x882A
-#define GL_DRAW_BUFFER6_EXT                                     0x882B
-#define GL_DRAW_BUFFER7_EXT                                     0x882C
-#define GL_DRAW_BUFFER8_EXT                                     0x882D
-#define GL_DRAW_BUFFER9_EXT                                     0x882E
-#define GL_DRAW_BUFFER10_EXT                                    0x882F
-#define GL_DRAW_BUFFER11_EXT                                    0x8830
-#define GL_DRAW_BUFFER12_EXT                                    0x8831
-#define GL_DRAW_BUFFER13_EXT                                    0x8832
-#define GL_DRAW_BUFFER14_EXT                                    0x8833
-#define GL_DRAW_BUFFER15_EXT                                    0x8834
-#define GL_COLOR_ATTACHMENT0_EXT                                0x8CE0
-#define GL_COLOR_ATTACHMENT1_EXT                                0x8CE1
-#define GL_COLOR_ATTACHMENT2_EXT                                0x8CE2
-#define GL_COLOR_ATTACHMENT3_EXT                                0x8CE3
-#define GL_COLOR_ATTACHMENT4_EXT                                0x8CE4
-#define GL_COLOR_ATTACHMENT5_EXT                                0x8CE5
-#define GL_COLOR_ATTACHMENT6_EXT                                0x8CE6
-#define GL_COLOR_ATTACHMENT7_EXT                                0x8CE7
-#define GL_COLOR_ATTACHMENT8_EXT                                0x8CE8
-#define GL_COLOR_ATTACHMENT9_EXT                                0x8CE9
-#define GL_COLOR_ATTACHMENT10_EXT                               0x8CEA
-#define GL_COLOR_ATTACHMENT11_EXT                               0x8CEB
-#define GL_COLOR_ATTACHMENT12_EXT                               0x8CEC
-#define GL_COLOR_ATTACHMENT13_EXT                               0x8CED
-#define GL_COLOR_ATTACHMENT14_EXT                               0x8CEE
-#define GL_COLOR_ATTACHMENT15_EXT                               0x8CEF
-#endif
-
-/* GL_EXT_map_buffer_range */
-#ifndef GL_EXT_map_buffer_range
-#define GL_MAP_READ_BIT_EXT                                     0x0001
-#define GL_MAP_WRITE_BIT_EXT                                    0x0002
-#define GL_MAP_INVALIDATE_RANGE_BIT_EXT                         0x0004
-#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT                        0x0008
-#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT                           0x0010
-#define GL_MAP_UNSYNCHRONIZED_BIT_EXT                           0x0020
-#endif
-
-/* GL_EXT_multisampled_render_to_texture */
-#ifndef GL_EXT_multisampled_render_to_texture
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT           0x8D6C
-/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */
-#define GL_RENDERBUFFER_SAMPLES_EXT                             0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT               0x8D56
-#define GL_MAX_SAMPLES_EXT                                      0x8D57
-#endif
-
-/* GL_EXT_multiview_draw_buffers */
-#ifndef GL_EXT_multiview_draw_buffers
-#define GL_COLOR_ATTACHMENT_EXT                                 0x90F0
-#define GL_MULTIVIEW_EXT                                        0x90F1
-#define GL_DRAW_BUFFER_EXT                                      0x0C01
-#define GL_READ_BUFFER_EXT                                      0x0C02
-#define GL_MAX_MULTIVIEW_BUFFERS_EXT                            0x90F2
-#endif
-
-/* GL_EXT_multi_draw_arrays */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_occlusion_query_boolean */
-#ifndef GL_EXT_occlusion_query_boolean
-#define GL_ANY_SAMPLES_PASSED_EXT                               0x8C2F
-#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT                  0x8D6A
-#define GL_CURRENT_QUERY_EXT                                    0x8865
-#define GL_QUERY_RESULT_EXT                                     0x8866
-#define GL_QUERY_RESULT_AVAILABLE_EXT                           0x8867
-#endif
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_BGRA_EXT                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT                       0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT                       0x8366
-#endif
-
-/* GL_EXT_robustness */
-#ifndef GL_EXT_robustness
-/* reuse GL_NO_ERROR */
-#define GL_GUILTY_CONTEXT_RESET_EXT                             0x8253
-#define GL_INNOCENT_CONTEXT_RESET_EXT                           0x8254
-#define GL_UNKNOWN_CONTEXT_RESET_EXT                            0x8255
-#define GL_CONTEXT_ROBUST_ACCESS_EXT                            0x90F3
-#define GL_RESET_NOTIFICATION_STRATEGY_EXT                      0x8256
-#define GL_LOSE_CONTEXT_ON_RESET_EXT                            0x8252
-#define GL_NO_RESET_NOTIFICATION_EXT                            0x8261
-#endif
-
-/* GL_EXT_separate_shader_objects */
-#ifndef GL_EXT_separate_shader_objects
-#define GL_VERTEX_SHADER_BIT_EXT                                0x00000001
-#define GL_FRAGMENT_SHADER_BIT_EXT                              0x00000002
-#define GL_ALL_SHADER_BITS_EXT                                  0xFFFFFFFF
-#define GL_PROGRAM_SEPARABLE_EXT                                0x8258
-#define GL_ACTIVE_PROGRAM_EXT                                   0x8259
-#define GL_PROGRAM_PIPELINE_BINDING_EXT                         0x825A
-#endif
-
-/* GL_EXT_shader_framebuffer_fetch */
-#ifndef GL_EXT_shader_framebuffer_fetch
-#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT                 0x8A52
-#endif
-
-/* GL_EXT_shader_texture_lod */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_shadow_samplers */
-#ifndef GL_EXT_shadow_samplers
-#define GL_TEXTURE_COMPARE_MODE_EXT                             0x884C
-#define GL_TEXTURE_COMPARE_FUNC_EXT                             0x884D
-#define GL_COMPARE_REF_TO_TEXTURE_EXT                           0x884E
-#define GL_SAMPLER_2D_SHADOW_EXT                                0x8B62
-#endif
-
-/* GL_EXT_sRGB */
-#ifndef GL_EXT_sRGB
-#define GL_SRGB_EXT                                             0x8C40
-#define GL_SRGB_ALPHA_EXT                                       0x8C42
-#define GL_SRGB8_ALPHA8_EXT                                     0x8C43
-#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT            0x8210
-#endif
-
-/* GL_EXT_sRGB_write_control */
-#ifndef GL_EXT_sRGB_write_control
-#define GL_EXT_sRGB_write_control 1
-#define GL_FRAMEBUFFER_SRGB_EXT                                 0x8DB9
-#endif
-
-/* GL_EXT_texture_compression_dxt1 */
-#ifndef GL_EXT_texture_compression_dxt1
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT                         0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                        0x83F1
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_TEXTURE_MAX_ANISOTROPY_EXT                           0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                       0x84FF
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_EXT_texture_rg */
-#ifndef GL_EXT_texture_rg
-#define GL_RED_EXT                                              0x1903
-#define GL_RG_EXT                                               0x8227
-#define GL_R8_EXT                                               0x8229
-#define GL_RG8_EXT                                              0x822B
-#endif
-
-/* GL_EXT_texture_sRGB_decode */
-#ifndef GL_EXT_texture_sRGB_decode
-#define GL_EXT_texture_sRGB_decode 1
-#define GL_TEXTURE_SRGB_DECODE_EXT                              0x8A48
-#define GL_DECODE_EXT                                           0x8A49
-#define GL_SKIP_DECODE_EXT                                      0x8A4A
-#endif
-
-/* GL_EXT_texture_storage */
-#ifndef GL_EXT_texture_storage
-#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT                         0x912F
-#define GL_ALPHA8_EXT                                           0x803C
-#define GL_LUMINANCE8_EXT                                       0x8040
-#define GL_LUMINANCE8_ALPHA8_EXT                                0x8045
-#define GL_RGBA32F_EXT                                          0x8814
-#define GL_RGB32F_EXT                                           0x8815
-#define GL_ALPHA32F_EXT                                         0x8816
-#define GL_LUMINANCE32F_EXT                                     0x8818
-#define GL_LUMINANCE_ALPHA32F_EXT                               0x8819
-/* reuse GL_RGBA16F_EXT */
-/* reuse GL_RGB16F_EXT */
-#define GL_ALPHA16F_EXT                                         0x881C
-#define GL_LUMINANCE16F_EXT                                     0x881E
-#define GL_LUMINANCE_ALPHA16F_EXT                               0x881F
-#define GL_RGB10_A2_EXT                                         0x8059
-#define GL_RGB10_EXT                                            0x8052
-#define GL_BGRA8_EXT                                            0x93A1
-#define GL_R8_EXT                                               0x8229
-#define GL_RG8_EXT                                              0x822B
-#define GL_R32F_EXT                                             0x822E
-#define GL_RG32F_EXT                                            0x8230
-#define GL_R16F_EXT                                             0x822D
-#define GL_RG16F_EXT                                            0x822F
-#endif
-
-/* GL_EXT_texture_type_2_10_10_10_REV */
-#ifndef GL_EXT_texture_type_2_10_10_10_REV
-#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      0x8368
-#endif
-
-/* GL_EXT_unpack_subimage */
-#ifndef GL_EXT_unpack_subimage
-#define GL_UNPACK_ROW_LENGTH_EXT                                0x0CF2
-#define GL_UNPACK_SKIP_ROWS_EXT                                 0x0CF3
-#define GL_UNPACK_SKIP_PIXELS_EXT                               0x0CF4
-#endif
-
-/*------------------------------------------------------------------------*
- * DMP extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_DMP_shader_binary */
-#ifndef GL_DMP_shader_binary
-#define GL_SHADER_BINARY_DMP                                    0x9250
-#endif
-
-/*------------------------------------------------------------------------*
- * FJ extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_FJ_shader_binary_GCCSO */
-#ifndef GL_FJ_shader_binary_GCCSO
-#define GL_GCCSO_SHADER_BINARY_FJ                               0x9260
-#endif
-
-/*------------------------------------------------------------------------*
- * IMG extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_program_binary */
-#ifndef GL_IMG_program_binary
-#define GL_SGX_PROGRAM_BINARY_IMG                               0x9130
-#endif
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_BGRA_IMG                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG                       0x8365
-#endif
-
-/* GL_IMG_shader_binary */
-#ifndef GL_IMG_shader_binary
-#define GL_SGX_BINARY_IMG                                       0x8C0A
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG                      0x8C00
-#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG                      0x8C01
-#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                     0x8C02
-#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                     0x8C03
-#endif
-
-/* GL_IMG_texture_compression_pvrtc2 */
-#ifndef GL_IMG_texture_compression_pvrtc2
-#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG                     0x9137
-#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG                     0x9138
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_RENDERBUFFER_SAMPLES_IMG                             0x9133
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG               0x9134
-#define GL_MAX_SAMPLES_IMG                                      0x9135
-#define GL_TEXTURE_SAMPLES_IMG                                  0x9136
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_NV_coverage_sample */
-#ifndef GL_NV_coverage_sample
-#define GL_COVERAGE_COMPONENT_NV                                0x8ED0
-#define GL_COVERAGE_COMPONENT4_NV                               0x8ED1
-#define GL_COVERAGE_ATTACHMENT_NV                               0x8ED2
-#define GL_COVERAGE_BUFFERS_NV                                  0x8ED3
-#define GL_COVERAGE_SAMPLES_NV                                  0x8ED4
-#define GL_COVERAGE_ALL_FRAGMENTS_NV                            0x8ED5
-#define GL_COVERAGE_EDGE_FRAGMENTS_NV                           0x8ED6
-#define GL_COVERAGE_AUTOMATIC_NV                                0x8ED7
-#define GL_COVERAGE_BUFFER_BIT_NV                               0x00008000
-#endif
-
-/* GL_NV_depth_nonlinear */
-#ifndef GL_NV_depth_nonlinear
-#define GL_DEPTH_COMPONENT16_NONLINEAR_NV                       0x8E2C
-#endif
-
-/* GL_NV_draw_buffers */
-#ifndef GL_NV_draw_buffers
-#define GL_MAX_DRAW_BUFFERS_NV                                  0x8824
-#define GL_DRAW_BUFFER0_NV                                      0x8825
-#define GL_DRAW_BUFFER1_NV                                      0x8826
-#define GL_DRAW_BUFFER2_NV                                      0x8827
-#define GL_DRAW_BUFFER3_NV                                      0x8828
-#define GL_DRAW_BUFFER4_NV                                      0x8829
-#define GL_DRAW_BUFFER5_NV                                      0x882A
-#define GL_DRAW_BUFFER6_NV                                      0x882B
-#define GL_DRAW_BUFFER7_NV                                      0x882C
-#define GL_DRAW_BUFFER8_NV                                      0x882D
-#define GL_DRAW_BUFFER9_NV                                      0x882E
-#define GL_DRAW_BUFFER10_NV                                     0x882F
-#define GL_DRAW_BUFFER11_NV                                     0x8830
-#define GL_DRAW_BUFFER12_NV                                     0x8831
-#define GL_DRAW_BUFFER13_NV                                     0x8832
-#define GL_DRAW_BUFFER14_NV                                     0x8833
-#define GL_DRAW_BUFFER15_NV                                     0x8834
-#define GL_COLOR_ATTACHMENT0_NV                                 0x8CE0
-#define GL_COLOR_ATTACHMENT1_NV                                 0x8CE1
-#define GL_COLOR_ATTACHMENT2_NV                                 0x8CE2
-#define GL_COLOR_ATTACHMENT3_NV                                 0x8CE3
-#define GL_COLOR_ATTACHMENT4_NV                                 0x8CE4
-#define GL_COLOR_ATTACHMENT5_NV                                 0x8CE5
-#define GL_COLOR_ATTACHMENT6_NV                                 0x8CE6
-#define GL_COLOR_ATTACHMENT7_NV                                 0x8CE7
-#define GL_COLOR_ATTACHMENT8_NV                                 0x8CE8
-#define GL_COLOR_ATTACHMENT9_NV                                 0x8CE9
-#define GL_COLOR_ATTACHMENT10_NV                                0x8CEA
-#define GL_COLOR_ATTACHMENT11_NV                                0x8CEB
-#define GL_COLOR_ATTACHMENT12_NV                                0x8CEC
-#define GL_COLOR_ATTACHMENT13_NV                                0x8CED
-#define GL_COLOR_ATTACHMENT14_NV                                0x8CEE
-#define GL_COLOR_ATTACHMENT15_NV                                0x8CEF
-#endif
-
-/* GL_NV_draw_instanced */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_fbo_color_attachments */
-#ifndef GL_NV_fbo_color_attachments
-#define GL_MAX_COLOR_ATTACHMENTS_NV                             0x8CDF
-/* GL_COLOR_ATTACHMENT{0-15}_NV defined in GL_NV_draw_buffers already. */
-#endif
-
-/* GL_NV_fence */
-#ifndef GL_NV_fence
-#define GL_ALL_COMPLETED_NV                                     0x84F2
-#define GL_FENCE_STATUS_NV                                      0x84F3
-#define GL_FENCE_CONDITION_NV                                   0x84F4
-#endif
-
-/* GL_NV_framebuffer_blit */
-#ifndef GL_NV_framebuffer_blit
-#define GL_READ_FRAMEBUFFER_NV                                  0x8CA8
-#define GL_DRAW_FRAMEBUFFER_NV                                  0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_NV                          0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_NV                          0x8CAA
-#endif
-
-/* GL_NV_framebuffer_multisample */
-#ifndef GL_NV_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_NV                              0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV                0x8D56
-#define GL_MAX_SAMPLES_NV                                       0x8D57
-#endif
-
-/* GL_NV_generate_mipmap_sRGB */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_instanced_arrays */
-#ifndef GL_NV_instanced_arrays
-#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV                       0x88FE
-#endif
-
-/* GL_NV_read_buffer */
-#ifndef GL_NV_read_buffer
-#define GL_READ_BUFFER_NV                                       0x0C02
-#endif
-
-/* GL_NV_read_buffer_front */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_read_depth */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_read_depth_stencil */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_read_stencil */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_shadow_samplers_array */
-#ifndef GL_NV_shadow_samplers_array
-#define GL_SAMPLER_2D_ARRAY_SHADOW_NV                           0x8DC4
-#endif
-
-/* GL_NV_shadow_samplers_cube */
-#ifndef GL_NV_shadow_samplers_cube
-#define GL_SAMPLER_CUBE_SHADOW_NV                               0x8DC5
-#endif
-
-/* GL_NV_sRGB_formats */
-#ifndef GL_NV_sRGB_formats
-#define GL_SLUMINANCE_NV                                        0x8C46
-#define GL_SLUMINANCE_ALPHA_NV                                  0x8C44
-#define GL_SRGB8_NV                                             0x8C41
-#define GL_SLUMINANCE8_NV                                       0x8C47
-#define GL_SLUMINANCE8_ALPHA8_NV                                0x8C45
-#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV                         0x8C4C
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV                   0x8C4D
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV                   0x8C4E
-#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV                   0x8C4F
-#define GL_ETC1_SRGB8_NV                                        0x88EE
-#endif
-
-/* GL_NV_texture_border_clamp */
-#ifndef GL_NV_texture_border_clamp
-#define GL_TEXTURE_BORDER_COLOR_NV                              0x1004
-#define GL_CLAMP_TO_BORDER_NV                                   0x812D
-#endif
-
-/* GL_NV_texture_compression_s3tc_update */
-/* No new tokens introduced by this extension. */
-
-/* GL_NV_texture_npot_2D_mipmap */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
- * QCOM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_alpha_test */
-#ifndef GL_QCOM_alpha_test
-#define GL_ALPHA_TEST_QCOM                                      0x0BC0
-#define GL_ALPHA_TEST_FUNC_QCOM                                 0x0BC1
-#define GL_ALPHA_TEST_REF_QCOM                                  0x0BC2
-#endif
-
-/* GL_QCOM_binning_control */
-#ifndef GL_QCOM_binning_control
-#define GL_BINNING_CONTROL_HINT_QCOM                            0x8FB0
-#define GL_CPU_OPTIMIZED_QCOM                                   0x8FB1
-#define GL_GPU_OPTIMIZED_QCOM                                   0x8FB2
-#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM                    0x8FB3
-#endif
-
-/* GL_QCOM_driver_control */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_TEXTURE_WIDTH_QCOM                                   0x8BD2
-#define GL_TEXTURE_HEIGHT_QCOM                                  0x8BD3
-#define GL_TEXTURE_DEPTH_QCOM                                   0x8BD4
-#define GL_TEXTURE_INTERNAL_FORMAT_QCOM                         0x8BD5
-#define GL_TEXTURE_FORMAT_QCOM                                  0x8BD6
-#define GL_TEXTURE_TYPE_QCOM                                    0x8BD7
-#define GL_TEXTURE_IMAGE_VALID_QCOM                             0x8BD8
-#define GL_TEXTURE_NUM_LEVELS_QCOM                              0x8BD9
-#define GL_TEXTURE_TARGET_QCOM                                  0x8BDA
-#define GL_TEXTURE_OBJECT_VALID_QCOM                            0x8BDB
-#define GL_STATE_RESTORE                                        0x8BDC
-#endif
-
-/* GL_QCOM_extended_get2 */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_PERFMON_GLOBAL_MODE_QCOM                             0x8FA0
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_WRITEONLY_RENDERING_QCOM                             0x8823
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_COLOR_BUFFER_BIT0_QCOM                               0x00000001
-#define GL_COLOR_BUFFER_BIT1_QCOM                               0x00000002
-#define GL_COLOR_BUFFER_BIT2_QCOM                               0x00000004
-#define GL_COLOR_BUFFER_BIT3_QCOM                               0x00000008
-#define GL_COLOR_BUFFER_BIT4_QCOM                               0x00000010
-#define GL_COLOR_BUFFER_BIT5_QCOM                               0x00000020
-#define GL_COLOR_BUFFER_BIT6_QCOM                               0x00000040
-#define GL_COLOR_BUFFER_BIT7_QCOM                               0x00000080
-#define GL_DEPTH_BUFFER_BIT0_QCOM                               0x00000100
-#define GL_DEPTH_BUFFER_BIT1_QCOM                               0x00000200
-#define GL_DEPTH_BUFFER_BIT2_QCOM                               0x00000400
-#define GL_DEPTH_BUFFER_BIT3_QCOM                               0x00000800
-#define GL_DEPTH_BUFFER_BIT4_QCOM                               0x00001000
-#define GL_DEPTH_BUFFER_BIT5_QCOM                               0x00002000
-#define GL_DEPTH_BUFFER_BIT6_QCOM                               0x00004000
-#define GL_DEPTH_BUFFER_BIT7_QCOM                               0x00008000
-#define GL_STENCIL_BUFFER_BIT0_QCOM                             0x00010000
-#define GL_STENCIL_BUFFER_BIT1_QCOM                             0x00020000
-#define GL_STENCIL_BUFFER_BIT2_QCOM                             0x00040000
-#define GL_STENCIL_BUFFER_BIT3_QCOM                             0x00080000
-#define GL_STENCIL_BUFFER_BIT4_QCOM                             0x00100000
-#define GL_STENCIL_BUFFER_BIT5_QCOM                             0x00200000
-#define GL_STENCIL_BUFFER_BIT6_QCOM                             0x00400000
-#define GL_STENCIL_BUFFER_BIT7_QCOM                             0x00800000
-#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM                         0x01000000
-#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM                         0x02000000
-#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM                         0x04000000
-#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM                         0x08000000
-#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM                         0x10000000
-#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM                         0x20000000
-#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM                         0x40000000
-#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM                         0x80000000
-#endif
-
-/*------------------------------------------------------------------------*
- * VIV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_VIV_shader_binary */
-#ifndef GL_VIV_shader_binary
-#define GL_SHADER_BINARY_VIV                                    0x8FC4
-#endif
-
-/*------------------------------------------------------------------------*
- * End of extension tokens, start of corresponding extension functions
- *------------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------------*
- * OES extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_OES_compressed_ETC1_RGB8_texture 1
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_OES_compressed_paletted_texture 1
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_OES_depth24 1
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_OES_depth32 1
-#endif
-
-/* GL_OES_depth_texture */
-#ifndef GL_OES_depth_texture
-#define GL_OES_depth_texture 1
-#endif
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-#define GL_OES_EGL_image 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
-GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
-#endif
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-#define GL_OES_EGL_image_external 1
-/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_OES_element_index_uint 1
-#endif
-
-/* GL_OES_fbo_render_mipmap */
-#ifndef GL_OES_fbo_render_mipmap
-#define GL_OES_fbo_render_mipmap 1
-#endif
-
-/* GL_OES_fragment_precision_high */
-#ifndef GL_OES_fragment_precision_high
-#define GL_OES_fragment_precision_high 1
-#endif
-
-/* GL_OES_get_program_binary */
-#ifndef GL_OES_get_program_binary
-#define GL_OES_get_program_binary 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
-GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
-typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_OES_mapbuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access);
-GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target);
-GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid **params);
-#endif
-typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
-typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target);
-typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid **params);
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_OES_packed_depth_stencil 1
-#endif
-
-/* GL_OES_required_internalformat */
-#ifndef GL_OES_required_internalformat
-#define GL_OES_required_internalformat 1
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_OES_rgb8_rgba8 1
-#endif
-
-/* GL_OES_standard_derivatives */
-#ifndef GL_OES_standard_derivatives
-#define GL_OES_standard_derivatives 1
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_OES_stencil1 1
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_OES_stencil4 1
-#endif
-
-#ifndef GL_OES_surfaceless_context
-#define GL_OES_surfaceless_context 1
-#endif
-
-/* GL_OES_texture_3D */
-#ifndef GL_OES_texture_3D
-#define GL_OES_texture_3D 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-#endif
-typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
-typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
-typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-#endif
-
-/* GL_OES_texture_float */
-#ifndef GL_OES_texture_float
-#define GL_OES_texture_float 1
-#endif
-
-/* GL_OES_texture_float_linear */
-#ifndef GL_OES_texture_float_linear
-#define GL_OES_texture_float_linear 1
-#endif
-
-/* GL_OES_texture_half_float */
-#ifndef GL_OES_texture_half_float
-#define GL_OES_texture_half_float 1
-#endif
-
-/* GL_OES_texture_half_float_linear */
-#ifndef GL_OES_texture_half_float_linear
-#define GL_OES_texture_half_float_linear 1
-#endif
-
-/* GL_OES_texture_npot */
-#ifndef GL_OES_texture_npot
-#define GL_OES_texture_npot 1
-#endif
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_OES_vertex_array_object 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array);
-GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays);
-GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays);
-GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);
-#endif
-typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
-typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays);
-typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);
-#endif
-
-/* GL_OES_vertex_half_float */
-#ifndef GL_OES_vertex_half_float
-#define GL_OES_vertex_half_float 1
-#endif
-
-/* GL_OES_vertex_type_10_10_10_2 */
-#ifndef GL_OES_vertex_type_10_10_10_2
-#define GL_OES_vertex_type_10_10_10_2 1
-#endif
-
-/*------------------------------------------------------------------------*
- * KHR extension functions
- *------------------------------------------------------------------------*/
-
-#ifndef GL_KHR_debug
-#define GL_KHR_debug 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam);
-GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void);
-GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label);
-GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, GLvoid **params);
-#endif
-typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
-typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
-typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam);
-typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
-typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
-typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void);
-typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, GLvoid **params);
-#endif
-
-#ifndef GL_KHR_texture_compression_astc_ldr
-#define GL_KHR_texture_compression_astc_ldr 1
-#endif
-
-
-/*------------------------------------------------------------------------*
- * AMD extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_AMD_compressed_3DC_texture 1
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_AMD_compressed_ATC_texture 1
-#endif
-
-/* AMD_performance_monitor */
-#ifndef GL_AMD_performance_monitor
-#define GL_AMD_performance_monitor 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
-GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
-GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
-GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
-typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
-typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-
-/* GL_AMD_program_binary_Z400 */
-#ifndef GL_AMD_program_binary_Z400
-#define GL_AMD_program_binary_Z400 1
-#endif
-
-/*------------------------------------------------------------------------*
- * ANGLE extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ANGLE_depth_texture */
-#ifndef GL_ANGLE_depth_texture
-#define GL_ANGLE_depth_texture 1
-#endif
-
-/* GL_ANGLE_framebuffer_blit */
-#ifndef GL_ANGLE_framebuffer_blit
-#define GL_ANGLE_framebuffer_blit 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-
-/* GL_ANGLE_framebuffer_multisample */
-#ifndef GL_ANGLE_framebuffer_multisample
-#define GL_ANGLE_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-
-#ifndef GL_ANGLE_instanced_arrays
-#define GL_ANGLE_instanced_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor);
-#endif
-
-/* GL_ANGLE_pack_reverse_row_order */
-#ifndef GL_ANGLE_pack_reverse_row_order
-#define GL_ANGLE_pack_reverse_row_order 1
-#endif
-
-/* GL_ANGLE_program_binary */
-#ifndef GL_ANGLE_program_binary
-#define GL_ANGLE_program_binary 1
-#endif
-
-/* GL_ANGLE_texture_compression_dxt3 */
-#ifndef GL_ANGLE_texture_compression_dxt3
-#define GL_ANGLE_texture_compression_dxt3 1
-#endif
-
-/* GL_ANGLE_texture_compression_dxt5 */
-#ifndef GL_ANGLE_texture_compression_dxt5
-#define GL_ANGLE_texture_compression_dxt5 1
-#endif
-
-/* GL_ANGLE_texture_usage */
-#ifndef GL_ANGLE_texture_usage
-#define GL_ANGLE_texture_usage 1
-#endif
-
-#ifndef GL_ANGLE_translated_shader_source
-#define GL_ANGLE_translated_shader_source 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source);
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_copy_texture_levels */
-#ifndef GL_APPLE_copy_texture_levels
-#define GL_APPLE_copy_texture_levels 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
-#endif
-typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
-#endif
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_APPLE_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
-#endif
-
-/* GL_APPLE_rgb_422 */
-#ifndef GL_APPLE_rgb_422
-#define GL_APPLE_rgb_422 1
-#endif
-
-/* GL_APPLE_sync */
-#ifndef GL_APPLE_sync
-#define GL_APPLE_sync 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags);
-GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync);
-GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync);
-GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);
-GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params);
-GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-#endif
-typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags);
-typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync);
-typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync);
-typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
-typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params);
-typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_APPLE_texture_format_BGRA8888 1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_APPLE_texture_max_level 1
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_program_binary */
-#ifndef GL_ARM_mali_program_binary
-#define GL_ARM_mali_program_binary 1
-#endif
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_ARM_mali_shader_binary 1
-#endif
-
-/* GL_ARM_rgba8 */
-#ifndef GL_ARM_rgba8
-#define GL_ARM_rgba8 1
-#endif
-
-/*------------------------------------------------------------------------*
- * EXT extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_EXT_blend_minmax 1
-#endif
-
-/* GL_EXT_color_buffer_half_float */
-#ifndef GL_EXT_color_buffer_half_float
-#define GL_EXT_color_buffer_half_float 1
-#endif
-
-/* GL_EXT_debug_label */
-#ifndef GL_EXT_debug_label
-#define GL_EXT_debug_label 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
-typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
-#endif
-
-/* GL_EXT_debug_marker */
-#ifndef GL_EXT_debug_marker
-#define GL_EXT_debug_marker 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
-GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
-GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void);
-#endif
-typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
-typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
-#endif
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_EXT_discard_framebuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-
-#ifndef GL_EXT_disjoint_timer_query
-#define GL_EXT_disjoint_timer_query 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids);
-GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids);
-GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id);
-GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id);
-GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target);
-GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target);
-GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);
-GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);
-#endif
-typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids);
-typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id);
-typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id);
-typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target);
-typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target);
-typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);
-typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);
-#endif /* GL_EXT_disjoint_timer_query */
-
-#ifndef GL_EXT_draw_buffers
-#define GL_EXT_draw_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs);
-#endif /* GL_EXT_draw_buffers */
-
-/* GL_EXT_map_buffer_range */
-#ifndef GL_EXT_map_buffer_range
-#define GL_EXT_map_buffer_range 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void* GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length);
-#endif
-typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
-#endif
-
-/* GL_EXT_multisampled_render_to_texture */
-#ifndef GL_EXT_multisampled_render_to_texture
-#define GL_EXT_multisampled_render_to_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);             
-GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-
-/* GL_EXT_multiview_draw_buffers */
-#ifndef GL_EXT_multiview_draw_buffers
-#define GL_EXT_multiview_draw_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index);
-GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices);
-GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data);
-#endif
-typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index);
-typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices);
-typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data);
-#endif
-
-#ifndef GL_EXT_multi_draw_arrays
-#define GL_EXT_multi_draw_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
-#endif
-
-/* GL_EXT_occlusion_query_boolean */
-#ifndef GL_EXT_occlusion_query_boolean
-#define GL_EXT_occlusion_query_boolean 1
-/* All entry points also exist in GL_EXT_disjoint_timer_query */
-#endif
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_EXT_read_format_bgra 1
-#endif
-
-/* GL_EXT_robustness */
-#ifndef GL_EXT_robustness
-#define GL_EXT_robustness 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void);
-GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
-GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-#endif
-typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void);
-typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
-typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
-typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
-#endif
-
-/* GL_EXT_separate_shader_objects */
-#ifndef GL_EXT_separate_shader_objects
-#define GL_EXT_separate_shader_objects 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program);
-GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program);
-GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings);
-GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline);
-GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines);
-GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines);
-GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline);
-GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
-GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint x);
-GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint x, GLint y);
-GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z);
-GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
-GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat x);
-GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat x, GLfloat y);
-GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
-GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline);
-GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-#endif
-typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
-typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program);
-typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings);
-typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
-typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines);
-typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines);
-typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
-typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint x);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint x, GLint y);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat x);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline);
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-#endif
-
-/* GL_EXT_shader_framebuffer_fetch */
-#ifndef GL_EXT_shader_framebuffer_fetch
-#define GL_EXT_shader_framebuffer_fetch 1
-#endif
-
-/* GL_EXT_shader_texture_lod */
-#ifndef GL_EXT_shader_texture_lod
-#define GL_EXT_shader_texture_lod 1
-#endif
-
-/* GL_EXT_shadow_samplers */
-#ifndef GL_EXT_shadow_samplers
-#define GL_EXT_shadow_samplers 1
-#endif
-
-/* GL_EXT_sRGB */
-#ifndef GL_EXT_sRGB
-#define GL_EXT_sRGB 1
-#endif
-
-/* GL_EXT_texture_compression_dxt1 */
-#ifndef GL_EXT_texture_compression_dxt1
-#define GL_EXT_texture_compression_dxt1 1
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_EXT_texture_filter_anisotropic 1
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_EXT_texture_format_BGRA8888 1
-#endif
-
-/* GL_EXT_texture_rg */
-#ifndef GL_EXT_texture_rg
-#define GL_EXT_texture_rg 1
-#endif
-
-/* GL_EXT_texture_storage */
-#ifndef GL_EXT_texture_storage
-#define GL_EXT_texture_storage 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-
-/* GL_EXT_texture_type_2_10_10_10_REV */
-#ifndef GL_EXT_texture_type_2_10_10_10_REV
-#define GL_EXT_texture_type_2_10_10_10_REV 1
-#endif
-
-/* GL_EXT_unpack_subimage */
-#ifndef GL_EXT_unpack_subimage
-#define GL_EXT_unpack_subimage 1
-#endif
-
-/*------------------------------------------------------------------------*
- * DMP extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_DMP_shader_binary */
-#ifndef GL_DMP_shader_binary
-#define GL_DMP_shader_binary 1
-#endif
-
-/*------------------------------------------------------------------------*
- * FJ extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_FJ_shader_binary_GCCSO */
-#ifndef GL_FJ_shader_binary_GCCSO
-#define GL_FJ_shader_binary_GCCSO 1
-#endif
-
-/*------------------------------------------------------------------------*
- * IMG extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_program_binary */
-#ifndef GL_IMG_program_binary
-#define GL_IMG_program_binary 1
-#endif
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_IMG_read_format 1
-#endif
-
-/* GL_IMG_shader_binary */
-#ifndef GL_IMG_shader_binary
-#define GL_IMG_shader_binary 1
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_IMG_texture_compression_pvrtc 1
-#endif
-
-/* GL_IMG_texture_compression_pvrtc2 */
-#ifndef GL_IMG_texture_compression_pvrtc2
-#define GL_IMG_texture_compression_pvrtc2 1
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_IMG_multisampled_render_to_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_NV_coverage_sample */
-#ifndef GL_NV_coverage_sample
-#define GL_NV_coverage_sample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask);
-GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation);
-#endif
-typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask);
-typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation);
-#endif
-
-/* GL_NV_depth_nonlinear */
-#ifndef GL_NV_depth_nonlinear
-#define GL_NV_depth_nonlinear 1
-#endif
-
-/* GL_NV_draw_buffers */
-#ifndef GL_NV_draw_buffers
-#define GL_NV_draw_buffers 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs);
-#endif
-
-/* GL_NV_draw_instanced */
-#ifndef GL_NV_draw_instanced
-#define GL_NV_draw_instanced 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
-#endif
-
-/* GL_NV_fbo_color_attachments */
-#ifndef GL_NV_fbo_color_attachments
-#define GL_NV_fbo_color_attachments 1
-#endif
-
-/* GL_NV_fence */
-#ifndef GL_NV_fence
-#define GL_NV_fence 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
-GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
-GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence);
-GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence);
-GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence);
-GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
-#endif
-typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
-typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
-typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
-typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
-#endif
-
-/* GL_NV_framebuffer_blit */
-#ifndef GL_NV_framebuffer_blit
-#define GL_NV_framebuffer_blit 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-
-/* GL_NV_framebuffer_multisample */
-#ifndef GL_NV_framebuffer_multisample
-#define GL_NV_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-
-/* GL_NV_generate_mipmap_sRGB */
-#ifndef GL_NV_generate_mipmap_sRGB
-#define GL_NV_generate_mipmap_sRGB 1
-#endif
-
-/* GL_NV_instanced_arrays */
-#ifndef GL_NV_instanced_arrays
-#define GL_NV_instanced_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor);
-#endif
-typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor);
-#endif
-
-/* GL_NV_read_buffer */
-#ifndef GL_NV_read_buffer
-#define GL_NV_read_buffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode);
-#endif
-typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode);
-#endif
-
-/* GL_NV_read_buffer_front */
-#ifndef GL_NV_read_buffer_front
-#define GL_NV_read_buffer_front 1
-#endif
-
-/* GL_NV_read_depth */
-#ifndef GL_NV_read_depth
-#define GL_NV_read_depth 1
-#endif
-
-/* GL_NV_read_depth_stencil */
-#ifndef GL_NV_read_depth_stencil
-#define GL_NV_read_depth_stencil 1
-#endif
-
-/* GL_NV_read_stencil */
-#ifndef GL_NV_read_stencil
-#define GL_NV_read_stencil 1
-#endif
-
-/* GL_NV_shadow_samplers_array */
-#ifndef GL_NV_shadow_samplers_array
-#define GL_NV_shadow_samplers_array 1
-#endif
-
-/* GL_NV_shadow_samplers_cube */
-#ifndef GL_NV_shadow_samplers_cube
-#define GL_NV_shadow_samplers_cube 1
-#endif
-
-/* GL_NV_sRGB_formats */
-#ifndef GL_NV_sRGB_formats
-#define GL_NV_sRGB_formats 1
-#endif
-
-/* GL_NV_texture_border_clamp */
-#ifndef GL_NV_texture_border_clamp
-#define GL_NV_texture_border_clamp 1
-#endif
-
-/* GL_NV_texture_compression_s3tc_update */
-#ifndef GL_NV_texture_compression_s3tc_update
-#define GL_NV_texture_compression_s3tc_update 1
-#endif
-
-/* GL_NV_texture_npot_2D_mipmap */
-#ifndef GL_NV_texture_npot_2D_mipmap
-#define GL_NV_texture_npot_2D_mipmap 1
-#endif
-
-/*------------------------------------------------------------------------*
- * QCOM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_alpha_test */
-#ifndef GL_QCOM_alpha_test
-#define GL_QCOM_alpha_test 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref);
-#endif
-typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref);
-#endif
-
-/* GL_QCOM_binning_control */
-#ifndef GL_QCOM_binning_control
-#define GL_QCOM_binning_control 1
-#endif
-
-/* GL_QCOM_driver_control */
-#ifndef GL_QCOM_driver_control
-#define GL_QCOM_driver_control 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls);
-GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl);
-GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls);
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-#endif
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_QCOM_extended_get 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures);
-GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param);
-GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params);
-#endif
-
-/* GL_QCOM_extended_get2 */
-#ifndef GL_QCOM_extended_get2
-#define GL_QCOM_extended_get2 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program);
-GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_QCOM_perfmon_global_mode 1
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_QCOM_writeonly_rendering 1
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_QCOM_tiled_rendering 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask);
-#endif
-typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
-#endif
-
-/*------------------------------------------------------------------------*
- * VIV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_VIV_shader_binary */
-#ifndef GL_VIV_shader_binary
-#define GL_VIV_shader_binary 1
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl2ext_h_ */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h
deleted file mode 100644 (file)
index c325686..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __gl2platform_h_
-#define __gl2platform_h_
-
-/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-/* Platform-specific types and definitions for OpenGL ES 2.X  gl2.h
- *
- * Adopters may modify khrplatform.h and this file to suit their platform.
- * You are encouraged to submit all modifications to the Khronos group so that
- * they can be included in future versions of this file.  Please submit changes
- * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
- * by filing a bug against product "OpenGL-ES" component "Registry".
- */
-
-/*#include <KHR/khrplatform.h>*/
-
-#ifndef GL_APICALL
-#define GL_APICALL  KHRONOS_APICALL
-#endif
-
-#ifndef GL_APIENTRY
-#define GL_APIENTRY KHRONOS_APIENTRY
-#endif
-
-#endif /* __gl2platform_h_ */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h
deleted file mode 100644 (file)
index c9e6f17..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-#ifndef __khrplatform_h_
-#define __khrplatform_h_
-
-/*
-** Copyright (c) 2008-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Khronos platform-specific types and definitions.
- *
- * $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
- *
- * Adopters may modify this file to suit their platform. Adopters are
- * encouraged to submit platform specific modifications to the Khronos
- * group so that they can be included in future versions of this file.
- * Please submit changes by sending them to the public Khronos Bugzilla
- * (http://khronos.org/bugzilla) by filing a bug against product
- * "Khronos (general)" component "Registry".
- *
- * A predefined template which fills in some of the bug fields can be
- * reached using http://tinyurl.com/khrplatform-h-bugreport, but you
- * must create a Bugzilla login first.
- *
- *
- * See the Implementer's Guidelines for information about where this file
- * should be located on your system and for more details of its use:
- *    http://www.khronos.org/registry/implementers_guide.pdf
- *
- * This file should be included as
- *        #include <KHR/khrplatform.h>
- * by Khronos client API header files that use its types and defines.
- *
- * The types in khrplatform.h should only be used to define API-specific types.
- *
- * Types defined in khrplatform.h:
- *    khronos_int8_t              signed   8  bit
- *    khronos_uint8_t             unsigned 8  bit
- *    khronos_int16_t             signed   16 bit
- *    khronos_uint16_t            unsigned 16 bit
- *    khronos_int32_t             signed   32 bit
- *    khronos_uint32_t            unsigned 32 bit
- *    khronos_int64_t             signed   64 bit
- *    khronos_uint64_t            unsigned 64 bit
- *    khronos_intptr_t            signed   same number of bits as a pointer
- *    khronos_uintptr_t           unsigned same number of bits as a pointer
- *    khronos_ssize_t             signed   size
- *    khronos_usize_t             unsigned size
- *    khronos_float_t             signed   32 bit floating point
- *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
- *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
- *                                         nanoseconds
- *    khronos_stime_nanoseconds_t signed time interval in nanoseconds
- *    khronos_boolean_enum_t      enumerated boolean type. This should
- *      only be used as a base type when a client API's boolean type is
- *      an enum. Client APIs which use an integer or other type for
- *      booleans cannot use this as the base type for their boolean.
- *
- * Tokens defined in khrplatform.h:
- *
- *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
- *
- *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
- *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
- *
- * Calling convention macros defined in this file:
- *    KHRONOS_APICALL
- *    KHRONOS_APIENTRY
- *    KHRONOS_APIATTRIBUTES
- *
- * These may be used in function prototypes as:
- *
- *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
- *                                  int arg1,
- *                                  int arg2) KHRONOS_APIATTRIBUTES;
- */
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APICALL
- *-------------------------------------------------------------------------
- * This precedes the return type of the function in the function prototype.
- */
-#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
-#   define KHRONOS_APICALL __declspec(dllimport)
-#elif defined (__SYMBIAN32__)
-#   define KHRONOS_APICALL IMPORT_C
-#else
-#   define KHRONOS_APICALL
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIENTRY
- *-------------------------------------------------------------------------
- * This follows the return type of the function  and precedes the function
- * name in the function prototype.
- */
-#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
-    /* Win32 but not WinCE */
-#   define KHRONOS_APIENTRY __stdcall
-#else
-#   define KHRONOS_APIENTRY
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIATTRIBUTES
- *-------------------------------------------------------------------------
- * This follows the closing parenthesis of the function prototype arguments.
- */
-#if defined (__ARMCC_2__)
-#define KHRONOS_APIATTRIBUTES __softfp
-#else
-#define KHRONOS_APIATTRIBUTES
-#endif
-
-/*-------------------------------------------------------------------------
- * basic type definitions
- *-----------------------------------------------------------------------*/
-#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
-
-
-/*
- * Using <stdint.h>
- */
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__VMS ) || defined(__sgi)
-
-/*
- * Using <inttypes.h>
- */
-#include <inttypes.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
-
-/*
- * Win32
- */
-typedef __int32                 khronos_int32_t;
-typedef unsigned __int32        khronos_uint32_t;
-typedef __int64                 khronos_int64_t;
-typedef unsigned __int64        khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__sun__) || defined(__digital__)
-
-/*
- * Sun or Digital
- */
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#if defined(__arch64__) || defined(_LP64)
-typedef long int                khronos_int64_t;
-typedef unsigned long int       khronos_uint64_t;
-#else
-typedef long long int           khronos_int64_t;
-typedef unsigned long long int  khronos_uint64_t;
-#endif /* __arch64__ */
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif 0
-
-/*
- * Hypothetical platform with no float or int64 support
- */
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#define KHRONOS_SUPPORT_INT64   0
-#define KHRONOS_SUPPORT_FLOAT   0
-
-#else
-
-/*
- * Generic fallback
- */
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#endif
-
-
-/*
- * Types that are (so far) the same on all platforms
- */
-typedef signed   char          khronos_int8_t;
-typedef unsigned char          khronos_uint8_t;
-typedef signed   short int     khronos_int16_t;
-typedef unsigned short int     khronos_uint16_t;
-
-/*
- * Types that differ between LLP64 and LP64 architectures - in LLP64, 
- * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
- * to be the only LLP64 architecture in current use.
- */
-#ifdef _WIN64
-typedef signed   long long int khronos_intptr_t;
-typedef unsigned long long int khronos_uintptr_t;
-typedef signed   long long int khronos_ssize_t;
-typedef unsigned long long int khronos_usize_t;
-#else
-typedef signed   long  int     khronos_intptr_t;
-typedef unsigned long  int     khronos_uintptr_t;
-typedef signed   long  int     khronos_ssize_t;
-typedef unsigned long  int     khronos_usize_t;
-#endif
-
-#if KHRONOS_SUPPORT_FLOAT
-/*
- * Float type
- */
-typedef          float         khronos_float_t;
-#endif
-
-#if KHRONOS_SUPPORT_INT64
-/* Time types
- *
- * These types can be used to represent a time interval in nanoseconds or
- * an absolute Unadjusted System Time.  Unadjusted System Time is the number
- * of nanoseconds since some arbitrary system event (e.g. since the last
- * time the system booted).  The Unadjusted System Time is an unsigned
- * 64 bit value that wraps back to 0 every 584 years.  Time intervals
- * may be either signed or unsigned.
- */
-typedef khronos_uint64_t       khronos_utime_nanoseconds_t;
-typedef khronos_int64_t        khronos_stime_nanoseconds_t;
-#endif
-
-/*
- * Dummy value used to pad enum types to 32 bits.
- */
-#ifndef KHRONOS_MAX_ENUM
-#define KHRONOS_MAX_ENUM 0x7FFFFFFF
-#endif
-
-/*
- * Enumerated boolean type
- *
- * Values other than zero should be considered to be true.  Therefore
- * comparisons should not be made against KHRONOS_TRUE.
- */
-typedef enum {
-    KHRONOS_FALSE = 0,
-    KHRONOS_TRUE  = 1,
-    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
-} khronos_boolean_enum_t;
-
-#endif /* __khrplatform_h_ */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_pixels.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_pixels.h
deleted file mode 100644 (file)
index dcb7a98..0000000
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_pixels.h
- *
- *  Header for the enumerated pixel format definitions.
- */
-
-#ifndef SDL_pixels_h_
-#define SDL_pixels_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_endian.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \name Transparency definitions
- *
- *  These define alpha as the opacity of a surface.
- */
-/* @{ */
-#define SDL_ALPHA_OPAQUE 255
-#define SDL_ALPHA_TRANSPARENT 0
-/* @} */
-
-/** Pixel type. */
-enum
-{
-    SDL_PIXELTYPE_UNKNOWN,
-    SDL_PIXELTYPE_INDEX1,
-    SDL_PIXELTYPE_INDEX4,
-    SDL_PIXELTYPE_INDEX8,
-    SDL_PIXELTYPE_PACKED8,
-    SDL_PIXELTYPE_PACKED16,
-    SDL_PIXELTYPE_PACKED32,
-    SDL_PIXELTYPE_ARRAYU8,
-    SDL_PIXELTYPE_ARRAYU16,
-    SDL_PIXELTYPE_ARRAYU32,
-    SDL_PIXELTYPE_ARRAYF16,
-    SDL_PIXELTYPE_ARRAYF32
-};
-
-/** Bitmap pixel order, high bit -> low bit. */
-enum
-{
-    SDL_BITMAPORDER_NONE,
-    SDL_BITMAPORDER_4321,
-    SDL_BITMAPORDER_1234
-};
-
-/** Packed component order, high bit -> low bit. */
-enum
-{
-    SDL_PACKEDORDER_NONE,
-    SDL_PACKEDORDER_XRGB,
-    SDL_PACKEDORDER_RGBX,
-    SDL_PACKEDORDER_ARGB,
-    SDL_PACKEDORDER_RGBA,
-    SDL_PACKEDORDER_XBGR,
-    SDL_PACKEDORDER_BGRX,
-    SDL_PACKEDORDER_ABGR,
-    SDL_PACKEDORDER_BGRA
-};
-
-/** Array component order, low byte -> high byte. */
-/* !!! FIXME: in 2.1, make these not overlap differently with
-   !!! FIXME:  SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */
-enum
-{
-    SDL_ARRAYORDER_NONE,
-    SDL_ARRAYORDER_RGB,
-    SDL_ARRAYORDER_RGBA,
-    SDL_ARRAYORDER_ARGB,
-    SDL_ARRAYORDER_BGR,
-    SDL_ARRAYORDER_BGRA,
-    SDL_ARRAYORDER_ABGR
-};
-
-/** Packed component layout. */
-enum
-{
-    SDL_PACKEDLAYOUT_NONE,
-    SDL_PACKEDLAYOUT_332,
-    SDL_PACKEDLAYOUT_4444,
-    SDL_PACKEDLAYOUT_1555,
-    SDL_PACKEDLAYOUT_5551,
-    SDL_PACKEDLAYOUT_565,
-    SDL_PACKEDLAYOUT_8888,
-    SDL_PACKEDLAYOUT_2101010,
-    SDL_PACKEDLAYOUT_1010102
-};
-
-#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
-
-#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
-    ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
-     ((bits) << 8) | ((bytes) << 0))
-
-#define SDL_PIXELFLAG(X)    (((X) >> 28) & 0x0F)
-#define SDL_PIXELTYPE(X)    (((X) >> 24) & 0x0F)
-#define SDL_PIXELORDER(X)   (((X) >> 20) & 0x0F)
-#define SDL_PIXELLAYOUT(X)  (((X) >> 16) & 0x0F)
-#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
-#define SDL_BYTESPERPIXEL(X) \
-    (SDL_ISPIXELFORMAT_FOURCC(X) ? \
-        ((((X) == SDL_PIXELFORMAT_YUY2) || \
-          ((X) == SDL_PIXELFORMAT_UYVY) || \
-          ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
-
-#define SDL_ISPIXELFORMAT_INDEXED(format)   \
-    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
-     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
-
-#define SDL_ISPIXELFORMAT_PACKED(format) \
-    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
-     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32)))
-
-#define SDL_ISPIXELFORMAT_ARRAY(format) \
-    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
-     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \
-      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32)))
-
-#define SDL_ISPIXELFORMAT_ALPHA(format)   \
-    ((SDL_ISPIXELFORMAT_PACKED(format) && \
-     ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
-      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
-      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
-      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \
-    (SDL_ISPIXELFORMAT_ARRAY(format) && \
-     ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \
-      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \
-      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \
-      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA))))
-
-/* The flag is set to 1 because 0x1? is not in the printable ASCII range */
-#define SDL_ISPIXELFORMAT_FOURCC(format)    \
-    ((format) && (SDL_PIXELFLAG(format) != 1))
-
-/* Note: If you modify this list, update SDL_GetPixelFormatName() */
-typedef enum
-{
-    SDL_PIXELFORMAT_UNKNOWN,
-    SDL_PIXELFORMAT_INDEX1LSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
-                               1, 0),
-    SDL_PIXELFORMAT_INDEX1MSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
-                               1, 0),
-    SDL_PIXELFORMAT_INDEX4LSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
-                               4, 0),
-    SDL_PIXELFORMAT_INDEX4MSB =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
-                               4, 0),
-    SDL_PIXELFORMAT_INDEX8 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
-    SDL_PIXELFORMAT_RGB332 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_332, 8, 1),
-    SDL_PIXELFORMAT_RGB444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_4444, 12, 2),
-    SDL_PIXELFORMAT_RGB555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_1555, 15, 2),
-    SDL_PIXELFORMAT_BGR555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
-                               SDL_PACKEDLAYOUT_1555, 15, 2),
-    SDL_PIXELFORMAT_ARGB4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_RGBA4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_ABGR4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_BGRA4444 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
-                               SDL_PACKEDLAYOUT_4444, 16, 2),
-    SDL_PIXELFORMAT_ARGB1555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_1555, 16, 2),
-    SDL_PIXELFORMAT_RGBA5551 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
-                               SDL_PACKEDLAYOUT_5551, 16, 2),
-    SDL_PIXELFORMAT_ABGR1555 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
-                               SDL_PACKEDLAYOUT_1555, 16, 2),
-    SDL_PIXELFORMAT_BGRA5551 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
-                               SDL_PACKEDLAYOUT_5551, 16, 2),
-    SDL_PIXELFORMAT_RGB565 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_565, 16, 2),
-    SDL_PIXELFORMAT_BGR565 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
-                               SDL_PACKEDLAYOUT_565, 16, 2),
-    SDL_PIXELFORMAT_RGB24 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
-                               24, 3),
-    SDL_PIXELFORMAT_BGR24 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
-                               24, 3),
-    SDL_PIXELFORMAT_RGB888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_RGBX8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_BGR888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_BGRX8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
-                               SDL_PACKEDLAYOUT_8888, 24, 4),
-    SDL_PIXELFORMAT_ARGB8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_RGBA8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_ABGR8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_BGRA8888 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
-                               SDL_PACKEDLAYOUT_8888, 32, 4),
-    SDL_PIXELFORMAT_ARGB2101010 =
-        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
-                               SDL_PACKEDLAYOUT_2101010, 32, 4),
-
-    /* Aliases for RGBA byte arrays of color data, for the current platform */
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
-    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888,
-    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888,
-    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888,
-    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888,
-#else
-    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,
-    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,
-    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,
-    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,
-#endif
-
-    SDL_PIXELFORMAT_YV12 =      /**< Planar mode: Y + V + U  (3 planes) */
-        SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
-    SDL_PIXELFORMAT_IYUV =      /**< Planar mode: Y + U + V  (3 planes) */
-        SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
-    SDL_PIXELFORMAT_YUY2 =      /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */
-        SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
-    SDL_PIXELFORMAT_UYVY =      /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */
-        SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
-    SDL_PIXELFORMAT_YVYU =      /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */
-        SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'),
-    SDL_PIXELFORMAT_NV12 =      /**< Planar mode: Y + U/V interleaved  (2 planes) */
-        SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'),
-    SDL_PIXELFORMAT_NV21 =      /**< Planar mode: Y + V/U interleaved  (2 planes) */
-        SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'),
-    SDL_PIXELFORMAT_EXTERNAL_OES =      /**< Android video texture format */
-        SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')
-} SDL_PixelFormatEnum;
-
-typedef struct SDL_Color
-{
-    Uint8 r;
-    Uint8 g;
-    Uint8 b;
-    Uint8 a;
-} SDL_Color;
-#define SDL_Colour SDL_Color
-
-typedef struct SDL_Palette
-{
-    int ncolors;
-    SDL_Color *colors;
-    Uint32 version;
-    int refcount;
-} SDL_Palette;
-
-/**
- *  \note Everything in the pixel format structure is read-only.
- */
-typedef struct SDL_PixelFormat
-{
-    Uint32 format;
-    SDL_Palette *palette;
-    Uint8 BitsPerPixel;
-    Uint8 BytesPerPixel;
-    Uint8 padding[2];
-    Uint32 Rmask;
-    Uint32 Gmask;
-    Uint32 Bmask;
-    Uint32 Amask;
-    Uint8 Rloss;
-    Uint8 Gloss;
-    Uint8 Bloss;
-    Uint8 Aloss;
-    Uint8 Rshift;
-    Uint8 Gshift;
-    Uint8 Bshift;
-    Uint8 Ashift;
-    int refcount;
-    struct SDL_PixelFormat *next;
-} SDL_PixelFormat;
-
-/**
- * \brief Get the human readable name of a pixel format
- */
-extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);
-
-/**
- *  \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks.
- *
- *  \return SDL_TRUE, or SDL_FALSE if the conversion wasn't possible.
- *
- *  \sa SDL_MasksToPixelFormatEnum()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format,
-                                                            int *bpp,
-                                                            Uint32 * Rmask,
-                                                            Uint32 * Gmask,
-                                                            Uint32 * Bmask,
-                                                            Uint32 * Amask);
-
-/**
- *  \brief Convert a bpp and RGBA masks to an enumerated pixel format.
- *
- *  \return The pixel format, or ::SDL_PIXELFORMAT_UNKNOWN if the conversion
- *          wasn't possible.
- *
- *  \sa SDL_PixelFormatEnumToMasks()
- */
-extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp,
-                                                          Uint32 Rmask,
-                                                          Uint32 Gmask,
-                                                          Uint32 Bmask,
-                                                          Uint32 Amask);
-
-/**
- *  \brief Create an SDL_PixelFormat structure from a pixel format enum.
- */
-extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format);
-
-/**
- *  \brief Free an SDL_PixelFormat structure.
- */
-extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format);
-
-/**
- *  \brief Create a palette structure with the specified number of color
- *         entries.
- *
- *  \return A new palette, or NULL if there wasn't enough memory.
- *
- *  \note The palette entries are initialized to white.
- *
- *  \sa SDL_FreePalette()
- */
-extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors);
-
-/**
- *  \brief Set the palette for a pixel format structure.
- */
-extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format,
-                                                      SDL_Palette *palette);
-
-/**
- *  \brief Set a range of colors in a palette.
- *
- *  \param palette    The palette to modify.
- *  \param colors     An array of colors to copy into the palette.
- *  \param firstcolor The index of the first palette entry to modify.
- *  \param ncolors    The number of entries to modify.
- *
- *  \return 0 on success, or -1 if not all of the colors could be set.
- */
-extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette,
-                                                 const SDL_Color * colors,
-                                                 int firstcolor, int ncolors);
-
-/**
- *  \brief Free a palette created with SDL_AllocPalette().
- *
- *  \sa SDL_AllocPalette()
- */
-extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette);
-
-/**
- *  \brief Maps an RGB triple to an opaque pixel value for a given pixel format.
- *
- *  \sa SDL_MapRGBA
- */
-extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format,
-                                          Uint8 r, Uint8 g, Uint8 b);
-
-/**
- *  \brief Maps an RGBA quadruple to a pixel value for a given pixel format.
- *
- *  \sa SDL_MapRGB
- */
-extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format,
-                                           Uint8 r, Uint8 g, Uint8 b,
-                                           Uint8 a);
-
-/**
- *  \brief Get the RGB components from a pixel of the specified format.
- *
- *  \sa SDL_GetRGBA
- */
-extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel,
-                                        const SDL_PixelFormat * format,
-                                        Uint8 * r, Uint8 * g, Uint8 * b);
-
-/**
- *  \brief Get the RGBA components from a pixel of the specified format.
- *
- *  \sa SDL_GetRGB
- */
-extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel,
-                                         const SDL_PixelFormat * format,
-                                         Uint8 * r, Uint8 * g, Uint8 * b,
-                                         Uint8 * a);
-
-/**
- *  \brief Calculate a 256 entry gamma ramp for a gamma value.
- */
-extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_pixels_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_platform.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_platform.h
deleted file mode 100644 (file)
index c2cbc6b..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_platform.h
- *
- *  Try to get a standard set of platform defines.
- */
-
-#ifndef SDL_platform_h_
-#define SDL_platform_h_
-
-#if defined(_AIX)
-#undef __AIX__
-#define __AIX__     1
-#endif
-#if defined(__HAIKU__)
-#undef __HAIKU__
-#define __HAIKU__   1
-#endif
-#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__)
-#undef __BSDI__
-#define __BSDI__    1
-#endif
-#if defined(_arch_dreamcast)
-#undef __DREAMCAST__
-#define __DREAMCAST__   1
-#endif
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
-#undef __FREEBSD__
-#define __FREEBSD__ 1
-#endif
-#if defined(hpux) || defined(__hpux) || defined(__hpux__)
-#undef __HPUX__
-#define __HPUX__    1
-#endif
-#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE)
-#undef __IRIX__
-#define __IRIX__    1
-#endif
-#if (defined(linux) || defined(__linux) || defined(__linux__))
-#undef __LINUX__
-#define __LINUX__   1
-#endif
-#if defined(ANDROID) || defined(__ANDROID__)
-#undef __ANDROID__
-#undef __LINUX__ /* do we need to do this? */
-#define __ANDROID__ 1
-#endif
-
-#if defined(__APPLE__)
-/* lets us know what version of Mac OS X we're compiling on */
-#include "AvailabilityMacros.h"
-#include "TargetConditionals.h"
-#if TARGET_OS_TV
-#undef __TVOS__
-#define __TVOS__ 1
-#endif
-#if TARGET_OS_IPHONE
-/* if compiling for iOS */
-#undef __IPHONEOS__
-#define __IPHONEOS__ 1
-#undef __MACOSX__
-#else
-/* if not compiling for iOS */
-#undef __MACOSX__
-#define __MACOSX__  1
-#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
-# error SDL for Mac OS X only supports deploying on 10.6 and above.
-#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1060 */
-#endif /* TARGET_OS_IPHONE */
-#endif /* defined(__APPLE__) */
-
-#if defined(__NetBSD__)
-#undef __NETBSD__
-#define __NETBSD__  1
-#endif
-#if defined(__OpenBSD__)
-#undef __OPENBSD__
-#define __OPENBSD__ 1
-#endif
-#if defined(__OS2__) || defined(__EMX__)
-#undef __OS2__
-#define __OS2__     1
-#endif
-#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE)
-#undef __OSF__
-#define __OSF__     1
-#endif
-#if defined(__QNXNTO__)
-#undef __QNXNTO__
-#define __QNXNTO__  1
-#endif
-#if defined(riscos) || defined(__riscos) || defined(__riscos__)
-#undef __RISCOS__
-#define __RISCOS__  1
-#endif
-#if defined(__sun) && defined(__SVR4)
-#undef __SOLARIS__
-#define __SOLARIS__ 1
-#endif
-
-#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
-/* Try to find out if we're compiling for WinRT or non-WinRT */
-#if defined(_MSC_VER) && defined(__has_include)
-#if __has_include(<winapifamily.h>)
-#define HAVE_WINAPIFAMILY_H 1
-#else
-#define HAVE_WINAPIFAMILY_H 0
-#endif
-
-/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */
-#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_)    /* _MSC_VER == 1700 for Visual Studio 2012 */
-#define HAVE_WINAPIFAMILY_H 1
-#else
-#define HAVE_WINAPIFAMILY_H 0
-#endif
-
-#if HAVE_WINAPIFAMILY_H
-#include <winapifamily.h>
-#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP))
-#else
-#define WINAPI_FAMILY_WINRT 0
-#endif /* HAVE_WINAPIFAMILY_H */
-
-#if WINAPI_FAMILY_WINRT
-#undef __WINRT__
-#define __WINRT__ 1
-#else
-#undef __WINDOWS__
-#define __WINDOWS__ 1
-#endif
-#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */
-
-#if defined(__WINDOWS__)
-#undef __WIN32__
-#define __WIN32__ 1
-#endif
-#if defined(__PSP__)
-#undef __PSP__
-#define __PSP__ 1
-#endif
-
-/* The NACL compiler defines __native_client__ and __pnacl__
- * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi
- */
-#if defined(__native_client__)
-#undef __LINUX__
-#undef __NACL__
-#define __NACL__ 1
-#endif
-#if defined(__pnacl__)
-#undef __LINUX__
-#undef __PNACL__
-#define __PNACL__ 1
-/* PNACL with newlib supports static linking only */
-#define __SDL_NOGETPROCADDR__
-#endif
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Gets the name of the platform.
- */
-extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_platform_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_power.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_power.h
deleted file mode 100644 (file)
index 4831cb7..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_power_h_
-#define SDL_power_h_
-
-/**
- *  \file SDL_power.h
- *
- *  Header for the SDL power management routines.
- */
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief The basic state for the system's power supply.
- */
-typedef enum
-{
-    SDL_POWERSTATE_UNKNOWN,      /**< cannot determine power status */
-    SDL_POWERSTATE_ON_BATTERY,   /**< Not plugged in, running on the battery */
-    SDL_POWERSTATE_NO_BATTERY,   /**< Plugged in, no battery available */
-    SDL_POWERSTATE_CHARGING,     /**< Plugged in, charging battery */
-    SDL_POWERSTATE_CHARGED       /**< Plugged in, battery charged */
-} SDL_PowerState;
-
-
-/**
- *  \brief Get the current power supply details.
- *
- *  \param secs Seconds of battery life left. You can pass a NULL here if
- *              you don't care. Will return -1 if we can't determine a
- *              value, or we're not running on a battery.
- *
- *  \param pct Percentage of battery life left, between 0 and 100. You can
- *             pass a NULL here if you don't care. Will return -1 if we
- *             can't determine a value, or we're not running on a battery.
- *
- *  \return The state of the battery (if any).
- */
-extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *secs, int *pct);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_power_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_quit.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_quit.h
deleted file mode 100644 (file)
index c979983..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_quit.h
- *
- *  Include file for SDL quit event handling.
- */
-
-#ifndef SDL_quit_h_
-#define SDL_quit_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-/**
- *  \file SDL_quit.h
- *
- *  An ::SDL_QUIT event is generated when the user tries to close the application
- *  window.  If it is ignored or filtered out, the window will remain open.
- *  If it is not ignored or filtered, it is queued normally and the window
- *  is allowed to close.  When the window is closed, screen updates will
- *  complete, but have no effect.
- *
- *  SDL_Init() installs signal handlers for SIGINT (keyboard interrupt)
- *  and SIGTERM (system termination request), if handlers do not already
- *  exist, that generate ::SDL_QUIT events as well.  There is no way
- *  to determine the cause of an ::SDL_QUIT event, but setting a signal
- *  handler in your application will override the default generation of
- *  quit events for that signal.
- *
- *  \sa SDL_Quit()
- */
-
-/* There are no functions directly affecting the quit event */
-
-#define SDL_QuitRequested() \
-        (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0))
-
-#endif /* SDL_quit_h_ */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rect.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rect.h
deleted file mode 100644 (file)
index 71a4115..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_rect.h
- *
- *  Header file for SDL_rect definition and management functions.
- */
-
-#ifndef SDL_rect_h_
-#define SDL_rect_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_pixels.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief  The structure that defines a point (integer)
- *
- *  \sa SDL_EnclosePoints
- *  \sa SDL_PointInRect
- */
-typedef struct SDL_Point
-{
-    int x;
-    int y;
-} SDL_Point;
-
-/**
- *  \brief  The structure that defines a point (floating point)
- *
- *  \sa SDL_EnclosePoints
- *  \sa SDL_PointInRect
- */
-typedef struct SDL_FPoint
-{
-    float x;
-    float y;
-} SDL_FPoint;
-
-
-/**
- *  \brief A rectangle, with the origin at the upper left (integer).
- *
- *  \sa SDL_RectEmpty
- *  \sa SDL_RectEquals
- *  \sa SDL_HasIntersection
- *  \sa SDL_IntersectRect
- *  \sa SDL_UnionRect
- *  \sa SDL_EnclosePoints
- */
-typedef struct SDL_Rect
-{
-    int x, y;
-    int w, h;
-} SDL_Rect;
-
-
-/**
- *  \brief A rectangle, with the origin at the upper left (floating point).
- */
-typedef struct SDL_FRect
-{
-    float x;
-    float y;
-    float w;
-    float h;
-} SDL_FRect;
-
-
-/**
- *  \brief Returns true if point resides inside a rectangle.
- */
-SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r)
-{
-    return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&
-             (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;
-}
-
-/**
- *  \brief Returns true if the rectangle has no area.
- */
-SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r)
-{
-    return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE;
-}
-
-/**
- *  \brief Returns true if the two rectangles are equal.
- */
-SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b)
-{
-    return (a && b && (a->x == b->x) && (a->y == b->y) &&
-            (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE;
-}
-
-/**
- *  \brief Determine whether two rectangles intersect.
- *
- *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A,
-                                                     const SDL_Rect * B);
-
-/**
- *  \brief Calculate the intersection of two rectangles.
- *
- *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A,
-                                                   const SDL_Rect * B,
-                                                   SDL_Rect * result);
-
-/**
- *  \brief Calculate the union of two rectangles.
- */
-extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A,
-                                           const SDL_Rect * B,
-                                           SDL_Rect * result);
-
-/**
- *  \brief Calculate a minimal rectangle enclosing a set of points
- *
- *  \return SDL_TRUE if any points were within the clipping rect
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points,
-                                                   int count,
-                                                   const SDL_Rect * clip,
-                                                   SDL_Rect * result);
-
-/**
- *  \brief Calculate the intersection of a rectangle and line segment.
- *
- *  \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect *
-                                                          rect, int *X1,
-                                                          int *Y1, int *X2,
-                                                          int *Y2);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_rect_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_render.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_render.h
deleted file mode 100644 (file)
index 096b4a5..0000000
+++ /dev/null
@@ -1,1098 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_render.h
- *
- *  Header file for SDL 2D rendering functions.
- *
- *  This API supports the following features:
- *      * single pixel points
- *      * single pixel lines
- *      * filled rectangles
- *      * texture images
- *
- *  The primitives may be drawn in opaque, blended, or additive modes.
- *
- *  The texture images may be drawn in opaque, blended, or additive modes.
- *  They can have an additional color tint or alpha modulation applied to
- *  them, and may also be stretched with linear interpolation.
- *
- *  This API is designed to accelerate simple 2D operations. You may
- *  want more functionality such as polygons and particle effects and
- *  in that case you should use SDL's OpenGL/Direct3D support or one
- *  of the many good 3D engines.
- *
- *  These functions must be called from the main thread.
- *  See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995
- */
-
-#ifndef SDL_render_h_
-#define SDL_render_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_rect.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Flags used when creating a rendering context
- */
-typedef enum
-{
-    SDL_RENDERER_SOFTWARE = 0x00000001,         /**< The renderer is a software fallback */
-    SDL_RENDERER_ACCELERATED = 0x00000002,      /**< The renderer uses hardware
-                                                     acceleration */
-    SDL_RENDERER_PRESENTVSYNC = 0x00000004,     /**< Present is synchronized
-                                                     with the refresh rate */
-    SDL_RENDERER_TARGETTEXTURE = 0x00000008     /**< The renderer supports
-                                                     rendering to texture */
-} SDL_RendererFlags;
-
-/**
- *  \brief Information on the capabilities of a render driver or context.
- */
-typedef struct SDL_RendererInfo
-{
-    const char *name;           /**< The name of the renderer */
-    Uint32 flags;               /**< Supported ::SDL_RendererFlags */
-    Uint32 num_texture_formats; /**< The number of available texture formats */
-    Uint32 texture_formats[16]; /**< The available texture formats */
-    int max_texture_width;      /**< The maximum texture width */
-    int max_texture_height;     /**< The maximum texture height */
-} SDL_RendererInfo;
-
-/**
- *  \brief The access pattern allowed for a texture.
- */
-typedef enum
-{
-    SDL_TEXTUREACCESS_STATIC,    /**< Changes rarely, not lockable */
-    SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */
-    SDL_TEXTUREACCESS_TARGET     /**< Texture can be used as a render target */
-} SDL_TextureAccess;
-
-/**
- *  \brief The texture channel modulation used in SDL_RenderCopy().
- */
-typedef enum
-{
-    SDL_TEXTUREMODULATE_NONE = 0x00000000,     /**< No modulation */
-    SDL_TEXTUREMODULATE_COLOR = 0x00000001,    /**< srcC = srcC * color */
-    SDL_TEXTUREMODULATE_ALPHA = 0x00000002     /**< srcA = srcA * alpha */
-} SDL_TextureModulate;
-
-/**
- *  \brief Flip constants for SDL_RenderCopyEx
- */
-typedef enum
-{
-    SDL_FLIP_NONE = 0x00000000,     /**< Do not flip */
-    SDL_FLIP_HORIZONTAL = 0x00000001,    /**< flip horizontally */
-    SDL_FLIP_VERTICAL = 0x00000002     /**< flip vertically */
-} SDL_RendererFlip;
-
-/**
- *  \brief A structure representing rendering state
- */
-struct SDL_Renderer;
-typedef struct SDL_Renderer SDL_Renderer;
-
-/**
- *  \brief An efficient driver-specific representation of pixel data
- */
-struct SDL_Texture;
-typedef struct SDL_Texture SDL_Texture;
-
-
-/* Function prototypes */
-
-/**
- *  \brief Get the number of 2D rendering drivers available for the current
- *         display.
- *
- *  A render driver is a set of code that handles rendering and texture
- *  management on a particular display.  Normally there is only one, but
- *  some drivers may have several available with different capabilities.
- *
- *  \sa SDL_GetRenderDriverInfo()
- *  \sa SDL_CreateRenderer()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void);
-
-/**
- *  \brief Get information about a specific 2D rendering driver for the current
- *         display.
- *
- *  \param index The index of the driver to query information about.
- *  \param info  A pointer to an SDL_RendererInfo struct to be filled with
- *               information on the rendering driver.
- *
- *  \return 0 on success, -1 if the index was out of range.
- *
- *  \sa SDL_CreateRenderer()
- */
-extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index,
-                                                    SDL_RendererInfo * info);
-
-/**
- *  \brief Create a window and default renderer
- *
- *  \param width    The width of the window
- *  \param height   The height of the window
- *  \param window_flags The flags used to create the window
- *  \param window   A pointer filled with the window, or NULL on error
- *  \param renderer A pointer filled with the renderer, or NULL on error
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer(
-                                int width, int height, Uint32 window_flags,
-                                SDL_Window **window, SDL_Renderer **renderer);
-
-
-/**
- *  \brief Create a 2D rendering context for a window.
- *
- *  \param window The window where rendering is displayed.
- *  \param index    The index of the rendering driver to initialize, or -1 to
- *                  initialize the first one supporting the requested flags.
- *  \param flags    ::SDL_RendererFlags.
- *
- *  \return A valid rendering context or NULL if there was an error.
- *
- *  \sa SDL_CreateSoftwareRenderer()
- *  \sa SDL_GetRendererInfo()
- *  \sa SDL_DestroyRenderer()
- */
-extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window,
-                                               int index, Uint32 flags);
-
-/**
- *  \brief Create a 2D software rendering context for a surface.
- *
- *  \param surface The surface where rendering is done.
- *
- *  \return A valid rendering context or NULL if there was an error.
- *
- *  \sa SDL_CreateRenderer()
- *  \sa SDL_DestroyRenderer()
- */
-extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface);
-
-/**
- *  \brief Get the renderer associated with a window.
- */
-extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window);
-
-/**
- *  \brief Get information about a rendering context.
- */
-extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer,
-                                                SDL_RendererInfo * info);
-
-/**
- *  \brief Get the output size in pixels of a rendering context.
- */
-extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer,
-                                                      int *w, int *h);
-
-/**
- *  \brief Create a texture for a rendering context.
- *
- *  \param renderer The renderer.
- *  \param format The format of the texture.
- *  \param access One of the enumerated values in ::SDL_TextureAccess.
- *  \param w      The width of the texture in pixels.
- *  \param h      The height of the texture in pixels.
- *
- *  \return The created texture is returned, or NULL if no rendering context was
- *          active,  the format was unsupported, or the width or height were out
- *          of range.
- *
- *  \note The contents of the texture are not defined at creation.
- *
- *  \sa SDL_QueryTexture()
- *  \sa SDL_UpdateTexture()
- *  \sa SDL_DestroyTexture()
- */
-extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer,
-                                                        Uint32 format,
-                                                        int access, int w,
-                                                        int h);
-
-/**
- *  \brief Create a texture from an existing surface.
- *
- *  \param renderer The renderer.
- *  \param surface The surface containing pixel data used to fill the texture.
- *
- *  \return The created texture is returned, or NULL on error.
- *
- *  \note The surface is not modified or freed by this function.
- *
- *  \sa SDL_QueryTexture()
- *  \sa SDL_DestroyTexture()
- */
-extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface);
-
-/**
- *  \brief Query the attributes of a texture
- *
- *  \param texture A texture to be queried.
- *  \param format  A pointer filled in with the raw format of the texture.  The
- *                 actual format may differ, but pixel transfers will use this
- *                 format.
- *  \param access  A pointer filled in with the actual access to the texture.
- *  \param w       A pointer filled in with the width of the texture in pixels.
- *  \param h       A pointer filled in with the height of the texture in pixels.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- */
-extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture,
-                                             Uint32 * format, int *access,
-                                             int *w, int *h);
-
-/**
- *  \brief Set an additional color value used in render copy operations.
- *
- *  \param texture The texture to update.
- *  \param r       The red color value multiplied into copy operations.
- *  \param g       The green color value multiplied into copy operations.
- *  \param b       The blue color value multiplied into copy operations.
- *
- *  \return 0 on success, or -1 if the texture is not valid or color modulation
- *          is not supported.
- *
- *  \sa SDL_GetTextureColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture,
-                                                   Uint8 r, Uint8 g, Uint8 b);
-
-
-/**
- *  \brief Get the additional color value used in render copy operations.
- *
- *  \param texture The texture to query.
- *  \param r         A pointer filled in with the current red color value.
- *  \param g         A pointer filled in with the current green color value.
- *  \param b         A pointer filled in with the current blue color value.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \sa SDL_SetTextureColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture,
-                                                   Uint8 * r, Uint8 * g,
-                                                   Uint8 * b);
-
-/**
- *  \brief Set an additional alpha value used in render copy operations.
- *
- *  \param texture The texture to update.
- *  \param alpha     The alpha value multiplied into copy operations.
- *
- *  \return 0 on success, or -1 if the texture is not valid or alpha modulation
- *          is not supported.
- *
- *  \sa SDL_GetTextureAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture,
-                                                   Uint8 alpha);
-
-/**
- *  \brief Get the additional alpha value used in render copy operations.
- *
- *  \param texture The texture to query.
- *  \param alpha     A pointer filled in with the current alpha value.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \sa SDL_SetTextureAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture,
-                                                   Uint8 * alpha);
-
-/**
- *  \brief Set the blend mode used for texture copy operations.
- *
- *  \param texture The texture to update.
- *  \param blendMode ::SDL_BlendMode to use for texture blending.
- *
- *  \return 0 on success, or -1 if the texture is not valid or the blend mode is
- *          not supported.
- *
- *  \note If the blend mode is not supported, the closest supported mode is
- *        chosen.
- *
- *  \sa SDL_GetTextureBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture,
-                                                    SDL_BlendMode blendMode);
-
-/**
- *  \brief Get the blend mode used for texture copy operations.
- *
- *  \param texture   The texture to query.
- *  \param blendMode A pointer filled in with the current blend mode.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \sa SDL_SetTextureBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture,
-                                                    SDL_BlendMode *blendMode);
-
-/**
- *  \brief Update the given texture rectangle with new pixel data.
- *
- *  \param texture   The texture to update
- *  \param rect      A pointer to the rectangle of pixels to update, or NULL to
- *                   update the entire texture.
- *  \param pixels    The raw pixel data in the format of the texture.
- *  \param pitch     The number of bytes in a row of pixel data, including padding between lines.
- *
- *  The pixel data must be in the format of the texture. The pixel format can be
- *  queried with SDL_QueryTexture.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \note This is a fairly slow function.
- */
-extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture,
-                                              const SDL_Rect * rect,
-                                              const void *pixels, int pitch);
-
-/**
- *  \brief Update a rectangle within a planar YV12 or IYUV texture with new pixel data.
- *
- *  \param texture   The texture to update
- *  \param rect      A pointer to the rectangle of pixels to update, or NULL to
- *                   update the entire texture.
- *  \param Yplane    The raw pixel data for the Y plane.
- *  \param Ypitch    The number of bytes between rows of pixel data for the Y plane.
- *  \param Uplane    The raw pixel data for the U plane.
- *  \param Upitch    The number of bytes between rows of pixel data for the U plane.
- *  \param Vplane    The raw pixel data for the V plane.
- *  \param Vpitch    The number of bytes between rows of pixel data for the V plane.
- *
- *  \return 0 on success, or -1 if the texture is not valid.
- *
- *  \note You can use SDL_UpdateTexture() as long as your pixel data is
- *        a contiguous block of Y and U/V planes in the proper order, but
- *        this function is available if your pixel data is not contiguous.
- */
-extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture,
-                                                 const SDL_Rect * rect,
-                                                 const Uint8 *Yplane, int Ypitch,
-                                                 const Uint8 *Uplane, int Upitch,
-                                                 const Uint8 *Vplane, int Vpitch);
-
-/**
- *  \brief Lock a portion of the texture for write-only pixel access.
- *
- *  \param texture   The texture to lock for access, which was created with
- *                   ::SDL_TEXTUREACCESS_STREAMING.
- *  \param rect      A pointer to the rectangle to lock for access. If the rect
- *                   is NULL, the entire texture will be locked.
- *  \param pixels    This is filled in with a pointer to the locked pixels,
- *                   appropriately offset by the locked area.
- *  \param pitch     This is filled in with the pitch of the locked pixels.
- *
- *  \return 0 on success, or -1 if the texture is not valid or was not created with ::SDL_TEXTUREACCESS_STREAMING.
- *
- *  \sa SDL_UnlockTexture()
- */
-extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture,
-                                            const SDL_Rect * rect,
-                                            void **pixels, int *pitch);
-
-/**
- *  \brief Unlock a texture, uploading the changes to video memory, if needed.
- *
- *  \sa SDL_LockTexture()
- */
-extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture);
-
-/**
- * \brief Determines whether a window supports the use of render targets
- *
- * \param renderer The renderer that will be checked
- *
- * \return SDL_TRUE if supported, SDL_FALSE if not.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer);
-
-/**
- * \brief Set a texture as the current rendering target.
- *
- * \param renderer The renderer.
- * \param texture The targeted texture, which must be created with the SDL_TEXTUREACCESS_TARGET flag, or NULL for the default render target
- *
- * \return 0 on success, or -1 on error
- *
- *  \sa SDL_GetRenderTarget()
- */
-extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer,
-                                                SDL_Texture *texture);
-
-/**
- * \brief Get the current render target or NULL for the default render target.
- *
- * \return The current render target
- *
- *  \sa SDL_SetRenderTarget()
- */
-extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer);
-
-/**
- *  \brief Set device independent resolution for rendering
- *
- *  \param renderer The renderer for which resolution should be set.
- *  \param w      The width of the logical resolution
- *  \param h      The height of the logical resolution
- *
- *  This function uses the viewport and scaling functionality to allow a fixed logical
- *  resolution for rendering, regardless of the actual output resolution.  If the actual
- *  output resolution doesn't have the same aspect ratio the output rendering will be
- *  centered within the output display.
- *
- *  If the output display is a window, mouse events in the window will be filtered
- *  and scaled so they seem to arrive within the logical resolution.
- *
- *  \note If this function results in scaling or subpixel drawing by the
- *        rendering backend, it will be handled using the appropriate
- *        quality hints.
- *
- *  \sa SDL_RenderGetLogicalSize()
- *  \sa SDL_RenderSetScale()
- *  \sa SDL_RenderSetViewport()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h);
-
-/**
- *  \brief Get device independent resolution for rendering
- *
- *  \param renderer The renderer from which resolution should be queried.
- *  \param w      A pointer filled with the width of the logical resolution
- *  \param h      A pointer filled with the height of the logical resolution
- *
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h);
-
-/**
- *  \brief Set whether to force integer scales for resolution-independent rendering
- *
- *  \param renderer The renderer for which integer scaling should be set.
- *  \param enable   Enable or disable integer scaling
- *
- *  This function restricts the logical viewport to integer values - that is, when
- *  a resolution is between two multiples of a logical size, the viewport size is
- *  rounded down to the lower multiple.
- *
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer,
-                                                      SDL_bool enable);
-
-/**
- *  \brief Get whether integer scales are forced for resolution-independent rendering
- *
- *  \param renderer The renderer from which integer scaling should be queried.
- *
- *  \sa SDL_RenderSetIntegerScale()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer);
-
-/**
- *  \brief Set the drawing area for rendering on the current target.
- *
- *  \param renderer The renderer for which the drawing area should be set.
- *  \param rect The rectangle representing the drawing area, or NULL to set the viewport to the entire target.
- *
- *  The x,y of the viewport rect represents the origin for rendering.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \note If the window associated with the renderer is resized, the viewport is automatically reset.
- *
- *  \sa SDL_RenderGetViewport()
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer,
-                                                  const SDL_Rect * rect);
-
-/**
- *  \brief Get the drawing area for the current target.
- *
- *  \sa SDL_RenderSetViewport()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer,
-                                                   SDL_Rect * rect);
-
-/**
- *  \brief Set the clip rectangle for the current target.
- *
- *  \param renderer The renderer for which clip rectangle should be set.
- *  \param rect   A pointer to the rectangle to set as the clip rectangle, or
- *                NULL to disable clipping.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \sa SDL_RenderGetClipRect()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer,
-                                                  const SDL_Rect * rect);
-
-/**
- *  \brief Get the clip rectangle for the current target.
- *
- *  \param renderer The renderer from which clip rectangle should be queried.
- *  \param rect   A pointer filled in with the current clip rectangle, or
- *                an empty rectangle if clipping is disabled.
- *
- *  \sa SDL_RenderSetClipRect()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer,
-                                                   SDL_Rect * rect);
-
-/**
- *  \brief Get whether clipping is enabled on the given renderer.
- *
- *  \param renderer The renderer from which clip state should be queried.
- *
- *  \sa SDL_RenderGetClipRect()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer);
-
-
-/**
- *  \brief Set the drawing scale for rendering on the current target.
- *
- *  \param renderer The renderer for which the drawing scale should be set.
- *  \param scaleX The horizontal scaling factor
- *  \param scaleY The vertical scaling factor
- *
- *  The drawing coordinates are scaled by the x/y scaling factors
- *  before they are used by the renderer.  This allows resolution
- *  independent drawing with a single coordinate system.
- *
- *  \note If this results in scaling or subpixel drawing by the
- *        rendering backend, it will be handled using the appropriate
- *        quality hints.  For best results use integer scaling factors.
- *
- *  \sa SDL_RenderGetScale()
- *  \sa SDL_RenderSetLogicalSize()
- */
-extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer,
-                                               float scaleX, float scaleY);
-
-/**
- *  \brief Get the drawing scale for the current target.
- *
- *  \param renderer The renderer from which drawing scale should be queried.
- *  \param scaleX A pointer filled in with the horizontal scaling factor
- *  \param scaleY A pointer filled in with the vertical scaling factor
- *
- *  \sa SDL_RenderSetScale()
- */
-extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,
-                                               float *scaleX, float *scaleY);
-
-/**
- *  \brief Set the color used for drawing operations (Rect, Line and Clear).
- *
- *  \param renderer The renderer for which drawing color should be set.
- *  \param r The red value used to draw on the rendering target.
- *  \param g The green value used to draw on the rendering target.
- *  \param b The blue value used to draw on the rendering target.
- *  \param a The alpha value used to draw on the rendering target, usually
- *           ::SDL_ALPHA_OPAQUE (255).
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer,
-                                           Uint8 r, Uint8 g, Uint8 b,
-                                           Uint8 a);
-
-/**
- *  \brief Get the color used for drawing operations (Rect, Line and Clear).
- *
- *  \param renderer The renderer from which drawing color should be queried.
- *  \param r A pointer to the red value used to draw on the rendering target.
- *  \param g A pointer to the green value used to draw on the rendering target.
- *  \param b A pointer to the blue value used to draw on the rendering target.
- *  \param a A pointer to the alpha value used to draw on the rendering target,
- *           usually ::SDL_ALPHA_OPAQUE (255).
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer,
-                                           Uint8 * r, Uint8 * g, Uint8 * b,
-                                           Uint8 * a);
-
-/**
- *  \brief Set the blend mode used for drawing operations (Fill and Line).
- *
- *  \param renderer The renderer for which blend mode should be set.
- *  \param blendMode ::SDL_BlendMode to use for blending.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \note If the blend mode is not supported, the closest supported mode is
- *        chosen.
- *
- *  \sa SDL_GetRenderDrawBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer,
-                                                       SDL_BlendMode blendMode);
-
-/**
- *  \brief Get the blend mode used for drawing operations.
- *
- *  \param renderer The renderer from which blend mode should be queried.
- *  \param blendMode A pointer filled in with the current blend mode.
- *
- *  \return 0 on success, or -1 on error
- *
- *  \sa SDL_SetRenderDrawBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer,
-                                                       SDL_BlendMode *blendMode);
-
-/**
- *  \brief Clear the current rendering target with the drawing color
- *
- *  This function clears the entire rendering target, ignoring the viewport and
- *  the clip rectangle.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer);
-
-/**
- *  \brief Draw a point on the current rendering target.
- *
- *  \param renderer The renderer which should draw a point.
- *  \param x The x coordinate of the point.
- *  \param y The y coordinate of the point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer,
-                                                int x, int y);
-
-/**
- *  \brief Draw multiple points on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple points.
- *  \param points The points to draw
- *  \param count The number of points to draw
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer,
-                                                 const SDL_Point * points,
-                                                 int count);
-
-/**
- *  \brief Draw a line on the current rendering target.
- *
- *  \param renderer The renderer which should draw a line.
- *  \param x1 The x coordinate of the start point.
- *  \param y1 The y coordinate of the start point.
- *  \param x2 The x coordinate of the end point.
- *  \param y2 The y coordinate of the end point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer,
-                                               int x1, int y1, int x2, int y2);
-
-/**
- *  \brief Draw a series of connected lines on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple lines.
- *  \param points The points along the lines
- *  \param count The number of points, drawing count-1 lines
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer,
-                                                const SDL_Point * points,
-                                                int count);
-
-/**
- *  \brief Draw a rectangle on the current rendering target.
- *
- *  \param renderer The renderer which should draw a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL to outline the entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer,
-                                               const SDL_Rect * rect);
-
-/**
- *  \brief Draw some number of rectangles on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer,
-                                                const SDL_Rect * rects,
-                                                int count);
-
-/**
- *  \brief Fill a rectangle on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL for the entire
- *              rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer,
-                                               const SDL_Rect * rect);
-
-/**
- *  \brief Fill some number of rectangles on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer,
-                                                const SDL_Rect * rects,
-                                                int count);
-
-/**
- *  \brief Copy a portion of the texture to the current rendering target.
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer,
-                                           SDL_Texture * texture,
-                                           const SDL_Rect * srcrect,
-                                           const SDL_Rect * dstrect);
-
-/**
- *  \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *  \param angle    An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction
- *  \param center   A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2).
- *  \param flip     An SDL_RendererFlip value stating which flipping actions should be performed on the texture
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer,
-                                           SDL_Texture * texture,
-                                           const SDL_Rect * srcrect,
-                                           const SDL_Rect * dstrect,
-                                           const double angle,
-                                           const SDL_Point *center,
-                                           const SDL_RendererFlip flip);
-
-
-/**
- *  \brief Draw a point on the current rendering target.
- *
- *  \param renderer The renderer which should draw a point.
- *  \param x The x coordinate of the point.
- *  \param y The y coordinate of the point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer,
-                                                 float x, float y);
-
-/**
- *  \brief Draw multiple points on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple points.
- *  \param points The points to draw
- *  \param count The number of points to draw
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer,
-                                                  const SDL_FPoint * points,
-                                                  int count);
-
-/**
- *  \brief Draw a line on the current rendering target.
- *
- *  \param renderer The renderer which should draw a line.
- *  \param x1 The x coordinate of the start point.
- *  \param y1 The y coordinate of the start point.
- *  \param x2 The x coordinate of the end point.
- *  \param y2 The y coordinate of the end point.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer,
-                                                float x1, float y1, float x2, float y2);
-
-/**
- *  \brief Draw a series of connected lines on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple lines.
- *  \param points The points along the lines
- *  \param count The number of points, drawing count-1 lines
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer,
-                                                const SDL_FPoint * points,
-                                                int count);
-
-/**
- *  \brief Draw a rectangle on the current rendering target.
- *
- *  \param renderer The renderer which should draw a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL to outline the entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer,
-                                               const SDL_FRect * rect);
-
-/**
- *  \brief Draw some number of rectangles on the current rendering target.
- *
- *  \param renderer The renderer which should draw multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer,
-                                                 const SDL_FRect * rects,
-                                                 int count);
-
-/**
- *  \brief Fill a rectangle on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill a rectangle.
- *  \param rect A pointer to the destination rectangle, or NULL for the entire
- *              rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer,
-                                                const SDL_FRect * rect);
-
-/**
- *  \brief Fill some number of rectangles on the current rendering target with the drawing color.
- *
- *  \param renderer The renderer which should fill multiple rectangles.
- *  \param rects A pointer to an array of destination rectangles.
- *  \param count The number of rectangles.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer,
-                                                 const SDL_FRect * rects,
-                                                 int count);
-
-/**
- *  \brief Copy a portion of the texture to the current rendering target.
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer,
-                                            SDL_Texture * texture,
-                                            const SDL_Rect * srcrect,
-                                            const SDL_FRect * dstrect);
-
-/**
- *  \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center
- *
- *  \param renderer The renderer which should copy parts of a texture.
- *  \param texture The source texture.
- *  \param srcrect   A pointer to the source rectangle, or NULL for the entire
- *                   texture.
- *  \param dstrect   A pointer to the destination rectangle, or NULL for the
- *                   entire rendering target.
- *  \param angle    An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction
- *  \param center   A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2).
- *  \param flip     An SDL_RendererFlip value stating which flipping actions should be performed on the texture
- *
- *  \return 0 on success, or -1 on error
- */
-extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer,
-                                            SDL_Texture * texture,
-                                            const SDL_Rect * srcrect,
-                                            const SDL_FRect * dstrect,
-                                            const double angle,
-                                            const SDL_FPoint *center,
-                                            const SDL_RendererFlip flip);
-
-/**
- *  \brief Read pixels from the current rendering target.
- *
- *  \param renderer The renderer from which pixels should be read.
- *  \param rect   A pointer to the rectangle to read, or NULL for the entire
- *                render target.
- *  \param format The desired format of the pixel data, or 0 to use the format
- *                of the rendering target
- *  \param pixels A pointer to be filled in with the pixel data
- *  \param pitch  The pitch of the pixels parameter.
- *
- *  \return 0 on success, or -1 if pixel reading is not supported.
- *
- *  \warning This is a very slow operation, and should not be used frequently.
- */
-extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,
-                                                 const SDL_Rect * rect,
-                                                 Uint32 format,
-                                                 void *pixels, int pitch);
-
-/**
- *  \brief Update the screen with rendering performed.
- */
-extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer);
-
-/**
- *  \brief Destroy the specified texture.
- *
- *  \sa SDL_CreateTexture()
- *  \sa SDL_CreateTextureFromSurface()
- */
-extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture);
-
-/**
- *  \brief Destroy the rendering context for a window and free associated
- *         textures.
- *
- *  \sa SDL_CreateRenderer()
- */
-extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);
-
-/**
- *  \brief Force the rendering context to flush any pending commands to the
- *         underlying rendering API.
- *
- *  You do not need to (and in fact, shouldn't) call this function unless
- *  you are planning to call into OpenGL/Direct3D/Metal/whatever directly
- *  in addition to using an SDL_Renderer.
- *
- *  This is for a very-specific case: if you are using SDL's render API,
- *  you asked for a specific renderer backend (OpenGL, Direct3D, etc),
- *  you set SDL_HINT_RENDER_BATCHING to "1", and you plan to make
- *  OpenGL/D3D/whatever calls in addition to SDL render API calls. If all of
- *  this applies, you should call SDL_RenderFlush() between calls to SDL's
- *  render API and the low-level API you're using in cooperation.
- *
- *  In all other cases, you can ignore this function. This is only here to
- *  get maximum performance out of a specific situation. In all other cases,
- *  SDL will do the right thing, perhaps at a performance loss.
- *
- *  This function is first available in SDL 2.0.10, and is not needed in
- *  2.0.9 and earlier, as earlier versions did not queue rendering commands
- *  at all, instead flushing them to the OS immediately.
- */
-extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer);
-
-
-/**
- *  \brief Bind the texture to the current OpenGL/ES/ES2 context for use with
- *         OpenGL instructions.
- *
- *  \param texture  The SDL texture to bind
- *  \param texw     A pointer to a float that will be filled with the texture width
- *  \param texh     A pointer to a float that will be filled with the texture height
- *
- *  \return 0 on success, or -1 if the operation is not supported
- */
-extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh);
-
-/**
- *  \brief Unbind a texture from the current OpenGL/ES/ES2 context.
- *
- *  \param texture  The SDL texture to unbind
- *
- *  \return 0 on success, or -1 if the operation is not supported
- */
-extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture);
-
-/**
- *  \brief Get the CAMetalLayer associated with the given Metal renderer
- *
- *  \param renderer The renderer to query
- *
- *  \return CAMetalLayer* on success, or NULL if the renderer isn't a Metal renderer
- *
- *  \sa SDL_RenderGetMetalCommandEncoder()
- */
-extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);
-
-/**
- *  \brief Get the Metal command encoder for the current frame
- *
- *  \param renderer The renderer to query
- *
- *  \return id<MTLRenderCommandEncoder> on success, or NULL if the renderer isn't a Metal renderer
- *
- *  \sa SDL_RenderGetMetalLayer()
- */
-extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_render_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_revision.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_revision.h
deleted file mode 100644 (file)
index 3b3fc85..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#define SDL_REVISION "hg-12952:bc90ce38f1e2"
-#define SDL_REVISION_NUMBER 12952
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rwops.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rwops.h
deleted file mode 100644 (file)
index f66119f..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_rwops.h
- *
- *  This file provides a general interface for SDL to read and write
- *  data streams.  It can easily be extended to files, memory, etc.
- */
-
-#ifndef SDL_rwops_h_
-#define SDL_rwops_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* RWops Types */
-#define SDL_RWOPS_UNKNOWN   0U  /**< Unknown stream type */
-#define SDL_RWOPS_WINFILE   1U  /**< Win32 file */
-#define SDL_RWOPS_STDFILE   2U  /**< Stdio file */
-#define SDL_RWOPS_JNIFILE   3U  /**< Android asset */
-#define SDL_RWOPS_MEMORY    4U  /**< Memory stream */
-#define SDL_RWOPS_MEMORY_RO 5U  /**< Read-Only memory stream */
-
-/**
- * This is the read/write operation structure -- very basic.
- */
-typedef struct SDL_RWops
-{
-    /**
-     *  Return the size of the file in this rwops, or -1 if unknown
-     */
-    Sint64 (SDLCALL * size) (struct SDL_RWops * context);
-
-    /**
-     *  Seek to \c offset relative to \c whence, one of stdio's whence values:
-     *  RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
-     *
-     *  \return the final offset in the data stream, or -1 on error.
-     */
-    Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset,
-                             int whence);
-
-    /**
-     *  Read up to \c maxnum objects each of size \c size from the data
-     *  stream to the area pointed at by \c ptr.
-     *
-     *  \return the number of objects read, or 0 at error or end of file.
-     */
-    size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr,
-                             size_t size, size_t maxnum);
-
-    /**
-     *  Write exactly \c num objects each of size \c size from the area
-     *  pointed at by \c ptr to data stream.
-     *
-     *  \return the number of objects written, or 0 at error or end of file.
-     */
-    size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr,
-                              size_t size, size_t num);
-
-    /**
-     *  Close and free an allocated SDL_RWops structure.
-     *
-     *  \return 0 if successful or -1 on write error when flushing data.
-     */
-    int (SDLCALL * close) (struct SDL_RWops * context);
-
-    Uint32 type;
-    union
-    {
-#if defined(__ANDROID__)
-        struct
-        {
-            void *fileNameRef;
-            void *inputStreamRef;
-            void *readableByteChannelRef;
-            void *readMethod;
-            void *assetFileDescriptorRef;
-            long position;
-            long size;
-            long offset;
-            int fd;
-        } androidio;
-#elif defined(__WIN32__)
-        struct
-        {
-            SDL_bool append;
-            void *h;
-            struct
-            {
-                void *data;
-                size_t size;
-                size_t left;
-            } buffer;
-        } windowsio;
-#endif
-
-#ifdef HAVE_STDIO_H
-        struct
-        {
-            SDL_bool autoclose;
-            FILE *fp;
-        } stdio;
-#endif
-        struct
-        {
-            Uint8 *base;
-            Uint8 *here;
-            Uint8 *stop;
-        } mem;
-        struct
-        {
-            void *data1;
-            void *data2;
-        } unknown;
-    } hidden;
-
-} SDL_RWops;
-
-
-/**
- *  \name RWFrom functions
- *
- *  Functions to create SDL_RWops structures from various data streams.
- */
-/* @{ */
-
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file,
-                                                  const char *mode);
-
-#ifdef HAVE_STDIO_H
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp,
-                                                SDL_bool autoclose);
-#else
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp,
-                                                SDL_bool autoclose);
-#endif
-
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size);
-extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem,
-                                                      int size);
-
-/* @} *//* RWFrom functions */
-
-
-extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void);
-extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area);
-
-#define RW_SEEK_SET 0       /**< Seek from the beginning of data */
-#define RW_SEEK_CUR 1       /**< Seek relative to current read point */
-#define RW_SEEK_END 2       /**< Seek relative to the end of data */
-
-/**
- *  Return the size of the file in this rwops, or -1 if unknown
- */
-extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context);
-
-/**
- *  Seek to \c offset relative to \c whence, one of stdio's whence values:
- *  RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
- *
- *  \return the final offset in the data stream, or -1 on error.
- */
-extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context,
-                                          Sint64 offset, int whence);
-
-/**
- *  Return the current offset in the data stream, or -1 on error.
- */
-extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context);
-
-/**
- *  Read up to \c maxnum objects each of size \c size from the data
- *  stream to the area pointed at by \c ptr.
- *
- *  \return the number of objects read, or 0 at error or end of file.
- */
-extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context,
-                                          void *ptr, size_t size, size_t maxnum);
-
-/**
- *  Write exactly \c num objects each of size \c size from the area
- *  pointed at by \c ptr to data stream.
- *
- *  \return the number of objects written, or 0 at error or end of file.
- */
-extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context,
-                                           const void *ptr, size_t size, size_t num);
-
-/**
- *  Close and free an allocated SDL_RWops structure.
- *
- *  \return 0 if successful or -1 on write error when flushing data.
- */
-extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context);
-
-/**
- *  Load all the data from an SDL data stream.
- *
- *  The data is allocated with a zero byte at the end (null terminated)
- *
- *  If \c datasize is not NULL, it is filled with the size of the data read.
- *
- *  If \c freesrc is non-zero, the stream will be closed after being read.
- *
- *  The data should be freed with SDL_free().
- *
- *  \return the data, or NULL if there was an error.
- */
-extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops * src, size_t *datasize,
-                                                    int freesrc);
-
-/**
- *  Load an entire file.
- *
- *  The data is allocated with a zero byte at the end (null terminated)
- *
- *  If \c datasize is not NULL, it is filled with the size of the data read.
- *
- *  If \c freesrc is non-zero, the stream will be closed after being read.
- *
- *  The data should be freed with SDL_free().
- *
- *  \return the data, or NULL if there was an error.
- */
-extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize);
-
-/**
- *  \name Read endian functions
- *
- *  Read an item of the specified endianness and return in native format.
- */
-/* @{ */
-extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src);
-extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src);
-extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src);
-extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src);
-extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src);
-extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src);
-extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src);
-/* @} *//* Read endian functions */
-
-/**
- *  \name Write endian functions
- *
- *  Write an item of native format to the specified endianness.
- */
-/* @{ */
-extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value);
-extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value);
-/* @} *//* Write endian functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_rwops_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_scancode.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_scancode.h
deleted file mode 100644 (file)
index a50305f..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_scancode.h
- *
- *  Defines keyboard scancodes.
- */
-
-#ifndef SDL_scancode_h_
-#define SDL_scancode_h_
-
-#include "SDL_stdinc.h"
-
-/**
- *  \brief The SDL keyboard scancode representation.
- *
- *  Values of this type are used to represent keyboard keys, among other places
- *  in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the
- *  SDL_Event structure.
- *
- *  The values in this enumeration are based on the USB usage page standard:
- *  https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
- */
-typedef enum
-{
-    SDL_SCANCODE_UNKNOWN = 0,
-
-    /**
-     *  \name Usage page 0x07
-     *
-     *  These values are from usage page 0x07 (USB keyboard page).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_A = 4,
-    SDL_SCANCODE_B = 5,
-    SDL_SCANCODE_C = 6,
-    SDL_SCANCODE_D = 7,
-    SDL_SCANCODE_E = 8,
-    SDL_SCANCODE_F = 9,
-    SDL_SCANCODE_G = 10,
-    SDL_SCANCODE_H = 11,
-    SDL_SCANCODE_I = 12,
-    SDL_SCANCODE_J = 13,
-    SDL_SCANCODE_K = 14,
-    SDL_SCANCODE_L = 15,
-    SDL_SCANCODE_M = 16,
-    SDL_SCANCODE_N = 17,
-    SDL_SCANCODE_O = 18,
-    SDL_SCANCODE_P = 19,
-    SDL_SCANCODE_Q = 20,
-    SDL_SCANCODE_R = 21,
-    SDL_SCANCODE_S = 22,
-    SDL_SCANCODE_T = 23,
-    SDL_SCANCODE_U = 24,
-    SDL_SCANCODE_V = 25,
-    SDL_SCANCODE_W = 26,
-    SDL_SCANCODE_X = 27,
-    SDL_SCANCODE_Y = 28,
-    SDL_SCANCODE_Z = 29,
-
-    SDL_SCANCODE_1 = 30,
-    SDL_SCANCODE_2 = 31,
-    SDL_SCANCODE_3 = 32,
-    SDL_SCANCODE_4 = 33,
-    SDL_SCANCODE_5 = 34,
-    SDL_SCANCODE_6 = 35,
-    SDL_SCANCODE_7 = 36,
-    SDL_SCANCODE_8 = 37,
-    SDL_SCANCODE_9 = 38,
-    SDL_SCANCODE_0 = 39,
-
-    SDL_SCANCODE_RETURN = 40,
-    SDL_SCANCODE_ESCAPE = 41,
-    SDL_SCANCODE_BACKSPACE = 42,
-    SDL_SCANCODE_TAB = 43,
-    SDL_SCANCODE_SPACE = 44,
-
-    SDL_SCANCODE_MINUS = 45,
-    SDL_SCANCODE_EQUALS = 46,
-    SDL_SCANCODE_LEFTBRACKET = 47,
-    SDL_SCANCODE_RIGHTBRACKET = 48,
-    SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return
-                                  *   key on ISO keyboards and at the right end
-                                  *   of the QWERTY row on ANSI keyboards.
-                                  *   Produces REVERSE SOLIDUS (backslash) and
-                                  *   VERTICAL LINE in a US layout, REVERSE
-                                  *   SOLIDUS and VERTICAL LINE in a UK Mac
-                                  *   layout, NUMBER SIGN and TILDE in a UK
-                                  *   Windows layout, DOLLAR SIGN and POUND SIGN
-                                  *   in a Swiss German layout, NUMBER SIGN and
-                                  *   APOSTROPHE in a German layout, GRAVE
-                                  *   ACCENT and POUND SIGN in a French Mac
-                                  *   layout, and ASTERISK and MICRO SIGN in a
-                                  *   French Windows layout.
-                                  */
-    SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code
-                                  *   instead of 49 for the same key, but all
-                                  *   OSes I've seen treat the two codes
-                                  *   identically. So, as an implementor, unless
-                                  *   your keyboard generates both of those
-                                  *   codes and your OS treats them differently,
-                                  *   you should generate SDL_SCANCODE_BACKSLASH
-                                  *   instead of this code. As a user, you
-                                  *   should not rely on this code because SDL
-                                  *   will never generate it with most (all?)
-                                  *   keyboards.
-                                  */
-    SDL_SCANCODE_SEMICOLON = 51,
-    SDL_SCANCODE_APOSTROPHE = 52,
-    SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI
-                              *   and ISO keyboards). Produces GRAVE ACCENT and
-                              *   TILDE in a US Windows layout and in US and UK
-                              *   Mac layouts on ANSI keyboards, GRAVE ACCENT
-                              *   and NOT SIGN in a UK Windows layout, SECTION
-                              *   SIGN and PLUS-MINUS SIGN in US and UK Mac
-                              *   layouts on ISO keyboards, SECTION SIGN and
-                              *   DEGREE SIGN in a Swiss German layout (Mac:
-                              *   only on ISO keyboards), CIRCUMFLEX ACCENT and
-                              *   DEGREE SIGN in a German layout (Mac: only on
-                              *   ISO keyboards), SUPERSCRIPT TWO and TILDE in a
-                              *   French Windows layout, COMMERCIAL AT and
-                              *   NUMBER SIGN in a French Mac layout on ISO
-                              *   keyboards, and LESS-THAN SIGN and GREATER-THAN
-                              *   SIGN in a Swiss German, German, or French Mac
-                              *   layout on ANSI keyboards.
-                              */
-    SDL_SCANCODE_COMMA = 54,
-    SDL_SCANCODE_PERIOD = 55,
-    SDL_SCANCODE_SLASH = 56,
-
-    SDL_SCANCODE_CAPSLOCK = 57,
-
-    SDL_SCANCODE_F1 = 58,
-    SDL_SCANCODE_F2 = 59,
-    SDL_SCANCODE_F3 = 60,
-    SDL_SCANCODE_F4 = 61,
-    SDL_SCANCODE_F5 = 62,
-    SDL_SCANCODE_F6 = 63,
-    SDL_SCANCODE_F7 = 64,
-    SDL_SCANCODE_F8 = 65,
-    SDL_SCANCODE_F9 = 66,
-    SDL_SCANCODE_F10 = 67,
-    SDL_SCANCODE_F11 = 68,
-    SDL_SCANCODE_F12 = 69,
-
-    SDL_SCANCODE_PRINTSCREEN = 70,
-    SDL_SCANCODE_SCROLLLOCK = 71,
-    SDL_SCANCODE_PAUSE = 72,
-    SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but
-                                   does send code 73, not 117) */
-    SDL_SCANCODE_HOME = 74,
-    SDL_SCANCODE_PAGEUP = 75,
-    SDL_SCANCODE_DELETE = 76,
-    SDL_SCANCODE_END = 77,
-    SDL_SCANCODE_PAGEDOWN = 78,
-    SDL_SCANCODE_RIGHT = 79,
-    SDL_SCANCODE_LEFT = 80,
-    SDL_SCANCODE_DOWN = 81,
-    SDL_SCANCODE_UP = 82,
-
-    SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards
-                                     */
-    SDL_SCANCODE_KP_DIVIDE = 84,
-    SDL_SCANCODE_KP_MULTIPLY = 85,
-    SDL_SCANCODE_KP_MINUS = 86,
-    SDL_SCANCODE_KP_PLUS = 87,
-    SDL_SCANCODE_KP_ENTER = 88,
-    SDL_SCANCODE_KP_1 = 89,
-    SDL_SCANCODE_KP_2 = 90,
-    SDL_SCANCODE_KP_3 = 91,
-    SDL_SCANCODE_KP_4 = 92,
-    SDL_SCANCODE_KP_5 = 93,
-    SDL_SCANCODE_KP_6 = 94,
-    SDL_SCANCODE_KP_7 = 95,
-    SDL_SCANCODE_KP_8 = 96,
-    SDL_SCANCODE_KP_9 = 97,
-    SDL_SCANCODE_KP_0 = 98,
-    SDL_SCANCODE_KP_PERIOD = 99,
-
-    SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO
-                                        *   keyboards have over ANSI ones,
-                                        *   located between left shift and Y.
-                                        *   Produces GRAVE ACCENT and TILDE in a
-                                        *   US or UK Mac layout, REVERSE SOLIDUS
-                                        *   (backslash) and VERTICAL LINE in a
-                                        *   US or UK Windows layout, and
-                                        *   LESS-THAN SIGN and GREATER-THAN SIGN
-                                        *   in a Swiss German, German, or French
-                                        *   layout. */
-    SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */
-    SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag,
-                               *   not a physical key - but some Mac keyboards
-                               *   do have a power key. */
-    SDL_SCANCODE_KP_EQUALS = 103,
-    SDL_SCANCODE_F13 = 104,
-    SDL_SCANCODE_F14 = 105,
-    SDL_SCANCODE_F15 = 106,
-    SDL_SCANCODE_F16 = 107,
-    SDL_SCANCODE_F17 = 108,
-    SDL_SCANCODE_F18 = 109,
-    SDL_SCANCODE_F19 = 110,
-    SDL_SCANCODE_F20 = 111,
-    SDL_SCANCODE_F21 = 112,
-    SDL_SCANCODE_F22 = 113,
-    SDL_SCANCODE_F23 = 114,
-    SDL_SCANCODE_F24 = 115,
-    SDL_SCANCODE_EXECUTE = 116,
-    SDL_SCANCODE_HELP = 117,
-    SDL_SCANCODE_MENU = 118,
-    SDL_SCANCODE_SELECT = 119,
-    SDL_SCANCODE_STOP = 120,
-    SDL_SCANCODE_AGAIN = 121,   /**< redo */
-    SDL_SCANCODE_UNDO = 122,
-    SDL_SCANCODE_CUT = 123,
-    SDL_SCANCODE_COPY = 124,
-    SDL_SCANCODE_PASTE = 125,
-    SDL_SCANCODE_FIND = 126,
-    SDL_SCANCODE_MUTE = 127,
-    SDL_SCANCODE_VOLUMEUP = 128,
-    SDL_SCANCODE_VOLUMEDOWN = 129,
-/* not sure whether there's a reason to enable these */
-/*     SDL_SCANCODE_LOCKINGCAPSLOCK = 130,  */
-/*     SDL_SCANCODE_LOCKINGNUMLOCK = 131, */
-/*     SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */
-    SDL_SCANCODE_KP_COMMA = 133,
-    SDL_SCANCODE_KP_EQUALSAS400 = 134,
-
-    SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see
-                                            footnotes in USB doc */
-    SDL_SCANCODE_INTERNATIONAL2 = 136,
-    SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */
-    SDL_SCANCODE_INTERNATIONAL4 = 138,
-    SDL_SCANCODE_INTERNATIONAL5 = 139,
-    SDL_SCANCODE_INTERNATIONAL6 = 140,
-    SDL_SCANCODE_INTERNATIONAL7 = 141,
-    SDL_SCANCODE_INTERNATIONAL8 = 142,
-    SDL_SCANCODE_INTERNATIONAL9 = 143,
-    SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */
-    SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */
-    SDL_SCANCODE_LANG3 = 146, /**< Katakana */
-    SDL_SCANCODE_LANG4 = 147, /**< Hiragana */
-    SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */
-    SDL_SCANCODE_LANG6 = 149, /**< reserved */
-    SDL_SCANCODE_LANG7 = 150, /**< reserved */
-    SDL_SCANCODE_LANG8 = 151, /**< reserved */
-    SDL_SCANCODE_LANG9 = 152, /**< reserved */
-
-    SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */
-    SDL_SCANCODE_SYSREQ = 154,
-    SDL_SCANCODE_CANCEL = 155,
-    SDL_SCANCODE_CLEAR = 156,
-    SDL_SCANCODE_PRIOR = 157,
-    SDL_SCANCODE_RETURN2 = 158,
-    SDL_SCANCODE_SEPARATOR = 159,
-    SDL_SCANCODE_OUT = 160,
-    SDL_SCANCODE_OPER = 161,
-    SDL_SCANCODE_CLEARAGAIN = 162,
-    SDL_SCANCODE_CRSEL = 163,
-    SDL_SCANCODE_EXSEL = 164,
-
-    SDL_SCANCODE_KP_00 = 176,
-    SDL_SCANCODE_KP_000 = 177,
-    SDL_SCANCODE_THOUSANDSSEPARATOR = 178,
-    SDL_SCANCODE_DECIMALSEPARATOR = 179,
-    SDL_SCANCODE_CURRENCYUNIT = 180,
-    SDL_SCANCODE_CURRENCYSUBUNIT = 181,
-    SDL_SCANCODE_KP_LEFTPAREN = 182,
-    SDL_SCANCODE_KP_RIGHTPAREN = 183,
-    SDL_SCANCODE_KP_LEFTBRACE = 184,
-    SDL_SCANCODE_KP_RIGHTBRACE = 185,
-    SDL_SCANCODE_KP_TAB = 186,
-    SDL_SCANCODE_KP_BACKSPACE = 187,
-    SDL_SCANCODE_KP_A = 188,
-    SDL_SCANCODE_KP_B = 189,
-    SDL_SCANCODE_KP_C = 190,
-    SDL_SCANCODE_KP_D = 191,
-    SDL_SCANCODE_KP_E = 192,
-    SDL_SCANCODE_KP_F = 193,
-    SDL_SCANCODE_KP_XOR = 194,
-    SDL_SCANCODE_KP_POWER = 195,
-    SDL_SCANCODE_KP_PERCENT = 196,
-    SDL_SCANCODE_KP_LESS = 197,
-    SDL_SCANCODE_KP_GREATER = 198,
-    SDL_SCANCODE_KP_AMPERSAND = 199,
-    SDL_SCANCODE_KP_DBLAMPERSAND = 200,
-    SDL_SCANCODE_KP_VERTICALBAR = 201,
-    SDL_SCANCODE_KP_DBLVERTICALBAR = 202,
-    SDL_SCANCODE_KP_COLON = 203,
-    SDL_SCANCODE_KP_HASH = 204,
-    SDL_SCANCODE_KP_SPACE = 205,
-    SDL_SCANCODE_KP_AT = 206,
-    SDL_SCANCODE_KP_EXCLAM = 207,
-    SDL_SCANCODE_KP_MEMSTORE = 208,
-    SDL_SCANCODE_KP_MEMRECALL = 209,
-    SDL_SCANCODE_KP_MEMCLEAR = 210,
-    SDL_SCANCODE_KP_MEMADD = 211,
-    SDL_SCANCODE_KP_MEMSUBTRACT = 212,
-    SDL_SCANCODE_KP_MEMMULTIPLY = 213,
-    SDL_SCANCODE_KP_MEMDIVIDE = 214,
-    SDL_SCANCODE_KP_PLUSMINUS = 215,
-    SDL_SCANCODE_KP_CLEAR = 216,
-    SDL_SCANCODE_KP_CLEARENTRY = 217,
-    SDL_SCANCODE_KP_BINARY = 218,
-    SDL_SCANCODE_KP_OCTAL = 219,
-    SDL_SCANCODE_KP_DECIMAL = 220,
-    SDL_SCANCODE_KP_HEXADECIMAL = 221,
-
-    SDL_SCANCODE_LCTRL = 224,
-    SDL_SCANCODE_LSHIFT = 225,
-    SDL_SCANCODE_LALT = 226, /**< alt, option */
-    SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */
-    SDL_SCANCODE_RCTRL = 228,
-    SDL_SCANCODE_RSHIFT = 229,
-    SDL_SCANCODE_RALT = 230, /**< alt gr, option */
-    SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */
-
-    SDL_SCANCODE_MODE = 257,    /**< I'm not sure if this is really not covered
-                                 *   by any of the above, but since there's a
-                                 *   special KMOD_MODE for it I'm adding it here
-                                 */
-
-    /* @} *//* Usage page 0x07 */
-
-    /**
-     *  \name Usage page 0x0C
-     *
-     *  These values are mapped from usage page 0x0C (USB consumer page).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_AUDIONEXT = 258,
-    SDL_SCANCODE_AUDIOPREV = 259,
-    SDL_SCANCODE_AUDIOSTOP = 260,
-    SDL_SCANCODE_AUDIOPLAY = 261,
-    SDL_SCANCODE_AUDIOMUTE = 262,
-    SDL_SCANCODE_MEDIASELECT = 263,
-    SDL_SCANCODE_WWW = 264,
-    SDL_SCANCODE_MAIL = 265,
-    SDL_SCANCODE_CALCULATOR = 266,
-    SDL_SCANCODE_COMPUTER = 267,
-    SDL_SCANCODE_AC_SEARCH = 268,
-    SDL_SCANCODE_AC_HOME = 269,
-    SDL_SCANCODE_AC_BACK = 270,
-    SDL_SCANCODE_AC_FORWARD = 271,
-    SDL_SCANCODE_AC_STOP = 272,
-    SDL_SCANCODE_AC_REFRESH = 273,
-    SDL_SCANCODE_AC_BOOKMARKS = 274,
-
-    /* @} *//* Usage page 0x0C */
-
-    /**
-     *  \name Walther keys
-     *
-     *  These are values that Christian Walther added (for mac keyboard?).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_BRIGHTNESSDOWN = 275,
-    SDL_SCANCODE_BRIGHTNESSUP = 276,
-    SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display
-                                           switch, video mode switch */
-    SDL_SCANCODE_KBDILLUMTOGGLE = 278,
-    SDL_SCANCODE_KBDILLUMDOWN = 279,
-    SDL_SCANCODE_KBDILLUMUP = 280,
-    SDL_SCANCODE_EJECT = 281,
-    SDL_SCANCODE_SLEEP = 282,
-
-    SDL_SCANCODE_APP1 = 283,
-    SDL_SCANCODE_APP2 = 284,
-
-    /* @} *//* Walther keys */
-
-    /**
-     *  \name Usage page 0x0C (additional media keys)
-     *
-     *  These values are mapped from usage page 0x0C (USB consumer page).
-     */
-    /* @{ */
-
-    SDL_SCANCODE_AUDIOREWIND = 285,
-    SDL_SCANCODE_AUDIOFASTFORWARD = 286,
-
-    /* @} *//* Usage page 0x0C (additional media keys) */
-
-    /* Add any other keys here. */
-
-    SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes
-                                 for array bounds */
-} SDL_Scancode;
-
-#endif /* SDL_scancode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_sensor.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_sensor.h
deleted file mode 100644 (file)
index 966adbf..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_sensor.h
- *
- *  Include file for SDL sensor event handling
- *
- */
-
-#ifndef SDL_sensor_h_
-#define SDL_sensor_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-/**
- *  \brief SDL_sensor.h
- *
- *  In order to use these functions, SDL_Init() must have been called
- *  with the ::SDL_INIT_SENSOR flag.  This causes SDL to scan the system
- *  for sensors, and load appropriate drivers.
- */
-
-struct _SDL_Sensor;
-typedef struct _SDL_Sensor SDL_Sensor;
-
-/**
- * This is a unique ID for a sensor for the time it is connected to the system,
- * and is never reused for the lifetime of the application.
- *
- * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
- */
-typedef Sint32 SDL_SensorID;
-
-/* The different sensors defined by SDL
- *
- * Additional sensors may be available, using platform dependent semantics.
- *
- * Hare are the additional Android sensors:
- * https://developer.android.com/reference/android/hardware/SensorEvent.html#values
- */
-typedef enum
-{
-    SDL_SENSOR_INVALID = -1,    /**< Returned for an invalid sensor */
-    SDL_SENSOR_UNKNOWN,         /**< Unknown sensor type */
-    SDL_SENSOR_ACCEL,           /**< Accelerometer */
-    SDL_SENSOR_GYRO             /**< Gyroscope */
-} SDL_SensorType;
-
-/**
- * Accelerometer sensor
- *
- * The accelerometer returns the current acceleration in SI meters per
- * second squared. This includes gravity, so a device at rest will have
- * an acceleration of SDL_STANDARD_GRAVITY straight down.
- *
- * values[0]: Acceleration on the x axis
- * values[1]: Acceleration on the y axis
- * values[2]: Acceleration on the z axis
- *
- * For phones held in portrait mode, the axes are defined as follows:
- * -X ... +X : left ... right
- * -Y ... +Y : bottom ... top
- * -Z ... +Z : farther ... closer
- * 
- * The axis data is not changed when the phone is rotated.
- *
- * \sa SDL_GetDisplayOrientation()
- */
-#define SDL_STANDARD_GRAVITY    9.80665f
-
-/**
- * Gyroscope sensor
- *
- * The gyroscope returns the current rate of rotation in radians per second.
- * The rotation is positive in the counter-clockwise direction. That is,
- * an observer looking from a positive location on one of the axes would
- * see positive rotation on that axis when it appeared to be rotating
- * counter-clockwise.
- *
- * values[0]: Angular speed around the x axis
- * values[1]: Angular speed around the y axis
- * values[2]: Angular speed around the z axis
- *
- * For phones held in portrait mode, the axes are defined as follows:
- * -X ... +X : left ... right
- * -Y ... +Y : bottom ... top
- * -Z ... +Z : farther ... closer
- * 
- * The axis data is not changed when the phone is rotated.
- *
- * \sa SDL_GetDisplayOrientation()
- */
-
-/* Function prototypes */
-
-/**
- *  \brief Count the number of sensors attached to the system right now
- */
-extern DECLSPEC int SDLCALL SDL_NumSensors(void);
-
-/**
- *  \brief Get the implementation dependent name of a sensor.
- *
- *  This can be called before any sensors are opened.
- * 
- *  \return The sensor name, or NULL if device_index is out of range.
- */
-extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
-
-/**
- *  \brief Get the type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor type, or SDL_SENSOR_INVALID if device_index is out of range.
- */
-extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index);
-
-/**
- *  \brief Get the platform dependent type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor platform dependent type, or -1 if device_index is out of range.
- */
-extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index);
-
-/**
- *  \brief Get the instance ID of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor instance ID, or -1 if device_index is out of range.
- */
-extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index);
-
-/**
- *  \brief Open a sensor for use.
- *
- *  The index passed as an argument refers to the N'th sensor on the system.
- *
- *  \return A sensor identifier, or NULL if an error occurred.
- */
-extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
-
-/**
- * Return the SDL_Sensor associated with an instance id.
- */
-extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id);
-
-/**
- *  \brief Get the implementation dependent name of a sensor.
- *
- *  \return The sensor name, or NULL if the sensor is NULL.
- */
-extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
-
-/**
- *  \brief Get the type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor type, or SDL_SENSOR_INVALID if the sensor is NULL.
- */
-extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
-
-/**
- *  \brief Get the platform dependent type of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor platform dependent type, or -1 if the sensor is NULL.
- */
-extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
-
-/**
- *  \brief Get the instance ID of a sensor.
- *
- *  This can be called before any sensors are opened.
- *
- *  \return The sensor instance ID, or -1 if the sensor is NULL.
- */
-extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor);
-
-/**
- *  Get the current state of an opened sensor.
- *
- *  The number of values and interpretation of the data is sensor dependent.
- *
- *  \param sensor The sensor to query
- *  \param data A pointer filled with the current sensor state
- *  \param num_values The number of values to write to data
- *
- *  \return 0 or -1 if an error occurred.
- */
-extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor * sensor, float *data, int num_values);
-
-/**
- *  Close a sensor previously opened with SDL_SensorOpen()
- */
-extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor * sensor);
-
-/**
- *  Update the current state of the open sensors.
- *
- *  This is called automatically by the event loop if sensor events are enabled.
- *
- *  This needs to be called from the thread that initialized the sensor subsystem.
- */
-extern DECLSPEC void SDLCALL SDL_SensorUpdate(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-#include "close_code.h"
-
-#endif /* SDL_sensor_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_shape.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_shape.h
deleted file mode 100644 (file)
index 2ab43fc..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_shape_h_
-#define SDL_shape_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_pixels.h"
-#include "SDL_rect.h"
-#include "SDL_surface.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** \file SDL_shape.h
- *
- * Header file for the shaped window API.
- */
-
-#define SDL_NONSHAPEABLE_WINDOW -1
-#define SDL_INVALID_SHAPE_ARGUMENT -2
-#define SDL_WINDOW_LACKS_SHAPE -3
-
-/**
- *  \brief Create a window that can be shaped with the specified position, dimensions, and flags.
- *
- *  \param title The title of the window, in UTF-8 encoding.
- *  \param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param w     The width of the window.
- *  \param h     The height of the window.
- *  \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with any of the following:
- *               ::SDL_WINDOW_OPENGL,     ::SDL_WINDOW_INPUT_GRABBED,
- *               ::SDL_WINDOW_HIDDEN,     ::SDL_WINDOW_RESIZABLE,
- *               ::SDL_WINDOW_MAXIMIZED,  ::SDL_WINDOW_MINIMIZED,
- *       ::SDL_WINDOW_BORDERLESS is always set, and ::SDL_WINDOW_FULLSCREEN is always unset.
- *
- *  \return The window created, or NULL if window creation failed.
- *
- *  \sa SDL_DestroyWindow()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags);
-
-/**
- * \brief Return whether the given window is a shaped window.
- *
- * \param window The window to query for being shaped.
- *
- * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if the window is unshaped or NULL.
- *
- * \sa SDL_CreateShapedWindow
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window);
-
-/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */
-typedef enum {
-    /** \brief The default mode, a binarized alpha cutoff of 1. */
-    ShapeModeDefault,
-    /** \brief A binarized alpha cutoff with a given integer value. */
-    ShapeModeBinarizeAlpha,
-    /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */
-    ShapeModeReverseBinarizeAlpha,
-    /** \brief A color key is applied. */
-    ShapeModeColorKey
-} WindowShapeMode;
-
-#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha)
-
-/** \brief A union containing parameters for shaped windows. */
-typedef union {
-    /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */
-    Uint8 binarizationCutoff;
-    SDL_Color colorKey;
-} SDL_WindowShapeParams;
-
-/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */
-typedef struct SDL_WindowShapeMode {
-    /** \brief The mode of these window-shape parameters. */
-    WindowShapeMode mode;
-    /** \brief Window-shape parameters. */
-    SDL_WindowShapeParams parameters;
-} SDL_WindowShapeMode;
-
-/**
- * \brief Set the shape and parameters of a shaped window.
- *
- * \param window The shaped window whose parameters should be set.
- * \param shape A surface encoding the desired shape for the window.
- * \param shape_mode The parameters to set for the shaped window.
- *
- * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape argument, or SDL_NONSHAPEABLE_WINDOW
- *           if the SDL_Window given does not reference a valid shaped window.
- *
- * \sa SDL_WindowShapeMode
- * \sa SDL_GetShapedWindowMode.
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode);
-
-/**
- * \brief Get the shape parameters of a shaped window.
- *
- * \param window The shaped window whose parameters should be retrieved.
- * \param shape_mode An empty shape-mode structure to fill, or NULL to check whether the window has a shape.
- *
- * \return 0 if the window has a shape and, provided shape_mode was not NULL, shape_mode has been filled with the mode
- *           data, SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped window, or SDL_WINDOW_LACKS_SHAPE if
- *           the SDL_Window given is a shapeable window currently lacking a shape.
- *
- * \sa SDL_WindowShapeMode
- * \sa SDL_SetWindowShape
- */
-extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_shape_h_ */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_stdinc.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_stdinc.h
deleted file mode 100644 (file)
index 28bb7b9..0000000
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_stdinc.h
- *
- *  This is a general header that includes C language support.
- */
-
-#ifndef SDL_stdinc_h_
-#define SDL_stdinc_h_
-
-#include "SDL_config.h"
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#if defined(STDC_HEADERS)
-# include <stdlib.h>
-# include <stddef.h>
-# include <stdarg.h>
-#else
-# if defined(HAVE_STDLIB_H)
-#  include <stdlib.h>
-# elif defined(HAVE_MALLOC_H)
-#  include <malloc.h>
-# endif
-# if defined(HAVE_STDDEF_H)
-#  include <stddef.h>
-# endif
-# if defined(HAVE_STDARG_H)
-#  include <stdarg.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_WCHAR_H
-# include <wchar.h>
-#endif
-#if defined(HAVE_INTTYPES_H)
-# include <inttypes.h>
-#elif defined(HAVE_STDINT_H)
-# include <stdint.h>
-#endif
-#ifdef HAVE_CTYPE_H
-# include <ctype.h>
-#endif
-#ifdef HAVE_MATH_H
-# if defined(__WINRT__)
-/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on
-   WinRT.  See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
-   for more information.
-*/
-#  define _USE_MATH_DEFINES
-# endif
-# include <math.h>
-#endif
-#ifdef HAVE_FLOAT_H
-# include <float.h>
-#endif
-#if defined(HAVE_ALLOCA) && !defined(alloca)
-# if defined(HAVE_ALLOCA_H)
-#  include <alloca.h>
-# elif defined(__GNUC__)
-#  define alloca __builtin_alloca
-# elif defined(_MSC_VER)
-#  include <malloc.h>
-#  define alloca _alloca
-# elif defined(__WATCOMC__)
-#  include <malloc.h>
-# elif defined(__BORLANDC__)
-#  include <malloc.h>
-# elif defined(__DMC__)
-#  include <stdlib.h>
-# elif defined(__AIX__)
-#pragma alloca
-# elif defined(__MRC__)
-void *alloca(unsigned);
-# else
-char *alloca();
-# endif
-#endif
-
-/**
- *  The number of elements in an array.
- */
-#define SDL_arraysize(array)    (sizeof(array)/sizeof(array[0]))
-#define SDL_TABLESIZE(table)    SDL_arraysize(table)
-
-/**
- *  Macro useful for building other macros with strings in them
- *
- *  e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")
- */
-#define SDL_STRINGIFY_ARG(arg)  #arg
-
-/**
- *  \name Cast operators
- *
- *  Use proper C++ casts when compiled as C++ to be compatible with the option
- *  -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).
- */
-/* @{ */
-#ifdef __cplusplus
-#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
-#define SDL_static_cast(type, expression) static_cast<type>(expression)
-#define SDL_const_cast(type, expression) const_cast<type>(expression)
-#else
-#define SDL_reinterpret_cast(type, expression) ((type)(expression))
-#define SDL_static_cast(type, expression) ((type)(expression))
-#define SDL_const_cast(type, expression) ((type)(expression))
-#endif
-/* @} *//* Cast operators */
-
-/* Define a four character code as a Uint32 */
-#define SDL_FOURCC(A, B, C, D) \
-    ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
-     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
-     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
-     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
-
-/**
- *  \name Basic data types
- */
-/* @{ */
-
-#ifdef __CC_ARM
-/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */
-#define SDL_FALSE 0
-#define SDL_TRUE 1
-typedef int SDL_bool;
-#else
-typedef enum
-{
-    SDL_FALSE = 0,
-    SDL_TRUE = 1
-} SDL_bool;
-#endif
-
-/**
- * \brief A signed 8-bit integer type.
- */
-#define SDL_MAX_SINT8   ((Sint8)0x7F)           /* 127 */
-#define SDL_MIN_SINT8   ((Sint8)(~0x7F))        /* -128 */
-typedef int8_t Sint8;
-/**
- * \brief An unsigned 8-bit integer type.
- */
-#define SDL_MAX_UINT8   ((Uint8)0xFF)           /* 255 */
-#define SDL_MIN_UINT8   ((Uint8)0x00)           /* 0 */
-typedef uint8_t Uint8;
-/**
- * \brief A signed 16-bit integer type.
- */
-#define SDL_MAX_SINT16  ((Sint16)0x7FFF)        /* 32767 */
-#define SDL_MIN_SINT16  ((Sint16)(~0x7FFF))     /* -32768 */
-typedef int16_t Sint16;
-/**
- * \brief An unsigned 16-bit integer type.
- */
-#define SDL_MAX_UINT16  ((Uint16)0xFFFF)        /* 65535 */
-#define SDL_MIN_UINT16  ((Uint16)0x0000)        /* 0 */
-typedef uint16_t Uint16;
-/**
- * \brief A signed 32-bit integer type.
- */
-#define SDL_MAX_SINT32  ((Sint32)0x7FFFFFFF)    /* 2147483647 */
-#define SDL_MIN_SINT32  ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
-typedef int32_t Sint32;
-/**
- * \brief An unsigned 32-bit integer type.
- */
-#define SDL_MAX_UINT32  ((Uint32)0xFFFFFFFFu)   /* 4294967295 */
-#define SDL_MIN_UINT32  ((Uint32)0x00000000)    /* 0 */
-typedef uint32_t Uint32;
-
-/**
- * \brief A signed 64-bit integer type.
- */
-#define SDL_MAX_SINT64  ((Sint64)0x7FFFFFFFFFFFFFFFll)      /* 9223372036854775807 */
-#define SDL_MIN_SINT64  ((Sint64)(~0x7FFFFFFFFFFFFFFFll))   /* -9223372036854775808 */
-typedef int64_t Sint64;
-/**
- * \brief An unsigned 64-bit integer type.
- */
-#define SDL_MAX_UINT64  ((Uint64)0xFFFFFFFFFFFFFFFFull)     /* 18446744073709551615 */
-#define SDL_MIN_UINT64  ((Uint64)(0x0000000000000000ull))   /* 0 */
-typedef uint64_t Uint64;
-
-/* @} *//* Basic data types */
-
-/* Make sure we have macros for printing 64 bit values.
- * <stdint.h> should define these but this is not true all platforms.
- * (for example win32) */
-#ifndef SDL_PRIs64
-#ifdef PRIs64
-#define SDL_PRIs64 PRIs64
-#elif defined(__WIN32__)
-#define SDL_PRIs64 "I64d"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIs64 "ld"
-#else
-#define SDL_PRIs64 "lld"
-#endif
-#endif
-#ifndef SDL_PRIu64
-#ifdef PRIu64
-#define SDL_PRIu64 PRIu64
-#elif defined(__WIN32__)
-#define SDL_PRIu64 "I64u"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIu64 "lu"
-#else
-#define SDL_PRIu64 "llu"
-#endif
-#endif
-#ifndef SDL_PRIx64
-#ifdef PRIx64
-#define SDL_PRIx64 PRIx64
-#elif defined(__WIN32__)
-#define SDL_PRIx64 "I64x"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIx64 "lx"
-#else
-#define SDL_PRIx64 "llx"
-#endif
-#endif
-#ifndef SDL_PRIX64
-#ifdef PRIX64
-#define SDL_PRIX64 PRIX64
-#elif defined(__WIN32__)
-#define SDL_PRIX64 "I64X"
-#elif defined(__LINUX__) && defined(__LP64__)
-#define SDL_PRIX64 "lX"
-#else
-#define SDL_PRIX64 "llX"
-#endif
-#endif
-
-/* Annotations to help code analysis tools */
-#ifdef SDL_DISABLE_ANALYZE_MACROS
-#define SDL_IN_BYTECAP(x)
-#define SDL_INOUT_Z_CAP(x)
-#define SDL_OUT_Z_CAP(x)
-#define SDL_OUT_CAP(x)
-#define SDL_OUT_BYTECAP(x)
-#define SDL_OUT_Z_BYTECAP(x)
-#define SDL_PRINTF_FORMAT_STRING
-#define SDL_SCANF_FORMAT_STRING
-#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
-#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
-#else
-#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */
-#include <sal.h>
-
-#define SDL_IN_BYTECAP(x) _In_bytecount_(x)
-#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x)
-#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x)
-#define SDL_OUT_CAP(x) _Out_cap_(x)
-#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x)
-#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x)
-
-#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_
-#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_
-#else
-#define SDL_IN_BYTECAP(x)
-#define SDL_INOUT_Z_CAP(x)
-#define SDL_OUT_Z_CAP(x)
-#define SDL_OUT_CAP(x)
-#define SDL_OUT_BYTECAP(x)
-#define SDL_OUT_Z_BYTECAP(x)
-#define SDL_PRINTF_FORMAT_STRING
-#define SDL_SCANF_FORMAT_STRING
-#endif
-#if defined(__GNUC__)
-#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 )))
-#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 )))
-#else
-#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
-#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
-#endif
-#endif /* SDL_DISABLE_ANALYZE_MACROS */
-
-#define SDL_COMPILE_TIME_ASSERT(name, x)               \
-       typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]
-/** \cond */
-#ifndef DOXYGEN_SHOULD_IGNORE_THIS
-SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
-SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
-SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
-SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
-SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
-SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
-SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
-SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
-#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
-/** \endcond */
-
-/* Check to make sure enums are the size of ints, for structure packing.
-   For both Watcom C/C++ and Borland C/C++ the compiler option that makes
-   enums having the size of an int must be enabled.
-   This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
-*/
-
-/** \cond */
-#ifndef DOXYGEN_SHOULD_IGNORE_THIS
-#if !defined(__ANDROID__)
-   /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
-typedef enum
-{
-    DUMMY_ENUM_VALUE
-} SDL_DUMMY_ENUM;
-
-SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
-#endif
-#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
-/** \endcond */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef HAVE_ALLOCA
-#define SDL_stack_alloc(type, count)    (type*)alloca(sizeof(type)*(count))
-#define SDL_stack_free(data)
-#else
-#define SDL_stack_alloc(type, count)    (type*)SDL_malloc(sizeof(type)*(count))
-#define SDL_stack_free(data)            SDL_free(data)
-#endif
-
-extern DECLSPEC void *SDLCALL SDL_malloc(size_t size);
-extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
-extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);
-extern DECLSPEC void SDLCALL SDL_free(void *mem);
-
-typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
-typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size);
-typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);
-typedef void (SDLCALL *SDL_free_func)(void *mem);
-
-/**
- *  \brief Get the current set of SDL memory functions
- */
-extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,
-                                                    SDL_calloc_func *calloc_func,
-                                                    SDL_realloc_func *realloc_func,
-                                                    SDL_free_func *free_func);
-
-/**
- *  \brief Replace SDL's memory allocation functions with a custom set
- *
- *  \note If you are replacing SDL's memory functions, you should call
- *        SDL_GetNumAllocations() and be very careful if it returns non-zero.
- *        That means that your free function will be called with memory
- *        allocated by the previous memory allocation functions.
- */
-extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
-                                                   SDL_calloc_func calloc_func,
-                                                   SDL_realloc_func realloc_func,
-                                                   SDL_free_func free_func);
-
-/**
- *  \brief Get the number of outstanding (unfreed) allocations
- */
-extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);
-
-extern DECLSPEC char *SDLCALL SDL_getenv(const char *name);
-extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);
-
-extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (*compare) (const void *, const void *));
-
-extern DECLSPEC int SDLCALL SDL_abs(int x);
-
-/* !!! FIXME: these have side effects. You probably shouldn't use them. */
-/* !!! FIXME: Maybe we do forceinline functions of SDL_mini, SDL_minf, etc? */
-#define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
-#define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
-
-extern DECLSPEC int SDLCALL SDL_isdigit(int x);
-extern DECLSPEC int SDLCALL SDL_isspace(int x);
-extern DECLSPEC int SDLCALL SDL_toupper(int x);
-extern DECLSPEC int SDLCALL SDL_tolower(int x);
-
-extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);
-
-#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
-#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
-
-/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */
-SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)
-{
-#if defined(__GNUC__) && defined(i386)
-    int u0, u1, u2;
-    __asm__ __volatile__ (
-        "cld \n\t"
-        "rep ; stosl \n\t"
-        : "=&D" (u0), "=&a" (u1), "=&c" (u2)
-        : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords))
-        : "memory"
-    );
-#else
-    size_t _n = (dwords + 3) / 4;
-    Uint32 *_p = SDL_static_cast(Uint32 *, dst);
-    Uint32 _val = (val);
-    if (dwords == 0)
-        return;
-    switch (dwords % 4)
-    {
-        case 0: do {    *_p++ = _val;   /* fallthrough */
-        case 3:         *_p++ = _val;   /* fallthrough */
-        case 2:         *_p++ = _val;   /* fallthrough */
-        case 1:         *_p++ = _val;   /* fallthrough */
-        } while ( --_n );
-    }
-#endif
-}
-
-extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
-
-extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
-extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
-
-extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr);
-extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr);
-extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
-extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
-extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2);
-
-extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);
-extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
-extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
-extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
-extern DECLSPEC char *SDLCALL SDL_strdup(const char *str);
-extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
-extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
-extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
-extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);
-extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c);
-extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle);
-extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str);
-
-extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix);
-extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix);
-
-extern DECLSPEC int SDLCALL SDL_atoi(const char *str);
-extern DECLSPEC double SDLCALL SDL_atof(const char *str);
-extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base);
-extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base);
-extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base);
-extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base);
-extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp);
-
-extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);
-extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);
-extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
-extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
-
-extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);
-extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap);
-extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3);
-extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap);
-
-#ifndef HAVE_M_PI
-#ifndef M_PI
-#define M_PI    3.14159265358979323846264338327950288   /**< pi */
-#endif
-#endif
-
-extern DECLSPEC double SDLCALL SDL_acos(double x);
-extern DECLSPEC float SDLCALL SDL_acosf(float x);
-extern DECLSPEC double SDLCALL SDL_asin(double x);
-extern DECLSPEC float SDLCALL SDL_asinf(float x);
-extern DECLSPEC double SDLCALL SDL_atan(double x);
-extern DECLSPEC float SDLCALL SDL_atanf(float x);
-extern DECLSPEC double SDLCALL SDL_atan2(double x, double y);
-extern DECLSPEC float SDLCALL SDL_atan2f(float x, float y);
-extern DECLSPEC double SDLCALL SDL_ceil(double x);
-extern DECLSPEC float SDLCALL SDL_ceilf(float x);
-extern DECLSPEC double SDLCALL SDL_copysign(double x, double y);
-extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y);
-extern DECLSPEC double SDLCALL SDL_cos(double x);
-extern DECLSPEC float SDLCALL SDL_cosf(float x);
-extern DECLSPEC double SDLCALL SDL_exp(double x);
-extern DECLSPEC float SDLCALL SDL_expf(float x);
-extern DECLSPEC double SDLCALL SDL_fabs(double x);
-extern DECLSPEC float SDLCALL SDL_fabsf(float x);
-extern DECLSPEC double SDLCALL SDL_floor(double x);
-extern DECLSPEC float SDLCALL SDL_floorf(float x);
-extern DECLSPEC double SDLCALL SDL_fmod(double x, double y);
-extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y);
-extern DECLSPEC double SDLCALL SDL_log(double x);
-extern DECLSPEC float SDLCALL SDL_logf(float x);
-extern DECLSPEC double SDLCALL SDL_log10(double x);
-extern DECLSPEC float SDLCALL SDL_log10f(float x);
-extern DECLSPEC double SDLCALL SDL_pow(double x, double y);
-extern DECLSPEC float SDLCALL SDL_powf(float x, float y);
-extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n);
-extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n);
-extern DECLSPEC double SDLCALL SDL_sin(double x);
-extern DECLSPEC float SDLCALL SDL_sinf(float x);
-extern DECLSPEC double SDLCALL SDL_sqrt(double x);
-extern DECLSPEC float SDLCALL SDL_sqrtf(float x);
-extern DECLSPEC double SDLCALL SDL_tan(double x);
-extern DECLSPEC float SDLCALL SDL_tanf(float x);
-
-/* The SDL implementation of iconv() returns these error codes */
-#define SDL_ICONV_ERROR     (size_t)-1
-#define SDL_ICONV_E2BIG     (size_t)-2
-#define SDL_ICONV_EILSEQ    (size_t)-3
-#define SDL_ICONV_EINVAL    (size_t)-4
-
-/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */
-typedef struct _SDL_iconv_t *SDL_iconv_t;
-extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode,
-                                                   const char *fromcode);
-extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd);
-extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
-                                         size_t * inbytesleft, char **outbuf,
-                                         size_t * outbytesleft);
-/**
- *  This function converts a string between encodings in one pass, returning a
- *  string that must be freed with SDL_free() or NULL on error.
- */
-extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
-                                               const char *fromcode,
-                                               const char *inbuf,
-                                               size_t inbytesleft);
-#define SDL_iconv_utf8_locale(S)    SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
-#define SDL_iconv_utf8_ucs2(S)      (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
-#define SDL_iconv_utf8_ucs4(S)      (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
-
-/* force builds using Clang's static analysis tools to use literal C runtime
-   here, since there are possibly tests that are ineffective otherwise. */
-#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
-#define SDL_malloc malloc
-#define SDL_calloc calloc
-#define SDL_realloc realloc
-#define SDL_free free
-#define SDL_memset memset
-#define SDL_memcpy memcpy
-#define SDL_memmove memmove
-#define SDL_memcmp memcmp
-#define SDL_strlen strlen
-#define SDL_strlcpy strlcpy
-#define SDL_strlcat strlcat
-#define SDL_strdup strdup
-#define SDL_strchr strchr
-#define SDL_strrchr strrchr
-#define SDL_strstr strstr
-#define SDL_strcmp strcmp
-#define SDL_strncmp strncmp
-#define SDL_strcasecmp strcasecmp
-#define SDL_strncasecmp strncasecmp
-#define SDL_sscanf sscanf
-#define SDL_vsscanf vsscanf
-#define SDL_snprintf snprintf
-#define SDL_vsnprintf vsnprintf
-#endif
-
-SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)
-{
-    return SDL_memcpy(dst, src, dwords * 4);
-}
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_stdinc_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_surface.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_surface.h
deleted file mode 100644 (file)
index 51a1283..0000000
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_surface.h
- *
- *  Header file for ::SDL_Surface definition and management functions.
- */
-
-#ifndef SDL_surface_h_
-#define SDL_surface_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_pixels.h"
-#include "SDL_rect.h"
-#include "SDL_blendmode.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \name Surface flags
- *
- *  These are the currently supported flags for the ::SDL_Surface.
- *
- *  \internal
- *  Used internally (read-only).
- */
-/* @{ */
-#define SDL_SWSURFACE       0           /**< Just here for compatibility */
-#define SDL_PREALLOC        0x00000001  /**< Surface uses preallocated memory */
-#define SDL_RLEACCEL        0x00000002  /**< Surface is RLE encoded */
-#define SDL_DONTFREE        0x00000004  /**< Surface is referenced internally */
-#define SDL_SIMD_ALIGNED    0x00000008  /**< Surface uses aligned memory */
-/* @} *//* Surface flags */
-
-/**
- *  Evaluates to true if the surface needs to be locked before access.
- */
-#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)
-
-/**
- * \brief A collection of pixels used in software blitting.
- *
- * \note  This structure should be treated as read-only, except for \c pixels,
- *        which, if not NULL, contains the raw pixel data for the surface.
- */
-typedef struct SDL_Surface
-{
-    Uint32 flags;               /**< Read-only */
-    SDL_PixelFormat *format;    /**< Read-only */
-    int w, h;                   /**< Read-only */
-    int pitch;                  /**< Read-only */
-    void *pixels;               /**< Read-write */
-
-    /** Application data associated with the surface */
-    void *userdata;             /**< Read-write */
-
-    /** information needed for surfaces requiring locks */
-    int locked;                 /**< Read-only */
-    void *lock_data;            /**< Read-only */
-
-    /** clipping information */
-    SDL_Rect clip_rect;         /**< Read-only */
-
-    /** info for fast blit mapping to other surfaces */
-    struct SDL_BlitMap *map;    /**< Private */
-
-    /** Reference count -- used when freeing surface */
-    int refcount;               /**< Read-mostly */
-} SDL_Surface;
-
-/**
- * \brief The type of function used for surface blitting functions.
- */
-typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect,
-                                 struct SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- * \brief The formula used for converting between YUV and RGB
- */
-typedef enum
-{
-    SDL_YUV_CONVERSION_JPEG,        /**< Full range JPEG */
-    SDL_YUV_CONVERSION_BT601,       /**< BT.601 (the default) */
-    SDL_YUV_CONVERSION_BT709,       /**< BT.709 */
-    SDL_YUV_CONVERSION_AUTOMATIC    /**< BT.601 for SD content, BT.709 for HD content */
-} SDL_YUV_CONVERSION_MODE;
-
-/**
- *  Allocate and free an RGB surface.
- *
- *  If the depth is 4 or 8 bits, an empty palette is allocated for the surface.
- *  If the depth is greater than 8 bits, the pixel format is set using the
- *  flags '[RGB]mask'.
- *
- *  If the function runs out of memory, it will return NULL.
- *
- *  \param flags The \c flags are obsolete and should be set to 0.
- *  \param width The width in pixels of the surface to create.
- *  \param height The height in pixels of the surface to create.
- *  \param depth The depth in bits of the surface to create.
- *  \param Rmask The red mask of the surface to create.
- *  \param Gmask The green mask of the surface to create.
- *  \param Bmask The blue mask of the surface to create.
- *  \param Amask The alpha mask of the surface to create.
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface
-    (Uint32 flags, int width, int height, int depth,
-     Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);
-
-/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
-    (Uint32 flags, int width, int height, int depth, Uint32 format);
-
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
-                                                              int width,
-                                                              int height,
-                                                              int depth,
-                                                              int pitch,
-                                                              Uint32 Rmask,
-                                                              Uint32 Gmask,
-                                                              Uint32 Bmask,
-                                                              Uint32 Amask);
-extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom
-    (void *pixels, int width, int height, int depth, int pitch, Uint32 format);
-extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface);
-
-/**
- *  \brief Set the palette used by a surface.
- *
- *  \return 0, or -1 if the surface format doesn't use a palette.
- *
- *  \note A single palette can be shared with many surfaces.
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface,
-                                                  SDL_Palette * palette);
-
-/**
- *  \brief Sets up a surface for directly accessing the pixels.
- *
- *  Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write
- *  to and read from \c surface->pixels, using the pixel format stored in
- *  \c surface->format.  Once you are done accessing the surface, you should
- *  use SDL_UnlockSurface() to release it.
- *
- *  Not all surfaces require locking.  If SDL_MUSTLOCK(surface) evaluates
- *  to 0, then you can read and write to the surface at any time, and the
- *  pixel format of the surface will not change.
- *
- *  No operating system or library calls should be made between lock/unlock
- *  pairs, as critical system locks may be held during this time.
- *
- *  SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked.
- *
- *  \sa SDL_UnlockSurface()
- */
-extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);
-/** \sa SDL_LockSurface() */
-extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);
-
-/**
- *  Load a surface from a seekable SDL data stream (memory or file).
- *
- *  If \c freesrc is non-zero, the stream will be closed after being read.
- *
- *  The new surface should be freed with SDL_FreeSurface().
- *
- *  \return the new surface, or NULL if there was an error.
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src,
-                                                    int freesrc);
-
-/**
- *  Load a surface from a file.
- *
- *  Convenience macro.
- */
-#define SDL_LoadBMP(file)   SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1)
-
-/**
- *  Save a surface to a seekable SDL data stream (memory or file).
- *
- *  Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the
- *  BMP directly. Other RGB formats with 8-bit or higher get converted to a
- *  24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit
- *  surface before they are saved. YUV and paletted 1-bit and 4-bit formats are
- *  not supported.
- *
- *  If \c freedst is non-zero, the stream will be closed after being written.
- *
- *  \return 0 if successful or -1 if there was an error.
- */
-extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
-    (SDL_Surface * surface, SDL_RWops * dst, int freedst);
-
-/**
- *  Save a surface to a file.
- *
- *  Convenience macro.
- */
-#define SDL_SaveBMP(surface, file) \
-        SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1)
-
-/**
- *  \brief Sets the RLE acceleration hint for a surface.
- *
- *  \return 0 on success, or -1 if the surface is not valid
- *
- *  \note If RLE is enabled, colorkey and alpha blending blits are much faster,
- *        but the surface must be locked before directly accessing the pixels.
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface,
-                                              int flag);
-
-/**
- *  \brief Sets the color key (transparent pixel) in a blittable surface.
- *
- *  \param surface The surface to update
- *  \param flag Non-zero to enable colorkey and 0 to disable colorkey
- *  \param key The transparent pixel in the native surface format
- *
- *  \return 0 on success, or -1 if the surface is not valid
- *
- *  You can pass SDL_RLEACCEL to enable RLE accelerated blits.
- */
-extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,
-                                            int flag, Uint32 key);
-
-/**
- *  \brief Returns whether the surface has a color key
- *
- *  \return SDL_TRUE if the surface has a color key, or SDL_FALSE if the surface is NULL or has no color key
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface);
-
-/**
- *  \brief Gets the color key (transparent pixel) in a blittable surface.
- *
- *  \param surface The surface to update
- *  \param key A pointer filled in with the transparent pixel in the native
- *             surface format
- *
- *  \return 0 on success, or -1 if the surface is not valid or colorkey is not
- *          enabled.
- */
-extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
-                                            Uint32 * key);
-
-/**
- *  \brief Set an additional color value used in blit operations.
- *
- *  \param surface The surface to update.
- *  \param r The red color value multiplied into blit operations.
- *  \param g The green color value multiplied into blit operations.
- *  \param b The blue color value multiplied into blit operations.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_GetSurfaceColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,
-                                                   Uint8 r, Uint8 g, Uint8 b);
-
-
-/**
- *  \brief Get the additional color value used in blit operations.
- *
- *  \param surface The surface to query.
- *  \param r A pointer filled in with the current red color value.
- *  \param g A pointer filled in with the current green color value.
- *  \param b A pointer filled in with the current blue color value.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_SetSurfaceColorMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,
-                                                   Uint8 * r, Uint8 * g,
-                                                   Uint8 * b);
-
-/**
- *  \brief Set an additional alpha value used in blit operations.
- *
- *  \param surface The surface to update.
- *  \param alpha The alpha value multiplied into blit operations.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_GetSurfaceAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,
-                                                   Uint8 alpha);
-
-/**
- *  \brief Get the additional alpha value used in blit operations.
- *
- *  \param surface The surface to query.
- *  \param alpha A pointer filled in with the current alpha value.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_SetSurfaceAlphaMod()
- */
-extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,
-                                                   Uint8 * alpha);
-
-/**
- *  \brief Set the blend mode used for blit operations.
- *
- *  \param surface The surface to update.
- *  \param blendMode ::SDL_BlendMode to use for blit blending.
- *
- *  \return 0 on success, or -1 if the parameters are not valid.
- *
- *  \sa SDL_GetSurfaceBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,
-                                                    SDL_BlendMode blendMode);
-
-/**
- *  \brief Get the blend mode used for blit operations.
- *
- *  \param surface   The surface to query.
- *  \param blendMode A pointer filled in with the current blend mode.
- *
- *  \return 0 on success, or -1 if the surface is not valid.
- *
- *  \sa SDL_SetSurfaceBlendMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
-                                                    SDL_BlendMode *blendMode);
-
-/**
- *  Sets the clipping rectangle for the destination surface in a blit.
- *
- *  If the clip rectangle is NULL, clipping will be disabled.
- *
- *  If the clip rectangle doesn't intersect the surface, the function will
- *  return SDL_FALSE and blits will be completely clipped.  Otherwise the
- *  function returns SDL_TRUE and blits to the surface will be clipped to
- *  the intersection of the surface area and the clipping rectangle.
- *
- *  Note that blits are automatically clipped to the edges of the source
- *  and destination surfaces.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
-                                                 const SDL_Rect * rect);
-
-/**
- *  Gets the clipping rectangle for the destination surface in a blit.
- *
- *  \c rect must be a pointer to a valid rectangle which will be filled
- *  with the correct values.
- */
-extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface,
-                                             SDL_Rect * rect);
-
-/*
- * Creates a new surface identical to the existing surface
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface);
-
-/**
- *  Creates a new surface of the specified format, and then copies and maps
- *  the given surface to it so the blit of the converted surface will be as
- *  fast as possible.  If this function fails, it returns NULL.
- *
- *  The \c flags parameter is passed to SDL_CreateRGBSurface() and has those
- *  semantics.  You can also pass ::SDL_RLEACCEL in the flags parameter and
- *  SDL will try to RLE accelerate colorkey and alpha blits in the resulting
- *  surface.
- */
-extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
-    (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags);
-extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat
-    (SDL_Surface * src, Uint32 pixel_format, Uint32 flags);
-
-/**
- * \brief Copy a block of pixels of one format to another format
- *
- *  \return 0 on success, or -1 if there was an error
- */
-extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,
-                                              Uint32 src_format,
-                                              const void * src, int src_pitch,
-                                              Uint32 dst_format,
-                                              void * dst, int dst_pitch);
-
-/**
- *  Performs a fast fill of the given rectangle with \c color.
- *
- *  If \c rect is NULL, the whole surface will be filled with \c color.
- *
- *  The color should be a pixel of the format used by the surface, and
- *  can be generated by the SDL_MapRGB() function.
- *
- *  \return 0 on success, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_FillRect
-    (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color);
-extern DECLSPEC int SDLCALL SDL_FillRects
-    (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);
-
-/**
- *  Performs a fast blit from the source surface to the destination surface.
- *
- *  This assumes that the source and destination rectangles are
- *  the same size.  If either \c srcrect or \c dstrect are NULL, the entire
- *  surface (\c src or \c dst) is copied.  The final blit rectangles are saved
- *  in \c srcrect and \c dstrect after all clipping is performed.
- *
- *  \return If the blit is successful, it returns 0, otherwise it returns -1.
- *
- *  The blit function should not be called on a locked surface.
- *
- *  The blit semantics for surfaces with and without blending and colorkey
- *  are defined as follows:
- *  \verbatim
-    RGBA->RGB:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source alpha-channel and per-surface alpha)
-        SDL_SRCCOLORKEY ignored.
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy RGB.
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        RGB values of the source color key, ignoring alpha in the
-        comparison.
-
-    RGB->RGBA:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source per-surface alpha)
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy RGB, set destination alpha to source per-surface alpha value.
-      both:
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        source color key.
-
-    RGBA->RGBA:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source alpha-channel and per-surface alpha)
-        SDL_SRCCOLORKEY ignored.
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy all of RGBA to the destination.
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        RGB values of the source color key, ignoring alpha in the
-        comparison.
-
-    RGB->RGB:
-      Source surface blend mode set to SDL_BLENDMODE_BLEND:
-        alpha-blend (using the source per-surface alpha)
-      Source surface blend mode set to SDL_BLENDMODE_NONE:
-        copy RGB.
-      both:
-        if SDL_SRCCOLORKEY set, only copy the pixels matching the
-        source color key.
-    \endverbatim
- *
- *  You should call SDL_BlitSurface() unless you know exactly how SDL
- *  blitting works internally and how to use the other blit functions.
- */
-#define SDL_BlitSurface SDL_UpperBlit
-
-/**
- *  This is the public blit function, SDL_BlitSurface(), and it performs
- *  rectangle validation and clipping before passing it to SDL_LowerBlit()
- */
-extern DECLSPEC int SDLCALL SDL_UpperBlit
-    (SDL_Surface * src, const SDL_Rect * srcrect,
-     SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  This is a semi-private blit function and it performs low-level surface
- *  blitting only.
- */
-extern DECLSPEC int SDLCALL SDL_LowerBlit
-    (SDL_Surface * src, SDL_Rect * srcrect,
-     SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  \brief Perform a fast, low quality, stretch blit between two surfaces of the
- *         same pixel format.
- *
- *  \note This function uses a static buffer, and is not thread-safe.
- */
-extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,
-                                            const SDL_Rect * srcrect,
-                                            SDL_Surface * dst,
-                                            const SDL_Rect * dstrect);
-
-#define SDL_BlitScaled SDL_UpperBlitScaled
-
-/**
- *  This is the public scaled blit function, SDL_BlitScaled(), and it performs
- *  rectangle validation and clipping before passing it to SDL_LowerBlitScaled()
- */
-extern DECLSPEC int SDLCALL SDL_UpperBlitScaled
-    (SDL_Surface * src, const SDL_Rect * srcrect,
-    SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  This is a semi-private blit function and it performs low-level surface
- *  scaled blitting only.
- */
-extern DECLSPEC int SDLCALL SDL_LowerBlitScaled
-    (SDL_Surface * src, SDL_Rect * srcrect,
-    SDL_Surface * dst, SDL_Rect * dstrect);
-
-/**
- *  \brief Set the YUV conversion mode
- */
-extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode);
-
-/**
- *  \brief Get the YUV conversion mode
- */
-extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void);
-
-/**
- *  \brief Get the YUV conversion mode, returning the correct mode for the resolution when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC
- */
-extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_surface_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_system.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_system.h
deleted file mode 100644 (file)
index 3b08407..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_system.h
- *
- *  Include file for platform specific SDL API functions
- */
-
-#ifndef SDL_system_h_
-#define SDL_system_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_keyboard.h"
-#include "SDL_render.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Platform specific functions for Windows */
-#ifdef __WIN32__
-       
-/**
-   \brief Set a function that is called for every windows message, before TranslateMessage()
-*/
-typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam);
-extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata);
-
-/**
-   \brief Returns the D3D9 adapter index that matches the specified display index.
-
-   This adapter index can be passed to IDirect3D9::CreateDevice and controls
-   on which monitor a full screen application will appear.
-*/
-extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );
-
-typedef struct IDirect3DDevice9 IDirect3DDevice9;
-/**
-   \brief Returns the D3D device associated with a renderer, or NULL if it's not a D3D renderer.
-
-   Once you are done using the device, you should release it to avoid a resource leak.
- */
-extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
-
-/**
-   \brief Returns the DXGI Adapter and Output indices for the specified display index.
-
-   These can be passed to EnumAdapters and EnumOutputs respectively to get the objects
-   required to create a DX10 or DX11 device and swap chain.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex );
-
-#endif /* __WIN32__ */
-
-
-/* Platform specific functions for Linux */
-#ifdef __LINUX__
-
-/**
-   \brief Sets the UNIX nice value for a thread, using setpriority() if possible, and RealtimeKit if available.
-
-   \return 0 on success, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority);
-#endif /* __LINUX__ */
-       
-/* Platform specific functions for iOS */
-#if defined(__IPHONEOS__) && __IPHONEOS__
-
-#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)
-extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
-
-#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)
-extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);
-
-#endif /* __IPHONEOS__ */
-
-
-/* Platform specific functions for Android */
-#if defined(__ANDROID__) && __ANDROID__
-
-/**
-   \brief Get the JNI environment for the current thread
-
-   This returns JNIEnv*, but the prototype is void* so we don't need jni.h
- */
-extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void);
-
-/**
-   \brief Get the SDL Activity object for the application
-
-   This returns jobject, but the prototype is void* so we don't need jni.h
-   The jobject returned by SDL_AndroidGetActivity is a local reference.
-   It is the caller's responsibility to properly release it
-   (using env->Push/PopLocalFrame or manually with env->DeleteLocalRef)
- */
-extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);
-
-/**
-   \brief Return true if the application is running on Android TV
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void);
-
-/**
-   \brief Return true if the application is running on a Chromebook
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void);
-
-/**
-  \brief Return true is the application is running on a Samsung DeX docking station
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void);
-
-/**
- \brief Trigger the Android system back button behavior.
- */
-extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void);
-
-/**
-   See the official Android developer guide for more information:
-   http://developer.android.com/guide/topics/data/data-storage.html
-*/
-#define SDL_ANDROID_EXTERNAL_STORAGE_READ   0x01
-#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE  0x02
-
-/**
-   \brief Get the path used for internal storage for this application.
-
-   This path is unique to your application and cannot be written to
-   by other applications.
- */
-extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void);
-
-/**
-   \brief Get the current state of external storage, a bitmask of these values:
-    SDL_ANDROID_EXTERNAL_STORAGE_READ
-    SDL_ANDROID_EXTERNAL_STORAGE_WRITE
-
-   If external storage is currently unavailable, this will return 0.
-*/
-extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void);
-
-/**
-   \brief Get the path used for external storage for this application.
-
-   This path is unique to your application, but is public and can be
-   written to by other applications.
- */
-extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void);
-
-#endif /* __ANDROID__ */
-
-/* Platform specific functions for WinRT */
-#if defined(__WINRT__) && __WINRT__
-
-/**
- *  \brief WinRT / Windows Phone path types
- */
-typedef enum
-{
-    /** \brief The installed app's root directory.
-        Files here are likely to be read-only. */
-    SDL_WINRT_PATH_INSTALLED_LOCATION,
-
-    /** \brief The app's local data store.  Files may be written here */
-    SDL_WINRT_PATH_LOCAL_FOLDER,
-
-    /** \brief The app's roaming data store.  Unsupported on Windows Phone.
-        Files written here may be copied to other machines via a network
-        connection.
-    */
-    SDL_WINRT_PATH_ROAMING_FOLDER,
-
-    /** \brief The app's temporary data store.  Unsupported on Windows Phone.
-        Files written here may be deleted at any time. */
-    SDL_WINRT_PATH_TEMP_FOLDER
-} SDL_WinRT_Path;
-
-
-/**
- *  \brief WinRT Device Family
- */
-typedef enum
-{
-    /** \brief Unknown family  */
-    SDL_WINRT_DEVICEFAMILY_UNKNOWN,
-
-    /** \brief Desktop family*/
-    SDL_WINRT_DEVICEFAMILY_DESKTOP,
-
-    /** \brief Mobile family (for example smartphone) */
-    SDL_WINRT_DEVICEFAMILY_MOBILE,
-
-    /** \brief XBox family */
-    SDL_WINRT_DEVICEFAMILY_XBOX,
-} SDL_WinRT_DeviceFamily;
-
-
-/**
- *  \brief Retrieves a WinRT defined path on the local file system
- *
- *  \note Documentation on most app-specific path types on WinRT
- *      can be found on MSDN, at the URL:
- *      http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
- *
- *  \param pathType The type of path to retrieve.
- *  \return A UCS-2 string (16-bit, wide-char) containing the path, or NULL
- *      if the path is not available for any reason.  Not all paths are
- *      available on all versions of Windows.  This is especially true on
- *      Windows Phone.  Check the documentation for the given
- *      SDL_WinRT_Path for more information on which path types are
- *      supported where.
- */
-extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);
-
-/**
- *  \brief Retrieves a WinRT defined path on the local file system
- *
- *  \note Documentation on most app-specific path types on WinRT
- *      can be found on MSDN, at the URL:
- *      http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
- *
- *  \param pathType The type of path to retrieve.
- *  \return A UTF-8 string (8-bit, multi-byte) containing the path, or NULL
- *      if the path is not available for any reason.  Not all paths are
- *      available on all versions of Windows.  This is especially true on
- *      Windows Phone.  Check the documentation for the given
- *      SDL_WinRT_Path for more information on which path types are
- *      supported where.
- */
-extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType);
-
-/**
- *  \brief Detects the device family of WinRT plattform on runtime
- *
- *  \return Device family
- */
-extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();
-
-#endif /* __WINRT__ */
-
-/**
- \brief Return true if the current device is a tablet.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_system_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_syswm.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_syswm.h
deleted file mode 100644 (file)
index 7aa8c68..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_syswm.h
- *
- *  Include file for SDL custom system window manager hooks.
- */
-
-#ifndef SDL_syswm_h_
-#define SDL_syswm_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-#include "SDL_version.h"
-
-/**
- *  \brief SDL_syswm.h
- *
- *  Your application has access to a special type of event ::SDL_SYSWMEVENT,
- *  which contains window-manager specific information and arrives whenever
- *  an unhandled window event occurs.  This event is ignored by default, but
- *  you can enable it with SDL_EventState().
- */
-struct SDL_SysWMinfo;
-
-#if !defined(SDL_PROTOTYPES_ONLY)
-
-#if defined(SDL_VIDEO_DRIVER_WINDOWS)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_WINRT)
-#include <Inspectable.h>
-#endif
-
-/* This is the structure for custom window manager events */
-#if defined(SDL_VIDEO_DRIVER_X11)
-#if defined(__APPLE__) && defined(__MACH__)
-/* conflicts with Quickdraw.h */
-#define Cursor X11Cursor
-#endif
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-
-#if defined(__APPLE__) && defined(__MACH__)
-/* matches the re-define above */
-#undef Cursor
-#endif
-
-#endif /* defined(SDL_VIDEO_DRIVER_X11) */
-
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-#include <directfb.h>
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_COCOA)
-#ifdef __OBJC__
-@class NSWindow;
-#else
-typedef struct _NSWindow NSWindow;
-#endif
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_UIKIT)
-#ifdef __OBJC__
-#include <UIKit/UIKit.h>
-#else
-typedef struct _UIWindow UIWindow;
-typedef struct _UIViewController UIViewController;
-#endif
-typedef Uint32 GLuint;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_ANDROID)
-typedef struct ANativeWindow ANativeWindow;
-typedef void *EGLSurface;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_VIVANTE)
-#include "SDL_egl.h"
-#endif
-#endif /* SDL_PROTOTYPES_ONLY */
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if !defined(SDL_PROTOTYPES_ONLY)
-/**
- *  These are the various supported windowing subsystems
- */
-typedef enum
-{
-    SDL_SYSWM_UNKNOWN,
-    SDL_SYSWM_WINDOWS,
-    SDL_SYSWM_X11,
-    SDL_SYSWM_DIRECTFB,
-    SDL_SYSWM_COCOA,
-    SDL_SYSWM_UIKIT,
-    SDL_SYSWM_WAYLAND,
-    SDL_SYSWM_MIR,  /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
-    SDL_SYSWM_WINRT,
-    SDL_SYSWM_ANDROID,
-    SDL_SYSWM_VIVANTE,
-    SDL_SYSWM_OS2
-} SDL_SYSWM_TYPE;
-
-/**
- *  The custom event structure.
- */
-struct SDL_SysWMmsg
-{
-    SDL_version version;
-    SDL_SYSWM_TYPE subsystem;
-    union
-    {
-#if defined(SDL_VIDEO_DRIVER_WINDOWS)
-        struct {
-            HWND hwnd;                  /**< The window for the message */
-            UINT msg;                   /**< The type of message */
-            WPARAM wParam;              /**< WORD message parameter */
-            LPARAM lParam;              /**< LONG message parameter */
-        } win;
-#endif
-#if defined(SDL_VIDEO_DRIVER_X11)
-        struct {
-            XEvent event;
-        } x11;
-#endif
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-        struct {
-            DFBEvent event;
-        } dfb;
-#endif
-#if defined(SDL_VIDEO_DRIVER_COCOA)
-        struct
-        {
-            /* Latest version of Xcode clang complains about empty structs in C v. C++:
-                 error: empty struct has size 0 in C, size 1 in C++
-             */
-            int dummy;
-            /* No Cocoa window events yet */
-        } cocoa;
-#endif
-#if defined(SDL_VIDEO_DRIVER_UIKIT)
-        struct
-        {
-            int dummy;
-            /* No UIKit window events yet */
-        } uikit;
-#endif
-#if defined(SDL_VIDEO_DRIVER_VIVANTE)
-        struct
-        {
-            int dummy;
-            /* No Vivante window events yet */
-        } vivante;
-#endif
-        /* Can't have an empty union */
-        int dummy;
-    } msg;
-};
-
-/**
- *  The custom window manager information structure.
- *
- *  When this structure is returned, it holds information about which
- *  low level system it is using, and will be one of SDL_SYSWM_TYPE.
- */
-struct SDL_SysWMinfo
-{
-    SDL_version version;
-    SDL_SYSWM_TYPE subsystem;
-    union
-    {
-#if defined(SDL_VIDEO_DRIVER_WINDOWS)
-        struct
-        {
-            HWND window;                /**< The window handle */
-            HDC hdc;                    /**< The window device context */
-            HINSTANCE hinstance;        /**< The instance handle */
-        } win;
-#endif
-#if defined(SDL_VIDEO_DRIVER_WINRT)
-        struct
-        {
-            IInspectable * window;      /**< The WinRT CoreWindow */
-        } winrt;
-#endif
-#if defined(SDL_VIDEO_DRIVER_X11)
-        struct
-        {
-            Display *display;           /**< The X11 display */
-            Window window;              /**< The X11 window */
-        } x11;
-#endif
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-        struct
-        {
-            IDirectFB *dfb;             /**< The directfb main interface */
-            IDirectFBWindow *window;    /**< The directfb window handle */
-            IDirectFBSurface *surface;  /**< The directfb client surface */
-        } dfb;
-#endif
-#if defined(SDL_VIDEO_DRIVER_COCOA)
-        struct
-        {
-#if defined(__OBJC__) && defined(__has_feature) && __has_feature(objc_arc)
-            NSWindow __unsafe_unretained *window; /**< The Cocoa window */
-#else
-            NSWindow *window;                     /**< The Cocoa window */
-#endif
-        } cocoa;
-#endif
-#if defined(SDL_VIDEO_DRIVER_UIKIT)
-        struct
-        {
-#if defined(__OBJC__) && defined(__has_feature) && __has_feature(objc_arc)
-            UIWindow __unsafe_unretained *window; /**< The UIKit window */
-#else
-            UIWindow *window;                     /**< The UIKit window */
-#endif
-            GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */
-            GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */
-            GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */
-        } uikit;
-#endif
-#if defined(SDL_VIDEO_DRIVER_WAYLAND)
-        struct
-        {
-            struct wl_display *display;            /**< Wayland display */
-            struct wl_surface *surface;            /**< Wayland surface */
-            struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */
-        } wl;
-#endif
-#if defined(SDL_VIDEO_DRIVER_MIR)  /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
-        struct
-        {
-            void *connection;  /**< Mir display server connection */
-            void *surface;  /**< Mir surface */
-        } mir;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_ANDROID)
-        struct
-        {
-            ANativeWindow *window;
-            EGLSurface surface;
-        } android;
-#endif
-
-#if defined(SDL_VIDEO_DRIVER_VIVANTE)
-        struct
-        {
-            EGLNativeDisplayType display;
-            EGLNativeWindowType window;
-        } vivante;
-#endif
-
-        /* Make sure this union is always 64 bytes (8 64-bit pointers). */
-        /* Be careful not to overflow this if you add a new target! */
-        Uint8 dummy[64];
-    } info;
-};
-
-#endif /* SDL_PROTOTYPES_ONLY */
-
-typedef struct SDL_SysWMinfo SDL_SysWMinfo;
-
-/* Function prototypes */
-/**
- *  \brief This function allows access to driver-dependent window information.
- *
- *  \param window The window about which information is being requested
- *  \param info This structure must be initialized with the SDL version, and is
- *              then filled in with information about the given window.
- *
- *  \return SDL_TRUE if the function is implemented and the version member of
- *          the \c info struct is valid, SDL_FALSE otherwise.
- *
- *  You typically use this function like this:
- *  \code
- *  SDL_SysWMinfo info;
- *  SDL_VERSION(&info.version);
- *  if ( SDL_GetWindowWMInfo(window, &info) ) { ... }
- *  \endcode
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window,
-                                                     SDL_SysWMinfo * info);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_syswm_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_thread.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_thread.h
deleted file mode 100644 (file)
index f78b114..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_thread_h_
-#define SDL_thread_h_
-
-/**
- *  \file SDL_thread.h
- *
- *  Header for the SDL thread management routines.
- */
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-/* Thread synchronization primitives */
-#include "SDL_atomic.h"
-#include "SDL_mutex.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The SDL thread structure, defined in SDL_thread.c */
-struct SDL_Thread;
-typedef struct SDL_Thread SDL_Thread;
-
-/* The SDL thread ID */
-typedef unsigned long SDL_threadID;
-
-/* Thread local storage ID, 0 is the invalid ID */
-typedef unsigned int SDL_TLSID;
-
-/**
- *  The SDL thread priority.
- *
- *  \note On many systems you require special privileges to set high or time critical priority.
- */
-typedef enum {
-    SDL_THREAD_PRIORITY_LOW,
-    SDL_THREAD_PRIORITY_NORMAL,
-    SDL_THREAD_PRIORITY_HIGH,
-    SDL_THREAD_PRIORITY_TIME_CRITICAL
-} SDL_ThreadPriority;
-
-/**
- *  The function passed to SDL_CreateThread().
- *  It is passed a void* user context parameter and returns an int.
- */
-typedef int (SDLCALL * SDL_ThreadFunction) (void *data);
-
-#if defined(__WIN32__) && !defined(HAVE_LIBC)
-/**
- *  \file SDL_thread.h
- *
- *  We compile SDL into a DLL. This means, that it's the DLL which
- *  creates a new thread for the calling process with the SDL_CreateThread()
- *  API. There is a problem with this, that only the RTL of the SDL2.DLL will
- *  be initialized for those threads, and not the RTL of the calling
- *  application!
- *
- *  To solve this, we make a little hack here.
- *
- *  We'll always use the caller's _beginthread() and _endthread() APIs to
- *  start a new thread. This way, if it's the SDL2.DLL which uses this API,
- *  then the RTL of SDL2.DLL will be used to create the new thread, and if it's
- *  the application, then the RTL of the application will be used.
- *
- *  So, in short:
- *  Always use the _beginthread() and _endthread() of the calling runtime
- *  library!
- */
-#define SDL_PASSED_BEGINTHREAD_ENDTHREAD
-#include <process.h> /* _beginthreadex() and _endthreadex() */
-
-typedef uintptr_t(__cdecl * pfnSDL_CurrentBeginThread)
-                   (void *, unsigned, unsigned (__stdcall *func)(void *),
-                    void * /*arg*/, unsigned, unsigned * /* threadID */);
-typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code);
-
-/**
- *  Create a thread.
- */
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThreadWithStackSize(int (SDLCALL * fn) (void *),
-                 const char *name, const size_t stacksize, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-
-
-/**
- *  Create a thread.
- */
-#if defined(SDL_CreateThread) && SDL_DYNAMIC_API
-#undef SDL_CreateThread
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#undef SDL_CreateThreadWithStackSize
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#else
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
-#endif
-
-#elif defined(__OS2__)
-/*
- * just like the windows case above:  We compile SDL2
- * into a dll with Watcom's runtime statically linked.
- */
-#define SDL_PASSED_BEGINTHREAD_ENDTHREAD
-#ifndef __EMX__
-#include <process.h>
-#else
-#include <stdlib.h>
-#endif
-typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/);
-typedef void (*pfnSDL_CurrentEndThread)(void);
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data,
-                 pfnSDL_CurrentBeginThread pfnBeginThread,
-                 pfnSDL_CurrentEndThread pfnEndThread);
-#if defined(SDL_CreateThread) && SDL_DYNAMIC_API
-#undef SDL_CreateThread
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#undef SDL_CreateThreadWithStackSize
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#else
-#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread)
-#endif
-
-#else
-
-/**
- *  Create a thread with a default stack size.
- *
- *  This is equivalent to calling:
- *  SDL_CreateThreadWithStackSize(fn, name, 0, data);
- */
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data);
-
-/**
- *  Create a thread.
- *
- *   Thread naming is a little complicated: Most systems have very small
- *    limits for the string length (Haiku has 32 bytes, Linux currently has 16,
- *    Visual C++ 6.0 has nine!), and possibly other arbitrary rules. You'll
- *    have to see what happens with your system's debugger. The name should be
- *    UTF-8 (but using the naming limits of C identifiers is a better bet).
- *   There are no requirements for thread naming conventions, so long as the
- *    string is null-terminated UTF-8, but these guidelines are helpful in
- *    choosing a name:
- *
- *    http://stackoverflow.com/questions/149932/naming-conventions-for-threads
- *
- *   If a system imposes requirements, SDL will try to munge the string for
- *    it (truncate, etc), but the original string contents will be available
- *    from SDL_GetThreadName().
- *
- *   The size (in bytes) of the new stack can be specified. Zero means "use
- *    the system default" which might be wildly different between platforms
- *    (x86 Linux generally defaults to eight megabytes, an embedded device
- *    might be a few kilobytes instead).
- *
- *   In SDL 2.1, stacksize will be folded into the original SDL_CreateThread
- *    function.
- */
-extern DECLSPEC SDL_Thread *SDLCALL
-SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data);
-
-#endif
-
-/**
- * Get the thread name, as it was specified in SDL_CreateThread().
- *  This function returns a pointer to a UTF-8 string that names the
- *  specified thread, or NULL if it doesn't have a name. This is internal
- *  memory, not to be free()'d by the caller, and remains valid until the
- *  specified thread is cleaned up by SDL_WaitThread().
- */
-extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread);
-
-/**
- *  Get the thread identifier for the current thread.
- */
-extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void);
-
-/**
- *  Get the thread identifier for the specified thread.
- *
- *  Equivalent to SDL_ThreadID() if the specified thread is NULL.
- */
-extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread);
-
-/**
- *  Set the priority for the current thread
- */
-extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority);
-
-/**
- *  Wait for a thread to finish. Threads that haven't been detached will
- *  remain (as a "zombie") until this function cleans them up. Not doing so
- *  is a resource leak.
- *
- *  Once a thread has been cleaned up through this function, the SDL_Thread
- *  that references it becomes invalid and should not be referenced again.
- *  As such, only one thread may call SDL_WaitThread() on another.
- *
- *  The return code for the thread function is placed in the area
- *  pointed to by \c status, if \c status is not NULL.
- *
- *  You may not wait on a thread that has been used in a call to
- *  SDL_DetachThread(). Use either that function or this one, but not
- *  both, or behavior is undefined.
- *
- *  It is safe to pass NULL to this function; it is a no-op.
- */
-extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status);
-
-/**
- *  A thread may be "detached" to signify that it should not remain until
- *  another thread has called SDL_WaitThread() on it. Detaching a thread
- *  is useful for long-running threads that nothing needs to synchronize
- *  with or further manage. When a detached thread is done, it simply
- *  goes away.
- *
- *  There is no way to recover the return code of a detached thread. If you
- *  need this, don't detach the thread and instead use SDL_WaitThread().
- *
- *  Once a thread is detached, you should usually assume the SDL_Thread isn't
- *  safe to reference again, as it will become invalid immediately upon
- *  the detached thread's exit, instead of remaining until someone has called
- *  SDL_WaitThread() to finally clean it up. As such, don't detach the same
- *  thread more than once.
- *
- *  If a thread has already exited when passed to SDL_DetachThread(), it will
- *  stop waiting for a call to SDL_WaitThread() and clean up immediately.
- *  It is not safe to detach a thread that might be used with SDL_WaitThread().
- *
- *  You may not call SDL_WaitThread() on a thread that has been detached.
- *  Use either that function or this one, but not both, or behavior is
- *  undefined.
- *
- *  It is safe to pass NULL to this function; it is a no-op.
- */
-extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread);
-
-/**
- *  \brief Create an identifier that is globally visible to all threads but refers to data that is thread-specific.
- *
- *  \return The newly created thread local storage identifier, or 0 on error
- *
- *  \code
- *  static SDL_SpinLock tls_lock;
- *  static SDL_TLSID thread_local_storage;
- * 
- *  void SetMyThreadData(void *value)
- *  {
- *      if (!thread_local_storage) {
- *          SDL_AtomicLock(&tls_lock);
- *          if (!thread_local_storage) {
- *              thread_local_storage = SDL_TLSCreate();
- *          }
- *          SDL_AtomicUnlock(&tls_lock);
- *      }
- *      SDL_TLSSet(thread_local_storage, value, 0);
- *  }
- *  
- *  void *GetMyThreadData(void)
- *  {
- *      return SDL_TLSGet(thread_local_storage);
- *  }
- *  \endcode
- *
- *  \sa SDL_TLSGet()
- *  \sa SDL_TLSSet()
- */
-extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void);
-
-/**
- *  \brief Get the value associated with a thread local storage ID for the current thread.
- *
- *  \param id The thread local storage ID
- *
- *  \return The value associated with the ID for the current thread, or NULL if no value has been set.
- *
- *  \sa SDL_TLSCreate()
- *  \sa SDL_TLSSet()
- */
-extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);
-
-/**
- *  \brief Set the value associated with a thread local storage ID for the current thread.
- *
- *  \param id The thread local storage ID
- *  \param value The value to associate with the ID for the current thread
- *  \param destructor A function called when the thread exits, to free the value.
- *
- *  \return 0 on success, -1 on error
- *
- *  \sa SDL_TLSCreate()
- *  \sa SDL_TLSGet()
- */
-extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*));
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_thread_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_timer.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_timer.h
deleted file mode 100644 (file)
index 2a47b04..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_timer_h_
-#define SDL_timer_h_
-
-/**
- *  \file SDL_timer.h
- *
- *  Header for the SDL time management routines.
- */
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Get the number of milliseconds since the SDL library initialization.
- *
- * \note This value wraps if the program runs for more than ~49 days.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void);
-
-/**
- * \brief Compare SDL ticks values, and return true if A has passed B
- *
- * e.g. if you want to wait 100 ms, you could do this:
- *  Uint32 timeout = SDL_GetTicks() + 100;
- *  while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) {
- *      ... do work until timeout has elapsed
- *  }
- */
-#define SDL_TICKS_PASSED(A, B)  ((Sint32)((B) - (A)) <= 0)
-
-/**
- * \brief Get the current value of the high resolution counter
- */
-extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void);
-
-/**
- * \brief Get the count per second of the high resolution counter
- */
-extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void);
-
-/**
- * \brief Wait a specified number of milliseconds before returning.
- */
-extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms);
-
-/**
- *  Function prototype for the timer callback function.
- *
- *  The callback function is passed the current timer interval and returns
- *  the next timer interval.  If the returned value is the same as the one
- *  passed in, the periodic alarm continues, otherwise a new alarm is
- *  scheduled.  If the callback returns 0, the periodic alarm is cancelled.
- */
-typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param);
-
-/**
- * Definition of the timer ID type.
- */
-typedef int SDL_TimerID;
-
-/**
- * \brief Add a new timer to the pool of timers already running.
- *
- * \return A timer ID, or 0 when an error occurs.
- */
-extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval,
-                                                 SDL_TimerCallback callback,
-                                                 void *param);
-
-/**
- * \brief Remove a timer knowing its ID.
- *
- * \return A boolean value indicating success or failure.
- *
- * \warning It is not safe to remove a timer multiple times.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_timer_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_touch.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_touch.h
deleted file mode 100644 (file)
index 99dbcb8..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_touch.h
- *
- *  Include file for SDL touch event handling.
- */
-
-#ifndef SDL_touch_h_
-#define SDL_touch_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef Sint64 SDL_TouchID;
-typedef Sint64 SDL_FingerID;
-
-typedef enum
-{
-    SDL_TOUCH_DEVICE_INVALID = -1,
-    SDL_TOUCH_DEVICE_DIRECT,            /* touch screen with window-relative coordinates */
-    SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */
-    SDL_TOUCH_DEVICE_INDIRECT_RELATIVE  /* trackpad with screen cursor-relative coordinates */
-} SDL_TouchDeviceType;
-
-typedef struct SDL_Finger
-{
-    SDL_FingerID id;
-    float x;
-    float y;
-    float pressure;
-} SDL_Finger;
-
-/* Used as the device ID for mouse events simulated with touch input */
-#define SDL_TOUCH_MOUSEID ((Uint32)-1)
-
-/* Used as the SDL_TouchID for touch events simulated with mouse input */
-#define SDL_MOUSE_TOUCHID ((Sint64)-1)
-
-
-/* Function prototypes */
-
-/**
- *  \brief Get the number of registered touch devices.
- */
-extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void);
-
-/**
- *  \brief Get the touch ID with the given index, or 0 if the index is invalid.
- */
-extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index);
-
-/**
- * \brief Get the type of the given touch device.
- */
-extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID);
-
-/**
- *  \brief Get the number of active fingers for a given touch device.
- */
-extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID);
-
-/**
- *  \brief Get the finger object of the given touch, with the given index.
- */
-extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_touch_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_types.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_types.h
deleted file mode 100644 (file)
index 9c3e989..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_types.h
- *
- *  \deprecated
- */
-
-/* DEPRECATED */
-#include "SDL_stdinc.h"
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_version.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_version.h
deleted file mode 100644 (file)
index 6c7499d..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_version.h
- *
- *  This header defines the current SDL version.
- */
-
-#ifndef SDL_version_h_
-#define SDL_version_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief Information the version of SDL in use.
- *
- *  Represents the library's version as three levels: major revision
- *  (increments with massive changes, additions, and enhancements),
- *  minor revision (increments with backwards-compatible changes to the
- *  major revision), and patchlevel (increments with fixes to the minor
- *  revision).
- *
- *  \sa SDL_VERSION
- *  \sa SDL_GetVersion
- */
-typedef struct SDL_version
-{
-    Uint8 major;        /**< major version */
-    Uint8 minor;        /**< minor version */
-    Uint8 patch;        /**< update version */
-} SDL_version;
-
-/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
-*/
-#define SDL_MAJOR_VERSION   2
-#define SDL_MINOR_VERSION   0
-#define SDL_PATCHLEVEL      10
-
-/**
- *  \brief Macro to determine SDL version program was compiled against.
- *
- *  This macro fills in a SDL_version structure with the version of the
- *  library you compiled against. This is determined by what header the
- *  compiler uses. Note that if you dynamically linked the library, you might
- *  have a slightly newer or older version at runtime. That version can be
- *  determined with SDL_GetVersion(), which, unlike SDL_VERSION(),
- *  is not a macro.
- *
- *  \param x A pointer to a SDL_version struct to initialize.
- *
- *  \sa SDL_version
- *  \sa SDL_GetVersion
- */
-#define SDL_VERSION(x)                          \
-{                                   \
-    (x)->major = SDL_MAJOR_VERSION;                 \
-    (x)->minor = SDL_MINOR_VERSION;                 \
-    (x)->patch = SDL_PATCHLEVEL;                    \
-}
-
-/**
- *  This macro turns the version numbers into a numeric value:
- *  \verbatim
-    (1,2,3) -> (1203)
-    \endverbatim
- *
- *  This assumes that there will never be more than 100 patchlevels.
- */
-#define SDL_VERSIONNUM(X, Y, Z)                     \
-    ((X)*1000 + (Y)*100 + (Z))
-
-/**
- *  This is the version number macro for the current SDL version.
- */
-#define SDL_COMPILEDVERSION \
-    SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL)
-
-/**
- *  This macro will evaluate to true if compiled with SDL at least X.Y.Z.
- */
-#define SDL_VERSION_ATLEAST(X, Y, Z) \
-    (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z))
-
-/**
- *  \brief Get the version of SDL that is linked against your program.
- *
- *  If you are linking to SDL dynamically, then it is possible that the
- *  current version will be different than the version you compiled against.
- *  This function returns the current version, while SDL_VERSION() is a
- *  macro that tells you what version you compiled with.
- *
- *  \code
- *  SDL_version compiled;
- *  SDL_version linked;
- *
- *  SDL_VERSION(&compiled);
- *  SDL_GetVersion(&linked);
- *  printf("We compiled against SDL version %d.%d.%d ...\n",
- *         compiled.major, compiled.minor, compiled.patch);
- *  printf("But we linked against SDL version %d.%d.%d.\n",
- *         linked.major, linked.minor, linked.patch);
- *  \endcode
- *
- *  This function may be called safely at any time, even before SDL_Init().
- *
- *  \sa SDL_VERSION
- */
-extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver);
-
-/**
- *  \brief Get the code revision of SDL that is linked against your program.
- *
- *  Returns an arbitrary string (a hash value) uniquely identifying the
- *  exact revision of the SDL library in use, and is only useful in comparing
- *  against other revisions. It is NOT an incrementing number.
- */
-extern DECLSPEC const char *SDLCALL SDL_GetRevision(void);
-
-/**
- *  \brief Get the revision number of SDL that is linked against your program.
- *
- *  Returns a number uniquely identifying the exact revision of the SDL
- *  library in use. It is an incrementing number based on commits to
- *  hg.libsdl.org.
- */
-extern DECLSPEC int SDLCALL SDL_GetRevisionNumber(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_version_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_video.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_video.h
deleted file mode 100644 (file)
index 352afd4..0000000
+++ /dev/null
@@ -1,1276 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_video.h
- *
- *  Header file for SDL video functions.
- */
-
-#ifndef SDL_video_h_
-#define SDL_video_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_pixels.h"
-#include "SDL_rect.h"
-#include "SDL_surface.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *  \brief  The structure that defines a display mode
- *
- *  \sa SDL_GetNumDisplayModes()
- *  \sa SDL_GetDisplayMode()
- *  \sa SDL_GetDesktopDisplayMode()
- *  \sa SDL_GetCurrentDisplayMode()
- *  \sa SDL_GetClosestDisplayMode()
- *  \sa SDL_SetWindowDisplayMode()
- *  \sa SDL_GetWindowDisplayMode()
- */
-typedef struct
-{
-    Uint32 format;              /**< pixel format */
-    int w;                      /**< width, in screen coordinates */
-    int h;                      /**< height, in screen coordinates */
-    int refresh_rate;           /**< refresh rate (or zero for unspecified) */
-    void *driverdata;           /**< driver-specific data, initialize to 0 */
-} SDL_DisplayMode;
-
-/**
- *  \brief The type used to identify a window
- *
- *  \sa SDL_CreateWindow()
- *  \sa SDL_CreateWindowFrom()
- *  \sa SDL_DestroyWindow()
- *  \sa SDL_GetWindowData()
- *  \sa SDL_GetWindowFlags()
- *  \sa SDL_GetWindowGrab()
- *  \sa SDL_GetWindowPosition()
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_GetWindowTitle()
- *  \sa SDL_HideWindow()
- *  \sa SDL_MaximizeWindow()
- *  \sa SDL_MinimizeWindow()
- *  \sa SDL_RaiseWindow()
- *  \sa SDL_RestoreWindow()
- *  \sa SDL_SetWindowData()
- *  \sa SDL_SetWindowFullscreen()
- *  \sa SDL_SetWindowGrab()
- *  \sa SDL_SetWindowIcon()
- *  \sa SDL_SetWindowPosition()
- *  \sa SDL_SetWindowSize()
- *  \sa SDL_SetWindowBordered()
- *  \sa SDL_SetWindowResizable()
- *  \sa SDL_SetWindowTitle()
- *  \sa SDL_ShowWindow()
- */
-typedef struct SDL_Window SDL_Window;
-
-/**
- *  \brief The flags on a window
- *
- *  \sa SDL_GetWindowFlags()
- */
-typedef enum
-{
-    /* !!! FIXME: change this to name = (1<<x). */
-    SDL_WINDOW_FULLSCREEN = 0x00000001,         /**< fullscreen window */
-    SDL_WINDOW_OPENGL = 0x00000002,             /**< window usable with OpenGL context */
-    SDL_WINDOW_SHOWN = 0x00000004,              /**< window is visible */
-    SDL_WINDOW_HIDDEN = 0x00000008,             /**< window is not visible */
-    SDL_WINDOW_BORDERLESS = 0x00000010,         /**< no window decoration */
-    SDL_WINDOW_RESIZABLE = 0x00000020,          /**< window can be resized */
-    SDL_WINDOW_MINIMIZED = 0x00000040,          /**< window is minimized */
-    SDL_WINDOW_MAXIMIZED = 0x00000080,          /**< window is maximized */
-    SDL_WINDOW_INPUT_GRABBED = 0x00000100,      /**< window has grabbed input focus */
-    SDL_WINDOW_INPUT_FOCUS = 0x00000200,        /**< window has input focus */
-    SDL_WINDOW_MOUSE_FOCUS = 0x00000400,        /**< window has mouse focus */
-    SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ),
-    SDL_WINDOW_FOREIGN = 0x00000800,            /**< window not created by SDL */
-    SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000,      /**< window should be created in high-DPI mode if supported.
-                                                     On macOS NSHighResolutionCapable must be set true in the
-                                                     application's Info.plist for this to have any effect. */
-    SDL_WINDOW_MOUSE_CAPTURE = 0x00004000,      /**< window has mouse captured (unrelated to INPUT_GRABBED) */
-    SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000,      /**< window should always be above others */
-    SDL_WINDOW_SKIP_TASKBAR  = 0x00010000,      /**< window should not be added to the taskbar */
-    SDL_WINDOW_UTILITY       = 0x00020000,      /**< window should be treated as a utility window */
-    SDL_WINDOW_TOOLTIP       = 0x00040000,      /**< window should be treated as a tooltip */
-    SDL_WINDOW_POPUP_MENU    = 0x00080000,      /**< window should be treated as a popup menu */
-    SDL_WINDOW_VULKAN        = 0x10000000       /**< window usable for Vulkan surface */
-} SDL_WindowFlags;
-
-/**
- *  \brief Used to indicate that you don't care what the window position is.
- */
-#define SDL_WINDOWPOS_UNDEFINED_MASK    0x1FFF0000u
-#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X)  (SDL_WINDOWPOS_UNDEFINED_MASK|(X))
-#define SDL_WINDOWPOS_UNDEFINED         SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)
-#define SDL_WINDOWPOS_ISUNDEFINED(X)    \
-            (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK)
-
-/**
- *  \brief Used to indicate that the window position should be centered.
- */
-#define SDL_WINDOWPOS_CENTERED_MASK    0x2FFF0000u
-#define SDL_WINDOWPOS_CENTERED_DISPLAY(X)  (SDL_WINDOWPOS_CENTERED_MASK|(X))
-#define SDL_WINDOWPOS_CENTERED         SDL_WINDOWPOS_CENTERED_DISPLAY(0)
-#define SDL_WINDOWPOS_ISCENTERED(X)    \
-            (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK)
-
-/**
- *  \brief Event subtype for window events
- */
-typedef enum
-{
-    SDL_WINDOWEVENT_NONE,           /**< Never used */
-    SDL_WINDOWEVENT_SHOWN,          /**< Window has been shown */
-    SDL_WINDOWEVENT_HIDDEN,         /**< Window has been hidden */
-    SDL_WINDOWEVENT_EXPOSED,        /**< Window has been exposed and should be
-                                         redrawn */
-    SDL_WINDOWEVENT_MOVED,          /**< Window has been moved to data1, data2
-                                     */
-    SDL_WINDOWEVENT_RESIZED,        /**< Window has been resized to data1xdata2 */
-    SDL_WINDOWEVENT_SIZE_CHANGED,   /**< The window size has changed, either as
-                                         a result of an API call or through the
-                                         system or user changing the window size. */
-    SDL_WINDOWEVENT_MINIMIZED,      /**< Window has been minimized */
-    SDL_WINDOWEVENT_MAXIMIZED,      /**< Window has been maximized */
-    SDL_WINDOWEVENT_RESTORED,       /**< Window has been restored to normal size
-                                         and position */
-    SDL_WINDOWEVENT_ENTER,          /**< Window has gained mouse focus */
-    SDL_WINDOWEVENT_LEAVE,          /**< Window has lost mouse focus */
-    SDL_WINDOWEVENT_FOCUS_GAINED,   /**< Window has gained keyboard focus */
-    SDL_WINDOWEVENT_FOCUS_LOST,     /**< Window has lost keyboard focus */
-    SDL_WINDOWEVENT_CLOSE,          /**< The window manager requests that the window be closed */
-    SDL_WINDOWEVENT_TAKE_FOCUS,     /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */
-    SDL_WINDOWEVENT_HIT_TEST        /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */
-} SDL_WindowEventID;
-
-/**
- *  \brief Event subtype for display events
- */
-typedef enum
-{
-    SDL_DISPLAYEVENT_NONE,          /**< Never used */
-    SDL_DISPLAYEVENT_ORIENTATION    /**< Display orientation has changed to data1 */
-} SDL_DisplayEventID;
-
-typedef enum
-{
-    SDL_ORIENTATION_UNKNOWN,            /**< The display orientation can't be determined */
-    SDL_ORIENTATION_LANDSCAPE,          /**< The display is in landscape mode, with the right side up, relative to portrait mode */
-    SDL_ORIENTATION_LANDSCAPE_FLIPPED,  /**< The display is in landscape mode, with the left side up, relative to portrait mode */
-    SDL_ORIENTATION_PORTRAIT,           /**< The display is in portrait mode */
-    SDL_ORIENTATION_PORTRAIT_FLIPPED    /**< The display is in portrait mode, upside down */
-} SDL_DisplayOrientation;
-
-/**
- *  \brief An opaque handle to an OpenGL context.
- */
-typedef void *SDL_GLContext;
-
-/**
- *  \brief OpenGL configuration attributes
- */
-typedef enum
-{
-    SDL_GL_RED_SIZE,
-    SDL_GL_GREEN_SIZE,
-    SDL_GL_BLUE_SIZE,
-    SDL_GL_ALPHA_SIZE,
-    SDL_GL_BUFFER_SIZE,
-    SDL_GL_DOUBLEBUFFER,
-    SDL_GL_DEPTH_SIZE,
-    SDL_GL_STENCIL_SIZE,
-    SDL_GL_ACCUM_RED_SIZE,
-    SDL_GL_ACCUM_GREEN_SIZE,
-    SDL_GL_ACCUM_BLUE_SIZE,
-    SDL_GL_ACCUM_ALPHA_SIZE,
-    SDL_GL_STEREO,
-    SDL_GL_MULTISAMPLEBUFFERS,
-    SDL_GL_MULTISAMPLESAMPLES,
-    SDL_GL_ACCELERATED_VISUAL,
-    SDL_GL_RETAINED_BACKING,
-    SDL_GL_CONTEXT_MAJOR_VERSION,
-    SDL_GL_CONTEXT_MINOR_VERSION,
-    SDL_GL_CONTEXT_EGL,
-    SDL_GL_CONTEXT_FLAGS,
-    SDL_GL_CONTEXT_PROFILE_MASK,
-    SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
-    SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,
-    SDL_GL_CONTEXT_RELEASE_BEHAVIOR,
-    SDL_GL_CONTEXT_RESET_NOTIFICATION,
-    SDL_GL_CONTEXT_NO_ERROR
-} SDL_GLattr;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_PROFILE_CORE           = 0x0001,
-    SDL_GL_CONTEXT_PROFILE_COMPATIBILITY  = 0x0002,
-    SDL_GL_CONTEXT_PROFILE_ES             = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
-} SDL_GLprofile;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_DEBUG_FLAG              = 0x0001,
-    SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,
-    SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG      = 0x0004,
-    SDL_GL_CONTEXT_RESET_ISOLATION_FLAG    = 0x0008
-} SDL_GLcontextFlag;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE   = 0x0000,
-    SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH  = 0x0001
-} SDL_GLcontextReleaseFlag;
-
-typedef enum
-{
-    SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000,
-    SDL_GL_CONTEXT_RESET_LOSE_CONTEXT    = 0x0001
-} SDL_GLContextResetNotification;
-
-/* Function prototypes */
-
-/**
- *  \brief Get the number of video drivers compiled into SDL
- *
- *  \sa SDL_GetVideoDriver()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);
-
-/**
- *  \brief Get the name of a built in video driver.
- *
- *  \note The video drivers are presented in the order in which they are
- *        normally checked during initialization.
- *
- *  \sa SDL_GetNumVideoDrivers()
- */
-extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);
-
-/**
- *  \brief Initialize the video subsystem, optionally specifying a video driver.
- *
- *  \param driver_name Initialize a specific driver by name, or NULL for the
- *                     default video driver.
- *
- *  \return 0 on success, -1 on error
- *
- *  This function initializes the video subsystem; setting up a connection
- *  to the window manager, etc, and determines the available display modes
- *  and pixel formats, but does not initialize a window or graphics mode.
- *
- *  \sa SDL_VideoQuit()
- */
-extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name);
-
-/**
- *  \brief Shuts down the video subsystem.
- *
- *  This function closes all windows, and restores the original video mode.
- *
- *  \sa SDL_VideoInit()
- */
-extern DECLSPEC void SDLCALL SDL_VideoQuit(void);
-
-/**
- *  \brief Returns the name of the currently initialized video driver.
- *
- *  \return The name of the current video driver or NULL if no driver
- *          has been initialized
- *
- *  \sa SDL_GetNumVideoDrivers()
- *  \sa SDL_GetVideoDriver()
- */
-extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void);
-
-/**
- *  \brief Returns the number of available video displays.
- *
- *  \sa SDL_GetDisplayBounds()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);
-
-/**
- *  \brief Get the name of a display in UTF-8 encoding
- *
- *  \return The name of a display, or NULL for an invalid display index.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex);
-
-/**
- *  \brief Get the desktop area represented by a display, with the primary
- *         display located at 0,0
- *
- *  \return 0 on success, or -1 if the index is out of range.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect);
-
-/**
- *  \brief Get the usable desktop area represented by a display, with the
- *         primary display located at 0,0
- *
- *  This is the same area as SDL_GetDisplayBounds() reports, but with portions
- *  reserved by the system removed. For example, on Mac OS X, this subtracts
- *  the area occupied by the menu bar and dock.
- *
- *  Setting a window to be fullscreen generally bypasses these unusable areas,
- *  so these are good guidelines for the maximum space available to a
- *  non-fullscreen window.
- *
- *  \return 0 on success, or -1 if the index is out of range.
- *
- *  \sa SDL_GetDisplayBounds()
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect);
-
-/**
- *  \brief Get the dots/pixels-per-inch for a display
- *
- *  \note Diagonal, horizontal and vertical DPI can all be optionally
- *        returned if the parameter is non-NULL.
- *
- *  \return 0 on success, or -1 if no DPI information is available or the index is out of range.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi);
-
-/**
- *  \brief Get the orientation of a display
- *
- *  \return The orientation of the display, or SDL_ORIENTATION_UNKNOWN if it isn't available.
- *
- *  \sa SDL_GetNumVideoDisplays()
- */
-extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex);
-
-/**
- *  \brief Returns the number of available display modes.
- *
- *  \sa SDL_GetDisplayMode()
- */
-extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);
-
-/**
- *  \brief Fill in information about a specific display mode.
- *
- *  \note The display modes are sorted in this priority:
- *        \li bits per pixel -> more colors to fewer colors
- *        \li width -> largest to smallest
- *        \li height -> largest to smallest
- *        \li refresh rate -> highest to lowest
- *
- *  \sa SDL_GetNumDisplayModes()
- */
-extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,
-                                               SDL_DisplayMode * mode);
-
-/**
- *  \brief Fill in information about the desktop display mode.
- */
-extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode);
-
-/**
- *  \brief Fill in information about the current display mode.
- */
-extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode);
-
-
-/**
- *  \brief Get the closest match to the requested display mode.
- *
- *  \param displayIndex The index of display from which mode should be queried.
- *  \param mode The desired display mode
- *  \param closest A pointer to a display mode to be filled in with the closest
- *                 match of the available display modes.
- *
- *  \return The passed in value \c closest, or NULL if no matching video mode
- *          was available.
- *
- *  The available display modes are scanned, and \c closest is filled in with the
- *  closest mode matching the requested mode and returned.  The mode format and
- *  refresh_rate default to the desktop mode if they are 0.  The modes are
- *  scanned with size being first priority, format being second priority, and
- *  finally checking the refresh_rate.  If all the available modes are too
- *  small, then NULL is returned.
- *
- *  \sa SDL_GetNumDisplayModes()
- *  \sa SDL_GetDisplayMode()
- */
-extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest);
-
-/**
- *  \brief Get the display index associated with a window.
- *
- *  \return the display index of the display containing the center of the
- *          window, or -1 on error.
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window);
-
-/**
- *  \brief Set the display mode used when a fullscreen window is visible.
- *
- *  By default the window's dimensions and the desktop format and refresh rate
- *  are used.
- *
- *  \param window The window for which the display mode should be set.
- *  \param mode The mode to use, or NULL for the default mode.
- *
- *  \return 0 on success, or -1 if setting the display mode failed.
- *
- *  \sa SDL_GetWindowDisplayMode()
- *  \sa SDL_SetWindowFullscreen()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,
-                                                     const SDL_DisplayMode
-                                                         * mode);
-
-/**
- *  \brief Fill in information about the display mode used when a fullscreen
- *         window is visible.
- *
- *  \sa SDL_SetWindowDisplayMode()
- *  \sa SDL_SetWindowFullscreen()
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,
-                                                     SDL_DisplayMode * mode);
-
-/**
- *  \brief Get the pixel format associated with the window.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
-
-/**
- *  \brief Create a window with the specified position, dimensions, and flags.
- *
- *  \param title The title of the window, in UTF-8 encoding.
- *  \param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
- *               ::SDL_WINDOWPOS_UNDEFINED.
- *  \param w     The width of the window, in screen coordinates.
- *  \param h     The height of the window, in screen coordinates.
- *  \param flags The flags for the window, a mask of any of the following:
- *               ::SDL_WINDOW_FULLSCREEN,    ::SDL_WINDOW_OPENGL,
- *               ::SDL_WINDOW_HIDDEN,        ::SDL_WINDOW_BORDERLESS,
- *               ::SDL_WINDOW_RESIZABLE,     ::SDL_WINDOW_MAXIMIZED,
- *               ::SDL_WINDOW_MINIMIZED,     ::SDL_WINDOW_INPUT_GRABBED,
- *               ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN.
- *
- *  \return The created window, or NULL if window creation failed.
- *
- *  If the window is created with the SDL_WINDOW_ALLOW_HIGHDPI flag, its size
- *  in pixels may differ from its size in screen coordinates on platforms with
- *  high-DPI support (e.g. iOS and Mac OS X). Use SDL_GetWindowSize() to query
- *  the client area's size in screen coordinates, and SDL_GL_GetDrawableSize(),
- *  SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to query the
- *  drawable size in pixels.
- *
- *  If the window is created with any of the SDL_WINDOW_OPENGL or
- *  SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function
- *  (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the
- *  corresponding UnloadLibrary function is called by SDL_DestroyWindow().
- *
- *  If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver,
- *  SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.
- *
- *  \note On non-Apple devices, SDL requires you to either not link to the
- *        Vulkan loader or link to a dynamic library version. This limitation
- *        may be removed in a future version of SDL.
- *
- *  \sa SDL_DestroyWindow()
- *  \sa SDL_GL_LoadLibrary()
- *  \sa SDL_Vulkan_LoadLibrary()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
-                                                      int x, int y, int w,
-                                                      int h, Uint32 flags);
-
-/**
- *  \brief Create an SDL window from an existing native window.
- *
- *  \param data A pointer to driver-dependent window creation data
- *
- *  \return The created window, or NULL if window creation failed.
- *
- *  \sa SDL_DestroyWindow()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
-
-/**
- *  \brief Get the numeric ID of a window, for logging purposes.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
-
-/**
- *  \brief Get a window from a stored ID, or NULL if it doesn't exist.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
-
-/**
- *  \brief Get the window flags.
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);
-
-/**
- *  \brief Set the title of a window, in UTF-8 format.
- *
- *  \sa SDL_GetWindowTitle()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,
-                                                const char *title);
-
-/**
- *  \brief Get the title of a window, in UTF-8 format.
- *
- *  \sa SDL_SetWindowTitle()
- */
-extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);
-
-/**
- *  \brief Set the icon for a window.
- *
- *  \param window The window for which the icon should be set.
- *  \param icon The icon for the window.
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,
-                                               SDL_Surface * icon);
-
-/**
- *  \brief Associate an arbitrary named pointer with a window.
- *
- *  \param window   The window to associate with the pointer.
- *  \param name     The name of the pointer.
- *  \param userdata The associated pointer.
- *
- *  \return The previous value associated with 'name'
- *
- *  \note The name is case-sensitive.
- *
- *  \sa SDL_GetWindowData()
- */
-extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,
-                                                const char *name,
-                                                void *userdata);
-
-/**
- *  \brief Retrieve the data pointer associated with a window.
- *
- *  \param window   The window to query.
- *  \param name     The name of the pointer.
- *
- *  \return The value associated with 'name'
- *
- *  \sa SDL_SetWindowData()
- */
-extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,
-                                                const char *name);
-
-/**
- *  \brief Set the position of a window.
- *
- *  \param window   The window to reposition.
- *  \param x        The x coordinate of the window in screen coordinates, or
- *                  ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
- *  \param y        The y coordinate of the window in screen coordinates, or
- *                  ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
- *
- *  \note The window coordinate origin is the upper left of the display.
- *
- *  \sa SDL_GetWindowPosition()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,
-                                                   int x, int y);
-
-/**
- *  \brief Get the position of a window.
- *
- *  \param window   The window to query.
- *  \param x        Pointer to variable for storing the x position, in screen
- *                  coordinates. May be NULL.
- *  \param y        Pointer to variable for storing the y position, in screen
- *                  coordinates. May be NULL.
- *
- *  \sa SDL_SetWindowPosition()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,
-                                                   int *x, int *y);
-
-/**
- *  \brief Set the size of a window's client area.
- *
- *  \param window   The window to resize.
- *  \param w        The width of the window, in screen coordinates. Must be >0.
- *  \param h        The height of the window, in screen coordinates. Must be >0.
- *
- *  \note Fullscreen windows automatically match the size of the display mode,
- *        and you should use SDL_SetWindowDisplayMode() to change their size.
- *
- *  The window size in screen coordinates may differ from the size in pixels, if
- *  the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
- *  high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
- *  SDL_GetRendererOutputSize() to get the real client area size in pixels.
- *
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_SetWindowDisplayMode()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,
-                                               int h);
-
-/**
- *  \brief Get the size of a window's client area.
- *
- *  \param window   The window to query.
- *  \param w        Pointer to variable for storing the width, in screen
- *                  coordinates. May be NULL.
- *  \param h        Pointer to variable for storing the height, in screen
- *                  coordinates. May be NULL.
- *
- *  The window size in screen coordinates may differ from the size in pixels, if
- *  the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
- *  high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
- *  SDL_GetRendererOutputSize() to get the real client area size in pixels.
- *
- *  \sa SDL_SetWindowSize()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,
-                                               int *h);
-
-/**
- *  \brief Get the size of a window's borders (decorations) around the client area.
- *
- *  \param window The window to query.
- *  \param top Pointer to variable for storing the size of the top border. NULL is permitted.
- *  \param left Pointer to variable for storing the size of the left border. NULL is permitted.
- *  \param bottom Pointer to variable for storing the size of the bottom border. NULL is permitted.
- *  \param right Pointer to variable for storing the size of the right border. NULL is permitted.
- *
- *  \return 0 on success, or -1 if getting this information is not supported.
- *
- *  \note if this function fails (returns -1), the size values will be
- *        initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as
- *        if the window in question was borderless.
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window,
-                                                     int *top, int *left,
-                                                     int *bottom, int *right);
-
-/**
- *  \brief Set the minimum size of a window's client area.
- *
- *  \param window    The window to set a new minimum size.
- *  \param min_w     The minimum width of the window, must be >0
- *  \param min_h     The minimum height of the window, must be >0
- *
- *  \note You can't change the minimum size of a fullscreen window, it
- *        automatically matches the size of the display mode.
- *
- *  \sa SDL_GetWindowMinimumSize()
- *  \sa SDL_SetWindowMaximumSize()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window,
-                                                      int min_w, int min_h);
-
-/**
- *  \brief Get the minimum size of a window's client area.
- *
- *  \param window   The window to query.
- *  \param w        Pointer to variable for storing the minimum width, may be NULL
- *  \param h        Pointer to variable for storing the minimum height, may be NULL
- *
- *  \sa SDL_GetWindowMaximumSize()
- *  \sa SDL_SetWindowMinimumSize()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window,
-                                                      int *w, int *h);
-
-/**
- *  \brief Set the maximum size of a window's client area.
- *
- *  \param window    The window to set a new maximum size.
- *  \param max_w     The maximum width of the window, must be >0
- *  \param max_h     The maximum height of the window, must be >0
- *
- *  \note You can't change the maximum size of a fullscreen window, it
- *        automatically matches the size of the display mode.
- *
- *  \sa SDL_GetWindowMaximumSize()
- *  \sa SDL_SetWindowMinimumSize()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window,
-                                                      int max_w, int max_h);
-
-/**
- *  \brief Get the maximum size of a window's client area.
- *
- *  \param window   The window to query.
- *  \param w        Pointer to variable for storing the maximum width, may be NULL
- *  \param h        Pointer to variable for storing the maximum height, may be NULL
- *
- *  \sa SDL_GetWindowMinimumSize()
- *  \sa SDL_SetWindowMaximumSize()
- */
-extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window,
-                                                      int *w, int *h);
-
-/**
- *  \brief Set the border state of a window.
- *
- *  This will add or remove the window's SDL_WINDOW_BORDERLESS flag and
- *  add or remove the border from the actual window. This is a no-op if the
- *  window's border already matches the requested state.
- *
- *  \param window The window of which to change the border state.
- *  \param bordered SDL_FALSE to remove border, SDL_TRUE to add border.
- *
- *  \note You can't change the border state of a fullscreen window.
- *
- *  \sa SDL_GetWindowFlags()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window,
-                                                   SDL_bool bordered);
-
-/**
- *  \brief Set the user-resizable state of a window.
- *
- *  This will add or remove the window's SDL_WINDOW_RESIZABLE flag and
- *  allow/disallow user resizing of the window. This is a no-op if the
- *  window's resizable state already matches the requested state.
- *
- *  \param window The window of which to change the resizable state.
- *  \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow.
- *
- *  \note You can't change the resizable state of a fullscreen window.
- *
- *  \sa SDL_GetWindowFlags()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window,
-                                                    SDL_bool resizable);
-
-/**
- *  \brief Show a window.
- *
- *  \sa SDL_HideWindow()
- */
-extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);
-
-/**
- *  \brief Hide a window.
- *
- *  \sa SDL_ShowWindow()
- */
-extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);
-
-/**
- *  \brief Raise a window above other windows and set the input focus.
- */
-extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);
-
-/**
- *  \brief Make a window as large as possible.
- *
- *  \sa SDL_RestoreWindow()
- */
-extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);
-
-/**
- *  \brief Minimize a window to an iconic representation.
- *
- *  \sa SDL_RestoreWindow()
- */
-extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);
-
-/**
- *  \brief Restore the size and position of a minimized or maximized window.
- *
- *  \sa SDL_MaximizeWindow()
- *  \sa SDL_MinimizeWindow()
- */
-extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);
-
-/**
- *  \brief Set a window's fullscreen state.
- *
- *  \return 0 on success, or -1 if setting the display mode failed.
- *
- *  \sa SDL_SetWindowDisplayMode()
- *  \sa SDL_GetWindowDisplayMode()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,
-                                                    Uint32 flags);
-
-/**
- *  \brief Get the SDL surface associated with the window.
- *
- *  \return The window's framebuffer surface, or NULL on error.
- *
- *  A new surface will be created with the optimal format for the window,
- *  if necessary. This surface will be freed when the window is destroyed.
- *
- *  \note You may not combine this with 3D or the rendering API on this window.
- *
- *  \sa SDL_UpdateWindowSurface()
- *  \sa SDL_UpdateWindowSurfaceRects()
- */
-extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);
-
-/**
- *  \brief Copy the window surface to the screen.
- *
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_GetWindowSurface()
- *  \sa SDL_UpdateWindowSurfaceRects()
- */
-extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);
-
-/**
- *  \brief Copy a number of rectangles on the window surface to the screen.
- *
- *  \return 0 on success, or -1 on error.
- *
- *  \sa SDL_GetWindowSurface()
- *  \sa SDL_UpdateWindowSurface()
- */
-extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,
-                                                         const SDL_Rect * rects,
-                                                         int numrects);
-
-/**
- *  \brief Set a window's input grab mode.
- *
- *  \param window The window for which the input grab mode should be set.
- *  \param grabbed This is SDL_TRUE to grab input, and SDL_FALSE to release input.
- *
- *  If the caller enables a grab while another window is currently grabbed,
- *  the other window loses its grab in favor of the caller's window.
- *
- *  \sa SDL_GetWindowGrab()
- */
-extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,
-                                               SDL_bool grabbed);
-
-/**
- *  \brief Get a window's input grab mode.
- *
- *  \return This returns SDL_TRUE if input is grabbed, and SDL_FALSE otherwise.
- *
- *  \sa SDL_SetWindowGrab()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);
-
-/**
- *  \brief Get the window that currently has an input grab enabled.
- *
- *  \return This returns the window if input is grabbed, and NULL otherwise.
- *
- *  \sa SDL_SetWindowGrab()
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void);
-
-/**
- *  \brief Set the brightness (gamma correction) for a window.
- *
- *  \return 0 on success, or -1 if setting the brightness isn't supported.
- *
- *  \sa SDL_GetWindowBrightness()
- *  \sa SDL_SetWindowGammaRamp()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness);
-
-/**
- *  \brief Get the brightness (gamma correction) for a window.
- *
- *  \return The last brightness value passed to SDL_SetWindowBrightness()
- *
- *  \sa SDL_SetWindowBrightness()
- */
-extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);
-
-/**
- *  \brief Set the opacity for a window
- *
- *  \param window The window which will be made transparent or opaque
- *  \param opacity Opacity (0.0f - transparent, 1.0f - opaque) This will be
- *                 clamped internally between 0.0f and 1.0f.
- *
- *  \return 0 on success, or -1 if setting the opacity isn't supported.
- *
- *  \sa SDL_GetWindowOpacity()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity);
-
-/**
- *  \brief Get the opacity of a window.
- *
- *  If transparency isn't supported on this platform, opacity will be reported
- *  as 1.0f without error.
- *
- *  \param window The window in question.
- *  \param out_opacity Opacity (0.0f - transparent, 1.0f - opaque)
- *
- *  \return 0 on success, or -1 on error (invalid window, etc).
- *
- *  \sa SDL_SetWindowOpacity()
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity);
-
-/**
- *  \brief Sets the window as a modal for another window (TODO: reconsider this function and/or its name)
- *
- *  \param modal_window The window that should be modal
- *  \param parent_window The parent window
- *
- *  \return 0 on success, or -1 otherwise.
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window);
-
-/**
- *  \brief Explicitly sets input focus to the window.
- *
- *  You almost certainly want SDL_RaiseWindow() instead of this function. Use
- *  this with caution, as you might give focus to a window that's completely
- *  obscured by other windows.
- *
- *  \param window The window that should get the input focus
- *
- *  \return 0 on success, or -1 otherwise.
- *  \sa SDL_RaiseWindow()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
-
-/**
- *  \brief Set the gamma ramp for a window.
- *
- *  \param window The window for which the gamma ramp should be set.
- *  \param red The translation table for the red channel, or NULL.
- *  \param green The translation table for the green channel, or NULL.
- *  \param blue The translation table for the blue channel, or NULL.
- *
- *  \return 0 on success, or -1 if gamma ramps are unsupported.
- *
- *  Set the gamma translation table for the red, green, and blue channels
- *  of the video hardware.  Each table is an array of 256 16-bit quantities,
- *  representing a mapping between the input and output for that channel.
- *  The input is the index into the array, and the output is the 16-bit
- *  gamma value at that index, scaled to the output color precision.
- *
- *  \sa SDL_GetWindowGammaRamp()
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,
-                                                   const Uint16 * red,
-                                                   const Uint16 * green,
-                                                   const Uint16 * blue);
-
-/**
- *  \brief Get the gamma ramp for a window.
- *
- *  \param window The window from which the gamma ramp should be queried.
- *  \param red   A pointer to a 256 element array of 16-bit quantities to hold
- *               the translation table for the red channel, or NULL.
- *  \param green A pointer to a 256 element array of 16-bit quantities to hold
- *               the translation table for the green channel, or NULL.
- *  \param blue  A pointer to a 256 element array of 16-bit quantities to hold
- *               the translation table for the blue channel, or NULL.
- *
- *  \return 0 on success, or -1 if gamma ramps are unsupported.
- *
- *  \sa SDL_SetWindowGammaRamp()
- */
-extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,
-                                                   Uint16 * red,
-                                                   Uint16 * green,
-                                                   Uint16 * blue);
-
-/**
- *  \brief Possible return values from the SDL_HitTest callback.
- *
- *  \sa SDL_HitTest
- */
-typedef enum
-{
-    SDL_HITTEST_NORMAL,  /**< Region is normal. No special properties. */
-    SDL_HITTEST_DRAGGABLE,  /**< Region can drag entire window. */
-    SDL_HITTEST_RESIZE_TOPLEFT,
-    SDL_HITTEST_RESIZE_TOP,
-    SDL_HITTEST_RESIZE_TOPRIGHT,
-    SDL_HITTEST_RESIZE_RIGHT,
-    SDL_HITTEST_RESIZE_BOTTOMRIGHT,
-    SDL_HITTEST_RESIZE_BOTTOM,
-    SDL_HITTEST_RESIZE_BOTTOMLEFT,
-    SDL_HITTEST_RESIZE_LEFT
-} SDL_HitTestResult;
-
-/**
- *  \brief Callback used for hit-testing.
- *
- *  \sa SDL_SetWindowHitTest
- */
-typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win,
-                                                 const SDL_Point *area,
-                                                 void *data);
-
-/**
- *  \brief Provide a callback that decides if a window region has special properties.
- *
- *  Normally windows are dragged and resized by decorations provided by the
- *  system window manager (a title bar, borders, etc), but for some apps, it
- *  makes sense to drag them from somewhere else inside the window itself; for
- *  example, one might have a borderless window that wants to be draggable
- *  from any part, or simulate its own title bar, etc.
- *
- *  This function lets the app provide a callback that designates pieces of
- *  a given window as special. This callback is run during event processing
- *  if we need to tell the OS to treat a region of the window specially; the
- *  use of this callback is known as "hit testing."
- *
- *  Mouse input may not be delivered to your application if it is within
- *  a special area; the OS will often apply that input to moving the window or
- *  resizing the window and not deliver it to the application.
- *
- *  Specifying NULL for a callback disables hit-testing. Hit-testing is
- *  disabled by default.
- *
- *  Platforms that don't support this functionality will return -1
- *  unconditionally, even if you're attempting to disable hit-testing.
- *
- *  Your callback may fire at any time, and its firing does not indicate any
- *  specific behavior (for example, on Windows, this certainly might fire
- *  when the OS is deciding whether to drag your window, but it fires for lots
- *  of other reasons, too, some unrelated to anything you probably care about
- *  _and when the mouse isn't actually at the location it is testing_).
- *  Since this can fire at any time, you should try to keep your callback
- *  efficient, devoid of allocations, etc.
- *
- *  \param window The window to set hit-testing on.
- *  \param callback The callback to call when doing a hit-test.
- *  \param callback_data An app-defined void pointer passed to the callback.
- *  \return 0 on success, -1 on error (including unsupported).
- */
-extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,
-                                                 SDL_HitTest callback,
-                                                 void *callback_data);
-
-/**
- *  \brief Destroy a window.
- */
-extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window);
-
-
-/**
- *  \brief Returns whether the screensaver is currently enabled (default off).
- *
- *  \sa SDL_EnableScreenSaver()
- *  \sa SDL_DisableScreenSaver()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void);
-
-/**
- *  \brief Allow the screen to be blanked by a screensaver
- *
- *  \sa SDL_IsScreenSaverEnabled()
- *  \sa SDL_DisableScreenSaver()
- */
-extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void);
-
-/**
- *  \brief Prevent the screen from being blanked by a screensaver
- *
- *  \sa SDL_IsScreenSaverEnabled()
- *  \sa SDL_EnableScreenSaver()
- */
-extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);
-
-
-/**
- *  \name OpenGL support functions
- */
-/* @{ */
-
-/**
- *  \brief Dynamically load an OpenGL library.
- *
- *  \param path The platform dependent OpenGL library name, or NULL to open the
- *              default OpenGL library.
- *
- *  \return 0 on success, or -1 if the library couldn't be loaded.
- *
- *  This should be done after initializing the video driver, but before
- *  creating any OpenGL windows.  If no OpenGL library is loaded, the default
- *  library will be loaded upon creation of the first OpenGL window.
- *
- *  \note If you do this, you need to retrieve all of the GL functions used in
- *        your program from the dynamic library using SDL_GL_GetProcAddress().
- *
- *  \sa SDL_GL_GetProcAddress()
- *  \sa SDL_GL_UnloadLibrary()
- */
-extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
-
-/**
- *  \brief Get the address of an OpenGL function.
- */
-extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc);
-
-/**
- *  \brief Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
- *
- *  \sa SDL_GL_LoadLibrary()
- */
-extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);
-
-/**
- *  \brief Return true if an OpenGL extension is supported for the current
- *         context.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char
-                                                           *extension);
-
-/**
- *  \brief Reset all previously set OpenGL context attributes to their default values
- */
-extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);
-
-/**
- *  \brief Set an OpenGL window attribute before window creation.
- *
- *  \return 0 on success, or -1 if the attribute could not be set.
- */
-extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);
-
-/**
- *  \brief Get the actual value for an attribute from the current context.
- *
- *  \return 0 on success, or -1 if the attribute could not be retrieved.
- *          The integer at \c value will be modified in either case.
- */
-extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);
-
-/**
- *  \brief Create an OpenGL context for use with an OpenGL window, and make it
- *         current.
- *
- *  \sa SDL_GL_DeleteContext()
- */
-extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *
-                                                           window);
-
-/**
- *  \brief Set up an OpenGL context for rendering into an OpenGL window.
- *
- *  \note The context must have been created with a compatible window.
- */
-extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window,
-                                               SDL_GLContext context);
-
-/**
- *  \brief Get the currently active OpenGL window.
- */
-extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void);
-
-/**
- *  \brief Get the currently active OpenGL context.
- */
-extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void);
-
-/**
- *  \brief Get the size of a window's underlying drawable in pixels (for use
- *         with glViewport).
- *
- *  \param window   Window from which the drawable size should be queried
- *  \param w        Pointer to variable for storing the width in pixels, may be NULL
- *  \param h        Pointer to variable for storing the height in pixels, may be NULL
- *
- * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
- * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a
- * platform with high-DPI support (Apple calls this "Retina"), and not disabled
- * by the SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
- *
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_CreateWindow()
- */
-extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,
-                                                    int *h);
-
-/**
- *  \brief Set the swap interval for the current OpenGL context.
- *
- *  \param interval 0 for immediate updates, 1 for updates synchronized with the
- *                  vertical retrace. If the system supports it, you may
- *                  specify -1 to allow late swaps to happen immediately
- *                  instead of waiting for the next retrace.
- *
- *  \return 0 on success, or -1 if setting the swap interval is not supported.
- *
- *  \sa SDL_GL_GetSwapInterval()
- */
-extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval);
-
-/**
- *  \brief Get the swap interval for the current OpenGL context.
- *
- *  \return 0 if there is no vertical retrace synchronization, 1 if the buffer
- *          swap is synchronized with the vertical retrace, and -1 if late
- *          swaps happen immediately instead of waiting for the next retrace.
- *          If the system can't determine the swap interval, or there isn't a
- *          valid current context, this will return 0 as a safe default.
- *
- *  \sa SDL_GL_SetSwapInterval()
- */
-extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
-
-/**
- * \brief Swap the OpenGL buffers for a window, if double-buffering is
- *        supported.
- */
-extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);
-
-/**
- *  \brief Delete an OpenGL context.
- *
- *  \sa SDL_GL_CreateContext()
- */
-extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context);
-
-/* @} *//* OpenGL support functions */
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_video_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_vulkan.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_vulkan.h
deleted file mode 100644 (file)
index d69a436..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 2017, Mark Callow
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file SDL_vulkan.h
- *
- *  Header file for functions to creating Vulkan surfaces on SDL windows.
- */
-
-#ifndef SDL_vulkan_h_
-#define SDL_vulkan_h_
-
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Avoid including vulkan.h, don't define VkInstance if it's already included */
-#ifdef VULKAN_H_
-#define NO_SDL_VULKAN_TYPEDEFS
-#endif
-#ifndef NO_SDL_VULKAN_TYPEDEFS
-#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
-
-#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
-#else
-#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
-#endif
-
-VK_DEFINE_HANDLE(VkInstance)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
-
-#endif /* !NO_SDL_VULKAN_TYPEDEFS */
-
-typedef VkInstance SDL_vulkanInstance;
-typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */
-
-/**
- *  \name Vulkan support functions
- *
- *  \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API
- *        is compatable with Tizen's implementation of Vulkan in SDL.
- */
-/* @{ */
-
-/**
- *  \brief Dynamically load a Vulkan loader library.
- *
- *  \param [in] path The platform dependent Vulkan loader library name, or
- *              \c NULL.
- *
- *  \return \c 0 on success, or \c -1 if the library couldn't be loaded.
- *
- *  If \a path is NULL SDL will use the value of the environment variable
- *  \c SDL_VULKAN_LIBRARY, if set, otherwise it loads the default Vulkan
- *  loader library.
- *
- *  This should be called after initializing the video driver, but before
- *  creating any Vulkan windows. If no Vulkan loader library is loaded, the
- *  default library will be loaded upon creation of the first Vulkan window.
- *
- *  \note It is fairly common for Vulkan applications to link with \a libvulkan
- *        instead of explicitly loading it at run time. This will work with
- *        SDL provided the application links to a dynamic library and both it
- *        and SDL use the same search path.
- *
- *  \note If you specify a non-NULL \c path, an application should retrieve all
- *        of the Vulkan functions it uses from the dynamic library using
- *        \c SDL_Vulkan_GetVkGetInstanceProcAddr() unless you can guarantee
- *        \c path points to the same vulkan loader library the application
- *        linked to.
- *
- *  \note On Apple devices, if \a path is NULL, SDL will attempt to find
- *        the vkGetInstanceProcAddr address within all the mach-o images of
- *        the current process. This is because it is fairly common for Vulkan
- *        applications to link with libvulkan (and historically MoltenVK was
- *        provided as a static library). If it is not found then, on macOS, SDL
- *        will attempt to load \c vulkan.framework/vulkan, \c libvulkan.1.dylib,
- *        followed by \c libvulkan.dylib, in that order.
- *        On iOS SDL will attempt to load \c libvulkan.dylib only. Applications
- *        using a dynamic framework or .dylib must ensure it is included in its
- *        application bundle.
- *
- *  \note On non-Apple devices, application linking with a static libvulkan is
- *        not supported. Either do not link to the Vulkan loader or link to a
- *        dynamic library version.
- *
- *  \note This function will fail if there are no working Vulkan drivers
- *        installed.
- *
- *  \sa SDL_Vulkan_GetVkGetInstanceProcAddr()
- *  \sa SDL_Vulkan_UnloadLibrary()
- */
-extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path);
-
-/**
- *  \brief Get the address of the \c vkGetInstanceProcAddr function.
- *
- *  \note This should be called after either calling SDL_Vulkan_LoadLibrary
- *        or creating an SDL_Window with the SDL_WINDOW_VULKAN flag.
- */
-extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void);
-
-/**
- *  \brief Unload the Vulkan loader library previously loaded by
- *         \c SDL_Vulkan_LoadLibrary().
- *
- *  \sa SDL_Vulkan_LoadLibrary()
- */
-extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
-
-/**
- *  \brief Get the names of the Vulkan instance extensions needed to create
- *         a surface with \c SDL_Vulkan_CreateSurface().
- *
- *  \param [in]     \c NULL or window Window for which the required Vulkan instance
- *                  extensions should be retrieved
- *  \param [in,out] pCount pointer to an \c unsigned related to the number of
- *                  required Vulkan instance extensions
- *  \param [out]    pNames \c NULL or a pointer to an array to be filled with the
- *                  required Vulkan instance extensions
- *
- *  \return \c SDL_TRUE on success, \c SDL_FALSE on error.
- *
- *  If \a pNames is \c NULL, then the number of required Vulkan instance
- *  extensions is returned in pCount. Otherwise, \a pCount must point to a
- *  variable set to the number of elements in the \a pNames array, and on
- *  return the variable is overwritten with the number of names actually
- *  written to \a pNames. If \a pCount is less than the number of required
- *  extensions, at most \a pCount structures will be written. If \a pCount
- *  is smaller than the number of required extensions, \c SDL_FALSE will be
- *  returned instead of \c SDL_TRUE, to indicate that not all the required
- *  extensions were returned.
- *
- *  \note If \c window is not NULL, it will be checked against its creation
- *        flags to ensure that the Vulkan flag is present. This parameter
- *        will be removed in a future major release.
- *
- *  \note The returned list of extensions will contain \c VK_KHR_surface
- *        and zero or more platform specific extensions
- *
- *  \note The extension names queried here must be enabled when calling
- *        VkCreateInstance, otherwise surface creation will fail.
- *
- *  \note \c window should have been created with the \c SDL_WINDOW_VULKAN flag
- *        or be \c NULL
- *
- *  \code
- *  unsigned int count;
- *  // get count of required extensions
- *  if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, NULL))
- *      handle_error();
- *
- *  static const char *const additionalExtensions[] =
- *  {
- *      VK_EXT_DEBUG_REPORT_EXTENSION_NAME, // example additional extension
- *  };
- *  size_t additionalExtensionsCount = sizeof(additionalExtensions) / sizeof(additionalExtensions[0]);
- *  size_t extensionCount = count + additionalExtensionsCount;
- *  const char **names = malloc(sizeof(const char *) * extensionCount);
- *  if(!names)
- *      handle_error();
- *
- *  // get names of required extensions
- *  if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, names))
- *      handle_error();
- *
- *  // copy additional extensions after required extensions
- *  for(size_t i = 0; i < additionalExtensionsCount; i++)
- *      names[i + count] = additionalExtensions[i];
- *
- *  VkInstanceCreateInfo instanceCreateInfo = {};
- *  instanceCreateInfo.enabledExtensionCount = extensionCount;
- *  instanceCreateInfo.ppEnabledExtensionNames = names;
- *  // fill in rest of instanceCreateInfo
- *
- *  VkInstance instance;
- *  // create the Vulkan instance
- *  VkResult result = vkCreateInstance(&instanceCreateInfo, NULL, &instance);
- *  free(names);
- *  \endcode
- *
- *  \sa SDL_Vulkan_CreateSurface()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(
-                                                                                                               SDL_Window *window,
-                                                                                                               unsigned int *pCount,
-                                                                                                               const char **pNames);
-
-/**
- *  \brief Create a Vulkan rendering surface for a window.
- *
- *  \param [in]  window   SDL_Window to which to attach the rendering surface.
- *  \param [in]  instance handle to the Vulkan instance to use.
- *  \param [out] surface  pointer to a VkSurfaceKHR handle to receive the
- *                        handle of the newly created surface.
- *
- *  \return \c SDL_TRUE on success, \c SDL_FALSE on error.
- *
- *  \code
- *  VkInstance instance;
- *  SDL_Window *window;
- *
- *  // create instance and window
- *
- *  // create the Vulkan surface
- *  VkSurfaceKHR surface;
- *  if(!SDL_Vulkan_CreateSurface(window, instance, &surface))
- *      handle_error();
- *  \endcode
- *
- *  \note \a window should have been created with the \c SDL_WINDOW_VULKAN flag.
- *
- *  \note \a instance should have been created with the extensions returned
- *        by \c SDL_Vulkan_CreateSurface() enabled.
- *
- *  \sa SDL_Vulkan_GetInstanceExtensions()
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(
-                                                                                               SDL_Window *window,
-                                                                                               VkInstance instance,
-                                                                                               VkSurfaceKHR* surface);
-
-/**
- *  \brief Get the size of a window's underlying drawable in pixels (for use
- *         with setting viewport, scissor & etc).
- *
- *  \param window   SDL_Window from which the drawable size should be queried
- *  \param w        Pointer to variable for storing the width in pixels,
- *                  may be NULL
- *  \param h        Pointer to variable for storing the height in pixels,
- *                  may be NULL
- *
- * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
- * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a
- * platform with high-DPI support (Apple calls this "Retina"), and not disabled
- * by the \c SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
- *
- *  \note On macOS high-DPI support must be enabled for an application by
- *        setting NSHighResolutionCapable to true in its Info.plist.
- *
- *  \sa SDL_GetWindowSize()
- *  \sa SDL_CreateWindow()
- */
-extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window,
-                                                        int *w, int *h);
-
-/* @} *//* Vulkan support functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_vulkan_h_ */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/begin_code.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/begin_code.h
deleted file mode 100644 (file)
index 22c997c..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file begin_code.h
- *
- *  This file sets things up for C dynamic library function definitions,
- *  static inlined functions, and structures aligned at 4-byte alignment.
- *  If you don't like ugly C preprocessor code, don't look at this file. :)
- */
-
-/* This shouldn't be nested -- included it around code only. */
-#ifdef _begin_code_h
-#error Nested inclusion of begin_code.h
-#endif
-#define _begin_code_h
-
-#ifndef SDL_DEPRECATED
-#  if (__GNUC__ >= 4)  /* technically, this arrived in gcc 3.1, but oh well. */
-#    define SDL_DEPRECATED __attribute__((deprecated))
-#  else
-#    define SDL_DEPRECATED
-#  endif
-#endif
-
-#ifndef SDL_UNUSED
-#  ifdef __GNUC__
-#    define SDL_UNUSED __attribute__((unused))
-#  else
-#    define SDL_UNUSED
-#  endif
-#endif
-
-/* Some compilers use a special export keyword */
-#ifndef DECLSPEC
-# if defined(__WIN32__) || defined(__WINRT__)
-#  ifdef __BORLANDC__
-#   ifdef BUILD_SDL
-#    define DECLSPEC
-#   else
-#    define DECLSPEC    __declspec(dllimport)
-#   endif
-#  else
-#   define DECLSPEC __declspec(dllexport)
-#  endif
-# elif defined(__OS2__)
-#   ifdef BUILD_SDL
-#    define DECLSPEC    __declspec(dllexport)
-#   else
-#    define DECLSPEC
-#   endif
-# else
-#  if defined(__GNUC__) && __GNUC__ >= 4
-#   define DECLSPEC __attribute__ ((visibility("default")))
-#  else
-#   define DECLSPEC
-#  endif
-# endif
-#endif
-
-/* By default SDL uses the C calling convention */
-#ifndef SDLCALL
-#if (defined(__WIN32__) || defined(__WINRT__)) && !defined(__GNUC__)
-#define SDLCALL __cdecl
-#elif defined(__OS2__) || defined(__EMX__)
-#define SDLCALL _System
-# if defined (__GNUC__) && !defined(_System)
-#  define _System /* for old EMX/GCC compat.  */
-# endif
-#else
-#define SDLCALL
-#endif
-#endif /* SDLCALL */
-
-/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
-#ifdef __SYMBIAN32__
-#undef DECLSPEC
-#define DECLSPEC
-#endif /* __SYMBIAN32__ */
-
-/* Force structure packing at 4 byte alignment.
-   This is necessary if the header is included in code which has structure
-   packing set to an alternate value, say for loading structures from disk.
-   The packing is reset to the previous value in close_code.h
- */
-#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
-#ifdef _MSC_VER
-#pragma warning(disable: 4103)
-#endif
-#ifdef __clang__
-#pragma clang diagnostic ignored "-Wpragma-pack"
-#endif
-#ifdef __BORLANDC__
-#pragma nopackwarning
-#endif
-#ifdef _M_X64
-/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */
-#pragma pack(push,8)
-#else
-#pragma pack(push,4)
-#endif
-#endif /* Compiler needs structure packing set */
-
-#ifndef SDL_INLINE
-#if defined(__GNUC__)
-#define SDL_INLINE __inline__
-#elif defined(_MSC_VER) || defined(__BORLANDC__) || \
-      defined(__DMC__) || defined(__SC__) || \
-      defined(__WATCOMC__) || defined(__LCC__) || \
-      defined(__DECC) || defined(__CC_ARM)
-#define SDL_INLINE __inline
-#ifndef __inline__
-#define __inline__ __inline
-#endif
-#else
-#define SDL_INLINE inline
-#ifndef __inline__
-#define __inline__ inline
-#endif
-#endif
-#endif /* SDL_INLINE not defined */
-
-#ifndef SDL_FORCE_INLINE
-#if defined(_MSC_VER)
-#define SDL_FORCE_INLINE __forceinline
-#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) )
-#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__
-#else
-#define SDL_FORCE_INLINE static SDL_INLINE
-#endif
-#endif /* SDL_FORCE_INLINE not defined */
-
-#ifndef SDL_NORETURN
-#if defined(__GNUC__)
-#define SDL_NORETURN __attribute__((noreturn))
-#elif defined(_MSC_VER)
-#define SDL_NORETURN __declspec(noreturn)
-#else
-#define SDL_NORETURN
-#endif
-#endif /* SDL_NORETURN not defined */
-
-/* Apparently this is needed by several Windows compilers */
-#if !defined(__MACH__)
-#ifndef NULL
-#ifdef __cplusplus
-#define NULL 0
-#else
-#define NULL ((void *)0)
-#endif
-#endif /* NULL */
-#endif /* ! Mac OS X - breaks precompiled headers */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/close_code.h b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/close_code.h
deleted file mode 100644 (file)
index 8e4cac3..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- *  \file close_code.h
- *
- *  This file reverses the effects of begin_code.h and should be included
- *  after you finish any function and structure declarations in your headers
- */
-
-#ifndef _begin_code_h
-#error close_code.h included without matching begin_code.h
-#endif
-#undef _begin_code_h
-
-/* Reset structure packing at previous byte alignment */
-#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
-#ifdef __BORLANDC__
-#pragma nopackwarning
-#endif
-#pragma pack(pop)
-#endif /* Compiler needs structure packing set */
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/Info.plist b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/Info.plist
deleted file mode 100644 (file)
index df7ebf2..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>BuildMachineOSBuild</key>
-       <string>18D109</string>
-       <key>CFBundleDevelopmentRegion</key>
-       <string>English</string>
-       <key>CFBundleExecutable</key>
-       <string>SDL2</string>
-       <key>CFBundleGetInfoString</key>
-       <string>http://www.libsdl.org</string>
-       <key>CFBundleIdentifier</key>
-       <string>org.libsdl.SDL2</string>
-       <key>CFBundleInfoDictionaryVersion</key>
-       <string>6.0</string>
-       <key>CFBundleName</key>
-       <string>Simple DirectMedia Layer</string>
-       <key>CFBundlePackageType</key>
-       <string>FMWK</string>
-       <key>CFBundleShortVersionString</key>
-       <string>2.0.10</string>
-       <key>CFBundleSignature</key>
-       <string>SDLX</string>
-       <key>CFBundleSupportedPlatforms</key>
-       <array>
-               <string>MacOSX</string>
-       </array>
-       <key>CFBundleVersion</key>
-       <string>2.0.10</string>
-       <key>DTCompiler</key>
-       <string>com.apple.compilers.llvm.clang.1_0</string>
-       <key>DTPlatformBuild</key>
-       <string>10E1001</string>
-       <key>DTPlatformVersion</key>
-       <string>GM</string>
-       <key>DTSDKBuild</key>
-       <string>18E219</string>
-       <key>DTSDKName</key>
-       <string>macosx10.14</string>
-       <key>DTXcode</key>
-       <string>1020</string>
-       <key>DTXcodeBuild</key>
-       <string>10E1001</string>
-</dict>
-</plist>
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/SDL2 b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/SDL2
deleted file mode 100755 (executable)
index 934628c..0000000
Binary files a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/A/SDL2 and /dev/null differ
diff --git a/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/Current b/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL2.framework/Versions/Current
deleted file mode 120000 (symlink)
index 8c7e5a6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-A
\ No newline at end of file
index 4657eb90a61ccd1e0eb37ea9ea489064b7ded38a..a407e1eb9ec277f556f3bd9938e9ae58af3d9a2e 100644 (file)
        <string>????</string>
        <key>CFBundleVersion</key>
        <string>1.0</string>
+       <key>LSApplicationCategoryType</key>
+       <string>public.app-category.action-games</string>
        <key>LSMinimumSystemVersion</key>
        <string>10.4.0</string>
        <key>LSMinimumSystemVersionByArchitecture</key>
        <dict>
                <key>x86_64</key>
-               <string>10.6.0</string>
+               <string>10.7.0</string>
        </dict>
 </dict>
 </plist>
diff --git a/misc/buildfiles/win32/libcurl-4.dll b/misc/buildfiles/win32/libcurl-4.dll
deleted file mode 100644 (file)
index 1e41b76..0000000
Binary files a/misc/buildfiles/win32/libcurl-4.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/libd0_blind_id-0.dll b/misc/buildfiles/win32/libd0_blind_id-0.dll
deleted file mode 100755 (executable)
index 6eebc42..0000000
Binary files a/misc/buildfiles/win32/libd0_blind_id-0.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/libd0_rijndael-0.dll b/misc/buildfiles/win32/libd0_rijndael-0.dll
deleted file mode 100755 (executable)
index d6934a6..0000000
Binary files a/misc/buildfiles/win32/libd0_rijndael-0.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/libfreetype-6.dll b/misc/buildfiles/win32/libfreetype-6.dll
deleted file mode 100755 (executable)
index b4f9481..0000000
Binary files a/misc/buildfiles/win32/libfreetype-6.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/libgmp-10.dll b/misc/buildfiles/win32/libgmp-10.dll
deleted file mode 100644 (file)
index 33b5eb8..0000000
Binary files a/misc/buildfiles/win32/libgmp-10.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/libjpeg.dll b/misc/buildfiles/win32/libjpeg.dll
deleted file mode 100644 (file)
index 99c0215..0000000
Binary files a/misc/buildfiles/win32/libjpeg.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/libode-3.dll b/misc/buildfiles/win32/libode-3.dll
deleted file mode 100755 (executable)
index b8a7bba..0000000
Binary files a/misc/buildfiles/win32/libode-3.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/libpng15-15.dll b/misc/buildfiles/win32/libpng15-15.dll
deleted file mode 100755 (executable)
index 956af87..0000000
Binary files a/misc/buildfiles/win32/libpng15-15.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/libtheora.dll b/misc/buildfiles/win32/libtheora.dll
deleted file mode 100644 (file)
index ef66bd7..0000000
Binary files a/misc/buildfiles/win32/libtheora.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/ogg.dll b/misc/buildfiles/win32/ogg.dll
deleted file mode 100644 (file)
index 76bc621..0000000
Binary files a/misc/buildfiles/win32/ogg.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/vorbis.dll b/misc/buildfiles/win32/vorbis.dll
deleted file mode 100644 (file)
index d19353b..0000000
Binary files a/misc/buildfiles/win32/vorbis.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/vorbisenc.dll b/misc/buildfiles/win32/vorbisenc.dll
deleted file mode 100644 (file)
index feb0808..0000000
Binary files a/misc/buildfiles/win32/vorbisenc.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/vorbisfile.dll b/misc/buildfiles/win32/vorbisfile.dll
deleted file mode 100644 (file)
index 2892040..0000000
Binary files a/misc/buildfiles/win32/vorbisfile.dll and /dev/null differ
diff --git a/misc/buildfiles/win32/zlib1.dll b/misc/buildfiles/win32/zlib1.dll
deleted file mode 100644 (file)
index 2b0072b..0000000
Binary files a/misc/buildfiles/win32/zlib1.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libcurl-4.dll b/misc/buildfiles/win64/libcurl-4.dll
deleted file mode 100644 (file)
index 4474020..0000000
Binary files a/misc/buildfiles/win64/libcurl-4.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libd0_blind_id-0.dll b/misc/buildfiles/win64/libd0_blind_id-0.dll
deleted file mode 100755 (executable)
index 94fdb72..0000000
Binary files a/misc/buildfiles/win64/libd0_blind_id-0.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libd0_rijndael-0.dll b/misc/buildfiles/win64/libd0_rijndael-0.dll
deleted file mode 100755 (executable)
index e72d91e..0000000
Binary files a/misc/buildfiles/win64/libd0_rijndael-0.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libfreetype-6.dll b/misc/buildfiles/win64/libfreetype-6.dll
deleted file mode 100755 (executable)
index 00e4a26..0000000
Binary files a/misc/buildfiles/win64/libfreetype-6.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libgcc_s_sjlj-1.dll b/misc/buildfiles/win64/libgcc_s_sjlj-1.dll
deleted file mode 100755 (executable)
index c188bb1..0000000
Binary files a/misc/buildfiles/win64/libgcc_s_sjlj-1.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libgmp-10.dll b/misc/buildfiles/win64/libgmp-10.dll
deleted file mode 100644 (file)
index c8679dd..0000000
Binary files a/misc/buildfiles/win64/libgmp-10.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libjpeg.dll b/misc/buildfiles/win64/libjpeg.dll
deleted file mode 100644 (file)
index a7440c4..0000000
Binary files a/misc/buildfiles/win64/libjpeg.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libode-3.dll b/misc/buildfiles/win64/libode-3.dll
deleted file mode 100755 (executable)
index b1922c8..0000000
Binary files a/misc/buildfiles/win64/libode-3.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libogg.dll b/misc/buildfiles/win64/libogg.dll
deleted file mode 100644 (file)
index fcf7152..0000000
Binary files a/misc/buildfiles/win64/libogg.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libpng15-15.dll b/misc/buildfiles/win64/libpng15-15.dll
deleted file mode 100755 (executable)
index 9f869db..0000000
Binary files a/misc/buildfiles/win64/libpng15-15.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libstdc++-6.dll b/misc/buildfiles/win64/libstdc++-6.dll
deleted file mode 100755 (executable)
index 7987513..0000000
Binary files a/misc/buildfiles/win64/libstdc++-6.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libtheora.dll b/misc/buildfiles/win64/libtheora.dll
deleted file mode 100644 (file)
index fe78cd5..0000000
Binary files a/misc/buildfiles/win64/libtheora.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libvorbis.dll b/misc/buildfiles/win64/libvorbis.dll
deleted file mode 100644 (file)
index e0a34d3..0000000
Binary files a/misc/buildfiles/win64/libvorbis.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/libvorbisfile.dll b/misc/buildfiles/win64/libvorbisfile.dll
deleted file mode 100644 (file)
index cb8aca5..0000000
Binary files a/misc/buildfiles/win64/libvorbisfile.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/vorbisenc.dll b/misc/buildfiles/win64/vorbisenc.dll
deleted file mode 100644 (file)
index 513a5f5..0000000
Binary files a/misc/buildfiles/win64/vorbisenc.dll and /dev/null differ
diff --git a/misc/buildfiles/win64/zlib1.dll b/misc/buildfiles/win64/zlib1.dll
deleted file mode 100644 (file)
index 4194c0d..0000000
Binary files a/misc/buildfiles/win64/zlib1.dll and /dev/null differ
diff --git a/misc/buildsrc/dlls.sh b/misc/buildsrc/dlls.sh
new file mode 100755 (executable)
index 0000000..1a46c41
--- /dev/null
@@ -0,0 +1,387 @@
+#!/bin/bash
+#
+# Xonotic DLL automatic cross-compile script
+# by z411
+
+d0=$(pwd)
+
+require () {
+       if ! dpkg -s "$1" >/dev/null 2>&1 ; then
+               echo "$1 package is required. Please install it."
+               exit -1
+       fi
+}
+
+prepare () {
+       case $target_arch in
+               win32)    ARCH="i686" ;;
+               win64)    ARCH="x86_64" ;;
+               *)        echo "Invalid arch (win32 or win64)." && exit -1 ;;
+       esac
+
+       # Set directories
+       src_dir="$buildpath/src"
+       work_dir="$buildpath/work/$target_arch"
+       pkg_dir="$buildpath/pkg/$target_arch"
+       out_dir="$buildpath/out/$target_arch"
+
+       # Set arch vars
+       CHOST="$ARCH-w64-mingw32"
+       toolchain_file="$d0/toolchain-$CHOST.cmake"
+
+       # Fix for Debian package missing the Windows resource file
+       zlib1rc_file="$d0/zlib1.rc"
+
+       export LDFLAGS="-L$pkg_dir/lib"
+       export CPPFLAGS="-I$pkg_dir/include"
+
+       # Check dependencies
+       require libtool
+       require mingw-w64
+       require automake
+       require cmake
+       require nasm
+
+       set -ex
+
+       mkdir -p "$src_dir"
+       mkdir -p "$work_dir"
+       mkdir -p "$pkg_dir"
+}
+
+get_this_src () {
+       dir=$(find . -maxdepth 1 -type d -print | grep -m1 "^\./$1") || return 1
+       this_src="$src_dir/$dir"
+       this_ver="${dir##*-}"
+}
+
+fetch_source () {
+       cd "$src_dir"
+
+       if get_this_src "$1"; then
+               echo "Source for $1 already exists."
+               return 1
+       else
+               echo "Getting source for $1..."
+               apt-get source -t=stable "$1"
+               get_this_src "$1"
+               return 0
+       fi
+}
+
+verlte () {
+       printf '%s\n%s' "$1" "$2" | sort -C -V
+}
+
+verlt () {
+       ! verlte "$2" "$1"
+}
+
+mkcd () {
+       mkdir -p "$1"
+       cd "$1"
+}
+
+build_zlib () {
+       if fetch_source zlib ; then
+               echo "Fixing zlib prefix..."
+               sed -i '/zlib PROPERTIES SUFFIX/i set_target_properties(zlib PROPERTIES PREFIX "")' "$this_src/CMakeLists.txt"
+
+               # Debian source package is missing the win32 resource file for some reason,
+               # so we add it ourselves.
+               echo "Fixing zlib1.rc..."
+               mkdir -p "$this_src/win32"
+               cp "$zlib1rc_file" "$this_src/win32"
+       fi
+
+       mkcd "$work_dir/zlib"
+       cmake -DCMAKE_TOOLCHAIN_FILE="$toolchain_file"\
+             -DBUILD_SHARED_LIBS=ON \
+             -DCMAKE_INSTALL_PREFIX="$pkg_dir" \
+             -G"Unix Makefiles" "$this_src"
+       make
+       make install
+}
+
+build_gmp () {
+       fetch_source gmp || true
+
+       mkcd "$work_dir/gmp"
+       autoreconf -i "$this_src"
+       "$this_src/configure" --prefix="$pkg_dir" \
+                             --host="$CHOST" \
+                             --with-pic \
+                             --enable-fat \
+                             --disable-static \
+                             --enable-shared
+       make
+       make install
+}
+
+build_libd0 () {
+       if [[ -d "$src_dir/d0_blind_id" ]] ; then
+               echo "Sources already exist."
+       else
+               echo "Getting git sources for libd0..."
+               cd "$src_dir"
+               git clone https://gitlab.com/xonotic/d0_blind_id.git
+               cd d0_blind_id
+               ./autogen.sh
+               sed -i '/libd0_blind_id_la_LDFLAGS/ s/$/ -no-undefined/' Makefile.am
+               sed -i '/libd0_rijndael_la_LDFLAGS/ s/$/ -no-undefined/' Makefile.am
+       fi
+
+       mkcd "$work_dir/libd0"
+       "$src_dir/d0_blind_id/configure" --with-pic \
+                                        --prefix="$pkg_dir" \
+                                        --host="$CHOST"
+       make
+       make install
+}
+
+build_libogg() {
+       if fetch_source libogg ; then
+               echo "Fixing win32 def files..."
+               sed -i 's/^LIBRARY ogg$/LIBRARY libogg/' "$this_src/win32/ogg.def"
+       fi
+
+       mkcd "$work_dir/libogg"
+       cmake -DCMAKE_TOOLCHAIN_FILE="$toolchain_file" \
+             -DBUILD_SHARED_LIBS=ON \
+             -DCMAKE_INSTALL_PREFIX="$pkg_dir" \
+             -G"Unix Makefiles" "$this_src"
+       make
+       make install
+}
+
+build_libvorbis () {
+       if fetch_source libvorbis ; then
+               echo "Fixing win32 def files..."
+               sed -i 's/^LIBRARY$/LIBRARY libvorbis/' "$this_src/win32/vorbis.def"
+               sed -i 's/^LIBRARY$/LIBRARY libvorbisenc/' "$this_src/win32/vorbisenc.def"
+               sed -i 's/^LIBRARY$/LIBRARY libvorbisfile/' "$this_src/win32/vorbisfile.def"
+       fi
+
+       mkcd "$work_dir/libvorbis"
+       cmake -DCMAKE_TOOLCHAIN_FILE="$toolchain_file" \
+             -DBUILD_SHARED_LIBS=ON \
+             -DOGG_INCLUDE_DIR="$pkg_dir/include" \
+             -DOGG_LIBRARY="$pkg_dir/lib/libogg.dll.a" \
+             -DCMAKE_INSTALL_PREFIX="$pkg_dir" \
+             -G"Unix Makefiles" "$this_src"
+       make
+       make install
+}
+
+build_libtheora () {
+       if fetch_source libtheora ; then
+               echo "Fixing mingw32 defs..."
+               sed -i '1iLIBRARY libtheoradec' "$this_src/win32/xmingw32/libtheoradec-all.def"
+               sed -i '1iLIBRARY libtheoraenc' "$this_src/win32/xmingw32/libtheoraenc-all.def"
+               sed -i '/TH_VP31_QUANT_INFO/d' "$this_src/win32/xmingw32/libtheoraenc-all.def"
+               sed -i '/TH_VP31_HUFF_CODES/d' "$this_src/win32/xmingw32/libtheoraenc-all.def"
+       fi
+
+       mkcd "$work_dir/libtheora"
+       "$this_src/autogen.sh"
+       "$this_src/configure" --host="$CHOST" \
+                             --prefix="$pkg_dir" \
+                             --with-ogg="$pkg_dir" \
+                             --with-vorbis="$pkg_dir" \
+                             --enable-shared \
+                             --disable-examples \
+                             --disable-sdltest \
+                             --disable-vorbistest \
+                             --disable-oggtest
+       make
+       make install
+}
+
+build_freetype () {
+       fetch_source freetype || true
+
+       mkcd "$work_dir/freetype"
+       cmake -DCMAKE_TOOLCHAIN_FILE="$toolchain_file" \
+             -DBUILD_SHARED_LIBS=ON \
+             -DCMAKE_BUILD_TYPE=Release \
+             -DCMAKE_INSTALL_PREFIX="$pkg_dir" \
+             -G"Unix Makefiles" "$this_src"
+       make
+       make install
+}
+
+build_libpng16 () {
+       fetch_source "libpng1.6" || true
+
+       mkcd "$work_dir/libpng1.6"
+       cmake -DCMAKE_TOOLCHAIN_FILE="$toolchain_file" \
+             -DPNG_STATIC=OFF \
+             -DPNG_TESTS=OFF \
+             -DZLIB_INCLUDE_DIR="$pkg_dir/include" \
+             -DZLIB_LIBRARY="$pkg_dir/lib/libzlib.dll.a" \
+             -DCMAKE_INSTALL_PREFIX="$pkg_dir" \
+             -G"Unix Makefiles" "$this_src"
+       make
+       make install
+}
+
+build_libjpeg () {
+       fetch_source libjpeg-turbo || true
+
+       mkcd "$work_dir/libjpeg"
+       cmake -DCMAKE_TOOLCHAIN_FILE="$toolchain_file" \
+             -DCMAKE_SYSTEM_PROCESSOR="$ARCH" \
+             -DCMAKE_INSTALL_PREFIX="$pkg_dir" \
+             -DENABLE_SHARED=ON \
+             -DENABLE_STATIC=OFF \
+             -DWITH_TURBOJPEG=OFF \
+             -G"Unix Makefiles" "$this_src"
+       make
+       make install
+}
+
+build_curl () {
+       fetch_source curl || true
+
+       # curl versions older than 7.81.0 used CMAKE instead of CURL for
+       # private USE identifiers
+       verlt $this_ver 7.81.0 && PARAM="CMAKE" || PARAM="CURL"
+
+       mkcd "$work_dir/curl"
+       cmake -DCMAKE_TOOLCHAIN_FILE="$toolchain_file" \
+             -DCMAKE_INSTALL_PREFIX="$pkg_dir" \
+             -DZLIB_INCLUDE_DIR="$pkg_dir/include" \
+             -DZLIB_LIBRARY="$pkg_dir/lib/libzlib.dll.a" \
+             -D${PARAM}_USE_SCHANNEL=ON \
+             -DBUILD_SHARED_LIBS=ON \
+             -DBUILD_CURL_EXE=OFF \
+             -DHTTP_ONLY=ON \
+             -G"Unix Makefiles" "$this_src"
+       make
+       make install
+}
+
+build_libsdl2 ()
+{
+       fetch_source libsdl2 || true
+
+       # this subdir will be made available to DP's linker
+       mkdir -p "$pkg_dir/sdl"
+
+       mkcd "$work_dir/libsdl2"
+       cmake -DCMAKE_TOOLCHAIN_FILE="$toolchain_file" \
+             -DCMAKE_SYSTEM_PROCESSOR="$ARCH" \
+             -DCMAKE_INSTALL_PREFIX="$pkg_dir/sdl" \
+             -G"Unix Makefiles" "$this_src"
+       make
+       make install
+}
+
+build_all () {
+       build_zlib
+       build_gmp
+       build_libd0
+       build_libogg
+       build_libvorbis
+       build_libtheora
+       build_freetype
+       build_libpng16
+       build_libjpeg
+       build_curl
+       build_libsdl2
+}
+
+install () {
+       mkdir -p "$out_dir"
+
+       cp -v "$pkg_dir/bin/libgmp-10.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libd0_blind_id-0.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libd0_rijndael-0.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libogg.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libvorbis.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libvorbisenc.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libvorbisfile.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libtheora-0.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libfreetype.dll" "$out_dir/libfreetype-6.dll"
+       cp -v "$pkg_dir/bin/zlib1.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libpng16.dll" "$out_dir"
+       cp -v "$pkg_dir/bin/libjpeg-62.dll" "$out_dir/libjpeg.dll"
+       cp -v "$pkg_dir/bin/libcurl.dll" "$out_dir/libcurl-4.dll"
+#      cp -v "$pkg_dir/sdl/bin/SDL2.dll" "$out_dir"
+
+       # Required for win32 builds
+       if [ "$ARCH" = "i686" ]; then
+               cp -v /usr/lib/gcc/i686-w64-mingw32/[0-9][0-9]-win32/libgcc_s_dw2-1.dll "$out_dir"
+       fi
+
+       cd "$out_dir"
+       ${CHOST}-strip -s *.dll
+}
+
+clean () {
+       rm -rf "$buildpath/src"
+       rm -rf "$buildpath/work"
+       rm -rf "$buildpath/pkg"
+       rm -rf "$buildpath/out"
+}
+
+list () {
+       echo "Compilable libraries:"
+       echo
+       echo gmp
+       echo libd0
+       echo libogg
+       echo libvorbis
+       echo libtheora
+       echo freetype
+       echo zlib
+       echo libpng16
+       echo libjpeg
+       echo curl
+       echo libsdl2
+}
+
+usage () {
+       echo "Experimental Windows DLL cross-compiling for Xonotic"
+       echo "by z411"
+       echo
+       echo "usage: $0 <step> [build path] [arch]"
+       echo
+       echo "available steps (require arch):"
+       echo "  <library name>: build specified library"
+       echo "  build_all: build all libraries"
+       echo "  install: copy built DLLs into output directory"
+       echo "  all: do all the previous steps in order"
+       echo
+       echo "steps without arch:"
+       echo "  list: list all compilable libraries"
+       echo "  clean: delete all work"
+       echo
+       echo "arch can be:"
+       echo "  win32"
+       echo "  win64"
+}
+
+step=$1
+buildpath=$2
+target_arch=$3
+
+case $step in
+       gmp)           prepare && build_gmp ;;
+       libd0)         prepare && build_libd0 ;;
+       libogg)        prepare && build_libogg ;;
+       libvorbis)     prepare && build_libvorbis ;;
+       libtheora)     prepare && build_libtheora ;;
+       freetype)      prepare && build_freetype ;;
+       zlib)          prepare && build_zlib ;;
+       libpng16)      prepare && build_libpng16 ;;
+       libjpeg)       prepare && build_libjpeg ;;
+       curl)          prepare && build_curl ;;
+       libsdl2)       prepare && build_libsdl2 ;;
+       build_all)     prepare && build_all ;;
+       install)       prepare && install ;;
+       all)           prepare && build_all && install ;;
+       clean)         clean ;;
+       list)          list ;;
+       *)             usage ;;
+esac
diff --git a/misc/buildsrc/toolchain-i686-w64-mingw32.cmake b/misc/buildsrc/toolchain-i686-w64-mingw32.cmake
new file mode 100644 (file)
index 0000000..3507d72
--- /dev/null
@@ -0,0 +1,25 @@
+# Sample toolchain file for building for Windows from an Ubuntu Linux system.
+#
+# Typical usage:
+#    *) install cross compiler: `sudo apt-get install mingw-w64 g++-mingw-w64`
+#    *) cd build
+#    *) cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-Ubuntu-mingw32.cmake ..
+
+set(CMAKE_SYSTEM_NAME Windows)
+set(TOOLCHAIN_PREFIX i686-w64-mingw32)
+
+# cross compilers to use for C and C++
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
+set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
+
+# target environment on the build host system
+#   set 1st to dir with the cross compiler's C/C++ headers/libs
+set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
+
+# modify default behavior of FIND_XXX() commands to
+# search for headers/libs in the target environment and
+# search for programs in the build host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/misc/buildsrc/toolchain-x86_64-w64-mingw32.cmake b/misc/buildsrc/toolchain-x86_64-w64-mingw32.cmake
new file mode 100644 (file)
index 0000000..3dbc9b1
--- /dev/null
@@ -0,0 +1,25 @@
+# Sample toolchain file for building for Windows from an Ubuntu Linux system.
+#
+# Typical usage:
+#    *) install cross compiler: `sudo apt-get install mingw-w64 g++-mingw-w64`
+#    *) cd build
+#    *) cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-Ubuntu-mingw64.cmake ..
+
+set(CMAKE_SYSTEM_NAME Windows)
+set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
+
+# cross compilers to use for C and C++
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
+set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
+
+# target environment on the build host system
+#   set 1st to dir with the cross compiler's C/C++ headers/libs
+set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
+
+# modify default behavior of FIND_XXX() commands to
+# search for headers/libs in the target environment and
+# search for programs in the build host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/misc/buildsrc/zlib1.rc b/misc/buildsrc/zlib1.rc
new file mode 100644 (file)
index 0000000..234e641
--- /dev/null
@@ -0,0 +1,40 @@
+#include <winver.h>
+#include "../zlib.h"
+
+#ifdef GCC_WINDRES
+VS_VERSION_INFO                VERSIONINFO
+#else
+VS_VERSION_INFO                VERSIONINFO     MOVEABLE IMPURE LOADONCALL DISCARDABLE
+#endif
+  FILEVERSION          ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0
+  PRODUCTVERSION       ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0
+  FILEFLAGSMASK                VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+  FILEFLAGS            1
+#else
+  FILEFLAGS            0
+#endif
+  FILEOS               VOS__WINDOWS32
+  FILETYPE             VFT_DLL
+  FILESUBTYPE          0       // not used
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "040904E4"
+    //language ID = U.S. English, char set = Windows, Multilingual
+    BEGIN
+      VALUE "FileDescription", "zlib data compression library\0"
+      VALUE "FileVersion",     ZLIB_VERSION "\0"
+      VALUE "InternalName",    "zlib1.dll\0"
+      VALUE "LegalCopyright",  "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "OriginalFilename",        "zlib1.dll\0"
+      VALUE "ProductName",     "zlib\0"
+      VALUE "ProductVersion",  ZLIB_VERSION "\0"
+      VALUE "Comments",                "For more information visit http://www.zlib.net/\0"
+    END
+  END
+  BLOCK "VarFileInfo"
+  BEGIN
+    VALUE "Translation", 0x0409, 1252
+  END
+END
index 45879d19de91eaa620e6dfcd31fcc27e0694235a..14a821426838549a75c27bdaeac8ea040dad55db 100644 (file)
@@ -1,15 +1,19 @@
 # Current released version.
-V 0.8.2
+V 0.8.6
 
 # Download URL.
-D http://dl.xonotic.org/xonotic-0.8.2.zip
+D https://dl.xonotic.org/xonotic-0.8.6.zip
 
 # When releasing, create this string by:
 # date -u +%Y%m%d%H%M%S -d'now + 3 months'
-C 20170701181425
+C 20230921103619
 
 # Website URL.
-U http://www.xonotic.org/
+U https://xonotic.org
+
+# Terms of Service revision number (integer).
+# Increase by 1 every time tos.txt is updated.
+T 1
 
 # List of startswith tests for banned servers, separated by space.
 # Supports up to 16 banned servers.
@@ -41,6 +45,12 @@ B 37.157.255.36:
 # E http://packurl/pack.pk3 file-in-pack.txt
 #E http://dl.xonotic.org/zzzz-xonotic-0.8hotfix_chatbubble.pk3 scripts/chatbubble_hotfix.shader
 
+# 0.8.2 doesn't have ruleset-xonotic.cfg (or https), 0.8.5 does
+E http://update.xonotic.org/zzzz-menu_hotfix_0.8.2.pk3 ruleset-xonotic.cfg
+
+# 0.8.5 doesn't have weapons.cfg, 0.8.2 does
+E https://update.xonotic.org/zzzz-menu_hotfix_0.8.5.pk3 weapons.cfg
+
 # Recommended servers.
 # R <key or IP here>
 #R 3TgWwpTKPPdrrunW27tMQDg5O/Ch2q4YtH6w1dSVXFg=
index 28f9a79f7e15fceab240dbd2fda0596670d6e017..97da9e13db6c37cd2cdd622ea7291e81520805ad 100644 (file)
@@ -6,15 +6,21 @@
                {
                        my ($inc) = @_;
                        return 0 if ($inc >= 0) && check_dnsbl([qr/.*:.*:.*/], [], ['torexit.dan.me.uk', 'aspews.ext.sorbs.net']);
-                       return 0 if ($inc >= 0) && check_banlist('http://rm.endoftheinternet.org/~xonotic/bans/?action=list&servers=*');
-                       return 0 if check_sql('dbi:mysql:dbname=xonotic_ca', 'xonotic_ca', '************', 'ip', $inc);
+                       return 0 if ($inc >= 0) && check_banlist('http://rm.sudo.rm-f.org/~xonotic/bans/?action=list&servers=*');
+                       #return 0 if check_sql('dbi:mysql:dbname=xonotic-ca', 'xonotic-ca', '************', 'ip', 0.2, 1, 20, 1000, $inc);
+                       return 0 if check_sql('dbi:Pg:dbname=xonotic-ca', '', '', 'ip', 0.2, 1, 20, 1000, $inc);
                        1;
                }
        },
-       15 =>
+       1 =>
        {
-               name => "Xonotic testing",
-               check => sub { 1; }
+               name => "Xonotic Hub",
+               check => sub
+               {
+                       my ($inc) = @_;
+                       return 0 if check_ipfiles('/home/xonotic-build/xonotic-release-build/misc/infrastructure/xhub/ips');
+                       1;
+               }
        }
 );
-$default_ca = 15;
+$default_ca = 0;
index af632f45820c4647ddbd9f81b3bb5cdfa13e5223..852b24bc485aad736b17fabedc21cfb53f6ce8b3 100755 (executable)
Binary files a/misc/infrastructure/keygen/crypto-keygen-standalone and b/misc/infrastructure/keygen/crypto-keygen-standalone differ
index a74fb37a746fd92681c3f34c990eb0bf4cba4800..044611551b9e060e8f1758021effe99213fe7550 100755 (executable)
@@ -2,7 +2,7 @@
 
 BEGIN
 {
-        $ENV{PATH} = "/usr/bin:/bin";
+       $ENV{PATH} = "/usr/bin:/bin";
 }
 
 # if we are suid, set uid := euid
@@ -24,6 +24,14 @@ sub error($)
        exit 0;
 }
 
+sub check_ipfiles($)
+{
+       my ($dir) = @_;
+       my $ip = $ENV{REMOTE_ADDR};
+       return 0 if -f "$dir/$ip";
+       return -1;
+}
+
 sub check_dnsbl($$@)
 {
        my ($goodpatterns, $badpatterns, $list) = @_;
@@ -34,20 +42,28 @@ sub check_dnsbl($$@)
        # check goodpatterns
        for(@$goodpatterns)
        {
-               return 0
-                       if $name =~ /^(??{$_})$/ || $addr =~ /^(??{$_})$/;
+               if($name =~ /^(??{$_})$/ || $addr =~ /^(??{$_})$/)
+               {
+                       return 0;
+               }
        }
        # check badpatterns
        for(@$badpatterns)
        {
-               return -1
-                       if $name =~ /^(??{$_})$/ || $addr =~ /^(??{$_})$/;
+               if($name =~ /^(??{$_})$/ || $addr =~ /^(??{$_})$/)
+               {
+                       warn "$addr/$name blocked by $_";
+                       return -1;
+               }
        }
 
        # is he tor?
        my $h = gethostbyname $addr;
-       return -1
-               if not defined $h;
+       if(not defined $h)
+       {
+               warn "$addr blocked by gethostbyname()";
+               return -1;
+       }
        
        my $blprefix = join '.', reverse unpack 'C4', $h;
        my $i = 0;
@@ -58,63 +74,108 @@ sub check_dnsbl($$@)
                my $h2 = gethostbyname $hn;
                next
                        if not defined $h2;
+               my $h2_text = join '.', reverse unpack 'C4', $h2;
+               warn "$addr blocked by $hn -> $h2_text";
                return -1;
        }
 
        return 0;
 }
 
+# MySQL
 # create table ip ( id INT AUTO_INCREMENT PRIMARY KEY, ip VARCHAR(64), t DATETIME, error BOOLEAN, INDEX(ip), INDEX(t), INDEX(error) );
+# standard SQL
+# CREATE TABLE ip ( id INT PRIMARY KEY generated always as identity, ip VARCHAR(64), t TIMESTAMP, error BOOLEAN );
+# CREATE INDEX ip_index ON ip ( ip, t, error );
 our $__CACHED_DBH__;
 
-sub check_sql($$$$$)
+sub check_ip_record
+{
+       my ($DBH, $tbl, $ip) = @_;
+       # MySQL
+       #my $status = $DBH->selectrow_arrayref("select count(*) from $tbl where ip=? and error=false and t>date_sub(now(), interval 7 day)", undef, $ip)
+       # standard SQL
+       my $status = $DBH->selectrow_arrayref("select count(*) from $tbl where ip=? and error=false and t>(now() - interval '7' day)", undef, $ip)
+               or die "DBI/DBD: $!";
+       return $status->[0];
+}
+sub insert_ip_record
+{
+       my ($DBH, $tbl, $ip) = @_;
+       # MySQL
+       #my $status = $DBH->selectall_arrayref("select error, t>date_sub(now(), interval 7 day) from $tbl where ip=?", undef, $ip)
+       # standard SQL
+       my $status = $DBH->selectall_arrayref("select error, t>(now() - interval '7' day) from $tbl where ip=?", undef, $ip)
+               or die "DBI/DBD: $!";
+       if(@$status)
+       {
+               if($status->[0][0] || !$status->[0][1]) # error, or after interval
+               {
+                       $DBH->do("update $tbl set error=false, t=now() where ip=?", undef, $ip);
+                       return 0;
+               }
+               else # too soon
+               {
+                       return 1;
+               }
+       }
+       else
+       {
+               $DBH->do("insert into $tbl(ip, error, t) values(?, false, now())", undef, $ip);
+               return 0;
+       }
+}
+sub delete_ip_record
+{
+       my ($DBH, $tbl, $ip) = @_;
+       $DBH->do("update $tbl set error=true where ip=?", undef, $ip);
+}
+
+sub check_sql($$$$$$$$$)
 {
-       my ($dsn, $u, $p, $tbl, $inc) = @_;
+       my ($dsn, $u, $p, $tbl, $per32, $per24, $per16, $per8, $inc) = @_;
        my $ip = $ENV{REMOTE_ADDR};
        my $DBH = ($__CACHED_DBH__ ? $__CACHED_DBH__ : ($__CACHED_DBH__ = DBI->connect($dsn, $u, $p, { RaiseError => 1, AutoCommit => 0 })))
                or die "DBI/DBD: $!";
-       $DBH->do("set character set utf8");
-       $DBH->do("set names utf8");
+       eval {
+               # PostgreSQL defaults to utf8 everywhere so we don't need to set it
+               # MySQL defaults to latin1
+               #$DBH->do("set character set utf8");
+               #$DBH->do("set names utf8");
+               #$DBH->do("set time_zone = '+0:00'");
+               # standard SQL
+               $DBH->do("SET TIME ZONE +0");
+       } or do {
+               undef $__CACHED_DBH__;
+               die $@;
+       };
        if($inc < 0)
        {
-               $DBH->do("update $tbl set error=true where ip=?", undef, $ip);
+               delete_ip_record($DBH, $tbl, $ip);
                $DBH->commit();
                $DBH->disconnect();
                return 0;
        }
        elsif($inc == 0)
        {
-               my $status = $DBH->selectrow_arrayref("select count(*) from $tbl where ip=? and error=false and t>date_sub(now(), interval 7 day)", undef, $ip)
-                       or die "DBI/DBD: $!";
+               my $status = check_ip_record($DBH, $tbl, $ip);
                $DBH->disconnect();
-               return $status->[0] ? -1 : 0;
+               if ($status)
+               {
+                       warn "$ip blocked by SQL";
+               }
+               return $status;
        }
        else
        {
-               my $status = $DBH->selectall_arrayref("select error, t>date_sub(now(), interval 7 day) from $tbl where ip=?", undef, $ip)
-                       or die "DBI/DBD: $!";
-               if(@$status)
-               {
-                       if($status->[0][0] || !$status->[0][1]) # error, or after interval
-                       {
-                               $DBH->do("update $tbl set error=false, t=now() where ip=?", undef, $ip);
-                               $DBH->commit();
-                               $DBH->disconnect();
-                               return 0;
-                       }
-                       else # too soon
-                       {
-                               $DBH->disconnect();
-                               return -1;
-                       }
-               }
-               else
+               my $status = insert_ip_record($DBH, $tbl, $ip);
+               $DBH->commit();
+               $DBH->disconnect();
+               if ($status)
                {
-                       $DBH->do("insert into $tbl(ip, error, t) values(?, false, now())", undef, $ip);
-                       $DBH->commit();
-                       $DBH->disconnect();
-                       return 0;
+                       warn "$ip blocked by SQL";
                }
+               return $status;
        }
 }
 
@@ -126,7 +187,11 @@ sub check_banlist($)
        for(0..@s/4-1)
        {
                my $i = $s[4*$_];
-               return 1 if "$ip." =~ /^\Q$i\E\./;
+               if("$ip." =~ /^\Q$i\E\./)
+               {
+                       warn "$ip blocked by SQL";
+                       return 1;
+               }
        }
        return 0;
 }
@@ -214,6 +279,9 @@ Content-type: text/html
        <hr>
        To use another CA, please enter its number here before using this page:
        <input type="text" name="ca" value="$default_ca" size="2">
+       <hr>
+       REMOTE_HOST=$ENV{REMOTE_HOST}<br>
+       REMOTE_ADDR=$ENV{REMOTE_ADDR}
 </body>
 </html>
 EOF
diff --git a/misc/infrastructure/powerbot/.gitignore b/misc/infrastructure/powerbot/.gitignore
new file mode 100644 (file)
index 0000000..421a84d
--- /dev/null
@@ -0,0 +1,4 @@
+config.json
+powerbot
+powerbot.log
+users.sqlite
diff --git a/misc/infrastructure/powerbot/bot.go b/misc/infrastructure/powerbot/bot.go
new file mode 100644 (file)
index 0000000..b373c82
--- /dev/null
@@ -0,0 +1,309 @@
+package main
+
+import (
+       "encoding/json"
+       "fmt"
+       "io/ioutil"
+       "log"
+       "maunium.net/go/mautrix"
+       "maunium.net/go/mautrix/event"
+       "maunium.net/go/mautrix/id"
+       "strings"
+       "sync"
+       "time"
+)
+
+const (
+       syncInterval       = time.Minute
+       syncForceFrequency = int(7 * 24 * time.Hour / syncInterval)
+)
+
+type Room struct {
+       ID   id.RoomID `json:"id"`
+       Name string    `json:"name",omitempty`
+}
+
+type Config struct {
+       Homeserver  string      `json:"homeserver"`
+       UserID      id.UserID   `json:"user_id"`
+       Password    string      `json:"password,omitempty"`
+       DeviceID    id.DeviceID `json:"device_id,omitempty"`
+       AccessToken string      `json:"access_token,omitempty"`
+       Rooms       [][]Room    `json:"rooms"`
+}
+
+func (c *Config) Load() error {
+       log.Printf("Loading config.")
+       data, err := ioutil.ReadFile("config.json")
+       if err != nil {
+               return err
+       }
+       return json.Unmarshal(data, c)
+}
+
+func (c *Config) Save() error {
+       log.Printf("Saving config.")
+       data, err := json.MarshalIndent(c, "", "\t")
+       if err != nil {
+               return err
+       }
+       return ioutil.WriteFile("config.json", data, 0700)
+}
+
+func Login(config *Config) (*mautrix.Client, error) {
+       configMu.Lock()
+       defer configMu.Unlock()
+
+       // Note: we have to lower case the user ID for Matrix protocol communication.
+       uid := id.UserID(strings.ToLower(string(config.UserID)))
+       client, err := mautrix.NewClient(config.Homeserver, uid, config.AccessToken)
+       if err != nil {
+               return nil, fmt.Errorf("failed to create client: %v", err)
+       }
+       if config.AccessToken == "" {
+               resp, err := client.Login(&mautrix.ReqLogin{
+                       Type: mautrix.AuthTypePassword,
+                       Identifier: mautrix.UserIdentifier{
+                               Type: mautrix.IdentifierTypeUser,
+                               User: string(client.UserID),
+                       },
+                       Password:                 config.Password,
+                       InitialDeviceDisplayName: "matrixbot",
+                       StoreCredentials:         true,
+               })
+               if err != nil {
+                       return nil, fmt.Errorf("failed to authenticate: %v", err)
+               }
+               config.Password = ""
+               config.DeviceID = resp.DeviceID
+               config.AccessToken = resp.AccessToken
+               err = config.Save()
+               if err != nil {
+                       return nil, fmt.Errorf("failed to save config: %v", err)
+               }
+       } else {
+               client.DeviceID = config.DeviceID
+       }
+       return client, nil
+}
+
+var (
+       configMu sync.Mutex
+
+       roomUsersMu sync.RWMutex
+       roomUsers   = map[id.RoomID]map[id.UserID]struct{}{}
+
+       fullySynced     bool
+       roomPowerLevels = map[id.RoomID]*event.PowerLevelsEventContent{}
+)
+
+func setUserStateAt(room id.RoomID, user id.UserID, now time.Time, maxPrevState, state State) {
+       err := writeUserStateAt(room, user, now, maxPrevState, state)
+       if err != nil {
+               log.Fatalf("failed to write user state: %v", err)
+       }
+}
+
+func handleMessage(now time.Time, room id.RoomID, sender id.UserID, raw *event.Event) {
+       // log.Printf("[%v] Message from %v to %v", now, sender, room)
+       roomUsersMu.Lock()
+       roomUsers[room][sender] = struct{}{}
+       roomUsersMu.Unlock()
+       setUserStateAt(room, sender, now.Add(-activeTime), Active, Active)
+       setUserStateAt(room, sender, now, Active, Idle)
+}
+
+func handleJoin(now time.Time, room id.RoomID, member id.UserID, raw *event.Event) {
+       log.Printf("[%v] Join from %v to %v", now, member, room)
+       roomUsersMu.Lock()
+       roomUsers[room][member] = struct{}{}
+       roomUsersMu.Unlock()
+       setUserStateAt(room, member, now, NotActive, Idle)
+}
+
+func handleLeave(now time.Time, room id.RoomID, member id.UserID, raw *event.Event) {
+       log.Printf("[%v] Leave from %v to %v", now, member, room)
+       roomUsersMu.Lock()
+       delete(roomUsers[room], member)
+       roomUsersMu.Unlock()
+       setUserStateAt(room, member, now, Active, NotActive)
+}
+
+func handlePowerLevels(now time.Time, room id.RoomID, levels *event.PowerLevelsEventContent, raw *event.Event) {
+       // log.Printf("[%v] Power levels for %v are %v", now, room, levels)
+       levelsCopy := *levels // Looks like mautrix always passes the same pointer here.
+       roomUsersMu.Lock()
+       roomPowerLevels[room] = &levelsCopy
+       roomUsersMu.Unlock()
+}
+
+func eventTime(evt *event.Event) time.Time {
+       return time.Unix(0, evt.Timestamp*1000000)
+}
+
+type MoreMessagesSyncer struct {
+       *mautrix.DefaultSyncer
+}
+
+func newSyncer() *MoreMessagesSyncer {
+       return &MoreMessagesSyncer{
+               DefaultSyncer: mautrix.NewDefaultSyncer(),
+       }
+}
+
+func (s *MoreMessagesSyncer) GetFilterJSON(userID id.UserID) *mautrix.Filter {
+       f := s.DefaultSyncer.GetFilterJSON(userID)
+       // Same filters as Element.
+       f.Room.Timeline.Limit = 20
+       // Only include our rooms.
+       f.Room.Rooms = make([]id.RoomID, 0, len(roomUsers))
+       for room := range roomUsers {
+               f.Room.Rooms = append(f.Room.Rooms, room)
+       }
+       return f
+}
+
+func isRoom(room id.RoomID) bool {
+       roomUsersMu.RLock()
+       defer roomUsersMu.RUnlock()
+       _, found := roomUsers[room]
+       return found
+}
+
+func Run() (err error) {
+       err = InitDatabase()
+       if err != nil {
+               return fmt.Errorf("failed to init database: %v", err)
+       }
+       defer func() {
+               err2 := CloseDatabase()
+               if err2 != nil && err == nil {
+                       err = fmt.Errorf("failed to close database: %v", err)
+               }
+       }()
+       logPowerLevelBounds()
+       config := &Config{}
+       err = config.Load()
+       if err != nil {
+               return fmt.Errorf("failed to load config: %v", err)
+       }
+       for _, group := range config.Rooms {
+               for _, room := range group {
+                       roomUsers[room.ID] = map[id.UserID]struct{}{}
+               }
+       }
+       client, err := Login(config)
+       if err != nil {
+               return fmt.Errorf("failed to login: %v", err)
+       }
+       syncer := newSyncer()
+       syncer.OnEventType(event.StateTombstone, func(source mautrix.EventSource, evt *event.Event) {
+               if !isRoom(evt.RoomID) {
+                       return
+               }
+               tomb := evt.Content.AsTombstone()
+               if tomb.ReplacementRoom == "" {
+                       log.Printf("Replacement room in tombstone event is not set - not handling: %v", evt)
+                       return
+               }
+               for _, group := range config.Rooms {
+                       for i := range group {
+                               room := &group[i]
+                               if room.ID == evt.RoomID {
+                                       configMu.Lock()
+                                       defer configMu.Unlock()
+                                       room.ID = tomb.ReplacementRoom
+                                       err := config.Save()
+                                       if err != nil {
+                                               log.Printf("failed to save config: %v", err)
+                                       }
+                                       log.Fatalf("room upgrade for %v handled from %v to %v - need restart", room.Name, evt.RoomID, tomb.ReplacementRoom)
+                               }
+                       }
+               }
+               log.Printf("Room not found in config, so not doing room upgrade: %v", evt)
+       })
+       syncer.OnEventType(event.EventMessage, func(source mautrix.EventSource, evt *event.Event) {
+               if !isRoom(evt.RoomID) {
+                       return
+               }
+               handleMessage(eventTime(evt), evt.RoomID, evt.Sender, evt)
+       })
+       syncer.OnEventType(event.StateMember, func(source mautrix.EventSource, evt *event.Event) {
+               if !isRoom(evt.RoomID) {
+                       return
+               }
+               mem := evt.Content.AsMember()
+               key := evt.StateKey
+               if key == nil {
+                       return
+               }
+               member := id.UserID(*key)
+               switch mem.Membership {
+               case event.MembershipJoin:
+                       handleJoin(eventTime(evt), evt.RoomID, member, evt)
+               case event.MembershipLeave, event.MembershipBan:
+                       handleLeave(eventTime(evt), evt.RoomID, member, evt)
+               default: // Ignore.
+               }
+       })
+       syncer.OnEventType(event.StatePowerLevels, func(source mautrix.EventSource, evt *event.Event) {
+               if !isRoom(evt.RoomID) {
+                       return
+               }
+               handlePowerLevels(eventTime(evt), evt.RoomID, evt.Content.AsPowerLevels(), evt)
+       })
+       syncer.OnSync(func(resp *mautrix.RespSync, since string) bool {
+               // j, _ := json.MarshalIndent(resp, "", "  ")
+               // log.Print(string(j))
+               roomUsersMu.Lock()
+               if since != "" && !fullySynced {
+                       log.Print("Fully synced.")
+                       for room, users := range roomUsers {
+                               if _, found := users[config.UserID]; !found {
+                                       log.Printf("Not actually joined %v yet...", room)
+                                       _, err := client.JoinRoom(string(room), "", nil)
+                                       if err != nil {
+                                               log.Printf("Failed to join %v: %v", room, err)
+                                       }
+                               }
+                       }
+                       fullySynced = true
+               }
+               roomUsersMu.Unlock()
+               return true
+       })
+       client.Syncer = syncer
+       ticker := time.NewTicker(syncInterval)
+       defer ticker.Stop()
+       go func() {
+               counter := 0
+               for range ticker.C {
+                       roomUsersMu.RLock()
+                       scoreData := map[id.RoomID]map[id.UserID]*Score{}
+                       now := time.Now()
+                       for room := range roomUsers {
+                               scores, err := queryUserScores(room, now)
+                               if err != nil {
+                                       log.Fatalf("failed to query user scores: %v", err)
+                               }
+                               scoreData[room] = scores
+                       }
+                       for _, group := range config.Rooms {
+                               for _, room := range group {
+                                       syncPowerLevels(client, room.ID, group, scoreData, counter%syncForceFrequency == 0)
+                               }
+                       }
+                       roomUsersMu.RUnlock()
+                       counter++
+               }
+       }()
+       return client.Sync()
+}
+
+func main() {
+       err := Run()
+       if err != nil {
+               log.Fatalf("Program failed: %v", err)
+       }
+}
diff --git a/misc/infrastructure/powerbot/db.go b/misc/infrastructure/powerbot/db.go
new file mode 100644 (file)
index 0000000..d16e11a
--- /dev/null
@@ -0,0 +1,182 @@
+package main
+
+import (
+       "database/sql"
+       "fmt"
+       "maunium.net/go/mautrix/id"
+       _ "modernc.org/sqlite"
+       "time"
+)
+
+type State int
+
+const (
+       NotActive State = iota
+       Idle
+       Active
+)
+
+type Score struct {
+       LastEvent    time.Time
+       CurrentState State
+       Idle         time.Duration
+       Active       time.Duration
+}
+
+const dbSchema = `
+CREATE TABLE IF NOT EXISTS room_users (
+  room_id STRING NOT NULL,
+  user_id STRING NOT NULL,
+  state_time TIMESTAMP NOT NULL,
+  state INT NOT NULL,
+  idle_nsec INT64 NOT NULL,
+  active_nsec INT64 NOT NULL,
+  PRIMARY KEY(room_id, user_id)
+);
+`
+
+const fetchStateQuery = `
+SELECT state_time, state, idle_nsec, active_nsec
+FROM room_users
+WHERE room_id = ?
+  AND user_id = ?
+`
+
+const insertStateQuery = `
+INSERT INTO room_users(room_id, user_id, state_time, state, idle_nsec, active_nsec)
+VALUES(?, ?, ?, ?, 0.0, 0.0)
+`
+
+const updateStateQuery = `
+UPDATE room_users
+SET state_time = ?, state = ?, idle_nsec = ?, active_nsec = ?
+WHERE room_id = ?
+  AND user_id = ?
+`
+
+const fetchUserScoresQuery = `
+SELECT user_id, state_time, state, idle_nsec, active_nsec
+FROM room_users
+WHERE room_id = ?
+`
+
+var db *sql.DB
+
+func InitDatabase() error {
+       var err error
+       db, err = sql.Open("sqlite", "users.sqlite")
+       if err != nil {
+               return fmt.Errorf("could not open SQLite database: %v", err)
+       }
+       _, err = db.Exec(dbSchema)
+       if err != nil {
+               return fmt.Errorf("could not set SQLite database schema: %v", err)
+       }
+       return nil
+}
+
+func CloseDatabase() error {
+       return db.Close()
+}
+
+func queryUserScores(room id.RoomID, now time.Time) (map[id.UserID]*Score, error) {
+       var users map[id.UserID]*Score
+       err := retryPolicy(func() error {
+               rows, err := db.Query(fetchUserScoresQuery, room)
+               if err != nil {
+                       return fmt.Errorf("could not query users: %v", err)
+               }
+               users = map[id.UserID]*Score{}
+               for rows.Next() {
+                       var user id.UserID
+                       var score Score
+                       if err := rows.Scan(&user, &score.LastEvent, &score.CurrentState, &score.Idle, &score.Active); err != nil {
+                               return fmt.Errorf("could not scan users query result: %v", err)
+                       }
+                       newScore := advanceScore(score, now)
+                       users[user] = &newScore
+               }
+               if err := rows.Err(); err != nil {
+                       return fmt.Errorf("could not read users: %v", err)
+               }
+               return nil
+       })
+       return users, err
+}
+
+func advanceScore(score Score, now time.Time) Score {
+       if !now.After(score.LastEvent) {
+               return score
+       }
+       dt := now.Sub(score.LastEvent)
+       switch score.CurrentState {
+       case Idle:
+               score.Idle += dt
+       case Active:
+               score.Active += dt
+       }
+       return score
+}
+
+func retryPolicy(f func() error) error {
+       var err error
+       for attempt := 0; attempt < 12; attempt++ {
+               err = f()
+               if err == nil {
+                       return nil
+               }
+               time.Sleep(time.Millisecond * time.Duration(1<<attempt))
+       }
+       return err
+}
+
+func inTx(db *sql.DB, f func(tx *sql.Tx) error) error {
+       tx, err := db.Begin()
+       if err != nil {
+               return fmt.Errorf("failed to create transaction: %v", err)
+       }
+       err = f(tx)
+       if err != nil {
+               tx.Rollback()
+               return err
+       }
+       return tx.Commit()
+}
+
+func writeUserStateAt(room id.RoomID, user id.UserID, now time.Time, maxPrevState, state State) error {
+       return retryPolicy(func() error {
+               return inTx(db, func(tx *sql.Tx) error {
+                       row := tx.QueryRow(fetchStateQuery, room, user)
+                       var score Score
+                       err := row.Scan(&score.LastEvent, &score.CurrentState, &score.Idle, &score.Active)
+                       if err == sql.ErrNoRows {
+                               _, err = tx.Exec(insertStateQuery, room, user, now, state)
+                               if err != nil {
+                                       return fmt.Errorf("failed to set state for new user: %v", err)
+                               }
+                               return nil
+                       } else {
+                               if err != nil {
+                                       return fmt.Errorf("failed to fetch state for user: %v", err)
+                               }
+                               if now.After(score.LastEvent) {
+                                       if score.CurrentState > maxPrevState {
+                                               score.CurrentState = maxPrevState
+                                       }
+                                       score = advanceScore(score, now)
+                                       _, err = tx.Exec(updateStateQuery, now, state, score.Idle, score.Active, room, user)
+                                       if err != nil {
+                                               return fmt.Errorf("failed to update state for new user: %v", err)
+                                       }
+                                       return nil
+                               } else {
+                                       _, err = tx.Exec(updateStateQuery, score.LastEvent, state, score.Idle, score.Active, room, user)
+                                       if err != nil {
+                                               return fmt.Errorf("failed to update state for new user: %v", err)
+                                       }
+                                       return nil
+                               }
+                       }
+               })
+       })
+}
diff --git a/misc/infrastructure/powerbot/go.mod b/misc/infrastructure/powerbot/go.mod
new file mode 100644 (file)
index 0000000..34ad478
--- /dev/null
@@ -0,0 +1,31 @@
+module powerbot
+
+go 1.15
+
+require (
+       github.com/btcsuite/btcutil v1.0.2 // indirect
+       github.com/davecgh/go-spew v1.1.1 // indirect
+       github.com/dustin/go-humanize v1.0.1 // indirect
+       github.com/google/go-cmp v0.5.9
+       github.com/google/uuid v1.3.0 // indirect
+       github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
+       github.com/kr/pretty v0.3.0 // indirect
+       github.com/kr/text v0.2.0 // indirect
+       github.com/mattn/go-isatty v0.0.17 // indirect
+       github.com/pmezard/go-difflib v1.0.0 // indirect
+       github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
+       github.com/rogpeppe/go-internal v1.8.1 // indirect
+       github.com/russross/blackfriday/v2 v2.1.0 // indirect
+       github.com/tidwall/pretty v1.2.1 // indirect
+       golang.org/x/net v0.7.0 // indirect
+       golang.org/x/tools v0.6.0 // indirect
+       golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
+       gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
+       gopkg.in/yaml.v2 v2.4.0 // indirect
+       lukechampine.com/uint128 v1.2.0 // indirect
+       maunium.net/go/mautrix v0.14.0
+       modernc.org/httpfs v1.0.6 // indirect
+       modernc.org/memory v1.5.0 // indirect
+       modernc.org/sqlite v1.20.4
+       modernc.org/token v1.1.0 // indirect
+)
diff --git a/misc/infrastructure/powerbot/go.sum b/misc/infrastructure/powerbot/go.sum
new file mode 100644 (file)
index 0000000..f15bdae
--- /dev/null
@@ -0,0 +1,417 @@
+github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
+github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
+github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
+github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
+github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
+github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts=
+github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts=
+github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
+github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
+github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
+github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
+github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
+github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY=
+github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic=
+github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
+github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
+github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
+github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
+github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
+github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
+github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
+github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
+github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
+github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-sqlite3 v1.14.9 h1:10HX2Td0ocZpYEjhilsuo6WWtUqttj2Kb0KtD86/KYA=
+github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
+github.com/mattn/go-sqlite3 v1.14.10/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
+github.com/mattn/go-sqlite3 v1.14.11 h1:gt+cp9c0XGqe9S/wAHTL3n/7MqY+siPWgWJgqdsFrzQ=
+github.com/mattn/go-sqlite3 v1.14.11/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
+github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
+github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
+github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
+github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
+github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
+github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
+github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=
+github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
+github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM=
+github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
+github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
+github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
+github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/tidwall/sjson v1.2.3/go.mod h1:5WdjKx3AQMvCJ4RG6/2UYT7dLrGvJUV1x4jdTAyGvZs=
+github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
+github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+github.com/yuin/goldmark v1.5.4/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 h1:0es+/5331RGQPcXlMfP+WrnIIS6dNnNRe0WB02W0F4M=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220128200615-198e4374d7ed h1:YoWVYYAfvQ4ddHv3OKmIvX7NCAhFGTj62VP2l2kfBbA=
+golang.org/x/crypto v0.0.0-20220128200615-198e4374d7ed/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc=
+golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
+golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
+golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211216030914-fe4d6282115f h1:hEYJvxw1lSnWIl8X9ofsYMklzaDs90JI2az5YMd4fPM=
+golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk=
+golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
+golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27 h1:XDXtA5hveEEV8JB2l7nhMTp3t3cHp9ZpwcdjqyEWLlo=
+golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w=
+golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
+golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8=
+golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
+golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+lukechampine.com/uint128 v1.1.1 h1:pnxCASz787iMf+02ssImqk6OLt+Z5QHMoZyUXR4z6JU=
+lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
+lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
+lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
+maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA=
+maunium.net/go/maulogger/v2 v2.3.1/go.mod h1:TYWy7wKwz/tIXTpsx8G3mZseIRiC5DoMxSZazOHy68A=
+maunium.net/go/maulogger/v2 v2.3.2/go.mod h1:TYWy7wKwz/tIXTpsx8G3mZseIRiC5DoMxSZazOHy68A=
+maunium.net/go/mautrix v0.10.7 h1:QV5vbCY4g50N7r1ihdG6zEPfaPn/EVYjM5H+qfLy4RM=
+maunium.net/go/mautrix v0.10.7/go.mod h1:k4Ng5oci83MEbqPL6KOjPdbU7f8v01KlMjR/zTQ+7mA=
+maunium.net/go/mautrix v0.10.10 h1:aaEuVopM3rkgOxL8Ldn2E8vcIIfKDE+tBfX/uPCRFWs=
+maunium.net/go/mautrix v0.10.10/go.mod h1:4XljZZGZiIlpfbQ+Tt2ykjapskJ8a7Z2i9y/+YaceF8=
+maunium.net/go/mautrix v0.14.0 h1:kdQ06HzmMaLGZqmSh/ykDhp5C2gIREQL9TS8hY+FqLs=
+maunium.net/go/mautrix v0.14.0/go.mod h1:voJPvnTkA60rxBl6mvdPxcP7y7iY5w3d/K55IoX+2oY=
+modernc.org/cc/v3 v3.33.6/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.33.9/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.33.11/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.34.0/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.0/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.4/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.5/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.7/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.8/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.10/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.15/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.16/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.17/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.18/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.19 h1:6ODWsJZWi6EwWeuC35hFBhin++9WWY3nThiS29Zl78U=
+modernc.org/cc/v3 v3.35.19/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.20/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.35.22 h1:BzShpwCAP7TWzFppM4k2t03RhXhgYqaibROWkrWq7lE=
+modernc.org/cc/v3 v3.35.22/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
+modernc.org/cc/v3 v3.37.0/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20=
+modernc.org/cc/v3 v3.38.1/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20=
+modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw=
+modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0=
+modernc.org/ccgo/v3 v3.0.0-20220904174949-82d86e1b6d56/go.mod h1:YSXjPL62P2AMSxBphRHPn7IkzhVHqkvOnRKAKh+W6ZI=
+modernc.org/ccgo/v3 v3.0.0-20220910160915-348f15de615a/go.mod h1:8p47QxPkdugex9J4n9P2tLZ9bK01yngIVp00g4nomW0=
+modernc.org/ccgo/v3 v3.9.5/go.mod h1:umuo2EP2oDSBnD3ckjaVUXMrmeAw8C8OSICVa0iFf60=
+modernc.org/ccgo/v3 v3.10.0/go.mod h1:c0yBmkRFi7uW4J7fwx/JiijwOjeAeR2NoSaRVFPmjMw=
+modernc.org/ccgo/v3 v3.11.0/go.mod h1:dGNposbDp9TOZ/1KBxghxtUp/bzErD0/0QW4hhSaBMI=
+modernc.org/ccgo/v3 v3.11.1/go.mod h1:lWHxfsn13L3f7hgGsGlU28D9eUOf6y3ZYHKoPaKU0ag=
+modernc.org/ccgo/v3 v3.11.3/go.mod h1:0oHunRBMBiXOKdaglfMlRPBALQqsfrCKXgw9okQ3GEw=
+modernc.org/ccgo/v3 v3.12.4/go.mod h1:Bk+m6m2tsooJchP/Yk5ji56cClmN6R1cqc9o/YtbgBQ=
+modernc.org/ccgo/v3 v3.12.6/go.mod h1:0Ji3ruvpFPpz+yu+1m0wk68pdr/LENABhTrDkMDWH6c=
+modernc.org/ccgo/v3 v3.12.8/go.mod h1:Hq9keM4ZfjCDuDXxaHptpv9N24JhgBZmUG5q60iLgUo=
+modernc.org/ccgo/v3 v3.12.11/go.mod h1:0jVcmyDwDKDGWbcrzQ+xwJjbhZruHtouiBEvDfoIsdg=
+modernc.org/ccgo/v3 v3.12.14/go.mod h1:GhTu1k0YCpJSuWwtRAEHAol5W7g1/RRfS4/9hc9vF5I=
+modernc.org/ccgo/v3 v3.12.18/go.mod h1:jvg/xVdWWmZACSgOiAhpWpwHWylbJaSzayCqNOJKIhs=
+modernc.org/ccgo/v3 v3.12.20/go.mod h1:aKEdssiu7gVgSy/jjMastnv/q6wWGRbszbheXgWRHc8=
+modernc.org/ccgo/v3 v3.12.21/go.mod h1:ydgg2tEprnyMn159ZO/N4pLBqpL7NOkJ88GT5zNU2dE=
+modernc.org/ccgo/v3 v3.12.22/go.mod h1:nyDVFMmMWhMsgQw+5JH6B6o4MnZ+UQNw1pp52XYFPRk=
+modernc.org/ccgo/v3 v3.12.25/go.mod h1:UaLyWI26TwyIT4+ZFNjkyTbsPsY3plAEB6E7L/vZV3w=
+modernc.org/ccgo/v3 v3.12.29/go.mod h1:FXVjG7YLf9FetsS2OOYcwNhcdOLGt8S9bQ48+OP75cE=
+modernc.org/ccgo/v3 v3.12.36/go.mod h1:uP3/Fiezp/Ga8onfvMLpREq+KUjUmYMxXPO8tETHtA8=
+modernc.org/ccgo/v3 v3.12.38/go.mod h1:93O0G7baRST1vNj4wnZ49b1kLxt0xCW5Hsa2qRaZPqc=
+modernc.org/ccgo/v3 v3.12.43/go.mod h1:k+DqGXd3o7W+inNujK15S5ZYuPoWYLpF5PYougCmthU=
+modernc.org/ccgo/v3 v3.12.46/go.mod h1:UZe6EvMSqOxaJ4sznY7b23/k13R8XNlyWsO5bAmSgOE=
+modernc.org/ccgo/v3 v3.12.47/go.mod h1:m8d6p0zNps187fhBwzY/ii6gxfjob1VxWb919Nk1HUk=
+modernc.org/ccgo/v3 v3.12.50/go.mod h1:bu9YIwtg+HXQxBhsRDE+cJjQRuINuT9PUK4orOco/JI=
+modernc.org/ccgo/v3 v3.12.51/go.mod h1:gaIIlx4YpmGO2bLye04/yeblmvWEmE4BBBls4aJXFiE=
+modernc.org/ccgo/v3 v3.12.53/go.mod h1:8xWGGTFkdFEWBEsUmi+DBjwu/WLy3SSOrqEmKUjMeEg=
+modernc.org/ccgo/v3 v3.12.54/go.mod h1:yANKFTm9llTFVX1FqNKHE0aMcQb1fuPJx6p8AcUx+74=
+modernc.org/ccgo/v3 v3.12.55/go.mod h1:rsXiIyJi9psOwiBkplOaHye5L4MOOaCjHg1Fxkj7IeU=
+modernc.org/ccgo/v3 v3.12.56/go.mod h1:ljeFks3faDseCkr60JMpeDb2GSO3TKAmrzm7q9YOcMU=
+modernc.org/ccgo/v3 v3.12.57/go.mod h1:hNSF4DNVgBl8wYHpMvPqQWDQx8luqxDnNGCMM4NFNMc=
+modernc.org/ccgo/v3 v3.12.60/go.mod h1:k/Nn0zdO1xHVWjPYVshDeWKqbRWIfif5dtsIOCUVMqM=
+modernc.org/ccgo/v3 v3.12.66/go.mod h1:jUuxlCFZTUZLMV08s7B1ekHX5+LIAurKTTaugUr/EhQ=
+modernc.org/ccgo/v3 v3.12.67/go.mod h1:Bll3KwKvGROizP2Xj17GEGOTrlvB1XcVaBrC90ORO84=
+modernc.org/ccgo/v3 v3.12.73/go.mod h1:hngkB+nUUqzOf3iqsM48Gf1FZhY599qzVg1iX+BT3cQ=
+modernc.org/ccgo/v3 v3.12.81/go.mod h1:p2A1duHoBBg1mFtYvnhAnQyI6vL0uw5PGYLSIgF6rYY=
+modernc.org/ccgo/v3 v3.12.84/go.mod h1:ApbflUfa5BKadjHynCficldU1ghjen84tuM5jRynB7w=
+modernc.org/ccgo/v3 v3.12.86/go.mod h1:dN7S26DLTgVSni1PVA3KxxHTcykyDurf3OgUzNqTSrU=
+modernc.org/ccgo/v3 v3.12.88/go.mod h1:0MFzUHIuSIthpVZyMWiFYMwjiFnhrN5MkvBrUwON+ZM=
+modernc.org/ccgo/v3 v3.12.90/go.mod h1:obhSc3CdivCRpYZmrvO88TXlW0NvoSVvdh/ccRjJYko=
+modernc.org/ccgo/v3 v3.12.92/go.mod h1:5yDdN7ti9KWPi5bRVWPl8UNhpEAtCjuEE7ayQnzzqHA=
+modernc.org/ccgo/v3 v3.12.95 h1:Ym2JG2G3P4IyZqjTTojHTl7qO0RysXeGSYPSoKPSBxc=
+modernc.org/ccgo/v3 v3.12.95/go.mod h1:ZcLyvtocXYi8uF+9Ebm3G8EF8HNY5hGomBqthDp4eC8=
+modernc.org/ccgo/v3 v3.13.1/go.mod h1:aBYVOUfIlcSnrsRVU8VRS35y2DIfpgkmVkYZ0tpIXi4=
+modernc.org/ccgo/v3 v3.14.0/go.mod h1:hBrkiBlUwvr5vV/ZH9YzXIp982jKE8Ek8tR1ytoAL6Q=
+modernc.org/ccgo/v3 v3.15.1/go.mod h1:md59wBwDT2LznX/OTCPoVS6KIsdRgY8xqQwBV+hkTH0=
+modernc.org/ccgo/v3 v3.15.9/go.mod h1:md59wBwDT2LznX/OTCPoVS6KIsdRgY8xqQwBV+hkTH0=
+modernc.org/ccgo/v3 v3.15.10/go.mod h1:wQKxoFn0ynxMuCLfFD09c8XPUCc8obfchoVR9Cn0fI8=
+modernc.org/ccgo/v3 v3.15.12/go.mod h1:VFePOWoCd8uDGRJpq/zfJ29D0EVzMSyID8LCMWYbX6I=
+modernc.org/ccgo/v3 v3.15.13 h1:hqlCzNJTXLrhS70y1PqWckrF9x1btSQRC7JFuQcBg5c=
+modernc.org/ccgo/v3 v3.15.13/go.mod h1:QHtvdpeODlXjdK3tsbpyK+7U9JV4PQsrPGIbtmc0KfY=
+modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8/go.mod h1:fUB3Vn0nVPReA+7IG7yZDfjv1TMWjhQP8gCxrFAtL5g=
+modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw=
+modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY=
+modernc.org/ccorpus v1.11.1 h1:K0qPfpVG1MJh5BYazccnmhywH4zHuOgJXgbjzyp6dWA=
+modernc.org/ccorpus v1.11.1/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
+modernc.org/ccorpus v1.11.4 h1:YOmQBBzE8GC/puUx76D5j/gJYIZQsydrh6VMJVfXF0M=
+modernc.org/ccorpus v1.11.4/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
+modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk=
+modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
+modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM=
+modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
+modernc.org/libc v1.9.8/go.mod h1:U1eq8YWr/Kc1RWCMFUWEdkTg8OTcfLw2kY8EDwl039w=
+modernc.org/libc v1.9.11/go.mod h1:NyF3tsA5ArIjJ83XB0JlqhjTabTCHm9aX4XMPHyQn0Q=
+modernc.org/libc v1.11.0/go.mod h1:2lOfPmj7cz+g1MrPNmX65QCzVxgNq2C5o0jdLY2gAYg=
+modernc.org/libc v1.11.2/go.mod h1:ioIyrl3ETkugDO3SGZ+6EOKvlP3zSOycUETe4XM4n8M=
+modernc.org/libc v1.11.5/go.mod h1:k3HDCP95A6U111Q5TmG3nAyUcp3kR5YFZTeDS9v8vSU=
+modernc.org/libc v1.11.6/go.mod h1:ddqmzR6p5i4jIGK1d/EiSw97LBcE3dK24QEwCFvgNgE=
+modernc.org/libc v1.11.11/go.mod h1:lXEp9QOOk4qAYOtL3BmMve99S5Owz7Qyowzvg6LiZso=
+modernc.org/libc v1.11.13/go.mod h1:ZYawJWlXIzXy2Pzghaf7YfM8OKacP3eZQI81PDLFdY8=
+modernc.org/libc v1.11.16/go.mod h1:+DJquzYi+DMRUtWI1YNxrlQO6TcA5+dRRiq8HWBWRC8=
+modernc.org/libc v1.11.19/go.mod h1:e0dgEame6mkydy19KKaVPBeEnyJB4LGNb0bBH1EtQ3I=
+modernc.org/libc v1.11.24/go.mod h1:FOSzE0UwookyT1TtCJrRkvsOrX2k38HoInhw+cSCUGk=
+modernc.org/libc v1.11.26/go.mod h1:SFjnYi9OSd2W7f4ct622o/PAYqk7KHv6GS8NZULIjKY=
+modernc.org/libc v1.11.27/go.mod h1:zmWm6kcFXt/jpzeCgfvUNswM0qke8qVwxqZrnddlDiE=
+modernc.org/libc v1.11.28/go.mod h1:Ii4V0fTFcbq3qrv3CNn+OGHAvzqMBvC7dBNyC4vHZlg=
+modernc.org/libc v1.11.31/go.mod h1:FpBncUkEAtopRNJj8aRo29qUiyx5AvAlAxzlx9GNaVM=
+modernc.org/libc v1.11.34/go.mod h1:+Tzc4hnb1iaX/SKAutJmfzES6awxfU1BPvrrJO0pYLg=
+modernc.org/libc v1.11.37/go.mod h1:dCQebOwoO1046yTrfUE5nX1f3YpGZQKNcITUYWlrAWo=
+modernc.org/libc v1.11.39/go.mod h1:mV8lJMo2S5A31uD0k1cMu7vrJbSA3J3waQJxpV4iqx8=
+modernc.org/libc v1.11.42/go.mod h1:yzrLDU+sSjLE+D4bIhS7q1L5UwXDOw99PLSX0BlZvSQ=
+modernc.org/libc v1.11.44/go.mod h1:KFq33jsma7F5WXiYelU8quMJasCCTnHK0mkri4yPHgA=
+modernc.org/libc v1.11.45/go.mod h1:Y192orvfVQQYFzCNsn+Xt0Hxt4DiO4USpLNXBlXg/tM=
+modernc.org/libc v1.11.47/go.mod h1:tPkE4PzCTW27E6AIKIR5IwHAQKCAtudEIeAV1/SiyBg=
+modernc.org/libc v1.11.49/go.mod h1:9JrJuK5WTtoTWIFQ7QjX2Mb/bagYdZdscI3xrvHbXjE=
+modernc.org/libc v1.11.51/go.mod h1:R9I8u9TS+meaWLdbfQhq2kFknTW0O3aw3kEMqDDxMaM=
+modernc.org/libc v1.11.53/go.mod h1:5ip5vWYPAoMulkQ5XlSJTy12Sz5U6blOQiYasilVPsU=
+modernc.org/libc v1.11.54/go.mod h1:S/FVnskbzVUrjfBqlGFIPA5m7UwB3n9fojHhCNfSsnw=
+modernc.org/libc v1.11.55/go.mod h1:j2A5YBRm6HjNkoSs/fzZrSxCuwWqcMYTDPLNx0URn3M=
+modernc.org/libc v1.11.56/go.mod h1:pakHkg5JdMLt2OgRadpPOTnyRXm/uzu+Yyg/LSLdi18=
+modernc.org/libc v1.11.58/go.mod h1:ns94Rxv0OWyoQrDqMFfWwka2BcaF6/61CqJRK9LP7S8=
+modernc.org/libc v1.11.71/go.mod h1:DUOmMYe+IvKi9n6Mycyx3DbjfzSKrdr/0Vgt3j7P5gw=
+modernc.org/libc v1.11.75/go.mod h1:dGRVugT6edz361wmD9gk6ax1AbDSe0x5vji0dGJiPT0=
+modernc.org/libc v1.11.82/go.mod h1:NF+Ek1BOl2jeC7lw3a7Jj5PWyHPwWD4aq3wVKxqV1fI=
+modernc.org/libc v1.11.86/go.mod h1:ePuYgoQLmvxdNT06RpGnaDKJmDNEkV7ZPKI2jnsvZoE=
+modernc.org/libc v1.11.87/go.mod h1:Qvd5iXTeLhI5PS0XSyqMY99282y+3euapQFxM7jYnpY=
+modernc.org/libc v1.11.88/go.mod h1:h3oIVe8dxmTcchcFuCcJ4nAWaoiwzKCdv82MM0oiIdQ=
+modernc.org/libc v1.11.90/go.mod h1:ynK5sbjsU77AP+nn61+k+wxUGRx9rOFcIqWYYMaDZ4c=
+modernc.org/libc v1.11.98/go.mod h1:ynK5sbjsU77AP+nn61+k+wxUGRx9rOFcIqWYYMaDZ4c=
+modernc.org/libc v1.11.99/go.mod h1:wLLYgEiY2D17NbBOEp+mIJJJBGSiy7fLL4ZrGGZ+8jI=
+modernc.org/libc v1.11.101/go.mod h1:wLLYgEiY2D17NbBOEp+mIJJJBGSiy7fLL4ZrGGZ+8jI=
+modernc.org/libc v1.11.104/go.mod h1:2MH3DaF/gCU8i/UBiVE1VFRos4o523M7zipmwH8SIgQ=
+modernc.org/libc v1.12.0 h1:imI0tde8UeIAyoU/C09Pm6CmTZkJrO+QvthHRpf1rj0=
+modernc.org/libc v1.12.0/go.mod h1:2MH3DaF/gCU8i/UBiVE1VFRos4o523M7zipmwH8SIgQ=
+modernc.org/libc v1.13.1/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk=
+modernc.org/libc v1.13.2/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk=
+modernc.org/libc v1.14.1/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk=
+modernc.org/libc v1.14.2/go.mod h1:MX1GBLnRLNdvmK9azU9LCxZ5lMyhrbEMK8rG3X/Fe34=
+modernc.org/libc v1.14.3/go.mod h1:GPIvQVOVPizzlqyRX3l756/3ppsAgg1QgPxjr5Q4agQ=
+modernc.org/libc v1.14.5 h1:DAHvwGoVRDZs5iJXnX9RJrgXSsorupCWmJ2ac964Owk=
+modernc.org/libc v1.14.5/go.mod h1:2PJHINagVxO4QW/5OQdRrvMYo+bm5ClpUFfyXCYl9ak=
+modernc.org/libc v1.17.4/go.mod h1:WNg2ZH56rDEwdropAJeZPQkXmDwh+JCA1s/htl6r2fA=
+modernc.org/libc v1.18.0/go.mod h1:vj6zehR5bfc98ipowQOM2nIDUZnVew/wNC/2tOGS+q0=
+modernc.org/libc v1.19.0/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0=
+modernc.org/libc v1.20.3/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0=
+modernc.org/libc v1.21.4/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI=
+modernc.org/libc v1.22.2 h1:4U7v51GyhlWqQmwCHj28Rdq2Yzwk55ovjFrdPjs8Hb0=
+modernc.org/libc v1.22.2/go.mod h1:uvQavJ1pZ0hIoC/jfqNoMLURIMhKzINIWypNM17puug=
+modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
+modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
+modernc.org/mathutil v1.4.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
+modernc.org/mathutil v1.4.1 h1:ij3fYGe8zBF4Vu+g0oT7mB06r8sqGWKuJu1yXeR4by8=
+modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
+modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ=
+modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
+modernc.org/memory v1.0.4/go.mod h1:nV2OApxradM3/OVbs2/0OsP6nPfakXpi50C7dcoHXlc=
+modernc.org/memory v1.0.5 h1:XRch8trV7GgvTec2i7jc33YlUI0RKVDBvZ5eZ5m8y14=
+modernc.org/memory v1.0.5/go.mod h1:B7OYswTRnfGg+4tDH1t1OeUNnsy2viGTdME4tzd+IjM=
+modernc.org/memory v1.3.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
+modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
+modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds=
+modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
+modernc.org/opt v0.1.1 h1:/0RX92k9vwVeDXj+Xn23DKp2VJubL7k8qNffND6qn3A=
+modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
+modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
+modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
+modernc.org/sqlite v1.14.3 h1:psrTwgpEujgWEP3FNdsC9yNh5tSeA77U0GeWhHH4XmQ=
+modernc.org/sqlite v1.14.3/go.mod h1:xMpicS1i2MJ4C8+Ap0vYBqTwYfpFvdnPE6brbFOtV2Y=
+modernc.org/sqlite v1.14.5 h1:bYrrjwH9Y7QUGk1MbchZDhRfmpGuEAs/D45sVjNbfvs=
+modernc.org/sqlite v1.14.5/go.mod h1:YyX5Rx0WbXokitdWl2GJIDy4BrPxBP0PwwhpXOHCDLE=
+modernc.org/sqlite v1.20.4 h1:J8+m2trkN+KKoE7jglyHYYYiaq5xmz2HoHJIiBlRzbE=
+modernc.org/sqlite v1.20.4/go.mod h1:zKcGyrICaxNTMEHSr1HQ2GUraP0j+845GYw37+EyT6A=
+modernc.org/strutil v1.1.1 h1:xv+J1BXY3Opl2ALrBwyfEikFAj8pmqcpnfmuwUwcozs=
+modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw=
+modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY=
+modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw=
+modernc.org/tcl v1.9.2 h1:YA87dFLOsR2KqMka371a2Xgr+YsyUwo7OmHVSv/kztw=
+modernc.org/tcl v1.9.2/go.mod h1:aw7OnlIoiuJgu1gwbTZtrKnGpDqH9wyH++jZcxdqNsg=
+modernc.org/tcl v1.10.0/go.mod h1:WzWapmP/7dHVhFoyPpEaNSVTL8xtewhouN/cqSJ5A2s=
+modernc.org/tcl v1.11.0 h1:B/zzEYjINeaki38KcIqdQRQx7W3WE7TkrlTwGnbm2II=
+modernc.org/tcl v1.11.0/go.mod h1:zsTUpbQ+NxQEjOjCUlImDLPv1sG8Ww0qp66ZvyOxCgw=
+modernc.org/tcl v1.15.0 h1:oY+JeD11qVVSgVvodMJsu7Edf8tr5E/7tuhF5cNYz34=
+modernc.org/tcl v1.15.0/go.mod h1:xRoGotBZ6dU+Zo2tca+2EqVEeMmOUBzHnhIwq4YrVnE=
+modernc.org/token v1.0.0 h1:a0jaWiNMDhDUtqOj09wvjWWAqd3q7WpBulmL9H2egsk=
+modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
+modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
+modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
+modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
+modernc.org/z v1.2.20 h1:DyboxM1sJR2NB803j2StnbnL6jcQXz273OhHDGu8dGk=
+modernc.org/z v1.2.20/go.mod h1:zU9FiF4PbHdOTUxw+IF8j7ArBMRPsHgq10uVPt6xTzo=
+modernc.org/z v1.2.21/go.mod h1:uXrObx4pGqXWIMliC5MiKuwAyMrltzwpteOFUP1PWCc=
+modernc.org/z v1.3.0 h1:4RWULo1Nvaq5ZBhbLe74u8p6tV4Mmm0ZrPBXYPm/xjM=
+modernc.org/z v1.3.0/go.mod h1:+mvgLH814oDjtATDdT3rs84JnUIpkvAF5B8AVkNlE2g=
+modernc.org/z v1.7.0 h1:xkDw/KepgEjeizO2sNco+hqYkU12taxQFqPEmgm1GWE=
+modernc.org/z v1.7.0/go.mod h1:hVdgNMh8ggTuRG1rGU8x+xGRFfiQUIAw0ZqlPy8+HyQ=
diff --git a/misc/infrastructure/powerbot/powerlevels.go b/misc/infrastructure/powerbot/powerlevels.go
new file mode 100644 (file)
index 0000000..42a33c1
--- /dev/null
@@ -0,0 +1,227 @@
+package main
+
+import (
+       "encoding/json"
+       "github.com/google/go-cmp/cmp"
+       "log"
+       "math"
+       "maunium.net/go/mautrix"
+       "maunium.net/go/mautrix/event"
+       "maunium.net/go/mautrix/id"
+       "reflect"
+       "time"
+)
+
+const (
+       idleScore   = 1
+       activeScore = 100
+       activeTime  = 5 * time.Minute
+       // 15 minutes idling = PL 1.
+       minPowerScore = 15 * 60 * idleScore
+       minPowerLevel = 1
+       // 1 year fulltime active dev = PL 10.
+       maxPowerScore = 3600 * (365*24*idleScore + 8*261*(activeScore-idleScore))
+       maxPowerLevel = 9
+       // Do not touch users outside this range.
+       minApplyLevel = 0
+       maxApplyLevel = 9
+       // Expire power level if no event for 1 month. Level comes back on next event, including join.
+       powerExpireTime = time.Hour * 24 * 30
+       // Maximum size of powerlevels message. This is a quarter of the expected Matrix limit.
+       maxPowerLevelBytes = (65535 - 1024) / 4
+)
+
+func logPowerLevelBounds() {
+       for i := minPowerLevel; i <= maxPowerLevel; i++ {
+               score := minPowerScore * math.Pow(maxPowerScore/minPowerScore, float64(i-minPowerLevel)/float64(maxPowerLevel-minPowerLevel))
+               log.Printf("Power level %d requires score %v (= %v idle or %v active).",
+                       i, score,
+                       time.Duration(float64(time.Second)*score/idleScore),
+                       time.Duration(float64(time.Second)*score/activeScore),
+               )
+       }
+}
+
+func computePowerLevel(def int, score Score) (int, float64) {
+       points := score.Idle.Seconds()*idleScore + score.Active.Seconds()*activeScore
+       if points <= 0 {
+               return def, math.Inf(-1)
+       }
+       raw := minPowerLevel + (maxPowerLevel-minPowerLevel)*math.Log(points/minPowerScore)/math.Log(maxPowerScore/minPowerScore)
+       if raw < minPowerLevel {
+               return def, raw
+       }
+       if points > maxPowerScore {
+               return maxPowerLevel, raw
+       }
+       return int(math.Floor(raw)), raw
+}
+
+func allPowerLevels(roomLevels *event.PowerLevelsEventContent) []int {
+       ret := make([]int, 0, len(roomLevels.Events)+5)
+       for _, level := range roomLevels.Events {
+               ret = append(ret, level)
+       }
+       ret = append(ret, roomLevels.EventsDefault)
+       if roomLevels.InvitePtr != nil {
+               ret = append(ret, *roomLevels.InvitePtr)
+       }
+       if roomLevels.KickPtr != nil {
+               ret = append(ret, *roomLevels.KickPtr)
+       }
+       if roomLevels.BanPtr != nil {
+               ret = append(ret, *roomLevels.BanPtr)
+       }
+       if roomLevels.RedactPtr != nil {
+               ret = append(ret, *roomLevels.RedactPtr)
+       }
+       return ret
+}
+
+func syncPowerLevels(client *mautrix.Client, room id.RoomID, roomGroup []Room, scores map[id.RoomID]map[id.UserID]*Score, force bool) {
+       roomLevels := roomPowerLevels[room]
+       if roomLevels == nil {
+               log.Printf("trying to ensure power levels for room %v, but did not get power level map yet", room)
+               return
+       }
+       tryUpdate := force
+       for _, level := range allPowerLevels(roomLevels) {
+               if minPowerLevel <= level && level <= maxPowerLevel {
+                       tryUpdate = true
+               }
+       }
+       if !tryUpdate {
+               log.Printf("room %v skipping because PLs currently do not matter", room)
+               return
+       }
+       log.Printf("room %v considering to update PLs", room)
+       if fullySynced {
+               for user, score := range scores[room] {
+                       // Expire users that for some reason did not get pruned from the database.
+                       // This may cause them to lose their power level below.
+                       if _, found := roomUsers[room][user]; !found && score.CurrentState != NotActive {
+                               log.Printf("Pruning long inactive user %v from room %v.", user, room)
+                               setUserStateAt(room, user, time.Now(), NotActive, NotActive)
+                               score.CurrentState = NotActive
+                       }
+               }
+       }
+       newRoomLevels := makeDefaultsExplicit(roomLevels)
+       newRoomLevels.Users = make(map[id.UserID]int)
+       for user, level := range roomLevels.Users {
+               if level == roomLevels.UsersDefault {
+                       continue
+               }
+               // TODO: Also skip users who aren't in the room for ages.
+               score := scores[room][user]
+               if level >= minPowerLevel && level <= maxPowerLevel && (score == nil || (score.CurrentState == NotActive && time.Now().After(score.LastEvent.Add(powerExpireTime)))) {
+                       // User is inactive - prune them from the power level list. Saves space.
+                       // But this doesn't mark the list dirty as there is no need to send an update.
+                       log.Printf("room %v user %v power level: PRUNE %v (%v)", room, user, level, score)
+                       continue
+               }
+               newRoomLevels.Users[user] = level
+       }
+       dirty := false
+       log.Printf("room %v", room)
+       for user, score := range scores[room] {
+               if score.CurrentState == NotActive {
+                       // Do not add/bump power levels for users not in the room.
+                       continue
+               }
+               prevLevel := roomLevels.Users[user]
+               level, raw := computePowerLevel(roomLevels.UsersDefault, *score)
+               for _, otherRoom := range roomGroup {
+                       if otherRoom.ID == room {
+                               continue
+                       }
+                       otherScore := scores[otherRoom.ID][user]
+                       if otherScore == nil {
+                               continue
+                       }
+                       otherLevel, otherRaw := computePowerLevel(roomLevels.UsersDefault, *otherScore)
+                       if otherLevel > level {
+                               level = otherLevel
+                       }
+                       if otherRaw > raw {
+                               raw = otherRaw
+                       }
+               }
+               if prevLevel < minApplyLevel {
+                       log.Printf("room %v user %v power level: SKIP_TOO_LOW %v -> %v (%v, %v)", room, user, prevLevel, level, raw, score)
+               } else if prevLevel > maxApplyLevel {
+                       log.Printf("room %v user %v power level: SKIP_TOO_HIGH %v -> %v (%v, %v)", room, user, prevLevel, level, raw, score)
+               } else if level < prevLevel {
+                       log.Printf("room %v user %v power level: SKIP_WOULD_LOWER %v -> %v (%v, %v)", room, user, prevLevel, level, raw, score)
+               } else if level > prevLevel {
+                       log.Printf("room %v user %v power level: INCREASE %v -> %v (%v, %v)", room, user, prevLevel, level, raw, score)
+                       newRoomLevels.Users[user] = level
+                       dirty = true
+               } else {
+                       log.Printf("room %v user %v power level: KEEP %v -> %v (%v, %v)", room, user, prevLevel, level, raw, score)
+               }
+       }
+       clearPowerLevel := minPowerLevel
+       for clearPowerLevel <= maxPowerLevel {
+               j, err := json.Marshal(newRoomLevels)
+               if err != nil {
+                       log.Printf("could not marshal newRoomLevels: %v", err)
+                       break
+               }
+               if len(j) <= maxPowerLevelBytes {
+                       // No need to trim.
+                       break
+               }
+               log.Printf("room %v not including power level %d to reduce message size", clearPowerLevel)
+               for user, level := range newRoomLevels.Users {
+                       if level == clearPowerLevel {
+                               delete(newRoomLevels.Users, user)
+                               dirty = true
+                       }
+               }
+               clearPowerLevel++
+       }
+       if dirty {
+               diff := cmp.Diff(roomLevels.Users, newRoomLevels.Users)
+               log.Printf("room %v power level update:\n%v", room, diff)
+               _, err := client.SendStateEvent(room, event.StatePowerLevels, "", newRoomLevels)
+               if err != nil {
+                       log.Printf("Failed to update power levels: %v", err)
+               }
+       } else {
+               log.Printf("room %v nothing to update", room)
+       }
+}
+
+type powerLevelsWithDefaults struct {
+       // This struct is a copy of the public stuff in event.PowerLevelsEventContent,
+       // but with omitempty removed on users_default and events_default to work around
+       // https://github.com/matrix-org/dendrite/issues/2983
+       Users           map[id.UserID]int              `json:"users,omitempty"`
+       UsersDefault    int                            `json:"users_default"`
+       Events          map[string]int                 `json:"events,omitempty"`
+       EventsDefault   int                            `json:"events_default"`
+       Notifications   *event.NotificationPowerLevels `json:"notifications,omitempty"`
+       StateDefaultPtr *int                           `json:"state_default,omitempty"`
+       InvitePtr       *int                           `json:"invite,omitempty"`
+       KickPtr         *int                           `json:"kick,omitempty"`
+       BanPtr          *int                           `json:"ban,omitempty"`
+       RedactPtr       *int                           `json:"redact,omitempty"`
+       HistoricalPtr   *int                           `json:"historical,omitempty"`
+}
+
+func makeDefaultsExplicit(roomLevels *event.PowerLevelsEventContent) *powerLevelsWithDefaults {
+       // Copying over all exported fields using reflect.
+       // Doing it this way so if a new field is added to event.PowerLevelsEventContent, this code panics.
+       var withDefaults powerLevelsWithDefaults
+       src := reflect.ValueOf(roomLevels).Elem()
+       dst := reflect.ValueOf(&withDefaults).Elem()
+       for i := 0; i < src.Type().NumField(); i++ {
+               srcField := src.Type().Field(i)
+               if !srcField.IsExported() {
+                       continue
+               }
+               dst.FieldByName(srcField.Name).Set(src.Field(i))
+       }
+       return &withDefaults
+}
diff --git a/misc/infrastructure/refresh-checkupdate.sh b/misc/infrastructure/refresh-checkupdate.sh
new file mode 100755 (executable)
index 0000000..30d7cd0
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Script to sync the "checkupdate.txt" file on the web host with the version currently in git. 
+# Run this as root from the /var/www/update.xonotic.org directory.
+
+set -e
+
+export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
+cd /var/www/update.xonotic.org
+
+rm -f checkupdate.txt
+wget -qO checkupdate.txt "https://gitlab.com/xonotic/xonotic/-/raw/master/misc/infrastructure/checkupdate.txt"
+{
+       grep "^V " checkupdate.txt | head -n 1 | cut -c 3-
+       grep "^D " checkupdate.txt | head -n 1 | cut -c 3-
+       grep "^U " checkupdate.txt | head -n 1 | cut -c 3-
+} > checkupdate.txt.oldformat 2>/dev/null
+grep '^[^#]' checkupdate.txt > checkupdate.txt.newformat
+rm -f checkupdate.txt
+if [ x"`wc -l < checkupdate.txt.oldformat`" = x"3" ]; then
+       mv checkupdate.txt.newformat HTML/checkupdate.txt
+       mv checkupdate.txt.oldformat ../xonotic.org/HTML/dl/checkupdate.txt
+else
+       echo "checkupdate.txt updating failed. Please debug."
+fi
+
diff --git a/misc/infrastructure/refresh-tos.sh b/misc/infrastructure/refresh-tos.sh
new file mode 100755 (executable)
index 0000000..8e3d767
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Script to sync the "tos.txt" file on the web host with the version currently in git. 
+# Run this as root from the /var/www/update.xonotic.org directory.
+
+set -e
+
+export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
+cd /var/www/update.xonotic.org/HTML
+
+wget -qO tos.txt.new "https://gitlab.com/xonotic/xonotic/-/raw/master/misc/infrastructure/tos.txt"
+
+if [ `wc -l tos.txt.new | awk '{print $1}'` -ge "2" ]; then
+        echo "tos.txt update succeeded."
+       mv tos.txt.new tos.txt
+else
+       echo "tos.txt updating failed. Please debug."
+fi
+
diff --git a/misc/infrastructure/tos.txt b/misc/infrastructure/tos.txt
new file mode 100644 (file)
index 0000000..3b4bf56
--- /dev/null
@@ -0,0 +1,34 @@
+Definitions
+Service: the XonStat player statistics system and the Xonotic forums provided by Team Xonotic
+You: the user of the service
+We: the past and present contributors to Xonotic
+
+Terms
+By accessing the services at https://stats.xonotic.org and https://forums.xonotic.org, you are agreeing to be bound by these terms of service, all applicable laws and regulations, and agree that you are responsible for compliance with any applicable local laws. If you do not agree with any of these terms, you are prohibited from using or accessing this site.
+
+By using our services, you agree to allow user identifiable information to be presented within the system for the purpose of:
+
+- communicating with others in the community directly (e.g. via PM) or indirectly (e.g. via a public post)
+- establishing user profiles
+- recording game results
+- collecting usage information
+- running ad hoc reports
+
+We reserve the right to:
+- Moderate the service using automated or manual means.
+- Appoint others outside of Team Xonotic to moderate the service on an as-needed basis.
+- Discontinue, interrupt, or change the service without any advance notice or consent.
+- Release full or partial versions of the underlying dataset, provided it has been anonymized.
+
+Privacy Policy
+Your privacy is important to us. It is Team Xonotic's policy to respect your privacy regarding any information we collect from you across our web properties https://stats.xonotic.org and https://forums.xonotic.org, along with any other sites we own and operate.
+
+We only collect information when we truly need it to provide a service to you and the community at large. We collect it by fair and lawful means, with your knowledge and consent via configurable, in-game options (cl_allow_uidtracking and cl_allow_uid2name for XonStat) or via signup forms (for the forums). We also let you know why we're collecting it and how it will be used. You are free to refuse our request for your personal information by not opting in to either of these services.
+
+We retain the collected information for as long as necessary to provide you and the community at large with the requested service. We will protect that data with all means at our disposal to avoid unauthorised access, disclosure, copying, use or modification. In such cases where data sets are released to the public, we will ensure that they are anonymized such that client-identifiable key information is no longer present.
+
+We don't share any personally identifying information publicly or with third-parties, except when required to by law.
+
+Usage of our player statistics system and other web properties constitutes acceptance of the policies outlined in this document. If you have any questions about how we handle user data and personal information, feel free to contact us.
+
+This policy is effective as of 16 June 2018.
index b4ae823cb89ff3df82cadfc33b226299f765e443..147fe08b6b3d5f6d835a60a113cb691fb5b16366 100755 (executable)
@@ -2,7 +2,8 @@
 
 set -ex
 
-export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
+export PATH=$HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
+export GIT_SSH_COMMAND='ssh -i $HOME/.ssh/id_xonotic'
 
 cd ~/xonotic/data/xonotic-data.pk3dir
 git checkout master
index bde13ebdc86228e4aad0120be1dc9c999ae8db3d..dbad1945481414ed17e0d3cd51246398d9baedeb 100755 (executable)
@@ -1,15 +1,22 @@
 #!/bin/sh
 
-set -x
+set -ex
 
 d=$1
 
 cd /var/rsync/autobuild
 
-for BUILD in '' -low -lowdds; do
+for BUILD in '' -high -mappingsupport; do
+       rm -rf .new
        mkdir .new
        cd .new
-       unzip /var/www/autobuild/Xonotic-"$d$BUILD".zip
+       if ! unzip ~/Xonotic-"$d$BUILD".zip; then
+               good=false
+               #for f in ~/Xonotic-"$d$BUILD".zip; do
+               #       unzip "$f" && good=true && break
+               #done
+               $good
+       fi
        cd Xonotic/data
        for X in *"$d"*; do
                pre=${X%$d*}
@@ -17,6 +24,7 @@ for BUILD in '' -low -lowdds; do
                mv "$X" "$pre"rsync"$post"
        done
        cd ../../..
+       rm -rf Xonotic.old
        mv Xonotic"$BUILD" Xonotic.old || true
        mv .new/Xonotic Xonotic"$BUILD"
        rmdir .new
index eb743faa38d43a156452a8cd728a753e0b9acdb5..14f9fe1ebf7f979b06c861eefed5fe92635c228e 100755 (executable)
@@ -9,7 +9,7 @@ lockfile-touch "$me" & lockpid=$!
 trap 'kill $lockpid || true; cd "$mepwd"; lockfile-remove "$me"' EXIT
 trap 'exit 1' INT TERM
 
-set -e
+set -ex
 [ -d xonotic-map-compiler ] || git clone git://git.xonotic.org/xonotic/xonotic.git xonotic-map-compiler
 cd xonotic-map-compiler
 ./all clean -m -fU -D # like reclone but do not delete untracked, so q3map2.x86 compile stays
@@ -17,4 +17,4 @@ cd netradiant
 cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Release
 cmake --build build -- q3map2
 cd ..
-./misc/tools/xonotic-map-compiler-autobuild build
+sh -x ./misc/tools/xonotic-map-compiler-autobuild build
index 0c063752fad8ccc3c33085f9be10660b6cd218ee..d358ed2206b587cea75494c028002a654ed0ca55 100755 (executable)
@@ -2,18 +2,22 @@
 
 mepwd=$PWD
 me=$0
-export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/vendor_perl:/usr/bin/core_perl
+export PATH=/home/xonotic/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
 
 set -e
-cd xonotic
-./all clean -m -fU -D
+cd xonotic-map-screenshot
+./all clean -m -fU -D # like reclone but do not delete untracked, so q3map2.x86 compile stays
 # like reclone but do not delete untracked, so q3map2.x86 compile stays
-./all compile
-export DRIVER=soft
+
+#export USE_GDB=core
+#export CC="gcc -DMEMCLUMPING=1 -DFILE_BACKED_MALLOC=1 -DSUPPORTIPV6 -DMEMWANTCLUMPSIZE='(1<<28)'"
+./all compile -r -1
+
+#export DRIVER=soft
 #export DRIVERFLAGS="+gl_texturecompression 1 -nofbo"
 #export DRIVERFLAGS="+gl_texturecompression 1"
 
-#startx /bin/sh -x ./misc/tools/xonotic-map-compiler-autobuild screenshot -- /usr/bin/Xvfb :7 -screen 0 1024x768x24
-sh -x ./misc/tools/xonotic-map-compiler-autobuild screenshot
+startx /bin/sh -x ./misc/tools/xonotic-map-compiler-autobuild screenshot -- /usr/bin/Xvfb :7 -screen 0 1024x768x24
+#sh -x ./misc/tools/xonotic-map-compiler-autobuild screenshot
 
-lwp-request -m GET http://beta.xonotic.org/autobuild-bsp/?d,c >/dev/null
+#lwp-request -m GET http://beta.xonotic.org/autobuild-bsp/?d,c >/dev/null
index 5bed45e6ff5f6e8ca4b34e72850f865bd30462fc..f9f16dacb3969b832132863cda013f883c1d39ae 100755 (executable)
 #!/bin/sh
 
+if [ -z "$RELEASETYPE" ]; then
+       export RELEASETYPE=autobuild
+       #export RELEASETYPE=release
+fi
+
+case "$RELEASETYPE" in
+       autobuild)
+               RELEASETYPEDIR=
+               RELEASETYPENAME="$RELEASETYPE"
+               ;;
+       RC*)
+               RELEASETYPEDIR="$RELEASETYPE/"
+               RELEASETYPENAME="Release Candidate"
+               ;;
+       *)
+               RELEASETYPEDIR="$RELEASETYPE/"
+               RELEASETYPENAME="$RELEASETYPE-like build"
+               ;;
+esac
+
 # is being run as cronjob, better set PATH
-export PATH=/home/xonotic-build/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
+export PATH=/home/xonotic-build/ccache:/home/xonotic-build/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
+
+# TEST: use s2tc, high quality
+#export dds_tool=s2tc
+
+# Try crunch.
+export CACHEDIR=$HOME/.xonotic-cached-converter-crunch
+export dds_tool=crunch
+
+# Build locally.
+export HOSTS_THAT_ARE_MYSELF='xonotic-build-win32 xonotic-build-win64 xonotic-build-osx'
+export HOSTS_THAT_ARE_SCHROOT='xonotic-build-linux64'
 
 mepwd=$PWD
 me=$0
-if ! lockfile-create "$me"; then
-       exit 1
+
+if rm "$me.not-today" 2>/dev/null; then
+       echo "No build today (not-today marker removed)!"
+       exit 0
 fi
-lockfile-touch "$me" & lockpid=$!
-trap 'kill $lockpid || true; cd "$mepwd"; lockfile-remove "$me"' EXIT
-trap 'exit 1' INT TERM
 
 set -ex
-export HOSTS_THAT_ARE_MYSELF="xonotic-build-win32 xonotic-build-win64"
-export HOSTS_THAT_ARE_DISABLED=""
-ssh xonotic-beta '
-       cd autobuild/;
-       s0=`date -d "now - 7 days - 12 hours" +%s`;
+
+test -z "$RELEASETYPEDIR" && ssh autobuild-release-uploader@beta.xonotic.org '
+       set -e;
+       s0=`date -d "now - 30 days - 12 hours" +%s`;
        s00=`date -d "now - 60 days - 12 hours" +%s`;
-       for X in *; do
+       for X in * */*; do
                [ -f "$X" ] || continue;
-               d=${X#Xonotic-};
-               d=${d%%[_-.]*};
+               d=${X##*/};
+               d=${d#Xonotic-};
+               d=${d#gmqcc-};
+               d=${d%%[-_.]*};
                [ x"$d" != x"latest" ] || continue;
                w=`date -d $d +%w`;
                s=`date -d $d +%s`;
+               w=$(($w % 2));
                if [ "$w" -ne 0 -a "$s" -lt "$s0" -o "$s" -lt "$s00" ]; then
                        rm -f "$X";
                fi;
        done
 '
+
 cd ~/xonotic-release-build
 ./all clean --reclone
+# ./all checkout maint
+./all checkout
 ./all each git checkout HEAD^0
 # add all feature branches we want
 
 # map branches that we include:
 #   winners in the poll for upcoming CTF maps
 #   maps near completion
-# uncomment below when a branch is needed
-# the listed branches are examples only
 
 #for b in \
-#      origin/fruitiex/runningmanctf \
-#      origin/mintox/geoplanetary
-#do
+#      origin/divVerent/selfbuildagain \
+#; do
 #      b=$b ./all each sh -c 'if git rev-parse $b >/dev/null 2>&1; then git merge $b; fi'
 #done
 ./all update -N
+./all each git restore-mtime --commit-time # adding --merge would be more correct but is slow and hits git limits
 d0=`date +%Y%m%d`
 d=$d0
 i=1
-while HEAD http://xonotic:g-23@beta.xonotic.org/autobuild/"Xonotic-$d.zip"; do
+while HEAD -C xonotic:g-23 http://beta.xonotic.org/autobuild/"$RELEASETYPEDIR""Xonotic-$d.zip"; do
        i=$(($i+1))
        d="$d0"_"$i"
 done
-RELEASETYPE=beta RELEASEDATE=$d ./all release
-for X in Xonotic-$d*.zip; do
-       ln -snf "$X" "Xonotic-latest${X#Xonotic-$d}"
-done
-rsync -vaSHP Xonotic*.zip xonotic-beta:autobuild/
-ssh xonotic-beta sh update-rsync.sh "$d"
-echo "Finished a new beta build at http://beta.xonotic.org/autobuild/" | $IRCSPAM
+RELEASEDATE=$d ./all release
+sha512sum Xonotic-$d*.zip > Xonotic-$d.sha512
+if [ -z "$RELEASETYPEDIR" ]; then
+       sleep 1 # newer timestamps for correct file sort order in web gui
+       for X in Xonotic-$d*.zip; do
+               ln -snf "$X" "Xonotic-latest${X#Xonotic-$d}"
+       done
+       sha512sum Xonotic-latest*.zip > Xonotic-latest.sha512
+fi
+rsync -vaSHP Xonotic*.zip Xonotic*.sha512 autobuild-release-uploader@beta.xonotic.org:"$RELEASETYPEDIR"
+if [ -z "$RELEASETYPEDIR" ]; then
+       ssh autobuild-release-uploader@beta.xonotic.org sh ../../update-rsync.sh "$d"
+
+       # pipeline files, see: .gitlab-ci.yml in xonotic-data.pk3dir
+       cp data/stormkeep-????????????????????????????????????????-????????????????????????????????????????.pk3 stormkeep.pk3
+       PIPELINE_FILES="gmqcc/gmqcc Xonotic/xonotic-linux64-dedicated stormkeep.pk3"
+       rsync -vSP $PIPELINE_FILES autobuild-release-uploader@beta.xonotic.org:../pipeline-bin/
+       rm -f stormkeep.pk3
+fi
+echo "Finished a new $RELEASETYPENAME at http://beta.xonotic.org/autobuild/$RELEASETYPEDIR" | $IRCSPAM
 cd
diff --git a/misc/logos/xonotic-glx.desktop b/misc/logos/xonotic-glx.desktop
deleted file mode 100644 (file)
index e8873c8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-[Desktop Entry]
-Type=Application
-Version=1.0
-Name=Xonotic (GLX)
-Comment=Multiplayer, deathmatch oriented first person shooter
-Comment[de]=Deathmatch- und Mehrspieler-orientierter Ego-Shooter
-Comment[fr]=Jeu de tir Ã  la première personne multijoueur
-Icon=xonotic
-Exec=xonotic-glx
-Terminal=false
-PrefersNonDefaultGPU=true
-StartupNotify=false
-Categories=Game;ActionGame;
index 5d2b7557417221f9732bee91964d26523604cc37..215127d0ef55d698d3493c991dbe2781b8aa3cf5 100644 (file)
@@ -18,6 +18,7 @@
       Xonotic ist ein freier und schneller Ego-Shooter, der ein
       Gameplay im Arenastil mit hektischen Manövern und einer großen Auswahl
       an Waffen kombiniert.
+    </p>
     <p xml:lang="fr">
       Xonotic est un jeu de tir Ã  la première personne gratuit, qui combine un
       style de jeu en arène rapide et addictif avec une large sélection d'armes.
@@ -38,6 +39,7 @@
       bis zu gesponsorten Turnieren ermöglicht Xonotic jedem E-Sport-Liebhaber
       eine Teilnahme in Wettbewerben, die von der aufgeschlossenen Gemeinschaft
       veranstaltet werden.
+    </p>
     <p xml:lang="fr">
       Xonotic est facile Ã  apprendre, mais difficile Ã  maîtriser ! Outre une
       action intense pour les joueurs débutants, le jeu propose aussi des
@@ -54,6 +56,7 @@
       Einstellungen und Server, ein funktionierendes Anti-Cheat-System,
       der Zuschauermodus, und die Möglichkeit, Spielen zuzusehen und
       sie aufzuzeichnen, machen Xonotic interessant für wetteifernde Spieler.
+    </p>
     <p xml:lang="fr">
       Des fonctionnalités comme les items Ã  apparence simplifiée, des
       configurations et serveurs entièrement personnalisables, un système
       compétitifs.
     </p>
   </description>
-  <url type="homepage">https://www.xonotic.org</url>
+  <url type="homepage">https://xonotic.org</url>
   <screenshots>
-    <screenshot type="default">https://www.xonotic.org/m/uploads/2012/07/frontpage_005.jpg</screenshot>
-    <screenshot>https://www.xonotic.org/m/uploads/2012/07/frontpage_006.jpg</screenshot>
-    <screenshot>https://www.xonotic.org/m/uploads/2012/07/frontpage_007.jpg</screenshot>
-    <screenshot>https://www.xonotic.org/m/uploads/2012/07/frontpage_008.jpg</screenshot>
-    <screenshot>https://www.xonotic.org/m/uploads/2012/07/frontpage_003.jpg</screenshot>
+    <screenshot type="default">https://xonotic.org/m/uploads/2012/07/frontpage_005.jpg</screenshot>
+    <screenshot>https://xonotic.org/m/uploads/2012/07/frontpage_006.jpg</screenshot>
+    <screenshot>https://xonotic.org/m/uploads/2012/07/frontpage_007.jpg</screenshot>
+    <screenshot>https://xonotic.org/m/uploads/2012/07/frontpage_008.jpg</screenshot>
+    <screenshot>https://xonotic.org/m/uploads/2012/07/frontpage_003.jpg</screenshot>
   </screenshots>
   <update_contact>mail@asciiwolf.com</update_contact>
   <content_rating type="oars-1.1">
index 03499ba98cdfec3f7edc38f91882bd688027be5d..68f092a26fd0e6ada890b9db863fd79efad6d099 100644 (file)
@@ -7,13 +7,14 @@ allrepos()
        "$@" data/xonotic-data.pk3dir      xonotic-data.pk3dir.git      master         ""
        "$@" data/xonotic-music.pk3dir     xonotic-music.pk3dir.git     master         ""
        "$@" data/xonotic-nexcompat.pk3dir xonotic-nexcompat.pk3dir.git master         "no"
-       "$@" darkplaces                    darkplaces.git               div0-stable    "svn"
+       "$@" data/xonotic-xoncompat.pk3dir xonotic-xoncompat.pk3dir.git main           "no"
+       "$@" darkplaces                    darkplaces.git               master         ""
        "$@" netradiant                    netradiant.git               master         ""
        "$@" div0-gittools                 div0-gittools.git            master         "no"
        "$@" d0_blind_id                   d0_blind_id.git              master         ""
        "$@" data/xonotic-maps.pk3dir      xonotic-maps.pk3dir.git      master         ""
        "$@" mediasource                   mediasource.git              master         "no"
-       "$@" gmqcc                         gmqcc.git                    master         ""
+       "$@" gmqcc                         gmqcc.git                    main           ""
        "$@" xonstat                       xonstat.git                  master         "no"
        "$@" xonstatdb                     xonstatdb.git                master         "no"
        "$@" xonotic.org                   xonotic.org.git              master         "no"
@@ -34,9 +35,9 @@ allmirrors()
        # Gitlab host (divVerent).
        "$@" http gitlab   https://gitlab.com/xonotic/     ''
 
-       # German host (divVerent).
-       "$@" git  de   git://de.git.xonotic.org/xonotic/   ''
-       "$@" http de   http://de.git.xonotic.org/xonotic/  ''
+       # German host - disabled (divVerent).
+       "$@" git  ''   git://de.git.xonotic.org/xonotic/   ''
+       "$@" http ''   http://de.git.xonotic.org/xonotic/  ''
 
        # Pushing destination (authoritative server; merlijn).
        "$@" ssh  push ssh://git@gitlab.com/xonotic/       ''
index ac6594fbf8214f39f84974beec21906046bd1d21..88aefa28e799ce9098d7beba4344889582d8072f 100644 (file)
@@ -452,7 +452,7 @@ case "$cmd" in
                allrepos ifrepoenabled 0 fix_config_
                ;;
        keygen)
-               if [ -f ~/.ssh/id_rsa.pub ]; then
+               if [ -f ~/.ssh/id_ef25519.pub ]; then
                        msg ""
                        msg "A key already exists and no new one will be generated. If you"
                        msg "already have done the procedure for getting your key approved, you"
@@ -461,7 +461,22 @@ case "$cmd" in
                        msg "To get access, your key has to be approved first. For that, visit"
                        msg "$gitsite_url, then log in, enter the"
                        msg "\"xonotic\" project, create an \"Issue\" tagged \"Repository Access\""
-                       msg "to apply for access and paste the following output into the issue:"
+                       msg "to apply for access."
+                       msg ""
+                       msg "After that, go to your profile settings, \"SSH Keys\", \"Add SSH Key\""
+                       msg "and paste the following output:"
+                       msg ""
+                       msg "`cat ~/.ssh/id_ef25519.pub`"
+               elif [ -f ~/.ssh/id_rsa.pub ]; then
+                       msg ""
+                       msg "A key already exists and no new one will be generated. If you"
+                       msg "already have done the procedure for getting your key approved, you"
+                       msg "can skip the following paragraph and already use the repository."
+                       msg ""
+                       msg "To get access, your key has to be approved first. For that, visit"
+                       msg "$gitsite_url, then log in, enter the"
+                       msg "\"xonotic\" project, create an \"Issue\" tagged \"Repository Access\""
+                       msg "to apply for access."
                        msg ""
                        msg "After that, go to your profile settings, \"SSH Keys\", \"Add SSH Key\""
                        msg "and paste the following output:"
@@ -476,7 +491,7 @@ case "$cmd" in
                        msg "To get access, your key has to be approved first. For that, visit"
                        msg "$gitsite_url, then log in, enter the"
                        msg "\"xonotic\" project, create an \"Issue\" tagged \"Repository Access\""
-                       msg "to apply for access and paste the following output into the issue:"
+                       msg "to apply for access."
                        msg ""
                        msg "After that, go to your profile settings, \"SSH Keys\", \"Add SSH Key\""
                        msg "and paste the following output:"
@@ -494,7 +509,7 @@ case "$cmd" in
                        msg "To get access, your key has to be approved first. For that, visit"
                        msg "$gitsite_url, then log in, enter the"
                        msg "\"xonotic\" project, create an \"Issue\" tagged \"Repository Access\""
-                       msg "to apply for access and paste the following output into the issue:"
+                       msg "to apply for access."
                        msg ""
                        msg "After that, go to your profile settings, \"SSH Keys\", \"Add SSH Key\""
                        msg "and paste the following output:"
@@ -577,7 +592,7 @@ case "$cmd" in
                        fi
                        shift
                done
-               
+
                if $need_bestmirror; then
                        newbase=`bestmirror "$base" "$newprotocol" "$newlocation"`
                        if [ -z "$newbase" ]; then
@@ -947,7 +962,6 @@ case "$cmd" in
                                                verbose git branch -D "${B#refs/heads/}"
                                        fi
                                done
-                               git rev-parse refs/heads/master >/dev/null 2>&1 || verbose git branch --track master origin/master || true
                                git rev-parse "refs/heads/$branch" >/dev/null 2>&1 || verbose git branch --track "$branch" origin/"$branch" || true
                        fi
                        checkself "$cmd" "$@"
index 682603cec21e4b1357404fbb13071f26abc3a1e9..54f7c8c5530d5f2760750a499641175b8080f25a 100644 (file)
@@ -2,6 +2,13 @@ release_common()
 {
        export LC_ALL=C
 
+       if [ -z "$MAKEFLAGS" ]; then
+               ncpus=`getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null || echo 1`
+               if [ $ncpus -gt 1 ]; then
+                       export MAKEFLAGS=-j$ncpus
+               fi
+       fi
+
        release_args="$cmd $*"
        msg "*** $release_args: start"
        release_starttime=`date +%s`
@@ -29,15 +36,15 @@ release_common()
                # try to create a hardlink
                if ln -f "$release_src/.git/HEAD" "$release_dst/.hardlink-test"; then
                        rm -f "$release_dst/.hardlink-test"
-                       {
-                               verbose cd "$release_src"
-                               git ls-files HEAD -- "$@"
-                       } | {
+                       git -C "$release_src" ls-files HEAD -- "$@" |
                                while IFS= read -r F; do
                                        case "$F" in */*) mkdir -p "$release_dst/${F%/*}" ;; esac
                                        verbose ln -f "$release_src/$F" "$release_dst/$F"
                                done
-                       }
+                       git -C "$release_src" ls-tree -rd --name-only HEAD -- "$@" |
+                               while IFS= read -r D; do
+                                       touch -cr "$release_src/$D" "$release_dst/$D"
+                               done
                else
                        {
                                verbose cd "$release_src"
@@ -53,26 +60,25 @@ release_common()
        {
                archive=$1; shift
 
-               # get rid of this hack once we have done large enough changes
-               # to be no longer rsync compatible (and then enable the below
-               # code)
+               # bones_was_here: 7za still doesn't store symlinks correctly (even with -snl)
+               # but it does now store the executable bit.
+               # compared to advzip, 7za achieves very similar final zip size, is multi threaded,
+               # and avoids https://gitlab.com/xonotic/xonotic/-/issues/371
+
                sevenzipflags=-mx=9
                zipflags=-9
-               find "$@" -exec touch -d "2001-01-01 01:01:01 +0000" {} \+ # ugly hack to make the pk3 files rsync-friendly
+               # git restore-mtime replaces this hack:
+               #find "$@" -exec touch -d "2001-01-01 01:01:01 +0000" {} \+ # ugly hack to make the pk3 files rsync-friendly
                ziplist=`mktemp`
-               find "$@" -xtype f \( -executable -or -type l \) -print | sed 's,\([./][^./]*$\),\1 \1,' | sort -k2 | cut -d\  -f1 > "$ziplist"
+               find "$@" -xtype f \( -type l \) -print | sed 's,\([./][^./]*$\),\1 \1,' | sort -k2 | cut -d\  -f1 > "$ziplist"
                7za a -tzip $sevenzipflags -x@"$ziplist" "$archive" "$@" || true
                zip         $zipflags -y   -@<"$ziplist" "$archive"      || true
                rm -f "$ziplist"
-
-               #zipflags=-1r
-               #find "$@" -exec touch -d "2001-01-01 01:01:01 +0000" {} \+ # ugly hack to make the pk3 files rsync-friendly
-               #zip $zipflags -y "$archive" "$@" || true
-               #advzip -4 "$archive"
        }
 
        mkzip()
        {
+               # not using this currently, see above
                archive=$1; shift
                zipflags=-1ry
                zip $zipflags "$archive" "$@" || true
@@ -131,9 +137,8 @@ case "$cmd" in
                                #   host names are reachable and have a compile
                                #   infrastructure set up:
                                #   - xonotic-build-linux64 (with gcc on x86_64)
-                               #   - xonotic-build-win32 (with i586-mingw32msvc-g++)
-                               #   - xonotic-build-win64 (with amd64-mingw32msvc-g++
-                               #     and amd64-mingw32msvc-g++)
+                               #   - xonotic-build-win32 (with i686-w64-mingw32)
+                               #   - xonotic-build-win64 (with x86_64-w64-mingw32)
                                #   - xonotic-build-osx (with Xcode and SDL.framework)
                                # - AMD Compressonator installed in WINE
                                # - ResEdit installed in WINE
@@ -144,7 +149,7 @@ case "$cmd" in
                                #   (YYYYMMDD)
                                exit 1
                                ;;
-                       release)
+                       release|RC*)
                                msg "Building a FINISHED RELEASE"
                                getversion data/xonotic-data.pk3dir
                                verbose "$SELF" each -k git tag -m "TEMP TAG" -f "xonotic-v$versionstr"
@@ -158,7 +163,7 @@ case "$cmd" in
                if [ -n "$RELEASEDATE" ]; then
                        verbose $ECHO "$RELEASEDATE" > Xonotic/stamp.txt
                        case "$RELEASETYPE" in
-                               release)
+                               release|RC*)
                                        verbose $ECHO "${RELEASEDATE%_*}" > Xonotic/pk3stamp.txt
                                        ;;
                                *)
@@ -169,39 +174,94 @@ case "$cmd" in
                        verbose date +%Y%m%d > Xonotic/stamp.txt
                        verbose date +%Y%m%d > Xonotic/pk3stamp.txt
                fi
-               release_git_extract_dir "." "Xonotic" Docs misc server xonotic-linux-glx.sh xonotic-linux-sdl.sh xonotic-linux-dedicated.sh Makefile misc/buildfiles key_0.d0pk COPYING GPL-2 GPL-3
+               release_git_extract_dir "." "Xonotic" Docs misc/buildfiles/osx misc/logos misc/tools server xonotic-linux-sdl.sh xonotic-linux-dedicated.sh Makefile key_0.d0pk COPYING GPL-2 GPL-3
                (
                        verbose cd Xonotic
                        verbose mkdir data source source/darkplaces source/gmqcc source/d0_blind_id mapping
-                       verbose rm -rf misc/builddeps
-                       verbose mv misc/buildfiles/win32 bin32 || true
-                       verbose mv bin32/SDL.dll . || true
-                       verbose mv misc/buildfiles/win64 bin64 || true
                        verbose mv misc/buildfiles/osx/* . || true
                        verbose rm -rf misc/buildfiles
-                       verbose rm -rf misc/pki
+                       verbose rm -rf misc/tools/all
                )
                release_git_extract_dir "darkplaces" "Xonotic/source/darkplaces" .
                release_git_extract_dir "gmqcc" "Xonotic/source/gmqcc" .
                release_git_extract_dir "data/xonotic-data.pk3dir" "Xonotic/source" qcsrc Makefile
                release_git_extract_dir "d0_blind_id" "Xonotic/source/d0_blind_id" .
-               (
-                       verbose cd Xonotic/source/d0_blind_id
-                       verbose sh autogen.sh
-               )
+# bones_was_here: the main Makefile runs autogen.sh (and configure) when necessary
+#              (
+#                      verbose cd Xonotic/source/d0_blind_id
+#                      verbose sh autogen.sh
+#              )
                rm -f Xonotic/key_15.d0pk
                (
                        verbose cd Xonotic/mapping
-                       verbose wget http://www.icculus.org/netradiant/files/netradiant-1.5.0-20120301.tar.bz2
-                       verbose wget http://www.icculus.org/netradiant/files/netradiant-1.5.0-20120301-win32-7z.exe
-                       for X in *-7z.exe; do
-                               7za x "$X"
-                               rm -f "$X"
-                       done
+                       # bones_was_here: don't ship 10 year old netradiant
+                       # also seems better to update netradiant independently of xonotic versions
+                       #verbose wget http://www.icculus.org/netradiant/files/netradiant-1.5.0-20120301.tar.bz2
+                       #verbose wget http://www.icculus.org/netradiant/files/netradiant-1.5.0-20120301-win32-7z.exe
+                       #for X in *-7z.exe; do
+                       #       7za x "$X"
+                       #       rm -f "$X"
+                       #done
                        # TODO possibly include other tools?
+                       printf "Please find links to NetRadiant builds at https://netradiant.gitlab.io or https://xonotic.org/download\nNetRadiant source available at https://gitlab.com/xonotic/netradiant\n" > NetRadiant\ links.txt
                )
                ./all each git rev-parse HEAD > Xonotic/misc/git-revisions.txt
                ;;
+       release-compile-run)
+               release_common
+               host=$1
+               buildpath=$2
+               maketargets=$3
+               makeflags=$4
+               srcdir=$5
+               depsdir=$6
+               targetfiles=$7
+               schroot=
+               set -x
+               if [ -z "$targetfiles" ]; then
+                       exit
+               fi
+               case " $HOSTS_THAT_ARE_DISABLED " in
+                       *\ $host\ *)
+                               exit
+                               ;;
+               esac
+               case " $HOSTS_THAT_ARE_SCHROOT " in
+                       *\ $host\ *)
+                               schroot="schroot -c $host --preserve-environment --"
+                               ;;
+               esac
+               case " $HOSTS_THAT_ARE_MYSELF $HOSTS_THAT_ARE_SCHROOT " in
+                       *\ $host\ *)
+                               verbose rsync --delete -zLvaSHP "$srcdir"/ "$buildpath/"
+                               verbose rsync --delete -zLvaSHP misc/logos/icons_ico/xonotic.ico "$buildpath"/darkplaces.ico
+                               verbose rsync --delete -zLvaSHP "$depsdir"/*/ "$buildpath.deps/"
+                               verbose ln -snf "$buildpath.deps" "$buildpath/.deps"
+                               verbose eval $schroot make -C "$buildpath" clean $maketargets $makeflags
+                               for f in $targetfiles; do
+                                       verbose mv "$buildpath/${f%:*}" "${f##*:}" || true
+                               done
+                               ;;
+                       *)
+                               verbose rsync --delete -zLvaSHP "$srcdir"/ "$host":"$buildpath/"
+                               verbose rsync --delete -zLvaSHP misc/logos/icons_ico/xonotic.ico "$host":"$buildpath"/darkplaces.ico
+                               verbose rsync --delete -zLvaSHP "$depsdir"/*/ "$host":"$buildpath.deps/"
+                               verbose ssh "$host" "[ -f /etc/profile ] && . /etc/profile; [ -f ~/.profile ] && . ~/.profile; export LC_ALL=C; ln -snf $buildpath.deps $buildpath/.deps && cd $buildpath && nice -`nice` make clean $maketargets $makeflags"
+                               for f in $targetfiles; do
+                                       verbose rsync -zvaSHP "$host:$buildpath/${f%:*}" "${f##*:}" || true
+                               done
+                               ;;
+               esac
+               ;;
+       release-compile)
+               release_common
+               suffix=$1
+               makeflags=$2
+               darkplaces_maketargets=$3
+               darkplaces_files=$4
+               host=xonotic-build-$suffix
+               verbose "$SELF" release-compile-run "$host" /tmp/Darkplaces.build."$suffix" "$darkplaces_maketargets" "$makeflags" "Xonotic/source/darkplaces" "$d0/misc/builddeps/$suffix" "$darkplaces_files"
+               ;;
        release-getbinary)
                release_common
                binary=$1
@@ -217,34 +277,132 @@ case "$cmd" in
                                ;;
                esac
                ;;
+       release-libs-compile)
+               release_common
+               arch=$1
+               makeflags=$2
+               host=$3
+               (
+                       verbose cd "$d0/d0_blind_id"
+                       verbose ./autogen.sh
+                       verbose ./configure --enable-static --disable-shared \
+                                           --host="$host" \
+                                           --prefix="$d0/misc/builddeps/$arch/d0_blind_id"
+                       verbose make clean
+                       verbose eval make "$makeflags"
+                       verbose make install
+               )
+               ;;
+       release-libs-linux64)
+               release_common
+               # TODO schroot support for libs so we can LTO this
+               verbose "$SELF" release-libs-compile linux64 \
+                       'CC="gcc -m64"' \
+                       x86_64-pc-linux-gnu
+               ;;
+       release-dlls-compile)
+               release_common
+               arch=$1
+               buildpath=$2
+               targetdir=$3
+               verbose mkdir -p "$targetdir"
+               (
+                       cd "$d0/misc/buildsrc"
+                       verbose ./dlls.sh clean "$buildpath"
+                       verbose ./dlls.sh all "$buildpath" "$arch"
+               )
+               verbose cp -v $buildpath/out/$arch/* "$targetdir"
+
+               # SDL2
+               verbose mkdir -p "$d0/misc/builddeps/$arch/"
+               verbose rsync --delete -avP "$buildpath/pkg/$arch/sdl" "$d0/misc/builddeps/$arch/"
+               # PKG_CONFIG HACK: avoids needing to modify sdl2-config
+               verbose printf '#!/bin/sh\nprintf ../../../.deps/lib\n' > "$d0/misc/builddeps/$arch/sdl/libdir_hack.sh"
+               verbose chmod +x "$d0/misc/builddeps/$arch/sdl/libdir_hack.sh"
+               ;;
+       release-dlls-win32)
+               release_common
+               verbose "$SELF" release-dlls-compile win32 /tmp/dlls Xonotic/bin32
+               ;;
+       release-dlls-win64)
+               release_common
+               verbose "$SELF" release-dlls-compile win64 /tmp/dlls Xonotic/bin64
+               ;;
+       release-libs-osx)
+               release_common
+               verbose mkdir -p "$d0/misc/builddeps/osx"
+               (
+                       verbose cd "$d0/misc/builddeps/osx"
+                       verbose rm -rf sdl SDL2
+                       verbose wget https://libsdl.org/release/SDL2-2.28.5.dmg
+                       verbose 7z x *.dmg
+                       # 7z still fails to extract working symlinks from any archive format, hackaround:
+                       verbose ln -sf $(cat SDL2/SDL2.framework/Versions/Current) SDL2/SDL2.framework/Versions/Current
+                       verbose ln -sf $(cat SDL2/SDL2.framework/Headers) SDL2/SDL2.framework/Headers
+                       verbose ln -sf $(cat SDL2/SDL2.framework/Resources) SDL2/SDL2.framework/Resources
+                       verbose ln -sf $(cat SDL2/SDL2.framework/SDL2) SDL2/SDL2.framework/SDL2
+                       # THE HEADERS ARE NOT IN A SUBDIRECTORY CALLED SDL2
+                       # YET SDL2/ WAS ADDED TO ALL THE INCLUDES, WHY?!?
+                       # OLD VERSIONS WITHOUT IT WORKED
+                       verbose sed -i "s/#include <SDL2\//#include </g" SDL2/SDL2.framework/Versions/Current/Headers/*.h
+                       # The dirs are extracted with 700 permissions which breaks the rsync updater
+                       find SDL2 -type d -exec chmod 755 {} \;
+                       # macOS prefers dylibs be marked executable (this one has no file extension)
+                       verbose chmod 755 SDL2/SDL2.framework/Versions/Current/SDL2
+               )
+               cp -R "$d0/misc/builddeps/osx/SDL2/SDL2.framework" Xonotic/Xonotic.app/Contents/Frameworks/
+               ;;
+       release-libs)
+               release_common
+               verbose "$SELF" release-libs-linux64
+               verbose "$SELF" release-dlls-win32
+               verbose "$SELF" release-dlls-win64
+               verbose "$SELF" release-libs-osx
+               verbose rm -rf /tmp/dlls
+               ;;
        release-engine-win32)
                release_common
-               good=true
-               verbose "$SELF" release-getbinary Xonotic/xonotic-x86.exe || good=false
-               verbose "$SELF" release-getbinary Xonotic/xonotic-x86-dedicated.exe || good=false
-               $good
+               #good=true
+               #verbose "$SELF" release-getbinary Xonotic/xonotic-x86.exe || good=false
+               #verbose "$SELF" release-getbinary Xonotic/xonotic-x86-dedicated.exe || good=false
+               #$good
+               verbose "$SELF" release-compile win32 \
+                       'DP_MAKE_TARGET=mingw WIN32RELEASE=1 CC="i686-w64-mingw32-gcc -static -flto=auto -mstackrealign -Wl,--dynamicbase -Wl,--nxcompat -I../../../.deps/include -L../../../.deps/lib" WINDRES="i686-w64-mingw32-windres" DP_LINK_SDL=static PKG_CONFIG="../../../.deps/libdir_hack.sh" SDL_CONFIG="../../../.deps/bin/sdl2-config" DP_LINK_CRYPTO=dlopen DP_LINK_CRYPTO_RIJNDAEL=dlopen DP_LINK_JPEG=dlopen DP_LINK_ODE=dlopen DP_LINK_ZLIB=dlopen DP_LINK_XMP=dlopen' \
+                       release 'darkplaces-sdl.exe:Xonotic/xonotic-x86.exe darkplaces-dedicated.exe:Xonotic/xonotic-x86-dedicated.exe'
                ;;
        release-engine-win64)
                release_common
-               good=true
-               verbose "$SELF" release-getbinary Xonotic/xonotic.exe || good=false
-               verbose "$SELF" release-getbinary Xonotic/xonotic-dedicated.exe || good=false
-               $good
+               #good=true
+               #verbose "$SELF" release-getbinary Xonotic/xonotic.exe || good=false
+               #verbose "$SELF" release-getbinary Xonotic/xonotic-dedicated.exe || good=false
+               #$good
+               # PKG_CONFIG HACK: avoids needing to modify sdl2-config
+               verbose "$SELF" release-compile win64 \
+                       'DP_MAKE_TARGET=mingw WIN64RELEASE=1 CC="x86_64-w64-mingw32-gcc -static -flto=auto -Wl,--dynamicbase -Wl,--nxcompat -I../../../.deps/include -L../../../.deps/lib" WINDRES="x86_64-w64-mingw32-windres" DP_LINK_SDL=static PKG_CONFIG="../../../.deps/libdir_hack.sh" SDL_CONFIG="../../../.deps/bin/sdl2-config" DP_LINK_CRYPTO=dlopen DP_LINK_CRYPTO_RIJNDAEL=dlopen DP_LINK_JPEG=dlopen DP_LINK_ODE=dlopen DP_LINK_ZLIB=dlopen DP_LINK_XMP=dlopen' \
+                       release 'darkplaces-sdl.exe:Xonotic/xonotic.exe darkplaces-dedicated.exe:Xonotic/xonotic-dedicated.exe'
                ;;
        release-engine-osx)
                release_common
-               good=true
-               verbose "$SELF" release-getbinary Xonotic/Xonotic.app/Contents/MacOS/xonotic-osx-sdl-bin || good=false
-               verbose "$SELF" release-getbinary Xonotic/xonotic-osx-dedicated || good=false
-               $good
+               #good=true
+               #verbose "$SELF" release-getbinary Xonotic/Xonotic.app/Contents/MacOS/xonotic-osx-sdl-bin || good=false
+               #verbose "$SELF" release-getbinary Xonotic/xonotic-osx-dedicated || good=false
+               #$good
+               # Note: travis build script also had SDLCONFIG_MACOSX* flags; need to check if they're still needed with osxcross.
+               # Note: Mac bins cannot be stripped by the standard tool.
+               verbose "$SELF" release-compile osx \
+                       'STRIP=: DP_MAKE_TARGET=macosx PATH="$HOME/osxcross/out/bin:$PATH" CC="$HOME/osxcross/out/bin/o64-clang -flto -arch x86_64 -mmacosx-version-min=10.7 -Wl,-rpath -Wl,@loader_path/../Frameworks -Wl,-rpath -Wl,@loader_path -I../../../.deps/include -L../../../.deps/lib" DP_LINK_SDL=shared SDLCONFIG_MACOSXCFLAGS="-I../../../.deps/SDL2.framework/Headers" SDLCONFIG_MACOSXLIBS="-F../../../.deps -framework SDL2 -framework Cocoa -I../../../.deps/SDL2.framework/Headers" SDLCONFIG_MACOSXSTATICLIBS="-F../../../.deps -framework SDL2 -framework Cocoa -I../../../.deps/SDL2.framework/Headers" DP_LINK_CRYPTO=dlopen DP_LINK_CRYPTO_RIJNDAEL=dlopen DP_LINK_JPEG=dlopen DP_LINK_ODE=dlopen DP_LINK_ZLIB=shared DP_LINK_XMP=dlopen' \
+                       release 'darkplaces-sdl:Xonotic/Xonotic.app/Contents/MacOS/xonotic-osx-sdl-bin darkplaces-dedicated:Xonotic/xonotic-osx-dedicated'
                ;;
        release-engine-linux64)
                release_common
-               good=true
-               verbose "$SELF" release-getbinary Xonotic/xonotic-linux64-sdl || good=false
-               verbose "$SELF" release-getbinary Xonotic/xonotic-linux64-glx || good=false
-               verbose "$SELF" release-getbinary Xonotic/xonotic-linux64-dedicated || good=false
-               $good
+               #good=true
+               #verbose "$SELF" release-getbinary Xonotic/xonotic-linux64-sdl || good=false
+               #verbose "$SELF" release-getbinary Xonotic/xonotic-linux64-glx || good=false
+               #verbose "$SELF" release-getbinary Xonotic/xonotic-linux64-dedicated || good=false
+               #$good
+               verbose "$SELF" release-compile linux64 \
+                       'CC="gcc -m64 -flto=auto -I../../../.deps/include -L../../../.deps/lib" DP_LINK_SDL=shared DP_LINK_ZLIB=shared DP_LINK_JPEG=static DP_LINK_ODE=dlopen DP_LINK_CRYPTO=static_inc_gmp DP_LINK_CRYPTO_RIJNDAEL=static DP_LINK_XMP=dlopen' \
+                       release 'darkplaces-sdl:Xonotic/xonotic-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux64-dedicated'
                ;;
        release-engine)
                release_common
@@ -263,7 +421,7 @@ case "$cmd" in
        release-qc)
                release_common
                verbose make -C "$d0/gmqcc" gmqcc
-               verbose env GIT_DIR="$d0/data/xonotic-data.pk3dir/.git" make -C Xonotic/source QCC="$d0/gmqcc/gmqcc" XON_BUILDSYSTEM=1 clean qc
+               verbose env GIT_DIR="$d0/data/xonotic-data.pk3dir/.git" make -C Xonotic/source QCC="$d0/gmqcc/gmqcc" XON_BUILDSYSTEM=1 QCCFLAGS_WATERMARK='$(shell git describe --tags)' clean qc
                ;;
        release-buildpk3-transform-raw)
                release_common
@@ -300,55 +458,12 @@ case "$cmd" in
                verbose export del_src=true
                find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
                ;;
-       release-buildpk3-transform-low)
-               release_common
-               dir=$1
-               verbose cd "$dir"
-               # texture: convert to jpeg and dds
-               # music: reduce bitrate
-               verbose export do_jpeg=true
-               verbose export jpeg_qual_rgb=80
-               verbose export jpeg_qual_a=97
-               verbose export do_dds=false
-               verbose export do_ogg=true
-               verbose export ogg_qual=1
-               verbose export del_src=true
-               find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
-               ;;
-       release-buildpk3-transform-webp)
-               release_common
-               dir=$1
-               verbose cd "$dir"
-               # texture: convert to jpeg and dds
-               verbose export do_jpeg=false
-               verbose export do_webp=true
-               verbose export do_dds=false
-               verbose export do_ogg=false
-               verbose export ogg_ogg=false
-               verbose export del_src=true
-               find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
-               ;;
-       release-buildpk3-transform-lowdds)
-               release_common
-               dir=$1
-               verbose cd "$dir"
-               # texture: convert to jpeg and dds
-               # music: reduce bitrate
-               verbose export do_jpeg=false
-               verbose export do_jpeg_if_not_dds=true
-               verbose export jpeg_qual_rgb=80
-               verbose export jpeg_qual_a=99
-               verbose export do_dds=true
-               verbose export dds_flags=
-               verbose export do_ogg=true
-               verbose export ogg_qual=1
-               verbose export del_src=true
-               find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
-               ;;
        release-buildpk3-transform-mapping)
                release_common
                dir=$1
                verbose cd "$dir"
+               # don't include levelshots, lightmaps and minimaps from official map builds, as well as other unneeded folders
+               rm -rf gfx maps scripts sound
                # remove stuff radiant has no use for
                verbose find . -name \*_norm.\* -exec rm -f {} \;
                verbose find . -name \*_bump.\* -exec rm -f {} \;
@@ -401,6 +516,9 @@ case "$cmd" in
                        case "$RELEASETYPE" in
                                release)
                                        ;;
+                               RC*)
+                                       versionstr="$versionstr $RELEASETYPE"
+                                       ;;
                                *)
                                        versionstr="$versionstr$RELEASETYPE"
                                        ;;
@@ -408,21 +526,23 @@ case "$cmd" in
                        if [ $gv -lt 9900 ]; then
                                # pre-1.0: compatible with any other pre-1.0
                                verbose sed "
-                                       s/^set g_xonoticversion [^ ]* /set g_xonoticversion $versionstr /;
-                                       s/^gameversion_min [0-9]*/gameversion_min     0/;
+                                       s/^set g_xonoticversion [^ ]* /set g_xonoticversion \"$versionstr\" /;
                                        s/^gameversion_max [0-9]*/gameversion_max  9999/;
                                " < xonotic-common.cfg > xonotic-common.cfg.new
+                               # Following line was included in sed above, ref https://gitlab.com/xonotic/xonotic-data.pk3dir/-/merge_requests/1034
+                               # s/^gameversion_min [0-9]*/gameversion_min     0/;
                        else
                                # >= 1.0
                                verbose sed "
-                                       s/^set g_xonoticversion [^ ]* /set g_xonoticversion $versionstr /;
-                                       s/^gameversion_min [0-9]*/gameversion_min $(( ($gv / 100) * 100 - 100 ))/;
+                                       s/^set g_xonoticversion [^ ]* /set g_xonoticversion \"$versionstr\" /;
                                        s/^gameversion_max [0-9]*/gameversion_max $(( ($gv / 100) * 100 + 199 ))/;
                                " < xonotic-common.cfg > xonotic-common.cfg.new
+                               # Following line was included in sed above, ref https://gitlab.com/xonotic/xonotic-data.pk3dir/-/merge_requests/1034
+                               # s/^gameversion_min [0-9]*/gameversion_min $(( ($gv / 100) * 100 - 100 ))/;
                        fi
                        mv xonotic-common.cfg.new xonotic-common.cfg
                        case "$RELEASETYPE" in
-                               release)
+                               release|RC*)
                                        echo "" >> xonotic-common.cfg
                                        echo "// nicer menu" >> xonotic-common.cfg
                                        echo "set menu_watermark \"\"" >> xonotic-common.cfg
@@ -481,10 +601,11 @@ case "$cmd" in
                release_common
                verbose "$SELF" release-buildpk3s data/font-unifont.pk3dir      raw ''
                verbose "$SELF" release-buildpk3s data/font-xolonium.pk3dir     raw ''
-               verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir             low '-low' normaldds ''                    normal '-high'
-               verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir             low '-low' normaldds '' mapping '-mapping' normal '-high'
-               verbose "$SELF" release-buildpk3s data/xonotic-music.pk3dir     raw '' low '-low'
-               verbose "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir        low '-low' normaldds ''                    normal '-high'
+               verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir             normaldds ''                    normal '-high'
+               verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir             normaldds '' mapping '-mapping' normal '-high'
+               verbose "$SELF" release-buildpk3s data/xonotic-music.pk3dir     raw ''
+               verbose "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir        normaldds ''                    normal '-high'
+               verbose "$SELF" release-buildpk3s data/xonotic-xoncompat.pk3dir        normaldds ''                    normal '-high'
                ;;
        release-pack-needsx11)
                release_common
@@ -501,66 +622,58 @@ case "$cmd" in
                release_common
                stamp=`cat Xonotic/stamp.txt`
                pk3stamp=`cat Xonotic/pk3stamp.txt`
-               # exe and dll files do not need +x, so this makes them eligible for 7zip compression too
-               chmod a-x Xonotic/*.exe Xonotic/*.dll || true
-               for suffix in '' '-noaes'; do
-                       # build the archives
-                       verbose mkzip Xonotic-$stamp-enginesource$suffix.zip \
-                               Xonotic/Makefile \
-                               Xonotic/source/darkplaces/ \
-                               Xonotic/COPYING Xonotic/GPL-2 Xonotic/GPL-3
-                       verbose cp Xonotic-$stamp-enginesource$suffix.zip Xonotic-$stamp-engine$suffix.zip
-                       verbose mkzip Xonotic-$stamp-engine$suffix.zip \
-                               Xonotic/*.dll \
-                               Xonotic/bin32/*.dll \
-                               Xonotic/bin64/*.dll \
-                               Xonotic/*.app \
-                               Xonotic/xonotic-* \
-                               Xonotic/xonotic.exe
-                       verbose cp Xonotic-$stamp-engine$suffix.zip Xonotic-$stamp-common$suffix.zip
-                       verbose mkzip Xonotic-$stamp-common$suffix.zip \
-                               Xonotic/source/d0_blind_id/ \
-                               Xonotic/source/gmqcc/ \
-                               Xonotic/source/qcsrc/ \
-                               Xonotic/Docs \
-                               Xonotic/misc \
-                               Xonotic/gmqcc \
-                               Xonotic/server \
-                               Xonotic/key_0.d0pk \
-                               Xonotic/data/font-unifont-$pk3stamp.pk3 \
-                               Xonotic/data/font-xolonium-$pk3stamp.pk3
-                       verbose cp Xonotic-$stamp-enginesource$suffix.zip Xonotic-$stamp-source$suffix.zip
-                       verbose mkzip Xonotic-$stamp-source$suffix.zip \
-                               Xonotic/source/d0_blind_id/ \
-                               Xonotic/source/gmqcc/ \
-                               Xonotic/source/qcsrc/ \
-                               Xonotic/misc/logos
-                       verbose cp Xonotic-$stamp-common$suffix.zip Xonotic-$stamp$suffix.zip
-                       verbose mkzip0 Xonotic-$stamp$suffix.zip \
-                               Xonotic/data/xonotic-$pk3stamp-data.pk3 \
-                               Xonotic/data/xonotic-$pk3stamp-maps.pk3 \
-                               Xonotic/data/xonotic-$pk3stamp-music.pk3 \
-                               Xonotic/data/xonotic-$pk3stamp-nexcompat.pk3
-                       verbose cp Xonotic-$stamp-common$suffix.zip Xonotic-$stamp-low$suffix.zip
-                       verbose mkzip0 Xonotic-$stamp-low$suffix.zip \
-                               Xonotic/data/xonotic-$pk3stamp-data-low.pk3 \
-                               Xonotic/data/xonotic-$pk3stamp-maps-low.pk3 \
-                               Xonotic/data/xonotic-$pk3stamp-music-low.pk3 \
-                               Xonotic/data/xonotic-$pk3stamp-nexcompat-low.pk3
-                       verbose mv Xonotic-$stamp-common$suffix.zip Xonotic-$stamp-high$suffix.zip
-                       verbose mkzip0 Xonotic-$stamp-high$suffix.zip \
-                               Xonotic/data/xonotic-$pk3stamp-data-high.pk3 \
-                               Xonotic/data/xonotic-$pk3stamp-maps-high.pk3 \
-                               Xonotic/data/xonotic-$pk3stamp-music.pk3 \
-                               Xonotic/data/xonotic-$pk3stamp-nexcompat-high.pk3
-                       # let's pass crypto import laws of some nasty countries
-                       find Xonotic -name \*d0_rijndael\*.so -o -name \*d0_rijndael\*.dylib -o -name \*d0_rijndael\*.dll -o -name \*d0_rijndael\*.c -delete
-               done
-               verbose mkzip Xonotic-$stamp-mappingsupport.zip \
+               # exe and dll files do not need +x
+               chmod a-x Xonotic/*.exe Xonotic/*.dll Xonotic/bin64/*.dll Xonotic/bin32/*.dll || true
+               # build the archives
+               verbose mkzipr Xonotic-$stamp-enginesource.zip \
+                       Xonotic/Makefile \
+                       Xonotic/source/darkplaces/ \
+                       Xonotic/COPYING Xonotic/GPL-2 Xonotic/GPL-3
+               verbose cp Xonotic-$stamp-enginesource.zip Xonotic-$stamp-engine.zip
+               verbose mkzipr Xonotic-$stamp-engine.zip \
+                       Xonotic/*.dll \
+                       Xonotic/bin32/*.dll \
+                       Xonotic/bin64/*.dll \
+                       Xonotic/*.app \
+                       Xonotic/xonotic-* \
+                       Xonotic/xonotic.exe
+               verbose cp Xonotic-$stamp-engine.zip Xonotic-$stamp-common.zip
+               verbose mkzipr Xonotic-$stamp-common.zip \
+                       Xonotic/source/d0_blind_id/ \
+                       Xonotic/source/gmqcc/ \
+                       Xonotic/source/qcsrc/ \
+                       Xonotic/Docs \
+                       Xonotic/misc \
+                       Xonotic/gmqcc \
+                       Xonotic/server \
+                       Xonotic/key_0.d0pk \
+                       Xonotic/data/font-unifont-$pk3stamp.pk3 \
+                       Xonotic/data/font-xolonium-$pk3stamp.pk3
+               verbose cp Xonotic-$stamp-enginesource.zip Xonotic-$stamp-source.zip
+               verbose mkzipr Xonotic-$stamp-source.zip \
+                       Xonotic/source/d0_blind_id/ \
+                       Xonotic/source/gmqcc/ \
+                       Xonotic/source/qcsrc/ \
+                       Xonotic/misc/logos
+               verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp.zip
+               verbose mkzip0 Xonotic-$stamp.zip \
+                       Xonotic/data/xonotic-$pk3stamp-data.pk3 \
+                       Xonotic/data/xonotic-$pk3stamp-maps.pk3 \
+                       Xonotic/data/xonotic-$pk3stamp-music.pk3 \
+                       Xonotic/data/xonotic-$pk3stamp-nexcompat.pk3 \
+                       Xonotic/data/xonotic-$pk3stamp-xoncompat.pk3
+               verbose mv Xonotic-$stamp-common.zip Xonotic-$stamp-high.zip
+               verbose mkzip0 Xonotic-$stamp-high.zip \
+                       Xonotic/data/xonotic-$pk3stamp-data-high.pk3 \
+                       Xonotic/data/xonotic-$pk3stamp-maps-high.pk3 \
+                       Xonotic/data/xonotic-$pk3stamp-music.pk3 \
+                       Xonotic/data/xonotic-$pk3stamp-nexcompat-high.pk3 \
+                       Xonotic/data/xonotic-$pk3stamp-xoncompat-high.pk3
+               verbose mkzipr Xonotic-$stamp-mappingsupport.zip \
                        Xonotic/mapping
                verbose mkzip0 Xonotic-$stamp-mappingsupport.zip \
                        Xonotic/data/xonotic-$pk3stamp-maps-mapping.pk3
-               verbose mkzip gmqcc-$stamp.zip \
+               verbose mkzipr gmqcc-$stamp.zip \
                        Xonotic/gmqcc \
                        Xonotic/source/gmqcc
                ;;
@@ -568,9 +681,10 @@ case "$cmd" in
                release_common
                verbose "$SELF" release-prepare
                verbose "$SELF" release-maps
+               verbose "$SELF" release-libs
                verbose "$SELF" release-engine
                verbose "$SELF" release-qc
-               verbose "$SELF" release-pack-needsx11
+               verbose "$SELF" release-pack
                verbose "$SELF" release-zip
                ;;
        *)
index 35ce643154553ff53f139592e02fdb35c977475d..46c2b6dba12cbefca1742416dca3ae5e944c1895 100644 (file)
@@ -32,7 +32,6 @@ case "$cmd" in
                if [ -z "$CC" ]; then
                        export CC="gcc"
                fi
-               export CC="$CC -DSUPPORTIPV6"
                while :; do
                        case "$1" in
                                -0)
@@ -87,13 +86,9 @@ case "$cmd" in
                        esac
                done
 
+               TARGETS="sv-$debug sdl-$debug"
                if [ x"`uname`" = x"Darwin" ]; then
-                       TARGETS="sv-$debug sdl-$debug"
                        export CC="$CC -fno-reorder-blocks"
-               elif [ -n "$WE_HATE_OUR_USERS" ]; then
-                       TARGETS="sv-$debug sdl-$debug"
-               else
-                       TARGETS="sv-$debug cl-$debug sdl-$debug"
                fi
 
                if [ $# -gt 0 ] && [ x"$1" = x"" ]; then
@@ -110,9 +105,6 @@ case "$cmd" in
                                        sdl)
                                                TARGETS="$TARGETS sdl-$debug"
                                                ;;
-                                       glx)
-                                               TARGETS="$TARGETS cl-$debug"
-                                               ;;
                                        dedicated)
                                                TARGETS="$TARGETS sv-$debug"
                                                ;;
@@ -141,27 +133,8 @@ case "$cmd" in
                        if [ -n "$WE_HATE_OUR_USERS" ]; then
                                MAKEFLAGS="$MAKEFLAGS DP_MAKE_TARGET=mingw"
                        fi
-               fi
-
-               if [ -n "$WE_HATE_OUR_USERS" ]; then
-                       # win32: use SDL2
-                       case `uname -m` in
-                               x86_64)
-                                       MAKEFLAGS="$MAKEFLAGS SDL_CONFIG=$d0/misc/builddeps/win64/sdl/bin/sdl2-config"
-                                       ;;
-                               *)
-                                       MAKEFLAGS="$MAKEFLAGS SDL_CONFIG=$d0/misc/builddeps/win32/sdl/bin/sdl2-config"
-                                       ;;
-                       esac
-
-                       # win32: don't rely on jpeg includes
-                       MAKEFLAGS="$MAKEFLAGS LIB_JPEG= CFLAGS_LIBJPEG="
-               fi
-
-               if [ x"`uname`" = x"Darwin" ]; then
-                       # osx: use SDL2
-                       f=$d0/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks
-                       MAKEFLAGS="$MAKEFLAGS SDLCONFIG_MACOSXCFLAGS=-I$f/SDL2.framework/Headers SDLCONFIG_MACOSXLIBS=-F$f SDLCONFIG_MACOSXLIBS+=-framework SDLCONFIG_MACOSXLIBS+=SDL2 SDLCONFIG_MACOSXLIBS+=-framework SDLCONFIG_MACOSXLIBS+=Cocoa SDLCONFIG_MACOSXLIBS+=-I$f/SDL2.framework/Headers SDLCONFIG_MACOSXSTATICLIBS=-F$f SDLCONFIG_MACOSXSTATICLIBS+=-framework SDLCONFIG_MACOSXSTATICLIBS+=SDL2 SDLCONFIG_MACOSXSTATICLIBS+=-framework SDLCONFIG_MACOSXSTATICLIBS+=Cocoa SDLCONFIG_MACOSXSTATICLIBS+=-I$f/SDL2.framework/Headers"
+               elif echo $MAKEFLAGS | head -c1 | grep -qv -; then # MAKEFLAGS starts with a single letter option
+                       MAKEFLAGS=-$(echo $MAKEFLAGS)                  # echo here and above will trim whitespaces
                fi
 
                # workaround ARM issue in DP's makefile.inc
@@ -203,66 +176,17 @@ case "$cmd" in
                if [ -z "$compiled0" ]; then
                        # In doubt, compile.
                        compiled0=true
-
-                       # compilation of crypto library failed
-                       # use binaries then, if we can...
-                       mkdir -p .libs
-                       if [ -n "$WE_HATE_OUR_USERS" ]; then
-                               case `uname -m` in
-                                       x86_64)
-                                               verbose cp "$d0/misc/buildfiles/win64/libd0_blind_id"-* .libs/
-                                               verbose cp "$d0/misc/buildfiles/win64/libd0_rijndael"-* .libs/
-                                               verbose cp "$d0/misc/buildfiles/win64/libgmp"-* .libs/
-                                               compiled0=false
-                                               ;;
-                                       *)
-                                               verbose cp "$d0/misc/buildfiles/win32/libd0_blind_id"-* .libs/
-                                               verbose cp "$d0/misc/buildfiles/win32/libd0_rijndael"-* .libs/
-                                               verbose cp "$d0/misc/buildfiles/win32/libgmp"-* .libs/
-                                               compiled0=false
-                                               ;;
-                               esac
-                       else
-                               case "`uname`" in
-                                       Linux)
-                                               case `uname -m` in
-                                                       *86)
-                                                               # No cp commands, we want to use static linking instead.
-                                                               export CC="$CC -I../../../../misc/builddeps/linux32/d0_blind_id/include"
-                                                               export CC="$CC -L../../../../misc/builddeps/linux32/d0_blind_id/lib"
-                                                               export CC="$CC -Wl,-rpath,../../../../misc/builddeps/linux32/d0_blind_id/lib"
-                                                               export CC="$CC -I../../../../misc/builddeps/linux32/gmp/include"
-                                                               export CC="$CC -L../../../../misc/builddeps/linux32/gmp/lib"
-                                                               export CC="$CC -Wl,-rpath,../../../../misc/builddeps/linux32/gmp/lib"
-                                                               MAKEFLAGS="$MAKEFLAGS DP_LINK_CRYPTO=shared DP_LINK_CRYPTO_RIJNDAEL=shared LIB_CRYPTO=../../../../misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.a LIB_CRYPTO+=../../../../misc/builddeps/linux32/gmp/lib/libgmp.a LIB_CRYPTO_RIJNDAEL=../../../../misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.a"
-                                                               compiled0=false
-                                                               ;;
-                                                       *)
-                                                               msg "Always need to compile libd0_blind_id on Linux `uname -m`."
-                                                               ;;
-                                               esac
-                                               ;;
-                                       Darwin)
-                                               verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_blind_id".* .libs/
-                                               verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_rijndael".* .libs/
-                                               compiled0=false
-                                               ;;
-                                       *)
-                                               msg "Always need to compile libd0_blind_id on `uname`."
-                                               ;;
-                               esac
-                       fi
                fi
                if $compiled0; then
-                       if $cleand0; then
-                               if [ -f Makefile ]; then
-                                       verbose $MAKE $MAKEFLAGS distclean
-                               fi
-                       fi
                        if ! [ -f Makefile ]; then
                                verbose sh autogen.sh
                                verbose ./configure
                        fi
+                       if $cleand0; then
+                               verbose $MAKE $MAKEFLAGS distclean
+                               verbose sh autogen.sh
+                               verbose ./configure
+                       fi
                        verbose $MAKE $MAKEFLAGS
                fi
 
@@ -332,10 +256,6 @@ case "$cmd" in
                        sdl)
                                shift
                                ;;
-                       glx)
-                               client=-$1
-                               shift
-                               ;;
                esac
 
                if ! [ -x "darkplaces/darkplaces$client" ]; then
@@ -348,15 +268,6 @@ case "$cmd" in
                fi
                set -- "darkplaces/darkplaces$client" -xonotic "$@"
 
-               # if pulseaudio is running: USE IT
-               if [ -z "$SDL_AUDIODRIVER" ] && ! [ -n "$WE_HATE_OUR_USERS" ] && ! [ x"`uname`" = x"Darwin" ]; then
-                       if ps -C pulseaudio >/dev/null; then
-                               if ldd /usr/lib/libSDL.so 2>/dev/null | grep pulse >/dev/null; then
-                                       export SDL_AUDIODRIVER=pulse
-                               fi
-                       fi
-               fi
-
                binary=$1
 
                if [ x"$USE_GDB" = x"yes" ]; then
@@ -388,9 +299,9 @@ case "$cmd" in
                fi
                ;;
        help)
-               $ECHO "  $SELF compile [-c] [-qc] [-d|-p|-r] [-0] [-1] [sdl|glx|dedicated]"
+               $ECHO "  $SELF compile [-c] [-qc] [-d|-p|-r] [-0] [-1] [sdl|dedicated]"
                $ECHO "  $SELF update-maps"
-               $ECHO "  $SELF run [sdl|glx|dedicated] options..."
+               $ECHO "  $SELF run [sdl|dedicated] options..."
                $ECHO "  $SELF compile-map mapname1 mapname2... (e.g. \"./all compile-map dance drain fuse\")"
                handled=false
                ;;
index f4a8e6dbbb18e7c450f5830699f44d156c94baf4..98f391ccd0d2b0d5594a049944988cf0088daacb 100644 (file)
@@ -44,12 +44,12 @@ case $state in
             # choose version and autocomplete cvars
             # possible TODO: check for OS and adapt to it
             _arguments \
-                '1:Version:(sdl glx dedicated)' && ret=0
+                '1:Version:(sdl dedicated)' && ret=0
             ;;
 
         compile)
             _arguments \
-                '1:Version:(sdl glx dedicated)' \
+                '1:Version:(sdl dedicated)' \
                 "-0[don't use precompiled d0_blind_id]" \
                 "-1[don't compile d0_blind_id]" \
                 '-c[clean all before building]' \
index 0c6c4f0389c2619adcd24e223c543c9d83f382f9..dfc4f5a8adb0b9bf79562e5e92aa8d642f27bb7f 100755 (executable)
@@ -147,7 +147,7 @@ has_shader()
 
 has_alpha()
 {
-       [ -f "${1%.jpg}_alpha.jpg" ] || convert "$1" -depth 8 RGBA:- | xxd -c 4 -g 1 | grep -v " ff  " >/dev/null
+       [ -f "${1%.jpg}_alpha.jpg" ] || convert "$1" -auto-orient -depth 8 RGBA:- | xxd -c 4 -g 1 | grep -v " ff  " >/dev/null
 }
 
 autoshaders()
index a14b3685ed44d017c1ce0854391f2626a94d5905..e087a5a97e162d3ddc222662895ea620d572614b 100755 (executable)
@@ -28,10 +28,10 @@ name=${name%_[rlbfud][tfktpn]}
 
 echo >&2 "Order: 0=rt 1=lf 2=bk 3=ft 4=up 5=dn"
 {
-       convert "$name"_rt."$ext" -depth 8 -geometry 512x512 GRAY:-
-       convert "$name"_lf."$ext" -depth 8 -geometry 512x512 GRAY:-
-       convert "$name"_bk."$ext" -depth 8 -geometry 512x512 GRAY:-
-       convert "$name"_ft."$ext" -depth 8 -geometry 512x512 GRAY:-
-       convert "$name"_up."$ext" -depth 8 -geometry 512x512 GRAY:-
-       convert "$name"_dn."$ext" -depth 8 -geometry 512x512 GRAY:-
+       convert "$name"_rt."$ext" -auto-orient -depth 8 -geometry 512x512 GRAY:-
+       convert "$name"_lf."$ext" -auto-orient -depth 8 -geometry 512x512 GRAY:-
+       convert "$name"_bk."$ext" -auto-orient -depth 8 -geometry 512x512 GRAY:-
+       convert "$name"_ft."$ext" -auto-orient -depth 8 -geometry 512x512 GRAY:-
+       convert "$name"_up."$ext" -auto-orient -depth 8 -geometry 512x512 GRAY:-
+       convert "$name"_dn."$ext" -auto-orient -depth 8 -geometry 512x512 GRAY:-
 } | "$brightspot" /dev/stdin
index c1063eddbe8816293ce80b70aa4a9195c26bee77..1e8f7e9c114aef13a34ba2cd58714989ff26ca54 100755 (executable)
@@ -21,8 +21,8 @@ set -e
 : ${del_src:=false}
 : ${git_src_repo:=}
 : ${dds_noalpha:=dxt1}
-: ${dds_prealpha:=dxt2 dxt4}
-: ${dds_sepalpha:=dxt3 dxt5}
+: ${dds_prealpha:=dxt1 dxt2 dxt4}
+: ${dds_sepalpha:=dxt1 dxt3 dxt5}
 
 selfprofile_t0=`date +%s`
 selfprofile_step=init
@@ -209,8 +209,8 @@ reduce_jpeg2_dds()
 {
        i=$1; shift
        ia=$1; shift
-       o=$1; shift; shift 
-       convert "$i" "$ia" -compose CopyOpacity -composite -type TrueColorMatte "$tmpdir/x.tga" && \
+       o=$1; shift; shift
+       convert "$i" "$ia" -auto-orient -compose CopyOpacity -composite -type TrueColorMatte "$tmpdir/x.tga" && \
        pickdxta "$dds_tool" "$dds_sepalpha" "$tmpdir/x.tga" "$o" $1
 }
 
@@ -218,8 +218,8 @@ reduce_jpeg2_dds_premul()
 {
        i=$1; shift
        ia=$1; shift
-       o=$1; shift; shift 
-       convert "$i" "$ia" -compose CopyOpacity -composite -type TrueColorMatte "$tmpdir/x.tga" && \
+       o=$1; shift; shift
+       convert "$i" "$ia" -auto-orient -compose CopyOpacity -composite -type TrueColorMatte "$tmpdir/x.tga" && \
        pickdxta "$dds_tool" "$dds_prealpha" "$tmpdir/x.tga" "$o" $1
 }
 
@@ -229,14 +229,14 @@ reduce_jpeg2_jpeg2()
        ia=$1; shift
        o=$1; shift
        oa=$1; shift
-       if convert "$i" TGA:- | cjpeg -targa -quality "$1" -optimize -sample 1x1,1x1,1x1 > "$o"; then
+       if convert "$i" -auto-orient TGA:- | cjpeg -targa -quality "$1" -optimize -sample 1x1,1x1,1x1 > "$o"; then
                if [ "`stat -c %s "$i"`" -lt "`stat -c %s "$o"`" ]; then
                        cp "$i" "$o"
                fi
        else
                return 1
        fi
-       if convert "$ia" TGA:- | cjpeg -targa -quality "$2" -optimize -sample 1x1,1x1,1x1 > "$oa"; then
+       if convert "$ia" -auto-orient TGA:- | cjpeg -targa -quality "$2" -optimize -sample 1x1,1x1,1x1 > "$oa"; then
                if [ "`stat -c %s "$ia"`" -lt "`stat -c %s "$oa"`" ]; then
                        cp "$ia" "$oa"
                fi
@@ -251,7 +251,7 @@ reduce_jpeg2_webp()
        ia=$1; shift
        o=$1; shift; shift
        # this one MUST run
-       convert "$i" "$ia" -compose CopyOpacity -composite -type TrueColorMatte "$tmpdir/x.png" && \
+       convert "$i" "$ia" -auto-orient -compose CopyOpacity -composite -type TrueColorMatte "$tmpdir/x.png" && \
        cwebp $1 "$tmpdir/x.png" -o "$o"
 }
 
@@ -259,7 +259,7 @@ reduce_jpeg_jpeg()
 {
        i=$1; shift; shift
        o=$1; shift; shift
-       if convert "$i" TGA:- | cjpeg -targa -quality "$1" -optimize -sample 1x1,1x1,1x1 > "$o"; then
+       if convert "$i" -auto-orient TGA:- | cjpeg -targa -quality "$1" -optimize -sample 1x1,1x1,1x1 > "$o"; then
                if [ "`stat -c %s "$i"`" -lt "`stat -c %s "$o"`" ]; then
                        cp "$i" "$o"
                fi
@@ -289,7 +289,7 @@ reduce_rgba_dds()
 {
        i=$1; shift; shift
        o=$1; shift; shift
-       convert "$i" -type TrueColorMatte "$tmpdir/x.tga" && \
+       convert "$i" -auto-orient -type TrueColorMatte "$tmpdir/x.tga" && \
        pickdxta "$dds_tool" "$dds_sepalpha" "$tmpdir/x.tga" "$o" $1
 }
 
@@ -297,7 +297,7 @@ reduce_rgba_dds_premul()
 {
        i=$1; shift; shift
        o=$1; shift; shift
-       convert "$i" -type TrueColorMatte "$tmpdir/x.tga" && \
+       convert "$i" -auto-orient -type TrueColorMatte "$tmpdir/x.tga" && \
        pickdxta "$dds_tool" "$dds_prealpha" "$tmpdir/x.tga" "$o" $1
 }
 
@@ -306,12 +306,12 @@ reduce_rgba_jpeg2()
        i=$1; shift; shift
        o=$1; shift
        oa=$1; shift
-       if convert "$i" -alpha off TGA:- | cjpeg -targa -quality "$1" -optimize -sample 1x1,1x1,1x1 > "$o"; then
+       if convert "$i" -auto-orient -alpha off TGA:- | cjpeg -targa -quality "$1" -optimize -sample 1x1,1x1,1x1 > "$o"; then
                :
        else
                return 1
        fi
-       if convert "$i" -alpha extract TGA:- | cjpeg -targa -quality "$2" -optimize -sample 1x1,1x1,1x1 > "$oa"; then
+       if convert "$i" -auto-orient -alpha extract TGA:- | cjpeg -targa -quality "$2" -optimize -sample 1x1,1x1,1x1 > "$oa"; then
                :
        else
                return 1
@@ -322,7 +322,7 @@ reduce_rgb_dds()
 {
        i=$1; shift; shift
        o=$1; shift; shift
-       convert "$i" -type TrueColor "$tmpdir/x.tga" && \
+       convert "$i" -auto-orient -type TrueColor "$tmpdir/x.tga" && \
        "$meprefix"compress-texture "$dds_tool" "$dds_noalpha" "$tmpdir/x.tga" "$o" $1
 }
 
@@ -330,7 +330,7 @@ reduce_rgb_jpeg()
 {
        i=$1; shift; shift
        o=$1; shift; shift
-       if convert "$i" TGA:- | cjpeg -targa -quality "$1" -optimize -sample 1x1,1x1,1x1 > "$o"; then
+       if convert "$i" -auto-orient TGA:- | cjpeg -targa -quality "$1" -optimize -sample 1x1,1x1,1x1 > "$o"; then
                :
        else
                return 1
@@ -341,7 +341,7 @@ reduce_rgba_webp()
 {
        i=$1; shift; shift
        o=$1; shift; shift
-       convert "$i" "$tmpdir/x.png" && \
+       convert "$i" -auto-orient "$tmpdir/x.png" && \
        cwebp $1 "$tmpdir/x.png" -o "$o"
 }
 
@@ -349,7 +349,7 @@ has_alpha()
 {
        i=$1; shift; shift
        o=$1; shift; shift
-       if convert "$i" -depth 16 RGBA:- | perl -e 'while(read STDIN, $_, 8) { substr($_, 6, 2) eq "\xFF\xFF" or exit 1; } exit 0;'; then
+       if convert "$i" -auto-orient -depth 16 RGBA:- | perl -e 'while(read STDIN, $_, 8) { substr($_, 6, 2) eq "\xFF\xFF" or exit 1; } exit 0;'; then
                # no alpha
                : > "$o"
        else
@@ -396,17 +396,36 @@ for F in "$@"; do
                        ;;
        esac
 
-       # configure S2TC
+       # Specific hacks for normalmaps.
        case "$f" in
+               ./maps/*/lm_[0-9][0-9][0-9][13579]) # deluxemap
+                       export S2TC_COLORDIST_MODE=NORMALMAP
+                       export S2TC_RANDOM_COLORS=256
+                       export S2TC_REFINE_COLORS=LOOP
+                       export S2TC_DITHER_MODE=NONE
+                       # Engine ignores alpha channel on these, so we can use the DXT1 black encoding.
+                       # Not that that color should happen very often on a deluxemap, but who knows.
+                       # NOT renormalizing, as DP does its own renormalization anyway in the GLSL shader
+                       # and crunch's renormalizing looks like it can cause banding artifacts.
+                       export CRUNCH_TEXTYPEFLAGS='-gamma 1.0 -uniformMetrics -usetransparentindicesforblack'
+                       ;;
                *_norm)
                        export S2TC_COLORDIST_MODE=NORMALMAP
                        export S2TC_RANDOM_COLORS=256
                        export S2TC_REFINE_COLORS=LOOP
+                       export S2TC_DITHER_MODE=NONE
+                       # Alpha channel here means height.
+                       # NOT renormalizing, as DP does its own renormalization anyway in the GLSL shader
+                       # and crunch's renormalizing looks like it can cause banding artifacts.
+                       export CRUNCH_TEXTYPEFLAGS='-gamma 1.0 -uniformMetrics'
                        ;;
                *)
                        export S2TC_COLORDIST_MODE=SRGB_MIXED
                        export S2TC_RANDOM_COLORS=64
                        export S2TC_REFINE_COLORS=LOOP
+                       export S2TC_DITHER_MODE=FLOYDSTEINBERG
+                       # Color channel-like images - consider as sRGB.
+                       export CRUNCH_TEXTYPEFLAGS='-gamma 2.2'
                        ;;
        esac
 
index 9e3b58e5e26719f9d25a33644ba43f58c198cf88..9d4fcc135eea9150de0b91996a017a2490e4dd53 100755 (executable)
@@ -17,8 +17,8 @@ f=
 
 fourcchack=
 case "$tool" in
-       compressonator-dxtc)
-               # we still have to preprocess the image to premultiply alpha, as it seems
+       compressonator-dxtc|crunch)
+               # We still have to preprocess the image to premultiply alpha, as it seems
                case "$format" in
                        dxt2)
                                fourcchack=DXT2
@@ -30,7 +30,8 @@ case "$tool" in
                                ;;
                esac
                ;;
-       *)
+       compressonator-atic|nvcompress|s2tc)
+               # These tools don't support DXT2/4 at all.
                case "$format" in
                        dxt2)
                                fourcchack=DXT2
@@ -42,11 +43,14 @@ case "$tool" in
                                ;;
                esac
                ;;
+       *)
+               echo >&2 "Please figure out the DXT2/DXT4 story for $tool."
+               ;;
 esac
 
 if [ -n "$fourcchack" ]; then
        fourcchack_dir=`mktemp -d`
-       convert "$src" -fx "u*u.a" -type TrueColorMatte "$fourcchack_dir/src.$ext"
+       convert "$src" -auto-orient -fx "u*u.a" -type TrueColorMatte "$fourcchack_dir/src.$ext"
        src="$fourcchack_dir/src.$ext"
 fi
 
@@ -93,6 +97,16 @@ case "$tool" in
                esac
                s2tc_compress $f "$@" -i "$src" -o "$dst"
                ;;
+       crunch)
+               case "$format" in
+                       dxt1) f="-DXT1" ;;
+                       dxt2) f="-DXT2" ;;
+                       dxt3) f="-DXT3" ;;
+                       dxt4) f="-DXT4" ;;
+                       dxt5) f="-DXT5" ;;
+               esac
+               crunch $f "$@" -noprogress -nostats -quality 255 -mipMode Generate -dxtQuality uber $CRUNCH_TEXTYPEFLAGS -file "$src" -out "$dst"
+               ;;
 esac
 
 if [ -n "$fourcchack" ]; then
index 33b389ca151596b8cec3f4b0ed283830ad337b4b..8d5a7bcdf46e0d7a7c7d2274697b6d5ee27bbd27 100755 (executable)
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 
 # Usage:
-#   convert image.tga -depth 8 RGBA:- | perl fiximage.pl 72 | convert -depth 8 -size 72x56 RGBA:- output.tga
+#   convert image.tga -auto-orient -depth 8 RGBA:- | perl fiximage.pl 72 | convert -auto-orient -depth 8 -size 72x56 RGBA:- output.tga
 
 my ($width) = @ARGV;
 
diff --git a/misc/tools/fov-calc.py b/misc/tools/fov-calc.py
new file mode 100755 (executable)
index 0000000..84d3bd5
--- /dev/null
@@ -0,0 +1,38 @@
+#!/usr/bin/python3
+
+import math
+import argparse
+
+
+def calculate_fov(fov, horizontal, vertical, viewzoom):
+    viewzoom_multiplier = 1 / viewzoom
+    frustumy = math.tan(fov * math.pi / 360) * 0.75 * viewzoom_multiplier
+    frustumx = frustumy * horizontal / vertical
+
+    fovx = math.atan2(frustumx, 1) / math.pi * 360
+    fovy = math.atan2(frustumy, 1) / math.pi * 360
+
+    print(fov, "degrees of hfov with 4:3 resolution (unstretched without black bars) actually gives:")
+    print("Horizontal FOV =", fovx)
+    print("Vertical   FOV =", fovy)
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(description='Process in-game fov cvars to horizontal and vertical degrees.')
+    parser.add_argument('fov', type=float,
+                        help="in-game fov cvar, degrees of hfov with 4:3 resolution, required field")
+    parser.add_argument('horizontalAspectRatio', type=float, default=16, nargs='?',
+                        help="Horizontal num of the aspect ratio, for 16:9 that is 16, default: 16")
+    parser.add_argument('verticalAspectRatio', type=float, default=9, nargs='?',
+                        help="Vertical num of the aspect ratio, for 16:9 that is 9, default: 9")
+    parser.add_argument('viewzoom', type=float, default=1, nargs='?',
+                        help="Zoom amount, default: 1 / no zoom")
+    args = parser.parse_args()
+
+    if (args.fov < 1 or args.fov > 170):
+        print("WARNING: Xonotic's fov is currently restricted between 1 and 170, calculations might be broken with this number.")
+    if (args.viewzoom < 1 or args.viewzoom > 30):
+        print("WARNING: Xonotic's zoom is currently restricted between 1 and 30, calculations might be broken with this number.")
+
+    calculate_fov(args.fov, args.horizontalAspectRatio, args.verticalAspectRatio, args.viewzoom)
+
index b65976cb1357839382720e170ab252fde915b45a..978b14101275bb4865d3ca5b2a5bcb99b131192c 100644 (file)
@@ -16,4 +16,7 @@ bot_god 1
 bot_ignore_bots 1
 sv_cheats 1
 
+bind r +moveup
+bind f +movedown
+
 exec tuba-settings.cfg
index f90f8f7a8f0afbeed32c30f13334b729edd97bcd..55f2a61cb9be2d7acd0e8c260a176f1d44af139d 100644 (file)
@@ -1,13 +1,18 @@
-menu_vid_width 1280
-menu_vid_height 720
-vid_width 1280
-vid_height 720
+menu_vid_width 1920
+menu_vid_height 1080
+vid_width 1920
+vid_height 1080
+vid_fullscreen 0
 
 cl_capturevideo_framestep 1
-cl_capturevideo_fps 25
+cl_capturevideo_fps 30
+cl_capturevideo_ogg_theora_quality 63
+cl_capturevideo_ogg_vorbis_quality 10
 r_motionblur 0
 
 bind x "toggle cl_capturevideo"
 exec effects-normal.cfg
 
+hud_panel_centerprint 0
+
 exec tuba-play.cfg
diff --git a/misc/tools/nokia2tuba.sh b/misc/tools/nokia2tuba.sh
new file mode 100755 (executable)
index 0000000..f96ed06
--- /dev/null
@@ -0,0 +1,188 @@
+#!/bin/sh
+
+bpm=120
+transpose=0
+defaultoctave=1
+defaultlength=4
+baseoctave=1
+gato=-0.1
+mingato=0.034
+maxgato=-0.034
+
+tuba_note_42="moveleft back crouch fire"
+tuba_note_43="back crouch fire"
+tuba_note_44="moveright back crouch fire"
+tuba_note_47="forward moveright crouch fire"
+tuba_note_48="crouch fire"
+tuba_note_49="moveleft back crouch fire2"
+tuba_note_50="moveright crouch fire"
+tuba_note_51="forward moveleft crouch fire"
+tuba_note_52="forward crouch fire"
+tuba_note_53="moveleft crouch fire"
+tuba_note_54="moveleft back fire"
+tuba_note_55="back fire"
+tuba_note_56="back moveright fire"
+tuba_note_57="moveright crouch fire2"
+tuba_note_58="forward moveleft crouch fire2"
+tuba_note_59="forward moveright fire"
+tuba_note_60="fire"
+tuba_note_61="moveleft back fire2"
+tuba_note_62="moveright fire"
+tuba_note_63="forward moveleft fire"
+tuba_note_64="forward fire"
+tuba_note_65="moveleft fire"
+tuba_note_66="forward moveright fire2"
+tuba_note_67="fire2"
+tuba_note_68="back moveright jump fire"
+tuba_note_69="moveright fire2"
+tuba_note_70="forward moveleft fire2"
+tuba_note_71="forward fire2"
+tuba_note_72="moveleft fire2"
+tuba_note_73="moveleft back jump fire2"
+tuba_note_74="moveright jump fire"
+tuba_note_75="forward moveleft jump fire"
+tuba_note_76="forward jump fire"
+tuba_note_77="moveleft jump fire"
+tuba_note_78="forward moveright jump fire2"
+tuba_note_79="jump fire2"
+tuba_note_81="moveright jump fire2"
+tuba_note_82="forward moveleft jump fire2"
+tuba_note_83="forward jump fire2"
+tuba_note_84="moveleft jump fire2"
+
+tuba() {
+       plusminus=$1
+       eval "tuba_note=\$tuba_note_$pitch"
+       if [ -z "$tuba_note" ]; then
+               echo >&2 "Cannot play note $pitch"
+       fi
+       semi=
+       for n in $tuba_note; do
+               echo -n "${semi}${plusminus}${n}"
+               semi=';'
+       done
+}
+
+time=0
+playnote() {
+       # Move the dot where it belongs.
+       case "$octave" in
+               *.)
+                       octave=${octave%.}
+                       length=$length.
+                       ;;
+       esac
+       # Normalize the note.
+       pitch=''
+       case "$note" in
+               [Cc]_|_[Cc]) pitch=-1 ;;
+               [Cc]) pitch=0 ;;
+               [Cc][#+]|[#+][Cc]|[Dd]_|_[Dd]) pitch=1 ;;
+               [Dd]) pitch=2 ;;
+               [Dd][#+]|[#+][Dd]|[Ee]_|_[Ee]) pitch=3 ;;
+               [Ee]|[Ff]_|_[Ff]) pitch=4 ;;
+               [Ff]|[Ee][#+]|[#+][Ee]) pitch=5 ;;
+               [Ff][#+]|[#+][Ff]|[Gg]_|_[Gg]) pitch=6 ;;
+               [Gg]) pitch=7 ;;
+               [Gg][#+]|[#+][Gg]|[Aa]_|_[Aa]) pitch=8 ;;
+               [Aa]) pitch=9 ;;
+               [Aa][#+]|[#+][Aa]|[Bb]_|_[Bb]) pitch=10 ;;
+               [Bb]) pitch=11 ;;
+               [Bb][#+]|[#+][Bb]) pitch=12 ;;
+               [p-]) pitch='' ;;
+               *) echo >&2 "Unrecognized note: $note" ;;
+       esac
+       echo "// $length$note$octave"
+       # Calculate the duration.
+       case "$length" in
+               .)
+                       length=$defaultlength
+                       f=1.5
+                       ;;
+               '')
+                       length=$defaultlength
+                       f=1
+                       ;;
+               *.)
+                       f=1.5
+                       ;;
+               *)
+                       f=1
+                       ;;
+       esac
+       duration=$(echo "240 / $bpm / ${length%.} * $f" | bc -l)
+       if [ -n "$pitch" ]; then
+       # Calculate the MIDI pitch.
+               if [ -z "$octave" ]; then
+                       octave=$defaultoctave
+               fi
+               pitch=$((pitch + (octave - baseoctave) * 12 + transpose + 60))
+               case "$gato" in
+                       -*)
+                               noteoff=$(echo "$time + $duration + $gato" | bc -l)
+                               ;;
+                       *)
+                               noteoff=$(echo "$time + $gato" | bc -l)
+                               ;;
+               esac
+               noteoff=$(echo "
+                       minnoteoff = $time + $mingato;
+                       maxnoteoff = $time + $duration + $maxgato;
+                       noteoff = $noteoff;
+                       if (noteoff > maxnoteoff) { noteoff = maxnoteoff; }
+                       if (noteoff < minnoteoff) { noteoff = minnoteoff; }
+                       noteoff;
+               " | bc -l)
+               echo "defer $time \"$(tuba +)\""
+               echo "defer $noteoff \"$(tuba -)\""
+       fi
+       time=$(echo "$time + $duration" | bc -l)
+}
+
+notes=$*
+case "$notes" in
+       *:*)
+               notes=${notes#*:}
+               baseoctave=5
+               ;;
+esac
+while [ -n "$notes" ]; do
+       note=${notes%%[:, ]*}
+       notes=${notes#$note}
+       notes=${notes#?}
+       case "$note" in
+               ml)
+                       gato=-0.04
+                       ;;
+               ms)
+                       gato=0.04
+                       ;;
+               mn)
+                       gato=-0.1
+                       ;;
+               b=*)
+                       bpm=${note#*=}
+                       ;;
+               d=*)
+                       defaultlength=${note#*=}
+                       ;;
+               t=*)
+                       transpose=${note#*=}
+                       ;;
+               o=*)
+                       defaultoctave=${note#*=}
+                       ;;
+               O=*)
+                       baseoctave=${note#*=}
+                       ;;
+               *)
+                       octave=${note##*[cCdDeEfFgGaAbBp-]}
+                       octave=${octave##[#+_]}
+                       note=${note%$octave}
+                       length=${note%[cCdDeEfFgGaAbBp-]*}
+                       length=${length%%[#+_]}
+                       note=${note#$length}
+                       playnote
+                       ;;
+       esac
+done
index c6d59ead1322136d3cd10e9f551c825e90db816e..105e58cdac10300ebbf93f6dee50bddf1dfa2105 100755 (executable)
@@ -73,7 +73,7 @@ for EXECUTABLE in "$@"; do
                cp "$icon_xpm" "$t/darkplaces-icon.xpm"
                cnt=
                for i in $icons_tga; do
-                       convert "$i" "$t/darkplaces-icon$cnt.tga"
+                       convert "$i" -auto-orient "$t/darkplaces-icon$cnt.tga"
                        if [ -z "$cnt" ]; then
                                cnt=2
                        else
index 39d6881b161a1db8fe4afd8c511461c80a816f2c..0bf88feba1cc2a9a2afa65bbdebdf273d014f47a 100644 (file)
@@ -1,19 +1,24 @@
 Windows users:
-Double click update-xonotic.bat and wait for the download to complete.
+Double click update-to-{build}.bat and wait for the download to complete.
 
 Linux/OSX users:
-Change to this directory in a terminal, then run ./update-xonotic.sh and wait
+Change to this directory in a terminal, then run ./update-to-{build}.sh and wait
 for the download to complete.
 
-Redoing this step at a later time will only download the changes since last
-time. Note that any changes inside the Xonotic directory will be overwritten.
+update-to-autobuild means updating to the latest nightly beta build of Xonotic.
+update-to-stable means updating to the latest stable release build of Xonotic.
+
+Redoing this step at a later time will only download the changes since last time.
+
+Note that any changes inside the Xonotic directory will be overwritten.
 Do your changes in the directory that has the config.cfg file!
+By default those are:
+On Windows the "C:\users\%userprofile%\Saved Games\xonotic\data\" folder
+On Linux or Mac the "~/.xonotic/data/" directory
+
 
-Secret trick: if you create a directory Xonotic-low in this directory before
-running the updater (or later, if you rename the Xonotic directory the updater
-created to Xonotic-low), this script will download the low version of Xonotic.
-If you create a directory Xonotic-high in this directory before running the
-updater (or later, if you rename the Xonotic directory the updater created to
-Xonotic-high), it will download the HQ version! If none of the two exists, it
-will download regular Xonotic. Only one version of the game can be managed by
-this script.
+Secret trick: if you create any file/directory named "Xonotic-high"
+in this directory before running the updater, this script will
+download Xonotic with uncompressed textures. Otherwise it will
+download regular Xonotic. To change from Xonotic-high to regular
+create any file/directory named "Xonotic" and run the script again.
index 052da99cfc002c86038f7aae7c3e25520c5520b7..b495540451dbfbd7ea7ee6284e974bee0c85da71 100644 (file)
Binary files a/misc/tools/rsync-updater/chmod.exe and b/misc/tools/rsync-updater/chmod.exe differ
index fd5df87a341305da9be39a4bf5b4b433a6c35b10..f6e242b46afed78eb37374a7a3e88b9d5aa52308 100644 (file)
Binary files a/misc/tools/rsync-updater/cyggcc_s-1.dll and b/misc/tools/rsync-updater/cyggcc_s-1.dll differ
index e4d7b9522a520f15790b0097120a483387ce02b4..9a00513c24b6c8de68b8602f7d64c281d5f4ffb9 100644 (file)
Binary files a/misc/tools/rsync-updater/cygiconv-2.dll and b/misc/tools/rsync-updater/cygiconv-2.dll differ
index 18c508201f2545504307907c0e780239e90382b8..a98eb67ba1621d77295eb63cba1c42819eaca963 100644 (file)
Binary files a/misc/tools/rsync-updater/cygintl-8.dll and b/misc/tools/rsync-updater/cygintl-8.dll differ
diff --git a/misc/tools/rsync-updater/cygpopt-0.dll b/misc/tools/rsync-updater/cygpopt-0.dll
new file mode 100644 (file)
index 0000000..d44aeb9
Binary files /dev/null and b/misc/tools/rsync-updater/cygpopt-0.dll differ
index 3db37e7ecf8d45845fc16d0c85f4f06629c42c52..8152109e50e13164c98bcda3456a4f59f554876d 100644 (file)
Binary files a/misc/tools/rsync-updater/cygwin1.dll and b/misc/tools/rsync-updater/cygwin1.dll differ
index f147bf1766aa9e9f1af26995a52cb810e0c684dc..cafd87ad3c1899e5d9c22cf522534daae74ed5f0 100644 (file)
Binary files a/misc/tools/rsync-updater/rsync.exe and b/misc/tools/rsync-updater/rsync.exe differ
index 911628c84caab1ddcde74caef2c9c3976e4638a0..bfa0b492191f36aad4b057b7e91fd7bedc74d666 100644 (file)
@@ -10,28 +10,35 @@ exit
 \r
 :copied\r
 \r
+set /p choice=This script will DELETE any custom files in the Xonotic folder. Do you want to continue [Y/N]?\r
+if /i not "%choice%" == "Y" goto end\r
+\r
 set buildtype=release\r
 if "%~n0" == "update-to-autobuild" set buildtype=autobuild\r
 \r
 set options=-Prtzil --executability --delete-after --delete-excluded --stats\r
 \r
-if exist Xonotic-low goto xonoticlow\r
-if exist Xonotic-high goto xonotichigh\r
 if exist ..\..\..\.git goto xonoticdatagit\r
+if exist Xonotic goto xonoticswitchtonormal\r
+if exist Xonotic-high goto xonoticswitchtohigh\r
 if exist ..\..\..\data goto xonoticdata\r
 goto xonotic\r
-:xonoticlow\r
-       set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-low/\r
-       set target=Xonotic-low/\r
-       goto endxonotic\r
-:xonotichigh\r
-       set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-high/\r
-       set target=Xonotic-high/\r
-       goto endxonotic\r
 :xonoticdatagit\r
        echo NOTE: this is a git repository download. Using the regular update method.\r
        ..\..\..\all update\r
        goto end\r
+:xonoticswitchtohigh\r
+       set PATH=misc\tools\rsync-updater;%PATH%\r
+       cd ..\..\..\r
+       if exist misc\tools\rsync-updater\rsync.exe goto xonoticdatahighfuzzy\r
+       echo FATAL: rsync not in misc\tools\rsync-updater. This update script cannot be used.\r
+       goto end\r
+:xonoticswitchtonormal\r
+       set PATH=misc\tools\rsync-updater;%PATH%\r
+       cd ..\..\..\r
+       if exist misc\tools\rsync-updater\rsync.exe goto xonoticdatanormalfuzzy\r
+       echo FATAL: rsync not in misc\tools\rsync-updater. This update script cannot be used.\r
+       goto end\r
 :xonoticdata\r
        if exist ..\..\..\misc\tools\rsync-updater\rsync.exe goto xonoticdatarsync\r
        echo FATAL: rsync not in misc\tools\rsync-updater. This update script cannot be used.\r
@@ -39,21 +46,12 @@ goto xonotic
 :xonoticdatarsync\r
        set PATH=misc\tools\rsync-updater;%PATH%\r
        cd ..\..\..\r
-       if exist data\xonotic-rsync-data-low.pk3 goto xonoticdatalow\r
-       if exist data\xonotic-*-data-low.pk3 goto xonoticdatalowfuzzy\r
        if exist data\xonotic-rsync-data-high.pk3 goto xonoticdatahigh\r
        if exist data\xonotic-*-data-high.pk3 goto xonoticdatahighfuzzy\r
        if exist data\xonotic-rsync-data.pk3 goto xonoticdatanormal\r
        if exist data\xonotic-*-data.pk3 goto xonoticdatanormalfuzzy\r
        echo FATAL: unrecognized Xonotic build. This update script cannot be used.\r
        goto end\r
-:xonoticdatalow\r
-               set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-low/\r
-               goto endxonoticdata\r
-:xonoticdatalowfuzzy\r
-               set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-low/\r
-               set options=%options% -y\r
-               goto endxonoticdata\r
 :xonoticdatahigh\r
                set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-high/\r
                goto endxonoticdata\r
index b0d429dd2d6fd5c3bd20ba89936ea0e0076cf098..b07517924554cf178cd0d448b3cc20074d6425f9 100755 (executable)
@@ -1,14 +1,21 @@
 #!/bin/sh
 
-if [ -d "${0%/*}" ]; then
-       cd "${0%/*}"
-fi
+cd "${0%/*}" || exit 1
 
-if ! which rsync >/dev/null; then
+if ! which rsync > /dev/null; then
        echo >&2 "FATAL: rsync not found, please install the rsync package"
        exit 1
 fi
 
+if [ "$1" = "-y" ] || [ "$1" = "--yes" ]; then
+       choice=y
+fi
+until [ "$choice" = y ] || [ "$choice" = Y ]; do
+       printf "This script will DELETE any custom files in the Xonotic folder. Do you want to continue [Y/N]? "
+       read -r choice
+       [ "$choice" = n ] || [ "$choice" = N ] && exit 1
+done
+
 case "${0##*/}" in
        update-to-autobuild.sh)
                buildtype=autobuild
@@ -20,29 +27,38 @@ esac
 
 options="-Prtzil --executability --delete-after --delete-excluded --stats"
 
-if [ -d "Xonotic-low" ]; then
-       url="rsync://beta.xonotic.org/$buildtype-Xonotic-low/"
-       target="Xonotic-low/"
-elif [ -d "Xonotic-high" ]; then
-       url="rsync://beta.xonotic.org/$buildtype-Xonotic-high/"
-       target="Xonotic-high/"
-elif [ -d "../../../.git" ]; then
+if [ -d "../../../.git" ]; then
        echo >&2 "NOTE: this is a git repository download. Using the regular update method."
        exec ../../../all update
+elif [ -e "Xonotic" ]; then
+       echo "found manually created 'Xonotic' file"
+       echo "targetting the normal $buildtype version"
+       url="rsync://beta.xonotic.org/$buildtype-Xonotic/"
+       target="../../.."
+       options="$options -y" # use fuzzy matching because file names may differ
+elif [ -e "Xonotic-high" ]; then
+       echo "found manually created 'Xonotic-high' file"
+       echo "targetting the high $buildtype version"
+       url="rsync://beta.xonotic.org/$buildtype-Xonotic-high/"
+       target="../../.."
+       options="$options -y" # use fuzzy matching because file names may differ
 elif [ -d "../../../data" ]; then
-       if [ -f ../../../data/xonotic-rsync-data-low.pk3 ]; then
-               url="rsync://beta.xonotic.org/$buildtype-Xonotic-low/"
-       elif [ -f ../../../data/xonotic-*-data-low.pk3 ]; then
-               url="rsync://beta.xonotic.org/$buildtype-Xonotic-low/"
-               options="$options -y" # use fuzzy matching because file names differ
-       elif [ -f ../../../data/xonotic-rsync-data-high.pk3 ]; then
+       if [ -f ../../../data/xonotic-rsync-data-high.pk3 ]; then
+               echo "found rsync high data files"
+               echo "targetting the high $buildtype version"
                url="rsync://beta.xonotic.org/$buildtype-Xonotic-high/"
        elif [ -f ../../../data/xonotic-*-data-high.pk3 ]; then
+               echo "found release high data files"
+               echo "targetting the high $buildtype version"
                url="rsync://beta.xonotic.org/$buildtype-Xonotic-high/"
                options="$options -y" # use fuzzy matching because file names differ
        elif [ -f ../../../data/xonotic-rsync-data.pk3 ]; then
+               echo "found Xonotic rsync data files"
+               echo "targetting the normal $buildtype version"
                url="rsync://beta.xonotic.org/$buildtype-Xonotic/"
        elif [ -f ../../../data/xonotic-*-data.pk3 ]; then
+               echo "found Xonotic release data files"
+               echo "targetting the normal $buildtype version"
                url="rsync://beta.xonotic.org/$buildtype-Xonotic/"
                options="$options -y" # use fuzzy matching because file names differ
        else
@@ -58,25 +74,27 @@ fi
 excludes=
 if [ -z "$XONOTIC_INCLUDE_ALL" ]; then
        excludes="$excludes --exclude=/*.exe"
-       excludes="$excludes --exclude=/gmqcc/*.exe"
        excludes="$excludes --exclude=/bin32"
        excludes="$excludes --exclude=/*.dll"
        excludes="$excludes --exclude=/bin64"
 
-       case `uname`:`uname -m` in
+       case $(uname):$(uname -m) in
                Darwin:*)
                        excludes="$excludes --exclude=/xonotic-linux*"
-                       excludes="$excludes --exclude=/gmqcc/gmqcc.linux*"
                        ;;
                Linux:x86_64)
                        excludes="$excludes --exclude=/Xonotic*.app"
                        excludes="$excludes --exclude=/xonotic-osx-*"
-                       excludes="$excludes --exclude=/gmqcc/gmqcc.osx"
-                       excludes="$excludes --exclude=/xonotic-linux32-*"
-                       excludes="$excludes --exclude=/gmqcc/gmqcc.linux32"
                        ;;
                *)
-                       echo >&2 "WARNING: Could not detect architecture - downloading all architectures"
+                       printf >&2 "\e[1;31m"
+                       printf >&2 "WARNING: Could not detect architecture\n"
+                       printf >&2 "WARNING: Xonotic does NOT provide pre-built %s executables\n" "$(uname):$(uname -m)"
+                       printf >&2 "WARNING: Please run make. More info is available at\n"
+                       printf >&2 "WARNING: \e[1;36mhttps://gitlab.com/xonotic/xonotic/-/wikis/Compiling\e[m\n"
+                       excludes="$excludes --exclude=/Xonotic*.app"
+                       excludes="$excludes --exclude=/xonotic-osx-*"
+                       excludes="$excludes --exclude=/xonotic-linux64-*"
                        ;;
        esac
 fi
index 911628c84caab1ddcde74caef2c9c3976e4638a0..e2c2119524c21c3d0722b1d8892c09ca39a286b3 100644 (file)
@@ -10,28 +10,35 @@ exit
 \r
 :copied\r
 \r
+set /p choice=This script will DELETE any custom files in the Xonotic folder. Do you want to continue [Y/N]?\r
+if /i not "%choice%" == "Y" goto end\r
+\r
 set buildtype=release\r
 if "%~n0" == "update-to-autobuild" set buildtype=autobuild\r
 \r
 set options=-Prtzil --executability --delete-after --delete-excluded --stats\r
 \r
-if exist Xonotic-low goto xonoticlow\r
-if exist Xonotic-high goto xonotichigh\r
 if exist ..\..\..\.git goto xonoticdatagit\r
 if exist ..\..\..\data goto xonoticdata\r
+if exist Xonotic goto xonoticswitchtonormal\r
+if exist Xonotic-high goto xonoticswitchtohigh\r
 goto xonotic\r
-:xonoticlow\r
-       set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-low/\r
-       set target=Xonotic-low/\r
-       goto endxonotic\r
-:xonotichigh\r
-       set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-high/\r
-       set target=Xonotic-high/\r
-       goto endxonotic\r
 :xonoticdatagit\r
        echo NOTE: this is a git repository download. Using the regular update method.\r
        ..\..\..\all update\r
        goto end\r
+:xonoticswitchtohigh\r
+       set PATH=misc\tools\rsync-updater;%PATH%\r
+       cd ..\..\..\r
+       if exist misc\tools\rsync-updater\rsync.exe goto xonoticdatahighfuzzy\r
+       echo FATAL: rsync not in misc\tools\rsync-updater. This update script cannot be used.\r
+       goto end\r
+:xonoticswitchtonormal\r
+       set PATH=misc\tools\rsync-updater;%PATH%\r
+       cd ..\..\..\r
+       if exist misc\tools\rsync-updater\rsync.exe goto xonoticdatanormalfuzzy\r
+       echo FATAL: rsync not in misc\tools\rsync-updater. This update script cannot be used.\r
+       goto end\r
 :xonoticdata\r
        if exist ..\..\..\misc\tools\rsync-updater\rsync.exe goto xonoticdatarsync\r
        echo FATAL: rsync not in misc\tools\rsync-updater. This update script cannot be used.\r
@@ -39,21 +46,12 @@ goto xonotic
 :xonoticdatarsync\r
        set PATH=misc\tools\rsync-updater;%PATH%\r
        cd ..\..\..\r
-       if exist data\xonotic-rsync-data-low.pk3 goto xonoticdatalow\r
-       if exist data\xonotic-*-data-low.pk3 goto xonoticdatalowfuzzy\r
        if exist data\xonotic-rsync-data-high.pk3 goto xonoticdatahigh\r
        if exist data\xonotic-*-data-high.pk3 goto xonoticdatahighfuzzy\r
        if exist data\xonotic-rsync-data.pk3 goto xonoticdatanormal\r
        if exist data\xonotic-*-data.pk3 goto xonoticdatanormalfuzzy\r
        echo FATAL: unrecognized Xonotic build. This update script cannot be used.\r
        goto end\r
-:xonoticdatalow\r
-               set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-low/\r
-               goto endxonoticdata\r
-:xonoticdatalowfuzzy\r
-               set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-low/\r
-               set options=%options% -y\r
-               goto endxonoticdata\r
 :xonoticdatahigh\r
                set url=rsync://beta.xonotic.org/%buildtype%-Xonotic-high/\r
                goto endxonoticdata\r
deleted file mode 100755 (executable)
index b0d429dd2d6fd5c3bd20ba89936ea0e0076cf098..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-
-if [ -d "${0%/*}" ]; then
-       cd "${0%/*}"
-fi
-
-if ! which rsync >/dev/null; then
-       echo >&2 "FATAL: rsync not found, please install the rsync package"
-       exit 1
-fi
-
-case "${0##*/}" in
-       update-to-autobuild.sh)
-               buildtype=autobuild
-               ;;
-       *)
-               buildtype=release
-               ;;
-esac
-
-options="-Prtzil --executability --delete-after --delete-excluded --stats"
-
-if [ -d "Xonotic-low" ]; then
-       url="rsync://beta.xonotic.org/$buildtype-Xonotic-low/"
-       target="Xonotic-low/"
-elif [ -d "Xonotic-high" ]; then
-       url="rsync://beta.xonotic.org/$buildtype-Xonotic-high/"
-       target="Xonotic-high/"
-elif [ -d "../../../.git" ]; then
-       echo >&2 "NOTE: this is a git repository download. Using the regular update method."
-       exec ../../../all update
-elif [ -d "../../../data" ]; then
-       if [ -f ../../../data/xonotic-rsync-data-low.pk3 ]; then
-               url="rsync://beta.xonotic.org/$buildtype-Xonotic-low/"
-       elif [ -f ../../../data/xonotic-*-data-low.pk3 ]; then
-               url="rsync://beta.xonotic.org/$buildtype-Xonotic-low/"
-               options="$options -y" # use fuzzy matching because file names differ
-       elif [ -f ../../../data/xonotic-rsync-data-high.pk3 ]; then
-               url="rsync://beta.xonotic.org/$buildtype-Xonotic-high/"
-       elif [ -f ../../../data/xonotic-*-data-high.pk3 ]; then
-               url="rsync://beta.xonotic.org/$buildtype-Xonotic-high/"
-               options="$options -y" # use fuzzy matching because file names differ
-       elif [ -f ../../../data/xonotic-rsync-data.pk3 ]; then
-               url="rsync://beta.xonotic.org/$buildtype-Xonotic/"
-       elif [ -f ../../../data/xonotic-*-data.pk3 ]; then
-               url="rsync://beta.xonotic.org/$buildtype-Xonotic/"
-               options="$options -y" # use fuzzy matching because file names differ
-       else
-               echo >&2 "FATAL: unrecognized Xonotic build. This update script cannot be used."
-               exit 1
-       fi
-       target="../../.."
-else
-       url="rsync://beta.xonotic.org/$buildtype-Xonotic/"
-       target="Xonotic/"
-fi
-
-excludes=
-if [ -z "$XONOTIC_INCLUDE_ALL" ]; then
-       excludes="$excludes --exclude=/*.exe"
-       excludes="$excludes --exclude=/gmqcc/*.exe"
-       excludes="$excludes --exclude=/bin32"
-       excludes="$excludes --exclude=/*.dll"
-       excludes="$excludes --exclude=/bin64"
-
-       case `uname`:`uname -m` in
-               Darwin:*)
-                       excludes="$excludes --exclude=/xonotic-linux*"
-                       excludes="$excludes --exclude=/gmqcc/gmqcc.linux*"
-                       ;;
-               Linux:x86_64)
-                       excludes="$excludes --exclude=/Xonotic*.app"
-                       excludes="$excludes --exclude=/xonotic-osx-*"
-                       excludes="$excludes --exclude=/gmqcc/gmqcc.osx"
-                       excludes="$excludes --exclude=/xonotic-linux32-*"
-                       excludes="$excludes --exclude=/gmqcc/gmqcc.linux32"
-                       ;;
-               *)
-                       echo >&2 "WARNING: Could not detect architecture - downloading all architectures"
-                       ;;
-       esac
-fi
-
-rsync $options $excludes "$url" "$target"
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..4d9d6f291aa52d96ce6efeea4af9fd1ff175dd54
--- /dev/null
@@ -0,0 +1 @@
+update-to-autobuild.sh
\ No newline at end of file
index 90815e863c61e989d931eb99d7f87dfac9414711..301a8f0e84cfe56fd75aa653ab52949de3416cca 100755 (executable)
@@ -16,7 +16,7 @@ use File::Temp;
        our $Q3MAP2      = getcwd() . '/netradiant/build/q3map2';
 
        # General flags for q3map2 (for example -threads 4)
-       our $Q3MAP2FLAGS = '-fs_forbiddenpath xonotic*-data*.pk3* -fs_forbiddenpath xonotic*-nexcompat*.pk3*';
+       our $Q3MAP2FLAGS = '-fs_forbiddenpath xonotic*-data*.pk3* -fs_forbiddenpath xonotic*-nexcompat*.pk3* -fs_forbiddenpath xonotic*-xoncompat*.pk3*';
 
        # Default flags for the -bsp stage
        our $BSPFLAGS    = '-meta -maxarea -samplesize 8 -mv 1000000 -mi 6000000';
@@ -25,7 +25,7 @@ use File::Temp;
        our $VISFLAGS    = '';
 
        # Default flags for the -light stage
-       our $LIGHTFLAGS  = '-lightmapsize 1024 -lightmapsearchpower 4 -deluxe -patchshadows -randomsamples -samples 4 -fast -fastbounce -dirty -bouncegrid -fill';
+       our $LIGHTFLAGS  = '-lightmapsize 1024 -lightmapsearchpower 4 -fastallocate -deluxe -patchshadows -samples 4 -randomsamples -bounce 8 -fastbounce -bouncegrid -nobouncestore -dirty -dirtdepth 64 -dirtscale 0.8 -fill -backsplash 0 0';
 
        # Default flags for the -minimap stage
        our $MINIMAPFLAGS = '';
index 0cfb057922ff7401190bd2392bf36e4259c935e6..10a8e8708d1bd17ca51bf996747f7d43df290ee8 100755 (executable)
@@ -4,7 +4,7 @@ set -e
 
 bspdir="$PWD/data"
 url_http=https://beta.xonotic.org/autobuild-bsp/
-url_ssh=xonotic-beta:autobuild-bsp/
+url_ssh=xonotic-beta:./
 build_cachedir="$HOME/xonotic-map-compiler.cache/"
 screenshot_cachedir="$HOME/xonotic-map-screenshot.cache/"
 build_override="-bsp_timeout 3600 -vis_timeout 10800 -light_timeout 18000 -minimap_timeout 900 -scale_timeout 900 -timeout_stealing 0.8"
@@ -44,13 +44,19 @@ pre2spam()
        url=$2
        branch=$3
        hash=$4
+       lasttime_formatted=$5
 
        branch=${branch##refs/heads/}
        branch=${branch##refs/remotes/}
        branch=${branch##origin/}
        hash=`echo "$hash" | cut -c 1-7`
 
-       echo "[$branch $hash] starting map compile of $map"
+       echo -n "[<font color=\"#FF00FF\">$branch</font> $hash] starting map compile of $map"
+       if [ -n "$lasttime_formatted" ]; then
+               echo ", last time it took $lasttime_formatted"
+       else
+               echo
+       fi
 }
 
 ss2spam()
@@ -73,9 +79,9 @@ ss2spam()
        fi
 
        if [ -n "$s_error" ]; then
-               echo "[$branch $hash] \ 34screenshots of $map could not be made: $s_error"
+               echo "[<font color=\"#FF00FF\">$branch</font> $hash] screenshots of $map <font color=\"#FF0000\">could not be taken: $s_error</font>"
        else
-               echo "[$branch $hash] screenshots of $map are available on $url"
+               echo "[<font color=\"#FF00FF\">$branch</font> $hash] screenshots of $map <a href=\"$url\">are available</a>"
        fi
 }
 
@@ -132,26 +138,26 @@ log2spam()
        s_failshaders=`echo "$s_failshaders" | sed "s, textures/, ,g"`
        s_failshaders=${s_failshaders# }
        if [ -n "$s_error" ]; then
-               echo -n "[$branch $hash] \ 34failed"
+               echo -n "[<font color=\"#FF00FF\">$branch</font> $hash] <font color=\"#FF0000\">failed</font>"
        else
-               echo -n "[$branch $hash] finished"
+               echo -n "[<font color=\"#FF00FF\">$branch</font> $hash] <font color=\"#00FF00\">finished</font>"
        fi
-       echo -n " map compile of $map ($url): $time sec"
+       printf " map compile of <a href=\"$url\">$map</a> in %d:%02d:%02d" $((time/3600)) $((time%3600/60)) $((time%60))
        if [ -n "$s_samplesize" ]; then
-               echo -n ", FIX samplesize >= $s_samplesize"
+               echo -n "<br><font color=\"#FF0000\">FIX samplesize >= $s_samplesize</font>"
        fi
        if [ -n "$s_failshaders" ]; then
                if [ -n "`echo "$s_failshaders" | cut -d ' ' -f 4-`" ]; then
                        s_failshaders="`echo "$s_failshaders" | cut -d ' ' -f 1-3`..."
                fi
-               echo -n ", FIX shaders $s_failshaders"
+               echo -n "<br><font color=\"#FF0000\">FIX shaders $s_failshaders</font>"
        fi
        if [ -n "$s_leaked" ]; then
-               echo -n ", FIX LEAK"
+               echo -n "<br><font color=\"#FF0000\">FIX LEAK</font>"
        fi
        if [ -n "$s_error" ]; then
                s_error=`echo "$s_error" | sed "s,$PWD/\?,,g"`
-               echo -n ", ERROR: $s_error"
+               echo -n "<br><font color=\"#FF0000\">ERROR: $s_error</font>"
        fi
        echo
 }
@@ -172,8 +178,14 @@ buildthemap()
        git clean -xfd
        git checkout -f "$commithash"
 
+       mkdir -p ~/.xonotic-map-compiler-autobuild/ # to store map compile times in
+       lasttime=`cat ~/.xonotic-map-compiler-autobuild/"${M##*/}".buildtime 2>/dev/null || true`
+       if [ -n "$lasttime" ] ; then
+               lasttime_formatted=$(printf '%d:%02d:%02d' $((lasttime/3600)) $((lasttime%3600/60)) $((lasttime%60)) )
+               echo "Previous build took $lasttime_formatted"
+       fi
        if [ -n "$IRCSPAM" ]; then
-               pre2spam "$M" "$url$M-$blobhash.pk3" "$REFNAME" "$commithash" | $IRCSPAM || true
+               pre2spam "$M" "$url$M-$blobhash.pk3" "$REFNAME" "$commithash" "$lasttime_formatted" | $IRCSPAM || true
        fi
 
        t0=`date +%s`
@@ -216,6 +228,9 @@ buildthemap()
        if [ -n "$IRCSPAM" ]; then
                cat "maps/$M.log" | log2spam "$M" "$url$M-$blobhash.pk3" "$REFNAME" "$commithash" "$status" "$dt" > "maps/$M.irc"
        fi
+       if [ $status -eq 0 ]; then
+               echo "$dt" > ~/.xonotic-map-compiler-autobuild/"${M##*/}".buildtime # save time in ~/.xonotic-map-compiler-autobuild/mapname
+       fi
        zip -9r "$M-$blobhash.pk3" "maps/$M.bsp" "maps/$M.log" "maps/$M.irc" "maps/$M/" "maps/$M.lin" "gfx/${M}_mini.tga"
        ln -snf "../$M-$blobhash.pk3" "$M.pk3" # from ALL branches, so beware!
        cp "$M-$blobhash.pk3" "$M-full-$blobhash.pk3"
@@ -272,10 +287,10 @@ screenshotthemap()
        ) 2>&1 | tee ~/.xonotic/data/autoscreenshot.log
        good=false
        if mv ~/.xonotic/data/screenshots "$M-$blobhash"; then
-               ss2spam "$M" "$url?d" "$REFNAME" "$commithash" 0 > ~/.xonotic/data/"$M.ircss"
+               ss2spam "$M" "$url$M-$blobhash/" "$REFNAME" "$commithash" 0 > ~/.xonotic/data/"$M.ircss"
        else
                mkdir "$M-$blobhash"
-               ss2spam "$M" "$url?d" "$REFNAME" "$commithash" 1 > ~/.xonotic/data/"$M.ircss"
+               ss2spam "$M" "$url$M-$blobhash/" "$REFNAME" "$commithash" 1 > ~/.xonotic/data/"$M.ircss"
        fi
        mv ~/.xonotic/data/"$M.ircss" "$M-$blobhash"/
        mv ~/.xonotic/data/autoscreenshot.log "$M-$blobhash"/
@@ -311,12 +326,14 @@ getthemap()
                if ! curl -Lo "$bspdir/$M-$blobhash.pk3" "$url$M-$blobhash.pk3"; then
                        rm -f "$bspdir/$M-$blobhash.pk3"
                        echo "WARNING: could not download $url$M-$blobhash.pk3, maybe not ready yet"
+                       getthemap_fail=true
                        return 0
                fi
        fi
        if ! unzip -l "$bspdir/$M-$blobhash.pk3"; then
                rm -f "$bspdir/$M-$blobhash.pk3"
                echo "WARNING: could not download $url$M-$blobhash.pk3, invalid zip file"
+               getthemap_fail=true
                return 0
        fi
 }
index 6c40e853965bb21279b0bab9dc5e252171945fe3..d1dd14031ac13ab51cf7e823b9bdbe95d03e8c12 100755 (executable)
@@ -10,24 +10,7 @@ else
        minimap_override=
 fi
 
-mkdir -p ~/.xonotic-map-compiler-autobuild/ # to store map compile times in
-tstart=`date +%s`
-
-lasttime=`cat ~/.xonotic-map-compiler-autobuild/"${M##*/}".buildtime 2>/dev/null || true`
-if [ -n "$lasttime" ] ; then
-       echo "Done in approximately $((($lasttime+59)/60)) minutes."
-       if [ -n "$IRCSPAM" ]; then
-               echo "Done in approximately $((($lasttime+59)/60)) minutes." | $IRCSPAM >/dev/null 2>&1 || true
-       fi
-fi
-
 misc/tools/xonotic-map-compiler "$M" `grep ^- "$M.map.options" | cut -d '#' -f 1` $minimap_override "$@"
 status=$?
 
-tend=`date +%s`
-tdelta=$(($tend - $tstart)) # compute time
-if [ $status -eq 0 ] ; then
-       echo "$tdelta" > ~/.xonotic-map-compiler-autobuild/"${M##*/}".buildtime # save time in ~/.xonotic-map-compiler-autobuild/mapname
-fi
-
 exit $status
index f4324c1467058b4941d6ea448993d12917fb54d6..aa97986ccce83b7c89fe30847f85d27c6b3f9772 100755 (executable)
@@ -17,6 +17,7 @@ count=`yes x | head -n "$count" | tr -cd x`
        +'vid_fullscreen 0' \
        +'exec effects-ultra.cfg' \
        "$@" \
+       +'cl_welcome 0' \
        +'sv_precacheplayermodels 0' \
        +'cl_hidewaypoints 1' \
        +'cl_movement 0' \
@@ -31,13 +32,13 @@ count=`yes x | head -n "$count" | tr -cd x`
        +'sv_clientcommand_antispam_time -999' \
        +'sv_clientcommand_antispam_count 999' \
        +'set catchme "catchme_"' \
-       +"alias catchme_$count \"quit\"" \
+       +"alias catchme_$count quit" \
        +'alias NARF "sv_cmd nextframe cl_cmd nextframe sv_cmd nextframe cl_cmd nextframe $*"' \
        +'alias ZORT "god; NARF EGAD"' \
        +'alias EGAD "noclip; NARF POIT"' \
-       +'alias POIT "$catchme; set catchme \"${catchme}x\"; impulse 911; NARF TROZ"' \
+       +'alias POIT "$catchme; set catchme ${catchme}x; impulse 911; NARF TROZ"' \
        +'alias TROZ "screenshot; NARF POIT"' \
-       +'alias cl_hook_gamestart_all "defer 1.1 \"cmd join\"; defer 2 ZORT"' \
+       +'alias cl_hook_gamestart_all "defer 1.1 join; defer 2 ZORT"' \
        +"defer \"$watchdog\" quit" \
        +"map \"$map\"" \
        +'timelimit 0' \
index 7c71d6173d624387a1e29341504239175d0a35b0..5bc028010488bc6e27596c804730251424676a7d 100644 (file)
@@ -19,6 +19,13 @@ in your server.cfg for the right port number, default is 26000) to the
 computer running your server.  How to do this does depend on your\r
 computer and network setup.\r
 \r
+If you want to run a dedicated server and a client on the the same\r
+machine, they need to have session ids that differ from each other.\r
+To start the server with a custom session id (different from the\r
+default id that the client uses) run it with the argument "-sessionid"\r
+followed by a session id of your choice.\r
+Example: server_linux.sh -sessionid server\r
+\r
 If you plan to install custom maps on your server you should read the\r
 file Xonotic/Docs/mapdownload.txt to learn how to setup automatic map\r
 downloads.\r
index a33a5b36ec7a23f5d301521857ea2fd2507794c0..9d266a02e62cb64666d9f7df704f39dc399e78e3 100644 (file)
 //sv_public 1  // 0 or -1 (see description) if the server should not be on the public servers list
 //hostname "Xonotic $g_xonoticversion Server"  // this name will appear on the server list (the $g_xonoticversion gets replaced with the current version)
 //sv_motd ""   // displayed on connect - good place for contact info (IRC, forum nick, etc.) so players can reach you when something is wrong with your server
+//sv_termsofservice_url "https://yourdomain.tld/path/to/tos"   // URL for the Terms of Service for playing on your server
+// It is RECOMMENDED to supply such a document containing information about if and how you collect and process user data (bridging to IRC, player stats etc),
+// contact information, rules and similar information.
+// This document will be shown in the server join dialog.
 
 // This sets the remote console password on the server, you also need to set the cvar to the same value on your client to use the 'rcon' command.
 // Empty means rcon is disabled.
@@ -171,15 +175,15 @@ sv_weaponstats_file "http://www.xonotic.org/weaponbalance/"
 /////////////////////////////////////////////////////////////////////
 // Some more advanced settings.  You probably are not interested in changing them at all.
 
-//sv_ready_restart 0   // 1 to allow players to restart the map when all of them press the ready button
 //sv_ready_restart_after_countdown 0   // if set to 1 the players and map items are reset after the countdown ended, otherwise they're reset already at the beginning of the countdown
-//sv_ready_restart_repeatable 0        "allows the players to restart the game as often as needed
 //sv_autoscreenshot 0  // 1 will force a screenshot for all clients when the map ends.  Useful for competitions or the ladder.
 
 //g_antilag 2  // 0 to disable the antilag feature, 1 and 2 use different methods
 
 //sv_maxrate 1000000   // limits client connections to this rate in bytes/seconds
 
+//sys_ticrate 0.0333333        // 0.0166667 for twice as many server frames per second; smoother gameplay but somewhat higher CPU use.
+
 // see Docs/mapdownload.txt for more info
 //sv_curl_defaulturl http://www.xonotic.org/contentdownload/getmap.php?file=   //fallback download URL
 
diff --git a/xonotic-linux-glx.sh b/xonotic-linux-glx.sh
deleted file mode 120000 (symlink)
index f516fa9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-xonotic-linux-sdl.sh
\ No newline at end of file
index e4ae857ee80ea6468f30ebffd29325c80e8af302..be8feddf5fd666a502a77840ca8e98c683bd3804 100755 (executable)
@@ -1,23 +1,25 @@
 #!/bin/sh
 
-path=`dirname "${0}"`
-link=`readlink -f "${0}"`
+path=$(dirname "${0}")
+link=$(readlink -f "${0}")
 
-[ -n "${link}" ] && path=`dirname "${link}"`
-cd "${path}"
+[ -n "${link}" ] && path=$(dirname "${link}")
+cd "${path}" || exit 1
 
 case "${0##*/}" in
-  *dedicated*) mode="dedicated" ;;
-  *glx*)       mode="glx" ;;
-  *)           mode="sdl" ;;
+  *dedicated*)  mode="dedicated" ;;
+  *)            mode="sdl" ;;
 esac
 
-case "$(uname -m)" in
-  i?86)        arch="linux32" ;;  # Not supported anymore but you can build your own.
-  *)   arch="linux64" ;;
+case $(uname):$(uname -m) in
+  Linux:x86_64)  arch="linux64" ;;
+  *)             arch="local"   ;;  # Not pre-built but you can build your own
 esac
 
-xonotic="xonotic-${arch}-${mode}"
+# prefer locally built binary if available (see: Makefile)
+xonotic="xonotic-local-${mode}"
+[ -x "$xonotic" ] || xonotic="xonotic-${arch}-${mode}"
+echo "Executing: $xonotic ${*}"
 
 set -- ./${xonotic} "${@}"
 
@@ -119,13 +121,14 @@ case "$xserver" in
                ;;
 esac
 
-# if pulseaudio
-if [ -z "$SDL_AUDIODRIVER" ]; then
-       if ps -C pulseaudio >/dev/null; then
-               if ldd /usr/lib/libSDL.so 2>/dev/null | grep pulse >/dev/null; then
-                       export SDL_AUDIODRIVER=pulse
-               fi
+if which "$1" > /dev/null
+then
+       exec "$@"
+else
+       echo "Could not find $1 to exec"
+       if [ "$arch" = "local" ]
+       then
+               printf "%b\n%b\n" "Xonotic does not currently provide pre-built $(uname):$(uname -m) builds, please compile one using make" \
+                       "More info is available at \e[1;36mhttps://gitlab.com/xonotic/xonotic/-/wikis/Compiling\e[m"
        fi
 fi
-
-exec "$@"